Skip to content

feat(Dom2Image): bump version 10.0.8 - #1148

Merged
ArgoZhang merged 2 commits into
masterfrom
dev-dom2image
Sep 22, 2026
Merged

ArgoZhang merged 2 commits into
masterfrom
dev-dom2image

Conversation

@ArgoZhang

@ArgoZhang ArgoZhang commented Sep 22, 2026 •

Copy link
Copy Markdown
Member

Link issues

fixes #1147

Summary By Copilot

Regression?

  • Yes
  • No

Risk

  • High
  • Medium
  • Low

Verification

  • Manual (required)
  • Automated

Packaging changes reviewed?

  • Yes
  • No
  • N/A

☑️ Self Check before Merge

⚠️ Please check all items below before review. ⚠️

  • Doc is updated/provided or not needed
  • Demo is updated/provided or not needed
  • Merge the latest code from the main branch

Summary by Sourcery

Release Dom2Image version 10.0.8 with the updated bundled snapdom library.

Bug Fixes:

  • Update the Dom2Image package to resolve the reported issue and align its bundled snapdom asset with the new release.

Build:

  • Bump the BootstrapBlazor.Dom2Image package version to 10.0.8.

@sourcery-ai

sourcery-ai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

This PR releases Dom2Image as version 10.0.8 and updates the bundled generated snapdom module to match the new package contents; review the version metadata and generated asset diff for packaging consistency.

File-Level Changes

Change Details Files
Bump the Dom2Image package version and synchronize its bundled snapdom dependency output.
  • Update the project/package version to 10.0.8.
  • Refresh the generated snapdom module with the corresponding dependency changes.
src/components/BootstrapBlazor.Dom2Image/BootstrapBlazor.Dom2Image.csproj
src/components/BootstrapBlazor.Dom2Image/wwwroot/lib/snapdom.mjs

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@bb-auto bb-auto Bot added the enhancement New feature or request label Sep 22, 2026
@bb-auto bb-auto Bot added this to the v10.0.0 milestone Sep 22, 2026

@bb-auto bb-auto Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto approved by bb-auto

@ArgoZhang
ArgoZhang merged commit cb78e47 into master Sep 22, 2026
2 of 3 checks passed
@ArgoZhang
ArgoZhang deleted the dev-dom2image branch September 22, 2026 01:45

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 2 security issues

Security issues:

  • User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities (link)
  • User controlled data in a n.innerHTML is an anti-pattern that can lead to XSS vulnerabilities (link)
Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="src/components/BootstrapBlazor.Dom2Image/wwwroot/lib/snapdom.mjs" line_range="39" />
<code_context>
}`,ru=Math.max(1,Math.min(4,(typeof navigator<"u"&&navigator.hardwareConcurrency||2)-1)),Ft=null,ou=0,iu=0,ce=new Map;function ra(){for(let t of ce.values())t(void 0);if(ce.clear(),Array.isArray(Ft))for(let t of Ft)try{t?.terminate()}catch{}Ft=!1}function su(){let t,e=null;try{t=URL.createObjectURL(new Blob([nu],{type:"text/javascript"})),e=new Worker(t),e.onmessage=n=>{let r=ce.get(n.data.id);r&&(ce.delete(n.data.id),r(n.data.error?void 0:n.data.url??null))},e.onerror=ra}catch{e=null}return t&&URL.revokeObjectURL(t),e}function au(){if(Ft===!1)return!1;if(Ft===null){if(typeof Worker>"u"||typeof OffscreenCanvas>"u")return Ft=!1;Ft=[]}let t=ou++%ru;if(!Ft[t]){let e=su();if(!e)return ra(),!1;Ft[t]=e}return Ft[t]}var cu=5e3;function lu(t,e,n,r,i){let o=au();return o?new Promise(s=>{let a=++iu,c=setTimeout(()=>{ce.delete(a),s(void 0)},cu);ce.set(a,f=>{clearTimeout(c),s(f)});try{o.postMessage({id:a,dataURL:i?"":t,blob:i,srcLength:t.length,targetW:e,targetH:n,resFactor:na,quality:ea,mime:r})}catch{clearTimeout(c),ce.delete(a),s(void 0)}}):Promise.resolve(void 0)}async function So(t,e,n,r){if(typeof t!="string"||!t.startsWith("data:image")||t.startsWith("data:image/svg"))return null;e=Math.ceil(e),n=Math.ceil(n);let i=t.length+":"+t.slice(0,64)+t.slice(-64)+":"+e+"x"+n,o=P.compress,s=o.get(i);if(s?.source===t)return s.result;let a=Qn.get(i);if(a?.source===t&&a.cache===o)return a.promise;let c=(async()=>{let l=Qf(t),u=l==="image/jpeg"?"image/jpeg":l==="image/webp"?"image/webp":"image/png",p=eu(t);if(p&&p.w>0&&p.h>0&&!Qs(p.w,p.h,e,n))return null;if(t.length>=Jf){let S=await lu(t,e,n,u,r);if(S!==void 0)return S}let m;try{m=await Kf(t)}catch{return null}let d=m.naturalWidth||m.width,h=m.naturalHeight||m.height;if(!d||!h)return null;let g=Qs(d,h,e,n);if(!g)return null;let y=g*na,b=Math.max(1,Math.round(d*y)),w=Math.max(1,Math.round(h*y)),k=document.createElement("canvas");k.width=b,k.height=w;let x=k.getContext("2d");if(!x)return null;x.imageSmoothingEnabled=!0,x.imageSmoothingQuality="high",x.drawImage(m,0,0,b,w);try{let S=k.toDataURL(u,ea);if(typeof S=="string"&&S.startsWith("data:image")&&S.length<t.length)return S}catch{}return null})(),f={source:t,promise:c,cache:o};Qn.set(i,f);try{let l=await c;return Zf(o,i,t,l),l}finally{Qn.get(i)===f&&Qn.delete(i)}}async function fu(t,e,n=new Map,r={}){if(!e.compress)return{count:0,before:0,after:0};let i=Array.from(t.querySelectorAll("img"));t.tagName==="IMG"&&i.unshift(t);let o=0,s=0,a=0,c=async l=>{let u=l.getAttribute("src")||"";if(!u.startsWith("data:image")||u.startsWith("data:image/svg"))return;let p=parseFloat(l.dataset.snapdomWidth)||parseFloat(l.style.width)||l.width||0,m=parseFloat(l.dataset.snapdomHeight)||parseFloat(l.style.height)||l.height||0;if(!p||!m)return;let d=r.value||=wo(t,e),h=d.density*d.stretch(n.get(l)||l),g=await So(u,p*h,m*h,l.__snapdomBlob);g&&(o++,s+=u.length,a+=g.length,l.setAttribute("src",g),Jn(l,"attribute","src",u,g,e))},f=6;for(let l=0;l<i.length;l+=f)await Promise.allSettled(i.slice(l,l+f).map(c));return{count:o,before:s,after:a}}var uu=/^(cover|contain|(\d+(\.\d+)?%(\s+\d+(\.\d+)?%)?))$/;function du(t){let e=t.offsetWidth||t.getBoundingClientRect().width||0,n=t.offsetHeight||t.getBoundingClientRect().height||0;return{w:e,h:n}}async function pu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=[],o=[t,...t.querySelectorAll("*")];for(let f of o){let l=f.style&&f.style.backgroundImage;l&&l.includes("data:image")&&i.push(f)}let s=0,a=async f=>{let l=n.get(f);if(!l||!l.isConnected)return;let u;try{u=getComputedStyle(l)}catch{return}if((u.backgroundRepeat||"repeat").toLowerCase().split(",").some(v=>v.trim()!=="no-repeat"))return;let m=(f.style.backgroundSize||u.backgroundSize||"auto").toLowerCase();if(m.split(",").some(v=>!uu.test(v.trim())))return;let{w:d,h}=du(l);if(!d||!h)return;let g=Math.max(1,...(m.match(/\d+(?:\.\d+)?%/g)||[]).map(v=>parseFloat(v)/100)),y=r.value||=wo(t,e),b=y.density*y.stretch(l)*g,w=d*b,k=h*b,x=f.style.backgroundImage,S=[...x.matchAll(/url\((['"]?)(data:image\/[^)'"]+)\1\)/gi)],A=x;for(let v of S){let M=v[2];if(M.startsWith("data:image/svg"))continue;let C=await So(M,w,k);C&&(A=A.split(M).join(C),s++)}A!==x&&(f.style.setProperty("background-image",A,f.style.getPropertyPriority("background-image")),Jn(f,"style","background-image",x,f.style.backgroundImage,e))},c=6;for(let f=0;f<i.length;f+=c)await Promise.allSettled(i.slice(f,f+c).map(a));return{count:s}}async function hu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=Array.from(t.querySelectorAll("image"));t.localName==="image"&&i.unshift(t);let o=0,s=async c=>{let f=c.getAttribute("href")||(typeof c.getAttributeNS=="function"?c.getAttributeNS("http://www.w3.org/1999/xlink","href"):null);if(!f||!f.startsWith("data:image")||f.startsWith("data:image/svg"))return;let l=c.getAttribute("width")||"",u=c.getAttribute("height")||"";if(l.includes("%")||u.includes("%"))return;let p=n.get(c),m=p?W(p):c.style,d=(k,x)=>{if(/^\d+(?:\.\d+)?px$/.test(m?.[k]||""))return parseFloat(m[k]);if(/^\d+(?:\.\d+)?(?:px)?$/.test(x.trim()))return parseFloat(x);try{return p?.[k]?.baseVal?.value||0}catch{return 0}},h=d("width",l),g=d("height",u);if(!h||!g)return;let y=r.value||=wo(t,e),b=y.density*y.stretch(p||c),w=await So(f,h*b,g*b);w&&(c.setAttribute("href",w),Jn(c,"attribute","href",f,w,e),c.hasAttribute("xlink:href")&&(c.setAttributeNS(Js,"xlink:href",w),Jn(c,"attribute","xlink:href",f,w,e)),o++)},a=6;for(let c=0;c<i.length;c+=a)await Promise.allSettled(i.slice(c,c+a).map(s));return{count:o}}async function er(t,e,n){if(!e.compress)return;let r={};await fu(t,e,n,r),await pu(t,e,n,r),await hu(t,e,n,r)}ht();dt();wt();function mu(t,e){if(Y())return t;let n=t.indexOf("</style>");if(n===-1)return t;let r=/<style\b[^>]*>[\s\S]*?<\/style>/g,i=[],o=n,s;for(r.lastIndex=n;s=r.exec(t);)i.push({text:t.slice(o,s.index),intern:!0}),i.push({text:s[0],intern:!1}),o=r.lastIndex;i.push({text:t.slice(o),intern:!0});let a=new Map,c=/ style="([^"]*)"/g,f;for(let y of i)if(y.intern)for(c.lastIndex=0;f=c.exec(y.text);)a.set(f[1],(a.get(f[1])||0)+1);let l=0;for(let[y,b]of a)b>1&&(l+=(b-1)*y.length);if(l<2048||t.includes(" data-sdi="))return t;let u=gu(e,i.some(y=>!y.intern),t.includes("data-snapdom-asset"));if(u===null)return t;let p=new Map,m=0,d=[],h=(y,b)=>{if((a.get(b)||0)<2||u.has(b))return y;let w=p.get(b);return w===void 0&&(w="i"+(m++).toString(36),p.set(b,w),d.push(`[data-sdi="${w}"]{${b}}`)),` data-sdi="${w}"`},g="";for(let y of i)g+=y.intern?y.text.replace(c,h):y.text;return t.slice(0,n)+d.join("")+g}function gu(t,e,n){let r=new Set;if(!e&&!n)return r;if(!t||t.querySelector("[data-sdi]"))return null;let i=c=>{let f=c.getAttribute("style");f&&r.add(f)};if(n&&t.querySelectorAll("[data-snapdom-asset][style]").forEach(i),e)try{let c=f=>{for(let l of f){if(l.type===CSSRule.IMPORT_RULE||l.type===CSSRule.NAMESPACE_RULE)throw new Error("External or namespaced CSS");if(l.selectorText){if(/\[\s*style\b|data-sdi|\[[^\]]*\\|&/i.test(l.selectorText))throw new Error("Attribute-dependent or nested CSS");t.querySelectorAll(l.selectorText).forEach(i)}l.cssRules&&c(l.cssRules)}};for(let f of[...t.querySelectorAll("style")].slice(1)){let l=f.textContent||"";if(/@import\b/i.test(l))return null;let u=new CSSStyleSheet;u.replaceSync(l),c(u.cssRules)}}catch{return null}let o=new Set,s=document.createElement("div"),a=new XMLSerializer;for(let c of r){s.setAttribute("style",c);let f=a.serializeToString(s).match(/ style="([^"]*)"/);f&&o.add(f[1])}return o}async function nr(t,e){let{clipWindow:n,outerTransforms:r,outerShadows:i,rootTransform2D:o,fontsCSS:s}=e,a=t.options;if(t!==a){let{options:K,...tt}=t;t=Object.assign(a,tt),Object.defineProperty(t,"options",{value:t,configurable:!0})}let c,f;Is(t,s),await It("beforeRender",t);let l=W(t.element),u=t.element.getBoundingClientRect(),p=Math.max(1,I(t.element.offsetWidth||parseFloat(l.width)||u.width||1)),m=Math.max(1,I(t.element.offsetHeight||parseFloat(l.height)||u.height||1)),d=t.element.ownerDocument||document;if(!n&&(t.element===d.body||t.element===d.documentElement)&&!t.__pinned){let K=Math.max(t.element.scrollHeight||0,d.documentElement?.scrollHeight||0,d.body?.scrollHeight||0),tt=Math.max(t.element.scrollWidth||0,d.documentElement?.scrollWidth||0,d.body?.scrollWidth||0);K>0&&(m=Math.max(m,I(K))),tt>0&&(p=Math.max(p,I(tt)));try{let Q=(t.scrollbarCSS||"").length+(t.baseCSS||"").length+(t.fontsCSS||"").length+(t.classCSS||"").length,et=P.measureHints.get(t.element);if(et&&et.cssLen===Q&&et.w0===p&&et.docH===K&&et.docW===tt)et.csh>0&&(m=Math.max(m,I(et.csh))),et.csw>0&&(p=Math.max(p,I(et.csw)));else{let nt=d.createElement("div");J(nt),nt.style.cssText="position:absolute!important;left:-9999px!important;top:0!important;width:"+p+"px!important;overflow:visible!important;visibility:hidden!important;";let Qt=nt.attachShadow({mode:"open"}),Jt=d.createElement("style");Jt.textContent=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS,Qt.appendChild(Jt),Qt.appendChild(t.clone.cloneNode(!0)),d.body.appendChild(nt);let ze=nt.scrollHeight,Bt=nt.scrollWidth;d.body.removeChild(nt),P.measureHints.set(t.element,{cssLen:Q,w0:p,docH:K,docW:tt,csh:ze,csw:Bt}),ze>0&&(m=Math.max(m,I(ze))),Bt>0&&(p=Math.max(p,I(Bt)))}}catch{}}if(t.options?.excludeMode==="remove"||typeof t.options?.filter=="function"&&t.options.filterMode==="remove"){let K=po(t.element,t.options),tt=1,Q=po(t.element,{}),et=Math.max(2,m*.15);Number.isFinite(Q)&&Q>=m-et&&Number.isFinite(K)&&K>0&&(m=Math.max(1,Math.min(m,I(K+tt))))}if(t.options?.reconcile)try{let K=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS;Ls(t.element,t.clone,K,t.nodeMap,p,m)}catch(K){console.warn("[snapdom] reconcile pass failed:",K)}let g=(K,tt=NaN)=>{let Q=typeof K=="string"?parseFloat(K):K;return Number.isFinite(Q)?Q:tt},y=g(t.options.width),b=g(t.options.height),w=n?I(n.width):p,k=n?I(n.height):m,x=w,S=k,A=Number.isFinite(y),v=Number.isFinite(b),M=k>0?w/k:1;A&&v?(x=Math.max(1,I(y)),S=Math.max(1,I(b))):A?(x=Math.max(1,I(y)),S=Math.max(1,I(x/(M||1)))):v&&(S=Math.max(1,I(b)),x=Math.max(1,I(S*(M||1))));let C=0,R=0,_=p,T=m;if(n){let K=0,tt=0;if(xo(t.element)){let Q=null;if(!r&&o&&Number.isFinite(o.a))Q={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0};else{let et=ae(t.element),nt=uo(l.transform&&l.transform!=="none"?l.transform:"",et);nt&&nt.is2D&&(Q={a:nt.a,b:nt.b,c:nt.c,d:nt.d,e:0,f:0})}if(Q&&!(Q.a===1&&Q.b===0&&Q.c===0&&Q.d===1)){let{ox:et,oy:nt}=an(l,p,m),Qt=Fe(p,m,Q,et,nt);K=Qt.minX,tt=Qt.minY}}C=I(n.x+K),R=I(n.y+tt),_=I(C+n.width),T=I(R+n.height)}else if(!r&&o&&Number.isFinite(o.a)){let K={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0},tt=Fe(p,m,K,0,0);C=I(tt.minX),R=I(tt.minY),_=I(tt.maxX),T=I(tt.maxY)}else if(r&&xo(t.element)){let tt=l.transform&&l.transform!=="none"?l.transform:"",Q=ae(t.element),et=Yt({baseTransform:tt,rotate:Q.rotate||"0deg",scale:Q.scale,translate:Q.translate,width:p,height:m}),{ox:nt,oy:Qt}=an(l,p,m),Jt=et.is2D?et:new DOMMatrix(et.toString()),ze={a:Jt.a,b:Jt.b,c:Jt.c,d:Jt.d,e:0,f:0},Bt=Fe(p,m,ze,nt,Qt);C=I(Bt.minX),R=I(Bt.minY),_=I(Bt.maxX),T=I(Bt.maxY)}let N=oo(l),O=io(l),H=so(l),E=ao(l),L=co(l),$=u.width>0?(_-C)/u.width:1,F=u.height>0?(T-R)/u.height:1,V=i==="subtree"&&!n?ks(t.element,t.nodeMap,t.styleCache,$,F):{top:0,right:0,bottom:0,left:0},z=n?{top:0,right:0,bottom:0,left:0}:i?{top:I(Math.max(N.top,O.top,V.top)+H.top+E.top+L.bleed.top),right:I(Math.max(N.right,O.right,V.right)+H.right+E.right+L.bleed.right),bottom:I(Math.max(N.bottom,O.bottom,V.bottom)+H.bottom+E.bottom+L.bleed.bottom),left:I(Math.max(N.left,O.left,V.left)+H.left+E.left+L.bleed.left)}:{top:H.top,right:H.right,bottom:H.bottom,left:H.left};C=I(C-z.left),R=I(R-z.top),_=I(_+z.right),T=I(T+z.bottom);let q=Math.max(1,I(_-C)),B=Math.max(1,I(T-R)),Z="http://www.w3.org/2000/svg",_t=xo(t.element)?2:0,gt=I(_t+(r?0:1)),st=Math.ceil(q+gt*2),at=Math.ceil(B+gt*2),$t=I(-(I(C)-gt)),U=I(-(I(R)-gt)),G=Math.max(0,$t),j=Math.max(0,U),ut=I(st-Math.min(0,$t)),Et=I(at-Math.min(0,U)),yt=document.createElementNS(Z,"foreignObject");yt.setAttribute("x",String(Math.min(0,$t))),yt.setAttribute("y",String(Math.min(0,U))),yt.setAttribute("width",String(ut)),yt.setAttribute("height",String(Et)),yt.style.overflow="visible";let ue=document.createElement("style"),hn="svg{overflow:visible;} foreignObject{overflow:visible;} foreignObject>div{-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important;}";ue.textContent=(t.scrollbarCSS||"")+t.baseCSS+t.fontsCSS+hn+t.classCSS,yt.appendChild(ue);let Ue=document.createElement("div");Ue.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),Ue.style.cssText=`all:initial;box-sizing:border-box;display:block;overflow:visible;width:${ut}px;height:${Et}px`+(G!==0||j!==0?`;padding:${j}px 0 0 ${G}px !important`:""),Ue.appendChild(t.clone),yt.appendChild(Ue);let dr=new XMLSerializer().serializeToString(yt),Ot=A||v,pr=Object.freeze({w0:w,h0:k,vbW:st,vbH:at,targetW:x,targetH:S,contentX:I($t+(n?C:0)),contentY:I(U+(n?R:0)),clip:n?Object.freeze({x:I(C),y:I(R),width:w,height:k}):null});Object.defineProperty(a,"meta",{value:pr,enumerable:!0,writable:!1,configurable:!0});let hr=!Ot||Y()?st:A?x:I(st*(S/at)),mn=!Ot||Y()?at:v?S:I(at*(x/st)),Dt=parseFloat(W(d.documentElement)?.fontSize)||16;f=`<svg xmlns="${Z}" width="${hr}" height="${mn}" viewBox="0 0 ${st} ${at}" font-size="${Dt}px">`+mu(dr,yt)+"</svg>",c=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(f)}`,t.svgString=f,t.dataURL=c,a.__artifacts={classCSS:t.classCSS||"",fontsCSS:t.fontsCSS||"",baseCSS:t.baseCSS||"",scrollbarCSS:t.scrollbarCSS||""},await It("afterRender",t),t.clone=t.nodeMap=t.styleCache=t.svgString=null;let mr=[...document.querySelectorAll("#snapdom-sandbox")].find(zt);return mr&&mr.style.position==="absolute"&&mr.remove(),t.dataURL}function xo(t){return As(t)}function yu(t){let e=Array.isArray(t.plugins)?t.plugins:bo(),n=[];for(let r of e){let i=Le(r);i&&typeof i.resolveNode=="function"&&n.push(i.resolveNode.bind(i))}return n.length?n:null}async function oa(t,e){if(!t)throw new Error("Element cannot be null or undefined");e.__session=go(e.cache),delete e.__compressedAssets,delete e.__compressedSnapshot,delete e.__compressionDensity,e.__resolveNodeHooks=yu(e);let n=e;n.element=t,Object.defineProperty(n,"options",{value:n,configurable:!0});let r,i,o,s,a,c,f,l="",u=null,p=e.needs||ft,m=n.format,d=n.type;await It("beforeSnap",n);let h=n.format!==m&&/^(?:png|jpe?g|webp|svg)$/i.test(n.format),g=n.type!==d&&/^(?:png|jpe?g|webp|svg)$/i.test(n.type);if(h||g){let _=String(h?n.format:n.type).toLowerCase();n.format=_==="jpg"?"jpeg":_,n.type=n.format,n.__explicitFormat=n.format,/^(?:jpeg|webp)$/.test(n.format)&&(n.backgroundColor==null||n.backgroundColor==="transparent")&&(n.backgroundColor="#ffffff")}await It("beforeClone",n);let y=n.outerTransforms!==!1,b=n.outerShadows==="subtree"?"subtree":!!n.outerShadows,w=n.clip?Bn(n.element,n.clip):null;if(e.__styleShare===void 0)try{e.__styleShare=xi(n.element)&&(typeof n.element.getAnimations!="function"||n.element.getAnimations({subtree:!0}).length===0)}catch{e.__styleShare=!1}let k=fi(e.fast);for(;;){e.__slicer=k;let _=Xn(n.element,w);try{({clone:r,classCSS:i,classPrefixCSS:o,styleCache:s,nodeMap:a,reconcileRisk:c,clipWindow:f}=await Ws(n.element,n.options)),c>0&&!e.reconcile&&(xt(e.__session,"reconcile-risk","text in inline/table-cell elements kept natural width and may re-wrap; pass { reconcile: true } for pixel-exact layout"),P.warnedReconcile||(P.warnedReconcile=!0,console.warn("[snapdom] Text in inline/table-cell elements kept its natural width and may re-wrap under font-fallback rasterization. Pass { reconcile: true } for pixel-exact layout (roughly doubles capture time)."))),!y&&r&&(u=Cs(n.element,r)),!b&&r&&Ts(n.element,r,n.options),r&&(Ps(n.element,r,a),$s(n.element,r))}finally{_()}if(!k?.yielded||!e.__tornSinceStart?.())break;k=null,e.__session=go(e.cache)}if(e.__slicer=null,n.clone=r,n.classCSS=i,n.styleCache=s,n.nodeMap=a,await It("afterClone",n),!Pe(p,"render"))return null;if(k?.due()&&await k.pause(),Un(n.clone),n.options?.excludeMode==="remove"||typeof n.options?.filter=="function"&&n.options.filterMode==="remove")try{Ns(n.element,n.clone,n.styleCache,n.nodeMap)}catch(_){xt(e.__session,"shrink-failed","shrink pass failed",_),console.warn("[snapdom] shrink pass failed:",_)}try{await Tn(n.clone,n.element,n.nodeMap)}catch{}let x=_=>Promise.resolve().then(_),S=(async()=>{await Promise.all([x(()=>zn(n.clone,n.options)),x(()=>Vn(n.element,n.clone,n.styleCache,n.options,n.nodeMap))]);try{Bs(n.element,n.clone,n.nodeMap)}catch(_){xt(e.__session,"backdrop-filter-failed","backdrop-filter emulation failed",_),console.warn("[snapdom] backdrop-filter emulation failed:",_)}if(e.compress&&(e.__compressionClip=f,e.__compressionRootTransform=u,await x(()=>er(n.clone,n.options,n.nodeMap))),e.captureSelection)try{Gi(n.nodeMap)}catch(_){xt(e.__session,"selection-compose-failed","field selection compose failed",_)}})(),A=Promise.resolve();(e.embedFonts==="auto"?((n.element.ownerDocument||document).fonts?.size||0)>0:e.embedFonts)&&(A=x(async()=>{let _=n.element.ownerDocument||document,T=w?H=>{try{let E=H.getBoundingClientRect();return E.right>=w.left-200&&E.left<=w.right+200&&E.bottom>=w.top-200&&E.top<=w.bottom+200}catch{return!0}}:null,{required:N,usedCodepoints:O}=!w&&e.__fontUsage||Ln(n.element,T);if(e.embedFonts==="auto"){let H=new Set;try{for(let L of _.fonts)H.add(String(L.family).replace(/["']/g,"").toLowerCase())}catch{}if(!(H.size>0&&Array.from(N).some(L=>H.has(String(L).split("__")[0].toLowerCase()))))return}if(Y()){let H=new Set(Array.from(N).map(E=>String(E).split("__")[0]).filter(Boolean));await In(H,1,_)}l=await as({required:N,usedCodepoints:O,exclude:n.options.excludeFonts,localFonts:n.options.localFonts,useProxy:n.options.useProxy,fontStylesheetDomains:n.options.fontStylesheetDomains,iconMatchers:n.options.__iconMatchers,doc:_})})),await Promise.all([S,A]);let M=(n.options.plugins||[]).some(_=>_&&(typeof _.beforeRender=="function"||typeof _.afterRender=="function"));n.options.engine,k?.due()&&await k.pause();let C=n.clone;tr(C,e.__compressedAssets);let R=await nr(n,{clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,fontsCSS:l});if(e.__compressedSnapshot=Zn(C,e.__compressedAssets),typeof e.__retain=="function")try{e.__retain({clone:r,nodeMap:a,styleCache:s,styleMap:e.__session.styleMap,classPrefixCSS:o,fontsCSS:l,clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,__compressedAssets:e.__compressedAssets,__compressionDensity:e.__compressionDensity})}catch{}return R}dt();bt();var bu=new Set(["png","jpeg","jpg","webp","svg"]);function ia(t={}){let e=typeof t.type=="string"&&bu.has(t.type.toLowerCase())?t.type.toLowerCase():null,n=t.format??e??"png";n==="jpg"&&(n="jpeg");let r=t.format!=null?n:e==="jpg"?"jpeg":e,i=Vo(t.cache),o=t.exclude==null?[]:Array.isArray(t.exclude)?t.exclude:[t.exclude],s=[],a=[];for(let u of o)typeof u=="string"?s.push(u):typeof u=="function"?a.push(u):u!=null&&console.warn("[snapdom] Ignored invalid exclude entry (expected selector string or predicate):",u);let c=t.excludeMode??"hide",f=u=>{if(!u||u.nodeType!==1)return!1;if(u.getAttribute("data-capture")==="exclude")return!0;for(let p of Array.isArray(l.exclude)?l.exclude:[])try{if(u.matches(p))return!0}catch{}for(let p of Array.isArray(l.excludePredicates)?l.excludePredicates:[])try{if(p(u))return!0}catch{}if(typeof l.filter=="function")try{if(!l.filter(u))return!0}catch{}return!1},l={debug:t.debug??!1,scale:t.scale??1,exclude:s,excludePredicates:a.length?a:null,excludeMode:c,filter:t.filter??null,filterMode:t.filterMode??"hide",shouldExclude:f,placeholders:t.placeholders!==!1,captureSelection:t.captureSelection??!1,canvas:rt(t.canvas,"canvas")?t.canvas:null,embedFonts:t.embedFonts??"auto",iconFonts:Array.isArray(t.iconFonts)?t.iconFonts:t.iconFonts?[t.iconFonts]:[],__iconMatchers:Qi(t.iconFonts),localFonts:Array.isArray(t.localFonts)?t.localFonts:[],excludeFonts:t.excludeFonts??void 0,fontStylesheetDomains:Array.isArray(t.fontStylesheetDomains)?t.fontStylesheetDomains:[],fallbackURL:t.fallbackURL??void 0,cache:i,__styleShare:t.__styleShare,useProxy:typeof t.useProxy=="string"?t.useProxy:"",width:t.width??null,height:t.height??null,format:n,__explicitFormat:r,type:n,quality:t.quality??.92,dpr:t.dpr??(window.devicePixelRatio||1),backgroundColor:t.backgroundColor??(["jpeg","webp"].includes(n)?"#ffffff":null),filename:t.filename??"snapDOM",outerTransforms:t.outerTransforms??!0,outerShadows:t.outerShadows??!1,reconcile:t.reconcile??!1,burst:t.burst,fast:t.fast===!1||t.fast==="auto"?t.fast:!0,engine:t.engine,invalidate:t.invalidate??!1,__pinned:t.__pinned===!0,clip:t.clip??null,compress:t.compress!==!1,excludeStyleProps:t.excludeStyleProps??null,resolvePicturePlaceholders:t.resolvePicturePlaceholders!==!1};return l}St();te();ht();var sa="svg,iframe,canvas,video,audio,object,embed,slot,template,picture,style,pre";function wu(t){try{return t.matches?.("dialog,[popover]")||!!t.querySelector?.("dialog,[popover]")}catch{return!0}}var Su=/(?:^|;)\s*(?:-webkit-)?backdrop-filter:\s*(?!none(?:\s*!important)?(?:;|$))[^;]+/i;function xu(t){if(t.__usesBackdropFilter!==void 0)return t.__usesBackdropFilter;let e=!1;for(let n of t.styleMap.values())if(Su.test(n)){e=!0;break}return t.__usesBackdropFilter=e,e}function vu(t,e){let n=e.has("backdrop-filter")||e.has("-webkit-backdrop-filter");if(!n&&(n=(o=>/(?:^|;)\s*(?:-webkit-)?backdrop-filter\s*:/i.test(o.getAttribute?.("style")||""))(t),!n))try{n=!!t.querySelector?.('[style*="backdrop-filter" i]')}catch{n=!0}if(!n)return!1;let r=[t];t.querySelectorAll&&r.push(...t.querySelectorAll("*"));for(let i of r){let o=getComputedStyle(i),s=o.getPropertyValue("backdrop-filter")||o.getPropertyValue("-webkit-backdrop-filter");if(s&&s!=="none")return!0}return!1}var aa=new WeakMap;function ku(t){let e=Lt(),n=aa.get(t);if(n&&n.epoch===e)return n.leaky;let r=!1,i={budget:2e4},o=s=>{for(let a=0;a<s.length&&!r;a++){if(--i.budget<0){r=!0;return}let c=s[a],f=c.selectorText;if(f&&/[+~]|:has\(/.test(f)){r=!0;return}let l=c.style;if(l&&(l.counterReset||l.counterIncrement||l.counterSet||l.content&&l.content.includes("counter"))){r=!0;return}c.cssRules&&c.cssRules.length&&o(c.cssRules)}};try{for(let s of t.styleSheets){let a=null;try{a=s.cssRules}catch{r=!0}if(r)break;a&&o(a)}if(!r){let s=t.adoptedStyleSheets;if(Array.isArray(s))for(let a of s){if(r)break;try{o(a.cssRules)}catch{r=!0}}}}catch{r=!0}return aa.set(t,{epoch:e,leaky:r}),r}var Cu=1/16;function Au(t,e){if(t===e)return!0;if(!t.endsWith("px")||!e.endsWith("px"))return!1;let n=parseFloat(t),r=parseFloat(e);return Number.isFinite(n)&&Number.isFinite(r)&&Math.abs(n-r)<=Cu}var rr=new Map,Mu=["width","height","min-width","min-height"];function _u(t){let e=rr.get(t);if(e===void 0){e=null;for(let n of Mu){let r=t.match(new RegExp("(?:^|;)"+n+":([^;]+)"));r&&r[1].endsWith("px")&&((e||={})[n]=r[1])}rr.size>5e3&&rr.clear(),rr.set(t,e)}return e}function Eu(t){if(!(!t.classList||!t.classList.length))for(let e of Array.from(t.classList))/^c\d+$/.test(e)&&t.classList.remove(e)}function Ru(t,e){let n=[t];for(;n.length;){let r=n.pop();if(r.nodeType===1){let i=e.nodeMap.get(r);i!==void 0&&(e.nodeMap.delete(r),e.srcToClone.get(i)===r&&e.srcToClone.delete(i)),e.styleMap.delete(r)}for(let i=r.firstChild;i;i=i.nextSibling)n.push(i)}}var vo={attempts:0,served:0,reconciled:0};async function ca(t,e,n){vo.attempts++;try{let r=await Fu(t,e,n);return r&&vo.served++,r}catch{return null}}async function Fu(t,e,n){let r=e.retained;if(!r||!r.clone||!r.styleMap||!r.srcToClone||n.reconcile||n.clip||n.captureSelection||r.clipWindow||t.scrollTop||t.scrollLeft||wu(t)||xu(r)||r.fontsCSS||Kn(n))return null;for(let u of n.plugins||[])if(u&&(typeof u.beforeSnap=="function"||typeof u.beforeClone=="function"||typeof u.resolveNode=="function"||typeof u.afterClone=="function"))return null;if(r.classPrefixCSS&&(r.classPrefixCSS.includes("::marker")||r.classPrefixCSS.includes("::first-line"))||n.excludeMode==="remove")return null;let i=t.ownerDocument||document,o=en(t);if(!o||ku(i))return null;let s=[];t:for(let u of e.dirtyRoots){if(!u.isConnected||u===t||!t.contains(u))return null;for(let p of e.dirtyRoots)if(p!==u&&p!==t&&p.contains(u))continue t;s.push(u)}if(!s.length)return null;n.__compressedAssets=r.__compressedAssets,n.__compressionDensity=r.__compressionDensity,n.__compressionRootTransform=r.rootTransform2D;for(let u of s){if(u.parentElement===t||u.matches?.(sa)||u.querySelector?.(sa)||vu(u,o))return null;let p=r.srcToClone.get(u);if(!p||!p.parentNode)return null;let m=new Map,d={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:m,options:n},h=Xn(u,null),g=Dn(u),y;try{y=await se(u,d,n)}finally{g(),h()}if(!y||y.nodeType!==1||y.querySelector?.("style[data-sd]")||(await Re(u,y,d,n),d.__pseudoCSS))return null;await Mn(y,d),Un(y);try{await Tn(y,u,m)}catch{}if(await Promise.all([zn(y,n),Vn(u,y,r.styleCache,n,m)]),n.compress)try{await er(y,n,m)}catch{}for(let[b,w]of m.entries())mo(b,w);p.replaceWith(y),Ru(p,r);for(let[b,w]of m.entries())r.nodeMap.set(b,w),r.srcToClone.set(w,b)}let a={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:r.nodeMap,options:n};for(let[u,p]of r.nodeMap.entries()){if(!p||p.nodeType!==1||!p.isConnected)continue;let m=r.styleMap.get(u);if(!m)continue;let d=_u(m);if(!d)continue;let h=null,g=!1;for(let y in d)if(h||=getComputedStyle(p),!Au(h.getPropertyValue(y),d[y])){g=!0;break}if(g){if(n.__compressedAssets?.has(u))return null;vo.reconciled++,await lt(p,u,a,n)}}let c=Xe(r.styleMap);for(let[u,p]of r.styleMap.entries())Eu(u),ho(u,p,c);let f=(r.classPrefixCSS||"")+Array.from(c.entries()).map(([u,p])=>`.${p}{${u}}`).join("");tr(r.clone,n.__compressedAssets);let l=await nr({element:t,options:n,plugins:n.plugins,clone:r.clone,classCSS:f,styleCache:r.styleCache,nodeMap:r.nodeMap},{clipWindow:null,outerTransforms:r.outerTransforms,outerShadows:r.outerShadows,rootTransform2D:r.rootTransform2D,fontsCSS:r.fontsCSS||""});return n.__compressedSnapshot=Zn(r.clone,n.__compressedAssets),r.__compressedAssets=n.__compressedAssets,r.__compressionDensity=n.__compressionDensity,l}bt();var Co=new WeakMap,ir=new WeakMap,wa=new WeakSet,ko=new WeakMap,Tu=64,ln=new Map,Sa=["scroll","input","change","focusin","focusout","pointerdown","pointerup","pointercancel","keydown","keyup","beforetoggle","toggle"],$u=["(prefers-color-scheme: dark)","(prefers-reduced-motion: reduce)","(prefers-contrast: more)","(forced-colors: active)","(inverted-colors: inverted)","(prefers-reduced-transparency: reduce)","(hover: hover)","(any-hover: hover)","(pointer: coarse)","(any-pointer: coarse)","(color-gamut: p3)","(dynamic-range: high)"];function Pu(t){let e=t?.defaultView;return typeof e?.matchMedia!="function"?"":$u.map(n=>{try{return e.matchMedia(n).matches?"1":"0"}catch{return"?"}}).join("")}function la(t){let e=[];for(let n=t;n;){try{let r=n.getBoundingClientRect();e.push(r.x,r.y,r.width,r.height)}catch{e.push("?")}n.parentElement?n=n.parentElement:n=n.getRootNode?.()?.host||null}return e.join("|")}function fa(t,e){if(e.disposed||(ln.delete(t),ln.set(t,e),ln.size<=Tu))return;let[n,r]=ln.entries().next().value;xa(n,r)}function xa(t,e){e.disposed=!0,ln.delete(t),Co.delete(t);for(let n of e.observers)try{n.disconnect()}catch{}for(let n of Sa)t.removeEventListener(n,e.onMediaDirty,!0);for(let n of e.trackedShadowRoots.keys())for(let r of Mo)n.removeEventListener(r,e.onMediaDirty,!0);for(let[n,r]of e.trackedImages)n.removeEventListener("load",r),n.removeEventListener("error",r);e.trackedImages.clear(),e.trackedShadowRoots.clear(),e.images.length=0,e.controls.length=0,e.scrollNodes.length=0,e.observers.length=0,e.last=null,e.retained=null,e.retainedFrameDriven=!1}function va(t){if(wa.has(t))return!1;ir.delete(t);let e=[t],n=[],r=[];for(let i=0;i<e.length;i++){let o=e[i],s=[];o?.nodeType===1&&s.push(o);try{s.push(...o.querySelectorAll("*"))}catch{return!1}for(let a of s){a.shadowRoot&&e.push(a.shadowRoot);let c=String(a.localName||a.tagName||"").toLowerCase();if(/^(?:iframe|canvas|video|audio|object|embed|marquee|blink)$/.test(c)||c==="progress"&&!a.hasAttribute("value")||/^(?:animate|animatetransform|animatemotion|set)$/.test(c))return!1;let f="";if(c==="img"){r.push(a);try{f=a.currentSrc||a.src||""}catch{}}/^(?:input|textarea|select|option)$/.test(c)&&n.push(a);let l=a.getAttribute?.("style")||"",u=ko.get(a);if(f||l){if((!u||u.src!==f||u.style!==l)&&(u={src:f,style:l,animated:Oe(f)||Oe(l)},ko.set(a,u)),u.animated)return!1}else u&&ko.delete(a)}}return ir.set(t,{roots:e.slice(1),controls:n,images:r}),!0}function Ao(t,e){if(!t.querySelectorAll)return!1;let n=ir.get(t);ir.delete(t);let r=new Set(n?.roots||[]);if(n&&(e.controls=n.controls,e.scannedImages=n.images),!n){let i=[t];for(let o=0;o<i.length;o++){let s=i[o];s.shadowRoot&&!r.has(s.shadowRoot)&&(r.add(s.shadowRoot),i.push(s.shadowRoot));for(let a of s.querySelectorAll("*"))a.shadowRoot&&!r.has(a.shadowRoot)&&(r.add(a.shadowRoot),i.push(a.shadowRoot))}}for(let[i,o]of e.trackedShadowRoots)if(!r.has(i)){try{o.disconnect()}catch{}for(let a of Mo)i.removeEventListener(a,e.onMediaDirty,!0);e.trackedShadowRoots.delete(i);let s=e.observers.indexOf(o);s>=0&&e.observers.splice(s,1)}for(let i of r)if(!e.trackedShadowRoots.has(i))try{let o=new MutationObserver(e.markDirty);o.observe(i,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),o.__flush=e.markDirty,e.observers.push(o),e.trackedShadowRoots.set(i,o);for(let s of Mo)i.addEventListener(s,e.onMediaDirty,{capture:!0,passive:!0});e.retained&&e.dirtyAll()}catch{}return!!n}var Mo=["scroll","change","beforetoggle","toggle"];function sr(t,e){return[t,...e.trackedShadowRoots.keys()]}function _o(t,e){let n=e.scannedImages;if(e.scannedImages=null,!n){n=[],t.tagName==="IMG"&&n.push(t);for(let r of sr(t,e))r.querySelectorAll&&n.push(...r.querySelectorAll("img"))}if(e.images=n,e.trackedImages.size){let r=new Set(n);for(let[i,o]of e.trackedImages)r.has(i)||(i.removeEventListener("load",o),i.removeEventListener("error",o),e.trackedImages.delete(i))}for(let r of n){if(r.complete||e.trackedImages.has(r))continue;let i=()=>{e.capturing&&(e.torn=!0),e.dirty=!0,e.dirtyRoots=null,r.removeEventListener("load",i),r.removeEventListener("error",i),e.trackedImages.delete(r)};e.trackedImages.set(r,i),r.addEventListener("load",i),r.addEventListener("error",i)}}function ua(t){let e=new Map,n=new Map,r=new Map;for(let i of t)if(re(i))if(i.type==="attributes"){let o=e.get(i.target);o||e.set(i.target,o=new Map),o.has(i.attributeName)||o.set(i.attributeName,i.oldValue)}else if(i.type==="characterData")n.has(i.target)||n.set(i.target,i.oldValue);else if(i.type==="childList"){let o=r.get(i.target);o||r.set(i.target,o=new Map);for(let s of i.addedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)+1)}for(let s of i.removedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)-1)}}else return!0;for(let[i,o]of e)for(let[s,a]of o)if(i.getAttribute(s)!==a)return!0;for(let[i,o]of n)if(i.data!==o)return!0;for(let i of r.values())for(let o of i.values())if(o!==0)return!0;return!1}var Nu=/(?:^data:image\/(?:gif|apng)|\.(?:gif|apng)(?=[?#)'"\s;]|$))/i,We=t=>t&&(typeof t=="object"||typeof t=="function")?or(t):"-";function Lu(t,e=131072){if(t=String(t||"").trim(),!/^data:/i.test(t))return"";let n=t.indexOf(",");if(n<0)return"";let r=t.slice(0,n),i=t.slice(n+1);try{if(/;base64/i.test(r)){let o=Math.ceil(e/3)*4;return atob(i.slice(0,o-o%4))}return i.slice(0,e*3).replace(/%([0-9a-f]{2})/gi,(o,s)=>String.fromCharCode(parseInt(s,16))).slice(0,e)}catch{return""}}function Iu(t){let e=(t.match(/^data:([^;,]+)/i)?.[1]||"").toLowerCase();if(e==="image/gif"||e==="image/apng")return!0;if(!/image\/(?:png|webp|avif|svg\+xml)/.test(e))return!1;let n=Lu(t);return e==="image/png"?n.includes("acTL"):e==="image/webp"?n.includes("ANIM")||n.includes("ANMF")||n.includes("VP8X")&&!!(n.charCodeAt(n.indexOf("VP8X")+8)&2):e==="image/avif"?n.includes("avis"):/<(?:animate|animateTransform|animateMotion|set)\b|@keyframes\b|animation(?:-name)?\s*:/i.test(n)}function da(t){let e=String(t||"").trim();return e?Nu.test(e)?!0:/^data:/i.test(e)?Iu(e):!1:!1}function Oe(t){let e=String(t||"");if(da(e))return!0;for(let n of e.matchAll(/url\(\s*(?:"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|([^)]*))\s*\)/gi))if(da(n[1]??n[2]??n[3]))return!0;return!1}function pa(t,e=null){let n=t&&t.clone;if(!n)return!1;let r=e?e.map(i=>t.srcToClone?.get(i)).filter(Boolean):[n];for(let i of r)for(let o of ka(i))if(Oe(o.getAttribute?.("src"))||Oe(o.getAttribute?.("href"))||Oe(o.getAttribute?.("style"))||Oe(t.styleMap?.get(o)))return!0;return!1}function ka(t){let e=[];t&&t.nodeType===1&&e.push(t);try{e.push(...t.querySelectorAll("*"))}catch{}return e}function Eo(t,e){let n=[],r=new Set,i=o=>{o&&!r.has(o)&&(r.add(o),n.push(o))};t.matches?.("input,textarea,select,option")&&i(t);for(let o of sr(t,e))try{for(let s of o.querySelectorAll("input,textarea,select,option"))i(s)}catch{}e.controls=n}function Ro(t,e){let n=[],r=new Set,i=(o,s=!1)=>{if(!(!o||r.has(o))){r.add(o);try{(s||o.scrollLeft||o.scrollTop||o.scrollWidth>o.clientWidth||o.scrollHeight>o.clientHeight)&&n.push(o)}catch{}}};for(let o=t;o;o=o.parentElement)i(o,!0);for(let o of sr(t,e))for(let s of ka(o))i(s);e.scrollNodes=n}function ha(t,e){let n=t.ownerDocument||document,r=n.defaultView,i=[r?.location?.hash||"",Pu(n),r?.innerWidth||0,r?.innerHeight||0,r?.devicePixelRatio||1,r?.screen?.orientation?.type||""];try{i.push(...[...n.adoptedStyleSheets||[]].map(We))}catch{}for(let l of e.trackedShadowRoots.keys())try{i.push("#shadow",...[...l.adoptedStyleSheets||[]].map(We))}catch{}let o=n.activeElement,s=n.fullscreenElement;(o?.contains(t)||t.contains(o))&&i.push(We(o)),(s?.contains(t)||t.contains(s))&&i.push(We(s));let a=[r?.scrollX||0,r?.scrollY||0];for(let l of e.scrollNodes)a.push(l.scrollLeft||0,l.scrollTop||0);let c=[];for(let l of e.controls){let u=String(l.localName||"").toLowerCase();u==="input"?c.push(l.type,qe(l)?l.value.length:l.value,l.checked?1:0,l.indeterminate?1:0):u==="textarea"?c.push(l.value):u==="select"?c.push(l.selectedIndex,l.value):c.push(l.selected?1:0)}let f=[];for(let l of e.images){let u="";try{u=l.currentSrc||l.src||""}catch{}f.push(u,l.complete?1:0,l.naturalWidth||0,l.naturalHeight||0)}return{style:i.join("|"),scroll:a.join("|"),controls:c,images:f,frameDriven:e.retainedFrameDriven}}function Ie(t,e,n){if(!t)return!1;let r=t[n],i=e[n];if(r===i)return!0;if(!Array.isArray(r)||r.length!==i.length)return!1;for(let o=0;o<r.length;o++)if(r[o]!==i[o])return!1;return!0}function ma(t,e){let n=new Set;for(let r of sr(t,e))try{let i=r.getAnimations?.(r.nodeType===1?{subtree:!0}:void 0)||[];for(let o of i)n.add(o)}catch{}return[...n]}function ga(t){return t.map(e=>[We(e),e.playState,Math.round((Number(e.currentTime)||0)*10),e.playbackRate].join(":")).join("|")}function Wu(t,e,n){if(!n||n.nodeType!==1)return null;if(n===t||t.contains(n))return t;for(let r of e.trackedShadowRoots.keys())if(r.contains(n))return r;return null}function Ou(t){let e={dirty:!0,pending:[],torn:!1,dirtyRoots:new Set,retained:null,retainedFrameDriven:!1,disposed:!1,capturing:!1,last:null,inflight:Promise.resolve(),observers:[],trackedShadowRoots:new Map,trackedImages:new Map,images:[],scannedImages:null,scrollNodes:[],controls:[],envEpoch:Se(),styleEpoch:Lt(),styleStamp:tn(t),outsideMutations:Ze(t),geometry:null,renderState:null},n=()=>{e.dirty=!0,e.dirtyRoots=null},r=a=>{if(!e.dirtyRoots)return;let c=a&&(a.nodeType===1?a:a.parentElement);if(!c||c===t||!t.contains(c)||e.dirtyRoots.size>=12){e.dirtyRoots=null;return}e.dirtyRoots.add(c)},i=a=>{if(e.capturing){for(let c of a)e.pending.push(c);return}for(let c of a)re(c)&&(e.dirty=!0,r(c.target))},o=()=>{if(e.capturing){e.torn=!0;return}n()};e.dirtyAll=n;try{let a=new MutationObserver(i);a.observe(t,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),a.__flush=i,e.observers.push(a)}catch{}e.markDirty=i,e.onMediaDirty=o;try{for(let a of Sa)t.addEventListener(a,o,{capture:!0,passive:!0})}catch{}return Ao(t,e)||Eo(t,e),Ro(t,e),_o(t,e),e}var Du=0,ya=new WeakMap;function or(t){let e=ya.get(t);return e||(e="@"+ ++Du,ya.set(t,e)),e}function Fo(t,e){let n=typeof t;if(n==="undefined")return null;if(t===null||n==="boolean"||n==="number"||n==="string")return JSON.stringify(t);if(n==="function"||n==="symbol")return n==="symbol"?null:JSON.stringify(or(t));if(n!=="object")return null;if(typeof t.nodeType=="number")return JSON.stringify(or(t));if(e.has(t))return null;e.add(t);try{if(Array.isArray(t)){let o=[];for(let s of t){let a=Fo(s,e);if(a===null)return null;o.push(a)}return"["+o.join(",")+"]"}let r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)return JSON.stringify(or(t));let i=[];for(let o of Object.keys(t).sort()){let s=t[o];if(s===void 0)continue;let a=Fo(s,e);if(a===null)return null;i.push(JSON.stringify(o)+":"+a)}return"{"+i.join(",")+"}"}finally{e.delete(t)}}function ba(t,e){let{burst:n,invalidate:r,...i}=t||{};try{let o=Fo(i,new Set);return o===null?null:`${(e||[]).map(We).join(",")}:${o}`}catch{return null}}function Ca(t,e,n,r,i=null){let o=Co.get(t);o||(o=Ou(t),o.baselineSignature=ba(e,n.plugins),Co.set(t,o));let s=ba(e,n.plugins),a=async()=>{if(o.disposed)return r();let f=s===null||s!==o.baselineSignature;f&&s!==null?o.pendingSig===s?(o.baselineSignature=s,o.last=null,o.dirty=!0,o.dirtyRoots=null,o.pendingSig=null,f=!1):o.pendingSig=s:o.pendingSig=null,Ao(t,o),_o(t,o);for(let A of o.observers)A.__flush(A.takeRecords());At();let l=Ze(t);o.dirty&&o.outsideMutations!==l&&o.dirtyAll(),o.outsideMutations=l;let u=t.getRootNode?.(),p=[...o.trackedShadowRoots.keys()];u?.nodeType===11&&!p.includes(u)&&p.push(u),kn(t.ownerDocument||document,p);let m=tn(t);o.styleStamp!==m&&(o.styleStamp=m,o.dirty||o.dirtyAll());let d=ha(t,o),h=ma(t,o);d.animation=ga(h),o.renderState&&(!Ie(o.renderState,d,"style")&&(xe(),o.dirtyAll()),Ie(o.renderState,d,"scroll")||o.dirtyAll(),Ie(o.renderState,d,"controls")||(oe(t),o.dirtyAll()),!Ie(o.renderState,d,"images")&&!o.dirty&&o.dirtyAll());let g=Se();o.envEpoch!==g&&(o.dirtyAll(),o.envEpoch=g);let y=Lt();if(o.styleEpoch!==y&&(o.styleEpoch=y,!o.dirty)){let A=la(t);o.geometry!==null&&A!==o.geometry&&(oe(t),o.dirtyAll()),o.geometry=A}n.invalidate&&o.dirtyAll();let b=!1,w=!!o.renderState&&!Ie(o.renderState,d,"animation");try{let A=new Set;w&&h.length===0&&(A=null);for(let v of h){let M=v.playState==="running";if(!M&&!w)continue;M&&(b=!0),w=!0;let C=v.effect?.target;if(Wu(t,o,C)===t)A.add(C);else{A=null;break}}if(w&&A&&A.size&&o.retained){o.dirty=!0;for(let v of A)o.dirtyRoots&&o.dirtyRoots.add(v),oe(v)}else w&&!A&&o.dirtyAll()}catch{}let k=d.frameDriven,x=b||k;if(x&&(o.last=null),k&&o.dirtyAll(),!f&&!x&&!o.dirty&&o.last)return fa(t,o),o.last;o.capturing=!0;let S=null;try{let A=null,v=!1,M=null;if(!f&&o.dirty&&o.retained&&o.dirtyRoots&&o.dirtyRoots.size&&i){M=[...o.dirtyRoots];let C=await ca(t,o,n);C&&(A=await i(C),v=!0)}if(A||(f||(n.__retain=C=>{let R=new Map;for(let[_,T]of C.nodeMap.entries())R.set(T,_);S={...C,srcToClone:R}}),n.__tornSinceStart=()=>{for(let C of o.observers)for(let R of C.takeRecords())o.pending.push(R);return At(),o.torn||ua(o.pending)||Ze(t)!==l},A=await r()),!f&&!o.disposed){o.dirty=!1,o.dirtyRoots=new Set,S?(o.retained=S,o.retainedFrameDriven=pa(S),Eo(t,o),Ro(t,o)):v&&(o.retainedFrameDriven||=pa(o.retained,M),Eo(t,o),Ro(t,o));let C=ha(t,o);C.animation=ga(ma(t,o));let R=["style","scroll","controls","images"];b||R.push("animation");let _=R.every(T=>Ie(d,C,T));o.renderState=C,o.styleEpoch=Lt(),o.styleStamp=tn(t),o.geometry=la(t),o.renderState.frameDriven?(wa.add(t),xa(t,o)):_?!x&&!o.renderState.frameDriven&&(o.last=A,fa(t,o)):(o.dirtyAll(),o.last=null)}return A}finally{n.__retain=void 0,n.__tornSinceStart=void 0;for(let v of o.observers)for(let M of v.takeRecords())o.pending.push(M);At();let A=Ze(t);(o.torn||ua(o.pending)||A!==l)&&(o.dirtyAll(),o.last=null),o.outsideMutations=A,o.styleEpoch=Lt(),o.styleStamp=tn(t),o.pending.length=0,o.torn=!1,o.capturing=!1,o.disposed||(Ao(t,o),_o(t,o))}},c=o.inflight.then(a,a);return o.inflight=c.catch(()=>{}),c}var ar=null;function _a(t){ar=t}var Bu='button, a[href], [role="button"], input, select, summary, label, [tabindex]',To=!1,fn=null,$o=new WeakMap,Aa=!1;function Ea(t,e){!To||!fn||e&&e.burst===!1||$o.set(fn.control,{element:t,options:e&&typeof e=="object"?{...e}:e})}function Ra(t){let e={control:t};fn=e,setTimeout(()=>{fn===e&&(fn=null)},0)}function No(t){let e=t.target,n=e&&(e.nodeType===1?e:e.parentElement);return n&&n.closest?n.closest(Bu):null}function Ma(t){if(t.type==="keydown"&&t.key!=="Enter"&&t.key!==" ")return;let e=No(t);e&&(Ra(e),Po(t,!1))}function Uu(t){let e=No(t);e&&Ra(e)}function Po(t,e=!0){if(!ar||document.visibilityState==="hidden")return;let n=No(t);if(!n||t.type==="pointerenter"&&t.target!==n)return;let r=$o.get(n);if(r){if(!r.element.isConnected){$o.delete(n);return}ar(r.element,r.options).catch(()=>{});return}e&&!Aa&&(Aa=!0,ar(document.body,{clip:"viewport",burst:!1}).catch(()=>{}))}function Fa(){if(To||typeof document>"u"||typeof document.addEventListener!="function")return;To=!0;let t={capture:!0,passive:!0};document.addEventListener("pointerdown",Ma,t),document.addEventListener("keydown",Ma,t),document.addEventListener("click",Uu,t),document.addEventListener("pointerenter",Po,t),document.addEventListener("focusin",Po,t)}wt();function ad(...t){return yo(...t),X}async function cd(t,e){if(typeof t!="string"||!t.trim())throw new Error("[snapdom.fromString] html string required");let n=document.createElement("div");J(n),n.style.cssText="position:fixed;left:-99999px;top:0;pointer-events:none;",n.innerHTML=t,document.body.appendChild(n);try{await pt();let r=Array.from(n.childNodes).some(o=>o.nodeType===3&&o.textContent.trim()),i=n.children.length===1&&!r?n.firstElementChild:n;return await jo(i,{...e||{},burst:!1})}finally{n.remove()}}var ld="3.1.0",X=Object.assign(jo,{plugins:ad,fromString:cd,version:ld,preCapture:Fa});_a(jo);var zo=Symbol("snapdom.internal"),fd=Symbol("snapdom.internal.silent"),Ha=new Set(["png","jpeg","jpg","webp","svg"]);async function jo(t,e){if(!t)throw new Error("Element cannot be null or undefined");let n=ia(e);n.element=t,n.invalidate&&xe(),Xs(n,e&&e.plugins);let{stage:r,loweredBy:i}=js(n);n.needs=r,n.__needsLoweredBy=i;let o=Pe(r,"render"),s=n.burst===!0||!Kn(n),a=typeof n.filter=="function"||!!n.excludePredicates||typeof n.excludeStyleProps=="function"||typeof n.fallbackURL=="function",f=o&&!n.captureSelection&&n.burst!==!1&&s&&!a&&va(t);return f&&Ea(t,e),n.snap||(n.snap={toPng:(l,u)=>X.toPng(l,u),toSvg:(l,u)=>X.toSvg(l,u)}),f?Ca(t,e,n,()=>X.capture(t,n,zo),l=>za(l,n)):X.capture(t,n,zo)}X.capture=async(t,e,n)=>{if(n!==zo)throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");if(Pe(e.needs||ft,"render")&&Y()){if(e.embedFonts)try{let o=t.ownerDocument||document,s=new Set;if(e.embedFonts==="auto"){try{for(let l of o.fonts)s.add(String(l.family).replace(/["']/g,"").toLowerCase())}catch{}if(s.size===0)throw null}let a=Ln(t);e.clip||(e.__fontUsage=a);let c=a.required,f=new Set([...c].map(l=>String(l).split("__")[0]).filter(Boolean));if(e.embedFonts==="auto"&&(f=new Set([...f].filter(l=>s.has(l.toLowerCase()))),f.size===0))throw null;await In(f,1,o)}catch{}let i=Array.from(t.querySelectorAll("canvas"));t.tagName==="CANVAS"&&i.unshift(t);for(let o of i)try{if(on(o))continue;let s=o.getContext("2d",{willReadFrequently:!0});s&&s.getImageData(0,0,1,1)}catch(s){D(e,"safari canvas poke failed",s)}}let r=await oa(t,e);return za(r,e)};async function za(t,e){let n=e.needs||ft,r=Pe(n,"render"),i=E=>qs(n,e.__needsLoweredBy||[],E),o=typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement?t:null,s=o?null:t,a=()=>s??=o.toDataURL(),c=o||t;o&&(t="");let f=e.__compressedSnapshot,l=e.__compressionDensity;delete e.__compressedSnapshot,delete e.__compressedAssets;let u,p=e.meta||{},d=(Number.isFinite(e.width)||Number.isFinite(e.height))&&!Y(),h=d?Number.isFinite(e.width)?p.targetW/p.vbW:p.targetH/p.vbH:1,g=d?Number.isFinite(e.height)?p.targetH/p.vbH:p.targetW/p.vbW:1,y=E=>{if(o||!f?.size)return c;let L=p.vbW,$=p.vbH,F=E.crop;F&&(L=Math.max(1,Math.min(L,F.x+F.width)-Math.max(0,F.x)),$=Math.max(1,Math.min($,F.y+F.height)-Math.max(0,F.y)));let V=Number.isFinite(E.width),z=Number.isFinite(E.height);return(V&&z?Math.max(E.width/L,E.height/$):V?E.width/L*(F?Math.max(1,g/h):1):z?E.height/$*(F?Math.max(1,h/g):1):(E.scale||1)*Math.max(h,g))*(E.dpr||1)<=l?c:u??=ta(a(),f)},b=async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn));return $(c,{...E,...L||{},format:"png"})},w=()=>{if(!r)throw i("svgString");if(o)throw new Error("[snapdom] svgString: engine:'html-in-canvas' produces a raster capture; there is no serialized SVG");let E=t.indexOf(",");return E>=0?decodeURIComponent(t.slice(E+1)):""},k=E=>Object.defineProperty({...E||{},svgString:w},"url",r?{get:a,enumerable:!0}:{get(){throw i("export.url")},enumerable:!1,configurable:!0}),x={img:async(E,L)=>{if(o)return b(E,L);let{toImg:$}=await Promise.resolve().then(()=>(Bo(),Do)),F={...E,...L||{}};return $(y(F),F)},svg:async(E,L)=>{if(o)return b(E,L);let{toSvg:$}=await Promise.resolve().then(()=>(Bo(),Do)),F={...E,...L||{}};return $(y(F),F)},canvas:async(E,L)=>{let{toCanvas:$}=await Promise.resolve().then(()=>(De(),Wa)),F={...E,...L||{}};return $(y(F),F)},blob:async(E,L)=>{let{toBlob:$}=await Promise.resolve().then(()=>(Ho(),Oa)),F={...E,...L||{}};return $(y(F),F)},png:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"png"};return $(y(F),F)},jpeg:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"jpeg"};return $(y(F),F)},webp:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"webp"};return $(y(F),F)},download:async(E,L)=>{let{download:$}=await Promise.resolve().then(()=>(Ua(),Ba)),F={...E,...L||{}};return $(y(F),F)}};if(!r)for(let E of Object.keys(x)){let L=E==="download"?"download()":`to${E.charAt(0).toUpperCase()}${E.slice(1)}()`;x[E]=async()=>{throw i(L)}}let S={};for(let E of["img","svg","canvas","blob","png","jpeg","webp"])S[E]=async L=>x[E](e,{..._(E,L||{}),[fd]:!0});S.jpg=S.jpeg;let A=E=>Object.defineProperty({...e,...E},"options",{value:e,configurable:!0}),v=A({artifacts:e.__artifacts||null,export:k(),exports:S}),M=await Yn("defineExports",v),C=Object.assign({},...M.filter(E=>E&&typeof E=="object").reverse()),R={...x,...C};R.jpeg&&!R.jpg&&(R.jpg=(E,L)=>R.jpeg(E,L));function _(E,L){let $=L||{},F={...e,...$},V=typeof $.type=="string"?$.type.toLowerCase():"",z=typeof $.format=="string"?$.format.toLowerCase():Ha.has(V)?V:"";z&&(F.format=z==="jpg"?"jpeg":z),F.__explicitFormat=z?F.format:e.__explicitFormat??null,E==="blob"&&!F.__explicitFormat&&(F.format=o?"png":"svg"),F.type=F.format;let q=Z=>Z==="jpeg"||Z==="jpg"||Z==="webp";return[E,F.format,V].map(Z=>typeof Z=="string"?Z.toLowerCase():"").find(q)&&(F.backgroundColor==null||F.backgroundColor==="transparent")&&(F.backgroundColor="#ffffff"),F.scale!==1&&(Number.isFinite(F.width)||Number.isFinite(F.height))&&D(F,"width/height define the output size \u2014 scale is ignored when either is set"),F}let T=!1,N=Promise.resolve();async function O(E,L){let $=Object.freeze(L&&typeof L=="object"?{...L}:{}),F=async()=>{let z=R[E];if(!z)throw new Error(`[snapdom] Unknown export type: ${E}`);let q=_(E,$),B=A({artifacts:e.__artifacts||null,export:k({type:E,options:q,requestedOptions:$})}),Z=q.format,_t=q.type;await Yn("beforeExport",B,{format:E,options:q});let Wt=q.format!==Z?q.format:q.type!==_t?q.type:"",gt=typeof Wt=="string"?Wt.toLowerCase():"";Ha.has(gt)&&(q.format=gt==="jpg"?"jpeg":gt,q.type=q.format,q.__explicitFormat=q.format,/^(?:jpeg|webp)$/.test(q.format)&&(q.backgroundColor==null||q.backgroundColor==="transparent")&&(q.backgroundColor="#ffffff"));let st=await z(B,q);return await Yn("afterExport",B,{format:E,options:q,result:st}),T||(T=!0,await It("afterSnap",e)),st},V=N.then(F);return N=V.catch(()=>{}),V}let H={url:t,needs:n,warnings:e.__session&&e.__session.warnings||[],toRaw:()=>{if(!r)throw i("toRaw()");return a()},to:(E,L)=>O(E,L),toImg:E=>O("img",E),toSvg:E=>O("svg",E),toCanvas:E=>O("canvas",E),toBlob:E=>O("blob",E),toPng:E=>O("png",E),toJpg:E=>O("jpg",E),toWebp:E=>O("webp",E),download:E=>O("download",E)};r?o&&Object.defineProperty(H,"url",{get:a,enumerable:!0,configurable:!0}):Object.defineProperty(H,"url",{get(){throw i("url")},enumerable:!1,configurable:!0}),Object.defineProperty(H,"meta",r?{value:e.meta,enumerable:!0}:{get(){throw i("meta")},enumerable:!1,configurable:!0});for(let E of Object.keys(R)){let L="to"+E.charAt(0).toUpperCase()+E.slice(1);H[L]||(H[L]=$=>O(E,$))}return H}X.toRaw=(t,e)=>X(t,e).then(n=>n.toRaw());X.toImg=(t,e)=>X(t,e).then(n=>n.toImg());X.toSvg=(t,e)=>X(t,e).then(n=>n.toSvg());X.toCanvas=(t,e)=>X(t,e).then(n=>n.toCanvas());X.toBlob=(t,e)=>X(t,e).then(n=>n.toBlob());X.toPng=(t,e)=>X(t,{...e,format:"png"}).then(n=>n.toPng());X.toJpg=(t,e)=>X(t,{...e,format:"jpeg"}).then(n=>n.toJpg());X.toWebp=(t,e)=>X(t,{...e,format:"webp"}).then(n=>n.toWebp());X.download=(t,e)=>X(t,e).then(n=>n.download());export{ft as DEFAULT_STAGE,$e as STAGES,Vs as assertNeeds,Vf as clearPlugins,bo as getGlobalPlugins,Le as normalizePlugin,yo as registerPlugins,X as snapdom};
</code_context>
<issue_to_address>
**security (javascript.browser.security.insecure-document-method):** User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities

*Source: opengrep*
</issue_to_address>

### Comment 2
<location path="src/components/BootstrapBlazor.Dom2Image/wwwroot/lib/snapdom.mjs" line_range="39" />
<code_context>
}`,ru=Math.max(1,Math.min(4,(typeof navigator<"u"&&navigator.hardwareConcurrency||2)-1)),Ft=null,ou=0,iu=0,ce=new Map;function ra(){for(let t of ce.values())t(void 0);if(ce.clear(),Array.isArray(Ft))for(let t of Ft)try{t?.terminate()}catch{}Ft=!1}function su(){let t,e=null;try{t=URL.createObjectURL(new Blob([nu],{type:"text/javascript"})),e=new Worker(t),e.onmessage=n=>{let r=ce.get(n.data.id);r&&(ce.delete(n.data.id),r(n.data.error?void 0:n.data.url??null))},e.onerror=ra}catch{e=null}return t&&URL.revokeObjectURL(t),e}function au(){if(Ft===!1)return!1;if(Ft===null){if(typeof Worker>"u"||typeof OffscreenCanvas>"u")return Ft=!1;Ft=[]}let t=ou++%ru;if(!Ft[t]){let e=su();if(!e)return ra(),!1;Ft[t]=e}return Ft[t]}var cu=5e3;function lu(t,e,n,r,i){let o=au();return o?new Promise(s=>{let a=++iu,c=setTimeout(()=>{ce.delete(a),s(void 0)},cu);ce.set(a,f=>{clearTimeout(c),s(f)});try{o.postMessage({id:a,dataURL:i?"":t,blob:i,srcLength:t.length,targetW:e,targetH:n,resFactor:na,quality:ea,mime:r})}catch{clearTimeout(c),ce.delete(a),s(void 0)}}):Promise.resolve(void 0)}async function So(t,e,n,r){if(typeof t!="string"||!t.startsWith("data:image")||t.startsWith("data:image/svg"))return null;e=Math.ceil(e),n=Math.ceil(n);let i=t.length+":"+t.slice(0,64)+t.slice(-64)+":"+e+"x"+n,o=P.compress,s=o.get(i);if(s?.source===t)return s.result;let a=Qn.get(i);if(a?.source===t&&a.cache===o)return a.promise;let c=(async()=>{let l=Qf(t),u=l==="image/jpeg"?"image/jpeg":l==="image/webp"?"image/webp":"image/png",p=eu(t);if(p&&p.w>0&&p.h>0&&!Qs(p.w,p.h,e,n))return null;if(t.length>=Jf){let S=await lu(t,e,n,u,r);if(S!==void 0)return S}let m;try{m=await Kf(t)}catch{return null}let d=m.naturalWidth||m.width,h=m.naturalHeight||m.height;if(!d||!h)return null;let g=Qs(d,h,e,n);if(!g)return null;let y=g*na,b=Math.max(1,Math.round(d*y)),w=Math.max(1,Math.round(h*y)),k=document.createElement("canvas");k.width=b,k.height=w;let x=k.getContext("2d");if(!x)return null;x.imageSmoothingEnabled=!0,x.imageSmoothingQuality="high",x.drawImage(m,0,0,b,w);try{let S=k.toDataURL(u,ea);if(typeof S=="string"&&S.startsWith("data:image")&&S.length<t.length)return S}catch{}return null})(),f={source:t,promise:c,cache:o};Qn.set(i,f);try{let l=await c;return Zf(o,i,t,l),l}finally{Qn.get(i)===f&&Qn.delete(i)}}async function fu(t,e,n=new Map,r={}){if(!e.compress)return{count:0,before:0,after:0};let i=Array.from(t.querySelectorAll("img"));t.tagName==="IMG"&&i.unshift(t);let o=0,s=0,a=0,c=async l=>{let u=l.getAttribute("src")||"";if(!u.startsWith("data:image")||u.startsWith("data:image/svg"))return;let p=parseFloat(l.dataset.snapdomWidth)||parseFloat(l.style.width)||l.width||0,m=parseFloat(l.dataset.snapdomHeight)||parseFloat(l.style.height)||l.height||0;if(!p||!m)return;let d=r.value||=wo(t,e),h=d.density*d.stretch(n.get(l)||l),g=await So(u,p*h,m*h,l.__snapdomBlob);g&&(o++,s+=u.length,a+=g.length,l.setAttribute("src",g),Jn(l,"attribute","src",u,g,e))},f=6;for(let l=0;l<i.length;l+=f)await Promise.allSettled(i.slice(l,l+f).map(c));return{count:o,before:s,after:a}}var uu=/^(cover|contain|(\d+(\.\d+)?%(\s+\d+(\.\d+)?%)?))$/;function du(t){let e=t.offsetWidth||t.getBoundingClientRect().width||0,n=t.offsetHeight||t.getBoundingClientRect().height||0;return{w:e,h:n}}async function pu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=[],o=[t,...t.querySelectorAll("*")];for(let f of o){let l=f.style&&f.style.backgroundImage;l&&l.includes("data:image")&&i.push(f)}let s=0,a=async f=>{let l=n.get(f);if(!l||!l.isConnected)return;let u;try{u=getComputedStyle(l)}catch{return}if((u.backgroundRepeat||"repeat").toLowerCase().split(",").some(v=>v.trim()!=="no-repeat"))return;let m=(f.style.backgroundSize||u.backgroundSize||"auto").toLowerCase();if(m.split(",").some(v=>!uu.test(v.trim())))return;let{w:d,h}=du(l);if(!d||!h)return;let g=Math.max(1,...(m.match(/\d+(?:\.\d+)?%/g)||[]).map(v=>parseFloat(v)/100)),y=r.value||=wo(t,e),b=y.density*y.stretch(l)*g,w=d*b,k=h*b,x=f.style.backgroundImage,S=[...x.matchAll(/url\((['"]?)(data:image\/[^)'"]+)\1\)/gi)],A=x;for(let v of S){let M=v[2];if(M.startsWith("data:image/svg"))continue;let C=await So(M,w,k);C&&(A=A.split(M).join(C),s++)}A!==x&&(f.style.setProperty("background-image",A,f.style.getPropertyPriority("background-image")),Jn(f,"style","background-image",x,f.style.backgroundImage,e))},c=6;for(let f=0;f<i.length;f+=c)await Promise.allSettled(i.slice(f,f+c).map(a));return{count:s}}async function hu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=Array.from(t.querySelectorAll("image"));t.localName==="image"&&i.unshift(t);let o=0,s=async c=>{let f=c.getAttribute("href")||(typeof c.getAttributeNS=="function"?c.getAttributeNS("http://www.w3.org/1999/xlink","href"):null);if(!f||!f.startsWith("data:image")||f.startsWith("data:image/svg"))return;let l=c.getAttribute("width")||"",u=c.getAttribute("height")||"";if(l.includes("%")||u.includes("%"))return;let p=n.get(c),m=p?W(p):c.style,d=(k,x)=>{if(/^\d+(?:\.\d+)?px$/.test(m?.[k]||""))return parseFloat(m[k]);if(/^\d+(?:\.\d+)?(?:px)?$/.test(x.trim()))return parseFloat(x);try{return p?.[k]?.baseVal?.value||0}catch{return 0}},h=d("width",l),g=d("height",u);if(!h||!g)return;let y=r.value||=wo(t,e),b=y.density*y.stretch(p||c),w=await So(f,h*b,g*b);w&&(c.setAttribute("href",w),Jn(c,"attribute","href",f,w,e),c.hasAttribute("xlink:href")&&(c.setAttributeNS(Js,"xlink:href",w),Jn(c,"attribute","xlink:href",f,w,e)),o++)},a=6;for(let c=0;c<i.length;c+=a)await Promise.allSettled(i.slice(c,c+a).map(s));return{count:o}}async function er(t,e,n){if(!e.compress)return;let r={};await fu(t,e,n,r),await pu(t,e,n,r),await hu(t,e,n,r)}ht();dt();wt();function mu(t,e){if(Y())return t;let n=t.indexOf("</style>");if(n===-1)return t;let r=/<style\b[^>]*>[\s\S]*?<\/style>/g,i=[],o=n,s;for(r.lastIndex=n;s=r.exec(t);)i.push({text:t.slice(o,s.index),intern:!0}),i.push({text:s[0],intern:!1}),o=r.lastIndex;i.push({text:t.slice(o),intern:!0});let a=new Map,c=/ style="([^"]*)"/g,f;for(let y of i)if(y.intern)for(c.lastIndex=0;f=c.exec(y.text);)a.set(f[1],(a.get(f[1])||0)+1);let l=0;for(let[y,b]of a)b>1&&(l+=(b-1)*y.length);if(l<2048||t.includes(" data-sdi="))return t;let u=gu(e,i.some(y=>!y.intern),t.includes("data-snapdom-asset"));if(u===null)return t;let p=new Map,m=0,d=[],h=(y,b)=>{if((a.get(b)||0)<2||u.has(b))return y;let w=p.get(b);return w===void 0&&(w="i"+(m++).toString(36),p.set(b,w),d.push(`[data-sdi="${w}"]{${b}}`)),` data-sdi="${w}"`},g="";for(let y of i)g+=y.intern?y.text.replace(c,h):y.text;return t.slice(0,n)+d.join("")+g}function gu(t,e,n){let r=new Set;if(!e&&!n)return r;if(!t||t.querySelector("[data-sdi]"))return null;let i=c=>{let f=c.getAttribute("style");f&&r.add(f)};if(n&&t.querySelectorAll("[data-snapdom-asset][style]").forEach(i),e)try{let c=f=>{for(let l of f){if(l.type===CSSRule.IMPORT_RULE||l.type===CSSRule.NAMESPACE_RULE)throw new Error("External or namespaced CSS");if(l.selectorText){if(/\[\s*style\b|data-sdi|\[[^\]]*\\|&/i.test(l.selectorText))throw new Error("Attribute-dependent or nested CSS");t.querySelectorAll(l.selectorText).forEach(i)}l.cssRules&&c(l.cssRules)}};for(let f of[...t.querySelectorAll("style")].slice(1)){let l=f.textContent||"";if(/@import\b/i.test(l))return null;let u=new CSSStyleSheet;u.replaceSync(l),c(u.cssRules)}}catch{return null}let o=new Set,s=document.createElement("div"),a=new XMLSerializer;for(let c of r){s.setAttribute("style",c);let f=a.serializeToString(s).match(/ style="([^"]*)"/);f&&o.add(f[1])}return o}async function nr(t,e){let{clipWindow:n,outerTransforms:r,outerShadows:i,rootTransform2D:o,fontsCSS:s}=e,a=t.options;if(t!==a){let{options:K,...tt}=t;t=Object.assign(a,tt),Object.defineProperty(t,"options",{value:t,configurable:!0})}let c,f;Is(t,s),await It("beforeRender",t);let l=W(t.element),u=t.element.getBoundingClientRect(),p=Math.max(1,I(t.element.offsetWidth||parseFloat(l.width)||u.width||1)),m=Math.max(1,I(t.element.offsetHeight||parseFloat(l.height)||u.height||1)),d=t.element.ownerDocument||document;if(!n&&(t.element===d.body||t.element===d.documentElement)&&!t.__pinned){let K=Math.max(t.element.scrollHeight||0,d.documentElement?.scrollHeight||0,d.body?.scrollHeight||0),tt=Math.max(t.element.scrollWidth||0,d.documentElement?.scrollWidth||0,d.body?.scrollWidth||0);K>0&&(m=Math.max(m,I(K))),tt>0&&(p=Math.max(p,I(tt)));try{let Q=(t.scrollbarCSS||"").length+(t.baseCSS||"").length+(t.fontsCSS||"").length+(t.classCSS||"").length,et=P.measureHints.get(t.element);if(et&&et.cssLen===Q&&et.w0===p&&et.docH===K&&et.docW===tt)et.csh>0&&(m=Math.max(m,I(et.csh))),et.csw>0&&(p=Math.max(p,I(et.csw)));else{let nt=d.createElement("div");J(nt),nt.style.cssText="position:absolute!important;left:-9999px!important;top:0!important;width:"+p+"px!important;overflow:visible!important;visibility:hidden!important;";let Qt=nt.attachShadow({mode:"open"}),Jt=d.createElement("style");Jt.textContent=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS,Qt.appendChild(Jt),Qt.appendChild(t.clone.cloneNode(!0)),d.body.appendChild(nt);let ze=nt.scrollHeight,Bt=nt.scrollWidth;d.body.removeChild(nt),P.measureHints.set(t.element,{cssLen:Q,w0:p,docH:K,docW:tt,csh:ze,csw:Bt}),ze>0&&(m=Math.max(m,I(ze))),Bt>0&&(p=Math.max(p,I(Bt)))}}catch{}}if(t.options?.excludeMode==="remove"||typeof t.options?.filter=="function"&&t.options.filterMode==="remove"){let K=po(t.element,t.options),tt=1,Q=po(t.element,{}),et=Math.max(2,m*.15);Number.isFinite(Q)&&Q>=m-et&&Number.isFinite(K)&&K>0&&(m=Math.max(1,Math.min(m,I(K+tt))))}if(t.options?.reconcile)try{let K=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS;Ls(t.element,t.clone,K,t.nodeMap,p,m)}catch(K){console.warn("[snapdom] reconcile pass failed:",K)}let g=(K,tt=NaN)=>{let Q=typeof K=="string"?parseFloat(K):K;return Number.isFinite(Q)?Q:tt},y=g(t.options.width),b=g(t.options.height),w=n?I(n.width):p,k=n?I(n.height):m,x=w,S=k,A=Number.isFinite(y),v=Number.isFinite(b),M=k>0?w/k:1;A&&v?(x=Math.max(1,I(y)),S=Math.max(1,I(b))):A?(x=Math.max(1,I(y)),S=Math.max(1,I(x/(M||1)))):v&&(S=Math.max(1,I(b)),x=Math.max(1,I(S*(M||1))));let C=0,R=0,_=p,T=m;if(n){let K=0,tt=0;if(xo(t.element)){let Q=null;if(!r&&o&&Number.isFinite(o.a))Q={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0};else{let et=ae(t.element),nt=uo(l.transform&&l.transform!=="none"?l.transform:"",et);nt&&nt.is2D&&(Q={a:nt.a,b:nt.b,c:nt.c,d:nt.d,e:0,f:0})}if(Q&&!(Q.a===1&&Q.b===0&&Q.c===0&&Q.d===1)){let{ox:et,oy:nt}=an(l,p,m),Qt=Fe(p,m,Q,et,nt);K=Qt.minX,tt=Qt.minY}}C=I(n.x+K),R=I(n.y+tt),_=I(C+n.width),T=I(R+n.height)}else if(!r&&o&&Number.isFinite(o.a)){let K={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0},tt=Fe(p,m,K,0,0);C=I(tt.minX),R=I(tt.minY),_=I(tt.maxX),T=I(tt.maxY)}else if(r&&xo(t.element)){let tt=l.transform&&l.transform!=="none"?l.transform:"",Q=ae(t.element),et=Yt({baseTransform:tt,rotate:Q.rotate||"0deg",scale:Q.scale,translate:Q.translate,width:p,height:m}),{ox:nt,oy:Qt}=an(l,p,m),Jt=et.is2D?et:new DOMMatrix(et.toString()),ze={a:Jt.a,b:Jt.b,c:Jt.c,d:Jt.d,e:0,f:0},Bt=Fe(p,m,ze,nt,Qt);C=I(Bt.minX),R=I(Bt.minY),_=I(Bt.maxX),T=I(Bt.maxY)}let N=oo(l),O=io(l),H=so(l),E=ao(l),L=co(l),$=u.width>0?(_-C)/u.width:1,F=u.height>0?(T-R)/u.height:1,V=i==="subtree"&&!n?ks(t.element,t.nodeMap,t.styleCache,$,F):{top:0,right:0,bottom:0,left:0},z=n?{top:0,right:0,bottom:0,left:0}:i?{top:I(Math.max(N.top,O.top,V.top)+H.top+E.top+L.bleed.top),right:I(Math.max(N.right,O.right,V.right)+H.right+E.right+L.bleed.right),bottom:I(Math.max(N.bottom,O.bottom,V.bottom)+H.bottom+E.bottom+L.bleed.bottom),left:I(Math.max(N.left,O.left,V.left)+H.left+E.left+L.bleed.left)}:{top:H.top,right:H.right,bottom:H.bottom,left:H.left};C=I(C-z.left),R=I(R-z.top),_=I(_+z.right),T=I(T+z.bottom);let q=Math.max(1,I(_-C)),B=Math.max(1,I(T-R)),Z="http://www.w3.org/2000/svg",_t=xo(t.element)?2:0,gt=I(_t+(r?0:1)),st=Math.ceil(q+gt*2),at=Math.ceil(B+gt*2),$t=I(-(I(C)-gt)),U=I(-(I(R)-gt)),G=Math.max(0,$t),j=Math.max(0,U),ut=I(st-Math.min(0,$t)),Et=I(at-Math.min(0,U)),yt=document.createElementNS(Z,"foreignObject");yt.setAttribute("x",String(Math.min(0,$t))),yt.setAttribute("y",String(Math.min(0,U))),yt.setAttribute("width",String(ut)),yt.setAttribute("height",String(Et)),yt.style.overflow="visible";let ue=document.createElement("style"),hn="svg{overflow:visible;} foreignObject{overflow:visible;} foreignObject>div{-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important;}";ue.textContent=(t.scrollbarCSS||"")+t.baseCSS+t.fontsCSS+hn+t.classCSS,yt.appendChild(ue);let Ue=document.createElement("div");Ue.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),Ue.style.cssText=`all:initial;box-sizing:border-box;display:block;overflow:visible;width:${ut}px;height:${Et}px`+(G!==0||j!==0?`;padding:${j}px 0 0 ${G}px !important`:""),Ue.appendChild(t.clone),yt.appendChild(Ue);let dr=new XMLSerializer().serializeToString(yt),Ot=A||v,pr=Object.freeze({w0:w,h0:k,vbW:st,vbH:at,targetW:x,targetH:S,contentX:I($t+(n?C:0)),contentY:I(U+(n?R:0)),clip:n?Object.freeze({x:I(C),y:I(R),width:w,height:k}):null});Object.defineProperty(a,"meta",{value:pr,enumerable:!0,writable:!1,configurable:!0});let hr=!Ot||Y()?st:A?x:I(st*(S/at)),mn=!Ot||Y()?at:v?S:I(at*(x/st)),Dt=parseFloat(W(d.documentElement)?.fontSize)||16;f=`<svg xmlns="${Z}" width="${hr}" height="${mn}" viewBox="0 0 ${st} ${at}" font-size="${Dt}px">`+mu(dr,yt)+"</svg>",c=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(f)}`,t.svgString=f,t.dataURL=c,a.__artifacts={classCSS:t.classCSS||"",fontsCSS:t.fontsCSS||"",baseCSS:t.baseCSS||"",scrollbarCSS:t.scrollbarCSS||""},await It("afterRender",t),t.clone=t.nodeMap=t.styleCache=t.svgString=null;let mr=[...document.querySelectorAll("#snapdom-sandbox")].find(zt);return mr&&mr.style.position==="absolute"&&mr.remove(),t.dataURL}function xo(t){return As(t)}function yu(t){let e=Array.isArray(t.plugins)?t.plugins:bo(),n=[];for(let r of e){let i=Le(r);i&&typeof i.resolveNode=="function"&&n.push(i.resolveNode.bind(i))}return n.length?n:null}async function oa(t,e){if(!t)throw new Error("Element cannot be null or undefined");e.__session=go(e.cache),delete e.__compressedAssets,delete e.__compressedSnapshot,delete e.__compressionDensity,e.__resolveNodeHooks=yu(e);let n=e;n.element=t,Object.defineProperty(n,"options",{value:n,configurable:!0});let r,i,o,s,a,c,f,l="",u=null,p=e.needs||ft,m=n.format,d=n.type;await It("beforeSnap",n);let h=n.format!==m&&/^(?:png|jpe?g|webp|svg)$/i.test(n.format),g=n.type!==d&&/^(?:png|jpe?g|webp|svg)$/i.test(n.type);if(h||g){let _=String(h?n.format:n.type).toLowerCase();n.format=_==="jpg"?"jpeg":_,n.type=n.format,n.__explicitFormat=n.format,/^(?:jpeg|webp)$/.test(n.format)&&(n.backgroundColor==null||n.backgroundColor==="transparent")&&(n.backgrou

@@ -36,4 +36,4 @@ ${g}
} catch (err) {
self.postMessage({ id, error: String(err) })
}
}`,Yf=Math.max(1,Math.min(4,(typeof navigator<"u"&&navigator.hardwareConcurrency||2)-1)),Ft=null,Kf=0,Qf=0,ae=new Map;function Js(){for(let t of ae.values())t(void 0);if(ae.clear(),Array.isArray(Ft))for(let t of Ft)try{t?.terminate()}catch{}Ft=!1}function Jf(){let t,e=null;try{t=URL.createObjectURL(new Blob([Xf],{type:"text/javascript"})),e=new Worker(t),e.onmessage=n=>{let r=ae.get(n.data.id);r&&(ae.delete(n.data.id),r(n.data.error?void 0:n.data.url??null))},e.onerror=Js}catch{e=null}return t&&URL.revokeObjectURL(t),e}function Zf(){if(Ft===!1)return!1;if(Ft===null){if(typeof Worker>"u"||typeof OffscreenCanvas>"u")return Ft=!1;Ft=[]}let t=Kf++%Yf;if(!Ft[t]){let e=Jf();if(!e)return Js(),!1;Ft[t]=e}return Ft[t]}var tu=5e3;function eu(t,e,n,r,i){let o=Zf();return o?new Promise(s=>{let a=++Qf,c=setTimeout(()=>{ae.delete(a),s(void 0)},tu);ae.set(a,f=>{clearTimeout(c),s(f)});try{o.postMessage({id:a,dataURL:i?"":t,blob:i,srcLength:t.length,targetW:e,targetH:n,resFactor:Qs,quality:Ks,mime:r})}catch{clearTimeout(c),ae.delete(a),s(void 0)}}):Promise.resolve(void 0)}async function yo(t,e,n,r){if(typeof t!="string"||!t.startsWith("data:image")||t.startsWith("data:image/svg"))return null;e=Math.ceil(e),n=Math.ceil(n);let i=t.length+":"+t.slice(0,64)+t.slice(-64)+":"+e+"x"+n,o=P.compress,s=o.get(i);if(s?.source===t)return s.result;let a=Yn.get(i);if(a?.source===t&&a.cache===o)return a.promise;let c=(async()=>{let l=zf(t),u=l==="image/jpeg"?"image/jpeg":l==="image/webp"?"image/webp":"image/png",p=Gf(t);if(p&&p.w>0&&p.h>0&&!qs(p.w,p.h,e,n))return null;if(t.length>=jf){let S=await eu(t,e,n,u,r);if(S!==void 0)return S}let h;try{h=await Hf(t)}catch{return null}let d=h.naturalWidth||h.width,m=h.naturalHeight||h.height;if(!d||!m)return null;let g=qs(d,m,e,n);if(!g)return null;let y=g*Qs,b=Math.max(1,Math.round(d*y)),w=Math.max(1,Math.round(m*y)),C=document.createElement("canvas");C.width=b,C.height=w;let x=C.getContext("2d");if(!x)return null;x.imageSmoothingEnabled=!0,x.imageSmoothingQuality="high",x.drawImage(h,0,0,b,w);try{let S=C.toDataURL(u,Ks);if(typeof S=="string"&&S.startsWith("data:image")&&S.length<t.length)return S}catch{}return null})(),f={source:t,promise:c,cache:o};Yn.set(i,f);try{let l=await c;return Vf(o,i,t,l),l}finally{Yn.get(i)===f&&Yn.delete(i)}}async function nu(t,e,n=new Map,r={}){if(!e.compress)return{count:0,before:0,after:0};let i=Array.from(t.querySelectorAll("img"));t.tagName==="IMG"&&i.unshift(t);let o=0,s=0,a=0,c=async l=>{let u=l.getAttribute("src")||"";if(!u.startsWith("data:image")||u.startsWith("data:image/svg"))return;let p=parseFloat(l.dataset.snapdomWidth)||parseFloat(l.style.width)||l.width||0,h=parseFloat(l.dataset.snapdomHeight)||parseFloat(l.style.height)||l.height||0;if(!p||!h)return;let d=r.value||=go(t,e),m=d.density*d.stretch(n.get(l)||l),g=await yo(u,p*m,h*m,l.__snapdomBlob);g&&(o++,s+=u.length,a+=g.length,l.setAttribute("src",g),Kn(l,"attribute","src",u,g,e))},f=6;for(let l=0;l<i.length;l+=f)await Promise.allSettled(i.slice(l,l+f).map(c));return{count:o,before:s,after:a}}var ru=/^(cover|contain|(\d+(\.\d+)?%(\s+\d+(\.\d+)?%)?))$/;function ou(t){let e=t.offsetWidth||t.getBoundingClientRect().width||0,n=t.offsetHeight||t.getBoundingClientRect().height||0;return{w:e,h:n}}async function iu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=[],o=[t,...t.querySelectorAll("*")];for(let f of o){let l=f.style&&f.style.backgroundImage;l&&l.includes("data:image")&&i.push(f)}let s=0,a=async f=>{let l=n.get(f);if(!l||!l.isConnected)return;let u;try{u=getComputedStyle(l)}catch{return}if((u.backgroundRepeat||"repeat").toLowerCase().split(",").some(v=>v.trim()!=="no-repeat"))return;let h=(f.style.backgroundSize||u.backgroundSize||"auto").toLowerCase();if(h.split(",").some(v=>!ru.test(v.trim())))return;let{w:d,h:m}=ou(l);if(!d||!m)return;let g=Math.max(1,...(h.match(/\d+(?:\.\d+)?%/g)||[]).map(v=>parseFloat(v)/100)),y=r.value||=go(t,e),b=y.density*y.stretch(l)*g,w=d*b,C=m*b,x=f.style.backgroundImage,S=[...x.matchAll(/url\((['"]?)(data:image\/[^)'"]+)\1\)/gi)],A=x;for(let v of S){let M=v[2];if(M.startsWith("data:image/svg"))continue;let k=await yo(M,w,C);k&&(A=A.split(M).join(k),s++)}A!==x&&(f.style.setProperty("background-image",A,f.style.getPropertyPriority("background-image")),Kn(f,"style","background-image",x,f.style.backgroundImage,e))},c=6;for(let f=0;f<i.length;f+=c)await Promise.allSettled(i.slice(f,f+c).map(a));return{count:s}}async function su(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=Array.from(t.querySelectorAll("image"));t.localName==="image"&&i.unshift(t);let o=0,s=async c=>{let f=c.getAttribute("href")||(typeof c.getAttributeNS=="function"?c.getAttributeNS("http://www.w3.org/1999/xlink","href"):null);if(!f||!f.startsWith("data:image")||f.startsWith("data:image/svg"))return;let l=c.getAttribute("width")||"",u=c.getAttribute("height")||"";if(l.includes("%")||u.includes("%"))return;let p=n.get(c),h=p?W(p):c.style,d=(C,x)=>{if(/^\d+(?:\.\d+)?px$/.test(h?.[C]||""))return parseFloat(h[C]);if(/^\d+(?:\.\d+)?(?:px)?$/.test(x.trim()))return parseFloat(x);try{return p?.[C]?.baseVal?.value||0}catch{return 0}},m=d("width",l),g=d("height",u);if(!m||!g)return;let y=r.value||=go(t,e),b=y.density*y.stretch(p||c),w=await yo(f,m*b,g*b);w&&(c.setAttribute("href",w),Kn(c,"attribute","href",f,w,e),c.hasAttribute("xlink:href")&&(c.setAttributeNS(Gs,"xlink:href",w),Kn(c,"attribute","xlink:href",f,w,e)),o++)},a=6;for(let c=0;c<i.length;c+=a)await Promise.allSettled(i.slice(c,c+a).map(s));return{count:o}}async function Zn(t,e,n){if(!e.compress)return;let r={};await nu(t,e,n,r),await iu(t,e,n,r),await su(t,e,n,r)}ht();dt();wt();function au(t,e){if(Y())return t;let n=t.indexOf("</style>");if(n===-1)return t;let r=/<style\b[^>]*>[\s\S]*?<\/style>/g,i=[],o=n,s;for(r.lastIndex=n;s=r.exec(t);)i.push({text:t.slice(o,s.index),intern:!0}),i.push({text:s[0],intern:!1}),o=r.lastIndex;i.push({text:t.slice(o),intern:!0});let a=new Map,c=/ style="([^"]*)"/g,f;for(let y of i)if(y.intern)for(c.lastIndex=0;f=c.exec(y.text);)a.set(f[1],(a.get(f[1])||0)+1);let l=0;for(let[y,b]of a)b>1&&(l+=(b-1)*y.length);if(l<2048||t.includes(" data-sdi="))return t;let u=cu(e,i.some(y=>!y.intern),t.includes("data-snapdom-asset"));if(u===null)return t;let p=new Map,h=0,d=[],m=(y,b)=>{if((a.get(b)||0)<2||u.has(b))return y;let w=p.get(b);return w===void 0&&(w="i"+(h++).toString(36),p.set(b,w),d.push(`[data-sdi="${w}"]{${b}}`)),` data-sdi="${w}"`},g="";for(let y of i)g+=y.intern?y.text.replace(c,m):y.text;return t.slice(0,n)+d.join("")+g}function cu(t,e,n){let r=new Set;if(!e&&!n)return r;if(!t||t.querySelector("[data-sdi]"))return null;let i=c=>{let f=c.getAttribute("style");f&&r.add(f)};if(n&&t.querySelectorAll("[data-snapdom-asset][style]").forEach(i),e)try{let c=f=>{for(let l of f){if(l.type===CSSRule.IMPORT_RULE||l.type===CSSRule.NAMESPACE_RULE)throw new Error("External or namespaced CSS");if(l.selectorText){if(/\[\s*style\b|data-sdi|\[[^\]]*\\|&/i.test(l.selectorText))throw new Error("Attribute-dependent or nested CSS");t.querySelectorAll(l.selectorText).forEach(i)}l.cssRules&&c(l.cssRules)}};for(let f of[...t.querySelectorAll("style")].slice(1)){let l=f.textContent||"";if(/@import\b/i.test(l))return null;let u=new CSSStyleSheet;u.replaceSync(l),c(u.cssRules)}}catch{return null}let o=new Set,s=document.createElement("div"),a=new XMLSerializer;for(let c of r){s.setAttribute("style",c);let f=a.serializeToString(s).match(/ style="([^"]*)"/);f&&o.add(f[1])}return o}async function tr(t,e){let{clipWindow:n,outerTransforms:r,outerShadows:i,rootTransform2D:o,fontsCSS:s}=e,a=t.options;if(t!==a){let{options:K,...tt}=t;t=Object.assign(a,tt),Object.defineProperty(t,"options",{value:t,configurable:!0})}let c,f;Fs(t,s),await Nt("beforeRender",t);let l=W(t.element),u=t.element.getBoundingClientRect(),p=Math.max(1,I(t.element.offsetWidth||parseFloat(l.width)||u.width||1)),h=Math.max(1,I(t.element.offsetHeight||parseFloat(l.height)||u.height||1)),d=t.element.ownerDocument||document;if(!n&&(t.element===d.body||t.element===d.documentElement)&&!t.__pinned){let K=Math.max(t.element.scrollHeight||0,d.documentElement?.scrollHeight||0,d.body?.scrollHeight||0),tt=Math.max(t.element.scrollWidth||0,d.documentElement?.scrollWidth||0,d.body?.scrollWidth||0);K>0&&(h=Math.max(h,I(K))),tt>0&&(p=Math.max(p,I(tt)));try{let Q=(t.scrollbarCSS||"").length+(t.baseCSS||"").length+(t.fontsCSS||"").length+(t.classCSS||"").length,et=P.measureHints.get(t.element);if(et&&et.cssLen===Q&&et.w0===p&&et.docH===K&&et.docW===tt)et.csh>0&&(h=Math.max(h,I(et.csh))),et.csw>0&&(p=Math.max(p,I(et.csw)));else{let nt=d.createElement("div");J(nt),nt.style.cssText="position:absolute!important;left:-9999px!important;top:0!important;width:"+p+"px!important;overflow:visible!important;visibility:hidden!important;";let Xt=nt.attachShadow({mode:"open"}),Yt=d.createElement("style");Yt.textContent=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS,Xt.appendChild(Yt),Xt.appendChild(t.clone.cloneNode(!0)),d.body.appendChild(nt);let He=nt.scrollHeight,Ot=nt.scrollWidth;d.body.removeChild(nt),P.measureHints.set(t.element,{cssLen:Q,w0:p,docH:K,docW:tt,csh:He,csw:Ot}),He>0&&(h=Math.max(h,I(He))),Ot>0&&(p=Math.max(p,I(Ot)))}}catch{}}if(t.options?.excludeMode==="remove"||typeof t.options?.filter=="function"&&t.options.filterMode==="remove"){let K=fo(t.element,t.options),tt=1,Q=fo(t.element,{}),et=Math.max(2,h*.15);Number.isFinite(Q)&&Q>=h-et&&Number.isFinite(K)&&K>0&&(h=Math.max(1,Math.min(h,I(K+tt))))}if(t.options?.reconcile)try{let K=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS;Rs(t.element,t.clone,K,t.nodeMap,p,h)}catch(K){console.warn("[snapdom] reconcile pass failed:",K)}let g=(K,tt=NaN)=>{let Q=typeof K=="string"?parseFloat(K):K;return Number.isFinite(Q)?Q:tt},y=g(t.options.width),b=g(t.options.height),w=n?I(n.width):p,C=n?I(n.height):h,x=w,S=C,A=Number.isFinite(y),v=Number.isFinite(b),M=C>0?w/C:1;A&&v?(x=Math.max(1,I(y)),S=Math.max(1,I(b))):A?(x=Math.max(1,I(y)),S=Math.max(1,I(x/(M||1)))):v&&(S=Math.max(1,I(b)),x=Math.max(1,I(S*(M||1))));let k=0,R=0,E=p,T=h;if(n){let K=0,tt=0;if(bo(t.element)){let Q=null;if(!r&&o&&Number.isFinite(o.a))Q={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0};else{let et=se(t.element),nt=lo(l.transform&&l.transform!=="none"?l.transform:"",et);nt&&nt.is2D&&(Q={a:nt.a,b:nt.b,c:nt.c,d:nt.d,e:0,f:0})}if(Q&&!(Q.a===1&&Q.b===0&&Q.c===0&&Q.d===1)){let{ox:et,oy:nt}=on(l,p,h),Xt=Re(p,h,Q,et,nt);K=Xt.minX,tt=Xt.minY}}k=I(n.x+K),R=I(n.y+tt),E=I(k+n.width),T=I(R+n.height)}else if(!r&&o&&Number.isFinite(o.a)){let K={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0},tt=Re(p,h,K,0,0);k=I(tt.minX),R=I(tt.minY),E=I(tt.maxX),T=I(tt.maxY)}else if(r&&bo(t.element)){let tt=l.transform&&l.transform!=="none"?l.transform:"",Q=se(t.element),et=qt({baseTransform:tt,rotate:Q.rotate||"0deg",scale:Q.scale,translate:Q.translate,width:p,height:h}),{ox:nt,oy:Xt}=on(l,p,h),Yt=et.is2D?et:new DOMMatrix(et.toString()),He={a:Yt.a,b:Yt.b,c:Yt.c,d:Yt.d,e:0,f:0},Ot=Re(p,h,He,nt,Xt);k=I(Ot.minX),R=I(Ot.minY),E=I(Ot.maxX),T=I(Ot.maxY)}let N=no(l),O=ro(l),H=oo(l),_=io(l),L=so(l),$=u.width>0?(E-k)/u.width:1,F=u.height>0?(T-R)/u.height:1,V=i==="subtree"&&!n?ys(t.element,t.nodeMap,t.styleCache,$,F):{top:0,right:0,bottom:0,left:0},z=n?{top:0,right:0,bottom:0,left:0}:i?{top:I(Math.max(N.top,O.top,V.top)+H.top+_.top+L.bleed.top),right:I(Math.max(N.right,O.right,V.right)+H.right+_.right+L.bleed.right),bottom:I(Math.max(N.bottom,O.bottom,V.bottom)+H.bottom+_.bottom+L.bleed.bottom),left:I(Math.max(N.left,O.left,V.left)+H.left+_.left+L.bleed.left)}:{top:H.top,right:H.right,bottom:H.bottom,left:H.left};k=I(k-z.left),R=I(R-z.top),E=I(E+z.right),T=I(T+z.bottom);let q=Math.max(1,I(E-k)),B=Math.max(1,I(T-R)),Z="http://www.w3.org/2000/svg",Mt=bo(t.element)?2:0,gt=I(Mt+(r?0:1)),st=Math.ceil(q+gt*2),at=Math.ceil(B+gt*2),$t=I(-(I(k)-gt)),U=I(-(I(R)-gt)),G=Math.max(0,$t),j=Math.max(0,U),ut=I(st-Math.min(0,$t)),Et=I(at-Math.min(0,U)),yt=document.createElementNS(Z,"foreignObject");yt.setAttribute("x",String(Math.min(0,$t))),yt.setAttribute("y",String(Math.min(0,U))),yt.setAttribute("width",String(ut)),yt.setAttribute("height",String(Et)),yt.style.overflow="visible";let fe=document.createElement("style"),dn="svg{overflow:visible;} foreignObject{overflow:visible;} foreignObject>div{-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important;}";fe.textContent=(t.scrollbarCSS||"")+t.baseCSS+t.fontsCSS+dn+t.classCSS,yt.appendChild(fe);let Be=document.createElement("div");Be.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),Be.style.cssText=`all:initial;box-sizing:border-box;display:block;overflow:visible;width:${ut}px;height:${Et}px`+(G!==0||j!==0?`;padding:${j}px 0 0 ${G}px !important`:""),Be.appendChild(t.clone),yt.appendChild(Be);let fr=new XMLSerializer().serializeToString(yt),It=A||v,ur=Object.freeze({w0:w,h0:C,vbW:st,vbH:at,targetW:x,targetH:S,contentX:I($t+(n?k:0)),contentY:I(U+(n?R:0)),clip:n?Object.freeze({x:I(k),y:I(R),width:w,height:C}):null});Object.defineProperty(a,"meta",{value:ur,enumerable:!0,writable:!1,configurable:!0});let dr=!It||Y()?st:A?x:I(st*(S/at)),pn=!It||Y()?at:v?S:I(at*(x/st)),Wt=parseFloat(W(d.documentElement)?.fontSize)||16;f=`<svg xmlns="${Z}" width="${dr}" height="${pn}" viewBox="0 0 ${st} ${at}" font-size="${Wt}px">`+au(fr,yt)+"</svg>",c=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(f)}`,t.svgString=f,t.dataURL=c,a.__artifacts={classCSS:t.classCSS||"",fontsCSS:t.fontsCSS||"",baseCSS:t.baseCSS||"",scrollbarCSS:t.scrollbarCSS||""},await Nt("afterRender",t),t.clone=t.nodeMap=t.styleCache=t.svgString=null;let pr=[...document.querySelectorAll("#snapdom-sandbox")].find(Ut);return pr&&pr.style.position==="absolute"&&pr.remove(),t.dataURL}function bo(t){return ws(t)}function lu(t){let e=Array.isArray(t.plugins)?t.plugins:mo(),n=[];for(let r of e){let i=Ne(r);i&&typeof i.resolveNode=="function"&&n.push(i.resolveNode.bind(i))}return n.length?n:null}async function Zs(t,e){if(!t)throw new Error("Element cannot be null or undefined");e.__session=Ls(e.cache),delete e.__compressedAssets,delete e.__compressedSnapshot,delete e.__compressionDensity,e.__resolveNodeHooks=lu(e);let n=e;n.element=t,Object.defineProperty(n,"options",{value:n,configurable:!0});let r,i,o,s,a,c,f,l="",u=null,p=e.needs||ft,h=n.format,d=n.type;await Nt("beforeSnap",n);let m=n.format!==h&&/^(?:png|jpe?g|webp|svg)$/i.test(n.format),g=n.type!==d&&/^(?:png|jpe?g|webp|svg)$/i.test(n.type);if(m||g){let E=String(m?n.format:n.type).toLowerCase();n.format=E==="jpg"?"jpeg":E,n.type=n.format,n.__explicitFormat=n.format,/^(?:jpeg|webp)$/.test(n.format)&&(n.backgroundColor==null||n.backgroundColor==="transparent")&&(n.backgroundColor="#ffffff")}await Nt("beforeClone",n);let y=n.outerTransforms!==!1,b=n.outerShadows==="subtree"?"subtree":!!n.outerShadows,w=n.clip?On(n.element,n.clip):null;if(e.__styleShare===void 0)try{e.__styleShare=mi(n.element)&&(typeof n.element.getAnimations!="function"||n.element.getAnimations({subtree:!0}).length===0)}catch{e.__styleShare=!1}let C=qn(n.element,w);try{({clone:r,classCSS:i,classPrefixCSS:o,styleCache:s,nodeMap:a,reconcileRisk:c,clipWindow:f}=await Ts(n.element,n.options)),c>0&&!e.reconcile&&(St(e.__session,"reconcile-risk","text in inline/table-cell elements kept natural width and may re-wrap; pass { reconcile: true } for pixel-exact layout"),P.warnedReconcile||(P.warnedReconcile=!0,console.warn("[snapdom] Text in inline/table-cell elements kept its natural width and may re-wrap under font-fallback rasterization. Pass { reconcile: true } for pixel-exact layout (roughly doubles capture time)."))),!y&&r&&(u=bs(n.element,r)),!b&&r&&As(n.element,r,n.options),r&&(Es(n.element,r,a),Ms(n.element,r))}finally{C()}if(n.clone=r,n.classCSS=i,n.styleCache=s,n.nodeMap=a,await Nt("afterClone",n),!$e(p,"render"))return null;if(Dn(n.clone),n.options?.excludeMode==="remove"||typeof n.options?.filter=="function"&&n.options.filterMode==="remove")try{_s(n.element,n.clone,n.styleCache,n.nodeMap)}catch(E){St(e.__session,"shrink-failed","shrink pass failed",E),console.warn("[snapdom] shrink pass failed:",E)}try{await Rn(n.clone,n.element,n.nodeMap)}catch{}let x=E=>Promise.resolve().then(E),S=(async()=>{await Promise.all([x(()=>Un(n.clone,n.options)),x(()=>zn(n.element,n.clone,n.styleCache,n.options,n.nodeMap))]);try{Ns(n.element,n.clone,n.nodeMap)}catch(E){St(e.__session,"backdrop-filter-failed","backdrop-filter emulation failed",E),console.warn("[snapdom] backdrop-filter emulation failed:",E)}if(e.compress&&(e.__compressionClip=f,e.__compressionRootTransform=u,await x(()=>Zn(n.clone,n.options,n.nodeMap))),e.captureSelection)try{Ui(n.nodeMap)}catch(E){St(e.__session,"selection-compose-failed","field selection compose failed",E)}})(),A=Promise.resolve();(e.embedFonts==="auto"?((n.element.ownerDocument||document).fonts?.size||0)>0:e.embedFonts)&&(A=x(async()=>{let E=n.element.ownerDocument||document,T=w?H=>{try{let _=H.getBoundingClientRect();return _.right>=w.left-200&&_.left<=w.right+200&&_.bottom>=w.top-200&&_.top<=w.bottom+200}catch{return!0}}:null,{required:N,usedCodepoints:O}=!w&&e.__fontUsage||Pn(n.element,T);if(e.embedFonts==="auto"){let H=new Set;try{for(let L of E.fonts)H.add(String(L.family).replace(/["']/g,"").toLowerCase())}catch{}if(!(H.size>0&&Array.from(N).some(L=>H.has(String(L).split("__")[0].toLowerCase()))))return}if(Y()){let H=new Set(Array.from(N).map(_=>String(_).split("__")[0]).filter(Boolean));await Nn(H,1,E)}l=await es({required:N,usedCodepoints:O,exclude:n.options.excludeFonts,localFonts:n.options.localFonts,useProxy:n.options.useProxy,fontStylesheetDomains:n.options.fontStylesheetDomains,iconMatchers:n.options.__iconMatchers,doc:E})})),await Promise.all([S,A]);let M=(n.options.plugins||[]).some(E=>E&&(typeof E.beforeRender=="function"||typeof E.afterRender=="function"));n.options.engine;let k=n.clone;Jn(k,e.__compressedAssets);let R=await tr(n,{clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,fontsCSS:l});if(e.__compressedSnapshot=Qn(k,e.__compressedAssets),typeof e.__retain=="function")try{e.__retain({clone:r,nodeMap:a,styleCache:s,styleMap:e.__session.styleMap,classPrefixCSS:o,fontsCSS:l,clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,__compressedAssets:e.__compressedAssets,__compressionDensity:e.__compressionDensity})}catch{}return R}dt();bt();var fu=new Set(["png","jpeg","jpg","webp","svg"]);function ta(t={}){let e=typeof t.type=="string"&&fu.has(t.type.toLowerCase())?t.type.toLowerCase():null,n=t.format??e??"png";n==="jpg"&&(n="jpeg");let r=t.format!=null?n:e==="jpg"?"jpeg":e,i=zo(t.cache),o=t.exclude==null?[]:Array.isArray(t.exclude)?t.exclude:[t.exclude],s=[],a=[];for(let u of o)typeof u=="string"?s.push(u):typeof u=="function"?a.push(u):u!=null&&console.warn("[snapdom] Ignored invalid exclude entry (expected selector string or predicate):",u);let c=t.excludeMode??"hide",f=u=>{if(!u||u.nodeType!==1)return!1;if(u.getAttribute("data-capture")==="exclude")return!0;for(let p of Array.isArray(l.exclude)?l.exclude:[])try{if(u.matches(p))return!0}catch{}for(let p of Array.isArray(l.excludePredicates)?l.excludePredicates:[])try{if(p(u))return!0}catch{}if(typeof l.filter=="function")try{if(!l.filter(u))return!0}catch{}return!1},l={debug:t.debug??!1,scale:t.scale??1,exclude:s,excludePredicates:a.length?a:null,excludeMode:c,filter:t.filter??null,filterMode:t.filterMode??"hide",shouldExclude:f,placeholders:t.placeholders!==!1,captureSelection:t.captureSelection??!1,canvas:rt(t.canvas,"canvas")?t.canvas:null,embedFonts:t.embedFonts??"auto",iconFonts:Array.isArray(t.iconFonts)?t.iconFonts:t.iconFonts?[t.iconFonts]:[],__iconMatchers:Vi(t.iconFonts),localFonts:Array.isArray(t.localFonts)?t.localFonts:[],excludeFonts:t.excludeFonts??void 0,fontStylesheetDomains:Array.isArray(t.fontStylesheetDomains)?t.fontStylesheetDomains:[],fallbackURL:t.fallbackURL??void 0,cache:i,__styleShare:t.__styleShare,useProxy:typeof t.useProxy=="string"?t.useProxy:"",width:t.width??null,height:t.height??null,format:n,__explicitFormat:r,type:n,quality:t.quality??.92,dpr:t.dpr??(window.devicePixelRatio||1),backgroundColor:t.backgroundColor??(["jpeg","webp"].includes(n)?"#ffffff":null),filename:t.filename??"snapDOM",outerTransforms:t.outerTransforms??!0,outerShadows:t.outerShadows??!1,reconcile:t.reconcile??!1,burst:t.burst,engine:t.engine,invalidate:t.invalidate??!1,__pinned:t.__pinned===!0,clip:t.clip??null,compress:t.compress!==!1,excludeStyleProps:t.excludeStyleProps??null,resolvePicturePlaceholders:t.resolvePicturePlaceholders!==!1};return l}kt();Qt();ht();var ea="svg,iframe,canvas,video,audio,object,embed,slot,template,picture,style,pre";function uu(t){try{return t.matches?.("dialog,[popover]")||!!t.querySelector?.("dialog,[popover]")}catch{return!0}}var du=/(?:^|;)\s*(?:-webkit-)?backdrop-filter:\s*(?!none(?:\s*!important)?(?:;|$))[^;]+/i;function pu(t){if(t.__usesBackdropFilter!==void 0)return t.__usesBackdropFilter;let e=!1;for(let n of t.styleMap.values())if(du.test(n)){e=!0;break}return t.__usesBackdropFilter=e,e}function hu(t,e){let n=e.has("backdrop-filter")||e.has("-webkit-backdrop-filter");if(!n&&(n=(o=>/(?:^|;)\s*(?:-webkit-)?backdrop-filter\s*:/i.test(o.getAttribute?.("style")||""))(t),!n))try{n=!!t.querySelector?.('[style*="backdrop-filter" i]')}catch{n=!0}if(!n)return!1;let r=[t];t.querySelectorAll&&r.push(...t.querySelectorAll("*"));for(let i of r){let o=getComputedStyle(i),s=o.getPropertyValue("backdrop-filter")||o.getPropertyValue("-webkit-backdrop-filter");if(s&&s!=="none")return!0}return!1}var wo=new WeakMap;function mu(t,e){if(wo.has(e))return wo.get(e);let n=!1,r={budget:2e4},i=o=>{for(let s=0;s<o.length&&!n;s++){if(--r.budget<0){n=!0;return}let a=o[s],c=a.selectorText;if(c&&/[+~]|:has\(/.test(c)){n=!0;return}let f=a.style;if(f&&(f.counterReset||f.counterIncrement||f.counterSet||f.content&&f.content.includes("counter"))){n=!0;return}a.cssRules&&a.cssRules.length&&i(a.cssRules)}};try{for(let o of t.styleSheets){let s=null;try{s=o.cssRules}catch{n=!0}if(n)break;s&&i(s)}if(!n){let o=t.adoptedStyleSheets;if(Array.isArray(o))for(let s of o){if(n)break;try{i(s.cssRules)}catch{n=!0}}}}catch{n=!0}return wo.set(e,n),n}var gu=1/16;function yu(t,e){if(t===e)return!0;if(!t.endsWith("px")||!e.endsWith("px"))return!1;let n=parseFloat(t),r=parseFloat(e);return Number.isFinite(n)&&Number.isFinite(r)&&Math.abs(n-r)<=gu}var er=new Map,bu=["width","height","min-width","min-height"];function wu(t){let e=er.get(t);if(e===void 0){e=null;for(let n of bu){let r=t.match(new RegExp("(?:^|;)"+n+":([^;]+)"));r&&r[1].endsWith("px")&&((e||={})[n]=r[1])}er.size>5e3&&er.clear(),er.set(t,e)}return e}function Su(t){if(!(!t.classList||!t.classList.length))for(let e of Array.from(t.classList))/^c\d+$/.test(e)&&t.classList.remove(e)}function xu(t,e){let n=[t];for(;n.length;){let r=n.pop();if(r.nodeType===1){let i=e.nodeMap.get(r);i!==void 0&&(e.nodeMap.delete(r),e.srcToClone.get(i)===r&&e.srcToClone.delete(i)),e.styleMap.delete(r)}for(let i=r.firstChild;i;i=i.nextSibling)n.push(i)}}var So={attempts:0,served:0,reconciled:0};async function na(t,e,n){So.attempts++;try{let r=await vu(t,e,n);return r&&So.served++,r}catch{return null}}async function vu(t,e,n){let r=e.retained;if(!r||!r.clone||!r.styleMap||!r.srcToClone||n.reconcile||n.clip||n.captureSelection||r.clipWindow||t.scrollTop||t.scrollLeft||uu(t)||pu(r)||r.fontsCSS||Xn(n))return null;for(let u of n.plugins||[])if(u&&(typeof u.beforeSnap=="function"||typeof u.beforeClone=="function"||typeof u.resolveNode=="function"||typeof u.afterClone=="function"))return null;if(r.classPrefixCSS&&(r.classPrefixCSS.includes("::marker")||r.classPrefixCSS.includes("::first-line"))||n.excludeMode==="remove")return null;let i=t.ownerDocument||document,o=Ze(t);if(!o||mu(i,o))return null;let s=[];t:for(let u of e.dirtyRoots){if(!u.isConnected||u===t||!t.contains(u))return null;for(let p of e.dirtyRoots)if(p!==u&&p!==t&&p.contains(u))continue t;s.push(u)}if(!s.length)return null;n.__compressedAssets=r.__compressedAssets,n.__compressionDensity=r.__compressionDensity,n.__compressionRootTransform=r.rootTransform2D;for(let u of s){if(u.parentElement===t||u.matches?.(ea)||u.querySelector?.(ea)||hu(u,o))return null;let p=r.srcToClone.get(u);if(!p||!p.parentNode)return null;let h=new Map,d={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:h,options:n},m=qn(u,null),g=Wn(u),y;try{y=await ie(u,d,n)}finally{g(),m()}if(!y||y.nodeType!==1||y.querySelector?.("style[data-sd]")||(await _e(u,y,d,n),d.__pseudoCSS))return null;await Cn(y,d),Dn(y);try{await Rn(y,u,h)}catch{}if(await Promise.all([Un(y,n),zn(u,y,r.styleCache,n,h)]),n.compress)try{await Zn(y,n,h)}catch{}for(let[b,w]of h.entries())po(b,w);p.replaceWith(y),xu(p,r);for(let[b,w]of h.entries())r.nodeMap.set(b,w),r.srcToClone.set(w,b)}let a={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:r.nodeMap,options:n};for(let[u,p]of r.nodeMap.entries()){if(!p||p.nodeType!==1||!p.isConnected)continue;let h=r.styleMap.get(u);if(!h)continue;let d=wu(h);if(!d)continue;let m=null,g=!1;for(let y in d)if(m||=getComputedStyle(p),!yu(m.getPropertyValue(y),d[y])){g=!0;break}if(g){if(n.__compressedAssets?.has(u))return null;So.reconciled++,await lt(p,u,a,n)}}let c=Ge(r.styleMap);for(let[u,p]of r.styleMap.entries())Su(u),uo(u,p,c);let f=(r.classPrefixCSS||"")+Array.from(c.entries()).map(([u,p])=>`.${p}{${u}}`).join("");Jn(r.clone,n.__compressedAssets);let l=await tr({element:t,options:n,plugins:n.plugins,clone:r.clone,classCSS:f,styleCache:r.styleCache,nodeMap:r.nodeMap},{clipWindow:null,outerTransforms:r.outerTransforms,outerShadows:r.outerShadows,rootTransform2D:r.rootTransform2D,fontsCSS:r.fontsCSS||""});return n.__compressedSnapshot=Qn(r.clone,n.__compressedAssets),r.__compressedAssets=n.__compressedAssets,r.__compressionDensity=n.__compressionDensity,l}bt();var vo=new WeakMap,rr=new WeakMap,da=new WeakSet,xo=new WeakMap,ku=64,an=new Map,pa=["scroll","input","change","focusin","focusout","pointerdown","pointerup","pointercancel","keydown","keyup","beforetoggle","toggle"],Cu=["(prefers-color-scheme: dark)","(prefers-reduced-motion: reduce)","(prefers-contrast: more)","(forced-colors: active)","(inverted-colors: inverted)","(prefers-reduced-transparency: reduce)","(hover: hover)","(any-hover: hover)","(pointer: coarse)","(any-pointer: coarse)","(color-gamut: p3)","(dynamic-range: high)"];function Au(t){let e=t?.defaultView;return typeof e?.matchMedia!="function"?"":Cu.map(n=>{try{return e.matchMedia(n).matches?"1":"0"}catch{return"?"}}).join("")}function ra(t){let e=[];for(let n=t;n;){try{let r=n.getBoundingClientRect();e.push(r.x,r.y,r.width,r.height)}catch{e.push("?")}n.parentElement?n=n.parentElement:n=n.getRootNode?.()?.host||null}return e.join("|")}function oa(t,e){if(e.disposed||(an.delete(t),an.set(t,e),an.size<=ku))return;let[n,r]=an.entries().next().value;ha(n,r)}function ha(t,e){e.disposed=!0,an.delete(t),vo.delete(t);for(let n of e.observers)try{n.disconnect()}catch{}for(let n of pa)t.removeEventListener(n,e.onMediaDirty,!0);for(let n of e.trackedShadowRoots.keys())for(let r of Co)n.removeEventListener(r,e.onMediaDirty,!0);for(let[n,r]of e.trackedImages)n.removeEventListener("load",r),n.removeEventListener("error",r);e.trackedImages.clear(),e.trackedShadowRoots.clear(),e.images.length=0,e.controls.length=0,e.scrollNodes.length=0,e.observers.length=0,e.last=null,e.retained=null,e.retainedFrameDriven=!1}function ma(t){if(da.has(t))return!1;rr.delete(t);let e=[t],n=[],r=[];for(let i=0;i<e.length;i++){let o=e[i],s=[];o?.nodeType===1&&s.push(o);try{s.push(...o.querySelectorAll("*"))}catch{return!1}for(let a of s){a.shadowRoot&&e.push(a.shadowRoot);let c=String(a.localName||a.tagName||"").toLowerCase();if(/^(?:iframe|canvas|video|audio|object|embed|marquee|blink)$/.test(c)||c==="progress"&&!a.hasAttribute("value")||/^(?:animate|animatetransform|animatemotion|set)$/.test(c))return!1;let f="";if(c==="img"){r.push(a);try{f=a.currentSrc||a.src||""}catch{}}/^(?:input|textarea|select|option)$/.test(c)&&n.push(a);let l=a.getAttribute?.("style")||"",u=xo.get(a);if(f||l){if((!u||u.src!==f||u.style!==l)&&(u={src:f,style:l,animated:We(f)||We(l)},xo.set(a,u)),u.animated)return!1}else u&&xo.delete(a)}}return rr.set(t,{roots:e.slice(1),controls:n,images:r}),!0}function ko(t,e){if(!t.querySelectorAll)return!1;let n=rr.get(t);rr.delete(t);let r=new Set(n?.roots||[]);if(n&&(e.controls=n.controls,e.scannedImages=n.images),!n){let i=[t];for(let o=0;o<i.length;o++){let s=i[o];s.shadowRoot&&!r.has(s.shadowRoot)&&(r.add(s.shadowRoot),i.push(s.shadowRoot));for(let a of s.querySelectorAll("*"))a.shadowRoot&&!r.has(a.shadowRoot)&&(r.add(a.shadowRoot),i.push(a.shadowRoot))}}for(let[i,o]of e.trackedShadowRoots)if(!r.has(i)){try{o.disconnect()}catch{}for(let a of Co)i.removeEventListener(a,e.onMediaDirty,!0);e.trackedShadowRoots.delete(i);let s=e.observers.indexOf(o);s>=0&&e.observers.splice(s,1)}for(let i of r)if(!e.trackedShadowRoots.has(i))try{let o=new MutationObserver(e.markDirty);o.observe(i,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),o.__flush=e.markDirty,e.observers.push(o),e.trackedShadowRoots.set(i,o);for(let s of Co)i.addEventListener(s,e.onMediaDirty,{capture:!0,passive:!0});e.retained&&e.dirtyAll()}catch{}return!!n}var Co=["scroll","change","beforetoggle","toggle"];function or(t,e){return[t,...e.trackedShadowRoots.keys()]}function Ao(t,e){let n=e.scannedImages;if(e.scannedImages=null,!n){n=[],t.tagName==="IMG"&&n.push(t);for(let r of or(t,e))r.querySelectorAll&&n.push(...r.querySelectorAll("img"))}if(e.images=n,e.trackedImages.size){let r=new Set(n);for(let[i,o]of e.trackedImages)r.has(i)||(i.removeEventListener("load",o),i.removeEventListener("error",o),e.trackedImages.delete(i))}for(let r of n){if(r.complete||e.trackedImages.has(r))continue;let i=()=>{e.capturing&&(e.torn=!0),e.dirty=!0,e.dirtyRoots=null,r.removeEventListener("load",i),r.removeEventListener("error",i),e.trackedImages.delete(r)};e.trackedImages.set(r,i),r.addEventListener("load",i),r.addEventListener("error",i)}}function Mu(t){let e=new Map,n=new Map,r=new Map;for(let i of t)if(te(i))if(i.type==="attributes"){let o=e.get(i.target);o||e.set(i.target,o=new Map),o.has(i.attributeName)||o.set(i.attributeName,i.oldValue)}else if(i.type==="characterData")n.has(i.target)||n.set(i.target,i.oldValue);else if(i.type==="childList"){let o=r.get(i.target);o||r.set(i.target,o=new Map);for(let s of i.addedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)+1)}for(let s of i.removedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)-1)}}else return!0;for(let[i,o]of e)for(let[s,a]of o)if(i.getAttribute(s)!==a)return!0;for(let[i,o]of n)if(i.data!==o)return!0;for(let i of r.values())for(let o of i.values())if(o!==0)return!0;return!1}var Eu=/(?:^data:image\/(?:gif|apng)|\.(?:gif|apng)(?=[?#)'"\s;]|$))/i,Ie=t=>t&&(typeof t=="object"||typeof t=="function")?nr(t):"-";function _u(t,e=131072){if(t=String(t||"").trim(),!/^data:/i.test(t))return"";let n=t.indexOf(",");if(n<0)return"";let r=t.slice(0,n),i=t.slice(n+1);try{if(/;base64/i.test(r)){let o=Math.ceil(e/3)*4;return atob(i.slice(0,o-o%4))}return i.slice(0,e*3).replace(/%([0-9a-f]{2})/gi,(o,s)=>String.fromCharCode(parseInt(s,16))).slice(0,e)}catch{return""}}function Ru(t){let e=(t.match(/^data:([^;,]+)/i)?.[1]||"").toLowerCase();if(e==="image/gif"||e==="image/apng")return!0;if(!/image\/(?:png|webp|avif|svg\+xml)/.test(e))return!1;let n=_u(t);return e==="image/png"?n.includes("acTL"):e==="image/webp"?n.includes("ANIM")||n.includes("ANMF")||n.includes("VP8X")&&!!(n.charCodeAt(n.indexOf("VP8X")+8)&2):e==="image/avif"?n.includes("avis"):/<(?:animate|animateTransform|animateMotion|set)\b|@keyframes\b|animation(?:-name)?\s*:/i.test(n)}function ia(t){let e=String(t||"").trim();return e?Eu.test(e)?!0:/^data:/i.test(e)?Ru(e):!1:!1}function We(t){let e=String(t||"");if(ia(e))return!0;for(let n of e.matchAll(/url\(\s*(?:"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|([^)]*))\s*\)/gi))if(ia(n[1]??n[2]??n[3]))return!0;return!1}function sa(t,e=null){let n=t&&t.clone;if(!n)return!1;let r=e?e.map(i=>t.srcToClone?.get(i)).filter(Boolean):[n];for(let i of r)for(let o of ga(i))if(We(o.getAttribute?.("src"))||We(o.getAttribute?.("href"))||We(o.getAttribute?.("style"))||We(t.styleMap?.get(o)))return!0;return!1}function ga(t){let e=[];t&&t.nodeType===1&&e.push(t);try{e.push(...t.querySelectorAll("*"))}catch{}return e}function Mo(t,e){let n=[],r=new Set,i=o=>{o&&!r.has(o)&&(r.add(o),n.push(o))};t.matches?.("input,textarea,select,option")&&i(t);for(let o of or(t,e))try{for(let s of o.querySelectorAll("input,textarea,select,option"))i(s)}catch{}e.controls=n}function Eo(t,e){let n=[],r=new Set,i=(o,s=!1)=>{if(!(!o||r.has(o))){r.add(o);try{(s||o.scrollLeft||o.scrollTop||o.scrollWidth>o.clientWidth||o.scrollHeight>o.clientHeight)&&n.push(o)}catch{}}};for(let o=t;o;o=o.parentElement)i(o,!0);for(let o of or(t,e))for(let s of ga(o))i(s);e.scrollNodes=n}function aa(t,e){let n=t.ownerDocument||document,r=n.defaultView,i=[r?.location?.hash||"",Au(n),r?.innerWidth||0,r?.innerHeight||0,r?.devicePixelRatio||1,r?.screen?.orientation?.type||""];try{i.push(...[...n.adoptedStyleSheets||[]].map(Ie))}catch{}for(let l of e.trackedShadowRoots.keys())try{i.push("#shadow",...[...l.adoptedStyleSheets||[]].map(Ie))}catch{}let o=n.activeElement,s=n.fullscreenElement;(o?.contains(t)||t.contains(o))&&i.push(Ie(o)),(s?.contains(t)||t.contains(s))&&i.push(Ie(s));let a=[r?.scrollX||0,r?.scrollY||0];for(let l of e.scrollNodes)a.push(l.scrollLeft||0,l.scrollTop||0);let c=[];for(let l of e.controls){let u=String(l.localName||"").toLowerCase();u==="input"?c.push(l.type,Ve(l)?l.value.length:l.value,l.checked?1:0,l.indeterminate?1:0):u==="textarea"?c.push(l.value):u==="select"?c.push(l.selectedIndex,l.value):c.push(l.selected?1:0)}let f=[];for(let l of e.images){let u="";try{u=l.currentSrc||l.src||""}catch{}f.push(u,l.complete?1:0,l.naturalWidth||0,l.naturalHeight||0)}return{style:i.join("|"),scroll:a.join("|"),controls:c,images:f,frameDriven:e.retainedFrameDriven}}function Le(t,e,n){if(!t)return!1;let r=t[n],i=e[n];if(r===i)return!0;if(!Array.isArray(r)||r.length!==i.length)return!1;for(let o=0;o<r.length;o++)if(r[o]!==i[o])return!1;return!0}function ca(t,e){let n=new Set;for(let r of or(t,e))try{let i=r.getAnimations?.(r.nodeType===1?{subtree:!0}:void 0)||[];for(let o of i)n.add(o)}catch{}return[...n]}function la(t){return t.map(e=>[Ie(e),e.playState,Math.round((Number(e.currentTime)||0)*10),e.playbackRate].join(":")).join("|")}function Fu(t,e,n){if(!n||n.nodeType!==1)return null;if(n===t||t.contains(n))return t;for(let r of e.trackedShadowRoots.keys())if(r.contains(n))return r;return null}function Tu(t){let e={dirty:!0,pending:[],torn:!1,dirtyRoots:new Set,retained:null,retainedFrameDriven:!1,disposed:!1,capturing:!1,last:null,inflight:Promise.resolve(),observers:[],trackedShadowRoots:new Map,trackedImages:new Map,images:[],scannedImages:null,scrollNodes:[],controls:[],envEpoch:we(),styleEpoch:ee(),styleStamp:Je(t),outsideMutations:wn(t),geometry:null,renderState:null},n=()=>{e.dirty=!0,e.dirtyRoots=null},r=a=>{if(!e.dirtyRoots)return;let c=a&&(a.nodeType===1?a:a.parentElement);if(!c||c===t||!t.contains(c)||e.dirtyRoots.size>=12){e.dirtyRoots=null;return}e.dirtyRoots.add(c)},i=a=>{if(e.capturing){for(let c of a)e.pending.push(c);return}for(let c of a)te(c)&&(e.dirty=!0,r(c.target))},o=()=>{if(e.capturing){e.torn=!0;return}n()};e.dirtyAll=n;try{let a=new MutationObserver(i);a.observe(t,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),a.__flush=i,e.observers.push(a)}catch{}e.markDirty=i,e.onMediaDirty=o;try{for(let a of pa)t.addEventListener(a,o,{capture:!0,passive:!0})}catch{}return ko(t,e)||Mo(t,e),Eo(t,e),Ao(t,e),e}var $u=0,fa=new WeakMap;function nr(t){let e=fa.get(t);return e||(e="@"+ ++$u,fa.set(t,e)),e}function _o(t,e){let n=typeof t;if(n==="undefined")return null;if(t===null||n==="boolean"||n==="number"||n==="string")return JSON.stringify(t);if(n==="function"||n==="symbol")return n==="symbol"?null:JSON.stringify(nr(t));if(n!=="object")return null;if(typeof t.nodeType=="number")return JSON.stringify(nr(t));if(e.has(t))return null;e.add(t);try{if(Array.isArray(t)){let o=[];for(let s of t){let a=_o(s,e);if(a===null)return null;o.push(a)}return"["+o.join(",")+"]"}let r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)return JSON.stringify(nr(t));let i=[];for(let o of Object.keys(t).sort()){let s=t[o];if(s===void 0)continue;let a=_o(s,e);if(a===null)return null;i.push(JSON.stringify(o)+":"+a)}return"{"+i.join(",")+"}"}finally{e.delete(t)}}function ua(t,e){let{burst:n,invalidate:r,...i}=t||{};try{let o=_o(i,new Set);return o===null?null:`${(e||[]).map(Ie).join(",")}:${o}`}catch{return null}}function ya(t,e,n,r,i=null){let o=vo.get(t);o||(o=Tu(t),o.baselineSignature=ua(e,n.plugins),vo.set(t,o));let s=ua(e,n.plugins),a=async()=>{if(o.disposed)return r();let f=s===null||s!==o.baselineSignature;f&&s!==null?o.pendingSig===s?(o.baselineSignature=s,o.last=null,o.dirty=!0,o.dirtyRoots=null,o.pendingSig=null,f=!1):o.pendingSig=s:o.pendingSig=null,ko(t,o),Ao(t,o);for(let A of o.observers)A.__flush(A.takeRecords());Rt();let l=wn(t);o.dirty&&o.outsideMutations!==l&&o.dirtyAll(),o.outsideMutations=l;let u=t.getRootNode?.(),p=[...o.trackedShadowRoots.keys()];u?.nodeType===11&&!p.includes(u)&&p.push(u),xn(t.ownerDocument||document,p);let h=Je(t);o.styleStamp!==h&&(o.styleStamp=h,o.dirty||o.dirtyAll());let d=aa(t,o),m=ca(t,o);d.animation=la(m),o.renderState&&(!Le(o.renderState,d,"style")&&(Se(),o.dirtyAll()),Le(o.renderState,d,"scroll")||o.dirtyAll(),Le(o.renderState,d,"controls")||(ne(t),o.dirtyAll()),!Le(o.renderState,d,"images")&&!o.dirty&&o.dirtyAll());let g=we();o.envEpoch!==g&&(o.dirtyAll(),o.envEpoch=g);let y=ee();if(o.styleEpoch!==y&&(o.styleEpoch=y,!o.dirty)){let A=ra(t);o.geometry!==null&&A!==o.geometry&&(ne(t),o.dirtyAll()),o.geometry=A}n.invalidate&&o.dirtyAll();let b=!1,w=!!o.renderState&&!Le(o.renderState,d,"animation");try{let A=new Set;w&&m.length===0&&(A=null);for(let v of m){let M=v.playState==="running";if(!M&&!w)continue;M&&(b=!0),w=!0;let k=v.effect?.target;if(Fu(t,o,k)===t)A.add(k);else{A=null;break}}if(w&&A&&A.size&&o.retained){o.dirty=!0;for(let v of A)o.dirtyRoots&&o.dirtyRoots.add(v),ne(v)}else w&&!A&&o.dirtyAll()}catch{}let C=d.frameDriven,x=b||C;if(x&&(o.last=null),C&&o.dirtyAll(),!f&&!x&&!o.dirty&&o.last)return oa(t,o),o.last;o.capturing=!0;let S=null;try{let A=null,v=!1,M=null;if(!f&&o.dirty&&o.retained&&o.dirtyRoots&&o.dirtyRoots.size&&i){M=[...o.dirtyRoots];let k=await na(t,o,n);k&&(A=await i(k),v=!0)}if(A||(f||(n.__retain=k=>{let R=new Map;for(let[E,T]of k.nodeMap.entries())R.set(T,E);S={...k,srcToClone:R}}),A=await r()),!f&&!o.disposed){o.dirty=!1,o.dirtyRoots=new Set,S?(o.retained=S,o.retainedFrameDriven=sa(S),Mo(t,o),Eo(t,o)):v&&(o.retainedFrameDriven||=sa(o.retained,M),Mo(t,o),Eo(t,o));let k=aa(t,o);k.animation=la(ca(t,o));let R=["style","scroll","controls","images"];b||R.push("animation");let E=R.every(T=>Le(d,k,T));o.renderState=k,o.styleEpoch=ee(),o.styleStamp=Je(t),o.geometry=ra(t),o.renderState.frameDriven?(da.add(t),ha(t,o)):E?!x&&!o.renderState.frameDriven&&(o.last=A,oa(t,o)):(o.dirtyAll(),o.last=null)}return A}finally{n.__retain=void 0;for(let v of o.observers)for(let M of v.takeRecords())o.pending.push(M);Rt();let A=wn(t);(o.torn||Mu(o.pending)||A!==l)&&(o.dirtyAll(),o.last=null),o.outsideMutations=A,o.styleEpoch=ee(),o.styleStamp=Je(t),o.pending.length=0,o.torn=!1,o.capturing=!1,o.disposed||(ko(t,o),Ao(t,o))}},c=o.inflight.then(a,a);return o.inflight=c.catch(()=>{}),c}var ir=null;function Sa(t){ir=t}var Pu='button, a[href], [role="button"], input, select, summary, label, [tabindex]',Ro=!1,cn=null,Fo=new WeakMap,ba=!1;function xa(t,e){!Ro||!cn||e&&e.burst===!1||Fo.set(cn.control,{element:t,options:e&&typeof e=="object"?{...e}:e})}function va(t){let e={control:t};cn=e,setTimeout(()=>{cn===e&&(cn=null)},0)}function $o(t){let e=t.target,n=e&&(e.nodeType===1?e:e.parentElement);return n&&n.closest?n.closest(Pu):null}function wa(t){if(t.type==="keydown"&&t.key!=="Enter"&&t.key!==" ")return;let e=$o(t);e&&(va(e),To(t,!1))}function Nu(t){let e=$o(t);e&&va(e)}function To(t,e=!0){if(!ir||document.visibilityState==="hidden")return;let n=$o(t);if(!n||t.type==="pointerenter"&&t.target!==n)return;let r=Fo.get(n);if(r){if(!r.element.isConnected){Fo.delete(n);return}ir(r.element,r.options).catch(()=>{});return}e&&!ba&&(ba=!0,ir(document.body,{clip:"viewport",burst:!1}).catch(()=>{}))}function ka(){if(Ro||typeof document>"u"||typeof document.addEventListener!="function")return;Ro=!0;let t={capture:!0,passive:!0};document.addEventListener("pointerdown",wa,t),document.addEventListener("keydown",wa,t),document.addEventListener("click",Nu,t),document.addEventListener("pointerenter",To,t),document.addEventListener("focusin",To,t)}wt();function td(...t){return ho(...t),X}async function ed(t,e){if(typeof t!="string"||!t.trim())throw new Error("[snapdom.fromString] html string required");let n=document.createElement("div");J(n),n.style.cssText="position:fixed;left:-99999px;top:0;pointer-events:none;",n.innerHTML=t,document.body.appendChild(n);try{await pt();let r=Array.from(n.childNodes).some(o=>o.nodeType===3&&o.textContent.trim()),i=n.children.length===1&&!r?n.firstElementChild:n;return await Ho(i,{...e||{},burst:!1})}finally{n.remove()}}var nd="3.0.0",X=Object.assign(Ho,{plugins:td,fromString:ed,version:nd,preCapture:ka});Sa(Ho);var Uo=Symbol("snapdom.internal"),rd=Symbol("snapdom.internal.silent"),La=new Set(["png","jpeg","jpg","webp","svg"]);async function Ho(t,e){if(!t)throw new Error("Element cannot be null or undefined");let n=ta(e);n.element=t,n.invalidate&&Se(),zs(n,e&&e.plugins);let{stage:r,loweredBy:i}=Ds(n);n.needs=r,n.__needsLoweredBy=i;let o=$e(r,"render"),s=n.burst===!0||!Xn(n),a=typeof n.filter=="function"||!!n.excludePredicates||typeof n.excludeStyleProps=="function"||typeof n.fallbackURL=="function",f=o&&!n.captureSelection&&n.burst!==!1&&s&&!a&&ma(t);return f&&xa(t,e),n.snap||(n.snap={toPng:(l,u)=>X.toPng(l,u),toSvg:(l,u)=>X.toSvg(l,u)}),f?ya(t,e,n,()=>X.capture(t,n,Uo),l=>Ia(l,n)):X.capture(t,n,Uo)}X.capture=async(t,e,n)=>{if(n!==Uo)throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");if($e(e.needs||ft,"render")&&Y()){if(e.embedFonts)try{let o=t.ownerDocument||document,s=new Set;if(e.embedFonts==="auto"){try{for(let l of o.fonts)s.add(String(l.family).replace(/["']/g,"").toLowerCase())}catch{}if(s.size===0)throw null}let a=Pn(t);e.clip||(e.__fontUsage=a);let c=a.required,f=new Set([...c].map(l=>String(l).split("__")[0]).filter(Boolean));if(e.embedFonts==="auto"&&(f=new Set([...f].filter(l=>s.has(l.toLowerCase()))),f.size===0))throw null;await Nn(f,1,o)}catch{}let i=Array.from(t.querySelectorAll("canvas"));t.tagName==="CANVAS"&&i.unshift(t);for(let o of i)try{if(nn(o))continue;let s=o.getContext("2d",{willReadFrequently:!0});s&&s.getImageData(0,0,1,1)}catch(s){D(e,"safari canvas poke failed",s)}}let r=await Zs(t,e);return Ia(r,e)};async function Ia(t,e){let n=e.needs||ft,r=$e(n,"render"),i=_=>Us(n,e.__needsLoweredBy||[],_),o=typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement?t:null,s=o?null:t,a=()=>s??=o.toDataURL(),c=o||t;o&&(t="");let f=e.__compressedSnapshot,l=e.__compressionDensity;delete e.__compressedSnapshot,delete e.__compressedAssets;let u,p=e.meta||{},d=(Number.isFinite(e.width)||Number.isFinite(e.height))&&!Y(),m=d?Number.isFinite(e.width)?p.targetW/p.vbW:p.targetH/p.vbH:1,g=d?Number.isFinite(e.height)?p.targetH/p.vbH:p.targetW/p.vbW:1,y=_=>{if(o||!f?.size)return c;let L=p.vbW,$=p.vbH,F=_.crop;F&&(L=Math.max(1,Math.min(L,F.x+F.width)-Math.max(0,F.x)),$=Math.max(1,Math.min($,F.y+F.height)-Math.max(0,F.y)));let V=Number.isFinite(_.width),z=Number.isFinite(_.height);return(V&&z?Math.max(_.width/L,_.height/$):V?_.width/L*(F?Math.max(1,g/m):1):z?_.height/$*(F?Math.max(1,m/g):1):(_.scale||1)*Math.max(m,g))*(_.dpr||1)<=l?c:u??=Ys(a(),f)},b=async(_,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(De(),un));return $(c,{..._,...L||{},format:"png"})},w=()=>{if(!r)throw i("svgString");if(o)throw new Error("[snapdom] svgString: engine:'html-in-canvas' produces a raster capture; there is no serialized SVG");let _=t.indexOf(",");return _>=0?decodeURIComponent(t.slice(_+1)):""},C=_=>Object.defineProperty({..._||{},svgString:w},"url",r?{get:a,enumerable:!0}:{get(){throw i("export.url")},enumerable:!1,configurable:!0}),x={img:async(_,L)=>{if(o)return b(_,L);let{toImg:$}=await Promise.resolve().then(()=>(Oo(),Wo)),F={..._,...L||{}};return $(y(F),F)},svg:async(_,L)=>{if(o)return b(_,L);let{toSvg:$}=await Promise.resolve().then(()=>(Oo(),Wo)),F={..._,...L||{}};return $(y(F),F)},canvas:async(_,L)=>{let{toCanvas:$}=await Promise.resolve().then(()=>(Oe(),Fa)),F={..._,...L||{}};return $(y(F),F)},blob:async(_,L)=>{let{toBlob:$}=await Promise.resolve().then(()=>(Bo(),Ta)),F={..._,...L||{}};return $(y(F),F)},png:async(_,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(De(),un)),F={..._,...L||{},format:"png"};return $(y(F),F)},jpeg:async(_,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(De(),un)),F={..._,...L||{},format:"jpeg"};return $(y(F),F)},webp:async(_,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(De(),un)),F={..._,...L||{},format:"webp"};return $(y(F),F)},download:async(_,L)=>{let{download:$}=await Promise.resolve().then(()=>(Na(),Pa)),F={..._,...L||{}};return $(y(F),F)}};if(!r)for(let _ of Object.keys(x)){let L=_==="download"?"download()":`to${_.charAt(0).toUpperCase()}${_.slice(1)}()`;x[_]=async()=>{throw i(L)}}let S={};for(let _ of["img","svg","canvas","blob","png","jpeg","webp"])S[_]=async L=>x[_](e,{...E(_,L||{}),[rd]:!0});S.jpg=S.jpeg;let A=_=>Object.defineProperty({...e,..._},"options",{value:e,configurable:!0}),v=A({artifacts:e.__artifacts||null,export:C(),exports:S}),M=await Gn("defineExports",v),k=Object.assign({},...M.filter(_=>_&&typeof _=="object").reverse()),R={...x,...k};R.jpeg&&!R.jpg&&(R.jpg=(_,L)=>R.jpeg(_,L));function E(_,L){let $=L||{},F={...e,...$},V=typeof $.type=="string"?$.type.toLowerCase():"",z=typeof $.format=="string"?$.format.toLowerCase():La.has(V)?V:"";z&&(F.format=z==="jpg"?"jpeg":z),F.__explicitFormat=z?F.format:e.__explicitFormat??null,_==="blob"&&!F.__explicitFormat&&(F.format=o?"png":"svg"),F.type=F.format;let q=Z=>Z==="jpeg"||Z==="jpg"||Z==="webp";return[_,F.format,V].map(Z=>typeof Z=="string"?Z.toLowerCase():"").find(q)&&(F.backgroundColor==null||F.backgroundColor==="transparent")&&(F.backgroundColor="#ffffff"),F.scale!==1&&(Number.isFinite(F.width)||Number.isFinite(F.height))&&D(F,"width/height define the output size \u2014 scale is ignored when either is set"),F}let T=!1,N=Promise.resolve();async function O(_,L){let $=Object.freeze(L&&typeof L=="object"?{...L}:{}),F=async()=>{let z=R[_];if(!z)throw new Error(`[snapdom] Unknown export type: ${_}`);let q=E(_,$),B=A({artifacts:e.__artifacts||null,export:C({type:_,options:q,requestedOptions:$})}),Z=q.format,Mt=q.type;await Gn("beforeExport",B,{format:_,options:q});let Lt=q.format!==Z?q.format:q.type!==Mt?q.type:"",gt=typeof Lt=="string"?Lt.toLowerCase():"";La.has(gt)&&(q.format=gt==="jpg"?"jpeg":gt,q.type=q.format,q.__explicitFormat=q.format,/^(?:jpeg|webp)$/.test(q.format)&&(q.backgroundColor==null||q.backgroundColor==="transparent")&&(q.backgroundColor="#ffffff"));let st=await z(B,q);return await Gn("afterExport",B,{format:_,options:q,result:st}),T||(T=!0,await Nt("afterSnap",e)),st},V=N.then(F);return N=V.catch(()=>{}),V}let H={url:t,needs:n,warnings:e.__session&&e.__session.warnings||[],toRaw:()=>{if(!r)throw i("toRaw()");return a()},to:(_,L)=>O(_,L),toImg:_=>O("img",_),toSvg:_=>O("svg",_),toCanvas:_=>O("canvas",_),toBlob:_=>O("blob",_),toPng:_=>O("png",_),toJpg:_=>O("jpg",_),toWebp:_=>O("webp",_),download:_=>O("download",_)};r?o&&Object.defineProperty(H,"url",{get:a,enumerable:!0,configurable:!0}):Object.defineProperty(H,"url",{get(){throw i("url")},enumerable:!1,configurable:!0}),Object.defineProperty(H,"meta",r?{value:e.meta,enumerable:!0}:{get(){throw i("meta")},enumerable:!1,configurable:!0});for(let _ of Object.keys(R)){let L="to"+_.charAt(0).toUpperCase()+_.slice(1);H[L]||(H[L]=$=>O(_,$))}return H}X.toRaw=(t,e)=>X(t,e).then(n=>n.toRaw());X.toImg=(t,e)=>X(t,e).then(n=>n.toImg());X.toSvg=(t,e)=>X(t,e).then(n=>n.toSvg());X.toCanvas=(t,e)=>X(t,e).then(n=>n.toCanvas());X.toBlob=(t,e)=>X(t,e).then(n=>n.toBlob());X.toPng=(t,e)=>X(t,{...e,format:"png"}).then(n=>n.toPng());X.toJpg=(t,e)=>X(t,{...e,format:"jpeg"}).then(n=>n.toJpg());X.toWebp=(t,e)=>X(t,{...e,format:"webp"}).then(n=>n.toWebp());X.download=(t,e)=>X(t,e).then(n=>n.download());export{ft as DEFAULT_STAGE,Te as STAGES,Bs as assertNeeds,Wf as clearPlugins,mo as getGlobalPlugins,Ne as normalizePlugin,ho as registerPlugins,X as snapdom};
}`,ru=Math.max(1,Math.min(4,(typeof navigator<"u"&&navigator.hardwareConcurrency||2)-1)),Ft=null,ou=0,iu=0,ce=new Map;function ra(){for(let t of ce.values())t(void 0);if(ce.clear(),Array.isArray(Ft))for(let t of Ft)try{t?.terminate()}catch{}Ft=!1}function su(){let t,e=null;try{t=URL.createObjectURL(new Blob([nu],{type:"text/javascript"})),e=new Worker(t),e.onmessage=n=>{let r=ce.get(n.data.id);r&&(ce.delete(n.data.id),r(n.data.error?void 0:n.data.url??null))},e.onerror=ra}catch{e=null}return t&&URL.revokeObjectURL(t),e}function au(){if(Ft===!1)return!1;if(Ft===null){if(typeof Worker>"u"||typeof OffscreenCanvas>"u")return Ft=!1;Ft=[]}let t=ou++%ru;if(!Ft[t]){let e=su();if(!e)return ra(),!1;Ft[t]=e}return Ft[t]}var cu=5e3;function lu(t,e,n,r,i){let o=au();return o?new Promise(s=>{let a=++iu,c=setTimeout(()=>{ce.delete(a),s(void 0)},cu);ce.set(a,f=>{clearTimeout(c),s(f)});try{o.postMessage({id:a,dataURL:i?"":t,blob:i,srcLength:t.length,targetW:e,targetH:n,resFactor:na,quality:ea,mime:r})}catch{clearTimeout(c),ce.delete(a),s(void 0)}}):Promise.resolve(void 0)}async function So(t,e,n,r){if(typeof t!="string"||!t.startsWith("data:image")||t.startsWith("data:image/svg"))return null;e=Math.ceil(e),n=Math.ceil(n);let i=t.length+":"+t.slice(0,64)+t.slice(-64)+":"+e+"x"+n,o=P.compress,s=o.get(i);if(s?.source===t)return s.result;let a=Qn.get(i);if(a?.source===t&&a.cache===o)return a.promise;let c=(async()=>{let l=Qf(t),u=l==="image/jpeg"?"image/jpeg":l==="image/webp"?"image/webp":"image/png",p=eu(t);if(p&&p.w>0&&p.h>0&&!Qs(p.w,p.h,e,n))return null;if(t.length>=Jf){let S=await lu(t,e,n,u,r);if(S!==void 0)return S}let m;try{m=await Kf(t)}catch{return null}let d=m.naturalWidth||m.width,h=m.naturalHeight||m.height;if(!d||!h)return null;let g=Qs(d,h,e,n);if(!g)return null;let y=g*na,b=Math.max(1,Math.round(d*y)),w=Math.max(1,Math.round(h*y)),k=document.createElement("canvas");k.width=b,k.height=w;let x=k.getContext("2d");if(!x)return null;x.imageSmoothingEnabled=!0,x.imageSmoothingQuality="high",x.drawImage(m,0,0,b,w);try{let S=k.toDataURL(u,ea);if(typeof S=="string"&&S.startsWith("data:image")&&S.length<t.length)return S}catch{}return null})(),f={source:t,promise:c,cache:o};Qn.set(i,f);try{let l=await c;return Zf(o,i,t,l),l}finally{Qn.get(i)===f&&Qn.delete(i)}}async function fu(t,e,n=new Map,r={}){if(!e.compress)return{count:0,before:0,after:0};let i=Array.from(t.querySelectorAll("img"));t.tagName==="IMG"&&i.unshift(t);let o=0,s=0,a=0,c=async l=>{let u=l.getAttribute("src")||"";if(!u.startsWith("data:image")||u.startsWith("data:image/svg"))return;let p=parseFloat(l.dataset.snapdomWidth)||parseFloat(l.style.width)||l.width||0,m=parseFloat(l.dataset.snapdomHeight)||parseFloat(l.style.height)||l.height||0;if(!p||!m)return;let d=r.value||=wo(t,e),h=d.density*d.stretch(n.get(l)||l),g=await So(u,p*h,m*h,l.__snapdomBlob);g&&(o++,s+=u.length,a+=g.length,l.setAttribute("src",g),Jn(l,"attribute","src",u,g,e))},f=6;for(let l=0;l<i.length;l+=f)await Promise.allSettled(i.slice(l,l+f).map(c));return{count:o,before:s,after:a}}var uu=/^(cover|contain|(\d+(\.\d+)?%(\s+\d+(\.\d+)?%)?))$/;function du(t){let e=t.offsetWidth||t.getBoundingClientRect().width||0,n=t.offsetHeight||t.getBoundingClientRect().height||0;return{w:e,h:n}}async function pu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=[],o=[t,...t.querySelectorAll("*")];for(let f of o){let l=f.style&&f.style.backgroundImage;l&&l.includes("data:image")&&i.push(f)}let s=0,a=async f=>{let l=n.get(f);if(!l||!l.isConnected)return;let u;try{u=getComputedStyle(l)}catch{return}if((u.backgroundRepeat||"repeat").toLowerCase().split(",").some(v=>v.trim()!=="no-repeat"))return;let m=(f.style.backgroundSize||u.backgroundSize||"auto").toLowerCase();if(m.split(",").some(v=>!uu.test(v.trim())))return;let{w:d,h}=du(l);if(!d||!h)return;let g=Math.max(1,...(m.match(/\d+(?:\.\d+)?%/g)||[]).map(v=>parseFloat(v)/100)),y=r.value||=wo(t,e),b=y.density*y.stretch(l)*g,w=d*b,k=h*b,x=f.style.backgroundImage,S=[...x.matchAll(/url\((['"]?)(data:image\/[^)'"]+)\1\)/gi)],A=x;for(let v of S){let M=v[2];if(M.startsWith("data:image/svg"))continue;let C=await So(M,w,k);C&&(A=A.split(M).join(C),s++)}A!==x&&(f.style.setProperty("background-image",A,f.style.getPropertyPriority("background-image")),Jn(f,"style","background-image",x,f.style.backgroundImage,e))},c=6;for(let f=0;f<i.length;f+=c)await Promise.allSettled(i.slice(f,f+c).map(a));return{count:s}}async function hu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=Array.from(t.querySelectorAll("image"));t.localName==="image"&&i.unshift(t);let o=0,s=async c=>{let f=c.getAttribute("href")||(typeof c.getAttributeNS=="function"?c.getAttributeNS("http://www.w3.org/1999/xlink","href"):null);if(!f||!f.startsWith("data:image")||f.startsWith("data:image/svg"))return;let l=c.getAttribute("width")||"",u=c.getAttribute("height")||"";if(l.includes("%")||u.includes("%"))return;let p=n.get(c),m=p?W(p):c.style,d=(k,x)=>{if(/^\d+(?:\.\d+)?px$/.test(m?.[k]||""))return parseFloat(m[k]);if(/^\d+(?:\.\d+)?(?:px)?$/.test(x.trim()))return parseFloat(x);try{return p?.[k]?.baseVal?.value||0}catch{return 0}},h=d("width",l),g=d("height",u);if(!h||!g)return;let y=r.value||=wo(t,e),b=y.density*y.stretch(p||c),w=await So(f,h*b,g*b);w&&(c.setAttribute("href",w),Jn(c,"attribute","href",f,w,e),c.hasAttribute("xlink:href")&&(c.setAttributeNS(Js,"xlink:href",w),Jn(c,"attribute","xlink:href",f,w,e)),o++)},a=6;for(let c=0;c<i.length;c+=a)await Promise.allSettled(i.slice(c,c+a).map(s));return{count:o}}async function er(t,e,n){if(!e.compress)return;let r={};await fu(t,e,n,r),await pu(t,e,n,r),await hu(t,e,n,r)}ht();dt();wt();function mu(t,e){if(Y())return t;let n=t.indexOf("</style>");if(n===-1)return t;let r=/<style\b[^>]*>[\s\S]*?<\/style>/g,i=[],o=n,s;for(r.lastIndex=n;s=r.exec(t);)i.push({text:t.slice(o,s.index),intern:!0}),i.push({text:s[0],intern:!1}),o=r.lastIndex;i.push({text:t.slice(o),intern:!0});let a=new Map,c=/ style="([^"]*)"/g,f;for(let y of i)if(y.intern)for(c.lastIndex=0;f=c.exec(y.text);)a.set(f[1],(a.get(f[1])||0)+1);let l=0;for(let[y,b]of a)b>1&&(l+=(b-1)*y.length);if(l<2048||t.includes(" data-sdi="))return t;let u=gu(e,i.some(y=>!y.intern),t.includes("data-snapdom-asset"));if(u===null)return t;let p=new Map,m=0,d=[],h=(y,b)=>{if((a.get(b)||0)<2||u.has(b))return y;let w=p.get(b);return w===void 0&&(w="i"+(m++).toString(36),p.set(b,w),d.push(`[data-sdi="${w}"]{${b}}`)),` data-sdi="${w}"`},g="";for(let y of i)g+=y.intern?y.text.replace(c,h):y.text;return t.slice(0,n)+d.join("")+g}function gu(t,e,n){let r=new Set;if(!e&&!n)return r;if(!t||t.querySelector("[data-sdi]"))return null;let i=c=>{let f=c.getAttribute("style");f&&r.add(f)};if(n&&t.querySelectorAll("[data-snapdom-asset][style]").forEach(i),e)try{let c=f=>{for(let l of f){if(l.type===CSSRule.IMPORT_RULE||l.type===CSSRule.NAMESPACE_RULE)throw new Error("External or namespaced CSS");if(l.selectorText){if(/\[\s*style\b|data-sdi|\[[^\]]*\\|&/i.test(l.selectorText))throw new Error("Attribute-dependent or nested CSS");t.querySelectorAll(l.selectorText).forEach(i)}l.cssRules&&c(l.cssRules)}};for(let f of[...t.querySelectorAll("style")].slice(1)){let l=f.textContent||"";if(/@import\b/i.test(l))return null;let u=new CSSStyleSheet;u.replaceSync(l),c(u.cssRules)}}catch{return null}let o=new Set,s=document.createElement("div"),a=new XMLSerializer;for(let c of r){s.setAttribute("style",c);let f=a.serializeToString(s).match(/ style="([^"]*)"/);f&&o.add(f[1])}return o}async function nr(t,e){let{clipWindow:n,outerTransforms:r,outerShadows:i,rootTransform2D:o,fontsCSS:s}=e,a=t.options;if(t!==a){let{options:K,...tt}=t;t=Object.assign(a,tt),Object.defineProperty(t,"options",{value:t,configurable:!0})}let c,f;Is(t,s),await It("beforeRender",t);let l=W(t.element),u=t.element.getBoundingClientRect(),p=Math.max(1,I(t.element.offsetWidth||parseFloat(l.width)||u.width||1)),m=Math.max(1,I(t.element.offsetHeight||parseFloat(l.height)||u.height||1)),d=t.element.ownerDocument||document;if(!n&&(t.element===d.body||t.element===d.documentElement)&&!t.__pinned){let K=Math.max(t.element.scrollHeight||0,d.documentElement?.scrollHeight||0,d.body?.scrollHeight||0),tt=Math.max(t.element.scrollWidth||0,d.documentElement?.scrollWidth||0,d.body?.scrollWidth||0);K>0&&(m=Math.max(m,I(K))),tt>0&&(p=Math.max(p,I(tt)));try{let Q=(t.scrollbarCSS||"").length+(t.baseCSS||"").length+(t.fontsCSS||"").length+(t.classCSS||"").length,et=P.measureHints.get(t.element);if(et&&et.cssLen===Q&&et.w0===p&&et.docH===K&&et.docW===tt)et.csh>0&&(m=Math.max(m,I(et.csh))),et.csw>0&&(p=Math.max(p,I(et.csw)));else{let nt=d.createElement("div");J(nt),nt.style.cssText="position:absolute!important;left:-9999px!important;top:0!important;width:"+p+"px!important;overflow:visible!important;visibility:hidden!important;";let Qt=nt.attachShadow({mode:"open"}),Jt=d.createElement("style");Jt.textContent=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS,Qt.appendChild(Jt),Qt.appendChild(t.clone.cloneNode(!0)),d.body.appendChild(nt);let ze=nt.scrollHeight,Bt=nt.scrollWidth;d.body.removeChild(nt),P.measureHints.set(t.element,{cssLen:Q,w0:p,docH:K,docW:tt,csh:ze,csw:Bt}),ze>0&&(m=Math.max(m,I(ze))),Bt>0&&(p=Math.max(p,I(Bt)))}}catch{}}if(t.options?.excludeMode==="remove"||typeof t.options?.filter=="function"&&t.options.filterMode==="remove"){let K=po(t.element,t.options),tt=1,Q=po(t.element,{}),et=Math.max(2,m*.15);Number.isFinite(Q)&&Q>=m-et&&Number.isFinite(K)&&K>0&&(m=Math.max(1,Math.min(m,I(K+tt))))}if(t.options?.reconcile)try{let K=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS;Ls(t.element,t.clone,K,t.nodeMap,p,m)}catch(K){console.warn("[snapdom] reconcile pass failed:",K)}let g=(K,tt=NaN)=>{let Q=typeof K=="string"?parseFloat(K):K;return Number.isFinite(Q)?Q:tt},y=g(t.options.width),b=g(t.options.height),w=n?I(n.width):p,k=n?I(n.height):m,x=w,S=k,A=Number.isFinite(y),v=Number.isFinite(b),M=k>0?w/k:1;A&&v?(x=Math.max(1,I(y)),S=Math.max(1,I(b))):A?(x=Math.max(1,I(y)),S=Math.max(1,I(x/(M||1)))):v&&(S=Math.max(1,I(b)),x=Math.max(1,I(S*(M||1))));let C=0,R=0,_=p,T=m;if(n){let K=0,tt=0;if(xo(t.element)){let Q=null;if(!r&&o&&Number.isFinite(o.a))Q={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0};else{let et=ae(t.element),nt=uo(l.transform&&l.transform!=="none"?l.transform:"",et);nt&&nt.is2D&&(Q={a:nt.a,b:nt.b,c:nt.c,d:nt.d,e:0,f:0})}if(Q&&!(Q.a===1&&Q.b===0&&Q.c===0&&Q.d===1)){let{ox:et,oy:nt}=an(l,p,m),Qt=Fe(p,m,Q,et,nt);K=Qt.minX,tt=Qt.minY}}C=I(n.x+K),R=I(n.y+tt),_=I(C+n.width),T=I(R+n.height)}else if(!r&&o&&Number.isFinite(o.a)){let K={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0},tt=Fe(p,m,K,0,0);C=I(tt.minX),R=I(tt.minY),_=I(tt.maxX),T=I(tt.maxY)}else if(r&&xo(t.element)){let tt=l.transform&&l.transform!=="none"?l.transform:"",Q=ae(t.element),et=Yt({baseTransform:tt,rotate:Q.rotate||"0deg",scale:Q.scale,translate:Q.translate,width:p,height:m}),{ox:nt,oy:Qt}=an(l,p,m),Jt=et.is2D?et:new DOMMatrix(et.toString()),ze={a:Jt.a,b:Jt.b,c:Jt.c,d:Jt.d,e:0,f:0},Bt=Fe(p,m,ze,nt,Qt);C=I(Bt.minX),R=I(Bt.minY),_=I(Bt.maxX),T=I(Bt.maxY)}let N=oo(l),O=io(l),H=so(l),E=ao(l),L=co(l),$=u.width>0?(_-C)/u.width:1,F=u.height>0?(T-R)/u.height:1,V=i==="subtree"&&!n?ks(t.element,t.nodeMap,t.styleCache,$,F):{top:0,right:0,bottom:0,left:0},z=n?{top:0,right:0,bottom:0,left:0}:i?{top:I(Math.max(N.top,O.top,V.top)+H.top+E.top+L.bleed.top),right:I(Math.max(N.right,O.right,V.right)+H.right+E.right+L.bleed.right),bottom:I(Math.max(N.bottom,O.bottom,V.bottom)+H.bottom+E.bottom+L.bleed.bottom),left:I(Math.max(N.left,O.left,V.left)+H.left+E.left+L.bleed.left)}:{top:H.top,right:H.right,bottom:H.bottom,left:H.left};C=I(C-z.left),R=I(R-z.top),_=I(_+z.right),T=I(T+z.bottom);let q=Math.max(1,I(_-C)),B=Math.max(1,I(T-R)),Z="http://www.w3.org/2000/svg",_t=xo(t.element)?2:0,gt=I(_t+(r?0:1)),st=Math.ceil(q+gt*2),at=Math.ceil(B+gt*2),$t=I(-(I(C)-gt)),U=I(-(I(R)-gt)),G=Math.max(0,$t),j=Math.max(0,U),ut=I(st-Math.min(0,$t)),Et=I(at-Math.min(0,U)),yt=document.createElementNS(Z,"foreignObject");yt.setAttribute("x",String(Math.min(0,$t))),yt.setAttribute("y",String(Math.min(0,U))),yt.setAttribute("width",String(ut)),yt.setAttribute("height",String(Et)),yt.style.overflow="visible";let ue=document.createElement("style"),hn="svg{overflow:visible;} foreignObject{overflow:visible;} foreignObject>div{-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important;}";ue.textContent=(t.scrollbarCSS||"")+t.baseCSS+t.fontsCSS+hn+t.classCSS,yt.appendChild(ue);let Ue=document.createElement("div");Ue.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),Ue.style.cssText=`all:initial;box-sizing:border-box;display:block;overflow:visible;width:${ut}px;height:${Et}px`+(G!==0||j!==0?`;padding:${j}px 0 0 ${G}px !important`:""),Ue.appendChild(t.clone),yt.appendChild(Ue);let dr=new XMLSerializer().serializeToString(yt),Ot=A||v,pr=Object.freeze({w0:w,h0:k,vbW:st,vbH:at,targetW:x,targetH:S,contentX:I($t+(n?C:0)),contentY:I(U+(n?R:0)),clip:n?Object.freeze({x:I(C),y:I(R),width:w,height:k}):null});Object.defineProperty(a,"meta",{value:pr,enumerable:!0,writable:!1,configurable:!0});let hr=!Ot||Y()?st:A?x:I(st*(S/at)),mn=!Ot||Y()?at:v?S:I(at*(x/st)),Dt=parseFloat(W(d.documentElement)?.fontSize)||16;f=`<svg xmlns="${Z}" width="${hr}" height="${mn}" viewBox="0 0 ${st} ${at}" font-size="${Dt}px">`+mu(dr,yt)+"</svg>",c=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(f)}`,t.svgString=f,t.dataURL=c,a.__artifacts={classCSS:t.classCSS||"",fontsCSS:t.fontsCSS||"",baseCSS:t.baseCSS||"",scrollbarCSS:t.scrollbarCSS||""},await It("afterRender",t),t.clone=t.nodeMap=t.styleCache=t.svgString=null;let mr=[...document.querySelectorAll("#snapdom-sandbox")].find(zt);return mr&&mr.style.position==="absolute"&&mr.remove(),t.dataURL}function xo(t){return As(t)}function yu(t){let e=Array.isArray(t.plugins)?t.plugins:bo(),n=[];for(let r of e){let i=Le(r);i&&typeof i.resolveNode=="function"&&n.push(i.resolveNode.bind(i))}return n.length?n:null}async function oa(t,e){if(!t)throw new Error("Element cannot be null or undefined");e.__session=go(e.cache),delete e.__compressedAssets,delete e.__compressedSnapshot,delete e.__compressionDensity,e.__resolveNodeHooks=yu(e);let n=e;n.element=t,Object.defineProperty(n,"options",{value:n,configurable:!0});let r,i,o,s,a,c,f,l="",u=null,p=e.needs||ft,m=n.format,d=n.type;await It("beforeSnap",n);let h=n.format!==m&&/^(?:png|jpe?g|webp|svg)$/i.test(n.format),g=n.type!==d&&/^(?:png|jpe?g|webp|svg)$/i.test(n.type);if(h||g){let _=String(h?n.format:n.type).toLowerCase();n.format=_==="jpg"?"jpeg":_,n.type=n.format,n.__explicitFormat=n.format,/^(?:jpeg|webp)$/.test(n.format)&&(n.backgroundColor==null||n.backgroundColor==="transparent")&&(n.backgroundColor="#ffffff")}await It("beforeClone",n);let y=n.outerTransforms!==!1,b=n.outerShadows==="subtree"?"subtree":!!n.outerShadows,w=n.clip?Bn(n.element,n.clip):null;if(e.__styleShare===void 0)try{e.__styleShare=xi(n.element)&&(typeof n.element.getAnimations!="function"||n.element.getAnimations({subtree:!0}).length===0)}catch{e.__styleShare=!1}let k=fi(e.fast);for(;;){e.__slicer=k;let _=Xn(n.element,w);try{({clone:r,classCSS:i,classPrefixCSS:o,styleCache:s,nodeMap:a,reconcileRisk:c,clipWindow:f}=await Ws(n.element,n.options)),c>0&&!e.reconcile&&(xt(e.__session,"reconcile-risk","text in inline/table-cell elements kept natural width and may re-wrap; pass { reconcile: true } for pixel-exact layout"),P.warnedReconcile||(P.warnedReconcile=!0,console.warn("[snapdom] Text in inline/table-cell elements kept its natural width and may re-wrap under font-fallback rasterization. Pass { reconcile: true } for pixel-exact layout (roughly doubles capture time)."))),!y&&r&&(u=Cs(n.element,r)),!b&&r&&Ts(n.element,r,n.options),r&&(Ps(n.element,r,a),$s(n.element,r))}finally{_()}if(!k?.yielded||!e.__tornSinceStart?.())break;k=null,e.__session=go(e.cache)}if(e.__slicer=null,n.clone=r,n.classCSS=i,n.styleCache=s,n.nodeMap=a,await It("afterClone",n),!Pe(p,"render"))return null;if(k?.due()&&await k.pause(),Un(n.clone),n.options?.excludeMode==="remove"||typeof n.options?.filter=="function"&&n.options.filterMode==="remove")try{Ns(n.element,n.clone,n.styleCache,n.nodeMap)}catch(_){xt(e.__session,"shrink-failed","shrink pass failed",_),console.warn("[snapdom] shrink pass failed:",_)}try{await Tn(n.clone,n.element,n.nodeMap)}catch{}let x=_=>Promise.resolve().then(_),S=(async()=>{await Promise.all([x(()=>zn(n.clone,n.options)),x(()=>Vn(n.element,n.clone,n.styleCache,n.options,n.nodeMap))]);try{Bs(n.element,n.clone,n.nodeMap)}catch(_){xt(e.__session,"backdrop-filter-failed","backdrop-filter emulation failed",_),console.warn("[snapdom] backdrop-filter emulation failed:",_)}if(e.compress&&(e.__compressionClip=f,e.__compressionRootTransform=u,await x(()=>er(n.clone,n.options,n.nodeMap))),e.captureSelection)try{Gi(n.nodeMap)}catch(_){xt(e.__session,"selection-compose-failed","field selection compose failed",_)}})(),A=Promise.resolve();(e.embedFonts==="auto"?((n.element.ownerDocument||document).fonts?.size||0)>0:e.embedFonts)&&(A=x(async()=>{let _=n.element.ownerDocument||document,T=w?H=>{try{let E=H.getBoundingClientRect();return E.right>=w.left-200&&E.left<=w.right+200&&E.bottom>=w.top-200&&E.top<=w.bottom+200}catch{return!0}}:null,{required:N,usedCodepoints:O}=!w&&e.__fontUsage||Ln(n.element,T);if(e.embedFonts==="auto"){let H=new Set;try{for(let L of _.fonts)H.add(String(L.family).replace(/["']/g,"").toLowerCase())}catch{}if(!(H.size>0&&Array.from(N).some(L=>H.has(String(L).split("__")[0].toLowerCase()))))return}if(Y()){let H=new Set(Array.from(N).map(E=>String(E).split("__")[0]).filter(Boolean));await In(H,1,_)}l=await as({required:N,usedCodepoints:O,exclude:n.options.excludeFonts,localFonts:n.options.localFonts,useProxy:n.options.useProxy,fontStylesheetDomains:n.options.fontStylesheetDomains,iconMatchers:n.options.__iconMatchers,doc:_})})),await Promise.all([S,A]);let M=(n.options.plugins||[]).some(_=>_&&(typeof _.beforeRender=="function"||typeof _.afterRender=="function"));n.options.engine,k?.due()&&await k.pause();let C=n.clone;tr(C,e.__compressedAssets);let R=await nr(n,{clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,fontsCSS:l});if(e.__compressedSnapshot=Zn(C,e.__compressedAssets),typeof e.__retain=="function")try{e.__retain({clone:r,nodeMap:a,styleCache:s,styleMap:e.__session.styleMap,classPrefixCSS:o,fontsCSS:l,clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,__compressedAssets:e.__compressedAssets,__compressionDensity:e.__compressionDensity})}catch{}return R}dt();bt();var bu=new Set(["png","jpeg","jpg","webp","svg"]);function ia(t={}){let e=typeof t.type=="string"&&bu.has(t.type.toLowerCase())?t.type.toLowerCase():null,n=t.format??e??"png";n==="jpg"&&(n="jpeg");let r=t.format!=null?n:e==="jpg"?"jpeg":e,i=Vo(t.cache),o=t.exclude==null?[]:Array.isArray(t.exclude)?t.exclude:[t.exclude],s=[],a=[];for(let u of o)typeof u=="string"?s.push(u):typeof u=="function"?a.push(u):u!=null&&console.warn("[snapdom] Ignored invalid exclude entry (expected selector string or predicate):",u);let c=t.excludeMode??"hide",f=u=>{if(!u||u.nodeType!==1)return!1;if(u.getAttribute("data-capture")==="exclude")return!0;for(let p of Array.isArray(l.exclude)?l.exclude:[])try{if(u.matches(p))return!0}catch{}for(let p of Array.isArray(l.excludePredicates)?l.excludePredicates:[])try{if(p(u))return!0}catch{}if(typeof l.filter=="function")try{if(!l.filter(u))return!0}catch{}return!1},l={debug:t.debug??!1,scale:t.scale??1,exclude:s,excludePredicates:a.length?a:null,excludeMode:c,filter:t.filter??null,filterMode:t.filterMode??"hide",shouldExclude:f,placeholders:t.placeholders!==!1,captureSelection:t.captureSelection??!1,canvas:rt(t.canvas,"canvas")?t.canvas:null,embedFonts:t.embedFonts??"auto",iconFonts:Array.isArray(t.iconFonts)?t.iconFonts:t.iconFonts?[t.iconFonts]:[],__iconMatchers:Qi(t.iconFonts),localFonts:Array.isArray(t.localFonts)?t.localFonts:[],excludeFonts:t.excludeFonts??void 0,fontStylesheetDomains:Array.isArray(t.fontStylesheetDomains)?t.fontStylesheetDomains:[],fallbackURL:t.fallbackURL??void 0,cache:i,__styleShare:t.__styleShare,useProxy:typeof t.useProxy=="string"?t.useProxy:"",width:t.width??null,height:t.height??null,format:n,__explicitFormat:r,type:n,quality:t.quality??.92,dpr:t.dpr??(window.devicePixelRatio||1),backgroundColor:t.backgroundColor??(["jpeg","webp"].includes(n)?"#ffffff":null),filename:t.filename??"snapDOM",outerTransforms:t.outerTransforms??!0,outerShadows:t.outerShadows??!1,reconcile:t.reconcile??!1,burst:t.burst,fast:t.fast===!1||t.fast==="auto"?t.fast:!0,engine:t.engine,invalidate:t.invalidate??!1,__pinned:t.__pinned===!0,clip:t.clip??null,compress:t.compress!==!1,excludeStyleProps:t.excludeStyleProps??null,resolvePicturePlaceholders:t.resolvePicturePlaceholders!==!1};return l}St();te();ht();var sa="svg,iframe,canvas,video,audio,object,embed,slot,template,picture,style,pre";function wu(t){try{return t.matches?.("dialog,[popover]")||!!t.querySelector?.("dialog,[popover]")}catch{return!0}}var Su=/(?:^|;)\s*(?:-webkit-)?backdrop-filter:\s*(?!none(?:\s*!important)?(?:;|$))[^;]+/i;function xu(t){if(t.__usesBackdropFilter!==void 0)return t.__usesBackdropFilter;let e=!1;for(let n of t.styleMap.values())if(Su.test(n)){e=!0;break}return t.__usesBackdropFilter=e,e}function vu(t,e){let n=e.has("backdrop-filter")||e.has("-webkit-backdrop-filter");if(!n&&(n=(o=>/(?:^|;)\s*(?:-webkit-)?backdrop-filter\s*:/i.test(o.getAttribute?.("style")||""))(t),!n))try{n=!!t.querySelector?.('[style*="backdrop-filter" i]')}catch{n=!0}if(!n)return!1;let r=[t];t.querySelectorAll&&r.push(...t.querySelectorAll("*"));for(let i of r){let o=getComputedStyle(i),s=o.getPropertyValue("backdrop-filter")||o.getPropertyValue("-webkit-backdrop-filter");if(s&&s!=="none")return!0}return!1}var aa=new WeakMap;function ku(t){let e=Lt(),n=aa.get(t);if(n&&n.epoch===e)return n.leaky;let r=!1,i={budget:2e4},o=s=>{for(let a=0;a<s.length&&!r;a++){if(--i.budget<0){r=!0;return}let c=s[a],f=c.selectorText;if(f&&/[+~]|:has\(/.test(f)){r=!0;return}let l=c.style;if(l&&(l.counterReset||l.counterIncrement||l.counterSet||l.content&&l.content.includes("counter"))){r=!0;return}c.cssRules&&c.cssRules.length&&o(c.cssRules)}};try{for(let s of t.styleSheets){let a=null;try{a=s.cssRules}catch{r=!0}if(r)break;a&&o(a)}if(!r){let s=t.adoptedStyleSheets;if(Array.isArray(s))for(let a of s){if(r)break;try{o(a.cssRules)}catch{r=!0}}}}catch{r=!0}return aa.set(t,{epoch:e,leaky:r}),r}var Cu=1/16;function Au(t,e){if(t===e)return!0;if(!t.endsWith("px")||!e.endsWith("px"))return!1;let n=parseFloat(t),r=parseFloat(e);return Number.isFinite(n)&&Number.isFinite(r)&&Math.abs(n-r)<=Cu}var rr=new Map,Mu=["width","height","min-width","min-height"];function _u(t){let e=rr.get(t);if(e===void 0){e=null;for(let n of Mu){let r=t.match(new RegExp("(?:^|;)"+n+":([^;]+)"));r&&r[1].endsWith("px")&&((e||={})[n]=r[1])}rr.size>5e3&&rr.clear(),rr.set(t,e)}return e}function Eu(t){if(!(!t.classList||!t.classList.length))for(let e of Array.from(t.classList))/^c\d+$/.test(e)&&t.classList.remove(e)}function Ru(t,e){let n=[t];for(;n.length;){let r=n.pop();if(r.nodeType===1){let i=e.nodeMap.get(r);i!==void 0&&(e.nodeMap.delete(r),e.srcToClone.get(i)===r&&e.srcToClone.delete(i)),e.styleMap.delete(r)}for(let i=r.firstChild;i;i=i.nextSibling)n.push(i)}}var vo={attempts:0,served:0,reconciled:0};async function ca(t,e,n){vo.attempts++;try{let r=await Fu(t,e,n);return r&&vo.served++,r}catch{return null}}async function Fu(t,e,n){let r=e.retained;if(!r||!r.clone||!r.styleMap||!r.srcToClone||n.reconcile||n.clip||n.captureSelection||r.clipWindow||t.scrollTop||t.scrollLeft||wu(t)||xu(r)||r.fontsCSS||Kn(n))return null;for(let u of n.plugins||[])if(u&&(typeof u.beforeSnap=="function"||typeof u.beforeClone=="function"||typeof u.resolveNode=="function"||typeof u.afterClone=="function"))return null;if(r.classPrefixCSS&&(r.classPrefixCSS.includes("::marker")||r.classPrefixCSS.includes("::first-line"))||n.excludeMode==="remove")return null;let i=t.ownerDocument||document,o=en(t);if(!o||ku(i))return null;let s=[];t:for(let u of e.dirtyRoots){if(!u.isConnected||u===t||!t.contains(u))return null;for(let p of e.dirtyRoots)if(p!==u&&p!==t&&p.contains(u))continue t;s.push(u)}if(!s.length)return null;n.__compressedAssets=r.__compressedAssets,n.__compressionDensity=r.__compressionDensity,n.__compressionRootTransform=r.rootTransform2D;for(let u of s){if(u.parentElement===t||u.matches?.(sa)||u.querySelector?.(sa)||vu(u,o))return null;let p=r.srcToClone.get(u);if(!p||!p.parentNode)return null;let m=new Map,d={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:m,options:n},h=Xn(u,null),g=Dn(u),y;try{y=await se(u,d,n)}finally{g(),h()}if(!y||y.nodeType!==1||y.querySelector?.("style[data-sd]")||(await Re(u,y,d,n),d.__pseudoCSS))return null;await Mn(y,d),Un(y);try{await Tn(y,u,m)}catch{}if(await Promise.all([zn(y,n),Vn(u,y,r.styleCache,n,m)]),n.compress)try{await er(y,n,m)}catch{}for(let[b,w]of m.entries())mo(b,w);p.replaceWith(y),Ru(p,r);for(let[b,w]of m.entries())r.nodeMap.set(b,w),r.srcToClone.set(w,b)}let a={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:r.nodeMap,options:n};for(let[u,p]of r.nodeMap.entries()){if(!p||p.nodeType!==1||!p.isConnected)continue;let m=r.styleMap.get(u);if(!m)continue;let d=_u(m);if(!d)continue;let h=null,g=!1;for(let y in d)if(h||=getComputedStyle(p),!Au(h.getPropertyValue(y),d[y])){g=!0;break}if(g){if(n.__compressedAssets?.has(u))return null;vo.reconciled++,await lt(p,u,a,n)}}let c=Xe(r.styleMap);for(let[u,p]of r.styleMap.entries())Eu(u),ho(u,p,c);let f=(r.classPrefixCSS||"")+Array.from(c.entries()).map(([u,p])=>`.${p}{${u}}`).join("");tr(r.clone,n.__compressedAssets);let l=await nr({element:t,options:n,plugins:n.plugins,clone:r.clone,classCSS:f,styleCache:r.styleCache,nodeMap:r.nodeMap},{clipWindow:null,outerTransforms:r.outerTransforms,outerShadows:r.outerShadows,rootTransform2D:r.rootTransform2D,fontsCSS:r.fontsCSS||""});return n.__compressedSnapshot=Zn(r.clone,n.__compressedAssets),r.__compressedAssets=n.__compressedAssets,r.__compressionDensity=n.__compressionDensity,l}bt();var Co=new WeakMap,ir=new WeakMap,wa=new WeakSet,ko=new WeakMap,Tu=64,ln=new Map,Sa=["scroll","input","change","focusin","focusout","pointerdown","pointerup","pointercancel","keydown","keyup","beforetoggle","toggle"],$u=["(prefers-color-scheme: dark)","(prefers-reduced-motion: reduce)","(prefers-contrast: more)","(forced-colors: active)","(inverted-colors: inverted)","(prefers-reduced-transparency: reduce)","(hover: hover)","(any-hover: hover)","(pointer: coarse)","(any-pointer: coarse)","(color-gamut: p3)","(dynamic-range: high)"];function Pu(t){let e=t?.defaultView;return typeof e?.matchMedia!="function"?"":$u.map(n=>{try{return e.matchMedia(n).matches?"1":"0"}catch{return"?"}}).join("")}function la(t){let e=[];for(let n=t;n;){try{let r=n.getBoundingClientRect();e.push(r.x,r.y,r.width,r.height)}catch{e.push("?")}n.parentElement?n=n.parentElement:n=n.getRootNode?.()?.host||null}return e.join("|")}function fa(t,e){if(e.disposed||(ln.delete(t),ln.set(t,e),ln.size<=Tu))return;let[n,r]=ln.entries().next().value;xa(n,r)}function xa(t,e){e.disposed=!0,ln.delete(t),Co.delete(t);for(let n of e.observers)try{n.disconnect()}catch{}for(let n of Sa)t.removeEventListener(n,e.onMediaDirty,!0);for(let n of e.trackedShadowRoots.keys())for(let r of Mo)n.removeEventListener(r,e.onMediaDirty,!0);for(let[n,r]of e.trackedImages)n.removeEventListener("load",r),n.removeEventListener("error",r);e.trackedImages.clear(),e.trackedShadowRoots.clear(),e.images.length=0,e.controls.length=0,e.scrollNodes.length=0,e.observers.length=0,e.last=null,e.retained=null,e.retainedFrameDriven=!1}function va(t){if(wa.has(t))return!1;ir.delete(t);let e=[t],n=[],r=[];for(let i=0;i<e.length;i++){let o=e[i],s=[];o?.nodeType===1&&s.push(o);try{s.push(...o.querySelectorAll("*"))}catch{return!1}for(let a of s){a.shadowRoot&&e.push(a.shadowRoot);let c=String(a.localName||a.tagName||"").toLowerCase();if(/^(?:iframe|canvas|video|audio|object|embed|marquee|blink)$/.test(c)||c==="progress"&&!a.hasAttribute("value")||/^(?:animate|animatetransform|animatemotion|set)$/.test(c))return!1;let f="";if(c==="img"){r.push(a);try{f=a.currentSrc||a.src||""}catch{}}/^(?:input|textarea|select|option)$/.test(c)&&n.push(a);let l=a.getAttribute?.("style")||"",u=ko.get(a);if(f||l){if((!u||u.src!==f||u.style!==l)&&(u={src:f,style:l,animated:Oe(f)||Oe(l)},ko.set(a,u)),u.animated)return!1}else u&&ko.delete(a)}}return ir.set(t,{roots:e.slice(1),controls:n,images:r}),!0}function Ao(t,e){if(!t.querySelectorAll)return!1;let n=ir.get(t);ir.delete(t);let r=new Set(n?.roots||[]);if(n&&(e.controls=n.controls,e.scannedImages=n.images),!n){let i=[t];for(let o=0;o<i.length;o++){let s=i[o];s.shadowRoot&&!r.has(s.shadowRoot)&&(r.add(s.shadowRoot),i.push(s.shadowRoot));for(let a of s.querySelectorAll("*"))a.shadowRoot&&!r.has(a.shadowRoot)&&(r.add(a.shadowRoot),i.push(a.shadowRoot))}}for(let[i,o]of e.trackedShadowRoots)if(!r.has(i)){try{o.disconnect()}catch{}for(let a of Mo)i.removeEventListener(a,e.onMediaDirty,!0);e.trackedShadowRoots.delete(i);let s=e.observers.indexOf(o);s>=0&&e.observers.splice(s,1)}for(let i of r)if(!e.trackedShadowRoots.has(i))try{let o=new MutationObserver(e.markDirty);o.observe(i,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),o.__flush=e.markDirty,e.observers.push(o),e.trackedShadowRoots.set(i,o);for(let s of Mo)i.addEventListener(s,e.onMediaDirty,{capture:!0,passive:!0});e.retained&&e.dirtyAll()}catch{}return!!n}var Mo=["scroll","change","beforetoggle","toggle"];function sr(t,e){return[t,...e.trackedShadowRoots.keys()]}function _o(t,e){let n=e.scannedImages;if(e.scannedImages=null,!n){n=[],t.tagName==="IMG"&&n.push(t);for(let r of sr(t,e))r.querySelectorAll&&n.push(...r.querySelectorAll("img"))}if(e.images=n,e.trackedImages.size){let r=new Set(n);for(let[i,o]of e.trackedImages)r.has(i)||(i.removeEventListener("load",o),i.removeEventListener("error",o),e.trackedImages.delete(i))}for(let r of n){if(r.complete||e.trackedImages.has(r))continue;let i=()=>{e.capturing&&(e.torn=!0),e.dirty=!0,e.dirtyRoots=null,r.removeEventListener("load",i),r.removeEventListener("error",i),e.trackedImages.delete(r)};e.trackedImages.set(r,i),r.addEventListener("load",i),r.addEventListener("error",i)}}function ua(t){let e=new Map,n=new Map,r=new Map;for(let i of t)if(re(i))if(i.type==="attributes"){let o=e.get(i.target);o||e.set(i.target,o=new Map),o.has(i.attributeName)||o.set(i.attributeName,i.oldValue)}else if(i.type==="characterData")n.has(i.target)||n.set(i.target,i.oldValue);else if(i.type==="childList"){let o=r.get(i.target);o||r.set(i.target,o=new Map);for(let s of i.addedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)+1)}for(let s of i.removedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)-1)}}else return!0;for(let[i,o]of e)for(let[s,a]of o)if(i.getAttribute(s)!==a)return!0;for(let[i,o]of n)if(i.data!==o)return!0;for(let i of r.values())for(let o of i.values())if(o!==0)return!0;return!1}var Nu=/(?:^data:image\/(?:gif|apng)|\.(?:gif|apng)(?=[?#)'"\s;]|$))/i,We=t=>t&&(typeof t=="object"||typeof t=="function")?or(t):"-";function Lu(t,e=131072){if(t=String(t||"").trim(),!/^data:/i.test(t))return"";let n=t.indexOf(",");if(n<0)return"";let r=t.slice(0,n),i=t.slice(n+1);try{if(/;base64/i.test(r)){let o=Math.ceil(e/3)*4;return atob(i.slice(0,o-o%4))}return i.slice(0,e*3).replace(/%([0-9a-f]{2})/gi,(o,s)=>String.fromCharCode(parseInt(s,16))).slice(0,e)}catch{return""}}function Iu(t){let e=(t.match(/^data:([^;,]+)/i)?.[1]||"").toLowerCase();if(e==="image/gif"||e==="image/apng")return!0;if(!/image\/(?:png|webp|avif|svg\+xml)/.test(e))return!1;let n=Lu(t);return e==="image/png"?n.includes("acTL"):e==="image/webp"?n.includes("ANIM")||n.includes("ANMF")||n.includes("VP8X")&&!!(n.charCodeAt(n.indexOf("VP8X")+8)&2):e==="image/avif"?n.includes("avis"):/<(?:animate|animateTransform|animateMotion|set)\b|@keyframes\b|animation(?:-name)?\s*:/i.test(n)}function da(t){let e=String(t||"").trim();return e?Nu.test(e)?!0:/^data:/i.test(e)?Iu(e):!1:!1}function Oe(t){let e=String(t||"");if(da(e))return!0;for(let n of e.matchAll(/url\(\s*(?:"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|([^)]*))\s*\)/gi))if(da(n[1]??n[2]??n[3]))return!0;return!1}function pa(t,e=null){let n=t&&t.clone;if(!n)return!1;let r=e?e.map(i=>t.srcToClone?.get(i)).filter(Boolean):[n];for(let i of r)for(let o of ka(i))if(Oe(o.getAttribute?.("src"))||Oe(o.getAttribute?.("href"))||Oe(o.getAttribute?.("style"))||Oe(t.styleMap?.get(o)))return!0;return!1}function ka(t){let e=[];t&&t.nodeType===1&&e.push(t);try{e.push(...t.querySelectorAll("*"))}catch{}return e}function Eo(t,e){let n=[],r=new Set,i=o=>{o&&!r.has(o)&&(r.add(o),n.push(o))};t.matches?.("input,textarea,select,option")&&i(t);for(let o of sr(t,e))try{for(let s of o.querySelectorAll("input,textarea,select,option"))i(s)}catch{}e.controls=n}function Ro(t,e){let n=[],r=new Set,i=(o,s=!1)=>{if(!(!o||r.has(o))){r.add(o);try{(s||o.scrollLeft||o.scrollTop||o.scrollWidth>o.clientWidth||o.scrollHeight>o.clientHeight)&&n.push(o)}catch{}}};for(let o=t;o;o=o.parentElement)i(o,!0);for(let o of sr(t,e))for(let s of ka(o))i(s);e.scrollNodes=n}function ha(t,e){let n=t.ownerDocument||document,r=n.defaultView,i=[r?.location?.hash||"",Pu(n),r?.innerWidth||0,r?.innerHeight||0,r?.devicePixelRatio||1,r?.screen?.orientation?.type||""];try{i.push(...[...n.adoptedStyleSheets||[]].map(We))}catch{}for(let l of e.trackedShadowRoots.keys())try{i.push("#shadow",...[...l.adoptedStyleSheets||[]].map(We))}catch{}let o=n.activeElement,s=n.fullscreenElement;(o?.contains(t)||t.contains(o))&&i.push(We(o)),(s?.contains(t)||t.contains(s))&&i.push(We(s));let a=[r?.scrollX||0,r?.scrollY||0];for(let l of e.scrollNodes)a.push(l.scrollLeft||0,l.scrollTop||0);let c=[];for(let l of e.controls){let u=String(l.localName||"").toLowerCase();u==="input"?c.push(l.type,qe(l)?l.value.length:l.value,l.checked?1:0,l.indeterminate?1:0):u==="textarea"?c.push(l.value):u==="select"?c.push(l.selectedIndex,l.value):c.push(l.selected?1:0)}let f=[];for(let l of e.images){let u="";try{u=l.currentSrc||l.src||""}catch{}f.push(u,l.complete?1:0,l.naturalWidth||0,l.naturalHeight||0)}return{style:i.join("|"),scroll:a.join("|"),controls:c,images:f,frameDriven:e.retainedFrameDriven}}function Ie(t,e,n){if(!t)return!1;let r=t[n],i=e[n];if(r===i)return!0;if(!Array.isArray(r)||r.length!==i.length)return!1;for(let o=0;o<r.length;o++)if(r[o]!==i[o])return!1;return!0}function ma(t,e){let n=new Set;for(let r of sr(t,e))try{let i=r.getAnimations?.(r.nodeType===1?{subtree:!0}:void 0)||[];for(let o of i)n.add(o)}catch{}return[...n]}function ga(t){return t.map(e=>[We(e),e.playState,Math.round((Number(e.currentTime)||0)*10),e.playbackRate].join(":")).join("|")}function Wu(t,e,n){if(!n||n.nodeType!==1)return null;if(n===t||t.contains(n))return t;for(let r of e.trackedShadowRoots.keys())if(r.contains(n))return r;return null}function Ou(t){let e={dirty:!0,pending:[],torn:!1,dirtyRoots:new Set,retained:null,retainedFrameDriven:!1,disposed:!1,capturing:!1,last:null,inflight:Promise.resolve(),observers:[],trackedShadowRoots:new Map,trackedImages:new Map,images:[],scannedImages:null,scrollNodes:[],controls:[],envEpoch:Se(),styleEpoch:Lt(),styleStamp:tn(t),outsideMutations:Ze(t),geometry:null,renderState:null},n=()=>{e.dirty=!0,e.dirtyRoots=null},r=a=>{if(!e.dirtyRoots)return;let c=a&&(a.nodeType===1?a:a.parentElement);if(!c||c===t||!t.contains(c)||e.dirtyRoots.size>=12){e.dirtyRoots=null;return}e.dirtyRoots.add(c)},i=a=>{if(e.capturing){for(let c of a)e.pending.push(c);return}for(let c of a)re(c)&&(e.dirty=!0,r(c.target))},o=()=>{if(e.capturing){e.torn=!0;return}n()};e.dirtyAll=n;try{let a=new MutationObserver(i);a.observe(t,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),a.__flush=i,e.observers.push(a)}catch{}e.markDirty=i,e.onMediaDirty=o;try{for(let a of Sa)t.addEventListener(a,o,{capture:!0,passive:!0})}catch{}return Ao(t,e)||Eo(t,e),Ro(t,e),_o(t,e),e}var Du=0,ya=new WeakMap;function or(t){let e=ya.get(t);return e||(e="@"+ ++Du,ya.set(t,e)),e}function Fo(t,e){let n=typeof t;if(n==="undefined")return null;if(t===null||n==="boolean"||n==="number"||n==="string")return JSON.stringify(t);if(n==="function"||n==="symbol")return n==="symbol"?null:JSON.stringify(or(t));if(n!=="object")return null;if(typeof t.nodeType=="number")return JSON.stringify(or(t));if(e.has(t))return null;e.add(t);try{if(Array.isArray(t)){let o=[];for(let s of t){let a=Fo(s,e);if(a===null)return null;o.push(a)}return"["+o.join(",")+"]"}let r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)return JSON.stringify(or(t));let i=[];for(let o of Object.keys(t).sort()){let s=t[o];if(s===void 0)continue;let a=Fo(s,e);if(a===null)return null;i.push(JSON.stringify(o)+":"+a)}return"{"+i.join(",")+"}"}finally{e.delete(t)}}function ba(t,e){let{burst:n,invalidate:r,...i}=t||{};try{let o=Fo(i,new Set);return o===null?null:`${(e||[]).map(We).join(",")}:${o}`}catch{return null}}function Ca(t,e,n,r,i=null){let o=Co.get(t);o||(o=Ou(t),o.baselineSignature=ba(e,n.plugins),Co.set(t,o));let s=ba(e,n.plugins),a=async()=>{if(o.disposed)return r();let f=s===null||s!==o.baselineSignature;f&&s!==null?o.pendingSig===s?(o.baselineSignature=s,o.last=null,o.dirty=!0,o.dirtyRoots=null,o.pendingSig=null,f=!1):o.pendingSig=s:o.pendingSig=null,Ao(t,o),_o(t,o);for(let A of o.observers)A.__flush(A.takeRecords());At();let l=Ze(t);o.dirty&&o.outsideMutations!==l&&o.dirtyAll(),o.outsideMutations=l;let u=t.getRootNode?.(),p=[...o.trackedShadowRoots.keys()];u?.nodeType===11&&!p.includes(u)&&p.push(u),kn(t.ownerDocument||document,p);let m=tn(t);o.styleStamp!==m&&(o.styleStamp=m,o.dirty||o.dirtyAll());let d=ha(t,o),h=ma(t,o);d.animation=ga(h),o.renderState&&(!Ie(o.renderState,d,"style")&&(xe(),o.dirtyAll()),Ie(o.renderState,d,"scroll")||o.dirtyAll(),Ie(o.renderState,d,"controls")||(oe(t),o.dirtyAll()),!Ie(o.renderState,d,"images")&&!o.dirty&&o.dirtyAll());let g=Se();o.envEpoch!==g&&(o.dirtyAll(),o.envEpoch=g);let y=Lt();if(o.styleEpoch!==y&&(o.styleEpoch=y,!o.dirty)){let A=la(t);o.geometry!==null&&A!==o.geometry&&(oe(t),o.dirtyAll()),o.geometry=A}n.invalidate&&o.dirtyAll();let b=!1,w=!!o.renderState&&!Ie(o.renderState,d,"animation");try{let A=new Set;w&&h.length===0&&(A=null);for(let v of h){let M=v.playState==="running";if(!M&&!w)continue;M&&(b=!0),w=!0;let C=v.effect?.target;if(Wu(t,o,C)===t)A.add(C);else{A=null;break}}if(w&&A&&A.size&&o.retained){o.dirty=!0;for(let v of A)o.dirtyRoots&&o.dirtyRoots.add(v),oe(v)}else w&&!A&&o.dirtyAll()}catch{}let k=d.frameDriven,x=b||k;if(x&&(o.last=null),k&&o.dirtyAll(),!f&&!x&&!o.dirty&&o.last)return fa(t,o),o.last;o.capturing=!0;let S=null;try{let A=null,v=!1,M=null;if(!f&&o.dirty&&o.retained&&o.dirtyRoots&&o.dirtyRoots.size&&i){M=[...o.dirtyRoots];let C=await ca(t,o,n);C&&(A=await i(C),v=!0)}if(A||(f||(n.__retain=C=>{let R=new Map;for(let[_,T]of C.nodeMap.entries())R.set(T,_);S={...C,srcToClone:R}}),n.__tornSinceStart=()=>{for(let C of o.observers)for(let R of C.takeRecords())o.pending.push(R);return At(),o.torn||ua(o.pending)||Ze(t)!==l},A=await r()),!f&&!o.disposed){o.dirty=!1,o.dirtyRoots=new Set,S?(o.retained=S,o.retainedFrameDriven=pa(S),Eo(t,o),Ro(t,o)):v&&(o.retainedFrameDriven||=pa(o.retained,M),Eo(t,o),Ro(t,o));let C=ha(t,o);C.animation=ga(ma(t,o));let R=["style","scroll","controls","images"];b||R.push("animation");let _=R.every(T=>Ie(d,C,T));o.renderState=C,o.styleEpoch=Lt(),o.styleStamp=tn(t),o.geometry=la(t),o.renderState.frameDriven?(wa.add(t),xa(t,o)):_?!x&&!o.renderState.frameDriven&&(o.last=A,fa(t,o)):(o.dirtyAll(),o.last=null)}return A}finally{n.__retain=void 0,n.__tornSinceStart=void 0;for(let v of o.observers)for(let M of v.takeRecords())o.pending.push(M);At();let A=Ze(t);(o.torn||ua(o.pending)||A!==l)&&(o.dirtyAll(),o.last=null),o.outsideMutations=A,o.styleEpoch=Lt(),o.styleStamp=tn(t),o.pending.length=0,o.torn=!1,o.capturing=!1,o.disposed||(Ao(t,o),_o(t,o))}},c=o.inflight.then(a,a);return o.inflight=c.catch(()=>{}),c}var ar=null;function _a(t){ar=t}var Bu='button, a[href], [role="button"], input, select, summary, label, [tabindex]',To=!1,fn=null,$o=new WeakMap,Aa=!1;function Ea(t,e){!To||!fn||e&&e.burst===!1||$o.set(fn.control,{element:t,options:e&&typeof e=="object"?{...e}:e})}function Ra(t){let e={control:t};fn=e,setTimeout(()=>{fn===e&&(fn=null)},0)}function No(t){let e=t.target,n=e&&(e.nodeType===1?e:e.parentElement);return n&&n.closest?n.closest(Bu):null}function Ma(t){if(t.type==="keydown"&&t.key!=="Enter"&&t.key!==" ")return;let e=No(t);e&&(Ra(e),Po(t,!1))}function Uu(t){let e=No(t);e&&Ra(e)}function Po(t,e=!0){if(!ar||document.visibilityState==="hidden")return;let n=No(t);if(!n||t.type==="pointerenter"&&t.target!==n)return;let r=$o.get(n);if(r){if(!r.element.isConnected){$o.delete(n);return}ar(r.element,r.options).catch(()=>{});return}e&&!Aa&&(Aa=!0,ar(document.body,{clip:"viewport",burst:!1}).catch(()=>{}))}function Fa(){if(To||typeof document>"u"||typeof document.addEventListener!="function")return;To=!0;let t={capture:!0,passive:!0};document.addEventListener("pointerdown",Ma,t),document.addEventListener("keydown",Ma,t),document.addEventListener("click",Uu,t),document.addEventListener("pointerenter",Po,t),document.addEventListener("focusin",Po,t)}wt();function ad(...t){return yo(...t),X}async function cd(t,e){if(typeof t!="string"||!t.trim())throw new Error("[snapdom.fromString] html string required");let n=document.createElement("div");J(n),n.style.cssText="position:fixed;left:-99999px;top:0;pointer-events:none;",n.innerHTML=t,document.body.appendChild(n);try{await pt();let r=Array.from(n.childNodes).some(o=>o.nodeType===3&&o.textContent.trim()),i=n.children.length===1&&!r?n.firstElementChild:n;return await jo(i,{...e||{},burst:!1})}finally{n.remove()}}var ld="3.1.0",X=Object.assign(jo,{plugins:ad,fromString:cd,version:ld,preCapture:Fa});_a(jo);var zo=Symbol("snapdom.internal"),fd=Symbol("snapdom.internal.silent"),Ha=new Set(["png","jpeg","jpg","webp","svg"]);async function jo(t,e){if(!t)throw new Error("Element cannot be null or undefined");let n=ia(e);n.element=t,n.invalidate&&xe(),Xs(n,e&&e.plugins);let{stage:r,loweredBy:i}=js(n);n.needs=r,n.__needsLoweredBy=i;let o=Pe(r,"render"),s=n.burst===!0||!Kn(n),a=typeof n.filter=="function"||!!n.excludePredicates||typeof n.excludeStyleProps=="function"||typeof n.fallbackURL=="function",f=o&&!n.captureSelection&&n.burst!==!1&&s&&!a&&va(t);return f&&Ea(t,e),n.snap||(n.snap={toPng:(l,u)=>X.toPng(l,u),toSvg:(l,u)=>X.toSvg(l,u)}),f?Ca(t,e,n,()=>X.capture(t,n,zo),l=>za(l,n)):X.capture(t,n,zo)}X.capture=async(t,e,n)=>{if(n!==zo)throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");if(Pe(e.needs||ft,"render")&&Y()){if(e.embedFonts)try{let o=t.ownerDocument||document,s=new Set;if(e.embedFonts==="auto"){try{for(let l of o.fonts)s.add(String(l.family).replace(/["']/g,"").toLowerCase())}catch{}if(s.size===0)throw null}let a=Ln(t);e.clip||(e.__fontUsage=a);let c=a.required,f=new Set([...c].map(l=>String(l).split("__")[0]).filter(Boolean));if(e.embedFonts==="auto"&&(f=new Set([...f].filter(l=>s.has(l.toLowerCase()))),f.size===0))throw null;await In(f,1,o)}catch{}let i=Array.from(t.querySelectorAll("canvas"));t.tagName==="CANVAS"&&i.unshift(t);for(let o of i)try{if(on(o))continue;let s=o.getContext("2d",{willReadFrequently:!0});s&&s.getImageData(0,0,1,1)}catch(s){D(e,"safari canvas poke failed",s)}}let r=await oa(t,e);return za(r,e)};async function za(t,e){let n=e.needs||ft,r=Pe(n,"render"),i=E=>qs(n,e.__needsLoweredBy||[],E),o=typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement?t:null,s=o?null:t,a=()=>s??=o.toDataURL(),c=o||t;o&&(t="");let f=e.__compressedSnapshot,l=e.__compressionDensity;delete e.__compressedSnapshot,delete e.__compressedAssets;let u,p=e.meta||{},d=(Number.isFinite(e.width)||Number.isFinite(e.height))&&!Y(),h=d?Number.isFinite(e.width)?p.targetW/p.vbW:p.targetH/p.vbH:1,g=d?Number.isFinite(e.height)?p.targetH/p.vbH:p.targetW/p.vbW:1,y=E=>{if(o||!f?.size)return c;let L=p.vbW,$=p.vbH,F=E.crop;F&&(L=Math.max(1,Math.min(L,F.x+F.width)-Math.max(0,F.x)),$=Math.max(1,Math.min($,F.y+F.height)-Math.max(0,F.y)));let V=Number.isFinite(E.width),z=Number.isFinite(E.height);return(V&&z?Math.max(E.width/L,E.height/$):V?E.width/L*(F?Math.max(1,g/h):1):z?E.height/$*(F?Math.max(1,h/g):1):(E.scale||1)*Math.max(h,g))*(E.dpr||1)<=l?c:u??=ta(a(),f)},b=async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn));return $(c,{...E,...L||{},format:"png"})},w=()=>{if(!r)throw i("svgString");if(o)throw new Error("[snapdom] svgString: engine:'html-in-canvas' produces a raster capture; there is no serialized SVG");let E=t.indexOf(",");return E>=0?decodeURIComponent(t.slice(E+1)):""},k=E=>Object.defineProperty({...E||{},svgString:w},"url",r?{get:a,enumerable:!0}:{get(){throw i("export.url")},enumerable:!1,configurable:!0}),x={img:async(E,L)=>{if(o)return b(E,L);let{toImg:$}=await Promise.resolve().then(()=>(Bo(),Do)),F={...E,...L||{}};return $(y(F),F)},svg:async(E,L)=>{if(o)return b(E,L);let{toSvg:$}=await Promise.resolve().then(()=>(Bo(),Do)),F={...E,...L||{}};return $(y(F),F)},canvas:async(E,L)=>{let{toCanvas:$}=await Promise.resolve().then(()=>(De(),Wa)),F={...E,...L||{}};return $(y(F),F)},blob:async(E,L)=>{let{toBlob:$}=await Promise.resolve().then(()=>(Ho(),Oa)),F={...E,...L||{}};return $(y(F),F)},png:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"png"};return $(y(F),F)},jpeg:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"jpeg"};return $(y(F),F)},webp:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"webp"};return $(y(F),F)},download:async(E,L)=>{let{download:$}=await Promise.resolve().then(()=>(Ua(),Ba)),F={...E,...L||{}};return $(y(F),F)}};if(!r)for(let E of Object.keys(x)){let L=E==="download"?"download()":`to${E.charAt(0).toUpperCase()}${E.slice(1)}()`;x[E]=async()=>{throw i(L)}}let S={};for(let E of["img","svg","canvas","blob","png","jpeg","webp"])S[E]=async L=>x[E](e,{..._(E,L||{}),[fd]:!0});S.jpg=S.jpeg;let A=E=>Object.defineProperty({...e,...E},"options",{value:e,configurable:!0}),v=A({artifacts:e.__artifacts||null,export:k(),exports:S}),M=await Yn("defineExports",v),C=Object.assign({},...M.filter(E=>E&&typeof E=="object").reverse()),R={...x,...C};R.jpeg&&!R.jpg&&(R.jpg=(E,L)=>R.jpeg(E,L));function _(E,L){let $=L||{},F={...e,...$},V=typeof $.type=="string"?$.type.toLowerCase():"",z=typeof $.format=="string"?$.format.toLowerCase():Ha.has(V)?V:"";z&&(F.format=z==="jpg"?"jpeg":z),F.__explicitFormat=z?F.format:e.__explicitFormat??null,E==="blob"&&!F.__explicitFormat&&(F.format=o?"png":"svg"),F.type=F.format;let q=Z=>Z==="jpeg"||Z==="jpg"||Z==="webp";return[E,F.format,V].map(Z=>typeof Z=="string"?Z.toLowerCase():"").find(q)&&(F.backgroundColor==null||F.backgroundColor==="transparent")&&(F.backgroundColor="#ffffff"),F.scale!==1&&(Number.isFinite(F.width)||Number.isFinite(F.height))&&D(F,"width/height define the output size \u2014 scale is ignored when either is set"),F}let T=!1,N=Promise.resolve();async function O(E,L){let $=Object.freeze(L&&typeof L=="object"?{...L}:{}),F=async()=>{let z=R[E];if(!z)throw new Error(`[snapdom] Unknown export type: ${E}`);let q=_(E,$),B=A({artifacts:e.__artifacts||null,export:k({type:E,options:q,requestedOptions:$})}),Z=q.format,_t=q.type;await Yn("beforeExport",B,{format:E,options:q});let Wt=q.format!==Z?q.format:q.type!==_t?q.type:"",gt=typeof Wt=="string"?Wt.toLowerCase():"";Ha.has(gt)&&(q.format=gt==="jpg"?"jpeg":gt,q.type=q.format,q.__explicitFormat=q.format,/^(?:jpeg|webp)$/.test(q.format)&&(q.backgroundColor==null||q.backgroundColor==="transparent")&&(q.backgroundColor="#ffffff"));let st=await z(B,q);return await Yn("afterExport",B,{format:E,options:q,result:st}),T||(T=!0,await It("afterSnap",e)),st},V=N.then(F);return N=V.catch(()=>{}),V}let H={url:t,needs:n,warnings:e.__session&&e.__session.warnings||[],toRaw:()=>{if(!r)throw i("toRaw()");return a()},to:(E,L)=>O(E,L),toImg:E=>O("img",E),toSvg:E=>O("svg",E),toCanvas:E=>O("canvas",E),toBlob:E=>O("blob",E),toPng:E=>O("png",E),toJpg:E=>O("jpg",E),toWebp:E=>O("webp",E),download:E=>O("download",E)};r?o&&Object.defineProperty(H,"url",{get:a,enumerable:!0,configurable:!0}):Object.defineProperty(H,"url",{get(){throw i("url")},enumerable:!1,configurable:!0}),Object.defineProperty(H,"meta",r?{value:e.meta,enumerable:!0}:{get(){throw i("meta")},enumerable:!1,configurable:!0});for(let E of Object.keys(R)){let L="to"+E.charAt(0).toUpperCase()+E.slice(1);H[L]||(H[L]=$=>O(E,$))}return H}X.toRaw=(t,e)=>X(t,e).then(n=>n.toRaw());X.toImg=(t,e)=>X(t,e).then(n=>n.toImg());X.toSvg=(t,e)=>X(t,e).then(n=>n.toSvg());X.toCanvas=(t,e)=>X(t,e).then(n=>n.toCanvas());X.toBlob=(t,e)=>X(t,e).then(n=>n.toBlob());X.toPng=(t,e)=>X(t,{...e,format:"png"}).then(n=>n.toPng());X.toJpg=(t,e)=>X(t,{...e,format:"jpeg"}).then(n=>n.toJpg());X.toWebp=(t,e)=>X(t,{...e,format:"webp"}).then(n=>n.toWebp());X.download=(t,e)=>X(t,e).then(n=>n.download());export{ft as DEFAULT_STAGE,$e as STAGES,Vs as assertNeeds,Vf as clearPlugins,bo as getGlobalPlugins,Le as normalizePlugin,yo as registerPlugins,X as snapdom};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security (javascript.browser.security.insecure-document-method): User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities

Source: opengrep

@@ -36,4 +36,4 @@ ${g}
} catch (err) {
self.postMessage({ id, error: String(err) })
}
}`,Yf=Math.max(1,Math.min(4,(typeof navigator<"u"&&navigator.hardwareConcurrency||2)-1)),Ft=null,Kf=0,Qf=0,ae=new Map;function Js(){for(let t of ae.values())t(void 0);if(ae.clear(),Array.isArray(Ft))for(let t of Ft)try{t?.terminate()}catch{}Ft=!1}function Jf(){let t,e=null;try{t=URL.createObjectURL(new Blob([Xf],{type:"text/javascript"})),e=new Worker(t),e.onmessage=n=>{let r=ae.get(n.data.id);r&&(ae.delete(n.data.id),r(n.data.error?void 0:n.data.url??null))},e.onerror=Js}catch{e=null}return t&&URL.revokeObjectURL(t),e}function Zf(){if(Ft===!1)return!1;if(Ft===null){if(typeof Worker>"u"||typeof OffscreenCanvas>"u")return Ft=!1;Ft=[]}let t=Kf++%Yf;if(!Ft[t]){let e=Jf();if(!e)return Js(),!1;Ft[t]=e}return Ft[t]}var tu=5e3;function eu(t,e,n,r,i){let o=Zf();return o?new Promise(s=>{let a=++Qf,c=setTimeout(()=>{ae.delete(a),s(void 0)},tu);ae.set(a,f=>{clearTimeout(c),s(f)});try{o.postMessage({id:a,dataURL:i?"":t,blob:i,srcLength:t.length,targetW:e,targetH:n,resFactor:Qs,quality:Ks,mime:r})}catch{clearTimeout(c),ae.delete(a),s(void 0)}}):Promise.resolve(void 0)}async function yo(t,e,n,r){if(typeof t!="string"||!t.startsWith("data:image")||t.startsWith("data:image/svg"))return null;e=Math.ceil(e),n=Math.ceil(n);let i=t.length+":"+t.slice(0,64)+t.slice(-64)+":"+e+"x"+n,o=P.compress,s=o.get(i);if(s?.source===t)return s.result;let a=Yn.get(i);if(a?.source===t&&a.cache===o)return a.promise;let c=(async()=>{let l=zf(t),u=l==="image/jpeg"?"image/jpeg":l==="image/webp"?"image/webp":"image/png",p=Gf(t);if(p&&p.w>0&&p.h>0&&!qs(p.w,p.h,e,n))return null;if(t.length>=jf){let S=await eu(t,e,n,u,r);if(S!==void 0)return S}let h;try{h=await Hf(t)}catch{return null}let d=h.naturalWidth||h.width,m=h.naturalHeight||h.height;if(!d||!m)return null;let g=qs(d,m,e,n);if(!g)return null;let y=g*Qs,b=Math.max(1,Math.round(d*y)),w=Math.max(1,Math.round(m*y)),C=document.createElement("canvas");C.width=b,C.height=w;let x=C.getContext("2d");if(!x)return null;x.imageSmoothingEnabled=!0,x.imageSmoothingQuality="high",x.drawImage(h,0,0,b,w);try{let S=C.toDataURL(u,Ks);if(typeof S=="string"&&S.startsWith("data:image")&&S.length<t.length)return S}catch{}return null})(),f={source:t,promise:c,cache:o};Yn.set(i,f);try{let l=await c;return Vf(o,i,t,l),l}finally{Yn.get(i)===f&&Yn.delete(i)}}async function nu(t,e,n=new Map,r={}){if(!e.compress)return{count:0,before:0,after:0};let i=Array.from(t.querySelectorAll("img"));t.tagName==="IMG"&&i.unshift(t);let o=0,s=0,a=0,c=async l=>{let u=l.getAttribute("src")||"";if(!u.startsWith("data:image")||u.startsWith("data:image/svg"))return;let p=parseFloat(l.dataset.snapdomWidth)||parseFloat(l.style.width)||l.width||0,h=parseFloat(l.dataset.snapdomHeight)||parseFloat(l.style.height)||l.height||0;if(!p||!h)return;let d=r.value||=go(t,e),m=d.density*d.stretch(n.get(l)||l),g=await yo(u,p*m,h*m,l.__snapdomBlob);g&&(o++,s+=u.length,a+=g.length,l.setAttribute("src",g),Kn(l,"attribute","src",u,g,e))},f=6;for(let l=0;l<i.length;l+=f)await Promise.allSettled(i.slice(l,l+f).map(c));return{count:o,before:s,after:a}}var ru=/^(cover|contain|(\d+(\.\d+)?%(\s+\d+(\.\d+)?%)?))$/;function ou(t){let e=t.offsetWidth||t.getBoundingClientRect().width||0,n=t.offsetHeight||t.getBoundingClientRect().height||0;return{w:e,h:n}}async function iu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=[],o=[t,...t.querySelectorAll("*")];for(let f of o){let l=f.style&&f.style.backgroundImage;l&&l.includes("data:image")&&i.push(f)}let s=0,a=async f=>{let l=n.get(f);if(!l||!l.isConnected)return;let u;try{u=getComputedStyle(l)}catch{return}if((u.backgroundRepeat||"repeat").toLowerCase().split(",").some(v=>v.trim()!=="no-repeat"))return;let h=(f.style.backgroundSize||u.backgroundSize||"auto").toLowerCase();if(h.split(",").some(v=>!ru.test(v.trim())))return;let{w:d,h:m}=ou(l);if(!d||!m)return;let g=Math.max(1,...(h.match(/\d+(?:\.\d+)?%/g)||[]).map(v=>parseFloat(v)/100)),y=r.value||=go(t,e),b=y.density*y.stretch(l)*g,w=d*b,C=m*b,x=f.style.backgroundImage,S=[...x.matchAll(/url\((['"]?)(data:image\/[^)'"]+)\1\)/gi)],A=x;for(let v of S){let M=v[2];if(M.startsWith("data:image/svg"))continue;let k=await yo(M,w,C);k&&(A=A.split(M).join(k),s++)}A!==x&&(f.style.setProperty("background-image",A,f.style.getPropertyPriority("background-image")),Kn(f,"style","background-image",x,f.style.backgroundImage,e))},c=6;for(let f=0;f<i.length;f+=c)await Promise.allSettled(i.slice(f,f+c).map(a));return{count:s}}async function su(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=Array.from(t.querySelectorAll("image"));t.localName==="image"&&i.unshift(t);let o=0,s=async c=>{let f=c.getAttribute("href")||(typeof c.getAttributeNS=="function"?c.getAttributeNS("http://www.w3.org/1999/xlink","href"):null);if(!f||!f.startsWith("data:image")||f.startsWith("data:image/svg"))return;let l=c.getAttribute("width")||"",u=c.getAttribute("height")||"";if(l.includes("%")||u.includes("%"))return;let p=n.get(c),h=p?W(p):c.style,d=(C,x)=>{if(/^\d+(?:\.\d+)?px$/.test(h?.[C]||""))return parseFloat(h[C]);if(/^\d+(?:\.\d+)?(?:px)?$/.test(x.trim()))return parseFloat(x);try{return p?.[C]?.baseVal?.value||0}catch{return 0}},m=d("width",l),g=d("height",u);if(!m||!g)return;let y=r.value||=go(t,e),b=y.density*y.stretch(p||c),w=await yo(f,m*b,g*b);w&&(c.setAttribute("href",w),Kn(c,"attribute","href",f,w,e),c.hasAttribute("xlink:href")&&(c.setAttributeNS(Gs,"xlink:href",w),Kn(c,"attribute","xlink:href",f,w,e)),o++)},a=6;for(let c=0;c<i.length;c+=a)await Promise.allSettled(i.slice(c,c+a).map(s));return{count:o}}async function Zn(t,e,n){if(!e.compress)return;let r={};await nu(t,e,n,r),await iu(t,e,n,r),await su(t,e,n,r)}ht();dt();wt();function au(t,e){if(Y())return t;let n=t.indexOf("</style>");if(n===-1)return t;let r=/<style\b[^>]*>[\s\S]*?<\/style>/g,i=[],o=n,s;for(r.lastIndex=n;s=r.exec(t);)i.push({text:t.slice(o,s.index),intern:!0}),i.push({text:s[0],intern:!1}),o=r.lastIndex;i.push({text:t.slice(o),intern:!0});let a=new Map,c=/ style="([^"]*)"/g,f;for(let y of i)if(y.intern)for(c.lastIndex=0;f=c.exec(y.text);)a.set(f[1],(a.get(f[1])||0)+1);let l=0;for(let[y,b]of a)b>1&&(l+=(b-1)*y.length);if(l<2048||t.includes(" data-sdi="))return t;let u=cu(e,i.some(y=>!y.intern),t.includes("data-snapdom-asset"));if(u===null)return t;let p=new Map,h=0,d=[],m=(y,b)=>{if((a.get(b)||0)<2||u.has(b))return y;let w=p.get(b);return w===void 0&&(w="i"+(h++).toString(36),p.set(b,w),d.push(`[data-sdi="${w}"]{${b}}`)),` data-sdi="${w}"`},g="";for(let y of i)g+=y.intern?y.text.replace(c,m):y.text;return t.slice(0,n)+d.join("")+g}function cu(t,e,n){let r=new Set;if(!e&&!n)return r;if(!t||t.querySelector("[data-sdi]"))return null;let i=c=>{let f=c.getAttribute("style");f&&r.add(f)};if(n&&t.querySelectorAll("[data-snapdom-asset][style]").forEach(i),e)try{let c=f=>{for(let l of f){if(l.type===CSSRule.IMPORT_RULE||l.type===CSSRule.NAMESPACE_RULE)throw new Error("External or namespaced CSS");if(l.selectorText){if(/\[\s*style\b|data-sdi|\[[^\]]*\\|&/i.test(l.selectorText))throw new Error("Attribute-dependent or nested CSS");t.querySelectorAll(l.selectorText).forEach(i)}l.cssRules&&c(l.cssRules)}};for(let f of[...t.querySelectorAll("style")].slice(1)){let l=f.textContent||"";if(/@import\b/i.test(l))return null;let u=new CSSStyleSheet;u.replaceSync(l),c(u.cssRules)}}catch{return null}let o=new Set,s=document.createElement("div"),a=new XMLSerializer;for(let c of r){s.setAttribute("style",c);let f=a.serializeToString(s).match(/ style="([^"]*)"/);f&&o.add(f[1])}return o}async function tr(t,e){let{clipWindow:n,outerTransforms:r,outerShadows:i,rootTransform2D:o,fontsCSS:s}=e,a=t.options;if(t!==a){let{options:K,...tt}=t;t=Object.assign(a,tt),Object.defineProperty(t,"options",{value:t,configurable:!0})}let c,f;Fs(t,s),await Nt("beforeRender",t);let l=W(t.element),u=t.element.getBoundingClientRect(),p=Math.max(1,I(t.element.offsetWidth||parseFloat(l.width)||u.width||1)),h=Math.max(1,I(t.element.offsetHeight||parseFloat(l.height)||u.height||1)),d=t.element.ownerDocument||document;if(!n&&(t.element===d.body||t.element===d.documentElement)&&!t.__pinned){let K=Math.max(t.element.scrollHeight||0,d.documentElement?.scrollHeight||0,d.body?.scrollHeight||0),tt=Math.max(t.element.scrollWidth||0,d.documentElement?.scrollWidth||0,d.body?.scrollWidth||0);K>0&&(h=Math.max(h,I(K))),tt>0&&(p=Math.max(p,I(tt)));try{let Q=(t.scrollbarCSS||"").length+(t.baseCSS||"").length+(t.fontsCSS||"").length+(t.classCSS||"").length,et=P.measureHints.get(t.element);if(et&&et.cssLen===Q&&et.w0===p&&et.docH===K&&et.docW===tt)et.csh>0&&(h=Math.max(h,I(et.csh))),et.csw>0&&(p=Math.max(p,I(et.csw)));else{let nt=d.createElement("div");J(nt),nt.style.cssText="position:absolute!important;left:-9999px!important;top:0!important;width:"+p+"px!important;overflow:visible!important;visibility:hidden!important;";let Xt=nt.attachShadow({mode:"open"}),Yt=d.createElement("style");Yt.textContent=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS,Xt.appendChild(Yt),Xt.appendChild(t.clone.cloneNode(!0)),d.body.appendChild(nt);let He=nt.scrollHeight,Ot=nt.scrollWidth;d.body.removeChild(nt),P.measureHints.set(t.element,{cssLen:Q,w0:p,docH:K,docW:tt,csh:He,csw:Ot}),He>0&&(h=Math.max(h,I(He))),Ot>0&&(p=Math.max(p,I(Ot)))}}catch{}}if(t.options?.excludeMode==="remove"||typeof t.options?.filter=="function"&&t.options.filterMode==="remove"){let K=fo(t.element,t.options),tt=1,Q=fo(t.element,{}),et=Math.max(2,h*.15);Number.isFinite(Q)&&Q>=h-et&&Number.isFinite(K)&&K>0&&(h=Math.max(1,Math.min(h,I(K+tt))))}if(t.options?.reconcile)try{let K=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS;Rs(t.element,t.clone,K,t.nodeMap,p,h)}catch(K){console.warn("[snapdom] reconcile pass failed:",K)}let g=(K,tt=NaN)=>{let Q=typeof K=="string"?parseFloat(K):K;return Number.isFinite(Q)?Q:tt},y=g(t.options.width),b=g(t.options.height),w=n?I(n.width):p,C=n?I(n.height):h,x=w,S=C,A=Number.isFinite(y),v=Number.isFinite(b),M=C>0?w/C:1;A&&v?(x=Math.max(1,I(y)),S=Math.max(1,I(b))):A?(x=Math.max(1,I(y)),S=Math.max(1,I(x/(M||1)))):v&&(S=Math.max(1,I(b)),x=Math.max(1,I(S*(M||1))));let k=0,R=0,E=p,T=h;if(n){let K=0,tt=0;if(bo(t.element)){let Q=null;if(!r&&o&&Number.isFinite(o.a))Q={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0};else{let et=se(t.element),nt=lo(l.transform&&l.transform!=="none"?l.transform:"",et);nt&&nt.is2D&&(Q={a:nt.a,b:nt.b,c:nt.c,d:nt.d,e:0,f:0})}if(Q&&!(Q.a===1&&Q.b===0&&Q.c===0&&Q.d===1)){let{ox:et,oy:nt}=on(l,p,h),Xt=Re(p,h,Q,et,nt);K=Xt.minX,tt=Xt.minY}}k=I(n.x+K),R=I(n.y+tt),E=I(k+n.width),T=I(R+n.height)}else if(!r&&o&&Number.isFinite(o.a)){let K={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0},tt=Re(p,h,K,0,0);k=I(tt.minX),R=I(tt.minY),E=I(tt.maxX),T=I(tt.maxY)}else if(r&&bo(t.element)){let tt=l.transform&&l.transform!=="none"?l.transform:"",Q=se(t.element),et=qt({baseTransform:tt,rotate:Q.rotate||"0deg",scale:Q.scale,translate:Q.translate,width:p,height:h}),{ox:nt,oy:Xt}=on(l,p,h),Yt=et.is2D?et:new DOMMatrix(et.toString()),He={a:Yt.a,b:Yt.b,c:Yt.c,d:Yt.d,e:0,f:0},Ot=Re(p,h,He,nt,Xt);k=I(Ot.minX),R=I(Ot.minY),E=I(Ot.maxX),T=I(Ot.maxY)}let N=no(l),O=ro(l),H=oo(l),_=io(l),L=so(l),$=u.width>0?(E-k)/u.width:1,F=u.height>0?(T-R)/u.height:1,V=i==="subtree"&&!n?ys(t.element,t.nodeMap,t.styleCache,$,F):{top:0,right:0,bottom:0,left:0},z=n?{top:0,right:0,bottom:0,left:0}:i?{top:I(Math.max(N.top,O.top,V.top)+H.top+_.top+L.bleed.top),right:I(Math.max(N.right,O.right,V.right)+H.right+_.right+L.bleed.right),bottom:I(Math.max(N.bottom,O.bottom,V.bottom)+H.bottom+_.bottom+L.bleed.bottom),left:I(Math.max(N.left,O.left,V.left)+H.left+_.left+L.bleed.left)}:{top:H.top,right:H.right,bottom:H.bottom,left:H.left};k=I(k-z.left),R=I(R-z.top),E=I(E+z.right),T=I(T+z.bottom);let q=Math.max(1,I(E-k)),B=Math.max(1,I(T-R)),Z="http://www.w3.org/2000/svg",Mt=bo(t.element)?2:0,gt=I(Mt+(r?0:1)),st=Math.ceil(q+gt*2),at=Math.ceil(B+gt*2),$t=I(-(I(k)-gt)),U=I(-(I(R)-gt)),G=Math.max(0,$t),j=Math.max(0,U),ut=I(st-Math.min(0,$t)),Et=I(at-Math.min(0,U)),yt=document.createElementNS(Z,"foreignObject");yt.setAttribute("x",String(Math.min(0,$t))),yt.setAttribute("y",String(Math.min(0,U))),yt.setAttribute("width",String(ut)),yt.setAttribute("height",String(Et)),yt.style.overflow="visible";let fe=document.createElement("style"),dn="svg{overflow:visible;} foreignObject{overflow:visible;} foreignObject>div{-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important;}";fe.textContent=(t.scrollbarCSS||"")+t.baseCSS+t.fontsCSS+dn+t.classCSS,yt.appendChild(fe);let Be=document.createElement("div");Be.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),Be.style.cssText=`all:initial;box-sizing:border-box;display:block;overflow:visible;width:${ut}px;height:${Et}px`+(G!==0||j!==0?`;padding:${j}px 0 0 ${G}px !important`:""),Be.appendChild(t.clone),yt.appendChild(Be);let fr=new XMLSerializer().serializeToString(yt),It=A||v,ur=Object.freeze({w0:w,h0:C,vbW:st,vbH:at,targetW:x,targetH:S,contentX:I($t+(n?k:0)),contentY:I(U+(n?R:0)),clip:n?Object.freeze({x:I(k),y:I(R),width:w,height:C}):null});Object.defineProperty(a,"meta",{value:ur,enumerable:!0,writable:!1,configurable:!0});let dr=!It||Y()?st:A?x:I(st*(S/at)),pn=!It||Y()?at:v?S:I(at*(x/st)),Wt=parseFloat(W(d.documentElement)?.fontSize)||16;f=`<svg xmlns="${Z}" width="${dr}" height="${pn}" viewBox="0 0 ${st} ${at}" font-size="${Wt}px">`+au(fr,yt)+"</svg>",c=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(f)}`,t.svgString=f,t.dataURL=c,a.__artifacts={classCSS:t.classCSS||"",fontsCSS:t.fontsCSS||"",baseCSS:t.baseCSS||"",scrollbarCSS:t.scrollbarCSS||""},await Nt("afterRender",t),t.clone=t.nodeMap=t.styleCache=t.svgString=null;let pr=[...document.querySelectorAll("#snapdom-sandbox")].find(Ut);return pr&&pr.style.position==="absolute"&&pr.remove(),t.dataURL}function bo(t){return ws(t)}function lu(t){let e=Array.isArray(t.plugins)?t.plugins:mo(),n=[];for(let r of e){let i=Ne(r);i&&typeof i.resolveNode=="function"&&n.push(i.resolveNode.bind(i))}return n.length?n:null}async function Zs(t,e){if(!t)throw new Error("Element cannot be null or undefined");e.__session=Ls(e.cache),delete e.__compressedAssets,delete e.__compressedSnapshot,delete e.__compressionDensity,e.__resolveNodeHooks=lu(e);let n=e;n.element=t,Object.defineProperty(n,"options",{value:n,configurable:!0});let r,i,o,s,a,c,f,l="",u=null,p=e.needs||ft,h=n.format,d=n.type;await Nt("beforeSnap",n);let m=n.format!==h&&/^(?:png|jpe?g|webp|svg)$/i.test(n.format),g=n.type!==d&&/^(?:png|jpe?g|webp|svg)$/i.test(n.type);if(m||g){let E=String(m?n.format:n.type).toLowerCase();n.format=E==="jpg"?"jpeg":E,n.type=n.format,n.__explicitFormat=n.format,/^(?:jpeg|webp)$/.test(n.format)&&(n.backgroundColor==null||n.backgroundColor==="transparent")&&(n.backgroundColor="#ffffff")}await Nt("beforeClone",n);let y=n.outerTransforms!==!1,b=n.outerShadows==="subtree"?"subtree":!!n.outerShadows,w=n.clip?On(n.element,n.clip):null;if(e.__styleShare===void 0)try{e.__styleShare=mi(n.element)&&(typeof n.element.getAnimations!="function"||n.element.getAnimations({subtree:!0}).length===0)}catch{e.__styleShare=!1}let C=qn(n.element,w);try{({clone:r,classCSS:i,classPrefixCSS:o,styleCache:s,nodeMap:a,reconcileRisk:c,clipWindow:f}=await Ts(n.element,n.options)),c>0&&!e.reconcile&&(St(e.__session,"reconcile-risk","text in inline/table-cell elements kept natural width and may re-wrap; pass { reconcile: true } for pixel-exact layout"),P.warnedReconcile||(P.warnedReconcile=!0,console.warn("[snapdom] Text in inline/table-cell elements kept its natural width and may re-wrap under font-fallback rasterization. Pass { reconcile: true } for pixel-exact layout (roughly doubles capture time)."))),!y&&r&&(u=bs(n.element,r)),!b&&r&&As(n.element,r,n.options),r&&(Es(n.element,r,a),Ms(n.element,r))}finally{C()}if(n.clone=r,n.classCSS=i,n.styleCache=s,n.nodeMap=a,await Nt("afterClone",n),!$e(p,"render"))return null;if(Dn(n.clone),n.options?.excludeMode==="remove"||typeof n.options?.filter=="function"&&n.options.filterMode==="remove")try{_s(n.element,n.clone,n.styleCache,n.nodeMap)}catch(E){St(e.__session,"shrink-failed","shrink pass failed",E),console.warn("[snapdom] shrink pass failed:",E)}try{await Rn(n.clone,n.element,n.nodeMap)}catch{}let x=E=>Promise.resolve().then(E),S=(async()=>{await Promise.all([x(()=>Un(n.clone,n.options)),x(()=>zn(n.element,n.clone,n.styleCache,n.options,n.nodeMap))]);try{Ns(n.element,n.clone,n.nodeMap)}catch(E){St(e.__session,"backdrop-filter-failed","backdrop-filter emulation failed",E),console.warn("[snapdom] backdrop-filter emulation failed:",E)}if(e.compress&&(e.__compressionClip=f,e.__compressionRootTransform=u,await x(()=>Zn(n.clone,n.options,n.nodeMap))),e.captureSelection)try{Ui(n.nodeMap)}catch(E){St(e.__session,"selection-compose-failed","field selection compose failed",E)}})(),A=Promise.resolve();(e.embedFonts==="auto"?((n.element.ownerDocument||document).fonts?.size||0)>0:e.embedFonts)&&(A=x(async()=>{let E=n.element.ownerDocument||document,T=w?H=>{try{let _=H.getBoundingClientRect();return _.right>=w.left-200&&_.left<=w.right+200&&_.bottom>=w.top-200&&_.top<=w.bottom+200}catch{return!0}}:null,{required:N,usedCodepoints:O}=!w&&e.__fontUsage||Pn(n.element,T);if(e.embedFonts==="auto"){let H=new Set;try{for(let L of E.fonts)H.add(String(L.family).replace(/["']/g,"").toLowerCase())}catch{}if(!(H.size>0&&Array.from(N).some(L=>H.has(String(L).split("__")[0].toLowerCase()))))return}if(Y()){let H=new Set(Array.from(N).map(_=>String(_).split("__")[0]).filter(Boolean));await Nn(H,1,E)}l=await es({required:N,usedCodepoints:O,exclude:n.options.excludeFonts,localFonts:n.options.localFonts,useProxy:n.options.useProxy,fontStylesheetDomains:n.options.fontStylesheetDomains,iconMatchers:n.options.__iconMatchers,doc:E})})),await Promise.all([S,A]);let M=(n.options.plugins||[]).some(E=>E&&(typeof E.beforeRender=="function"||typeof E.afterRender=="function"));n.options.engine;let k=n.clone;Jn(k,e.__compressedAssets);let R=await tr(n,{clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,fontsCSS:l});if(e.__compressedSnapshot=Qn(k,e.__compressedAssets),typeof e.__retain=="function")try{e.__retain({clone:r,nodeMap:a,styleCache:s,styleMap:e.__session.styleMap,classPrefixCSS:o,fontsCSS:l,clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,__compressedAssets:e.__compressedAssets,__compressionDensity:e.__compressionDensity})}catch{}return R}dt();bt();var fu=new Set(["png","jpeg","jpg","webp","svg"]);function ta(t={}){let e=typeof t.type=="string"&&fu.has(t.type.toLowerCase())?t.type.toLowerCase():null,n=t.format??e??"png";n==="jpg"&&(n="jpeg");let r=t.format!=null?n:e==="jpg"?"jpeg":e,i=zo(t.cache),o=t.exclude==null?[]:Array.isArray(t.exclude)?t.exclude:[t.exclude],s=[],a=[];for(let u of o)typeof u=="string"?s.push(u):typeof u=="function"?a.push(u):u!=null&&console.warn("[snapdom] Ignored invalid exclude entry (expected selector string or predicate):",u);let c=t.excludeMode??"hide",f=u=>{if(!u||u.nodeType!==1)return!1;if(u.getAttribute("data-capture")==="exclude")return!0;for(let p of Array.isArray(l.exclude)?l.exclude:[])try{if(u.matches(p))return!0}catch{}for(let p of Array.isArray(l.excludePredicates)?l.excludePredicates:[])try{if(p(u))return!0}catch{}if(typeof l.filter=="function")try{if(!l.filter(u))return!0}catch{}return!1},l={debug:t.debug??!1,scale:t.scale??1,exclude:s,excludePredicates:a.length?a:null,excludeMode:c,filter:t.filter??null,filterMode:t.filterMode??"hide",shouldExclude:f,placeholders:t.placeholders!==!1,captureSelection:t.captureSelection??!1,canvas:rt(t.canvas,"canvas")?t.canvas:null,embedFonts:t.embedFonts??"auto",iconFonts:Array.isArray(t.iconFonts)?t.iconFonts:t.iconFonts?[t.iconFonts]:[],__iconMatchers:Vi(t.iconFonts),localFonts:Array.isArray(t.localFonts)?t.localFonts:[],excludeFonts:t.excludeFonts??void 0,fontStylesheetDomains:Array.isArray(t.fontStylesheetDomains)?t.fontStylesheetDomains:[],fallbackURL:t.fallbackURL??void 0,cache:i,__styleShare:t.__styleShare,useProxy:typeof t.useProxy=="string"?t.useProxy:"",width:t.width??null,height:t.height??null,format:n,__explicitFormat:r,type:n,quality:t.quality??.92,dpr:t.dpr??(window.devicePixelRatio||1),backgroundColor:t.backgroundColor??(["jpeg","webp"].includes(n)?"#ffffff":null),filename:t.filename??"snapDOM",outerTransforms:t.outerTransforms??!0,outerShadows:t.outerShadows??!1,reconcile:t.reconcile??!1,burst:t.burst,engine:t.engine,invalidate:t.invalidate??!1,__pinned:t.__pinned===!0,clip:t.clip??null,compress:t.compress!==!1,excludeStyleProps:t.excludeStyleProps??null,resolvePicturePlaceholders:t.resolvePicturePlaceholders!==!1};return l}kt();Qt();ht();var ea="svg,iframe,canvas,video,audio,object,embed,slot,template,picture,style,pre";function uu(t){try{return t.matches?.("dialog,[popover]")||!!t.querySelector?.("dialog,[popover]")}catch{return!0}}var du=/(?:^|;)\s*(?:-webkit-)?backdrop-filter:\s*(?!none(?:\s*!important)?(?:;|$))[^;]+/i;function pu(t){if(t.__usesBackdropFilter!==void 0)return t.__usesBackdropFilter;let e=!1;for(let n of t.styleMap.values())if(du.test(n)){e=!0;break}return t.__usesBackdropFilter=e,e}function hu(t,e){let n=e.has("backdrop-filter")||e.has("-webkit-backdrop-filter");if(!n&&(n=(o=>/(?:^|;)\s*(?:-webkit-)?backdrop-filter\s*:/i.test(o.getAttribute?.("style")||""))(t),!n))try{n=!!t.querySelector?.('[style*="backdrop-filter" i]')}catch{n=!0}if(!n)return!1;let r=[t];t.querySelectorAll&&r.push(...t.querySelectorAll("*"));for(let i of r){let o=getComputedStyle(i),s=o.getPropertyValue("backdrop-filter")||o.getPropertyValue("-webkit-backdrop-filter");if(s&&s!=="none")return!0}return!1}var wo=new WeakMap;function mu(t,e){if(wo.has(e))return wo.get(e);let n=!1,r={budget:2e4},i=o=>{for(let s=0;s<o.length&&!n;s++){if(--r.budget<0){n=!0;return}let a=o[s],c=a.selectorText;if(c&&/[+~]|:has\(/.test(c)){n=!0;return}let f=a.style;if(f&&(f.counterReset||f.counterIncrement||f.counterSet||f.content&&f.content.includes("counter"))){n=!0;return}a.cssRules&&a.cssRules.length&&i(a.cssRules)}};try{for(let o of t.styleSheets){let s=null;try{s=o.cssRules}catch{n=!0}if(n)break;s&&i(s)}if(!n){let o=t.adoptedStyleSheets;if(Array.isArray(o))for(let s of o){if(n)break;try{i(s.cssRules)}catch{n=!0}}}}catch{n=!0}return wo.set(e,n),n}var gu=1/16;function yu(t,e){if(t===e)return!0;if(!t.endsWith("px")||!e.endsWith("px"))return!1;let n=parseFloat(t),r=parseFloat(e);return Number.isFinite(n)&&Number.isFinite(r)&&Math.abs(n-r)<=gu}var er=new Map,bu=["width","height","min-width","min-height"];function wu(t){let e=er.get(t);if(e===void 0){e=null;for(let n of bu){let r=t.match(new RegExp("(?:^|;)"+n+":([^;]+)"));r&&r[1].endsWith("px")&&((e||={})[n]=r[1])}er.size>5e3&&er.clear(),er.set(t,e)}return e}function Su(t){if(!(!t.classList||!t.classList.length))for(let e of Array.from(t.classList))/^c\d+$/.test(e)&&t.classList.remove(e)}function xu(t,e){let n=[t];for(;n.length;){let r=n.pop();if(r.nodeType===1){let i=e.nodeMap.get(r);i!==void 0&&(e.nodeMap.delete(r),e.srcToClone.get(i)===r&&e.srcToClone.delete(i)),e.styleMap.delete(r)}for(let i=r.firstChild;i;i=i.nextSibling)n.push(i)}}var So={attempts:0,served:0,reconciled:0};async function na(t,e,n){So.attempts++;try{let r=await vu(t,e,n);return r&&So.served++,r}catch{return null}}async function vu(t,e,n){let r=e.retained;if(!r||!r.clone||!r.styleMap||!r.srcToClone||n.reconcile||n.clip||n.captureSelection||r.clipWindow||t.scrollTop||t.scrollLeft||uu(t)||pu(r)||r.fontsCSS||Xn(n))return null;for(let u of n.plugins||[])if(u&&(typeof u.beforeSnap=="function"||typeof u.beforeClone=="function"||typeof u.resolveNode=="function"||typeof u.afterClone=="function"))return null;if(r.classPrefixCSS&&(r.classPrefixCSS.includes("::marker")||r.classPrefixCSS.includes("::first-line"))||n.excludeMode==="remove")return null;let i=t.ownerDocument||document,o=Ze(t);if(!o||mu(i,o))return null;let s=[];t:for(let u of e.dirtyRoots){if(!u.isConnected||u===t||!t.contains(u))return null;for(let p of e.dirtyRoots)if(p!==u&&p!==t&&p.contains(u))continue t;s.push(u)}if(!s.length)return null;n.__compressedAssets=r.__compressedAssets,n.__compressionDensity=r.__compressionDensity,n.__compressionRootTransform=r.rootTransform2D;for(let u of s){if(u.parentElement===t||u.matches?.(ea)||u.querySelector?.(ea)||hu(u,o))return null;let p=r.srcToClone.get(u);if(!p||!p.parentNode)return null;let h=new Map,d={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:h,options:n},m=qn(u,null),g=Wn(u),y;try{y=await ie(u,d,n)}finally{g(),m()}if(!y||y.nodeType!==1||y.querySelector?.("style[data-sd]")||(await _e(u,y,d,n),d.__pseudoCSS))return null;await Cn(y,d),Dn(y);try{await Rn(y,u,h)}catch{}if(await Promise.all([Un(y,n),zn(u,y,r.styleCache,n,h)]),n.compress)try{await Zn(y,n,h)}catch{}for(let[b,w]of h.entries())po(b,w);p.replaceWith(y),xu(p,r);for(let[b,w]of h.entries())r.nodeMap.set(b,w),r.srcToClone.set(w,b)}let a={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:r.nodeMap,options:n};for(let[u,p]of r.nodeMap.entries()){if(!p||p.nodeType!==1||!p.isConnected)continue;let h=r.styleMap.get(u);if(!h)continue;let d=wu(h);if(!d)continue;let m=null,g=!1;for(let y in d)if(m||=getComputedStyle(p),!yu(m.getPropertyValue(y),d[y])){g=!0;break}if(g){if(n.__compressedAssets?.has(u))return null;So.reconciled++,await lt(p,u,a,n)}}let c=Ge(r.styleMap);for(let[u,p]of r.styleMap.entries())Su(u),uo(u,p,c);let f=(r.classPrefixCSS||"")+Array.from(c.entries()).map(([u,p])=>`.${p}{${u}}`).join("");Jn(r.clone,n.__compressedAssets);let l=await tr({element:t,options:n,plugins:n.plugins,clone:r.clone,classCSS:f,styleCache:r.styleCache,nodeMap:r.nodeMap},{clipWindow:null,outerTransforms:r.outerTransforms,outerShadows:r.outerShadows,rootTransform2D:r.rootTransform2D,fontsCSS:r.fontsCSS||""});return n.__compressedSnapshot=Qn(r.clone,n.__compressedAssets),r.__compressedAssets=n.__compressedAssets,r.__compressionDensity=n.__compressionDensity,l}bt();var vo=new WeakMap,rr=new WeakMap,da=new WeakSet,xo=new WeakMap,ku=64,an=new Map,pa=["scroll","input","change","focusin","focusout","pointerdown","pointerup","pointercancel","keydown","keyup","beforetoggle","toggle"],Cu=["(prefers-color-scheme: dark)","(prefers-reduced-motion: reduce)","(prefers-contrast: more)","(forced-colors: active)","(inverted-colors: inverted)","(prefers-reduced-transparency: reduce)","(hover: hover)","(any-hover: hover)","(pointer: coarse)","(any-pointer: coarse)","(color-gamut: p3)","(dynamic-range: high)"];function Au(t){let e=t?.defaultView;return typeof e?.matchMedia!="function"?"":Cu.map(n=>{try{return e.matchMedia(n).matches?"1":"0"}catch{return"?"}}).join("")}function ra(t){let e=[];for(let n=t;n;){try{let r=n.getBoundingClientRect();e.push(r.x,r.y,r.width,r.height)}catch{e.push("?")}n.parentElement?n=n.parentElement:n=n.getRootNode?.()?.host||null}return e.join("|")}function oa(t,e){if(e.disposed||(an.delete(t),an.set(t,e),an.size<=ku))return;let[n,r]=an.entries().next().value;ha(n,r)}function ha(t,e){e.disposed=!0,an.delete(t),vo.delete(t);for(let n of e.observers)try{n.disconnect()}catch{}for(let n of pa)t.removeEventListener(n,e.onMediaDirty,!0);for(let n of e.trackedShadowRoots.keys())for(let r of Co)n.removeEventListener(r,e.onMediaDirty,!0);for(let[n,r]of e.trackedImages)n.removeEventListener("load",r),n.removeEventListener("error",r);e.trackedImages.clear(),e.trackedShadowRoots.clear(),e.images.length=0,e.controls.length=0,e.scrollNodes.length=0,e.observers.length=0,e.last=null,e.retained=null,e.retainedFrameDriven=!1}function ma(t){if(da.has(t))return!1;rr.delete(t);let e=[t],n=[],r=[];for(let i=0;i<e.length;i++){let o=e[i],s=[];o?.nodeType===1&&s.push(o);try{s.push(...o.querySelectorAll("*"))}catch{return!1}for(let a of s){a.shadowRoot&&e.push(a.shadowRoot);let c=String(a.localName||a.tagName||"").toLowerCase();if(/^(?:iframe|canvas|video|audio|object|embed|marquee|blink)$/.test(c)||c==="progress"&&!a.hasAttribute("value")||/^(?:animate|animatetransform|animatemotion|set)$/.test(c))return!1;let f="";if(c==="img"){r.push(a);try{f=a.currentSrc||a.src||""}catch{}}/^(?:input|textarea|select|option)$/.test(c)&&n.push(a);let l=a.getAttribute?.("style")||"",u=xo.get(a);if(f||l){if((!u||u.src!==f||u.style!==l)&&(u={src:f,style:l,animated:We(f)||We(l)},xo.set(a,u)),u.animated)return!1}else u&&xo.delete(a)}}return rr.set(t,{roots:e.slice(1),controls:n,images:r}),!0}function ko(t,e){if(!t.querySelectorAll)return!1;let n=rr.get(t);rr.delete(t);let r=new Set(n?.roots||[]);if(n&&(e.controls=n.controls,e.scannedImages=n.images),!n){let i=[t];for(let o=0;o<i.length;o++){let s=i[o];s.shadowRoot&&!r.has(s.shadowRoot)&&(r.add(s.shadowRoot),i.push(s.shadowRoot));for(let a of s.querySelectorAll("*"))a.shadowRoot&&!r.has(a.shadowRoot)&&(r.add(a.shadowRoot),i.push(a.shadowRoot))}}for(let[i,o]of e.trackedShadowRoots)if(!r.has(i)){try{o.disconnect()}catch{}for(let a of Co)i.removeEventListener(a,e.onMediaDirty,!0);e.trackedShadowRoots.delete(i);let s=e.observers.indexOf(o);s>=0&&e.observers.splice(s,1)}for(let i of r)if(!e.trackedShadowRoots.has(i))try{let o=new MutationObserver(e.markDirty);o.observe(i,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),o.__flush=e.markDirty,e.observers.push(o),e.trackedShadowRoots.set(i,o);for(let s of Co)i.addEventListener(s,e.onMediaDirty,{capture:!0,passive:!0});e.retained&&e.dirtyAll()}catch{}return!!n}var Co=["scroll","change","beforetoggle","toggle"];function or(t,e){return[t,...e.trackedShadowRoots.keys()]}function Ao(t,e){let n=e.scannedImages;if(e.scannedImages=null,!n){n=[],t.tagName==="IMG"&&n.push(t);for(let r of or(t,e))r.querySelectorAll&&n.push(...r.querySelectorAll("img"))}if(e.images=n,e.trackedImages.size){let r=new Set(n);for(let[i,o]of e.trackedImages)r.has(i)||(i.removeEventListener("load",o),i.removeEventListener("error",o),e.trackedImages.delete(i))}for(let r of n){if(r.complete||e.trackedImages.has(r))continue;let i=()=>{e.capturing&&(e.torn=!0),e.dirty=!0,e.dirtyRoots=null,r.removeEventListener("load",i),r.removeEventListener("error",i),e.trackedImages.delete(r)};e.trackedImages.set(r,i),r.addEventListener("load",i),r.addEventListener("error",i)}}function Mu(t){let e=new Map,n=new Map,r=new Map;for(let i of t)if(te(i))if(i.type==="attributes"){let o=e.get(i.target);o||e.set(i.target,o=new Map),o.has(i.attributeName)||o.set(i.attributeName,i.oldValue)}else if(i.type==="characterData")n.has(i.target)||n.set(i.target,i.oldValue);else if(i.type==="childList"){let o=r.get(i.target);o||r.set(i.target,o=new Map);for(let s of i.addedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)+1)}for(let s of i.removedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)-1)}}else return!0;for(let[i,o]of e)for(let[s,a]of o)if(i.getAttribute(s)!==a)return!0;for(let[i,o]of n)if(i.data!==o)return!0;for(let i of r.values())for(let o of i.values())if(o!==0)return!0;return!1}var Eu=/(?:^data:image\/(?:gif|apng)|\.(?:gif|apng)(?=[?#)'"\s;]|$))/i,Ie=t=>t&&(typeof t=="object"||typeof t=="function")?nr(t):"-";function _u(t,e=131072){if(t=String(t||"").trim(),!/^data:/i.test(t))return"";let n=t.indexOf(",");if(n<0)return"";let r=t.slice(0,n),i=t.slice(n+1);try{if(/;base64/i.test(r)){let o=Math.ceil(e/3)*4;return atob(i.slice(0,o-o%4))}return i.slice(0,e*3).replace(/%([0-9a-f]{2})/gi,(o,s)=>String.fromCharCode(parseInt(s,16))).slice(0,e)}catch{return""}}function Ru(t){let e=(t.match(/^data:([^;,]+)/i)?.[1]||"").toLowerCase();if(e==="image/gif"||e==="image/apng")return!0;if(!/image\/(?:png|webp|avif|svg\+xml)/.test(e))return!1;let n=_u(t);return e==="image/png"?n.includes("acTL"):e==="image/webp"?n.includes("ANIM")||n.includes("ANMF")||n.includes("VP8X")&&!!(n.charCodeAt(n.indexOf("VP8X")+8)&2):e==="image/avif"?n.includes("avis"):/<(?:animate|animateTransform|animateMotion|set)\b|@keyframes\b|animation(?:-name)?\s*:/i.test(n)}function ia(t){let e=String(t||"").trim();return e?Eu.test(e)?!0:/^data:/i.test(e)?Ru(e):!1:!1}function We(t){let e=String(t||"");if(ia(e))return!0;for(let n of e.matchAll(/url\(\s*(?:"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|([^)]*))\s*\)/gi))if(ia(n[1]??n[2]??n[3]))return!0;return!1}function sa(t,e=null){let n=t&&t.clone;if(!n)return!1;let r=e?e.map(i=>t.srcToClone?.get(i)).filter(Boolean):[n];for(let i of r)for(let o of ga(i))if(We(o.getAttribute?.("src"))||We(o.getAttribute?.("href"))||We(o.getAttribute?.("style"))||We(t.styleMap?.get(o)))return!0;return!1}function ga(t){let e=[];t&&t.nodeType===1&&e.push(t);try{e.push(...t.querySelectorAll("*"))}catch{}return e}function Mo(t,e){let n=[],r=new Set,i=o=>{o&&!r.has(o)&&(r.add(o),n.push(o))};t.matches?.("input,textarea,select,option")&&i(t);for(let o of or(t,e))try{for(let s of o.querySelectorAll("input,textarea,select,option"))i(s)}catch{}e.controls=n}function Eo(t,e){let n=[],r=new Set,i=(o,s=!1)=>{if(!(!o||r.has(o))){r.add(o);try{(s||o.scrollLeft||o.scrollTop||o.scrollWidth>o.clientWidth||o.scrollHeight>o.clientHeight)&&n.push(o)}catch{}}};for(let o=t;o;o=o.parentElement)i(o,!0);for(let o of or(t,e))for(let s of ga(o))i(s);e.scrollNodes=n}function aa(t,e){let n=t.ownerDocument||document,r=n.defaultView,i=[r?.location?.hash||"",Au(n),r?.innerWidth||0,r?.innerHeight||0,r?.devicePixelRatio||1,r?.screen?.orientation?.type||""];try{i.push(...[...n.adoptedStyleSheets||[]].map(Ie))}catch{}for(let l of e.trackedShadowRoots.keys())try{i.push("#shadow",...[...l.adoptedStyleSheets||[]].map(Ie))}catch{}let o=n.activeElement,s=n.fullscreenElement;(o?.contains(t)||t.contains(o))&&i.push(Ie(o)),(s?.contains(t)||t.contains(s))&&i.push(Ie(s));let a=[r?.scrollX||0,r?.scrollY||0];for(let l of e.scrollNodes)a.push(l.scrollLeft||0,l.scrollTop||0);let c=[];for(let l of e.controls){let u=String(l.localName||"").toLowerCase();u==="input"?c.push(l.type,Ve(l)?l.value.length:l.value,l.checked?1:0,l.indeterminate?1:0):u==="textarea"?c.push(l.value):u==="select"?c.push(l.selectedIndex,l.value):c.push(l.selected?1:0)}let f=[];for(let l of e.images){let u="";try{u=l.currentSrc||l.src||""}catch{}f.push(u,l.complete?1:0,l.naturalWidth||0,l.naturalHeight||0)}return{style:i.join("|"),scroll:a.join("|"),controls:c,images:f,frameDriven:e.retainedFrameDriven}}function Le(t,e,n){if(!t)return!1;let r=t[n],i=e[n];if(r===i)return!0;if(!Array.isArray(r)||r.length!==i.length)return!1;for(let o=0;o<r.length;o++)if(r[o]!==i[o])return!1;return!0}function ca(t,e){let n=new Set;for(let r of or(t,e))try{let i=r.getAnimations?.(r.nodeType===1?{subtree:!0}:void 0)||[];for(let o of i)n.add(o)}catch{}return[...n]}function la(t){return t.map(e=>[Ie(e),e.playState,Math.round((Number(e.currentTime)||0)*10),e.playbackRate].join(":")).join("|")}function Fu(t,e,n){if(!n||n.nodeType!==1)return null;if(n===t||t.contains(n))return t;for(let r of e.trackedShadowRoots.keys())if(r.contains(n))return r;return null}function Tu(t){let e={dirty:!0,pending:[],torn:!1,dirtyRoots:new Set,retained:null,retainedFrameDriven:!1,disposed:!1,capturing:!1,last:null,inflight:Promise.resolve(),observers:[],trackedShadowRoots:new Map,trackedImages:new Map,images:[],scannedImages:null,scrollNodes:[],controls:[],envEpoch:we(),styleEpoch:ee(),styleStamp:Je(t),outsideMutations:wn(t),geometry:null,renderState:null},n=()=>{e.dirty=!0,e.dirtyRoots=null},r=a=>{if(!e.dirtyRoots)return;let c=a&&(a.nodeType===1?a:a.parentElement);if(!c||c===t||!t.contains(c)||e.dirtyRoots.size>=12){e.dirtyRoots=null;return}e.dirtyRoots.add(c)},i=a=>{if(e.capturing){for(let c of a)e.pending.push(c);return}for(let c of a)te(c)&&(e.dirty=!0,r(c.target))},o=()=>{if(e.capturing){e.torn=!0;return}n()};e.dirtyAll=n;try{let a=new MutationObserver(i);a.observe(t,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),a.__flush=i,e.observers.push(a)}catch{}e.markDirty=i,e.onMediaDirty=o;try{for(let a of pa)t.addEventListener(a,o,{capture:!0,passive:!0})}catch{}return ko(t,e)||Mo(t,e),Eo(t,e),Ao(t,e),e}var $u=0,fa=new WeakMap;function nr(t){let e=fa.get(t);return e||(e="@"+ ++$u,fa.set(t,e)),e}function _o(t,e){let n=typeof t;if(n==="undefined")return null;if(t===null||n==="boolean"||n==="number"||n==="string")return JSON.stringify(t);if(n==="function"||n==="symbol")return n==="symbol"?null:JSON.stringify(nr(t));if(n!=="object")return null;if(typeof t.nodeType=="number")return JSON.stringify(nr(t));if(e.has(t))return null;e.add(t);try{if(Array.isArray(t)){let o=[];for(let s of t){let a=_o(s,e);if(a===null)return null;o.push(a)}return"["+o.join(",")+"]"}let r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)return JSON.stringify(nr(t));let i=[];for(let o of Object.keys(t).sort()){let s=t[o];if(s===void 0)continue;let a=_o(s,e);if(a===null)return null;i.push(JSON.stringify(o)+":"+a)}return"{"+i.join(",")+"}"}finally{e.delete(t)}}function ua(t,e){let{burst:n,invalidate:r,...i}=t||{};try{let o=_o(i,new Set);return o===null?null:`${(e||[]).map(Ie).join(",")}:${o}`}catch{return null}}function ya(t,e,n,r,i=null){let o=vo.get(t);o||(o=Tu(t),o.baselineSignature=ua(e,n.plugins),vo.set(t,o));let s=ua(e,n.plugins),a=async()=>{if(o.disposed)return r();let f=s===null||s!==o.baselineSignature;f&&s!==null?o.pendingSig===s?(o.baselineSignature=s,o.last=null,o.dirty=!0,o.dirtyRoots=null,o.pendingSig=null,f=!1):o.pendingSig=s:o.pendingSig=null,ko(t,o),Ao(t,o);for(let A of o.observers)A.__flush(A.takeRecords());Rt();let l=wn(t);o.dirty&&o.outsideMutations!==l&&o.dirtyAll(),o.outsideMutations=l;let u=t.getRootNode?.(),p=[...o.trackedShadowRoots.keys()];u?.nodeType===11&&!p.includes(u)&&p.push(u),xn(t.ownerDocument||document,p);let h=Je(t);o.styleStamp!==h&&(o.styleStamp=h,o.dirty||o.dirtyAll());let d=aa(t,o),m=ca(t,o);d.animation=la(m),o.renderState&&(!Le(o.renderState,d,"style")&&(Se(),o.dirtyAll()),Le(o.renderState,d,"scroll")||o.dirtyAll(),Le(o.renderState,d,"controls")||(ne(t),o.dirtyAll()),!Le(o.renderState,d,"images")&&!o.dirty&&o.dirtyAll());let g=we();o.envEpoch!==g&&(o.dirtyAll(),o.envEpoch=g);let y=ee();if(o.styleEpoch!==y&&(o.styleEpoch=y,!o.dirty)){let A=ra(t);o.geometry!==null&&A!==o.geometry&&(ne(t),o.dirtyAll()),o.geometry=A}n.invalidate&&o.dirtyAll();let b=!1,w=!!o.renderState&&!Le(o.renderState,d,"animation");try{let A=new Set;w&&m.length===0&&(A=null);for(let v of m){let M=v.playState==="running";if(!M&&!w)continue;M&&(b=!0),w=!0;let k=v.effect?.target;if(Fu(t,o,k)===t)A.add(k);else{A=null;break}}if(w&&A&&A.size&&o.retained){o.dirty=!0;for(let v of A)o.dirtyRoots&&o.dirtyRoots.add(v),ne(v)}else w&&!A&&o.dirtyAll()}catch{}let C=d.frameDriven,x=b||C;if(x&&(o.last=null),C&&o.dirtyAll(),!f&&!x&&!o.dirty&&o.last)return oa(t,o),o.last;o.capturing=!0;let S=null;try{let A=null,v=!1,M=null;if(!f&&o.dirty&&o.retained&&o.dirtyRoots&&o.dirtyRoots.size&&i){M=[...o.dirtyRoots];let k=await na(t,o,n);k&&(A=await i(k),v=!0)}if(A||(f||(n.__retain=k=>{let R=new Map;for(let[E,T]of k.nodeMap.entries())R.set(T,E);S={...k,srcToClone:R}}),A=await r()),!f&&!o.disposed){o.dirty=!1,o.dirtyRoots=new Set,S?(o.retained=S,o.retainedFrameDriven=sa(S),Mo(t,o),Eo(t,o)):v&&(o.retainedFrameDriven||=sa(o.retained,M),Mo(t,o),Eo(t,o));let k=aa(t,o);k.animation=la(ca(t,o));let R=["style","scroll","controls","images"];b||R.push("animation");let E=R.every(T=>Le(d,k,T));o.renderState=k,o.styleEpoch=ee(),o.styleStamp=Je(t),o.geometry=ra(t),o.renderState.frameDriven?(da.add(t),ha(t,o)):E?!x&&!o.renderState.frameDriven&&(o.last=A,oa(t,o)):(o.dirtyAll(),o.last=null)}return A}finally{n.__retain=void 0;for(let v of o.observers)for(let M of v.takeRecords())o.pending.push(M);Rt();let A=wn(t);(o.torn||Mu(o.pending)||A!==l)&&(o.dirtyAll(),o.last=null),o.outsideMutations=A,o.styleEpoch=ee(),o.styleStamp=Je(t),o.pending.length=0,o.torn=!1,o.capturing=!1,o.disposed||(ko(t,o),Ao(t,o))}},c=o.inflight.then(a,a);return o.inflight=c.catch(()=>{}),c}var ir=null;function Sa(t){ir=t}var Pu='button, a[href], [role="button"], input, select, summary, label, [tabindex]',Ro=!1,cn=null,Fo=new WeakMap,ba=!1;function xa(t,e){!Ro||!cn||e&&e.burst===!1||Fo.set(cn.control,{element:t,options:e&&typeof e=="object"?{...e}:e})}function va(t){let e={control:t};cn=e,setTimeout(()=>{cn===e&&(cn=null)},0)}function $o(t){let e=t.target,n=e&&(e.nodeType===1?e:e.parentElement);return n&&n.closest?n.closest(Pu):null}function wa(t){if(t.type==="keydown"&&t.key!=="Enter"&&t.key!==" ")return;let e=$o(t);e&&(va(e),To(t,!1))}function Nu(t){let e=$o(t);e&&va(e)}function To(t,e=!0){if(!ir||document.visibilityState==="hidden")return;let n=$o(t);if(!n||t.type==="pointerenter"&&t.target!==n)return;let r=Fo.get(n);if(r){if(!r.element.isConnected){Fo.delete(n);return}ir(r.element,r.options).catch(()=>{});return}e&&!ba&&(ba=!0,ir(document.body,{clip:"viewport",burst:!1}).catch(()=>{}))}function ka(){if(Ro||typeof document>"u"||typeof document.addEventListener!="function")return;Ro=!0;let t={capture:!0,passive:!0};document.addEventListener("pointerdown",wa,t),document.addEventListener("keydown",wa,t),document.addEventListener("click",Nu,t),document.addEventListener("pointerenter",To,t),document.addEventListener("focusin",To,t)}wt();function td(...t){return ho(...t),X}async function ed(t,e){if(typeof t!="string"||!t.trim())throw new Error("[snapdom.fromString] html string required");let n=document.createElement("div");J(n),n.style.cssText="position:fixed;left:-99999px;top:0;pointer-events:none;",n.innerHTML=t,document.body.appendChild(n);try{await pt();let r=Array.from(n.childNodes).some(o=>o.nodeType===3&&o.textContent.trim()),i=n.children.length===1&&!r?n.firstElementChild:n;return await Ho(i,{...e||{},burst:!1})}finally{n.remove()}}var nd="3.0.0",X=Object.assign(Ho,{plugins:td,fromString:ed,version:nd,preCapture:ka});Sa(Ho);var Uo=Symbol("snapdom.internal"),rd=Symbol("snapdom.internal.silent"),La=new Set(["png","jpeg","jpg","webp","svg"]);async function Ho(t,e){if(!t)throw new Error("Element cannot be null or undefined");let n=ta(e);n.element=t,n.invalidate&&Se(),zs(n,e&&e.plugins);let{stage:r,loweredBy:i}=Ds(n);n.needs=r,n.__needsLoweredBy=i;let o=$e(r,"render"),s=n.burst===!0||!Xn(n),a=typeof n.filter=="function"||!!n.excludePredicates||typeof n.excludeStyleProps=="function"||typeof n.fallbackURL=="function",f=o&&!n.captureSelection&&n.burst!==!1&&s&&!a&&ma(t);return f&&xa(t,e),n.snap||(n.snap={toPng:(l,u)=>X.toPng(l,u),toSvg:(l,u)=>X.toSvg(l,u)}),f?ya(t,e,n,()=>X.capture(t,n,Uo),l=>Ia(l,n)):X.capture(t,n,Uo)}X.capture=async(t,e,n)=>{if(n!==Uo)throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");if($e(e.needs||ft,"render")&&Y()){if(e.embedFonts)try{let o=t.ownerDocument||document,s=new Set;if(e.embedFonts==="auto"){try{for(let l of o.fonts)s.add(String(l.family).replace(/["']/g,"").toLowerCase())}catch{}if(s.size===0)throw null}let a=Pn(t);e.clip||(e.__fontUsage=a);let c=a.required,f=new Set([...c].map(l=>String(l).split("__")[0]).filter(Boolean));if(e.embedFonts==="auto"&&(f=new Set([...f].filter(l=>s.has(l.toLowerCase()))),f.size===0))throw null;await Nn(f,1,o)}catch{}let i=Array.from(t.querySelectorAll("canvas"));t.tagName==="CANVAS"&&i.unshift(t);for(let o of i)try{if(nn(o))continue;let s=o.getContext("2d",{willReadFrequently:!0});s&&s.getImageData(0,0,1,1)}catch(s){D(e,"safari canvas poke failed",s)}}let r=await Zs(t,e);return Ia(r,e)};async function Ia(t,e){let n=e.needs||ft,r=$e(n,"render"),i=_=>Us(n,e.__needsLoweredBy||[],_),o=typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement?t:null,s=o?null:t,a=()=>s??=o.toDataURL(),c=o||t;o&&(t="");let f=e.__compressedSnapshot,l=e.__compressionDensity;delete e.__compressedSnapshot,delete e.__compressedAssets;let u,p=e.meta||{},d=(Number.isFinite(e.width)||Number.isFinite(e.height))&&!Y(),m=d?Number.isFinite(e.width)?p.targetW/p.vbW:p.targetH/p.vbH:1,g=d?Number.isFinite(e.height)?p.targetH/p.vbH:p.targetW/p.vbW:1,y=_=>{if(o||!f?.size)return c;let L=p.vbW,$=p.vbH,F=_.crop;F&&(L=Math.max(1,Math.min(L,F.x+F.width)-Math.max(0,F.x)),$=Math.max(1,Math.min($,F.y+F.height)-Math.max(0,F.y)));let V=Number.isFinite(_.width),z=Number.isFinite(_.height);return(V&&z?Math.max(_.width/L,_.height/$):V?_.width/L*(F?Math.max(1,g/m):1):z?_.height/$*(F?Math.max(1,m/g):1):(_.scale||1)*Math.max(m,g))*(_.dpr||1)<=l?c:u??=Ys(a(),f)},b=async(_,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(De(),un));return $(c,{..._,...L||{},format:"png"})},w=()=>{if(!r)throw i("svgString");if(o)throw new Error("[snapdom] svgString: engine:'html-in-canvas' produces a raster capture; there is no serialized SVG");let _=t.indexOf(",");return _>=0?decodeURIComponent(t.slice(_+1)):""},C=_=>Object.defineProperty({..._||{},svgString:w},"url",r?{get:a,enumerable:!0}:{get(){throw i("export.url")},enumerable:!1,configurable:!0}),x={img:async(_,L)=>{if(o)return b(_,L);let{toImg:$}=await Promise.resolve().then(()=>(Oo(),Wo)),F={..._,...L||{}};return $(y(F),F)},svg:async(_,L)=>{if(o)return b(_,L);let{toSvg:$}=await Promise.resolve().then(()=>(Oo(),Wo)),F={..._,...L||{}};return $(y(F),F)},canvas:async(_,L)=>{let{toCanvas:$}=await Promise.resolve().then(()=>(Oe(),Fa)),F={..._,...L||{}};return $(y(F),F)},blob:async(_,L)=>{let{toBlob:$}=await Promise.resolve().then(()=>(Bo(),Ta)),F={..._,...L||{}};return $(y(F),F)},png:async(_,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(De(),un)),F={..._,...L||{},format:"png"};return $(y(F),F)},jpeg:async(_,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(De(),un)),F={..._,...L||{},format:"jpeg"};return $(y(F),F)},webp:async(_,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(De(),un)),F={..._,...L||{},format:"webp"};return $(y(F),F)},download:async(_,L)=>{let{download:$}=await Promise.resolve().then(()=>(Na(),Pa)),F={..._,...L||{}};return $(y(F),F)}};if(!r)for(let _ of Object.keys(x)){let L=_==="download"?"download()":`to${_.charAt(0).toUpperCase()}${_.slice(1)}()`;x[_]=async()=>{throw i(L)}}let S={};for(let _ of["img","svg","canvas","blob","png","jpeg","webp"])S[_]=async L=>x[_](e,{...E(_,L||{}),[rd]:!0});S.jpg=S.jpeg;let A=_=>Object.defineProperty({...e,..._},"options",{value:e,configurable:!0}),v=A({artifacts:e.__artifacts||null,export:C(),exports:S}),M=await Gn("defineExports",v),k=Object.assign({},...M.filter(_=>_&&typeof _=="object").reverse()),R={...x,...k};R.jpeg&&!R.jpg&&(R.jpg=(_,L)=>R.jpeg(_,L));function E(_,L){let $=L||{},F={...e,...$},V=typeof $.type=="string"?$.type.toLowerCase():"",z=typeof $.format=="string"?$.format.toLowerCase():La.has(V)?V:"";z&&(F.format=z==="jpg"?"jpeg":z),F.__explicitFormat=z?F.format:e.__explicitFormat??null,_==="blob"&&!F.__explicitFormat&&(F.format=o?"png":"svg"),F.type=F.format;let q=Z=>Z==="jpeg"||Z==="jpg"||Z==="webp";return[_,F.format,V].map(Z=>typeof Z=="string"?Z.toLowerCase():"").find(q)&&(F.backgroundColor==null||F.backgroundColor==="transparent")&&(F.backgroundColor="#ffffff"),F.scale!==1&&(Number.isFinite(F.width)||Number.isFinite(F.height))&&D(F,"width/height define the output size \u2014 scale is ignored when either is set"),F}let T=!1,N=Promise.resolve();async function O(_,L){let $=Object.freeze(L&&typeof L=="object"?{...L}:{}),F=async()=>{let z=R[_];if(!z)throw new Error(`[snapdom] Unknown export type: ${_}`);let q=E(_,$),B=A({artifacts:e.__artifacts||null,export:C({type:_,options:q,requestedOptions:$})}),Z=q.format,Mt=q.type;await Gn("beforeExport",B,{format:_,options:q});let Lt=q.format!==Z?q.format:q.type!==Mt?q.type:"",gt=typeof Lt=="string"?Lt.toLowerCase():"";La.has(gt)&&(q.format=gt==="jpg"?"jpeg":gt,q.type=q.format,q.__explicitFormat=q.format,/^(?:jpeg|webp)$/.test(q.format)&&(q.backgroundColor==null||q.backgroundColor==="transparent")&&(q.backgroundColor="#ffffff"));let st=await z(B,q);return await Gn("afterExport",B,{format:_,options:q,result:st}),T||(T=!0,await Nt("afterSnap",e)),st},V=N.then(F);return N=V.catch(()=>{}),V}let H={url:t,needs:n,warnings:e.__session&&e.__session.warnings||[],toRaw:()=>{if(!r)throw i("toRaw()");return a()},to:(_,L)=>O(_,L),toImg:_=>O("img",_),toSvg:_=>O("svg",_),toCanvas:_=>O("canvas",_),toBlob:_=>O("blob",_),toPng:_=>O("png",_),toJpg:_=>O("jpg",_),toWebp:_=>O("webp",_),download:_=>O("download",_)};r?o&&Object.defineProperty(H,"url",{get:a,enumerable:!0,configurable:!0}):Object.defineProperty(H,"url",{get(){throw i("url")},enumerable:!1,configurable:!0}),Object.defineProperty(H,"meta",r?{value:e.meta,enumerable:!0}:{get(){throw i("meta")},enumerable:!1,configurable:!0});for(let _ of Object.keys(R)){let L="to"+_.charAt(0).toUpperCase()+_.slice(1);H[L]||(H[L]=$=>O(_,$))}return H}X.toRaw=(t,e)=>X(t,e).then(n=>n.toRaw());X.toImg=(t,e)=>X(t,e).then(n=>n.toImg());X.toSvg=(t,e)=>X(t,e).then(n=>n.toSvg());X.toCanvas=(t,e)=>X(t,e).then(n=>n.toCanvas());X.toBlob=(t,e)=>X(t,e).then(n=>n.toBlob());X.toPng=(t,e)=>X(t,{...e,format:"png"}).then(n=>n.toPng());X.toJpg=(t,e)=>X(t,{...e,format:"jpeg"}).then(n=>n.toJpg());X.toWebp=(t,e)=>X(t,{...e,format:"webp"}).then(n=>n.toWebp());X.download=(t,e)=>X(t,e).then(n=>n.download());export{ft as DEFAULT_STAGE,Te as STAGES,Bs as assertNeeds,Wf as clearPlugins,mo as getGlobalPlugins,Ne as normalizePlugin,ho as registerPlugins,X as snapdom};
}`,ru=Math.max(1,Math.min(4,(typeof navigator<"u"&&navigator.hardwareConcurrency||2)-1)),Ft=null,ou=0,iu=0,ce=new Map;function ra(){for(let t of ce.values())t(void 0);if(ce.clear(),Array.isArray(Ft))for(let t of Ft)try{t?.terminate()}catch{}Ft=!1}function su(){let t,e=null;try{t=URL.createObjectURL(new Blob([nu],{type:"text/javascript"})),e=new Worker(t),e.onmessage=n=>{let r=ce.get(n.data.id);r&&(ce.delete(n.data.id),r(n.data.error?void 0:n.data.url??null))},e.onerror=ra}catch{e=null}return t&&URL.revokeObjectURL(t),e}function au(){if(Ft===!1)return!1;if(Ft===null){if(typeof Worker>"u"||typeof OffscreenCanvas>"u")return Ft=!1;Ft=[]}let t=ou++%ru;if(!Ft[t]){let e=su();if(!e)return ra(),!1;Ft[t]=e}return Ft[t]}var cu=5e3;function lu(t,e,n,r,i){let o=au();return o?new Promise(s=>{let a=++iu,c=setTimeout(()=>{ce.delete(a),s(void 0)},cu);ce.set(a,f=>{clearTimeout(c),s(f)});try{o.postMessage({id:a,dataURL:i?"":t,blob:i,srcLength:t.length,targetW:e,targetH:n,resFactor:na,quality:ea,mime:r})}catch{clearTimeout(c),ce.delete(a),s(void 0)}}):Promise.resolve(void 0)}async function So(t,e,n,r){if(typeof t!="string"||!t.startsWith("data:image")||t.startsWith("data:image/svg"))return null;e=Math.ceil(e),n=Math.ceil(n);let i=t.length+":"+t.slice(0,64)+t.slice(-64)+":"+e+"x"+n,o=P.compress,s=o.get(i);if(s?.source===t)return s.result;let a=Qn.get(i);if(a?.source===t&&a.cache===o)return a.promise;let c=(async()=>{let l=Qf(t),u=l==="image/jpeg"?"image/jpeg":l==="image/webp"?"image/webp":"image/png",p=eu(t);if(p&&p.w>0&&p.h>0&&!Qs(p.w,p.h,e,n))return null;if(t.length>=Jf){let S=await lu(t,e,n,u,r);if(S!==void 0)return S}let m;try{m=await Kf(t)}catch{return null}let d=m.naturalWidth||m.width,h=m.naturalHeight||m.height;if(!d||!h)return null;let g=Qs(d,h,e,n);if(!g)return null;let y=g*na,b=Math.max(1,Math.round(d*y)),w=Math.max(1,Math.round(h*y)),k=document.createElement("canvas");k.width=b,k.height=w;let x=k.getContext("2d");if(!x)return null;x.imageSmoothingEnabled=!0,x.imageSmoothingQuality="high",x.drawImage(m,0,0,b,w);try{let S=k.toDataURL(u,ea);if(typeof S=="string"&&S.startsWith("data:image")&&S.length<t.length)return S}catch{}return null})(),f={source:t,promise:c,cache:o};Qn.set(i,f);try{let l=await c;return Zf(o,i,t,l),l}finally{Qn.get(i)===f&&Qn.delete(i)}}async function fu(t,e,n=new Map,r={}){if(!e.compress)return{count:0,before:0,after:0};let i=Array.from(t.querySelectorAll("img"));t.tagName==="IMG"&&i.unshift(t);let o=0,s=0,a=0,c=async l=>{let u=l.getAttribute("src")||"";if(!u.startsWith("data:image")||u.startsWith("data:image/svg"))return;let p=parseFloat(l.dataset.snapdomWidth)||parseFloat(l.style.width)||l.width||0,m=parseFloat(l.dataset.snapdomHeight)||parseFloat(l.style.height)||l.height||0;if(!p||!m)return;let d=r.value||=wo(t,e),h=d.density*d.stretch(n.get(l)||l),g=await So(u,p*h,m*h,l.__snapdomBlob);g&&(o++,s+=u.length,a+=g.length,l.setAttribute("src",g),Jn(l,"attribute","src",u,g,e))},f=6;for(let l=0;l<i.length;l+=f)await Promise.allSettled(i.slice(l,l+f).map(c));return{count:o,before:s,after:a}}var uu=/^(cover|contain|(\d+(\.\d+)?%(\s+\d+(\.\d+)?%)?))$/;function du(t){let e=t.offsetWidth||t.getBoundingClientRect().width||0,n=t.offsetHeight||t.getBoundingClientRect().height||0;return{w:e,h:n}}async function pu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=[],o=[t,...t.querySelectorAll("*")];for(let f of o){let l=f.style&&f.style.backgroundImage;l&&l.includes("data:image")&&i.push(f)}let s=0,a=async f=>{let l=n.get(f);if(!l||!l.isConnected)return;let u;try{u=getComputedStyle(l)}catch{return}if((u.backgroundRepeat||"repeat").toLowerCase().split(",").some(v=>v.trim()!=="no-repeat"))return;let m=(f.style.backgroundSize||u.backgroundSize||"auto").toLowerCase();if(m.split(",").some(v=>!uu.test(v.trim())))return;let{w:d,h}=du(l);if(!d||!h)return;let g=Math.max(1,...(m.match(/\d+(?:\.\d+)?%/g)||[]).map(v=>parseFloat(v)/100)),y=r.value||=wo(t,e),b=y.density*y.stretch(l)*g,w=d*b,k=h*b,x=f.style.backgroundImage,S=[...x.matchAll(/url\((['"]?)(data:image\/[^)'"]+)\1\)/gi)],A=x;for(let v of S){let M=v[2];if(M.startsWith("data:image/svg"))continue;let C=await So(M,w,k);C&&(A=A.split(M).join(C),s++)}A!==x&&(f.style.setProperty("background-image",A,f.style.getPropertyPriority("background-image")),Jn(f,"style","background-image",x,f.style.backgroundImage,e))},c=6;for(let f=0;f<i.length;f+=c)await Promise.allSettled(i.slice(f,f+c).map(a));return{count:s}}async function hu(t,e,n=new Map,r={}){if(!e.compress)return{count:0};let i=Array.from(t.querySelectorAll("image"));t.localName==="image"&&i.unshift(t);let o=0,s=async c=>{let f=c.getAttribute("href")||(typeof c.getAttributeNS=="function"?c.getAttributeNS("http://www.w3.org/1999/xlink","href"):null);if(!f||!f.startsWith("data:image")||f.startsWith("data:image/svg"))return;let l=c.getAttribute("width")||"",u=c.getAttribute("height")||"";if(l.includes("%")||u.includes("%"))return;let p=n.get(c),m=p?W(p):c.style,d=(k,x)=>{if(/^\d+(?:\.\d+)?px$/.test(m?.[k]||""))return parseFloat(m[k]);if(/^\d+(?:\.\d+)?(?:px)?$/.test(x.trim()))return parseFloat(x);try{return p?.[k]?.baseVal?.value||0}catch{return 0}},h=d("width",l),g=d("height",u);if(!h||!g)return;let y=r.value||=wo(t,e),b=y.density*y.stretch(p||c),w=await So(f,h*b,g*b);w&&(c.setAttribute("href",w),Jn(c,"attribute","href",f,w,e),c.hasAttribute("xlink:href")&&(c.setAttributeNS(Js,"xlink:href",w),Jn(c,"attribute","xlink:href",f,w,e)),o++)},a=6;for(let c=0;c<i.length;c+=a)await Promise.allSettled(i.slice(c,c+a).map(s));return{count:o}}async function er(t,e,n){if(!e.compress)return;let r={};await fu(t,e,n,r),await pu(t,e,n,r),await hu(t,e,n,r)}ht();dt();wt();function mu(t,e){if(Y())return t;let n=t.indexOf("</style>");if(n===-1)return t;let r=/<style\b[^>]*>[\s\S]*?<\/style>/g,i=[],o=n,s;for(r.lastIndex=n;s=r.exec(t);)i.push({text:t.slice(o,s.index),intern:!0}),i.push({text:s[0],intern:!1}),o=r.lastIndex;i.push({text:t.slice(o),intern:!0});let a=new Map,c=/ style="([^"]*)"/g,f;for(let y of i)if(y.intern)for(c.lastIndex=0;f=c.exec(y.text);)a.set(f[1],(a.get(f[1])||0)+1);let l=0;for(let[y,b]of a)b>1&&(l+=(b-1)*y.length);if(l<2048||t.includes(" data-sdi="))return t;let u=gu(e,i.some(y=>!y.intern),t.includes("data-snapdom-asset"));if(u===null)return t;let p=new Map,m=0,d=[],h=(y,b)=>{if((a.get(b)||0)<2||u.has(b))return y;let w=p.get(b);return w===void 0&&(w="i"+(m++).toString(36),p.set(b,w),d.push(`[data-sdi="${w}"]{${b}}`)),` data-sdi="${w}"`},g="";for(let y of i)g+=y.intern?y.text.replace(c,h):y.text;return t.slice(0,n)+d.join("")+g}function gu(t,e,n){let r=new Set;if(!e&&!n)return r;if(!t||t.querySelector("[data-sdi]"))return null;let i=c=>{let f=c.getAttribute("style");f&&r.add(f)};if(n&&t.querySelectorAll("[data-snapdom-asset][style]").forEach(i),e)try{let c=f=>{for(let l of f){if(l.type===CSSRule.IMPORT_RULE||l.type===CSSRule.NAMESPACE_RULE)throw new Error("External or namespaced CSS");if(l.selectorText){if(/\[\s*style\b|data-sdi|\[[^\]]*\\|&/i.test(l.selectorText))throw new Error("Attribute-dependent or nested CSS");t.querySelectorAll(l.selectorText).forEach(i)}l.cssRules&&c(l.cssRules)}};for(let f of[...t.querySelectorAll("style")].slice(1)){let l=f.textContent||"";if(/@import\b/i.test(l))return null;let u=new CSSStyleSheet;u.replaceSync(l),c(u.cssRules)}}catch{return null}let o=new Set,s=document.createElement("div"),a=new XMLSerializer;for(let c of r){s.setAttribute("style",c);let f=a.serializeToString(s).match(/ style="([^"]*)"/);f&&o.add(f[1])}return o}async function nr(t,e){let{clipWindow:n,outerTransforms:r,outerShadows:i,rootTransform2D:o,fontsCSS:s}=e,a=t.options;if(t!==a){let{options:K,...tt}=t;t=Object.assign(a,tt),Object.defineProperty(t,"options",{value:t,configurable:!0})}let c,f;Is(t,s),await It("beforeRender",t);let l=W(t.element),u=t.element.getBoundingClientRect(),p=Math.max(1,I(t.element.offsetWidth||parseFloat(l.width)||u.width||1)),m=Math.max(1,I(t.element.offsetHeight||parseFloat(l.height)||u.height||1)),d=t.element.ownerDocument||document;if(!n&&(t.element===d.body||t.element===d.documentElement)&&!t.__pinned){let K=Math.max(t.element.scrollHeight||0,d.documentElement?.scrollHeight||0,d.body?.scrollHeight||0),tt=Math.max(t.element.scrollWidth||0,d.documentElement?.scrollWidth||0,d.body?.scrollWidth||0);K>0&&(m=Math.max(m,I(K))),tt>0&&(p=Math.max(p,I(tt)));try{let Q=(t.scrollbarCSS||"").length+(t.baseCSS||"").length+(t.fontsCSS||"").length+(t.classCSS||"").length,et=P.measureHints.get(t.element);if(et&&et.cssLen===Q&&et.w0===p&&et.docH===K&&et.docW===tt)et.csh>0&&(m=Math.max(m,I(et.csh))),et.csw>0&&(p=Math.max(p,I(et.csw)));else{let nt=d.createElement("div");J(nt),nt.style.cssText="position:absolute!important;left:-9999px!important;top:0!important;width:"+p+"px!important;overflow:visible!important;visibility:hidden!important;";let Qt=nt.attachShadow({mode:"open"}),Jt=d.createElement("style");Jt.textContent=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS,Qt.appendChild(Jt),Qt.appendChild(t.clone.cloneNode(!0)),d.body.appendChild(nt);let ze=nt.scrollHeight,Bt=nt.scrollWidth;d.body.removeChild(nt),P.measureHints.set(t.element,{cssLen:Q,w0:p,docH:K,docW:tt,csh:ze,csw:Bt}),ze>0&&(m=Math.max(m,I(ze))),Bt>0&&(p=Math.max(p,I(Bt)))}}catch{}}if(t.options?.excludeMode==="remove"||typeof t.options?.filter=="function"&&t.options.filterMode==="remove"){let K=po(t.element,t.options),tt=1,Q=po(t.element,{}),et=Math.max(2,m*.15);Number.isFinite(Q)&&Q>=m-et&&Number.isFinite(K)&&K>0&&(m=Math.max(1,Math.min(m,I(K+tt))))}if(t.options?.reconcile)try{let K=(t.scrollbarCSS||"")+t.baseCSS+"svg{overflow:visible;} foreignObject{overflow:visible;}"+t.classCSS;Ls(t.element,t.clone,K,t.nodeMap,p,m)}catch(K){console.warn("[snapdom] reconcile pass failed:",K)}let g=(K,tt=NaN)=>{let Q=typeof K=="string"?parseFloat(K):K;return Number.isFinite(Q)?Q:tt},y=g(t.options.width),b=g(t.options.height),w=n?I(n.width):p,k=n?I(n.height):m,x=w,S=k,A=Number.isFinite(y),v=Number.isFinite(b),M=k>0?w/k:1;A&&v?(x=Math.max(1,I(y)),S=Math.max(1,I(b))):A?(x=Math.max(1,I(y)),S=Math.max(1,I(x/(M||1)))):v&&(S=Math.max(1,I(b)),x=Math.max(1,I(S*(M||1))));let C=0,R=0,_=p,T=m;if(n){let K=0,tt=0;if(xo(t.element)){let Q=null;if(!r&&o&&Number.isFinite(o.a))Q={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0};else{let et=ae(t.element),nt=uo(l.transform&&l.transform!=="none"?l.transform:"",et);nt&&nt.is2D&&(Q={a:nt.a,b:nt.b,c:nt.c,d:nt.d,e:0,f:0})}if(Q&&!(Q.a===1&&Q.b===0&&Q.c===0&&Q.d===1)){let{ox:et,oy:nt}=an(l,p,m),Qt=Fe(p,m,Q,et,nt);K=Qt.minX,tt=Qt.minY}}C=I(n.x+K),R=I(n.y+tt),_=I(C+n.width),T=I(R+n.height)}else if(!r&&o&&Number.isFinite(o.a)){let K={a:o.a,b:o.b||0,c:o.c||0,d:o.d||1,e:0,f:0},tt=Fe(p,m,K,0,0);C=I(tt.minX),R=I(tt.minY),_=I(tt.maxX),T=I(tt.maxY)}else if(r&&xo(t.element)){let tt=l.transform&&l.transform!=="none"?l.transform:"",Q=ae(t.element),et=Yt({baseTransform:tt,rotate:Q.rotate||"0deg",scale:Q.scale,translate:Q.translate,width:p,height:m}),{ox:nt,oy:Qt}=an(l,p,m),Jt=et.is2D?et:new DOMMatrix(et.toString()),ze={a:Jt.a,b:Jt.b,c:Jt.c,d:Jt.d,e:0,f:0},Bt=Fe(p,m,ze,nt,Qt);C=I(Bt.minX),R=I(Bt.minY),_=I(Bt.maxX),T=I(Bt.maxY)}let N=oo(l),O=io(l),H=so(l),E=ao(l),L=co(l),$=u.width>0?(_-C)/u.width:1,F=u.height>0?(T-R)/u.height:1,V=i==="subtree"&&!n?ks(t.element,t.nodeMap,t.styleCache,$,F):{top:0,right:0,bottom:0,left:0},z=n?{top:0,right:0,bottom:0,left:0}:i?{top:I(Math.max(N.top,O.top,V.top)+H.top+E.top+L.bleed.top),right:I(Math.max(N.right,O.right,V.right)+H.right+E.right+L.bleed.right),bottom:I(Math.max(N.bottom,O.bottom,V.bottom)+H.bottom+E.bottom+L.bleed.bottom),left:I(Math.max(N.left,O.left,V.left)+H.left+E.left+L.bleed.left)}:{top:H.top,right:H.right,bottom:H.bottom,left:H.left};C=I(C-z.left),R=I(R-z.top),_=I(_+z.right),T=I(T+z.bottom);let q=Math.max(1,I(_-C)),B=Math.max(1,I(T-R)),Z="http://www.w3.org/2000/svg",_t=xo(t.element)?2:0,gt=I(_t+(r?0:1)),st=Math.ceil(q+gt*2),at=Math.ceil(B+gt*2),$t=I(-(I(C)-gt)),U=I(-(I(R)-gt)),G=Math.max(0,$t),j=Math.max(0,U),ut=I(st-Math.min(0,$t)),Et=I(at-Math.min(0,U)),yt=document.createElementNS(Z,"foreignObject");yt.setAttribute("x",String(Math.min(0,$t))),yt.setAttribute("y",String(Math.min(0,U))),yt.setAttribute("width",String(ut)),yt.setAttribute("height",String(Et)),yt.style.overflow="visible";let ue=document.createElement("style"),hn="svg{overflow:visible;} foreignObject{overflow:visible;} foreignObject>div{-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important;}";ue.textContent=(t.scrollbarCSS||"")+t.baseCSS+t.fontsCSS+hn+t.classCSS,yt.appendChild(ue);let Ue=document.createElement("div");Ue.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),Ue.style.cssText=`all:initial;box-sizing:border-box;display:block;overflow:visible;width:${ut}px;height:${Et}px`+(G!==0||j!==0?`;padding:${j}px 0 0 ${G}px !important`:""),Ue.appendChild(t.clone),yt.appendChild(Ue);let dr=new XMLSerializer().serializeToString(yt),Ot=A||v,pr=Object.freeze({w0:w,h0:k,vbW:st,vbH:at,targetW:x,targetH:S,contentX:I($t+(n?C:0)),contentY:I(U+(n?R:0)),clip:n?Object.freeze({x:I(C),y:I(R),width:w,height:k}):null});Object.defineProperty(a,"meta",{value:pr,enumerable:!0,writable:!1,configurable:!0});let hr=!Ot||Y()?st:A?x:I(st*(S/at)),mn=!Ot||Y()?at:v?S:I(at*(x/st)),Dt=parseFloat(W(d.documentElement)?.fontSize)||16;f=`<svg xmlns="${Z}" width="${hr}" height="${mn}" viewBox="0 0 ${st} ${at}" font-size="${Dt}px">`+mu(dr,yt)+"</svg>",c=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(f)}`,t.svgString=f,t.dataURL=c,a.__artifacts={classCSS:t.classCSS||"",fontsCSS:t.fontsCSS||"",baseCSS:t.baseCSS||"",scrollbarCSS:t.scrollbarCSS||""},await It("afterRender",t),t.clone=t.nodeMap=t.styleCache=t.svgString=null;let mr=[...document.querySelectorAll("#snapdom-sandbox")].find(zt);return mr&&mr.style.position==="absolute"&&mr.remove(),t.dataURL}function xo(t){return As(t)}function yu(t){let e=Array.isArray(t.plugins)?t.plugins:bo(),n=[];for(let r of e){let i=Le(r);i&&typeof i.resolveNode=="function"&&n.push(i.resolveNode.bind(i))}return n.length?n:null}async function oa(t,e){if(!t)throw new Error("Element cannot be null or undefined");e.__session=go(e.cache),delete e.__compressedAssets,delete e.__compressedSnapshot,delete e.__compressionDensity,e.__resolveNodeHooks=yu(e);let n=e;n.element=t,Object.defineProperty(n,"options",{value:n,configurable:!0});let r,i,o,s,a,c,f,l="",u=null,p=e.needs||ft,m=n.format,d=n.type;await It("beforeSnap",n);let h=n.format!==m&&/^(?:png|jpe?g|webp|svg)$/i.test(n.format),g=n.type!==d&&/^(?:png|jpe?g|webp|svg)$/i.test(n.type);if(h||g){let _=String(h?n.format:n.type).toLowerCase();n.format=_==="jpg"?"jpeg":_,n.type=n.format,n.__explicitFormat=n.format,/^(?:jpeg|webp)$/.test(n.format)&&(n.backgroundColor==null||n.backgroundColor==="transparent")&&(n.backgroundColor="#ffffff")}await It("beforeClone",n);let y=n.outerTransforms!==!1,b=n.outerShadows==="subtree"?"subtree":!!n.outerShadows,w=n.clip?Bn(n.element,n.clip):null;if(e.__styleShare===void 0)try{e.__styleShare=xi(n.element)&&(typeof n.element.getAnimations!="function"||n.element.getAnimations({subtree:!0}).length===0)}catch{e.__styleShare=!1}let k=fi(e.fast);for(;;){e.__slicer=k;let _=Xn(n.element,w);try{({clone:r,classCSS:i,classPrefixCSS:o,styleCache:s,nodeMap:a,reconcileRisk:c,clipWindow:f}=await Ws(n.element,n.options)),c>0&&!e.reconcile&&(xt(e.__session,"reconcile-risk","text in inline/table-cell elements kept natural width and may re-wrap; pass { reconcile: true } for pixel-exact layout"),P.warnedReconcile||(P.warnedReconcile=!0,console.warn("[snapdom] Text in inline/table-cell elements kept its natural width and may re-wrap under font-fallback rasterization. Pass { reconcile: true } for pixel-exact layout (roughly doubles capture time)."))),!y&&r&&(u=Cs(n.element,r)),!b&&r&&Ts(n.element,r,n.options),r&&(Ps(n.element,r,a),$s(n.element,r))}finally{_()}if(!k?.yielded||!e.__tornSinceStart?.())break;k=null,e.__session=go(e.cache)}if(e.__slicer=null,n.clone=r,n.classCSS=i,n.styleCache=s,n.nodeMap=a,await It("afterClone",n),!Pe(p,"render"))return null;if(k?.due()&&await k.pause(),Un(n.clone),n.options?.excludeMode==="remove"||typeof n.options?.filter=="function"&&n.options.filterMode==="remove")try{Ns(n.element,n.clone,n.styleCache,n.nodeMap)}catch(_){xt(e.__session,"shrink-failed","shrink pass failed",_),console.warn("[snapdom] shrink pass failed:",_)}try{await Tn(n.clone,n.element,n.nodeMap)}catch{}let x=_=>Promise.resolve().then(_),S=(async()=>{await Promise.all([x(()=>zn(n.clone,n.options)),x(()=>Vn(n.element,n.clone,n.styleCache,n.options,n.nodeMap))]);try{Bs(n.element,n.clone,n.nodeMap)}catch(_){xt(e.__session,"backdrop-filter-failed","backdrop-filter emulation failed",_),console.warn("[snapdom] backdrop-filter emulation failed:",_)}if(e.compress&&(e.__compressionClip=f,e.__compressionRootTransform=u,await x(()=>er(n.clone,n.options,n.nodeMap))),e.captureSelection)try{Gi(n.nodeMap)}catch(_){xt(e.__session,"selection-compose-failed","field selection compose failed",_)}})(),A=Promise.resolve();(e.embedFonts==="auto"?((n.element.ownerDocument||document).fonts?.size||0)>0:e.embedFonts)&&(A=x(async()=>{let _=n.element.ownerDocument||document,T=w?H=>{try{let E=H.getBoundingClientRect();return E.right>=w.left-200&&E.left<=w.right+200&&E.bottom>=w.top-200&&E.top<=w.bottom+200}catch{return!0}}:null,{required:N,usedCodepoints:O}=!w&&e.__fontUsage||Ln(n.element,T);if(e.embedFonts==="auto"){let H=new Set;try{for(let L of _.fonts)H.add(String(L.family).replace(/["']/g,"").toLowerCase())}catch{}if(!(H.size>0&&Array.from(N).some(L=>H.has(String(L).split("__")[0].toLowerCase()))))return}if(Y()){let H=new Set(Array.from(N).map(E=>String(E).split("__")[0]).filter(Boolean));await In(H,1,_)}l=await as({required:N,usedCodepoints:O,exclude:n.options.excludeFonts,localFonts:n.options.localFonts,useProxy:n.options.useProxy,fontStylesheetDomains:n.options.fontStylesheetDomains,iconMatchers:n.options.__iconMatchers,doc:_})})),await Promise.all([S,A]);let M=(n.options.plugins||[]).some(_=>_&&(typeof _.beforeRender=="function"||typeof _.afterRender=="function"));n.options.engine,k?.due()&&await k.pause();let C=n.clone;tr(C,e.__compressedAssets);let R=await nr(n,{clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,fontsCSS:l});if(e.__compressedSnapshot=Zn(C,e.__compressedAssets),typeof e.__retain=="function")try{e.__retain({clone:r,nodeMap:a,styleCache:s,styleMap:e.__session.styleMap,classPrefixCSS:o,fontsCSS:l,clipWindow:f,outerTransforms:y,outerShadows:b,rootTransform2D:u,__compressedAssets:e.__compressedAssets,__compressionDensity:e.__compressionDensity})}catch{}return R}dt();bt();var bu=new Set(["png","jpeg","jpg","webp","svg"]);function ia(t={}){let e=typeof t.type=="string"&&bu.has(t.type.toLowerCase())?t.type.toLowerCase():null,n=t.format??e??"png";n==="jpg"&&(n="jpeg");let r=t.format!=null?n:e==="jpg"?"jpeg":e,i=Vo(t.cache),o=t.exclude==null?[]:Array.isArray(t.exclude)?t.exclude:[t.exclude],s=[],a=[];for(let u of o)typeof u=="string"?s.push(u):typeof u=="function"?a.push(u):u!=null&&console.warn("[snapdom] Ignored invalid exclude entry (expected selector string or predicate):",u);let c=t.excludeMode??"hide",f=u=>{if(!u||u.nodeType!==1)return!1;if(u.getAttribute("data-capture")==="exclude")return!0;for(let p of Array.isArray(l.exclude)?l.exclude:[])try{if(u.matches(p))return!0}catch{}for(let p of Array.isArray(l.excludePredicates)?l.excludePredicates:[])try{if(p(u))return!0}catch{}if(typeof l.filter=="function")try{if(!l.filter(u))return!0}catch{}return!1},l={debug:t.debug??!1,scale:t.scale??1,exclude:s,excludePredicates:a.length?a:null,excludeMode:c,filter:t.filter??null,filterMode:t.filterMode??"hide",shouldExclude:f,placeholders:t.placeholders!==!1,captureSelection:t.captureSelection??!1,canvas:rt(t.canvas,"canvas")?t.canvas:null,embedFonts:t.embedFonts??"auto",iconFonts:Array.isArray(t.iconFonts)?t.iconFonts:t.iconFonts?[t.iconFonts]:[],__iconMatchers:Qi(t.iconFonts),localFonts:Array.isArray(t.localFonts)?t.localFonts:[],excludeFonts:t.excludeFonts??void 0,fontStylesheetDomains:Array.isArray(t.fontStylesheetDomains)?t.fontStylesheetDomains:[],fallbackURL:t.fallbackURL??void 0,cache:i,__styleShare:t.__styleShare,useProxy:typeof t.useProxy=="string"?t.useProxy:"",width:t.width??null,height:t.height??null,format:n,__explicitFormat:r,type:n,quality:t.quality??.92,dpr:t.dpr??(window.devicePixelRatio||1),backgroundColor:t.backgroundColor??(["jpeg","webp"].includes(n)?"#ffffff":null),filename:t.filename??"snapDOM",outerTransforms:t.outerTransforms??!0,outerShadows:t.outerShadows??!1,reconcile:t.reconcile??!1,burst:t.burst,fast:t.fast===!1||t.fast==="auto"?t.fast:!0,engine:t.engine,invalidate:t.invalidate??!1,__pinned:t.__pinned===!0,clip:t.clip??null,compress:t.compress!==!1,excludeStyleProps:t.excludeStyleProps??null,resolvePicturePlaceholders:t.resolvePicturePlaceholders!==!1};return l}St();te();ht();var sa="svg,iframe,canvas,video,audio,object,embed,slot,template,picture,style,pre";function wu(t){try{return t.matches?.("dialog,[popover]")||!!t.querySelector?.("dialog,[popover]")}catch{return!0}}var Su=/(?:^|;)\s*(?:-webkit-)?backdrop-filter:\s*(?!none(?:\s*!important)?(?:;|$))[^;]+/i;function xu(t){if(t.__usesBackdropFilter!==void 0)return t.__usesBackdropFilter;let e=!1;for(let n of t.styleMap.values())if(Su.test(n)){e=!0;break}return t.__usesBackdropFilter=e,e}function vu(t,e){let n=e.has("backdrop-filter")||e.has("-webkit-backdrop-filter");if(!n&&(n=(o=>/(?:^|;)\s*(?:-webkit-)?backdrop-filter\s*:/i.test(o.getAttribute?.("style")||""))(t),!n))try{n=!!t.querySelector?.('[style*="backdrop-filter" i]')}catch{n=!0}if(!n)return!1;let r=[t];t.querySelectorAll&&r.push(...t.querySelectorAll("*"));for(let i of r){let o=getComputedStyle(i),s=o.getPropertyValue("backdrop-filter")||o.getPropertyValue("-webkit-backdrop-filter");if(s&&s!=="none")return!0}return!1}var aa=new WeakMap;function ku(t){let e=Lt(),n=aa.get(t);if(n&&n.epoch===e)return n.leaky;let r=!1,i={budget:2e4},o=s=>{for(let a=0;a<s.length&&!r;a++){if(--i.budget<0){r=!0;return}let c=s[a],f=c.selectorText;if(f&&/[+~]|:has\(/.test(f)){r=!0;return}let l=c.style;if(l&&(l.counterReset||l.counterIncrement||l.counterSet||l.content&&l.content.includes("counter"))){r=!0;return}c.cssRules&&c.cssRules.length&&o(c.cssRules)}};try{for(let s of t.styleSheets){let a=null;try{a=s.cssRules}catch{r=!0}if(r)break;a&&o(a)}if(!r){let s=t.adoptedStyleSheets;if(Array.isArray(s))for(let a of s){if(r)break;try{o(a.cssRules)}catch{r=!0}}}}catch{r=!0}return aa.set(t,{epoch:e,leaky:r}),r}var Cu=1/16;function Au(t,e){if(t===e)return!0;if(!t.endsWith("px")||!e.endsWith("px"))return!1;let n=parseFloat(t),r=parseFloat(e);return Number.isFinite(n)&&Number.isFinite(r)&&Math.abs(n-r)<=Cu}var rr=new Map,Mu=["width","height","min-width","min-height"];function _u(t){let e=rr.get(t);if(e===void 0){e=null;for(let n of Mu){let r=t.match(new RegExp("(?:^|;)"+n+":([^;]+)"));r&&r[1].endsWith("px")&&((e||={})[n]=r[1])}rr.size>5e3&&rr.clear(),rr.set(t,e)}return e}function Eu(t){if(!(!t.classList||!t.classList.length))for(let e of Array.from(t.classList))/^c\d+$/.test(e)&&t.classList.remove(e)}function Ru(t,e){let n=[t];for(;n.length;){let r=n.pop();if(r.nodeType===1){let i=e.nodeMap.get(r);i!==void 0&&(e.nodeMap.delete(r),e.srcToClone.get(i)===r&&e.srcToClone.delete(i)),e.styleMap.delete(r)}for(let i=r.firstChild;i;i=i.nextSibling)n.push(i)}}var vo={attempts:0,served:0,reconciled:0};async function ca(t,e,n){vo.attempts++;try{let r=await Fu(t,e,n);return r&&vo.served++,r}catch{return null}}async function Fu(t,e,n){let r=e.retained;if(!r||!r.clone||!r.styleMap||!r.srcToClone||n.reconcile||n.clip||n.captureSelection||r.clipWindow||t.scrollTop||t.scrollLeft||wu(t)||xu(r)||r.fontsCSS||Kn(n))return null;for(let u of n.plugins||[])if(u&&(typeof u.beforeSnap=="function"||typeof u.beforeClone=="function"||typeof u.resolveNode=="function"||typeof u.afterClone=="function"))return null;if(r.classPrefixCSS&&(r.classPrefixCSS.includes("::marker")||r.classPrefixCSS.includes("::first-line"))||n.excludeMode==="remove")return null;let i=t.ownerDocument||document,o=en(t);if(!o||ku(i))return null;let s=[];t:for(let u of e.dirtyRoots){if(!u.isConnected||u===t||!t.contains(u))return null;for(let p of e.dirtyRoots)if(p!==u&&p!==t&&p.contains(u))continue t;s.push(u)}if(!s.length)return null;n.__compressedAssets=r.__compressedAssets,n.__compressionDensity=r.__compressionDensity,n.__compressionRootTransform=r.rootTransform2D;for(let u of s){if(u.parentElement===t||u.matches?.(sa)||u.querySelector?.(sa)||vu(u,o))return null;let p=r.srcToClone.get(u);if(!p||!p.parentNode)return null;let m=new Map,d={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:m,options:n},h=Xn(u,null),g=Dn(u),y;try{y=await se(u,d,n)}finally{g(),h()}if(!y||y.nodeType!==1||y.querySelector?.("style[data-sd]")||(await Re(u,y,d,n),d.__pseudoCSS))return null;await Mn(y,d),Un(y);try{await Tn(y,u,m)}catch{}if(await Promise.all([zn(y,n),Vn(u,y,r.styleCache,n,m)]),n.compress)try{await er(y,n,m)}catch{}for(let[b,w]of m.entries())mo(b,w);p.replaceWith(y),Ru(p,r);for(let[b,w]of m.entries())r.nodeMap.set(b,w),r.srcToClone.set(w,b)}let a={styleMap:r.styleMap,styleCache:r.styleCache,nodeMap:r.nodeMap,options:n};for(let[u,p]of r.nodeMap.entries()){if(!p||p.nodeType!==1||!p.isConnected)continue;let m=r.styleMap.get(u);if(!m)continue;let d=_u(m);if(!d)continue;let h=null,g=!1;for(let y in d)if(h||=getComputedStyle(p),!Au(h.getPropertyValue(y),d[y])){g=!0;break}if(g){if(n.__compressedAssets?.has(u))return null;vo.reconciled++,await lt(p,u,a,n)}}let c=Xe(r.styleMap);for(let[u,p]of r.styleMap.entries())Eu(u),ho(u,p,c);let f=(r.classPrefixCSS||"")+Array.from(c.entries()).map(([u,p])=>`.${p}{${u}}`).join("");tr(r.clone,n.__compressedAssets);let l=await nr({element:t,options:n,plugins:n.plugins,clone:r.clone,classCSS:f,styleCache:r.styleCache,nodeMap:r.nodeMap},{clipWindow:null,outerTransforms:r.outerTransforms,outerShadows:r.outerShadows,rootTransform2D:r.rootTransform2D,fontsCSS:r.fontsCSS||""});return n.__compressedSnapshot=Zn(r.clone,n.__compressedAssets),r.__compressedAssets=n.__compressedAssets,r.__compressionDensity=n.__compressionDensity,l}bt();var Co=new WeakMap,ir=new WeakMap,wa=new WeakSet,ko=new WeakMap,Tu=64,ln=new Map,Sa=["scroll","input","change","focusin","focusout","pointerdown","pointerup","pointercancel","keydown","keyup","beforetoggle","toggle"],$u=["(prefers-color-scheme: dark)","(prefers-reduced-motion: reduce)","(prefers-contrast: more)","(forced-colors: active)","(inverted-colors: inverted)","(prefers-reduced-transparency: reduce)","(hover: hover)","(any-hover: hover)","(pointer: coarse)","(any-pointer: coarse)","(color-gamut: p3)","(dynamic-range: high)"];function Pu(t){let e=t?.defaultView;return typeof e?.matchMedia!="function"?"":$u.map(n=>{try{return e.matchMedia(n).matches?"1":"0"}catch{return"?"}}).join("")}function la(t){let e=[];for(let n=t;n;){try{let r=n.getBoundingClientRect();e.push(r.x,r.y,r.width,r.height)}catch{e.push("?")}n.parentElement?n=n.parentElement:n=n.getRootNode?.()?.host||null}return e.join("|")}function fa(t,e){if(e.disposed||(ln.delete(t),ln.set(t,e),ln.size<=Tu))return;let[n,r]=ln.entries().next().value;xa(n,r)}function xa(t,e){e.disposed=!0,ln.delete(t),Co.delete(t);for(let n of e.observers)try{n.disconnect()}catch{}for(let n of Sa)t.removeEventListener(n,e.onMediaDirty,!0);for(let n of e.trackedShadowRoots.keys())for(let r of Mo)n.removeEventListener(r,e.onMediaDirty,!0);for(let[n,r]of e.trackedImages)n.removeEventListener("load",r),n.removeEventListener("error",r);e.trackedImages.clear(),e.trackedShadowRoots.clear(),e.images.length=0,e.controls.length=0,e.scrollNodes.length=0,e.observers.length=0,e.last=null,e.retained=null,e.retainedFrameDriven=!1}function va(t){if(wa.has(t))return!1;ir.delete(t);let e=[t],n=[],r=[];for(let i=0;i<e.length;i++){let o=e[i],s=[];o?.nodeType===1&&s.push(o);try{s.push(...o.querySelectorAll("*"))}catch{return!1}for(let a of s){a.shadowRoot&&e.push(a.shadowRoot);let c=String(a.localName||a.tagName||"").toLowerCase();if(/^(?:iframe|canvas|video|audio|object|embed|marquee|blink)$/.test(c)||c==="progress"&&!a.hasAttribute("value")||/^(?:animate|animatetransform|animatemotion|set)$/.test(c))return!1;let f="";if(c==="img"){r.push(a);try{f=a.currentSrc||a.src||""}catch{}}/^(?:input|textarea|select|option)$/.test(c)&&n.push(a);let l=a.getAttribute?.("style")||"",u=ko.get(a);if(f||l){if((!u||u.src!==f||u.style!==l)&&(u={src:f,style:l,animated:Oe(f)||Oe(l)},ko.set(a,u)),u.animated)return!1}else u&&ko.delete(a)}}return ir.set(t,{roots:e.slice(1),controls:n,images:r}),!0}function Ao(t,e){if(!t.querySelectorAll)return!1;let n=ir.get(t);ir.delete(t);let r=new Set(n?.roots||[]);if(n&&(e.controls=n.controls,e.scannedImages=n.images),!n){let i=[t];for(let o=0;o<i.length;o++){let s=i[o];s.shadowRoot&&!r.has(s.shadowRoot)&&(r.add(s.shadowRoot),i.push(s.shadowRoot));for(let a of s.querySelectorAll("*"))a.shadowRoot&&!r.has(a.shadowRoot)&&(r.add(a.shadowRoot),i.push(a.shadowRoot))}}for(let[i,o]of e.trackedShadowRoots)if(!r.has(i)){try{o.disconnect()}catch{}for(let a of Mo)i.removeEventListener(a,e.onMediaDirty,!0);e.trackedShadowRoots.delete(i);let s=e.observers.indexOf(o);s>=0&&e.observers.splice(s,1)}for(let i of r)if(!e.trackedShadowRoots.has(i))try{let o=new MutationObserver(e.markDirty);o.observe(i,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),o.__flush=e.markDirty,e.observers.push(o),e.trackedShadowRoots.set(i,o);for(let s of Mo)i.addEventListener(s,e.onMediaDirty,{capture:!0,passive:!0});e.retained&&e.dirtyAll()}catch{}return!!n}var Mo=["scroll","change","beforetoggle","toggle"];function sr(t,e){return[t,...e.trackedShadowRoots.keys()]}function _o(t,e){let n=e.scannedImages;if(e.scannedImages=null,!n){n=[],t.tagName==="IMG"&&n.push(t);for(let r of sr(t,e))r.querySelectorAll&&n.push(...r.querySelectorAll("img"))}if(e.images=n,e.trackedImages.size){let r=new Set(n);for(let[i,o]of e.trackedImages)r.has(i)||(i.removeEventListener("load",o),i.removeEventListener("error",o),e.trackedImages.delete(i))}for(let r of n){if(r.complete||e.trackedImages.has(r))continue;let i=()=>{e.capturing&&(e.torn=!0),e.dirty=!0,e.dirtyRoots=null,r.removeEventListener("load",i),r.removeEventListener("error",i),e.trackedImages.delete(r)};e.trackedImages.set(r,i),r.addEventListener("load",i),r.addEventListener("error",i)}}function ua(t){let e=new Map,n=new Map,r=new Map;for(let i of t)if(re(i))if(i.type==="attributes"){let o=e.get(i.target);o||e.set(i.target,o=new Map),o.has(i.attributeName)||o.set(i.attributeName,i.oldValue)}else if(i.type==="characterData")n.has(i.target)||n.set(i.target,i.oldValue);else if(i.type==="childList"){let o=r.get(i.target);o||r.set(i.target,o=new Map);for(let s of i.addedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)+1)}for(let s of i.removedNodes){if(s.nodeType!==3)return!0;o.set(s.data,(o.get(s.data)||0)-1)}}else return!0;for(let[i,o]of e)for(let[s,a]of o)if(i.getAttribute(s)!==a)return!0;for(let[i,o]of n)if(i.data!==o)return!0;for(let i of r.values())for(let o of i.values())if(o!==0)return!0;return!1}var Nu=/(?:^data:image\/(?:gif|apng)|\.(?:gif|apng)(?=[?#)'"\s;]|$))/i,We=t=>t&&(typeof t=="object"||typeof t=="function")?or(t):"-";function Lu(t,e=131072){if(t=String(t||"").trim(),!/^data:/i.test(t))return"";let n=t.indexOf(",");if(n<0)return"";let r=t.slice(0,n),i=t.slice(n+1);try{if(/;base64/i.test(r)){let o=Math.ceil(e/3)*4;return atob(i.slice(0,o-o%4))}return i.slice(0,e*3).replace(/%([0-9a-f]{2})/gi,(o,s)=>String.fromCharCode(parseInt(s,16))).slice(0,e)}catch{return""}}function Iu(t){let e=(t.match(/^data:([^;,]+)/i)?.[1]||"").toLowerCase();if(e==="image/gif"||e==="image/apng")return!0;if(!/image\/(?:png|webp|avif|svg\+xml)/.test(e))return!1;let n=Lu(t);return e==="image/png"?n.includes("acTL"):e==="image/webp"?n.includes("ANIM")||n.includes("ANMF")||n.includes("VP8X")&&!!(n.charCodeAt(n.indexOf("VP8X")+8)&2):e==="image/avif"?n.includes("avis"):/<(?:animate|animateTransform|animateMotion|set)\b|@keyframes\b|animation(?:-name)?\s*:/i.test(n)}function da(t){let e=String(t||"").trim();return e?Nu.test(e)?!0:/^data:/i.test(e)?Iu(e):!1:!1}function Oe(t){let e=String(t||"");if(da(e))return!0;for(let n of e.matchAll(/url\(\s*(?:"((?:\\.|[^"\\])*)"|'((?:\\.|[^'\\])*)'|([^)]*))\s*\)/gi))if(da(n[1]??n[2]??n[3]))return!0;return!1}function pa(t,e=null){let n=t&&t.clone;if(!n)return!1;let r=e?e.map(i=>t.srcToClone?.get(i)).filter(Boolean):[n];for(let i of r)for(let o of ka(i))if(Oe(o.getAttribute?.("src"))||Oe(o.getAttribute?.("href"))||Oe(o.getAttribute?.("style"))||Oe(t.styleMap?.get(o)))return!0;return!1}function ka(t){let e=[];t&&t.nodeType===1&&e.push(t);try{e.push(...t.querySelectorAll("*"))}catch{}return e}function Eo(t,e){let n=[],r=new Set,i=o=>{o&&!r.has(o)&&(r.add(o),n.push(o))};t.matches?.("input,textarea,select,option")&&i(t);for(let o of sr(t,e))try{for(let s of o.querySelectorAll("input,textarea,select,option"))i(s)}catch{}e.controls=n}function Ro(t,e){let n=[],r=new Set,i=(o,s=!1)=>{if(!(!o||r.has(o))){r.add(o);try{(s||o.scrollLeft||o.scrollTop||o.scrollWidth>o.clientWidth||o.scrollHeight>o.clientHeight)&&n.push(o)}catch{}}};for(let o=t;o;o=o.parentElement)i(o,!0);for(let o of sr(t,e))for(let s of ka(o))i(s);e.scrollNodes=n}function ha(t,e){let n=t.ownerDocument||document,r=n.defaultView,i=[r?.location?.hash||"",Pu(n),r?.innerWidth||0,r?.innerHeight||0,r?.devicePixelRatio||1,r?.screen?.orientation?.type||""];try{i.push(...[...n.adoptedStyleSheets||[]].map(We))}catch{}for(let l of e.trackedShadowRoots.keys())try{i.push("#shadow",...[...l.adoptedStyleSheets||[]].map(We))}catch{}let o=n.activeElement,s=n.fullscreenElement;(o?.contains(t)||t.contains(o))&&i.push(We(o)),(s?.contains(t)||t.contains(s))&&i.push(We(s));let a=[r?.scrollX||0,r?.scrollY||0];for(let l of e.scrollNodes)a.push(l.scrollLeft||0,l.scrollTop||0);let c=[];for(let l of e.controls){let u=String(l.localName||"").toLowerCase();u==="input"?c.push(l.type,qe(l)?l.value.length:l.value,l.checked?1:0,l.indeterminate?1:0):u==="textarea"?c.push(l.value):u==="select"?c.push(l.selectedIndex,l.value):c.push(l.selected?1:0)}let f=[];for(let l of e.images){let u="";try{u=l.currentSrc||l.src||""}catch{}f.push(u,l.complete?1:0,l.naturalWidth||0,l.naturalHeight||0)}return{style:i.join("|"),scroll:a.join("|"),controls:c,images:f,frameDriven:e.retainedFrameDriven}}function Ie(t,e,n){if(!t)return!1;let r=t[n],i=e[n];if(r===i)return!0;if(!Array.isArray(r)||r.length!==i.length)return!1;for(let o=0;o<r.length;o++)if(r[o]!==i[o])return!1;return!0}function ma(t,e){let n=new Set;for(let r of sr(t,e))try{let i=r.getAnimations?.(r.nodeType===1?{subtree:!0}:void 0)||[];for(let o of i)n.add(o)}catch{}return[...n]}function ga(t){return t.map(e=>[We(e),e.playState,Math.round((Number(e.currentTime)||0)*10),e.playbackRate].join(":")).join("|")}function Wu(t,e,n){if(!n||n.nodeType!==1)return null;if(n===t||t.contains(n))return t;for(let r of e.trackedShadowRoots.keys())if(r.contains(n))return r;return null}function Ou(t){let e={dirty:!0,pending:[],torn:!1,dirtyRoots:new Set,retained:null,retainedFrameDriven:!1,disposed:!1,capturing:!1,last:null,inflight:Promise.resolve(),observers:[],trackedShadowRoots:new Map,trackedImages:new Map,images:[],scannedImages:null,scrollNodes:[],controls:[],envEpoch:Se(),styleEpoch:Lt(),styleStamp:tn(t),outsideMutations:Ze(t),geometry:null,renderState:null},n=()=>{e.dirty=!0,e.dirtyRoots=null},r=a=>{if(!e.dirtyRoots)return;let c=a&&(a.nodeType===1?a:a.parentElement);if(!c||c===t||!t.contains(c)||e.dirtyRoots.size>=12){e.dirtyRoots=null;return}e.dirtyRoots.add(c)},i=a=>{if(e.capturing){for(let c of a)e.pending.push(c);return}for(let c of a)re(c)&&(e.dirty=!0,r(c.target))},o=()=>{if(e.capturing){e.torn=!0;return}n()};e.dirtyAll=n;try{let a=new MutationObserver(i);a.observe(t,{subtree:!0,childList:!0,attributes:!0,characterData:!0,attributeOldValue:!0,characterDataOldValue:!0}),a.__flush=i,e.observers.push(a)}catch{}e.markDirty=i,e.onMediaDirty=o;try{for(let a of Sa)t.addEventListener(a,o,{capture:!0,passive:!0})}catch{}return Ao(t,e)||Eo(t,e),Ro(t,e),_o(t,e),e}var Du=0,ya=new WeakMap;function or(t){let e=ya.get(t);return e||(e="@"+ ++Du,ya.set(t,e)),e}function Fo(t,e){let n=typeof t;if(n==="undefined")return null;if(t===null||n==="boolean"||n==="number"||n==="string")return JSON.stringify(t);if(n==="function"||n==="symbol")return n==="symbol"?null:JSON.stringify(or(t));if(n!=="object")return null;if(typeof t.nodeType=="number")return JSON.stringify(or(t));if(e.has(t))return null;e.add(t);try{if(Array.isArray(t)){let o=[];for(let s of t){let a=Fo(s,e);if(a===null)return null;o.push(a)}return"["+o.join(",")+"]"}let r=Object.getPrototypeOf(t);if(r!==Object.prototype&&r!==null)return JSON.stringify(or(t));let i=[];for(let o of Object.keys(t).sort()){let s=t[o];if(s===void 0)continue;let a=Fo(s,e);if(a===null)return null;i.push(JSON.stringify(o)+":"+a)}return"{"+i.join(",")+"}"}finally{e.delete(t)}}function ba(t,e){let{burst:n,invalidate:r,...i}=t||{};try{let o=Fo(i,new Set);return o===null?null:`${(e||[]).map(We).join(",")}:${o}`}catch{return null}}function Ca(t,e,n,r,i=null){let o=Co.get(t);o||(o=Ou(t),o.baselineSignature=ba(e,n.plugins),Co.set(t,o));let s=ba(e,n.plugins),a=async()=>{if(o.disposed)return r();let f=s===null||s!==o.baselineSignature;f&&s!==null?o.pendingSig===s?(o.baselineSignature=s,o.last=null,o.dirty=!0,o.dirtyRoots=null,o.pendingSig=null,f=!1):o.pendingSig=s:o.pendingSig=null,Ao(t,o),_o(t,o);for(let A of o.observers)A.__flush(A.takeRecords());At();let l=Ze(t);o.dirty&&o.outsideMutations!==l&&o.dirtyAll(),o.outsideMutations=l;let u=t.getRootNode?.(),p=[...o.trackedShadowRoots.keys()];u?.nodeType===11&&!p.includes(u)&&p.push(u),kn(t.ownerDocument||document,p);let m=tn(t);o.styleStamp!==m&&(o.styleStamp=m,o.dirty||o.dirtyAll());let d=ha(t,o),h=ma(t,o);d.animation=ga(h),o.renderState&&(!Ie(o.renderState,d,"style")&&(xe(),o.dirtyAll()),Ie(o.renderState,d,"scroll")||o.dirtyAll(),Ie(o.renderState,d,"controls")||(oe(t),o.dirtyAll()),!Ie(o.renderState,d,"images")&&!o.dirty&&o.dirtyAll());let g=Se();o.envEpoch!==g&&(o.dirtyAll(),o.envEpoch=g);let y=Lt();if(o.styleEpoch!==y&&(o.styleEpoch=y,!o.dirty)){let A=la(t);o.geometry!==null&&A!==o.geometry&&(oe(t),o.dirtyAll()),o.geometry=A}n.invalidate&&o.dirtyAll();let b=!1,w=!!o.renderState&&!Ie(o.renderState,d,"animation");try{let A=new Set;w&&h.length===0&&(A=null);for(let v of h){let M=v.playState==="running";if(!M&&!w)continue;M&&(b=!0),w=!0;let C=v.effect?.target;if(Wu(t,o,C)===t)A.add(C);else{A=null;break}}if(w&&A&&A.size&&o.retained){o.dirty=!0;for(let v of A)o.dirtyRoots&&o.dirtyRoots.add(v),oe(v)}else w&&!A&&o.dirtyAll()}catch{}let k=d.frameDriven,x=b||k;if(x&&(o.last=null),k&&o.dirtyAll(),!f&&!x&&!o.dirty&&o.last)return fa(t,o),o.last;o.capturing=!0;let S=null;try{let A=null,v=!1,M=null;if(!f&&o.dirty&&o.retained&&o.dirtyRoots&&o.dirtyRoots.size&&i){M=[...o.dirtyRoots];let C=await ca(t,o,n);C&&(A=await i(C),v=!0)}if(A||(f||(n.__retain=C=>{let R=new Map;for(let[_,T]of C.nodeMap.entries())R.set(T,_);S={...C,srcToClone:R}}),n.__tornSinceStart=()=>{for(let C of o.observers)for(let R of C.takeRecords())o.pending.push(R);return At(),o.torn||ua(o.pending)||Ze(t)!==l},A=await r()),!f&&!o.disposed){o.dirty=!1,o.dirtyRoots=new Set,S?(o.retained=S,o.retainedFrameDriven=pa(S),Eo(t,o),Ro(t,o)):v&&(o.retainedFrameDriven||=pa(o.retained,M),Eo(t,o),Ro(t,o));let C=ha(t,o);C.animation=ga(ma(t,o));let R=["style","scroll","controls","images"];b||R.push("animation");let _=R.every(T=>Ie(d,C,T));o.renderState=C,o.styleEpoch=Lt(),o.styleStamp=tn(t),o.geometry=la(t),o.renderState.frameDriven?(wa.add(t),xa(t,o)):_?!x&&!o.renderState.frameDriven&&(o.last=A,fa(t,o)):(o.dirtyAll(),o.last=null)}return A}finally{n.__retain=void 0,n.__tornSinceStart=void 0;for(let v of o.observers)for(let M of v.takeRecords())o.pending.push(M);At();let A=Ze(t);(o.torn||ua(o.pending)||A!==l)&&(o.dirtyAll(),o.last=null),o.outsideMutations=A,o.styleEpoch=Lt(),o.styleStamp=tn(t),o.pending.length=0,o.torn=!1,o.capturing=!1,o.disposed||(Ao(t,o),_o(t,o))}},c=o.inflight.then(a,a);return o.inflight=c.catch(()=>{}),c}var ar=null;function _a(t){ar=t}var Bu='button, a[href], [role="button"], input, select, summary, label, [tabindex]',To=!1,fn=null,$o=new WeakMap,Aa=!1;function Ea(t,e){!To||!fn||e&&e.burst===!1||$o.set(fn.control,{element:t,options:e&&typeof e=="object"?{...e}:e})}function Ra(t){let e={control:t};fn=e,setTimeout(()=>{fn===e&&(fn=null)},0)}function No(t){let e=t.target,n=e&&(e.nodeType===1?e:e.parentElement);return n&&n.closest?n.closest(Bu):null}function Ma(t){if(t.type==="keydown"&&t.key!=="Enter"&&t.key!==" ")return;let e=No(t);e&&(Ra(e),Po(t,!1))}function Uu(t){let e=No(t);e&&Ra(e)}function Po(t,e=!0){if(!ar||document.visibilityState==="hidden")return;let n=No(t);if(!n||t.type==="pointerenter"&&t.target!==n)return;let r=$o.get(n);if(r){if(!r.element.isConnected){$o.delete(n);return}ar(r.element,r.options).catch(()=>{});return}e&&!Aa&&(Aa=!0,ar(document.body,{clip:"viewport",burst:!1}).catch(()=>{}))}function Fa(){if(To||typeof document>"u"||typeof document.addEventListener!="function")return;To=!0;let t={capture:!0,passive:!0};document.addEventListener("pointerdown",Ma,t),document.addEventListener("keydown",Ma,t),document.addEventListener("click",Uu,t),document.addEventListener("pointerenter",Po,t),document.addEventListener("focusin",Po,t)}wt();function ad(...t){return yo(...t),X}async function cd(t,e){if(typeof t!="string"||!t.trim())throw new Error("[snapdom.fromString] html string required");let n=document.createElement("div");J(n),n.style.cssText="position:fixed;left:-99999px;top:0;pointer-events:none;",n.innerHTML=t,document.body.appendChild(n);try{await pt();let r=Array.from(n.childNodes).some(o=>o.nodeType===3&&o.textContent.trim()),i=n.children.length===1&&!r?n.firstElementChild:n;return await jo(i,{...e||{},burst:!1})}finally{n.remove()}}var ld="3.1.0",X=Object.assign(jo,{plugins:ad,fromString:cd,version:ld,preCapture:Fa});_a(jo);var zo=Symbol("snapdom.internal"),fd=Symbol("snapdom.internal.silent"),Ha=new Set(["png","jpeg","jpg","webp","svg"]);async function jo(t,e){if(!t)throw new Error("Element cannot be null or undefined");let n=ia(e);n.element=t,n.invalidate&&xe(),Xs(n,e&&e.plugins);let{stage:r,loweredBy:i}=js(n);n.needs=r,n.__needsLoweredBy=i;let o=Pe(r,"render"),s=n.burst===!0||!Kn(n),a=typeof n.filter=="function"||!!n.excludePredicates||typeof n.excludeStyleProps=="function"||typeof n.fallbackURL=="function",f=o&&!n.captureSelection&&n.burst!==!1&&s&&!a&&va(t);return f&&Ea(t,e),n.snap||(n.snap={toPng:(l,u)=>X.toPng(l,u),toSvg:(l,u)=>X.toSvg(l,u)}),f?Ca(t,e,n,()=>X.capture(t,n,zo),l=>za(l,n)):X.capture(t,n,zo)}X.capture=async(t,e,n)=>{if(n!==zo)throw new Error("[snapdom.capture] is internal. Use snapdom(...) instead.");if(Pe(e.needs||ft,"render")&&Y()){if(e.embedFonts)try{let o=t.ownerDocument||document,s=new Set;if(e.embedFonts==="auto"){try{for(let l of o.fonts)s.add(String(l.family).replace(/["']/g,"").toLowerCase())}catch{}if(s.size===0)throw null}let a=Ln(t);e.clip||(e.__fontUsage=a);let c=a.required,f=new Set([...c].map(l=>String(l).split("__")[0]).filter(Boolean));if(e.embedFonts==="auto"&&(f=new Set([...f].filter(l=>s.has(l.toLowerCase()))),f.size===0))throw null;await In(f,1,o)}catch{}let i=Array.from(t.querySelectorAll("canvas"));t.tagName==="CANVAS"&&i.unshift(t);for(let o of i)try{if(on(o))continue;let s=o.getContext("2d",{willReadFrequently:!0});s&&s.getImageData(0,0,1,1)}catch(s){D(e,"safari canvas poke failed",s)}}let r=await oa(t,e);return za(r,e)};async function za(t,e){let n=e.needs||ft,r=Pe(n,"render"),i=E=>qs(n,e.__needsLoweredBy||[],E),o=typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement?t:null,s=o?null:t,a=()=>s??=o.toDataURL(),c=o||t;o&&(t="");let f=e.__compressedSnapshot,l=e.__compressionDensity;delete e.__compressedSnapshot,delete e.__compressedAssets;let u,p=e.meta||{},d=(Number.isFinite(e.width)||Number.isFinite(e.height))&&!Y(),h=d?Number.isFinite(e.width)?p.targetW/p.vbW:p.targetH/p.vbH:1,g=d?Number.isFinite(e.height)?p.targetH/p.vbH:p.targetW/p.vbW:1,y=E=>{if(o||!f?.size)return c;let L=p.vbW,$=p.vbH,F=E.crop;F&&(L=Math.max(1,Math.min(L,F.x+F.width)-Math.max(0,F.x)),$=Math.max(1,Math.min($,F.y+F.height)-Math.max(0,F.y)));let V=Number.isFinite(E.width),z=Number.isFinite(E.height);return(V&&z?Math.max(E.width/L,E.height/$):V?E.width/L*(F?Math.max(1,g/h):1):z?E.height/$*(F?Math.max(1,h/g):1):(E.scale||1)*Math.max(h,g))*(E.dpr||1)<=l?c:u??=ta(a(),f)},b=async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn));return $(c,{...E,...L||{},format:"png"})},w=()=>{if(!r)throw i("svgString");if(o)throw new Error("[snapdom] svgString: engine:'html-in-canvas' produces a raster capture; there is no serialized SVG");let E=t.indexOf(",");return E>=0?decodeURIComponent(t.slice(E+1)):""},k=E=>Object.defineProperty({...E||{},svgString:w},"url",r?{get:a,enumerable:!0}:{get(){throw i("export.url")},enumerable:!1,configurable:!0}),x={img:async(E,L)=>{if(o)return b(E,L);let{toImg:$}=await Promise.resolve().then(()=>(Bo(),Do)),F={...E,...L||{}};return $(y(F),F)},svg:async(E,L)=>{if(o)return b(E,L);let{toSvg:$}=await Promise.resolve().then(()=>(Bo(),Do)),F={...E,...L||{}};return $(y(F),F)},canvas:async(E,L)=>{let{toCanvas:$}=await Promise.resolve().then(()=>(De(),Wa)),F={...E,...L||{}};return $(y(F),F)},blob:async(E,L)=>{let{toBlob:$}=await Promise.resolve().then(()=>(Ho(),Oa)),F={...E,...L||{}};return $(y(F),F)},png:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"png"};return $(y(F),F)},jpeg:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"jpeg"};return $(y(F),F)},webp:async(E,L)=>{let{rasterize:$}=await Promise.resolve().then(()=>(Be(),pn)),F={...E,...L||{},format:"webp"};return $(y(F),F)},download:async(E,L)=>{let{download:$}=await Promise.resolve().then(()=>(Ua(),Ba)),F={...E,...L||{}};return $(y(F),F)}};if(!r)for(let E of Object.keys(x)){let L=E==="download"?"download()":`to${E.charAt(0).toUpperCase()}${E.slice(1)}()`;x[E]=async()=>{throw i(L)}}let S={};for(let E of["img","svg","canvas","blob","png","jpeg","webp"])S[E]=async L=>x[E](e,{..._(E,L||{}),[fd]:!0});S.jpg=S.jpeg;let A=E=>Object.defineProperty({...e,...E},"options",{value:e,configurable:!0}),v=A({artifacts:e.__artifacts||null,export:k(),exports:S}),M=await Yn("defineExports",v),C=Object.assign({},...M.filter(E=>E&&typeof E=="object").reverse()),R={...x,...C};R.jpeg&&!R.jpg&&(R.jpg=(E,L)=>R.jpeg(E,L));function _(E,L){let $=L||{},F={...e,...$},V=typeof $.type=="string"?$.type.toLowerCase():"",z=typeof $.format=="string"?$.format.toLowerCase():Ha.has(V)?V:"";z&&(F.format=z==="jpg"?"jpeg":z),F.__explicitFormat=z?F.format:e.__explicitFormat??null,E==="blob"&&!F.__explicitFormat&&(F.format=o?"png":"svg"),F.type=F.format;let q=Z=>Z==="jpeg"||Z==="jpg"||Z==="webp";return[E,F.format,V].map(Z=>typeof Z=="string"?Z.toLowerCase():"").find(q)&&(F.backgroundColor==null||F.backgroundColor==="transparent")&&(F.backgroundColor="#ffffff"),F.scale!==1&&(Number.isFinite(F.width)||Number.isFinite(F.height))&&D(F,"width/height define the output size \u2014 scale is ignored when either is set"),F}let T=!1,N=Promise.resolve();async function O(E,L){let $=Object.freeze(L&&typeof L=="object"?{...L}:{}),F=async()=>{let z=R[E];if(!z)throw new Error(`[snapdom] Unknown export type: ${E}`);let q=_(E,$),B=A({artifacts:e.__artifacts||null,export:k({type:E,options:q,requestedOptions:$})}),Z=q.format,_t=q.type;await Yn("beforeExport",B,{format:E,options:q});let Wt=q.format!==Z?q.format:q.type!==_t?q.type:"",gt=typeof Wt=="string"?Wt.toLowerCase():"";Ha.has(gt)&&(q.format=gt==="jpg"?"jpeg":gt,q.type=q.format,q.__explicitFormat=q.format,/^(?:jpeg|webp)$/.test(q.format)&&(q.backgroundColor==null||q.backgroundColor==="transparent")&&(q.backgroundColor="#ffffff"));let st=await z(B,q);return await Yn("afterExport",B,{format:E,options:q,result:st}),T||(T=!0,await It("afterSnap",e)),st},V=N.then(F);return N=V.catch(()=>{}),V}let H={url:t,needs:n,warnings:e.__session&&e.__session.warnings||[],toRaw:()=>{if(!r)throw i("toRaw()");return a()},to:(E,L)=>O(E,L),toImg:E=>O("img",E),toSvg:E=>O("svg",E),toCanvas:E=>O("canvas",E),toBlob:E=>O("blob",E),toPng:E=>O("png",E),toJpg:E=>O("jpg",E),toWebp:E=>O("webp",E),download:E=>O("download",E)};r?o&&Object.defineProperty(H,"url",{get:a,enumerable:!0,configurable:!0}):Object.defineProperty(H,"url",{get(){throw i("url")},enumerable:!1,configurable:!0}),Object.defineProperty(H,"meta",r?{value:e.meta,enumerable:!0}:{get(){throw i("meta")},enumerable:!1,configurable:!0});for(let E of Object.keys(R)){let L="to"+E.charAt(0).toUpperCase()+E.slice(1);H[L]||(H[L]=$=>O(E,$))}return H}X.toRaw=(t,e)=>X(t,e).then(n=>n.toRaw());X.toImg=(t,e)=>X(t,e).then(n=>n.toImg());X.toSvg=(t,e)=>X(t,e).then(n=>n.toSvg());X.toCanvas=(t,e)=>X(t,e).then(n=>n.toCanvas());X.toBlob=(t,e)=>X(t,e).then(n=>n.toBlob());X.toPng=(t,e)=>X(t,{...e,format:"png"}).then(n=>n.toPng());X.toJpg=(t,e)=>X(t,{...e,format:"jpeg"}).then(n=>n.toJpg());X.toWebp=(t,e)=>X(t,{...e,format:"webp"}).then(n=>n.toWebp());X.download=(t,e)=>X(t,e).then(n=>n.download());export{ft as DEFAULT_STAGE,$e as STAGES,Vs as assertNeeds,Vf as clearPlugins,bo as getGlobalPlugins,Le as normalizePlugin,yo as registerPlugins,X as snapdom};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security (javascript.browser.security.insecure-innerhtml): User controlled data in a n.innerHTML is an anti-pattern that can lead to XSS vulnerabilities

Source: opengrep

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(Dom2Image): bump version 10.0.8

1 participant