{
  "version": 3,
  "sources": ["../../rrweb-snapshot/dist/rrweb-snapshot.js", "../../types/dist/types.js", "../src/utils.ts", "../src/record/error-handler.ts", "../src/record/cross-origin-iframe-mirror.ts", "../src/record/iframe-manager.ts", "../src/record/text-diff.ts", "../src/record/mutation.ts", "../src/record/observer.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", "../src/record/observers/canvas/canvas-manager.ts", "../src/record/processed-node-manager.ts", "../src/record/shadow-dom-manager.ts", "../src/record/stylesheet-manager.ts", "../src/record/index.ts", "../../rrdom/dist/rrdom.js", "../../../node_modules/mitt/dist/mitt.mjs", "../src/replay/canvas/deserialize-args.ts", "../src/replay/canvas/2d.ts", "../src/replay/canvas/webgl.ts", "../src/replay/canvas/index.ts", "../../../node_modules/@xstate/fsm/es/index.js", "../src/replay/timer.ts", "../src/replay/machine.ts", "../src/replay/media/index.ts", "../src/replay/smoothscroll.ts", "../src/replay/styles/inject-style.ts", "../src/replay/index.ts", "../src/index.ts"],
  "sourcesContent": ["var Cr = Object.defineProperty;\nvar Sr = (s, e, t) => e in s ? Cr(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;\nvar Ne = (s, e, t) => Sr(s, typeof e != \"symbol\" ? e + \"\" : e, t);\nvar w = /* @__PURE__ */ ((s) => (s[s.Document = 0] = \"Document\", s[s.DocumentType = 1] = \"DocumentType\", s[s.Element = 2] = \"Element\", s[s.Text = 3] = \"Text\", s[s.CDATA = 4] = \"CDATA\", s[s.Comment = 5] = \"Comment\", s))(w || {});\nfunction Qe(s) {\n  return s.nodeType === s.ELEMENT_NODE;\n}\nfunction xr(s) {\n  const e = s == null ? void 0 : s.host;\n  return (e == null ? void 0 : e.shadowRoot) === s;\n}\nfunction Ae(s) {\n  return Object.prototype.toString.call(s) === \"[object ShadowRoot]\";\n}\nfunction vr(s) {\n  return s.includes(\" background-clip: text;\") && !s.includes(\" -webkit-background-clip: text;\") && (s = s.replace(\n    /\\sbackground-clip:\\s*text;/g,\n    \" -webkit-background-clip: text; background-clip: text;\"\n  )), s;\n}\nfunction Er(s) {\n  const { cssText: e } = s;\n  if (e.split('\"').length < 3) return e;\n  const t = [\"@import\", `url(${JSON.stringify(s.href)})`];\n  return s.layerName === \"\" ? t.push(\"layer\") : s.layerName && t.push(`layer(${s.layerName})`), s.supportsText && t.push(`supports(${s.supportsText})`), s.media.length && t.push(s.media.mediaText), t.join(\" \") + \";\";\n}\nfunction Rr(s, e) {\n  const t = [];\n  for (let r = 0; r < s.length; r++) {\n    const i = s.item(r);\n    s.getPropertyValue(i) === \"\" && new RegExp(It(i) + \":\\\\s*;\").test(e) && t.push(i);\n  }\n  return t;\n}\nfunction It(s) {\n  return s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction Or(s, e, t, r) {\n  const i = Rr(s.style, e);\n  if (i.length === 0) return e;\n  let n = null;\n  try {\n    n = t.querySelector(s.selectorText);\n  } catch {\n  }\n  if (!n)\n    return r && r.push({\n      selector: s.selectorText,\n      properties: i\n    }), e;\n  const l = getComputedStyle(n);\n  let a = e;\n  for (const o of i) {\n    const f = l.getPropertyValue(o);\n    if (f) {\n      const u = new RegExp(\n        `(${It(o)}):\\\\s*;`\n      );\n      a = a.replace(u, `$1: ${f};`);\n    }\n  }\n  return a;\n}\nfunction de(s, e, t) {\n  var r;\n  try {\n    const i = s.rules || s.cssRules;\n    if (!i) return null;\n    const n = e || ((r = s.ownerNode) == null ? void 0 : r.ownerDocument) || null, l = Array.from(i, (a) => {\n      let o = kr(a);\n      return n && _t(a) && (o = Or(\n        a,\n        o,\n        n,\n        t\n      )), o;\n    }).join(\"\");\n    return vr(l);\n  } catch {\n    return null;\n  }\n}\nfunction kr(s) {\n  let e;\n  if (Ar(s))\n    try {\n      e = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      de(s.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      Er(s);\n    } catch {\n    }\n  else if (_t(s) && s.selectorText.includes(\":\"))\n    return Nr(s.cssText);\n  return e || s.cssText;\n}\nfunction Nr(s) {\n  const e = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n  return s.replace(e, \"$1\\\\$2\");\n}\nfunction Ar(s) {\n  return \"styleSheet\" in s;\n}\nfunction _t(s) {\n  return \"selectorText\" in s;\n}\nclass Ke {\n  constructor() {\n    Ne(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    Ne(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(e) {\n    var r;\n    return e ? ((r = this.getMeta(e)) == null ? void 0 : r.id) ?? -1 : -1;\n  }\n  getNode(e) {\n    return this.idNodeMap.get(e) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(e) {\n    return this.nodeMetaMap.get(e) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(e) {\n    const t = this.getId(e);\n    this.idNodeMap.delete(t), e.childNodes && e.childNodes.forEach(\n      (r) => this.removeNodeFromMap(r)\n    );\n  }\n  has(e) {\n    return this.idNodeMap.has(e);\n  }\n  hasNode(e) {\n    return this.nodeMetaMap.has(e);\n  }\n  add(e, t) {\n    const r = t.id;\n    this.idNodeMap.set(r, e), this.nodeMetaMap.set(e, t);\n  }\n  replace(e, t) {\n    const r = this.getNode(e);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(t, i);\n    }\n    this.idNodeMap.set(e, t);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction tn() {\n  return new Ke();\n}\nfunction Mr({\n  element: s,\n  maskInputOptions: e,\n  tagName: t,\n  type: r,\n  value: i,\n  maskInputFn: n\n}) {\n  const l = i || \"\", a = r && Ce(r);\n  if (e[t.toLowerCase()] || a && e[a]) {\n    const f = n ? n(l, s) : \"*\".repeat(l.length);\n    return { value: f, masked: l !== f };\n  }\n  return { value: l, masked: !1 };\n}\nfunction Ce(s) {\n  return s.toLowerCase();\n}\nconst at = \"__rrweb_original__\";\nfunction Pr(s) {\n  const e = s.getContext(\"2d\");\n  if (!e) return !0;\n  const t = 50;\n  for (let r = 0; r < s.width; r += t)\n    for (let i = 0; i < s.height; i += t) {\n      const n = e.getImageData, l = at in n ? n[at] : n;\n      if (new Uint32Array(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n        l.call(\n          e,\n          r,\n          i,\n          Math.min(t, s.width - r),\n          Math.min(t, s.height - i)\n        ).data.buffer\n      ).some((o) => o !== 0)) return !1;\n    }\n  return !0;\n}\nfunction Ir(s, e) {\n  return !s || !e || s.type !== e.type ? !1 : s.type === w.Document ? s.compatMode === e.compatMode : s.type === w.DocumentType ? s.name === e.name && s.publicId === e.publicId && s.systemId === e.systemId : s.type === w.Comment || s.type === w.Text || s.type === w.CDATA ? s.textContent === e.textContent : s.type === w.Element ? s.tagName === e.tagName && JSON.stringify(s.attributes) === JSON.stringify(e.attributes) && s.isSVG === e.isSVG && s.needBlock === e.needBlock : !1;\n}\nfunction _r(s) {\n  const e = s.type;\n  return s.hasAttribute(\"data-rr-is-password\") ? \"password\" : e ? (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    Ce(e)\n  ) : null;\n}\nfunction $t(s, e) {\n  let t;\n  try {\n    t = new URL(s, e ?? window.location.href);\n  } catch {\n    return null;\n  }\n  const r = /\\.([0-9a-z]+)(?:$)/i, i = t.pathname.match(r);\n  return (i == null ? void 0 : i[1]) ?? null;\n}\nlet Lt = 1;\nconst $r = new RegExp(\"[^a-z0-9-_:]\"), ut = -2;\nfunction Lr() {\n  return Lt++;\n}\nfunction Tr(s) {\n  if (s instanceof HTMLFormElement)\n    return \"form\";\n  const e = Ce(s.tagName);\n  return $r.test(e) ? \"div\" : e;\n}\nfunction Dr(s) {\n  let e = \"\";\n  return s.indexOf(\"//\") > -1 ? e = s.split(\"/\").slice(0, 3).join(\"/\") : e = s.split(\"/\")[0], e = e.split(\"?\")[0], e;\n}\nlet z, ft;\nconst Ur = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm, Br = /^(?:[a-z+]+:)?\\/\\//i, Fr = /^www\\..*/i, zr = /^(data:)([^,]*),(.*)/i;\nfunction me(s, e) {\n  return (s || \"\").replace(\n    Ur,\n    (t, r, i, n, l, a) => {\n      const o = i || l || a, f = r || n || \"\";\n      if (!o)\n        return t;\n      if (Br.test(o) || Fr.test(o))\n        return `url(${f}${o}${f})`;\n      if (zr.test(o))\n        return `url(${f}${o}${f})`;\n      if (o[0] === \"/\")\n        return `url(${f}${Dr(e) + o}${f})`;\n      const u = e.split(\"/\"), h = o.split(\"/\");\n      u.pop();\n      for (const d of h)\n        d !== \".\" && (d === \"..\" ? u.pop() : u.push(d));\n      return `url(${f}${u.join(\"/\")}${f})`;\n    }\n  );\n}\nconst Wr = /^[^ \\t\\n\\r\\u000c]+/, jr = /^[, \\t\\n\\r\\u000c]+/;\nfunction Gr(s, e) {\n  if (e.trim() === \"\")\n    return e;\n  let t = 0;\n  function r(n) {\n    let l;\n    const a = n.exec(e.substring(t));\n    return a ? (l = a[0], t += l.length, l) : \"\";\n  }\n  const i = [];\n  for (; r(jr), !(t >= e.length); ) {\n    let n = r(Wr);\n    if (n.slice(-1) === \",\")\n      n = W(s, n.substring(0, n.length - 1)), i.push(n);\n    else {\n      let l = \"\";\n      n = W(s, n);\n      let a = !1;\n      for (; ; ) {\n        const o = e.charAt(t);\n        if (o === \"\") {\n          i.push((n + l).trim());\n          break;\n        } else if (a)\n          o === \")\" && (a = !1);\n        else if (o === \",\") {\n          t += 1, i.push((n + l).trim());\n          break;\n        } else o === \"(\" && (a = !0);\n        l += o, t += 1;\n      }\n    }\n  }\n  return i.join(\", \");\n}\nconst ct = /* @__PURE__ */ new WeakMap();\nfunction W(s, e) {\n  return !e || e.trim() === \"\" ? e : Se(s, e);\n}\nfunction Vr(s) {\n  return !!(s.tagName === \"svg\" || s.ownerSVGElement);\n}\nfunction Se(s, e) {\n  let t = ct.get(s);\n  if (t || (t = s.createElement(\"a\"), ct.set(s, t)), !e)\n    e = \"\";\n  else if (e.startsWith(\"blob:\") || e.startsWith(\"data:\"))\n    return e;\n  return t.setAttribute(\"href\", e), t.href;\n}\nfunction Hr(s, e, t, r) {\n  return r && (t === \"src\" || t === \"href\" && !(e === \"use\" && r[0] === \"#\") || t === \"xlink:href\" && r[0] !== \"#\" || t === \"background\" && (e === \"table\" || e === \"td\" || e === \"th\") ? W(s, r) : t === \"srcset\" ? Gr(s, r) : t === \"style\" ? me(r, Se(s)) : e === \"object\" && t === \"data\" ? W(s, r) : r);\n}\nfunction Jr(s, e, t) {\n  return (s === \"video\" || s === \"audio\") && e === \"autoplay\";\n}\nfunction Yr(s, e, t) {\n  try {\n    if (typeof e == \"string\") {\n      if (s.classList.contains(e))\n        return !0;\n    } else\n      for (let r = s.classList.length; r--; ) {\n        const i = s.classList[r];\n        if (e.test(i))\n          return !0;\n      }\n    if (t)\n      return s.matches(t);\n  } catch {\n  }\n  return !1;\n}\nfunction $e(s, e, t) {\n  if (!s) return !1;\n  if (s.nodeType !== s.ELEMENT_NODE)\n    return t ? $e(s.parentNode, e, t) : !1;\n  for (let r = s.classList.length; r--; ) {\n    const i = s.classList[r];\n    if (e.test(i))\n      return !0;\n  }\n  return t ? $e(s.parentNode, e, t) : !1;\n}\nfunction qr(s, e, t, r) {\n  let i;\n  if (Qe(s)) {\n    if (i = s, !i.childNodes.length)\n      return !1;\n  } else {\n    if (s.parentElement === null)\n      return !1;\n    i = s.parentElement;\n  }\n  try {\n    if (typeof e == \"string\") {\n      if (r) {\n        if (i.closest(`.${e}`)) return !0;\n      } else if (i.classList.contains(e)) return !0;\n    } else if ($e(i, e, r)) return !0;\n    if (t) {\n      if (r) {\n        if (i.closest(t)) return !0;\n      } else if (i.matches(t)) return !0;\n    }\n  } catch {\n  }\n  return !1;\n}\nfunction Qr(s, e, t) {\n  const r = s.contentWindow;\n  if (!r)\n    return;\n  let i = !1, n;\n  try {\n    n = r.document.readyState;\n  } catch {\n    return;\n  }\n  if (n !== \"complete\") {\n    const a = setTimeout(() => {\n      i || (e(), i = !0);\n    }, t);\n    s.addEventListener(\"load\", () => {\n      clearTimeout(a), i = !0, e();\n    });\n    return;\n  }\n  const l = \"about:blank\";\n  if (r.location.href !== l || s.src === l || s.src === \"\")\n    return setTimeout(e, 0), s.addEventListener(\"load\", e);\n  s.addEventListener(\"load\", e);\n}\nfunction Kr(s, e, t) {\n  let r = !1, i;\n  try {\n    i = s.sheet;\n  } catch {\n    return;\n  }\n  if (i) return;\n  const n = setTimeout(() => {\n    r || (e(), r = !0);\n  }, t);\n  s.addEventListener(\"load\", () => {\n    clearTimeout(n), r = !0, e();\n  });\n}\nfunction Xr(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    needsMask: l,\n    inlineStylesheet: a,\n    maskInputOptions: o = {},\n    maskTextFn: f,\n    maskInputFn: u,\n    dataURLOptions: h = {},\n    inlineImages: d,\n    recordCanvas: g,\n    keepIframeSrcFn: E,\n    newlyAddedElement: R = !1,\n    corruptedRules: c\n  } = e, m = Zr(t, r);\n  switch (s.nodeType) {\n    case s.DOCUMENT_NODE:\n      return s.compatMode !== \"CSS1Compat\" ? {\n        type: w.Document,\n        childNodes: [],\n        compatMode: s.compatMode\n        // probably \"BackCompat\"\n      } : {\n        type: w.Document,\n        childNodes: []\n      };\n    case s.DOCUMENT_TYPE_NODE:\n      return {\n        type: w.DocumentType,\n        name: s.name,\n        publicId: s.publicId,\n        systemId: s.systemId,\n        rootId: m\n      };\n    case s.ELEMENT_NODE:\n      return ts(s, {\n        doc: t,\n        blockClass: i,\n        blockSelector: n,\n        inlineStylesheet: a,\n        maskInputOptions: o,\n        maskInputFn: u,\n        dataURLOptions: h,\n        inlineImages: d,\n        recordCanvas: g,\n        keepIframeSrcFn: E,\n        newlyAddedElement: R,\n        rootId: m,\n        corruptedRules: c\n      });\n    case s.TEXT_NODE:\n      return es(s, {\n        doc: t,\n        needsMask: l,\n        maskTextFn: f,\n        rootId: m,\n        corruptedRules: c\n      });\n    case s.CDATA_SECTION_NODE:\n      return {\n        type: w.CDATA,\n        textContent: \"\",\n        rootId: m\n      };\n    case s.COMMENT_NODE:\n      return {\n        type: w.Comment,\n        textContent: s.textContent || \"\",\n        rootId: m\n      };\n    default:\n      return !1;\n  }\n}\nfunction Zr(s, e) {\n  if (!e.hasNode(s)) return;\n  const t = e.getId(s);\n  return t === 1 ? void 0 : t;\n}\nfunction es(s, e) {\n  var f;\n  const { needsMask: t, maskTextFn: r, rootId: i } = e, n = s.parentNode && s.parentNode.tagName;\n  let l = s.textContent;\n  const a = n === \"STYLE\" ? !0 : void 0, o = n === \"SCRIPT\" ? !0 : void 0;\n  if (a && l) {\n    try {\n      s.nextSibling || s.previousSibling || (f = s.parentNode.sheet) != null && f.cssRules && (l = de(\n        s.parentNode.sheet,\n        e.doc,\n        e.corruptedRules\n      ) || \"\");\n    } catch (u) {\n      console.warn(\n        `Cannot get CSS styles from text's parentNode. Error: ${u}`,\n        s\n      );\n    }\n    l = me(l, Se(e.doc));\n  }\n  return o && (l = \"SCRIPT_PLACEHOLDER\"), !a && !o && l && t && (l = r ? r(l, s.parentElement) : l.replace(/[\\S]/g, \"*\")), {\n    type: w.Text,\n    textContent: l || \"\",\n    isStyle: a,\n    rootId: i\n  };\n}\nfunction ts(s, e) {\n  const {\n    doc: t,\n    blockClass: r,\n    blockSelector: i,\n    inlineStylesheet: n,\n    maskInputOptions: l = {},\n    maskInputFn: a,\n    dataURLOptions: o = {},\n    inlineImages: f,\n    recordCanvas: u,\n    keepIframeSrcFn: h,\n    newlyAddedElement: d = !1,\n    rootId: g,\n    corruptedRules: E\n  } = e, R = Yr(s, r, i), c = Tr(s);\n  let m = {};\n  const k = s.attributes.length;\n  for (let p = 0; p < k; p++) {\n    const b = s.attributes[p];\n    Jr(c, b.name, b.value) || (m[b.name] = Hr(\n      t,\n      c,\n      Ce(b.name),\n      b.value\n    ));\n  }\n  if (c === \"link\" && n) {\n    const p = Array.from(t.styleSheets).find((O) => O.href === s.href);\n    let b = null;\n    p && (b = de(p, t, E)), b && (delete m.rel, delete m.href, m._cssText = me(b, p.href));\n  }\n  if (c === \"style\" && s.sheet && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n  !(s.innerText || s.textContent || \"\").trim().length) {\n    const p = de(\n      s.sheet,\n      t,\n      E\n    );\n    p && (m._cssText = me(p, Se(t)));\n  }\n  if (E && E.length > 0 && !R) {\n    const p = typeof m.style == \"string\" ? m.style : \"\";\n    let b = \"\";\n    for (const { selector: O, properties: I } of E)\n      try {\n        if (s.matches(O)) {\n          const A = getComputedStyle(s);\n          for (const N of I)\n            if (!s.style.getPropertyValue(N)) {\n              const _ = A.getPropertyValue(N);\n              _ && (b += `${N}: ${_}; `);\n            }\n        }\n      } catch {\n      }\n    b && (m.style = p ? `${p}; ${b.trim()}` : b.trim());\n  }\n  if (c === \"input\" || c === \"textarea\" || c === \"select\") {\n    const p = s.value, b = s.checked;\n    if (m.type !== \"radio\" && m.type !== \"checkbox\" && m.type !== \"submit\" && m.type !== \"button\" && p) {\n      const O = Mr({\n        element: s,\n        type: _r(s),\n        tagName: c,\n        value: p,\n        maskInputOptions: l,\n        maskInputFn: a\n      });\n      m.value = O.value, O.masked && (m.masked = !0);\n    } else b && (m.checked = b);\n  }\n  if (c === \"option\" && (s.selected && !l.select ? m.selected = !0 : delete m.selected), c === \"canvas\" && u) {\n    if (s.__context === \"2d\")\n      Pr(s) || (m.rr_dataURL = s.toDataURL(\n        o.type,\n        o.quality\n      ));\n    else if (!(\"__context\" in s)) {\n      const p = s.toDataURL(\n        o.type,\n        o.quality\n      ), b = t.createElement(\"canvas\");\n      b.width = s.width, b.height = s.height;\n      const O = b.toDataURL(\n        o.type,\n        o.quality\n      );\n      p !== O && (m.rr_dataURL = p);\n    }\n  }\n  if (c === \"img\" && f) {\n    z || (z = t.createElement(\"canvas\"), ft = z.getContext(\"2d\"));\n    const p = s, b = p.currentSrc || p.getAttribute(\"src\") || \"<unknown-src>\", O = p.crossOrigin, I = () => {\n      p.removeEventListener(\"load\", I);\n      try {\n        z.width = p.naturalWidth, z.height = p.naturalHeight, ft.drawImage(p, 0, 0), m.rr_dataURL = z.toDataURL(\n          o.type,\n          o.quality\n        );\n      } catch (A) {\n        if (p.crossOrigin !== \"anonymous\") {\n          p.crossOrigin = \"anonymous\", p.complete && p.naturalWidth !== 0 ? I() : p.addEventListener(\"load\", I);\n          return;\n        } else\n          console.warn(\n            `Cannot inline img src=${b}! Error: ${A}`\n          );\n      }\n      p.crossOrigin === \"anonymous\" && (O ? m.crossOrigin = O : p.removeAttribute(\"crossorigin\"));\n    };\n    p.complete && p.naturalWidth !== 0 ? I() : p.addEventListener(\"load\", I);\n  }\n  if (c === \"audio\" || c === \"video\") {\n    const p = m;\n    p.rr_mediaState = s.paused ? \"paused\" : \"played\", p.rr_mediaCurrentTime = s.currentTime, p.rr_mediaPlaybackRate = s.playbackRate, p.rr_mediaMuted = s.muted, p.rr_mediaLoop = s.loop, p.rr_mediaVolume = s.volume;\n  }\n  if (d || (s.scrollLeft && (m.rr_scrollLeft = s.scrollLeft), s.scrollTop && (m.rr_scrollTop = s.scrollTop)), R) {\n    const { width: p, height: b } = s.getBoundingClientRect();\n    m = {\n      class: m.class,\n      rr_width: `${p}px`,\n      rr_height: `${b}px`\n    };\n  }\n  c === \"iframe\" && !h(m.src) && (s.contentDocument || (m.rr_src = m.src), delete m.src);\n  let M;\n  try {\n    customElements.get(c) && (M = !0);\n  } catch {\n  }\n  return {\n    type: w.Element,\n    tagName: c,\n    attributes: m,\n    childNodes: [],\n    isSVG: Vr(s) || void 0,\n    needBlock: R,\n    rootId: g,\n    isCustom: M\n  };\n}\nfunction S(s) {\n  return s == null ? \"\" : s.toLowerCase();\n}\nfunction rs(s, e) {\n  if (e.comment && s.type === w.Comment)\n    return !0;\n  if (s.type === w.Element) {\n    if (e.script && // script tag\n    (s.tagName === \"script\" || // (module)preload link\n    s.tagName === \"link\" && (s.attributes.rel === \"preload\" || s.attributes.rel === \"modulepreload\") && s.attributes.as === \"script\" || // prefetch link\n    s.tagName === \"link\" && s.attributes.rel === \"prefetch\" && typeof s.attributes.href == \"string\" && $t(s.attributes.href) === \"js\"))\n      return !0;\n    if (e.headFavicon && (s.tagName === \"link\" && s.attributes.rel === \"shortcut icon\" || s.tagName === \"meta\" && (S(s.attributes.name).match(\n      /^msapplication-tile(image|color)$/\n    ) || S(s.attributes.name) === \"application-name\" || S(s.attributes.rel) === \"icon\" || S(s.attributes.rel) === \"apple-touch-icon\" || S(s.attributes.rel) === \"shortcut icon\")))\n      return !0;\n    if (s.tagName === \"meta\") {\n      if (e.headMetaDescKeywords && S(s.attributes.name).match(/^description|keywords$/))\n        return !0;\n      if (e.headMetaSocial && (S(s.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n      S(s.attributes.name).match(/^(og|twitter):/) || S(s.attributes.name) === \"pinterest\"))\n        return !0;\n      if (e.headMetaRobots && (S(s.attributes.name) === \"robots\" || S(s.attributes.name) === \"googlebot\" || S(s.attributes.name) === \"bingbot\"))\n        return !0;\n      if (e.headMetaHttpEquiv && s.attributes[\"http-equiv\"] !== void 0)\n        return !0;\n      if (e.headMetaAuthorship && (S(s.attributes.name) === \"author\" || S(s.attributes.name) === \"generator\" || S(s.attributes.name) === \"framework\" || S(s.attributes.name) === \"publisher\" || S(s.attributes.name) === \"progid\" || S(s.attributes.property).match(/^article:/) || S(s.attributes.property).match(/^product:/)))\n        return !0;\n      if (e.headMetaVerification && (S(s.attributes.name) === \"google-site-verification\" || S(s.attributes.name) === \"yandex-verification\" || S(s.attributes.name) === \"csrf-token\" || S(s.attributes.name) === \"p:domain_verify\" || S(s.attributes.name) === \"verify-v1\" || S(s.attributes.name) === \"verification\" || S(s.attributes.name) === \"shopify-checkout-api-token\"))\n        return !0;\n    }\n  }\n  return !1;\n}\nfunction K(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    maskTextClass: l,\n    maskTextSelector: a,\n    skipChild: o = !1,\n    inlineStylesheet: f = !0,\n    maskInputOptions: u = {},\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOMOptions: g,\n    dataURLOptions: E = {},\n    inlineImages: R = !1,\n    recordCanvas: c = !1,\n    onSerialize: m,\n    onIframeLoad: k,\n    iframeLoadTimeout: M = 5e3,\n    onStylesheetLoad: p,\n    stylesheetLoadTimeout: b = 5e3,\n    keepIframeSrcFn: O = () => !1,\n    newlyAddedElement: I = !1,\n    corruptedRules: A\n  } = e;\n  let { needsMask: N } = e, { preserveWhiteSpace: _ = !0 } = e;\n  N || (N = qr(\n    s,\n    l,\n    a,\n    N === void 0\n  ));\n  const U = Xr(s, {\n    doc: t,\n    mirror: r,\n    blockClass: i,\n    blockSelector: n,\n    needsMask: N,\n    inlineStylesheet: f,\n    maskInputOptions: u,\n    maskTextFn: h,\n    maskInputFn: d,\n    dataURLOptions: E,\n    inlineImages: R,\n    recordCanvas: c,\n    keepIframeSrcFn: O,\n    newlyAddedElement: I,\n    corruptedRules: A\n  });\n  if (!U)\n    return console.warn(s, \"not serialized\"), null;\n  let H;\n  r.hasNode(s) ? H = r.getId(s) : rs(U, g) || !_ && U.type === w.Text && !U.isStyle && !U.textContent.replace(/^\\s+|\\s+$/gm, \"\").length ? H = ut : H = Lr();\n  const x = Object.assign(U, { id: H });\n  if (r.add(s, x), H === ut)\n    return null;\n  m && m(s);\n  let ke = !o;\n  if (x.type === w.Element) {\n    ke = ke && !x.needBlock, delete x.needBlock;\n    const P = s.shadowRoot;\n    P && Ae(P) && (x.isShadowHost = !0);\n  }\n  if ((x.type === w.Document || x.type === w.Element) && ke) {\n    g.headWhitespace && x.type === w.Element && x.tagName === \"head\" && (_ = !1);\n    const P = {\n      doc: t,\n      mirror: r,\n      blockClass: i,\n      blockSelector: n,\n      needsMask: N,\n      maskTextClass: l,\n      maskTextSelector: a,\n      skipChild: o,\n      inlineStylesheet: f,\n      maskInputOptions: u,\n      maskTextFn: h,\n      maskInputFn: d,\n      slimDOMOptions: g,\n      dataURLOptions: E,\n      inlineImages: R,\n      recordCanvas: c,\n      preserveWhiteSpace: _,\n      onSerialize: m,\n      onIframeLoad: k,\n      iframeLoadTimeout: M,\n      onStylesheetLoad: p,\n      stylesheetLoadTimeout: b,\n      keepIframeSrcFn: O,\n      corruptedRules: A\n    };\n    if (!(x.type === w.Element && x.tagName === \"textarea\" && x.attributes.value !== void 0)) for (const B of Array.from(s.childNodes)) {\n      const F = K(B, P);\n      F && x.childNodes.push(F);\n    }\n    if (Qe(s) && s.shadowRoot)\n      for (const B of Array.from(s.shadowRoot.childNodes)) {\n        const F = K(B, P);\n        F && (Ae(s.shadowRoot) && (F.isShadow = !0), x.childNodes.push(F));\n      }\n  }\n  return s.parentNode && xr(s.parentNode) && Ae(s.parentNode) && (x.isShadow = !0), x.type === w.Element && x.tagName === \"iframe\" && Qr(\n    s,\n    () => {\n      const P = s.contentDocument;\n      if (P && k) {\n        const B = K(P, {\n          doc: P,\n          mirror: r,\n          blockClass: i,\n          blockSelector: n,\n          needsMask: N,\n          maskTextClass: l,\n          maskTextSelector: a,\n          skipChild: !1,\n          inlineStylesheet: f,\n          maskInputOptions: u,\n          maskTextFn: h,\n          maskInputFn: d,\n          slimDOMOptions: g,\n          dataURLOptions: E,\n          inlineImages: R,\n          recordCanvas: c,\n          preserveWhiteSpace: _,\n          onSerialize: m,\n          onIframeLoad: k,\n          iframeLoadTimeout: M,\n          onStylesheetLoad: p,\n          stylesheetLoadTimeout: b,\n          keepIframeSrcFn: O\n        });\n        B && k(\n          s,\n          B\n        );\n      }\n    },\n    M\n  ), x.type === w.Element && x.tagName === \"link\" && typeof x.attributes.rel == \"string\" && (x.attributes.rel === \"stylesheet\" || x.attributes.rel === \"preload\" && typeof x.attributes.href == \"string\" && $t(x.attributes.href) === \"css\") && Kr(\n    s,\n    () => {\n      if (p) {\n        const P = K(s, {\n          doc: t,\n          mirror: r,\n          blockClass: i,\n          blockSelector: n,\n          needsMask: N,\n          maskTextClass: l,\n          maskTextSelector: a,\n          skipChild: !1,\n          inlineStylesheet: f,\n          maskInputOptions: u,\n          maskTextFn: h,\n          maskInputFn: d,\n          slimDOMOptions: g,\n          dataURLOptions: E,\n          inlineImages: R,\n          recordCanvas: c,\n          preserveWhiteSpace: _,\n          onSerialize: m,\n          onIframeLoad: k,\n          iframeLoadTimeout: M,\n          onStylesheetLoad: p,\n          stylesheetLoadTimeout: b,\n          keepIframeSrcFn: O\n        });\n        P && p(\n          s,\n          P\n        );\n      }\n    },\n    b\n  ), x;\n}\nfunction rn(s, e) {\n  const {\n    mirror: t = new Ke(),\n    blockClass: r = \"rr-block\",\n    blockSelector: i = null,\n    maskTextClass: n = \"rr-mask\",\n    maskTextSelector: l = null,\n    inlineStylesheet: a = !0,\n    inlineImages: o = !1,\n    recordCanvas: f = !1,\n    maskAllInputs: u = !1,\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOM: g = !1,\n    dataURLOptions: E,\n    preserveWhiteSpace: R,\n    onSerialize: c,\n    onIframeLoad: m,\n    iframeLoadTimeout: k,\n    onStylesheetLoad: M,\n    stylesheetLoadTimeout: p,\n    keepIframeSrcFn: b = () => !1,\n    corruptedRules: O\n  } = e || {};\n  return K(s, {\n    doc: s,\n    mirror: t,\n    blockClass: r,\n    blockSelector: i,\n    maskTextClass: n,\n    maskTextSelector: l,\n    skipChild: !1,\n    inlineStylesheet: a,\n    maskInputOptions: u === !0 ? {\n      color: !0,\n      date: !0,\n      \"datetime-local\": !0,\n      email: !0,\n      month: !0,\n      number: !0,\n      range: !0,\n      search: !0,\n      tel: !0,\n      text: !0,\n      time: !0,\n      url: !0,\n      week: !0,\n      textarea: !0,\n      select: !0,\n      password: !0\n    } : u === !1 ? {\n      password: !0\n    } : u,\n    maskTextFn: h,\n    maskInputFn: d,\n    slimDOMOptions: g === !0 || g === \"all\" ? (\n      // if true: set of sensible options that should not throw away any information\n      {\n        script: !0,\n        comment: !0,\n        headFavicon: !0,\n        headWhitespace: !0,\n        headMetaDescKeywords: g === \"all\",\n        // destructive\n        headMetaSocial: !0,\n        headMetaRobots: !0,\n        headMetaHttpEquiv: !0,\n        headMetaAuthorship: !0,\n        headMetaVerification: !0\n      }\n    ) : g === !1 ? {} : g,\n    dataURLOptions: E,\n    inlineImages: o,\n    recordCanvas: f,\n    preserveWhiteSpace: R,\n    onSerialize: c,\n    onIframeLoad: m,\n    iframeLoadTimeout: k,\n    onStylesheetLoad: M,\n    stylesheetLoadTimeout: p,\n    keepIframeSrcFn: b,\n    newlyAddedElement: !1,\n    corruptedRules: O\n  });\n}\nfunction sn(s, e) {\n  function t(r) {\n    e(r), (r.type === w.Document || r.type === w.Element) && r.childNodes.forEach(t);\n  }\n  t(s);\n}\nfunction nn() {\n  Lt = 1;\n}\nfunction ss(s) {\n  return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, \"default\") ? s.default : s;\n}\nfunction is(s) {\n  if (s.__esModule) return s;\n  var e = s.default;\n  if (typeof e == \"function\") {\n    var t = function r() {\n      return this instanceof r ? Reflect.construct(e, arguments, this.constructor) : e.apply(this, arguments);\n    };\n    t.prototype = e.prototype;\n  } else t = {};\n  return Object.defineProperty(t, \"__esModule\", { value: !0 }), Object.keys(s).forEach(function(r) {\n    var i = Object.getOwnPropertyDescriptor(s, r);\n    Object.defineProperty(t, r, i.get ? i : {\n      enumerable: !0,\n      get: function() {\n        return s[r];\n      }\n    });\n  }), t;\n}\nvar Xe = { exports: {} }, y = String, Tt = function() {\n  return { isColorSupported: !1, reset: y, bold: y, dim: y, italic: y, underline: y, inverse: y, hidden: y, strikethrough: y, black: y, red: y, green: y, yellow: y, blue: y, magenta: y, cyan: y, white: y, gray: y, bgBlack: y, bgRed: y, bgGreen: y, bgYellow: y, bgBlue: y, bgMagenta: y, bgCyan: y, bgWhite: y, blackBright: y, redBright: y, greenBright: y, yellowBright: y, blueBright: y, magentaBright: y, cyanBright: y, whiteBright: y, bgBlackBright: y, bgRedBright: y, bgGreenBright: y, bgYellowBright: y, bgBlueBright: y, bgMagentaBright: y, bgCyanBright: y, bgWhiteBright: y };\n};\nXe.exports = Tt();\nXe.exports.createColors = Tt;\nvar ns = Xe.exports;\nconst os = {}, ls = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: os\n}, Symbol.toStringTag, { value: \"Module\" })), $ = /* @__PURE__ */ is(ls);\nlet ht = ns, pt = $, Le = class Dt extends Error {\n  constructor(e, t, r, i, n, l) {\n    super(e), this.name = \"CssSyntaxError\", this.reason = e, n && (this.file = n), i && (this.source = i), l && (this.plugin = l), typeof t < \"u\" && typeof r < \"u\" && (typeof t == \"number\" ? (this.line = t, this.column = r) : (this.line = t.line, this.column = t.column, this.endLine = r.line, this.endColumn = r.column)), this.setMessage(), Error.captureStackTrace && Error.captureStackTrace(this, Dt);\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\", this.message += this.file ? this.file : \"<css input>\", typeof this.line < \"u\" && (this.message += \":\" + this.line + \":\" + this.column), this.message += \": \" + this.reason;\n  }\n  showSourceCode(e) {\n    if (!this.source) return \"\";\n    let t = this.source;\n    e == null && (e = ht.isColorSupported);\n    let r = (u) => u, i = (u) => u, n = (u) => u;\n    if (e) {\n      let { bold: u, gray: h, red: d } = ht.createColors(!0);\n      i = (g) => u(d(g)), r = (g) => h(g), pt && (n = (g) => pt(g));\n    }\n    let l = t.split(/\\r?\\n/), a = Math.max(this.line - 3, 0), o = Math.min(this.line + 2, l.length), f = String(o).length;\n    return l.slice(a, o).map((u, h) => {\n      let d = a + 1 + h, g = \" \" + (\" \" + d).slice(-f) + \" | \";\n      if (d === this.line) {\n        if (u.length > 160) {\n          let R = 20, c = Math.max(0, this.column - R), m = Math.max(\n            this.column + R,\n            this.endColumn + R\n          ), k = u.slice(c, m), M = r(g.replace(/\\d/g, \" \")) + u.slice(0, Math.min(this.column - 1, R - 1)).replace(/[^\\t]/g, \" \");\n          return i(\">\") + r(g) + n(k) + `\n ` + M + i(\"^\");\n        }\n        let E = r(g.replace(/\\d/g, \" \")) + u.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return i(\">\") + r(g) + n(u) + `\n ` + E + i(\"^\");\n      }\n      return \" \" + r(g) + n(u);\n    }).join(`\n`);\n  }\n  toString() {\n    let e = this.showSourceCode();\n    return e && (e = `\n\n` + e + `\n`), this.name + \": \" + this.message + e;\n  }\n};\nvar Ze = Le;\nLe.default = Le;\nconst dt = {\n  after: `\n`,\n  beforeClose: `\n`,\n  beforeComment: `\n`,\n  beforeDecl: `\n`,\n  beforeOpen: \" \",\n  beforeRule: `\n`,\n  colon: \": \",\n  commentLeft: \" \",\n  commentRight: \" \",\n  emptyBody: \"\",\n  indent: \"    \",\n  semicolon: !1\n};\nfunction as(s) {\n  return s[0].toUpperCase() + s.slice(1);\n}\nlet Te = class {\n  constructor(e) {\n    this.builder = e;\n  }\n  atrule(e, t) {\n    let r = \"@\" + e.name, i = e.params ? this.rawValue(e, \"params\") : \"\";\n    if (typeof e.raws.afterName < \"u\" ? r += e.raws.afterName : i && (r += \" \"), e.nodes)\n      this.block(e, r + i);\n    else {\n      let n = (e.raws.between || \"\") + (t ? \";\" : \"\");\n      this.builder(r + i + n, e);\n    }\n  }\n  beforeAfter(e, t) {\n    let r;\n    e.type === \"decl\" ? r = this.raw(e, null, \"beforeDecl\") : e.type === \"comment\" ? r = this.raw(e, null, \"beforeComment\") : t === \"before\" ? r = this.raw(e, null, \"beforeRule\") : r = this.raw(e, null, \"beforeClose\");\n    let i = e.parent, n = 0;\n    for (; i && i.type !== \"root\"; )\n      n += 1, i = i.parent;\n    if (r.includes(`\n`)) {\n      let l = this.raw(e, null, \"indent\");\n      if (l.length)\n        for (let a = 0; a < n; a++) r += l;\n    }\n    return r;\n  }\n  block(e, t) {\n    let r = this.raw(e, \"between\", \"beforeOpen\");\n    this.builder(t + r + \"{\", e, \"start\");\n    let i;\n    e.nodes && e.nodes.length ? (this.body(e), i = this.raw(e, \"after\")) : i = this.raw(e, \"after\", \"emptyBody\"), i && this.builder(i), this.builder(\"}\", e, \"end\");\n  }\n  body(e) {\n    let t = e.nodes.length - 1;\n    for (; t > 0 && e.nodes[t].type === \"comment\"; )\n      t -= 1;\n    let r = this.raw(e, \"semicolon\");\n    for (let i = 0; i < e.nodes.length; i++) {\n      let n = e.nodes[i], l = this.raw(n, \"before\");\n      l && this.builder(l), this.stringify(n, t !== i || r);\n    }\n  }\n  comment(e) {\n    let t = this.raw(e, \"left\", \"commentLeft\"), r = this.raw(e, \"right\", \"commentRight\");\n    this.builder(\"/*\" + t + e.text + r + \"*/\", e);\n  }\n  decl(e, t) {\n    let r = this.raw(e, \"between\", \"colon\"), i = e.prop + r + this.rawValue(e, \"value\");\n    e.important && (i += e.raws.important || \" !important\"), t && (i += \";\"), this.builder(i, e);\n  }\n  document(e) {\n    this.body(e);\n  }\n  raw(e, t, r) {\n    let i;\n    if (r || (r = t), t && (i = e.raws[t], typeof i < \"u\"))\n      return i;\n    let n = e.parent;\n    if (r === \"before\" && (!n || n.type === \"root\" && n.first === e || n && n.type === \"document\"))\n      return \"\";\n    if (!n) return dt[r];\n    let l = e.root();\n    if (l.rawCache || (l.rawCache = {}), typeof l.rawCache[r] < \"u\")\n      return l.rawCache[r];\n    if (r === \"before\" || r === \"after\")\n      return this.beforeAfter(e, r);\n    {\n      let a = \"raw\" + as(r);\n      this[a] ? i = this[a](l, e) : l.walk((o) => {\n        if (i = o.raws[t], typeof i < \"u\") return !1;\n      });\n    }\n    return typeof i > \"u\" && (i = dt[r]), l.rawCache[r] = i, i;\n  }\n  rawBeforeClose(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length > 0 && typeof r.raws.after < \"u\")\n        return t = r.raws.after, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawBeforeComment(e, t) {\n    let r;\n    return e.walkComments((i) => {\n      if (typeof i.raws.before < \"u\")\n        return r = i.raws.before, r.includes(`\n`) && (r = r.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof r > \"u\" ? r = this.raw(t, null, \"beforeDecl\") : r && (r = r.replace(/\\S/g, \"\")), r;\n  }\n  rawBeforeDecl(e, t) {\n    let r;\n    return e.walkDecls((i) => {\n      if (typeof i.raws.before < \"u\")\n        return r = i.raws.before, r.includes(`\n`) && (r = r.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof r > \"u\" ? r = this.raw(t, null, \"beforeRule\") : r && (r = r.replace(/\\S/g, \"\")), r;\n  }\n  rawBeforeOpen(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.type !== \"decl\" && (t = r.raws.between, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawBeforeRule(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && (r.parent !== e || e.first !== r) && typeof r.raws.before < \"u\")\n        return t = r.raws.before, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawColon(e) {\n    let t;\n    return e.walkDecls((r) => {\n      if (typeof r.raws.between < \"u\")\n        return t = r.raws.between.replace(/[^\\s:]/g, \"\"), !1;\n    }), t;\n  }\n  rawEmptyBody(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length === 0 && (t = r.raws.after, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawIndent(e) {\n    if (e.raws.indent) return e.raws.indent;\n    let t;\n    return e.walk((r) => {\n      let i = r.parent;\n      if (i && i !== e && i.parent && i.parent === e && typeof r.raws.before < \"u\") {\n        let n = r.raws.before.split(`\n`);\n        return t = n[n.length - 1], t = t.replace(/\\S/g, \"\"), !1;\n      }\n    }), t;\n  }\n  rawSemicolon(e) {\n    let t;\n    return e.walk((r) => {\n      if (r.nodes && r.nodes.length && r.last.type === \"decl\" && (t = r.raws.semicolon, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawValue(e, t) {\n    let r = e[t], i = e.raws[t];\n    return i && i.value === r ? i.raw : r;\n  }\n  root(e) {\n    this.body(e), e.raws.after && this.builder(e.raws.after);\n  }\n  rule(e) {\n    this.block(e, this.rawValue(e, \"selector\")), e.raws.ownSemicolon && this.builder(e.raws.ownSemicolon, e, \"end\");\n  }\n  stringify(e, t) {\n    if (!this[e.type])\n      throw new Error(\n        \"Unknown AST node type \" + e.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    this[e.type](e, t);\n  }\n};\nvar Ut = Te;\nTe.default = Te;\nlet us = Ut;\nfunction De(s, e) {\n  new us(e).stringify(s);\n}\nvar xe = De;\nDe.default = De;\nvar re = {};\nre.isClean = Symbol(\"isClean\");\nre.my = Symbol(\"my\");\nlet fs = Ze, cs = Ut, hs = xe, { isClean: J, my: ps } = re;\nfunction Ue(s, e) {\n  let t = new s.constructor();\n  for (let r in s) {\n    if (!Object.prototype.hasOwnProperty.call(s, r) || r === \"proxyCache\") continue;\n    let i = s[r], n = typeof i;\n    r === \"parent\" && n === \"object\" ? e && (t[r] = e) : r === \"source\" ? t[r] = i : Array.isArray(i) ? t[r] = i.map((l) => Ue(l, t)) : (n === \"object\" && i !== null && (i = Ue(i)), t[r] = i);\n  }\n  return t;\n}\nfunction Y(s, e) {\n  if (e && typeof e.offset < \"u\")\n    return e.offset;\n  let t = 1, r = 1, i = 0;\n  for (let n = 0; n < s.length; n++) {\n    if (r === e.line && t === e.column) {\n      i = n;\n      break;\n    }\n    s[n] === `\n` ? (t = 1, r += 1) : t += 1;\n  }\n  return i;\n}\nlet Be = class {\n  get proxyOf() {\n    return this;\n  }\n  constructor(e = {}) {\n    this.raws = {}, this[J] = !1, this[ps] = !0;\n    for (let t in e)\n      if (t === \"nodes\") {\n        this.nodes = [];\n        for (let r of e[t])\n          typeof r.clone == \"function\" ? this.append(r.clone()) : this.append(r);\n      } else\n        this[t] = e[t];\n  }\n  addToError(e) {\n    if (e.postcssNode = this, e.stack && this.source && /\\n\\s{4}at /.test(e.stack)) {\n      let t = this.source;\n      e.stack = e.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${t.input.from}:${t.start.line}:${t.start.column}$&`\n      );\n    }\n    return e;\n  }\n  after(e) {\n    return this.parent.insertAfter(this, e), this;\n  }\n  assign(e = {}) {\n    for (let t in e)\n      this[t] = e[t];\n    return this;\n  }\n  before(e) {\n    return this.parent.insertBefore(this, e), this;\n  }\n  cleanRaws(e) {\n    delete this.raws.before, delete this.raws.after, e || delete this.raws.between;\n  }\n  clone(e = {}) {\n    let t = Ue(this);\n    for (let r in e)\n      t[r] = e[r];\n    return t;\n  }\n  cloneAfter(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertAfter(this, t), t;\n  }\n  cloneBefore(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertBefore(this, t), t;\n  }\n  error(e, t = {}) {\n    if (this.source) {\n      let { end: r, start: i } = this.rangeBy(t);\n      return this.source.input.error(\n        e,\n        { column: i.column, line: i.line },\n        { column: r.column, line: r.line },\n        t\n      );\n    }\n    return new fs(e);\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : t === \"root\" ? () => e.root().toProxy() : e[t];\n      },\n      set(e, t, r) {\n        return e[t] === r || (e[t] = r, (t === \"prop\" || t === \"value\" || t === \"name\" || t === \"params\" || t === \"important\" || /* c8 ignore next */\n        t === \"text\") && e.markDirty()), !0;\n      }\n    };\n  }\n  /* c8 ignore next 3 */\n  markClean() {\n    this[J] = !0;\n  }\n  markDirty() {\n    if (this[J]) {\n      this[J] = !1;\n      let e = this;\n      for (; e = e.parent; )\n        e[J] = !1;\n    }\n  }\n  next() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e + 1];\n  }\n  positionBy(e) {\n    let t = this.source.start;\n    if (e.index)\n      t = this.positionInside(e.index);\n    else if (e.word) {\n      let r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, n = r.slice(\n        Y(r, this.source.start),\n        Y(r, this.source.end)\n      ).indexOf(e.word);\n      n !== -1 && (t = this.positionInside(n));\n    }\n    return t;\n  }\n  positionInside(e) {\n    let t = this.source.start.column, r = this.source.start.line, i = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, n = Y(i, this.source.start), l = n + e;\n    for (let a = n; a < l; a++)\n      i[a] === `\n` ? (t = 1, r += 1) : t += 1;\n    return { column: t, line: r };\n  }\n  prev() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e - 1];\n  }\n  rangeBy(e) {\n    let t = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    }, r = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: t.column + 1,\n      line: t.line\n    };\n    if (e.word) {\n      let i = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, l = i.slice(\n        Y(i, this.source.start),\n        Y(i, this.source.end)\n      ).indexOf(e.word);\n      l !== -1 && (t = this.positionInside(l), r = this.positionInside(\n        l + e.word.length\n      ));\n    } else\n      e.start ? t = {\n        column: e.start.column,\n        line: e.start.line\n      } : e.index && (t = this.positionInside(e.index)), e.end ? r = {\n        column: e.end.column,\n        line: e.end.line\n      } : typeof e.endIndex == \"number\" ? r = this.positionInside(e.endIndex) : e.index && (r = this.positionInside(e.index + 1));\n    return (r.line < t.line || r.line === t.line && r.column <= t.column) && (r = { column: t.column + 1, line: t.line }), { end: r, start: t };\n  }\n  raw(e, t) {\n    return new cs().raw(this, e, t);\n  }\n  remove() {\n    return this.parent && this.parent.removeChild(this), this.parent = void 0, this;\n  }\n  replaceWith(...e) {\n    if (this.parent) {\n      let t = this, r = !1;\n      for (let i of e)\n        i === this ? r = !0 : r ? (this.parent.insertAfter(t, i), t = i) : this.parent.insertBefore(t, i);\n      r || this.remove();\n    }\n    return this;\n  }\n  root() {\n    let e = this;\n    for (; e.parent && e.parent.type !== \"document\"; )\n      e = e.parent;\n    return e;\n  }\n  toJSON(e, t) {\n    let r = {}, i = t == null;\n    t = t || /* @__PURE__ */ new Map();\n    let n = 0;\n    for (let l in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, l) || l === \"parent\" || l === \"proxyCache\") continue;\n      let a = this[l];\n      if (Array.isArray(a))\n        r[l] = a.map((o) => typeof o == \"object\" && o.toJSON ? o.toJSON(null, t) : o);\n      else if (typeof a == \"object\" && a.toJSON)\n        r[l] = a.toJSON(null, t);\n      else if (l === \"source\") {\n        let o = t.get(a.input);\n        o == null && (o = n, t.set(a.input, n), n++), r[l] = {\n          end: a.end,\n          inputId: o,\n          start: a.start\n        };\n      } else\n        r[l] = a;\n    }\n    return i && (r.inputs = [...t.keys()].map((l) => l.toJSON())), r;\n  }\n  toProxy() {\n    return this.proxyCache || (this.proxyCache = new Proxy(this, this.getProxyProcessor())), this.proxyCache;\n  }\n  toString(e = hs) {\n    e.stringify && (e = e.stringify);\n    let t = \"\";\n    return e(this, (r) => {\n      t += r;\n    }), t;\n  }\n  warn(e, t, r) {\n    let i = { node: this };\n    for (let n in r) i[n] = r[n];\n    return e.warn(t, i);\n  }\n};\nvar ve = Be;\nBe.default = Be;\nlet ds = ve, Fe = class extends ds {\n  constructor(e) {\n    super(e), this.type = \"comment\";\n  }\n};\nvar Ee = Fe;\nFe.default = Fe;\nlet ms = ve, ze = class extends ms {\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n  constructor(e) {\n    e && typeof e.value < \"u\" && typeof e.value != \"string\" && (e = { ...e, value: String(e.value) }), super(e), this.type = \"decl\";\n  }\n};\nvar Re = ze;\nze.default = ze;\nlet Bt = Ee, Ft = Re, gs = ve, { isClean: zt, my: Wt } = re, et, jt, Gt, tt;\nfunction Vt(s) {\n  return s.map((e) => (e.nodes && (e.nodes = Vt(e.nodes)), delete e.source, e));\n}\nfunction Ht(s) {\n  if (s[zt] = !1, s.proxyOf.nodes)\n    for (let e of s.proxyOf.nodes)\n      Ht(e);\n}\nlet T = class Jt extends gs {\n  get first() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n  append(...e) {\n    for (let t of e) {\n      let r = this.normalize(t, this.last);\n      for (let i of r) this.proxyOf.nodes.push(i);\n    }\n    return this.markDirty(), this;\n  }\n  cleanRaws(e) {\n    if (super.cleanRaws(e), this.nodes)\n      for (let t of this.nodes) t.cleanRaws(e);\n  }\n  each(e) {\n    if (!this.proxyOf.nodes) return;\n    let t = this.getIterator(), r, i;\n    for (; this.indexes[t] < this.proxyOf.nodes.length && (r = this.indexes[t], i = e(this.proxyOf.nodes[r], r), i !== !1); )\n      this.indexes[t] += 1;\n    return delete this.indexes[t], i;\n  }\n  every(e) {\n    return this.nodes.every(e);\n  }\n  getIterator() {\n    this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach += 1;\n    let e = this.lastEach;\n    return this.indexes[e] = 0, e;\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : e[t] ? t === \"each\" || typeof t == \"string\" && t.startsWith(\"walk\") ? (...r) => e[t](\n          ...r.map((i) => typeof i == \"function\" ? (n, l) => i(n.toProxy(), l) : i)\n        ) : t === \"every\" || t === \"some\" ? (r) => e[t](\n          (i, ...n) => r(i.toProxy(), ...n)\n        ) : t === \"root\" ? () => e.root().toProxy() : t === \"nodes\" ? e.nodes.map((r) => r.toProxy()) : t === \"first\" || t === \"last\" ? e[t].toProxy() : e[t] : e[t];\n      },\n      set(e, t, r) {\n        return e[t] === r || (e[t] = r, (t === \"name\" || t === \"params\" || t === \"selector\") && e.markDirty()), !0;\n      }\n    };\n  }\n  index(e) {\n    return typeof e == \"number\" ? e : (e.proxyOf && (e = e.proxyOf), this.proxyOf.nodes.indexOf(e));\n  }\n  insertAfter(e, t) {\n    let r = this.index(e), i = this.normalize(t, this.proxyOf.nodes[r]).reverse();\n    r = this.index(e);\n    for (let l of i) this.proxyOf.nodes.splice(r + 1, 0, l);\n    let n;\n    for (let l in this.indexes)\n      n = this.indexes[l], r < n && (this.indexes[l] = n + i.length);\n    return this.markDirty(), this;\n  }\n  insertBefore(e, t) {\n    let r = this.index(e), i = r === 0 ? \"prepend\" : !1, n = this.normalize(\n      t,\n      this.proxyOf.nodes[r],\n      i\n    ).reverse();\n    r = this.index(e);\n    for (let a of n) this.proxyOf.nodes.splice(r, 0, a);\n    let l;\n    for (let a in this.indexes)\n      l = this.indexes[a], r <= l && (this.indexes[a] = l + n.length);\n    return this.markDirty(), this;\n  }\n  normalize(e, t) {\n    if (typeof e == \"string\")\n      e = Vt(jt(e).nodes);\n    else if (typeof e > \"u\")\n      e = [];\n    else if (Array.isArray(e)) {\n      e = e.slice(0);\n      for (let i of e)\n        i.parent && i.parent.removeChild(i, \"ignore\");\n    } else if (e.type === \"root\" && this.type !== \"document\") {\n      e = e.nodes.slice(0);\n      for (let i of e)\n        i.parent && i.parent.removeChild(i, \"ignore\");\n    } else if (e.type)\n      e = [e];\n    else if (e.prop) {\n      if (typeof e.value > \"u\")\n        throw new Error(\"Value field is missed in node creation\");\n      typeof e.value != \"string\" && (e.value = String(e.value)), e = [new Ft(e)];\n    } else if (e.selector || e.selectors)\n      e = [new tt(e)];\n    else if (e.name)\n      e = [new et(e)];\n    else if (e.text)\n      e = [new Bt(e)];\n    else\n      throw new Error(\"Unknown node type in node creation\");\n    return e.map((i) => (i[Wt] || Jt.rebuild(i), i = i.proxyOf, i.parent && i.parent.removeChild(i), i[zt] && Ht(i), i.raws || (i.raws = {}), typeof i.raws.before > \"u\" && t && typeof t.raws.before < \"u\" && (i.raws.before = t.raws.before.replace(/\\S/g, \"\")), i.parent = this.proxyOf, i));\n  }\n  prepend(...e) {\n    e = e.reverse();\n    for (let t of e) {\n      let r = this.normalize(t, this.first, \"prepend\").reverse();\n      for (let i of r) this.proxyOf.nodes.unshift(i);\n      for (let i in this.indexes)\n        this.indexes[i] = this.indexes[i] + r.length;\n    }\n    return this.markDirty(), this;\n  }\n  push(e) {\n    return e.parent = this, this.proxyOf.nodes.push(e), this;\n  }\n  removeAll() {\n    for (let e of this.proxyOf.nodes) e.parent = void 0;\n    return this.proxyOf.nodes = [], this.markDirty(), this;\n  }\n  removeChild(e) {\n    e = this.index(e), this.proxyOf.nodes[e].parent = void 0, this.proxyOf.nodes.splice(e, 1);\n    let t;\n    for (let r in this.indexes)\n      t = this.indexes[r], t >= e && (this.indexes[r] = t - 1);\n    return this.markDirty(), this;\n  }\n  replaceValues(e, t, r) {\n    return r || (r = t, t = {}), this.walkDecls((i) => {\n      t.props && !t.props.includes(i.prop) || t.fast && !i.value.includes(t.fast) || (i.value = i.value.replace(e, r));\n    }), this.markDirty(), this;\n  }\n  some(e) {\n    return this.nodes.some(e);\n  }\n  walk(e) {\n    return this.each((t, r) => {\n      let i;\n      try {\n        i = e(t, r);\n      } catch (n) {\n        throw t.addToError(n);\n      }\n      return i !== !1 && t.walk && (i = t.walk(e)), i;\n    });\n  }\n  walkAtRules(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"atrule\" && e.test(r.name))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"atrule\" && r.name === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"atrule\")\n        return t(r, i);\n    }));\n  }\n  walkComments(e) {\n    return this.walk((t, r) => {\n      if (t.type === \"comment\")\n        return e(t, r);\n    });\n  }\n  walkDecls(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"decl\" && e.test(r.prop))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"decl\" && r.prop === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"decl\")\n        return t(r, i);\n    }));\n  }\n  walkRules(e, t) {\n    return t ? e instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"rule\" && e.test(r.selector))\n        return t(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"rule\" && r.selector === e)\n        return t(r, i);\n    }) : (t = e, this.walk((r, i) => {\n      if (r.type === \"rule\")\n        return t(r, i);\n    }));\n  }\n};\nT.registerParse = (s) => {\n  jt = s;\n};\nT.registerRule = (s) => {\n  tt = s;\n};\nT.registerAtRule = (s) => {\n  et = s;\n};\nT.registerRoot = (s) => {\n  Gt = s;\n};\nvar D = T;\nT.default = T;\nT.rebuild = (s) => {\n  s.type === \"atrule\" ? Object.setPrototypeOf(s, et.prototype) : s.type === \"rule\" ? Object.setPrototypeOf(s, tt.prototype) : s.type === \"decl\" ? Object.setPrototypeOf(s, Ft.prototype) : s.type === \"comment\" ? Object.setPrototypeOf(s, Bt.prototype) : s.type === \"root\" && Object.setPrototypeOf(s, Gt.prototype), s[Wt] = !0, s.nodes && s.nodes.forEach((e) => {\n    T.rebuild(e);\n  });\n};\nlet Yt = D, ge = class extends Yt {\n  constructor(e) {\n    super(e), this.type = \"atrule\";\n  }\n  append(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.append(...e);\n  }\n  prepend(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.prepend(...e);\n  }\n};\nvar rt = ge;\nge.default = ge;\nYt.registerAtRule(ge);\nlet ys = D, qt, Qt, X = class extends ys {\n  constructor(e) {\n    super({ type: \"document\", ...e }), this.nodes || (this.nodes = []);\n  }\n  toResult(e = {}) {\n    return new qt(new Qt(), this, e).stringify();\n  }\n};\nX.registerLazyResult = (s) => {\n  qt = s;\n};\nX.registerProcessor = (s) => {\n  Qt = s;\n};\nvar st = X;\nX.default = X;\nlet ws = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\", bs = (s = 21) => {\n  let e = \"\", t = s | 0;\n  for (; t--; )\n    e += ws[Math.random() * 64 | 0];\n  return e;\n};\nvar Cs = { nanoid: bs };\nlet { existsSync: Ss, readFileSync: xs } = $, { dirname: Me, join: vs } = $, { SourceMapConsumer: mt, SourceMapGenerator: gt } = $;\nfunction Es(s) {\n  return Buffer ? Buffer.from(s, \"base64\").toString() : window.atob(s);\n}\nlet We = class {\n  constructor(e, t) {\n    if (t.map === !1) return;\n    this.loadAnnotation(e), this.inline = this.startWith(this.annotation, \"data:\");\n    let r = t.map ? t.map.prev : void 0, i = this.loadMap(t.from, r);\n    !this.mapFile && t.from && (this.mapFile = t.from), this.mapFile && (this.root = Me(this.mapFile)), i && (this.text = i);\n  }\n  consumer() {\n    return this.consumerCache || (this.consumerCache = new mt(this.text)), this.consumerCache;\n  }\n  decodeInline(e) {\n    let t = /^data:application\\/json;charset=utf-?8;base64,/, r = /^data:application\\/json;base64,/, i = /^data:application\\/json;charset=utf-?8,/, n = /^data:application\\/json,/, l = e.match(i) || e.match(n);\n    if (l)\n      return decodeURIComponent(e.substr(l[0].length));\n    let a = e.match(t) || e.match(r);\n    if (a)\n      return Es(e.substr(a[0].length));\n    let o = e.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + o);\n  }\n  getAnnotationURL(e) {\n    return e.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(e) {\n    return typeof e != \"object\" ? !1 : typeof e.mappings == \"string\" || typeof e._mappings == \"string\" || Array.isArray(e.sections);\n  }\n  loadAnnotation(e) {\n    let t = e.match(/\\/\\*\\s*# sourceMappingURL=/g);\n    if (!t) return;\n    let r = e.lastIndexOf(t.pop()), i = e.indexOf(\"*/\", r);\n    r > -1 && i > -1 && (this.annotation = this.getAnnotationURL(e.substring(r, i)));\n  }\n  loadFile(e) {\n    if (this.root = Me(e), Ss(e))\n      return this.mapFile = e, xs(e, \"utf-8\").toString().trim();\n  }\n  loadMap(e, t) {\n    if (t === !1) return !1;\n    if (t) {\n      if (typeof t == \"string\")\n        return t;\n      if (typeof t == \"function\") {\n        let r = t(e);\n        if (r) {\n          let i = this.loadFile(r);\n          if (!i)\n            throw new Error(\n              \"Unable to load previous source map: \" + r.toString()\n            );\n          return i;\n        }\n      } else {\n        if (t instanceof mt)\n          return gt.fromSourceMap(t).toString();\n        if (t instanceof gt)\n          return t.toString();\n        if (this.isMap(t))\n          return JSON.stringify(t);\n        throw new Error(\n          \"Unsupported previous source map format: \" + t.toString()\n        );\n      }\n    } else {\n      if (this.inline)\n        return this.decodeInline(this.annotation);\n      if (this.annotation) {\n        let r = this.annotation;\n        return e && (r = vs(Me(e), r)), this.loadFile(r);\n      }\n    }\n  }\n  startWith(e, t) {\n    return e ? e.substr(0, t.length) === t : !1;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar Kt = We;\nWe.default = We;\nlet { nanoid: Rs } = Cs, { isAbsolute: je, resolve: Ge } = $, { SourceMapConsumer: Os, SourceMapGenerator: ks } = $, { fileURLToPath: yt, pathToFileURL: ie } = $, wt = Ze, Ns = Kt, Pe = $, Ie = Symbol(\"fromOffsetCache\"), As = !!(Os && ks), bt = !!(Ge && je), ye = class {\n  get from() {\n    return this.file || this.id;\n  }\n  constructor(e, t = {}) {\n    if (e === null || typeof e > \"u\" || typeof e == \"object\" && !e.toString)\n      throw new Error(`PostCSS received ${e} instead of CSS string`);\n    if (this.css = e.toString(), this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\" ? (this.hasBOM = !0, this.css = this.css.slice(1)) : this.hasBOM = !1, this.document = this.css, t.document && (this.document = t.document.toString()), t.from && (!bt || /^\\w+:\\/\\//.test(t.from) || je(t.from) ? this.file = t.from : this.file = Ge(t.from)), bt && As) {\n      let r = new Ns(this.css, t);\n      if (r.text) {\n        this.map = r;\n        let i = r.consumer().file;\n        !this.file && i && (this.file = this.mapResolve(i));\n      }\n    }\n    this.file || (this.id = \"<input css \" + Rs(6) + \">\"), this.map && (this.map.file = this.from);\n  }\n  error(e, t, r, i = {}) {\n    let n, l, a;\n    if (t && typeof t == \"object\") {\n      let f = t, u = r;\n      if (typeof f.offset == \"number\") {\n        let h = this.fromOffset(f.offset);\n        t = h.line, r = h.col;\n      } else\n        t = f.line, r = f.column;\n      if (typeof u.offset == \"number\") {\n        let h = this.fromOffset(u.offset);\n        l = h.line, n = h.col;\n      } else\n        l = u.line, n = u.column;\n    } else if (!r) {\n      let f = this.fromOffset(t);\n      t = f.line, r = f.col;\n    }\n    let o = this.origin(t, r, l, n);\n    return o ? a = new wt(\n      e,\n      o.endLine === void 0 ? o.line : { column: o.column, line: o.line },\n      o.endLine === void 0 ? o.column : { column: o.endColumn, line: o.endLine },\n      o.source,\n      o.file,\n      i.plugin\n    ) : a = new wt(\n      e,\n      l === void 0 ? t : { column: r, line: t },\n      l === void 0 ? r : { column: n, line: l },\n      this.css,\n      this.file,\n      i.plugin\n    ), a.input = { column: r, endColumn: n, endLine: l, line: t, source: this.css }, this.file && (ie && (a.input.url = ie(this.file).toString()), a.input.file = this.file), a;\n  }\n  fromOffset(e) {\n    let t, r;\n    if (this[Ie])\n      r = this[Ie];\n    else {\n      let n = this.css.split(`\n`);\n      r = new Array(n.length);\n      let l = 0;\n      for (let a = 0, o = n.length; a < o; a++)\n        r[a] = l, l += n[a].length + 1;\n      this[Ie] = r;\n    }\n    t = r[r.length - 1];\n    let i = 0;\n    if (e >= t)\n      i = r.length - 1;\n    else {\n      let n = r.length - 2, l;\n      for (; i < n; )\n        if (l = i + (n - i >> 1), e < r[l])\n          n = l - 1;\n        else if (e >= r[l + 1])\n          i = l + 1;\n        else {\n          i = l;\n          break;\n        }\n    }\n    return {\n      col: e - r[i] + 1,\n      line: i + 1\n    };\n  }\n  mapResolve(e) {\n    return /^\\w+:\\/\\//.test(e) ? e : Ge(this.map.consumer().sourceRoot || this.map.root || \".\", e);\n  }\n  origin(e, t, r, i) {\n    if (!this.map) return !1;\n    let n = this.map.consumer(), l = n.originalPositionFor({ column: t, line: e });\n    if (!l.source) return !1;\n    let a;\n    typeof r == \"number\" && (a = n.originalPositionFor({ column: i, line: r }));\n    let o;\n    je(l.source) ? o = ie(l.source) : o = new URL(\n      l.source,\n      this.map.consumer().sourceRoot || ie(this.map.mapFile)\n    );\n    let f = {\n      column: l.column,\n      endColumn: a && a.column,\n      endLine: a && a.line,\n      line: l.line,\n      url: o.toString()\n    };\n    if (o.protocol === \"file:\")\n      if (yt)\n        f.file = yt(o);\n      else\n        throw new Error(\"file: protocol is not available in this PostCSS build\");\n    let u = n.sourceContentFor(l.source);\n    return u && (f.source = u), f;\n  }\n  toJSON() {\n    let e = {};\n    for (let t of [\"hasBOM\", \"css\", \"file\", \"id\"])\n      this[t] != null && (e[t] = this[t]);\n    return this.map && (e.map = { ...this.map }, e.map.consumerCache && (e.map.consumerCache = void 0)), e;\n  }\n};\nvar Oe = ye;\nye.default = ye;\nPe && Pe.registerInput && Pe.registerInput(ye);\nlet Xt = D, Zt, er, j = class extends Xt {\n  constructor(e) {\n    super(e), this.type = \"root\", this.nodes || (this.nodes = []);\n  }\n  normalize(e, t, r) {\n    let i = super.normalize(e);\n    if (t) {\n      if (r === \"prepend\")\n        this.nodes.length > 1 ? t.raws.before = this.nodes[1].raws.before : delete t.raws.before;\n      else if (this.first !== t)\n        for (let n of i)\n          n.raws.before = t.raws.before;\n    }\n    return i;\n  }\n  removeChild(e, t) {\n    let r = this.index(e);\n    return !t && r === 0 && this.nodes.length > 1 && (this.nodes[1].raws.before = this.nodes[r].raws.before), super.removeChild(e);\n  }\n  toResult(e = {}) {\n    return new Zt(new er(), this, e).stringify();\n  }\n};\nj.registerLazyResult = (s) => {\n  Zt = s;\n};\nj.registerProcessor = (s) => {\n  er = s;\n};\nvar se = j;\nj.default = j;\nXt.registerRoot(j);\nlet Z = {\n  comma(s) {\n    return Z.split(s, [\",\"], !0);\n  },\n  space(s) {\n    let e = [\" \", `\n`, \"\t\"];\n    return Z.split(s, e);\n  },\n  split(s, e, t) {\n    let r = [], i = \"\", n = !1, l = 0, a = !1, o = \"\", f = !1;\n    for (let u of s)\n      f ? f = !1 : u === \"\\\\\" ? f = !0 : a ? u === o && (a = !1) : u === '\"' || u === \"'\" ? (a = !0, o = u) : u === \"(\" ? l += 1 : u === \")\" ? l > 0 && (l -= 1) : l === 0 && e.includes(u) && (n = !0), n ? (i !== \"\" && r.push(i.trim()), i = \"\", n = !1) : i += u;\n    return (t || i !== \"\") && r.push(i.trim()), r;\n  }\n};\nvar tr = Z;\nZ.default = Z;\nlet rr = D, Ms = tr, we = class extends rr {\n  get selectors() {\n    return Ms.comma(this.selector);\n  }\n  set selectors(e) {\n    let t = this.selector ? this.selector.match(/,\\s*/) : null, r = t ? t[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = e.join(r);\n  }\n  constructor(e) {\n    super(e), this.type = \"rule\", this.nodes || (this.nodes = []);\n  }\n};\nvar it = we;\nwe.default = we;\nrr.registerRule(we);\nlet Ps = rt, Is = Ee, _s = Re, $s = Oe, Ls = Kt, Ts = se, Ds = it;\nfunction ee(s, e) {\n  if (Array.isArray(s)) return s.map((i) => ee(i));\n  let { inputs: t, ...r } = s;\n  if (t) {\n    e = [];\n    for (let i of t) {\n      let n = { ...i, __proto__: $s.prototype };\n      n.map && (n.map = {\n        ...n.map,\n        __proto__: Ls.prototype\n      }), e.push(n);\n    }\n  }\n  if (r.nodes && (r.nodes = s.nodes.map((i) => ee(i, e))), r.source) {\n    let { inputId: i, ...n } = r.source;\n    r.source = n, i != null && (r.source.input = e[i]);\n  }\n  if (r.type === \"root\")\n    return new Ts(r);\n  if (r.type === \"decl\")\n    return new _s(r);\n  if (r.type === \"rule\")\n    return new Ds(r);\n  if (r.type === \"comment\")\n    return new Is(r);\n  if (r.type === \"atrule\")\n    return new Ps(r);\n  throw new Error(\"Unknown node type: \" + s.type);\n}\nvar Us = ee;\nee.default = ee;\nlet { dirname: he, relative: sr, resolve: ir, sep: nr } = $, { SourceMapConsumer: or, SourceMapGenerator: pe } = $, { pathToFileURL: Ct } = $, Bs = Oe, Fs = !!(or && pe), zs = !!(he && ir && sr && nr), Ws = class {\n  constructor(e, t, r, i) {\n    this.stringify = e, this.mapOpts = r.map || {}, this.root = t, this.opts = r, this.css = i, this.originalCSS = i, this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute, this.memoizedFileURLs = /* @__PURE__ */ new Map(), this.memoizedPaths = /* @__PURE__ */ new Map(), this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let e;\n    this.isInline() ? e = \"data:application/json;base64,\" + this.toBase64(this.map.toString()) : typeof this.mapOpts.annotation == \"string\" ? e = this.mapOpts.annotation : typeof this.mapOpts.annotation == \"function\" ? e = this.mapOpts.annotation(this.opts.to, this.root) : e = this.outputFile() + \".map\";\n    let t = `\n`;\n    this.css.includes(`\\r\n`) && (t = `\\r\n`), this.css += t + \"/*# sourceMappingURL=\" + e + \" */\";\n  }\n  applyPrevMaps() {\n    for (let e of this.previous()) {\n      let t = this.toUrl(this.path(e.file)), r = e.root || he(e.file), i;\n      this.mapOpts.sourcesContent === !1 ? (i = new or(e.text), i.sourcesContent && (i.sourcesContent = null)) : i = e.consumer(), this.map.applySourceMap(i, t, this.toUrl(this.path(r)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation !== !1)\n      if (this.root) {\n        let e;\n        for (let t = this.root.nodes.length - 1; t >= 0; t--)\n          e = this.root.nodes[t], e.type === \"comment\" && e.text.startsWith(\"# sourceMappingURL=\") && this.root.removeChild(t);\n      } else this.css && (this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\"));\n  }\n  generate() {\n    if (this.clearAnnotation(), zs && Fs && this.isMap())\n      return this.generateMap();\n    {\n      let e = \"\";\n      return this.stringify(this.root, (t) => {\n        e += t;\n      }), [e];\n    }\n  }\n  generateMap() {\n    if (this.root)\n      this.generateString();\n    else if (this.previous().length === 1) {\n      let e = this.previous()[0].consumer();\n      e.file = this.outputFile(), this.map = pe.fromSourceMap(e, {\n        ignoreInvalidMapping: !0\n      });\n    } else\n      this.map = new pe({\n        file: this.outputFile(),\n        ignoreInvalidMapping: !0\n      }), this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n      });\n    return this.isSourcesContent() && this.setSourcesContent(), this.root && this.previous().length > 0 && this.applyPrevMaps(), this.isAnnotation() && this.addAnnotation(), this.isInline() ? [this.css] : [this.css, this.map];\n  }\n  generateString() {\n    this.css = \"\", this.map = new pe({\n      file: this.outputFile(),\n      ignoreInvalidMapping: !0\n    });\n    let e = 1, t = 1, r = \"<no source>\", i = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    }, n, l;\n    this.stringify(this.root, (a, o, f) => {\n      if (this.css += a, o && f !== \"end\" && (i.generated.line = e, i.generated.column = t - 1, o.source && o.source.start ? (i.source = this.sourcePath(o), i.original.line = o.source.start.line, i.original.column = o.source.start.column - 1, this.map.addMapping(i)) : (i.source = r, i.original.line = 1, i.original.column = 0, this.map.addMapping(i))), l = a.match(/\\n/g), l ? (e += l.length, n = a.lastIndexOf(`\n`), t = a.length - n) : t += a.length, o && f !== \"start\") {\n        let u = o.parent || { raws: {} };\n        (!(o.type === \"decl\" || o.type === \"atrule\" && !o.nodes) || o !== u.last || u.raws.semicolon) && (o.source && o.source.end ? (i.source = this.sourcePath(o), i.original.line = o.source.end.line, i.original.column = o.source.end.column - 1, i.generated.line = e, i.generated.column = t - 2, this.map.addMapping(i)) : (i.source = r, i.original.line = 1, i.original.column = 0, i.generated.line = e, i.generated.column = t - 1, this.map.addMapping(i)));\n      }\n    });\n  }\n  isAnnotation() {\n    return this.isInline() ? !0 : typeof this.mapOpts.annotation < \"u\" ? this.mapOpts.annotation : this.previous().length ? this.previous().some((e) => e.annotation) : !0;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline < \"u\")\n      return this.mapOpts.inline;\n    let e = this.mapOpts.annotation;\n    return typeof e < \"u\" && e !== !0 ? !1 : this.previous().length ? this.previous().some((t) => t.inline) : !0;\n  }\n  isMap() {\n    return typeof this.opts.map < \"u\" ? !!this.opts.map : this.previous().length > 0;\n  }\n  isSourcesContent() {\n    return typeof this.mapOpts.sourcesContent < \"u\" ? this.mapOpts.sourcesContent : this.previous().length ? this.previous().some((e) => e.withContent()) : !0;\n  }\n  outputFile() {\n    return this.opts.to ? this.path(this.opts.to) : this.opts.from ? this.path(this.opts.from) : \"to.css\";\n  }\n  path(e) {\n    if (this.mapOpts.absolute || e.charCodeAt(0) === 60 || /^\\w+:\\/\\//.test(e)) return e;\n    let t = this.memoizedPaths.get(e);\n    if (t) return t;\n    let r = this.opts.to ? he(this.opts.to) : \".\";\n    typeof this.mapOpts.annotation == \"string\" && (r = he(ir(r, this.mapOpts.annotation)));\n    let i = sr(r, e);\n    return this.memoizedPaths.set(e, i), i;\n  }\n  previous() {\n    if (!this.previousMaps)\n      if (this.previousMaps = [], this.root)\n        this.root.walk((e) => {\n          if (e.source && e.source.input.map) {\n            let t = e.source.input.map;\n            this.previousMaps.includes(t) || this.previousMaps.push(t);\n          }\n        });\n      else {\n        let e = new Bs(this.originalCSS, this.opts);\n        e.map && this.previousMaps.push(e.map);\n      }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let e = {};\n    if (this.root)\n      this.root.walk((t) => {\n        if (t.source) {\n          let r = t.source.input.from;\n          if (r && !e[r]) {\n            e[r] = !0;\n            let i = this.usesFileUrls ? this.toFileUrl(r) : this.toUrl(this.path(r));\n            this.map.setSourceContent(i, t.source.input.css);\n          }\n        }\n      });\n    else if (this.css) {\n      let t = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(t, this.css);\n    }\n  }\n  sourcePath(e) {\n    return this.mapOpts.from ? this.toUrl(this.mapOpts.from) : this.usesFileUrls ? this.toFileUrl(e.source.input.from) : this.toUrl(this.path(e.source.input.from));\n  }\n  toBase64(e) {\n    return Buffer ? Buffer.from(e).toString(\"base64\") : window.btoa(unescape(encodeURIComponent(e)));\n  }\n  toFileUrl(e) {\n    let t = this.memoizedFileURLs.get(e);\n    if (t) return t;\n    if (Ct) {\n      let r = Ct(e).toString();\n      return this.memoizedFileURLs.set(e, r), r;\n    } else\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n  }\n  toUrl(e) {\n    let t = this.memoizedURLs.get(e);\n    if (t) return t;\n    nr === \"\\\\\" && (e = e.replace(/\\\\/g, \"/\"));\n    let r = encodeURI(e).replace(/[#?]/g, encodeURIComponent);\n    return this.memoizedURLs.set(e, r), r;\n  }\n};\nvar lr = Ws;\nconst _e = 39, St = 34, ne = 92, xt = 47, oe = 10, q = 32, le = 12, ae = 9, ue = 13, js = 91, Gs = 93, Vs = 40, Hs = 41, Js = 123, Ys = 125, qs = 59, Qs = 42, Ks = 58, Xs = 64, fe = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g, ce = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g, Zs = /.[\\r\\n\"'(/\\\\]/, vt = /[\\da-f]/i;\nvar ei = function(e, t = {}) {\n  let r = e.css.valueOf(), i = t.ignoreErrors, n, l, a, o, f, u, h, d, g, E, R = r.length, c = 0, m = [], k = [];\n  function M() {\n    return c;\n  }\n  function p(A) {\n    throw e.error(\"Unclosed \" + A, c);\n  }\n  function b() {\n    return k.length === 0 && c >= R;\n  }\n  function O(A) {\n    if (k.length) return k.pop();\n    if (c >= R) return;\n    let N = A ? A.ignoreUnclosed : !1;\n    switch (n = r.charCodeAt(c), n) {\n      case oe:\n      case q:\n      case ae:\n      case ue:\n      case le: {\n        o = c;\n        do\n          o += 1, n = r.charCodeAt(o);\n        while (n === q || n === oe || n === ae || n === ue || n === le);\n        u = [\"space\", r.slice(c, o)], c = o - 1;\n        break;\n      }\n      case js:\n      case Gs:\n      case Js:\n      case Ys:\n      case Ks:\n      case qs:\n      case Hs: {\n        let _ = String.fromCharCode(n);\n        u = [_, _, c];\n        break;\n      }\n      case Vs: {\n        if (E = m.length ? m.pop()[1] : \"\", g = r.charCodeAt(c + 1), E === \"url\" && g !== _e && g !== St && g !== q && g !== oe && g !== ae && g !== le && g !== ue) {\n          o = c;\n          do {\n            if (h = !1, o = r.indexOf(\")\", o + 1), o === -1)\n              if (i || N) {\n                o = c;\n                break;\n              } else\n                p(\"bracket\");\n            for (d = o; r.charCodeAt(d - 1) === ne; )\n              d -= 1, h = !h;\n          } while (h);\n          u = [\"brackets\", r.slice(c, o + 1), c, o], c = o;\n        } else\n          o = r.indexOf(\")\", c + 1), l = r.slice(c, o + 1), o === -1 || Zs.test(l) ? u = [\"(\", \"(\", c] : (u = [\"brackets\", l, c, o], c = o);\n        break;\n      }\n      case _e:\n      case St: {\n        f = n === _e ? \"'\" : '\"', o = c;\n        do {\n          if (h = !1, o = r.indexOf(f, o + 1), o === -1)\n            if (i || N) {\n              o = c + 1;\n              break;\n            } else\n              p(\"string\");\n          for (d = o; r.charCodeAt(d - 1) === ne; )\n            d -= 1, h = !h;\n        } while (h);\n        u = [\"string\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      case Xs: {\n        fe.lastIndex = c + 1, fe.test(r), fe.lastIndex === 0 ? o = r.length - 1 : o = fe.lastIndex - 2, u = [\"at-word\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      case ne: {\n        for (o = c, a = !0; r.charCodeAt(o + 1) === ne; )\n          o += 1, a = !a;\n        if (n = r.charCodeAt(o + 1), a && n !== xt && n !== q && n !== oe && n !== ae && n !== ue && n !== le && (o += 1, vt.test(r.charAt(o)))) {\n          for (; vt.test(r.charAt(o + 1)); )\n            o += 1;\n          r.charCodeAt(o + 1) === q && (o += 1);\n        }\n        u = [\"word\", r.slice(c, o + 1), c, o], c = o;\n        break;\n      }\n      default: {\n        n === xt && r.charCodeAt(c + 1) === Qs ? (o = r.indexOf(\"*/\", c + 2) + 1, o === 0 && (i || N ? o = r.length : p(\"comment\")), u = [\"comment\", r.slice(c, o + 1), c, o], c = o) : (ce.lastIndex = c + 1, ce.test(r), ce.lastIndex === 0 ? o = r.length - 1 : o = ce.lastIndex - 2, u = [\"word\", r.slice(c, o + 1), c, o], m.push(u), c = o);\n        break;\n      }\n    }\n    return c++, u;\n  }\n  function I(A) {\n    k.push(A);\n  }\n  return {\n    back: I,\n    endOfFile: b,\n    nextToken: O,\n    position: M\n  };\n};\nlet ti = rt, ri = Ee, si = Re, ii = se, Et = it, ni = ei;\nconst Rt = {\n  empty: !0,\n  space: !0\n};\nfunction oi(s) {\n  for (let e = s.length - 1; e >= 0; e--) {\n    let t = s[e], r = t[3] || t[2];\n    if (r) return r;\n  }\n}\nlet li = class {\n  constructor(e) {\n    this.input = e, this.root = new ii(), this.current = this.root, this.spaces = \"\", this.semicolon = !1, this.createTokenizer(), this.root.source = { input: e, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(e) {\n    let t = new ti();\n    t.name = e[1].slice(1), t.name === \"\" && this.unnamedAtrule(t, e), this.init(t, e[2]);\n    let r, i, n, l = !1, a = !1, o = [], f = [];\n    for (; !this.tokenizer.endOfFile(); ) {\n      if (e = this.tokenizer.nextToken(), r = e[0], r === \"(\" || r === \"[\" ? f.push(r === \"(\" ? \")\" : \"]\") : r === \"{\" && f.length > 0 ? f.push(\"}\") : r === f[f.length - 1] && f.pop(), f.length === 0)\n        if (r === \";\") {\n          t.source.end = this.getPosition(e[2]), t.source.end.offset++, this.semicolon = !0;\n          break;\n        } else if (r === \"{\") {\n          a = !0;\n          break;\n        } else if (r === \"}\") {\n          if (o.length > 0) {\n            for (n = o.length - 1, i = o[n]; i && i[0] === \"space\"; )\n              i = o[--n];\n            i && (t.source.end = this.getPosition(i[3] || i[2]), t.source.end.offset++);\n          }\n          this.end(e);\n          break;\n        } else\n          o.push(e);\n      else\n        o.push(e);\n      if (this.tokenizer.endOfFile()) {\n        l = !0;\n        break;\n      }\n    }\n    t.raws.between = this.spacesAndCommentsFromEnd(o), o.length ? (t.raws.afterName = this.spacesAndCommentsFromStart(o), this.raw(t, \"params\", o), l && (e = o[o.length - 1], t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++, this.spaces = t.raws.between, t.raws.between = \"\")) : (t.raws.afterName = \"\", t.params = \"\"), a && (t.nodes = [], this.current = t);\n  }\n  checkMissedSemicolon(e) {\n    let t = this.colon(e);\n    if (t === !1) return;\n    let r = 0, i;\n    for (let n = t - 1; n >= 0 && (i = e[n], !(i[0] !== \"space\" && (r += 1, r === 2))); n--)\n      ;\n    throw this.input.error(\n      \"Missed semicolon\",\n      i[0] === \"word\" ? i[3] + 1 : i[2]\n    );\n  }\n  colon(e) {\n    let t = 0, r, i, n;\n    for (let [l, a] of e.entries()) {\n      if (i = a, n = i[0], n === \"(\" && (t += 1), n === \")\" && (t -= 1), t === 0 && n === \":\")\n        if (!r)\n          this.doubleColon(i);\n        else {\n          if (r[0] === \"word\" && r[1] === \"progid\")\n            continue;\n          return l;\n        }\n      r = i;\n    }\n    return !1;\n  }\n  comment(e) {\n    let t = new ri();\n    this.init(t, e[2]), t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++;\n    let r = e[1].slice(2, -2);\n    if (/^\\s*$/.test(r))\n      t.text = \"\", t.raws.left = r, t.raws.right = \"\";\n    else {\n      let i = r.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      t.text = i[2], t.raws.left = i[1], t.raws.right = i[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = ni(this.input);\n  }\n  decl(e, t) {\n    let r = new si();\n    this.init(r, e[0][2]);\n    let i = e[e.length - 1];\n    for (i[0] === \";\" && (this.semicolon = !0, e.pop()), r.source.end = this.getPosition(\n      i[3] || i[2] || oi(e)\n    ), r.source.end.offset++; e[0][0] !== \"word\"; )\n      e.length === 1 && this.unknownWord(e), r.raws.before += e.shift()[1];\n    for (r.source.start = this.getPosition(e[0][2]), r.prop = \"\"; e.length; ) {\n      let f = e[0][0];\n      if (f === \":\" || f === \"space\" || f === \"comment\")\n        break;\n      r.prop += e.shift()[1];\n    }\n    r.raws.between = \"\";\n    let n;\n    for (; e.length; )\n      if (n = e.shift(), n[0] === \":\") {\n        r.raws.between += n[1];\n        break;\n      } else\n        n[0] === \"word\" && /\\w/.test(n[1]) && this.unknownWord([n]), r.raws.between += n[1];\n    (r.prop[0] === \"_\" || r.prop[0] === \"*\") && (r.raws.before += r.prop[0], r.prop = r.prop.slice(1));\n    let l = [], a;\n    for (; e.length && (a = e[0][0], !(a !== \"space\" && a !== \"comment\")); )\n      l.push(e.shift());\n    this.precheckMissedSemicolon(e);\n    for (let f = e.length - 1; f >= 0; f--) {\n      if (n = e[f], n[1].toLowerCase() === \"!important\") {\n        r.important = !0;\n        let u = this.stringFrom(e, f);\n        u = this.spacesFromEnd(e) + u, u !== \" !important\" && (r.raws.important = u);\n        break;\n      } else if (n[1].toLowerCase() === \"important\") {\n        let u = e.slice(0), h = \"\";\n        for (let d = f; d > 0; d--) {\n          let g = u[d][0];\n          if (h.trim().startsWith(\"!\") && g !== \"space\")\n            break;\n          h = u.pop()[1] + h;\n        }\n        h.trim().startsWith(\"!\") && (r.important = !0, r.raws.important = h, e = u);\n      }\n      if (n[0] !== \"space\" && n[0] !== \"comment\")\n        break;\n    }\n    e.some((f) => f[0] !== \"space\" && f[0] !== \"comment\") && (r.raws.between += l.map((f) => f[1]).join(\"\"), l = []), this.raw(r, \"value\", l.concat(e), t), r.value.includes(\":\") && !t && this.checkMissedSemicolon(e);\n  }\n  doubleColon(e) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: e[2] },\n      { offset: e[2] + e[1].length }\n    );\n  }\n  emptyRule(e) {\n    let t = new Et();\n    this.init(t, e[2]), t.selector = \"\", t.raws.between = \"\", this.current = t;\n  }\n  end(e) {\n    this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.semicolon = !1, this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.spaces = \"\", this.current.parent ? (this.current.source.end = this.getPosition(e[2]), this.current.source.end.offset++, this.current = this.current.parent) : this.unexpectedClose(e);\n  }\n  endFile() {\n    this.current.parent && this.unclosedBlock(), this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(e) {\n    if (this.spaces += e[1], this.current.nodes) {\n      let t = this.current.nodes[this.current.nodes.length - 1];\n      t && t.type === \"rule\" && !t.raws.ownSemicolon && (t.raws.ownSemicolon = this.spaces, this.spaces = \"\", t.source.end = this.getPosition(e[2]), t.source.end.offset += t.raws.ownSemicolon.length);\n    }\n  }\n  // Helpers\n  getPosition(e) {\n    let t = this.input.fromOffset(e);\n    return {\n      column: t.col,\n      line: t.line,\n      offset: e\n    };\n  }\n  init(e, t) {\n    this.current.push(e), e.source = {\n      input: this.input,\n      start: this.getPosition(t)\n    }, e.raws.before = this.spaces, this.spaces = \"\", e.type !== \"comment\" && (this.semicolon = !1);\n  }\n  other(e) {\n    let t = !1, r = null, i = !1, n = null, l = [], a = e[1].startsWith(\"--\"), o = [], f = e;\n    for (; f; ) {\n      if (r = f[0], o.push(f), r === \"(\" || r === \"[\")\n        n || (n = f), l.push(r === \"(\" ? \")\" : \"]\");\n      else if (a && i && r === \"{\")\n        n || (n = f), l.push(\"}\");\n      else if (l.length === 0)\n        if (r === \";\")\n          if (i) {\n            this.decl(o, a);\n            return;\n          } else\n            break;\n        else if (r === \"{\") {\n          this.rule(o);\n          return;\n        } else if (r === \"}\") {\n          this.tokenizer.back(o.pop()), t = !0;\n          break;\n        } else r === \":\" && (i = !0);\n      else r === l[l.length - 1] && (l.pop(), l.length === 0 && (n = null));\n      f = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile() && (t = !0), l.length > 0 && this.unclosedBracket(n), t && i) {\n      if (!a)\n        for (; o.length && (f = o[o.length - 1][0], !(f !== \"space\" && f !== \"comment\")); )\n          this.tokenizer.back(o.pop());\n      this.decl(o, a);\n    } else\n      this.unknownWord(o);\n  }\n  parse() {\n    let e;\n    for (; !this.tokenizer.endOfFile(); )\n      switch (e = this.tokenizer.nextToken(), e[0]) {\n        case \"space\":\n          this.spaces += e[1];\n          break;\n        case \";\":\n          this.freeSemicolon(e);\n          break;\n        case \"}\":\n          this.end(e);\n          break;\n        case \"comment\":\n          this.comment(e);\n          break;\n        case \"at-word\":\n          this.atrule(e);\n          break;\n        case \"{\":\n          this.emptyRule(e);\n          break;\n        default:\n          this.other(e);\n          break;\n      }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(e, t, r, i) {\n    let n, l, a = r.length, o = \"\", f = !0, u, h;\n    for (let d = 0; d < a; d += 1)\n      n = r[d], l = n[0], l === \"space\" && d === a - 1 && !i ? f = !1 : l === \"comment\" ? (h = r[d - 1] ? r[d - 1][0] : \"empty\", u = r[d + 1] ? r[d + 1][0] : \"empty\", !Rt[h] && !Rt[u] ? o.slice(-1) === \",\" ? f = !1 : o += n[1] : f = !1) : o += n[1];\n    if (!f) {\n      let d = r.reduce((g, E) => g + E[1], \"\");\n      e.raws[t] = { raw: d, value: o };\n    }\n    e[t] = o;\n  }\n  rule(e) {\n    e.pop();\n    let t = new Et();\n    this.init(t, e[0][2]), t.raws.between = this.spacesAndCommentsFromEnd(e), this.raw(t, \"selector\", e), this.current = t;\n  }\n  spacesAndCommentsFromEnd(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[e.length - 1][0], !(t !== \"space\" && t !== \"comment\")); )\n      r = e.pop()[1] + r;\n    return r;\n  }\n  // Errors\n  spacesAndCommentsFromStart(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[0][0], !(t !== \"space\" && t !== \"comment\")); )\n      r += e.shift()[1];\n    return r;\n  }\n  spacesFromEnd(e) {\n    let t, r = \"\";\n    for (; e.length && (t = e[e.length - 1][0], t === \"space\"); )\n      r = e.pop()[1] + r;\n    return r;\n  }\n  stringFrom(e, t) {\n    let r = \"\";\n    for (let i = t; i < e.length; i++)\n      r += e[i][1];\n    return e.splice(t, e.length - t), r;\n  }\n  unclosedBlock() {\n    let e = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", e.line, e.column);\n  }\n  unclosedBracket(e) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unexpectedClose(e) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unknownWord(e) {\n    throw this.input.error(\n      \"Unknown word \" + e[0][1],\n      { offset: e[0][2] },\n      { offset: e[0][2] + e[0][1].length }\n    );\n  }\n  unnamedAtrule(e, t) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: t[2] },\n      { offset: t[2] + t[1].length }\n    );\n  }\n};\nvar ai = li;\nlet ui = D, fi = Oe, ci = ai;\nfunction be(s, e) {\n  let t = new fi(s, e), r = new ci(t);\n  try {\n    r.parse();\n  } catch (i) {\n    throw process.env.NODE_ENV !== \"production\" && i.name === \"CssSyntaxError\" && e && e.from && (/\\.scss$/i.test(e.from) ? i.message += `\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser` : /\\.sass/i.test(e.from) ? i.message += `\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser` : /\\.less$/i.test(e.from) && (i.message += `\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser`)), i;\n  }\n  return r.root;\n}\nvar nt = be;\nbe.default = be;\nui.registerParse(be);\nlet Ve = class {\n  constructor(e, t = {}) {\n    if (this.type = \"warning\", this.text = e, t.node && t.node.source) {\n      let r = t.node.rangeBy(t);\n      this.line = r.start.line, this.column = r.start.column, this.endLine = r.end.line, this.endColumn = r.end.column;\n    }\n    for (let r in t) this[r] = t[r];\n  }\n  toString() {\n    return this.node ? this.node.error(this.text, {\n      index: this.index,\n      plugin: this.plugin,\n      word: this.word\n    }).message : this.plugin ? this.plugin + \": \" + this.text : this.text;\n  }\n};\nvar ar = Ve;\nVe.default = Ve;\nlet hi = ar, He = class {\n  get content() {\n    return this.css;\n  }\n  constructor(e, t, r) {\n    this.processor = e, this.messages = [], this.root = t, this.opts = r, this.css = void 0, this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(e, t = {}) {\n    t.plugin || this.lastPlugin && this.lastPlugin.postcssPlugin && (t.plugin = this.lastPlugin.postcssPlugin);\n    let r = new hi(e, t);\n    return this.messages.push(r), r;\n  }\n  warnings() {\n    return this.messages.filter((e) => e.type === \"warning\");\n  }\n};\nvar ot = He;\nHe.default = He;\nlet Ot = {};\nvar ur = function(e) {\n  Ot[e] || (Ot[e] = !0, typeof console < \"u\" && console.warn && console.warn(e));\n};\nlet pi = D, di = st, mi = lr, gi = nt, kt = ot, yi = se, wi = xe, { isClean: L, my: bi } = re, Ci = ur;\nconst Si = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n}, xi = {\n  AtRule: !0,\n  AtRuleExit: !0,\n  Comment: !0,\n  CommentExit: !0,\n  Declaration: !0,\n  DeclarationExit: !0,\n  Document: !0,\n  DocumentExit: !0,\n  Once: !0,\n  OnceExit: !0,\n  postcssPlugin: !0,\n  prepare: !0,\n  Root: !0,\n  RootExit: !0,\n  Rule: !0,\n  RuleExit: !0\n}, vi = {\n  Once: !0,\n  postcssPlugin: !0,\n  prepare: !0\n}, G = 0;\nfunction Q(s) {\n  return typeof s == \"object\" && typeof s.then == \"function\";\n}\nfunction fr(s) {\n  let e = !1, t = Si[s.type];\n  return s.type === \"decl\" ? e = s.prop.toLowerCase() : s.type === \"atrule\" && (e = s.name.toLowerCase()), e && s.append ? [\n    t,\n    t + \"-\" + e,\n    G,\n    t + \"Exit\",\n    t + \"Exit-\" + e\n  ] : e ? [t, t + \"-\" + e, t + \"Exit\", t + \"Exit-\" + e] : s.append ? [t, G, t + \"Exit\"] : [t, t + \"Exit\"];\n}\nfunction Nt(s) {\n  let e;\n  return s.type === \"document\" ? e = [\"Document\", G, \"DocumentExit\"] : s.type === \"root\" ? e = [\"Root\", G, \"RootExit\"] : e = fr(s), {\n    eventIndex: 0,\n    events: e,\n    iterator: 0,\n    node: s,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction Je(s) {\n  return s[L] = !1, s.nodes && s.nodes.forEach((e) => Je(e)), s;\n}\nlet Ye = {}, V = class cr {\n  get content() {\n    return this.stringify().content;\n  }\n  get css() {\n    return this.stringify().css;\n  }\n  get map() {\n    return this.stringify().map;\n  }\n  get messages() {\n    return this.sync().messages;\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    return this.sync().root;\n  }\n  get [Symbol.toStringTag]() {\n    return \"LazyResult\";\n  }\n  constructor(e, t, r) {\n    this.stringified = !1, this.processed = !1;\n    let i;\n    if (typeof t == \"object\" && t !== null && (t.type === \"root\" || t.type === \"document\"))\n      i = Je(t);\n    else if (t instanceof cr || t instanceof kt)\n      i = Je(t.root), t.map && (typeof r.map > \"u\" && (r.map = {}), r.map.inline || (r.map.inline = !1), r.map.prev = t.map);\n    else {\n      let n = gi;\n      r.syntax && (n = r.syntax.parse), r.parser && (n = r.parser), n.parse && (n = n.parse);\n      try {\n        i = n(t, r);\n      } catch (l) {\n        this.processed = !0, this.error = l;\n      }\n      i && !i[bi] && pi.rebuild(i);\n    }\n    this.result = new kt(e, i, r), this.helpers = { ...Ye, postcss: Ye, result: this.result }, this.plugins = this.processor.plugins.map((n) => typeof n == \"object\" && n.prepare ? { ...n, ...n.prepare(this.result) } : n);\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : this.processed ? Promise.resolve(this.result) : (this.processing || (this.processing = this.runAsync()), this.processing);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(e, t) {\n    let r = this.result.lastPlugin;\n    try {\n      if (t && t.addToError(e), this.error = e, e.name === \"CssSyntaxError\" && !e.plugin)\n        e.plugin = r.postcssPlugin, e.setMessage();\n      else if (r.postcssVersion && process.env.NODE_ENV !== \"production\") {\n        let i = r.postcssPlugin, n = r.postcssVersion, l = this.result.processor.version, a = n.split(\".\"), o = l.split(\".\");\n        (a[0] !== o[0] || parseInt(a[1]) > parseInt(o[1])) && console.error(\n          \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + l + \", but \" + i + \" uses \" + n + \". Perhaps this is the source of the error below.\"\n        );\n      }\n    } catch (i) {\n      console && console.error && console.error(i);\n    }\n    return e;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let e = (t, r, i) => {\n      this.listeners[r] || (this.listeners[r] = []), this.listeners[r].push([t, i]);\n    };\n    for (let t of this.plugins)\n      if (typeof t == \"object\")\n        for (let r in t) {\n          if (!xi[r] && /^[A-Z]/.test(r))\n            throw new Error(\n              `Unknown event ${r} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          if (!vi[r])\n            if (typeof t[r] == \"object\")\n              for (let i in t[r])\n                i === \"*\" ? e(t, r, t[r][i]) : e(\n                  t,\n                  r + \"-\" + i.toLowerCase(),\n                  t[r][i]\n                );\n            else typeof t[r] == \"function\" && e(t, r, t[r]);\n        }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let e = 0; e < this.plugins.length; e++) {\n      let t = this.plugins[e], r = this.runOnRoot(t);\n      if (Q(r))\n        try {\n          await r;\n        } catch (i) {\n          throw this.handleError(i);\n        }\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let e = this.result.root;\n      for (; !e[L]; ) {\n        e[L] = !0;\n        let t = [Nt(e)];\n        for (; t.length > 0; ) {\n          let r = this.visitTick(t);\n          if (Q(r))\n            try {\n              await r;\n            } catch (i) {\n              let n = t[t.length - 1].node;\n              throw this.handleError(i, n);\n            }\n        }\n      }\n      if (this.listeners.OnceExit)\n        for (let [t, r] of this.listeners.OnceExit) {\n          this.result.lastPlugin = t;\n          try {\n            if (e.type === \"document\") {\n              let i = e.nodes.map(\n                (n) => r(n, this.helpers)\n              );\n              await Promise.all(i);\n            } else\n              await r(e, this.helpers);\n          } catch (i) {\n            throw this.handleError(i);\n          }\n        }\n    }\n    return this.processed = !0, this.stringify();\n  }\n  runOnRoot(e) {\n    this.result.lastPlugin = e;\n    try {\n      if (typeof e == \"object\" && e.Once) {\n        if (this.result.root.type === \"document\") {\n          let t = this.result.root.nodes.map(\n            (r) => e.Once(r, this.helpers)\n          );\n          return Q(t[0]) ? Promise.all(t) : t;\n        }\n        return e.Once(this.result.root, this.helpers);\n      } else if (typeof e == \"function\")\n        return e(this.result.root, this.result);\n    } catch (t) {\n      throw this.handleError(t);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = !0, this.sync();\n    let e = this.result.opts, t = wi;\n    e.syntax && (t = e.syntax.stringify), e.stringifier && (t = e.stringifier), t.stringify && (t = t.stringify);\n    let i = new mi(t, this.result.root, this.result.opts).generate();\n    return this.result.css = i[0], this.result.map = i[1], this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    if (this.processed = !0, this.processing)\n      throw this.getAsyncError();\n    for (let e of this.plugins) {\n      let t = this.runOnRoot(e);\n      if (Q(t))\n        throw this.getAsyncError();\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let e = this.result.root;\n      for (; !e[L]; )\n        e[L] = !0, this.walkSync(e);\n      if (this.listeners.OnceExit)\n        if (e.type === \"document\")\n          for (let t of e.nodes)\n            this.visitSync(this.listeners.OnceExit, t);\n        else\n          this.visitSync(this.listeners.OnceExit, e);\n    }\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this.opts || Ci(\n      \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n    )), this.async().then(e, t);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(e, t) {\n    for (let [r, i] of e) {\n      this.result.lastPlugin = r;\n      let n;\n      try {\n        n = i(t, this.helpers);\n      } catch (l) {\n        throw this.handleError(l, t.proxyOf);\n      }\n      if (t.type !== \"root\" && t.type !== \"document\" && !t.parent)\n        return !0;\n      if (Q(n))\n        throw this.getAsyncError();\n    }\n  }\n  visitTick(e) {\n    let t = e[e.length - 1], { node: r, visitors: i } = t;\n    if (r.type !== \"root\" && r.type !== \"document\" && !r.parent) {\n      e.pop();\n      return;\n    }\n    if (i.length > 0 && t.visitorIndex < i.length) {\n      let [l, a] = i[t.visitorIndex];\n      t.visitorIndex += 1, t.visitorIndex === i.length && (t.visitors = [], t.visitorIndex = 0), this.result.lastPlugin = l;\n      try {\n        return a(r.toProxy(), this.helpers);\n      } catch (o) {\n        throw this.handleError(o, r);\n      }\n    }\n    if (t.iterator !== 0) {\n      let l = t.iterator, a;\n      for (; a = r.nodes[r.indexes[l]]; )\n        if (r.indexes[l] += 1, !a[L]) {\n          a[L] = !0, e.push(Nt(a));\n          return;\n        }\n      t.iterator = 0, delete r.indexes[l];\n    }\n    let n = t.events;\n    for (; t.eventIndex < n.length; ) {\n      let l = n[t.eventIndex];\n      if (t.eventIndex += 1, l === G) {\n        r.nodes && r.nodes.length && (r[L] = !0, t.iterator = r.getIterator());\n        return;\n      } else if (this.listeners[l]) {\n        t.visitors = this.listeners[l];\n        return;\n      }\n    }\n    e.pop();\n  }\n  walkSync(e) {\n    e[L] = !0;\n    let t = fr(e);\n    for (let r of t)\n      if (r === G)\n        e.nodes && e.each((i) => {\n          i[L] || this.walkSync(i);\n        });\n      else {\n        let i = this.listeners[r];\n        if (i && this.visitSync(i, e.toProxy()))\n          return;\n      }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n};\nV.registerPostcss = (s) => {\n  Ye = s;\n};\nvar hr = V;\nV.default = V;\nyi.registerLazyResult(V);\ndi.registerLazyResult(V);\nlet Ei = lr, Ri = nt;\nconst Oi = ot;\nlet ki = xe, Ni = ur, qe = class {\n  get content() {\n    return this.result.css;\n  }\n  get css() {\n    return this.result.css;\n  }\n  get map() {\n    return this.result.map;\n  }\n  get messages() {\n    return [];\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    if (this._root)\n      return this._root;\n    let e, t = Ri;\n    try {\n      e = t(this._css, this._opts);\n    } catch (r) {\n      this.error = r;\n    }\n    if (this.error)\n      throw this.error;\n    return this._root = e, e;\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n  constructor(e, t, r) {\n    t = t.toString(), this.stringified = !1, this._processor = e, this._css = t, this._opts = r, this._map = void 0;\n    let i, n = ki;\n    this.result = new Oi(this._processor, i, this._opts), this.result.css = t;\n    let l = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return l.root;\n      }\n    });\n    let a = new Ei(n, i, this._opts, t);\n    if (a.isMap()) {\n      let [o, f] = a.generate();\n      o && (this.result.css = o), f && (this.result.map = f);\n    } else\n      a.clearAnnotation(), this.result.css = a.css;\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : Promise.resolve(this.result);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this._opts || Ni(\n      \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n    )), this.async().then(e, t);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n};\nvar Ai = qe;\nqe.default = qe;\nlet Mi = st, Pi = hr, Ii = Ai, _i = se, te = class {\n  constructor(e = []) {\n    this.version = \"8.5.3\", this.plugins = this.normalize(e);\n  }\n  normalize(e) {\n    let t = [];\n    for (let r of e)\n      if (r.postcss === !0 ? r = r() : r.postcss && (r = r.postcss), typeof r == \"object\" && Array.isArray(r.plugins))\n        t = t.concat(r.plugins);\n      else if (typeof r == \"object\" && r.postcssPlugin)\n        t.push(r);\n      else if (typeof r == \"function\")\n        t.push(r);\n      else if (typeof r == \"object\" && (r.parse || r.stringify)) {\n        if (process.env.NODE_ENV !== \"production\")\n          throw new Error(\n            \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n          );\n      } else\n        throw new Error(r + \" is not a PostCSS plugin\");\n    return t;\n  }\n  process(e, t = {}) {\n    return !this.plugins.length && !t.parser && !t.stringifier && !t.syntax ? new Ii(this, e, t) : new Pi(this, e, t);\n  }\n  use(e) {\n    return this.plugins = this.plugins.concat(this.normalize([e])), this;\n  }\n};\nvar $i = te;\nte.default = te;\n_i.registerProcessor(te);\nMi.registerProcessor(te);\nlet pr = rt, dr = Ee, Li = D, Ti = Ze, mr = Re, gr = st, Di = Us, Ui = Oe, Bi = hr, Fi = tr, zi = ve, Wi = nt, lt = $i, ji = ot, yr = se, wr = it, Gi = xe, Vi = ar;\nfunction C(...s) {\n  return s.length === 1 && Array.isArray(s[0]) && (s = s[0]), new lt(s);\n}\nC.plugin = function(e, t) {\n  let r = !1;\n  function i(...l) {\n    console && console.warn && !r && (r = !0, console.warn(\n      e + `: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`\n    ), process.env.LANG && process.env.LANG.startsWith(\"cn\") && console.warn(\n      e + `: 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226`\n    ));\n    let a = t(...l);\n    return a.postcssPlugin = e, a.postcssVersion = new lt().version, a;\n  }\n  let n;\n  return Object.defineProperty(i, \"postcss\", {\n    get() {\n      return n || (n = i()), n;\n    }\n  }), i.process = function(l, a, o) {\n    return C([i(o)]).process(l, a);\n  }, i;\n};\nC.stringify = Gi;\nC.parse = Wi;\nC.fromJSON = Di;\nC.list = Fi;\nC.comment = (s) => new dr(s);\nC.atRule = (s) => new pr(s);\nC.decl = (s) => new mr(s);\nC.rule = (s) => new wr(s);\nC.root = (s) => new yr(s);\nC.document = (s) => new gr(s);\nC.CssSyntaxError = Ti;\nC.Declaration = mr;\nC.Container = Li;\nC.Processor = lt;\nC.Document = gr;\nC.Comment = dr;\nC.Warning = Vi;\nC.AtRule = pr;\nC.Result = ji;\nC.Input = Ui;\nC.Rule = wr;\nC.Root = yr;\nC.Node = zi;\nBi.registerPostcss(C);\nvar Hi = C;\nC.default = C;\nconst v = /* @__PURE__ */ ss(Hi);\nv.stringify;\nv.fromJSON;\nv.plugin;\nv.parse;\nv.list;\nv.document;\nv.comment;\nv.atRule;\nv.rule;\nv.decl;\nv.root;\nv.CssSyntaxError;\nv.Declaration;\nv.Container;\nv.Processor;\nv.Document;\nv.Comment;\nv.Warning;\nv.AtRule;\nv.Result;\nv.Input;\nv.Rule;\nv.Root;\nv.Node;\nconst Ji = /(max|min)-device-(width|height)/, At = new RegExp(Ji.source, \"g\"), Yi = {\n  postcssPlugin: \"postcss-custom-selectors\",\n  prepare() {\n    return {\n      postcssPlugin: \"postcss-custom-selectors\",\n      AtRule: function(s) {\n        s.params.match(At) && (s.params = s.params.replace(At, \"$1-$2\"));\n      }\n    };\n  }\n}, qi = {\n  postcssPlugin: \"postcss-hover-classes\",\n  prepare: function() {\n    const s = [];\n    return {\n      Rule: function(e) {\n        s.indexOf(e) === -1 && (s.push(e), e.selectors.forEach(function(t) {\n          if (!t.includes(\":\"))\n            return;\n          const r = t.replace(/\\n/g, \" \").split(\" \"), i = [];\n          r.forEach(function(l) {\n            const a = l.match(/::?([^:]+)/g);\n            if (!a) {\n              i.push(l);\n              return;\n            }\n            const o = l.substr(\n              0,\n              l.length - a.join(\"\").length\n            ), f = a.map(function(u) {\n              return u.replace(/\\(.*/g, \"\") !== \":hover\" || u.match(/^::/) ? u : (u = u.substr(1), u = u.replace(/\\(/g, \"\\\\(\"), u = u.replace(/\\)/g, \"\\\\)\"), \".\\\\:\" + u);\n            });\n            i.push(o + f.join(\"\"));\n          }), n(i.join(\" \"));\n          function n(l) {\n            l && l !== t && (e.selector += `,\n` + l);\n          }\n        }));\n      }\n    };\n  }\n}, Mt = {\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 Qi(s) {\n  let e = Mt[s.tagName] ? Mt[s.tagName] : s.tagName;\n  return e === \"link\" && s.attributes._cssText && (e = \"style\"), e;\n}\nfunction Pt(s, e) {\n  const t = e == null ? void 0 : e.stylesWithHoverClass.get(s);\n  if (t) return t;\n  const i = v([\n    Yi,\n    qi\n  ]).process(s).css;\n  return e == null || e.stylesWithHoverClass.set(s, i), i;\n}\nfunction xn() {\n  return {\n    stylesWithHoverClass: /* @__PURE__ */ new Map()\n  };\n}\nfunction Ki(s, e) {\n  var n;\n  const { doc: t, hackCss: r, cache: i } = e;\n  switch (s.type) {\n    case w.Document:\n      return t.implementation.createDocument(null, \"\", null);\n    case w.DocumentType:\n      return t.implementation.createDocumentType(\n        s.name || \"html\",\n        s.publicId,\n        s.systemId\n      );\n    case w.Element: {\n      const l = Qi(s);\n      let a;\n      s.isSVG ? a = t.createElementNS(\"http://www.w3.org/2000/svg\", l) : (\n        // If the tag name is a custom element name\n        (s.isCustom && // If the browser supports custom elements\n        ((n = t.defaultView) != null && n.customElements) && // If the custom element hasn't been defined yet\n        !t.defaultView.customElements.get(s.tagName) && t.defaultView.customElements.define(\n          s.tagName,\n          class extends t.defaultView.HTMLElement {\n          }\n        ), a = t.createElement(l))\n      );\n      const o = {};\n      for (const f in s.attributes) {\n        if (!Object.prototype.hasOwnProperty.call(s.attributes, f))\n          continue;\n        let u = s.attributes[f];\n        if (l === \"option\" && f === \"selected\" && u === !1 || u === null)\n          continue;\n        if (u === !0 && (u = \"\"), f.startsWith(\"rr_\")) {\n          o[f] = u;\n          continue;\n        }\n        const h = l === \"textarea\" && f === \"value\", d = l === \"style\" && f === \"_cssText\";\n        if (d && r && typeof u == \"string\" && (u = Pt(u, i)), (h || d) && typeof u == \"string\") {\n          a.appendChild(t.createTextNode(u)), s.childNodes = [];\n          continue;\n        }\n        try {\n          if (s.isSVG && f === \"xlink:href\")\n            a.setAttributeNS(\n              \"http://www.w3.org/1999/xlink\",\n              f,\n              u.toString()\n            );\n          else if (f === \"onload\" || f === \"onclick\" || f.substring(0, 7) === \"onmouse\")\n            a.setAttribute(\"_\" + f, u.toString());\n          else if (l === \"meta\" && s.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && f === \"content\") {\n            a.setAttribute(\"csp-content\", u.toString());\n            continue;\n          } else l === \"link\" && (s.attributes.rel === \"preload\" || s.attributes.rel === \"modulepreload\") && s.attributes.as === \"script\" || l === \"link\" && s.attributes.rel === \"prefetch\" && typeof s.attributes.href == \"string\" && s.attributes.href.endsWith(\".js\") || (l === \"img\" && s.attributes.srcset && s.attributes.rr_dataURL ? a.setAttribute(\"original-srcset\", s.attributes.srcset) : a.setAttribute(f, u.toString()));\n        } catch {\n        }\n      }\n      for (const f in o) {\n        const u = o[f];\n        if (l === \"canvas\" && f === \"rr_dataURL\") {\n          const h = t.createElement(\"img\");\n          h.onload = () => {\n            const d = a.getContext(\"2d\");\n            d && d.drawImage(h, 0, 0, h.width, h.height);\n          }, h.src = u.toString(), a.RRNodeType && (a.rr_dataURL = u.toString());\n        } else if (l === \"img\" && f === \"rr_dataURL\") {\n          const h = a;\n          h.currentSrc.startsWith(\"data:\") || (h.setAttribute(\"original-src\", s.attributes.src), h.src = u.toString());\n        }\n        if (f === \"rr_width\")\n          a.style.width = u.toString();\n        else if (f === \"rr_height\")\n          a.style.height = u.toString();\n        else if (f === \"rr_mediaCurrentTime\" && typeof u == \"number\")\n          a.currentTime = u;\n        else if (f === \"rr_mediaState\")\n          switch (u) {\n            case \"played\":\n              a.play().catch((h) => console.warn(\"media playback error\", h));\n              break;\n            case \"paused\":\n              a.pause();\n              break;\n          }\n        else f === \"rr_mediaPlaybackRate\" && typeof u == \"number\" ? a.playbackRate = u : f === \"rr_mediaMuted\" && typeof u == \"boolean\" ? a.muted = u : f === \"rr_mediaLoop\" && typeof u == \"boolean\" ? a.loop = u : f === \"rr_mediaVolume\" && typeof u == \"number\" && (a.volume = u);\n      }\n      if (s.isShadowHost)\n        if (!a.shadowRoot)\n          a.attachShadow({ mode: \"open\" });\n        else\n          for (; a.shadowRoot.firstChild; )\n            a.shadowRoot.removeChild(a.shadowRoot.firstChild);\n      return a;\n    }\n    case w.Text:\n      return t.createTextNode(\n        s.isStyle && r ? Pt(s.textContent, i) : s.textContent\n      );\n    case w.CDATA:\n      return t.createCDATASection(s.textContent);\n    case w.Comment:\n      return t.createComment(s.textContent);\n    default:\n      return null;\n  }\n}\nfunction br(s, e) {\n  const {\n    doc: t,\n    mirror: r,\n    skipChild: i = !1,\n    hackCss: n = !0,\n    afterAppend: l,\n    cache: a\n  } = e;\n  if (r.has(s.id)) {\n    const f = r.getNode(s.id), u = r.getMeta(f);\n    if (Ir(u, s)) return r.getNode(s.id);\n  }\n  let o = Ki(s, { doc: t, hackCss: n, cache: a });\n  if (!o)\n    return null;\n  if (s.rootId && r.getNode(s.rootId) !== t && r.replace(s.rootId, t), s.type === w.Document && (t.close(), t.open(), s.compatMode === \"BackCompat\" && s.childNodes && s.childNodes[0].type !== w.DocumentType && (s.childNodes[0].type === w.Element && \"xmlns\" in s.childNodes[0].attributes && s.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\" ? t.write(\n    '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">'\n  ) : t.write(\n    '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">'\n  )), o = t), r.add(o, s), (s.type === w.Document || s.type === w.Element) && !i)\n    for (const f of s.childNodes) {\n      const u = br(f, {\n        doc: t,\n        mirror: r,\n        skipChild: !1,\n        hackCss: n,\n        afterAppend: l,\n        cache: a\n      });\n      if (!u) {\n        console.warn(\"Failed to rebuild\", f);\n        continue;\n      }\n      if (f.isShadow && Qe(o) && o.shadowRoot)\n        o.shadowRoot.appendChild(u);\n      else if (s.type === w.Document && f.type == w.Element) {\n        const h = u;\n        let d = null;\n        h.childNodes.forEach((g) => {\n          g.nodeName === \"BODY\" && (d = g);\n        }), d ? (h.removeChild(d), o.appendChild(u), h.appendChild(d)) : o.appendChild(u);\n      } else\n        o.appendChild(u);\n      l && l(u, f.id);\n    }\n  return o;\n}\nfunction Xi(s, e) {\n  function t(r) {\n    e(r);\n  }\n  for (const r of s.getIds())\n    s.has(r) && t(s.getNode(r));\n}\nfunction Zi(s, e) {\n  const t = e.getMeta(s);\n  if ((t == null ? void 0 : t.type) !== w.Element)\n    return;\n  const r = s;\n  for (const i in t.attributes) {\n    if (!(Object.prototype.hasOwnProperty.call(t.attributes, i) && i.startsWith(\"rr_\")))\n      continue;\n    const n = t.attributes[i];\n    i === \"rr_scrollLeft\" && (r.scrollLeft = n), i === \"rr_scrollTop\" && (r.scrollTop = n);\n  }\n}\nfunction vn(s, e) {\n  const {\n    doc: t,\n    onVisit: r,\n    hackCss: i = !0,\n    afterAppend: n,\n    cache: l,\n    mirror: a = new Ke()\n  } = e, o = br(s, {\n    doc: t,\n    mirror: a,\n    skipChild: !1,\n    hackCss: i,\n    afterAppend: n,\n    cache: l\n  });\n  return Xi(a, (f) => {\n    r && r(f), Zi(f, a);\n  }), o;\n}\nexport {\n  ut as IGNORED_NODE,\n  Ke as Mirror,\n  w as NodeType,\n  Pt as adaptCssForReplay,\n  br as buildNodeWithSN,\n  $e as classMatchesRegex,\n  nn as cleanupSnapshot,\n  xn as createCache,\n  tn as createMirror,\n  Er as escapeImportStatement,\n  $t as extractFileExtension,\n  Nr as fixSafariColons,\n  Lr as genId,\n  _r as getInputType,\n  Jr as ignoreAttribute,\n  Pr as is2DCanvasBlank,\n  Ar as isCSSImportRule,\n  _t as isCSSStyleRule,\n  Qe as isElement,\n  Ae as isNativeShadowDom,\n  Ir as isNodeMetaEqual,\n  xr as isShadowRoot,\n  Mr as maskInputValue,\n  qr as needMaskingText,\n  vn as rebuild,\n  K as serializeNodeWithId,\n  rn as snapshot,\n  kr as stringifyRule,\n  de as stringifyStylesheet,\n  Ce as toLowerCase,\n  Hr as transformAttribute,\n  sn as visitSnapshot\n};\n//# sourceMappingURL=rrweb-snapshot.js.map\n", "var d = /* @__PURE__ */ ((h) => (h[h.DomContentLoaded = 0] = \"DomContentLoaded\", h[h.Load = 1] = \"Load\", h[h.FullSnapshot = 2] = \"FullSnapshot\", h[h.IncrementalSnapshot = 3] = \"IncrementalSnapshot\", h[h.Meta = 4] = \"Meta\", h[h.Custom = 5] = \"Custom\", h[h.Plugin = 6] = \"Plugin\", h[h.Device = 24] = \"Device\", h[h.SailfishCustom = 25] = \"SailfishCustom\", h))(d || {}), u = /* @__PURE__ */ ((h) => (h[h.Mutation = 0] = \"Mutation\", h[h.MouseMove = 1] = \"MouseMove\", h[h.MouseInteraction = 2] = \"MouseInteraction\", h[h.Scroll = 3] = \"Scroll\", h[h.ViewportResize = 4] = \"ViewportResize\", h[h.Input = 5] = \"Input\", h[h.TouchMove = 6] = \"TouchMove\", h[h.MediaInteraction = 7] = \"MediaInteraction\", h[h.StyleSheetRule = 8] = \"StyleSheetRule\", h[h.CanvasMutation = 9] = \"CanvasMutation\", h[h.Font = 10] = \"Font\", h[h.Log = 11] = \"Log\", h[h.Drag = 12] = \"Drag\", h[h.StyleDeclaration = 13] = \"StyleDeclaration\", h[h.Selection = 14] = \"Selection\", h[h.AdoptedStyleSheet = 15] = \"AdoptedStyleSheet\", h[h.CustomElement = 16] = \"CustomElement\", h[h.Typing = 17] = \"Typing\", h))(u || {}), C = /* @__PURE__ */ ((h) => (h.Append = \"append\", h.Insert = \"insert\", h.Delete = \"delete\", h.Replace = \"replace\", h))(C || {}), D = /* @__PURE__ */ ((h) => (h[h.MouseUp = 0] = \"MouseUp\", h[h.MouseDown = 1] = \"MouseDown\", h[h.Click = 2] = \"Click\", h[h.ContextMenu = 3] = \"ContextMenu\", h[h.DblClick = 4] = \"DblClick\", h[h.Focus = 5] = \"Focus\", h[h.Blur = 6] = \"Blur\", h[h.TouchStart = 7] = \"TouchStart\", h[h.TouchMove_Departed = 8] = \"TouchMove_Departed\", h[h.TouchEnd = 9] = \"TouchEnd\", h[h.TouchCancel = 10] = \"TouchCancel\", h))(D || {}), g = /* @__PURE__ */ ((h) => (h[h.Mouse = 0] = \"Mouse\", h[h.Pen = 1] = \"Pen\", h[h.Touch = 2] = \"Touch\", h))(g || {}), k = /* @__PURE__ */ ((h) => (h[h[\"2D\"] = 0] = \"2D\", h[h.WebGL = 1] = \"WebGL\", h[h.WebGL2 = 2] = \"WebGL2\", h))(k || {}), L = /* @__PURE__ */ ((h) => (h[h.Play = 0] = \"Play\", h[h.Pause = 1] = \"Pause\", h[h.Seeked = 2] = \"Seeked\", h[h.VolumeChange = 3] = \"VolumeChange\", h[h.RateChange = 4] = \"RateChange\", h))(L || {}), b = /* @__PURE__ */ ((h) => (h.Start = \"start\", h.Pause = \"pause\", h.Resume = \"resume\", h.Resize = \"resize\", h.Finish = \"finish\", h.FullsnapshotRebuilded = \"fullsnapshot-rebuilded\", h.LoadStylesheetStart = \"load-stylesheet-start\", h.LoadStylesheetEnd = \"load-stylesheet-end\", h.SkipStart = \"skip-start\", h.SkipEnd = \"skip-end\", h.MouseInteraction = \"mouse-interaction\", h.EventCast = \"event-cast\", h.CustomEvent = \"custom-event\", h.Flush = \"flush\", h.StateChange = \"state-change\", h.PlayBack = \"play-back\", h.Destroy = \"destroy\", h))(b || {});\nexport {\n  k as CanvasContext,\n  d as EventType,\n  u as IncrementalSource,\n  L as MediaInteractions,\n  D as MouseInteractions,\n  g as PointerTypes,\n  b as ReplayerEvents,\n  C as TextDeltaOp\n};\n//# sourceMappingURL=types.js.map\n", "import type { RRIFrameElement, RRNode } from '@sailfish-rrweb/rrdom';\nimport type {\n  IMirror,\n  Mirror,\n  SlimDOMOptions,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport {\n  IGNORED_NODE,\n  classMatchesRegex,\n  isShadowRoot,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  DeprecatedMirror,\n  DocumentDimension,\n  IWindow,\n  addedNodeMutation,\n  blockClass,\n  hookResetter,\n  listenerHandler,\n  textMutation,\n  throttleOptions,\n} from '@sailfish-rrweb/types';\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  const el: HTMLElement | null =\n    node.nodeType === node.ELEMENT_NODE\n      ? (node as HTMLElement)\n      : node.parentElement;\n  return el;\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  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  try {\n    if (typeof blockClass === 'string') {\n      if (el.classList.contains(blockClass)) return true;\n      if (checkAncestors && el.closest('.' + blockClass) !== null) return true;\n    } else {\n      if (classMatchesRegex(el, blockClass, checkAncestors)) return true;\n    }\n  } catch (e) {\n    // e\n  }\n  if (blockSelector) {\n    if (el.matches(blockSelector)) return true;\n    if (checkAncestors && el.closest(blockSelector) !== null) return true;\n  }\n  return false;\n}\n\nexport function isSerialized(n: Node, mirror: Mirror): boolean {\n  return mirror.getId(n) !== -1;\n}\n\nexport function isIgnored(\n  n: Node,\n  mirror: Mirror,\n  slimDOMOptions: SlimDOMOptions,\n): boolean {\n  if ((n as Element).tagName === 'TITLE' && slimDOMOptions.headTitleMutations) {\n    // we do this check here but not in rrweb-snapshot\n    // to block mutations/animations on the title.\n    // the headTitleMutations option isn't intended to block recording of the initial value\n    return true;\n  }\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", "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      }\n      throw error;\n    }\n  }) as unknown as T;\n  return rrwebWrapped;\n};\n", "import type { ICrossOriginIframeMirror } from '@sailfish-rrweb/types';\nexport default class CrossOriginIframeMirror\n  implements ICrossOriginIframeMirror\n{\n  private iframeIdToRemoteIdMap: WeakMap<\n    HTMLIFrameElement,\n    Map<number, number>\n  > = new WeakMap();\n  private iframeRemoteIdToIdMap: WeakMap<\n    HTMLIFrameElement,\n    Map<number, number>\n  > = new WeakMap();\n\n  constructor(private generateIdFn: () => number) {}\n\n  getId(\n    iframe: HTMLIFrameElement,\n    remoteId: number,\n    idToRemoteMap?: Map<number, number>,\n    remoteToIdMap?: Map<number, number>,\n  ): number {\n    const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n\n    let id = idToRemoteIdMap.get(remoteId);\n    if (!id) {\n      id = this.generateIdFn();\n      idToRemoteIdMap.set(remoteId, id);\n      remoteIdToIdMap.set(id, remoteId);\n    }\n    return id;\n  }\n\n  getIds(iframe: HTMLIFrameElement, remoteId: number[]): number[] {\n    const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n    return remoteId.map((id) =>\n      this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap),\n    );\n  }\n\n  getRemoteId(\n    iframe: HTMLIFrameElement,\n    id: number,\n    map?: Map<number, number>,\n  ): number {\n    const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n\n    if (typeof id !== 'number') return id;\n\n    const remoteId = remoteIdToIdMap.get(id);\n    if (!remoteId) return -1;\n    return remoteId;\n  }\n\n  getRemoteIds(iframe: HTMLIFrameElement, ids: number[]): number[] {\n    const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n\n    return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n  }\n\n  reset(iframe?: HTMLIFrameElement) {\n    if (!iframe) {\n      this.iframeIdToRemoteIdMap = new WeakMap();\n      this.iframeRemoteIdToIdMap = new WeakMap();\n      return;\n    }\n    this.iframeIdToRemoteIdMap.delete(iframe);\n    this.iframeRemoteIdToIdMap.delete(iframe);\n  }\n\n  private getIdToRemoteIdMap(iframe: HTMLIFrameElement) {\n    let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n    if (!idToRemoteIdMap) {\n      idToRemoteIdMap = new Map();\n      this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n    }\n    return idToRemoteIdMap;\n  }\n\n  private getRemoteIdToIdMap(iframe: HTMLIFrameElement) {\n    let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n    if (!remoteIdToIdMap) {\n      remoteIdToIdMap = new Map();\n      this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n    }\n    return remoteIdToIdMap;\n  }\n}\n", "import type {\n  Mirror,\n  serializedNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport { NodeType, genId } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  eventWithTime,\n  eventWithoutTime,\n  mutationCallBack,\n} from '@sailfish-rrweb/types';\nimport { EventType, IncrementalSource } from '@sailfish-rrweb/types';\nimport type { CrossOriginIframeMessageEvent } from '../types';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror';\nimport type { StylesheetManager } from './stylesheet-manager';\n\nexport class IframeManager {\n  private iframes: WeakMap<HTMLIFrameElement, true> = new WeakMap();\n  private crossOriginIframeMap: WeakMap<MessageEventSource, HTMLIFrameElement> =\n    new WeakMap();\n  public crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n  public crossOriginIframeStyleMirror: CrossOriginIframeMirror;\n  public crossOriginIframeRootIdMap: WeakMap<HTMLIFrameElement, number> =\n    new WeakMap();\n  private mirror: Mirror;\n  private mutationCb: mutationCallBack;\n  // @ts-expect-error\n  private wrappedEmit: (e: eventWithoutTime, isCheckout?: boolean) => void;\n  private loadListener?: (iframeEl: HTMLIFrameElement) => unknown;\n  private stylesheetManager: StylesheetManager;\n  private recordCrossOriginIframes: boolean;\n\n  constructor(options: {\n    mirror: Mirror;\n    mutationCb: mutationCallBack;\n    stylesheetManager: StylesheetManager;\n    recordCrossOriginIframes: boolean;\n    wrappedEmit: (e: eventWithoutTime, isCheckout?: boolean) => void;\n  }) {\n    this.mutationCb = options.mutationCb;\n    this.wrappedEmit = options.wrappedEmit;\n    this.stylesheetManager = options.stylesheetManager;\n    this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n    this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(\n      this.stylesheetManager.styleMirror.generateId.bind(\n        this.stylesheetManager.styleMirror,\n      ),\n    );\n    this.mirror = options.mirror;\n    if (this.recordCrossOriginIframes) {\n      window.addEventListener('message', this.handleMessage.bind(this));\n    }\n  }\n\n  public addIframe(iframeEl: HTMLIFrameElement) {\n    this.iframes.set(iframeEl, true);\n    if (iframeEl.contentWindow)\n      this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n  }\n\n  public addLoadListener(cb: (iframeEl: HTMLIFrameElement) => unknown) {\n    this.loadListener = cb;\n  }\n\n  public attachIframe(\n    iframeEl: HTMLIFrameElement,\n    childSn: serializedNodeWithId,\n  ) {\n    this.mutationCb({\n      adds: [\n        {\n          parentId: this.mirror.getId(iframeEl),\n          nextId: null,\n          node: childSn,\n        },\n      ],\n      removes: [],\n      texts: [],\n      attributes: [],\n      isAttachIframe: true,\n    });\n\n    // Receive messages (events) coming from cross-origin iframes that are nested in this same-origin iframe.\n    if (this.recordCrossOriginIframes)\n      iframeEl.contentWindow?.addEventListener(\n        'message',\n        this.handleMessage.bind(this),\n      );\n\n    this.loadListener?.(iframeEl);\n\n    if (\n      iframeEl.contentDocument &&\n      iframeEl.contentDocument.adoptedStyleSheets &&\n      iframeEl.contentDocument.adoptedStyleSheets.length > 0\n    )\n      this.stylesheetManager.adoptStyleSheets(\n        iframeEl.contentDocument.adoptedStyleSheets,\n        this.mirror.getId(iframeEl.contentDocument),\n      );\n  }\n  private handleMessage(message: MessageEvent | CrossOriginIframeMessageEvent) {\n    const crossOriginMessageEvent = message as CrossOriginIframeMessageEvent;\n    if (\n      crossOriginMessageEvent.data.type !== '@sailfish-rrweb/rrweb' ||\n      // To filter out the rrweb messages which are forwarded by some sites.\n      crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin\n    )\n      return;\n  }\n\n  // @ts-expect-error\n  private transformCrossOriginEvent(\n    iframeEl: HTMLIFrameElement,\n    e: eventWithTime,\n  ): eventWithTime | false {\n    switch (e.type) {\n      case EventType.FullSnapshot: {\n        this.crossOriginIframeMirror.reset(iframeEl);\n        this.crossOriginIframeStyleMirror.reset(iframeEl);\n        /**\n         * Replaces the original id of the iframe with a new set of unique ids\n         */\n        this.replaceIdOnNode(e.data.node, iframeEl);\n        const rootId = e.data.node.id;\n        this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n        this.patchRootIdOnNode(e.data.node, rootId);\n        return {\n          timestamp: e.timestamp,\n          type: EventType.IncrementalSnapshot,\n          data: {\n            source: IncrementalSource.Mutation,\n            adds: [\n              {\n                parentId: this.mirror.getId(iframeEl),\n                nextId: null,\n                node: e.data.node,\n              },\n            ],\n            removes: [],\n            texts: [],\n            attributes: [],\n            isAttachIframe: true,\n          },\n        };\n      }\n      case EventType.Meta:\n      case EventType.Load:\n      case EventType.DomContentLoaded: {\n        return false;\n      }\n      case EventType.Plugin: {\n        return e;\n      }\n      case EventType.Custom: {\n        this.replaceIds(\n          e.data.payload as {\n            id?: unknown;\n            parentId?: unknown;\n            previousId?: unknown;\n            nextId?: unknown;\n          },\n          iframeEl,\n          ['id', 'parentId', 'previousId', 'nextId'],\n        );\n        return e;\n      }\n      case EventType.IncrementalSnapshot: {\n        switch (e.data.source) {\n          case IncrementalSource.Mutation: {\n            e.data.adds.forEach((n) => {\n              this.replaceIds(n, iframeEl, [\n                'parentId',\n                'nextId',\n                'previousId',\n              ]);\n              this.replaceIdOnNode(n.node, iframeEl);\n              const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n              rootId && this.patchRootIdOnNode(n.node, rootId);\n            });\n            e.data.removes.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['parentId', 'id']);\n            });\n            e.data.attributes.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['id']);\n            });\n            e.data.texts.forEach((n) => {\n              this.replaceIds(n, iframeEl, ['id']);\n            });\n            return e;\n          }\n          case IncrementalSource.Drag:\n          case IncrementalSource.TouchMove:\n          case IncrementalSource.MouseMove: {\n            e.data.positions.forEach((p) => {\n              this.replaceIds(p, iframeEl, ['id']);\n            });\n            return e;\n          }\n          case IncrementalSource.ViewportResize: {\n            // can safely ignore these events\n            return false;\n          }\n          case IncrementalSource.MediaInteraction:\n          case IncrementalSource.MouseInteraction:\n          case IncrementalSource.Scroll:\n          case IncrementalSource.CanvasMutation:\n          case IncrementalSource.Input: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            return e;\n          }\n          case IncrementalSource.StyleSheetRule:\n          case IncrementalSource.StyleDeclaration: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            this.replaceStyleIds(e.data, iframeEl, ['styleId']);\n            return e;\n          }\n          case IncrementalSource.Font: {\n            // fine as-is no modification needed\n            return e;\n          }\n          case IncrementalSource.Selection: {\n            e.data.ranges.forEach((range) => {\n              this.replaceIds(range, iframeEl, ['start', 'end']);\n            });\n            return e;\n          }\n          case IncrementalSource.AdoptedStyleSheet: {\n            this.replaceIds(e.data, iframeEl, ['id']);\n            this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\n            e.data.styles?.forEach((style) => {\n              this.replaceStyleIds(style, iframeEl, ['styleId']);\n            });\n            return e;\n          }\n        }\n      }\n    }\n    return false;\n  }\n\n  private replace<T extends Record<string, unknown>>(\n    iframeMirror: CrossOriginIframeMirror,\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\n    for (const key of keys) {\n      if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number') continue;\n      if (Array.isArray(obj[key])) {\n        obj[key] = iframeMirror.getIds(\n          iframeEl,\n          obj[key] as number[],\n        ) as T[keyof T];\n      } else {\n        (obj[key] as number) = iframeMirror.getId(iframeEl, obj[key] as number);\n      }\n    }\n\n    return obj;\n  }\n\n  private replaceIds<T extends Record<string, unknown>>(\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\n    return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n  }\n\n  private replaceStyleIds<T extends Record<string, unknown>>(\n    obj: T,\n    iframeEl: HTMLIFrameElement,\n    keys: Array<keyof T>,\n  ): T {\n    return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n  }\n\n  private replaceIdOnNode(\n    node: serializedNodeWithId,\n    iframeEl: HTMLIFrameElement,\n  ) {\n    this.replaceIds(node, iframeEl, ['id', 'rootId']);\n    if ('childNodes' in node) {\n      node.childNodes.forEach((child) => {\n        this.replaceIdOnNode(child, iframeEl);\n      });\n    }\n  }\n\n  private patchRootIdOnNode(node: serializedNodeWithId, rootId: number) {\n    if (node.type !== NodeType.Document && !node.rootId) node.rootId = rootId;\n    if ('childNodes' in node) {\n      node.childNodes.forEach((child) => {\n        this.patchRootIdOnNode(child, rootId);\n      });\n    }\n  }\n}\n", "import { TextDeltaOp } from '@sailfish-rrweb/types';\nimport type { TextDelta } from '@sailfish-rrweb/types';\n\n/**\n * Result of comparing two strings for text delta\n */\nexport interface DiffResult {\n  delta: TextDelta | null;\n  /** Estimated byte size of the delta representation */\n  deltaSize: number;\n  /** Byte size of full text representation */\n  fullTextSize: number;\n}\n\n/**\n * Estimates the JSON serialization size of an object\n */\nfunction estimateJsonSize(obj: unknown): number {\n  return JSON.stringify(obj).length;\n}\n\n/**\n * Computes the diff between oldText and newText.\n * Returns the most efficient delta operation.\n *\n * Algorithm:\n * 1. Check for simple append (most common case for streaming)\n * 2. Check for simple delete from end (backspace)\n * 3. Find common prefix and suffix to identify middle change\n * 4. Create insert/delete/replace as appropriate\n */\nexport function computeTextDiff(\n  oldText: string | null,\n  newText: string | null,\n): DiffResult {\n  const oldStr = oldText || '';\n  const newStr = newText || '';\n  const fullTextSize = estimateJsonSize({ value: newStr });\n\n  // Empty old text - always use full text (establishes baseline)\n  if (oldStr.length === 0) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // No change\n  if (oldStr === newStr) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // Complete clear - full text is cleaner\n  if (newStr.length === 0) {\n    return { delta: null, deltaSize: Infinity, fullTextSize };\n  }\n\n  // Case 1: Simple append (most common - streaming text)\n  if (newStr.startsWith(oldStr)) {\n    const appendedText = newStr.slice(oldStr.length);\n    const delta: TextDelta = {\n      op: TextDeltaOp.Append,\n      text: appendedText,\n    };\n    const deltaSize = estimateJsonSize({ delta });\n    return { delta, deltaSize, fullTextSize };\n  }\n\n  // Case 2: Simple delete from end (backspace)\n  if (oldStr.startsWith(newStr)) {\n    const deleteLength = oldStr.length - newStr.length;\n    const delta: TextDelta = {\n      op: TextDeltaOp.Delete,\n      pos: newStr.length,\n      length: deleteLength,\n    };\n    const deltaSize = estimateJsonSize({ delta });\n    return { delta, deltaSize, fullTextSize };\n  }\n\n  // Case 3: Find common prefix\n  let commonPrefixLen = 0;\n  const minLen = Math.min(oldStr.length, newStr.length);\n  while (\n    commonPrefixLen < minLen &&\n    oldStr[commonPrefixLen] === newStr[commonPrefixLen]\n  ) {\n    commonPrefixLen++;\n  }\n\n  // Case 4: Find common suffix (from the non-prefix portion)\n  let commonSuffixLen = 0;\n  const oldRemaining = oldStr.length - commonPrefixLen;\n  const newRemaining = newStr.length - commonPrefixLen;\n  const maxSuffixLen = Math.min(oldRemaining, newRemaining);\n  while (\n    commonSuffixLen < maxSuffixLen &&\n    oldStr[oldStr.length - 1 - commonSuffixLen] ===\n      newStr[newStr.length - 1 - commonSuffixLen]\n  ) {\n    commonSuffixLen++;\n  }\n\n  // Determine what changed in the middle\n  const oldMiddleLen = oldStr.length - commonPrefixLen - commonSuffixLen;\n  const newMiddleLen = newStr.length - commonPrefixLen - commonSuffixLen;\n  const newMiddleText = newStr.slice(\n    commonPrefixLen,\n    newStr.length - commonSuffixLen,\n  );\n\n  let delta: TextDelta;\n\n  if (oldMiddleLen === 0 && newMiddleLen > 0) {\n    // Pure insert\n    delta = {\n      op: TextDeltaOp.Insert,\n      pos: commonPrefixLen,\n      text: newMiddleText,\n    };\n  } else if (oldMiddleLen > 0 && newMiddleLen === 0) {\n    // Pure delete\n    delta = {\n      op: TextDeltaOp.Delete,\n      pos: commonPrefixLen,\n      length: oldMiddleLen,\n    };\n  } else {\n    // Replace\n    delta = {\n      op: TextDeltaOp.Replace,\n      pos: commonPrefixLen,\n      deleteCount: oldMiddleLen,\n      text: newMiddleText,\n    };\n  }\n\n  const deltaSize = estimateJsonSize({ delta });\n  return { delta, deltaSize, fullTextSize };\n}\n\n/**\n * Determines if delta should be used based on size comparison.\n * Includes a threshold to prefer full text when sizes are similar\n * (full text is simpler and more debuggable).\n */\nexport function shouldUseDelta(result: DiffResult): boolean {\n  if (!result.delta) return false;\n  // Use delta only if it saves at least 20% space\n  return result.deltaSize < result.fullTextSize * 0.8;\n}\n\n/**\n * Applies a delta operation to the current text to produce new text.\n * Used during replay to reconstruct the value.\n */\nexport function applyTextDelta(\n  currentText: string | null,\n  delta: TextDelta,\n): string {\n  const text = currentText || '';\n\n  switch (delta.op) {\n    case TextDeltaOp.Append:\n      return text + delta.text;\n\n    case TextDeltaOp.Insert:\n      return text.slice(0, delta.pos) + delta.text + text.slice(delta.pos);\n\n    case TextDeltaOp.Delete:\n      return text.slice(0, delta.pos) + text.slice(delta.pos + delta.length);\n\n    case TextDeltaOp.Replace:\n      return (\n        text.slice(0, delta.pos) +\n        delta.text +\n        text.slice(delta.pos + delta.deleteCount)\n      );\n\n    default:\n      // Unknown operation - return unchanged (defensive)\n      return text;\n  }\n}\n", "import {\n  IGNORED_NODE,\n  Mirror,\n  getInputType,\n  ignoreAttribute,\n  isNativeShadowDom,\n  isShadowRoot,\n  maskInputValue,\n  needMaskingText,\n  serializeNodeWithId,\n  toLowerCase,\n  transformAttribute,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  Optional,\n  addedNodeMutation,\n  attributeCursor,\n  mutationRecord,\n  removedNodeMutation,\n  textCursor,\n  textMutation,\n} from '@sailfish-rrweb/types';\nimport { computeTextDiff, shouldUseDelta } from './text-diff';\nimport type { MutationBufferParam, observerParam } from '../types';\nimport {\n  closestElementOfNode,\n  getShadowHost,\n  hasShadowRoot,\n  inDom,\n  isAncestorRemoved,\n  isBlocked,\n  isIgnored,\n  isSerialized,\n  isSerializedIframe,\n  isSerializedStylesheet,\n} from '../utils';\n\ntype DoubleLinkedListNode = {\n  previous: DoubleLinkedListNode | null;\n  next: DoubleLinkedListNode | null;\n  value: NodeInLinkedList;\n};\ntype NodeInLinkedList = Node & {\n  __ln: DoubleLinkedListNode;\n};\n\nfunction isNodeInLinkedList(n: Node | NodeInLinkedList): n is NodeInLinkedList {\n  return '__ln' in n;\n}\n\nclass DoubleLinkedList {\n  public length = 0;\n  public head: DoubleLinkedListNode | null = null;\n  public tail: DoubleLinkedListNode | null = null;\n\n  public get(position: number) {\n    if (position >= this.length) {\n      throw new Error('Position outside of list range');\n    }\n\n    let current = this.head;\n    for (let index = 0; index < position; index++) {\n      current = current?.next || null;\n    }\n    return current;\n  }\n\n  public addNode(n: Node) {\n    const node: DoubleLinkedListNode = {\n      value: n as NodeInLinkedList,\n      previous: null,\n      next: null,\n    };\n    (n as NodeInLinkedList).__ln = node;\n    if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n      const current = n.previousSibling.__ln.next;\n      node.next = current;\n      node.previous = n.previousSibling.__ln;\n      n.previousSibling.__ln.next = node;\n      if (current) {\n        current.previous = node;\n      }\n    } else if (\n      n.nextSibling &&\n      isNodeInLinkedList(n.nextSibling) &&\n      n.nextSibling.__ln.previous\n    ) {\n      const current = n.nextSibling.__ln.previous;\n      node.previous = current;\n      node.next = n.nextSibling.__ln;\n      n.nextSibling.__ln.previous = node;\n      if (current) {\n        current.next = node;\n      }\n    } else {\n      if (this.head) {\n        this.head.previous = node;\n      }\n      node.next = this.head;\n      this.head = node;\n    }\n    if (node.next === null) {\n      this.tail = node;\n    }\n    this.length++;\n  }\n\n  public removeNode(n: NodeInLinkedList) {\n    const current = n.__ln;\n    if (!this.head) {\n      return;\n    }\n\n    if (!current.previous) {\n      this.head = current.next;\n      if (this.head) {\n        this.head.previous = null;\n      } else {\n        this.tail = null;\n      }\n    } else {\n      current.previous.next = current.next;\n      if (current.next) {\n        current.next.previous = current.previous;\n      } else {\n        this.tail = current.previous;\n      }\n    }\n    if (n.__ln) {\n      delete (n as Optional<NodeInLinkedList, '__ln'>).__ln;\n    }\n    this.length--;\n  }\n}\n\nconst moveKey = (id: number, parentId: number) => `${id}@${parentId}`;\n\n/**\n * controls behaviour of a MutationObserver\n */\nexport default class MutationBuffer {\n  private frozen = false;\n  private locked = false;\n\n  private texts: textCursor[] = [];\n  private attributes: attributeCursor[] = [];\n  private attributeMap = new WeakMap<Node, attributeCursor>();\n  private removes: removedNodeMutation[] = [];\n  private mapRemoves: Node[] = [];\n\n  private movedMap: Record<string, true> = {};\n\n  /**\n   * the browser MutationObserver emits multiple mutations after\n   * a delay for performance reasons, making tracing added nodes hard\n   * in our `processMutations` callback function.\n   * For example, if we append an element el_1 into body, and then append\n   * another element el_2 into el_1, these two mutations may be passed to the\n   * callback function together when the two operations were done.\n   * Generally we need to trace child nodes of newly added nodes, but in this\n   * case if we count el_2 as el_1's child node in the first mutation record,\n   * then we will count el_2 again in the second mutation record which was\n   * duplicated.\n   * To avoid of duplicate counting added nodes, we use a Set to store\n   * added nodes and its child nodes during iterate mutation records. Then\n   * collect added nodes from the Set which have no duplicate copy. But\n   * this also causes newly added nodes will not be serialized with id ASAP,\n   * which means all the id related calculation should be lazy too.\n   */\n  private addedSet = new Set<Node>();\n  private movedSet = new Set<Node>();\n  private droppedSet = new Set<Node>();\n\n  private mutationCb: observerParam['mutationCb'];\n  private blockClass: observerParam['blockClass'];\n  private blockSelector: observerParam['blockSelector'];\n  private maskTextClass: observerParam['maskTextClass'];\n  private maskTextSelector: observerParam['maskTextSelector'];\n  private inlineStylesheet: observerParam['inlineStylesheet'];\n  private maskInputOptions: observerParam['maskInputOptions'];\n  private maskTextFn: observerParam['maskTextFn'];\n  private maskInputFn: observerParam['maskInputFn'];\n  private keepIframeSrcFn: observerParam['keepIframeSrcFn'];\n  private recordCanvas: observerParam['recordCanvas'];\n  private inlineImages: observerParam['inlineImages'];\n  private slimDOMOptions: observerParam['slimDOMOptions'];\n  private dataURLOptions: observerParam['dataURLOptions'];\n  private doc: observerParam['doc'];\n  private mirror: observerParam['mirror'];\n  private iframeManager: observerParam['iframeManager'];\n  private stylesheetManager: observerParam['stylesheetManager'];\n  private shadowDomManager: observerParam['shadowDomManager'];\n  private canvasManager: observerParam['canvasManager'];\n  private processedNodeManager: observerParam['processedNodeManager'];\n  private unattachedDoc: HTMLDocument;\n\n  public init(options: MutationBufferParam) {\n    (\n      [\n        'mutationCb',\n        'blockClass',\n        'blockSelector',\n        'maskTextClass',\n        'maskTextSelector',\n        'inlineStylesheet',\n        'maskInputOptions',\n        'maskTextFn',\n        'maskInputFn',\n        'keepIframeSrcFn',\n        'recordCanvas',\n        'inlineImages',\n        'slimDOMOptions',\n        'dataURLOptions',\n        'doc',\n        'mirror',\n        'iframeManager',\n        'stylesheetManager',\n        'shadowDomManager',\n        'canvasManager',\n        'processedNodeManager',\n      ] as const\n    ).forEach((key) => {\n      // just a type trick, the runtime result is correct\n      this[key] = options[key] as never;\n    });\n  }\n\n  public freeze() {\n    this.frozen = true;\n    this.canvasManager.freeze();\n  }\n\n  public unfreeze() {\n    this.frozen = false;\n    this.canvasManager.unfreeze();\n    this.emit();\n  }\n\n  public isFrozen() {\n    return this.frozen;\n  }\n\n  public lock() {\n    this.locked = true;\n    this.canvasManager.lock();\n  }\n\n  public unlock() {\n    this.locked = false;\n    this.canvasManager.unlock();\n    this.emit();\n  }\n\n  public reset() {\n    this.shadowDomManager.reset();\n    this.canvasManager.reset();\n  }\n\n  public processMutations = (mutations: mutationRecord[]) => {\n    mutations.forEach(this.processMutation); // adds mutations to the buffer\n    this.emit(); // clears buffer if not locked/frozen\n  };\n\n  public emit = () => {\n    if (this.frozen || this.locked) {\n      return;\n    }\n\n    // delay any modification of the mirror until this function\n    // so that the mirror for takeFullSnapshot doesn't get mutated while it's event is being processed\n\n    const adds: addedNodeMutation[] = [];\n    const addedIds = new Set<number>();\n\n    /**\n     * Sometimes child node may be pushed before its newly added\n     * parent, so we init a queue to store these nodes.\n     */\n    const addList = new DoubleLinkedList();\n    const getNextId = (n: Node): number | null => {\n      let ns: Node | null = n;\n      let nextId: number | null = IGNORED_NODE; // slimDOM: ignored\n      while (nextId === IGNORED_NODE) {\n        ns = ns && ns.nextSibling;\n        nextId = ns && this.mirror.getId(ns);\n      }\n      return nextId;\n    };\n    const pushAdd = (n: Node) => {\n      if (\n        !n.parentNode ||\n        !inDom(n) ||\n        (n.parentNode as Element).tagName === 'TEXTAREA'\n      ) {\n        return;\n      }\n      const parentId = isShadowRoot(n.parentNode)\n        ? this.mirror.getId(getShadowHost(n))\n        : this.mirror.getId(n.parentNode);\n      const nextId = getNextId(n);\n      if (parentId === -1 || nextId === -1) {\n        return addList.addNode(n);\n      }\n      const sn = serializeNodeWithId(n, {\n        doc: this.doc,\n        mirror: this.mirror,\n        blockClass: this.blockClass,\n        blockSelector: this.blockSelector,\n        maskTextClass: this.maskTextClass,\n        maskTextSelector: this.maskTextSelector,\n        skipChild: true,\n        newlyAddedElement: true,\n        inlineStylesheet: this.inlineStylesheet,\n        maskInputOptions: this.maskInputOptions,\n        maskTextFn: this.maskTextFn,\n        maskInputFn: this.maskInputFn,\n        slimDOMOptions: this.slimDOMOptions,\n        dataURLOptions: this.dataURLOptions,\n        recordCanvas: this.recordCanvas,\n        inlineImages: this.inlineImages,\n        onSerialize: (currentN) => {\n          if (isSerializedIframe(currentN, this.mirror)) {\n            this.iframeManager.addIframe(currentN as HTMLIFrameElement);\n          }\n          if (isSerializedStylesheet(currentN, this.mirror)) {\n            this.stylesheetManager.trackLinkElement(\n              currentN as HTMLLinkElement,\n            );\n          }\n          if (hasShadowRoot(n)) {\n            this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\n          }\n        },\n        onIframeLoad: (iframe, childSn) => {\n          this.iframeManager.attachIframe(iframe, childSn);\n          this.shadowDomManager.observeAttachShadow(iframe);\n        },\n        onStylesheetLoad: (link, childSn) => {\n          this.stylesheetManager.attachLinkElement(link, childSn);\n        },\n        corruptedRules: this.stylesheetManager.corruptedRules,\n      });\n      if (sn) {\n        adds.push({\n          parentId,\n          nextId,\n          node: sn,\n        });\n        addedIds.add(sn.id);\n      }\n    };\n\n    while (this.mapRemoves.length) {\n      this.mirror.removeNodeFromMap(this.mapRemoves.shift()!);\n    }\n\n    for (const n of this.movedSet) {\n      if (\n        isParentRemoved(this.removes, n, this.mirror) &&\n        !this.movedSet.has(n.parentNode!)\n      ) {\n        continue;\n      }\n      pushAdd(n);\n    }\n\n    for (const n of this.addedSet) {\n      if (\n        !isAncestorInSet(this.droppedSet, n) &&\n        !isParentRemoved(this.removes, n, this.mirror)\n      ) {\n        pushAdd(n);\n      } else if (isAncestorInSet(this.movedSet, n)) {\n        pushAdd(n);\n      } else {\n        this.droppedSet.add(n);\n      }\n    }\n\n    let candidate: DoubleLinkedListNode | null = null;\n    while (addList.length) {\n      let node: DoubleLinkedListNode | null = null;\n      if (candidate) {\n        const parentId = this.mirror.getId(candidate.value.parentNode);\n        const nextId = getNextId(candidate.value);\n        if (parentId !== -1 && nextId !== -1) {\n          node = candidate;\n        }\n      }\n      if (!node) {\n        let tailNode = addList.tail;\n        while (tailNode) {\n          const _node = tailNode;\n          tailNode = tailNode.previous;\n          // ensure _node is defined before attempting to find value\n          if (_node) {\n            const parentId = this.mirror.getId(_node.value.parentNode);\n            const nextId = getNextId(_node.value);\n\n            if (nextId === -1) continue;\n            // nextId !== -1 && parentId !== -1\n            else if (parentId !== -1) {\n              node = _node;\n              break;\n            }\n            // nextId !== -1 && parentId === -1 This branch can happen if the node is the child of shadow root\n            else {\n              const unhandledNode = _node.value;\n              // If the node is the direct child of a shadow root, we treat the shadow host as its parent node.\n              if (\n                unhandledNode.parentNode &&\n                unhandledNode.parentNode.nodeType ===\n                  Node.DOCUMENT_FRAGMENT_NODE\n              ) {\n                const shadowHost = (unhandledNode.parentNode as ShadowRoot)\n                  .host;\n                const parentId = this.mirror.getId(shadowHost);\n                if (parentId !== -1) {\n                  node = _node;\n                  break;\n                }\n              }\n            }\n          }\n        }\n      }\n      if (!node) {\n        /**\n         * If all nodes in queue could not find a serialized parent,\n         * it may be a bug or corner case. We need to escape the\n         * dead while loop at once.\n         */\n        while (addList.head) {\n          addList.removeNode(addList.head.value);\n        }\n        break;\n      }\n      candidate = node.previous;\n      addList.removeNode(node.value);\n      pushAdd(node.value);\n    }\n\n    const payload = {\n      texts: this.texts\n        .map((text): textMutation => {\n          const n = text.node;\n          if (\n            n.parentNode &&\n            (n.parentNode as Element).tagName === 'TEXTAREA'\n          ) {\n            // the node is being ignored as it isn't in the mirror, so shift mutation to attributes on parent textarea\n            this.genTextAreaValueMutation(n.parentNode as HTMLTextAreaElement);\n          }\n\n          const id = this.mirror.getId(n);\n\n          // Try to compute delta if oldValue is available (not masked)\n          if (text.oldValue !== undefined) {\n            const diffResult = computeTextDiff(text.oldValue, text.value);\n            if (shouldUseDelta(diffResult) && diffResult.delta) {\n              // Use delta format - more efficient\n              return {\n                id,\n                delta: diffResult.delta,\n              };\n            }\n          }\n\n          // Use full value (legacy format or when delta isn't beneficial)\n          return {\n            id,\n            value: text.value,\n          };\n        })\n        // no need to include them on added elements, as they have just been serialized with up to date attribubtes\n        .filter((text) => !addedIds.has(text.id))\n        // text mutation's id was not in the mirror map means the target node has been removed\n        .filter((text) => this.mirror.has(text.id)),\n      attributes: this.attributes\n        .map((attribute) => {\n          const { attributes } = attribute;\n          if (typeof attributes.style === 'string') {\n            const diffAsStr = JSON.stringify(attribute.styleDiff);\n            const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n            // check if the style diff is actually shorter than the regular string based mutation\n            // (which was the whole point of #464 'compact style mutation').\n            if (diffAsStr.length < attributes.style.length) {\n              // also: CSSOM fails badly when var() is present on shorthand properties, so only proceed with\n              // the compact style mutation if these have all been accounted for\n              if (\n                (diffAsStr + unchangedAsStr).split('var(').length ===\n                attributes.style.split('var(').length\n              ) {\n                attributes.style = attribute.styleDiff;\n              }\n            }\n          }\n          return {\n            id: this.mirror.getId(attribute.node),\n            attributes: attributes,\n          };\n        })\n        // no need to include them on added elements, as they have just been serialized with up to date attribubtes\n        .filter((attribute) => !addedIds.has(attribute.id))\n        // attribute mutation's id was not in the mirror map means the target node has been removed\n        .filter((attribute) => this.mirror.has(attribute.id)),\n      removes: this.removes,\n      adds,\n    };\n    // payload may be empty if the mutations happened in some blocked elements\n    if (\n      !payload.texts.length &&\n      !payload.attributes.length &&\n      !payload.removes.length &&\n      !payload.adds.length\n    ) {\n      return;\n    }\n\n    // reset\n    this.texts = [];\n    this.attributes = [];\n    this.attributeMap = new WeakMap<Node, attributeCursor>();\n    this.removes = [];\n    this.addedSet = new Set<Node>();\n    this.movedSet = new Set<Node>();\n    this.droppedSet = new Set<Node>();\n    this.movedMap = {};\n\n    this.mutationCb(payload);\n  };\n\n  private genTextAreaValueMutation = (textarea: HTMLTextAreaElement) => {\n    let item = this.attributeMap.get(textarea);\n    if (!item) {\n      item = {\n        node: textarea,\n        attributes: {},\n        styleDiff: {},\n        _unchangedStyles: {},\n      };\n      this.attributes.push(item);\n      this.attributeMap.set(textarea, item);\n    }\n    item.attributes.value = Array.from(\n      textarea.childNodes,\n      (cn) => cn.textContent || '',\n    ).join('');\n  };\n\n  private processMutation = (m: mutationRecord) => {\n    if (isIgnored(m.target, this.mirror, this.slimDOMOptions)) {\n      return;\n    }\n    switch (m.type) {\n      case 'characterData': {\n        const value = m.target.textContent;\n\n        if (\n          !isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\n          value !== m.oldValue\n        ) {\n          const isMasked = needMaskingText(\n            m.target,\n            this.maskTextClass,\n            this.maskTextSelector,\n            true, // checkAncestors\n          );\n\n          const maskedValue =\n            isMasked && value\n              ? this.maskTextFn\n                ? this.maskTextFn(value, closestElementOfNode(m.target))\n                : value.replace(/[\\S]/g, '*')\n              : value;\n\n          this.texts.push({\n            value: maskedValue,\n            node: m.target,\n            // Store oldValue for delta computation (only when not masked)\n            oldValue: isMasked ? undefined : m.oldValue,\n          });\n        }\n        break;\n      }\n      case 'attributes': {\n        const target = m.target as HTMLElement;\n        let attributeName = m.attributeName as string;\n        let value = (m.target as HTMLElement).getAttribute(attributeName);\n\n        if (attributeName === 'value') {\n          const type = getInputType(target);\n\n          const maskResult = maskInputValue({\n            element: target,\n            maskInputOptions: this.maskInputOptions,\n            tagName: target.tagName,\n            type,\n            value,\n            maskInputFn: this.maskInputFn,\n          });\n          value = maskResult.value;\n          // const masked = maskResult.masked;\n        }\n        if (\n          isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\n          value === m.oldValue\n        ) {\n          return;\n        }\n\n        let item = this.attributeMap.get(m.target);\n        if (\n          target.tagName === 'IFRAME' &&\n          attributeName === 'src' &&\n          !this.keepIframeSrcFn(value as string)\n        ) {\n          if (!(target as HTMLIFrameElement).contentDocument) {\n            // we can't record it directly as we can't see into it\n            // preserve the src attribute so a decision can be taken at replay time\n            attributeName = 'rr_src';\n          } else {\n            return;\n          }\n        }\n        if (!item) {\n          item = {\n            node: m.target,\n            attributes: {},\n            styleDiff: {},\n            _unchangedStyles: {},\n          };\n          this.attributes.push(item);\n          this.attributeMap.set(m.target, item);\n        }\n\n        // Keep this property on inputs that used to be password inputs\n        // This is used to ensure we do not unmask value when using e.g. a \"Show password\" type button\n        if (\n          attributeName === 'type' &&\n          target.tagName === 'INPUT' &&\n          (m.oldValue || '').toLowerCase() === 'password'\n        ) {\n          target.setAttribute('data-rr-is-password', 'true');\n        }\n\n        if (!ignoreAttribute(target.tagName, attributeName, value)) {\n          // overwrite attribute if the mutations was triggered in same time\n          item.attributes[attributeName] = transformAttribute(\n            this.doc,\n            toLowerCase(target.tagName),\n            toLowerCase(attributeName),\n            value,\n          );\n          if (attributeName === 'style') {\n            if (!this.unattachedDoc) {\n              try {\n                // avoid upsetting original document from a Content Security point of view\n                this.unattachedDoc =\n                  document.implementation.createHTMLDocument();\n              } catch (e) {\n                // fallback to more direct method\n                this.unattachedDoc = this.doc;\n              }\n            }\n            const old = this.unattachedDoc.createElement('span');\n            if (m.oldValue) {\n              old.setAttribute('style', m.oldValue);\n            }\n            for (const pname of Array.from(target.style)) {\n              const newValue = target.style.getPropertyValue(pname);\n              const newPriority = target.style.getPropertyPriority(pname);\n              if (\n                newValue !== old.style.getPropertyValue(pname) ||\n                newPriority !== old.style.getPropertyPriority(pname)\n              ) {\n                if (newPriority === '') {\n                  item.styleDiff[pname] = newValue;\n                } else {\n                  item.styleDiff[pname] = [newValue, newPriority];\n                }\n              } else {\n                // for checking\n                item._unchangedStyles[pname] = [newValue, newPriority];\n              }\n            }\n            for (const pname of Array.from(old.style)) {\n              if (target.style.getPropertyValue(pname) === '') {\n                // \"if not set, returns the empty string\"\n                item.styleDiff[pname] = false; // delete\n              }\n            }\n          }\n        }\n        break;\n      }\n      case 'childList': {\n        /**\n         * Parent is blocked, ignore all child mutations\n         */\n        if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\n          return;\n\n        if ((m.target as Element).tagName === 'TEXTAREA') {\n          // children would be ignored in genAdds as they aren't in the mirror\n          this.genTextAreaValueMutation(m.target as HTMLTextAreaElement);\n          return; // any removedNodes won't have been in mirror either\n        }\n\n        m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n        m.removedNodes.forEach((n) => {\n          const nodeId = this.mirror.getId(n);\n          const parentId = isShadowRoot(m.target)\n            ? this.mirror.getId(m.target.host)\n            : this.mirror.getId(m.target);\n          if (\n            isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\n            isIgnored(n, this.mirror, this.slimDOMOptions) ||\n            !isSerialized(n, this.mirror)\n          ) {\n            return;\n          }\n          // removed node has not been serialized yet, just remove it from the Set\n          if (this.addedSet.has(n)) {\n            deepDelete(this.addedSet, n);\n            this.droppedSet.add(n);\n          } else if (this.addedSet.has(m.target) && nodeId === -1) {\n            /**\n             * If target was newly added and removed child node was\n             * not serialized, it means the child node has been removed\n             * before callback fired, so we can ignore it because\n             * newly added node will be serialized without child nodes.\n             * TODO: verify this\n             */\n          } else if (isAncestorRemoved(m.target, this.mirror)) {\n            /**\n             * If parent id was not in the mirror map any more, it\n             * means the parent node has already been removed. So\n             * the node is also removed which we do not need to track\n             * and replay.\n             */\n          } else if (\n            this.movedSet.has(n) &&\n            this.movedMap[moveKey(nodeId, parentId)]\n          ) {\n            deepDelete(this.movedSet, n);\n          } else {\n            this.removes.push({\n              parentId,\n              id: nodeId,\n              isShadow:\n                isShadowRoot(m.target) && isNativeShadowDom(m.target)\n                  ? true\n                  : undefined,\n            });\n          }\n          this.mapRemoves.push(n);\n        });\n        break;\n      }\n      default:\n        break;\n    }\n  };\n\n  /**\n   * Make sure you check if `n`'s parent is blocked before calling this function\n   * */\n  private genAdds = (n: Node, target?: Node) => {\n    // this node was already recorded in other buffer, ignore it\n    if (this.processedNodeManager.inOtherBuffer(n, this)) return;\n\n    // if n is added to set, there is no need to travel it and its' children again\n    if (this.addedSet.has(n) || this.movedSet.has(n)) return;\n\n    if (this.mirror.hasNode(n)) {\n      if (isIgnored(n, this.mirror, this.slimDOMOptions)) {\n        return;\n      }\n      this.movedSet.add(n);\n      let targetId: number | null = null;\n      if (target && this.mirror.hasNode(target)) {\n        targetId = this.mirror.getId(target);\n      }\n      if (targetId && targetId !== -1) {\n        this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\n      }\n    } else {\n      this.addedSet.add(n);\n      this.droppedSet.delete(n);\n    }\n\n    // if this node is blocked `serializeNode` will turn it into a placeholder element\n    // but we have to remove it's children otherwise they will be added as placeholders too\n    if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\n      n.childNodes.forEach((childN) => this.genAdds(childN));\n      if (hasShadowRoot(n)) {\n        n.shadowRoot.childNodes.forEach((childN) => {\n          this.processedNodeManager.add(childN, this);\n          this.genAdds(childN, n);\n        });\n      }\n    }\n  };\n}\n\n/**\n * Some utils to handle the mutation observer DOM records.\n * It should be more clear to extend the native data structure\n * like Set and Map, but currently Typescript does not support\n * that.\n */\nfunction deepDelete(addsSet: Set<Node>, n: Node) {\n  addsSet.delete(n);\n  n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\n}\n\nfunction isParentRemoved(\n  removes: removedNodeMutation[],\n  n: Node,\n  mirror: Mirror,\n): boolean {\n  if (removes.length === 0) return false;\n  return _isParentRemoved(removes, n, mirror);\n}\n\nfunction _isParentRemoved(\n  removes: removedNodeMutation[],\n  n: Node,\n  mirror: Mirror,\n): boolean {\n  let node: ParentNode | null = n.parentNode;\n  while (node) {\n    const parentId = mirror.getId(node);\n    if (removes.some((r) => r.id === parentId)) {\n      return true;\n    }\n    node = node.parentNode;\n  }\n  return false;\n}\n\nfunction isAncestorInSet(set: Set<Node>, n: Node): boolean {\n  if (set.size === 0) return false;\n  return _isAncestorInSet(set, n);\n}\n\nfunction _isAncestorInSet(set: Set<Node>, n: Node): boolean {\n  const { parentNode } = n;\n  if (!parentNode) {\n    return false;\n  }\n  if (set.has(parentNode)) {\n    return true;\n  }\n  return _isAncestorInSet(set, parentNode);\n}\n", "import {\n  Mirror,\n  getInputType,\n  maskInputValue,\n  toLowerCase,\n} from \"@sailfish-rrweb/rrweb-snapshot\";\nimport type {\n  Arguments,\n  IWindow,\n  SelectionRange,\n  canvasMutationCallback,\n  customElementCallback,\n  deviceChangeCallback,\n  fontCallback,\n  fontParam,\n  hookResetter,\n  // hookResetter,\n  hooksParam,\n  inputCallback,\n  inputValue,\n  listenerHandler,\n  mediaInteractionCallback,\n  mouseInteractionCallBack,\n  mousePosition,\n  mousemoveCallBack,\n  mutationCallBack,\n  scrollCallback,\n  selectionCallback,\n  styleDeclarationCallback,\n  styleSheetRuleCallback,\n  typingCallback,\n  viewportResizeCallback,\n} from \"@sailfish-rrweb/types\";\nimport {\n  IncrementalSource,\n  MediaInteractions,\n  MouseInteractions,\n  PointerTypes,\n} from \"@sailfish-rrweb/types\";\nimport type { FontFaceSet } from \"css-font-loading-module\";\nimport type { MutationBufferParam, observerParam } from \"../types\";\nimport {\n  StyleSheetMirror,\n  getWindowHeight,\n  getWindowScroll,\n  getWindowWidth,\n  hookSetter,\n  // hookSetter,\n  isBlocked,\n  legacy_isTouchEvent,\n  nowTimestamp,\n  on,\n  patch,\n  throttle,\n} from \"../utils\";\nimport { callbackWrapper } from \"./error-handler\";\nimport MutationBuffer from \"./mutation\";\n\ntype WindowWithStoredMutationObserver = IWindow & {\n  __rrMutationObserver?: MutationObserver;\n};\ntype WindowWithAngularZone = IWindow & {\n  Zone?: {\n    __symbol__?: (key: string) => string;\n  };\n};\n\nexport const mutationBuffers: MutationBuffer[] = [];\n\n// Event.path is non-standard and used in some older browsers\ntype NonStandardEvent = Omit<Event, \"composedPath\"> & {\n  path: EventTarget[];\n};\n\nfunction getEventTarget(event: Event | NonStandardEvent): EventTarget | null {\n  try {\n    if (\"composedPath\" in event) {\n      const path = event.composedPath();\n      if (path.length) {\n        return path[0];\n      }\n    } else if (\"path\" in event && event.path.length) {\n      return event.path[0];\n    }\n  } catch {\n    // fallback to `event.target` below\n  }\n\n  return event && event.target;\n}\n\nexport function initMutationObserver(\n  options: MutationBufferParam,\n  rootEl: Node,\n): MutationObserver {\n  const mutationBuffer = new MutationBuffer();\n  mutationBuffers.push(mutationBuffer);\n  // see mutation.ts for details\n  mutationBuffer.init(options);\n  let mutationObserverCtor =\n    window.MutationObserver ||\n    /**\n     * Some websites may disable MutationObserver by removing it from the window object.\n     * If someone is using rrweb to build a browser extention or things like it, they\n     * could not change the website's code but can have an opportunity to inject some\n     * code before the website executing its JS logic.\n     * Then they can do this to store the native MutationObserver:\n     * window.__rrMutationObserver = MutationObserver\n     */\n    (window as WindowWithStoredMutationObserver).__rrMutationObserver;\n  const angularZoneSymbol = (\n    window as WindowWithAngularZone\n  )?.Zone?.__symbol__?.(\"MutationObserver\");\n  if (\n    angularZoneSymbol &&\n    (window as unknown as Record<string, typeof MutationObserver>)[\n      angularZoneSymbol\n    ]\n  ) {\n    mutationObserverCtor = (\n      window as unknown as Record<string, typeof MutationObserver>\n    )[angularZoneSymbol];\n  }\n  const observer = new (mutationObserverCtor as new (\n    callback: MutationCallback,\n  ) => MutationObserver)(\n    callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)),\n  );\n  observer.observe(rootEl, {\n    attributes: true,\n    attributeOldValue: true,\n    characterData: true,\n    characterDataOldValue: true,\n    childList: true,\n    subtree: true,\n  });\n  return observer;\n}\n\nfunction initMoveObserver({\n  mousemoveCb,\n  sampling,\n  doc,\n  mirror,\n}: observerParam): listenerHandler {\n  if (sampling.mousemove === false) {\n    return () => {\n      //\n    };\n  }\n\n  const threshold =\n    typeof sampling.mousemove === \"number\" ? sampling.mousemove : 50;\n  const callbackThreshold =\n    typeof sampling.mousemoveCallback === \"number\"\n      ? sampling.mousemoveCallback\n      : 500;\n\n  let positions: mousePosition[] = [];\n  let timeBaseline: number | null;\n  const wrappedCb = throttle(\n    callbackWrapper(\n      (\n        source:\n          | IncrementalSource.MouseMove\n          | IncrementalSource.TouchMove\n          | IncrementalSource.Drag,\n      ) => {\n        const totalOffset = Date.now() - timeBaseline!;\n        mousemoveCb(\n          positions.map((p) => {\n            p.timeOffset -= totalOffset;\n            return p;\n          }),\n          source,\n        );\n        positions = [];\n        timeBaseline = null;\n      },\n    ),\n    callbackThreshold,\n  );\n  const updatePosition = callbackWrapper(\n    throttle<MouseEvent | TouchEvent | DragEvent>(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        // 'legacy' here as we could switch to https://developer.mozilla.org/en-US/docs/Web/API/Element/pointermove_event\n        const { clientX, clientY } = legacy_isTouchEvent(evt)\n          ? evt.changedTouches[0]\n          : evt;\n        if (!timeBaseline) {\n          timeBaseline = nowTimestamp();\n        }\n        positions.push({\n          x: clientX,\n          y: clientY,\n          id: mirror.getId(target as Node),\n          timeOffset: nowTimestamp() - timeBaseline,\n        });\n        // it is possible DragEvent is undefined even on devices\n        // that support event 'drag'\n        wrappedCb(\n          typeof DragEvent !== \"undefined\" && evt instanceof DragEvent\n            ? IncrementalSource.Drag\n            : evt instanceof MouseEvent\n            ? IncrementalSource.MouseMove\n            : IncrementalSource.TouchMove,\n        );\n      }),\n      threshold,\n      {\n        trailing: false,\n      },\n    ),\n  );\n  const handlers = [\n    on(\"mousemove\", updatePosition, doc),\n    on(\"touchmove\", updatePosition, doc),\n    on(\"drag\", updatePosition, doc),\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initMouseInteractionObserver({\n  mouseInteractionCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  sampling,\n}: observerParam): listenerHandler {\n  if (sampling.mouseInteraction === false) {\n    return () => {\n      //\n    };\n  }\n  const disableMap: Record<string, boolean | undefined> =\n    sampling.mouseInteraction === true ||\n    sampling.mouseInteraction === undefined\n      ? {}\n      : sampling.mouseInteraction;\n\n  const handlers: listenerHandler[] = [];\n  let currentPointerType: PointerTypes | null = null;\n  const getHandler = (eventKey: keyof typeof MouseInteractions) => {\n    return (event: MouseEvent | TouchEvent | PointerEvent) => {\n      const target = getEventTarget(event) as Node;\n      if (isBlocked(target, blockClass, blockSelector, true)) {\n        return;\n      }\n      let pointerType: PointerTypes | null = null;\n      let thisEventKey = eventKey;\n      if (\"pointerType\" in event) {\n        switch (event.pointerType) {\n          case \"mouse\":\n            pointerType = PointerTypes.Mouse;\n            break;\n          case \"touch\":\n            pointerType = PointerTypes.Touch;\n            break;\n          case \"pen\":\n            pointerType = PointerTypes.Pen;\n            break;\n        }\n        if (pointerType === PointerTypes.Touch) {\n          if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n            // we are actually listening on 'pointerdown'\n            thisEventKey = \"TouchStart\";\n          } else if (\n            MouseInteractions[eventKey] === MouseInteractions.MouseUp\n          ) {\n            // we are actually listening on 'pointerup'\n            thisEventKey = \"TouchEnd\";\n          }\n        } else if (pointerType === PointerTypes.Pen) {\n          // TODO: these will get incorrectly emitted as MouseDown/MouseUp\n        }\n      } else if (legacy_isTouchEvent(event)) {\n        pointerType = PointerTypes.Touch;\n      }\n      if (pointerType !== null) {\n        currentPointerType = pointerType;\n        if (\n          (thisEventKey.startsWith(\"Touch\") &&\n            pointerType === PointerTypes.Touch) ||\n          (thisEventKey.startsWith(\"Mouse\") &&\n            pointerType === PointerTypes.Mouse)\n        ) {\n          // don't output redundant info\n          pointerType = null;\n        }\n      } else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n        pointerType = currentPointerType;\n        currentPointerType = null; // cleanup as we've used it\n      }\n      const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n      if (!e) {\n        return;\n      }\n      const id = mirror.getId(target);\n      const { clientX, clientY } = e;\n      callbackWrapper(mouseInteractionCb)({\n        type: MouseInteractions[thisEventKey],\n        id,\n        x: clientX,\n        y: clientY,\n        ...(pointerType !== null && { pointerType }),\n      });\n    };\n  };\n  Object.keys(MouseInteractions)\n    .filter(\n      (key) =>\n        Number.isNaN(Number(key)) &&\n        !key.endsWith(\"_Departed\") &&\n        disableMap[key] !== false,\n    )\n    .forEach((eventKey: keyof typeof MouseInteractions) => {\n      let eventName = toLowerCase(eventKey);\n      const handler = getHandler(eventKey);\n      if (window.PointerEvent) {\n        switch (MouseInteractions[eventKey]) {\n          case MouseInteractions.MouseDown:\n          case MouseInteractions.MouseUp:\n            eventName = eventName.replace(\n              \"mouse\",\n              \"pointer\",\n            ) as unknown as typeof eventName;\n            break;\n          case MouseInteractions.TouchStart:\n          case MouseInteractions.TouchEnd:\n            // these are handled by pointerdown/pointerup\n            return;\n        }\n      }\n      handlers.push(on(eventName, handler, doc));\n    });\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nexport function initScrollObserver({\n  scrollCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  sampling,\n}: Pick<\n  observerParam,\n  \"scrollCb\" | \"doc\" | \"mirror\" | \"blockClass\" | \"blockSelector\" | \"sampling\"\n>): listenerHandler {\n  const updatePosition = callbackWrapper(\n    throttle<UIEvent>(\n      callbackWrapper((evt) => {\n        const target = getEventTarget(evt);\n        if (\n          !target ||\n          isBlocked(target as Node, blockClass, blockSelector, true)\n        ) {\n          return;\n        }\n        const id = mirror.getId(target as Node);\n        if (target === doc && doc.defaultView) {\n          const scrollLeftTop = getWindowScroll(doc.defaultView);\n          scrollCb({\n            id,\n            x: scrollLeftTop.left,\n            y: scrollLeftTop.top,\n          });\n        } else {\n          scrollCb({\n            id,\n            x: (target as HTMLElement).scrollLeft,\n            y: (target as HTMLElement).scrollTop,\n          });\n        }\n      }),\n      sampling.scroll || 100,\n    ),\n  );\n  return on(\"scroll\", updatePosition, doc);\n}\n\nfunction initViewportResizeObserver(\n  { viewportResizeCb }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\n  let lastH = -1;\n  let lastW = -1;\n  const updateDimension = callbackWrapper(\n    throttle(\n      callbackWrapper(() => {\n        const height = getWindowHeight();\n        const width = getWindowWidth();\n        if (lastH !== height || lastW !== width) {\n          viewportResizeCb({\n            width: Number(width),\n            height: Number(height),\n          });\n          lastH = height;\n          lastW = width;\n        }\n      }),\n      200,\n    ),\n  );\n  return on(\"resize\", updateDimension, win);\n}\n\nexport const INPUT_TAGS = [\"INPUT\", \"TEXTAREA\", \"SELECT\"];\nconst lastInputValueMap: WeakMap<EventTarget, inputValue> = new WeakMap();\nfunction initInputObserver({\n  inputCb,\n  doc,\n  mirror,\n  blockClass,\n  blockSelector,\n  ignoreClass,\n  ignoreSelector,\n  maskInputOptions,\n  maskInputFn,\n  sampling,\n  userTriggeredOnInput,\n}: observerParam): listenerHandler {\n  function eventHandler(event: Event) {\n    let target = getEventTarget(event) as HTMLElement | null;\n    const userTriggered = event.isTrusted;\n    const tagName = target && target.tagName;\n\n    /**\n     * If a site changes the value 'selected' of an option element, the value of its parent element, usually a select element, will be changed as well.\n     * We can treat this change as a value change of the select element the current target belongs to.\n     */\n    if (target && tagName === \"OPTION\") {\n      target = target.parentElement;\n    }\n    if (\n      !target ||\n      !tagName ||\n      INPUT_TAGS.indexOf(tagName) < 0 ||\n      isBlocked(target as Node, blockClass, blockSelector, true)\n    ) {\n      return;\n    }\n\n    if (\n      target.classList.contains(ignoreClass) ||\n      (ignoreSelector && target.matches(ignoreSelector))\n    ) {\n      return;\n    }\n    let text = (target as HTMLInputElement).value;\n    let isChecked = false;\n    const type: Lowercase<string> = getInputType(target) || \"\";\n\n    const { value: maskedValue, masked } = maskInputValue({\n      element: target,\n      maskInputOptions,\n      tagName,\n      type,\n      value: text,\n      maskInputFn,\n    });\n    text = maskedValue;\n\n    if (type === \"radio\" || type === \"checkbox\") {\n      isChecked = (target as HTMLInputElement).checked;\n    }\n    cbWithDedup(\n      target,\n      userTriggeredOnInput\n        ? { text, isChecked, masked, userTriggered }\n        : { text, isChecked, masked },\n    );\n    // if a radio was checked\n    // the other radios with the same name attribute will be unchecked.\n    const name: string | undefined = (target as HTMLInputElement).name;\n    if (type === \"radio\" && name && isChecked) {\n      doc\n        .querySelectorAll(`input[type='radio'][name='${name}']`)\n        .forEach((el) => {\n          if (el !== target) {\n            const text = (el as HTMLInputElement).value;\n            cbWithDedup(\n              el,\n              userTriggeredOnInput\n                ? { text, isChecked: !isChecked, masked, userTriggered: false }\n                : { text, isChecked: !isChecked, masked },\n            );\n          }\n        });\n    }\n  }\n  function cbWithDedup(target: EventTarget, v: inputValue) {\n    const lastInputValue = lastInputValueMap.get(target);\n\n    if (\n      !lastInputValue ||\n      lastInputValue.text !== v.text ||\n      lastInputValue.isChecked !== v.isChecked ||\n      lastInputValue.masked !== v.masked\n    ) {\n      lastInputValueMap.set(target, v);\n      const id = mirror.getId(target as Node);\n      callbackWrapper(inputCb)({\n        ...v,\n        id,\n      });\n    }\n  }\n  const events = sampling.input === \"last\" ? [\"change\"] : [\"input\", \"change\"];\n  const handlers: Array<listenerHandler | hookResetter> = events.map(\n    (eventName) => on(eventName, callbackWrapper(eventHandler), doc),\n  );\n  const currentWindow = doc.defaultView;\n  if (!currentWindow) {\n    return () => {\n      handlers.forEach((h) => h());\n    };\n  }\n  const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(\n    currentWindow.HTMLInputElement.prototype,\n    \"value\",\n  );\n  const hookProperties: Array<[HTMLElement, string]> = [\n    [currentWindow.HTMLInputElement.prototype, \"value\"],\n    [currentWindow.HTMLInputElement.prototype, \"checked\"],\n    [currentWindow.HTMLSelectElement.prototype, \"value\"],\n    [currentWindow.HTMLTextAreaElement.prototype, \"value\"],\n    // Some UI library use selectedIndex to set select value\n    [currentWindow.HTMLSelectElement.prototype, \"selectedIndex\"],\n    [currentWindow.HTMLOptionElement.prototype, \"selected\"],\n  ];\n  if (propertyDescriptor && propertyDescriptor.set) {\n    handlers.push(\n      ...hookProperties.map((p) =>\n        hookSetter<HTMLElement>(\n          p[0],\n          p[1],\n          {\n            set() {\n              // mock to a normal event\n              callbackWrapper(eventHandler)({\n                target: this as EventTarget,\n                isTrusted: false, // userTriggered to false as this could well be programmatic\n              } as Event);\n            },\n          },\n          false,\n          currentWindow,\n        ),\n      ),\n    );\n  }\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initTypingObserver({\n  typingCb,\n  doc,\n  maskInputOptions,\n  maskInputFn,\n}: observerParam): listenerHandler {\n  const handleTyping = (event: KeyboardEvent) => {\n    const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n    let isMasked = false; // Update this logic if masking is required\n    const keyInfo = {\n      key: event.key, // The actual key pressed (e.g., 'a', 'Enter')\n      code: event.code, // The physical key code (e.g., 'KeyA', 'Space')\n      altKey: event.altKey, // Whether Alt was pressed\n      ctrlKey: event.ctrlKey, // Whether Ctrl was pressed\n      shiftKey: event.shiftKey, // Whether Shift was pressed\n      metaKey: event.metaKey, // Whether Command (Mac) or Windows key was pressed\n    };\n    const tagName = target && target.tagName;\n    const type: Lowercase<string> = getInputType(target) || \"\";\n    let text = target.value;\n    if (target && (target.tagName == \"INPUT\" || target.tagName == \"TEXTAREA\")) {\n      const { value: maskedValue, masked } = maskInputValue({\n        element: target,\n        maskInputOptions,\n        tagName,\n        type,\n        value: text,\n        maskInputFn,\n      });\n      text = maskedValue;\n      isMasked = masked;\n    }\n\n    // Serialize the full DOM path of the focused element\n    const getDomPath = (element: HTMLElement): string => {\n      const path = [];\n      while (element) {\n        let selector = element.tagName.toLowerCase();\n\n        // Add ID if present\n        if (element.id) {\n          selector += `#${element.id}`;\n          path.unshift(selector);\n          break; // IDs are unique, no need to go further up\n        }\n\n        // Add class names if present\n        if (element.className) {\n          const classList = element.className.split(/\\s+/).filter(Boolean);\n          if (classList.length) {\n            selector += `.${classList.join(\".\")}`;\n          }\n        }\n\n        // Add index for sibling elements\n        const siblings = Array.from(element.parentNode?.children || []);\n        if (siblings.length > 1) {\n          const index = siblings.indexOf(element) + 1;\n          selector += `:nth-child(${index})`;\n        }\n\n        path.unshift(selector);\n        element = element.parentElement as HTMLElement;\n      }\n      return path.join(\" > \");\n    };\n\n    typingCb({\n      source: IncrementalSource.Typing,\n      id: target?.id, // Assuming id tracking is in place\n      text: text,\n      isMasked,\n      target: getDomPath(target),\n      keyInfo,\n    });\n  };\n\n  const keydownHandler = on(\"keydown\", handleTyping, doc);\n  return () => {\n    keydownHandler();\n  };\n}\n\nfunction initDeviceChangeObserver({\n  deviceChangeCb,\n}: observerParam): listenerHandler {\n  const handleUSBChange = (event: USBConnectionEvent, action: string) => {\n    const deviceNames = event.device.productName\n      ? [event.device.productName]\n      : [\"Unknown USB Device\"];\n    deviceChangeCb({\n      type: \"USB\",\n      action,\n      devices: deviceNames, // Converted to string[]\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleHIDChange = (event: HIDConnectionEvent, action: string) => {\n    const deviceNames = event.device.productName\n      ? [event.device.productName]\n      : [\"Unknown HID Device\"];\n    deviceChangeCb({\n      type: \"HID\",\n      action,\n      devices: deviceNames, // Converted to string[]\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleGamepadChange = () => {\n    const gamepads = navigator.getGamepads();\n    const devices = Array.from(gamepads)\n      .filter((g) => g)\n      .map((g) => g?.id || \"Unknown Gamepad\");\n\n    if (devices.length === 0) {\n      return;\n    }\n    deviceChangeCb({\n      type: \"Gamepad\",\n      action: \"change\",\n      devices,\n      timestamp: Date.now(),\n    });\n  };\n\n  const handleMediaDeviceChange = () => {\n    navigator.mediaDevices\n      .enumerateDevices()\n      .then((devices) => {\n        const deviceList = devices.map((d) => `${d.kind}: ${d.label}`);\n        deviceChangeCb({\n          type: \"MediaDevices\",\n          action: \"change\",\n          devices: deviceList,\n          timestamp: Date.now(),\n        });\n      })\n      .catch((error) => {\n        console.error(\"[Media Device Enumeration Error]\", error);\n      });\n  };\n\n  // Network change handler remains unchanged\n  const handleNetworkChange = () => {\n    const status = navigator.onLine ? \"online\" : \"offline\";\n    deviceChangeCb({\n      type: \"Network\",\n      action: \"status\",\n      status,\n      timestamp: Date.now(),\n    });\n  };\n\n  const networkHandlers = [\n    on(\n      \"online\",\n      () => {\n        handleNetworkChange();\n      },\n      window,\n    ),\n    on(\n      \"offline\",\n      () => {\n        handleNetworkChange();\n      },\n      window,\n    ),\n  ];\n\n  // Attach event listeners\n  if (\"usb\" in navigator) {\n    navigator.usb.addEventListener(\"connect\", (event: USBConnectionEvent) =>\n      handleUSBChange(event, \"connect\"),\n    );\n    navigator.usb.addEventListener(\"disconnect\", (event: USBConnectionEvent) =>\n      handleUSBChange(event, \"disconnect\"),\n    );\n  }\n\n  if (\"hid\" in navigator) {\n    navigator.hid.addEventListener(\"connect\", (event: HIDConnectionEvent) =>\n      handleHIDChange(event, \"connect\"),\n    );\n    navigator.hid.addEventListener(\"disconnect\", (event: HIDConnectionEvent) =>\n      handleHIDChange(event, \"disconnect\"),\n    );\n  }\n\n  navigator.mediaDevices.addEventListener(\n    \"devicechange\",\n    handleMediaDeviceChange,\n  );\n\n  const gamepadPollInterval = setInterval(() => {\n    handleGamepadChange();\n  }, 10000); // Poll every 10 seconds\n\n  return () => {\n    navigator.usb.removeEventListener(\"connect\", handleUSBChange as any);\n    navigator.usb.removeEventListener(\"disconnect\", handleUSBChange as any);\n    navigator.hid.removeEventListener(\"connect\", handleHIDChange as any);\n    navigator.hid.removeEventListener(\"disconnect\", handleHIDChange as any);\n    networkHandlers.forEach((h) => h());\n    navigator.mediaDevices.removeEventListener(\n      \"devicechange\",\n      handleMediaDeviceChange,\n    );\n    clearInterval(gamepadPollInterval);\n  };\n}\n\ntype GroupingCSSRule =\n  | CSSGroupingRule\n  | CSSMediaRule\n  | CSSSupportsRule\n  | CSSConditionRule;\ntype GroupingCSSRuleTypes =\n  | typeof CSSGroupingRule\n  | typeof CSSMediaRule\n  | typeof CSSSupportsRule\n  | typeof CSSConditionRule;\n\nfunction getNestedCSSRulePositions(rule: CSSRule): number[] {\n  const positions: number[] = [];\n  function recurse(childRule: CSSRule, pos: number[]) {\n    if (\n      (hasNestedCSSRule(\"CSSGroupingRule\") &&\n        childRule.parentRule instanceof CSSGroupingRule) ||\n      (hasNestedCSSRule(\"CSSMediaRule\") &&\n        childRule.parentRule instanceof CSSMediaRule) ||\n      (hasNestedCSSRule(\"CSSSupportsRule\") &&\n        childRule.parentRule instanceof CSSSupportsRule) ||\n      (hasNestedCSSRule(\"CSSConditionRule\") &&\n        childRule.parentRule instanceof CSSConditionRule)\n    ) {\n      const rules = Array.from(\n        (childRule.parentRule as GroupingCSSRule).cssRules,\n      );\n      const index = rules.indexOf(childRule);\n      pos.unshift(index);\n    } else if (childRule.parentStyleSheet) {\n      const rules = Array.from(childRule.parentStyleSheet.cssRules);\n      const index = rules.indexOf(childRule);\n      pos.unshift(index);\n    }\n    return pos;\n  }\n  return recurse(rule, positions);\n}\n\n/**\n * For StyleSheets in Element, this function retrieves id of its host element.\n * For adopted StyleSheets, this function retrieves its styleId from a styleMirror.\n */\nfunction getIdAndStyleId(\n  sheet: CSSStyleSheet | undefined | null,\n  mirror: Mirror,\n  styleMirror: StyleSheetMirror,\n): {\n  styleId?: number;\n  id?: number;\n} {\n  let id, styleId;\n  if (!sheet) return {};\n  if (sheet.ownerNode) id = mirror.getId(sheet.ownerNode as Node);\n  else styleId = styleMirror.getId(sheet);\n  return {\n    styleId,\n    id,\n  };\n}\n\nfunction initStyleSheetObserver(\n  { styleSheetRuleCb, mirror, stylesheetManager }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\n  if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n    // If, for whatever reason, CSSStyleSheet is not available, we skip the observation of stylesheets.\n    return () => {\n      // Do nothing\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const insertRule = win.CSSStyleSheet.prototype.insertRule;\n  win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n    apply: callbackWrapper(\n      (\n        target: typeof insertRule,\n        thisArg: CSSStyleSheet,\n        argumentsList: [string, number | undefined],\n      ) => {\n        const [rule, index] = argumentsList;\n\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            adds: [{ rule, index }],\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n  win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n    apply: callbackWrapper(\n      (\n        target: typeof deleteRule,\n        thisArg: CSSStyleSheet,\n        argumentsList: [number],\n      ) => {\n        const [index] = argumentsList;\n\n        const { id, styleId } = getIdAndStyleId(\n          thisArg,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleSheetRuleCb({\n            id,\n            styleId,\n            removes: [{ index }],\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  let replace: (text: string) => Promise<CSSStyleSheet>;\n\n  if (win.CSSStyleSheet.prototype.replace) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    replace = win.CSSStyleSheet.prototype.replace;\n    win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n      apply: callbackWrapper(\n        (\n          target: typeof replace,\n          thisArg: CSSStyleSheet,\n          argumentsList: [string],\n        ) => {\n          const [text] = argumentsList;\n\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror,\n            stylesheetManager.styleMirror,\n          );\n\n          if ((id && id !== -1) || (styleId && styleId !== -1)) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replace: text,\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        },\n      ),\n    });\n  }\n\n  let replaceSync: (text: string) => void;\n  if (win.CSSStyleSheet.prototype.replaceSync) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n    win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n      apply: callbackWrapper(\n        (\n          target: typeof replaceSync,\n          thisArg: CSSStyleSheet,\n          argumentsList: [string],\n        ) => {\n          const [text] = argumentsList;\n\n          const { id, styleId } = getIdAndStyleId(\n            thisArg,\n            mirror,\n            stylesheetManager.styleMirror,\n          );\n\n          if ((id && id !== -1) || (styleId && styleId !== -1)) {\n            styleSheetRuleCb({\n              id,\n              styleId,\n              replaceSync: text,\n            });\n          }\n          return target.apply(thisArg, argumentsList);\n        },\n      ),\n    });\n  }\n\n  const supportedNestedCSSRuleTypes: {\n    [key: string]: GroupingCSSRuleTypes;\n  } = {};\n  if (canMonkeyPatchNestedCSSRule(\"CSSGroupingRule\")) {\n    supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n  } else {\n    // Some browsers (Safari) don't support CSSGroupingRule\n    // https://caniuse.com/?search=cssgroupingrule\n    // fall back to monkey patching classes that would have inherited from CSSGroupingRule\n\n    if (canMonkeyPatchNestedCSSRule(\"CSSMediaRule\")) {\n      supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSConditionRule\")) {\n      supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n    }\n    if (canMonkeyPatchNestedCSSRule(\"CSSSupportsRule\")) {\n      supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n    }\n  }\n\n  const unmodifiedFunctions: {\n    [key: string]: {\n      insertRule: (rule: string, index?: number) => number;\n      deleteRule: (index: number) => void;\n    };\n  } = {};\n\n  Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n    unmodifiedFunctions[typeKey] = {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      insertRule: type.prototype.insertRule,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      deleteRule: type.prototype.deleteRule,\n    };\n\n    type.prototype.insertRule = new Proxy(\n      unmodifiedFunctions[typeKey].insertRule,\n      {\n        apply: callbackWrapper(\n          (\n            target: typeof insertRule,\n            thisArg: CSSRule,\n            argumentsList: [string, number | undefined],\n          ) => {\n            const [rule, index] = argumentsList;\n\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror,\n              stylesheetManager.styleMirror,\n            );\n\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                adds: [\n                  {\n                    rule,\n                    index: [\n                      ...getNestedCSSRulePositions(thisArg),\n                      index || 0, // defaults to 0\n                    ],\n                  },\n                ],\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          },\n        ),\n      },\n    );\n\n    type.prototype.deleteRule = new Proxy(\n      unmodifiedFunctions[typeKey].deleteRule,\n      {\n        apply: callbackWrapper(\n          (\n            target: typeof deleteRule,\n            thisArg: CSSRule,\n            argumentsList: [number],\n          ) => {\n            const [index] = argumentsList;\n\n            const { id, styleId } = getIdAndStyleId(\n              thisArg.parentStyleSheet,\n              mirror,\n              stylesheetManager.styleMirror,\n            );\n\n            if ((id && id !== -1) || (styleId && styleId !== -1)) {\n              styleSheetRuleCb({\n                id,\n                styleId,\n                removes: [\n                  { index: [...getNestedCSSRulePositions(thisArg), index] },\n                ],\n              });\n            }\n            return target.apply(thisArg, argumentsList);\n          },\n        ),\n      },\n    );\n  });\n\n  return callbackWrapper(() => {\n    win.CSSStyleSheet.prototype.insertRule = insertRule;\n    win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n    replace && (win.CSSStyleSheet.prototype.replace = replace);\n    replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n    Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n      type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n      type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n    });\n  });\n}\n\nexport function initAdoptedStyleSheetObserver(\n  {\n    mirror,\n    stylesheetManager,\n  }: Pick<observerParam, \"mirror\" | \"stylesheetManager\">,\n  host: Document | ShadowRoot,\n): listenerHandler {\n  let hostId: number | null = null;\n  // host of adoptedStyleSheets is outermost document or IFrame's document\n  if (host.nodeName === \"#document\") hostId = mirror.getId(host);\n  // The host is a ShadowRoot.\n  else hostId = mirror.getId((host as ShadowRoot).host);\n\n  const patchTarget =\n    host.nodeName === \"#document\"\n      ? (host as Document).defaultView?.Document\n      : host.ownerDocument?.defaultView?.ShadowRoot;\n  const originalPropertyDescriptor = patchTarget?.prototype\n    ? Object.getOwnPropertyDescriptor(\n        patchTarget?.prototype,\n        \"adoptedStyleSheets\",\n      )\n    : undefined;\n  if (\n    hostId === null ||\n    hostId === -1 ||\n    !patchTarget ||\n    !originalPropertyDescriptor\n  )\n    return () => {\n      //\n    };\n\n  // Patch adoptedStyleSheets by overriding the original one.\n  Object.defineProperty(host, \"adoptedStyleSheets\", {\n    configurable: originalPropertyDescriptor.configurable,\n    enumerable: originalPropertyDescriptor.enumerable,\n    get(): CSSStyleSheet[] {\n      return originalPropertyDescriptor.get?.call(this) as CSSStyleSheet[];\n    },\n    set(sheets: CSSStyleSheet[]) {\n      const result = originalPropertyDescriptor.set?.call(this, sheets);\n      if (hostId !== null && hostId !== -1) {\n        try {\n          stylesheetManager.adoptStyleSheets(sheets, hostId);\n        } catch (e) {\n          // for safety\n        }\n      }\n      return result;\n    },\n  });\n\n  return callbackWrapper(() => {\n    Object.defineProperty(host, \"adoptedStyleSheets\", {\n      configurable: originalPropertyDescriptor.configurable,\n      enumerable: originalPropertyDescriptor.enumerable,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      get: originalPropertyDescriptor.get,\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      set: originalPropertyDescriptor.set,\n    });\n  });\n}\n\nfunction initStyleDeclarationObserver(\n  {\n    styleDeclarationCb,\n    mirror,\n    ignoreCSSAttributes,\n    stylesheetManager,\n  }: observerParam,\n  { win }: { win: IWindow },\n): listenerHandler {\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n  win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n    apply: callbackWrapper(\n      (\n        target: typeof setProperty,\n        thisArg: CSSStyleDeclaration,\n        argumentsList: [string, string, string],\n      ) => {\n        const [property, value, priority] = argumentsList;\n\n        // ignore this mutation if we do not care about this css attribute\n        if (ignoreCSSAttributes.has(property)) {\n          return setProperty.apply(thisArg, [property, value, priority]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          thisArg.parentRule?.parentStyleSheet,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            set: {\n              property,\n              value,\n              priority,\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule!),\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  // eslint-disable-next-line @typescript-eslint/unbound-method\n  const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n  win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n    apply: callbackWrapper(\n      (\n        target: typeof removeProperty,\n        thisArg: CSSStyleDeclaration,\n        argumentsList: [string],\n      ) => {\n        const [property] = argumentsList;\n\n        // ignore this mutation if we do not care about this css attribute\n        if (ignoreCSSAttributes.has(property)) {\n          return removeProperty.apply(thisArg, [property]);\n        }\n        const { id, styleId } = getIdAndStyleId(\n          thisArg.parentRule?.parentStyleSheet,\n          mirror,\n          stylesheetManager.styleMirror,\n        );\n        if ((id && id !== -1) || (styleId && styleId !== -1)) {\n          styleDeclarationCb({\n            id,\n            styleId,\n            remove: {\n              property,\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            index: getNestedCSSRulePositions(thisArg.parentRule!),\n          });\n        }\n        return target.apply(thisArg, argumentsList);\n      },\n    ),\n  });\n\n  return callbackWrapper(() => {\n    win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n    win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n  });\n}\n\nfunction initMediaInteractionObserver({\n  mediaInteractionCb,\n  blockClass,\n  blockSelector,\n  mirror,\n  sampling,\n  doc,\n}: observerParam): listenerHandler {\n  const handler = callbackWrapper((type: MediaInteractions) =>\n    throttle(\n      callbackWrapper((event: Event) => {\n        const target = getEventTarget(event);\n        if (\n          !target ||\n          isBlocked(target as Node, blockClass, blockSelector, true)\n        ) {\n          return;\n        }\n        const { currentTime, volume, muted, playbackRate, loop } =\n          target as HTMLMediaElement;\n        mediaInteractionCb({\n          type,\n          id: mirror.getId(target as Node),\n          currentTime,\n          volume,\n          muted,\n          playbackRate,\n          loop,\n        });\n      }),\n      sampling.media || 500,\n    ),\n  );\n  const handlers = [\n    on(\"play\", handler(MediaInteractions.Play), doc),\n    on(\"pause\", handler(MediaInteractions.Pause), doc),\n    on(\"seeked\", handler(MediaInteractions.Seeked), doc),\n    on(\"volumechange\", handler(MediaInteractions.VolumeChange), doc),\n    on(\"ratechange\", handler(MediaInteractions.RateChange), doc),\n  ];\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initFontObserver({ fontCb, doc }: observerParam): listenerHandler {\n  const win = doc.defaultView as IWindow;\n  if (!win) {\n    return () => {\n      //\n    };\n  }\n\n  const handlers: listenerHandler[] = [];\n\n  const fontMap = new WeakMap<FontFace, fontParam>();\n\n  const originalFontFace = win.FontFace;\n  win.FontFace = function FontFace(\n    family: string,\n    source: string | ArrayBufferLike,\n    descriptors?: FontFaceDescriptors,\n  ) {\n    const safeSource: string | BufferSource =\n      typeof source === \"string\"\n        ? source\n        : source instanceof SharedArrayBuffer\n        ? new ArrayBuffer(source.byteLength)\n        : source; // already an ArrayBuffer\n\n    // Only perform the copy if source is not a string (and is a SharedArrayBuffer)\n    if (typeof source !== \"string\" && source instanceof SharedArrayBuffer) {\n      // Narrow safeSource to ArrayBuffer since we know it's not a string\n      new Uint8Array(safeSource as ArrayBuffer).set(new Uint8Array(source));\n    }\n\n    const fontFace = new originalFontFace(family, safeSource, descriptors);\n\n    fontMap.set(fontFace, {\n      family,\n      buffer: typeof source !== \"string\",\n      descriptors,\n      fontSource:\n        typeof source === \"string\"\n          ? source\n          : JSON.stringify(\n              Array.from(new Uint8Array(safeSource as ArrayBuffer)),\n            ),\n    });\n\n    return fontFace;\n  } as unknown as typeof FontFace;\n\n  const restoreHandler = patch(\n    doc.fonts,\n    \"add\",\n    function (original: (font: FontFace) => void) {\n      return function (this: FontFaceSet, fontFace: FontFace) {\n        setTimeout(\n          callbackWrapper(() => {\n            const p = fontMap.get(fontFace);\n            if (p) {\n              fontCb(p);\n              fontMap.delete(fontFace);\n            }\n          }),\n          0,\n        );\n        return original.apply(this, [fontFace]);\n      };\n    },\n  );\n\n  handlers.push(() => {\n    win.FontFace = originalFontFace;\n  });\n  handlers.push(restoreHandler);\n\n  return callbackWrapper(() => {\n    handlers.forEach((h) => h());\n  });\n}\n\nfunction initSelectionObserver(param: observerParam): listenerHandler {\n  const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\n  let collapsed = true;\n\n  const updateSelection = callbackWrapper(() => {\n    const selection = doc.getSelection();\n\n    if (!selection || (collapsed && selection?.isCollapsed)) return;\n\n    collapsed = selection.isCollapsed || false;\n\n    const ranges: SelectionRange[] = [];\n    const count = selection.rangeCount || 0;\n\n    for (let i = 0; i < count; i++) {\n      const range = selection.getRangeAt(i);\n\n      const { startContainer, startOffset, endContainer, endOffset } = range;\n\n      const blocked =\n        isBlocked(startContainer, blockClass, blockSelector, true) ||\n        isBlocked(endContainer, blockClass, blockSelector, true);\n\n      if (blocked) continue;\n\n      ranges.push({\n        start: mirror.getId(startContainer),\n        startOffset,\n        end: mirror.getId(endContainer),\n        endOffset,\n      });\n    }\n\n    selectionCb({ ranges });\n  });\n\n  updateSelection();\n\n  return on(\"selectionchange\", updateSelection);\n}\n\nfunction initCustomElementObserver({\n  doc,\n  customElementCb,\n}: observerParam): listenerHandler {\n  const win = doc.defaultView as IWindow;\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  if (!win || !win.customElements) return () => {};\n  const restoreHandler = patch(\n    win.customElements,\n    \"define\",\n    function (\n      original: (\n        name: string,\n        constructor: CustomElementConstructor,\n        options?: ElementDefinitionOptions,\n      ) => void,\n    ) {\n      return function (\n        name: string,\n        constructor: CustomElementConstructor,\n        options?: ElementDefinitionOptions,\n      ) {\n        try {\n          customElementCb({\n            define: {\n              name,\n            },\n          });\n        } catch (e) {\n          console.warn(`Custom element callback failed for ${name}`);\n        }\n        return original.apply(this, [name, constructor, options]);\n      };\n    },\n  );\n  return restoreHandler;\n}\n\nfunction mergeHooks(o: observerParam, hooks: hooksParam) {\n  const {\n    mutationCb,\n    mousemoveCb,\n    mouseInteractionCb,\n    scrollCb,\n    viewportResizeCb,\n    inputCb,\n    typingCb,\n    deviceChangeCb,\n    mediaInteractionCb,\n    styleSheetRuleCb,\n    styleDeclarationCb,\n    canvasMutationCb,\n    fontCb,\n    selectionCb,\n    customElementCb,\n  } = o;\n  o.mutationCb = (...p: Arguments<mutationCallBack>) => {\n    if (hooks.mutation) {\n      hooks.mutation(...p);\n    }\n    mutationCb(...p);\n  };\n  o.mousemoveCb = (...p: Arguments<mousemoveCallBack>) => {\n    if (hooks.mousemove) {\n      hooks.mousemove(...p);\n    }\n    mousemoveCb(...p);\n  };\n  o.mouseInteractionCb = (...p: Arguments<mouseInteractionCallBack>) => {\n    if (hooks.mouseInteraction) {\n      hooks.mouseInteraction(...p);\n    }\n    mouseInteractionCb(...p);\n  };\n  o.scrollCb = (...p: Arguments<scrollCallback>) => {\n    if (hooks.scroll) {\n      hooks.scroll(...p);\n    }\n    scrollCb(...p);\n  };\n  o.viewportResizeCb = (...p: Arguments<viewportResizeCallback>) => {\n    if (hooks.viewportResize) {\n      hooks.viewportResize(...p);\n    }\n    viewportResizeCb(...p);\n  };\n  o.inputCb = (...p: Arguments<inputCallback>) => {\n    if (hooks.input) {\n      hooks.input(...p);\n    }\n    inputCb(...p);\n  };\n  o.typingCb = (...p: Arguments<typingCallback>) => {\n    if (hooks.typing) {\n      hooks.typing(...p);\n    }\n    typingCb(...p);\n  };\n  o.deviceChangeCb = (...p: Arguments<deviceChangeCallback>) => {\n    if (hooks.device) {\n      hooks.device(...p);\n    }\n    deviceChangeCb(...p);\n  };\n  o.mediaInteractionCb = (...p: Arguments<mediaInteractionCallback>) => {\n    if (hooks.mediaInteaction) {\n      hooks.mediaInteaction(...p);\n    }\n    mediaInteractionCb(...p);\n  };\n  o.styleSheetRuleCb = (...p: Arguments<styleSheetRuleCallback>) => {\n    if (hooks.styleSheetRule) {\n      hooks.styleSheetRule(...p);\n    }\n    styleSheetRuleCb(...p);\n  };\n  o.styleDeclarationCb = (...p: Arguments<styleDeclarationCallback>) => {\n    if (hooks.styleDeclaration) {\n      hooks.styleDeclaration(...p);\n    }\n    styleDeclarationCb(...p);\n  };\n  o.canvasMutationCb = (...p: Arguments<canvasMutationCallback>) => {\n    if (hooks.canvasMutation) {\n      hooks.canvasMutation(...p);\n    }\n    canvasMutationCb(...p);\n  };\n  o.fontCb = (...p: Arguments<fontCallback>) => {\n    if (hooks.font) {\n      hooks.font(...p);\n    }\n    fontCb(...p);\n  };\n  o.selectionCb = (...p: Arguments<selectionCallback>) => {\n    if (hooks.selection) {\n      hooks.selection(...p);\n    }\n    selectionCb(...p);\n  };\n  o.customElementCb = (...c: Arguments<customElementCallback>) => {\n    if (hooks.customElement) {\n      hooks.customElement(...c);\n    }\n    customElementCb(...c);\n  };\n}\n\nexport function initObservers(\n  o: observerParam,\n  hooks: hooksParam = {},\n): listenerHandler {\n  const currentWindow = o.doc.defaultView; // basically document.window\n  if (!currentWindow) {\n    return () => {\n      //\n    };\n  }\n  mergeHooks(o, hooks);\n  let mutationObserver: MutationObserver | undefined;\n  if (o.recordDOM) {\n    mutationObserver = initMutationObserver(o, o.doc);\n  }\n  const mousemoveHandler = initMoveObserver(o);\n  const mouseInteractionHandler = initMouseInteractionObserver(o);\n  const scrollHandler = initScrollObserver(o);\n  const viewportResizeHandler = initViewportResizeObserver(o, {\n    win: currentWindow,\n  });\n  const inputHandler = initInputObserver(o);\n  const typingHandler = initTypingObserver(o);\n  const mediaDeviceChangeHandler = initDeviceChangeObserver(o);\n  const mediaInteractionHandler = initMediaInteractionObserver(o);\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let styleSheetObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let adoptedStyleSheetObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let styleDeclarationObserver = () => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  let fontObserver = () => {};\n  if (o.recordDOM) {\n    styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n    adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n    styleDeclarationObserver = initStyleDeclarationObserver(o, {\n      win: currentWindow,\n    });\n    if (o.collectFonts) {\n      fontObserver = initFontObserver(o);\n    }\n  }\n  const selectionObserver = initSelectionObserver(o);\n  const customElementObserver = initCustomElementObserver(o);\n\n  // plugins\n  const pluginHandlers: listenerHandler[] = [];\n  for (const plugin of o.plugins) {\n    pluginHandlers.push(\n      plugin.observer(plugin.callback, currentWindow, plugin.options),\n    );\n  }\n\n  return callbackWrapper(() => {\n    mutationBuffers.forEach((b) => b.reset());\n    mutationObserver?.disconnect();\n    mousemoveHandler();\n    mouseInteractionHandler();\n    scrollHandler();\n    viewportResizeHandler();\n    inputHandler();\n    typingHandler();\n    mediaInteractionHandler();\n    styleSheetObserver();\n    adoptedStyleSheetObserver();\n    styleDeclarationObserver();\n    fontObserver();\n    selectionObserver();\n    customElementObserver();\n    mediaDeviceChangeHandler();\n    pluginHandlers.forEach((h) => h());\n  });\n}\n\ntype CSSGroupingProp =\n  | \"CSSGroupingRule\"\n  | \"CSSMediaRule\"\n  | \"CSSSupportsRule\"\n  | \"CSSConditionRule\";\n\nfunction hasNestedCSSRule(prop: CSSGroupingProp): boolean {\n  return typeof window[prop] !== \"undefined\";\n}\n\nfunction canMonkeyPatchNestedCSSRule(prop: CSSGroupingProp): boolean {\n  return Boolean(\n    typeof window[prop] !== \"undefined\" &&\n      // Note: Generally, this check _shouldn't_ be necessary\n      // However, in some scenarios (e.g. jsdom) this can sometimes fail, so we check for it here\n      window[prop].prototype &&\n      \"insertRule\" in window[prop].prototype &&\n      \"deleteRule\" in window[prop].prototype,\n  );\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 type { CanvasArg, IWindow } from '@sailfish-rrweb/types';\nimport { encode } from 'base64-arraybuffer';\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  CanvasContext,\n  type IWindow,\n  type blockClass,\n  type canvasManagerMutationCallback,\n  type listenerHandler,\n} from '@sailfish-rrweb/types';\nimport { hookSetter, isBlocked, patch } 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): 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 (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\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 '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  blockClass,\n  IWindow,\n  listenerHandler,\n} from '@sailfish-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  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 (!isBlocked(this, blockClass, blockSelector, true)) {\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 {\n  CanvasContext,\n  type IWindow,\n  type blockClass,\n  type canvasManagerMutationCallback,\n  type canvasMutationWithType,\n  type listenerHandler,\n} from '@sailfish-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  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(this.canvas, blockClass, blockSelector, true)\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): 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      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        win,\n      ),\n    );\n  }\n\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "import type {\n  DataURLOptions,\n  ICanvas,\n  Mirror,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  CanvasArg,\n  IWindow,\n  blockClass,\n  canvasManagerMutationCallback,\n  canvasMutationCallback,\n  canvasMutationCommand,\n  canvasMutationWithType,\n  listenerHandler,\n} from '@sailfish-rrweb/types';\nimport { CanvasContext } from '@sailfish-rrweb/types';\nimport { isBlocked } from '../../../utils';\nimport type { ImageBitmapDataURLRequestWorker } from '../../workers/image-bitmap-data-url-worker';\nimport ImageBitmapDataURLWorker from '../../workers/image-bitmap-data-url-worker?worker&inline';\nimport initCanvas2DMutationObserver from './2d';\nimport initCanvasContextObserver from './canvas';\nimport initCanvasWebGLMutationObserver from './webgl';\n\nexport type RafStamps = { latestId: number; invokeId: number | null };\n\ntype pendingCanvasMutationsMap = Map<\n  HTMLCanvasElement,\n  canvasMutationWithType[]\n>;\n\nexport class CanvasManager {\n  private pendingCanvasMutations: pendingCanvasMutationsMap = new Map();\n  private rafStamps: RafStamps = { latestId: 0, invokeId: null };\n  private mirror: Mirror;\n\n  private mutationCb: canvasMutationCallback;\n  private resetObservers?: listenerHandler;\n  private frozen = false;\n  private locked = false;\n\n  public reset() {\n    this.pendingCanvasMutations.clear();\n    this.resetObservers && this.resetObservers();\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: {\n    recordCanvas: boolean;\n    mutationCb: canvasMutationCallback;\n    win: IWindow;\n    blockClass: blockClass;\n    blockSelector: string | null;\n    mirror: Mirror;\n    sampling?: 'all' | number;\n    dataURLOptions: DataURLOptions;\n  }) {\n    const {\n      sampling = 'all',\n      win,\n      blockClass,\n      blockSelector,\n      recordCanvas,\n      dataURLOptions,\n    } = options;\n    this.mutationCb = options.mutationCb;\n    this.mirror = options.mirror;\n\n    if (recordCanvas && sampling === 'all')\n      this.initCanvasMutationObserver(win, blockClass, blockSelector);\n    if (recordCanvas && typeof sampling === 'number')\n      this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\n        dataURLOptions,\n      });\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    fps: number,\n    win: IWindow,\n    blockClass: blockClass,\n    blockSelector: string | null,\n    options: {\n      dataURLOptions: DataURLOptions;\n    },\n  ) {\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      true,\n    );\n    const snapshotInProgressMap: Map<number, boolean> = new Map();\n    const worker =\n      new ImageBitmapDataURLWorker() as ImageBitmapDataURLRequestWorker;\n    worker.onmessage = (e) => {\n      const { id } = e.data;\n      snapshotInProgressMap.set(id, false);\n\n      if (!('base64' in e.data)) return;\n\n      const { base64, type, width, height } = e.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            ],\n          },\n        ],\n      });\n    };\n\n    const timeBetweenSnapshots = 1000 / fps;\n    let lastSnapshotTime = 0;\n    let rafId: number;\n\n    const getCanvas = (): HTMLCanvasElement[] => {\n      const matchedCanvas: HTMLCanvasElement[] = [];\n      win.document.querySelectorAll('canvas').forEach((canvas) => {\n        if (!isBlocked(canvas, blockClass, blockSelector, true)) {\n          matchedCanvas.push(canvas);\n        }\n      });\n      return matchedCanvas;\n    };\n\n    const takeCanvasSnapshots = (timestamp: DOMHighResTimeStamp) => {\n      if (\n        lastSnapshotTime &&\n        timestamp - lastSnapshotTime < timeBetweenSnapshots\n      ) {\n        rafId = requestAnimationFrame(takeCanvasSnapshots);\n        return;\n      }\n      lastSnapshotTime = timestamp;\n\n      getCanvas()\n        // eslint-disable-next-line @typescript-eslint/no-misused-promises\n        .forEach(async (canvas: HTMLCanvasElement) => {\n          const id = this.mirror.getId(canvas);\n          if (snapshotInProgressMap.get(id)) return;\n\n          // The browser throws if the canvas is 0 in size\n          // Uncaught (in promise) DOMException: Failed to execute 'createImageBitmap' on 'Window': The source image width is 0.\n          // Assuming the same happens with height\n          if (canvas.width === 0 || canvas.height === 0) return;\n\n          snapshotInProgressMap.set(id, true);\n          if (['webgl', 'webgl2'].includes((canvas as ICanvas).__context)) {\n            // if the canvas hasn't been modified recently,\n            // its contents won't be in memory and `createImageBitmap`\n            // will return a transparent imageBitmap\n\n            const context = canvas.getContext((canvas as ICanvas).__context) as\n              | WebGLRenderingContext\n              | WebGL2RenderingContext\n              | null;\n            if (\n              context?.getContextAttributes()?.preserveDrawingBuffer === false\n            ) {\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          const bitmap = await createImageBitmap(canvas);\n          worker.postMessage(\n            {\n              id,\n              bitmap,\n              width: canvas.width,\n              height: canvas.height,\n              dataURLOptions: options.dataURLOptions,\n            },\n            [bitmap],\n          );\n        });\n      rafId = requestAnimationFrame(takeCanvasSnapshots);\n    };\n\n    rafId = requestAnimationFrame(takeCanvasSnapshots);\n\n    this.resetObservers = () => {\n      canvasContextReset();\n      cancelAnimationFrame(rafId);\n    };\n  }\n\n  private initCanvasMutationObserver(\n    win: IWindow,\n    blockClass: blockClass,\n    blockSelector: string | null,\n  ): void {\n    this.startRAFTimestamping();\n    this.startPendingCanvasMutationFlusher();\n\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      false,\n    );\n    const canvas2DReset = initCanvas2DMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n    );\n\n    const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n    );\n\n    this.resetObservers = () => {\n      canvasContextReset();\n      canvas2DReset();\n      canvasWebGL1and2Reset();\n    };\n  }\n\n  private startPendingCanvasMutationFlusher() {\n    requestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n\n  private startRAFTimestamping() {\n    const setLatestRAFTimestamp = (timestamp: DOMHighResTimeStamp) => {\n      this.rafStamps.latestId = timestamp;\n      requestAnimationFrame(setLatestRAFTimestamp);\n    };\n    requestAnimationFrame(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    requestAnimationFrame(() => 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", "import type MutationBuffer from './mutation';\n\n/**\n * Keeps a log of nodes that could show up in multiple mutation buffer but shouldn't be handled twice.\n */\nexport default class ProcessedNodeManager {\n  private nodeMap: WeakMap<Node, Set<MutationBuffer>> = new WeakMap();\n\n  private active = false;\n\n  public inOtherBuffer(node: Node, thisBuffer: MutationBuffer) {\n    const buffers = this.nodeMap.get(node);\n    return (\n      buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer)\n    );\n  }\n\n  public add(node: Node, buffer: MutationBuffer) {\n    if (!this.active) {\n      this.active = true;\n      requestAnimationFrame(() => {\n        this.nodeMap = new WeakMap();\n        this.active = false;\n      });\n    }\n    this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\n  }\n\n  public destroy() {\n    // cleanup no longer needed\n  }\n}\n", "import type { Mirror } from '@sailfish-rrweb/rrweb-snapshot';\nimport { isNativeShadowDom } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  SamplingStrategy,\n  mutationCallBack,\n  scrollCallback,\n} from '@sailfish-rrweb/types';\nimport type { MutationBufferParam } from '../types';\nimport { inDom, patch } from '../utils';\nimport {\n  initAdoptedStyleSheetObserver,\n  initMutationObserver,\n  initScrollObserver,\n} from './observer';\n\ntype BypassOptions = Omit<\n  MutationBufferParam,\n  'doc' | 'mutationCb' | 'mirror' | 'shadowDomManager'\n> & {\n  sampling: SamplingStrategy;\n};\n\nexport class ShadowDomManager {\n  private shadowDoms = new WeakSet<ShadowRoot>();\n  private mutationCb: mutationCallBack;\n  private scrollCb: scrollCallback;\n  private bypassOptions: BypassOptions;\n  private mirror: Mirror;\n  private restoreHandlers: (() => void)[] = [];\n\n  constructor(options: {\n    mutationCb: mutationCallBack;\n    scrollCb: scrollCallback;\n    bypassOptions: BypassOptions;\n    mirror: Mirror;\n  }) {\n    this.mutationCb = options.mutationCb;\n    this.scrollCb = options.scrollCb;\n    this.bypassOptions = options.bypassOptions;\n    this.mirror = options.mirror;\n\n    this.init();\n  }\n\n  public init() {\n    this.reset();\n    // Patch 'attachShadow' to observe newly added shadow doms.\n    this.patchAttachShadow(Element, document);\n  }\n\n  public addShadowRoot(shadowRoot: ShadowRoot, doc: Document) {\n    if (!isNativeShadowDom(shadowRoot)) return;\n    if (this.shadowDoms.has(shadowRoot)) return;\n    this.shadowDoms.add(shadowRoot);\n    const observer = initMutationObserver(\n      {\n        ...this.bypassOptions,\n        doc,\n        mutationCb: this.mutationCb,\n        mirror: this.mirror,\n        shadowDomManager: this,\n      },\n      shadowRoot,\n    );\n    this.restoreHandlers.push(() => observer.disconnect());\n    this.restoreHandlers.push(\n      initScrollObserver({\n        ...this.bypassOptions,\n        scrollCb: this.scrollCb,\n        // https://gist.github.com/praveenpuglia/0832da687ed5a5d7a0907046c9ef1813\n        // scroll is not allowed to pass the boundary, so we need to listen the shadow document\n        doc: shadowRoot as unknown as Document,\n        mirror: this.mirror,\n      }),\n    );\n    // Defer this to avoid adoptedStyleSheet events being created before the full snapshot is created or attachShadow action is recorded.\n    setTimeout(() => {\n      if (\n        shadowRoot.adoptedStyleSheets &&\n        shadowRoot.adoptedStyleSheets.length > 0\n      )\n        this.bypassOptions.stylesheetManager.adoptStyleSheets(\n          shadowRoot.adoptedStyleSheets,\n          this.mirror.getId(shadowRoot.host),\n        );\n      this.restoreHandlers.push(\n        initAdoptedStyleSheetObserver(\n          {\n            mirror: this.mirror,\n            stylesheetManager: this.bypassOptions.stylesheetManager,\n          },\n          shadowRoot,\n        ),\n      );\n    }, 0);\n  }\n\n  /**\n   * Monkey patch 'attachShadow' of an IFrameElement to observe newly added shadow doms.\n   */\n  public observeAttachShadow(iframeElement: HTMLIFrameElement) {\n    if (!iframeElement.contentWindow || !iframeElement.contentDocument) return;\n\n    this.patchAttachShadow(\n      (\n        iframeElement.contentWindow as Window & {\n          Element: { prototype: Element };\n        }\n      ).Element,\n      iframeElement.contentDocument,\n    );\n  }\n\n  /**\n   * Patch 'attachShadow' to observe newly added shadow doms.\n   */\n  private patchAttachShadow(\n    element: {\n      prototype: Element;\n    },\n    doc: Document,\n  ) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const manager = this;\n    this.restoreHandlers.push(\n      patch(\n        element.prototype,\n        'attachShadow',\n        function (original: (init: ShadowRootInit) => ShadowRoot) {\n          return function (this: Element, option: ShadowRootInit) {\n            const shadowRoot = original.call(this, option);\n            // For the shadow dom elements in the document, monitor their dom mutations.\n            // For shadow dom elements that aren't in the document yet,\n            // we start monitoring them once their shadow dom host is appended to the document.\n            if (this.shadowRoot && inDom(this))\n              manager.addShadowRoot(this.shadowRoot, doc);\n            return shadowRoot;\n          };\n        },\n      ),\n    );\n  }\n\n  public reset() {\n    this.restoreHandlers.forEach((handler) => {\n      try {\n        handler();\n      } catch (e) {\n        //\n      }\n    });\n    this.restoreHandlers = [];\n    this.shadowDoms = new WeakSet();\n  }\n}\n", "import type {\n  CorruptedRuleInfo,\n  elementNode,\n  serializedNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport { stringifyRule } from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  adoptedStyleSheetCallback,\n  adoptedStyleSheetParam,\n  attributeMutation,\n  mutationCallBack,\n} from '@sailfish-rrweb/types';\nimport { StyleSheetMirror } from '../utils';\n\nexport class StylesheetManager {\n  private trackedLinkElements: WeakSet<HTMLLinkElement> = new WeakSet();\n  private mutationCb: mutationCallBack;\n  private adoptedStyleSheetCb: adoptedStyleSheetCallback;\n  public styleMirror = new StyleSheetMirror();\n  public corruptedRules: CorruptedRuleInfo[] = [];\n\n  constructor(options: {\n    mutationCb: mutationCallBack;\n    adoptedStyleSheetCb: adoptedStyleSheetCallback;\n  }) {\n    this.mutationCb = options.mutationCb;\n    this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n  }\n\n  public attachLinkElement(\n    linkEl: HTMLLinkElement,\n    childSn: serializedNodeWithId,\n  ) {\n    if ('_cssText' in (childSn as elementNode).attributes)\n      this.mutationCb({\n        adds: [],\n        removes: [],\n        texts: [],\n        attributes: [\n          {\n            id: childSn.id,\n            attributes: (childSn as elementNode)\n              .attributes as attributeMutation['attributes'],\n          },\n        ],\n      });\n\n    this.trackLinkElement(linkEl);\n  }\n\n  public trackLinkElement(linkEl: HTMLLinkElement) {\n    if (this.trackedLinkElements.has(linkEl)) return;\n\n    this.trackedLinkElements.add(linkEl);\n    this.trackStylesheetInLinkElement(linkEl);\n  }\n\n  public adoptStyleSheets(\n    sheets: CSSStyleSheet[] | readonly CSSStyleSheet[],\n    hostId: number,\n  ) {\n    if (sheets.length === 0) return;\n    const adoptedStyleSheetData: adoptedStyleSheetParam = {\n      id: hostId,\n      styleIds: [] as number[],\n    };\n    const styles: NonNullable<adoptedStyleSheetParam['styles']> = [];\n    for (const sheet of sheets) {\n      let styleId;\n      if (!this.styleMirror.has(sheet)) {\n        styleId = this.styleMirror.add(sheet);\n        styles.push({\n          styleId,\n          rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\n            rule: stringifyRule(r),\n            index,\n          })),\n        });\n      } else styleId = this.styleMirror.getId(sheet);\n      adoptedStyleSheetData.styleIds.push(styleId);\n    }\n    if (styles.length > 0) adoptedStyleSheetData.styles = styles;\n    this.adoptedStyleSheetCb(adoptedStyleSheetData);\n  }\n\n  public setCorruptedRules(rules: CorruptedRuleInfo[]) {\n    this.corruptedRules = rules;\n  }\n\n  public reset() {\n    this.styleMirror.reset();\n    this.trackedLinkElements = new WeakSet();\n    this.corruptedRules = [];\n  }\n\n  // TODO: take snapshot on stylesheet reload by applying event listener\n  private trackStylesheetInLinkElement(_linkEl: HTMLLinkElement) {\n    // linkEl.addEventListener('load', () => {\n    //   // re-loaded, maybe take another snapshot?\n    // });\n  }\n}\n", "import {\n  createMirror,\n  snapshot,\n  type CorruptedRuleInfo,\n  type MaskInputOptions,\n  type SlimDOMOptions,\n} from \"@sailfish-rrweb/rrweb-snapshot\";\nimport {\n  EventType,\n  IncrementalSource,\n  type adoptedStyleSheetParam,\n  type canvasMutationParam,\n  type eventWithTime,\n  type eventWithoutTime,\n  type listenerHandler,\n  type mutationCallbackParam,\n  type scrollCallback,\n} from \"@sailfish-rrweb/types\";\nimport type {\n  CrossOriginIframeMessageEventContent,\n  recordOptions,\n} from \"../types\";\nimport {\n  getWindowHeight,\n  getWindowScroll,\n  getWindowWidth,\n  hasShadowRoot,\n  isSerializedIframe,\n  isSerializedStylesheet,\n  nowTimestamp,\n  on,\n  polyfill,\n} from \"../utils\";\nimport {\n  callbackWrapper,\n  registerErrorHandler,\n  unregisterErrorHandler,\n} from \"./error-handler\";\nimport { IframeManager } from \"./iframe-manager\";\nimport { initObservers, mutationBuffers } from \"./observer\";\nimport { CanvasManager } from \"./observers/canvas/canvas-manager\";\nimport ProcessedNodeManager from \"./processed-node-manager\";\nimport { ShadowDomManager } from \"./shadow-dom-manager\";\nimport { StylesheetManager } from \"./stylesheet-manager\";\n\nlet wrappedEmit!: (e: eventWithoutTime, isCheckout?: boolean) => void;\n\nlet takeFullSnapshot!: (isCheckout?: boolean) => void;\nlet canvasManager!: CanvasManager;\nlet recording = false;\n\n// Multiple tools (i.e. MooTools, Prototype.js) override Array.from and drop support for the 2nd parameter\n// Try to pull a clean implementation from a newly created iframe\ntry {\n  if (Array.from([1], (x) => x * 2)[0] !== 2) {\n    const cleanFrame = document.createElement(\"iframe\");\n    document.body.appendChild(cleanFrame);\n    // eslint-disable-next-line @typescript-eslint/unbound-method -- Array.from is static and doesn't rely on binding\n    Array.from = cleanFrame.contentWindow?.Array.from || Array.from;\n    document.body.removeChild(cleanFrame);\n  }\n} catch (err) {\n  console.debug(\"Unable to override Array.from\", err);\n}\n\nconst mirror = createMirror();\nfunction record<T = eventWithTime>(\n  options: recordOptions<T> = {},\n): listenerHandler | undefined {\n  const {\n    emit,\n    checkoutEveryNms,\n    checkoutEveryNth,\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    ignoreClass = \"rr-ignore\",\n    ignoreSelector = null,\n    maskTextClass = \"rr-mask\",\n    maskTextSelector = null,\n    inlineStylesheet = true,\n    maskAllInputs,\n    maskInputOptions: _maskInputOptions,\n    slimDOMOptions: _slimDOMOptions,\n    maskInputFn,\n    maskTextFn,\n    hooks,\n    packFn,\n    sampling = {},\n    dataURLOptions = {},\n    mousemoveWait,\n    recordDOM = true,\n    recordCanvas = false,\n    recordCrossOriginIframes = false,\n    recordAfter = options.recordAfter === \"DOMContentLoaded\"\n      ? options.recordAfter\n      : \"load\",\n    userTriggeredOnInput = false,\n    collectFonts = false,\n    inlineImages = false,\n    plugins,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = new Set([]),\n    errorHandler,\n  } = options;\n\n\n  registerErrorHandler(errorHandler);\n\n  const inEmittingFrame = recordCrossOriginIframes\n    ? window.parent === window\n    : true;\n\n  let passEmitsToParent = false;\n  if (!inEmittingFrame) {\n    try {\n      // throws if parent is cross-origin\n      if (window.parent.document) {\n        passEmitsToParent = false; // if parent is same origin we collect iframe events from the parent\n      }\n    } catch (e) {\n      passEmitsToParent = true;\n    }\n  }\n\n  // runtime checks for user options\n  if (inEmittingFrame && !emit) {\n    throw new Error(\"emit function is required\");\n  }\n  if (!inEmittingFrame && !passEmitsToParent) {\n    return () => {\n      /* no-op since in this case we don't need to record anything from this frame in particular */\n    };\n  }\n  // move departed options to new options\n  if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n    sampling.mousemove = mousemoveWait;\n  }\n\n  // reset mirror in case `record` this was called earlier\n  mirror.reset();\n\n  const maskInputOptions: MaskInputOptions =\n    maskAllInputs === true\n      ? {\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          password: true,\n        }\n      : _maskInputOptions !== undefined\n      ? _maskInputOptions\n      : { password: true };\n\n  const slimDOMOptions: SlimDOMOptions =\n    _slimDOMOptions === true || _slimDOMOptions === \"all\"\n      ? {\n          script: true,\n          comment: true,\n          headFavicon: true,\n          headWhitespace: true,\n          headMetaSocial: true,\n          headMetaRobots: true,\n          headMetaHttpEquiv: true,\n          headMetaVerification: true,\n          // the following are off for slimDOMOptions === true,\n          // as they destroy some (hidden) info:\n          headMetaAuthorship: _slimDOMOptions === \"all\",\n          headMetaDescKeywords: _slimDOMOptions === \"all\",\n          headTitleMutations: _slimDOMOptions === \"all\",\n        }\n      : _slimDOMOptions\n      ? _slimDOMOptions\n      : {};\n\n  polyfill();\n\n  let lastFullSnapshotEvent: eventWithTime;\n  let incrementalSnapshotCount = 0;\n\n  const eventProcessor = (e: eventWithTime): T => {\n    for (const plugin of plugins || []) {\n      if (plugin.eventProcessor) {\n        e = plugin.eventProcessor(e);\n      }\n    }\n    if (\n      packFn &&\n      // Disable packing events which will be emitted to parent frames.\n      !passEmitsToParent\n    ) {\n      e = packFn(e) as unknown as eventWithTime;\n    }\n    return e as unknown as T;\n  };\n  wrappedEmit = (r: eventWithoutTime, isCheckout?: boolean) => {\n    const e = r as eventWithTime;\n    e.timestamp = nowTimestamp();\n\n    if (\n      mutationBuffers[0]?.isFrozen() &&\n      e.type !== EventType.FullSnapshot &&\n      !(\n        e.type === EventType.IncrementalSnapshot &&\n        e.data.source === IncrementalSource.Mutation\n      )\n    ) {\n      // we've got a user initiated event so first we need to apply\n      // all DOM changes that have been buffering during paused state\n      mutationBuffers.forEach((buf) => buf.unfreeze());\n    }\n\n    if (inEmittingFrame) {\n      emit?.(eventProcessor(e), isCheckout);\n    } else if (passEmitsToParent) {\n      const message: CrossOriginIframeMessageEventContent<T> = {\n        type: \"@sailfish-rrweb/rrweb\",\n        event: eventProcessor(e),\n        origin: window.location.origin,\n        isCheckout,\n      };\n      window.parent.postMessage(message, \"*\");\n    }\n\n    if (e.type === EventType.FullSnapshot) {\n      lastFullSnapshotEvent = e;\n      incrementalSnapshotCount = 0;\n    } else if (e.type === EventType.IncrementalSnapshot) {\n      // attach iframe should be considered as full snapshot\n      if (\n        e.data.source === IncrementalSource.Mutation &&\n        e.data.isAttachIframe\n      ) {\n        return;\n      }\n      incrementalSnapshotCount++;\n      const exceedCount =\n        checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n      const exceedTime =\n        checkoutEveryNms &&\n        e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n      if (exceedCount || exceedTime) {\n        takeFullSnapshot(true);\n      }\n    }\n  };\n\n  const wrappedMutationEmit = (m: mutationCallbackParam) => {\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Mutation,\n        ...m,\n      },\n    });\n  };\n  const wrappedScrollEmit: scrollCallback = (p) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.Scroll,\n        ...p,\n      },\n    });\n  const wrappedCanvasMutationEmit = (p: canvasMutationParam) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.CanvasMutation,\n        ...p,\n      },\n    });\n\n  const wrappedAdoptedStyleSheetEmit = (a: adoptedStyleSheetParam) =>\n    wrappedEmit({\n      type: EventType.IncrementalSnapshot,\n      data: {\n        source: IncrementalSource.AdoptedStyleSheet,\n        ...a,\n      },\n    });\n\n  const stylesheetManager = new StylesheetManager({\n    mutationCb: wrappedMutationEmit,\n    adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\n  });\n\n  const iframeManager = new IframeManager({\n    mirror,\n    mutationCb: wrappedMutationEmit,\n    stylesheetManager: stylesheetManager,\n    recordCrossOriginIframes,\n    wrappedEmit,\n  });\n\n  /**\n   * Exposes mirror to the plugins\n   */\n  for (const plugin of plugins || []) {\n    if (plugin.getMirror)\n      plugin.getMirror({\n        nodeMirror: mirror,\n        crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n        crossOriginIframeStyleMirror:\n          iframeManager.crossOriginIframeStyleMirror,\n      });\n  }\n\n  const processedNodeManager = new ProcessedNodeManager();\n\n  canvasManager = new CanvasManager({\n    recordCanvas,\n    mutationCb: wrappedCanvasMutationEmit,\n    win: window,\n    blockClass,\n    blockSelector,\n    mirror,\n    sampling: sampling.canvas,\n    dataURLOptions,\n  });\n\n  const shadowDomManager = new ShadowDomManager({\n    mutationCb: wrappedMutationEmit,\n    scrollCb: wrappedScrollEmit,\n    bypassOptions: {\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskInputOptions,\n      dataURLOptions,\n      maskTextFn,\n      maskInputFn,\n      recordCanvas,\n      inlineImages,\n      sampling,\n      slimDOMOptions,\n      iframeManager,\n      stylesheetManager,\n      canvasManager,\n      keepIframeSrcFn,\n      processedNodeManager,\n    },\n    mirror,\n  });\n\n  takeFullSnapshot = (isCheckout = false) => {\n    if (!recordDOM) {\n      return;\n    }\n    wrappedEmit(\n      {\n        type: EventType.Meta,\n        data: {\n          href: window.location.href,\n          width: getWindowWidth(),\n          height: getWindowHeight(),\n        },\n      },\n      isCheckout,\n    );\n\n    // When we take a full snapshot, old tracked StyleSheets need to be removed.\n    stylesheetManager.reset();\n\n    shadowDomManager.init();\n\n    mutationBuffers.forEach((buf) => buf.lock()); // don't allow any mirror modifications during snapshotting\n    const corruptedRules: CorruptedRuleInfo[] = [];\n    const node = snapshot(document, {\n      mirror,\n      blockClass,\n      blockSelector,\n      maskTextClass,\n      maskTextSelector,\n      inlineStylesheet,\n      maskAllInputs: maskInputOptions,\n      maskTextFn,\n      maskInputFn,\n      slimDOM: slimDOMOptions,\n      dataURLOptions,\n      recordCanvas,\n      inlineImages,\n      corruptedRules,\n      onSerialize: (n) => {\n        if (isSerializedIframe(n, mirror)) {\n          iframeManager.addIframe(n as HTMLIFrameElement);\n        }\n        if (isSerializedStylesheet(n, mirror)) {\n          stylesheetManager.trackLinkElement(n as HTMLLinkElement);\n        }\n        if (hasShadowRoot(n)) {\n          shadowDomManager.addShadowRoot(n.shadowRoot, document);\n        }\n      },\n      onIframeLoad: (iframe, childSn) => {\n        iframeManager.attachIframe(iframe, childSn);\n        shadowDomManager.observeAttachShadow(iframe);\n      },\n      onStylesheetLoad: (linkEl, childSn) => {\n        stylesheetManager.attachLinkElement(linkEl, childSn);\n      },\n      keepIframeSrcFn,\n    });\n\n    if (!node) {\n      return console.warn(\"Failed to snapshot the document\");\n    }\n\n    // Store corrupted rules for use during incremental snapshots.\n    stylesheetManager.setCorruptedRules(corruptedRules);\n\n    wrappedEmit(\n      {\n        type: EventType.FullSnapshot,\n        data: {\n          node,\n          initialOffset: getWindowScroll(window),\n        },\n      },\n      isCheckout,\n    );\n    mutationBuffers.forEach((buf) => buf.unlock()); // generate & emit any mutations that happened during snapshotting, as can now apply against the newly built mirror\n\n    // Some old browsers don't support adoptedStyleSheets.\n    if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n      stylesheetManager.adoptStyleSheets(\n        document.adoptedStyleSheets,\n        mirror.getId(document),\n      );\n  };\n\n  try {\n    const handlers: listenerHandler[] = [];\n\n    const observe = (doc: Document) => {\n      return callbackWrapper(initObservers)(\n        {\n          mutationCb: wrappedMutationEmit,\n          mousemoveCb: (positions, source) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source,\n                positions,\n              },\n            }),\n          mouseInteractionCb: (d) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.MouseInteraction,\n                ...d,\n              },\n            }),\n          scrollCb: wrappedScrollEmit,\n          viewportResizeCb: (d) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.ViewportResize,\n                ...d,\n              },\n            }),\n          inputCb: (v) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Input,\n                ...v,\n              },\n            }),\n          mediaInteractionCb: (p) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.MediaInteraction,\n                ...p,\n              },\n            }),\n          styleSheetRuleCb: (r) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.StyleSheetRule,\n                ...r,\n              },\n            }),\n          styleDeclarationCb: (r) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.StyleDeclaration,\n                ...r,\n              },\n            }),\n          canvasMutationCb: wrappedCanvasMutationEmit,\n          fontCb: (p) =>\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Font,\n                ...p,\n              },\n            }),\n          selectionCb: (p) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.Selection,\n                ...p,\n              },\n            });\n          },\n          customElementCb: (c) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                source: IncrementalSource.CustomElement,\n                ...c,\n              },\n            });\n          },\n          typingCb: (v) => {\n            wrappedEmit({\n              type: EventType.IncrementalSnapshot,\n              data: {\n                ...v,\n              },\n            })\n          },\n\n          deviceChangeCb: (v) => {\n            wrappedEmit({\n              type: EventType.Device,\n              data: {\n                ...v,\n              },\n            })\n          },\n\n          blockClass,\n          ignoreClass,\n          ignoreSelector,\n          maskTextClass,\n          maskTextSelector,\n          maskInputOptions,\n          inlineStylesheet,\n          sampling,\n          recordDOM,\n          recordCanvas,\n          inlineImages,\n          userTriggeredOnInput,\n          collectFonts,\n          doc,\n          maskInputFn,\n          maskTextFn,\n          keepIframeSrcFn,\n          blockSelector,\n          slimDOMOptions,\n          dataURLOptions,\n          mirror,\n          iframeManager,\n          stylesheetManager,\n          shadowDomManager,\n          processedNodeManager,\n          canvasManager,\n          ignoreCSSAttributes,\n          plugins:\n            plugins\n              ?.filter((p) => p.observer)\n              ?.map((p) => ({\n                observer: p.observer!,\n                options: p.options,\n                callback: (payload: object) =>\n                  wrappedEmit({\n                    type: EventType.Plugin,\n                    data: {\n                      plugin: p.name,\n                      payload,\n                    },\n                  }),\n              })) || [],\n        },\n        hooks,\n      );\n    };\n\n    iframeManager.addLoadListener((iframeEl) => {\n      try {\n        handlers.push(observe(iframeEl.contentDocument!));\n      } catch (error) {\n        // TODO: handle internal error\n        console.warn(error);\n      }\n    });\n\n    const init = () => {\n      takeFullSnapshot();\n      handlers.push(observe(document));\n      recording = true;\n    };\n    if (\n      document.readyState === \"interactive\" ||\n      document.readyState === \"complete\"\n    ) {\n      init();\n    } else {\n      handlers.push(\n        on(\"DOMContentLoaded\", () => {\n          wrappedEmit({\n            type: EventType.DomContentLoaded,\n            data: {},\n          });\n          if (recordAfter === \"DOMContentLoaded\") init();\n        }),\n      );\n      handlers.push(\n        on(\n          \"load\",\n          () => {\n            wrappedEmit({\n              type: EventType.Load,\n              data: {},\n            });\n            if (recordAfter === \"load\") init();\n          },\n          window,\n        ),\n      );\n    }\n    return () => {\n      handlers.forEach((h) => h());\n      processedNodeManager.destroy();\n      recording = false;\n      unregisterErrorHandler();\n    };\n  } catch (error) {\n    // TODO: handle internal error\n    console.warn(error);\n  }\n}\n\nrecord.addCustomEvent = <T>(tag: string, payload: T) => {\n  if (!recording) {\n    throw new Error(\"please add custom event after start recording\");\n  }\n  wrappedEmit({\n    type: EventType.Custom,\n    data: {\n      tag,\n      payload,\n    },\n  });\n};\n\n\nrecord.addSailfishEvent = <T>(type: number, payload: T) => {\n  if (!recording) {\n    throw new Error(\"please add Sailfish event after start recording\");\n  }\n  const tag = \"sailfish-zendesk-test-tag\"\n  wrappedEmit({\n    /// type should come from arguments\n    type,\n    data: {\n      tag,\n      payload\n    },\n  });\n};\n\nrecord.freezePage = () => {\n  mutationBuffers.forEach((buf) => buf.freeze());\n};\n\nrecord.takeFullSnapshot = (isCheckout?: boolean) => {\n  if (!recording) {\n    throw new Error(\"please take full snapshot after start recording\");\n  }\n  takeFullSnapshot(isCheckout);\n};\n\nrecord.mirror = mirror;\n\nexport default record;\n", "var ps = Object.defineProperty;\nvar fs = (e, t, s) => t in e ? ps(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;\nvar c = (e, t, s) => fs(e, typeof t != \"symbol\" ? t + \"\" : t, s);\nvar ds = Object.defineProperty, ms = (e, t, s) => t in e ? ds(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s, ee = (e, t, s) => ms(e, typeof t != \"symbol\" ? t + \"\" : t, s), d = /* @__PURE__ */ ((e) => (e[e.Document = 0] = \"Document\", e[e.DocumentType = 1] = \"DocumentType\", e[e.Element = 2] = \"Element\", e[e.Text = 3] = \"Text\", e[e.CDATA = 4] = \"CDATA\", e[e.Comment = 5] = \"Comment\", e))(d || {});\nclass gs {\n  constructor() {\n    ee(this, \"idNodeMap\", /* @__PURE__ */ new Map()), ee(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(t) {\n    var s;\n    return t ? ((s = this.getMeta(t)) == null ? void 0 : s.id) ?? -1 : -1;\n  }\n  getNode(t) {\n    return this.idNodeMap.get(t) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(t) {\n    return this.nodeMetaMap.get(t) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(t) {\n    const s = this.getId(t);\n    this.idNodeMap.delete(s), t.childNodes && t.childNodes.forEach(\n      (r) => this.removeNodeFromMap(r)\n    );\n  }\n  has(t) {\n    return this.idNodeMap.has(t);\n  }\n  hasNode(t) {\n    return this.nodeMetaMap.has(t);\n  }\n  add(t, s) {\n    const r = s.id;\n    this.idNodeMap.set(r, t), this.nodeMetaMap.set(t, s);\n  }\n  replace(t, s) {\n    const r = this.getNode(t);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(s, i);\n    }\n    this.idNodeMap.set(t, s);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction ws() {\n  return new gs();\n}\nfunction ys(e) {\n  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nfunction bs(e) {\n  if (e.__esModule) return e;\n  var t = e.default;\n  if (typeof t == \"function\") {\n    var s = function r() {\n      return this instanceof r ? Reflect.construct(t, arguments, this.constructor) : t.apply(this, arguments);\n    };\n    s.prototype = t.prototype;\n  } else s = {};\n  return Object.defineProperty(s, \"__esModule\", { value: !0 }), Object.keys(e).forEach(function(r) {\n    var i = Object.getOwnPropertyDescriptor(e, r);\n    Object.defineProperty(s, r, i.get ? i : {\n      enumerable: !0,\n      get: function() {\n        return e[r];\n      }\n    });\n  }), s;\n}\nvar jt = { exports: {} }, f = String, Ee = function() {\n  return { isColorSupported: !1, reset: f, bold: f, dim: f, italic: f, underline: f, inverse: f, hidden: f, strikethrough: f, black: f, red: f, green: f, yellow: f, blue: f, magenta: f, cyan: f, white: f, gray: f, bgBlack: f, bgRed: f, bgGreen: f, bgYellow: f, bgBlue: f, bgMagenta: f, bgCyan: f, bgWhite: f, blackBright: f, redBright: f, greenBright: f, yellowBright: f, blueBright: f, magentaBright: f, cyanBright: f, whiteBright: f, bgBlackBright: f, bgRedBright: f, bgGreenBright: f, bgYellowBright: f, bgBlueBright: f, bgMagentaBright: f, bgCyanBright: f, bgWhiteBright: f };\n};\njt.exports = Ee();\njt.exports.createColors = Ee;\nvar Es = jt.exports;\nconst xs = {}, Cs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: xs\n}, Symbol.toStringTag, { value: \"Module\" })), S = /* @__PURE__ */ bs(Cs);\nlet se = Es, re = S, Ct = class xe extends Error {\n  constructor(t, s, r, i, n, a) {\n    super(t), this.name = \"CssSyntaxError\", this.reason = t, n && (this.file = n), i && (this.source = i), a && (this.plugin = a), typeof s < \"u\" && typeof r < \"u\" && (typeof s == \"number\" ? (this.line = s, this.column = r) : (this.line = s.line, this.column = s.column, this.endLine = r.line, this.endColumn = r.column)), this.setMessage(), Error.captureStackTrace && Error.captureStackTrace(this, xe);\n  }\n  setMessage() {\n    this.message = this.plugin ? this.plugin + \": \" : \"\", this.message += this.file ? this.file : \"<css input>\", typeof this.line < \"u\" && (this.message += \":\" + this.line + \":\" + this.column), this.message += \": \" + this.reason;\n  }\n  showSourceCode(t) {\n    if (!this.source) return \"\";\n    let s = this.source;\n    t == null && (t = se.isColorSupported);\n    let r = (u) => u, i = (u) => u, n = (u) => u;\n    if (t) {\n      let { bold: u, gray: m, red: w } = se.createColors(!0);\n      i = (E) => u(w(E)), r = (E) => m(E), re && (n = (E) => re(E));\n    }\n    let a = s.split(/\\r?\\n/), o = Math.max(this.line - 3, 0), l = Math.min(this.line + 2, a.length), p = String(l).length;\n    return a.slice(o, l).map((u, m) => {\n      let w = o + 1 + m, E = \" \" + (\" \" + w).slice(-p) + \" | \";\n      if (w === this.line) {\n        if (u.length > 160) {\n          let h = 20, v = Math.max(0, this.column - h), N = Math.max(\n            this.column + h,\n            this.endColumn + h\n          ), x = u.slice(v, N), b = r(E.replace(/\\d/g, \" \")) + u.slice(0, Math.min(this.column - 1, h - 1)).replace(/[^\\t]/g, \" \");\n          return i(\">\") + r(E) + n(x) + `\n ` + b + i(\"^\");\n        }\n        let D = r(E.replace(/\\d/g, \" \")) + u.slice(0, this.column - 1).replace(/[^\\t]/g, \" \");\n        return i(\">\") + r(E) + n(u) + `\n ` + D + i(\"^\");\n      }\n      return \" \" + r(E) + n(u);\n    }).join(`\n`);\n  }\n  toString() {\n    let t = this.showSourceCode();\n    return t && (t = `\n\n` + t + `\n`), this.name + \": \" + this.message + t;\n  }\n};\nvar zt = Ct;\nCt.default = Ct;\nconst ie = {\n  after: `\n`,\n  beforeClose: `\n`,\n  beforeComment: `\n`,\n  beforeDecl: `\n`,\n  beforeOpen: \" \",\n  beforeRule: `\n`,\n  colon: \": \",\n  commentLeft: \" \",\n  commentRight: \" \",\n  emptyBody: \"\",\n  indent: \"    \",\n  semicolon: !1\n};\nfunction Rs(e) {\n  return e[0].toUpperCase() + e.slice(1);\n}\nlet Rt = class {\n  constructor(e) {\n    this.builder = e;\n  }\n  atrule(e, t) {\n    let s = \"@\" + e.name, r = e.params ? this.rawValue(e, \"params\") : \"\";\n    if (typeof e.raws.afterName < \"u\" ? s += e.raws.afterName : r && (s += \" \"), e.nodes)\n      this.block(e, s + r);\n    else {\n      let i = (e.raws.between || \"\") + (t ? \";\" : \"\");\n      this.builder(s + r + i, e);\n    }\n  }\n  beforeAfter(e, t) {\n    let s;\n    e.type === \"decl\" ? s = this.raw(e, null, \"beforeDecl\") : e.type === \"comment\" ? s = this.raw(e, null, \"beforeComment\") : t === \"before\" ? s = this.raw(e, null, \"beforeRule\") : s = this.raw(e, null, \"beforeClose\");\n    let r = e.parent, i = 0;\n    for (; r && r.type !== \"root\"; )\n      i += 1, r = r.parent;\n    if (s.includes(`\n`)) {\n      let n = this.raw(e, null, \"indent\");\n      if (n.length)\n        for (let a = 0; a < i; a++) s += n;\n    }\n    return s;\n  }\n  block(e, t) {\n    let s = this.raw(e, \"between\", \"beforeOpen\");\n    this.builder(t + s + \"{\", e, \"start\");\n    let r;\n    e.nodes && e.nodes.length ? (this.body(e), r = this.raw(e, \"after\")) : r = this.raw(e, \"after\", \"emptyBody\"), r && this.builder(r), this.builder(\"}\", e, \"end\");\n  }\n  body(e) {\n    let t = e.nodes.length - 1;\n    for (; t > 0 && e.nodes[t].type === \"comment\"; )\n      t -= 1;\n    let s = this.raw(e, \"semicolon\");\n    for (let r = 0; r < e.nodes.length; r++) {\n      let i = e.nodes[r], n = this.raw(i, \"before\");\n      n && this.builder(n), this.stringify(i, t !== r || s);\n    }\n  }\n  comment(e) {\n    let t = this.raw(e, \"left\", \"commentLeft\"), s = this.raw(e, \"right\", \"commentRight\");\n    this.builder(\"/*\" + t + e.text + s + \"*/\", e);\n  }\n  decl(e, t) {\n    let s = this.raw(e, \"between\", \"colon\"), r = e.prop + s + this.rawValue(e, \"value\");\n    e.important && (r += e.raws.important || \" !important\"), t && (r += \";\"), this.builder(r, e);\n  }\n  document(e) {\n    this.body(e);\n  }\n  raw(e, t, s) {\n    let r;\n    if (s || (s = t), t && (r = e.raws[t], typeof r < \"u\"))\n      return r;\n    let i = e.parent;\n    if (s === \"before\" && (!i || i.type === \"root\" && i.first === e || i && i.type === \"document\"))\n      return \"\";\n    if (!i) return ie[s];\n    let n = e.root();\n    if (n.rawCache || (n.rawCache = {}), typeof n.rawCache[s] < \"u\")\n      return n.rawCache[s];\n    if (s === \"before\" || s === \"after\")\n      return this.beforeAfter(e, s);\n    {\n      let a = \"raw\" + Rs(s);\n      this[a] ? r = this[a](n, e) : n.walk((o) => {\n        if (r = o.raws[t], typeof r < \"u\") return !1;\n      });\n    }\n    return typeof r > \"u\" && (r = ie[s]), n.rawCache[s] = r, r;\n  }\n  rawBeforeClose(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length > 0 && typeof s.raws.after < \"u\")\n        return t = s.raws.after, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawBeforeComment(e, t) {\n    let s;\n    return e.walkComments((r) => {\n      if (typeof r.raws.before < \"u\")\n        return s = r.raws.before, s.includes(`\n`) && (s = s.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof s > \"u\" ? s = this.raw(t, null, \"beforeDecl\") : s && (s = s.replace(/\\S/g, \"\")), s;\n  }\n  rawBeforeDecl(e, t) {\n    let s;\n    return e.walkDecls((r) => {\n      if (typeof r.raws.before < \"u\")\n        return s = r.raws.before, s.includes(`\n`) && (s = s.replace(/[^\\n]+$/, \"\")), !1;\n    }), typeof s > \"u\" ? s = this.raw(t, null, \"beforeRule\") : s && (s = s.replace(/\\S/g, \"\")), s;\n  }\n  rawBeforeOpen(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.type !== \"decl\" && (t = s.raws.between, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawBeforeRule(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && (s.parent !== e || e.first !== s) && typeof s.raws.before < \"u\")\n        return t = s.raws.before, t.includes(`\n`) && (t = t.replace(/[^\\n]+$/, \"\")), !1;\n    }), t && (t = t.replace(/\\S/g, \"\")), t;\n  }\n  rawColon(e) {\n    let t;\n    return e.walkDecls((s) => {\n      if (typeof s.raws.between < \"u\")\n        return t = s.raws.between.replace(/[^\\s:]/g, \"\"), !1;\n    }), t;\n  }\n  rawEmptyBody(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length === 0 && (t = s.raws.after, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawIndent(e) {\n    if (e.raws.indent) return e.raws.indent;\n    let t;\n    return e.walk((s) => {\n      let r = s.parent;\n      if (r && r !== e && r.parent && r.parent === e && typeof s.raws.before < \"u\") {\n        let i = s.raws.before.split(`\n`);\n        return t = i[i.length - 1], t = t.replace(/\\S/g, \"\"), !1;\n      }\n    }), t;\n  }\n  rawSemicolon(e) {\n    let t;\n    return e.walk((s) => {\n      if (s.nodes && s.nodes.length && s.last.type === \"decl\" && (t = s.raws.semicolon, typeof t < \"u\"))\n        return !1;\n    }), t;\n  }\n  rawValue(e, t) {\n    let s = e[t], r = e.raws[t];\n    return r && r.value === s ? r.raw : s;\n  }\n  root(e) {\n    this.body(e), e.raws.after && this.builder(e.raws.after);\n  }\n  rule(e) {\n    this.block(e, this.rawValue(e, \"selector\")), e.raws.ownSemicolon && this.builder(e.raws.ownSemicolon, e, \"end\");\n  }\n  stringify(e, t) {\n    if (!this[e.type])\n      throw new Error(\n        \"Unknown AST node type \" + e.type + \". Maybe you need to change PostCSS stringifier.\"\n      );\n    this[e.type](e, t);\n  }\n};\nvar Ce = Rt;\nRt.default = Rt;\nlet Ns = Ce;\nfunction Nt(e, t) {\n  new Ns(t).stringify(e);\n}\nvar ct = Nt;\nNt.default = Nt;\nvar Y = {};\nY.isClean = Symbol(\"isClean\");\nY.my = Symbol(\"my\");\nlet Ss = zt, vs = Ce, Os = ct, { isClean: F, my: Ds } = Y;\nfunction St(e, t) {\n  let s = new e.constructor();\n  for (let r in e) {\n    if (!Object.prototype.hasOwnProperty.call(e, r) || r === \"proxyCache\") continue;\n    let i = e[r], n = typeof i;\n    r === \"parent\" && n === \"object\" ? t && (s[r] = t) : r === \"source\" ? s[r] = i : Array.isArray(i) ? s[r] = i.map((a) => St(a, s)) : (n === \"object\" && i !== null && (i = St(i)), s[r] = i);\n  }\n  return s;\n}\nfunction B(e, t) {\n  if (t && typeof t.offset < \"u\")\n    return t.offset;\n  let s = 1, r = 1, i = 0;\n  for (let n = 0; n < e.length; n++) {\n    if (r === t.line && s === t.column) {\n      i = n;\n      break;\n    }\n    e[n] === `\n` ? (s = 1, r += 1) : s += 1;\n  }\n  return i;\n}\nlet vt = class {\n  get proxyOf() {\n    return this;\n  }\n  constructor(e = {}) {\n    this.raws = {}, this[F] = !1, this[Ds] = !0;\n    for (let t in e)\n      if (t === \"nodes\") {\n        this.nodes = [];\n        for (let s of e[t])\n          typeof s.clone == \"function\" ? this.append(s.clone()) : this.append(s);\n      } else\n        this[t] = e[t];\n  }\n  addToError(e) {\n    if (e.postcssNode = this, e.stack && this.source && /\\n\\s{4}at /.test(e.stack)) {\n      let t = this.source;\n      e.stack = e.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${t.input.from}:${t.start.line}:${t.start.column}$&`\n      );\n    }\n    return e;\n  }\n  after(e) {\n    return this.parent.insertAfter(this, e), this;\n  }\n  assign(e = {}) {\n    for (let t in e)\n      this[t] = e[t];\n    return this;\n  }\n  before(e) {\n    return this.parent.insertBefore(this, e), this;\n  }\n  cleanRaws(e) {\n    delete this.raws.before, delete this.raws.after, e || delete this.raws.between;\n  }\n  clone(e = {}) {\n    let t = St(this);\n    for (let s in e)\n      t[s] = e[s];\n    return t;\n  }\n  cloneAfter(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertAfter(this, t), t;\n  }\n  cloneBefore(e = {}) {\n    let t = this.clone(e);\n    return this.parent.insertBefore(this, t), t;\n  }\n  error(e, t = {}) {\n    if (this.source) {\n      let { end: s, start: r } = this.rangeBy(t);\n      return this.source.input.error(\n        e,\n        { column: r.column, line: r.line },\n        { column: s.column, line: s.line },\n        t\n      );\n    }\n    return new Ss(e);\n  }\n  getProxyProcessor() {\n    return {\n      get(e, t) {\n        return t === \"proxyOf\" ? e : t === \"root\" ? () => e.root().toProxy() : e[t];\n      },\n      set(e, t, s) {\n        return e[t] === s || (e[t] = s, (t === \"prop\" || t === \"value\" || t === \"name\" || t === \"params\" || t === \"important\" || /* c8 ignore next */\n        t === \"text\") && e.markDirty()), !0;\n      }\n    };\n  }\n  /* c8 ignore next 3 */\n  markClean() {\n    this[F] = !0;\n  }\n  markDirty() {\n    if (this[F]) {\n      this[F] = !1;\n      let e = this;\n      for (; e = e.parent; )\n        e[F] = !1;\n    }\n  }\n  next() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e + 1];\n  }\n  positionBy(e) {\n    let t = this.source.start;\n    if (e.index)\n      t = this.positionInside(e.index);\n    else if (e.word) {\n      let s = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, r = s.slice(\n        B(s, this.source.start),\n        B(s, this.source.end)\n      ).indexOf(e.word);\n      r !== -1 && (t = this.positionInside(r));\n    }\n    return t;\n  }\n  positionInside(e) {\n    let t = this.source.start.column, s = this.source.start.line, r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, i = B(r, this.source.start), n = i + e;\n    for (let a = i; a < n; a++)\n      r[a] === `\n` ? (t = 1, s += 1) : t += 1;\n    return { column: t, line: s };\n  }\n  prev() {\n    if (!this.parent) return;\n    let e = this.parent.index(this);\n    return this.parent.nodes[e - 1];\n  }\n  rangeBy(e) {\n    let t = {\n      column: this.source.start.column,\n      line: this.source.start.line\n    }, s = this.source.end ? {\n      column: this.source.end.column + 1,\n      line: this.source.end.line\n    } : {\n      column: t.column + 1,\n      line: t.line\n    };\n    if (e.word) {\n      let r = \"document\" in this.source.input ? this.source.input.document : this.source.input.css, i = r.slice(\n        B(r, this.source.start),\n        B(r, this.source.end)\n      ).indexOf(e.word);\n      i !== -1 && (t = this.positionInside(i), s = this.positionInside(\n        i + e.word.length\n      ));\n    } else\n      e.start ? t = {\n        column: e.start.column,\n        line: e.start.line\n      } : e.index && (t = this.positionInside(e.index)), e.end ? s = {\n        column: e.end.column,\n        line: e.end.line\n      } : typeof e.endIndex == \"number\" ? s = this.positionInside(e.endIndex) : e.index && (s = this.positionInside(e.index + 1));\n    return (s.line < t.line || s.line === t.line && s.column <= t.column) && (s = { column: t.column + 1, line: t.line }), { end: s, start: t };\n  }\n  raw(e, t) {\n    return new vs().raw(this, e, t);\n  }\n  remove() {\n    return this.parent && this.parent.removeChild(this), this.parent = void 0, this;\n  }\n  replaceWith(...e) {\n    if (this.parent) {\n      let t = this, s = !1;\n      for (let r of e)\n        r === this ? s = !0 : s ? (this.parent.insertAfter(t, r), t = r) : this.parent.insertBefore(t, r);\n      s || this.remove();\n    }\n    return this;\n  }\n  root() {\n    let e = this;\n    for (; e.parent && e.parent.type !== \"document\"; )\n      e = e.parent;\n    return e;\n  }\n  toJSON(e, t) {\n    let s = {}, r = t == null;\n    t = t || /* @__PURE__ */ new Map();\n    let i = 0;\n    for (let n in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, n) || n === \"parent\" || n === \"proxyCache\") continue;\n      let a = this[n];\n      if (Array.isArray(a))\n        s[n] = a.map((o) => typeof o == \"object\" && o.toJSON ? o.toJSON(null, t) : o);\n      else if (typeof a == \"object\" && a.toJSON)\n        s[n] = a.toJSON(null, t);\n      else if (n === \"source\") {\n        let o = t.get(a.input);\n        o == null && (o = i, t.set(a.input, i), i++), s[n] = {\n          end: a.end,\n          inputId: o,\n          start: a.start\n        };\n      } else\n        s[n] = a;\n    }\n    return r && (s.inputs = [...t.keys()].map((n) => n.toJSON())), s;\n  }\n  toProxy() {\n    return this.proxyCache || (this.proxyCache = new Proxy(this, this.getProxyProcessor())), this.proxyCache;\n  }\n  toString(e = Os) {\n    e.stringify && (e = e.stringify);\n    let t = \"\";\n    return e(this, (s) => {\n      t += s;\n    }), t;\n  }\n  warn(e, t, s) {\n    let r = { node: this };\n    for (let i in s) r[i] = s[i];\n    return e.warn(t, r);\n  }\n};\nvar ht = vt;\nvt.default = vt;\nlet Ms = ht, Ot = class extends Ms {\n  constructor(e) {\n    super(e), this.type = \"comment\";\n  }\n};\nvar pt = Ot;\nOt.default = Ot;\nlet ks = ht, Dt = class extends ks {\n  get variable() {\n    return this.prop.startsWith(\"--\") || this.prop[0] === \"$\";\n  }\n  constructor(e) {\n    e && typeof e.value < \"u\" && typeof e.value != \"string\" && (e = { ...e, value: String(e.value) }), super(e), this.type = \"decl\";\n  }\n};\nvar ft = Dt;\nDt.default = Dt;\nlet Re = pt, Ne = ft, As = ht, { isClean: Se, my: ve } = Y, $t, Oe, De, Gt;\nfunction Me(e) {\n  return e.map((t) => (t.nodes && (t.nodes = Me(t.nodes)), delete t.source, t));\n}\nfunction ke(e) {\n  if (e[Se] = !1, e.proxyOf.nodes)\n    for (let t of e.proxyOf.nodes)\n      ke(t);\n}\nlet k = class Ae extends As {\n  get first() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[0];\n  }\n  get last() {\n    if (this.proxyOf.nodes)\n      return this.proxyOf.nodes[this.proxyOf.nodes.length - 1];\n  }\n  append(...t) {\n    for (let s of t) {\n      let r = this.normalize(s, this.last);\n      for (let i of r) this.proxyOf.nodes.push(i);\n    }\n    return this.markDirty(), this;\n  }\n  cleanRaws(t) {\n    if (super.cleanRaws(t), this.nodes)\n      for (let s of this.nodes) s.cleanRaws(t);\n  }\n  each(t) {\n    if (!this.proxyOf.nodes) return;\n    let s = this.getIterator(), r, i;\n    for (; this.indexes[s] < this.proxyOf.nodes.length && (r = this.indexes[s], i = t(this.proxyOf.nodes[r], r), i !== !1); )\n      this.indexes[s] += 1;\n    return delete this.indexes[s], i;\n  }\n  every(t) {\n    return this.nodes.every(t);\n  }\n  getIterator() {\n    this.lastEach || (this.lastEach = 0), this.indexes || (this.indexes = {}), this.lastEach += 1;\n    let t = this.lastEach;\n    return this.indexes[t] = 0, t;\n  }\n  getProxyProcessor() {\n    return {\n      get(t, s) {\n        return s === \"proxyOf\" ? t : t[s] ? s === \"each\" || typeof s == \"string\" && s.startsWith(\"walk\") ? (...r) => t[s](\n          ...r.map((i) => typeof i == \"function\" ? (n, a) => i(n.toProxy(), a) : i)\n        ) : s === \"every\" || s === \"some\" ? (r) => t[s](\n          (i, ...n) => r(i.toProxy(), ...n)\n        ) : s === \"root\" ? () => t.root().toProxy() : s === \"nodes\" ? t.nodes.map((r) => r.toProxy()) : s === \"first\" || s === \"last\" ? t[s].toProxy() : t[s] : t[s];\n      },\n      set(t, s, r) {\n        return t[s] === r || (t[s] = r, (s === \"name\" || s === \"params\" || s === \"selector\") && t.markDirty()), !0;\n      }\n    };\n  }\n  index(t) {\n    return typeof t == \"number\" ? t : (t.proxyOf && (t = t.proxyOf), this.proxyOf.nodes.indexOf(t));\n  }\n  insertAfter(t, s) {\n    let r = this.index(t), i = this.normalize(s, this.proxyOf.nodes[r]).reverse();\n    r = this.index(t);\n    for (let a of i) this.proxyOf.nodes.splice(r + 1, 0, a);\n    let n;\n    for (let a in this.indexes)\n      n = this.indexes[a], r < n && (this.indexes[a] = n + i.length);\n    return this.markDirty(), this;\n  }\n  insertBefore(t, s) {\n    let r = this.index(t), i = r === 0 ? \"prepend\" : !1, n = this.normalize(\n      s,\n      this.proxyOf.nodes[r],\n      i\n    ).reverse();\n    r = this.index(t);\n    for (let o of n) this.proxyOf.nodes.splice(r, 0, o);\n    let a;\n    for (let o in this.indexes)\n      a = this.indexes[o], r <= a && (this.indexes[o] = a + n.length);\n    return this.markDirty(), this;\n  }\n  normalize(t, s) {\n    if (typeof t == \"string\")\n      t = Me(Oe(t).nodes);\n    else if (typeof t > \"u\")\n      t = [];\n    else if (Array.isArray(t)) {\n      t = t.slice(0);\n      for (let r of t)\n        r.parent && r.parent.removeChild(r, \"ignore\");\n    } else if (t.type === \"root\" && this.type !== \"document\") {\n      t = t.nodes.slice(0);\n      for (let r of t)\n        r.parent && r.parent.removeChild(r, \"ignore\");\n    } else if (t.type)\n      t = [t];\n    else if (t.prop) {\n      if (typeof t.value > \"u\")\n        throw new Error(\"Value field is missed in node creation\");\n      typeof t.value != \"string\" && (t.value = String(t.value)), t = [new Ne(t)];\n    } else if (t.selector || t.selectors)\n      t = [new Gt(t)];\n    else if (t.name)\n      t = [new $t(t)];\n    else if (t.text)\n      t = [new Re(t)];\n    else\n      throw new Error(\"Unknown node type in node creation\");\n    return t.map((r) => (r[ve] || Ae.rebuild(r), r = r.proxyOf, r.parent && r.parent.removeChild(r), r[Se] && ke(r), r.raws || (r.raws = {}), typeof r.raws.before > \"u\" && s && typeof s.raws.before < \"u\" && (r.raws.before = s.raws.before.replace(/\\S/g, \"\")), r.parent = this.proxyOf, r));\n  }\n  prepend(...t) {\n    t = t.reverse();\n    for (let s of t) {\n      let r = this.normalize(s, this.first, \"prepend\").reverse();\n      for (let i of r) this.proxyOf.nodes.unshift(i);\n      for (let i in this.indexes)\n        this.indexes[i] = this.indexes[i] + r.length;\n    }\n    return this.markDirty(), this;\n  }\n  push(t) {\n    return t.parent = this, this.proxyOf.nodes.push(t), this;\n  }\n  removeAll() {\n    for (let t of this.proxyOf.nodes) t.parent = void 0;\n    return this.proxyOf.nodes = [], this.markDirty(), this;\n  }\n  removeChild(t) {\n    t = this.index(t), this.proxyOf.nodes[t].parent = void 0, this.proxyOf.nodes.splice(t, 1);\n    let s;\n    for (let r in this.indexes)\n      s = this.indexes[r], s >= t && (this.indexes[r] = s - 1);\n    return this.markDirty(), this;\n  }\n  replaceValues(t, s, r) {\n    return r || (r = s, s = {}), this.walkDecls((i) => {\n      s.props && !s.props.includes(i.prop) || s.fast && !i.value.includes(s.fast) || (i.value = i.value.replace(t, r));\n    }), this.markDirty(), this;\n  }\n  some(t) {\n    return this.nodes.some(t);\n  }\n  walk(t) {\n    return this.each((s, r) => {\n      let i;\n      try {\n        i = t(s, r);\n      } catch (n) {\n        throw s.addToError(n);\n      }\n      return i !== !1 && s.walk && (i = s.walk(t)), i;\n    });\n  }\n  walkAtRules(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"atrule\" && t.test(r.name))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"atrule\" && r.name === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"atrule\")\n        return s(r, i);\n    }));\n  }\n  walkComments(t) {\n    return this.walk((s, r) => {\n      if (s.type === \"comment\")\n        return t(s, r);\n    });\n  }\n  walkDecls(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"decl\" && t.test(r.prop))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"decl\" && r.prop === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"decl\")\n        return s(r, i);\n    }));\n  }\n  walkRules(t, s) {\n    return s ? t instanceof RegExp ? this.walk((r, i) => {\n      if (r.type === \"rule\" && t.test(r.selector))\n        return s(r, i);\n    }) : this.walk((r, i) => {\n      if (r.type === \"rule\" && r.selector === t)\n        return s(r, i);\n    }) : (s = t, this.walk((r, i) => {\n      if (r.type === \"rule\")\n        return s(r, i);\n    }));\n  }\n};\nk.registerParse = (e) => {\n  Oe = e;\n};\nk.registerRule = (e) => {\n  Gt = e;\n};\nk.registerAtRule = (e) => {\n  $t = e;\n};\nk.registerRoot = (e) => {\n  De = e;\n};\nvar T = k;\nk.default = k;\nk.rebuild = (e) => {\n  e.type === \"atrule\" ? Object.setPrototypeOf(e, $t.prototype) : e.type === \"rule\" ? Object.setPrototypeOf(e, Gt.prototype) : e.type === \"decl\" ? Object.setPrototypeOf(e, Ne.prototype) : e.type === \"comment\" ? Object.setPrototypeOf(e, Re.prototype) : e.type === \"root\" && Object.setPrototypeOf(e, De.prototype), e[ve] = !0, e.nodes && e.nodes.forEach((t) => {\n    k.rebuild(t);\n  });\n};\nlet Te = T, ot = class extends Te {\n  constructor(e) {\n    super(e), this.type = \"atrule\";\n  }\n  append(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.append(...e);\n  }\n  prepend(...e) {\n    return this.proxyOf.nodes || (this.nodes = []), super.prepend(...e);\n  }\n};\nvar Wt = ot;\not.default = ot;\nTe.registerAtRule(ot);\nlet Ts = T, Ie, _e, $ = class extends Ts {\n  constructor(e) {\n    super({ type: \"document\", ...e }), this.nodes || (this.nodes = []);\n  }\n  toResult(e = {}) {\n    return new Ie(new _e(), this, e).stringify();\n  }\n};\n$.registerLazyResult = (e) => {\n  Ie = e;\n};\n$.registerProcessor = (e) => {\n  _e = e;\n};\nvar Vt = $;\n$.default = $;\nlet Is = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\", _s = (e = 21) => {\n  let t = \"\", s = e | 0;\n  for (; s--; )\n    t += Is[Math.random() * 64 | 0];\n  return t;\n};\nvar Ps = { nanoid: _s };\nlet { existsSync: Us, readFileSync: Ls } = S, { dirname: yt, join: Fs } = S, { SourceMapConsumer: ne, SourceMapGenerator: oe } = S;\nfunction Bs(e) {\n  return Buffer ? Buffer.from(e, \"base64\").toString() : window.atob(e);\n}\nlet Mt = class {\n  constructor(e, t) {\n    if (t.map === !1) return;\n    this.loadAnnotation(e), this.inline = this.startWith(this.annotation, \"data:\");\n    let s = t.map ? t.map.prev : void 0, r = this.loadMap(t.from, s);\n    !this.mapFile && t.from && (this.mapFile = t.from), this.mapFile && (this.root = yt(this.mapFile)), r && (this.text = r);\n  }\n  consumer() {\n    return this.consumerCache || (this.consumerCache = new ne(this.text)), this.consumerCache;\n  }\n  decodeInline(e) {\n    let t = /^data:application\\/json;charset=utf-?8;base64,/, s = /^data:application\\/json;base64,/, r = /^data:application\\/json;charset=utf-?8,/, i = /^data:application\\/json,/, n = e.match(r) || e.match(i);\n    if (n)\n      return decodeURIComponent(e.substr(n[0].length));\n    let a = e.match(t) || e.match(s);\n    if (a)\n      return Bs(e.substr(a[0].length));\n    let o = e.match(/data:application\\/json;([^,]+),/)[1];\n    throw new Error(\"Unsupported source map encoding \" + o);\n  }\n  getAnnotationURL(e) {\n    return e.replace(/^\\/\\*\\s*# sourceMappingURL=/, \"\").trim();\n  }\n  isMap(e) {\n    return typeof e != \"object\" ? !1 : typeof e.mappings == \"string\" || typeof e._mappings == \"string\" || Array.isArray(e.sections);\n  }\n  loadAnnotation(e) {\n    let t = e.match(/\\/\\*\\s*# sourceMappingURL=/g);\n    if (!t) return;\n    let s = e.lastIndexOf(t.pop()), r = e.indexOf(\"*/\", s);\n    s > -1 && r > -1 && (this.annotation = this.getAnnotationURL(e.substring(s, r)));\n  }\n  loadFile(e) {\n    if (this.root = yt(e), Us(e))\n      return this.mapFile = e, Ls(e, \"utf-8\").toString().trim();\n  }\n  loadMap(e, t) {\n    if (t === !1) return !1;\n    if (t) {\n      if (typeof t == \"string\")\n        return t;\n      if (typeof t == \"function\") {\n        let s = t(e);\n        if (s) {\n          let r = this.loadFile(s);\n          if (!r)\n            throw new Error(\n              \"Unable to load previous source map: \" + s.toString()\n            );\n          return r;\n        }\n      } else {\n        if (t instanceof ne)\n          return oe.fromSourceMap(t).toString();\n        if (t instanceof oe)\n          return t.toString();\n        if (this.isMap(t))\n          return JSON.stringify(t);\n        throw new Error(\n          \"Unsupported previous source map format: \" + t.toString()\n        );\n      }\n    } else {\n      if (this.inline)\n        return this.decodeInline(this.annotation);\n      if (this.annotation) {\n        let s = this.annotation;\n        return e && (s = Fs(yt(e), s)), this.loadFile(s);\n      }\n    }\n  }\n  startWith(e, t) {\n    return e ? e.substr(0, t.length) === t : !1;\n  }\n  withContent() {\n    return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n  }\n};\nvar Pe = Mt;\nMt.default = Mt;\nlet { nanoid: js } = Ps, { isAbsolute: kt, resolve: At } = S, { SourceMapConsumer: zs, SourceMapGenerator: $s } = S, { fileURLToPath: ae, pathToFileURL: X } = S, le = zt, Gs = Pe, bt = S, Et = Symbol(\"fromOffsetCache\"), Ws = !!(zs && $s), ue = !!(At && kt), at = class {\n  get from() {\n    return this.file || this.id;\n  }\n  constructor(e, t = {}) {\n    if (e === null || typeof e > \"u\" || typeof e == \"object\" && !e.toString)\n      throw new Error(`PostCSS received ${e} instead of CSS string`);\n    if (this.css = e.toString(), this.css[0] === \"\\uFEFF\" || this.css[0] === \"￾\" ? (this.hasBOM = !0, this.css = this.css.slice(1)) : this.hasBOM = !1, this.document = this.css, t.document && (this.document = t.document.toString()), t.from && (!ue || /^\\w+:\\/\\//.test(t.from) || kt(t.from) ? this.file = t.from : this.file = At(t.from)), ue && Ws) {\n      let s = new Gs(this.css, t);\n      if (s.text) {\n        this.map = s;\n        let r = s.consumer().file;\n        !this.file && r && (this.file = this.mapResolve(r));\n      }\n    }\n    this.file || (this.id = \"<input css \" + js(6) + \">\"), this.map && (this.map.file = this.from);\n  }\n  error(e, t, s, r = {}) {\n    let i, n, a;\n    if (t && typeof t == \"object\") {\n      let l = t, p = s;\n      if (typeof l.offset == \"number\") {\n        let u = this.fromOffset(l.offset);\n        t = u.line, s = u.col;\n      } else\n        t = l.line, s = l.column;\n      if (typeof p.offset == \"number\") {\n        let u = this.fromOffset(p.offset);\n        n = u.line, i = u.col;\n      } else\n        n = p.line, i = p.column;\n    } else if (!s) {\n      let l = this.fromOffset(t);\n      t = l.line, s = l.col;\n    }\n    let o = this.origin(t, s, n, i);\n    return o ? a = new le(\n      e,\n      o.endLine === void 0 ? o.line : { column: o.column, line: o.line },\n      o.endLine === void 0 ? o.column : { column: o.endColumn, line: o.endLine },\n      o.source,\n      o.file,\n      r.plugin\n    ) : a = new le(\n      e,\n      n === void 0 ? t : { column: s, line: t },\n      n === void 0 ? s : { column: i, line: n },\n      this.css,\n      this.file,\n      r.plugin\n    ), a.input = { column: s, endColumn: i, endLine: n, line: t, source: this.css }, this.file && (X && (a.input.url = X(this.file).toString()), a.input.file = this.file), a;\n  }\n  fromOffset(e) {\n    let t, s;\n    if (this[Et])\n      s = this[Et];\n    else {\n      let i = this.css.split(`\n`);\n      s = new Array(i.length);\n      let n = 0;\n      for (let a = 0, o = i.length; a < o; a++)\n        s[a] = n, n += i[a].length + 1;\n      this[Et] = s;\n    }\n    t = s[s.length - 1];\n    let r = 0;\n    if (e >= t)\n      r = s.length - 1;\n    else {\n      let i = s.length - 2, n;\n      for (; r < i; )\n        if (n = r + (i - r >> 1), e < s[n])\n          i = n - 1;\n        else if (e >= s[n + 1])\n          r = n + 1;\n        else {\n          r = n;\n          break;\n        }\n    }\n    return {\n      col: e - s[r] + 1,\n      line: r + 1\n    };\n  }\n  mapResolve(e) {\n    return /^\\w+:\\/\\//.test(e) ? e : At(this.map.consumer().sourceRoot || this.map.root || \".\", e);\n  }\n  origin(e, t, s, r) {\n    if (!this.map) return !1;\n    let i = this.map.consumer(), n = i.originalPositionFor({ column: t, line: e });\n    if (!n.source) return !1;\n    let a;\n    typeof s == \"number\" && (a = i.originalPositionFor({ column: r, line: s }));\n    let o;\n    kt(n.source) ? o = X(n.source) : o = new URL(\n      n.source,\n      this.map.consumer().sourceRoot || X(this.map.mapFile)\n    );\n    let l = {\n      column: n.column,\n      endColumn: a && a.column,\n      endLine: a && a.line,\n      line: n.line,\n      url: o.toString()\n    };\n    if (o.protocol === \"file:\")\n      if (ae)\n        l.file = ae(o);\n      else\n        throw new Error(\"file: protocol is not available in this PostCSS build\");\n    let p = i.sourceContentFor(n.source);\n    return p && (l.source = p), l;\n  }\n  toJSON() {\n    let e = {};\n    for (let t of [\"hasBOM\", \"css\", \"file\", \"id\"])\n      this[t] != null && (e[t] = this[t]);\n    return this.map && (e.map = { ...this.map }, e.map.consumerCache && (e.map.consumerCache = void 0)), e;\n  }\n};\nvar dt = at;\nat.default = at;\nbt && bt.registerInput && bt.registerInput(at);\nlet Ue = T, Le, Fe, P = class extends Ue {\n  constructor(e) {\n    super(e), this.type = \"root\", this.nodes || (this.nodes = []);\n  }\n  normalize(e, t, s) {\n    let r = super.normalize(e);\n    if (t) {\n      if (s === \"prepend\")\n        this.nodes.length > 1 ? t.raws.before = this.nodes[1].raws.before : delete t.raws.before;\n      else if (this.first !== t)\n        for (let i of r)\n          i.raws.before = t.raws.before;\n    }\n    return r;\n  }\n  removeChild(e, t) {\n    let s = this.index(e);\n    return !t && s === 0 && this.nodes.length > 1 && (this.nodes[1].raws.before = this.nodes[s].raws.before), super.removeChild(e);\n  }\n  toResult(e = {}) {\n    return new Le(new Fe(), this, e).stringify();\n  }\n};\nP.registerLazyResult = (e) => {\n  Le = e;\n};\nP.registerProcessor = (e) => {\n  Fe = e;\n};\nvar J = P;\nP.default = P;\nUe.registerRoot(P);\nlet G = {\n  comma(e) {\n    return G.split(e, [\",\"], !0);\n  },\n  space(e) {\n    let t = [\" \", `\n`, \"\t\"];\n    return G.split(e, t);\n  },\n  split(e, t, s) {\n    let r = [], i = \"\", n = !1, a = 0, o = !1, l = \"\", p = !1;\n    for (let u of e)\n      p ? p = !1 : u === \"\\\\\" ? p = !0 : o ? u === l && (o = !1) : u === '\"' || u === \"'\" ? (o = !0, l = u) : u === \"(\" ? a += 1 : u === \")\" ? a > 0 && (a -= 1) : a === 0 && t.includes(u) && (n = !0), n ? (i !== \"\" && r.push(i.trim()), i = \"\", n = !1) : i += u;\n    return (s || i !== \"\") && r.push(i.trim()), r;\n  }\n};\nvar Be = G;\nG.default = G;\nlet je = T, Vs = Be, lt = class extends je {\n  get selectors() {\n    return Vs.comma(this.selector);\n  }\n  set selectors(e) {\n    let t = this.selector ? this.selector.match(/,\\s*/) : null, s = t ? t[0] : \",\" + this.raw(\"between\", \"beforeOpen\");\n    this.selector = e.join(s);\n  }\n  constructor(e) {\n    super(e), this.type = \"rule\", this.nodes || (this.nodes = []);\n  }\n};\nvar Yt = lt;\nlt.default = lt;\nje.registerRule(lt);\nlet Ys = Wt, Js = pt, Hs = ft, Xs = dt, Zs = Pe, qs = J, Ks = Yt;\nfunction W(e, t) {\n  if (Array.isArray(e)) return e.map((i) => W(i));\n  let { inputs: s, ...r } = e;\n  if (s) {\n    t = [];\n    for (let i of s) {\n      let n = { ...i, __proto__: Xs.prototype };\n      n.map && (n.map = {\n        ...n.map,\n        __proto__: Zs.prototype\n      }), t.push(n);\n    }\n  }\n  if (r.nodes && (r.nodes = e.nodes.map((i) => W(i, t))), r.source) {\n    let { inputId: i, ...n } = r.source;\n    r.source = n, i != null && (r.source.input = t[i]);\n  }\n  if (r.type === \"root\")\n    return new qs(r);\n  if (r.type === \"decl\")\n    return new Hs(r);\n  if (r.type === \"rule\")\n    return new Ks(r);\n  if (r.type === \"comment\")\n    return new Js(r);\n  if (r.type === \"atrule\")\n    return new Ys(r);\n  throw new Error(\"Unknown node type: \" + e.type);\n}\nvar Qs = W;\nW.default = W;\nlet { dirname: rt, relative: ze, resolve: $e, sep: Ge } = S, { SourceMapConsumer: We, SourceMapGenerator: it } = S, { pathToFileURL: ce } = S, tr = dt, er = !!(We && it), sr = !!(rt && $e && ze && Ge), rr = class {\n  constructor(e, t, s, r) {\n    this.stringify = e, this.mapOpts = s.map || {}, this.root = t, this.opts = s, this.css = r, this.originalCSS = r, this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute, this.memoizedFileURLs = /* @__PURE__ */ new Map(), this.memoizedPaths = /* @__PURE__ */ new Map(), this.memoizedURLs = /* @__PURE__ */ new Map();\n  }\n  addAnnotation() {\n    let e;\n    this.isInline() ? e = \"data:application/json;base64,\" + this.toBase64(this.map.toString()) : typeof this.mapOpts.annotation == \"string\" ? e = this.mapOpts.annotation : typeof this.mapOpts.annotation == \"function\" ? e = this.mapOpts.annotation(this.opts.to, this.root) : e = this.outputFile() + \".map\";\n    let t = `\n`;\n    this.css.includes(`\\r\n`) && (t = `\\r\n`), this.css += t + \"/*# sourceMappingURL=\" + e + \" */\";\n  }\n  applyPrevMaps() {\n    for (let e of this.previous()) {\n      let t = this.toUrl(this.path(e.file)), s = e.root || rt(e.file), r;\n      this.mapOpts.sourcesContent === !1 ? (r = new We(e.text), r.sourcesContent && (r.sourcesContent = null)) : r = e.consumer(), this.map.applySourceMap(r, t, this.toUrl(this.path(s)));\n    }\n  }\n  clearAnnotation() {\n    if (this.mapOpts.annotation !== !1)\n      if (this.root) {\n        let e;\n        for (let t = this.root.nodes.length - 1; t >= 0; t--)\n          e = this.root.nodes[t], e.type === \"comment\" && e.text.startsWith(\"# sourceMappingURL=\") && this.root.removeChild(t);\n      } else this.css && (this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, \"\"));\n  }\n  generate() {\n    if (this.clearAnnotation(), sr && er && this.isMap())\n      return this.generateMap();\n    {\n      let e = \"\";\n      return this.stringify(this.root, (t) => {\n        e += t;\n      }), [e];\n    }\n  }\n  generateMap() {\n    if (this.root)\n      this.generateString();\n    else if (this.previous().length === 1) {\n      let e = this.previous()[0].consumer();\n      e.file = this.outputFile(), this.map = it.fromSourceMap(e, {\n        ignoreInvalidMapping: !0\n      });\n    } else\n      this.map = new it({\n        file: this.outputFile(),\n        ignoreInvalidMapping: !0\n      }), this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\"\n      });\n    return this.isSourcesContent() && this.setSourcesContent(), this.root && this.previous().length > 0 && this.applyPrevMaps(), this.isAnnotation() && this.addAnnotation(), this.isInline() ? [this.css] : [this.css, this.map];\n  }\n  generateString() {\n    this.css = \"\", this.map = new it({\n      file: this.outputFile(),\n      ignoreInvalidMapping: !0\n    });\n    let e = 1, t = 1, s = \"<no source>\", r = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: \"\"\n    }, i, n;\n    this.stringify(this.root, (a, o, l) => {\n      if (this.css += a, o && l !== \"end\" && (r.generated.line = e, r.generated.column = t - 1, o.source && o.source.start ? (r.source = this.sourcePath(o), r.original.line = o.source.start.line, r.original.column = o.source.start.column - 1, this.map.addMapping(r)) : (r.source = s, r.original.line = 1, r.original.column = 0, this.map.addMapping(r))), n = a.match(/\\n/g), n ? (e += n.length, i = a.lastIndexOf(`\n`), t = a.length - i) : t += a.length, o && l !== \"start\") {\n        let p = o.parent || { raws: {} };\n        (!(o.type === \"decl\" || o.type === \"atrule\" && !o.nodes) || o !== p.last || p.raws.semicolon) && (o.source && o.source.end ? (r.source = this.sourcePath(o), r.original.line = o.source.end.line, r.original.column = o.source.end.column - 1, r.generated.line = e, r.generated.column = t - 2, this.map.addMapping(r)) : (r.source = s, r.original.line = 1, r.original.column = 0, r.generated.line = e, r.generated.column = t - 1, this.map.addMapping(r)));\n      }\n    });\n  }\n  isAnnotation() {\n    return this.isInline() ? !0 : typeof this.mapOpts.annotation < \"u\" ? this.mapOpts.annotation : this.previous().length ? this.previous().some((e) => e.annotation) : !0;\n  }\n  isInline() {\n    if (typeof this.mapOpts.inline < \"u\")\n      return this.mapOpts.inline;\n    let e = this.mapOpts.annotation;\n    return typeof e < \"u\" && e !== !0 ? !1 : this.previous().length ? this.previous().some((t) => t.inline) : !0;\n  }\n  isMap() {\n    return typeof this.opts.map < \"u\" ? !!this.opts.map : this.previous().length > 0;\n  }\n  isSourcesContent() {\n    return typeof this.mapOpts.sourcesContent < \"u\" ? this.mapOpts.sourcesContent : this.previous().length ? this.previous().some((e) => e.withContent()) : !0;\n  }\n  outputFile() {\n    return this.opts.to ? this.path(this.opts.to) : this.opts.from ? this.path(this.opts.from) : \"to.css\";\n  }\n  path(e) {\n    if (this.mapOpts.absolute || e.charCodeAt(0) === 60 || /^\\w+:\\/\\//.test(e)) return e;\n    let t = this.memoizedPaths.get(e);\n    if (t) return t;\n    let s = this.opts.to ? rt(this.opts.to) : \".\";\n    typeof this.mapOpts.annotation == \"string\" && (s = rt($e(s, this.mapOpts.annotation)));\n    let r = ze(s, e);\n    return this.memoizedPaths.set(e, r), r;\n  }\n  previous() {\n    if (!this.previousMaps)\n      if (this.previousMaps = [], this.root)\n        this.root.walk((e) => {\n          if (e.source && e.source.input.map) {\n            let t = e.source.input.map;\n            this.previousMaps.includes(t) || this.previousMaps.push(t);\n          }\n        });\n      else {\n        let e = new tr(this.originalCSS, this.opts);\n        e.map && this.previousMaps.push(e.map);\n      }\n    return this.previousMaps;\n  }\n  setSourcesContent() {\n    let e = {};\n    if (this.root)\n      this.root.walk((t) => {\n        if (t.source) {\n          let s = t.source.input.from;\n          if (s && !e[s]) {\n            e[s] = !0;\n            let r = this.usesFileUrls ? this.toFileUrl(s) : this.toUrl(this.path(s));\n            this.map.setSourceContent(r, t.source.input.css);\n          }\n        }\n      });\n    else if (this.css) {\n      let t = this.opts.from ? this.toUrl(this.path(this.opts.from)) : \"<no source>\";\n      this.map.setSourceContent(t, this.css);\n    }\n  }\n  sourcePath(e) {\n    return this.mapOpts.from ? this.toUrl(this.mapOpts.from) : this.usesFileUrls ? this.toFileUrl(e.source.input.from) : this.toUrl(this.path(e.source.input.from));\n  }\n  toBase64(e) {\n    return Buffer ? Buffer.from(e).toString(\"base64\") : window.btoa(unescape(encodeURIComponent(e)));\n  }\n  toFileUrl(e) {\n    let t = this.memoizedFileURLs.get(e);\n    if (t) return t;\n    if (ce) {\n      let s = ce(e).toString();\n      return this.memoizedFileURLs.set(e, s), s;\n    } else\n      throw new Error(\n        \"`map.absolute` option is not available in this PostCSS build\"\n      );\n  }\n  toUrl(e) {\n    let t = this.memoizedURLs.get(e);\n    if (t) return t;\n    Ge === \"\\\\\" && (e = e.replace(/\\\\/g, \"/\"));\n    let s = encodeURI(e).replace(/[#?]/g, encodeURIComponent);\n    return this.memoizedURLs.set(e, s), s;\n  }\n};\nvar Ve = rr;\nconst xt = 39, he = 34, Z = 92, pe = 47, q = 10, j = 32, K = 12, Q = 9, tt = 13, ir = 91, nr = 93, or = 40, ar = 41, lr = 123, ur = 125, cr = 59, hr = 42, pr = 58, fr = 64, et = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g, st = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g, dr = /.[\\r\\n\"'(/\\\\]/, fe = /[\\da-f]/i;\nvar mr = function(e, t = {}) {\n  let s = e.css.valueOf(), r = t.ignoreErrors, i, n, a, o, l, p, u, m, w, E, D = s.length, h = 0, v = [], N = [];\n  function x() {\n    return h;\n  }\n  function b(I) {\n    throw e.error(\"Unclosed \" + I, h);\n  }\n  function M() {\n    return N.length === 0 && h >= D;\n  }\n  function gt(I) {\n    if (N.length) return N.pop();\n    if (h >= D) return;\n    let wt = I ? I.ignoreUnclosed : !1;\n    switch (i = s.charCodeAt(h), i) {\n      case q:\n      case j:\n      case Q:\n      case tt:\n      case K: {\n        o = h;\n        do\n          o += 1, i = s.charCodeAt(o);\n        while (i === j || i === q || i === Q || i === tt || i === K);\n        p = [\"space\", s.slice(h, o)], h = o - 1;\n        break;\n      }\n      case ir:\n      case nr:\n      case lr:\n      case ur:\n      case pr:\n      case cr:\n      case ar: {\n        let te = String.fromCharCode(i);\n        p = [te, te, h];\n        break;\n      }\n      case or: {\n        if (E = v.length ? v.pop()[1] : \"\", w = s.charCodeAt(h + 1), E === \"url\" && w !== xt && w !== he && w !== j && w !== q && w !== Q && w !== K && w !== tt) {\n          o = h;\n          do {\n            if (u = !1, o = s.indexOf(\")\", o + 1), o === -1)\n              if (r || wt) {\n                o = h;\n                break;\n              } else\n                b(\"bracket\");\n            for (m = o; s.charCodeAt(m - 1) === Z; )\n              m -= 1, u = !u;\n          } while (u);\n          p = [\"brackets\", s.slice(h, o + 1), h, o], h = o;\n        } else\n          o = s.indexOf(\")\", h + 1), n = s.slice(h, o + 1), o === -1 || dr.test(n) ? p = [\"(\", \"(\", h] : (p = [\"brackets\", n, h, o], h = o);\n        break;\n      }\n      case xt:\n      case he: {\n        l = i === xt ? \"'\" : '\"', o = h;\n        do {\n          if (u = !1, o = s.indexOf(l, o + 1), o === -1)\n            if (r || wt) {\n              o = h + 1;\n              break;\n            } else\n              b(\"string\");\n          for (m = o; s.charCodeAt(m - 1) === Z; )\n            m -= 1, u = !u;\n        } while (u);\n        p = [\"string\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      case fr: {\n        et.lastIndex = h + 1, et.test(s), et.lastIndex === 0 ? o = s.length - 1 : o = et.lastIndex - 2, p = [\"at-word\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      case Z: {\n        for (o = h, a = !0; s.charCodeAt(o + 1) === Z; )\n          o += 1, a = !a;\n        if (i = s.charCodeAt(o + 1), a && i !== pe && i !== j && i !== q && i !== Q && i !== tt && i !== K && (o += 1, fe.test(s.charAt(o)))) {\n          for (; fe.test(s.charAt(o + 1)); )\n            o += 1;\n          s.charCodeAt(o + 1) === j && (o += 1);\n        }\n        p = [\"word\", s.slice(h, o + 1), h, o], h = o;\n        break;\n      }\n      default: {\n        i === pe && s.charCodeAt(h + 1) === hr ? (o = s.indexOf(\"*/\", h + 2) + 1, o === 0 && (r || wt ? o = s.length : b(\"comment\")), p = [\"comment\", s.slice(h, o + 1), h, o], h = o) : (st.lastIndex = h + 1, st.test(s), st.lastIndex === 0 ? o = s.length - 1 : o = st.lastIndex - 2, p = [\"word\", s.slice(h, o + 1), h, o], v.push(p), h = o);\n        break;\n      }\n    }\n    return h++, p;\n  }\n  function hs(I) {\n    N.push(I);\n  }\n  return {\n    back: hs,\n    endOfFile: M,\n    nextToken: gt,\n    position: x\n  };\n};\nlet gr = Wt, wr = pt, yr = ft, br = J, de = Yt, Er = mr;\nconst me = {\n  empty: !0,\n  space: !0\n};\nfunction xr(e) {\n  for (let t = e.length - 1; t >= 0; t--) {\n    let s = e[t], r = s[3] || s[2];\n    if (r) return r;\n  }\n}\nlet Cr = class {\n  constructor(e) {\n    this.input = e, this.root = new br(), this.current = this.root, this.spaces = \"\", this.semicolon = !1, this.createTokenizer(), this.root.source = { input: e, start: { column: 1, line: 1, offset: 0 } };\n  }\n  atrule(e) {\n    let t = new gr();\n    t.name = e[1].slice(1), t.name === \"\" && this.unnamedAtrule(t, e), this.init(t, e[2]);\n    let s, r, i, n = !1, a = !1, o = [], l = [];\n    for (; !this.tokenizer.endOfFile(); ) {\n      if (e = this.tokenizer.nextToken(), s = e[0], s === \"(\" || s === \"[\" ? l.push(s === \"(\" ? \")\" : \"]\") : s === \"{\" && l.length > 0 ? l.push(\"}\") : s === l[l.length - 1] && l.pop(), l.length === 0)\n        if (s === \";\") {\n          t.source.end = this.getPosition(e[2]), t.source.end.offset++, this.semicolon = !0;\n          break;\n        } else if (s === \"{\") {\n          a = !0;\n          break;\n        } else if (s === \"}\") {\n          if (o.length > 0) {\n            for (i = o.length - 1, r = o[i]; r && r[0] === \"space\"; )\n              r = o[--i];\n            r && (t.source.end = this.getPosition(r[3] || r[2]), t.source.end.offset++);\n          }\n          this.end(e);\n          break;\n        } else\n          o.push(e);\n      else\n        o.push(e);\n      if (this.tokenizer.endOfFile()) {\n        n = !0;\n        break;\n      }\n    }\n    t.raws.between = this.spacesAndCommentsFromEnd(o), o.length ? (t.raws.afterName = this.spacesAndCommentsFromStart(o), this.raw(t, \"params\", o), n && (e = o[o.length - 1], t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++, this.spaces = t.raws.between, t.raws.between = \"\")) : (t.raws.afterName = \"\", t.params = \"\"), a && (t.nodes = [], this.current = t);\n  }\n  checkMissedSemicolon(e) {\n    let t = this.colon(e);\n    if (t === !1) return;\n    let s = 0, r;\n    for (let i = t - 1; i >= 0 && (r = e[i], !(r[0] !== \"space\" && (s += 1, s === 2))); i--)\n      ;\n    throw this.input.error(\n      \"Missed semicolon\",\n      r[0] === \"word\" ? r[3] + 1 : r[2]\n    );\n  }\n  colon(e) {\n    let t = 0, s, r, i;\n    for (let [n, a] of e.entries()) {\n      if (r = a, i = r[0], i === \"(\" && (t += 1), i === \")\" && (t -= 1), t === 0 && i === \":\")\n        if (!s)\n          this.doubleColon(r);\n        else {\n          if (s[0] === \"word\" && s[1] === \"progid\")\n            continue;\n          return n;\n        }\n      s = r;\n    }\n    return !1;\n  }\n  comment(e) {\n    let t = new wr();\n    this.init(t, e[2]), t.source.end = this.getPosition(e[3] || e[2]), t.source.end.offset++;\n    let s = e[1].slice(2, -2);\n    if (/^\\s*$/.test(s))\n      t.text = \"\", t.raws.left = s, t.raws.right = \"\";\n    else {\n      let r = s.match(/^(\\s*)([^]*\\S)(\\s*)$/);\n      t.text = r[2], t.raws.left = r[1], t.raws.right = r[3];\n    }\n  }\n  createTokenizer() {\n    this.tokenizer = Er(this.input);\n  }\n  decl(e, t) {\n    let s = new yr();\n    this.init(s, e[0][2]);\n    let r = e[e.length - 1];\n    for (r[0] === \";\" && (this.semicolon = !0, e.pop()), s.source.end = this.getPosition(\n      r[3] || r[2] || xr(e)\n    ), s.source.end.offset++; e[0][0] !== \"word\"; )\n      e.length === 1 && this.unknownWord(e), s.raws.before += e.shift()[1];\n    for (s.source.start = this.getPosition(e[0][2]), s.prop = \"\"; e.length; ) {\n      let o = e[0][0];\n      if (o === \":\" || o === \"space\" || o === \"comment\")\n        break;\n      s.prop += e.shift()[1];\n    }\n    s.raws.between = \"\";\n    let i;\n    for (; e.length; )\n      if (i = e.shift(), i[0] === \":\") {\n        s.raws.between += i[1];\n        break;\n      } else\n        i[0] === \"word\" && /\\w/.test(i[1]) && this.unknownWord([i]), s.raws.between += i[1];\n    (s.prop[0] === \"_\" || s.prop[0] === \"*\") && (s.raws.before += s.prop[0], s.prop = s.prop.slice(1));\n    let n = [], a;\n    for (; e.length && (a = e[0][0], !(a !== \"space\" && a !== \"comment\")); )\n      n.push(e.shift());\n    this.precheckMissedSemicolon(e);\n    for (let o = e.length - 1; o >= 0; o--) {\n      if (i = e[o], i[1].toLowerCase() === \"!important\") {\n        s.important = !0;\n        let l = this.stringFrom(e, o);\n        l = this.spacesFromEnd(e) + l, l !== \" !important\" && (s.raws.important = l);\n        break;\n      } else if (i[1].toLowerCase() === \"important\") {\n        let l = e.slice(0), p = \"\";\n        for (let u = o; u > 0; u--) {\n          let m = l[u][0];\n          if (p.trim().startsWith(\"!\") && m !== \"space\")\n            break;\n          p = l.pop()[1] + p;\n        }\n        p.trim().startsWith(\"!\") && (s.important = !0, s.raws.important = p, e = l);\n      }\n      if (i[0] !== \"space\" && i[0] !== \"comment\")\n        break;\n    }\n    e.some((o) => o[0] !== \"space\" && o[0] !== \"comment\") && (s.raws.between += n.map((o) => o[1]).join(\"\"), n = []), this.raw(s, \"value\", n.concat(e), t), s.value.includes(\":\") && !t && this.checkMissedSemicolon(e);\n  }\n  doubleColon(e) {\n    throw this.input.error(\n      \"Double colon\",\n      { offset: e[2] },\n      { offset: e[2] + e[1].length }\n    );\n  }\n  emptyRule(e) {\n    let t = new de();\n    this.init(t, e[2]), t.selector = \"\", t.raws.between = \"\", this.current = t;\n  }\n  end(e) {\n    this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.semicolon = !1, this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.spaces = \"\", this.current.parent ? (this.current.source.end = this.getPosition(e[2]), this.current.source.end.offset++, this.current = this.current.parent) : this.unexpectedClose(e);\n  }\n  endFile() {\n    this.current.parent && this.unclosedBlock(), this.current.nodes && this.current.nodes.length && (this.current.raws.semicolon = this.semicolon), this.current.raws.after = (this.current.raws.after || \"\") + this.spaces, this.root.source.end = this.getPosition(this.tokenizer.position());\n  }\n  freeSemicolon(e) {\n    if (this.spaces += e[1], this.current.nodes) {\n      let t = this.current.nodes[this.current.nodes.length - 1];\n      t && t.type === \"rule\" && !t.raws.ownSemicolon && (t.raws.ownSemicolon = this.spaces, this.spaces = \"\", t.source.end = this.getPosition(e[2]), t.source.end.offset += t.raws.ownSemicolon.length);\n    }\n  }\n  // Helpers\n  getPosition(e) {\n    let t = this.input.fromOffset(e);\n    return {\n      column: t.col,\n      line: t.line,\n      offset: e\n    };\n  }\n  init(e, t) {\n    this.current.push(e), e.source = {\n      input: this.input,\n      start: this.getPosition(t)\n    }, e.raws.before = this.spaces, this.spaces = \"\", e.type !== \"comment\" && (this.semicolon = !1);\n  }\n  other(e) {\n    let t = !1, s = null, r = !1, i = null, n = [], a = e[1].startsWith(\"--\"), o = [], l = e;\n    for (; l; ) {\n      if (s = l[0], o.push(l), s === \"(\" || s === \"[\")\n        i || (i = l), n.push(s === \"(\" ? \")\" : \"]\");\n      else if (a && r && s === \"{\")\n        i || (i = l), n.push(\"}\");\n      else if (n.length === 0)\n        if (s === \";\")\n          if (r) {\n            this.decl(o, a);\n            return;\n          } else\n            break;\n        else if (s === \"{\") {\n          this.rule(o);\n          return;\n        } else if (s === \"}\") {\n          this.tokenizer.back(o.pop()), t = !0;\n          break;\n        } else s === \":\" && (r = !0);\n      else s === n[n.length - 1] && (n.pop(), n.length === 0 && (i = null));\n      l = this.tokenizer.nextToken();\n    }\n    if (this.tokenizer.endOfFile() && (t = !0), n.length > 0 && this.unclosedBracket(i), t && r) {\n      if (!a)\n        for (; o.length && (l = o[o.length - 1][0], !(l !== \"space\" && l !== \"comment\")); )\n          this.tokenizer.back(o.pop());\n      this.decl(o, a);\n    } else\n      this.unknownWord(o);\n  }\n  parse() {\n    let e;\n    for (; !this.tokenizer.endOfFile(); )\n      switch (e = this.tokenizer.nextToken(), e[0]) {\n        case \"space\":\n          this.spaces += e[1];\n          break;\n        case \";\":\n          this.freeSemicolon(e);\n          break;\n        case \"}\":\n          this.end(e);\n          break;\n        case \"comment\":\n          this.comment(e);\n          break;\n        case \"at-word\":\n          this.atrule(e);\n          break;\n        case \"{\":\n          this.emptyRule(e);\n          break;\n        default:\n          this.other(e);\n          break;\n      }\n    this.endFile();\n  }\n  precheckMissedSemicolon() {\n  }\n  raw(e, t, s, r) {\n    let i, n, a = s.length, o = \"\", l = !0, p, u;\n    for (let m = 0; m < a; m += 1)\n      i = s[m], n = i[0], n === \"space\" && m === a - 1 && !r ? l = !1 : n === \"comment\" ? (u = s[m - 1] ? s[m - 1][0] : \"empty\", p = s[m + 1] ? s[m + 1][0] : \"empty\", !me[u] && !me[p] ? o.slice(-1) === \",\" ? l = !1 : o += i[1] : l = !1) : o += i[1];\n    if (!l) {\n      let m = s.reduce((w, E) => w + E[1], \"\");\n      e.raws[t] = { raw: m, value: o };\n    }\n    e[t] = o;\n  }\n  rule(e) {\n    e.pop();\n    let t = new de();\n    this.init(t, e[0][2]), t.raws.between = this.spacesAndCommentsFromEnd(e), this.raw(t, \"selector\", e), this.current = t;\n  }\n  spacesAndCommentsFromEnd(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[e.length - 1][0], !(t !== \"space\" && t !== \"comment\")); )\n      s = e.pop()[1] + s;\n    return s;\n  }\n  // Errors\n  spacesAndCommentsFromStart(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[0][0], !(t !== \"space\" && t !== \"comment\")); )\n      s += e.shift()[1];\n    return s;\n  }\n  spacesFromEnd(e) {\n    let t, s = \"\";\n    for (; e.length && (t = e[e.length - 1][0], t === \"space\"); )\n      s = e.pop()[1] + s;\n    return s;\n  }\n  stringFrom(e, t) {\n    let s = \"\";\n    for (let r = t; r < e.length; r++)\n      s += e[r][1];\n    return e.splice(t, e.length - t), s;\n  }\n  unclosedBlock() {\n    let e = this.current.source.start;\n    throw this.input.error(\"Unclosed block\", e.line, e.column);\n  }\n  unclosedBracket(e) {\n    throw this.input.error(\n      \"Unclosed bracket\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unexpectedClose(e) {\n    throw this.input.error(\n      \"Unexpected }\",\n      { offset: e[2] },\n      { offset: e[2] + 1 }\n    );\n  }\n  unknownWord(e) {\n    throw this.input.error(\n      \"Unknown word \" + e[0][1],\n      { offset: e[0][2] },\n      { offset: e[0][2] + e[0][1].length }\n    );\n  }\n  unnamedAtrule(e, t) {\n    throw this.input.error(\n      \"At-rule without name\",\n      { offset: t[2] },\n      { offset: t[2] + t[1].length }\n    );\n  }\n};\nvar Rr = Cr;\nlet Nr = T, Sr = dt, vr = Rr;\nfunction ut(e, t) {\n  let s = new Sr(e, t), r = new vr(s);\n  try {\n    r.parse();\n  } catch (i) {\n    throw process.env.NODE_ENV !== \"production\" && i.name === \"CssSyntaxError\" && t && t.from && (/\\.scss$/i.test(t.from) ? i.message += `\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser` : /\\.sass/i.test(t.from) ? i.message += `\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser` : /\\.less$/i.test(t.from) && (i.message += `\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser`)), i;\n  }\n  return r.root;\n}\nvar Jt = ut;\nut.default = ut;\nNr.registerParse(ut);\nlet Tt = class {\n  constructor(e, t = {}) {\n    if (this.type = \"warning\", this.text = e, t.node && t.node.source) {\n      let s = t.node.rangeBy(t);\n      this.line = s.start.line, this.column = s.start.column, this.endLine = s.end.line, this.endColumn = s.end.column;\n    }\n    for (let s in t) this[s] = t[s];\n  }\n  toString() {\n    return this.node ? this.node.error(this.text, {\n      index: this.index,\n      plugin: this.plugin,\n      word: this.word\n    }).message : this.plugin ? this.plugin + \": \" + this.text : this.text;\n  }\n};\nvar Ye = Tt;\nTt.default = Tt;\nlet Or = Ye, It = class {\n  get content() {\n    return this.css;\n  }\n  constructor(e, t, s) {\n    this.processor = e, this.messages = [], this.root = t, this.opts = s, this.css = void 0, this.map = void 0;\n  }\n  toString() {\n    return this.css;\n  }\n  warn(e, t = {}) {\n    t.plugin || this.lastPlugin && this.lastPlugin.postcssPlugin && (t.plugin = this.lastPlugin.postcssPlugin);\n    let s = new Or(e, t);\n    return this.messages.push(s), s;\n  }\n  warnings() {\n    return this.messages.filter((e) => e.type === \"warning\");\n  }\n};\nvar Ht = It;\nIt.default = It;\nlet ge = {};\nvar Je = function(e) {\n  ge[e] || (ge[e] = !0, typeof console < \"u\" && console.warn && console.warn(e));\n};\nlet Dr = T, Mr = Vt, kr = Ve, Ar = Jt, we = Ht, Tr = J, Ir = ct, { isClean: O, my: _r } = Y, Pr = Je;\nconst Ur = {\n  atrule: \"AtRule\",\n  comment: \"Comment\",\n  decl: \"Declaration\",\n  document: \"Document\",\n  root: \"Root\",\n  rule: \"Rule\"\n}, Lr = {\n  AtRule: !0,\n  AtRuleExit: !0,\n  Comment: !0,\n  CommentExit: !0,\n  Declaration: !0,\n  DeclarationExit: !0,\n  Document: !0,\n  DocumentExit: !0,\n  Once: !0,\n  OnceExit: !0,\n  postcssPlugin: !0,\n  prepare: !0,\n  Root: !0,\n  RootExit: !0,\n  Rule: !0,\n  RuleExit: !0\n}, Fr = {\n  Once: !0,\n  postcssPlugin: !0,\n  prepare: !0\n}, U = 0;\nfunction z(e) {\n  return typeof e == \"object\" && typeof e.then == \"function\";\n}\nfunction He(e) {\n  let t = !1, s = Ur[e.type];\n  return e.type === \"decl\" ? t = e.prop.toLowerCase() : e.type === \"atrule\" && (t = e.name.toLowerCase()), t && e.append ? [\n    s,\n    s + \"-\" + t,\n    U,\n    s + \"Exit\",\n    s + \"Exit-\" + t\n  ] : t ? [s, s + \"-\" + t, s + \"Exit\", s + \"Exit-\" + t] : e.append ? [s, U, s + \"Exit\"] : [s, s + \"Exit\"];\n}\nfunction ye(e) {\n  let t;\n  return e.type === \"document\" ? t = [\"Document\", U, \"DocumentExit\"] : e.type === \"root\" ? t = [\"Root\", U, \"RootExit\"] : t = He(e), {\n    eventIndex: 0,\n    events: t,\n    iterator: 0,\n    node: e,\n    visitorIndex: 0,\n    visitors: []\n  };\n}\nfunction _t(e) {\n  return e[O] = !1, e.nodes && e.nodes.forEach((t) => _t(t)), e;\n}\nlet Pt = {}, L = class Xe {\n  get content() {\n    return this.stringify().content;\n  }\n  get css() {\n    return this.stringify().css;\n  }\n  get map() {\n    return this.stringify().map;\n  }\n  get messages() {\n    return this.sync().messages;\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    return this.sync().root;\n  }\n  get [Symbol.toStringTag]() {\n    return \"LazyResult\";\n  }\n  constructor(t, s, r) {\n    this.stringified = !1, this.processed = !1;\n    let i;\n    if (typeof s == \"object\" && s !== null && (s.type === \"root\" || s.type === \"document\"))\n      i = _t(s);\n    else if (s instanceof Xe || s instanceof we)\n      i = _t(s.root), s.map && (typeof r.map > \"u\" && (r.map = {}), r.map.inline || (r.map.inline = !1), r.map.prev = s.map);\n    else {\n      let n = Ar;\n      r.syntax && (n = r.syntax.parse), r.parser && (n = r.parser), n.parse && (n = n.parse);\n      try {\n        i = n(s, r);\n      } catch (a) {\n        this.processed = !0, this.error = a;\n      }\n      i && !i[_r] && Dr.rebuild(i);\n    }\n    this.result = new we(t, i, r), this.helpers = { ...Pt, postcss: Pt, result: this.result }, this.plugins = this.processor.plugins.map((n) => typeof n == \"object\" && n.prepare ? { ...n, ...n.prepare(this.result) } : n);\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : this.processed ? Promise.resolve(this.result) : (this.processing || (this.processing = this.runAsync()), this.processing);\n  }\n  catch(t) {\n    return this.async().catch(t);\n  }\n  finally(t) {\n    return this.async().then(t, t);\n  }\n  getAsyncError() {\n    throw new Error(\"Use process(css).then(cb) to work with async plugins\");\n  }\n  handleError(t, s) {\n    let r = this.result.lastPlugin;\n    try {\n      if (s && s.addToError(t), this.error = t, t.name === \"CssSyntaxError\" && !t.plugin)\n        t.plugin = r.postcssPlugin, t.setMessage();\n      else if (r.postcssVersion && process.env.NODE_ENV !== \"production\") {\n        let i = r.postcssPlugin, n = r.postcssVersion, a = this.result.processor.version, o = n.split(\".\"), l = a.split(\".\");\n        (o[0] !== l[0] || parseInt(o[1]) > parseInt(l[1])) && console.error(\n          \"Unknown error from PostCSS plugin. Your current PostCSS version is \" + a + \", but \" + i + \" uses \" + n + \". Perhaps this is the source of the error below.\"\n        );\n      }\n    } catch (i) {\n      console && console.error && console.error(i);\n    }\n    return t;\n  }\n  prepareVisitors() {\n    this.listeners = {};\n    let t = (s, r, i) => {\n      this.listeners[r] || (this.listeners[r] = []), this.listeners[r].push([s, i]);\n    };\n    for (let s of this.plugins)\n      if (typeof s == \"object\")\n        for (let r in s) {\n          if (!Lr[r] && /^[A-Z]/.test(r))\n            throw new Error(\n              `Unknown event ${r} in ${s.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`\n            );\n          if (!Fr[r])\n            if (typeof s[r] == \"object\")\n              for (let i in s[r])\n                i === \"*\" ? t(s, r, s[r][i]) : t(\n                  s,\n                  r + \"-\" + i.toLowerCase(),\n                  s[r][i]\n                );\n            else typeof s[r] == \"function\" && t(s, r, s[r]);\n        }\n    this.hasListener = Object.keys(this.listeners).length > 0;\n  }\n  async runAsync() {\n    this.plugin = 0;\n    for (let t = 0; t < this.plugins.length; t++) {\n      let s = this.plugins[t], r = this.runOnRoot(s);\n      if (z(r))\n        try {\n          await r;\n        } catch (i) {\n          throw this.handleError(i);\n        }\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let t = this.result.root;\n      for (; !t[O]; ) {\n        t[O] = !0;\n        let s = [ye(t)];\n        for (; s.length > 0; ) {\n          let r = this.visitTick(s);\n          if (z(r))\n            try {\n              await r;\n            } catch (i) {\n              let n = s[s.length - 1].node;\n              throw this.handleError(i, n);\n            }\n        }\n      }\n      if (this.listeners.OnceExit)\n        for (let [s, r] of this.listeners.OnceExit) {\n          this.result.lastPlugin = s;\n          try {\n            if (t.type === \"document\") {\n              let i = t.nodes.map(\n                (n) => r(n, this.helpers)\n              );\n              await Promise.all(i);\n            } else\n              await r(t, this.helpers);\n          } catch (i) {\n            throw this.handleError(i);\n          }\n        }\n    }\n    return this.processed = !0, this.stringify();\n  }\n  runOnRoot(t) {\n    this.result.lastPlugin = t;\n    try {\n      if (typeof t == \"object\" && t.Once) {\n        if (this.result.root.type === \"document\") {\n          let s = this.result.root.nodes.map(\n            (r) => t.Once(r, this.helpers)\n          );\n          return z(s[0]) ? Promise.all(s) : s;\n        }\n        return t.Once(this.result.root, this.helpers);\n      } else if (typeof t == \"function\")\n        return t(this.result.root, this.result);\n    } catch (s) {\n      throw this.handleError(s);\n    }\n  }\n  stringify() {\n    if (this.error) throw this.error;\n    if (this.stringified) return this.result;\n    this.stringified = !0, this.sync();\n    let t = this.result.opts, s = Ir;\n    t.syntax && (s = t.syntax.stringify), t.stringifier && (s = t.stringifier), s.stringify && (s = s.stringify);\n    let r = new kr(s, this.result.root, this.result.opts).generate();\n    return this.result.css = r[0], this.result.map = r[1], this.result;\n  }\n  sync() {\n    if (this.error) throw this.error;\n    if (this.processed) return this.result;\n    if (this.processed = !0, this.processing)\n      throw this.getAsyncError();\n    for (let t of this.plugins) {\n      let s = this.runOnRoot(t);\n      if (z(s))\n        throw this.getAsyncError();\n    }\n    if (this.prepareVisitors(), this.hasListener) {\n      let t = this.result.root;\n      for (; !t[O]; )\n        t[O] = !0, this.walkSync(t);\n      if (this.listeners.OnceExit)\n        if (t.type === \"document\")\n          for (let s of t.nodes)\n            this.visitSync(this.listeners.OnceExit, s);\n        else\n          this.visitSync(this.listeners.OnceExit, t);\n    }\n    return this.result;\n  }\n  then(t, s) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this.opts || Pr(\n      \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n    )), this.async().then(t, s);\n  }\n  toString() {\n    return this.css;\n  }\n  visitSync(t, s) {\n    for (let [r, i] of t) {\n      this.result.lastPlugin = r;\n      let n;\n      try {\n        n = i(s, this.helpers);\n      } catch (a) {\n        throw this.handleError(a, s.proxyOf);\n      }\n      if (s.type !== \"root\" && s.type !== \"document\" && !s.parent)\n        return !0;\n      if (z(n))\n        throw this.getAsyncError();\n    }\n  }\n  visitTick(t) {\n    let s = t[t.length - 1], { node: r, visitors: i } = s;\n    if (r.type !== \"root\" && r.type !== \"document\" && !r.parent) {\n      t.pop();\n      return;\n    }\n    if (i.length > 0 && s.visitorIndex < i.length) {\n      let [a, o] = i[s.visitorIndex];\n      s.visitorIndex += 1, s.visitorIndex === i.length && (s.visitors = [], s.visitorIndex = 0), this.result.lastPlugin = a;\n      try {\n        return o(r.toProxy(), this.helpers);\n      } catch (l) {\n        throw this.handleError(l, r);\n      }\n    }\n    if (s.iterator !== 0) {\n      let a = s.iterator, o;\n      for (; o = r.nodes[r.indexes[a]]; )\n        if (r.indexes[a] += 1, !o[O]) {\n          o[O] = !0, t.push(ye(o));\n          return;\n        }\n      s.iterator = 0, delete r.indexes[a];\n    }\n    let n = s.events;\n    for (; s.eventIndex < n.length; ) {\n      let a = n[s.eventIndex];\n      if (s.eventIndex += 1, a === U) {\n        r.nodes && r.nodes.length && (r[O] = !0, s.iterator = r.getIterator());\n        return;\n      } else if (this.listeners[a]) {\n        s.visitors = this.listeners[a];\n        return;\n      }\n    }\n    t.pop();\n  }\n  walkSync(t) {\n    t[O] = !0;\n    let s = He(t);\n    for (let r of s)\n      if (r === U)\n        t.nodes && t.each((i) => {\n          i[O] || this.walkSync(i);\n        });\n      else {\n        let i = this.listeners[r];\n        if (i && this.visitSync(i, t.toProxy()))\n          return;\n      }\n  }\n  warnings() {\n    return this.sync().warnings();\n  }\n};\nL.registerPostcss = (e) => {\n  Pt = e;\n};\nvar Ze = L;\nL.default = L;\nTr.registerLazyResult(L);\nMr.registerLazyResult(L);\nlet Br = Ve, jr = Jt;\nconst zr = Ht;\nlet $r = ct, Gr = Je, Ut = class {\n  get content() {\n    return this.result.css;\n  }\n  get css() {\n    return this.result.css;\n  }\n  get map() {\n    return this.result.map;\n  }\n  get messages() {\n    return [];\n  }\n  get opts() {\n    return this.result.opts;\n  }\n  get processor() {\n    return this.result.processor;\n  }\n  get root() {\n    if (this._root)\n      return this._root;\n    let e, t = jr;\n    try {\n      e = t(this._css, this._opts);\n    } catch (s) {\n      this.error = s;\n    }\n    if (this.error)\n      throw this.error;\n    return this._root = e, e;\n  }\n  get [Symbol.toStringTag]() {\n    return \"NoWorkResult\";\n  }\n  constructor(e, t, s) {\n    t = t.toString(), this.stringified = !1, this._processor = e, this._css = t, this._opts = s, this._map = void 0;\n    let r, i = $r;\n    this.result = new zr(this._processor, r, this._opts), this.result.css = t;\n    let n = this;\n    Object.defineProperty(this.result, \"root\", {\n      get() {\n        return n.root;\n      }\n    });\n    let a = new Br(i, r, this._opts, t);\n    if (a.isMap()) {\n      let [o, l] = a.generate();\n      o && (this.result.css = o), l && (this.result.map = l);\n    } else\n      a.clearAnnotation(), this.result.css = a.css;\n  }\n  async() {\n    return this.error ? Promise.reject(this.error) : Promise.resolve(this.result);\n  }\n  catch(e) {\n    return this.async().catch(e);\n  }\n  finally(e) {\n    return this.async().then(e, e);\n  }\n  sync() {\n    if (this.error) throw this.error;\n    return this.result;\n  }\n  then(e, t) {\n    return process.env.NODE_ENV !== \"production\" && (\"from\" in this._opts || Gr(\n      \"Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.\"\n    )), this.async().then(e, t);\n  }\n  toString() {\n    return this._css;\n  }\n  warnings() {\n    return [];\n  }\n};\nvar Wr = Ut;\nUt.default = Ut;\nlet Vr = Vt, Yr = Ze, Jr = Wr, Hr = J, V = class {\n  constructor(e = []) {\n    this.version = \"8.5.3\", this.plugins = this.normalize(e);\n  }\n  normalize(e) {\n    let t = [];\n    for (let s of e)\n      if (s.postcss === !0 ? s = s() : s.postcss && (s = s.postcss), typeof s == \"object\" && Array.isArray(s.plugins))\n        t = t.concat(s.plugins);\n      else if (typeof s == \"object\" && s.postcssPlugin)\n        t.push(s);\n      else if (typeof s == \"function\")\n        t.push(s);\n      else if (typeof s == \"object\" && (s.parse || s.stringify)) {\n        if (process.env.NODE_ENV !== \"production\")\n          throw new Error(\n            \"PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.\"\n          );\n      } else\n        throw new Error(s + \" is not a PostCSS plugin\");\n    return t;\n  }\n  process(e, t = {}) {\n    return !this.plugins.length && !t.parser && !t.stringifier && !t.syntax ? new Jr(this, e, t) : new Yr(this, e, t);\n  }\n  use(e) {\n    return this.plugins = this.plugins.concat(this.normalize([e])), this;\n  }\n};\nvar Xr = V;\nV.default = V;\nHr.registerProcessor(V);\nVr.registerProcessor(V);\nlet qe = Wt, Ke = pt, Zr = T, qr = zt, Qe = ft, ts = Vt, Kr = Qs, Qr = dt, ti = Ze, ei = Be, si = ht, ri = Jt, Xt = Xr, ii = Ht, es = J, ss = Yt, ni = ct, oi = Ye;\nfunction g(...e) {\n  return e.length === 1 && Array.isArray(e[0]) && (e = e[0]), new Xt(e);\n}\ng.plugin = function(e, t) {\n  let s = !1;\n  function r(...n) {\n    console && console.warn && !s && (s = !0, console.warn(\n      e + `: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`\n    ), process.env.LANG && process.env.LANG.startsWith(\"cn\") && console.warn(\n      e + `: 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226`\n    ));\n    let a = t(...n);\n    return a.postcssPlugin = e, a.postcssVersion = new Xt().version, a;\n  }\n  let i;\n  return Object.defineProperty(r, \"postcss\", {\n    get() {\n      return i || (i = r()), i;\n    }\n  }), r.process = function(n, a, o) {\n    return g([r(o)]).process(n, a);\n  }, r;\n};\ng.stringify = ni;\ng.parse = ri;\ng.fromJSON = Kr;\ng.list = ei;\ng.comment = (e) => new Ke(e);\ng.atRule = (e) => new qe(e);\ng.decl = (e) => new Qe(e);\ng.rule = (e) => new ss(e);\ng.root = (e) => new es(e);\ng.document = (e) => new ts(e);\ng.CssSyntaxError = qr;\ng.Declaration = Qe;\ng.Container = Zr;\ng.Processor = Xt;\ng.Document = ts;\ng.Comment = Ke;\ng.Warning = oi;\ng.AtRule = qe;\ng.Result = ii;\ng.Input = Qr;\ng.Rule = ss;\ng.Root = es;\ng.Node = si;\nti.registerPostcss(g);\nvar ai = g;\ng.default = g;\nconst y = /* @__PURE__ */ ys(ai);\ny.stringify;\ny.fromJSON;\ny.plugin;\ny.parse;\ny.list;\ny.document;\ny.comment;\ny.atRule;\ny.rule;\ny.decl;\ny.root;\ny.CssSyntaxError;\ny.Declaration;\ny.Container;\ny.Processor;\ny.Document;\ny.Comment;\ny.Warning;\ny.AtRule;\ny.Result;\ny.Input;\ny.Rule;\ny.Root;\ny.Node;\nfunction li(e) {\n  const t = {}, s = /;(?![^(]*\\))/g, r = /:(.+)/, i = /\\/\\*.*?\\*\\//g;\n  return e.replace(i, \"\").split(s).forEach(function(n) {\n    if (n) {\n      const a = n.split(r);\n      a.length > 1 && (t[Lt(a[0].trim())] = a[1].trim());\n    }\n  }), t;\n}\nfunction be(e) {\n  const t = [];\n  for (const s in e) {\n    const r = e[s];\n    if (typeof r != \"string\") continue;\n    const i = pi(s);\n    t.push(`${i}: ${r};`);\n  }\n  return t.join(\" \");\n}\nconst ui = /-([a-z])/g, ci = /^--[a-zA-Z0-9-]+$/, Lt = (e) => ci.test(e) ? e : e.replace(ui, (t, s) => s ? s.toUpperCase() : \"\"), hi = /\\B([A-Z])/g, pi = (e) => e.replace(hi, \"-$1\").toLowerCase();\nclass A {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n  constructor(...t) {\n    c(this, \"parentElement\", null);\n    c(this, \"parentNode\", null);\n    c(this, \"ownerDocument\");\n    c(this, \"firstChild\", null);\n    c(this, \"lastChild\", null);\n    c(this, \"previousSibling\", null);\n    c(this, \"nextSibling\", null);\n    c(this, \"ELEMENT_NODE\", 1);\n    c(this, \"TEXT_NODE\", 3);\n    // corresponding nodeType value of standard HTML Node\n    c(this, \"nodeType\");\n    c(this, \"nodeName\");\n    c(this, \"RRNodeType\");\n  }\n  get childNodes() {\n    const t = [];\n    let s = this.firstChild;\n    for (; s; )\n      t.push(s), s = s.nextSibling;\n    return t;\n  }\n  contains(t) {\n    if (t instanceof A) {\n      if (t.ownerDocument !== this.ownerDocument) return !1;\n      if (t === this) return !0;\n    } else return !1;\n    for (; t.parentNode; ) {\n      if (t.parentNode === this) return !0;\n      t = t.parentNode;\n    }\n    return !1;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  appendChild(t) {\n    throw new Error(\n      \"RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.\"\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  insertBefore(t, s) {\n    throw new Error(\n      \"RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.\"\n    );\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  removeChild(t) {\n    throw new Error(\n      \"RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.\"\n    );\n  }\n  toString() {\n    return \"RRNode\";\n  }\n}\nclass Zt extends A {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  constructor(...s) {\n    super(s);\n    c(this, \"nodeType\", 9);\n    c(this, \"nodeName\", \"#document\");\n    c(this, \"compatMode\", \"CSS1Compat\");\n    c(this, \"RRNodeType\", d.Document);\n    c(this, \"textContent\", null);\n    this.ownerDocument = this;\n  }\n  get documentElement() {\n    return this.childNodes.find(\n      (s) => s.RRNodeType === d.Element && s.tagName === \"HTML\"\n    ) || null;\n  }\n  get body() {\n    var s;\n    return ((s = this.documentElement) == null ? void 0 : s.childNodes.find(\n      (r) => r.RRNodeType === d.Element && r.tagName === \"BODY\"\n    )) || null;\n  }\n  get head() {\n    var s;\n    return ((s = this.documentElement) == null ? void 0 : s.childNodes.find(\n      (r) => r.RRNodeType === d.Element && r.tagName === \"HEAD\"\n    )) || null;\n  }\n  get implementation() {\n    return this;\n  }\n  get firstElementChild() {\n    return this.documentElement;\n  }\n  appendChild(s) {\n    const r = s.RRNodeType;\n    if ((r === d.Element || r === d.DocumentType) && this.childNodes.some((n) => n.RRNodeType === r))\n      throw new Error(\n        `RRDomException: Failed to execute 'appendChild' on 'RRNode': Only one ${r === d.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n      );\n    const i = Kt(this, s);\n    return i.parentElement = null, i;\n  }\n  insertBefore(s, r) {\n    const i = s.RRNodeType;\n    if ((i === d.Element || i === d.DocumentType) && this.childNodes.some((a) => a.RRNodeType === i))\n      throw new Error(\n        `RRDomException: Failed to execute 'insertBefore' on 'RRNode': Only one ${i === d.Element ? \"RRElement\" : \"RRDoctype\"} on RRDocument allowed.`\n      );\n    const n = as(this, s, r);\n    return n.parentElement = null, n;\n  }\n  removeChild(s) {\n    return ls(this, s);\n  }\n  open() {\n    this.firstChild = null, this.lastChild = null;\n  }\n  close() {\n  }\n  /**\n   * Adhoc implementation for setting xhtml namespace in rebuilt.ts (rrweb-snapshot).\n   * There are two lines used this function:\n   * 1. doc.write('\\<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\"\\>')\n   * 2. doc.write('\\<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\"\\>')\n   */\n  write(s) {\n    let r;\n    if (s === '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">' ? r = \"-//W3C//DTD XHTML 1.0 Transitional//EN\" : s === '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">' && (r = \"-//W3C//DTD HTML 4.0 Transitional//EN\"), r) {\n      const i = this.createDocumentType(\"html\", r, \"\");\n      this.open(), this.appendChild(i);\n    }\n  }\n  createDocument(s, r, i) {\n    return new Zt();\n  }\n  createDocumentType(s, r, i) {\n    const n = new rs(s, r, i);\n    return n.ownerDocument = this, n;\n  }\n  createElement(s) {\n    const r = new qt(s);\n    return r.ownerDocument = this, r;\n  }\n  createElementNS(s, r) {\n    return this.createElement(r);\n  }\n  createTextNode(s) {\n    const r = new is(s);\n    return r.ownerDocument = this, r;\n  }\n  createComment(s) {\n    const r = new ns(s);\n    return r.ownerDocument = this, r;\n  }\n  createCDATASection(s) {\n    const r = new os(s);\n    return r.ownerDocument = this, r;\n  }\n  toString() {\n    return \"RRDocument\";\n  }\n}\nclass rs extends A {\n  constructor(s, r, i) {\n    super();\n    c(this, \"nodeType\", 10);\n    c(this, \"RRNodeType\", d.DocumentType);\n    c(this, \"name\");\n    c(this, \"publicId\");\n    c(this, \"systemId\");\n    c(this, \"textContent\", null);\n    this.name = s, this.publicId = r, this.systemId = i, this.nodeName = s;\n  }\n  toString() {\n    return \"RRDocumentType\";\n  }\n}\nclass qt extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 1);\n    c(this, \"RRNodeType\", d.Element);\n    c(this, \"tagName\");\n    c(this, \"attributes\", {});\n    c(this, \"shadowRoot\", null);\n    c(this, \"scrollLeft\");\n    c(this, \"scrollTop\");\n    this.tagName = s.toUpperCase(), this.nodeName = s.toUpperCase();\n  }\n  get textContent() {\n    let s = \"\";\n    return this.childNodes.forEach((r) => s += r.textContent), s;\n  }\n  set textContent(s) {\n    this.firstChild = null, this.lastChild = null, this.appendChild(this.ownerDocument.createTextNode(s));\n  }\n  get classList() {\n    return new di(\n      this.attributes.class,\n      (s) => {\n        this.attributes.class = s;\n      }\n    );\n  }\n  get id() {\n    return this.attributes.id || \"\";\n  }\n  get className() {\n    return this.attributes.class || \"\";\n  }\n  get style() {\n    const s = this.attributes.style ? li(this.attributes.style) : {}, r = /\\B([A-Z])/g;\n    return s.setProperty = (i, n, a) => {\n      if (r.test(i)) return;\n      const o = Lt(i);\n      n ? s[o] = n : delete s[o], a === \"important\" && (s[o] += \" !important\"), this.attributes.style = be(s);\n    }, s.removeProperty = (i) => {\n      if (r.test(i)) return \"\";\n      const n = Lt(i), a = s[n] || \"\";\n      return delete s[n], this.attributes.style = be(s), a;\n    }, s;\n  }\n  getAttribute(s) {\n    return this.attributes[s] || null;\n  }\n  setAttribute(s, r) {\n    this.attributes[s] = r;\n  }\n  setAttributeNS(s, r, i) {\n    this.setAttribute(r, i);\n  }\n  removeAttribute(s) {\n    delete this.attributes[s];\n  }\n  appendChild(s) {\n    return Kt(this, s);\n  }\n  insertBefore(s, r) {\n    return as(this, s, r);\n  }\n  removeChild(s) {\n    return ls(this, s);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  attachShadow(s) {\n    const r = this.ownerDocument.createElement(\"SHADOWROOT\");\n    return this.shadowRoot = r, r;\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  dispatchEvent(s) {\n    return !0;\n  }\n  toString() {\n    let s = \"\";\n    for (const r in this.attributes)\n      s += `${r}=\"${this.attributes[r]}\" `;\n    return `${this.tagName} ${s}`;\n  }\n}\nclass fi extends qt {\n  constructor() {\n    super(...arguments);\n    c(this, \"currentTime\");\n    c(this, \"volume\");\n    c(this, \"paused\");\n    c(this, \"muted\");\n    c(this, \"playbackRate\");\n    c(this, \"loop\");\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  attachShadow(s) {\n    throw new Error(\n      \"RRDomException: Failed to execute 'attachShadow' on 'RRElement': This RRElement does not support attachShadow\"\n    );\n  }\n  play() {\n    this.paused = !1;\n  }\n  pause() {\n    this.paused = !0;\n  }\n}\nclass is extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 3);\n    c(this, \"nodeName\", \"#text\");\n    c(this, \"RRNodeType\", d.Text);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRText text=${JSON.stringify(this.data)}`;\n  }\n}\nclass ns extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeType\", 8);\n    c(this, \"nodeName\", \"#comment\");\n    c(this, \"RRNodeType\", d.Comment);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRComment text=${JSON.stringify(this.data)}`;\n  }\n}\nclass os extends A {\n  constructor(s) {\n    super();\n    c(this, \"nodeName\", \"#cdata-section\");\n    c(this, \"nodeType\", 4);\n    c(this, \"RRNodeType\", d.CDATA);\n    c(this, \"data\");\n    this.data = s;\n  }\n  get textContent() {\n    return this.data;\n  }\n  set textContent(s) {\n    this.data = s;\n  }\n  toString() {\n    return `RRCDATASection data=${JSON.stringify(this.data)}`;\n  }\n}\nclass di {\n  constructor(t, s) {\n    c(this, \"onChange\");\n    c(this, \"classes\", []);\n    c(this, \"add\", (...t) => {\n      for (const s of t) {\n        const r = String(s);\n        this.classes.indexOf(r) >= 0 || this.classes.push(r);\n      }\n      this.onChange && this.onChange(this.classes.join(\" \"));\n    });\n    c(this, \"remove\", (...t) => {\n      this.classes = this.classes.filter(\n        (s) => t.indexOf(s) === -1\n      ), this.onChange && this.onChange(this.classes.join(\" \"));\n    });\n    if (t) {\n      const r = t.trim().split(/\\s+/);\n      this.classes.push(...r);\n    }\n    this.onChange = s;\n  }\n}\nfunction Kt(e, t) {\n  return t.parentNode && t.parentNode.removeChild(t), e.lastChild ? (e.lastChild.nextSibling = t, t.previousSibling = e.lastChild) : (e.firstChild = t, t.previousSibling = null), e.lastChild = t, t.nextSibling = null, t.parentNode = e, t.parentElement = e, t.ownerDocument = e.ownerDocument, t;\n}\nfunction as(e, t, s) {\n  if (!s) return Kt(e, t);\n  if (s.parentNode !== e)\n    throw new Error(\n      \"Failed to execute 'insertBefore' on 'RRNode': The RRNode before which the new node is to be inserted is not a child of this RRNode.\"\n    );\n  return t === s || (t.parentNode && t.parentNode.removeChild(t), t.previousSibling = s.previousSibling, s.previousSibling = t, t.nextSibling = s, t.previousSibling ? t.previousSibling.nextSibling = t : e.firstChild = t, t.parentElement = e, t.parentNode = e, t.ownerDocument = e.ownerDocument), t;\n}\nfunction ls(e, t) {\n  if (t.parentNode !== e)\n    throw new Error(\n      \"Failed to execute 'removeChild' on 'RRNode': The RRNode to be removed is not a child of this RRNode.\"\n    );\n  return t.previousSibling ? t.previousSibling.nextSibling = t.nextSibling : e.firstChild = t.nextSibling, t.nextSibling ? t.nextSibling.previousSibling = t.previousSibling : e.lastChild = t.previousSibling, t.previousSibling = null, t.nextSibling = null, t.parentElement = null, t.parentNode = null, t;\n}\nvar C = /* @__PURE__ */ ((e) => (e[e.PLACEHOLDER = 0] = \"PLACEHOLDER\", e[e.ELEMENT_NODE = 1] = \"ELEMENT_NODE\", e[e.ATTRIBUTE_NODE = 2] = \"ATTRIBUTE_NODE\", e[e.TEXT_NODE = 3] = \"TEXT_NODE\", e[e.CDATA_SECTION_NODE = 4] = \"CDATA_SECTION_NODE\", e[e.ENTITY_REFERENCE_NODE = 5] = \"ENTITY_REFERENCE_NODE\", e[e.ENTITY_NODE = 6] = \"ENTITY_NODE\", e[e.PROCESSING_INSTRUCTION_NODE = 7] = \"PROCESSING_INSTRUCTION_NODE\", e[e.COMMENT_NODE = 8] = \"COMMENT_NODE\", e[e.DOCUMENT_NODE = 9] = \"DOCUMENT_NODE\", e[e.DOCUMENT_TYPE_NODE = 10] = \"DOCUMENT_TYPE_NODE\", e[e.DOCUMENT_FRAGMENT_NODE = 11] = \"DOCUMENT_FRAGMENT_NODE\", e))(C || {});\nconst Ft = {\n  svg: \"http://www.w3.org/2000/svg\",\n  \"xlink:href\": \"http://www.w3.org/1999/xlink\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n}, mi = {\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};\nlet R = null;\nfunction us(e, t, s, r = t.mirror || t.ownerDocument.mirror) {\n  e = gi(\n    e,\n    t,\n    s,\n    r\n  ), cs(e, t, s, r), wi(e, t, s);\n}\nfunction gi(e, t, s, r) {\n  var i;\n  if (s.afterAppend && !R && (R = /* @__PURE__ */ new WeakSet(), setTimeout(() => {\n    R = null;\n  }, 0)), !Qt(e, t)) {\n    const n = Bt(\n      t,\n      s.mirror,\n      r\n    );\n    (i = e.parentNode) == null || i.replaceChild(n, e), e = n;\n  }\n  switch (t.RRNodeType) {\n    case d.Document: {\n      if (!_(e, t, s.mirror, r)) {\n        const n = r.getMeta(t);\n        n && (s.mirror.removeNodeFromMap(e), e.close(), e.open(), s.mirror.add(e, n), R == null || R.add(e));\n      }\n      break;\n    }\n    case d.Element: {\n      const n = e, a = t;\n      switch (a.tagName) {\n        case \"IFRAME\": {\n          const o = e.contentDocument;\n          if (!o) break;\n          us(\n            o,\n            t.contentDocument,\n            s,\n            r\n          );\n          break;\n        }\n      }\n      a.shadowRoot && (n.shadowRoot || n.attachShadow({ mode: \"open\" }), cs(\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        n.shadowRoot,\n        a.shadowRoot,\n        s,\n        r\n      )), yi(n, a, r);\n      break;\n    }\n  }\n  return e;\n}\nfunction wi(e, t, s) {\n  var r;\n  switch (t.RRNodeType) {\n    case d.Document: {\n      const i = t.scrollData;\n      i && s.applyScroll(i, !0);\n      break;\n    }\n    case d.Element: {\n      const i = e, n = t;\n      switch (n.scrollData && s.applyScroll(n.scrollData, !0), n.inputData && s.applyInput(n.inputData), n.tagName) {\n        case \"AUDIO\":\n        case \"VIDEO\": {\n          const a = e, o = n;\n          o.paused !== void 0 && (o.paused ? a.pause() : a.play()), o.muted !== void 0 && (a.muted = o.muted), o.volume !== void 0 && (a.volume = o.volume), o.currentTime !== void 0 && (a.currentTime = o.currentTime), o.playbackRate !== void 0 && (a.playbackRate = o.playbackRate), o.loop !== void 0 && (a.loop = o.loop);\n          break;\n        }\n        case \"CANVAS\": {\n          const a = t;\n          if (a.rr_dataURL !== null) {\n            const o = document.createElement(\"img\");\n            o.onload = () => {\n              const l = i.getContext(\"2d\");\n              l && l.drawImage(o, 0, 0, o.width, o.height);\n            }, o.src = a.rr_dataURL;\n          }\n          a.canvasMutations.forEach(\n            (o) => s.applyCanvas(\n              o.event,\n              o.mutation,\n              e\n            )\n          );\n          break;\n        }\n        case \"STYLE\": {\n          const a = i.sheet;\n          a && t.rules.forEach(\n            (o) => s.applyStyleSheetMutation(o, a)\n          );\n          break;\n        }\n      }\n      break;\n    }\n    case d.Text:\n    case d.Comment:\n    case d.CDATA: {\n      e.textContent !== t.data && (e.textContent = t.data);\n      break;\n    }\n  }\n  R != null && R.has(e) && (R.delete(e), (r = s.afterAppend) == null || r.call(s, e, s.mirror.getId(e)));\n}\nfunction yi(e, t, s) {\n  const r = e.attributes, i = t.attributes;\n  for (const n in i) {\n    const a = i[n], o = s.getMeta(t);\n    if (o != null && o.isSVG && Ft[n])\n      e.setAttributeNS(Ft[n], n, a);\n    else if (t.tagName === \"CANVAS\" && n === \"rr_dataURL\") {\n      const l = document.createElement(\"img\");\n      l.src = a, l.onload = () => {\n        const p = e.getContext(\"2d\");\n        p && p.drawImage(l, 0, 0, l.width, l.height);\n      };\n    } else {\n      if (t.tagName === \"IFRAME\" && n === \"srcdoc\") continue;\n      e.setAttribute(n, a);\n    }\n  }\n  for (const { name: n } of Array.from(r))\n    n in i || e.removeAttribute(n);\n  t.scrollLeft && (e.scrollLeft = t.scrollLeft), t.scrollTop && (e.scrollTop = t.scrollTop);\n}\nfunction cs(e, t, s, r) {\n  const i = Array.from(e.childNodes), n = t.childNodes;\n  if (i.length === 0 && n.length === 0) return;\n  let a = 0, o = i.length - 1, l = 0, p = n.length - 1, u = i[a], m = i[o], w = n[l], E = n[p], D, h;\n  for (; a <= o && l <= p; )\n    if (u === void 0)\n      u = i[++a];\n    else if (m === void 0)\n      m = i[--o];\n    else if (\n      // same first node?\n      _(u, w, s.mirror, r)\n    )\n      u = i[++a], w = n[++l];\n    else if (\n      // same last node?\n      _(m, E, s.mirror, r)\n    )\n      m = i[--o], E = n[--p];\n    else if (\n      // is the first old node the same as the last new node?\n      _(u, E, s.mirror, r)\n    ) {\n      try {\n        e.insertBefore(u, m.nextSibling);\n      } catch (x) {\n        console.warn(x);\n      }\n      u = i[++a], E = n[--p];\n    } else if (\n      // is the last old node the same as the first new node?\n      _(m, w, s.mirror, r)\n    ) {\n      try {\n        e.insertBefore(m, u);\n      } catch (x) {\n        console.warn(x);\n      }\n      m = i[--o], w = n[++l];\n    } else {\n      if (!D) {\n        D = {};\n        for (let b = a; b <= o; b++) {\n          const M = i[b];\n          M && s.mirror.hasNode(M) && (D[s.mirror.getId(M)] = b);\n        }\n      }\n      h = D[r.getId(w)];\n      const x = i[h];\n      if (h !== void 0 && x && _(x, w, s.mirror, r)) {\n        try {\n          e.insertBefore(x, u);\n        } catch (b) {\n          console.warn(b);\n        }\n        i[h] = void 0;\n      } else {\n        const b = Bt(\n          w,\n          s.mirror,\n          r\n        );\n        e.nodeName === \"#document\" && u && /**\n        * Special case 1: one document isn't allowed to have two doctype nodes at the same time, so we need to remove the old one first before inserting the new one.\n        * How this case happens: A parent document in the old tree already has a doctype node with an id e.g. #1. A new full snapshot rebuilds the replayer with a new doctype node with another id #2. According to the algorithm, the new doctype node will be inserted before the old one, which is not allowed by the Document standard.\n        */\n        (b.nodeType === b.DOCUMENT_TYPE_NODE && u.nodeType === u.DOCUMENT_TYPE_NODE || /**\n        * Special case 2: one document isn't allowed to have two HTMLElements at the same time, so we need to remove the old one first before inserting the new one.\n        * How this case happens: A mounted iframe element has an automatically created HTML element. We should delete it before inserting a serialized one. Otherwise, an error 'Only one element on document allowed' will be thrown.\n        */\n        b.nodeType === b.ELEMENT_NODE && u.nodeType === u.ELEMENT_NODE) && (e.removeChild(u), s.mirror.removeNodeFromMap(u), u = i[++a]);\n        try {\n          e.insertBefore(b, u || null);\n        } catch (M) {\n          console.warn(M);\n        }\n      }\n      w = n[++l];\n    }\n  if (a > o) {\n    const x = n[p + 1];\n    let b = null;\n    for (x && (b = s.mirror.getNode(\n      r.getId(x)\n    )); l <= p; ++l) {\n      const M = Bt(\n        n[l],\n        s.mirror,\n        r\n      );\n      try {\n        e.insertBefore(M, b);\n      } catch (gt) {\n        console.warn(gt);\n      }\n    }\n  } else if (l > p)\n    for (; a <= o; a++) {\n      const x = i[a];\n      if (!(!x || x.parentNode !== e))\n        try {\n          e.removeChild(x), s.mirror.removeNodeFromMap(x);\n        } catch (b) {\n          console.warn(b);\n        }\n    }\n  let v = e.firstChild, N = t.firstChild;\n  for (; v !== null && N !== null; )\n    us(v, N, s, r), v = v.nextSibling, N = N.nextSibling;\n}\nfunction Bt(e, t, s) {\n  const r = s.getId(e), i = s.getMeta(e);\n  let n = null;\n  if (r > -1 && (n = t.getNode(r)), n !== null && Qt(n, e)) return n;\n  switch (e.RRNodeType) {\n    case d.Document:\n      n = new Document();\n      break;\n    case d.DocumentType:\n      n = document.implementation.createDocumentType(\n        e.name,\n        e.publicId,\n        e.systemId\n      );\n      break;\n    case d.Element: {\n      let a = e.tagName.toLowerCase();\n      a = mi[a] || a, i && \"isSVG\" in i && (i != null && i.isSVG) ? n = document.createElementNS(Ft.svg, a) : n = document.createElement(e.tagName);\n      break;\n    }\n    case d.Text:\n      n = document.createTextNode(e.data);\n      break;\n    case d.Comment:\n      n = document.createComment(e.data);\n      break;\n    case d.CDATA:\n      n = document.createCDATASection(e.data);\n      break;\n  }\n  i && t.add(n, { ...i });\n  try {\n    R == null || R.add(n);\n  } catch {\n  }\n  return n;\n}\nfunction Qt(e, t) {\n  return e.nodeType !== t.nodeType ? !1 : e.nodeType !== e.ELEMENT_NODE || e.tagName.toUpperCase() === t.tagName;\n}\nfunction _(e, t, s, r) {\n  const i = s.getId(e), n = r.getId(t);\n  return i === -1 || i !== n ? !1 : Qt(e, t);\n}\nclass H extends Zt {\n  constructor(s) {\n    super();\n    c(this, \"UNSERIALIZED_STARTING_ID\", -2);\n    // In the rrweb replayer, there are some unserialized nodes like the element that stores the injected style rules.\n    // These unserialized nodes may interfere the execution of the diff algorithm.\n    // The id of serialized node is larger than 0. So this value less than 0 is used as id for these unserialized nodes.\n    c(this, \"_unserializedId\", this.UNSERIALIZED_STARTING_ID);\n    c(this, \"mirror\", Mi());\n    c(this, \"scrollData\", null);\n    s && (this.mirror = s);\n  }\n  /**\n   * Every time the id is used, it will minus 1 automatically to avoid collisions.\n   */\n  get unserializedId() {\n    return this._unserializedId--;\n  }\n  createDocument(s, r, i) {\n    return new H();\n  }\n  createDocumentType(s, r, i) {\n    const n = new bi(\n      s,\n      r,\n      i\n    );\n    return n.ownerDocument = this, n;\n  }\n  createElement(s) {\n    const r = s.toUpperCase();\n    let i;\n    switch (r) {\n      case \"AUDIO\":\n      case \"VIDEO\":\n        i = new Ei(r);\n        break;\n      case \"IFRAME\":\n        i = new Ri(r, this.mirror);\n        break;\n      case \"CANVAS\":\n        i = new xi(r);\n        break;\n      case \"STYLE\":\n        i = new Ci(r);\n        break;\n      default:\n        i = new mt(r);\n        break;\n    }\n    return i.ownerDocument = this, i;\n  }\n  createComment(s) {\n    const r = new Si(s);\n    return r.ownerDocument = this, r;\n  }\n  createCDATASection(s) {\n    const r = new vi(s);\n    return r.ownerDocument = this, r;\n  }\n  createTextNode(s) {\n    const r = new Ni(s);\n    return r.ownerDocument = this, r;\n  }\n  destroyTree() {\n    this.firstChild = null, this.lastChild = null, this.mirror.reset();\n  }\n  open() {\n    super.open(), this._unserializedId = this.UNSERIALIZED_STARTING_ID;\n  }\n}\nconst bi = rs;\nclass mt extends qt {\n  constructor() {\n    super(...arguments);\n    c(this, \"inputData\", null);\n    c(this, \"scrollData\", null);\n  }\n}\nclass Ei extends fi {\n}\nclass xi extends mt {\n  constructor() {\n    super(...arguments);\n    c(this, \"rr_dataURL\", null);\n    c(this, \"canvasMutations\", []);\n  }\n  /**\n   * This is a dummy implementation to distinguish RRCanvasElement from real HTMLCanvasElement.\n   */\n  getContext() {\n    return null;\n  }\n}\nclass Ci extends mt {\n  constructor() {\n    super(...arguments);\n    c(this, \"rules\", []);\n  }\n}\nclass Ri extends mt {\n  constructor(s, r) {\n    super(s);\n    c(this, \"contentDocument\", new H());\n    this.contentDocument.mirror = r;\n  }\n}\nconst Ni = is, Si = ns, vi = os;\nfunction Oi(e) {\n  return e instanceof HTMLFormElement ? \"FORM\" : e.tagName.toUpperCase();\n}\nfunction Di(e, t, s, r) {\n  let i;\n  switch (e.nodeType) {\n    case C.DOCUMENT_NODE:\n      r && r.nodeName === \"IFRAME\" ? i = r.contentDocument : (i = t, i.compatMode = e.compatMode);\n      break;\n    case C.DOCUMENT_TYPE_NODE: {\n      const a = e;\n      i = t.createDocumentType(\n        a.name,\n        a.publicId,\n        a.systemId\n      );\n      break;\n    }\n    case C.ELEMENT_NODE: {\n      const a = e, o = Oi(a);\n      i = t.createElement(o);\n      const l = i;\n      for (const { name: p, value: u } of Array.from(a.attributes))\n        l.attributes[p] = u;\n      a.scrollLeft && (l.scrollLeft = a.scrollLeft), a.scrollTop && (l.scrollTop = a.scrollTop);\n      break;\n    }\n    case C.TEXT_NODE:\n      i = t.createTextNode(e.textContent || \"\");\n      break;\n    case C.CDATA_SECTION_NODE:\n      i = t.createCDATASection(e.data);\n      break;\n    case C.COMMENT_NODE:\n      i = t.createComment(e.textContent || \"\");\n      break;\n    case C.DOCUMENT_FRAGMENT_NODE:\n      i = r.attachShadow({ mode: \"open\" });\n      break;\n    default:\n      return null;\n  }\n  let n = s.getMeta(e);\n  return t instanceof H && (n || (n = Ai(i, t.unserializedId), s.add(e, n)), t.mirror.add(i, { ...n })), i;\n}\nfunction Ii(e, t = ws(), s = new H()) {\n  function r(i, n) {\n    const a = Di(i, s, t, n);\n    if (a !== null)\n      if (\n        // if the parentRRNode isn't a RRIFrameElement\n        (n == null ? void 0 : n.nodeName) !== \"IFRAME\" && // if node isn't a shadow root\n        i.nodeType !== C.DOCUMENT_FRAGMENT_NODE && (n == null || n.appendChild(a), a.parentNode = n, a.parentElement = n), i.nodeName === \"IFRAME\"\n      ) {\n        const o = i.contentDocument;\n        o && r(o, a);\n      } else (i.nodeType === C.DOCUMENT_NODE || i.nodeType === C.ELEMENT_NODE || i.nodeType === C.DOCUMENT_FRAGMENT_NODE) && (i.nodeType === C.ELEMENT_NODE && i.shadowRoot && r(i.shadowRoot, a), i.childNodes.forEach((o) => r(o, a)));\n  }\n  return r(e, null), s;\n}\nfunction Mi() {\n  return new ki();\n}\nclass ki {\n  constructor() {\n    c(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    c(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(t) {\n    var r;\n    return t ? ((r = this.getMeta(t)) == null ? void 0 : r.id) ?? -1 : -1;\n  }\n  getNode(t) {\n    return this.idNodeMap.get(t) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(t) {\n    return this.nodeMetaMap.get(t) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(t) {\n    const s = this.getId(t);\n    this.idNodeMap.delete(s), t.childNodes && t.childNodes.forEach((r) => this.removeNodeFromMap(r));\n  }\n  has(t) {\n    return this.idNodeMap.has(t);\n  }\n  hasNode(t) {\n    return this.nodeMetaMap.has(t);\n  }\n  add(t, s) {\n    const r = s.id;\n    this.idNodeMap.set(r, t), this.nodeMetaMap.set(t, s);\n  }\n  replace(t, s) {\n    const r = this.getNode(t);\n    if (r) {\n      const i = this.nodeMetaMap.get(r);\n      i && this.nodeMetaMap.set(s, i);\n    }\n    this.idNodeMap.set(t, s);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map(), this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction Ai(e, t) {\n  switch (e.RRNodeType) {\n    case d.Document:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        childNodes: []\n      };\n    case d.DocumentType: {\n      const s = e;\n      return {\n        id: t,\n        type: e.RRNodeType,\n        name: s.name,\n        publicId: s.publicId,\n        systemId: s.systemId\n      };\n    }\n    case d.Element:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        tagName: e.tagName.toLowerCase(),\n        // In rrweb data, all tagNames are lowercase.\n        attributes: {},\n        childNodes: []\n      };\n    case d.Text:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: e.textContent || \"\"\n      };\n    case d.Comment:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: e.textContent || \"\"\n      };\n    case d.CDATA:\n      return {\n        id: t,\n        type: e.RRNodeType,\n        textContent: \"\"\n      };\n  }\n}\nfunction _i(e, t) {\n  return nt(e, t, \"\");\n}\nfunction nt(e, t, s) {\n  let r = `${s}${t.getId(e)} ${e.toString()}\n`;\n  if (e.RRNodeType === d.Element) {\n    const i = e;\n    i.shadowRoot && (r += nt(i.shadowRoot, t, s + \"  \"));\n  }\n  for (const i of e.childNodes)\n    r += nt(i, t, s + \"  \");\n  return e.nodeName === \"IFRAME\" && (r += nt(\n    e.contentDocument,\n    t,\n    s + \"  \"\n  )), r;\n}\nexport {\n  os as BaseRRCDATASection,\n  ns as BaseRRComment,\n  Zt as BaseRRDocument,\n  rs as BaseRRDocumentType,\n  qt as BaseRRElement,\n  fi as BaseRRMediaElement,\n  A as BaseRRNode,\n  is as BaseRRText,\n  di as ClassList,\n  ki as Mirror,\n  C as NodeType,\n  vi as RRCDATASection,\n  xi as RRCanvasElement,\n  Si as RRComment,\n  H as RRDocument,\n  bi as RRDocumentType,\n  mt as RRElement,\n  Ri as RRIFrameElement,\n  Ei as RRMediaElement,\n  A as RRNode,\n  Ci as RRStyleElement,\n  Ni as RRText,\n  Ii as buildFromDom,\n  Di as buildFromNode,\n  Mi as createMirror,\n  Bt as createOrGetNode,\n  us as diff,\n  Ai as getDefaultSN,\n  _i as printRRDom\n};\n//# sourceMappingURL=rrdom.js.map\n", "export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n", "import type { CanvasArg, SerializedCanvasArg } from '@sailfish-rrweb/types';\nimport { decode } from 'base64-arraybuffer';\nimport type { Replayer } from '../';\n\n// TODO: add ability to wipe this list\ntype GLVarMap = Map<string, any[]>;\nconst webGLVarMap: Map<\n  CanvasRenderingContext2D | WebGLRenderingContext | WebGL2RenderingContext,\n  GLVarMap\n> = new Map();\nexport function variableListFor(\n  ctx:\n    | CanvasRenderingContext2D\n    | WebGLRenderingContext\n    | WebGL2RenderingContext,\n  ctor: string,\n) {\n  let contextMap = webGLVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = new Map();\n    webGLVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n  return contextMap.get(ctor) as any[];\n}\n\nexport function isSerializedArg(arg: unknown): arg is SerializedCanvasArg {\n  return Boolean(arg && typeof arg === 'object' && 'rr_type' in arg);\n}\n\nexport function deserializeArg(\n  imageMap: Replayer['imageMap'],\n  ctx:\n    | CanvasRenderingContext2D\n    | WebGLRenderingContext\n    | WebGL2RenderingContext\n    | null,\n  preload?: {\n    isUnchanged: boolean;\n  },\n): (arg: CanvasArg) => Promise<any> {\n  return async (arg: CanvasArg): Promise<any> => {\n    if (arg && typeof arg === 'object' && 'rr_type' in arg) {\n      if (preload) preload.isUnchanged = false;\n      if (arg.rr_type === 'ImageBitmap' && 'args' in arg) {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        const args = await deserializeArg(imageMap, ctx, preload)(arg.args);\n        // eslint-disable-next-line prefer-spread\n        return await createImageBitmap.apply(null, args);\n      } else if ('index' in arg) {\n        if (preload || ctx === null) return arg; // we are preloading, ctx is unknown\n        const { rr_type: name, index } = arg;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return variableListFor(ctx, name)[index];\n      } else if ('args' in arg) {\n        const { rr_type: name, args } = arg;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        const ctor = window[name as keyof Window];\n\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n        return new ctor(\n          ...(await Promise.all(\n            args.map(deserializeArg(imageMap, ctx, preload)),\n          )),\n        );\n      } else if ('base64' in arg) {\n        return decode(arg.base64);\n      } else if ('src' in arg) {\n        const image = imageMap.get(arg.src);\n        if (image) {\n          return image;\n        } else {\n          const image = new Image();\n          image.src = arg.src;\n          imageMap.set(arg.src, image);\n          return image;\n        }\n      } else if ('data' in arg && arg.rr_type === 'Blob') {\n        const blobContents = await Promise.all(\n          arg.data.map(deserializeArg(imageMap, ctx, preload)),\n        );\n        const blob = new Blob(blobContents, {\n          type: arg.type,\n        });\n        return blob;\n      }\n    } else if (Array.isArray(arg)) {\n      const result = await Promise.all(\n        arg.map(deserializeArg(imageMap, ctx, preload)),\n      );\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return result;\n    }\n    return arg;\n  };\n}\n", "import type { canvasMutationCommand } from '@sailfish-rrweb/types';\nimport type { Replayer } from '../';\nimport { deserializeArg } from './deserialize-args';\n\nexport default async function canvasMutation({\n  event,\n  mutations,\n  target,\n  imageMap,\n  errorHandler,\n}: {\n  event: Parameters<Replayer['applyIncremental']>[0];\n  mutations: canvasMutationCommand[];\n  target: HTMLCanvasElement;\n  imageMap: Replayer['imageMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  const ctx = target.getContext('2d');\n\n  if (!ctx) {\n    errorHandler(mutations[0], new Error('Canvas context is null'));\n    return;\n  }\n\n  // step 1, deserialize args, they may be async\n  const mutationArgsPromises = mutations.map(\n    async (mutation: canvasMutationCommand): Promise<unknown[]> => {\n      return Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)));\n    },\n  );\n  const args = await Promise.all(mutationArgsPromises);\n  // step 2 apply all mutations\n  args.forEach((args, index) => {\n    const mutation = mutations[index];\n    try {\n      if (mutation.setter) {\n        // skip some read-only type checks\n        (ctx as unknown as Record<string, unknown>)[mutation.property] =\n          mutation.args[0];\n        return;\n      }\n      const original = ctx[\n        mutation.property as Exclude<keyof typeof ctx, 'canvas'>\n      ] as (ctx: CanvasRenderingContext2D, args: unknown[]) => void;\n\n      /**\n       * We have serialized the image source into base64 string during recording,\n       * which has been preloaded before replay.\n       * So we can get call drawImage SYNCHRONOUSLY which avoid some fragile cast.\n       */\n      if (\n        mutation.property === 'drawImage' &&\n        typeof mutation.args[0] === 'string'\n      ) {\n        imageMap.get(event);\n        original.apply(ctx, mutation.args);\n      } else {\n        original.apply(ctx, args);\n      }\n    } catch (error) {\n      errorHandler(mutation, error);\n    }\n\n    return;\n  });\n}\n", "import {\n  CanvasContext,\n  type canvasMutationCommand,\n} from '@sailfish-rrweb/types';\nimport type { Replayer } from '../';\nimport { deserializeArg, variableListFor } from './deserialize-args';\n\nfunction getContext(\n  target: HTMLCanvasElement,\n  type: CanvasContext,\n): WebGLRenderingContext | WebGL2RenderingContext | null {\n  // Note to whomever is going to implement support for `contextAttributes`:\n  // if `preserveDrawingBuffer` is set to true,\n  // you might have to do `ctx.flush()` before every webgl canvas event\n  try {\n    if (type === CanvasContext.WebGL) {\n      return (\n        target.getContext('webgl')! || target.getContext('experimental-webgl')\n      );\n    }\n    return target.getContext('webgl2')!;\n  } catch (e) {\n    return null;\n  }\n}\n\nconst WebGLVariableConstructorsNames = [\n  'WebGLActiveInfo',\n  'WebGLBuffer',\n  'WebGLFramebuffer',\n  'WebGLProgram',\n  'WebGLRenderbuffer',\n  'WebGLShader',\n  'WebGLShaderPrecisionFormat',\n  'WebGLTexture',\n  'WebGLUniformLocation',\n  'WebGLVertexArrayObject',\n];\n\nfunction saveToWebGLVarMap(\n  ctx: WebGLRenderingContext | WebGL2RenderingContext,\n  result: any,\n) {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  if (!result?.constructor) return; // probably null or undefined\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n  const { name } = result.constructor;\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n  if (!WebGLVariableConstructorsNames.includes(name)) return; // not a WebGL variable\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n  const variables = variableListFor(ctx, name);\n  if (!variables.includes(result)) variables.push(result);\n}\n\nexport default async function webglMutation({\n  mutation,\n  target,\n  type,\n  imageMap,\n  errorHandler,\n}: {\n  mutation: canvasMutationCommand;\n  target: HTMLCanvasElement;\n  type: CanvasContext;\n  imageMap: Replayer['imageMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  try {\n    const ctx = getContext(target, type);\n    if (!ctx) return;\n\n    // NOTE: if `preserveDrawingBuffer` is set to true,\n    // we must flush the buffers on every new canvas event\n    // if (mutation.newFrame) ctx.flush();\n\n    if (mutation.setter) {\n      // skip some read-only type checks\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      (ctx as any)[mutation.property] = mutation.args[0];\n      return;\n    }\n    const original = ctx[\n      mutation.property as Exclude<keyof typeof ctx, 'canvas'>\n    ] as (\n      ctx: WebGLRenderingContext | WebGL2RenderingContext,\n      args: unknown[],\n    ) => void;\n\n    const args = await Promise.all(\n      mutation.args.map(deserializeArg(imageMap, ctx)),\n    );\n    const result = original.apply(ctx, args);\n    saveToWebGLVarMap(ctx, result);\n\n    // Slows down replay considerably, only use for debugging\n    const debugMode = false;\n    if (debugMode) {\n      if (mutation.property === 'compileShader') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        if (!ctx.getShaderParameter(args[0], ctx.COMPILE_STATUS))\n          console.warn(\n            'something went wrong in replay',\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n            ctx.getShaderInfoLog(args[0]),\n          );\n      } else if (mutation.property === 'linkProgram') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        ctx.validateProgram(args[0]);\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        if (!ctx.getProgramParameter(args[0], ctx.LINK_STATUS))\n          console.warn(\n            'something went wrong in replay',\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n            ctx.getProgramInfoLog(args[0]),\n          );\n      }\n      const webglError = ctx.getError();\n      if (webglError !== ctx.NO_ERROR) {\n        console.warn(\n          'WEBGL ERROR',\n          webglError,\n          'on command:',\n          mutation.property,\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n          ...args,\n        );\n      }\n    }\n  } catch (error) {\n    errorHandler(mutation, error);\n  }\n}\n", "import {\n  CanvasContext,\n  type canvasMutationCommand,\n  type canvasMutationData,\n  type canvasMutationParam,\n} from '@sailfish-rrweb/types';\nimport type { Replayer } from '..';\nimport canvas2DMutation from './2d';\nimport webglMutation from './webgl';\n\nexport default async function canvasMutation({\n  event,\n  mutation,\n  target,\n  imageMap,\n  canvasEventMap,\n  errorHandler,\n}: {\n  event: Parameters<Replayer['applyIncremental']>[0];\n  mutation: canvasMutationData;\n  target: HTMLCanvasElement;\n  imageMap: Replayer['imageMap'];\n  canvasEventMap: Replayer['canvasEventMap'];\n  errorHandler: Replayer['warnCanvasMutationFailed'];\n}): Promise<void> {\n  try {\n    const precomputedMutation: canvasMutationParam =\n      canvasEventMap.get(event) || mutation;\n\n    const commands: canvasMutationCommand[] =\n      'commands' in precomputedMutation\n        ? precomputedMutation.commands\n        : [precomputedMutation];\n\n    if ([CanvasContext.WebGL, CanvasContext.WebGL2].includes(mutation.type)) {\n      for (let i = 0; i < commands.length; i++) {\n        const command = commands[i];\n        await webglMutation({\n          mutation: command,\n          type: mutation.type,\n          target,\n          imageMap,\n          errorHandler,\n        });\n      }\n      return;\n    }\n    // default is '2d' for backwards compatibility (rrweb below 1.1.x)\n    await canvas2DMutation({\n      event,\n      mutations: commands,\n      target,\n      imageMap,\n      errorHandler,\n    });\n  } catch (error) {\n    errorHandler(mutation, error);\n  }\n}\n", "/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction t(t,n){var e=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var r,o,i=e.call(t),a=[];try{for(;(void 0===n||n-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(e=i.return)&&e.call(i)}finally{if(o)throw o.error}}return a}var n;!function(t){t[t.NotStarted=0]=\"NotStarted\",t[t.Running=1]=\"Running\",t[t.Stopped=2]=\"Stopped\"}(n||(n={}));var e={type:\"xstate.init\"};function r(t){return void 0===t?[]:[].concat(t)}function o(t){return{type:\"xstate.assign\",assignment:t}}function i(t,n){return\"string\"==typeof(t=\"string\"==typeof t&&n&&n[t]?n[t]:t)?{type:t}:\"function\"==typeof t?{type:t.name,exec:t}:t}function a(t){return function(n){return t===n}}function u(t){return\"string\"==typeof t?{type:t}:t}function c(t,n){return{value:t,context:n,actions:[],changed:!1,matches:a(t)}}function f(t,n,e){var r=n,o=!1;return[t.filter((function(t){if(\"xstate.assign\"===t.type){o=!0;var n=Object.assign({},r);return\"function\"==typeof t.assignment?n=t.assignment(r,e):Object.keys(t.assignment).forEach((function(o){n[o]=\"function\"==typeof t.assignment[o]?t.assignment[o](r,e):t.assignment[o]})),r=n,!1}return!0})),r,o]}function s(n,o){void 0===o&&(o={});var s=t(f(r(n.states[n.initial].entry).map((function(t){return i(t,o.actions)})),n.context,e),2),l=s[0],v=s[1],y={config:n,_options:o,initialState:{value:n.initial,actions:l,context:v,matches:a(n.initial)},transition:function(e,o){var s,l,v=\"string\"==typeof e?{value:e,context:n.context}:e,p=v.value,g=v.context,d=u(o),x=n.states[p];if(x.on){var m=r(x.on[d.type]);try{for(var h=function(t){var n=\"function\"==typeof Symbol&&Symbol.iterator,e=n&&t[n],r=0;if(e)return e.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(n?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}(m),b=h.next();!b.done;b=h.next()){var S=b.value;if(void 0===S)return c(p,g);var w=\"string\"==typeof S?{target:S}:S,j=w.target,E=w.actions,R=void 0===E?[]:E,N=w.cond,O=void 0===N?function(){return!0}:N,_=void 0===j,k=null!=j?j:p,T=n.states[k];if(O(g,d)){var q=t(f((_?r(R):[].concat(x.exit,R,T.entry).filter((function(t){return t}))).map((function(t){return i(t,y._options.actions)})),g,d),3),z=q[0],A=q[1],B=q[2],C=null!=j?j:p;return{value:C,context:A,actions:z,changed:j!==p||z.length>0||B,matches:a(C)}}}}catch(t){s={error:t}}finally{try{b&&!b.done&&(l=h.return)&&l.call(h)}finally{if(s)throw s.error}}}return c(p,g)}};return y}var l=function(t,n){return t.actions.forEach((function(e){var r=e.exec;return r&&r(t.context,n)}))};function v(t){var r=t.initialState,o=n.NotStarted,i=new Set,c={_machine:t,send:function(e){o===n.Running&&(r=t.transition(r,e),l(r,u(e)),i.forEach((function(t){return t(r)})))},subscribe:function(t){return i.add(t),t(r),{unsubscribe:function(){return i.delete(t)}}},start:function(i){if(i){var u=\"object\"==typeof i?i:{context:t.config.context,value:i};r={value:u.value,actions:[],context:u.context,matches:a(u.value)}}return o=n.Running,l(r,e),c},stop:function(){return o=n.Stopped,i.clear(),c},get state(){return r},get status(){return o}};return c}export{n as InterpreterStatus,o as assign,s as createMachine,v as interpret};\n", "import {\n  EventType,\n  IncrementalSource,\n  type actionWithDelay,\n  type eventWithTime,\n} from '@sailfish-rrweb/types';\n\nexport class Timer {\n  public timeOffset = 0;\n  public speed: number;\n\n  private actions: actionWithDelay[];\n  private raf: number | true | null = null;\n  private lastTimestamp: number;\n\n  constructor(\n    actions: actionWithDelay[] = [],\n    config: {\n      speed: number;\n    },\n  ) {\n    this.actions = actions;\n    this.speed = config.speed;\n  }\n  /**\n   * Add an action, possibly after the timer starts.\n   */\n  public addAction(action: actionWithDelay) {\n    const rafWasActive = this.raf === true;\n    if (\n      !this.actions.length ||\n      this.actions[this.actions.length - 1].delay <= action.delay\n    ) {\n      // 'fast track'\n      this.actions.push(action);\n    } else {\n      // binary search - events can arrive out of order in a realtime context\n      const index = this.findActionIndex(action);\n      this.actions.splice(index, 0, action);\n    }\n    if (rafWasActive) {\n      this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n    }\n  }\n\n  public start() {\n    this.timeOffset = 0;\n    this.lastTimestamp = performance.now();\n    this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n  }\n\n  private rafCheck() {\n    const time = performance.now();\n    this.timeOffset += (time - this.lastTimestamp) * this.speed;\n    this.lastTimestamp = time;\n    while (this.actions.length) {\n      const action = this.actions[0];\n\n      if (this.timeOffset >= action.delay) {\n        this.actions.shift();\n        action.doAction();\n      } else {\n        break;\n      }\n    }\n    if (this.actions.length > 0) {\n      this.raf = requestAnimationFrame(this.rafCheck.bind(this));\n    } else {\n      this.raf = true; // was active\n    }\n  }\n\n  public clear() {\n    if (this.raf) {\n      if (this.raf !== true) {\n        cancelAnimationFrame(this.raf);\n      }\n      this.raf = null;\n    }\n    this.actions.length = 0;\n  }\n\n  public setSpeed(speed: number) {\n    this.speed = speed;\n  }\n\n  public isActive() {\n    return this.raf !== null;\n  }\n\n  private findActionIndex(action: actionWithDelay): number {\n    let start = 0;\n    let end = this.actions.length - 1;\n    while (start <= end) {\n      const mid = Math.floor((start + end) / 2);\n      if (this.actions[mid].delay < action.delay) {\n        start = mid + 1;\n      } else if (this.actions[mid].delay > action.delay) {\n        end = mid - 1;\n      } else {\n        // already an action with same delay (timestamp)\n        // the plus one will splice the new one after the existing one\n        return mid + 1;\n      }\n    }\n    return start;\n  }\n}\n\n// TODO: add speed to mouse move timestamp calculation\nexport function addDelay(event: eventWithTime, baselineTime: number): number {\n  // Mouse move events was recorded in a throttle function,\n  // so we need to find the real timestamp by traverse the time offsets.\n  if (\n    event.type === EventType.IncrementalSnapshot &&\n    event.data.source === IncrementalSource.MouseMove &&\n    event.data.positions &&\n    event.data.positions.length\n  ) {\n    const firstOffset = event.data.positions[0].timeOffset;\n    // timeOffset is a negative offset to event.timestamp\n    const firstTimestamp = event.timestamp + firstOffset;\n    event.delay = firstTimestamp - baselineTime;\n    return firstTimestamp - baselineTime;\n  }\n\n  event.delay = event.timestamp - baselineTime;\n  return event.delay;\n}\n", "import {\n  EventType,\n  ReplayerEvents,\n  type Emitter,\n  type eventWithTime,\n} from '@sailfish-rrweb/types';\nimport {\n  assign,\n  createMachine,\n  interpret,\n  type StateMachine,\n} from '@xstate/fsm';\nimport type { playerConfig } from '../types';\nimport { Timer, addDelay } from './timer';\n\nexport type PlayerContext = {\n  events: eventWithTime[];\n  timer: Timer;\n  timeOffset: number;\n  baselineTime: number;\n  lastPlayedEvent: eventWithTime | null;\n};\nexport type PlayerEvent =\n  | {\n      type: 'PLAY';\n      payload: {\n        timeOffset: number;\n      };\n    }\n  | {\n      type: 'CAST_EVENT';\n      payload: {\n        event: eventWithTime;\n      };\n    }\n  | { type: 'PAUSE' }\n  | { type: 'TO_LIVE'; payload: { baselineTime?: number } }\n  | {\n      type: 'ADD_EVENT';\n      payload: {\n        event: eventWithTime;\n      };\n    }\n  | {\n      type: 'END';\n    };\nexport type PlayerState =\n  | {\n      value: 'playing';\n      context: PlayerContext;\n    }\n  | {\n      value: 'paused';\n      context: PlayerContext;\n    }\n  | {\n      value: 'live';\n      context: PlayerContext;\n    };\n\n/**\n * If the array have multiple meta and fullsnapshot events,\n * return the events from the last page boundary to the end.\n *\n * A page boundary is identified by a FullSnapshot (type 2) event,\n * optionally preceded by a Meta (type 4) event. We search for\n * FullSnapshot instead of Meta because some page visits may have\n * their Meta timestamp slightly after the target time, while the\n * FullSnapshot is the actual DOM rebuild point we need.\n */\nexport function discardPriorSnapshots(\n  events: eventWithTime[],\n  baselineTime: number,\n): eventWithTime[] {\n  for (let idx = events.length - 1; idx >= 0; idx--) {\n    const event = events[idx];\n    if (event.type === EventType.FullSnapshot) {\n      if (event.timestamp <= baselineTime) {\n        // Include the preceding Meta event if it exists right before this\n        // FullSnapshot, so viewport dimensions are applied correctly.\n        if (\n          idx > 0 &&\n          events[idx - 1].type === EventType.Meta &&\n          events[idx - 1].timestamp <= baselineTime\n        ) {\n          return events.slice(idx - 1);\n        }\n        return events.slice(idx);\n      }\n    }\n  }\n  return events;\n}\n\ntype PlayerAssets = {\n  emitter: Emitter;\n  applyEventsSynchronously(events: Array<eventWithTime>): void;\n  getCastFn(event: eventWithTime, isSync: boolean): () => void;\n};\nexport function createPlayerService(\n  context: PlayerContext,\n  { getCastFn, applyEventsSynchronously, emitter }: PlayerAssets,\n) {\n  const playerMachine = createMachine<PlayerContext, PlayerEvent, PlayerState>(\n    {\n      id: 'player',\n      context,\n      initial: 'paused',\n      states: {\n        playing: {\n          on: {\n            PAUSE: {\n              target: 'paused',\n              actions: ['pause'],\n            },\n            CAST_EVENT: {\n              target: 'playing',\n              actions: 'castEvent',\n            },\n            END: {\n              target: 'paused',\n              actions: ['resetLastPlayedEvent', 'pause'],\n            },\n            ADD_EVENT: {\n              target: 'playing',\n              actions: ['addEvent'],\n            },\n          },\n        },\n        paused: {\n          on: {\n            PLAY: {\n              target: 'playing',\n              actions: ['recordTimeOffset', 'play'],\n            },\n            CAST_EVENT: {\n              target: 'paused',\n              actions: 'castEvent',\n            },\n            TO_LIVE: {\n              target: 'live',\n              actions: ['startLive'],\n            },\n            ADD_EVENT: {\n              target: 'paused',\n              actions: ['addEvent'],\n            },\n          },\n        },\n        live: {\n          on: {\n            ADD_EVENT: {\n              target: 'live',\n              actions: ['addEvent'],\n            },\n            CAST_EVENT: {\n              target: 'live',\n              actions: ['castEvent'],\n            },\n          },\n        },\n      },\n    },\n    {\n      actions: {\n        castEvent: assign({\n          lastPlayedEvent: (ctx, event) => {\n            if (event.type === 'CAST_EVENT') {\n              return event.payload.event;\n            }\n            return ctx.lastPlayedEvent;\n          },\n        }),\n        recordTimeOffset: assign((ctx, event) => {\n          let timeOffset = ctx.timeOffset;\n          if ('payload' in event && 'timeOffset' in event.payload) {\n            timeOffset = event.payload.timeOffset;\n          }\n          return {\n            ...ctx,\n            timeOffset,\n            baselineTime: ctx.events[0].timestamp + timeOffset,\n          };\n        }),\n        play(ctx) {\n          const { timer, events, baselineTime } = ctx;\n          timer.clear();\n\n          for (const event of events) {\n            // TODO: improve this API\n            addDelay(event, baselineTime);\n          }\n          const neededEvents = discardPriorSnapshots(events, baselineTime);\n\n          emitter.emit(ReplayerEvents.PlayBack);\n\n          const syncEvents = new Array<eventWithTime>();\n          for (const event of neededEvents) {\n            if (event.timestamp < baselineTime) {\n              syncEvents.push(event);\n            } else {\n              const castFn = getCastFn(event, false);\n              timer.addAction({\n                doAction: () => {\n                  castFn();\n                },\n                delay: event.delay!,\n              });\n            }\n          }\n          applyEventsSynchronously(syncEvents);\n          emitter.emit(ReplayerEvents.Flush);\n          timer.start();\n        },\n        pause(ctx) {\n          ctx.timer.clear();\n        },\n        resetLastPlayedEvent: assign((ctx) => {\n          return {\n            ...ctx,\n            lastPlayedEvent: null,\n          };\n        }),\n        startLive: assign({\n          baselineTime: (ctx, event) => {\n            ctx.timer.start();\n            if (event.type === 'TO_LIVE' && event.payload.baselineTime) {\n              return event.payload.baselineTime;\n            }\n            return Date.now();\n          },\n        }),\n        addEvent: assign((ctx, machineEvent) => {\n          const { baselineTime, timer, events } = ctx;\n          if (machineEvent.type === 'ADD_EVENT') {\n            const { event } = machineEvent.payload;\n            addDelay(event, baselineTime);\n\n            let end = events.length - 1;\n            if (!events[end] || events[end].timestamp <= event.timestamp) {\n              // fast track\n              events.push(event);\n            } else {\n              let insertionIndex = -1;\n              let start = 0;\n              while (start <= end) {\n                const mid = Math.floor((start + end) / 2);\n                if (events[mid].timestamp <= event.timestamp) {\n                  start = mid + 1;\n                } else {\n                  end = mid - 1;\n                }\n              }\n              if (insertionIndex === -1) {\n                insertionIndex = start;\n              }\n              events.splice(insertionIndex, 0, event);\n            }\n\n            const isSync = event.timestamp < baselineTime;\n            // Skip applying ANY sync event if a later FullSnapshot exists\n            // before baselineTime — the current DOM is built from that later\n            // snapshot, so applying older events (including incremental ones)\n            // would corrupt the DOM with stale node references.\n            let skipSync = false;\n            if (isSync) {\n              for (let i = events.length - 1; i >= 0; i--) {\n                const e = events[i];\n                if (e === event) break;\n                if (\n                  e.type === EventType.FullSnapshot &&\n                  e.timestamp > event.timestamp &&\n                  e.timestamp <= baselineTime\n                ) {\n                  skipSync = true;\n                  break;\n                }\n              }\n            }\n\n            if (!skipSync) {\n              const castFn = getCastFn(event, isSync);\n              if (isSync) {\n                castFn();\n              } else if (timer.isActive()) {\n                timer.addAction({\n                  doAction: () => {\n                    castFn();\n                  },\n                  delay: event.delay!,\n                });\n              }\n            }\n          }\n          return { ...ctx, events };\n        }),\n      },\n    },\n  );\n  return interpret(playerMachine);\n}\n\nexport type SpeedContext = {\n  normalSpeed: playerConfig['speed'];\n  timer: Timer;\n};\n\nexport type SpeedEvent =\n  | {\n      type: 'FAST_FORWARD';\n      payload: { speed: playerConfig['speed'] };\n    }\n  | {\n      type: 'BACK_TO_NORMAL';\n    }\n  | {\n      type: 'SET_SPEED';\n      payload: { speed: playerConfig['speed'] };\n    };\n\nexport type SpeedState =\n  | {\n      value: 'normal';\n      context: SpeedContext;\n    }\n  | {\n      value: 'skipping';\n      context: SpeedContext;\n    };\n\nexport function createSpeedService(context: SpeedContext) {\n  const speedMachine = createMachine<SpeedContext, SpeedEvent, SpeedState>(\n    {\n      id: 'speed',\n      context,\n      initial: 'normal',\n      states: {\n        normal: {\n          on: {\n            FAST_FORWARD: {\n              target: 'skipping',\n              actions: ['recordSpeed', 'setSpeed'],\n            },\n            SET_SPEED: {\n              target: 'normal',\n              actions: ['setSpeed'],\n            },\n          },\n        },\n        skipping: {\n          on: {\n            BACK_TO_NORMAL: {\n              target: 'normal',\n              actions: ['restoreSpeed'],\n            },\n            SET_SPEED: {\n              target: 'normal',\n              actions: ['setSpeed'],\n            },\n          },\n        },\n      },\n    },\n    {\n      actions: {\n        setSpeed: (ctx, event) => {\n          if ('payload' in event) {\n            ctx.timer.setSpeed(event.payload.speed);\n          }\n        },\n        recordSpeed: assign({\n          normalSpeed: (ctx) => ctx.timer.speed,\n        }),\n        restoreSpeed: (ctx) => {\n          ctx.timer.setSpeed(ctx.normalSpeed);\n        },\n      },\n    },\n  );\n\n  return interpret(speedMachine);\n}\n\nexport type PlayerMachineState = StateMachine.State<\n  PlayerContext,\n  PlayerEvent,\n  PlayerState\n>;\n\nexport type SpeedMachineState = StateMachine.State<\n  SpeedContext,\n  SpeedEvent,\n  SpeedState\n>;\n", "import type { RRMediaElement } from '@sailfish-rrweb/rrdom';\nimport type { Mirror, mediaAttributes } from '@sailfish-rrweb/rrweb-snapshot';\nimport type { mediaInteractionData } from '@sailfish-rrweb/types';\nimport {\n  MediaInteractions,\n  ReplayerEvents,\n  type Emitter,\n} from '@sailfish-rrweb/types';\nimport type { createPlayerService, createSpeedService } from '../machine';\n\ntype MediaState = {\n  isPlaying: boolean;\n  currentTimeAtLastInteraction: number;\n  lastInteractionTimeOffset: number;\n  playbackRate: number;\n  loop: boolean;\n  volume: number;\n  muted: boolean;\n};\n\nexport class MediaManager {\n  private mediaMap: Map<HTMLMediaElement | RRMediaElement, MediaState> =\n    new Map();\n  private warn: (...args: Parameters<typeof console.warn>) => void;\n  private service: ReturnType<typeof createPlayerService>;\n  private speedService: ReturnType<typeof createSpeedService>;\n  private emitter: Emitter;\n  private getCurrentTime: () => number;\n  private metadataCallbackMap: WeakMap<\n    HTMLMediaElement | RRMediaElement,\n    () => void\n  > = new Map();\n\n  constructor(options: {\n    warn: (...args: Parameters<typeof console.warn>) => void;\n    service: ReturnType<typeof createPlayerService>;\n    speedService: ReturnType<typeof createSpeedService>;\n    getCurrentTime: () => number;\n    emitter: Emitter;\n  }) {\n    this.warn = options.warn;\n    this.service = options.service;\n    this.speedService = options.speedService;\n    this.emitter = options.emitter;\n    this.getCurrentTime = options.getCurrentTime;\n\n    this.emitter.on(ReplayerEvents.Start, this.start.bind(this));\n    this.emitter.on(ReplayerEvents.SkipStart, this.start.bind(this));\n    this.emitter.on(ReplayerEvents.Pause, this.pause.bind(this));\n    this.emitter.on(ReplayerEvents.Finish, this.pause.bind(this));\n    this.speedService.subscribe(() => {\n      this.syncAllMediaElements();\n    });\n  }\n\n  private syncAllMediaElements(options = { pause: false }) {\n    this.mediaMap.forEach((_mediaState, target) => {\n      this.syncTargetWithState(target);\n      if (options.pause) {\n        target.pause();\n      }\n    });\n  }\n\n  private start() {\n    this.syncAllMediaElements();\n  }\n\n  private pause() {\n    this.syncAllMediaElements({ pause: true });\n  }\n\n  private seekTo({\n    time,\n    target,\n    mediaState,\n  }: {\n    time: number;\n    target: HTMLMediaElement | RRMediaElement;\n    mediaState: MediaState;\n  }) {\n    if (mediaState.isPlaying) {\n      const differenceBetweenCurrentTimeAndMediaMutationTimestamp =\n        time - mediaState.lastInteractionTimeOffset;\n      const mediaPlaybackOffset =\n        (differenceBetweenCurrentTimeAndMediaMutationTimestamp / 1000) *\n        mediaState.playbackRate;\n\n      const duration = 'duration' in target && target.duration;\n\n      // Video hasn't loaded yet, wait for metadata\n      if (Number.isNaN(duration)) {\n        this.waitForMetadata(target);\n        return;\n      }\n\n      let seekToTime =\n        mediaState.currentTimeAtLastInteraction + mediaPlaybackOffset;\n\n      if (\n        target.loop &&\n        // RRMediaElement doesn't have a duration property\n        duration !== false\n      ) {\n        seekToTime = seekToTime % duration;\n      }\n\n      target.currentTime = seekToTime;\n    } else {\n      target.pause();\n      target.currentTime = mediaState.currentTimeAtLastInteraction;\n    }\n  }\n\n  private waitForMetadata(target: HTMLMediaElement | RRMediaElement) {\n    if (this.metadataCallbackMap.has(target)) return;\n    if (!('addEventListener' in target)) return;\n\n    const onLoadedMetadata = () => {\n      this.metadataCallbackMap.delete(target);\n      const mediaState = this.mediaMap.get(target);\n      if (!mediaState) return;\n      this.seekTo({\n        time: this.getCurrentTime(),\n        target,\n        mediaState,\n      });\n    };\n\n    this.metadataCallbackMap.set(target, onLoadedMetadata);\n    target.addEventListener('loadedmetadata', onLoadedMetadata, {\n      once: true,\n    });\n  }\n\n  private getMediaStateFromMutation({\n    target,\n    timeOffset,\n    mutation,\n  }: {\n    target: HTMLMediaElement | RRMediaElement;\n    timeOffset: number;\n    mutation: mediaInteractionData;\n  }): MediaState {\n    const lastState = this.mediaMap.get(target);\n    const { type, playbackRate, currentTime, muted, volume, loop } = mutation;\n\n    const isPlaying =\n      type === MediaInteractions.Play ||\n      (type !== MediaInteractions.Pause &&\n        (lastState?.isPlaying || target.getAttribute('autoplay') !== null));\n\n    const mediaState: MediaState = {\n      isPlaying,\n      currentTimeAtLastInteraction:\n        currentTime ?? lastState?.currentTimeAtLastInteraction ?? 0,\n      lastInteractionTimeOffset: timeOffset,\n      playbackRate: playbackRate ?? lastState?.playbackRate ?? 1,\n      volume: volume ?? lastState?.volume ?? 1,\n      muted: muted ?? lastState?.muted ?? target.getAttribute('muted') === null,\n      loop: loop ?? lastState?.loop ?? target.getAttribute('loop') === null,\n    };\n\n    return mediaState;\n  }\n\n  private syncTargetWithState(target: HTMLMediaElement | RRMediaElement) {\n    const mediaState = this.mediaMap.get(target);\n    if (!mediaState) return;\n    const { muted, loop, volume, isPlaying } = mediaState;\n    const playerIsPaused = this.service.state.matches('paused');\n    const playbackRate =\n      mediaState.playbackRate * this.speedService.state.context.timer.speed;\n\n    try {\n      this.seekTo({\n        time: this.getCurrentTime(),\n        target,\n        mediaState,\n      });\n\n      if (target.volume !== volume) {\n        target.volume = volume;\n      }\n      target.muted = muted;\n      target.loop = loop;\n\n      if (target.playbackRate !== playbackRate) {\n        // Avoid setting playbackRate when it's already the same\n        // Safari drops frames whenever playbackRate is set, even if it's the same\n        target.playbackRate = playbackRate;\n      }\n\n      if (isPlaying && !playerIsPaused) {\n        // remove listener for 'canplay' event because play() is async and returns a promise\n        // i.e. media will eventually start to play when data is loaded\n        // 'canplay' event fires even when currentTime attribute changes which may lead to\n        // unexpected behavior\n        void target.play();\n      } else {\n        target.pause();\n      }\n    } catch (error) {\n      this.warn(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions\n        `Failed to replay media interactions: ${error.message || error}`,\n      );\n    }\n  }\n\n  public addMediaElements(node: Node, timeOffset: number, mirror: Mirror) {\n    if (!['AUDIO', 'VIDEO'].includes(node.nodeName)) return;\n    const target = node as HTMLMediaElement;\n    const serializedNode = mirror.getMeta(target);\n    if (!serializedNode || !('attributes' in serializedNode)) return;\n    const playerIsPaused = this.service.state.matches('paused');\n    const mediaAttributes = serializedNode.attributes as\n      | mediaAttributes\n      | Record<string, never>;\n\n    let isPlaying = false;\n    if (mediaAttributes.rr_mediaState) {\n      isPlaying = mediaAttributes.rr_mediaState === 'played';\n    } else {\n      isPlaying = target.getAttribute('autoplay') !== null;\n    }\n    if (isPlaying && playerIsPaused) target.pause();\n\n    let playbackRate = 1;\n    if (typeof mediaAttributes.rr_mediaPlaybackRate === 'number') {\n      playbackRate = mediaAttributes.rr_mediaPlaybackRate;\n    }\n\n    let muted = false;\n    if (typeof mediaAttributes.rr_mediaMuted === 'boolean') {\n      muted = mediaAttributes.rr_mediaMuted;\n    } else {\n      muted = target.getAttribute('muted') !== null;\n    }\n\n    let loop = false;\n    if (typeof mediaAttributes.rr_mediaLoop === 'boolean') {\n      loop = mediaAttributes.rr_mediaLoop;\n    } else {\n      loop = target.getAttribute('loop') !== null;\n    }\n\n    let volume = 1;\n    if (typeof mediaAttributes.rr_mediaVolume === 'number') {\n      volume = mediaAttributes.rr_mediaVolume;\n    }\n\n    let currentTimeAtLastInteraction = 0;\n    if (typeof mediaAttributes.rr_mediaCurrentTime === 'number') {\n      currentTimeAtLastInteraction = mediaAttributes.rr_mediaCurrentTime;\n    }\n\n    this.mediaMap.set(target, {\n      isPlaying,\n      currentTimeAtLastInteraction,\n      lastInteractionTimeOffset: timeOffset,\n      playbackRate,\n      volume,\n      muted,\n      loop,\n    });\n    this.syncTargetWithState(target);\n  }\n\n  public mediaMutation({\n    target,\n    timeOffset,\n    mutation,\n  }: {\n    target: HTMLMediaElement | RRMediaElement;\n    timeOffset: number;\n    mutation: mediaInteractionData;\n  }) {\n    this.mediaMap.set(\n      target,\n      this.getMediaStateFromMutation({\n        target,\n        timeOffset,\n        mutation,\n      }),\n    );\n\n    this.syncTargetWithState(target);\n  }\n\n  public isSupportedMediaElement(node: Node): node is HTMLMediaElement {\n    return ['AUDIO', 'VIDEO'].includes(node.nodeName);\n  }\n\n  public reset() {\n    this.mediaMap.clear();\n  }\n}\n", "/**\n * A fork version of https://github.com/iamdustan/smoothscroll\n * Add support of customize target window and document\n */\n\n/* eslint-disable */\n// @ts-nocheck\nexport function polyfill(w: Window = window, d = document) {\n  // return if scroll behavior is supported and polyfill is not forced\n  if (\n    'scrollBehavior' in d.documentElement.style &&\n    w.__forceSmoothScrollPolyfill__ !== true\n  ) {\n    return;\n  }\n\n  // globals\n  const Element = w.HTMLElement || w.Element;\n  const SCROLL_TIME = 468;\n\n  // object gathering original scroll methods\n  const original = {\n    scroll: w.scroll || w.scrollTo,\n    scrollBy: w.scrollBy,\n    elementScroll: Element.prototype.scroll || scrollElement,\n    scrollIntoView: Element.prototype.scrollIntoView,\n  };\n\n  // define timing method\n  const now =\n    w.performance && w.performance.now\n      ? w.performance.now.bind(w.performance)\n      : Date.now;\n\n  /**\n   * indicates if a the current browser is made by Microsoft\n   * @method isMicrosoftBrowser\n   * @param {String} userAgent\n   * @returns {Boolean}\n   */\n  function isMicrosoftBrowser(userAgent) {\n    const userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n    return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n  }\n\n  /*\n   * IE has rounding bug rounding down clientHeight and clientWidth and\n   * rounding up scrollHeight and scrollWidth causing false positives\n   * on hasScrollableSpace\n   */\n  const ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n  /**\n   * changes scroll position inside an element\n   * @method scrollElement\n   * @param {Number} x\n   * @param {Number} y\n   * @returns {undefined}\n   */\n  function scrollElement(x, y) {\n    this.scrollLeft = x;\n    this.scrollTop = y;\n  }\n\n  /**\n   * returns result of applying ease math function to a number\n   * @method ease\n   * @param {Number} k\n   * @returns {Number}\n   */\n  function ease(k) {\n    return 0.5 * (1 - Math.cos(Math.PI * k));\n  }\n\n  /**\n   * indicates if a smooth behavior should be applied\n   * @method shouldBailOut\n   * @param {Number|Object} firstArg\n   * @returns {Boolean}\n   */\n  function shouldBailOut(firstArg) {\n    if (\n      firstArg === null ||\n      typeof firstArg !== 'object' ||\n      firstArg.behavior === undefined ||\n      firstArg.behavior === 'auto' ||\n      firstArg.behavior === 'instant'\n    ) {\n      // first argument is not an object/null\n      // or behavior is auto, instant or undefined\n      return true;\n    }\n\n    if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n      // first argument is an object and behavior is smooth\n      return false;\n    }\n\n    // throw error when behavior is not supported\n    throw new TypeError(\n      'behavior member of ScrollOptions ' +\n        firstArg.behavior +\n        ' is not a valid value for enumeration ScrollBehavior.',\n    );\n  }\n\n  /**\n   * indicates if an element has scrollable space in the provided axis\n   * @method hasScrollableSpace\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function hasScrollableSpace(el, axis) {\n    if (axis === 'Y') {\n      return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n    }\n\n    if (axis === 'X') {\n      return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n    }\n  }\n\n  /**\n   * indicates if an element has a scrollable overflow property in the axis\n   * @method canOverflow\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function canOverflow(el, axis) {\n    const overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n    return overflowValue === 'auto' || overflowValue === 'scroll';\n  }\n\n  /**\n   * indicates if an element can be scrolled in either axis\n   * @method isScrollable\n   * @param {Node} el\n   * @param {String} axis\n   * @returns {Boolean}\n   */\n  function isScrollable(el) {\n    const isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n    const isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n    return isScrollableY || isScrollableX;\n  }\n\n  /**\n   * finds scrollable parent of an element\n   * @method findScrollableParent\n   * @param {Node} el\n   * @returns {Node} el\n   */\n  function findScrollableParent(el) {\n    while (el !== d.body && isScrollable(el) === false) {\n      el = el.parentNode || el.host;\n    }\n\n    return el;\n  }\n\n  /**\n   * self invoked function that, given a context, steps through scrolling\n   * @method step\n   * @param {Object} context\n   * @returns {undefined}\n   */\n  function step(context) {\n    const time = now();\n    let value;\n    let currentX;\n    let currentY;\n    let elapsed = (time - context.startTime) / SCROLL_TIME;\n\n    // avoid elapsed times higher than one\n    elapsed = elapsed > 1 ? 1 : elapsed;\n\n    // apply easing to elapsed time\n    value = ease(elapsed);\n\n    currentX = context.startX + (context.x - context.startX) * value;\n    currentY = context.startY + (context.y - context.startY) * value;\n\n    context.method.call(context.scrollable, currentX, currentY);\n\n    // scroll more if we have not reached our destination\n    if (currentX !== context.x || currentY !== context.y) {\n      w.requestAnimationFrame(step.bind(w, context));\n    }\n  }\n\n  /**\n   * scrolls window or element with a smooth behavior\n   * @method smoothScroll\n   * @param {Object|Node} el\n   * @param {Number} x\n   * @param {Number} y\n   * @returns {undefined}\n   */\n  function smoothScroll(el, x, y) {\n    let scrollable;\n    let startX;\n    let startY;\n    let method;\n    const startTime = now();\n\n    // define scroll context\n    if (el === d.body) {\n      scrollable = w;\n      startX = w.scrollX || w.pageXOffset;\n      startY = w.scrollY || w.pageYOffset;\n      method = original.scroll;\n    } else {\n      scrollable = el;\n      startX = el.scrollLeft;\n      startY = el.scrollTop;\n      method = scrollElement;\n    }\n\n    // scroll looping over a frame\n    step({\n      scrollable: scrollable,\n      method: method,\n      startTime: startTime,\n      startX: startX,\n      startY: startY,\n      x: x,\n      y: y,\n    });\n  }\n\n  // ORIGINAL METHODS OVERRIDES\n  // w.scroll and w.scrollTo\n  w.scroll = w.scrollTo = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.scroll.call(\n        w,\n        arguments[0].left !== undefined\n          ? arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? arguments[0]\n          : w.scrollX || w.pageXOffset,\n        // use top prop, second argument if present or fallback to scrollY\n        arguments[0].top !== undefined\n          ? arguments[0].top\n          : arguments[1] !== undefined\n          ? arguments[1]\n          : w.scrollY || w.pageYOffset,\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\n    smoothScroll.call(\n      w,\n      d.body,\n      arguments[0].left !== undefined\n        ? ~~arguments[0].left\n        : w.scrollX || w.pageXOffset,\n      arguments[0].top !== undefined\n        ? ~~arguments[0].top\n        : w.scrollY || w.pageYOffset,\n    );\n  };\n\n  // w.scrollBy\n  w.scrollBy = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0])) {\n      original.scrollBy.call(\n        w,\n        arguments[0].left !== undefined\n          ? arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? arguments[0]\n          : 0,\n        arguments[0].top !== undefined\n          ? arguments[0].top\n          : arguments[1] !== undefined\n          ? arguments[1]\n          : 0,\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\n    smoothScroll.call(\n      w,\n      d.body,\n      ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n      ~~arguments[0].top + (w.scrollY || w.pageYOffset),\n    );\n  };\n\n  // Element.prototype.scroll and Element.prototype.scrollTo\n  Element.prototype.scroll = Element.prototype.scrollTo = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      // if one number is passed, throw error to match Firefox implementation\n      if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n        throw new SyntaxError('Value could not be converted');\n      }\n\n      original.elementScroll.call(\n        this,\n        // use left prop, first number argument or fallback to scrollLeft\n        arguments[0].left !== undefined\n          ? ~~arguments[0].left\n          : typeof arguments[0] !== 'object'\n          ? ~~arguments[0]\n          : this.scrollLeft,\n        // use top prop, second argument or fallback to scrollTop\n        arguments[0].top !== undefined\n          ? ~~arguments[0].top\n          : arguments[1] !== undefined\n          ? ~~arguments[1]\n          : this.scrollTop,\n      );\n\n      return;\n    }\n\n    const left = arguments[0].left;\n    const top = arguments[0].top;\n\n    // LET THE SMOOTHNESS BEGIN!\n    smoothScroll.call(\n      this,\n      this,\n      typeof left === 'undefined' ? this.scrollLeft : ~~left,\n      typeof top === 'undefined' ? this.scrollTop : ~~top,\n    );\n  };\n\n  // Element.prototype.scrollBy\n  Element.prototype.scrollBy = function () {\n    // avoid action when no arguments are passed\n    if (arguments[0] === undefined) {\n      return;\n    }\n\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.elementScroll.call(\n        this,\n        arguments[0].left !== undefined\n          ? ~~arguments[0].left + this.scrollLeft\n          : ~~arguments[0] + this.scrollLeft,\n        arguments[0].top !== undefined\n          ? ~~arguments[0].top + this.scrollTop\n          : ~~arguments[1] + this.scrollTop,\n      );\n\n      return;\n    }\n\n    this.scroll({\n      left: ~~arguments[0].left + this.scrollLeft,\n      top: ~~arguments[0].top + this.scrollTop,\n      behavior: arguments[0].behavior,\n    });\n  };\n\n  // Element.prototype.scrollIntoView\n  Element.prototype.scrollIntoView = function () {\n    // avoid smooth behavior if not required\n    if (shouldBailOut(arguments[0]) === true) {\n      original.scrollIntoView.call(\n        this,\n        arguments[0] === undefined ? true : arguments[0],\n      );\n\n      return;\n    }\n\n    // LET THE SMOOTHNESS BEGIN!\n    const scrollableParent = findScrollableParent(this);\n    const parentRects = scrollableParent.getBoundingClientRect();\n    const clientRects = this.getBoundingClientRect();\n\n    if (scrollableParent !== d.body) {\n      // reveal element inside parent\n      smoothScroll.call(\n        this,\n        scrollableParent,\n        scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n        scrollableParent.scrollTop + clientRects.top - parentRects.top,\n      );\n\n      // reveal parent in viewport unless is fixed\n      if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n        w.scrollBy({\n          left: parentRects.left,\n          top: parentRects.top,\n          behavior: 'smooth',\n        });\n      }\n    } else {\n      // reveal element in viewport\n      w.scrollBy({\n        left: clientRects.left,\n        top: clientRects.top,\n        behavior: 'smooth',\n      });\n    }\n  };\n}\n", "const rules: (blockClass: string) => string[] = (blockClass: string) => [\n  `.${blockClass} { background: currentColor }`,\n  'noscript { display: none !important; }',\n];\n\nexport default rules;\n", "import type {\n  RRCanvasElement,\n  Mirror as RRDOMMirror,\n  RRElement,\n  RRIFrameElement,\n  RRMediaElement,\n  RRNode,\n  RRStyleElement,\n  ReplayerHandler,\n} from '@sailfish-rrweb/rrdom';\nimport {\n  RRDocument,\n  buildFromDom,\n  buildFromNode,\n  createOrGetNode,\n  diff,\n  getDefaultSN,\n} from '@sailfish-rrweb/rrdom';\nimport {\n  Mirror,\n  NodeType,\n  buildNodeWithSN,\n  createCache,\n  createMirror,\n  rebuild,\n  toLowerCase,\n  type BuildCache,\n  type attributes,\n  type serializedElementNodeWithId,\n} from '@sailfish-rrweb/rrweb-snapshot';\nimport type {\n  Emitter,\n  Handler,\n  IWindow,\n  addedNodeMutation,\n  adoptedStyleSheetData,\n  canvasEventWithTime,\n  canvasMutationCommand,\n  canvasMutationData,\n  canvasMutationParam,\n  eventWithTime,\n  fullSnapshotEvent,\n  incrementalData,\n  incrementalSnapshotEvent,\n  inputData,\n  metaEvent,\n  mouseMovePos,\n  mutationData,\n  playerMetaData,\n  scrollData,\n  selectionData,\n  styleDeclarationData,\n  styleSheetRuleData,\n  styleValueWithPriority,\n  viewportResizeDimension,\n} from '@sailfish-rrweb/types';\nimport {\n  EventType,\n  IncrementalSource,\n  MouseInteractions,\n  ReplayerEvents,\n} from '@sailfish-rrweb/types';\nimport * as mittProxy from 'mitt';\nimport type { missingNodeMap, playerConfig } from '../types';\nimport {\n  StyleSheetMirror,\n  getBaseDimension,\n  getNestedRule,\n  getPositionsAndIndex,\n  hasShadowRoot,\n  isSerializedIframe,\n  iterateResolveTree,\n  polyfill,\n  queueToResolveTrees,\n  uniqueTextMutations,\n  type AppendedIframe,\n} from '../utils';\nimport canvasMutation from './canvas';\nimport { deserializeArg } from './canvas/deserialize-args';\nimport {\n  createPlayerService,\n  createSpeedService,\n  type PlayerMachineState,\n  type SpeedMachineState,\n} from './machine';\nimport { MediaManager } from './media';\nimport { polyfill as smoothscrollPolyfill } from './smoothscroll';\nimport getInjectStyleRules from './styles/inject-style';\nimport './styles/style.css';\nimport { Timer } from './timer';\nimport { applyTextDelta } from '../record/text-diff';\n\nconst SKIP_TIME_INTERVAL = 5 * 1000;\n\n// https://github.com/rollup/rollup/issues/1267#issuecomment-296395734\nconst mitt = mittProxy.default || mittProxy;\n\nconst REPLAY_CONSOLE_PREFIX = '[replayer]';\n\nconst defaultMouseTailConfig = {\n  duration: 500,\n  lineCap: 'round',\n  lineWidth: 3,\n  strokeStyle: 'red',\n} as const;\n\nfunction indicatesTouchDevice(e: eventWithTime) {\n  return (\n    e.type == EventType.IncrementalSnapshot &&\n    (e.data.source == IncrementalSource.TouchMove ||\n      (e.data.source == IncrementalSource.MouseInteraction &&\n        e.data.type == MouseInteractions.TouchStart))\n  );\n}\n\nexport class Replayer {\n  public wrapper: HTMLDivElement;\n  public iframe: HTMLIFrameElement;\n\n  public service: ReturnType<typeof createPlayerService>;\n  public speedService: ReturnType<typeof createSpeedService>;\n  public get timer() {\n    return this.service.state.context.timer;\n  }\n\n  public config: playerConfig;\n\n  // In the fast-forward process, if the virtual-dom optimization is used, this flag value is true.\n  public usingVirtualDom = false;\n  public virtualDom: RRDocument = new RRDocument();\n\n  private mouse: HTMLDivElement;\n  private mouseTail: HTMLCanvasElement | null = null;\n  private tailPositions: Array<{ x: number; y: number }> = [];\n\n  private emitter: Emitter = mitt();\n\n  private nextUserInteractionEvent: eventWithTime | null;\n\n  private legacy_missingNodeRetryMap: missingNodeMap = {};\n\n  // The replayer uses the cache to speed up replay and scrubbing.\n  private cache: BuildCache = createCache();\n\n  private imageMap: Map<eventWithTime | string, HTMLImageElement> = new Map();\n  private canvasEventMap: Map<eventWithTime, canvasMutationParam> = new Map();\n\n  private mirror: Mirror = createMirror();\n\n  // Used to track StyleSheetObjects adopted on multiple document hosts.\n  private styleMirror: StyleSheetMirror = new StyleSheetMirror();\n\n  // Used to track video & audio elements, and keep them in sync with general playback.\n  private mediaManager: MediaManager;\n\n  private firstFullSnapshot: eventWithTime | true | null = null;\n\n  private newDocumentQueue: addedNodeMutation[] = [];\n\n  private mousePos: mouseMovePos | null = null;\n  private touchActive: boolean | null = null;\n  private lastMouseDownEvent: [Node, Event] | null = null;\n\n  // Keep the rootNode of the last hovered element. So  when hovering a new element, we can remove the last hovered element's :hover style.\n  private lastHoveredRootNode: Document | ShadowRoot;\n\n  // Used to track text values for delta reconstruction during replay\n  private textValueMap: Map<number, string> = new Map();\n\n  // In the fast-forward mode, only the last selection data needs to be applied.\n  private lastSelectionData: selectionData | null = null;\n\n  // In the fast-forward mode using VirtualDom optimization, all stylesheetRule, and styleDeclaration events on constructed StyleSheets will be delayed to get applied until the flush stage.\n  private constructedStyleMutations: (\n    | styleSheetRuleData\n    | styleDeclarationData\n  )[] = [];\n\n  // Similar to the reason for constructedStyleMutations.\n  private adoptedStyleSheets: adoptedStyleSheetData[] = [];\n\n  constructor(\n    events: Array<eventWithTime | string>,\n    config?: Partial<playerConfig>,\n  ) {\n    if (!config?.liveMode && events.length < 2) {\n      throw new Error('Replayer need at least 2 events.');\n    }\n    const defaultConfig: playerConfig = {\n      speed: 1,\n      maxSpeed: 360,\n      root: document.body,\n      loadTimeout: 0,\n      skipInactive: false,\n      inactivePeriodThreshold: 10 * 1000,\n      showWarning: true,\n      showDebug: false,\n      blockClass: 'rr-block',\n      liveMode: false,\n      insertStyleRules: [],\n      triggerFocus: true,\n      UNSAFE_replayCanvas: false,\n      pauseAnimation: true,\n      mouseTail: defaultMouseTailConfig,\n      useVirtualDom: true, // Virtual-dom optimization is enabled by default.\n      logger: console,\n    };\n    this.config = Object.assign({}, defaultConfig, config);\n\n    this.handleResize = this.handleResize.bind(this);\n    this.getCastFn = this.getCastFn.bind(this);\n    this.applyEventsSynchronously = this.applyEventsSynchronously.bind(this);\n    this.emitter.on(ReplayerEvents.Resize, this.handleResize as Handler);\n\n    this.setupDom();\n\n    /**\n     * Exposes mirror to the plugins\n     */\n    for (const plugin of this.config.plugins || []) {\n      if (plugin.getMirror) plugin.getMirror({ nodeMirror: this.mirror });\n    }\n\n    this.emitter.on(ReplayerEvents.Flush, () => {\n      if (this.usingVirtualDom) {\n        const replayerHandler: ReplayerHandler = {\n          mirror: this.mirror,\n          applyCanvas: (\n            canvasEvent: canvasEventWithTime,\n            canvasMutationData: canvasMutationData,\n            target: HTMLCanvasElement,\n          ) => {\n            void canvasMutation({\n              event: canvasEvent,\n              mutation: canvasMutationData,\n              target,\n              imageMap: this.imageMap,\n              canvasEventMap: this.canvasEventMap,\n              errorHandler: this.warnCanvasMutationFailed.bind(this),\n            });\n          },\n          applyInput: this.applyInput.bind(this),\n          applyScroll: this.applyScroll.bind(this),\n          applyStyleSheetMutation: (\n            data: styleDeclarationData | styleSheetRuleData,\n            styleSheet: CSSStyleSheet,\n          ) => {\n            if (data.source === IncrementalSource.StyleSheetRule)\n              this.applyStyleSheetRule(data, styleSheet);\n            else if (data.source === IncrementalSource.StyleDeclaration)\n              this.applyStyleDeclaration(data, styleSheet);\n          },\n          afterAppend: (node: Node, id: number) => {\n            for (const plugin of this.config.plugins || []) {\n              if (plugin.onBuild) plugin.onBuild(node, { id, replayer: this });\n            }\n          },\n        };\n        if (this.iframe.contentDocument)\n          try {\n            diff(\n              this.iframe.contentDocument,\n              this.virtualDom,\n              replayerHandler,\n              this.virtualDom.mirror,\n            );\n          } catch (e) {\n            console.warn(e);\n          }\n\n        this.virtualDom.destroyTree();\n        this.usingVirtualDom = false;\n\n        // If these legacy missing nodes haven't been resolved, they should be converted to real Nodes.\n        if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n          for (const key in this.legacy_missingNodeRetryMap) {\n            try {\n              const value = this.legacy_missingNodeRetryMap[key];\n              const realNode = createOrGetNode(\n                value.node as RRNode,\n                this.mirror,\n                this.virtualDom.mirror,\n              );\n              diff(\n                realNode,\n                value.node as RRNode,\n                replayerHandler,\n                this.virtualDom.mirror,\n              );\n              value.node = realNode;\n            } catch (error) {\n              this.warn(error);\n            }\n          }\n        }\n\n        this.constructedStyleMutations.forEach((data) => {\n          this.applyStyleSheetMutation(data);\n        });\n        this.constructedStyleMutations = [];\n\n        this.adoptedStyleSheets.forEach((data) => {\n          this.applyAdoptedStyleSheet(data);\n        });\n        this.adoptedStyleSheets = [];\n      }\n\n      if (this.mousePos) {\n        this.moveAndHover(\n          this.mousePos.x,\n          this.mousePos.y,\n          this.mousePos.id,\n          true,\n          this.mousePos.debugData,\n        );\n        this.mousePos = null;\n      }\n\n      if (this.touchActive === true) {\n        this.mouse.classList.add('touch-active');\n      } else if (this.touchActive === false) {\n        this.mouse.classList.remove('touch-active');\n      }\n      this.touchActive = null;\n\n      if (this.lastMouseDownEvent) {\n        const [target, event] = this.lastMouseDownEvent;\n        target.dispatchEvent(event);\n      }\n      this.lastMouseDownEvent = null;\n\n      if (this.lastSelectionData) {\n        this.applySelection(this.lastSelectionData);\n        this.lastSelectionData = null;\n      }\n    });\n    this.emitter.on(ReplayerEvents.PlayBack, () => {\n      this.firstFullSnapshot = null;\n      this.mirror.reset();\n      this.styleMirror.reset();\n      this.mediaManager.reset();\n      this.textValueMap.clear();\n    });\n\n    const timer = new Timer([], {\n      speed: this.config.speed,\n    });\n    this.service = createPlayerService(\n      {\n        events: events\n          .map((e) => {\n            if (config && config.unpackFn) {\n              return config.unpackFn(e as string);\n            }\n            return e as eventWithTime;\n          })\n          .sort((a1, a2) => a1.timestamp - a2.timestamp),\n        timer,\n        timeOffset: 0,\n        baselineTime: 0,\n        lastPlayedEvent: null,\n      },\n      {\n        getCastFn: this.getCastFn,\n        applyEventsSynchronously: this.applyEventsSynchronously,\n        emitter: this.emitter,\n      },\n    );\n    this.service.start();\n    this.service.subscribe((state) => {\n      this.emitter.emit(ReplayerEvents.StateChange, {\n        player: state,\n      });\n    });\n    this.speedService = createSpeedService({\n      normalSpeed: -1,\n      timer,\n    });\n    this.speedService.start();\n    this.speedService.subscribe((state) => {\n      this.emitter.emit(ReplayerEvents.StateChange, {\n        speed: state,\n      });\n    });\n    this.mediaManager = new MediaManager({\n      warn: this.warn.bind(this),\n      service: this.service,\n      speedService: this.speedService,\n      emitter: this.emitter,\n      getCurrentTime: this.getCurrentTime.bind(this),\n    });\n\n    // rebuild first full snapshot as the poster of the player\n    // maybe we can cache it for performance optimization\n    const firstMeta = this.service.state.context.events.find(\n      (e) => e.type === EventType.Meta,\n    );\n    const firstFullsnapshot = this.service.state.context.events.find(\n      (e) => e.type === EventType.FullSnapshot,\n    );\n    if (firstMeta) {\n      const { width, height } = firstMeta.data as metaEvent['data'];\n      setTimeout(() => {\n        this.emitter.emit(ReplayerEvents.Resize, {\n          width,\n          height,\n        });\n      }, 0);\n    }\n    if (firstFullsnapshot) {\n      setTimeout(() => {\n        // when something has been played, there is no need to rebuild poster\n        if (this.firstFullSnapshot) {\n          // true if any other fullSnapshot has been executed by Timer already\n          return;\n        }\n        this.firstFullSnapshot = firstFullsnapshot;\n        this.rebuildFullSnapshot(\n          firstFullsnapshot as fullSnapshotEvent & { timestamp: number },\n        );\n        this.iframe.contentWindow?.scrollTo(\n          (firstFullsnapshot as fullSnapshotEvent).data.initialOffset,\n        );\n      }, 1);\n    }\n    if (this.service.state.context.events.find(indicatesTouchDevice)) {\n      this.mouse.classList.add('touch-device');\n    }\n  }\n\n  public on(event: string, handler: Handler) {\n    this.emitter.on(event, handler);\n    return this;\n  }\n\n  public off(event: string, handler: Handler) {\n    this.emitter.off(event, handler);\n    return this;\n  }\n\n  public setConfig(config: Partial<playerConfig>) {\n    Object.keys(config).forEach((key) => {\n      const newConfigValue = config[key as keyof playerConfig];\n      (this.config as Record<keyof playerConfig, typeof newConfigValue>)[\n        key as keyof playerConfig\n      ] = config[key as keyof playerConfig];\n    });\n    if (!this.config.skipInactive) {\n      this.backToNormal();\n    }\n    if (typeof config.speed !== 'undefined') {\n      this.speedService.send({\n        type: 'SET_SPEED',\n        payload: {\n          speed: config.speed,\n        },\n      });\n    }\n    if (typeof config.mouseTail !== 'undefined') {\n      if (config.mouseTail === false) {\n        if (this.mouseTail) {\n          this.mouseTail.style.display = 'none';\n        }\n      } else {\n        if (!this.mouseTail) {\n          this.mouseTail = document.createElement('canvas');\n          this.mouseTail.width = Number.parseFloat(this.iframe.width);\n          this.mouseTail.height = Number.parseFloat(this.iframe.height);\n          this.mouseTail.classList.add('replayer-mouse-tail');\n          this.wrapper.insertBefore(this.mouseTail, this.iframe);\n        }\n        this.mouseTail.style.display = 'inherit';\n      }\n    }\n  }\n\n  public getMetaData(): playerMetaData {\n    const firstEvent = this.service.state.context.events[0];\n    const lastEvent =\n      this.service.state.context.events[\n        this.service.state.context.events.length - 1\n      ];\n    return {\n      startTime: firstEvent.timestamp,\n      endTime: lastEvent.timestamp,\n      totalTime: lastEvent.timestamp - firstEvent.timestamp,\n    };\n  }\n\n  /**\n   * Get the actual time offset the player is at now compared to the first event.\n   */\n  public getCurrentTime(): number {\n    return this.timer.timeOffset + this.getTimeOffset();\n  }\n\n  /**\n   * Get the time offset the player is at now compared to the first event, but without regard for the timer.\n   */\n  public getTimeOffset(): number {\n    const { baselineTime, events } = this.service.state.context;\n    return baselineTime - events[0].timestamp;\n  }\n\n  public getMirror(): Mirror {\n    return this.mirror;\n  }\n\n  /**\n   * This API was designed to be used as play at any time offset.\n   * Since we minimized the data collected from recorder, we do not\n   * have the ability of undo an event.\n   * So the implementation of play at any time offset will always iterate\n   * all of the events, cast event before the offset synchronously\n   * and cast event after the offset asynchronously with timer.\n   * @param timeOffset - number\n   */\n  public play(timeOffset = 0) {\n    if (this.service.state.matches('paused')) {\n      this.service.send({ type: 'PLAY', payload: { timeOffset } });\n    } else {\n      this.service.send({ type: 'PAUSE' });\n      this.service.send({ type: 'PLAY', payload: { timeOffset } });\n    }\n    this.iframe.contentDocument\n      ?.getElementsByTagName('html')[0]\n      ?.classList.remove('@sailfish-rrweb/rrweb-paused');\n    this.emitter.emit(ReplayerEvents.Start);\n  }\n\n  public pause(timeOffset?: number) {\n    if (timeOffset === undefined && this.service.state.matches('playing')) {\n      this.service.send({ type: 'PAUSE' });\n    }\n    if (typeof timeOffset === 'number') {\n      this.play(timeOffset);\n      this.service.send({ type: 'PAUSE' });\n    }\n    this.iframe.contentDocument\n      ?.getElementsByTagName('html')[0]\n      ?.classList.add('@sailfish-rrweb/rrweb-paused');\n    this.emitter.emit(ReplayerEvents.Pause);\n  }\n\n  public resume(timeOffset = 0) {\n    this.warn(\n      `The 'resume' was deprecated in 1.0. Please use 'play' method which has the same interface.`,\n    );\n    this.play(timeOffset);\n    this.emitter.emit(ReplayerEvents.Resume);\n  }\n\n  /**\n   * Totally destroy this replayer and please be careful that this operation is irreversible.\n   * Memory occupation can be released by removing all references to this replayer.\n   */\n  public destroy() {\n    this.pause();\n    this.mirror.reset();\n    this.styleMirror.reset();\n    this.mediaManager.reset();\n    this.textValueMap.clear();\n    this.config.root.removeChild(this.wrapper);\n    this.emitter.emit(ReplayerEvents.Destroy);\n  }\n\n  public startLive(baselineTime?: number) {\n    this.service.send({ type: 'TO_LIVE', payload: { baselineTime } });\n  }\n\n  public addEvent(rawEvent: eventWithTime | string) {\n    const event = this.config.unpackFn\n      ? this.config.unpackFn(rawEvent as string)\n      : (rawEvent as eventWithTime);\n    if (indicatesTouchDevice(event)) {\n      this.mouse.classList.add('touch-device');\n    }\n    void Promise.resolve().then(() =>\n      this.service.send({ type: 'ADD_EVENT', payload: { event } }),\n    );\n  }\n\n  public enableInteract() {\n    this.iframe.setAttribute('scrolling', 'auto');\n    this.iframe.style.pointerEvents = 'auto';\n  }\n\n  public disableInteract() {\n    this.iframe.setAttribute('scrolling', 'no');\n    this.iframe.style.pointerEvents = 'none';\n  }\n\n  /**\n   * Empties the replayer's cache and reclaims memory.\n   * The replayer will use this cache to speed up the playback.\n   */\n  public resetCache() {\n    this.cache = createCache();\n  }\n\n  private setupDom() {\n    this.wrapper = document.createElement('div');\n    this.wrapper.classList.add('replayer-wrapper');\n    this.config.root.appendChild(this.wrapper);\n\n    this.mouse = document.createElement('div');\n    this.mouse.classList.add('replayer-mouse');\n    this.wrapper.appendChild(this.mouse);\n\n    if (this.config.mouseTail !== false) {\n      this.mouseTail = document.createElement('canvas');\n      this.mouseTail.classList.add('replayer-mouse-tail');\n      this.mouseTail.style.display = 'inherit';\n      this.wrapper.appendChild(this.mouseTail);\n    }\n\n    this.iframe = document.createElement('iframe');\n    const attributes = ['allow-same-origin'];\n    if (this.config.UNSAFE_replayCanvas) {\n      attributes.push('allow-scripts');\n    }\n    // hide iframe before first meta event\n    this.iframe.style.display = 'none';\n    this.iframe.setAttribute('sandbox', attributes.join(' '));\n    this.disableInteract();\n    this.wrapper.appendChild(this.iframe);\n    if (this.iframe.contentWindow && this.iframe.contentDocument) {\n      smoothscrollPolyfill(\n        this.iframe.contentWindow,\n        this.iframe.contentDocument,\n      );\n\n      polyfill(this.iframe.contentWindow as IWindow);\n    }\n  }\n\n  private handleResize = (dimension: viewportResizeDimension) => {\n    this.iframe.style.display = 'inherit';\n    for (const el of [this.mouseTail, this.iframe]) {\n      if (!el) {\n        continue;\n      }\n      el.setAttribute('width', String(dimension.width));\n      el.setAttribute('height', String(dimension.height));\n    }\n  };\n\n  private applyEventsSynchronously = (events: Array<eventWithTime>) => {\n    for (const event of events) {\n      switch (event.type) {\n        case EventType.DomContentLoaded:\n        case EventType.Load:\n        case EventType.Custom:\n          continue;\n        case EventType.FullSnapshot:\n        case EventType.Meta:\n        case EventType.Plugin:\n        case EventType.IncrementalSnapshot:\n          break;\n        default:\n          break;\n      }\n      const castFn = this.getCastFn(event, true);\n      castFn();\n    }\n  };\n\n  private getCastFn = (event: eventWithTime, isSync = false) => {\n    let castFn: undefined | (() => void);\n    switch (event.type) {\n      case EventType.DomContentLoaded:\n      case EventType.Load:\n        break;\n      case EventType.Custom:\n        castFn = () => {\n          /**\n           * emit custom-event and pass the event object.\n           *\n           * This will add more value to the custom event and allows the client to react for custom-event.\n           */\n          this.emitter.emit(ReplayerEvents.CustomEvent, event);\n        };\n        break;\n      case EventType.Meta:\n        castFn = () =>\n          this.emitter.emit(ReplayerEvents.Resize, {\n            width: event.data.width,\n            height: event.data.height,\n          });\n        break;\n      case EventType.FullSnapshot:\n        castFn = () => {\n          if (this.firstFullSnapshot) {\n            if (this.firstFullSnapshot === event) {\n              // we've already built this exact FullSnapshot when the player was mounted, and haven't built any other FullSnapshot since\n              this.firstFullSnapshot = true; // forget as we might need to re-execute this FullSnapshot later e.g. to rebuild after scrubbing\n              return;\n            }\n          } else {\n            // Timer (requestAnimationFrame) can be faster than setTimeout(..., 1)\n            this.firstFullSnapshot = true;\n          }\n          this.mediaManager.reset();\n          this.styleMirror.reset();\n          this.rebuildFullSnapshot(event, isSync);\n          this.iframe.contentWindow?.scrollTo(event.data.initialOffset);\n        };\n        break;\n      case EventType.IncrementalSnapshot:\n        castFn = () => {\n          this.applyIncremental(event, isSync);\n          if (isSync) {\n            // do not check skip in sync\n            return;\n          }\n          if (event === this.nextUserInteractionEvent) {\n            this.nextUserInteractionEvent = null;\n            this.backToNormal();\n          }\n          if (!this.nextUserInteractionEvent) {\n            for (const _event of this.service.state.context.events) {\n              if (_event.timestamp <= event.timestamp) {\n                continue;\n              }\n              if (this.isUserInteraction(_event)) {\n                if (\n                  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                  _event.delay! - event.delay! >\n                  this.config.inactivePeriodThreshold *\n                    this.speedService.state.context.timer.speed\n                ) {\n                  this.nextUserInteractionEvent = _event;\n                }\n                break;\n              }\n            }\n            if (this.nextUserInteractionEvent) {\n              if (this.config.skipInactive) {\n                this.play(\n                  this.nextUserInteractionEvent.timestamp! -\n                    this.getMetaData().startTime -\n                    1000\n                );\n              } else {\n                const skipTime =\n                  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                  this.nextUserInteractionEvent.delay! - event.delay!;\n                const payload = {\n                  speed: Math.min(\n                    Math.round(skipTime / SKIP_TIME_INTERVAL),\n                    this.config.maxSpeed,\n                  ),\n                };\n                this.speedService.send({ type: 'FAST_FORWARD', payload });\n                this.emitter.emit(ReplayerEvents.SkipStart, payload);\n              }\n            }\n          }\n        };\n        break;\n      default:\n    }\n    const wrappedCastFn = () => {\n      if (castFn) {\n        castFn();\n      }\n\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.handler) plugin.handler(event, isSync, { replayer: this });\n      }\n\n      this.service.send({ type: 'CAST_EVENT', payload: { event } });\n\n      // events are kept sorted by timestamp, check if this is the last event\n      const last_index = this.service.state.context.events.length - 1;\n      if (\n        !this.config.liveMode &&\n        event === this.service.state.context.events[last_index]\n      ) {\n        const finish = () => {\n          if (last_index < this.service.state.context.events.length - 1) {\n            // more events have been added since the setTimeout\n            return;\n          }\n          this.backToNormal();\n          this.service.send('END');\n          this.emitter.emit(ReplayerEvents.Finish);\n        };\n        let finish_buffer = 50; // allow for checking whether new events aren't just about to be loaded in\n        if (\n          event.type === EventType.IncrementalSnapshot &&\n          event.data.source === IncrementalSource.MouseMove &&\n          event.data.positions.length\n        ) {\n          // extend finish event if the last event is a mouse move so that the timer isn't stopped by the service before checking the last event\n          finish_buffer += Math.max(0, -event.data.positions[0].timeOffset);\n        }\n        setTimeout(finish, finish_buffer);\n      }\n\n      this.emitter.emit(ReplayerEvents.EventCast, event);\n    };\n    return wrappedCastFn;\n  };\n\n  private rebuildFullSnapshot(\n    event: fullSnapshotEvent & { timestamp: number },\n    isSync = false,\n  ) {\n    if (!this.iframe.contentDocument) {\n      return this.warn('Looks like your replayer has been destroyed.');\n    }\n    if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n      this.warn(\n        'Found unresolved missing node map',\n        this.legacy_missingNodeRetryMap,\n      );\n    }\n    this.legacy_missingNodeRetryMap = {};\n    const collected: AppendedIframe[] = [];\n    const afterAppend = (builtNode: Node, id: number) => {\n      this.collectIframeAndAttachDocument(collected, builtNode);\n      if (this.mediaManager.isSupportedMediaElement(builtNode)) {\n        const { events } = this.service.state.context;\n        this.mediaManager.addMediaElements(\n          builtNode,\n          event.timestamp - events[0].timestamp,\n          this.mirror,\n        );\n      }\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.onBuild)\n          plugin.onBuild(builtNode, {\n            id,\n            replayer: this,\n          });\n      }\n    };\n\n    /**\n     * Normally rebuilding full snapshot should not be under virtual dom environment.\n     * But if the order of data events has some issues, it might be possible.\n     * Adding this check to avoid any potential issues.\n     */\n    if (this.usingVirtualDom) {\n      this.virtualDom.destroyTree();\n      this.usingVirtualDom = false;\n    }\n\n    this.mirror.reset();\n    this.textValueMap.clear();\n    rebuild(event.data.node, {\n      doc: this.iframe.contentDocument,\n      afterAppend,\n      cache: this.cache,\n      mirror: this.mirror,\n    });\n    afterAppend(this.iframe.contentDocument, event.data.node.id);\n\n    for (const { mutationInQueue, builtNode } of collected) {\n      this.attachDocumentToIframe(mutationInQueue, builtNode);\n      this.newDocumentQueue = this.newDocumentQueue.filter(\n        (m) => m !== mutationInQueue,\n      );\n    }\n    const { documentElement, head } = this.iframe.contentDocument;\n    this.insertStyleRules(documentElement, head);\n    if (!this.service.state.matches('playing')) {\n      this.iframe.contentDocument\n        .getElementsByTagName('html')[0]\n        .classList.add('@sailfish-rrweb/rrweb-paused');\n    }\n    this.emitter.emit(ReplayerEvents.FullsnapshotRebuilded, event);\n    if (!isSync) {\n      this.waitForStylesheetLoad();\n    }\n    if (this.config.UNSAFE_replayCanvas) {\n      void this.preloadAllImages();\n    }\n  }\n\n  private insertStyleRules(\n    documentElement: HTMLElement | RRElement,\n    head: HTMLHeadElement | RRElement,\n  ) {\n    const injectStylesRules = getInjectStyleRules(\n      this.config.blockClass,\n    ).concat(this.config.insertStyleRules);\n    if (this.config.pauseAnimation) {\n      injectStylesRules.push(\n        'html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }',\n      );\n    }\n    if (this.usingVirtualDom) {\n      const styleEl = this.virtualDom.createElement('style');\n      this.virtualDom.mirror.add(\n        styleEl,\n        getDefaultSN(styleEl, this.virtualDom.unserializedId),\n      );\n      (documentElement as RRElement).insertBefore(styleEl, head as RRElement);\n      styleEl.rules.push({\n        source: IncrementalSource.StyleSheetRule,\n        adds: injectStylesRules.map((cssText, index) => ({\n          rule: cssText,\n          index,\n        })),\n      });\n    } else {\n      const styleEl = document.createElement('style');\n      (documentElement as HTMLElement).insertBefore(\n        styleEl,\n        head as HTMLHeadElement,\n      );\n      for (let idx = 0; idx < injectStylesRules.length; idx++) {\n        styleEl.sheet?.insertRule(injectStylesRules[idx], idx);\n      }\n    }\n  }\n\n  private attachDocumentToIframe(\n    mutation: addedNodeMutation,\n    iframeEl: HTMLIFrameElement | RRIFrameElement,\n  ) {\n    const mirror: RRDOMMirror | Mirror = this.usingVirtualDom\n      ? this.virtualDom.mirror\n      : this.mirror;\n    type TNode = typeof mirror extends Mirror ? Node : RRNode;\n    type TMirror = typeof mirror extends Mirror ? Mirror : RRDOMMirror;\n\n    const collected: AppendedIframe[] = [];\n    const afterAppend = (builtNode: Node, id: number) => {\n      this.collectIframeAndAttachDocument(collected, builtNode);\n      const sn = (mirror as TMirror).getMeta(builtNode as unknown as TNode);\n      if (\n        sn?.type === NodeType.Element &&\n        sn?.tagName.toUpperCase() === 'HTML'\n      ) {\n        const { documentElement, head } = iframeEl.contentDocument!;\n        this.insertStyleRules(\n          documentElement as HTMLElement | RRElement,\n          head as HTMLElement | RRElement,\n        );\n      }\n\n      // Skip the plugin onBuild callback in the virtual dom mode\n      if (this.usingVirtualDom) return;\n      for (const plugin of this.config.plugins || []) {\n        if (plugin.onBuild)\n          plugin.onBuild(builtNode, {\n            id,\n            replayer: this,\n          });\n      }\n    };\n\n    buildNodeWithSN(mutation.node, {\n      doc: iframeEl.contentDocument! as Document,\n      mirror: mirror as Mirror,\n      hackCss: true,\n      skipChild: false,\n      afterAppend,\n      cache: this.cache,\n    });\n    afterAppend(iframeEl.contentDocument! as Document, mutation.node.id);\n\n    for (const { mutationInQueue, builtNode } of collected) {\n      this.attachDocumentToIframe(mutationInQueue, builtNode);\n      this.newDocumentQueue = this.newDocumentQueue.filter(\n        (m) => m !== mutationInQueue,\n      );\n    }\n  }\n\n  private collectIframeAndAttachDocument(\n    collected: AppendedIframe[],\n    builtNode: Node,\n  ) {\n    if (isSerializedIframe(builtNode, this.mirror)) {\n      const mutationInQueue = this.newDocumentQueue.find(\n        (m) => m.parentId === this.mirror.getId(builtNode),\n      );\n      if (mutationInQueue) {\n        collected.push({\n          mutationInQueue,\n          builtNode: builtNode as HTMLIFrameElement,\n        });\n      }\n    }\n  }\n\n  /**\n   * pause when loading style sheet, resume when loaded all timeout exceed\n   */\n  private waitForStylesheetLoad() {\n    const head = this.iframe.contentDocument?.head;\n    if (head) {\n      const unloadSheets: Set<HTMLLinkElement> = new Set();\n      let timer: ReturnType<typeof setTimeout> | -1;\n      let beforeLoadState = this.service.state;\n      const stateHandler = () => {\n        beforeLoadState = this.service.state;\n      };\n      this.emitter.on(ReplayerEvents.Start, stateHandler);\n      this.emitter.on(ReplayerEvents.Pause, stateHandler);\n      const unsubscribe = () => {\n        this.emitter.off(ReplayerEvents.Start, stateHandler);\n        this.emitter.off(ReplayerEvents.Pause, stateHandler);\n      };\n      head\n        .querySelectorAll('link[rel=\"stylesheet\"]')\n        .forEach((css: HTMLLinkElement) => {\n          if (!css.sheet) {\n            unloadSheets.add(css);\n            css.addEventListener('load', () => {\n              unloadSheets.delete(css);\n              // all loaded and timer not released yet\n              if (unloadSheets.size === 0 && timer !== -1) {\n                if (beforeLoadState.matches('playing')) {\n                  this.play(this.getCurrentTime());\n                }\n                this.emitter.emit(ReplayerEvents.LoadStylesheetEnd);\n                if (timer) {\n                  clearTimeout(timer);\n                }\n                unsubscribe();\n              }\n            });\n          }\n        });\n\n      if (unloadSheets.size > 0) {\n        // find some unload sheets after iterate\n        this.service.send({ type: 'PAUSE' });\n        this.emitter.emit(ReplayerEvents.LoadStylesheetStart);\n        timer = setTimeout(() => {\n          if (beforeLoadState.matches('playing')) {\n            this.play(this.getCurrentTime());\n          }\n          // mark timer was called\n          timer = -1;\n          unsubscribe();\n        }, this.config.loadTimeout);\n      }\n    }\n  }\n\n  /**\n   * pause when there are some canvas drawImage args need to be loaded\n   */\n  private async preloadAllImages(): Promise<void[]> {\n    const promises: Promise<void>[] = [];\n    for (const event of this.service.state.context.events) {\n      if (\n        event.type === EventType.IncrementalSnapshot &&\n        event.data.source === IncrementalSource.CanvasMutation\n      ) {\n        promises.push(\n          this.deserializeAndPreloadCanvasEvents(event.data, event),\n        );\n        const commands =\n          'commands' in event.data ? event.data.commands : [event.data];\n        commands.forEach((c) => {\n          this.preloadImages(c, event);\n        });\n      }\n    }\n    return Promise.all(promises);\n  }\n\n  private preloadImages(data: canvasMutationCommand, event: eventWithTime) {\n    if (\n      data.property === 'drawImage' &&\n      typeof data.args[0] === 'string' &&\n      !this.imageMap.has(event)\n    ) {\n      const canvas = document.createElement('canvas');\n      const ctx = canvas.getContext('2d');\n      const imgd = ctx?.createImageData(canvas.width, canvas.height);\n      ctx?.putImageData(imgd!, 0, 0);\n    }\n  }\n  private async deserializeAndPreloadCanvasEvents(\n    data: canvasMutationData,\n    event: eventWithTime,\n  ) {\n    if (!this.canvasEventMap.has(event)) {\n      const status = {\n        isUnchanged: true,\n      };\n      if ('commands' in data) {\n        const commands = await Promise.all(\n          data.commands.map(async (c) => {\n            const args = await Promise.all(\n              c.args.map(deserializeArg(this.imageMap, null, status)),\n            );\n            return { ...c, args };\n          }),\n        );\n        if (status.isUnchanged === false)\n          this.canvasEventMap.set(event, { ...data, commands });\n      } else {\n        const args = await Promise.all(\n          data.args.map(deserializeArg(this.imageMap, null, status)),\n        );\n        if (status.isUnchanged === false)\n          this.canvasEventMap.set(event, { ...data, args });\n      }\n    }\n  }\n\n  private applyIncremental(\n    e: incrementalSnapshotEvent & { timestamp: number; delay?: number },\n    isSync: boolean,\n  ) {\n    const { data: d } = e;\n    switch (d.source) {\n      case IncrementalSource.Mutation: {\n        try {\n          this.applyMutation(d, isSync);\n        } catch (error) {\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/restrict-template-expressions\n          this.warn(`Exception in mutation ${error.message || error}`, d);\n        }\n        break;\n      }\n      case IncrementalSource.Drag:\n      case IncrementalSource.TouchMove:\n      case IncrementalSource.MouseMove:\n        if (isSync) {\n          const lastPosition = d.positions[d.positions.length - 1];\n          this.mousePos = {\n            x: lastPosition.x,\n            y: lastPosition.y,\n            id: lastPosition.id,\n            debugData: d,\n          };\n        } else {\n          d.positions.forEach((p) => {\n            const action = {\n              doAction: () => {\n                this.moveAndHover(p.x, p.y, p.id, isSync, d);\n              },\n              delay:\n                p.timeOffset +\n                e.timestamp -\n                this.service.state.context.baselineTime,\n            };\n            this.timer.addAction(action);\n          });\n          // add a dummy action to keep timer alive\n          this.timer.addAction({\n            doAction() {\n              //\n            },\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            delay: e.delay! - d.positions[0]?.timeOffset,\n          });\n        }\n        break;\n      case IncrementalSource.MouseInteraction: {\n        /**\n         * Same as the situation of missing input target.\n         */\n        if (d.id === -1) {\n          break;\n        }\n        const event = new Event(toLowerCase(MouseInteractions[d.type]));\n        const target = this.mirror.getNode(d.id);\n        if (!target) {\n          return this.debugNodeNotFound(d, d.id);\n        }\n        this.emitter.emit(ReplayerEvents.MouseInteraction, {\n          type: d.type,\n          target,\n        });\n        const { triggerFocus } = this.config;\n        switch (d.type) {\n          case MouseInteractions.Blur:\n            if ('blur' in (target as HTMLElement)) {\n              (target as HTMLElement).blur();\n            }\n            break;\n          case MouseInteractions.Focus:\n            if (triggerFocus && (target as HTMLElement).focus) {\n              (target as HTMLElement).focus({\n                preventScroll: true,\n              });\n            }\n            break;\n          case MouseInteractions.Click:\n          case MouseInteractions.TouchStart:\n          case MouseInteractions.TouchEnd:\n          case MouseInteractions.MouseDown:\n          case MouseInteractions.MouseUp:\n            if (isSync) {\n              if (d.type === MouseInteractions.TouchStart) {\n                this.touchActive = true;\n              } else if (d.type === MouseInteractions.TouchEnd) {\n                this.touchActive = false;\n              }\n              if (d.type === MouseInteractions.MouseDown) {\n                this.lastMouseDownEvent = [target, event];\n              } else if (d.type === MouseInteractions.MouseUp) {\n                this.lastMouseDownEvent = null;\n              }\n              this.mousePos = {\n                x: d.x || 0,\n                y: d.y || 0,\n                id: d.id,\n                debugData: d,\n              };\n            } else {\n              if (d.type === MouseInteractions.TouchStart) {\n                // don't draw a trail as user has lifted finger and is placing at a new point\n                this.tailPositions.length = 0;\n              }\n              this.moveAndHover(d.x || 0, d.y || 0, d.id, isSync, d);\n              if (d.type === MouseInteractions.Click) {\n                /*\n                 * don't want target.click() here as could trigger an iframe navigation\n                 * instead any effects of the click should already be covered by mutations\n                 */\n                /*\n                 * removal and addition of .active class (along with void line to trigger repaint)\n                 * triggers the 'click' css animation in styles/style.css\n                 */\n                this.mouse.classList.remove('active');\n                void this.mouse.offsetWidth;\n                this.mouse.classList.add('active');\n              } else if (d.type === MouseInteractions.TouchStart) {\n                void this.mouse.offsetWidth; // needed for the position update of moveAndHover to apply without the .touch-active transition\n                this.mouse.classList.add('touch-active');\n              } else if (d.type === MouseInteractions.TouchEnd) {\n                this.mouse.classList.remove('touch-active');\n              } else {\n                // for MouseDown & MouseUp also invoke default behavior\n                target.dispatchEvent(event);\n              }\n            }\n            break;\n          case MouseInteractions.TouchCancel:\n            if (isSync) {\n              this.touchActive = false;\n            } else {\n              this.mouse.classList.remove('touch-active');\n            }\n            break;\n          default:\n            target.dispatchEvent(event);\n        }\n        break;\n      }\n      case IncrementalSource.Scroll: {\n        /**\n         * Same as the situation of missing input target.\n         */\n        if (d.id === -1) {\n          break;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(d.id) as RRElement;\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.scrollData = d;\n          break;\n        }\n        // Use isSync rather than this.usingVirtualDom because not every fast-forward process uses virtual dom optimization.\n        this.applyScroll(d, isSync);\n        break;\n      }\n      case IncrementalSource.ViewportResize:\n        this.emitter.emit(ReplayerEvents.Resize, {\n          width: d.width,\n          height: d.height,\n        });\n        break;\n      case IncrementalSource.Input: {\n        /**\n         * Input event on an unserialized node usually means the event\n         * was synchrony triggered programmatically after the node was\n         * created. This means there was not an user observable interaction\n         * and we do not need to replay it.\n         */\n        if (d.id === -1) {\n          break;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(d.id) as RRElement;\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.inputData = d;\n          break;\n        }\n        this.applyInput(d);\n        break;\n      }\n      case IncrementalSource.MediaInteraction: {\n        const target = this.usingVirtualDom\n          ? this.virtualDom.mirror.getNode(d.id)\n          : this.mirror.getNode(d.id);\n        if (!target) {\n          return this.debugNodeNotFound(d, d.id);\n        }\n        const mediaEl = target as HTMLMediaElement | RRMediaElement;\n        const { events } = this.service.state.context;\n\n        this.mediaManager.mediaMutation({\n          target: mediaEl,\n          timeOffset: e.timestamp - events[0].timestamp,\n          mutation: d,\n        });\n\n        break;\n      }\n      case IncrementalSource.StyleSheetRule:\n      case IncrementalSource.StyleDeclaration: {\n        if (this.usingVirtualDom) {\n          if (d.styleId) this.constructedStyleMutations.push(d);\n          else if (d.id)\n            (\n              this.virtualDom.mirror.getNode(d.id) as RRStyleElement | null\n            )?.rules.push(d);\n        } else this.applyStyleSheetMutation(d);\n        break;\n      }\n      case IncrementalSource.CanvasMutation: {\n        if (!this.config.UNSAFE_replayCanvas) {\n          return;\n        }\n        if (this.usingVirtualDom) {\n          const target = this.virtualDom.mirror.getNode(\n            d.id,\n          ) as RRCanvasElement;\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          target.canvasMutations.push({\n            event: e as canvasEventWithTime,\n            mutation: d,\n          });\n        } else {\n          const target = this.mirror.getNode(d.id);\n          if (!target) {\n            return this.debugNodeNotFound(d, d.id);\n          }\n          void canvasMutation({\n            event: e,\n            mutation: d,\n            target: target as HTMLCanvasElement,\n            imageMap: this.imageMap,\n            canvasEventMap: this.canvasEventMap,\n            errorHandler: this.warnCanvasMutationFailed.bind(this),\n          });\n        }\n        break;\n      }\n      case IncrementalSource.Font: {\n        try {\n          const fontFace = new FontFace(\n            d.family,\n            d.buffer\n              ? new Uint8Array(JSON.parse(d.fontSource) as Iterable<number>)\n              : d.fontSource,\n            d.descriptors,\n          );\n          this.iframe.contentDocument?.fonts.add(fontFace);\n        } catch (error) {\n          this.warn(error);\n        }\n        break;\n      }\n      case IncrementalSource.Selection: {\n        if (isSync) {\n          this.lastSelectionData = d;\n          break;\n        }\n        this.applySelection(d);\n        break;\n      }\n      case IncrementalSource.AdoptedStyleSheet: {\n        if (this.usingVirtualDom) this.adoptedStyleSheets.push(d);\n        else this.applyAdoptedStyleSheet(d);\n        break;\n      }\n      default:\n    }\n  }\n\n  /**\n   * Apply the mutation to the virtual dom or the real dom.\n   * @param d - The mutation data.\n   * @param isSync - Whether the mutation should be applied synchronously (while fast-forwarding).\n   */\n  private applyMutation(d: mutationData, isSync: boolean) {\n    // Only apply virtual dom optimization if the fast-forward process has node mutation. Because the cost of creating a virtual dom tree and executing the diff algorithm is usually higher than directly applying other kind of events.\n    if (this.config.useVirtualDom && !this.usingVirtualDom && isSync) {\n      this.usingVirtualDom = true;\n      buildFromDom(this.iframe.contentDocument!, this.mirror, this.virtualDom);\n      // If these legacy missing nodes haven't been resolved, they should be converted to virtual nodes.\n      if (Object.keys(this.legacy_missingNodeRetryMap).length) {\n        for (const key in this.legacy_missingNodeRetryMap) {\n          try {\n            const value = this.legacy_missingNodeRetryMap[key];\n            const virtualNode = buildFromNode(\n              value.node as Node,\n              this.virtualDom,\n              this.mirror,\n            );\n            if (virtualNode) value.node = virtualNode;\n          } catch (error) {\n            this.warn(error);\n          }\n        }\n      }\n    }\n    const mirror = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\n    type TNode = typeof mirror extends Mirror ? Node : RRNode;\n\n    const removes = d.removes.filter((mutation) => {\n      // warn of absence from mirror before we start applying each removal\n      // as earlier removals could remove a tree that includes a later removal\n      if (!mirror.getNode(mutation.id)) {\n        this.warnNodeNotFound(d, mutation.id);\n        return false;\n      }\n      return true;\n    });\n    removes.forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        // no need to warn here, an ancestor may have already been removed\n        return;\n      }\n      let parent: Node | null | ShadowRoot | RRNode = mirror.getNode(\n        mutation.parentId,\n      );\n      if (!parent) {\n        return this.warnNodeNotFound(d, mutation.parentId);\n      }\n      if (mutation.isShadow && hasShadowRoot(parent as Node)) {\n        parent = (parent as Element | RRElement).shadowRoot;\n      }\n      // target may be removed with its parents before\n      mirror.removeNodeFromMap(target as Node & RRNode);\n      if (parent)\n        try {\n          parent.removeChild(target as Node & RRNode);\n          /**\n           * https://github.com/rrweb-io/rrweb/pull/887\n           * Remove any virtual style rules for stylesheets if a child text node is removed.\n           */\n          if (\n            this.usingVirtualDom &&\n            target.nodeName === '#text' &&\n            parent.nodeName === 'STYLE' &&\n            (parent as RRStyleElement).rules?.length > 0\n          )\n            (parent as RRStyleElement).rules = [];\n        } catch (error) {\n          if (error instanceof DOMException) {\n            this.warn(\n              'parent could not remove child in mutation',\n              parent,\n              target,\n              d,\n            );\n          } else {\n            throw error;\n          }\n        }\n    });\n\n    const legacy_missingNodeMap: missingNodeMap = {\n      ...this.legacy_missingNodeRetryMap,\n    };\n    const queue: addedNodeMutation[] = [];\n\n    // next not present at this moment\n    const nextNotInDOM = (mutation: addedNodeMutation) => {\n      let next: TNode | null = null;\n      if (mutation.nextId) {\n        next = mirror.getNode(mutation.nextId) as TNode | null;\n      }\n      // next not present at this moment\n      if (\n        mutation.nextId !== null &&\n        mutation.nextId !== undefined &&\n        mutation.nextId !== -1 &&\n        !next\n      ) {\n        return true;\n      }\n      return false;\n    };\n\n    const appendNode = (mutation: addedNodeMutation) => {\n      if (!this.iframe.contentDocument) {\n        return this.warn('Looks like your replayer has been destroyed.');\n      }\n      let parent: Node | null | ShadowRoot | RRNode = mirror.getNode(\n        mutation.parentId,\n      );\n      if (!parent) {\n        if (mutation.node.type === NodeType.Document) {\n          // is newly added document, maybe the document node of an iframe\n          return this.newDocumentQueue.push(mutation);\n        }\n        return queue.push(mutation);\n      }\n\n      if (mutation.node.isShadow) {\n        // If the parent is attached a shadow dom after it's created, it won't have a shadow root.\n        if (!hasShadowRoot(parent)) {\n          (parent as Element | RRElement).attachShadow({ mode: 'open' });\n          parent = (parent as Element | RRElement).shadowRoot! as Node | RRNode;\n        } else parent = parent.shadowRoot as Node | RRNode;\n      }\n\n      let previous: Node | RRNode | null = null;\n      let next: Node | RRNode | null = null;\n      if (mutation.previousId) {\n        previous = mirror.getNode(mutation.previousId);\n      }\n      if (mutation.nextId) {\n        next = mirror.getNode(mutation.nextId);\n      }\n      if (nextNotInDOM(mutation)) {\n        return queue.push(mutation);\n      }\n\n      if (mutation.node.rootId && !mirror.getNode(mutation.node.rootId)) {\n        return;\n      }\n\n      const targetDoc = mutation.node.rootId\n        ? mirror.getNode(mutation.node.rootId)\n        : this.usingVirtualDom\n        ? this.virtualDom\n        : this.iframe.contentDocument;\n      if (isSerializedIframe<typeof parent>(parent, mirror)) {\n        this.attachDocumentToIframe(\n          mutation,\n          parent as HTMLIFrameElement | RRIFrameElement,\n        );\n        return;\n      }\n      const afterAppend = (node: Node | RRNode, id: number) => {\n        // Skip the plugin onBuild callback for virtual dom\n        if (this.usingVirtualDom) return;\n        for (const plugin of this.config.plugins || []) {\n          if (plugin.onBuild) plugin.onBuild(node, { id, replayer: this });\n        }\n      };\n\n      const target = buildNodeWithSN(mutation.node, {\n        doc: targetDoc as Document, // can be Document or RRDocument\n        mirror: mirror as Mirror, // can be this.mirror or virtualDom.mirror\n        skipChild: true,\n        hackCss: true,\n        cache: this.cache,\n        /**\n         * caveat: `afterAppend` only gets called on child nodes of target\n         * we have to call it again below when this target was added to the DOM\n         */\n        afterAppend,\n      }) as Node | RRNode;\n\n      // legacy data, we should not have -1 siblings any more\n      if (mutation.previousId === -1 || mutation.nextId === -1) {\n        legacy_missingNodeMap[mutation.node.id] = {\n          node: target,\n          mutation,\n        };\n        return;\n      }\n\n      // Typescripts type system is not smart enough\n      // to understand what is going on with the types below\n      type TNode = typeof mirror extends Mirror ? Node : RRNode;\n      type TMirror = typeof mirror extends Mirror ? Mirror : RRDOMMirror;\n\n      const parentSn = (mirror as TMirror).getMeta(parent as TNode);\n      if (\n        parentSn &&\n        parentSn.type === NodeType.Element &&\n        mutation.node.type === NodeType.Text\n      ) {\n        const prospectiveSiblings = Array.isArray(parent.childNodes)\n          ? parent.childNodes\n          : Array.from(parent.childNodes);\n        if (parentSn.tagName === 'textarea') {\n          // This should be redundant now as we are either recording the value or the childNode, and not both\n          // keeping around for backwards compatibility with old bad double data, see\n\n          // https://github.com/rrweb-io/rrweb/issues/745\n          // parent is textarea, will only keep one child node as the value\n          for (const c of prospectiveSiblings) {\n            if (c.nodeType === parent.TEXT_NODE) {\n              parent.removeChild(c as Node & RRNode);\n            }\n          }\n        } else if (\n          parentSn.tagName === 'style' &&\n          prospectiveSiblings.length === 1\n        ) {\n          // https://github.com/rrweb-io/rrweb/pull/1417\n          /**\n           * If both _cssText and textContent are present for a style element due to some existing bugs, the element was ending up with two child text nodes\n           * We need to remove the textNode created by _cssText as it doesn't have an id in the mirror, and thus cannot be further mutated.\n           */\n          for (const cssText of prospectiveSiblings as (Node & RRNode)[]) {\n            if (\n              cssText.nodeType === parent.TEXT_NODE &&\n              !mirror.hasNode(cssText)\n            ) {\n              target.textContent = cssText.textContent;\n              parent.removeChild(cssText);\n            }\n          }\n        }\n      } else if (parentSn?.type === NodeType.Document) {\n        /**\n         * Sometimes the document object is changed or reopened and the MutationObserver is disconnected, so the removal of child elements can't be detected and recorded.\n         * After the change of document, we may get another mutation which adds a new doctype or a HTML element, while the old one still exists in the dom.\n         * So, we need to remove the old one first to avoid collision.\n         */\n        const parentDoc = parent as Document | RRDocument;\n        /**\n         * To detect the exist of the old doctype before adding a new doctype.\n         * We need to remove the old doctype before adding the new one. Otherwise, code will throw \"mutation Failed to execute 'insertBefore' on 'Node': Only one doctype on document allowed\".\n         */\n        if (\n          mutation.node.type === NodeType.DocumentType &&\n          parentDoc.childNodes[0]?.nodeType === Node.DOCUMENT_TYPE_NODE\n        )\n          parentDoc.removeChild(parentDoc.childNodes[0] as Node & RRNode);\n        /**\n         * To detect the exist of the old HTML element before adding a new HTML element.\n         * The reason is similar to the above. One document only allows exactly one DocType and one HTML Element.\n         */\n        if (target.nodeName === 'HTML' && parentDoc.documentElement)\n          parentDoc.removeChild(\n            parentDoc.documentElement as HTMLElement & RRNode,\n          );\n      }\n\n      if (previous && previous.nextSibling && previous.nextSibling.parentNode) {\n        (parent as TNode).insertBefore(\n          target as TNode,\n          previous.nextSibling as TNode,\n        );\n      } else if (next && next.parentNode) {\n        // making sure the parent contains the reference nodes\n        // before we insert target before next.\n        (parent as TNode).contains(next as TNode)\n          ? (parent as TNode).insertBefore(target as TNode, next as TNode)\n          : (parent as TNode).insertBefore(target as TNode, null);\n      } else {\n        (parent as TNode).appendChild(target as TNode);\n      }\n      /**\n       * target was added, execute plugin hooks\n       */\n      afterAppend(target, mutation.node.id);\n\n      /**\n       * https://github.com/rrweb-io/rrweb/pull/887\n       * Remove any virtual style rules for stylesheets if a new text node is appended.\n       */\n      if (\n        this.usingVirtualDom &&\n        target.nodeName === '#text' &&\n        parent.nodeName === 'STYLE' &&\n        (parent as RRStyleElement).rules?.length > 0\n      )\n        (parent as RRStyleElement).rules = [];\n\n      if (isSerializedIframe(target, this.mirror)) {\n        const targetId = this.mirror.getId(target as HTMLIFrameElement);\n        const mutationInQueue = this.newDocumentQueue.find(\n          (m) => m.parentId === targetId,\n        );\n        if (mutationInQueue) {\n          this.attachDocumentToIframe(\n            mutationInQueue,\n            target as HTMLIFrameElement,\n          );\n          this.newDocumentQueue = this.newDocumentQueue.filter(\n            (m) => m !== mutationInQueue,\n          );\n        }\n      }\n\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(\n          legacy_missingNodeMap,\n          parent,\n          target,\n          mutation,\n        );\n      }\n    };\n\n    d.adds.forEach((mutation) => {\n      appendNode(mutation);\n    });\n\n    const startTime = Date.now();\n    while (queue.length) {\n      // transform queue to resolve tree\n      const resolveTrees = queueToResolveTrees(queue);\n      queue.length = 0;\n      if (Date.now() - startTime > 500) {\n        this.warn(\n          'Timeout in the loop, please check the resolve tree data:',\n          resolveTrees,\n        );\n        break;\n      }\n      for (const tree of resolveTrees) {\n        const parent = mirror.getNode(tree.value.parentId);\n        if (!parent) {\n          this.debug(\n            'Drop resolve tree since there is no parent for the root node.',\n            tree,\n          );\n        } else {\n          iterateResolveTree(tree, (mutation) => {\n            appendNode(mutation);\n          });\n        }\n      }\n    }\n\n    if (Object.keys(legacy_missingNodeMap).length) {\n      Object.assign(this.legacy_missingNodeRetryMap, legacy_missingNodeMap);\n    }\n\n    uniqueTextMutations(d.texts).forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        if (d.removes.find((r) => r.id === mutation.id)) {\n          // no need to warn, element was already removed\n          return;\n        }\n        return this.warnNodeNotFound(d, mutation.id);\n      }\n\n      // Resolve text value - either from delta or direct value\n      let textValue: string | null;\n      if (mutation.delta) {\n        // Delta format - reconstruct from current value\n        const currentValue = this.textValueMap.get(mutation.id) || '';\n        textValue = applyTextDelta(currentValue, mutation.delta);\n      } else {\n        // Full value format (legacy or fallback)\n        textValue = mutation.value ?? null;\n      }\n\n      target.textContent = textValue;\n\n      // Track value for future delta reconstructions\n      if (textValue !== null) {\n        this.textValueMap.set(mutation.id, textValue);\n      }\n\n      /**\n       * https://github.com/rrweb-io/rrweb/pull/865\n       * Remove any virtual style rules for stylesheets whose contents are replaced.\n       */\n      if (this.usingVirtualDom) {\n        const parent = target.parentNode as RRStyleElement;\n        if (parent?.rules?.length > 0) parent.rules = [];\n      }\n    });\n    d.attributes.forEach((mutation) => {\n      const target = mirror.getNode(mutation.id);\n      if (!target) {\n        if (d.removes.find((r) => r.id === mutation.id)) {\n          // no need to warn, element was already removed\n          return;\n        }\n        return this.warnNodeNotFound(d, mutation.id);\n      }\n      for (const attributeName in mutation.attributes) {\n        if (typeof attributeName === 'string') {\n          const value = mutation.attributes[attributeName];\n          if (value === null) {\n            (target as Element | RRElement).removeAttribute(attributeName);\n          } else if (typeof value === 'string') {\n            try {\n              // When building snapshot, some link styles haven't loaded. Then they are loaded, they will be inlined as incremental mutation change of attribute. We need to replace the old elements whose styles aren't inlined.\n              if (\n                attributeName === '_cssText' &&\n                (target.nodeName === 'LINK' || target.nodeName === 'STYLE')\n              ) {\n                try {\n                  const newSn = mirror.getMeta(\n                    target as Node & RRNode,\n                  ) as serializedElementNodeWithId;\n                  Object.assign(\n                    newSn.attributes,\n                    mutation.attributes as attributes,\n                  );\n                  const newNode = buildNodeWithSN(newSn, {\n                    doc: target.ownerDocument as Document, // can be Document or RRDocument\n                    mirror: mirror as Mirror,\n                    skipChild: true,\n                    hackCss: true,\n                    cache: this.cache,\n                  });\n                  const siblingNode = target.nextSibling;\n                  const parentNode = target.parentNode;\n                  if (newNode && parentNode) {\n                    parentNode.removeChild(target as Node & RRNode);\n                    parentNode.insertBefore(\n                      newNode as Node & RRNode,\n                      siblingNode as (Node & RRNode) | null,\n                    );\n                    mirror.replace(mutation.id, newNode as Node & RRNode);\n                    break;\n                  }\n                } catch (e) {\n                  // for safe\n                }\n              }\n              if (attributeName === 'value' && target.nodeName === 'TEXTAREA') {\n                // this may or may not have an effect on the value property (which is what is displayed)\n                // depending on whether the textarea has been modified by the user yet\n                // TODO: replaceChildNodes is not available in RRDom\n                const textarea = target as TNode;\n                textarea.childNodes.forEach((c) =>\n                  textarea.removeChild(c as TNode),\n                );\n                const tn = target.ownerDocument?.createTextNode(value);\n                if (tn) {\n                  textarea.appendChild(tn as TNode);\n                }\n              } else {\n                (target as Element | RRElement).setAttribute(\n                  attributeName,\n                  value,\n                );\n              }\n            } catch (error) {\n              this.warn(\n                'An error occurred may due to the checkout feature.',\n                error,\n              );\n            }\n          } else if (attributeName === 'style') {\n            const styleValues = value;\n            const targetEl = target as HTMLElement | RRElement;\n            for (const s in styleValues) {\n              if (styleValues[s] === false) {\n                targetEl.style.removeProperty(s);\n              } else if (styleValues[s] instanceof Array) {\n                const svp = styleValues[s] as styleValueWithPriority;\n                targetEl.style.setProperty(s, svp[0], svp[1]);\n              } else {\n                const svs = styleValues[s] as string;\n                targetEl.style.setProperty(s, svs);\n              }\n            }\n          }\n        }\n      }\n    });\n  }\n\n  /**\n   * Apply the scroll data on real elements.\n   * If the replayer is in sync mode, smooth scroll behavior should be disabled.\n   * @param d - the scroll data\n   * @param isSync - whether the replayer is in sync mode(fast-forward)\n   */\n  private applyScroll(d: scrollData, isSync: boolean) {\n    const target = this.mirror.getNode(d.id);\n    if (!target) {\n      return this.debugNodeNotFound(d, d.id);\n    }\n    const sn = this.mirror.getMeta(target);\n    if (target === this.iframe.contentDocument) {\n      this.iframe.contentWindow?.scrollTo({\n        top: d.y,\n        left: d.x,\n        behavior: isSync ? 'auto' : 'smooth',\n      });\n    } else if (sn?.type === NodeType.Document) {\n      // nest iframe content document\n      (target as Document).defaultView?.scrollTo({\n        top: d.y,\n        left: d.x,\n        behavior: isSync ? 'auto' : 'smooth',\n      });\n    } else {\n      try {\n        (target as Element).scrollTo({\n          top: d.y,\n          left: d.x,\n          behavior: isSync ? 'auto' : 'smooth',\n        });\n      } catch (error) {\n        /**\n         * Seldomly we may found scroll target was removed before\n         * its last scroll event.\n         */\n      }\n    }\n  }\n\n  private applyInput(d: inputData) {\n    const target = this.mirror.getNode(d.id);\n    if (!target) {\n      return this.debugNodeNotFound(d, d.id);\n    }\n    try {\n      (target as HTMLInputElement).checked = d.isChecked;\n      (target as HTMLInputElement).value = d.text;\n    } catch (error) {\n      // for safe\n    }\n  }\n\n  private applySelection(d: selectionData) {\n    try {\n      const selectionSet = new Set<Selection>();\n      const ranges = d.ranges.map(({ start, startOffset, end, endOffset }) => {\n        const startContainer = this.mirror.getNode(start);\n        const endContainer = this.mirror.getNode(end);\n\n        if (!startContainer || !endContainer) return;\n\n        const result = new Range();\n\n        result.setStart(startContainer, startOffset);\n        result.setEnd(endContainer, endOffset);\n        const doc = startContainer.ownerDocument;\n        const selection = doc?.getSelection();\n        selection && selectionSet.add(selection);\n\n        return {\n          range: result,\n          selection,\n        };\n      });\n\n      selectionSet.forEach((s) => s.removeAllRanges());\n\n      ranges.forEach((r) => r && r.selection?.addRange(r.range));\n    } catch (error) {\n      // for safe\n    }\n  }\n\n  private applyStyleSheetMutation(\n    data: styleDeclarationData | styleSheetRuleData,\n  ) {\n    let styleSheet: CSSStyleSheet | null = null;\n    if (data.styleId) styleSheet = this.styleMirror.getStyle(data.styleId);\n    else if (data.id)\n      styleSheet =\n        (this.mirror.getNode(data.id) as HTMLStyleElement)?.sheet || null;\n    if (!styleSheet) return;\n    if (data.source === IncrementalSource.StyleSheetRule)\n      this.applyStyleSheetRule(data, styleSheet);\n    else if (data.source === IncrementalSource.StyleDeclaration)\n      this.applyStyleDeclaration(data, styleSheet);\n  }\n\n  private applyStyleSheetRule(\n    data: styleSheetRuleData,\n    styleSheet: CSSStyleSheet,\n  ) {\n    data.adds?.forEach(({ rule, index: nestedIndex }) => {\n      try {\n        if (Array.isArray(nestedIndex)) {\n          const { positions, index } = getPositionsAndIndex(nestedIndex);\n          const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n          nestedRule.insertRule(rule, index);\n        } else {\n          const index =\n            nestedIndex === undefined\n              ? undefined\n              : Math.min(nestedIndex, styleSheet.cssRules.length);\n          styleSheet?.insertRule(rule, index);\n        }\n      } catch (e) {\n        /**\n         * sometimes we may capture rules with browser prefix\n         * insert rule with prefixs in other browsers may cause Error\n         */\n        /**\n         * accessing styleSheet rules may cause SecurityError\n         * for specific access control settings\n         */\n      }\n    });\n\n    data.removes?.forEach(({ index: nestedIndex }) => {\n      try {\n        if (Array.isArray(nestedIndex)) {\n          const { positions, index } = getPositionsAndIndex(nestedIndex);\n          const nestedRule = getNestedRule(styleSheet.cssRules, positions);\n          nestedRule.deleteRule(index || 0);\n        } else {\n          styleSheet?.deleteRule(nestedIndex);\n        }\n      } catch (e) {\n        /**\n         * same as insertRule\n         */\n      }\n    });\n\n    if (data.replace)\n      try {\n        void styleSheet.replace?.(data.replace);\n      } catch (e) {\n        // for safety\n      }\n\n    if (data.replaceSync)\n      try {\n        styleSheet.replaceSync?.(data.replaceSync);\n      } catch (e) {\n        // for safety\n      }\n  }\n\n  private applyStyleDeclaration(\n    data: styleDeclarationData,\n    styleSheet: CSSStyleSheet,\n  ) {\n    if (data.set) {\n      const rule = getNestedRule(\n        styleSheet.rules,\n        data.index,\n      ) as unknown as CSSStyleRule;\n      rule.style.setProperty(\n        data.set.property,\n        data.set.value,\n        data.set.priority,\n      );\n    }\n\n    if (data.remove) {\n      const rule = getNestedRule(\n        styleSheet.rules,\n        data.index,\n      ) as unknown as CSSStyleRule;\n      rule.style.removeProperty(data.remove.property);\n    }\n  }\n\n  private applyAdoptedStyleSheet(data: adoptedStyleSheetData) {\n    const targetHost = this.mirror.getNode(data.id);\n    if (!targetHost) return;\n    // Create StyleSheet objects which will be adopted after.\n    data.styles?.forEach((style) => {\n      let newStyleSheet: CSSStyleSheet | null = null;\n      /**\n       * Constructed StyleSheet can't share across multiple documents.\n       * The replayer has to get the correct host window to recreate a StyleSheetObject.\n       */\n      let hostWindow: IWindow | null = null;\n      if (hasShadowRoot(targetHost))\n        hostWindow = targetHost.ownerDocument?.defaultView || null;\n      else if (targetHost.nodeName === '#document')\n        hostWindow = (targetHost as Document).defaultView;\n\n      if (!hostWindow) return;\n      try {\n        newStyleSheet = new hostWindow.CSSStyleSheet();\n        this.styleMirror.add(newStyleSheet, style.styleId);\n        // To reuse the code of applying stylesheet rules\n        this.applyStyleSheetRule(\n          {\n            source: IncrementalSource.StyleSheetRule,\n            adds: style.rules,\n          },\n          newStyleSheet,\n        );\n      } catch (e) {\n        // In case some browsers don't support constructing StyleSheet.\n      }\n    });\n\n    const MAX_RETRY_TIME = 10;\n    let count = 0;\n    const adoptStyleSheets = (targetHost: Node, styleIds: number[]) => {\n      const stylesToAdopt = styleIds\n        .map((styleId) => this.styleMirror.getStyle(styleId))\n        .filter((style) => style !== null) as CSSStyleSheet[];\n      if (hasShadowRoot(targetHost))\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        (targetHost as HTMLElement).shadowRoot!.adoptedStyleSheets =\n          stylesToAdopt;\n      else if (targetHost.nodeName === '#document')\n        (targetHost as Document).adoptedStyleSheets = stylesToAdopt;\n\n      /**\n       * In the live mode where events are transferred over network without strict order guarantee, some newer events are applied before some old events and adopted stylesheets may haven't been created.\n       * This retry mechanism can help resolve this situation.\n       */\n      if (stylesToAdopt.length !== styleIds.length && count < MAX_RETRY_TIME) {\n        setTimeout(\n          () => adoptStyleSheets(targetHost, styleIds),\n          0 + 100 * count,\n        );\n        count++;\n      }\n    };\n    adoptStyleSheets(targetHost, data.styleIds);\n  }\n\n  private legacy_resolveMissingNode(\n    map: missingNodeMap,\n    parent: Node | RRNode,\n    target: Node | RRNode,\n    targetMutation: addedNodeMutation,\n  ) {\n    const { previousId, nextId } = targetMutation;\n    const previousInMap = previousId && map[previousId];\n    const nextInMap = nextId && map[nextId];\n    if (previousInMap) {\n      const { node, mutation } = previousInMap;\n      parent.insertBefore(node as Node & RRNode, target as Node & RRNode);\n      delete map[mutation.node.id];\n      delete this.legacy_missingNodeRetryMap[mutation.node.id];\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(map, parent, node, mutation);\n      }\n    }\n    if (nextInMap) {\n      const { node, mutation } = nextInMap;\n      parent.insertBefore(\n        node as Node & RRNode,\n        target.nextSibling as Node & RRNode,\n      );\n      delete map[mutation.node.id];\n      delete this.legacy_missingNodeRetryMap[mutation.node.id];\n      if (mutation.previousId || mutation.nextId) {\n        this.legacy_resolveMissingNode(map, parent, node, mutation);\n      }\n    }\n  }\n\n  private moveAndHover(\n    x: number,\n    y: number,\n    id: number,\n    isSync: boolean,\n    debugData: incrementalData,\n  ) {\n    const target = this.mirror.getNode(id);\n    if (!target) {\n      return this.debugNodeNotFound(debugData, id);\n    }\n\n    const base = getBaseDimension(target, this.iframe);\n    const _x = x * base.absoluteScale + base.x;\n    const _y = y * base.absoluteScale + base.y;\n\n    this.mouse.style.left = `${_x}px`;\n    this.mouse.style.top = `${_y}px`;\n    if (!isSync) {\n      this.drawMouseTail({ x: _x, y: _y });\n    }\n    this.hoverElements(target as Element);\n  }\n\n  private drawMouseTail(position: { x: number; y: number }) {\n    if (!this.mouseTail) {\n      return;\n    }\n\n    const { lineCap, lineWidth, strokeStyle, duration } =\n      this.config.mouseTail === true\n        ? defaultMouseTailConfig\n        : Object.assign({}, defaultMouseTailConfig, this.config.mouseTail);\n\n    const draw = () => {\n      if (!this.mouseTail) {\n        return;\n      }\n      const ctx = this.mouseTail.getContext('2d');\n      if (!ctx || !this.tailPositions.length) {\n        return;\n      }\n      ctx.clearRect(0, 0, this.mouseTail.width, this.mouseTail.height);\n      ctx.beginPath();\n      ctx.lineWidth = lineWidth;\n      ctx.lineCap = lineCap;\n      ctx.strokeStyle = strokeStyle;\n      ctx.moveTo(this.tailPositions[0].x, this.tailPositions[0].y);\n      this.tailPositions.forEach((p) => ctx.lineTo(p.x, p.y));\n      ctx.stroke();\n    };\n\n    this.tailPositions.push(position);\n    draw();\n    setTimeout(() => {\n      this.tailPositions = this.tailPositions.filter((p) => p !== position);\n      draw();\n    }, duration / this.speedService.state.context.timer.speed);\n  }\n\n  private hoverElements(el: Element) {\n    (this.lastHoveredRootNode || this.iframe.contentDocument)\n      ?.querySelectorAll('.\\\\:hover')\n      .forEach((hoveredEl) => {\n        hoveredEl.classList.remove(':hover');\n      });\n    this.lastHoveredRootNode = el.getRootNode() as Document | ShadowRoot;\n    let currentEl: Element | null = el;\n    while (currentEl) {\n      if (currentEl.classList) {\n        currentEl.classList.add(':hover');\n      }\n      currentEl = currentEl.parentElement;\n    }\n  }\n\n  private isUserInteraction(event: eventWithTime): boolean {\n    if (event.type !== EventType.IncrementalSnapshot) {\n      return false;\n    }\n    return (\n      event.data.source > IncrementalSource.Mutation &&\n      event.data.source <= IncrementalSource.Input\n    );\n  }\n\n  public backToNormal() {\n    this.nextUserInteractionEvent = null;\n    if (this.speedService.state.matches('normal')) {\n      return;\n    }\n    this.speedService.send({ type: 'BACK_TO_NORMAL' });\n    this.emitter.emit(ReplayerEvents.SkipEnd, {\n      speed: this.speedService.state.context.normalSpeed,\n    });\n  }\n\n  private warnNodeNotFound(d: incrementalData, id: number) {\n    this.warn(`Node with id '${id}' not found. `, d);\n  }\n\n  private warnCanvasMutationFailed(\n    d: canvasMutationData | canvasMutationCommand,\n    error: unknown,\n  ) {\n    this.warn(`Has error on canvas update`, error, 'canvas mutation:', d);\n  }\n\n  private debugNodeNotFound(d: incrementalData, id: number) {\n    /**\n     * There maybe some valid scenes of node not being found.\n     * Because DOM events are macrotask and MutationObserver callback\n     * is microtask, so events fired on a removed DOM may emit\n     * snapshots in the reverse order.\n     */\n    this.debug(`Node with id '${id}' not found. `, d);\n  }\n\n  private warn(...args: Parameters<typeof console.warn>) {\n    if (!this.config.showWarning) {\n      return;\n    }\n    this.config.logger.warn(REPLAY_CONSOLE_PREFIX, ...args);\n  }\n\n  private debug(...args: Parameters<typeof console.log>) {\n    if (!this.config.showDebug) {\n      return;\n    }\n    this.config.logger.log(REPLAY_CONSOLE_PREFIX, ...args);\n  }\n}\n\nexport { type PlayerMachineState, type SpeedMachineState, type playerConfig };\n", "\nimport record from \"./record\";\nimport {\n  Replayer,\n  type playerConfig,\n  type PlayerMachineState,\n  type SpeedMachineState,\n} from \"./replay\";\nimport canvasMutation from \"./replay/canvas\";\nimport * as utils from \"./utils\";\nimport { _mirror } from \"./utils\";\n\nexport {\n  EventType,\n  IncrementalSource,\n  MouseInteractions,\n  ReplayerEvents,\n  type eventWithTime\n} from \"@sailfish-rrweb/types\";\n\n// exports style.css from replay\nimport \"./replay/styles/style.css\";\n\nexport type { recordOptions, ReplayPlugin } from \"./types\";\n\nconst { addCustomEvent } = record;\nconst { addSailfishEvent } = record;\nconst { freezePage } = record;\nconst { takeFullSnapshot } = record;\n\nexport * from \"./record\";\nexport * from \"./utils\";\n\nexport {\n  addCustomEvent,\n  addSailfishEvent,\n  canvasMutation,\n  freezePage,\n  _mirror as mirror,\n  record,\n  Replayer,\n  takeFullSnapshot,\n  utils,\n  type playerConfig,\n  type PlayerMachineState,\n  type SpeedMachineState,\n};\n"],
  "mappings": "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",
  "names": ["Cr", "Sr", "s", "e", "t", "Ne", "w", "Qe", "xr", "Ae", "vr", "Er", "Rr", "r", "i", "It", "Or", "n", "l", "a", "o", "f", "u", "de", "kr", "_t", "Ar", "Nr", "Ke$1", "tn", "Ke", "Mr", "Ce", "at", "Pr", "Ir", "_r", "$t", "Lt", "$r", "ut", "Lr", "Tr", "Dr", "z", "ft", "Ur", "Br", "Fr", "zr", "me", "d", "Wr", "jr", "Gr", "W", "ct", "Se", "Vr", "Hr", "Jr", "Yr", "$e", "qr", "Qr", "Kr", "Xr", "g", "E", "R", "c", "m", "Zr", "ts", "es", "k", "p", "b", "O", "I", "A", "N", "_", "M", "S", "rs", "K", "U", "H", "x", "ke", "P", "B", "F", "rn", "ss", "is", "Xe", "y", "Tt", "ns", "os", "ls", "$", "ht", "pt", "Le", "Dt", "Ze", "dt", "as", "Te", "Ut", "us", "De", "xe", "re", "fs", "cs", "hs", "J", "ps", "Ue", "Y", "Be", "ve", "ds", "Fe", "Ee", "ms", "ze", "__spreadProps", "__spreadValues", "Re", "Bt", "Ft", "gs", "zt", "Wt", "et", "jt", "Gt", "tt", "Vt", "Ht", "T", "Jt", "D", "Yt", "ge", "rt", "ys", "qt", "Qt", "X", "st", "ws", "bs", "Cs", "Ss", "xs", "Me", "vs", "mt", "gt", "Es", "We", "Kt", "Rs", "je", "Ge", "Os", "ks", "yt", "ie", "wt", "Ns", "Pe", "Ie", "As", "bt", "ye", "h", "Oe", "Xt", "Zt", "er", "j", "se", "Z", "tr", "rr", "Ms", "we", "it", "Ps", "Is", "_s", "$s", "Ls", "Ts", "Ds", "ee", "Us", "he", "sr", "ir", "nr", "or", "pe", "Ct", "Bs", "Fs", "zs", "Ws", "lr", "_e", "St", "ne", "xt", "oe", "q", "le", "ae", "ue", "js", "Gs", "Vs", "Hs", "Js", "Ys", "qs", "Qs", "Ks", "Xs", "fe", "ce", "Zs", "vt", "ei", "ti", "ri", "si", "ii", "Et", "ni", "Rt", "oi", "li", "ai", "ui", "fi", "ci", "be", "nt", "Ve", "ar", "hi", "He", "ot", "pi", "D", "di", "st", "mi", "lr", "gi", "nt", "kt", "ot", "yi", "se", "wi", "xe", "L", "bi", "re", "Si", "xi", "vi", "G", "Q", "s", "fr", "e", "t", "Nt", "Je", "L", "Ye", "V", "cr", "r", "i", "kt", "n", "gi", "l", "bi", "pi", "__spreadProps", "__spreadValues", "wi", "mi", "a", "o", "hr", "yi", "di", "Ei", "lr", "Ri", "nt", "Oi", "ot", "ki", "xe", "qe", "Ri", "r", "i", "n", "ki", "Oi", "l", "a", "Ei", "o", "f", "Ai", "Mi", "st", "Pi", "hr", "Ii", "_i", "se", "te", "e", "t", "$i", "pr", "rt", "dr", "Ee", "Li", "D", "Ti", "Ze", "mr", "Re", "gr", "Di", "Us", "Ui", "Oe", "Bi", "Fi", "tr", "zi", "ve", "Wi", "nt", "lt", "ji", "ot", "yr", "wr", "it", "Gi", "xe", "Vi", "ar", "C", "s", "Hi", "v", "ss", "Ji", "At", "Yi", "qi", "u", "Mt", "Qi", "Pt", "xn", "Ki", "w", "d", "br", "Ir", "Qe", "g", "Xi", "Zi", "vn", "Ke", "h", "k", "L", "b", "on", "type", "fn", "target", "options", "DEPARTED_MIRROR_ACCESS_WARNING", "_mirror", "prop", "receiver", "throttle", "func", "wait", "timeout", "previous", "args", "now", "remaining", "context", "hookSetter", "key", "isRevoked", "win", "original", "value", "patch", "source", "name", "replacement", "wrapped", "nowTimestamp", "getWindowScroll", "doc", "_b", "_a", "_c", "_e", "_d", "_f", "getWindowHeight", "getWindowWidth", "closestElementOfNode", "node", "isBlocked", "blockClass", "blockSelector", "checkAncestors", "el", "classMatchesRegex", "isSerialized", "mirror", "isIgnored", "slimDOMOptions", "IGNORED_NODE", "isAncestorRemoved", "isShadowRoot", "id", "legacy_isTouchEvent", "event", "polyfill", "queueToResolveTrees", "queue", "queueNodeMap", "putIntoMap", "m", "parent", "nodeInTree", "queueNodeTrees", "mutation", "nextId", "parentId", "nextInTree", "idx", "parentInTree", "iterateResolveTree", "tree", "cb", "isSerializedIframe", "isSerializedStylesheet", "getBaseDimension", "rootIframe", "frameElement", "frameDimension", "frameBaseDimension", "relativeScale", "hasShadowRoot", "getNestedRule", "rules", "position", "rule", "getPositionsAndIndex", "nestedIndex", "positions", "index", "uniqueTextMutations", "mutations", "idSet", "uniqueMutations", "StyleSheetMirror", "__publicField", "stylesheet", "newId", "getShadowHost", "shadowHost", "getRootShadowHost", "rootShadowHost", "shadowHostInDom", "inDom", "ou", "Pr", "Nr", "Lr", "Te", "cr", "qs", "Fr", "kr", "Tr", "fe", "Xe", "_r", "Rr", "ct", "Js", "Ar", "Dr", "gt", "X", "Me", "Or", "Ks", "en", "Qs", "errorHandler", "registerErrorHandler", "handler", "unregisterErrorHandler", "callbackWrapper", "rest", "error", "CrossOriginIframeMirror", "generateIdFn", "iframe", "remoteId", "idToRemoteMap", "remoteToIdMap", "idToRemoteIdMap", "remoteIdToIdMap", "map", "ids", "IframeManager", "genId", "iframeEl", "childSn", "message", "crossOriginMessageEvent", "EventType", "rootId", "IncrementalSource", "p", "range", "style", "iframeMirror", "obj", "keys", "child", "NodeType", "estimateJsonSize", "computeTextDiff", "oldText", "newText", "oldStr", "newStr", "fullTextSize", "appendedText", "delta", "TextDeltaOp", "deltaSize", "deleteLength", "commonPrefixLen", "minLen", "commonSuffixLen", "oldRemaining", "newRemaining", "maxSuffixLen", "oldMiddleLen", "newMiddleLen", "newMiddleText", "shouldUseDelta", "result", "applyTextDelta", "currentText", "text", "isNodeInLinkedList", "DoubleLinkedList", "current", "moveKey", "MutationBuffer", "adds", "addedIds", "addList", "getNextId", "ns", "pushAdd", "sn", "serializeNodeWithId", "currentN", "link", "isParentRemoved", "isAncestorInSet", "candidate", "tailNode", "_node", "unhandledNode", "payload", "diffResult", "attribute", "attributes", "diffAsStr", "unchangedAsStr", "textarea", "item", "cn", "isMasked", "needMaskingText", "maskedValue", "attributeName", "getInputType", "maskInputValue", "ignoreAttribute", "transformAttribute", "toLowerCase", "old", "pname", "newValue", "newPriority", "nodeId", "deepDelete", "isNativeShadowDom", "targetId", "childN", "addsSet", "removes", "_isParentRemoved", "set", "_isAncestorInSet", "parentNode", "mutationBuffers", "getEventTarget", "path", "initMutationObserver", "rootEl", "mutationBuffer", "mutationObserverCtor", "angularZoneSymbol", "observer", "initMoveObserver", "mousemoveCb", "sampling", "threshold", "callbackThreshold", "timeBaseline", "wrappedCb", "totalOffset", "updatePosition", "evt", "clientX", "clientY", "handlers", "initMouseInteractionObserver", "mouseInteractionCb", "disableMap", "currentPointerType", "getHandler", "eventKey", "pointerType", "thisEventKey", "PointerTypes", "MouseInteractions", "__spreadValues", "eventName", "initScrollObserver", "scrollCb", "scrollLeftTop", "initViewportResizeObserver", "viewportResizeCb", "lastH", "lastW", "updateDimension", "height", "width", "INPUT_TAGS", "lastInputValueMap", "initInputObserver", "inputCb", "ignoreClass", "ignoreSelector", "maskInputOptions", "maskInputFn", "userTriggeredOnInput", "eventHandler", "userTriggered", "tagName", "isChecked", "masked", "cbWithDedup", "lastInputValue", "__spreadProps", "currentWindow", "propertyDescriptor", "hookProperties", "initTypingObserver", "typingCb", "keydownHandler", "keyInfo", "getDomPath", "element", "selector", "classList", "siblings", "initDeviceChangeObserver", "deviceChangeCb", "handleUSBChange", "action", "deviceNames", "handleHIDChange", "handleGamepadChange", "gamepads", "devices", "handleMediaDeviceChange", "deviceList", "handleNetworkChange", "status", "networkHandlers", "gamepadPollInterval", "getNestedCSSRulePositions", "recurse", "childRule", "pos", "hasNestedCSSRule", "getIdAndStyleId", "sheet", "styleMirror", "styleId", "initStyleSheetObserver", "styleSheetRuleCb", "stylesheetManager", "insertRule", "thisArg", "argumentsList", "deleteRule", "replace", "replaceSync", "supportedNestedCSSRuleTypes", "canMonkeyPatchNestedCSSRule", "unmodifiedFunctions", "typeKey", "initAdoptedStyleSheetObserver", "host", "hostId", "patchTarget", "originalPropertyDescriptor", "sheets", "initStyleDeclarationObserver", "styleDeclarationCb", "ignoreCSSAttributes", "setProperty", "property", "priority", "removeProperty", "initMediaInteractionObserver", "mediaInteractionCb", "currentTime", "volume", "muted", "playbackRate", "loop", "MediaInteractions", "initFontObserver", "fontCb", "fontMap", "originalFontFace", "family", "descriptors", "safeSource", "fontFace", "restoreHandler", "initSelectionObserver", "param", "selectionCb", "collapsed", "updateSelection", "selection", "ranges", "count", "startContainer", "startOffset", "endContainer", "endOffset", "initCustomElementObserver", "customElementCb", "constructor", "mergeHooks", "hooks", "mutationCb", "canvasMutationCb", "c", "initObservers", "mutationObserver", "mousemoveHandler", "mouseInteractionHandler", "scrollHandler", "viewportResizeHandler", "inputHandler", "typingHandler", "mediaDeviceChangeHandler", "mediaInteractionHandler", "styleSheetObserver", "adoptedStyleSheetObserver", "styleDeclarationObserver", "fontObserver", "selectionObserver", "customElementObserver", "pluginHandlers", "plugin", "ko", "Ou", "Jn", "Du", "chars", "lookup", "encode", "arraybuffer", "bytes", "len", "base64", "decode", "bufferLength", "encoded1", "encoded2", "encoded3", "encoded4", "canvasVarMap", "variableListFor", "ctx", "ctor", "contextMap", "saveWebGLVar", "isInstanceOfWebGLObject", "list", "serializeArg", "arg", "src", "serializeArgs", "initCanvas2DMutationObserver", "props2D", "recordArgs", "CanvasContext", "hookHandler", "getNormalizedContextName", "contextType", "initCanvasContextObserver", "setPreserveDrawingBufferToTrue", "ctxName", "contextAttributes", "patchGLPrototype", "prototype", "props", "initCanvasWebGLMutationObserver", "CanvasManager", "recordCanvas", "dataURLOptions", "fps", "canvasContextReset", "snapshotInProgressMap", "worker", "ImageBitmapDataURLWorker", "timeBetweenSnapshots", "lastSnapshotTime", "rafId", "getCanvas", "matchedCanvas", "canvas", "takeCanvasSnapshots", "timestamp", "bitmap", "canvas2DReset", "canvasWebGL1and2Reset", "setLatestRAFTimestamp", "_values", "valuesWithType", "values", "ProcessedNodeManager", "thisBuffer", "buffers", "buffer", "ShadowDomManager", "shadowRoot", "iframeElement", "manager", "option", "StylesheetManager", "linkEl", "adoptedStyleSheetData", "styles", "stringifyRule", "_linkEl", "wrappedEmit", "takeFullSnapshot", "canvasManager", "recording", "x", "cleanFrame", "err", "createMirror", "record", "emit", "checkoutEveryNms", "checkoutEveryNth", "maskTextClass", "maskTextSelector", "inlineStylesheet", "maskAllInputs", "_maskInputOptions", "_slimDOMOptions", "maskTextFn", "packFn", "mousemoveWait", "recordDOM", "recordCrossOriginIframes", "recordAfter", "collectFonts", "inlineImages", "plugins", "keepIframeSrcFn", "inEmittingFrame", "passEmitsToParent", "lastFullSnapshotEvent", "incrementalSnapshotCount", "eventProcessor", "isCheckout", "G", "buf", "exceedCount", "exceedTime", "wrappedMutationEmit", "wrappedScrollEmit", "wrappedCanvasMutationEmit", "wrappedAdoptedStyleSheetEmit", "iframeManager", "processedNodeManager", "shadowDomManager", "corruptedRules", "snapshot", "observe", "re", "init", "tag", "ps", "fs", "ds", "ms", "ee", "gs", "ws", "ys", "bs", "jt", "Es", "xs", "Cs", "S", "Ct", "E", "N", "zt", "ie", "Rs", "Rt", "Ce", "Ns", "Nt", "Y", "Ss", "vs", "Os", "F", "Ds", "St", "B", "vt", "ht", "Ms", "Ot", "pt", "ks", "Dt", "ft", "Ne", "As", "Se", "$t", "De", "Gt", "ke", "Ae", "T", "Wt", "Ts", "Ie", "$", "Vt", "Is", "_s", "Ps", "Ls", "yt", "Fs", "ne", "oe", "Bs", "Pe", "js", "kt", "zs", "$s", "ae", "le", "Gs", "bt", "Et", "Ws", "ue", "at", "dt", "Ue", "Le", "Fe", "P", "J", "Be", "je", "Vs", "Yt", "Ys", "Hs", "Xs", "Zs", "W", "ze", "$e", "Ge", "We", "ce", "er", "sr", "rr", "Ve", "xt", "he", "Z", "pe", "q", "j", "K", "Q", "tt", "ir", "nr", "or", "lr", "ur", "fr", "et", "I", "M", "wt", "hs", "de", "Er", "me", "xr", "Cr", "Sr", "vr", "ut", "Jt", "Tt", "Ye", "It", "Ht", "Dr", "T", "Mr", "Vt", "kr", "Ve", "Ar", "Jt", "we", "Ht", "Tr", "J", "Ir", "ct", "O", "_r", "Y", "Ur", "Lr", "Fr", "U", "z", "e", "He", "t", "s", "ye", "_t", "O", "Pt", "L", "Xe", "r", "i", "we", "n", "Ar", "_r", "Dr", "__spreadProps", "__spreadValues", "Ir", "kr", "Ze", "Tr", "Mr", "Br", "Ve", "jr", "Jt", "zr", "Ht", "$r", "ct", "Ut", "e", "t", "jr", "s", "r", "i", "$r", "zr", "n", "Br", "Wr", "Vr", "Vt", "Yr", "Ze", "Jr", "Hr", "J", "V", "Xr", "qe", "Wt", "Ke", "pt", "Zr", "T", "qr", "zt", "Qe", "ft", "ts", "Kr", "Qs", "Qr", "dt", "ti", "ei", "Be", "si", "ht", "ri", "Jt", "Xt", "ii", "Ht", "es", "ss", "Yt", "ni", "ct", "oi", "Ye", "g", "ai", "y", "ys", "li", "Lt", "be", "pi", "ui", "ci", "hi", "A", "c", "Zt", "d", "Kt", "a", "as", "ls", "rs", "qt", "is", "ns", "os", "di", "o", "fi", "C", "Ft", "mi", "R", "us", "gi", "cs", "wi", "Qt", "Bt", "_", "yi", "p", "u", "m", "w", "E", "D", "h", "x", "b", "M", "gt", "v", "N", "__spreadValues", "H", "Mi", "bi", "Ei", "Ri", "xi", "Ci", "mt", "Si", "vi", "Ni", "Oi", "Di", "Ai", "Ii", "ws", "ki", "mitt$1", "lp", "Ca", "webGLVarMap", "variableListFor", "ctx", "ctor", "contextMap", "deserializeArg", "imageMap", "preload", "arg", "args", "name", "index", "decode", "image", "blobContents", "canvasMutation", "event", "mutations", "target", "errorHandler", "mutationArgsPromises", "mutation", "original", "error", "getContext", "type", "CanvasContext", "WebGLVariableConstructorsNames", "saveToWebGLVarMap", "result", "variables", "webglMutation", "debugMode", "canvasEventMap", "precomputedMutation", "commands", "command", "canvas2DMutation", "f", "l", "S", "j", "O", "k", "q", "z", "B", "Timer", "actions", "config", "__publicField", "action", "rafWasActive", "time", "speed", "start", "end", "mid", "addDelay", "baselineTime", "EventType", "IncrementalSource", "firstOffset", "firstTimestamp", "discardPriorSnapshots", "events", "idx", "createPlayerService", "context", "getCastFn", "applyEventsSynchronously", "emitter", "playerMachine", "createMachine", "assign", "timeOffset", "__spreadProps", "timer", "neededEvents", "ReplayerEvents", "syncEvents", "castFn", "machineEvent", "insertionIndex", "isSync", "skipSync", "interpret", "createSpeedService", "speedMachine", "MediaManager", "options", "_mediaState", "mediaState", "mediaPlaybackOffset", "duration", "seekToTime", "onLoadedMetadata", "lastState", "playbackRate", "currentTime", "muted", "volume", "loop", "MediaInteractions", "isPlaying", "playerIsPaused", "node", "mirror", "serializedNode", "mediaAttributes", "currentTimeAtLastInteraction", "polyfill", "Element", "SCROLL_TIME", "scrollElement", "now", "isMicrosoftBrowser", "userAgent", "userAgentPatterns", "ROUNDING_TOLERANCE", "ease", "shouldBailOut", "firstArg", "hasScrollableSpace", "el", "axis", "canOverflow", "overflowValue", "isScrollable", "isScrollableY", "isScrollableX", "findScrollableParent", "step", "value", "currentX", "currentY", "elapsed", "smoothScroll", "scrollable", "startX", "startY", "method", "startTime", "left", "top", "scrollableParent", "parentRects", "clientRects", "rules", "blockClass", "SKIP_TIME_INTERVAL", "mitt", "mittProxy.default", "mittProxy", "REPLAY_CONSOLE_PREFIX", "defaultMouseTailConfig", "indicatesTouchDevice", "MouseInteractions", "Replayer", "RRDocument", "createCache", "createMirror", "StyleSheetMirror", "dimension", "_a", "_event", "skipTime", "payload", "plugin", "last_index", "finish", "finish_buffer", "defaultConfig", "replayerHandler", "canvasEvent", "canvasMutationData", "data", "styleSheet", "id", "diff", "key", "realNode", "createOrGetNode", "a1", "a2", "state", "firstMeta", "firstFullsnapshot", "width", "height", "handler", "firstEvent", "lastEvent", "_b", "rawEvent", "attributes", "smoothscrollPolyfill", "collected", "afterAppend", "builtNode", "rebuild", "mutationInQueue", "documentElement", "head", "injectStylesRules", "getInjectStyleRules", "styleEl", "getDefaultSN", "cssText", "iframeEl", "sn", "NodeType", "buildNodeWithSN", "isSerializedIframe", "unloadSheets", "beforeLoadState", "stateHandler", "unsubscribe", "css", "promises", "canvas", "imgd", "status", "lastPosition", "toLowerCase", "triggerFocus", "mediaEl", "fontFace", "_c", "buildFromDom", "virtualNode", "buildFromNode", "parent", "hasShadowRoot", "legacy_missingNodeMap", "queue", "nextNotInDOM", "next", "appendNode", "previous", "targetDoc", "parentSn", "prospectiveSiblings", "parentDoc", "targetId", "resolveTrees", "queueToResolveTrees", "tree", "iterateResolveTree", "uniqueTextMutations", "textValue", "currentValue", "applyTextDelta", "attributeName", "newSn", "newNode", "siblingNode", "parentNode", "textarea", "tn", "styleValues", "targetEl", "svp", "svs", "selectionSet", "ranges", "startOffset", "endOffset", "startContainer", "endContainer", "doc", "selection", "rule", "nestedIndex", "positions", "getPositionsAndIndex", "getNestedRule", "_d", "targetHost", "style", "newStyleSheet", "hostWindow", "MAX_RETRY_TIME", "count", "adoptStyleSheets", "styleIds", "stylesToAdopt", "styleId", "map", "targetMutation", "previousId", "nextId", "previousInMap", "nextInMap", "debugData", "base", "getBaseDimension", "_x", "_y", "position", "lineCap", "lineWidth", "strokeStyle", "draw", "hoveredEl", "currentEl", "addCustomEvent", "record", "addSailfishEvent", "freezePage", "takeFullSnapshot"]
}
