@taole/giftstage 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gift-stage.cjs +3 -3
- package/dist/gift-stage.es.js +105 -84
- package/dist/plugin/playback-scope.d.ts +1 -0
- package/package.json +1 -1
package/dist/gift-stage.cjs
CHANGED
|
@@ -2017,7 +2017,7 @@ fn fs(input: VOut) -> @location(0) vec4f {
|
|
|
2017
2017
|
let color = textureSample(atlasTex, atlasSampler, input.uv);
|
|
2018
2018
|
return vec4f(color.rgb * input.color.a, color.a * input.color.a);
|
|
2019
2019
|
}
|
|
2020
|
-
`,tg=Object.freeze({submitted:!0});function $(C,A){return A?{submitted:!1,reason:C,message:A}:{submitted:!1,reason:C}}function Tg(C,A){if(!C.submitted)throw new Error(`${A} rejected (${C.reason})${C.message?`: ${C.message}`:""}`)}const $A=16,Ng=Object.freeze({parentA:0,parentB:1,parentC:2,parentD:3,translateX:4,translateY:5,opacity:6,frame:7,clipX0:8,clipY0:9,clipX1:10,clipY1:11,clipEnabled:12,metadataBase:13,atlasPage:14,motionTrackPlusOne:15});var pi=Object.defineProperty,Ki=(C,A,g)=>A in C?pi(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,p=(C,A,g)=>Ki(C,typeof A!="symbol"?A+"":A,g);const qC=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),mi=new Float32Array([0,0,1,1]),Lg=16*1024*1024,vQ=12,uI=8,Ji=uI*Float32Array.BYTES_PER_ELEMENT,bB=160,vC="svga-frame-table-instanced-premul";function QI(C,A){const g=Math.max(1,Math.floor(A));return Math.ceil(Math.max(0,C)/g)*g}const hg=class CA{constructor(A,g,I=!0){p(this,"type","webgpu"),p(this,"supportsAtomicFrameReplay",!0),p(this,"canvas"),p(this,"maxTextureSize"),p(this,"adapter"),p(this,"device"),p(this,"context"),p(this,"format"),p(this,"encoder",null),p(this,"passEncoder",null),p(this,"nextId",1),p(this,"buffers",new Map),p(this,"textures",new Map),p(this,"pipelines",new Map),p(this,"sampler"),p(this,"uniformBuffer"),p(this,"texturedBindGroupLayout"),p(this,"dualTexturedBindGroupLayout"),p(this,"instancedTextureBindGroupLayout"),p(this,"uniformOnlyBindGroupLayout"),p(this,"svgaFrameTableBindGroupLayout",null),p(this,"uniformSlotStride",256),p(this,"maxUniformSlots",8192),p(this,"uniformSlotIndex",0),p(this,"uniformShadow",new Uint8Array(this.uniformSlotStride*this.maxUniformSlots)),p(this,"uniformShadowDirtyMin",1/0),p(this,"uniformShadowDirtyMax",0),p(this,"lastDrawPipeline",null),p(this,"lastStencilRef",-1),p(this,"frameUsesStencil",!1),p(this,"lastVertexBufferId",-1),p(this,"lastIndexBufferId",-1),p(this,"uniformScratch160",new Float32Array(40)),p(this,"uniformScratch128",new Float32Array(32)),p(this,"svgaFrameTableUniformScratch",new Float32Array(bB/Float32Array.BYTES_PER_ELEMENT)),p(this,"svgaFrameTableUniformWords",new Uint32Array(this.svgaFrameTableUniformScratch.buffer)),p(this,"uniformOpacityScratch",new Float32Array(4)),p(this,"depthStencilTexture",null),p(this,"depthStencilView",null),p(this,"msaaColorTexture",null),p(this,"msaaColorView",null),p(this,"lastCanvasWidth",0),p(this,"lastCanvasHeight",0),p(this,"lastDepthStencilSampleCount",0),p(this,"msaaSampleCount",1),p(this,"wantAntialias"),p(this,"configuredCanvasWidth",0),p(this,"configuredCanvasHeight",0),p(this,"dummyTexture"),p(this,"dummyTextureView"),p(this,"videoUploadCanvas",null),p(this,"videoUploadCtx",null),p(this,"videoElementPreferCanvasBridge",!1),p(this,"videoFramePreferCanvasBridge",!1),p(this,"texturedBindGroupCache",new Map),p(this,"dualTexturedBindGroupCache",new Map),p(this,"instancedTextureBindGroupCache",new Map),p(this,"particleDataBindGroupCache",new Map),p(this,"motionDataBindGroupCache",new Map),p(this,"svgaFrameTableDataBindGroupCache",new Map),p(this,"instancedProjectionBuffer",null),p(this,"instancedStorageBuffer",null),p(this,"storageBindOffsetAlign",256),p(this,"instancedStorageRingOffset",0),p(this,"svgaCompactSlotStateUploadId",-1),p(this,"svgaCompactSlotStateStorageBase",-1),p(this,"svgaCompactSlotStateByteLength",0),p(this,"instancedStorageShadow",new Uint8Array(0)),p(this,"instancedStorageShadowDirtyMax",0),p(this,"instancedProjectionCache",new Float32Array(16)),p(this,"instancedProjectionValid",!1),p(this,"lastClipMaskStorageBase",-1),p(this,"lastClipMaskStorageByteLength",0),p(this,"lastInstancedTextureBindGroup",null),p(this,"performanceBufferWrites",0),p(this,"performanceBufferWriteBytes",0),p(this,"performanceStorageBufferWrites",0),p(this,"performanceStorageBufferWriteBytes",0),p(this,"performanceSubmittedDrawCalls",0),p(this,"performanceRejectedDrawCalls",0),p(this,"performanceSVGADynamicUploadWrites",0),p(this,"performanceSVGADynamicUploadBytes",0),p(this,"runtimeSubmittedDrawCalls",0),p(this,"runtimeRejectedDrawCalls",0),p(this,"currentDrawResult",$("invalid-command","WebGPU draw has not been submitted")),p(this,"currentDrawRecorded",!1),p(this,"runtimeUncapturedErrors",0),p(this,"runtimeBackendLosses",0),p(this,"runtimeDiagnosticHandler",null),p(this,"deviceLost",!1),p(this,"uncapturedErrorRequiresQuarantine",!1),p(this,"deviceLostHandler",null),p(this,"handleDeviceLoss",()=>{var B,Q;this.deviceLost=!0,this.runtimeBackendLosses++,(B=this.runtimeDiagnosticHandler)==null||B.call(this,{type:"backend-lost"}),this.passEncoder=null,this.encoder=null,this.buffers.clear(),this.textures.clear(),this.texturedBindGroupCache.clear(),this.dualTexturedBindGroupCache.clear(),this.instancedTextureBindGroupCache.clear(),this.svgaFrameTableDataBindGroupCache.clear(),this.particleDataBindGroupCache.clear(),this.motionDataBindGroupCache.clear(),(Q=this.deviceLostHandler)==null||Q.call(this)}),p(this,"handleUncapturedError",B=>{var Q;this.uncapturedErrorRequiresQuarantine=!0,this.runtimeUncapturedErrors++,(Q=this.runtimeDiagnosticHandler)==null||Q.call(this,{type:"gpu-uncaptured-error",message:B.error.message}),console.error("[WebGPU Error]",B.error.message)}),this.canvas=A,this.adapter=g,this.maxTextureSize=g.limits.maxTextureDimension2D,this.wantAntialias=I}async init(){this.device=await this.adapter.requestDevice(),this.device.lost.then(this.handleDeviceLoss),this.device.onuncapturederror=this.handleUncapturedError,this.context=this.canvas.getContext("webgpu"),this.format=navigator.gpu.getPreferredCanvasFormat(),this.msaaSampleCount=this.wantAntialias?4:1,this.configureCanvasContext(),this.sampler=this.device.createSampler({magFilter:"linear",minFilter:"linear"}),this.uniformSlotStride=this.device.limits.minUniformBufferOffsetAlignment,this.storageBindOffsetAlign=this.device.limits.minStorageBufferOffsetAlignment,this.uniformBuffer=this.device.createBuffer({size:this.uniformSlotStride*this.maxUniformSlots,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.uniformShadow=new Uint8Array(this.uniformSlotStride*this.maxUniformSlots),this.dummyTexture=this.device.createTexture({size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING}),this.dummyTextureView=this.dummyTexture.createView(),this.initPipelines()}configureCanvasContext(){this.context.configure({device:this.device,format:this.format,alphaMode:"premultiplied"}),this.configuredCanvasWidth=this.canvas.width,this.configuredCanvasHeight=this.canvas.height}ensureFrameAttachments(A,g,I){var B,Q;(this.lastCanvasWidth!==A||this.lastCanvasHeight!==g||this.lastDepthStencilSampleCount!==this.msaaSampleCount)&&((B=this.depthStencilTexture)==null||B.destroy(),this.depthStencilTexture=null,this.depthStencilView=null,(Q=this.msaaColorTexture)==null||Q.destroy(),this.msaaColorTexture=null,this.msaaColorView=null,this.msaaSampleCount>1&&(this.msaaColorTexture=this.device.createTexture({size:[A,g],format:this.format,sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.msaaColorView=this.msaaColorTexture.createView()),this.lastCanvasWidth=A,this.lastCanvasHeight=g,this.lastDepthStencilSampleCount=this.msaaSampleCount),I&&!this.depthStencilTexture&&(this.depthStencilTexture=this.device.createTexture({size:[A,g],format:"depth24plus-stencil8",sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.depthStencilView=this.depthStencilTexture.createView())}initPipelines(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:160}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});this.texturedBindGroupLayout=A;const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:160}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});this.dualTexturedBindGroupLayout=g,this.instancedTextureBindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});const I=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:128}}]});this.uniformOnlyBindGroupLayout=I,this.createTexturedPipeline("svga-batch-premul:none",lA.svgaBatchPremul,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"none"),this.createTexturedPipeline("vap:none",lA.vap,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"none"),this.createTexturedPipeline("vap-mix-overlay:none",lA.vapMixOverlay,g,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none",2),this.createTexturedPipeline("alpha-video:none",lA.alphaVideo,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none"),this.createTexturedPipeline("rgba-textured:none",lA.rgbaTextured,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none")}ensureStencilPipelines(){this.pipelines.has("svga-batch-premul:pass")||this.createTexturedPipeline("svga-batch-premul:pass",lA.svgaBatchPremul,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"pass"),this.pipelines.has("svga-batch-premul:test")||this.createTexturedPipeline("svga-batch-premul:test",lA.svgaBatchPremul,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"test"),this.pipelines.has("vap:pass")||this.createTexturedPipeline("vap:pass",lA.vap,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"pass"),this.pipelines.has("vap-mix-overlay:pass")||this.createTexturedPipeline("vap-mix-overlay:pass",lA.vapMixOverlay,this.dualTexturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"pass",2);for(const[A,g]of[["alpha-video:pass",lA.alphaVideo],["rgba-textured:pass",lA.rgbaTextured]])this.pipelines.has(A)||this.createTexturedPipeline(A,g,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"pass");this.pipelines.has("clip-mask:write")||this.createClipMaskPipeline(this.uniformOnlyBindGroupLayout)}ensureInstancedProjectionBuffer(){return this.instancedProjectionBuffer||(this.instancedProjectionBuffer=this.device.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedProjectionValid=!1),this.instancedProjectionBuffer}ensureInstancedStorageBuffer(){return this.instancedStorageBuffer||(this.instancedStorageBuffer=this.device.createBuffer({size:Lg,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST})),this.instancedStorageBuffer}ensureInstancedDataBindGroup(A,g){let I=A.instancedDataBindGroups;I||(I=new Map,A.instancedDataBindGroups=I);let B=I.get(g);return B||(B=this.device.createBindGroup({layout:A.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),offset:0,size:256}},{binding:1,resource:{buffer:this.ensureInstancedStorageBuffer(),offset:0,size:g}}]}),I.set(g,B),B)}ensureInstancedSvgaPipeline(A="none"){const g=`svga-instanced-premul:${A}`;let I=this.pipelines.get(g);return I||(this.createInstancedSvgaPipeline(g,lA.svgaInstancedPremul,A),I=this.pipelines.get(g)),I}ensureInstancedClipMaskPipeline(){const A="clip-mask-instanced:write";let g=this.pipelines.get(A);return g||(this.createInstancedClipMaskPipeline(),g=this.pipelines.get(A)),g}ensureInstancedAlphaPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`alpha-video-instanced:${A}`;let I=this.pipelines.get(g);return I||(this.createInstancedAlphaVideoPipeline(A),I=this.pipelines.get(g)),I}ensureInstancedVapPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`vap-instanced:${A}`;let I=this.pipelines.get(g);return I||(this.createVapInstancedPipeline(A),I=this.pipelines.get(g)),I}ensureSVGAFrameTableDataLayout(){return this.svgaFrameTableBindGroupLayout?this.svgaFrameTableBindGroupLayout:(this.svgaFrameTableBindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:bB}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:CA.SVGA_FRAME_TABLE_ROW_BYTES}},{binding:2,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:Ji}},{binding:3,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:32}},{binding:4,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:32}},{binding:5,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.SVGA_FRAME_TABLE_ROW_BYTES}}]}),this.svgaFrameTableBindGroupLayout)}ensureSVGAFrameTablePipeline(A="none"){const g=`${vC}:${A}`;let I=this.pipelines.get(g);if(I)return I;const B=this.ensureSVGAFrameTableDataLayout(),Q=this.device.createShaderModule({code:Yi}),E=A==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0;return I={pipeline:this.device.createRenderPipeline({label:`svga-frame-table-instanced:${A}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:E,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:B,textureCount:1},this.pipelines.set(g,I),I}ensureSVGAFrameTableMeshPipeline(A,g){const I=A==="svga-frame-table-clip-mask"?"write":g==="clear"?"none":g,B=`${A}:${I}`;let Q=this.pipelines.get(B);if(Q)return Q;const E=this.ensureSVGAFrameTableDataLayout(),i=this.device.createShaderModule({code:A==="svga-frame-table-shape-premul"?lA.svgaFrameTableShape:lA.svgaFrameTableClipMask}),e=A==="svga-frame-table-clip-mask";let t;return e?t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:255}:I==="test"?t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:I==="pass"&&(t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}),Q={pipeline:this.device.createRenderPipeline({label:`${A}:${I}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[E,this.instancedTextureBindGroupLayout]}),vertex:{module:i,entryPoint:"vs",buffers:A==="svga-frame-table-shape-premul"?[{arrayStride:36,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}]}]:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:i,entryPoint:"fs",targets:[{format:this.format,writeMask:e?0:GPUColorWrite.ALL,...e?{}:{blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}}]},primitive:{topology:"triangle-list"},depthStencil:t,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:E,textureCount:1},this.pipelines.set(B,Q),Q}ensureMotionSvgaPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`svga-motion-instanced-premul:${A}`;let I=this.pipelines.get(g);if(I)return I;this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.SVGA_INSTANCED_STRIDE}},{binding:2,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:32}},{binding:3,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:32}}]}),Q=this.device.createShaderModule({code:lA.svgaMotionInstancedPremul});return I={pipeline:this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:B,textureCount:1},this.pipelines.set(g,I),I}ensureParticlePipeline(A){const g=this.frameUsesStencil?"pass":"none",I=`particle-instanced:${A}:${g}`;let B=this.pipelines.get(I);if(B)return B;this.ensureInstancedProjectionBuffer();const Q=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:80}}]}),E=this.device.createShaderModule({code:lA.particleInstanced}),i=A==="additive";return B={pipeline:this.device.createRenderPipeline({label:`particle-instanced:${A}:${g}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[Q]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:i?{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcFactor:"one",dstFactor:"one"}}:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:Q,textureCount:0},this.pipelines.set(I,B),B}ensureParticleSpritePipeline(A){const g=this.frameUsesStencil?"pass":"none",I=`particle-sprite-instanced:${A}:${g}`;let B=this.pipelines.get(I);if(B)return B;this.ensureInstancedProjectionBuffer();const Q=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:128}}]}),E=this.device.createShaderModule({code:lA.particleSpriteInstanced}),i=A==="additive";return B={pipeline:this.device.createRenderPipeline({label:I,layout:this.device.createPipelineLayout({bindGroupLayouts:[Q,this.instancedTextureBindGroupLayout]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:i?{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcFactor:"one",dstFactor:"one"}}:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:Q,textureCount:1},this.pipelines.set(I,B),B}createInstancedSvgaPipeline(A,g,I){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.SVGA_INSTANCED_STRIDE}}]}),Q=this.instancedTextureBindGroupLayout,E=this.device.createShaderModule({code:g}),i=I==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:I==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,e=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[B,Q]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:i,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:e,bindGroupLayout:B,textureCount:1})}createInstancedClipMaskPipeline(){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.CLIP_MASK_INSTANCED_STRIDE}}]}),g=this.device.createShaderModule({code:lA.clipMaskInstanced}),I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:g,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:g,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask-instanced:write",{pipeline:I,bindGroupLayout:A,textureCount:0})}createVapInstancedPipeline(A){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.VAP_INSTANCED_STRIDE}}]}),I=this.instancedTextureBindGroupLayout,B=this.device.createShaderModule({code:lA.vapInstanced}),Q=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[g,I]}),vertex:{module:B,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:B,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}});this.pipelines.set(`vap-instanced:${A}`,{pipeline:Q,bindGroupLayout:g,textureCount:1})}createInstancedAlphaVideoPipeline(A){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.ALPHA_INSTANCED_STRIDE}}]}),I=this.instancedTextureBindGroupLayout,B=this.device.createShaderModule({code:lA.alphaVideoInstanced}),Q=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[g,I]}),vertex:{module:B,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:B,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}});this.pipelines.set(`alpha-video-instanced:${A}`,{pipeline:Q,bindGroupLayout:g,textureCount:1})}createTexturedPipeline(A,g,I,B,Q,E,i=1){const e=this.device.createShaderModule({code:g}),t=E==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:E==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,a=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[I]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:Q,attributes:B}]},fragment:{module:e,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:t,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:a,bindGroupLayout:I,textureCount:i})}createClipMaskPipeline(A){const g=this.device.createShaderModule({code:lA.clipMask}),I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:g,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:g,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask:write",{pipeline:I,bindGroupLayout:A,textureCount:0})}beginFrame(A={}){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");if(this.uncapturedErrorRequiresQuarantine)return $("validation-error","WebGPU reported an uncaptured error after the previous submission");try{const g=this.canvas.width,I=this.canvas.height;(g!==this.configuredCanvasWidth||I!==this.configuredCanvasHeight)&&this.configureCanvasContext();const B=A.stencil===!0;this.frameUsesStencil=B,this.ensureFrameAttachments(g,I,B),B&&this.ensureStencilPipelines(),this.encoder=this.device.createCommandEncoder();const Q=this.context.getCurrentTexture().createView(),E=this.msaaSampleCount>1&&this.msaaColorView?{view:this.msaaColorView,resolveTarget:Q,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"discard"}:{view:Q,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"};this.uniformSlotIndex=0,this.instancedStorageRingOffset=0,this.svgaCompactSlotStateUploadId=-1,this.svgaCompactSlotStateStorageBase=-1,this.svgaCompactSlotStateByteLength=0,this.instancedStorageShadowDirtyMax=0,this.lastClipMaskStorageBase=-1,this.lastClipMaskStorageByteLength=0,this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,this.lastInstancedTextureBindGroup=null;const i={colorAttachments:[E]};return B&&(i.depthStencilAttachment={view:this.depthStencilView,stencilClearValue:0,stencilLoadOp:"clear",stencilStoreOp:"discard",depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"discard"}),this.passEncoder=this.encoder.beginRenderPass(i),tg}catch(g){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(g))}}endFrame(){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");if(!this.passEncoder||!this.encoder)return $("invalid-command","WebGPU frame is not active");try{return this.passEncoder.end(),this.flushUniformShadow(),this.flushInstancedStorageShadow(),this.device.queue.submit([this.encoder.finish()]),this.passEncoder=null,this.encoder=null,tg}catch(A){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(A))}}abortFrame(){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");const A=this.uncapturedErrorRequiresQuarantine;if(this.passEncoder)try{this.passEncoder.end()}catch(g){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(g))}return this.passEncoder=null,this.encoder=null,this.instancedStorageShadowDirtyMax=0,this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,A?$("validation-error","WebGPU backend is quarantined after an uncaptured error"):(this.lastInstancedTextureBindGroup=null,this.svgaCompactSlotStateUploadId=-1,this.svgaCompactSlotStateStorageBase=-1,this.svgaCompactSlotStateByteLength=0,tg)}errorMessage(A){return A instanceof Error?A.message:String(A)}getPerformanceSnapshot(){return{bufferWrites:this.performanceBufferWrites,bufferWriteBytes:this.performanceBufferWriteBytes,storageBufferWrites:this.performanceStorageBufferWrites,storageBufferWriteBytes:this.performanceStorageBufferWriteBytes,submittedDrawCalls:this.performanceSubmittedDrawCalls,rejectedDrawCalls:this.performanceRejectedDrawCalls,svgaDynamicUploadWrites:this.performanceSVGADynamicUploadWrites,svgaDynamicUploadBytes:this.performanceSVGADynamicUploadBytes}}resetPerformanceSnapshot(){this.performanceBufferWrites=0,this.performanceBufferWriteBytes=0,this.performanceStorageBufferWrites=0,this.performanceStorageBufferWriteBytes=0,this.performanceSubmittedDrawCalls=0,this.performanceRejectedDrawCalls=0,this.performanceSVGADynamicUploadWrites=0,this.performanceSVGADynamicUploadBytes=0}getRuntimeDiagnosticsSnapshot(){return{submittedDrawCalls:this.runtimeSubmittedDrawCalls,rejectedDrawCalls:this.runtimeRejectedDrawCalls,webgpuUncapturedErrors:this.runtimeUncapturedErrors,backendLosses:this.runtimeBackendLosses}}setRuntimeDiagnosticHandler(A){this.runtimeDiagnosticHandler=A}setDeviceLostHandler(A){this.deviceLostHandler=A}recordSubmittedDraw(){this.currentDrawResult=tg,this.currentDrawRecorded=!0,this.performanceSubmittedDrawCalls++,this.runtimeSubmittedDrawCalls++}rejectSVGAFastPathDraw(){this.currentDrawRecorded=!0,this.currentDrawResult.submitted&&(this.currentDrawResult=$("invalid-command","WebGPU draw was rejected")),this.performanceRejectedDrawCalls++,this.runtimeRejectedDrawCalls++}writeBuffer(A,g,I,B,Q,E="generic"){const i=(ArrayBuffer.isView(I),I.byteLength),e=Number(B!=null?B:0),t=Number(Q!=null?Q:Math.max(0,i-e));this.performanceBufferWrites++,this.performanceBufferWriteBytes+=t,E==="storage"&&(this.performanceStorageBufferWrites++,this.performanceStorageBufferWriteBytes+=t),this.device.queue.writeBuffer(A,g,I,B,Q)}flushUniformShadow(){if(this.uniformShadowDirtyMax<=this.uniformShadowDirtyMin)return;const A=this.uniformShadow,g=this.uniformShadowDirtyMin,I=this.uniformShadowDirtyMax;this.writeBuffer(this.uniformBuffer,g,A.buffer,A.byteOffset+g,I-g),this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0}flushInstancedStorageShadow(){const A=this.instancedStorageShadowDirtyMax;if(A<=0)return;const g=this.instancedStorageShadow;this.writeBuffer(this.ensureInstancedStorageBuffer(),0,g.buffer,g.byteOffset,A,"storage"),this.instancedStorageShadowDirtyMax=0}writeInstancedStorageShadow(A,g,I){const B=A+I;if(this.instancedStorageShadow.byteLength<B){let Q=Math.max(256,this.instancedStorageShadow.byteLength);for(;Q<B;)Q=Math.min(Lg,Q*2);const E=new Uint8Array(Q);E.set(this.instancedStorageShadow),this.instancedStorageShadow=E}this.instancedStorageShadow.set(new Uint8Array(g.buffer,g.byteOffset,I),A),B>this.instancedStorageShadowDirtyMax&&(this.instancedStorageShadowDirtyMax=B)}writeUniformShadow(A,g,I){this.uniformShadow.set(new Uint8Array(g.buffer,g.byteOffset,I),A),A<this.uniformShadowDirtyMin&&(this.uniformShadowDirtyMin=A);const B=A+I;B>this.uniformShadowDirtyMax&&(this.uniformShadowDirtyMax=B)}ensureInstancedProjection(A){if(A.length<16)return;if(this.instancedProjectionValid){let I=!0;for(let B=0;B<16;B++)if(this.instancedProjectionCache[B]!==A[B]){I=!1;break}if(I)return}const g=this.ensureInstancedProjectionBuffer();this.instancedProjectionCache.set(A.length===16?A:A.subarray(0,16)),this.instancedProjectionValid=!0,this.writeBuffer(g,0,A.buffer,A.byteOffset,64)}gpuBufferUsage(A){let g=GPUBufferUsage.COPY_DST;return A==="vertex"?g|=GPUBufferUsage.VERTEX:A==="index"?g|=GPUBufferUsage.INDEX:A==="storage"?g|=GPUBufferUsage.STORAGE:g|=GPUBufferUsage.UNIFORM,g}bufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}mappedUploadView(A){if(A instanceof ArrayBuffer)return new Uint8Array(A);if(typeof SharedArrayBuffer!="undefined"&&A instanceof SharedArrayBuffer)return new Uint8Array(new Uint8Array(A));const g=A,I=new Uint8Array(g.buffer,g.byteOffset,g.byteLength);return typeof SharedArrayBuffer!="undefined"&&g.buffer instanceof SharedArrayBuffer?new Uint8Array(I):I}writeBufferSource(A,g,I){if(I instanceof ArrayBuffer){this.writeBuffer(A,g,I);return}if(typeof SharedArrayBuffer!="undefined"&&I instanceof SharedArrayBuffer){this.writeBuffer(A,g,new Uint8Array(new Uint8Array(I)));return}const B=I;if(typeof SharedArrayBuffer!="undefined"&&B.buffer instanceof SharedArrayBuffer){this.writeBuffer(A,g,new Uint8Array(new Uint8Array(B.buffer,B.byteOffset,B.byteLength)));return}this.writeBuffer(A,g,B.buffer,B.byteOffset,B.byteLength)}createSVGAFrameTable(A,g){var I,B;const Q=this.mappedUploadView(A);if(Q.byteLength<CA.SVGA_FRAME_TABLE_ROW_BYTES||Q.byteLength%CA.SVGA_FRAME_TABLE_ROW_BYTES!==0)throw new RangeError(`SVGA frame table byte length must be a positive multiple of ${CA.SVGA_FRAME_TABLE_ROW_BYTES}, got ${Q.byteLength}`);const E=Math.floor(g.spriteCount),i=Math.floor(g.frameCount),e=E*i;if(!Number.isSafeInteger(E)||!Number.isSafeInteger(i)||E<1||i<1||!Number.isSafeInteger(e)||e*CA.SVGA_FRAME_TABLE_ROW_BYTES!==Q.byteLength)throw new RangeError(`SVGA frame table dimensions do not match byte length: ${E}x${i}, ${Q.byteLength} bytes`);const t=(I=g.spriteMetadata)!=null?I:g.metadata,a=g.hybridSpriteMetadata;let o=null;if(t){const w=E*4,l=E*uI;if(t.length===w){o=new Float32Array(l);for(let F=0;F<E;F++){const d=F*4,y=F*uI;o.set(t.subarray(d,d+4),y),o[y+4]=F}}else{if(t.length!==l)throw new RangeError(`SVGA sprite metadata requires ${w} or ${l} floats, got ${t.length}`);o=t}}const s=(B=this.device.limits)==null?void 0:B.maxStorageBufferBindingSize;if(typeof s=="number"&&Number.isFinite(s)&&(Q.byteLength>s||o&&o.byteLength>s||a&&a.byteLength>s))throw new RangeError(`SVGA frame table exceeds maxStorageBufferBindingSize=${s}; use CPU/hybrid fallback`);const n=this.createBuffer(Q,"storage");let r,h;try{if(r=o?this.createBuffer(o,"storage"):void 0,a){if(a.length<II||a.length%II!==0)throw new RangeError("SVGA Hybrid sprite metadata must contain complete 12-float rows");h=this.createBuffer(a,"storage")}}catch(w){throw h&&this.deleteBuffer(h),r&&this.deleteBuffer(r),this.deleteBuffer(n),w}const c=g.atlasPageCount,D=Number.isFinite(c)&&c>0?Math.floor(c):1;return{backend:"webgpu",kind:"webgpu-buffer",buffer:n,...r?{spriteMetadataBuffer:r}:{},...h?{hybridSpriteMetadataBuffer:h}:{},spriteCount:E,frameCount:i,atlasPageCount:D,strideFloats:vQ,byteLength:Q.byteLength}}deleteSVGAFrameTable(A){var g;A.backend==="webgpu"&&(A.spriteMetadataBuffer&&A.spriteMetadataBuffer.id!==A.buffer.id&&this.deleteBuffer(A.spriteMetadataBuffer),A.hybridSpriteMetadataBuffer&&A.hybridSpriteMetadataBuffer.id!==A.buffer.id&&A.hybridSpriteMetadataBuffer.id!==((g=A.spriteMetadataBuffer)==null?void 0:g.id)&&this.deleteBuffer(A.hybridSpriteMetadataBuffer),this.deleteBuffer(A.buffer))}createBuffer(A,g){const I=this.mappedUploadView(A),B=this.device.createBuffer({size:Math.max(I.byteLength,4),usage:this.gpuBufferUsage(g),mappedAtCreation:!0});new Uint8Array(B.getMappedRange()).set(I),B.unmap();const Q=this.nextId++;return this.buffers.set(Q,{buffer:B,usage:g}),{id:Q,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=Math.max(0,Math.floor(I)),E=this.bufferSourceByteLength(g),i=Math.max(4,Q+E);i>B.buffer.size&&(B.buffer.destroy(),B.buffer=this.device.createBuffer({size:i,usage:this.gpuBufferUsage(B.usage)}),B.usage==="vertex"&&this.lastVertexBufferId===A.id&&(this.lastVertexBufferId=-1),B.usage==="index"&&this.lastIndexBufferId===A.id&&(this.lastIndexBufferId=-1)),this.writeBufferSource(B.buffer,Q,g)}deleteBuffer(A){const g=this.buffers.get(A.id);if(g){g.buffer.destroy(),this.buffers.delete(A.id),this.motionDataBindGroupCache.clear();for(const I of Array.from(this.svgaFrameTableDataBindGroupCache.keys()))I.split(":").includes(String(A.id))&&this.svgaFrameTableDataBindGroupCache.delete(I);for(const I of Array.from(this.particleDataBindGroupCache.keys()))I.split(":").includes(String(A.id))&&this.particleDataBindGroupCache.delete(I)}}copyHtmlVideoToTextureDirect(A,g,I,B){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A},[g,I]),!0}catch(Q){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video>) failed; using canvas bridge.",Q),!1}}copyVideoFrameToTextureDirect(A,g,I,B){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A},[g,I]),!0}catch(Q){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame) failed; using canvas bridge.",Q),!1}}drawVideoLikeSourceToTexture(A,g,I,B){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const Q=this.videoUploadCanvas,E=this.videoUploadCtx;E&&((Q.width!==g||Q.height!==I)&&(Q.width=g,Q.height=I),E.drawImage(B,0,0,g,I),this.device.queue.copyExternalImageToTexture({source:Q,flipY:!0},{texture:A},[g,I]))}copyImageSourceToTexture(A,g,I,B,Q=!1){if(typeof VideoFrame!="undefined"&&B instanceof VideoFrame){const E=B,i=E.displayWidth||E.codedWidth,e=E.displayHeight||E.codedHeight;if(!i||!e||!g||!I||this.copyVideoFrameToTextureDirect(A,g,I,E))return;this.drawVideoLikeSourceToTexture(A,g,I,E);return}if(B instanceof HTMLVideoElement){const E=B,i=E.videoWidth,e=E.videoHeight;if(E.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!i||!e||!g||!I)return;if(E.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTexture(A,g,I,E);return}if(this.copyHtmlVideoToTextureDirect(A,g,I,E))return;this.drawVideoLikeSourceToTexture(A,g,I,E);return}this.device.queue.copyExternalImageToTexture({source:B},{texture:A,premultipliedAlpha:Q},[g,I])}createTexture(A,g){var I,B;const Q=(I=g.width)!=null?I:1,E=(B=g.height)!=null?B:1,i=this.device.createTexture({size:[Q,E],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});if(A instanceof ArrayBuffer){const t=Q*4,a=Math.ceil(t/256)*256;if(a===t||E===1)this.device.queue.writeTexture({texture:i},A,{bytesPerRow:t},[Q,E]);else{const o=new Uint8Array(A),s=new Uint8Array(a*E);for(let n=0;n<E;n++)s.set(o.subarray(n*t,(n+1)*t),n*a);this.device.queue.writeTexture({texture:i},s,{bytesPerRow:a},[Q,E])}}else this.copyImageSourceToTexture(i,Q,E,A,g.premultiplyAlpha===!0);const e=this.nextId++;return this.textures.set(e,{texture:i,view:i.createView(),width:Q,height:E}),{id:e,width:Q,height:E}}createEmptyTexture(A,g,I={}){const B=Math.max(1,Math.floor(A)),Q=Math.max(1,Math.floor(g)),E=this.device.createTexture({size:[B,Q],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),i=this.nextId++;return this.textures.set(i,{texture:E,view:E.createView(),width:B,height:Q}),{id:i,width:B,height:Q}}updateTexture(A,g){const I=this.textures.get(A.id);I&&this.copyImageSourceToTexture(I.texture,I.width,I.height,g)}updateTextureRegion(A,g,I,B,Q,E){const i=this.textures.get(A.id);if(!i)return;const e={texture:i.texture,origin:{x:Math.floor(I),y:Math.floor(B)}};if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const s=g,n=s.displayWidth||s.codedWidth,r=s.displayHeight||s.codedHeight;if(!n||!r)return;const h=Q!=null?Q:n,c=E!=null?E:r;if(h!==n||c!==r){this.drawVideoLikeSourceToTextureRegion(i.texture,h,c,s,e.origin.x,e.origin.y);return}if(this.copyVideoFrameToTextureRegionDirect(i.texture,n,r,s,e.origin.x,e.origin.y))return;this.drawVideoLikeSourceToTextureRegion(i.texture,n,r,s,e.origin.x,e.origin.y);return}if(g instanceof HTMLVideoElement){const s=g,n=s.videoWidth,r=s.videoHeight;if(s.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!n||!r)return;const h=Q!=null?Q:n,c=E!=null?E:r;if(h!==n||c!==r){this.drawVideoLikeSourceToTextureRegion(i.texture,h,c,s,e.origin.x,e.origin.y);return}if(s.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(i.texture,n,r,s,e.origin.x,e.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(i.texture,n,r,s,e.origin.x,e.origin.y))return;this.drawVideoLikeSourceToTextureRegion(i.texture,n,r,s,e.origin.x,e.origin.y);return}const t=g,a=Q!=null?Q:t.width,o=E!=null?E:t.height;if(a!==t.width||o!==t.height){this.drawVideoLikeSourceToTextureRegion(i.texture,a,o,t,e.origin.x,e.origin.y);return}this.device.queue.copyExternalImageToTexture({source:t},e,[t.width,t.height])}copyHtmlVideoToTextureRegionDirect(A,g,I,B,Q,E){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]),!0}catch(i){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video> region) failed; using canvas bridge.",i),!1}}copyVideoFrameToTextureRegionDirect(A,g,I,B,Q,E){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]),!0}catch(i){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame region) failed; using canvas bridge.",i),!1}}drawVideoLikeSourceToTextureRegion(A,g,I,B,Q,E){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const i=this.videoUploadCanvas,e=this.videoUploadCtx;e&&((i.width!==g||i.height!==I)&&(i.width=g,i.height=I),e.drawImage(B,0,0,g,I),this.device.queue.copyExternalImageToTexture({source:i,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]))}deleteTexture(A){const g=this.textures.get(A.id);if(g){g.texture.destroy(),this.textures.delete(A.id),this.texturedBindGroupCache.delete(A.id),this.dualTexturedBindGroupCache.delete(A.id);for(const[I,B]of this.dualTexturedBindGroupCache)B.delete(A.id),B.size===0&&this.dualTexturedBindGroupCache.delete(I);this.instancedTextureBindGroupCache.delete(A.id);for(const I of Array.from(this.particleDataBindGroupCache.keys()))I.endsWith(`:${A.id}`)&&this.particleDataBindGroupCache.delete(I)}}draw(A){const g=A.shader;if(this.currentDrawResult=$("invalid-command",`WebGPU rejected ${g}`),this.currentDrawRecorded=!1,this.deviceLost)return this.currentDrawResult=$("backend-lost","WebGPU device is lost"),this.rejectSVGAFastPathDraw(),this.currentDrawResult;if(!this.passEncoder)return this.rejectSVGAFastPathDraw(),this.currentDrawResult=$("invalid-command","WebGPU frame is not active"),this.currentDrawResult;if((A.stencil!=null&&A.stencil!=="none"||g==="clip-mask"||g==="clip-mask-instanced"||g==="svga-frame-table-clip-mask")&&!this.frameUsesStencil)return this.rejectSVGAFastPathDraw(),this.currentDrawResult=$("invalid-command",`WebGPU ${g} requires a depth-stencil attachment in the active frame`),this.currentDrawResult;try{this.drawInternal(A)}catch(B){return this.currentDrawResult=$("submission-error",this.errorMessage(B)),this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}return this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}drawInternal(A){var g,I,B,Q,E,i,e;const t=A.shader;if(t===vC||t==="svga-timeline-instanced-premul"||t==="svga-frame-table-shape-premul"||t==="svga-frame-table-clip-mask"){this.drawSVGAFrameTableInstanced(A);return}if(A.shader==="svga-instanced-premul"){this.drawInstancedSvga(A);return}if(A.shader==="svga-motion-instanced-premul"){this.drawMotionInstancedSvga(A);return}if(A.shader==="clip-mask-instanced"){this.drawInstancedClipMask(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlpha(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVap(A);return}if(A.shader==="particle-instanced"||A.shader==="particle-sprite-instanced"){this.drawInstancedParticles(A);return}const a=(g=A.stencil)!=null?g:"none",o=A.shader==="clip-mask"||a==="clear"?"clip-mask:write":`${A.shader}:${a==="none"&&this.frameUsesStencil?"pass":a}`,s=this.pipelines.get(o);if(!s)return;const n=this.passEncoder,r=s.pipeline;this.lastDrawPipeline!==r&&(n.setPipeline(r),this.lastDrawPipeline=r,this.lastInstancedTextureBindGroup=null);let h=0;a==="clear"?h=0:(a==="write"||A.shader==="clip-mask"||a==="test")&&(h=1),this.frameUsesStencil&&this.lastStencilRef!==h&&(n.setStencilReference(h),this.lastStencilRef=h);const c=this.uniformSlotIndex++;if(c>=this.maxUniformSlots){console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots");return}const D=c*this.uniformSlotStride,w=A.uniforms.u_projection;if(s.textureCount>0){const G=A.uniforms.u_transform,f=G instanceof Float32Array&&G.length>=16?G:qC,u=A.uniforms.u_atlasRemap,R=u instanceof Float32Array&&u.length>=4?u:mi,M=typeof A.uniforms.u_opacity=="number"?A.uniforms.u_opacity:1,N=typeof A.uniforms.u_rgbPremultiplied=="number"?A.uniforms.u_rgbPremultiplied:1;if(w instanceof Float32Array&&w.length>=16){const S=this.uniformScratch160;S.set(w.length===16?w:w.subarray(0,16),0),S.set(f.length===16?f:f.subarray(0,16),16),S.set(R.length===4?R:R.subarray(0,4),32),S[36]=M,S[37]=N,S[38]=0,S[39]=0,this.writeUniformShadow(D,S,160)}else{this.writeUniformShadow(D+64,f,64),this.writeUniformShadow(D+128,R,16);const S=this.uniformOpacityScratch;S[0]=M,S[1]=N,S[2]=0,S[3]=0,this.writeUniformShadow(D+144,S,S.byteLength)}}else if(w instanceof Float32Array&&w.length>=16){const G=A.uniforms.u_transform,f=G instanceof Float32Array&&G.length>=16?G:qC,u=this.uniformScratch128;u.set(w.length===16?w:w.subarray(0,16),0),u.set(f.length===16?f:f.subarray(0,16),16),this.writeUniformShadow(D,u,128)}if(s.textureCount===1){const G=A.textures.length>0?A.textures[0]:null,f=G?this.textures.get(G.id):null,u=(I=f==null?void 0:f.view)!=null?I:this.dummyTextureView,R=(B=G==null?void 0:G.id)!=null?B:0;let M=this.texturedBindGroupCache.get(R);M||(M=this.device.createBindGroup({layout:this.texturedBindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:160}},{binding:1,resource:u},{binding:2,resource:this.sampler}]}),this.texturedBindGroupCache.set(R,M)),n.setBindGroup(0,M,[D])}else if(s.textureCount===2){const G=A.textures[0],f=A.textures[1],u=G?this.textures.get(G.id):null,R=f?this.textures.get(f.id):null,M=(Q=G==null?void 0:G.id)!=null?Q:0,N=(E=f==null?void 0:f.id)!=null?E:0;let S=this.dualTexturedBindGroupCache.get(M);S||(S=new Map,this.dualTexturedBindGroupCache.set(M,S));let Y=S.get(N);Y||(Y=this.device.createBindGroup({layout:this.dualTexturedBindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:160}},{binding:1,resource:(i=u==null?void 0:u.view)!=null?i:this.dummyTextureView},{binding:2,resource:(e=R==null?void 0:R.view)!=null?e:this.dummyTextureView},{binding:3,resource:this.sampler}]}),S.set(N,Y)),n.setBindGroup(0,Y,[D])}else s.uniformOnlyBindGroup||(s.uniformOnlyBindGroup=this.device.createBindGroup({layout:s.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:128}}]})),n.setBindGroup(0,s.uniformOnlyBindGroup,[D]);const l=this.buffers.get(A.vertexBuffer.id),F=this.buffers.get(A.indexBuffer.id);if(!l||!F)return;const d=A.vertexBuffer.id,y=A.indexBuffer.id;this.lastVertexBufferId!==d&&(n.setVertexBuffer(0,l.buffer),this.lastVertexBufferId=d),this.lastIndexBufferId!==y&&(n.setIndexBuffer(F.buffer,"uint32"),this.lastIndexBufferId=y),n.drawIndexed(A.indexCount),this.recordSubmittedDraw()}drawInstancedSvga(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,i=A.instanceData,e=CA.SVGA_INSTANCED_STRIDE/4;if(E<1||!i||i.length<E*e)return;if(E>CA.SVGA_INSTANCED_MAX){console.warn("[WebGPU] svga-instanced-premul: instanceCount exceeds max",E);return}const t=A.stencil==="test"?"test":this.frameUsesStencil?"pass":"none",a=this.ensureInstancedSvgaPipeline(t),o=a.pipeline;this.lastDrawPipeline!==o&&(Q.setPipeline(o),this.lastDrawPipeline=o,this.lastInstancedTextureBindGroup=null);const s=t==="test"?1:0;this.frameUsesStencil&&this.lastStencilRef!==s&&(Q.setStencilReference(s),this.lastStencilRef=s);const n=A.uniforms.u_projection;if(!(n instanceof Float32Array)||n.length<16)return;const r=this.buffers.get(A.vertexBuffer.id),h=this.buffers.get(A.indexBuffer.id);if(!r||!h)return;this.ensureInstancedProjection(n);const c=E*CA.SVGA_INSTANCED_STRIDE,D=this.instancedStorageRingOffset;if(D+c>Lg){console.warn("[WebGPU] instanced SVGA storage ring full");return}this.instancedStorageRingOffset+=QI(c,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(D,i,c),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=c;const w=A.textures[0],l=w?this.textures.get(w.id):null,F=(I=l==null?void 0:l.view)!=null?I:this.dummyTextureView,d=(B=w==null?void 0:w.id)!=null?B:0;let y=this.instancedTextureBindGroupCache.get(d);y||(y=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:F},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(d,y)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(a,c),[D]),this.lastInstancedTextureBindGroup!==y&&(Q.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const G=A.vertexBuffer.id,f=A.indexBuffer.id;this.lastVertexBufferId!==G&&(Q.setVertexBuffer(0,r.buffer),this.lastVertexBufferId=G),this.lastIndexBufferId!==f&&(Q.setIndexBuffer(h.buffer,"uint32"),this.lastIndexBufferId=f),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedClipMask(A){var g;const I=this.passEncoder,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*6)return;if(B>CA.CLIP_MASK_INSTANCED_MAX){console.warn("[WebGPU] clip-mask-instanced: instanceCount exceeds max",B);return}const E=this.ensureInstancedClipMaskPipeline(),i=E.pipeline;this.lastDrawPipeline!==i&&(I.setPipeline(i),this.lastDrawPipeline=i,this.lastInstancedTextureBindGroup=null);const e=A.stencil==="clear",t=e?0:1;this.lastStencilRef!==t&&(I.setStencilReference(t),this.lastStencilRef=t);const a=A.uniforms.u_projection;if(!(a instanceof Float32Array)||a.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),s=this.buffers.get(A.indexBuffer.id);if(!o||!s)return;this.ensureInstancedProjection(a);const n=B*CA.CLIP_MASK_INSTANCED_STRIDE;let r=this.lastClipMaskStorageBase;if(!e||r<0||this.lastClipMaskStorageByteLength!==n){if(r=this.instancedStorageRingOffset,r+n>Lg){console.warn("[WebGPU] instanced clip-mask storage ring full");return}this.instancedStorageRingOffset+=QI(n,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(r,Q,n),this.lastClipMaskStorageBase=r,this.lastClipMaskStorageByteLength=n}I.setBindGroup(0,this.ensureInstancedDataBindGroup(E,n),[r]),this.lastVertexBufferId!==A.vertexBuffer.id&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(I.setIndexBuffer(s.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),I.drawIndexed(A.indexCount,B,0,0,0),this.recordSubmittedDraw(),e&&(this.lastClipMaskStorageBase=-1,this.lastClipMaskStorageByteLength=0)}drawSVGAFrameTableInstanced(A){var g,I,B,Q,E,i,e,t,a,o,s,n,r,h,c,D;const w=this.passEncoder,l=A.shader==="svga-frame-table-shape-premul"||A.shader==="svga-frame-table-clip-mask",F=Math.floor((g=A.instanceCount)!=null?g:l?1:0);if(F<1||F>CA.SVGA_FRAME_TABLE_INSTANCE_MAX){F>CA.SVGA_FRAME_TABLE_INSTANCE_MAX&&console.warn("[WebGPU] svga-frame-table-instanced-premul: sprite count exceeds max",F);return}const d=(I=A.svgaFrameTable)!=null?I:null,y=d&&typeof d=="object"&&"backend"in d?d:null,G=(y==null?void 0:y.backend)==="webgpu"?y.buffer:d&&"id"in d?d:(Q=(B=A.svgaFrameTableBuffer)!=null?B:A.frameTableBuffer)!=null?Q:null;if(!G||G.usage!=="storage")return;const f=this.buffers.get(G.id);if(!f||f.usage!=="storage"||f.buffer.size<CA.SVGA_FRAME_TABLE_ROW_BYTES||f.buffer.size%CA.SVGA_FRAME_TABLE_ROW_BYTES!==0)return;const u=(t=(e=(i=(E=A.svgaSpriteMetadataBuffer)!=null?E:A.svgaSpriteMetadata)!=null?i:A.spriteMetadataBuffer)!=null?e:(y==null?void 0:y.backend)==="webgpu"?y.spriteMetadataBuffer:null)!=null?t:null;if(!u||u.usage!=="storage")return;const R=this.buffers.get(u.id);if(!R||R.usage!=="storage")return;const M=Math.floor((a=A.svgaSpriteMetadataStrideFloats)!=null?a:uI),N=M*Float32Array.BYTES_PER_ELEMENT;if(M<uI||M%4!==0||R.buffer.size<N||R.buffer.size%N!==0)return;const S=(o=A.svgaFrameTableFrameCount)!=null?o:A.frameTableFrameCount,Y=(s=A.svgaFrameTableSpriteCount)!=null?s:A.frameTableSpriteCount,U=Math.floor(Number.isFinite(S)?S:(y==null?void 0:y.backend)==="webgpu"?y.frameCount:0),k=Math.floor(f.buffer.size/CA.SVGA_FRAME_TABLE_ROW_BYTES),m=Math.floor(Number.isFinite(Y)?Y:(y==null?void 0:y.backend)==="webgpu"?y.spriteCount:U>0?k/U:0);if(U<1||m<1||U*m>k||!Number.isSafeInteger(U)||!Number.isSafeInteger(m))return;const J=A.instanceData,q=A.svgaFrameTableSlotStates,_=Math.floor((n=A.svgaFrameTableSlotStateCount)!=null?n:0),Z=Math.floor((r=A.svgaFrameTableSpritesPerSlot)!=null?r:0),x=q!=null&&_>0&&Z>0&&_*Z===F&&q.length>=_*$A,X=!x&&J!=null&&J.length>=F*$A,T=this.resolveSVGAFrameTableSlotUniform(A,F,U);if(!T)return;let gA=T.metadataBase;if(x)gA+=Z;else if(X){let hA=-1;for(let aA=0;aA<F;aA++){const nA=Math.floor((h=J[aA*$A+Ng.metadataBase])!=null?h:-1);nA>hA&&(hA=nA)}gA=hA+1}else gA+=F;if(T.metadataBase<0||!l&&(gA<1||gA>R.buffer.size/N))return;const UA=x?q:J,rA=X||x?(x?_:F)*$A*Float32Array.BYTES_PER_ELEMENT:Math.min(64,f.buffer.size),BA=(c=A.svgaFrameTableSlotStateUploadId)!=null?c:-1,Ig=x&&BA>=0&&BA===this.svgaCompactSlotStateUploadId&&rA===this.svgaCompactSlotStateByteLength,QA=Ig?this.svgaCompactSlotStateStorageBase:X||x?this.instancedStorageRingOffset:0;if((X||x)&&(QA<0||QA+rA>Lg))return;(X||x)&&!Ig&&(this.instancedStorageRingOffset+=QI(rA,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(QA,UA,rA),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=rA,x&&BA>=0&&(this.svgaCompactSlotStateUploadId=BA,this.svgaCompactSlotStateStorageBase=QA,this.svgaCompactSlotStateByteLength=rA));const V=A.motionTrackIndex,YA=A.motionTrackBuffer,kA=A.motionTrackGlobalsBuffer,W=YA?this.buffers.get(YA.id):null,pA=kA?this.buffers.get(kA.id):null,LA=Math.floor((D=A.motionTrackSampleCount)!=null?D:0),ag=Math.floor(V!=null?V:-1),OA=(ag+1)*LA*8*4,KA=ag>=0&&LA>=1&&(W==null?void 0:W.usage)==="storage"&&(pA==null?void 0:pA.usage)==="uniform"&&W.buffer.size>=OA&&pA.buffer.size>=32,qA=A.stencil==="test"?"test":A.stencil==="write"?"write":A.stencil==="clear"?"clear":this.frameUsesStencil?"pass":"none",sA=l?this.ensureSVGAFrameTableMeshPipeline(A.shader,qA):this.ensureSVGAFrameTablePipeline(qA==="test"?"test":qA==="pass"?"pass":"none");this.lastDrawPipeline!==sA.pipeline&&(w.setPipeline(sA.pipeline),this.lastDrawPipeline=sA.pipeline,this.lastInstancedTextureBindGroup=null);const L=qA==="test"||qA==="write"?1:0;this.frameUsesStencil&&this.lastStencilRef!==L&&(w.setStencilReference(L),this.lastStencilRef=L);const EA=A.uniforms.u_projection;if(!(EA instanceof Float32Array)||EA.length<16)return;const Bg=this.buffers.get(A.vertexBuffer.id),AA=this.buffers.get(A.indexBuffer.id);if(!Bg||!AA)return;const DA=A.textures[0];if(!DA)return;const IA=this.textures.get(DA.id);if(!IA)return;const mg=this.reserveSVGAFrameTableUniform(EA,T,U,m,F,KA?ag:null,x?2:X?1:0,Z,M/4);if(mg==null)return;const Jg=KA?W.buffer:f.buffer,Cg=KA?pA.buffer:this.uniformBuffer,GA=X||x?this.ensureInstancedStorageBuffer():f.buffer;if(GA.size<rA)return;const fA=x?"slots":X?"hybrid":"direct",dA=`${G.id}:${u.id}:${KA?YA.id:0}:${KA?kA.id:0}:${fA}:${rA}`;let iA=this.svgaFrameTableDataBindGroupCache.get(dA);iA||(iA=this.device.createBindGroup({layout:sA.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:this.uniformSlotStride}},{binding:1,resource:{buffer:f.buffer,offset:0,size:f.buffer.size}},{binding:2,resource:{buffer:R.buffer,offset:0,size:R.buffer.size}},{binding:3,resource:{buffer:Jg,offset:0,size:Jg.size}},{binding:4,resource:{buffer:Cg,offset:0,size:32}},{binding:5,resource:{buffer:GA,offset:0,size:rA}}]}),this.svgaFrameTableDataBindGroupCache.set(dA,iA)),w.setBindGroup(0,iA,[mg,QA]);const eA=DA.id;let tA=this.instancedTextureBindGroupCache.get(eA);tA||(tA=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:IA.view},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(eA,tA)),w.setBindGroup(1,tA),this.lastVertexBufferId!==A.vertexBuffer.id&&(w.setVertexBuffer(0,Bg.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(w.setIndexBuffer(AA.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),w.drawIndexed(A.indexCount,F,0,0,0),this.recordSubmittedDraw()}resolveSVGAFrameTableSlotUniform(A,g,I){var B,Q,E,i,e,t,a,o,s,n,r,h,c,D,w,l,F,d,y,G,f,u,R,M,N,S,Y,U,k,m,J,q,_,Z,x,X,T,gA,UA,yA,rA,BA,Ig,QA,V,YA,kA,W,pA,LA,ag,OA,KA,qA,sA;const L=(Q=(B=A.svgaFrameTableSlotState)!=null?B:A.svgaSlotState)!=null?Q:A.uniforms.u_svgaSlotState instanceof Float32Array?A.uniforms.u_svgaSlotState:A.uniforms.u_slotState instanceof Float32Array?A.uniforms.u_slotState:null,EA=A.uniforms.u_transform,Bg=A.uniforms.u_clipRect,AA=A.svgaFrameTableParentAffine,DA=A.svgaFrameTableParentTranslate,IA=A.svgaFrameTableClipRect,mg=A.svgaFrameIndex!=null||A.svgaFrameTableFrameIndex!=null||A.frameTableFrameIndex!=null,Jg=A.svgaFrameTableOpacity!=null||typeof A.uniforms.u_opacity=="number",Cg=A.uniforms.u_projection;if(!(Cg instanceof Float32Array)||Cg.length<16)return null;let GA=1,fA=0,dA=0,iA=1,eA=0,tA=0,hA=(E=A.svgaFrameTableOpacity)!=null?E:typeof A.uniforms.u_opacity=="number"?A.uniforms.u_opacity:1,aA=(t=(e=(i=A.svgaFrameIndex)!=null?i:A.svgaFrameTableFrameIndex)!=null?e:A.frameTableFrameIndex)!=null?t:0,nA=0,RA=0,uA=this.canvas.width,vA=this.canvas.height,Qg=0,Og=(a=A.svgaFrameTableAtlasPage)!=null?a:-1,PA=(h=(r=(n=(s=(o=A.svgaFrameTableMetadataBase)!=null?o:A.svgaFrameTableSpriteBase)!=null?s:A.frameTableSpriteBase)!=null?n:A.svgaSpriteMetadataBase)!=null?r:A.svgaSpriteBase)!=null?h:0;if(AA&&AA.length>=4)GA=(c=AA[0])!=null?c:GA,fA=(D=AA[1])!=null?D:fA,dA=(w=AA[2])!=null?w:dA,iA=(l=AA[3])!=null?l:iA,DA&&DA.length>=2&&(eA=(F=DA[0])!=null?F:eA,tA=(d=DA[1])!=null?d:tA),IA&&IA.length>=4&&(nA=(y=IA[0])!=null?y:nA,RA=(G=IA[1])!=null?G:RA,uA=(f=IA[2])!=null?f:uA,vA=(u=IA[3])!=null?u:vA,Qg=1);else if(L&&L.length>=13)GA=(R=L[0])!=null?R:GA,fA=(M=L[1])!=null?M:fA,dA=(N=L[2])!=null?N:dA,iA=(S=L[3])!=null?S:iA,eA=(Y=L[4])!=null?Y:eA,tA=(U=L[5])!=null?U:tA,Jg||(hA=(k=L[6])!=null?k:hA),mg||(aA=(m=L[7])!=null?m:aA),nA=(J=L[8])!=null?J:nA,RA=(q=L[9])!=null?q:RA,uA=(_=L[10])!=null?_:uA,vA=(Z=L[11])!=null?Z:vA,Qg=((x=L[12])!=null?x:0)>.5?1:0,A.svgaFrameTableMetadataBase==null&&A.svgaFrameTableSpriteBase==null&&A.frameTableSpriteBase==null&&A.svgaSpriteMetadataBase==null&&A.svgaSpriteBase==null&&L.length>=14&&(PA=(X=L[13])!=null?X:PA);else if(EA instanceof Float32Array&&EA.length>=16){GA=(T=EA[0])!=null?T:GA,fA=(gA=EA[1])!=null?gA:fA,dA=(UA=EA[4])!=null?UA:dA,iA=(yA=EA[5])!=null?yA:iA,eA=(rA=EA[12])!=null?rA:eA,tA=(BA=EA[13])!=null?BA:tA;const CI=Bg instanceof Float32Array&&Bg.length>=4?Bg:IA;CI&&CI.length>=4&&(nA=(Ig=CI[0])!=null?Ig:nA,RA=(QA=CI[1])!=null?QA:RA,uA=(V=CI[2])!=null?V:uA,vA=(YA=CI[3])!=null?YA:vA,Qg=typeof A.uniforms.u_clipEnabled=="number"?A.uniforms.u_clipEnabled>.5?1:0:1)}return AA&&L&&L.length>=13&&(DA||(eA=(kA=L[4])!=null?kA:eA,tA=(W=L[5])!=null?W:tA),Jg||(hA=(pA=L[6])!=null?pA:hA),mg||(aA=(LA=L[7])!=null?LA:aA),IA||(nA=(ag=L[8])!=null?ag:nA,RA=(OA=L[9])!=null?OA:RA,uA=(KA=L[10])!=null?KA:uA,vA=(qA=L[11])!=null?qA:vA,Qg=((sA=L[12])!=null?sA:0)>.5?1:0)),Number.isFinite(hA)||(hA=1),Number.isFinite(aA)||(aA=0),Number.isFinite(PA)||(PA=0),Number.isFinite(Og)||(Og=-1),aA=Math.max(0,Math.min(I-1,Math.floor(aA))),PA=Math.max(0,Math.floor(PA)),![GA,fA,dA,iA,eA,tA,hA].every(Number.isFinite)||g<1?null:{parentA:GA,parentB:fA,parentC:dA,parentD:iA,tx:eA,ty:tA,opacity:hA,frameIndex:aA,clipX0:nA,clipY0:RA,clipX1:uA,clipY1:vA,clipEnabled:Qg,metadataBase:PA,atlasPage:Math.max(-1,Math.floor(Og))}}reserveSVGAFrameTableUniform(A,g,I,B,Q,E,i,e=0,t=2){if(!g)return null;const a=this.uniformSlotIndex++;if(a>=this.maxUniformSlots)return console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots"),null;const o=this.svgaFrameTableUniformScratch;o.fill(0),o.set(A.length===16?A:A.subarray(0,16),0),o[16]=g.parentA,o[17]=g.parentB,o[18]=g.parentC,o[19]=g.parentD,o[20]=g.tx,o[21]=g.ty,o[22]=g.opacity,o[23]=g.frameIndex,o[24]=g.clipX0,o[25]=g.clipY0,o[26]=g.clipX1,o[27]=g.clipY1;const s=this.svgaFrameTableUniformWords;s[28]=Math.max(0,Math.floor(g.metadataBase)),s[29]=Math.max(1,Math.floor(Q)),s[30]=(g.clipEnabled>.5?1:0)|(i===1?2:0)|(i===2?4:0),s[31]=E==null?0:Math.max(1,Math.floor(E)+1),s[32]=Math.max(1,Math.floor(I)),s[33]=Math.max(1,Math.floor(B)),s[34]=3,s[35]=g.atlasPage>=0?Math.floor(g.atlasPage):4294967295,s[36]=i===2?Math.max(1,Math.floor(e)):0,s[37]=Math.max(2,Math.floor(t)),s[38]=i;const n=a*this.uniformSlotStride;return this.writeUniformShadow(n,o,bB),n}drawMotionInstancedSvga(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,i=A.instanceData,e=A.motionTrackBuffer,t=A.motionTrackGlobalsBuffer;if(!i||!e||!t||E<1)return;const a=this.buffers.get(e.id),o=this.buffers.get(t.id),s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!a||!o||!s||!n)return;const r=this.ensureMotionSvgaPipeline();this.lastDrawPipeline!==r.pipeline&&(Q.setPipeline(r.pipeline),this.lastDrawPipeline=r.pipeline,this.lastInstancedTextureBindGroup=null);const h=A.uniforms.u_projection;if(!(h instanceof Float32Array)||h.length<16)return;this.ensureInstancedProjection(h);const c=E*CA.SVGA_INSTANCED_STRIDE,D=this.instancedStorageRingOffset;if(D+c>Lg)return;this.instancedStorageRingOffset+=QI(c,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(D,i,c),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=c;const w=`${c}:${e.id}:${t.id}:${this.frameUsesStencil?1:0}`;let l=this.motionDataBindGroupCache.get(w);l||(l=this.device.createBindGroup({layout:r.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),size:64}},{binding:1,resource:{buffer:this.ensureInstancedStorageBuffer(),offset:0,size:c}},{binding:2,resource:{buffer:a.buffer,size:a.buffer.size}},{binding:3,resource:{buffer:o.buffer,size:32}}]}),this.motionDataBindGroupCache.set(w,l)),Q.setBindGroup(0,l,[D]);const F=A.textures[0],d=F?this.textures.get(F.id):null,y=(I=F==null?void 0:F.id)!=null?I:0;let G=this.instancedTextureBindGroupCache.get(y);G||(G=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:(B=d==null?void 0:d.view)!=null?B:this.dummyTextureView},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(y,G)),Q.setBindGroup(1,G),Q.setVertexBuffer(0,s.buffer),Q.setIndexBuffer(n.buffer,"uint32"),this.lastVertexBufferId=A.vertexBuffer.id,this.lastIndexBufferId=A.indexBuffer.id,Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedParticles(A){var g,I,B,Q;const E=this.passEncoder,i=(g=A.instanceCount)!=null?g:0,e=A.instanceBuffer;if(!e||i<1||i>CA.PARTICLE_INSTANCED_MAX)return;const t=this.buffers.get(e.id),a=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!t||!a||!o)return;const s=(I=A.particleBlend)!=null?I:"additive",n=A.shader==="particle-sprite-instanced",r=n?this.ensureParticleSpritePipeline(s):this.ensureParticlePipeline(s);this.lastDrawPipeline!==r.pipeline&&(E.setPipeline(r.pipeline),this.lastDrawPipeline=r.pipeline,this.lastInstancedTextureBindGroup=null);const h=A.uniforms.u_projection;if(!(h instanceof Float32Array)||h.length<16)return;this.ensureInstancedProjection(h);const c=n&&(Q=(B=A.textures[0])==null?void 0:B.id)!=null?Q:0;if(n&&!this.textures.has(c))return;const D=`${n?"sprite-v2":"ballistic-v1"}:${this.frameUsesStencil?"pass":"none"}:${s}:${e.id}:${c}`;let w=this.particleDataBindGroupCache.get(D);if(w||(w=this.device.createBindGroup({layout:r.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),offset:0,size:64}},{binding:1,resource:{buffer:t.buffer,offset:0,size:t.buffer.size}}]}),this.particleDataBindGroupCache.set(D,w)),E.setBindGroup(0,w),n){const l=this.textures.get(c);let F=this.instancedTextureBindGroupCache.get(c);F||(F=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:l.view},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(c,F)),E.setBindGroup(1,F)}this.lastVertexBufferId!==A.vertexBuffer.id&&(E.setVertexBuffer(0,a.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(E.setIndexBuffer(o.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),E.drawIndexed(A.indexCount,i,0,0,0),this.recordSubmittedDraw()}drawInstancedAlpha(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,i=A.instanceData;if(E<1||!i||i.length<E*12)return;if(E>CA.ALPHA_INSTANCED_MAX){console.warn("[WebGPU] alpha-video-instanced: instanceCount exceeds max",E);return}const t=this.ensureInstancedAlphaPipeline(),a=t.pipeline;this.lastDrawPipeline!==a&&(Q.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.frameUsesStencil&&this.lastStencilRef!==0&&(Q.setStencilReference(0),this.lastStencilRef=0);const o=A.uniforms.u_projection;if(!(o instanceof Float32Array)||o.length<16)return;const s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!s||!n)return;this.ensureInstancedProjection(o);const r=E*CA.ALPHA_INSTANCED_STRIDE,h=this.instancedStorageRingOffset;if(h+r>Lg){console.warn("[WebGPU] instanced alpha storage ring full");return}this.instancedStorageRingOffset+=QI(r,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(h,i,r);const c=A.textures[0],D=c?this.textures.get(c.id):null,w=(I=D==null?void 0:D.view)!=null?I:this.dummyTextureView,l=(B=c==null?void 0:c.id)!=null?B:0;let F=this.instancedTextureBindGroupCache.get(l);F||(F=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:w},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(l,F)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(t,r),[h]),this.lastInstancedTextureBindGroup!==F&&(Q.setBindGroup(1,F),this.lastInstancedTextureBindGroup=F);const d=A.vertexBuffer.id,y=A.indexBuffer.id;this.lastVertexBufferId!==d&&(Q.setVertexBuffer(0,s.buffer),this.lastVertexBufferId=d),this.lastIndexBufferId!==y&&(Q.setIndexBuffer(n.buffer,"uint32"),this.lastIndexBufferId=y),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedVap(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,i=A.instanceData;if(E<1||!i||i.length<E*32)return;if(E>CA.VAP_INSTANCED_MAX){console.warn("[WebGPU] vap-instanced: instanceCount exceeds max",E);return}const t=this.ensureInstancedVapPipeline(),a=t.pipeline;this.lastDrawPipeline!==a&&(Q.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.frameUsesStencil&&this.lastStencilRef!==0&&(Q.setStencilReference(0),this.lastStencilRef=0);const o=A.uniforms.u_projection;if(!(o instanceof Float32Array)||o.length<16)return;const s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!s||!n)return;this.ensureInstancedProjection(o);const r=E*CA.VAP_INSTANCED_STRIDE,h=this.instancedStorageRingOffset;if(h+r>Lg){console.warn("[WebGPU] instanced VAP storage ring full");return}this.instancedStorageRingOffset+=QI(r,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(h,i,r);const c=A.textures[0],D=c?this.textures.get(c.id):null,w=(I=D==null?void 0:D.view)!=null?I:this.dummyTextureView,l=(B=c==null?void 0:c.id)!=null?B:0;let F=this.instancedTextureBindGroupCache.get(l);F||(F=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:w},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(l,F)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(t,r),[h]),this.lastInstancedTextureBindGroup!==F&&(Q.setBindGroup(1,F),this.lastInstancedTextureBindGroup=F);const d=A.vertexBuffer.id,y=A.indexBuffer.id;this.lastVertexBufferId!==d&&(Q.setVertexBuffer(0,s.buffer),this.lastVertexBufferId=d),this.lastIndexBufferId!==y&&(Q.setIndexBuffer(n.buffer,"uint32"),this.lastIndexBufferId=y),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}clearStencil(){}setScissor(A,g,I,B){if(!this.passEncoder)return;const Q=this.canvas.width,E=this.canvas.height,i=Math.max(0,Math.min(Q,Math.floor(A))),e=Math.max(0,Math.min(E,Math.floor(g))),t=Math.max(i,Math.min(Q,Math.ceil(A+I))),a=Math.max(e,Math.min(E,Math.ceil(g+B)));this.passEncoder.setScissorRect(i,e,t-i,a-e)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,g,I,B,Q,E,i;this.deviceLostHandler=null,this.runtimeDiagnosticHandler=null,this.device&&(this.device.onuncapturederror=null);for(const[,e]of this.buffers)e.buffer.destroy();for(const[,e]of this.textures)e.texture.destroy();(A=this.uniformBuffer)==null||A.destroy(),(g=this.instancedProjectionBuffer)==null||g.destroy(),(I=this.instancedStorageBuffer)==null||I.destroy(),(B=this.depthStencilTexture)==null||B.destroy(),(Q=this.msaaColorTexture)==null||Q.destroy(),(E=this.dummyTexture)==null||E.destroy(),(i=this.device)==null||i.destroy(),this.buffers.clear(),this.textures.clear(),this.texturedBindGroupCache.clear(),this.dualTexturedBindGroupCache.clear(),this.instancedTextureBindGroupCache.clear(),this.particleDataBindGroupCache.clear(),this.motionDataBindGroupCache.clear(),this.pipelines.clear()}};p(hg,"SVGA_INSTANCED_MAX",2048);p(hg,"SVGA_INSTANCED_STRIDE",52);p(hg,"SVGA_FRAME_TABLE_INSTANCE_MAX",2048);p(hg,"SVGA_FRAME_TABLE_ROW_BYTES",vQ*Float32Array.BYTES_PER_ELEMENT);p(hg,"CLIP_MASK_INSTANCED_MAX",2048);p(hg,"CLIP_MASK_INSTANCED_STRIDE",24);p(hg,"ALPHA_INSTANCED_MAX",1024);p(hg,"ALPHA_INSTANCED_STRIDE",48);p(hg,"VAP_INSTANCED_MAX",1024);p(hg,"VAP_INSTANCED_STRIDE",128);p(hg,"PARTICLE_INSTANCED_MAX",8192);let TQ=hg;function TC(C,A,g){const I=C.createShader(A);if(!I)throw new Error("Failed to create shader");if(C.shaderSource(I,g),C.compileShader(I),!C.getShaderParameter(I,C.COMPILE_STATUS)){const B=C.getShaderInfoLog(I);throw C.deleteShader(I),new Error(`Shader compile failed: ${B}`)}return I}function TA(C,A,g){const I=TC(C,C.VERTEX_SHADER,A),B=TC(C,C.FRAGMENT_SHADER,g),Q=C.createProgram();if(!Q)throw C.deleteShader(I),C.deleteShader(B),new Error("Failed to create program");if(C.attachShader(Q,I),C.attachShader(Q,B),C.linkProgram(Q),!C.getProgramParameter(Q,C.LINK_STATUS)){const E=C.getProgramInfoLog(Q);throw C.deleteProgram(Q),C.deleteShader(I),C.deleteShader(B),new Error(`Program link failed: ${E}`)}return C.deleteShader(I),C.deleteShader(B),Q}function WC(C,A=C.LINEAR,g=C.CLAMP_TO_EDGE){const I=C.createTexture();if(!I)throw new Error("Failed to create texture");return C.bindTexture(C.TEXTURE_2D,I),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,g),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,g),I}function Li(C=typeof navigator!="undefined"?navigator:null){var A,g;const I=(A=C==null?void 0:C.userAgent)!=null?A:"";return/iPad|iPhone|iPod/i.test(I)||/Macintosh/i.test(I)&&((g=C==null?void 0:C.maxTouchPoints)!=null?g:0)>1}function vI(C){const A=C;return typeof A.displayWidth=="number"&&A.displayWidth>0?A.displayWidth:typeof A.codedWidth=="number"&&A.codedWidth>0?A.codedWidth:typeof A.videoWidth=="number"&&A.videoWidth>0?A.videoWidth:typeof A.naturalWidth=="number"&&A.naturalWidth>0?A.naturalWidth:typeof A.width=="number"&&A.width>0?A.width:0}function TI(C){const A=C;return typeof A.displayHeight=="number"&&A.displayHeight>0?A.displayHeight:typeof A.codedHeight=="number"&&A.codedHeight>0?A.codedHeight:typeof A.videoHeight=="number"&&A.videoHeight>0?A.videoHeight:typeof A.naturalHeight=="number"&&A.naturalHeight>0?A.naturalHeight:typeof A.height=="number"&&A.height>0?A.height:0}var Hi=Object.defineProperty,xi=(C,A,g)=>A in C?Hi(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,H=(C,A,g)=>xi(C,typeof A!="symbol"?A+"":A,g);const gB="svga-frame-table-instanced-premul",VC=8,bi=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),qi=new Float32Array([1,1]),SA=class xA{constructor(A,g=!0){H(this,"type","webgl2"),H(this,"supportsAtomicFrameReplay",!0),H(this,"canvas"),H(this,"maxTextureSize",4096),H(this,"antialias"),H(this,"gl"),H(this,"nextId",1),H(this,"buffers",new Map),H(this,"textures",new Map),H(this,"frameTables",new Map),H(this,"ownedFrameTableMetadataIds",new Set),H(this,"programs",new Map),H(this,"vertexArrays",new Map),H(this,"cachedDrawProgram",null),H(this,"cachedTex0Id",null),H(this,"cachedFrameTableId",null),H(this,"cachedFrameMetadataId",null),H(this,"cachedProjectionRef",null),H(this,"cachedProjectionShader",null),H(this,"videoUploadCanvas",null),H(this,"videoUploadCtx",null),H(this,"videoElementPreferCanvasBridge",Li()),H(this,"videoElementDirectUploadValidated",!1),H(this,"maxVertexTextureImageUnits",0),H(this,"svgaFrameTableSupported",!1),H(this,"instancedSvgaInstanceGLBuffer",null),H(this,"svgaSlotStateTexture",null),H(this,"svgaSlotStateTextureWidth",0),H(this,"svgaSlotStateTextureHeight",0),H(this,"svgaSlotStateUploadScratch",new Float32Array(0)),H(this,"svgaSlotStateUploadId",-1),H(this,"svgaTableInfoScratch",new Int32Array(4)),H(this,"svgaTableSizeScratch",new Int32Array(2)),H(this,"svgaMetadataSizeScratch",new Int32Array(2)),H(this,"instancedClipMaskGLBuffer",null),H(this,"instancedAlphaInstanceGLBuffer",null),H(this,"performanceBufferWrites",0),H(this,"performanceBufferWriteBytes",0),H(this,"performanceStorageBufferWrites",0),H(this,"performanceStorageBufferWriteBytes",0),H(this,"performanceSubmittedDrawCalls",0),H(this,"performanceRejectedDrawCalls",0),H(this,"performanceSVGADynamicUploadWrites",0),H(this,"performanceSVGADynamicUploadBytes",0),H(this,"runtimeSubmittedDrawCalls",0),H(this,"runtimeRejectedDrawCalls",0),H(this,"currentDrawResult",$("invalid-command","WebGL2 draw has not been submitted")),H(this,"currentDrawRecorded",!1),H(this,"runtimeBackendLosses",0),H(this,"runtimeDiagnosticHandler",null),H(this,"contextLost",!1),H(this,"deviceLostHandler",null),H(this,"onContextLost",I=>{var B,Q;I.preventDefault(),this.contextLost=!0,this.runtimeBackendLosses++,(B=this.runtimeDiagnosticHandler)==null||B.call(this,{type:"backend-lost"}),this.svgaFrameTableSupported=!1,this.buffers.clear(),this.textures.clear(),this.frameTables.clear(),this.programs.clear(),this.vertexArrays.clear(),this.ownedFrameTableMetadataIds.clear(),this.instancedSvgaInstanceGLBuffer=null,this.instancedClipMaskGLBuffer=null,this.instancedAlphaInstanceGLBuffer=null,this.instancedVapInstanceGLBuffer=null,this.svgaSlotStateTexture=null,(Q=this.deviceLostHandler)==null||Q.call(this)}),H(this,"instancedVapInstanceGLBuffer",null),this.canvas=A,this.antialias=g}async init(){const A=this.canvas.getContext("webgl2",{alpha:!0,premultipliedAlpha:!0,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL2 not available");this.gl=A,this.canvas.addEventListener("webglcontextlost",this.onContextLost),this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.maxVertexTextureImageUnits=A.getParameter(A.MAX_VERTEX_TEXTURE_IMAGE_UNITS)||0,A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}getPerformanceSnapshot(){return{bufferWrites:this.performanceBufferWrites,bufferWriteBytes:this.performanceBufferWriteBytes,storageBufferWrites:this.performanceStorageBufferWrites,storageBufferWriteBytes:this.performanceStorageBufferWriteBytes,submittedDrawCalls:this.performanceSubmittedDrawCalls,rejectedDrawCalls:this.performanceRejectedDrawCalls,svgaDynamicUploadWrites:this.performanceSVGADynamicUploadWrites,svgaDynamicUploadBytes:this.performanceSVGADynamicUploadBytes}}getRuntimeDiagnosticsSnapshot(){return{submittedDrawCalls:this.runtimeSubmittedDrawCalls,rejectedDrawCalls:this.runtimeRejectedDrawCalls,webgpuUncapturedErrors:0,backendLosses:this.runtimeBackendLosses}}setRuntimeDiagnosticHandler(A){this.runtimeDiagnosticHandler=A}resetPerformanceSnapshot(){this.performanceBufferWrites=0,this.performanceBufferWriteBytes=0,this.performanceStorageBufferWrites=0,this.performanceStorageBufferWriteBytes=0,this.performanceSubmittedDrawCalls=0,this.performanceRejectedDrawCalls=0,this.performanceSVGADynamicUploadWrites=0,this.performanceSVGADynamicUploadBytes=0}setDeviceLostHandler(A){this.deviceLostHandler=A}recordSubmittedDraw(){this.currentDrawResult=tg,this.currentDrawRecorded=!0,this.performanceSubmittedDrawCalls++,this.runtimeSubmittedDrawCalls++}rejectSVGAFastPathDraw(){this.currentDrawRecorded=!0,this.currentDrawResult.submitted&&(this.currentDrawResult=$("invalid-command","WebGL2 draw was rejected")),this.performanceRejectedDrawCalls++,this.runtimeRejectedDrawCalls++}initPrograms(){const A=this.gl,g=TA(A,P.svgaBatchPremul.vert,P.svgaBatchPremul.frag);this.programs.set("svga-batch-premul",this.makeProgramEntry(g,{transform:!0,opacity:!0})),this.bindProgramSamplers(g,{u_atlas:0});const I=TA(A,P.svgaInstancedPremul.vert,P.svgaInstancedPremul.frag);if(this.programs.set("svga-instanced-premul",this.makeProgramEntry(I)),this.bindProgramSamplers(I,{u_atlas:0}),this.maxVertexTextureImageUnits>=2&&this.maxTextureSize>=3)try{const n=TA(A,P.svgaFrameTableInstancedPremul.vert,P.svgaFrameTableInstancedPremul.frag);this.programs.set(gB,this.makeProgramEntry(n,{frameTable:!0,spriteMetadata:!0,tableInfo:!0,frameTableSize:!0,spriteMetadataSize:!0,spriteMetadataStride:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,slotOpacity:!0,atlasPage:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,instanceStateEnabled:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0,spritesPerSlot:!0})),this.bindProgramSamplers(n,{u_atlas:0,u_frameTable:1,u_spriteMetadata:2,u_slotStates:3});const r=TA(A,P.svgaFrameTableShape.vert,P.svgaFrameTableShape.frag);this.programs.set("svga-frame-table-shape-premul",this.makeProgramEntry(r,{frameTable:!0,tableInfo:!0,frameTableSize:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,slotOpacity:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0})),this.bindProgramSamplers(r,{u_frameTable:0,u_slotStates:3});const h=TA(A,P.svgaFrameTableClipMask.vert,P.svgaFrameTableClipMask.frag);this.programs.set("svga-frame-table-clip-mask",this.makeProgramEntry(h,{frameTable:!0,tableInfo:!0,frameTableSize:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0})),this.bindProgramSamplers(h,{u_frameTable:0,u_slotStates:3}),this.svgaFrameTableSupported=!0}catch(n){this.svgaFrameTableSupported=!1,console.warn("[WebGL2] SVGA frame-table shader unavailable; using CPU reference path.",n)}const B=TA(A,P.vap.vert,P.vap.frag);this.programs.set("vap",this.makeProgramEntry(B,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(B,{u_video:0});const Q=TA(A,P.vapMixOverlay.vert,P.vapMixOverlay.frag);this.programs.set("vap-mix-overlay",this.makeProgramEntry(Q,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(Q,{u_resource:0,u_video:1});const E=TA(A,P.alphaVideo.vert,P.alphaVideo.frag);this.programs.set("alpha-video",this.makeProgramEntry(E,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(E,{u_video:0});const i=TA(A,P.rgbaTextured.vert,P.rgbaTextured.frag);this.programs.set("rgba-textured",this.makeProgramEntry(i,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(i,{u_video:0});const e=TA(A,P.alphaVideoInstanced.vert,P.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",this.makeProgramEntry(e)),this.bindProgramSamplers(e,{u_video:0});const t=TA(A,P.vapInstanced.vert,P.vapInstanced.frag);this.programs.set("vap-instanced",this.makeProgramEntry(t)),this.bindProgramSamplers(t,{u_video:0});const a=TA(A,P.clipMask.vert,P.clipMask.frag);this.programs.set("clip-mask",this.makeProgramEntry(a,{transform:!0}));const o=TA(A,P.clipMaskInstanced.vert,P.clipMaskInstanced.frag);this.programs.set("clip-mask-instanced",this.makeProgramEntry(o));const s=TA(A,P.particleInstanced.vert,P.particleInstanced.frag);this.programs.set("particle-instanced",this.makeProgramEntry(s))}ensureParticleSpriteProgram(){let A=this.programs.get("particle-sprite-instanced");if(A)return A;const g=TA(this.gl,P.particleSpriteInstanced.vert,P.particleSpriteInstanced.frag);return A=this.makeProgramEntry(g,{particleSprite:!0}),this.programs.set("particle-sprite-instanced",A),this.bindProgramSamplers(g,{u_atlas:0}),A}makeProgramEntry(A,g={}){const I=this.gl;return{program:A,projLoc:I.getUniformLocation(A,"u_projection"),transformLoc:g.transform?I.getUniformLocation(A,"u_transform"):null,atlasRemapLoc:g.atlasRemap?I.getUniformLocation(A,"u_atlasRemap"):null,opacityLoc:g.opacity?I.getUniformLocation(A,"u_opacity"):null,rgbPremultipliedLoc:g.rgbPremultiplied?I.getUniformLocation(A,"u_rgbPremultiplied"):null,frameTableLoc:g.frameTable?I.getUniformLocation(A,"u_frameTable"):null,spriteMetadataLoc:g.spriteMetadata?I.getUniformLocation(A,"u_spriteMetadata"):null,tableInfoLoc:g.tableInfo?I.getUniformLocation(A,"u_tableInfo"):null,frameTableSizeLoc:g.frameTableSize?I.getUniformLocation(A,"u_frameTableSize"):null,spriteMetadataSizeLoc:g.spriteMetadataSize?I.getUniformLocation(A,"u_spriteMetadataSize"):null,spriteMetadataStrideLoc:g.spriteMetadataStride?I.getUniformLocation(A,"u_spriteMetadataTexelsPerRow"):null,spriteBaseLoc:g.spriteBase?I.getUniformLocation(A,"u_spriteBase"):null,frameIndexLoc:g.frameIndex?I.getUniformLocation(A,"u_frameIndex"):null,parentAffineLoc:g.parentAffine?I.getUniformLocation(A,"u_parentAffine"):null,parentTranslateLoc:g.parentTranslate?I.getUniformLocation(A,"u_parentTranslate"):null,slotOpacityLoc:g.slotOpacity?I.getUniformLocation(A,"u_slotOpacity"):null,atlasPageLoc:g.atlasPage?I.getUniformLocation(A,"u_atlasPage"):null,clipRectLoc:g.clipRect?I.getUniformLocation(A,"u_clipRect"):null,clipEnabledLoc:g.clipEnabled?I.getUniformLocation(A,"u_clipEnabled"):null,canvasHeightLoc:g.canvasHeight?I.getUniformLocation(A,"u_canvasHeight"):null,instanceStateEnabledLoc:g.instanceStateEnabled?I.getUniformLocation(A,"u_instanceStateEnabled"):null,slotStatesLoc:g.slotStates?I.getUniformLocation(A,"u_slotStates"):null,slotStateSizeLoc:g.slotStateSize?I.getUniformLocation(A,"u_slotStateSize"):null,compactSlotStateEnabledLoc:g.compactSlotStateEnabled?I.getUniformLocation(A,"u_compactSlotStateEnabled"):null,spritesPerSlotLoc:g.spritesPerSlot?I.getUniformLocation(A,"u_spritesPerSlot"):null,particleTimeLoc:g.particleSprite?I.getUniformLocation(A,"u_time"):null,particleGlobalAlphaLoc:g.particleSprite?I.getUniformLocation(A,"u_globalAlpha"):null,particleSizeEnvelopeLoc:g.particleSprite?I.getUniformLocation(A,"u_sizeEnvelope"):null,particleFadeModeLoc:g.particleSprite?I.getUniformLocation(A,"u_fadeMode"):null,particleCssScaleLoc:g.particleSprite?I.getUniformLocation(A,"u_cssScale"):null,lastOpacity:null,lastRgbPremultiplied:null}}applyIdentityTransform(A){A.transformLoc&&this.gl.uniformMatrix4fv(A.transformLoc,!1,bi)}bindProgramSamplers(A,g){const I=this.gl;I.useProgram(A);for(const B in g){const Q=I.getUniformLocation(A,B);Q&&I.uniform1i(Q,g[B])}}applyProjectionUniform(A,g,I){!A.projLoc||!(I instanceof Float32Array)||I.length<16||this.cachedProjectionShader===g&&this.cachedProjectionRef===I||(this.gl.uniformMatrix4fv(A.projLoc,!1,I),this.cachedProjectionShader=g,this.cachedProjectionRef=I)}applyDrawUniforms(A,g,I){const B=this.gl;if(this.applyProjectionUniform(A,g,I.uniforms.u_projection),A.transformLoc){const Q=I.uniforms.u_transform;Q instanceof Float32Array?B.uniformMatrix4fv(A.transformLoc,!1,Q):this.applyIdentityTransform(A)}if(A.atlasRemapLoc){const Q=I.uniforms.u_atlasRemap;Q instanceof Float32Array&&B.uniform4fv(A.atlasRemapLoc,Q)}if(A.opacityLoc){const Q=I.uniforms.u_opacity,E=typeof Q=="number"?Q:1;A.lastOpacity!==E&&(B.uniform1f(A.opacityLoc,E),A.lastOpacity=E)}if(A.rgbPremultipliedLoc){const Q=I.uniforms.u_rgbPremultiplied;typeof Q=="number"&&A.lastRgbPremultiplied!==Q&&(B.uniform1f(A.rgbPremultipliedLoc,Q),A.lastRgbPremultiplied=Q)}}beginFrame(A={}){const g=this.gl;if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return g.viewport(0,0,this.canvas.width,this.canvas.height),g.colorMask(!0,!0,!0,!0),g.stencilMask(255),g.disable(g.STENCIL_TEST),g.disable(g.SCISSOR_TEST),g.clearColor(0,0,0,0),g.clearStencil(0),g.clear(g.COLOR_BUFFER_BIT|(A.stencil?g.STENCIL_BUFFER_BIT:0)),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedFrameTableId=null,this.cachedFrameMetadataId=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,this.svgaSlotStateUploadId=-1,tg}catch(I){return $("submission-error",this.errorMessage(I))}}endFrame(){if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return this.gl.flush(),tg}catch(A){return $("submission-error",this.errorMessage(A))}}abortFrame(){const A=this.gl;if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return A.colorMask(!0,!0,!0,!0),A.stencilMask(255),A.disable(A.STENCIL_TEST),A.disable(A.SCISSOR_TEST),A.clearColor(0,0,0,0),A.clearStencil(0),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.flush(),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedFrameTableId=null,this.cachedFrameMetadataId=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,this.svgaSlotStateUploadId=-1,tg}catch(g){return $("submission-error",this.errorMessage(g))}}errorMessage(A){return A instanceof Error?A.message:String(A)}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}createBuffer(A,g){const I=this.gl,B=I.createBuffer();if(!B)throw new Error("Failed to create buffer");I.bindVertexArray(null);const Q=g==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(Q,B),I.bufferData(Q,A,I.DYNAMIC_DRAW);const E=this.nextId++;return this.buffers.set(E,{buffer:B,usage:g,byteLength:this.getBufferSourceByteLength(A)}),{id:E,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=this.gl;Q.bindVertexArray(null);const E=B.usage==="index"?Q.ELEMENT_ARRAY_BUFFER:Q.ARRAY_BUFFER;Q.bindBuffer(E,B.buffer);const i=this.getBufferSourceByteLength(g);I===0&&i<=B.byteLength?Q.bufferSubData(E,0,g):(Q.bufferData(E,g,Q.DYNAMIC_DRAW),B.byteLength=i)}deleteBuffer(A){const g=this.buffers.get(A.id);g&&(this.gl.bindVertexArray(null),this.deleteVertexArraysForBuffer(A.id),this.gl.deleteBuffer(g.buffer),this.buffers.delete(A.id))}uploadVideoFrameToTexture(A,g,I){const B=this.gl,Q=g.videoWidth,E=g.videoHeight;if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||Q<=0||E<=0)return!1;if(!this.videoElementPreferCanvasBridge){B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1);try{if(I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g),!this.videoElementDirectUploadValidated){const t=B.getError();if(t!==B.NO_ERROR)throw new Error(`WebGL video upload error: 0x${t.toString(16)}`);this.videoElementDirectUploadValidated=!0}return!0}catch(t){this.videoElementPreferCanvasBridge=!0,console.debug("[WebGL2] direct HTMLVideo upload failed; using canvas bridge.",t)}finally{B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}}this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const i=this.videoUploadCanvas,e=this.videoUploadCtx;return e?((i.width!==Q||i.height!==E)&&(i.width=Q,i.height=E),e.drawImage(g,0,0,Q,E),B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,i):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,i),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),!0):!1}createTexture(A,g){var I,B;const Q=this.gl;Q.activeTexture(Q.TEXTURE0),this.cachedTex0Id=null;const E=g.filter==="nearest"?Q.NEAREST:Q.LINEAR,i=WC(Q,E),e=g.premultiplyAlpha===!0;let t=(I=g.width)!=null?I:1,a=(B=g.height)!=null?B:1;if(A instanceof ArrayBuffer)Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,t,a,0,Q.RGBA,Q.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame){const s=A;Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,1),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e?1:0),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,s),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),t=s.displayWidth||s.codedWidth||t,a=s.displayHeight||s.codedHeight||a}else if(A instanceof HTMLVideoElement)Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e?1:0),this.uploadVideoFrameToTexture(i,A,!0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t=A.videoWidth||t,a=A.videoHeight||a;else{const s=e,n=g.sourcePremultiplied===!0,r=s&&!n?1:0;Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(t=A.width,a=A.height)}const o=this.nextId++;return this.textures.set(o,{texture:i,width:t,height:a}),{id:o,width:t,height:a}}canCreateSVGAFrameTable(){return this.svgaFrameTableSupported&&this.maxVertexTextureImageUnits>=2&&this.maxTextureSize>=3}assertSVGAFrameTableSupport(){if(!this.canCreateSVGAFrameTable())throw new Error(`WebGL2 SVGA frame table unsupported (vertexTextureUnits=${this.maxVertexTextureImageUnits}, maxTextureSize=${this.maxTextureSize}, shader=${this.svgaFrameTableSupported?"ready":"unavailable"})`)}createFloatTableTexture(A,g,I,B){const Q=this.gl,E=Math.floor(g),i=Math.floor(I);if(E<1||i<1||E>this.maxTextureSize||i>this.maxTextureSize)throw new RangeError(`[WebGL2] ${B} dimensions ${E}x${i} exceed MAX_TEXTURE_SIZE=${this.maxTextureSize}`);if(A.length!==E*i*4)throw new RangeError(`[WebGL2] ${B} data length ${A.length} does not match ${E}x${i} RGBA texels`);Q.activeTexture(Q.TEXTURE0),this.cachedTex0Id=null;const e=Q.createTexture();if(!e)throw new Error(`[WebGL2] failed to create ${B} texture`);Q.bindTexture(Q.TEXTURE_2D,e),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_MIN_FILTER,Q.NEAREST),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_MAG_FILTER,Q.NEAREST),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_WRAP_S,Q.CLAMP_TO_EDGE),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_WRAP_T,Q.CLAMP_TO_EDGE);const t=Q.getParameter(Q.UNPACK_ALIGNMENT);Q.pixelStorei(Q.UNPACK_ALIGNMENT,1);try{Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA32F,E,i,0,Q.RGBA,Q.FLOAT,A);const a=Q.getError();if(a!==Q.NO_ERROR)throw new Error(`GL error 0x${a.toString(16)} while uploading ${B}`)}catch(a){throw Q.deleteTexture(e),a}finally{Q.pixelStorei(Q.UNPACK_ALIGNMENT,t||4)}return{texture:e,width:E,height:i}}createLinearFloatTableTexture(A,g,I,B){const Q=Math.floor(g),E=Math.max(1,Math.floor(I));if(Q<1||A.length!==Q*4)throw new RangeError(`[WebGL2] ${B} requires ${Q*4} floats, got ${A.length}`);const i=this.maxTextureSize-this.maxTextureSize%E;if(i<E)throw new RangeError(`[WebGL2] ${B} cannot fit a ${E}-texel record in MAX_TEXTURE_SIZE=${this.maxTextureSize}`);const e=Math.max(E,Math.min(i,Q-Q%E||E)),t=Math.ceil(Q/e);if(t>this.maxTextureSize)throw new RangeError(`[WebGL2] ${B} dimensions ${e}x${t} exceed MAX_TEXTURE_SIZE=${this.maxTextureSize}`);const a=e*t===Q?A:new Float32Array(e*t*4);return a!==A&&a.set(A),this.createFloatTableTexture(a,e,t,B)}createSVGAFrameTableMetadata(A,g,I=VC){this.assertSVGAFrameTableSupport();const B=Math.floor(g);if(B<1||!Number.isFinite(B))throw new RangeError(`[WebGL2] invalid SVGA sprite metadata count: ${g}`);const Q=Math.floor(I);if(Q<8||Q%4!==0)throw new RangeError(`[WebGL2] invalid SVGA metadata stride: ${I}`);const E=new Float32Array(B*Q);if(A.length===B*4)for(let t=0;t<B;t++){const a=t*4,o=t*Q;E.set(A.subarray(a,a+4),o),E[o+4]=t,E[o+5]=0}else if(A.length===E.length)E.set(A);else throw new RangeError(`[WebGL2] SVGA sprite metadata requires ${B*4} or ${E.length} floats, got ${A.length}`);const i=this.createLinearFloatTableTexture(E,B*(Q/4),Q/4,"SVGA sprite metadata"),e=this.nextId++;return this.textures.set(e,{texture:i.texture,width:i.width,height:i.height}),{id:e,width:i.width,height:i.height}}createSVGAFrameTable(A,g){var I,B,Q,E,i,e;this.assertSVGAFrameTableSupport();const t=Math.floor(g.spriteCount),a=Math.floor(g.frameCount);if(t<1||a<1||!Number.isFinite(t)||!Number.isFinite(a))throw new RangeError(`[WebGL2] invalid SVGA frame table dimensions ${t}x${a}`);const o=t*a;if(!Number.isSafeInteger(o)||A.length!==o*Vg)throw new RangeError(`[WebGL2] SVGA frame table requires ${o*Vg} floats, got ${A.length}`);const s=this.createLinearFloatTableTexture(A,o*3,3,"SVGA frame table"),n=this.nextId++,r={id:n,width:s.width,height:s.height};this.textures.set(n,{texture:s.texture,width:s.width,height:s.height});let h=g.metadataTexture,c;try{if(h&&!this.textures.has(h.id))throw new Error(`WebGL2 SVGA sprite metadata texture ${h.id} is not owned by this backend`);if(h=h!=null?h:((I=g.spriteMetadata)!=null?I:g.metadata)?this.createSVGAFrameTableMetadata((B=g.spriteMetadata)!=null?B:g.metadata,t):void 0,!g.metadataTexture&&h&&this.ownedFrameTableMetadataIds.add(h.id),g.hybridSpriteMetadata){const F=g.hybridSpriteMetadata.length/II;if(!Number.isSafeInteger(F)||F<1)throw new RangeError("SVGA Hybrid sprite metadata must contain complete 12-float rows");c=this.createSVGAFrameTableMetadata(g.hybridSpriteMetadata,F,II),this.ownedFrameTableMetadataIds.add(c.id)}}catch(F){this.gl.deleteTexture(s.texture),this.textures.delete(n);for(const d of[h,c]){if(!d||!this.ownedFrameTableMetadataIds.has(d.id))continue;const y=this.textures.get(d.id);y&&this.gl.deleteTexture(y.texture),this.textures.delete(d.id),this.ownedFrameTableMetadataIds.delete(d.id)}throw F}const D=g.atlasPageCount,w=Number.isFinite(D)&&D>0?Math.floor(D):1,l={backend:"webgl2",kind:"webgl2-texture",texture:r,textureWidth:s.width,textureHeight:s.height,spriteCount:t,frameCount:a,atlasPageCount:w,strideFloats:Vg,byteLength:A.byteLength,...h?{spriteMetadataTexture:h}:{},...c?{hybridSpriteMetadataTexture:c}:{}};return this.frameTables.set(n,{texture:s.texture,width:s.width,height:s.height,metadataTexture:h&&(E=(Q=this.textures.get(h.id))==null?void 0:Q.texture)!=null?E:null,metadataWidth:(i=h==null?void 0:h.width)!=null?i:0,metadataHeight:(e=h==null?void 0:h.height)!=null?e:0,metadataOwned:!g.metadataTexture&&!!h,binding:l}),l}deleteSVGAFrameTable(A){var g,I,B,Q,E;if(!A||A.backend!=="webgl2")return;const i=A.texture.id,e=this.frameTables.get(i);if(e){this.gl.deleteTexture(e.texture),this.textures.delete(i);const t=(g=e.binding.spriteMetadataTexture)==null?void 0:g.id;if(e.metadataOwned&&t!=null&&t!==i){const o=this.textures.get(t);o&&this.gl.deleteTexture(o.texture),this.textures.delete(t),this.ownedFrameTableMetadataIds.delete(t)}const a=(I=e.binding.hybridSpriteMetadataTexture)==null?void 0:I.id;if(a!=null&&a!==i){const o=this.textures.get(a);o&&this.gl.deleteTexture(o.texture),this.textures.delete(a),this.ownedFrameTableMetadataIds.delete(a)}this.frameTables.delete(i)}else{const t=this.textures.get(i);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(i));const a=(B=A.spriteMetadataTexture)==null?void 0:B.id;if(a!=null&&this.ownedFrameTableMetadataIds.has(a)){const s=this.textures.get(a);s&&this.gl.deleteTexture(s.texture),this.textures.delete(a),this.ownedFrameTableMetadataIds.delete(a)}const o=(Q=A.hybridSpriteMetadataTexture)==null?void 0:Q.id;if(o!=null&&this.ownedFrameTableMetadataIds.has(o)){const s=this.textures.get(o);s&&this.gl.deleteTexture(s.texture),this.textures.delete(o),this.ownedFrameTableMetadataIds.delete(o)}}this.cachedFrameTableId===i&&(this.cachedFrameTableId=null),this.cachedFrameMetadataId===((E=A.spriteMetadataTexture)==null?void 0:E.id)&&(this.cachedFrameMetadataId=null)}createEmptyTexture(A,g,I={}){const B=this.gl;B.activeTexture(B.TEXTURE0),this.cachedTex0Id=null;const Q=I.filter==="nearest"?B.NEAREST:B.LINEAR,E=WC(B,Q),i=Math.max(1,Math.floor(A)),e=Math.max(1,Math.floor(g));B.bindTexture(B.TEXTURE_2D,E),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,i,e,0,B.RGBA,B.UNSIGNED_BYTE,null);const t=this.nextId++;return this.textures.set(t,{texture:E,width:i,height:e}),{id:t,width:i,height:e}}updateTexture(A,g){const I=this.textures.get(A.id);if(!I)return;if(this.gl.activeTexture(this.gl.TEXTURE0),this.cachedTex0Id=null,typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const e=this.gl,t=vI(g),a=TI(g),o=t===I.width&&a===I.height;e.bindTexture(e.TEXTURE_2D,I.texture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),o?e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,g):(e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,g),t>0&&a>0&&(I.width=t,I.height=a)),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){const e=g.videoWidth,t=g.videoHeight,a=e!==I.width||t!==I.height;this.uploadVideoFrameToTexture(I.texture,g,a)&&a&&(I.width=e,I.height=t);return}const B=this.gl,Q=vI(g),E=TI(g),i=Q===I.width&&E===I.height;B.bindTexture(B.TEXTURE_2D,I.texture),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),i?B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g):(B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g),Q>0&&E>0&&(I.width=Q,I.height=E)),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,g,I,B,Q,E){const i=this.textures.get(A.id);if(!i)return;const e=this.gl;e.activeTexture(e.TEXTURE0),this.cachedTex0Id=null,e.bindTexture(e.TEXTURE_2D,i.texture);let t,a;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame)t=g.displayWidth||g.codedWidth,a=g.displayHeight||g.codedHeight;else if(g instanceof HTMLVideoElement){if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;t=g.videoWidth,a=g.videoHeight}else{const n=g;t=n.width,a=n.height}if(!t||!a)return;const o=Q!=null?Q:t,s=E!=null?E:a;if(o!==t||s!==a){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const n=this.videoUploadCanvas,r=this.videoUploadCtx;if(!r)return;(n.width!==o||n.height!==s)&&(n.width=o,n.height=s),r.drawImage(g,0,0,o,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,n),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0)}deleteTexture(A){const g=this.textures.get(A.id);g&&(this.gl.deleteTexture(g.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var g;const I=A.shader;if(this.currentDrawResult=$("invalid-command",`WebGL2 rejected ${I}`),this.currentDrawRecorded=!1,this.contextLost)return this.currentDrawResult=$("backend-lost","WebGL2 context is lost"),this.rejectSVGAFastPathDraw(),this.currentDrawResult;try{if(I===gB||I==="svga-timeline-instanced-premul")return this.drawSVGAFrameTableGL(A),this.completeDrawResult();if(I==="svga-frame-table-shape-premul"||I==="svga-frame-table-clip-mask")return this.drawSVGAFrameTableMeshGL(A),this.completeDrawResult();if(A.shader==="svga-instanced-premul")return this.drawInstancedSvgaGL(A),this.completeDrawResult();if(A.shader==="clip-mask-instanced")return this.drawInstancedClipMaskGL(A),this.completeDrawResult();if(A.shader==="alpha-video-instanced")return this.drawInstancedAlphaGL(A),this.completeDrawResult();if(A.shader==="vap-instanced")return this.drawInstancedVapGL(A),this.completeDrawResult();if(A.shader==="particle-instanced")return this.drawInstancedParticlesGL(A),this.completeDrawResult();if(A.shader==="particle-sprite-instanced")return this.drawInstancedParticleSpritesGL(A),this.completeDrawResult();const B=this.gl,Q=(g=A.stencil)!=null?g:"none",E=A.shader==="clip-mask"||Q==="clear"?"clip-mask":A.shader,i=this.programs.get(E);if(!i)return this.rejectDrawResult("invalid-command",`WebGL2 shader unavailable: ${E}`);Q==="clear"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,0,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1)):Q==="write"||A.shader==="clip-mask"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,1,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1)):Q==="test"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.EQUAL,1,255),B.stencilOp(B.KEEP,B.KEEP,B.KEEP),B.stencilMask(0),B.colorMask(!0,!0,!0,!0)):(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==E&&(B.useProgram(i.program),this.cachedDrawProgram=E);for(let a=0;a<A.textures.length;a++){const o=A.textures[a].id;if(a===0&&this.cachedTex0Id===o)continue;const s=this.textures.get(o);if(!s)return this.rejectDrawResult("missing-resource",`WebGL2 texture ${o} is unavailable`);B.activeTexture(B.TEXTURE0+a),B.bindTexture(B.TEXTURE_2D,s.texture),a===0&&(this.cachedTex0Id=o)}this.applyDrawUniforms(i,E,A);const e=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);return!e||!t?this.rejectDrawResult("missing-resource","WebGL2 draw buffer is unavailable"):(this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)&&(B.bindBuffer(B.ARRAY_BUFFER,e.buffer),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,t.buffer),this.setupAttributes(E)),B.drawElements(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0),this.recordSubmittedDraw(),(Q!=="none"||A.shader==="clip-mask")&&(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)),tg)}catch(B){return this.rejectDrawResult("submission-error",this.errorMessage(B))}}completeDrawResult(){return this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}rejectDrawResult(A,g){return this.currentDrawResult=$(A,g),this.rejectSVGAFastPathDraw(),this.currentDrawResult}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,g,I,B){const Q=this.gl,E=this.canvas.width,i=this.canvas.height,e=Math.max(0,Math.min(E,Math.floor(A))),t=Math.max(0,Math.min(i,Math.floor(g))),a=Math.max(e,Math.min(E,Math.ceil(A+I))),o=Math.max(t,Math.min(i,Math.ceil(g+B)));Q.enable(Q.SCISSOR_TEST),Q.scissor(e,i-o,a-e,o-t)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const g=this.gl;if(A===gB){g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0);for(let B=1;B<=9;B++)g.vertexAttribDivisor(B,0),g.disableVertexAttribArray(B)}else if(A==="svga-batch-premul"||A==="svga-frame-table-shape-premul")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,3,g.FLOAT,!1,36,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,4,g.FLOAT,!1,36,12),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,36,28);else if(A==="vap")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,24,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,24,8),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,24,16);else if(A==="clip-mask"||A==="svga-frame-table-clip-mask")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0),g.disableVertexAttribArray(1),g.disableVertexAttribArray(2);else{g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,16,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,16,8);for(let B=2;B<=9;B++)g.vertexAttribDivisor(B,0),g.disableVertexAttribArray(B)}}bindCachedVertexArray(A,g,I){const B=this.gl;let Q=this.vertexArrays.get(A);Q||(Q=new Map,this.vertexArrays.set(A,Q));let E=Q.get(g);E||(E=new Map,Q.set(g,E));const i=E.get(I);if(i)return B.bindVertexArray(i),!1;const e=B.createVertexArray();if(!e)throw new Error("Failed to create vertex array");return E.set(I,e),B.bindVertexArray(e),!0}deleteVertexArraysForBuffer(A){const g=this.gl;for(const[I,B]of this.vertexArrays){for(const[Q,E]of B){if(Q===A){for(const e of E.values())g.deleteVertexArray(e);B.delete(Q);continue}const i=E.get(A);i&&(g.deleteVertexArray(i),E.delete(A)),E.size===0&&B.delete(Q)}B.size===0&&this.vertexArrays.delete(I)}}deleteAllVertexArrays(){for(const A of this.vertexArrays.values())for(const g of A.values())for(const I of g.values())this.gl.deleteVertexArray(I);this.vertexArrays.clear()}ensureInstancedSvgaInstanceBuffer(){const A=this.gl;if(!this.instancedSvgaInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,xA.INST_SVGA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedSvgaInstanceGLBuffer=g}return this.instancedSvgaInstanceGLBuffer}uploadSVGASlotStates(A,g,I=-1){const B=this.gl,Q=g*4;if(g<1||A.length<g*$A||Q<1)return null;const E=Math.min(this.maxTextureSize,Math.max(4,2**Math.ceil(Math.log2(Q)))),i=Math.ceil(Q/E);if(i>this.maxTextureSize||!this.svgaSlotStateTexture&&(this.svgaSlotStateTexture=B.createTexture(),!this.svgaSlotStateTexture))return null;if(B.activeTexture(B.TEXTURE3),B.bindTexture(B.TEXTURE_2D,this.svgaSlotStateTexture),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MIN_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MAG_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_S,B.CLAMP_TO_EDGE),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_T,B.CLAMP_TO_EDGE),(this.svgaSlotStateTextureWidth!==E||this.svgaSlotStateTextureHeight!==i)&&(B.texImage2D(B.TEXTURE_2D,0,B.RGBA32F,E,i,0,B.RGBA,B.FLOAT,null),this.svgaSlotStateTextureWidth=E,this.svgaSlotStateTextureHeight=i),I>=0&&this.svgaSlotStateUploadId===I)return{width:E,height:i};const e=E*i*4,t=A.subarray(0,g*$A);let a=t;return e!==t.length&&(this.svgaSlotStateUploadScratch.length<e&&(this.svgaSlotStateUploadScratch=new Float32Array(e)),this.svgaSlotStateUploadScratch.fill(0,0,e),this.svgaSlotStateUploadScratch.set(t),a=this.svgaSlotStateUploadScratch.subarray(0,e)),B.texSubImage2D(B.TEXTURE_2D,0,0,0,E,i,B.RGBA,B.FLOAT,a,0),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=g*$A*Float32Array.BYTES_PER_ELEMENT,this.svgaSlotStateUploadId=I,{width:E,height:i}}resolveSVGAFrameTableSlotState(A,g){var I,B,Q,E,i,e,t,a,o,s,n,r,h,c,D,w,l,F,d,y,G,f,u,R,M,N,S,Y,U,k,m,J,q,_,Z,x,X,T,gA,UA,yA,rA,BA,Ig,QA,V,YA,kA,W,pA,LA,ag,OA,KA,qA;const sA=A.uniforms,L=(B=(I=A.svgaFrameTableSlotState)!=null?I:A.svgaSlotState)!=null?B:sA.u_svgaSlotState instanceof Float32Array?sA.u_svgaSlotState:sA.u_slotState instanceof Float32Array?sA.u_slotState:null,EA=sA.u_transform,Bg=sA.u_clipRect,AA=A.svgaFrameTableParentAffine,DA=A.svgaFrameTableParentTranslate,IA=A.svgaFrameTableClipRect,mg=A.svgaFrameIndex!=null||A.svgaFrameTableFrameIndex!=null||A.frameTableFrameIndex!=null,Jg=A.svgaFrameTableOpacity!=null||typeof sA.u_opacity=="number";let Cg=1,GA=0,fA=0,dA=1,iA=0,eA=0,tA=(Q=A.svgaFrameTableOpacity)!=null?Q:typeof sA.u_opacity=="number"?sA.u_opacity:1,hA=(e=(i=(E=A.svgaFrameIndex)!=null?E:A.svgaFrameTableFrameIndex)!=null?i:A.frameTableFrameIndex)!=null?e:0,aA=0,nA=0,RA=this.canvas.width,uA=this.canvas.height,vA=0,Qg=(n=(s=(o=(a=(t=A.svgaFrameTableMetadataBase)!=null?t:A.svgaFrameTableSpriteBase)!=null?a:A.frameTableSpriteBase)!=null?o:A.svgaSpriteMetadataBase)!=null?s:A.svgaSpriteBase)!=null?n:0,Og=(r=A.svgaFrameTableAtlasPage)!=null?r:-1;if(AA&&AA.length>=4)Cg=(h=AA[0])!=null?h:Cg,GA=(c=AA[1])!=null?c:GA,fA=(D=AA[2])!=null?D:fA,dA=(w=AA[3])!=null?w:dA,DA&&DA.length>=2&&(iA=(l=DA[0])!=null?l:iA,eA=(F=DA[1])!=null?F:eA),IA&&IA.length>=4&&(aA=(d=IA[0])!=null?d:aA,nA=(y=IA[1])!=null?y:nA,RA=(G=IA[2])!=null?G:RA,uA=(f=IA[3])!=null?f:uA,vA=1);else if(L&&L.length>=13)Cg=(u=L[0])!=null?u:Cg,GA=(R=L[1])!=null?R:GA,fA=(M=L[2])!=null?M:fA,dA=(N=L[3])!=null?N:dA,iA=(S=L[4])!=null?S:iA,eA=(Y=L[5])!=null?Y:eA,Jg||(tA=(U=L[6])!=null?U:tA),mg||(hA=(k=L[7])!=null?k:hA),aA=(m=L[8])!=null?m:aA,nA=(J=L[9])!=null?J:nA,RA=(q=L[10])!=null?q:RA,uA=(_=L[11])!=null?_:uA,vA=((Z=L[12])!=null?Z:0)>.5?1:0,A.svgaFrameTableMetadataBase==null&&A.svgaFrameTableSpriteBase==null&&A.frameTableSpriteBase==null&&A.svgaSpriteMetadataBase==null&&A.svgaSpriteBase==null&&L.length>=14&&(Qg=(x=L[13])!=null?x:Qg);else if(EA instanceof Float32Array&&EA.length>=16){Cg=(X=EA[0])!=null?X:Cg,GA=(T=EA[1])!=null?T:GA,fA=(gA=EA[4])!=null?gA:fA,dA=(UA=EA[5])!=null?UA:dA,iA=(yA=EA[12])!=null?yA:iA,eA=(rA=EA[13])!=null?rA:eA;const PA=Bg instanceof Float32Array&&Bg.length>=4?Bg:IA;PA&&PA.length>=4&&(aA=(BA=PA[0])!=null?BA:aA,nA=(Ig=PA[1])!=null?Ig:nA,RA=(QA=PA[2])!=null?QA:RA,uA=(V=PA[3])!=null?V:uA,vA=typeof sA.u_clipEnabled=="number"?sA.u_clipEnabled>.5?1:0:1)}return AA&&L&&L.length>=13&&(DA||(iA=(YA=L[4])!=null?YA:iA,eA=(kA=L[5])!=null?kA:eA),Jg||(tA=(W=L[6])!=null?W:tA),mg||(hA=(pA=L[7])!=null?pA:hA),IA||(aA=(LA=L[8])!=null?LA:aA,nA=(ag=L[9])!=null?ag:nA,RA=(OA=L[10])!=null?OA:RA,uA=(KA=L[11])!=null?KA:uA,vA=((qA=L[12])!=null?qA:0)>.5?1:0)),Number.isFinite(tA)||(tA=1),Number.isFinite(hA)||(hA=0),Number.isFinite(Qg)||(Qg=0),Number.isFinite(Og)||(Og=-1),hA=Math.max(0,Math.min(Math.max(1,g)-1,Math.floor(hA))),Qg=Math.max(0,Math.floor(Qg)),[Cg,GA,fA,dA,iA,eA,tA,aA,nA,RA,uA].every(Number.isFinite)?{parentA:Cg,parentB:GA,parentC:fA,parentD:dA,tx:iA,ty:eA,opacity:tA,frameIndex:hA,clipX0:aA,clipY0:nA,clipX1:RA,clipY1:uA,clipEnabled:vA,metadataBase:Qg,atlasPage:Math.max(-1,Math.floor(Og))}:null}drawSVGAFrameTableGL(A){var g,I,B,Q,E,i,e,t,a,o,s,n,r,h,c,D,w,l,F,d,y,G,f,u;const R=this.gl;if(!this.svgaFrameTableSupported){this.rejectSVGAFastPathDraw();return}const M=(g=A.svgaFrameTable)!=null?g:null,N=M&&typeof M=="object"&&"backend"in M?M:null,S=(E=(Q=(B=(I=(N==null?void 0:N.backend)==="webgl2"?N.texture:null)!=null?I:M&&"id"in M?M:null)!=null?B:A.svgaFrameTableTexture)!=null?Q:A.frameTableTexture)!=null?E:null;if(!S){this.rejectSVGAFastPathDraw();return}const Y=this.frameTables.get(S.id);if(!Y){this.rejectSVGAFastPathDraw();return}const U=(a=(e=(i=A.svgaSpriteMetadataTexture)!=null?i:A.svgaSpriteMetadata)!=null?e:A.spriteMetadataTexture)!=null?a:(N==null?void 0:N.backend)==="webgl2"&&(t=N.spriteMetadataTexture)!=null?t:null;if(!U){this.rejectSVGAFastPathDraw();return}const k=this.textures.get(U.id);if(!k){this.rejectSVGAFastPathDraw();return}const m=(o=A.svgaFrameTableFrameCount)!=null?o:A.frameTableFrameCount,J=(s=A.svgaFrameTableSpriteCount)!=null?s:A.frameTableSpriteCount,q=Math.floor(Number.isFinite(m)?m:(N==null?void 0:N.backend)==="webgl2"?N.frameCount:0),_=Math.floor(Number.isFinite(J)?J:(N==null?void 0:N.backend)==="webgl2"?N.spriteCount:0),Z=Math.floor((n=A.instanceCount)!=null?n:0),x=A.instanceData,X=A.svgaFrameTableSlotStates,T=Math.floor((r=A.svgaFrameTableSlotStateCount)!=null?r:0),gA=Math.floor((h=A.svgaFrameTableSpritesPerSlot)!=null?h:0),UA=X!=null&&T>0&&gA>0&&T*gA===Z&&X.length>=T*$A,yA=!UA&&x!=null&&x.length>=Z*$A,rA=Y.width*Y.height,BA=k.width*k.height,QA=Math.floor((c=A.svgaSpriteMetadataStrideFloats)!=null?c:VC)/4,V=this.resolveSVGAFrameTableSlotState(A,q);let YA=(D=V==null?void 0:V.metadataBase)!=null?D:-1;if(V)if(UA)YA+=gA;else if(yA){let AA=-1;for(let DA=0;DA<Z;DA++){const IA=Math.floor((w=x[DA*$A+Ng.metadataBase])!=null?w:-1);IA>AA&&(AA=IA)}YA=AA+1}else YA+=Z;if(Z<1||Z>2048||q<1||_<1||!Number.isSafeInteger(q)||!Number.isSafeInteger(_)||!Number.isSafeInteger(QA)||QA<2||q*_*3>rA||!V||V.metadataBase<0||YA<1||YA*QA>BA){this.rejectSVGAFastPathDraw();return}const kA=gB,W=this.programs.get(kA);if(!W){this.rejectSVGAFastPathDraw();return}const pA=A.textures[0],LA=pA?this.textures.get(pA.id):null;if(!LA){this.rejectSVGAFastPathDraw();return}const ag=(l=A.stencil)!=null?l:"none";ag==="test"?(R.enable(R.STENCIL_TEST),R.stencilFunc(R.EQUAL,1,255),R.stencilOp(R.KEEP,R.KEEP,R.KEEP),R.stencilMask(0),R.colorMask(!0,!0,!0,!0)):(R.disable(R.STENCIL_TEST),R.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==kA&&(R.useProgram(W.program),this.cachedDrawProgram=kA),R.activeTexture(R.TEXTURE0),this.cachedTex0Id!==pA.id&&(R.bindTexture(R.TEXTURE_2D,LA.texture),this.cachedTex0Id=pA.id),R.activeTexture(R.TEXTURE1),this.cachedFrameTableId!==S.id&&(R.bindTexture(R.TEXTURE_2D,Y.texture),this.cachedFrameTableId=S.id),R.activeTexture(R.TEXTURE2),this.cachedFrameMetadataId!==U.id&&(R.bindTexture(R.TEXTURE_2D,k.texture),this.cachedFrameMetadataId=U.id);let OA=null;if(UA&&(OA=this.uploadSVGASlotStates(X,T,A.svgaFrameTableSlotStateUploadId),!OA)){this.rejectSVGAFastPathDraw();return}this.applyProjectionUniform(W,kA,A.uniforms.u_projection);const KA=this.svgaTableInfoScratch;KA[0]=q,KA[1]=_,KA[2]=3,KA[3]=0;const qA=this.svgaTableSizeScratch;qA[0]=Y.width,qA[1]=Y.height;const sA=this.svgaMetadataSizeScratch;sA[0]=k.width,sA[1]=k.height;const L=R;if(W.tableInfoLoc&&((F=L.uniform4iv)==null||F.call(L,W.tableInfoLoc,KA)),W.frameTableSizeLoc&&((d=L.uniform2iv)==null||d.call(L,W.frameTableSizeLoc,qA)),W.spriteMetadataSizeLoc&&((y=L.uniform2iv)==null||y.call(L,W.spriteMetadataSizeLoc,sA)),W.spriteMetadataStrideLoc&&R.uniform1i(W.spriteMetadataStrideLoc,QA),W.spriteBaseLoc&&R.uniform1i(W.spriteBaseLoc,V.metadataBase),W.frameIndexLoc&&R.uniform1i(W.frameIndexLoc,V.frameIndex),W.parentAffineLoc&&R.uniform4f(W.parentAffineLoc,V.parentA,V.parentB,V.parentC,V.parentD),W.parentTranslateLoc&&R.uniform2f(W.parentTranslateLoc,V.tx,V.ty),W.slotOpacityLoc&&R.uniform1f(W.slotOpacityLoc,V.opacity),W.atlasPageLoc&&R.uniform1i(W.atlasPageLoc,V.atlasPage),W.clipRectLoc&&R.uniform4f(W.clipRectLoc,V.clipX0,V.clipY0,V.clipX1,V.clipY1),W.clipEnabledLoc&&R.uniform1f(W.clipEnabledLoc,V.clipEnabled),W.canvasHeightLoc&&R.uniform1f(W.canvasHeightLoc,this.canvas.height),W.instanceStateEnabledLoc&&R.uniform1f(W.instanceStateEnabledLoc,yA?1:0),W.compactSlotStateEnabledLoc&&R.uniform1f(W.compactSlotStateEnabledLoc,UA?1:0),W.spritesPerSlotLoc&&R.uniform1i(W.spritesPerSlotLoc,UA?gA:1),W.slotStateSizeLoc){const AA=new Int32Array([(G=OA==null?void 0:OA.width)!=null?G:1,(f=OA==null?void 0:OA.height)!=null?f:1]);(u=L.uniform2iv)==null||u.call(L,W.slotStateSizeLoc,AA)}const EA=this.buffers.get(A.vertexBuffer.id),Bg=this.buffers.get(A.indexBuffer.id);if(!EA||!Bg){this.rejectSVGAFastPathDraw();return}if(this.bindCachedVertexArray(kA,A.vertexBuffer.id,A.indexBuffer.id)&&(R.bindBuffer(R.ARRAY_BUFFER,EA.buffer),R.bindBuffer(R.ELEMENT_ARRAY_BUFFER,Bg.buffer),this.setupAttributes(kA)),yA){const AA=this.ensureInstancedSvgaInstanceBuffer();R.bindBuffer(R.ARRAY_BUFFER,AA),R.bufferSubData(R.ARRAY_BUFFER,0,x,0,Z*$A),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=Z*$A*Float32Array.BYTES_PER_ELEMENT;const DA=16*Float32Array.BYTES_PER_ELEMENT;for(let IA=1;IA<=4;IA++)R.enableVertexAttribArray(IA),R.vertexAttribPointer(IA,4,R.FLOAT,!1,DA,(IA-1)*4*Float32Array.BYTES_PER_ELEMENT),R.vertexAttribDivisor(IA,1)}else for(let AA=1;AA<=4;AA++)R.disableVertexAttribArray(AA),R.vertexAttribDivisor(AA,0);R.drawElementsInstanced(R.TRIANGLES,A.indexCount,R.UNSIGNED_INT,0,Z),this.recordSubmittedDraw(),ag!=="none"&&(R.disable(R.STENCIL_TEST),R.colorMask(!0,!0,!0,!0))}drawSVGAFrameTableMeshGL(A){var g,I,B,Q,E,i,e,t,a,o,s,n,r,h;const c=this.gl;if(!this.svgaFrameTableSupported)return;const D=(g=A.svgaFrameTable)!=null?g:null,w=D&&typeof D=="object"&&"backend"in D?D:null,l=(w==null?void 0:w.backend)==="webgl2"?w.texture:(I=A.svgaFrameTableTexture)!=null?I:null;if(!l)return;const F=this.frameTables.get(l.id);if(!F)return;const d=Math.floor((Q=(B=A.svgaFrameTableFrameCount)!=null?B:w==null?void 0:w.frameCount)!=null?Q:0),y=Math.floor((i=(E=A.svgaFrameTableSpriteCount)!=null?E:w==null?void 0:w.spriteCount)!=null?i:0),G=Math.floor((e=A.instanceCount)!=null?e:1),f=A.svgaFrameTableSlotStates,u=Math.floor((t=A.svgaFrameTableSlotStateCount)!=null?t:0),R=f!=null&&u===G&&A.svgaFrameTableSpritesPerSlot===1&&f.length>=u*$A,M=this.resolveSVGAFrameTableSlotState(A,d);if(!M||d<1||y<1||G<1||G>2048)return;const N=A.shader,S=this.programs.get(N);if(!S)return;const Y=(a=A.stencil)!=null?a:"none";Y==="clear"?(c.enable(c.STENCIL_TEST),c.stencilFunc(c.ALWAYS,0,255),c.stencilOp(c.KEEP,c.KEEP,c.REPLACE),c.stencilMask(255),c.colorMask(!1,!1,!1,!1)):Y==="write"?(c.enable(c.STENCIL_TEST),c.stencilFunc(c.ALWAYS,1,255),c.stencilOp(c.KEEP,c.KEEP,c.REPLACE),c.stencilMask(255),c.colorMask(!1,!1,!1,!1)):Y==="test"?(c.enable(c.STENCIL_TEST),c.stencilFunc(c.EQUAL,1,255),c.stencilOp(c.KEEP,c.KEEP,c.KEEP),c.stencilMask(0),c.colorMask(!0,!0,!0,!0)):(c.disable(c.STENCIL_TEST),c.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==N&&(c.useProgram(S.program),this.cachedDrawProgram=N),c.activeTexture(c.TEXTURE0),this.cachedTex0Id!==l.id&&(c.bindTexture(c.TEXTURE_2D,F.texture),this.cachedTex0Id=l.id),this.applyProjectionUniform(S,N,A.uniforms.u_projection),this.svgaTableInfoScratch[0]=d,this.svgaTableInfoScratch[1]=y,this.svgaTableInfoScratch[2]=3,this.svgaTableInfoScratch[3]=0,this.svgaTableSizeScratch[0]=F.width,this.svgaTableSizeScratch[1]=F.height;const U=c;S.tableInfoLoc&&((o=U.uniform4iv)==null||o.call(U,S.tableInfoLoc,this.svgaTableInfoScratch)),S.frameTableSizeLoc&&((s=U.uniform2iv)==null||s.call(U,S.frameTableSizeLoc,this.svgaTableSizeScratch)),S.spriteBaseLoc&&c.uniform1i(S.spriteBaseLoc,M.metadataBase),S.frameIndexLoc&&c.uniform1i(S.frameIndexLoc,M.frameIndex),S.parentAffineLoc&&c.uniform4f(S.parentAffineLoc,M.parentA,M.parentB,M.parentC,M.parentD),S.parentTranslateLoc&&c.uniform2f(S.parentTranslateLoc,M.tx,M.ty),S.slotOpacityLoc&&c.uniform1f(S.slotOpacityLoc,M.opacity),S.clipRectLoc&&c.uniform4f(S.clipRectLoc,M.clipX0,M.clipY0,M.clipX1,M.clipY1),S.clipEnabledLoc&&c.uniform1f(S.clipEnabledLoc,M.clipEnabled),S.canvasHeightLoc&&c.uniform1f(S.canvasHeightLoc,this.canvas.height);let k=null;if(R&&(k=this.uploadSVGASlotStates(f,u,A.svgaFrameTableSlotStateUploadId),!k))return;S.compactSlotStateEnabledLoc&&c.uniform1f(S.compactSlotStateEnabledLoc,R?1:0),S.slotStateSizeLoc&&(this.svgaTableSizeScratch[0]=(n=k==null?void 0:k.width)!=null?n:1,this.svgaTableSizeScratch[1]=(r=k==null?void 0:k.height)!=null?r:1,(h=U.uniform2iv)==null||h.call(U,S.slotStateSizeLoc,this.svgaTableSizeScratch));const m=this.buffers.get(A.vertexBuffer.id),J=this.buffers.get(A.indexBuffer.id);!m||!J||(this.bindCachedVertexArray(N,A.vertexBuffer.id,A.indexBuffer.id)&&(c.bindBuffer(c.ARRAY_BUFFER,m.buffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,J.buffer),this.setupAttributes(N)),c.drawElementsInstanced(c.TRIANGLES,A.indexCount,c.UNSIGNED_INT,0,G),this.recordSubmittedDraw(),Y!=="none"&&(c.disable(c.STENCIL_TEST),c.colorMask(!0,!0,!0,!0)))}drawInstancedParticlesGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0;if(B<1||!A.instanceBuffer)return;const Q=this.buffers.get(A.instanceBuffer.id),E=this.buffers.get(A.vertexBuffer.id),i=this.buffers.get(A.indexBuffer.id),e=this.programs.get("particle-instanced");if(!Q||!E||!i||!e)return;I.useProgram(e.program),this.cachedDrawProgram="particle-instanced",this.applyProjectionUniform(e,"particle-instanced",A.uniforms.u_projection);const t=A.uniforms.u_time,a=A.uniforms.u_particleSize,o=A.uniforms.u_globalAlpha;I.uniform1f(I.getUniformLocation(e.program,"u_time"),typeof t=="number"?t:0),I.uniform1f(I.getUniformLocation(e.program,"u_particleSize"),typeof a=="number"?a:8),I.uniform1f(I.getUniformLocation(e.program,"u_globalAlpha"),typeof o=="number"?o:1),I.bindVertexArray(null),I.bindBuffer(I.ARRAY_BUFFER,E.buffer),I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,8,0),I.vertexAttribDivisor(0,0),I.bindBuffer(I.ARRAY_BUFFER,Q.buffer);const s=64;for(let n=1;n<=4;n++)I.enableVertexAttribArray(n),I.vertexAttribPointer(n,4,I.FLOAT,!1,s,16+(n-1)*16),I.vertexAttribDivisor(n,1);I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,i.buffer),I.blendFunc(I.ONE,A.particleBlend==="additive"?I.ONE:I.ONE_MINUS_SRC_ALPHA),I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw(),I.blendFunc(I.ONE,I.ONE_MINUS_SRC_ALPHA)}drawInstancedParticleSpritesGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0;if(B<1||!A.instanceBuffer||!A.textures[0])return;const Q=this.buffers.get(A.instanceBuffer.id),E=this.buffers.get(A.vertexBuffer.id),i=this.buffers.get(A.indexBuffer.id),e=this.textures.get(A.textures[0].id);if(!Q||!E||!i||!e)return;const t=this.ensureParticleSpriteProgram();I.useProgram(t.program),this.cachedDrawProgram="particle-sprite-instanced",this.applyProjectionUniform(t,"particle-sprite-instanced",A.uniforms.u_projection);const a=A.uniforms.u_time,o=A.uniforms.u_globalAlpha,s=A.uniforms.u_sizeEnvelope,n=A.uniforms.u_fadeMode,r=A.uniforms.u_cssScale;t.particleTimeLoc&&I.uniform1f(t.particleTimeLoc,typeof a=="number"?a:0),t.particleGlobalAlphaLoc&&I.uniform1f(t.particleGlobalAlphaLoc,typeof o=="number"?o:1),t.particleSizeEnvelopeLoc&&I.uniform1f(t.particleSizeEnvelopeLoc,typeof s=="number"?s:1),t.particleFadeModeLoc&&I.uniform1f(t.particleFadeModeLoc,typeof n=="number"?n:1),t.particleCssScaleLoc&&I.uniform2fv(t.particleCssScaleLoc,r instanceof Float32Array&&r.length>=2?r:qi),I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,e.texture),this.cachedTex0Id=A.textures[0].id,I.bindVertexArray(null),I.bindBuffer(I.ARRAY_BUFFER,E.buffer),I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,8,0),I.vertexAttribDivisor(0,0),I.bindBuffer(I.ARRAY_BUFFER,Q.buffer);const h=96;for(let c=1;c<=6;c++)I.enableVertexAttribArray(c),I.vertexAttribPointer(c,4,I.FLOAT,!1,h,32+(c-1)*16),I.vertexAttribDivisor(c,1);I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,i.buffer),I.blendFunc(I.ONE,A.particleBlend==="additive"?I.ONE:I.ONE_MINUS_SRC_ALPHA),I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw(),I.blendFunc(I.ONE,I.ONE_MINUS_SRC_ALPHA)}drawInstancedSvgaGL(A){var g,I;const B=this.gl,Q=(g=A.instanceCount)!=null?g:0,E=A.instanceData;if(Q<1||!E||E.length<Q*xA.INST_SVGA_GL_FLOATS)return;if(Q>xA.INST_SVGA_GL_MAX){console.warn("[WebGL2] svga-instanced-premul: instanceCount exceeds max",Q);return}const i=(I=A.stencil)!=null?I:"none";i==="test"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.EQUAL,1,255),B.stencilOp(B.KEEP,B.KEEP,B.KEEP),B.stencilMask(0),B.colorMask(!0,!0,!0,!0)):(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0));const e="svga-instanced-premul",t=this.programs.get(e);if(!t)return;this.cachedDrawProgram!==e&&(B.useProgram(t.program),this.cachedDrawProgram=e);for(let n=0;n<A.textures.length;n++){const r=A.textures[n].id;if(n===0&&this.cachedTex0Id===r)continue;const h=this.textures.get(r);h&&(B.activeTexture(B.TEXTURE0+n),B.bindTexture(B.TEXTURE_2D,h.texture),n===0&&(this.cachedTex0Id=r))}this.applyProjectionUniform(t,e,A.uniforms.u_projection);const a=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!a||!o)return;const s=this.ensureInstancedSvgaInstanceBuffer();if(B.bindBuffer(B.ARRAY_BUFFER,s),B.bufferSubData(B.ARRAY_BUFFER,0,E,0,Q*xA.INST_SVGA_GL_FLOATS),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=Q*xA.INST_SVGA_GL_FLOATS*Float32Array.BYTES_PER_ELEMENT,this.bindCachedVertexArray(e,A.vertexBuffer.id,A.indexBuffer.id)){const n=xA.INST_SVGA_GL_STRIDE;B.bindBuffer(B.ARRAY_BUFFER,s),B.enableVertexAttribArray(1),B.vertexAttribPointer(1,4,B.FLOAT,!1,n,0),B.vertexAttribDivisor(1,1),B.enableVertexAttribArray(2),B.vertexAttribPointer(2,3,B.FLOAT,!1,n,16),B.vertexAttribDivisor(2,1),B.enableVertexAttribArray(3),B.vertexAttribPointer(3,4,B.FLOAT,!1,n,28),B.vertexAttribDivisor(3,1),B.enableVertexAttribArray(4),B.vertexAttribIPointer(4,2,B.UNSIGNED_INT,n,44),B.vertexAttribDivisor(4,1),B.bindBuffer(B.ARRAY_BUFFER,a.buffer),B.enableVertexAttribArray(0),B.vertexAttribPointer(0,2,B.FLOAT,!1,8,0),B.vertexAttribDivisor(0,0),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,o.buffer)}B.drawElementsInstanced(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0,Q),this.recordSubmittedDraw(),i!=="none"&&(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0))}ensureInstancedClipMaskBuffer(){const A=this.gl;if(!this.instancedClipMaskGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,xA.INST_CLIP_MASK_GL_BYTES,A.DYNAMIC_DRAW),this.instancedClipMaskGLBuffer=g}return this.instancedClipMaskGLBuffer}drawInstancedClipMaskGL(A){var g,I;const B=this.gl,Q=(g=A.instanceCount)!=null?g:0,E=A.instanceData;if(Q<1||!E||E.length<Q*xA.INST_CLIP_MASK_GL_FLOATS)return;if(Q>xA.INST_CLIP_MASK_GL_MAX){console.warn("[WebGL2] clip-mask-instanced: instanceCount exceeds max",Q);return}const i="clip-mask-instanced",e=this.programs.get(i);if(!e)return;const t=this.buffers.get(A.vertexBuffer.id),a=this.buffers.get(A.indexBuffer.id);if(!t||!a)return;const o=(I=A.stencil)!=null?I:"write";B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,o==="clear"?0:1,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1),this.cachedDrawProgram!==i&&(B.useProgram(e.program),this.cachedDrawProgram=i),this.applyProjectionUniform(e,i,A.uniforms.u_projection);const s=this.ensureInstancedClipMaskBuffer();if(B.bindBuffer(B.ARRAY_BUFFER,s),o!=="clear"&&B.bufferSubData(B.ARRAY_BUFFER,0,E,0,Q*xA.INST_CLIP_MASK_GL_FLOATS),this.bindCachedVertexArray(i,A.vertexBuffer.id,A.indexBuffer.id)){const n=xA.INST_CLIP_MASK_GL_STRIDE;B.bindBuffer(B.ARRAY_BUFFER,s),B.enableVertexAttribArray(1),B.vertexAttribPointer(1,4,B.FLOAT,!1,n,0),B.vertexAttribDivisor(1,1),B.enableVertexAttribArray(2),B.vertexAttribPointer(2,2,B.FLOAT,!1,n,16),B.vertexAttribDivisor(2,1),B.bindBuffer(B.ARRAY_BUFFER,t.buffer),B.enableVertexAttribArray(0),B.vertexAttribPointer(0,2,B.FLOAT,!1,8,0),B.vertexAttribDivisor(0,0),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,a.buffer)}B.drawElementsInstanced(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0,Q),this.recordSubmittedDraw(),B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)}ensureInstancedAlphaInstanceBuffer(){const A=this.gl;if(!this.instancedAlphaInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,xA.INST_ALPHA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedAlphaInstanceGLBuffer=g}return this.instancedAlphaInstanceGLBuffer}drawInstancedAlphaGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*12)return;if(B>xA.INST_ALPHA_GL_MAX){console.warn("[WebGL2] alpha-video-instanced: instanceCount exceeds max",B);return}I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0);const E="alpha-video-instanced",i=this.programs.get("alpha-video-instanced");if(!i)return;this.cachedDrawProgram!==E&&(I.useProgram(i.program),this.cachedDrawProgram=E);for(let o=0;o<A.textures.length;o++){const s=A.textures[o].id;if(o===0&&this.cachedTex0Id===s)continue;const n=this.textures.get(s);n&&(I.activeTexture(I.TEXTURE0+o),I.bindTexture(I.TEXTURE_2D,n.texture),o===0&&(this.cachedTex0Id=s))}this.applyProjectionUniform(i,E,A.uniforms.u_projection);const e=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);if(!e||!t)return;const a=this.ensureInstancedAlphaInstanceBuffer();if(I.bindBuffer(I.ARRAY_BUFFER,a),I.bufferSubData(I.ARRAY_BUFFER,0,Q,0,B*12),this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)){I.bindBuffer(I.ARRAY_BUFFER,a);for(let n=0;n<3;n++){const r=2+n;I.enableVertexAttribArray(r),I.vertexAttribPointer(r,4,I.FLOAT,!1,48,n*16),I.vertexAttribDivisor(r,1)}I.bindBuffer(I.ARRAY_BUFFER,e.buffer);const s=16;I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,s,0),I.vertexAttribDivisor(0,0),I.enableVertexAttribArray(1),I.vertexAttribPointer(1,2,I.FLOAT,!1,s,8),I.vertexAttribDivisor(1,0),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,t.buffer)}I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw()}ensureInstancedVapInstanceBuffer(){const A=this.gl;if(!this.instancedVapInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,xA.INST_VAP_GL_BYTES,A.DYNAMIC_DRAW),this.instancedVapInstanceGLBuffer=g}return this.instancedVapInstanceGLBuffer}drawInstancedVapGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*32)return;if(B>xA.INST_VAP_GL_MAX){console.warn("[WebGL2] vap-instanced: instanceCount exceeds max",B);return}I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0);const E="vap-instanced",i=this.programs.get("vap-instanced");if(!i)return;this.cachedDrawProgram!==E&&(I.useProgram(i.program),this.cachedDrawProgram=E);for(let o=0;o<A.textures.length;o++){const s=A.textures[o].id;if(o===0&&this.cachedTex0Id===s)continue;const n=this.textures.get(s);n&&(I.activeTexture(I.TEXTURE0+o),I.bindTexture(I.TEXTURE_2D,n.texture),o===0&&(this.cachedTex0Id=s))}this.applyProjectionUniform(i,E,A.uniforms.u_projection);const e=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);if(!e||!t)return;const a=this.ensureInstancedVapInstanceBuffer();if(I.bindBuffer(I.ARRAY_BUFFER,a),I.bufferSubData(I.ARRAY_BUFFER,0,Q,0,B*32),this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)){I.bindBuffer(I.ARRAY_BUFFER,a);for(let n=0;n<8;n++){const r=2+n;I.enableVertexAttribArray(r),I.vertexAttribPointer(r,4,I.FLOAT,!1,128,n*16),I.vertexAttribDivisor(r,1)}I.bindBuffer(I.ARRAY_BUFFER,e.buffer);const s=16;I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,s,0),I.vertexAttribDivisor(0,0),I.enableVertexAttribArray(1),I.vertexAttribPointer(1,2,I.FLOAT,!1,s,8),I.vertexAttribDivisor(1,0),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,t.buffer)}I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw()}destroy(){this.deviceLostHandler=null,this.canvas.removeEventListener("webglcontextlost",this.onContextLost),this.runtimeDiagnosticHandler=null;const A=this.gl;A.bindVertexArray(null),this.deleteAllVertexArrays(),this.instancedSvgaInstanceGLBuffer&&(A.deleteBuffer(this.instancedSvgaInstanceGLBuffer),this.instancedSvgaInstanceGLBuffer=null),this.svgaSlotStateTexture&&(A.deleteTexture(this.svgaSlotStateTexture),this.svgaSlotStateTexture=null,this.svgaSlotStateTextureWidth=0,this.svgaSlotStateTextureHeight=0),this.instancedClipMaskGLBuffer&&(A.deleteBuffer(this.instancedClipMaskGLBuffer),this.instancedClipMaskGLBuffer=null),this.instancedAlphaInstanceGLBuffer&&(A.deleteBuffer(this.instancedAlphaInstanceGLBuffer),this.instancedAlphaInstanceGLBuffer=null),this.instancedVapInstanceGLBuffer&&(A.deleteBuffer(this.instancedVapInstanceGLBuffer),this.instancedVapInstanceGLBuffer=null);for(const[,I]of this.buffers)A.deleteBuffer(I.buffer);for(const[,I]of this.textures)A.deleteTexture(I.texture);for(const[,I]of this.programs)A.deleteProgram(I.program);this.buffers.clear(),this.frameTables.clear(),this.ownedFrameTableMetadataIds.clear(),this.textures.clear(),this.programs.clear();const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}};H(SA,"INST_SVGA_GL_MAX",2048);H(SA,"INST_SVGA_GL_FLOATS",13);H(SA,"INST_SVGA_GL_STRIDE",SA.INST_SVGA_GL_FLOATS*4);H(SA,"INST_SVGA_GL_BYTES",SA.INST_SVGA_GL_MAX*16*Float32Array.BYTES_PER_ELEMENT);H(SA,"INST_CLIP_MASK_GL_MAX",2048);H(SA,"INST_CLIP_MASK_GL_FLOATS",6);H(SA,"INST_CLIP_MASK_GL_STRIDE",SA.INST_CLIP_MASK_GL_FLOATS*4);H(SA,"INST_CLIP_MASK_GL_BYTES",SA.INST_CLIP_MASK_GL_MAX*SA.INST_CLIP_MASK_GL_STRIDE);H(SA,"INST_ALPHA_GL_MAX",1024);H(SA,"INST_ALPHA_GL_BYTES",SA.INST_ALPHA_GL_MAX*48);H(SA,"INST_VAP_GL_MAX",1024);H(SA,"INST_VAP_GL_BYTES",SA.INST_VAP_GL_MAX*128);let WQ=SA;var vi=Object.defineProperty,Ti=(C,A,g)=>A in C?vi(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,mA=(C,A,g)=>Ti(C,typeof A!="symbol"?A+"":A,g);function Wi(C,A){let g=C.replace(/^#version\s+300\s+es\s*/m,"");return A==="vertex"?(g=g.replace(/layout\s*\(location\s*=\s*\d+\)\s*in\s+/g,"attribute "),g=g.replace(/\bout\s+/g,"varying ")):(g=g.replace(/\bin\s+/g,"varying "),g=g.replace(/out\s+vec4\s+fragColor\s*;\s*/g,""),g=g.replace(/\bfragColor\b/g,"gl_FragColor"),g=g.replace(/\btexture\s*\(/g,"texture2D(")),g}function ZC(C,A,g,I){const B=C.createShader(A);if(!B)throw new Error("Failed to create shader");if(C.shaderSource(B,Wi(g,I)),C.compileShader(B),!C.getShaderParameter(B,C.COMPILE_STATUS)){const Q=C.getShaderInfoLog(B);throw C.deleteShader(B),new Error(`Shader compile failed: ${Q}`)}return B}function dI(C,A,g,I){const B=ZC(C,C.VERTEX_SHADER,A,"vertex"),Q=ZC(C,C.FRAGMENT_SHADER,g,"fragment"),E=C.createProgram();if(!E)throw C.deleteShader(B),C.deleteShader(Q),new Error("Failed to create program");C.attachShader(E,B),C.attachShader(E,Q);for(const[i,e]of Object.entries(I))C.bindAttribLocation(E,e,i);if(C.linkProgram(E),!C.getProgramParameter(E,C.LINK_STATUS)){const i=C.getProgramInfoLog(E);throw C.deleteProgram(E),C.deleteShader(B),C.deleteShader(Q),new Error(`Program link failed: ${i}`)}return C.deleteShader(B),C.deleteShader(Q),E}function XC(C,A=C.LINEAR,g=C.CLAMP_TO_EDGE){const I=C.createTexture();if(!I)throw new Error("Failed to create texture");return C.bindTexture(C.TEXTURE_2D,I),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,g),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,g),I}const Vi=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);class aC{constructor(A,g=!0){mA(this,"type","webgl1"),mA(this,"canvas"),mA(this,"maxTextureSize",4096),mA(this,"antialias"),mA(this,"gl"),mA(this,"nextId",1),mA(this,"buffers",new Map),mA(this,"textures",new Map),mA(this,"programs",new Map),mA(this,"cachedDrawProgram",null),mA(this,"cachedTex0Id",null),mA(this,"cachedProjectionRef",null),mA(this,"cachedProjectionShader",null),mA(this,"lastDrawSubmitted",!1),mA(this,"videoUploadCanvas",null),mA(this,"videoUploadCtx",null),mA(this,"supportsUintIndices",!1),this.canvas=A,this.antialias=g}async init(){const A=this.canvas.getContext("webgl",{alpha:!0,premultipliedAlpha:!0,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL1 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.supportsUintIndices=!!A.getExtension("OES_element_index_uint"),A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}initPrograms(){const A=this.gl,g=dI(A,P.svgaBatchPremul.vert,P.svgaBatchPremul.frag,{a_position:0,a_color:1,a_uv:2});this.programs.set("svga-batch-premul",this.makeProgramEntry(g,{transform:!0,opacity:!0})),this.bindProgramSamplers(g,{u_atlas:0});const I=dI(A,P.vap.vert,P.vap.frag,{a_position:0,a_rgbUV:1,a_alphaUV:2});this.programs.set("vap",this.makeProgramEntry(I,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(I,{u_video:0});const B=dI(A,P.alphaVideo.vert,P.alphaVideo.frag,{a_position:0,a_uv:1});this.programs.set("alpha-video",this.makeProgramEntry(B,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(B,{u_video:0});const Q=dI(A,P.rgbaTextured.vert,P.rgbaTextured.frag,{a_position:0,a_uv:1});this.programs.set("rgba-textured",this.makeProgramEntry(Q,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(Q,{u_video:0});const E=dI(A,P.clipMask.vert,P.clipMask.frag,{a_position:0});this.programs.set("clip-mask",this.makeProgramEntry(E,{transform:!0}))}makeProgramEntry(A,g={}){const I=this.gl;return{program:A,projLoc:I.getUniformLocation(A,"u_projection"),transformLoc:g.transform?I.getUniformLocation(A,"u_transform"):null,atlasRemapLoc:g.atlasRemap?I.getUniformLocation(A,"u_atlasRemap"):null,opacityLoc:g.opacity?I.getUniformLocation(A,"u_opacity"):null,rgbPremultipliedLoc:g.rgbPremultiplied?I.getUniformLocation(A,"u_rgbPremultiplied"):null,lastOpacity:null,lastRgbPremultiplied:null}}applyIdentityTransform(A){A.transformLoc&&this.gl.uniformMatrix4fv(A.transformLoc,!1,Vi)}bindProgramSamplers(A,g){const I=this.gl;I.useProgram(A);for(const B in g){const Q=I.getUniformLocation(A,B);Q&&I.uniform1i(Q,g[B])}}applyDrawUniforms(A,g,I){const B=this.gl,Q=I.uniforms.u_projection;if(A.projLoc&&Q instanceof Float32Array&&Q.length>=16&&(this.cachedProjectionShader!==g||this.cachedProjectionRef!==Q)&&(B.uniformMatrix4fv(A.projLoc,!1,Q),this.cachedProjectionShader=g,this.cachedProjectionRef=Q),A.transformLoc){const E=I.uniforms.u_transform;E instanceof Float32Array?B.uniformMatrix4fv(A.transformLoc,!1,E):this.applyIdentityTransform(A)}if(A.atlasRemapLoc){const E=I.uniforms.u_atlasRemap;E instanceof Float32Array&&B.uniform4fv(A.atlasRemapLoc,E)}if(A.opacityLoc){const E=I.uniforms.u_opacity,i=typeof E=="number"?E:1;A.lastOpacity!==i&&(B.uniform1f(A.opacityLoc,i),A.lastOpacity=i)}if(A.rgbPremultipliedLoc){const E=I.uniforms.u_rgbPremultiplied;typeof E=="number"&&A.lastRgbPremultiplied!==E&&(B.uniform1f(A.rgbPremultipliedLoc,E),A.lastRgbPremultiplied=E)}}beginFrame(A={}){const g=this.gl;try{return g.viewport(0,0,this.canvas.width,this.canvas.height),g.colorMask(!0,!0,!0,!0),g.stencilMask(255),g.disable(g.STENCIL_TEST),g.disable(g.SCISSOR_TEST),g.clearColor(0,0,0,0),g.clearStencil(0),g.clear(g.COLOR_BUFFER_BIT|(A.stencil?g.STENCIL_BUFFER_BIT:0)),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,tg}catch(I){return $("submission-error",this.errorMessage(I))}}endFrame(){try{return this.gl.flush(),tg}catch(A){return $("submission-error",this.errorMessage(A))}}abortFrame(){const A=this.gl;try{return A.colorMask(!0,!0,!0,!0),A.stencilMask(255),A.disable(A.STENCIL_TEST),A.disable(A.SCISSOR_TEST),A.clearColor(0,0,0,0),A.clearStencil(0),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.flush(),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,tg}catch(g){return $("submission-error",this.errorMessage(g))}}errorMessage(A){return A instanceof Error?A.message:String(A)}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}normalizeIndexSource(A){if(this.supportsUintIndices)return A;if(ArrayBuffer.isView(A)){if(A instanceof Uint16Array)return A;if("length"in A)return Uint16Array.from(A);const g=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return new Uint16Array(g.buffer.slice(g.byteOffset,g.byteOffset+g.byteLength))}return new Uint16Array(A)}createBuffer(A,g){const I=this.gl,B=I.createBuffer();if(!B)throw new Error("Failed to create buffer");const Q=g==="index"?this.normalizeIndexSource(A):A,E=g==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(E,B),I.bufferData(E,Q,I.DYNAMIC_DRAW);const i=this.nextId++;return this.buffers.set(i,{buffer:B,usage:g,byteLength:this.getBufferSourceByteLength(Q)}),{id:i,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=this.gl,E=B.usage==="index"?this.normalizeIndexSource(g):g,i=B.usage==="index"?Q.ELEMENT_ARRAY_BUFFER:Q.ARRAY_BUFFER;Q.bindBuffer(i,B.buffer);const e=this.getBufferSourceByteLength(E);I===0&&e<=B.byteLength?Q.bufferSubData(i,0,E):(Q.bufferData(i,E,Q.DYNAMIC_DRAW),B.byteLength=e)}deleteBuffer(A){const g=this.buffers.get(A.id);g&&(this.gl.deleteBuffer(g.buffer),this.buffers.delete(A.id))}ensureVideoUploadCanvas(A,g){return this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d")),!this.videoUploadCtx||!this.videoUploadCanvas?null:((this.videoUploadCanvas.width!==A||this.videoUploadCanvas.height!==g)&&(this.videoUploadCanvas.width=A,this.videoUploadCanvas.height=g),this.videoUploadCtx)}uploadVideoFrameToTexture(A,g,I){const B=this.gl,Q=g.videoWidth,E=g.videoHeight;if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||Q<=0||E<=0)return!1;const i=this.ensureVideoUploadCanvas(Q,E);return!i||!this.videoUploadCanvas?!1:(i.drawImage(g,0,0,Q,E),B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),!0)}createTexture(A,g){var I,B;const Q=this.gl,E=g.filter==="nearest"?Q.NEAREST:Q.LINEAR,i=XC(Q,E),e=g.premultiplyAlpha===!0;let t=(I=g.width)!=null?I:1,a=(B=g.height)!=null?B:1;if(A instanceof ArrayBuffer)Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,t,a,0,Q.RGBA,Q.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame)Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,1),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e?1:0),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),t=A.displayWidth||A.codedWidth||t,a=A.displayHeight||A.codedHeight||a;else if(A instanceof HTMLVideoElement)Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e?1:0),this.uploadVideoFrameToTexture(i,A,!0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t=A.videoWidth||t,a=A.videoHeight||a;else{const s=e,n=g.sourcePremultiplied===!0,r=s&&!n?1:0;Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(t=A.width,a=A.height)}const o=this.nextId++;return this.textures.set(o,{texture:i,width:t,height:a}),{id:o,width:t,height:a}}createEmptyTexture(A,g,I={}){const B=this.gl,Q=I.filter==="nearest"?B.NEAREST:B.LINEAR,E=XC(B,Q),i=Math.max(1,Math.floor(A)),e=Math.max(1,Math.floor(g));B.bindTexture(B.TEXTURE_2D,E),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,i,e,0,B.RGBA,B.UNSIGNED_BYTE,null);const t=this.nextId++;return this.textures.set(t,{texture:E,width:i,height:e}),{id:t,width:i,height:e}}updateTexture(A,g){const I=this.textures.get(A.id);if(!I)return;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const e=this.gl,t=vI(g),a=TI(g),o=t===I.width&&a===I.height;e.bindTexture(e.TEXTURE_2D,I.texture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),o?e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,g):(e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,g),t>0&&a>0&&(I.width=t,I.height=a)),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){const e=g.videoWidth,t=g.videoHeight,a=e!==I.width||t!==I.height;this.uploadVideoFrameToTexture(I.texture,g,a)&&a&&(I.width=e,I.height=t);return}const B=this.gl,Q=vI(g),E=TI(g),i=Q===I.width&&E===I.height;B.bindTexture(B.TEXTURE_2D,I.texture),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),i?B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g):(B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g),Q>0&&E>0&&(I.width=Q,I.height=E)),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,g,I,B,Q,E){const i=this.textures.get(A.id);if(!i)return;const e=this.gl;e.bindTexture(e.TEXTURE_2D,i.texture);let t,a;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame)t=g.displayWidth||g.codedWidth,a=g.displayHeight||g.codedHeight;else if(g instanceof HTMLVideoElement){if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;t=g.videoWidth,a=g.videoHeight}else{const n=g;t=n.width,a=n.height}if(!t||!a)return;const o=Q!=null?Q:t,s=E!=null?E:a;if(o!==t||s!==a){const n=this.ensureVideoUploadCanvas(o,s);if(!n||!this.videoUploadCanvas)return;n.drawImage(g,0,0,o,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,this.videoUploadCanvas),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g)}deleteTexture(A){const g=this.textures.get(A.id);g&&(this.gl.deleteTexture(g.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){this.lastDrawSubmitted=!1;const g=A.stencil==="clear"||A.shader==="clip-mask"?"clip-mask":A.shader;if(!this.programs.has(g))return $("invalid-command",`WebGL1 shader unavailable: ${g}`);if(!this.buffers.has(A.vertexBuffer.id)||!this.buffers.has(A.indexBuffer.id))return $("missing-resource","WebGL1 draw buffer is unavailable");for(const I of A.textures)if(!this.textures.has(I.id))return $("missing-resource",`WebGL1 texture ${I.id} is unavailable`);try{this.drawInternal(A)}catch(I){return $("submission-error",this.errorMessage(I))}return this.lastDrawSubmitted?tg:$("invalid-command",`WebGL1 rejected ${A.shader}`)}drawInternal(A){var g;const I=this.gl,B=(g=A.stencil)!=null?g:"none",Q=A.shader==="clip-mask"||B==="clear"?"clip-mask":A.shader;if(Q==="svga-instanced-premul"||Q==="alpha-video-instanced"||Q==="vap-instanced")throw new Error(`WebGL1 backend does not support instanced shader: ${Q}`);const E=this.programs.get(Q);if(!E)return;B==="clear"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.ALWAYS,0,255),I.stencilOp(I.KEEP,I.KEEP,I.REPLACE),I.stencilMask(255),I.colorMask(!1,!1,!1,!1)):B==="write"||A.shader==="clip-mask"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.ALWAYS,1,255),I.stencilOp(I.KEEP,I.KEEP,I.REPLACE),I.stencilMask(255),I.colorMask(!1,!1,!1,!1)):B==="test"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.EQUAL,1,255),I.stencilOp(I.KEEP,I.KEEP,I.KEEP),I.stencilMask(0),I.colorMask(!0,!0,!0,!0)):(I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==Q&&(I.useProgram(E.program),this.cachedDrawProgram=Q);for(let t=0;t<A.textures.length;t++){const a=A.textures[t].id;if(t===0&&this.cachedTex0Id===a)continue;const o=this.textures.get(a);o&&(I.activeTexture(I.TEXTURE0+t),I.bindTexture(I.TEXTURE_2D,o.texture),t===0&&(this.cachedTex0Id=a))}this.applyDrawUniforms(E,Q,A);const i=this.buffers.get(A.vertexBuffer.id),e=this.buffers.get(A.indexBuffer.id);!i||!e||(I.bindBuffer(I.ARRAY_BUFFER,i.buffer),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,e.buffer),this.setupAttributes(Q),I.drawElements(I.TRIANGLES,A.indexCount,this.supportsUintIndices?I.UNSIGNED_INT:I.UNSIGNED_SHORT,0),this.lastDrawSubmitted=!0,(B!=="none"||A.shader==="clip-mask")&&(I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,g,I,B){const Q=this.gl,E=this.canvas.width,i=this.canvas.height,e=Math.max(0,Math.min(E,Math.floor(A))),t=Math.max(0,Math.min(i,Math.floor(g))),a=Math.max(e,Math.min(E,Math.ceil(A+I))),o=Math.max(t,Math.min(i,Math.ceil(g+B)));Q.enable(Q.SCISSOR_TEST),Q.scissor(e,i-o,a-e,o-t)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const g=this.gl;g.disableVertexAttribArray(0),g.disableVertexAttribArray(1),g.disableVertexAttribArray(2),A==="svga-batch-premul"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,3,g.FLOAT,!1,36,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,4,g.FLOAT,!1,36,12),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,36,28)):A==="vap"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,24,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,24,8),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,24,16)):A==="clip-mask"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0)):(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,16,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,16,8))}destroy(){const A=this.gl;for(const[,I]of this.buffers)A.deleteBuffer(I.buffer);for(const[,I]of this.textures)A.deleteTexture(I.texture);for(const[,I]of this.programs)A.deleteProgram(I.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}}function VQ(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function Zi(){return typeof navigator!="undefined"&&"gpu"in navigator&&VQ()}function Xi(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(C){return!1}}function Oi(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(C){return!1}}function Pi(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"&&globalThis.crossOriginIsolated===!0}function ZQ(){return typeof OffscreenCanvas!="undefined"}async function XQ(C,A=!0,g=!0,I=!1){const B=g,Q=g;if(I){const i=new aC(C,Q);return await i.init(),i}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&VQ())try{const i=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(i){const e=new TQ(C,i,B);return await e.init(),e}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(i){console.warn(`[GiftStage] WebGPU init failed: ${i instanceof Error?i.message:String(i)}, fallback to WebGL2/WebGL1.`)}else A&&typeof navigator!="undefined"&&"gpu"in navigator&&console.warn("[GiftStage] WebGPU unavailable: GPUQueue.copyExternalImageToTexture is not supported, fallback to WebGL2/WebGL1.");try{const i=new WQ(C,Q);return await i.init(),i}catch(i){console.warn(`[GiftStage] WebGL2 init failed: ${i instanceof Error?i.message:String(i)}, fallback to WebGL1.`)}const E=new aC(C,Q);return await E.init(),E}const ji={width:1920,height:1080},zi={width:2560,height:1440};function _i(C=typeof navigator!="undefined"?navigator:void 0){var A;if(!(C!=null&&C.userAgent))return!1;const g=C.userAgent;return!!(/Android|iPhone|iPod|Mobile/i.test(g)||/iPad/i.test(g)||/Macintosh/i.test(g)&&((A=C.maxTouchPoints)!=null?A:0)>1)}function $i(C){return _i(C)?ji:zi}function Ae(C,A,g){const I=C.clientWidth||C.getBoundingClientRect().width||0,B=C.clientHeight||C.getBoundingClientRect().height||0,Q=A>0&&Number.isFinite(A)?A:1;let E=Math.max(1,Math.round(I*Q)),i=Math.max(1,Math.round(B*Q));if(g!==!1){const e=g!=null?g:$i(),t=Math.max(e.width,e.height),a=Math.min(e.width,e.height);if(t>0&&a>0){const o=Math.min(1,t/Math.max(E,i),a/Math.min(E,i));o<1&&(E=Math.max(1,Math.round(E*o)),i=Math.max(1,Math.round(i*o)))}}(C.width!==E||C.height!==i)&&(C.width=E,C.height=i)}function Xg(C){const A=C.clientWidth||C.getBoundingClientRect().width||1,g=C.clientHeight||C.getBoundingClientRect().height||1;return{sx:C.width/Math.max(1,A),sy:C.height/Math.max(1,g)}}const $g=9,ge={a:1,b:0,c:0,d:1,tx:0,ty:0};function OQ(C,A,g){return(C*g+A)*$g}function Ie(C,A,g){var I,B;const Q=(I=C.shapesIndex[A*C.frameCount+g])!=null?I:-1;return Q<0?null:(B=C.shapesTable[Q])!=null?B:null}function PQ(C,A){var g,I,B,Q,E,i,e;const t=C.length;let a=A!=null?A:0;if(a<=0)for(const l of C)a=Math.max(a,l.frames.length);const o=C.map(l=>l.imageKey),s=new Float32Array(t*a*$g),n=[],r=new Map,h=new Int32Array(t*a).fill(-1),c=[],D=new Int32Array(t*a).fill(-1);let w=!1;for(let l=0;l<t;l++){const F=C[l];let d=null,y=-1;for(let G=0;G<a;G++){const f=F.frames[G],u=OQ(l,G,a);if(!f){s[u+2]=1,s[u+5]=1;continue}const R=(I=(g=f.layout)==null?void 0:g.width)!=null?I:0,M=(Q=(B=f.layout)==null?void 0:B.height)!=null?Q:0,N=(E=f.transform)!=null?E:ge;s[u]=R,s[u+1]=M,s[u+2]=N.a,s[u+3]=N.b,s[u+4]=N.c,s[u+5]=N.d,s[u+6]=N.tx,s[u+7]=N.ty,s[u+8]=f.alpha;const S=(i=f.clipPath)!=null?i:"";if(S.length>0){let k=r.get(S);k===void 0&&(k=n.length,n.push(S),r.set(S,k)),h[l*a+G]=k}const Y=f.shapes;if(!Y||Y.length===0){d=null,y=-1;continue}if(((e=Y[0])==null?void 0:e.kind)==="keep"){y>=0&&(D[l*a+G]=y,w=!0);continue}if(d!==null&&Y===d&&y>=0){D[l*a+G]=y,w=!0;continue}const U=Y.every(k=>k.kind!=="keep")?Y:Y.filter(k=>k.kind!=="keep");if(U.length===0){d=null,y=-1;continue}d=U,y=c.length,c.push(U),D[l*a+G]=y,w=!0}}return{spriteCount:t,frameCount:a,imageKeys:o,frameData:s,clipPaths:n,clipPathIndex:h,shapesTable:c,shapesIndex:D,hasAnyShapes:w}}function Wg(C,A){if(A.allFramesInsideViewBox!==void 0)return A.allFramesInsideViewBox;const g=C.viewBoxWidth,I=C.viewBoxHeight;let B=g>0&&I>0&&!A.hasAnyShapes;const Q=B?Math.max(g,I)*.001+.001:0;A:for(let E=0;B&&E<A.spriteCount;E++)for(let i=0;i<A.frameCount;i++){const e=OQ(E,i,A.frameCount),t=A.frameData[e],a=A.frameData[e+1];if(t<=0||a<=0)continue;const o=A.frameData[e+2],s=A.frameData[e+3],n=A.frameData[e+4],r=A.frameData[e+5],h=A.frameData[e+6],c=A.frameData[e+7],D=o*t+h,w=s*t+c,l=o*t+n*a+h,F=s*t+r*a+c,d=n*a+h,y=r*a+c;if(Math.min(h,D,l,d)<-Q||Math.min(c,w,F,y)<-Q||Math.max(h,D,l,d)>g+Q||Math.max(c,w,F,y)>I+Q){B=!1;break A}}return A.allFramesInsideViewBox=B,B}function hB(C,A,g){const I=Math.floor(C.length/_g),B=Math.floor(A.length/(nI*ug)),Q=Math.floor(g.length/YI),E=Math.min(I,B,Q);for(let i=0;i<E;i++){const e=i*_g,t=C[e],a=C[e+1],o=C[e+2],s=C[e+3],n=C[e+4],r=C[e+5],h=C[e+6],c=C[e+7],D=C[e+8],w=C[e+9],l=C[e+10],F=C[e+11],d=C[e+12],y=h,G=c,f=o*t+h,u=s*t+c,R=o*t+n*a+h,M=s*t+r*a+c,N=n*a+h,S=r*a+c,Y=i*nI*ug;A[Y]=y,A[Y+1]=G,A[Y+2]=0,A[Y+3]=1,A[Y+4]=1,A[Y+5]=1,A[Y+6]=D,A[Y+7]=w,A[Y+8]=l;const U=Y+ug;A[U]=f,A[U+1]=u,A[U+2]=0,A[U+3]=1,A[U+4]=1,A[U+5]=1,A[U+6]=D,A[U+7]=F,A[U+8]=l;const k=Y+2*ug;A[k]=R,A[k+1]=M,A[k+2]=0,A[k+3]=1,A[k+4]=1,A[k+5]=1,A[k+6]=D,A[k+7]=F,A[k+8]=d;const m=Y+3*ug;A[m]=N,A[m+1]=S,A[m+2]=0,A[m+3]=1,A[m+4]=1,A[m+5]=1,A[m+6]=D,A[m+7]=w,A[m+8]=d;const J=i*YI,q=i*nI;g[J]=q,g[J+1]=q+1,g[J+2]=q+2,g[J+3]=q,g[J+4]=q+2,g[J+5]=q+3}return E}function Be(C,A,g){const I=PC(C,z.__wbindgen_malloc),B=bA;var Q=PC(A,z.__wbindgen_malloc),E=bA,i=$Q(g,z.__wbindgen_malloc),e=bA;return z.build_batch_vertices(I,B,Q,E,A,i,e,g)>>>0}function Ce(C){const A=JB(C,z.__wbindgen_malloc),g=bA,I=z.decode_svga(A,g);if(I[2])throw WI(I[1]);return WI(I[0])}function Qe(C){const A=JB(C,z.__wbindgen_malloc),g=bA,I=z.decode_svga_payload(A,g);if(I[3])throw WI(I[2]);var B=mB(I[0],I[1]).slice();return z.__wbindgen_free(I[0],I[1]*1,1),B}function Ee(C){const A=JB(C,z.__wbindgen_malloc),g=bA,I=z.decode_svga_payload_profiled(A,g);if(I[3])throw WI(I[2]);var B=mB(I[0],I[1]).slice();return z.__wbindgen_free(I[0],I[1]*1,1),B}function ie(C){const A=JB(C,z.__wbindgen_malloc),g=bA,I=z.inflate(A,g);if(I[3])throw WI(I[2]);var B=mB(I[0],I[1]).slice();return z.__wbindgen_free(I[0],I[1]*1,1),B}function jQ(){z.init()}function ee(){return z.take_svga_payload_profile()}function te(C,A){const g=ne(C,z.__wbindgen_malloc),I=bA,B=$Q(A,z.__wbindgen_malloc),Q=bA,E=z.triangulate_clip_polygons(g,I,B,Q);var i=ae(E[0],E[1]).slice();return z.__wbindgen_free(E[0],E[1]*4,4),i}function zQ(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,g){return Error(qB(A,g))},__wbg_String_8564e559799eccda:function(A,g){const I=String(g),B=re(I,z.__wbindgen_malloc,z.__wbindgen_realloc),Q=bA;OC().setInt32(A+4,Q,!0),OC().setInt32(A+0,B,!0)},__wbg___wbindgen_copy_to_typed_array_a4db337751e0b328:function(A,g,I){new Uint8Array(I.buffer,I.byteOffset,I.byteLength).set(mB(A,g))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,g){throw new Error(qB(A,g))},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_now_008d9b84600b5c19:function(){return performance.now()},__wbg_set_08463b1df38a7e29:function(A,g,I){return A.set(g,I)},__wbg_set_6be42768c690e380:function(A,g,I){A[g]=I},__wbg_set_6c60b2e8ad0e9383:function(A,g,I){A[g>>>0]=I},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,g){return qB(A,g)},__wbindgen_cast_0000000000000003:function(A){return BigInt.asUintN(64,A)},__wbindgen_init_externref_table:function(){const A=z.__wbindgen_externrefs,g=A.grow(4);A.set(0,void 0),A.set(g+0,void 0),A.set(g+1,null),A.set(g+2,!0),A.set(g+3,!1)}}}}function ae(C,A){return C=C>>>0,_Q().subarray(C/4,C/4+A)}function mB(C,A){return C=C>>>0,rI().subarray(C/1,C/1+A)}let jg=null;function OC(){return(jg===null||jg.buffer.detached===!0||jg.buffer.detached===void 0&&jg.buffer!==z.memory.buffer)&&(jg=new DataView(z.memory.buffer)),jg}let SI=null;function oe(){return(SI===null||SI.byteLength===0)&&(SI=new Float32Array(z.memory.buffer)),SI}let fI=null;function se(){return(fI===null||fI.byteLength===0)&&(fI=new Float64Array(z.memory.buffer)),fI}function qB(C,A){return C=C>>>0,ce(C,A)}let MI=null;function _Q(){return(MI===null||MI.byteLength===0)&&(MI=new Uint32Array(z.memory.buffer)),MI}let NI=null;function rI(){return(NI===null||NI.byteLength===0)&&(NI=new Uint8Array(z.memory.buffer)),NI}function $Q(C,A){const g=A(C.length*4,4)>>>0;return _Q().set(C,g/4),bA=C.length,g}function JB(C,A){const g=A(C.length*1,1)>>>0;return rI().set(C,g/1),bA=C.length,g}function PC(C,A){const g=A(C.length*4,4)>>>0;return oe().set(C,g/4),bA=C.length,g}function ne(C,A){const g=A(C.length*8,8)>>>0;return se().set(C,g/8),bA=C.length,g}function re(C,A,g){if(g===void 0){const i=pI.encode(C),e=A(i.length,1)>>>0;return rI().subarray(e,e+i.length).set(i),bA=i.length,e}let I=C.length,B=A(I,1)>>>0;const Q=rI();let E=0;for(;E<I;E++){const i=C.charCodeAt(E);if(i>127)break;Q[B+E]=i}if(E!==I){E!==0&&(C=C.slice(E)),B=g(B,I,I=E+C.length*3,1)>>>0;const i=rI().subarray(B+E,B+I),e=pI.encodeInto(C,i);E+=e.written,B=g(B,I,E,1)>>>0}return bA=E,B}function WI(C){const A=z.__wbindgen_externrefs.get(C);return z.__externref_table_dealloc(C),A}let cB=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});cB.decode();const he=2146435072;let vB=0;function ce(C,A){return vB+=A,vB>=he&&(cB=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),cB.decode(),vB=A),cB.decode(rI().subarray(C,C+A))}const pI=new TextEncoder;"encodeInto"in pI||(pI.encodeInto=function(C,A){const g=pI.encode(C);return A.set(g),{read:C.length,written:g.length}});let bA=0,z;function AE(C,A){return z=C.exports,jg=null,SI=null,fI=null,MI=null,NI=null,z.__wbindgen_start(),z}async function De(C,A){if(typeof Response=="function"&&C instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(C,A)}catch(B){if(C.ok&&g(C.type)&&C.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",B);else throw B}const I=await C.arrayBuffer();return await WebAssembly.instantiate(I,A)}else{const I=await WebAssembly.instantiate(C,A);return I instanceof WebAssembly.Instance?{instance:I,module:C}:I}function g(I){switch(I){case"basic":case"cors":case"default":return!0}return!1}}function le(C){if(z!==void 0)return z;C!==void 0&&(Object.getPrototypeOf(C)===Object.prototype?{module:C}=C:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const A=zQ();C instanceof WebAssembly.Module||(C=new WebAssembly.Module(C));const g=new WebAssembly.Instance(C,A);return AE(g)}async function gE(C){if(z!==void 0)return z;C!==void 0&&(Object.getPrototypeOf(C)===Object.prototype?{module_or_path:C}=C:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),C===void 0&&(C=new URL("data:application/wasm;base64,AGFzbQEAAAAB6gI0YAJ/fwF/YAR/f39/AGADf39/AGACf38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAAAYAZ/f39/f38AYAR/f39/AX9gAAR/f39/YAABb2AFf39/f38Bf2ACf38Ef39/f2ACf38Bb2AGf39/f39/AX9gAn9/AX5gAAF/YAV/f31/fwBgBX9/fn9/AGAFf398f38AYAJ9fQF9YAJ8fAF8YAADf39/YAACf39gAAF8YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2ABfgFvYAh/f39/f39/fwBgBn9/f3x8fABgCHx8fHx8fHx8AX9gA39/fgBgBn9/f31/fwBgBn9/f35/fwBgBn9/f3x/fwBgAn9/A39/f2AEf39/fwJ/f2AIf39/f29/f28Bf2AEf35/fwBgBH99f38AYAR/fH9/AGADf399AGAHf39/f39/fwBgAXwBf2ADf398AAKmBxAXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfbm93XzAwOGQ5Yjg0NjAwYjVjMTkAGhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAbFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ABwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAHRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx1fX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYQAeFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld185OWNhYmFlNTAxYzBhOGEwAAwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgADBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfNGY5ZmFmYmIzOTA5YWY3MgAMFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgADFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMADxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ19iMjliNWM1YTgwNjViYTFhAB8XLi9naWZ0X3N0YWdlX3dhc21fYmcuanM1X193YmdfX193YmluZGdlbl9jb3B5X3RvX3R5cGVkX2FycmF5X2E0ZGIzMzc3NTFlMGIzMjgAIBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAAgXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAIRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAPFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzACIDzgHMAQEjJAcBAgIJAAMEEAYCAgMDAQUECgAKACUREQMBBQICAAICAwQAEgMAAQIDBgABAAEABgEEAQEDBQAGCQUCCQkCBQIDAAIIASYCAwEGBQYCCQYFAQEFBQUFAQEACScoKQUBAQIEBAUBBAAAAAcCAwEBBgIAAA0AAAoABg4ODiorLBAHDQUUExUGBgEKBAEIAgYWFxcWAAADAwMDAgAwAwIxAgQCMjMFABIKAwABAQMAAAMAAAICBwcIAgQEBgwAAAgDAwAEAAMAAwcIAgQJAnABZmZvAIAIBQMBABEGCQF/AUGAgMAACwe6Ag8GbWVtb3J5AgALZGVjb2RlX3N2Z2EAjgETZGVjb2RlX3N2Z2FfcGF5bG9hZACMARxkZWNvZGVfc3ZnYV9wYXlsb2FkX3Byb2ZpbGVkAIsBGXRha2Vfc3ZnYV9wYXlsb2FkX3Byb2ZpbGUAzQEHaW5mbGF0ZQCNARRidWlsZF9iYXRjaF92ZXJ0aWNlcwCQARl0cmlhbmd1bGF0ZV9jbGlwX3BvbHlnb25zAI8BBGluaXQA2gERX193YmluZGdlbl9tYWxsb2MAgwESX193YmluZGdlbl9yZWFsbG9jAIgBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBGV9f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oAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIAo2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABayAKSQRAIARBoAJqIAEgCkEBQQEQTCAEKAKoAiEBCyAKBEAgBCgCpAIgAWogCSAK/AoAAAsgBCAEKAKoAiAKaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAMAQsgBSgCCCIJQQJHBEAgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakEBOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIMQwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIUQwAAAAAgBSgCEBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIcQwAAAAAgBSgCGBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIkQwAAAAAgBSgCIBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIsQwAAAAAgBSgCKBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAMAQsgBSgCMCIJQQJGDQIgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakECOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI0QwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI8QwAAAAAgBSgCOBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJEQwAAAAAgBSgCQBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJMQwAAAAAgBSgCSBsMAQsgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJq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ZkUgLCAroiApICaiZkVyDQAgHSAHQQhqKwMAoSAJKwMAIByhoiAcIAcrAwChIAlBCGorAwAgHaGioUQAAAAAAAAAAGYNAgsgCiAPRw0ACwwGCyABIAhHDQALCwJAAkAgC0H/AXFBAWsOAgQBAAsgDEEcaiENIAEgDGohBiABIQoDQCAKIQgCQANAIAwgBigCJCIBaiEHIAYoAhBBAE4EQCAGKAIgIQogBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQIgBkEIaisDACIcIAogDGoiCUEIaisDAKEgBysDACAGKwMAIh2hoiAdIAkrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEGIAEgCEcNAAtBASELIAghAQwICyAGKAIcIQggBigCGCEJIAogDGoiBiABNgIkAkAgCUUNACAJIApHBEAgCSANaiAINgIADAELIAYgCDYCHAsgByAKNgIgIAgEQCAHIAggDGogASAIRhsgCTYCGAtBASELIAEgCkcNAAsMBgsgDEEkaiEYIAEgDGohCyABIQgDQCAMIAsoAiQiD2ohByAPIBhqKAIAIg0gCygCICIZRwRAIAwgGWohFiALKAIQIhBB/////wdxIRoDQAJAIAwgDSIOaiIRKAIQIgYgEHNB/////wdxRQRAIA0gGGooAgAhDQwBCyARKAIkIQ0gBkH/////B3EiFyAHKAIQQf////8HcUYNACAWKAIQQf////8HcSAXRg0AIAwgESgCIGohFCAMIA1qIRMgESsDCCEeIBErAwAhHyALKwMIIR0gCysDACEhIBAhCSALIQYDQCAJIRICQCAMIAYiCigCJGoiBigCECIJQf////8HcSIbIBdGDQAgEkH/////B3EiEiAaRiASIBdGciAaIBtGcg0AIAorAwAgCkEIaisDACAGKwMAIAZBCGorAwAgISAdIB8gHhAoDQILIAYgC0cNAAsgHyAhoSEiIB4gHaEhIwJAAkAgHSAWQQhqKwMAIhyhIiggBysDACIkICGhIieiIikgISAWKwMAIiChIiogB0EIaisDACIlIB2hIiaiIitjRQRAICMgICAfoaIgIiAcIB6homMNASAfICShICaiICcgHiAloaJjRQ0CDAELICMgJCAfoaIgIiAlIB6hoqFEAAAAAAAAAABmRSAfICChIBwgHaGiICAg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AAseACAARQRAENABAAsgACACIAMgBCAFIAEoAhARDQALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEKAAscACAARQRAENABAAsgACACIAMgBCABKAIQEQEACxwAIABFBEAQ0AEACyAAIAIgAyAEIAEoAhARLQALHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEuAAscACAARQRAENABAAsgACACIAMgBCABKAIQES8ACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARDEAQsLCgBBCCAAENIBAAsaACAARQRAENABAAsgACACIAMgASgCEBECAAsaACAARQRAENABAAsgACACIAMgASgCEBEEAAsYACAARQRAENABAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEH4scAANgIACxIAQfjQwABBOUGU0cAAEIIBAAslAQFvEAYhAxA2IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxAELCxQAIAAgACABIAAgAV0bIAEgAVwbCxQAIAAgACABIAAgAWMbIAEgAWIbCxQAIAEgASAAIAAgAWMbIAAgAGIbCxQAIAEgASAAIAAgAV0bIAAgAFwbCx0AIAEgAC0AAEECdCIAKALMrEAgACgCtKxAELIBCx0AIAEgAC0AAEECdCIAKAKArkAgACgC6K1AELIBCx8AIABBCGpBxLTAACkCADcCACAAQby0wAApAgA3AgALHwAgAEEIakGcxsAAKQIANwIAIABBlMbAACkCADcCAAsfACAAQQhqQazGwAApAgA3AgAgAEGkxsAAKQIANwIACx8AIAAEQCAAIAEQ0gEAC0G80sAAQSNB0NLAABCCAQALEgAgACABQQF0QQFyIAIQggEACxYBAW8gACABEA4hAhA2IgAgAiYBIAALFAAgACACuxC0ATYCBCAAQQA2AgALFAAgACABtxC0ATYCBCAAQQA2AgALFQAgACABIAIQrAE2AgQgAEEANgIAC9MLAQ5/IAAhDyMAQRBrIggkACABKAIQIQcgBkH/AXFBAnQoAoi1QCEKIwBBEGsiBiQAAkACQAJAAkACQAJA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aW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAIWNhbm5vdCBhZHZhbmNlIHBhc3QgYHJlbWFpbmluZ2A6IMAEIDw9IMAAE2ludmFsaWQga2V5IHZhbHVlOiDAABlpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogwAASU2VyaWFsaXplIGZhaWxlZDogwAAQSW5mbGF0ZSBmYWlsZWQ6IMAAGFByb3RvYnVmIGRlY29kZSBmYWlsZWQ6IMAAwAI6IMAAc3JjXHZlcnRleC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXNfbXV0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxvdXRwdXRfYnVmZmVyLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcZmxhdGUyLTEuMS45XHNyY1xidWZyZWFkZXIucnMAc3JjXGNsaXAucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcc3RyZWFtLnJzAHNyY1xwcm90b2J1Zi5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGVhcmN1dC0wLjQuOVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41XHNyY1xsaWIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGxpYi5ycwDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAHJlY3RlbGxpcHNlegYQAA8AAAAiAAAAEwAAAERlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hTVkdBUGF5bG9hZFByb2ZpbGVpbnB1dEJ5dGVzb3V0cHV0Qnl0ZXNwcm9zdERlY29kZU1zbWV0YWRhdGFBbmRJbWFnZXNNc2ZyYW1lVGFibGVNc2ZpbmFsaXplTXNwYXlsb2FkQnVpbGRNc3J1c3RUb3RhbE1zaW1hZ2VCeXRlc2ltYWdlQ291bnRzcHJpdGVDb3VudGZyYW1lQ291bnRjZWxsQ291bnRjbGlwUGF0aENvdW50c2hhcGVDb3VudHNoYXBlR3JvdXBDb3VudHNoYXBlQnl0ZXN3cml0ZXJJbml0aWFsQ2FwYWNpdHl3cml0ZXJGaW5hbENhcGFjaXR5RGVjb2RlZFJlY3R4eXdpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RlY29kZWRBdWRpb2F1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVEZWNvZGVkQ29sb3JyZ0RlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkU2hhcGVraW5kcGF0aF9kYXRhc3R5bGVEZWNvZGVkTGF5b3V0RGVjb2RlZFBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzRGVjb2RlZFNwcml0ZWltYWdlX2tleURlY29kZWRFbGxpcHNlcmFkaXVzX3hyYWRpdXNfeQAAAP//////////GA4QAEGwnMAAC/MDegYQAA8AAABKAwAAIwAAAHoGEAAPAAAAaQMAACkAAAB6BhAADwAAAFIDAAApAAAASwkQAF4AAACFAgAAKAAAAEsJEABeAAAAbgQAABwAAABLCRAAXgAAAN0CAAAhAAAASwkQAF4AAADpAAAAJgAAAEsJEABeAAAABgEAAB0AAABLCRAAXgAAAHoEAAAzAAAASwkQAF4AAAB7BAAAMwAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVu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ciB1bmRlcmZsb3dpbnZhbGlkIHZhcmludHJlY3Vyc2lvbiBsaW1pdCByZWFjaGVkVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0TgUQAGQAAABiAAAAFQAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAJkWEACfFhAAqxYQALoWEADEFhAAzBYQAGFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAigYQAFMAAAAVAQAACQAAAIUIEABJAAAAsgEAADEAAABSZ2JhQ29sb3JyZ2JhU2hhcGVBcmdzZFNoYXBlU3R5bGVmaWxsc3Ryb2tlc3Ryb2tlX3dpZHRobGluZV9jYXBsaW5lX2pvaW5taXRlcl9saW1pdGxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9kYXNoX2lpaUVsbGlwc2VBcmdzeHlyYWRpdXNfeHJhZGl1c195UmVjdEFyZ3N3aWR0aGhlaWdodGNvcm5lcl9yYWRpdXOqCRAAagAAADUAAAAOAAAAAAAAAP//////////OBgQAEHQsMAAC80BQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGZhaWxlZCB0byBkZWNvZGUgUHJvdG9idWYgbWVzc2FnZTogAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgBBqLLAAAvdAgEAAAAvAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDJAxAAYAAAADoFAAAyAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAAzAAAAOAAAAMkDEABgAAAASAUAAEkAAABMYXlvdXRFcnJvcm92ZXJmbG93AFsCEABkAAAAvQIAAB0AAABbAhAAZAAAAKkCAAAVAAAAOQAAADoAAAA7AAAAPAAAAD0AAAAVChAAXgAA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bAAAAEQEAAAjAAAASwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpAEsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKClLBxAAbAAAAEcEAAANAAAASwcQAGwAAABIBAAAIgAAAEsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQBLBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpSwcQAGwAAABNBAAADQAAAEsHEABsAAAATgQAACIAAABLBxAAbAAAAE4EAAANAAAASwcQAGwAAABPBAAAJgAAAEsHEABsAAAATwQAAA0AAABLBxAAbAAAACwEAAAXAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAACwYQAG4AAABCAQAAHAAAAAsGEABuAAAAdgEAADAAAADeBhAAbAAAAHwAAAARAAAA3gYQAGwAAACJAAAAEQAAAG1dy9YsUOtjeEGmV3Ebi7mauO6RURSWWM+WAOjSnxKKZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBv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",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:sI&&sI.tagName.toUpperCase()==="SCRIPT"&&sI.src||new URL("gift-stage.cjs",document.baseURI).href));const A=zQ();(typeof C=="string"||typeof Request=="function"&&C instanceof Request||typeof URL=="function"&&C instanceof URL)&&(C=fetch(C));const{instance:g,module:I}=await De(await C,A);return AE(g)}const we=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:Be,decode_svga:Ce,decode_svga_payload:Qe,decode_svga_payload_profiled:Ee,default:gE,inflate:ie,init:jQ,initSync:le,take_svga_payload_profile:ee,triangulate_clip_polygons:te},Symbol.toStringTag,{value:"Module"})),TB="data:application/wasm;base64,AGFzbQEAAAAB6gI0YAJ/fwF/YAR/f39/AGADf39/AGACf38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAAAYAZ/f39/f38AYAR/f39/AX9gAAR/f39/YAABb2AFf39/f38Bf2ACf38Ef39/f2ACf38Bb2AGf39/f39/AX9gAn9/AX5gAAF/YAV/f31/fwBgBX9/fn9/AGAFf398f38AYAJ9fQF9YAJ8fAF8YAADf39/YAACf39gAAF8YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2ABfgFvYAh/f39/f39/fwBgBn9/f3x8fABgCHx8fHx8fHx8AX9gA39/fgBgBn9/f31/fwBgBn9/f35/fwBgBn9/f3x/fwBgAn9/A39/f2AEf39/fwJ/f2AIf39/f29/f28Bf2AEf35/fwBgBH99f38AYAR/fH9/AGADf399AGAHf39/f39/fwBgAXwBf2ADf398AAKmBxAXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfbm93XzAwOGQ5Yjg0NjAwYjVjMTkAGhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAbFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ABwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAHRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx1fX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYQAeFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld185OWNhYmFlNTAxYzBhOGEwAAwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgADBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfNGY5ZmFmYmIzOTA5YWY3MgAMFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgADFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMADxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ19iMjliNWM1YTgwNjViYTFhAB8XLi9naWZ0X3N0YWdlX3dhc21fYmcuanM1X193YmdfX193YmluZGdlbl9jb3B5X3RvX3R5cGVkX2FycmF5X2E0ZGIzMzc3NTFlMGIzMjgAIBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAAgXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAIRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAPFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzACIDzgHMAQEjJAcBAgIJAAMEEAYCAgMDAQUECgAKACUREQMBBQICAAICAwQAEgMAAQIDBgABAAEABgEEAQEDBQAGCQUCCQkCBQIDAAIIASYCAwEGBQYCCQYFAQEFBQUFAQEACScoKQUBAQIEBAUBBAAAAAcCAwEBBgIAAA0AAAoABg4ODiorLBAHDQUUExUGBgEKBAEIAgYWFxcWAAADAwMDAgAwAwIxAgQCMjMFABIKAwABAQMAAAMAAAICBwcIAgQEBgwAAAgDAwAEAAMAAwcIAgQJAnABZmZvAIAIBQMBABEGCQF/AUGAgMAACwe6Ag8GbWVtb3J5AgALZGVjb2RlX3N2Z2EAjgETZGVjb2RlX3N2Z2FfcGF5bG9hZACMARxkZWNvZGVfc3ZnYV9wYXlsb2FkX3Byb2ZpbGVkAIsBGXRha2Vfc3ZnYV9wYXlsb2FkX3Byb2ZpbGUAzQEHaW5mbGF0ZQCNARRidWlsZF9iYXRjaF92ZXJ0aWNlcwCQARl0cmlhbmd1bGF0ZV9jbGlwX3BvbHlnb25zAI8BBGluaXQA2gERX193YmluZGdlbl9tYWxsb2MAgwESX193YmluZGdlbl9yZWFsbG9jAIgBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBGV9f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oAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIAo2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABayAKSQRAIARBoAJqIAEgCkEBQQEQTCAEKAKoAiEBCyAKBEAgBCgCpAIgAWogCSAK/AoAAAsgBCAEKAKoAiAKaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAMAQsgBSgCCCIJQQJHBEAgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakEBOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIMQwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIUQwAAAAAgBSgCEBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIcQwAAAAAgBSgCGBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIkQwAAAAAgBSgCIBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIsQwAAAAAgBSgCKBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAMAQsgBSgCMCIJQQJGDQIgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakECOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI0QwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI8QwAAAAAgBSgCOBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJEQwAAAAAgBSgCQBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJMQwAAAAAgBSgCSBsMAQsgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJq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ZkUgLCAroiApICaiZkVyDQAgHSAHQQhqKwMAoSAJKwMAIByhoiAcIAcrAwChIAlBCGorAwAgHaGioUQAAAAAAAAAAGYNAgsgCiAPRw0ACwwGCyABIAhHDQALCwJAAkAgC0H/AXFBAWsOAgQBAAsgDEEcaiENIAEgDGohBiABIQoDQCAKIQgCQANAIAwgBigCJCIBaiEHIAYoAhBBAE4EQCAGKAIgIQogBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQIgBkEIaisDACIcIAogDGoiCUEIaisDAKEgBysDACAGKwMAIh2hoiAdIAkrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEGIAEgCEcNAAtBASELIAghAQwICyAGKAIcIQggBigCGCEJIAogDGoiBiABNgIkAkAgCUUNACAJIApHBEAgCSANaiAINgIADAELIAYgCDYCHAsgByAKNgIgIAgEQCAHIAggDGogASAIRhsgCTYCGAtBASELIAEgCkcNAAsMBgsgDEEkaiEYIAEgDGohCyABIQgDQCAMIAsoAiQiD2ohByAPIBhqKAIAIg0gCygCICIZRwRAIAwgGWohFiALKAIQIhBB/////wdxIRoDQAJAIAwgDSIOaiIRKAIQIgYgEHNB/////wdxRQRAIA0gGGooAgAhDQwBCyARKAIkIQ0gBkH/////B3EiFyAHKAIQQf////8HcUYNACAWKAIQQf////8HcSAXRg0AIAwgESgCIGohFCAMIA1qIRMgESsDCCEeIBErAwAhHyALKwMIIR0gCysDACEhIBAhCSALIQYDQCAJIRICQCAMIAYiCigCJGoiBigCECIJQf////8HcSIbIBdGDQAgEkH/////B3EiEiAaRiASIBdGciAaIBtGcg0AIAorAwAgCkEIaisDACAGKwMAIAZBCGorAwAgISAdIB8gHhAoDQILIAYgC0cNAAsgHyAhoSEiIB4gHaEhIwJAAkAgHSAWQQhqKwMAIhyhIiggBysDACIkICGhIieiIikgISAWKwMAIiChIiogB0EIaisDACIlIB2hIiaiIitjRQRAICMgICAfoaIgIiAcIB6homMNASAfICShICaiICcgHiAloaJjRQ0CDAELICMgJCAfoaIgIiAlIB6hoqFEAAAAAAAAAABmRSAfICChIBwgHaGiICAg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AAseACAARQRAENABAAsgACACIAMgBCAFIAEoAhARDQALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEKAAscACAARQRAENABAAsgACACIAMgBCABKAIQEQEACxwAIABFBEAQ0AEACyAAIAIgAyAEIAEoAhARLQALHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEuAAscACAARQRAENABAAsgACACIAMgBCABKAIQES8ACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARDEAQsLCgBBCCAAENIBAAsaACAARQRAENABAAsgACACIAMgASgCEBECAAsaACAARQRAENABAAsgACACIAMgASgCEBEEAAsYACAARQRAENABAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEH4scAANgIACxIAQfjQwABBOUGU0cAAEIIBAAslAQFvEAYhAxA2IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxAELCxQAIAAgACABIAAgAV0bIAEgAVwbCxQAIAAgACABIAAgAWMbIAEgAWIbCxQAIAEgASAAIAAgAWMbIAAgAGIbCxQAIAEgASAAIAAgAV0bIAAgAFwbCx0AIAEgAC0AAEECdCIAKALMrEAgACgCtKxAELIBCx0AIAEgAC0AAEECdCIAKAKArkAgACgC6K1AELIBCx8AIABBCGpBxLTAACkCADcCACAAQby0wAApAgA3AgALHwAgAEEIakGcxsAAKQIANwIAIABBlMbAACkCADcCAAsfACAAQQhqQazGwAApAgA3AgAgAEGkxsAAKQIANwIACx8AIAAEQCAAIAEQ0gEAC0G80sAAQSNB0NLAABCCAQALEgAgACABQQF0QQFyIAIQggEACxYBAW8gACABEA4hAhA2IgAgAiYBIAALFAAgACACuxC0ATYCBCAAQQA2AgALFAAgACABtxC0ATYCBCAAQQA2AgALFQAgACABIAIQrAE2AgQgAEEANgIAC9MLAQ5/IAAhDyMAQRBrIggkACABKAIQIQcgBkH/AXFBAnQoAoi1QCEKIwBBEGsiBiQAAkACQAJAAkACQAJA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aW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAIWNhbm5vdCBhZHZhbmNlIHBhc3QgYHJlbWFpbmluZ2A6IMAEIDw9IMAAE2ludmFsaWQga2V5IHZhbHVlOiDAABlpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogwAASU2VyaWFsaXplIGZhaWxlZDogwAAQSW5mbGF0ZSBmYWlsZWQ6IMAAGFByb3RvYnVmIGRlY29kZSBmYWlsZWQ6IMAAwAI6IMAAc3JjXHZlcnRleC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXNfbXV0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxvdXRwdXRfYnVmZmVyLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcZmxhdGUyLTEuMS45XHNyY1xidWZyZWFkZXIucnMAc3JjXGNsaXAucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcc3RyZWFtLnJzAHNyY1xwcm90b2J1Zi5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGVhcmN1dC0wLjQuOVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41XHNyY1xsaWIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGxpYi5ycwDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAHJlY3RlbGxpcHNlegYQAA8AAAAiAAAAEwAAAERlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hTVkdBUGF5bG9hZFByb2ZpbGVpbnB1dEJ5dGVzb3V0cHV0Qnl0ZXNwcm9zdERlY29kZU1zbWV0YWRhdGFBbmRJbWFnZXNNc2ZyYW1lVGFibGVNc2ZpbmFsaXplTXNwYXlsb2FkQnVpbGRNc3J1c3RUb3RhbE1zaW1hZ2VCeXRlc2ltYWdlQ291bnRzcHJpdGVDb3VudGZyYW1lQ291bnRjZWxsQ291bnRjbGlwUGF0aENvdW50c2hhcGVDb3VudHNoYXBlR3JvdXBDb3VudHNoYXBlQnl0ZXN3cml0ZXJJbml0aWFsQ2FwYWNpdHl3cml0ZXJGaW5hbENhcGFjaXR5RGVjb2RlZFJlY3R4eXdpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RlY29kZWRBdWRpb2F1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVEZWNvZGVkQ29sb3JyZ0RlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkU2hhcGVraW5kcGF0aF9kYXRhc3R5bGVEZWNvZGVkTGF5b3V0RGVjb2RlZFBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzRGVjb2RlZFNwcml0ZWltYWdlX2tleURlY29kZWRFbGxpcHNlcmFkaXVzX3hyYWRpdXNfeQAAAP//////////GA4QAEGwnMAAC/MDegYQAA8AAABKAwAAIwAAAHoGEAAPAAAAaQMAACkAAAB6BhAADwAAAFIDAAApAAAASwkQAF4AAACFAgAAKAAAAEsJEABeAAAAbgQAABwAAABLCRAAXgAAAN0CAAAhAAAASwkQAF4AAADpAAAAJgAAAEsJEABeAAAABgEAAB0AAABLCRAAXgAAAHoEAAAzAAAASwkQAF4AAAB7BAAAMwAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVu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ciB1bmRlcmZsb3dpbnZhbGlkIHZhcmludHJlY3Vyc2lvbiBsaW1pdCByZWFjaGVkVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0TgUQAGQAAABiAAAAFQAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAJkWEACfFhAAqxYQALoWEADEFhAAzBYQAGFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAigYQAFMAAAAVAQAACQAAAIUIEABJAAAAsgEAADEAAABSZ2JhQ29sb3JyZ2JhU2hhcGVBcmdzZFNoYXBlU3R5bGVmaWxsc3Ryb2tlc3Ryb2tlX3dpZHRobGluZV9jYXBsaW5lX2pvaW5taXRlcl9saW1pdGxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9kYXNoX2lpaUVsbGlwc2VBcmdzeHlyYWRpdXNfeHJhZGl1c195UmVjdEFyZ3N3aWR0aGhlaWdodGNvcm5lcl9yYWRpdXOqCRAAagAAADUAAAAOAAAAAAAAAP//////////OBgQAEHQsMAAC80BQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGZhaWxlZCB0byBkZWNvZGUgUHJvdG9idWYgbWVzc2FnZTogAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgBBqLLAAAvdAgEAAAAvAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDJAxAAYAAAADoFAAAyAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAAzAAAAOAAAAMkDEABgAAAASAUAAEkAAABMYXlvdXRFcnJvcm92ZXJmbG93AFsCEABkAAAAvQIAAB0AAABbAhAAZAAAAKkCAAAVAAAAOQAAADoAAAA7AAAAPAAAAD0AAAAVChAAXgAA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bAAAAEQEAAAjAAAASwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpAEsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKClLBxAAbAAAAEcEAAANAAAASwcQAGwAAABIBAAAIgAAAEsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQBLBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpSwcQAGwAAABNBAAADQAAAEsHEABsAAAATgQAACIAAABLBxAAbAAAAE4EAAANAAAASwcQAGwAAABPBAAAJgAAAEsHEABsAAAATwQAAA0AAABLBxAAbAAAACwEAAAXAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAACwYQAG4AAABCAQAAHAAAAAsGEABuAAAAdgEAADAAAADeBhAAbAAAAHwAAAARAAAA3gYQAGwAAACJAAAAEQAAAG1dy9YsUOtjeEGmV3Ebi7mauO6RURSWWM+WAOjSnxKKZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBv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";let JA=null,IB=null;function jC(){return typeof performance!="undefined"?performance.now():Date.now()}function Fe(){var C;const A=globalThis.process;return(C=A==null?void 0:A.versions)!=null&&C.node&&TB.startsWith("/")?new URL(Object.assign({})[`../..${TB}`],typeof document=="undefined"?require("url").pathToFileURL(__filename).href:sI&&sI.tagName.toUpperCase()==="SCRIPT"&&sI.src||new URL("gift-stage.cjs",document.baseURI).href):TB}function hI(){return JA!==null}async function IE(){return JA?!0:IB||(IB=(async()=>{try{return await gE({module_or_path:Fe()}),jQ(),JA=we,!0}catch(C){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",C),!1}})(),IB)}function ye(C){if(!JA)return null;try{return JA.inflate(C)}catch(A){return null}}function Ge(C){if(!JA)return null;try{return ue(JA.decode_svga(C))}catch(A){return null}}function de(C){if(!JA)return null;try{return JA.decode_svga_payload(C)}catch(A){return null}}function Re(C){if(!JA)return null;try{const A=jC(),g=typeof JA.decode_svga_payload_profiled=="function"?JA.decode_svga_payload_profiled(C):JA.decode_svga_payload(C),I=jC()-A,B=typeof JA.take_svga_payload_profile=="function"?JA.take_svga_payload_profile():null,Q=B&&typeof B=="object"?B:null;return{payload:g,profile:Q?{...Q,jsCallTotalMs:I,wasmBoundaryAndGlueMs:Math.max(0,I-Q.rustTotalMs)}:void 0}}catch(A){return null}}function WB(C,A,g){if(!JA)return null;try{return JA.build_batch_vertices(C,A,g)}catch(I){return null}}function ue(C){var A,g,I,B,Q,E,i;const e=C.params,t=e?{viewBoxWidth:(A=e.view_box_width)!=null?A:0,viewBoxHeight:(g=e.view_box_height)!=null?g:0,fps:(I=e.fps)!=null?I:20,frames:(B=e.frames)!=null?B:0}:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},a=new Map,o=C.images;if(o instanceof Map)for(const[r,h]of o)a.set(r,h instanceof Uint8Array?h:new Uint8Array(h));else if(o&&typeof o=="object")for(const[r,h]of Object.entries(o))a.set(r,h instanceof Uint8Array?h:new Uint8Array(h));const s=((Q=C.sprites)!=null?Q:[]).map(Se),n=((E=C.audios)!=null?E:[]).map(r=>{var h,c,D,w,l;return{audioKey:(h=r.audio_key)!=null?h:"",startFrame:(c=r.start_frame)!=null?c:0,endFrame:(D=r.end_frame)!=null?D:0,startTime:(w=r.start_time)!=null?w:0,totalTime:(l=r.total_time)!=null?l:0}});return{version:(i=C.version)!=null?i:"",params:t,images:a,spriteTable:PQ(s,t.frames),audios:n}}function Se(C){var A,g;let I=null;const B=((A=C.frames)!=null?A:[]).map(Q=>{var E,i,e,t,a,o,s,n,r,h,c;const D=Array.isArray(Q.shapes)?Q.shapes:[];let w;return D.length===0?(I=null,w=null):((E=D[0])==null?void 0:E.kind)==="keep"?w=I:(w=Ne(D),I=w),{alpha:(i=Q.alpha)!=null?i:0,layout:Q.layout?{width:(e=Q.layout.width)!=null?e:0,height:(t=Q.layout.height)!=null?t:0}:null,transform:Q.transform?{a:(a=Q.transform.a)!=null?a:1,b:(o=Q.transform.b)!=null?o:0,c:(s=Q.transform.c)!=null?s:0,d:(n=Q.transform.d)!=null?n:1,tx:(r=Q.transform.tx)!=null?r:0,ty:(h=Q.transform.ty)!=null?h:0}:null,clipPath:(c=Q.clip_path)!=null?c:"",shapes:w}});return{imageKey:(g=C.image_key)!=null?g:"",frames:B}}function zC(C){var A,g,I,B;return C?{r:(A=C.r)!=null?A:0,g:(g=C.g)!=null?g:0,b:(I=C.b)!=null?I:0,a:(B=C.a)!=null?B:0}:null}function fe(C){var A,g,I,B,Q,E;const i=(A=C==null?void 0:C.line_dash)!=null?A:C==null?void 0:C.lineDash;return{fill:zC(C==null?void 0:C.fill),stroke:zC(C==null?void 0:C.stroke),strokeWidth:(I=(g=C==null?void 0:C.stroke_width)!=null?g:C==null?void 0:C.strokeWidth)!=null?I:0,lineCap:(B=C==null?void 0:C.line_cap)!=null?B:C==null?void 0:C.lineCap,lineJoin:(Q=C==null?void 0:C.line_join)!=null?Q:C==null?void 0:C.lineJoin,miterLimit:(E=C==null?void 0:C.miter_limit)!=null?E:C==null?void 0:C.miterLimit,lineDash:Array.isArray(i)&&i.length>0?i:void 0}}function Me(C){var A,g,I,B,Q,E;return{a:(A=C==null?void 0:C.a)!=null?A:1,b:(g=C==null?void 0:C.b)!=null?g:0,c:(I=C==null?void 0:C.c)!=null?I:0,d:(B=C==null?void 0:C.d)!=null?B:1,tx:(Q=C==null?void 0:C.tx)!=null?Q:0,ty:(E=C==null?void 0:C.ty)!=null?E:0}}function Ne(C){var A,g,I,B,Q,E,i,e,t,a,o,s,n;if(!Array.isArray(C)||C.length===0)return null;const r=[];for(const h of C){const c=h==null?void 0:h.kind;if(c!=="path"&&c!=="rect"&&c!=="ellipse")continue;const D={kind:c,pathData:(A=h.path_data)!=null?A:h.pathData,rect:h.rect?{x:(g=h.rect.x)!=null?g:0,y:(I=h.rect.y)!=null?I:0,width:(B=h.rect.width)!=null?B:0,height:(Q=h.rect.height)!=null?Q:0,cornerRadius:(i=(E=h.rect.corner_radius)!=null?E:h.rect.cornerRadius)!=null?i:0}:void 0,ellipse:h.ellipse?{x:(e=h.ellipse.x)!=null?e:0,y:(t=h.ellipse.y)!=null?t:0,radiusX:(o=(a=h.ellipse.radius_x)!=null?a:h.ellipse.radiusX)!=null?o:0,radiusY:(n=(s=h.ellipse.radius_y)!=null?s:h.ellipse.radiusY)!=null?n:0}:void 0,style:fe(h.style),transform:Me(h.transform)};r.push(D)}return r.length>0?r:null}var Ue=Object.defineProperty,ke=(C,A,g)=>A in C?Ue(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,VB=(C,A,g)=>ke(C,typeof A!="symbol"?A+"":A,g);class BE{constructor(){VB(this,"floatPoolA",null),VB(this,"floatPoolB",null),VB(this,"uint32Pool",null)}getFloat32(A){var g,I;if(!this.floatPoolA||this.floatPoolA.length<A){const B=Math.max(A,((I=(g=this.floatPoolA)==null?void 0:g.length)!=null?I:0)*2,1024);this.floatPoolA=new Float32Array(B)}return this.floatPoolA}getFloat32B(A){var g,I;if(!this.floatPoolB||this.floatPoolB.length<A){const B=Math.max(A,((I=(g=this.floatPoolB)==null?void 0:g.length)!=null?I:0)*2,1024);this.floatPoolB=new Float32Array(B)}return this.floatPoolB}getUint32(A){var g,I;if(!this.uint32Pool||this.uint32Pool.length<A){const B=Math.max(A,((I=(g=this.uint32Pool)==null?void 0:g.length)!=null?I:0)*2,1024);this.uint32Pool=new Uint32Array(B)}return this.uint32Pool}destroy(){this.floatPoolA=null,this.floatPoolB=null,this.uint32Pool=null}}function pg(C,A,g,I,B,Q){const E=1/(C-A),i=1/(g-I),e=1/(B-Q),t=new Float32Array(16);return t[0]=-2*E,t[5]=-2*i,t[10]=2*e,t[12]=(C+A)*E,t[13]=(I+g)*i,t[14]=(B+Q)*e,t[15]=1,t}function cg(C,A,g){return C+(A-C)*g}function DB(C,A,g){return C<A?A:C>g?g:C}let Ye=0;function SC(){return`gift_${++Ye}_${Date.now().toString(36)}`}const dB=8;function LB(C){if(!C||C.trim().length===0)return[];const A=[];let g=[],I=0,B=0,Q=0,E=0,i=0,e=0;const t=pe(C);let a=0;function o(){return a<t.length?parseFloat(t[a++]):0}for(;a<t.length;)switch(t[a++]){case"M":for(g.length>0&&(A.push(g),g=[]),I=o(),B=o(),Q=I,E=B,g.push({x:I,y:B});a<t.length&&!isNaN(parseFloat(t[a]));)I=o(),B=o(),g.push({x:I,y:B});break;case"m":for(g.length>0&&(A.push(g),g=[]),I+=o(),B+=o(),Q=I,E=B,g.push({x:I,y:B});a<t.length&&!isNaN(parseFloat(t[a]));)I+=o(),B+=o(),g.push({x:I,y:B});break;case"L":for(;a<t.length&&!isNaN(parseFloat(t[a]));)I=o(),B=o(),g.push({x:I,y:B});break;case"l":for(;a<t.length&&!isNaN(parseFloat(t[a]));)I+=o(),B+=o(),g.push({x:I,y:B});break;case"H":for(;a<t.length&&!isNaN(parseFloat(t[a]));)I=o(),g.push({x:I,y:B});break;case"h":for(;a<t.length&&!isNaN(parseFloat(t[a]));)I+=o(),g.push({x:I,y:B});break;case"V":for(;a<t.length&&!isNaN(parseFloat(t[a]));)B=o(),g.push({x:I,y:B});break;case"v":for(;a<t.length&&!isNaN(parseFloat(t[a]));)B+=o(),g.push({x:I,y:B});break;case"C":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=o(),r=o(),h=o(),c=o(),D=o(),w=o();BB(g,I,B,n,r,h,c,D,w),i=h,e=c,I=D,B=w}break}case"c":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=I+o(),r=B+o(),h=I+o(),c=B+o(),D=I+o(),w=B+o();BB(g,I,B,n,r,h,c,D,w),i=h,e=c,I=D,B=w}break}case"S":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=2*I-i,r=2*B-e,h=o(),c=o(),D=o(),w=o();BB(g,I,B,n,r,h,c,D,w),i=h,e=c,I=D,B=w}break}case"s":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=2*I-i,r=2*B-e,h=I+o(),c=B+o(),D=I+o(),w=B+o();BB(g,I,B,n,r,h,c,D,w),i=h,e=c,I=D,B=w}break}case"Q":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=o(),r=o(),h=o(),c=o();_C(g,I,B,n,r,h,c),i=n,e=r,I=h,B=c}break}case"q":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=I+o(),r=B+o(),h=I+o(),c=B+o();_C(g,I,B,n,r,h,c),i=n,e=r,I=h,B=c}break}case"Z":case"z":I=Q,B=E,g.length>0&&(A.push(g),g=[]);break}return g.length>0&&A.push(g),A}function pe(C){return C.replace(/([A-Za-z])/g," $1 ").replace(/,/g," ").trim().split(/\s+/).filter(A=>A.length>0)}function BB(C,A,g,I,B,Q,E,i,e){for(let t=1;t<=dB;t++){const a=t/dB,o=1-a,s=o*o,n=a*a;C.push({x:s*o*A+3*s*a*I+3*o*n*Q+n*a*i,y:s*o*g+3*s*a*B+3*o*n*E+n*a*e})}}function _C(C,A,g,I,B,Q,E){for(let i=1;i<=dB;i++){const e=i/dB,t=1-e;C.push({x:t*t*A+2*t*e*I+e*e*Q,y:t*t*g+2*t*e*B+e*e*E})}}function Ke(C){const A=C.length;if(A<3)return[];if(A===3)return[0,1,2];const g=[],I=Array.from({length:A},(i,e)=>e),Q=me(C)>0;let E=A*A;for(;I.length>3&&E-- >0;){let i=!1;const e=I.length;for(let t=0;t<e;t++){const a=I[(t-1+e)%e],o=I[t],s=I[(t+1)%e],n=C[a],r=C[o],h=C[s],c=(r.x-n.x)*(h.y-n.y)-(r.y-n.y)*(h.x-n.x);if(!(Q?c>0:c<0))continue;let w=!1;for(let l=0;l<e;l++)if(!(l===(t-1+e)%e||l===t||l===(t+1)%e)&&Je(C[I[l]],n,r,h)){w=!0;break}if(!w){Q?g.push(a,o,s):g.push(a,s,o),I.splice(t,1),i=!0;break}}if(!i)break}if(I.length===3){const[i,e,t]=I;Q?g.push(i,e,t):g.push(i,t,e)}return g}function me(C){let A=0;const g=C.length;for(let I=0;I<g;I++){const B=(I+1)%g;A+=C[I].x*C[B].y,A-=C[B].x*C[I].y}return A*.5}function Je(C,A,g,I){const B=ZB(C,A,g),Q=ZB(C,g,I),E=ZB(C,I,A),i=B<0||Q<0||E<0,e=B>0||Q>0||E>0;return!(i&&e)}function ZB(C,A,g){return(C.x-g.x)*(A.y-g.y)-(A.x-g.x)*(C.y-g.y)}const fC={x:0,y:0};function ng(C){var A;return C.scale*((A=C.motionScaleX)!=null?A:1)}function rg(C){var A;return C.scale*((A=C.motionScaleY)!=null?A:1)}function $C(C,A,g){if(typeof C=="string"){const I=Number.parseFloat(C);return Number.isFinite(I)?A*I/100:A*.5}if(typeof C=="number"&&Number.isFinite(C)){const I=g&&g>0?A/g:1;return C*I}return A*.5}function HB(C,A={x:0,y:0}){const g=C.options.transformOrigin;return A.x=C.x+$C(g==null?void 0:g.x,C.width,C.options.width)*ng(C),A.y=C.y+$C(g==null?void 0:g.y,C.height,C.options.height)*rg(C),A}function aI(C,A,g,I,B,Q){const E=C.rotation||0,i=Math.cos(E),e=Math.sin(E),t=HB(C,fC),a=A-t.x,o=g-t.y;return Q[0]=i*I,Q[1]=e*I,Q[2]=0,Q[3]=0,Q[4]=-e*B,Q[5]=i*B,Q[6]=0,Q[7]=0,Q[8]=0,Q[9]=0,Q[10]=1,Q[11]=0,Q[12]=t.x+i*a-e*o,Q[13]=t.y+e*a+i*o,Q[14]=0,Q[15]=1,Q}function Le(C,A,g=A){const I=C.rotation||0;if(I===0)return g!==A&&Object.assign(g,A),g;const B=Math.cos(I),Q=Math.sin(I),E=HB(C,fC),{a:i,b:e,c:t,d:a,tx:o,ty:s}=A,n=o-E.x,r=s-E.y;return g.a=B*i-Q*e,g.b=Q*i+B*e,g.c=B*t-Q*a,g.d=Q*t+B*a,g.tx=E.x+B*n-Q*r,g.ty=E.y+Q*n+B*r,g}function Sg(C,A,g,I,B,Q={x:0,y:0,w:0,h:0}){const E=C.rotation||0;if(E===0)return Q.x=A,Q.y=g,Q.w=I,Q.h=B,Q;const i=Math.cos(E),e=Math.sin(E),t=HB(C,fC),a=A-t.x,o=g-t.y,s=a+I,n=o+B,r=t.x+i*a-e*o,h=t.y+e*a+i*o,c=t.x+i*s-e*o,D=t.y+e*s+i*o,w=t.x+i*s-e*n,l=t.y+e*s+i*n,F=t.x+i*a-e*n,d=t.y+e*a+i*n,y=Math.min(r,c,w,F),G=Math.min(h,D,l,d),f=Math.max(r,c,w,F),u=Math.max(h,D,l,d);return Q.x=y,Q.y=G,Q.w=f-y,Q.h=u-G,Q}function XA(C){var A;return(A=C.options.objectFit)!=null?A:"contain"}function Fg(C,A,g,I,B=!1){const Q=I!=null?I:{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0},E=C.width*(B?C.scale:ng(C)),i=C.height*(B?C.scale:rg(C)),e=XA(C);if(!(A>0)||!(g>0))return Q.scaleX=1,Q.scaleY=1,Q.width=E,Q.height=i,Q.offsetX=0,Q.offsetY=0,Q;if(e==="fill")return Q.scaleX=E/A,Q.scaleY=i/g,Q.width=E,Q.height=i,Q.offsetX=0,Q.offsetY=0,Q;const t=e==="cover"?Math.max(E/A,i/g):Math.min(E/A,i/g),a=A*t,o=g*t;return Q.scaleX=t,Q.scaleY=t,Q.width=a,Q.height=o,Q.offsetX=e==="cover"?(E-a)*.5:0,Q.offsetY=e==="cover"?(i-o)*.5:0,Q}function He(C,A,g=2){const I=C.length;let B=xe(C,0,I,g,!0);const Q=[];if(!B||B.next===B.prev)return Q;let E,i,e;if(C.length>80*g){E=C[0],i=C[1];let t=E,a=i;for(let o=g;o<I;o+=g){const s=C[o],n=C[o+1];s<E&&(E=s),n<i&&(i=n),s>t&&(t=s),n>a&&(a=n)}e=Math.max(t-E,a-i),e=e!==0?32767/e:0}return ZI(B,Q,g,E,i,e,0),Q}function xe(C,A,g,I,B){let Q;if(B===ze(C,A,g,I)>0)for(let E=A;E<g;E+=I)Q=AQ(E/I|0,C[E],C[E+1],Q);else for(let E=g-I;E>=A;E-=I)Q=AQ(E/I|0,C[E],C[E+1],Q);return Q&&xB(Q,Q.next)&&(XI(Q),Q=Q.next),Q}function VI(C,A){if(!C)return C;A||(A=C);let g=C,I;do if(I=!1,!g.steiner&&(xB(g,g.next)||FA(g.prev,g,g.next)===0)){if(XI(g),g=A=g.prev,g===g.next)break;I=!0}else g=g.next;while(I||g!==A);return A}function ZI(C,A,g,I,B,Q,E){if(!C)return;!E&&Q&&We(C,I,B,Q);let i=C;for(;C.prev!==C.next;){const e=C.prev,t=C.next;if(Q?qe(C,I,B,Q):be(C)){A.push(e.i,C.i,t.i),XI(C),C=t.next,i=t.next;continue}if(C=t,C===i){E?E===1?(C=ve(VI(C),A),ZI(C,A,g,I,B,Q,2)):E===2&&Te(C,A,g,I,B,Q):ZI(VI(C),A,g,I,B,Q,1);break}}}function be(C){const A=C.prev,g=C,I=C.next;if(FA(A,g,I)>=0)return!1;const B=A.x,Q=g.x,E=I.x,i=A.y,e=g.y,t=I.y,a=Math.min(B,Q,E),o=Math.min(i,e,t),s=Math.max(B,Q,E),n=Math.max(i,e,t);let r=I.next;for(;r!==A;){if(r.x>=a&&r.x<=s&&r.y>=o&&r.y<=n&&UI(B,i,Q,e,E,t,r.x,r.y)&&FA(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function qe(C,A,g,I){const B=C.prev,Q=C,E=C.next;if(FA(B,Q,E)>=0)return!1;const i=B.x,e=Q.x,t=E.x,a=B.y,o=Q.y,s=E.y,n=Math.min(i,e,t),r=Math.min(a,o,s),h=Math.max(i,e,t),c=Math.max(a,o,s),D=oC(n,r,A,g,I),w=oC(h,c,A,g,I);let l=C.prevZ,F=C.nextZ;for(;l&&l.z>=D&&F&&F.z<=w;){if(l.x>=n&&l.x<=h&&l.y>=r&&l.y<=c&&l!==B&&l!==E&&UI(i,a,e,o,t,s,l.x,l.y)&&FA(l.prev,l,l.next)>=0||(l=l.prevZ,F.x>=n&&F.x<=h&&F.y>=r&&F.y<=c&&F!==B&&F!==E&&UI(i,a,e,o,t,s,F.x,F.y)&&FA(F.prev,F,F.next)>=0))return!1;F=F.nextZ}for(;l&&l.z>=D;){if(l.x>=n&&l.x<=h&&l.y>=r&&l.y<=c&&l!==B&&l!==E&&UI(i,a,e,o,t,s,l.x,l.y)&&FA(l.prev,l,l.next)>=0)return!1;l=l.prevZ}for(;F&&F.z<=w;){if(F.x>=n&&F.x<=h&&F.y>=r&&F.y<=c&&F!==B&&F!==E&&UI(i,a,e,o,t,s,F.x,F.y)&&FA(F.prev,F,F.next)>=0)return!1;F=F.nextZ}return!0}function ve(C,A){let g=C;do{const I=g.prev,B=g.next.next;!xB(I,B)&&CE(I,g,g.next,B)&&RB(I,B)&&RB(B,I)&&(A.push(I.i,g.i,B.i),XI(g),XI(g.next),g=C=B),g=g.next}while(g!==C);return VI(g)}function Te(C,A,g,I,B,Q){let E=C;do{let i=E.next.next;for(;i!==E.prev;){if(E.i!==i.i&&Xe(E,i)){let e=je(E,i);E=VI(E,E.next),e=VI(e,e.next),ZI(E,A,g,I,B,Q,0),ZI(e,A,g,I,B,Q,0);return}i=i.next}E=E.next}while(E!==C)}function We(C,A,g,I){let B=C;do B.z===0&&(B.z=oC(B.x,B.y,A,g,I)),B.prevZ=B.prev,B.nextZ=B.next,B=B.next;while(B!==C);B.prevZ.nextZ=null,B.prevZ=null,Ve(B)}function Ve(C){let A,g=1;do{let I=C,B;C=null;let Q=null;for(A=0;I;){A++;let E=I,i=0;for(let t=0;t<g&&(i++,E=E.nextZ,!!E);t++);let e=g;for(;i>0||e>0&&E;)i!==0&&(e===0||!E||I.z<=E.z)?(B=I,I=I.nextZ,i--):(B=E,E=E.nextZ,e--),Q?Q.nextZ=B:C=B,B.prevZ=Q,Q=B;I=E}Q.nextZ=null,g*=2}while(A>1);return C}function oC(C,A,g,I,B){return C=(C-g)*B|0,A=(A-I)*B|0,C=(C|C<<8)&16711935,C=(C|C<<4)&252645135,C=(C|C<<2)&858993459,C=(C|C<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,C|A<<1}function Ze(C,A,g,I,B,Q,E,i){return(B-E)*(A-i)>=(C-E)*(Q-i)&&(C-E)*(I-i)>=(g-E)*(A-i)&&(g-E)*(Q-i)>=(B-E)*(I-i)}function UI(C,A,g,I,B,Q,E,i){return!(C===E&&A===i)&&Ze(C,A,g,I,B,Q,E,i)}function Xe(C,A){return C.next.i!==A.i&&C.prev.i!==A.i&&!Oe(C,A)&&(RB(C,A)&&RB(A,C)&&Pe(C,A)&&(FA(C.prev,C,A.prev)||FA(C,A.prev,A))||xB(C,A)&&FA(C.prev,C,C.next)>0&&FA(A.prev,A,A.next)>0)}function FA(C,A,g){return(A.y-C.y)*(g.x-A.x)-(A.x-C.x)*(g.y-A.y)}function xB(C,A){return C.x===A.x&&C.y===A.y}function CE(C,A,g,I){const B=QB(FA(C,A,g)),Q=QB(FA(C,A,I)),E=QB(FA(g,I,C)),i=QB(FA(g,I,A));return!!(B!==Q&&E!==i||B===0&&CB(C,g,A)||Q===0&&CB(C,I,A)||E===0&&CB(g,C,I)||i===0&&CB(g,A,I))}function CB(C,A,g){return A.x<=Math.max(C.x,g.x)&&A.x>=Math.min(C.x,g.x)&&A.y<=Math.max(C.y,g.y)&&A.y>=Math.min(C.y,g.y)}function QB(C){return C>0?1:C<0?-1:0}function Oe(C,A){let g=C;do{if(g.i!==C.i&&g.next.i!==C.i&&g.i!==A.i&&g.next.i!==A.i&&CE(g,g.next,C,A))return!0;g=g.next}while(g!==C);return!1}function RB(C,A){return FA(C.prev,C,C.next)<0?FA(C,A,C.next)>=0&&FA(C,C.prev,A)>=0:FA(C,A,C.prev)<0||FA(C,C.next,A)<0}function Pe(C,A){let g=C,I=!1;const B=(C.x+A.x)/2,Q=(C.y+A.y)/2;do g.y>Q!=g.next.y>Q&&g.next.y!==g.y&&B<(g.next.x-g.x)*(Q-g.y)/(g.next.y-g.y)+g.x&&(I=!I),g=g.next;while(g!==C);return I}function je(C,A){const g=sC(C.i,C.x,C.y),I=sC(A.i,A.x,A.y),B=C.next,Q=A.prev;return C.next=A,A.prev=C,g.next=B,B.prev=g,I.next=g,g.prev=I,Q.next=I,I.prev=Q,I}function AQ(C,A,g,I){const B=sC(C,A,g);return I?(B.next=I.next,B.prev=I,I.next.prev=B,I.next=B):(B.prev=B,B.next=B),B}function XI(C){C.next.prev=C.prev,C.prev.next=C.next,C.prevZ&&(C.prevZ.nextZ=C.nextZ),C.nextZ&&(C.nextZ.prevZ=C.prevZ)}function sC(C,A,g){return{i:C,x:A,y:g,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function ze(C,A,g,I){let B=0;for(let Q=A,E=g-I;Q<g;Q+=I)B+=(C[E]-C[Q])*(C[Q+1]+C[E+1]),E=Q;return B}function lB(C){const{vertices:A,indices:g}=C;if(!(A instanceof Float32Array))return"clip vertices must be Float32Array";if(!(g instanceof Uint32Array))return"clip indices must be Uint32Array integers";if(A.length<6||A.length%2!==0)return"clip vertices must contain at least three xy pairs";for(let B=0;B<A.length;B++)if(!Number.isFinite(A[B]))return`clip vertex ${B} is not finite`;if(g.length<3||g.length%3!==0)return"clip indices must contain complete triangles";const I=A.length/2;for(let B=0;B<g.length;B+=3){const Q=g[B],E=g[B+1],i=g[B+2];if(!Number.isInteger(Q)||!Number.isInteger(E)||!Number.isInteger(i))return`clip triangle ${B/3} contains a non-integer index`;if(Q>=I||E>=I||i>=I)return`clip triangle ${B/3} references an out-of-range vertex`;if(Q===E||E===i||Q===i)return`clip triangle ${B/3} is degenerate`;const e=A[Q*2],t=A[Q*2+1],a=A[E*2],o=A[E*2+1],s=A[i*2],n=A[i*2+1],r=(a-e)*(n-t)-(o-t)*(s-e);if(!Number.isFinite(r)||Math.abs(r)<=Number.EPSILON)return`clip triangle ${B/3} has zero area`}return null}function _e(C,A){const g=[],I=C.length/2;for(let B=0;B+2<A.length;B+=3){const Q=A[B],E=A[B+1],i=A[B+2];if(Q>=I||E>=I||i>=I){g.push(Q,E,i);continue}if(Q===E||E===i||Q===i)continue;const e=C[Q*2],t=C[Q*2+1],a=C[E*2],o=C[E*2+1],s=C[i*2],n=C[i*2+1],r=(a-e)*(n-t)-(o-t)*(s-e);(!Number.isFinite(r)||Math.abs(r)>Number.EPSILON)&&g.push(Q,E,i)}return g.length===A.length?A:new Uint32Array(g)}function QE(C){if(!C.trim())return"empty";const A=LB(C);if(A.length===0)return"invalid";for(const g of A)if(g.some(I=>!Number.isFinite(I.x)||!Number.isFinite(I.y)))return"invalid";for(const g of A){if(g.length===0)continue;let I=1;for(const o of g)I=Math.max(I,Math.abs(o.x),Math.abs(o.y));const B=I*1e-7,Q=B*B,E=[];for(const o of g){const s=E[E.length-1];if(s){const n=o.x-s.x,r=o.y-s.y;if(n*n+r*r<=Q)continue}E.push(o)}if(E.length>1){const o=E[0],s=E[E.length-1],n=o.x-s.x,r=o.y-s.y;n*n+r*r<=Q&&E.pop()}const i=[];for(const o of E)i.some(s=>{const n=o.x-s.x,r=o.y-s.y;return n*n+r*r<=Q})||i.push(o);if(i.length<3)continue;const e=i[0];let t=null;for(let o=1;o<i.length;o++){const s=i[o],n=s.x-e.x,r=s.y-e.y;if(n*n+r*r>Q){t={x:n,y:r};break}}if(!t)continue;const a=B*Math.max(1,Math.hypot(t.x,t.y));if(i.some(o=>Math.abs(t.x*(o.y-e.y)-t.y*(o.x-e.x))>a))return"fillable"}return"empty"}function $e(C,A){const g=LB(C);if(g.length===0)return null;const I=[],B=[],Q=[];for(const a of g)if(!(a.length<3)){Q.push(a);for(const o of a)I.push(o.x,o.y),B.push(o.x,o.y)}if(I.length===0)return null;const E=[];let i=0;for(const a of Q){const o=[];for(const n of a)o.push(n.x,n.y);const s=He(o,void 0,2);for(const n of s)E.push(n+i);i+=a.length}if(E.length===0)return null;const e=new Float32Array(I),t=_e(e,new Uint32Array(E));return t.length===0?null:{vertices:e,indices:t}}const EE=`function hA(A, I, g = 2) {
|
|
2020
|
+
`,tg=Object.freeze({submitted:!0});function $(C,A){return A?{submitted:!1,reason:C,message:A}:{submitted:!1,reason:C}}function Tg(C,A){if(!C.submitted)throw new Error(`${A} rejected (${C.reason})${C.message?`: ${C.message}`:""}`)}const $A=16,Ng=Object.freeze({parentA:0,parentB:1,parentC:2,parentD:3,translateX:4,translateY:5,opacity:6,frame:7,clipX0:8,clipY0:9,clipX1:10,clipY1:11,clipEnabled:12,metadataBase:13,atlasPage:14,motionTrackPlusOne:15});var pi=Object.defineProperty,Ki=(C,A,g)=>A in C?pi(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,p=(C,A,g)=>Ki(C,typeof A!="symbol"?A+"":A,g);const qC=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),mi=new Float32Array([0,0,1,1]),Lg=16*1024*1024,vQ=12,uI=8,Ji=uI*Float32Array.BYTES_PER_ELEMENT,bB=160,vC="svga-frame-table-instanced-premul";function QI(C,A){const g=Math.max(1,Math.floor(A));return Math.ceil(Math.max(0,C)/g)*g}const hg=class CA{constructor(A,g,I=!0){p(this,"type","webgpu"),p(this,"supportsAtomicFrameReplay",!0),p(this,"canvas"),p(this,"maxTextureSize"),p(this,"adapter"),p(this,"device"),p(this,"context"),p(this,"format"),p(this,"encoder",null),p(this,"passEncoder",null),p(this,"nextId",1),p(this,"buffers",new Map),p(this,"textures",new Map),p(this,"pipelines",new Map),p(this,"sampler"),p(this,"uniformBuffer"),p(this,"texturedBindGroupLayout"),p(this,"dualTexturedBindGroupLayout"),p(this,"instancedTextureBindGroupLayout"),p(this,"uniformOnlyBindGroupLayout"),p(this,"svgaFrameTableBindGroupLayout",null),p(this,"uniformSlotStride",256),p(this,"maxUniformSlots",8192),p(this,"uniformSlotIndex",0),p(this,"uniformShadow",new Uint8Array(this.uniformSlotStride*this.maxUniformSlots)),p(this,"uniformShadowDirtyMin",1/0),p(this,"uniformShadowDirtyMax",0),p(this,"lastDrawPipeline",null),p(this,"lastStencilRef",-1),p(this,"frameUsesStencil",!1),p(this,"lastVertexBufferId",-1),p(this,"lastIndexBufferId",-1),p(this,"uniformScratch160",new Float32Array(40)),p(this,"uniformScratch128",new Float32Array(32)),p(this,"svgaFrameTableUniformScratch",new Float32Array(bB/Float32Array.BYTES_PER_ELEMENT)),p(this,"svgaFrameTableUniformWords",new Uint32Array(this.svgaFrameTableUniformScratch.buffer)),p(this,"uniformOpacityScratch",new Float32Array(4)),p(this,"depthStencilTexture",null),p(this,"depthStencilView",null),p(this,"msaaColorTexture",null),p(this,"msaaColorView",null),p(this,"lastCanvasWidth",0),p(this,"lastCanvasHeight",0),p(this,"lastDepthStencilSampleCount",0),p(this,"msaaSampleCount",1),p(this,"wantAntialias"),p(this,"configuredCanvasWidth",0),p(this,"configuredCanvasHeight",0),p(this,"dummyTexture"),p(this,"dummyTextureView"),p(this,"videoUploadCanvas",null),p(this,"videoUploadCtx",null),p(this,"videoElementPreferCanvasBridge",!1),p(this,"videoFramePreferCanvasBridge",!1),p(this,"texturedBindGroupCache",new Map),p(this,"dualTexturedBindGroupCache",new Map),p(this,"instancedTextureBindGroupCache",new Map),p(this,"particleDataBindGroupCache",new Map),p(this,"motionDataBindGroupCache",new Map),p(this,"svgaFrameTableDataBindGroupCache",new Map),p(this,"instancedProjectionBuffer",null),p(this,"instancedStorageBuffer",null),p(this,"storageBindOffsetAlign",256),p(this,"instancedStorageRingOffset",0),p(this,"svgaCompactSlotStateUploadId",-1),p(this,"svgaCompactSlotStateStorageBase",-1),p(this,"svgaCompactSlotStateByteLength",0),p(this,"instancedStorageShadow",new Uint8Array(0)),p(this,"instancedStorageShadowDirtyMax",0),p(this,"instancedProjectionCache",new Float32Array(16)),p(this,"instancedProjectionValid",!1),p(this,"lastClipMaskStorageBase",-1),p(this,"lastClipMaskStorageByteLength",0),p(this,"lastInstancedTextureBindGroup",null),p(this,"performanceBufferWrites",0),p(this,"performanceBufferWriteBytes",0),p(this,"performanceStorageBufferWrites",0),p(this,"performanceStorageBufferWriteBytes",0),p(this,"performanceSubmittedDrawCalls",0),p(this,"performanceRejectedDrawCalls",0),p(this,"performanceSVGADynamicUploadWrites",0),p(this,"performanceSVGADynamicUploadBytes",0),p(this,"runtimeSubmittedDrawCalls",0),p(this,"runtimeRejectedDrawCalls",0),p(this,"currentDrawResult",$("invalid-command","WebGPU draw has not been submitted")),p(this,"currentDrawRecorded",!1),p(this,"runtimeUncapturedErrors",0),p(this,"runtimeBackendLosses",0),p(this,"runtimeDiagnosticHandler",null),p(this,"deviceLost",!1),p(this,"uncapturedErrorRequiresQuarantine",!1),p(this,"deviceLostHandler",null),p(this,"handleDeviceLoss",()=>{var B,Q;this.deviceLost=!0,this.runtimeBackendLosses++,(B=this.runtimeDiagnosticHandler)==null||B.call(this,{type:"backend-lost"}),this.passEncoder=null,this.encoder=null,this.buffers.clear(),this.textures.clear(),this.texturedBindGroupCache.clear(),this.dualTexturedBindGroupCache.clear(),this.instancedTextureBindGroupCache.clear(),this.svgaFrameTableDataBindGroupCache.clear(),this.particleDataBindGroupCache.clear(),this.motionDataBindGroupCache.clear(),(Q=this.deviceLostHandler)==null||Q.call(this)}),p(this,"handleUncapturedError",B=>{var Q;this.uncapturedErrorRequiresQuarantine=!0,this.runtimeUncapturedErrors++,(Q=this.runtimeDiagnosticHandler)==null||Q.call(this,{type:"gpu-uncaptured-error",message:B.error.message}),console.error("[WebGPU Error]",B.error.message)}),this.canvas=A,this.adapter=g,this.maxTextureSize=g.limits.maxTextureDimension2D,this.wantAntialias=I}async init(){this.device=await this.adapter.requestDevice(),this.device.lost.then(this.handleDeviceLoss),this.device.onuncapturederror=this.handleUncapturedError,this.context=this.canvas.getContext("webgpu"),this.format=navigator.gpu.getPreferredCanvasFormat(),this.msaaSampleCount=this.wantAntialias?4:1,this.configureCanvasContext(),this.sampler=this.device.createSampler({magFilter:"linear",minFilter:"linear"}),this.uniformSlotStride=this.device.limits.minUniformBufferOffsetAlignment,this.storageBindOffsetAlign=this.device.limits.minStorageBufferOffsetAlignment,this.uniformBuffer=this.device.createBuffer({size:this.uniformSlotStride*this.maxUniformSlots,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.uniformShadow=new Uint8Array(this.uniformSlotStride*this.maxUniformSlots),this.dummyTexture=this.device.createTexture({size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING}),this.dummyTextureView=this.dummyTexture.createView(),this.initPipelines()}configureCanvasContext(){this.context.configure({device:this.device,format:this.format,alphaMode:"premultiplied"}),this.configuredCanvasWidth=this.canvas.width,this.configuredCanvasHeight=this.canvas.height}ensureFrameAttachments(A,g,I){var B,Q;(this.lastCanvasWidth!==A||this.lastCanvasHeight!==g||this.lastDepthStencilSampleCount!==this.msaaSampleCount)&&((B=this.depthStencilTexture)==null||B.destroy(),this.depthStencilTexture=null,this.depthStencilView=null,(Q=this.msaaColorTexture)==null||Q.destroy(),this.msaaColorTexture=null,this.msaaColorView=null,this.msaaSampleCount>1&&(this.msaaColorTexture=this.device.createTexture({size:[A,g],format:this.format,sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.msaaColorView=this.msaaColorTexture.createView()),this.lastCanvasWidth=A,this.lastCanvasHeight=g,this.lastDepthStencilSampleCount=this.msaaSampleCount),I&&!this.depthStencilTexture&&(this.depthStencilTexture=this.device.createTexture({size:[A,g],format:"depth24plus-stencil8",sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.depthStencilView=this.depthStencilTexture.createView())}initPipelines(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:160}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});this.texturedBindGroupLayout=A;const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:160}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});this.dualTexturedBindGroupLayout=g,this.instancedTextureBindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]});const I=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:128}}]});this.uniformOnlyBindGroupLayout=I,this.createTexturedPipeline("svga-batch-premul:none",lA.svgaBatchPremul,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"none"),this.createTexturedPipeline("vap:none",lA.vap,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"none"),this.createTexturedPipeline("vap-mix-overlay:none",lA.vapMixOverlay,g,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none",2),this.createTexturedPipeline("alpha-video:none",lA.alphaVideo,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none"),this.createTexturedPipeline("rgba-textured:none",lA.rgbaTextured,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none")}ensureStencilPipelines(){this.pipelines.has("svga-batch-premul:pass")||this.createTexturedPipeline("svga-batch-premul:pass",lA.svgaBatchPremul,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"pass"),this.pipelines.has("svga-batch-premul:test")||this.createTexturedPipeline("svga-batch-premul:test",lA.svgaBatchPremul,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"test"),this.pipelines.has("vap:pass")||this.createTexturedPipeline("vap:pass",lA.vap,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"pass"),this.pipelines.has("vap-mix-overlay:pass")||this.createTexturedPipeline("vap-mix-overlay:pass",lA.vapMixOverlay,this.dualTexturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"pass",2);for(const[A,g]of[["alpha-video:pass",lA.alphaVideo],["rgba-textured:pass",lA.rgbaTextured]])this.pipelines.has(A)||this.createTexturedPipeline(A,g,this.texturedBindGroupLayout,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"pass");this.pipelines.has("clip-mask:write")||this.createClipMaskPipeline(this.uniformOnlyBindGroupLayout)}ensureInstancedProjectionBuffer(){return this.instancedProjectionBuffer||(this.instancedProjectionBuffer=this.device.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedProjectionValid=!1),this.instancedProjectionBuffer}ensureInstancedStorageBuffer(){return this.instancedStorageBuffer||(this.instancedStorageBuffer=this.device.createBuffer({size:Lg,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST})),this.instancedStorageBuffer}ensureInstancedDataBindGroup(A,g){let I=A.instancedDataBindGroups;I||(I=new Map,A.instancedDataBindGroups=I);let B=I.get(g);return B||(B=this.device.createBindGroup({layout:A.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),offset:0,size:256}},{binding:1,resource:{buffer:this.ensureInstancedStorageBuffer(),offset:0,size:g}}]}),I.set(g,B),B)}ensureInstancedSvgaPipeline(A="none"){const g=`svga-instanced-premul:${A}`;let I=this.pipelines.get(g);return I||(this.createInstancedSvgaPipeline(g,lA.svgaInstancedPremul,A),I=this.pipelines.get(g)),I}ensureInstancedClipMaskPipeline(){const A="clip-mask-instanced:write";let g=this.pipelines.get(A);return g||(this.createInstancedClipMaskPipeline(),g=this.pipelines.get(A)),g}ensureInstancedAlphaPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`alpha-video-instanced:${A}`;let I=this.pipelines.get(g);return I||(this.createInstancedAlphaVideoPipeline(A),I=this.pipelines.get(g)),I}ensureInstancedVapPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`vap-instanced:${A}`;let I=this.pipelines.get(g);return I||(this.createVapInstancedPipeline(A),I=this.pipelines.get(g)),I}ensureSVGAFrameTableDataLayout(){return this.svgaFrameTableBindGroupLayout?this.svgaFrameTableBindGroupLayout:(this.svgaFrameTableBindGroupLayout=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:bB}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:CA.SVGA_FRAME_TABLE_ROW_BYTES}},{binding:2,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:Ji}},{binding:3,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:32}},{binding:4,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:32}},{binding:5,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.SVGA_FRAME_TABLE_ROW_BYTES}}]}),this.svgaFrameTableBindGroupLayout)}ensureSVGAFrameTablePipeline(A="none"){const g=`${vC}:${A}`;let I=this.pipelines.get(g);if(I)return I;const B=this.ensureSVGAFrameTableDataLayout(),Q=this.device.createShaderModule({code:Yi}),E=A==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0;return I={pipeline:this.device.createRenderPipeline({label:`svga-frame-table-instanced:${A}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:E,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:B,textureCount:1},this.pipelines.set(g,I),I}ensureSVGAFrameTableMeshPipeline(A,g){const I=A==="svga-frame-table-clip-mask"?"write":g==="clear"?"none":g,B=`${A}:${I}`;let Q=this.pipelines.get(B);if(Q)return Q;const E=this.ensureSVGAFrameTableDataLayout(),i=this.device.createShaderModule({code:A==="svga-frame-table-shape-premul"?lA.svgaFrameTableShape:lA.svgaFrameTableClipMask}),e=A==="svga-frame-table-clip-mask";let t;return e?t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:255}:I==="test"?t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:I==="pass"&&(t={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}),Q={pipeline:this.device.createRenderPipeline({label:`${A}:${I}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[E,this.instancedTextureBindGroupLayout]}),vertex:{module:i,entryPoint:"vs",buffers:A==="svga-frame-table-shape-premul"?[{arrayStride:36,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}]}]:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:i,entryPoint:"fs",targets:[{format:this.format,writeMask:e?0:GPUColorWrite.ALL,...e?{}:{blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}}]},primitive:{topology:"triangle-list"},depthStencil:t,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:E,textureCount:1},this.pipelines.set(B,Q),Q}ensureMotionSvgaPipeline(){const A=this.frameUsesStencil?"pass":"none",g=`svga-motion-instanced-premul:${A}`;let I=this.pipelines.get(g);if(I)return I;this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.SVGA_INSTANCED_STRIDE}},{binding:2,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:32}},{binding:3,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:32}}]}),Q=this.device.createShaderModule({code:lA.svgaMotionInstancedPremul});return I={pipeline:this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[B,this.instancedTextureBindGroupLayout]}),vertex:{module:Q,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:Q,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:B,textureCount:1},this.pipelines.set(g,I),I}ensureParticlePipeline(A){const g=this.frameUsesStencil?"pass":"none",I=`particle-instanced:${A}:${g}`;let B=this.pipelines.get(I);if(B)return B;this.ensureInstancedProjectionBuffer();const Q=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:80}}]}),E=this.device.createShaderModule({code:lA.particleInstanced}),i=A==="additive";return B={pipeline:this.device.createRenderPipeline({label:`particle-instanced:${A}:${g}`,layout:this.device.createPipelineLayout({bindGroupLayouts:[Q]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:i?{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcFactor:"one",dstFactor:"one"}}:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:Q,textureCount:0},this.pipelines.set(I,B),B}ensureParticleSpritePipeline(A){const g=this.frameUsesStencil?"pass":"none",I=`particle-sprite-instanced:${A}:${g}`;let B=this.pipelines.get(I);if(B)return B;this.ensureInstancedProjectionBuffer();const Q=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",minBindingSize:128}}]}),E=this.device.createShaderModule({code:lA.particleSpriteInstanced}),i=A==="additive";return B={pipeline:this.device.createRenderPipeline({label:I,layout:this.device.createPipelineLayout({bindGroupLayouts:[Q,this.instancedTextureBindGroupLayout]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:i?{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcFactor:"one",dstFactor:"one"}}:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}}),bindGroupLayout:Q,textureCount:1},this.pipelines.set(I,B),B}createInstancedSvgaPipeline(A,g,I){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const B=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.SVGA_INSTANCED_STRIDE}}]}),Q=this.instancedTextureBindGroupLayout,E=this.device.createShaderModule({code:g}),i=I==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:I==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,e=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[B,Q]}),vertex:{module:E,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:E,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:i,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:e,bindGroupLayout:B,textureCount:1})}createInstancedClipMaskPipeline(){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.CLIP_MASK_INSTANCED_STRIDE}}]}),g=this.device.createShaderModule({code:lA.clipMaskInstanced}),I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:g,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:g,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask-instanced:write",{pipeline:I,bindGroupLayout:A,textureCount:0})}createVapInstancedPipeline(A){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.VAP_INSTANCED_STRIDE}}]}),I=this.instancedTextureBindGroupLayout,B=this.device.createShaderModule({code:lA.vapInstanced}),Q=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[g,I]}),vertex:{module:B,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:B,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}});this.pipelines.set(`vap-instanced:${A}`,{pipeline:Q,bindGroupLayout:g,textureCount:1})}createInstancedAlphaVideoPipeline(A){this.ensureInstancedProjectionBuffer(),this.ensureInstancedStorageBuffer();const g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:CA.ALPHA_INSTANCED_STRIDE}}]}),I=this.instancedTextureBindGroupLayout,B=this.device.createShaderModule({code:lA.alphaVideoInstanced}),Q=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[g,I]}),vertex:{module:B,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:B,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:A==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,multisample:{count:this.msaaSampleCount}});this.pipelines.set(`alpha-video-instanced:${A}`,{pipeline:Q,bindGroupLayout:g,textureCount:1})}createTexturedPipeline(A,g,I,B,Q,E,i=1){const e=this.device.createShaderModule({code:g}),t=E==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:E==="pass"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilWriteMask:0}:void 0,a=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[I]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:Q,attributes:B}]},fragment:{module:e,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:t,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:a,bindGroupLayout:I,textureCount:i})}createClipMaskPipeline(A){const g=this.device.createShaderModule({code:lA.clipMask}),I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:g,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:g,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask:write",{pipeline:I,bindGroupLayout:A,textureCount:0})}beginFrame(A={}){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");if(this.uncapturedErrorRequiresQuarantine)return $("validation-error","WebGPU reported an uncaptured error after the previous submission");try{const g=this.canvas.width,I=this.canvas.height;(g!==this.configuredCanvasWidth||I!==this.configuredCanvasHeight)&&this.configureCanvasContext();const B=A.stencil===!0;this.frameUsesStencil=B,this.ensureFrameAttachments(g,I,B),B&&this.ensureStencilPipelines(),this.encoder=this.device.createCommandEncoder();const Q=this.context.getCurrentTexture().createView(),E=this.msaaSampleCount>1&&this.msaaColorView?{view:this.msaaColorView,resolveTarget:Q,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"discard"}:{view:Q,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"};this.uniformSlotIndex=0,this.instancedStorageRingOffset=0,this.svgaCompactSlotStateUploadId=-1,this.svgaCompactSlotStateStorageBase=-1,this.svgaCompactSlotStateByteLength=0,this.instancedStorageShadowDirtyMax=0,this.lastClipMaskStorageBase=-1,this.lastClipMaskStorageByteLength=0,this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,this.lastInstancedTextureBindGroup=null;const i={colorAttachments:[E]};return B&&(i.depthStencilAttachment={view:this.depthStencilView,stencilClearValue:0,stencilLoadOp:"clear",stencilStoreOp:"discard",depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"discard"}),this.passEncoder=this.encoder.beginRenderPass(i),tg}catch(g){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(g))}}endFrame(){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");if(!this.passEncoder||!this.encoder)return $("invalid-command","WebGPU frame is not active");try{return this.passEncoder.end(),this.flushUniformShadow(),this.flushInstancedStorageShadow(),this.device.queue.submit([this.encoder.finish()]),this.passEncoder=null,this.encoder=null,tg}catch(A){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(A))}}abortFrame(){if(this.deviceLost)return $("backend-lost","WebGPU device is lost");const A=this.uncapturedErrorRequiresQuarantine;if(this.passEncoder)try{this.passEncoder.end()}catch(g){return this.passEncoder=null,this.encoder=null,$("submission-error",this.errorMessage(g))}return this.passEncoder=null,this.encoder=null,this.instancedStorageShadowDirtyMax=0,this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,A?$("validation-error","WebGPU backend is quarantined after an uncaptured error"):(this.lastInstancedTextureBindGroup=null,this.svgaCompactSlotStateUploadId=-1,this.svgaCompactSlotStateStorageBase=-1,this.svgaCompactSlotStateByteLength=0,tg)}errorMessage(A){return A instanceof Error?A.message:String(A)}getPerformanceSnapshot(){return{bufferWrites:this.performanceBufferWrites,bufferWriteBytes:this.performanceBufferWriteBytes,storageBufferWrites:this.performanceStorageBufferWrites,storageBufferWriteBytes:this.performanceStorageBufferWriteBytes,submittedDrawCalls:this.performanceSubmittedDrawCalls,rejectedDrawCalls:this.performanceRejectedDrawCalls,svgaDynamicUploadWrites:this.performanceSVGADynamicUploadWrites,svgaDynamicUploadBytes:this.performanceSVGADynamicUploadBytes}}resetPerformanceSnapshot(){this.performanceBufferWrites=0,this.performanceBufferWriteBytes=0,this.performanceStorageBufferWrites=0,this.performanceStorageBufferWriteBytes=0,this.performanceSubmittedDrawCalls=0,this.performanceRejectedDrawCalls=0,this.performanceSVGADynamicUploadWrites=0,this.performanceSVGADynamicUploadBytes=0}getRuntimeDiagnosticsSnapshot(){return{submittedDrawCalls:this.runtimeSubmittedDrawCalls,rejectedDrawCalls:this.runtimeRejectedDrawCalls,webgpuUncapturedErrors:this.runtimeUncapturedErrors,backendLosses:this.runtimeBackendLosses}}setRuntimeDiagnosticHandler(A){this.runtimeDiagnosticHandler=A}setDeviceLostHandler(A){this.deviceLostHandler=A}recordSubmittedDraw(){this.currentDrawResult=tg,this.currentDrawRecorded=!0,this.performanceSubmittedDrawCalls++,this.runtimeSubmittedDrawCalls++}rejectSVGAFastPathDraw(){this.currentDrawRecorded=!0,this.currentDrawResult.submitted&&(this.currentDrawResult=$("invalid-command","WebGPU draw was rejected")),this.performanceRejectedDrawCalls++,this.runtimeRejectedDrawCalls++}writeBuffer(A,g,I,B,Q,E="generic"){const i=(ArrayBuffer.isView(I),I.byteLength),e=Number(B!=null?B:0),t=Number(Q!=null?Q:Math.max(0,i-e));this.performanceBufferWrites++,this.performanceBufferWriteBytes+=t,E==="storage"&&(this.performanceStorageBufferWrites++,this.performanceStorageBufferWriteBytes+=t),this.device.queue.writeBuffer(A,g,I,B,Q)}flushUniformShadow(){if(this.uniformShadowDirtyMax<=this.uniformShadowDirtyMin)return;const A=this.uniformShadow,g=this.uniformShadowDirtyMin,I=this.uniformShadowDirtyMax;this.writeBuffer(this.uniformBuffer,g,A.buffer,A.byteOffset+g,I-g),this.uniformShadowDirtyMin=1/0,this.uniformShadowDirtyMax=0}flushInstancedStorageShadow(){const A=this.instancedStorageShadowDirtyMax;if(A<=0)return;const g=this.instancedStorageShadow;this.writeBuffer(this.ensureInstancedStorageBuffer(),0,g.buffer,g.byteOffset,A,"storage"),this.instancedStorageShadowDirtyMax=0}writeInstancedStorageShadow(A,g,I){const B=A+I;if(this.instancedStorageShadow.byteLength<B){let Q=Math.max(256,this.instancedStorageShadow.byteLength);for(;Q<B;)Q=Math.min(Lg,Q*2);const E=new Uint8Array(Q);E.set(this.instancedStorageShadow),this.instancedStorageShadow=E}this.instancedStorageShadow.set(new Uint8Array(g.buffer,g.byteOffset,I),A),B>this.instancedStorageShadowDirtyMax&&(this.instancedStorageShadowDirtyMax=B)}writeUniformShadow(A,g,I){this.uniformShadow.set(new Uint8Array(g.buffer,g.byteOffset,I),A),A<this.uniformShadowDirtyMin&&(this.uniformShadowDirtyMin=A);const B=A+I;B>this.uniformShadowDirtyMax&&(this.uniformShadowDirtyMax=B)}ensureInstancedProjection(A){if(A.length<16)return;if(this.instancedProjectionValid){let I=!0;for(let B=0;B<16;B++)if(this.instancedProjectionCache[B]!==A[B]){I=!1;break}if(I)return}const g=this.ensureInstancedProjectionBuffer();this.instancedProjectionCache.set(A.length===16?A:A.subarray(0,16)),this.instancedProjectionValid=!0,this.writeBuffer(g,0,A.buffer,A.byteOffset,64)}gpuBufferUsage(A){let g=GPUBufferUsage.COPY_DST;return A==="vertex"?g|=GPUBufferUsage.VERTEX:A==="index"?g|=GPUBufferUsage.INDEX:A==="storage"?g|=GPUBufferUsage.STORAGE:g|=GPUBufferUsage.UNIFORM,g}bufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}mappedUploadView(A){if(A instanceof ArrayBuffer)return new Uint8Array(A);if(typeof SharedArrayBuffer!="undefined"&&A instanceof SharedArrayBuffer)return new Uint8Array(new Uint8Array(A));const g=A,I=new Uint8Array(g.buffer,g.byteOffset,g.byteLength);return typeof SharedArrayBuffer!="undefined"&&g.buffer instanceof SharedArrayBuffer?new Uint8Array(I):I}writeBufferSource(A,g,I){if(I instanceof ArrayBuffer){this.writeBuffer(A,g,I);return}if(typeof SharedArrayBuffer!="undefined"&&I instanceof SharedArrayBuffer){this.writeBuffer(A,g,new Uint8Array(new Uint8Array(I)));return}const B=I;if(typeof SharedArrayBuffer!="undefined"&&B.buffer instanceof SharedArrayBuffer){this.writeBuffer(A,g,new Uint8Array(new Uint8Array(B.buffer,B.byteOffset,B.byteLength)));return}this.writeBuffer(A,g,B.buffer,B.byteOffset,B.byteLength)}createSVGAFrameTable(A,g){var I,B;const Q=this.mappedUploadView(A);if(Q.byteLength<CA.SVGA_FRAME_TABLE_ROW_BYTES||Q.byteLength%CA.SVGA_FRAME_TABLE_ROW_BYTES!==0)throw new RangeError(`SVGA frame table byte length must be a positive multiple of ${CA.SVGA_FRAME_TABLE_ROW_BYTES}, got ${Q.byteLength}`);const E=Math.floor(g.spriteCount),i=Math.floor(g.frameCount),e=E*i;if(!Number.isSafeInteger(E)||!Number.isSafeInteger(i)||E<1||i<1||!Number.isSafeInteger(e)||e*CA.SVGA_FRAME_TABLE_ROW_BYTES!==Q.byteLength)throw new RangeError(`SVGA frame table dimensions do not match byte length: ${E}x${i}, ${Q.byteLength} bytes`);const t=(I=g.spriteMetadata)!=null?I:g.metadata,a=g.hybridSpriteMetadata;let o=null;if(t){const w=E*4,l=E*uI;if(t.length===w){o=new Float32Array(l);for(let F=0;F<E;F++){const d=F*4,y=F*uI;o.set(t.subarray(d,d+4),y),o[y+4]=F}}else{if(t.length!==l)throw new RangeError(`SVGA sprite metadata requires ${w} or ${l} floats, got ${t.length}`);o=t}}const s=(B=this.device.limits)==null?void 0:B.maxStorageBufferBindingSize;if(typeof s=="number"&&Number.isFinite(s)&&(Q.byteLength>s||o&&o.byteLength>s||a&&a.byteLength>s))throw new RangeError(`SVGA frame table exceeds maxStorageBufferBindingSize=${s}; use CPU/hybrid fallback`);const n=this.createBuffer(Q,"storage");let r,h;try{if(r=o?this.createBuffer(o,"storage"):void 0,a){if(a.length<II||a.length%II!==0)throw new RangeError("SVGA Hybrid sprite metadata must contain complete 12-float rows");h=this.createBuffer(a,"storage")}}catch(w){throw h&&this.deleteBuffer(h),r&&this.deleteBuffer(r),this.deleteBuffer(n),w}const c=g.atlasPageCount,D=Number.isFinite(c)&&c>0?Math.floor(c):1;return{backend:"webgpu",kind:"webgpu-buffer",buffer:n,...r?{spriteMetadataBuffer:r}:{},...h?{hybridSpriteMetadataBuffer:h}:{},spriteCount:E,frameCount:i,atlasPageCount:D,strideFloats:vQ,byteLength:Q.byteLength}}deleteSVGAFrameTable(A){var g;A.backend==="webgpu"&&(A.spriteMetadataBuffer&&A.spriteMetadataBuffer.id!==A.buffer.id&&this.deleteBuffer(A.spriteMetadataBuffer),A.hybridSpriteMetadataBuffer&&A.hybridSpriteMetadataBuffer.id!==A.buffer.id&&A.hybridSpriteMetadataBuffer.id!==((g=A.spriteMetadataBuffer)==null?void 0:g.id)&&this.deleteBuffer(A.hybridSpriteMetadataBuffer),this.deleteBuffer(A.buffer))}createBuffer(A,g){const I=this.mappedUploadView(A),B=this.device.createBuffer({size:Math.max(I.byteLength,4),usage:this.gpuBufferUsage(g),mappedAtCreation:!0});new Uint8Array(B.getMappedRange()).set(I),B.unmap();const Q=this.nextId++;return this.buffers.set(Q,{buffer:B,usage:g}),{id:Q,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=Math.max(0,Math.floor(I)),E=this.bufferSourceByteLength(g),i=Math.max(4,Q+E);i>B.buffer.size&&(B.buffer.destroy(),B.buffer=this.device.createBuffer({size:i,usage:this.gpuBufferUsage(B.usage)}),B.usage==="vertex"&&this.lastVertexBufferId===A.id&&(this.lastVertexBufferId=-1),B.usage==="index"&&this.lastIndexBufferId===A.id&&(this.lastIndexBufferId=-1)),this.writeBufferSource(B.buffer,Q,g)}deleteBuffer(A){const g=this.buffers.get(A.id);if(g){g.buffer.destroy(),this.buffers.delete(A.id),this.motionDataBindGroupCache.clear();for(const I of Array.from(this.svgaFrameTableDataBindGroupCache.keys()))I.split(":").includes(String(A.id))&&this.svgaFrameTableDataBindGroupCache.delete(I);for(const I of Array.from(this.particleDataBindGroupCache.keys()))I.split(":").includes(String(A.id))&&this.particleDataBindGroupCache.delete(I)}}copyHtmlVideoToTextureDirect(A,g,I,B){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A},[g,I]),!0}catch(Q){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video>) failed; using canvas bridge.",Q),!1}}copyVideoFrameToTextureDirect(A,g,I,B){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A},[g,I]),!0}catch(Q){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame) failed; using canvas bridge.",Q),!1}}drawVideoLikeSourceToTexture(A,g,I,B){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const Q=this.videoUploadCanvas,E=this.videoUploadCtx;E&&((Q.width!==g||Q.height!==I)&&(Q.width=g,Q.height=I),E.drawImage(B,0,0,g,I),this.device.queue.copyExternalImageToTexture({source:Q,flipY:!0},{texture:A},[g,I]))}copyImageSourceToTexture(A,g,I,B,Q=!1){if(typeof VideoFrame!="undefined"&&B instanceof VideoFrame){const E=B,i=E.displayWidth||E.codedWidth,e=E.displayHeight||E.codedHeight;if(!i||!e||!g||!I||this.copyVideoFrameToTextureDirect(A,g,I,E))return;this.drawVideoLikeSourceToTexture(A,g,I,E);return}if(B instanceof HTMLVideoElement){const E=B,i=E.videoWidth,e=E.videoHeight;if(E.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!i||!e||!g||!I)return;if(E.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTexture(A,g,I,E);return}if(this.copyHtmlVideoToTextureDirect(A,g,I,E))return;this.drawVideoLikeSourceToTexture(A,g,I,E);return}this.device.queue.copyExternalImageToTexture({source:B},{texture:A,premultipliedAlpha:Q},[g,I])}createTexture(A,g){var I,B;const Q=(I=g.width)!=null?I:1,E=(B=g.height)!=null?B:1,i=this.device.createTexture({size:[Q,E],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});if(A instanceof ArrayBuffer){const t=Q*4,a=Math.ceil(t/256)*256;if(a===t||E===1)this.device.queue.writeTexture({texture:i},A,{bytesPerRow:t},[Q,E]);else{const o=new Uint8Array(A),s=new Uint8Array(a*E);for(let n=0;n<E;n++)s.set(o.subarray(n*t,(n+1)*t),n*a);this.device.queue.writeTexture({texture:i},s,{bytesPerRow:a},[Q,E])}}else this.copyImageSourceToTexture(i,Q,E,A,g.premultiplyAlpha===!0);const e=this.nextId++;return this.textures.set(e,{texture:i,view:i.createView(),width:Q,height:E}),{id:e,width:Q,height:E}}createEmptyTexture(A,g,I={}){const B=Math.max(1,Math.floor(A)),Q=Math.max(1,Math.floor(g)),E=this.device.createTexture({size:[B,Q],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),i=this.nextId++;return this.textures.set(i,{texture:E,view:E.createView(),width:B,height:Q}),{id:i,width:B,height:Q}}updateTexture(A,g){const I=this.textures.get(A.id);I&&this.copyImageSourceToTexture(I.texture,I.width,I.height,g)}updateTextureRegion(A,g,I,B,Q,E){const i=this.textures.get(A.id);if(!i)return;const e={texture:i.texture,origin:{x:Math.floor(I),y:Math.floor(B)}};if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const s=g,n=s.displayWidth||s.codedWidth,r=s.displayHeight||s.codedHeight;if(!n||!r)return;const h=Q!=null?Q:n,c=E!=null?E:r;if(h!==n||c!==r){this.drawVideoLikeSourceToTextureRegion(i.texture,h,c,s,e.origin.x,e.origin.y);return}if(this.copyVideoFrameToTextureRegionDirect(i.texture,n,r,s,e.origin.x,e.origin.y))return;this.drawVideoLikeSourceToTextureRegion(i.texture,n,r,s,e.origin.x,e.origin.y);return}if(g instanceof HTMLVideoElement){const s=g,n=s.videoWidth,r=s.videoHeight;if(s.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!n||!r)return;const h=Q!=null?Q:n,c=E!=null?E:r;if(h!==n||c!==r){this.drawVideoLikeSourceToTextureRegion(i.texture,h,c,s,e.origin.x,e.origin.y);return}if(s.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(i.texture,n,r,s,e.origin.x,e.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(i.texture,n,r,s,e.origin.x,e.origin.y))return;this.drawVideoLikeSourceToTextureRegion(i.texture,n,r,s,e.origin.x,e.origin.y);return}const t=g,a=Q!=null?Q:t.width,o=E!=null?E:t.height;if(a!==t.width||o!==t.height){this.drawVideoLikeSourceToTextureRegion(i.texture,a,o,t,e.origin.x,e.origin.y);return}this.device.queue.copyExternalImageToTexture({source:t},e,[t.width,t.height])}copyHtmlVideoToTextureRegionDirect(A,g,I,B,Q,E){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]),!0}catch(i){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video> region) failed; using canvas bridge.",i),!1}}copyVideoFrameToTextureRegionDirect(A,g,I,B,Q,E){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:B,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]),!0}catch(i){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame region) failed; using canvas bridge.",i),!1}}drawVideoLikeSourceToTextureRegion(A,g,I,B,Q,E){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const i=this.videoUploadCanvas,e=this.videoUploadCtx;e&&((i.width!==g||i.height!==I)&&(i.width=g,i.height=I),e.drawImage(B,0,0,g,I),this.device.queue.copyExternalImageToTexture({source:i,flipY:!0},{texture:A,origin:{x:Q,y:E}},[g,I]))}deleteTexture(A){const g=this.textures.get(A.id);if(g){g.texture.destroy(),this.textures.delete(A.id),this.texturedBindGroupCache.delete(A.id),this.dualTexturedBindGroupCache.delete(A.id);for(const[I,B]of this.dualTexturedBindGroupCache)B.delete(A.id),B.size===0&&this.dualTexturedBindGroupCache.delete(I);this.instancedTextureBindGroupCache.delete(A.id);for(const I of Array.from(this.particleDataBindGroupCache.keys()))I.endsWith(`:${A.id}`)&&this.particleDataBindGroupCache.delete(I)}}draw(A){const g=A.shader;if(this.currentDrawResult=$("invalid-command",`WebGPU rejected ${g}`),this.currentDrawRecorded=!1,this.deviceLost)return this.currentDrawResult=$("backend-lost","WebGPU device is lost"),this.rejectSVGAFastPathDraw(),this.currentDrawResult;if(!this.passEncoder)return this.rejectSVGAFastPathDraw(),this.currentDrawResult=$("invalid-command","WebGPU frame is not active"),this.currentDrawResult;if((A.stencil!=null&&A.stencil!=="none"||g==="clip-mask"||g==="clip-mask-instanced"||g==="svga-frame-table-clip-mask")&&!this.frameUsesStencil)return this.rejectSVGAFastPathDraw(),this.currentDrawResult=$("invalid-command",`WebGPU ${g} requires a depth-stencil attachment in the active frame`),this.currentDrawResult;try{this.drawInternal(A)}catch(B){return this.currentDrawResult=$("submission-error",this.errorMessage(B)),this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}return this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}drawInternal(A){var g,I,B,Q,E,i,e;const t=A.shader;if(t===vC||t==="svga-timeline-instanced-premul"||t==="svga-frame-table-shape-premul"||t==="svga-frame-table-clip-mask"){this.drawSVGAFrameTableInstanced(A);return}if(A.shader==="svga-instanced-premul"){this.drawInstancedSvga(A);return}if(A.shader==="svga-motion-instanced-premul"){this.drawMotionInstancedSvga(A);return}if(A.shader==="clip-mask-instanced"){this.drawInstancedClipMask(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlpha(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVap(A);return}if(A.shader==="particle-instanced"||A.shader==="particle-sprite-instanced"){this.drawInstancedParticles(A);return}const a=(g=A.stencil)!=null?g:"none",o=A.shader==="clip-mask"||a==="clear"?"clip-mask:write":`${A.shader}:${a==="none"&&this.frameUsesStencil?"pass":a}`,s=this.pipelines.get(o);if(!s)return;const n=this.passEncoder,r=s.pipeline;this.lastDrawPipeline!==r&&(n.setPipeline(r),this.lastDrawPipeline=r,this.lastInstancedTextureBindGroup=null);let h=0;a==="clear"?h=0:(a==="write"||A.shader==="clip-mask"||a==="test")&&(h=1),this.frameUsesStencil&&this.lastStencilRef!==h&&(n.setStencilReference(h),this.lastStencilRef=h);const c=this.uniformSlotIndex++;if(c>=this.maxUniformSlots){console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots");return}const D=c*this.uniformSlotStride,w=A.uniforms.u_projection;if(s.textureCount>0){const G=A.uniforms.u_transform,f=G instanceof Float32Array&&G.length>=16?G:qC,u=A.uniforms.u_atlasRemap,R=u instanceof Float32Array&&u.length>=4?u:mi,M=typeof A.uniforms.u_opacity=="number"?A.uniforms.u_opacity:1,N=typeof A.uniforms.u_rgbPremultiplied=="number"?A.uniforms.u_rgbPremultiplied:1;if(w instanceof Float32Array&&w.length>=16){const S=this.uniformScratch160;S.set(w.length===16?w:w.subarray(0,16),0),S.set(f.length===16?f:f.subarray(0,16),16),S.set(R.length===4?R:R.subarray(0,4),32),S[36]=M,S[37]=N,S[38]=0,S[39]=0,this.writeUniformShadow(D,S,160)}else{this.writeUniformShadow(D+64,f,64),this.writeUniformShadow(D+128,R,16);const S=this.uniformOpacityScratch;S[0]=M,S[1]=N,S[2]=0,S[3]=0,this.writeUniformShadow(D+144,S,S.byteLength)}}else if(w instanceof Float32Array&&w.length>=16){const G=A.uniforms.u_transform,f=G instanceof Float32Array&&G.length>=16?G:qC,u=this.uniformScratch128;u.set(w.length===16?w:w.subarray(0,16),0),u.set(f.length===16?f:f.subarray(0,16),16),this.writeUniformShadow(D,u,128)}if(s.textureCount===1){const G=A.textures.length>0?A.textures[0]:null,f=G?this.textures.get(G.id):null,u=(I=f==null?void 0:f.view)!=null?I:this.dummyTextureView,R=(B=G==null?void 0:G.id)!=null?B:0;let M=this.texturedBindGroupCache.get(R);M||(M=this.device.createBindGroup({layout:this.texturedBindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:160}},{binding:1,resource:u},{binding:2,resource:this.sampler}]}),this.texturedBindGroupCache.set(R,M)),n.setBindGroup(0,M,[D])}else if(s.textureCount===2){const G=A.textures[0],f=A.textures[1],u=G?this.textures.get(G.id):null,R=f?this.textures.get(f.id):null,M=(Q=G==null?void 0:G.id)!=null?Q:0,N=(E=f==null?void 0:f.id)!=null?E:0;let S=this.dualTexturedBindGroupCache.get(M);S||(S=new Map,this.dualTexturedBindGroupCache.set(M,S));let Y=S.get(N);Y||(Y=this.device.createBindGroup({layout:this.dualTexturedBindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:160}},{binding:1,resource:(i=u==null?void 0:u.view)!=null?i:this.dummyTextureView},{binding:2,resource:(e=R==null?void 0:R.view)!=null?e:this.dummyTextureView},{binding:3,resource:this.sampler}]}),S.set(N,Y)),n.setBindGroup(0,Y,[D])}else s.uniformOnlyBindGroup||(s.uniformOnlyBindGroup=this.device.createBindGroup({layout:s.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:128}}]})),n.setBindGroup(0,s.uniformOnlyBindGroup,[D]);const l=this.buffers.get(A.vertexBuffer.id),F=this.buffers.get(A.indexBuffer.id);if(!l||!F)return;const d=A.vertexBuffer.id,y=A.indexBuffer.id;this.lastVertexBufferId!==d&&(n.setVertexBuffer(0,l.buffer),this.lastVertexBufferId=d),this.lastIndexBufferId!==y&&(n.setIndexBuffer(F.buffer,"uint32"),this.lastIndexBufferId=y),n.drawIndexed(A.indexCount),this.recordSubmittedDraw()}drawInstancedSvga(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,i=A.instanceData,e=CA.SVGA_INSTANCED_STRIDE/4;if(E<1||!i||i.length<E*e)return;if(E>CA.SVGA_INSTANCED_MAX){console.warn("[WebGPU] svga-instanced-premul: instanceCount exceeds max",E);return}const t=A.stencil==="test"?"test":this.frameUsesStencil?"pass":"none",a=this.ensureInstancedSvgaPipeline(t),o=a.pipeline;this.lastDrawPipeline!==o&&(Q.setPipeline(o),this.lastDrawPipeline=o,this.lastInstancedTextureBindGroup=null);const s=t==="test"?1:0;this.frameUsesStencil&&this.lastStencilRef!==s&&(Q.setStencilReference(s),this.lastStencilRef=s);const n=A.uniforms.u_projection;if(!(n instanceof Float32Array)||n.length<16)return;const r=this.buffers.get(A.vertexBuffer.id),h=this.buffers.get(A.indexBuffer.id);if(!r||!h)return;this.ensureInstancedProjection(n);const c=E*CA.SVGA_INSTANCED_STRIDE,D=this.instancedStorageRingOffset;if(D+c>Lg){console.warn("[WebGPU] instanced SVGA storage ring full");return}this.instancedStorageRingOffset+=QI(c,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(D,i,c),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=c;const w=A.textures[0],l=w?this.textures.get(w.id):null,F=(I=l==null?void 0:l.view)!=null?I:this.dummyTextureView,d=(B=w==null?void 0:w.id)!=null?B:0;let y=this.instancedTextureBindGroupCache.get(d);y||(y=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:F},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(d,y)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(a,c),[D]),this.lastInstancedTextureBindGroup!==y&&(Q.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const G=A.vertexBuffer.id,f=A.indexBuffer.id;this.lastVertexBufferId!==G&&(Q.setVertexBuffer(0,r.buffer),this.lastVertexBufferId=G),this.lastIndexBufferId!==f&&(Q.setIndexBuffer(h.buffer,"uint32"),this.lastIndexBufferId=f),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedClipMask(A){var g;const I=this.passEncoder,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*6)return;if(B>CA.CLIP_MASK_INSTANCED_MAX){console.warn("[WebGPU] clip-mask-instanced: instanceCount exceeds max",B);return}const E=this.ensureInstancedClipMaskPipeline(),i=E.pipeline;this.lastDrawPipeline!==i&&(I.setPipeline(i),this.lastDrawPipeline=i,this.lastInstancedTextureBindGroup=null);const e=A.stencil==="clear",t=e?0:1;this.lastStencilRef!==t&&(I.setStencilReference(t),this.lastStencilRef=t);const a=A.uniforms.u_projection;if(!(a instanceof Float32Array)||a.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),s=this.buffers.get(A.indexBuffer.id);if(!o||!s)return;this.ensureInstancedProjection(a);const n=B*CA.CLIP_MASK_INSTANCED_STRIDE;let r=this.lastClipMaskStorageBase;if(!e||r<0||this.lastClipMaskStorageByteLength!==n){if(r=this.instancedStorageRingOffset,r+n>Lg){console.warn("[WebGPU] instanced clip-mask storage ring full");return}this.instancedStorageRingOffset+=QI(n,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(r,Q,n),this.lastClipMaskStorageBase=r,this.lastClipMaskStorageByteLength=n}I.setBindGroup(0,this.ensureInstancedDataBindGroup(E,n),[r]),this.lastVertexBufferId!==A.vertexBuffer.id&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(I.setIndexBuffer(s.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),I.drawIndexed(A.indexCount,B,0,0,0),this.recordSubmittedDraw(),e&&(this.lastClipMaskStorageBase=-1,this.lastClipMaskStorageByteLength=0)}drawSVGAFrameTableInstanced(A){var g,I,B,Q,E,i,e,t,a,o,s,n,r,h,c,D;const w=this.passEncoder,l=A.shader==="svga-frame-table-shape-premul"||A.shader==="svga-frame-table-clip-mask",F=Math.floor((g=A.instanceCount)!=null?g:l?1:0);if(F<1||F>CA.SVGA_FRAME_TABLE_INSTANCE_MAX){F>CA.SVGA_FRAME_TABLE_INSTANCE_MAX&&console.warn("[WebGPU] svga-frame-table-instanced-premul: sprite count exceeds max",F);return}const d=(I=A.svgaFrameTable)!=null?I:null,y=d&&typeof d=="object"&&"backend"in d?d:null,G=(y==null?void 0:y.backend)==="webgpu"?y.buffer:d&&"id"in d?d:(Q=(B=A.svgaFrameTableBuffer)!=null?B:A.frameTableBuffer)!=null?Q:null;if(!G||G.usage!=="storage")return;const f=this.buffers.get(G.id);if(!f||f.usage!=="storage"||f.buffer.size<CA.SVGA_FRAME_TABLE_ROW_BYTES||f.buffer.size%CA.SVGA_FRAME_TABLE_ROW_BYTES!==0)return;const u=(t=(e=(i=(E=A.svgaSpriteMetadataBuffer)!=null?E:A.svgaSpriteMetadata)!=null?i:A.spriteMetadataBuffer)!=null?e:(y==null?void 0:y.backend)==="webgpu"?y.spriteMetadataBuffer:null)!=null?t:null;if(!u||u.usage!=="storage")return;const R=this.buffers.get(u.id);if(!R||R.usage!=="storage")return;const M=Math.floor((a=A.svgaSpriteMetadataStrideFloats)!=null?a:uI),N=M*Float32Array.BYTES_PER_ELEMENT;if(M<uI||M%4!==0||R.buffer.size<N||R.buffer.size%N!==0)return;const S=(o=A.svgaFrameTableFrameCount)!=null?o:A.frameTableFrameCount,Y=(s=A.svgaFrameTableSpriteCount)!=null?s:A.frameTableSpriteCount,U=Math.floor(Number.isFinite(S)?S:(y==null?void 0:y.backend)==="webgpu"?y.frameCount:0),k=Math.floor(f.buffer.size/CA.SVGA_FRAME_TABLE_ROW_BYTES),m=Math.floor(Number.isFinite(Y)?Y:(y==null?void 0:y.backend)==="webgpu"?y.spriteCount:U>0?k/U:0);if(U<1||m<1||U*m>k||!Number.isSafeInteger(U)||!Number.isSafeInteger(m))return;const J=A.instanceData,q=A.svgaFrameTableSlotStates,_=Math.floor((n=A.svgaFrameTableSlotStateCount)!=null?n:0),Z=Math.floor((r=A.svgaFrameTableSpritesPerSlot)!=null?r:0),x=q!=null&&_>0&&Z>0&&_*Z===F&&q.length>=_*$A,X=!x&&J!=null&&J.length>=F*$A,T=this.resolveSVGAFrameTableSlotUniform(A,F,U);if(!T)return;let gA=T.metadataBase;if(x)gA+=Z;else if(X){let hA=-1;for(let aA=0;aA<F;aA++){const nA=Math.floor((h=J[aA*$A+Ng.metadataBase])!=null?h:-1);nA>hA&&(hA=nA)}gA=hA+1}else gA+=F;if(T.metadataBase<0||!l&&(gA<1||gA>R.buffer.size/N))return;const UA=x?q:J,rA=X||x?(x?_:F)*$A*Float32Array.BYTES_PER_ELEMENT:Math.min(64,f.buffer.size),BA=(c=A.svgaFrameTableSlotStateUploadId)!=null?c:-1,Ig=x&&BA>=0&&BA===this.svgaCompactSlotStateUploadId&&rA===this.svgaCompactSlotStateByteLength,QA=Ig?this.svgaCompactSlotStateStorageBase:X||x?this.instancedStorageRingOffset:0;if((X||x)&&(QA<0||QA+rA>Lg))return;(X||x)&&!Ig&&(this.instancedStorageRingOffset+=QI(rA,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(QA,UA,rA),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=rA,x&&BA>=0&&(this.svgaCompactSlotStateUploadId=BA,this.svgaCompactSlotStateStorageBase=QA,this.svgaCompactSlotStateByteLength=rA));const V=A.motionTrackIndex,YA=A.motionTrackBuffer,kA=A.motionTrackGlobalsBuffer,W=YA?this.buffers.get(YA.id):null,pA=kA?this.buffers.get(kA.id):null,LA=Math.floor((D=A.motionTrackSampleCount)!=null?D:0),ag=Math.floor(V!=null?V:-1),OA=(ag+1)*LA*8*4,KA=ag>=0&&LA>=1&&(W==null?void 0:W.usage)==="storage"&&(pA==null?void 0:pA.usage)==="uniform"&&W.buffer.size>=OA&&pA.buffer.size>=32,vA=A.stencil==="test"?"test":A.stencil==="write"?"write":A.stencil==="clear"?"clear":this.frameUsesStencil?"pass":"none",sA=l?this.ensureSVGAFrameTableMeshPipeline(A.shader,vA):this.ensureSVGAFrameTablePipeline(vA==="test"?"test":vA==="pass"?"pass":"none");this.lastDrawPipeline!==sA.pipeline&&(w.setPipeline(sA.pipeline),this.lastDrawPipeline=sA.pipeline,this.lastInstancedTextureBindGroup=null);const L=vA==="test"||vA==="write"?1:0;this.frameUsesStencil&&this.lastStencilRef!==L&&(w.setStencilReference(L),this.lastStencilRef=L);const EA=A.uniforms.u_projection;if(!(EA instanceof Float32Array)||EA.length<16)return;const Bg=this.buffers.get(A.vertexBuffer.id),AA=this.buffers.get(A.indexBuffer.id);if(!Bg||!AA)return;const DA=A.textures[0];if(!DA)return;const IA=this.textures.get(DA.id);if(!IA)return;const mg=this.reserveSVGAFrameTableUniform(EA,T,U,m,F,KA?ag:null,x?2:X?1:0,Z,M/4);if(mg==null)return;const Jg=KA?W.buffer:f.buffer,Cg=KA?pA.buffer:this.uniformBuffer,GA=X||x?this.ensureInstancedStorageBuffer():f.buffer;if(GA.size<rA)return;const fA=x?"slots":X?"hybrid":"direct",dA=`${G.id}:${u.id}:${KA?YA.id:0}:${KA?kA.id:0}:${fA}:${rA}`;let iA=this.svgaFrameTableDataBindGroupCache.get(dA);iA||(iA=this.device.createBindGroup({layout:sA.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:this.uniformSlotStride}},{binding:1,resource:{buffer:f.buffer,offset:0,size:f.buffer.size}},{binding:2,resource:{buffer:R.buffer,offset:0,size:R.buffer.size}},{binding:3,resource:{buffer:Jg,offset:0,size:Jg.size}},{binding:4,resource:{buffer:Cg,offset:0,size:32}},{binding:5,resource:{buffer:GA,offset:0,size:rA}}]}),this.svgaFrameTableDataBindGroupCache.set(dA,iA)),w.setBindGroup(0,iA,[mg,QA]);const eA=DA.id;let tA=this.instancedTextureBindGroupCache.get(eA);tA||(tA=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:IA.view},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(eA,tA)),w.setBindGroup(1,tA),this.lastVertexBufferId!==A.vertexBuffer.id&&(w.setVertexBuffer(0,Bg.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(w.setIndexBuffer(AA.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),w.drawIndexed(A.indexCount,F,0,0,0),this.recordSubmittedDraw()}resolveSVGAFrameTableSlotUniform(A,g,I){var B,Q,E,i,e,t,a,o,s,n,r,h,c,D,w,l,F,d,y,G,f,u,R,M,N,S,Y,U,k,m,J,q,_,Z,x,X,T,gA,UA,yA,rA,BA,Ig,QA,V,YA,kA,W,pA,LA,ag,OA,KA,vA,sA;const L=(Q=(B=A.svgaFrameTableSlotState)!=null?B:A.svgaSlotState)!=null?Q:A.uniforms.u_svgaSlotState instanceof Float32Array?A.uniforms.u_svgaSlotState:A.uniforms.u_slotState instanceof Float32Array?A.uniforms.u_slotState:null,EA=A.uniforms.u_transform,Bg=A.uniforms.u_clipRect,AA=A.svgaFrameTableParentAffine,DA=A.svgaFrameTableParentTranslate,IA=A.svgaFrameTableClipRect,mg=A.svgaFrameIndex!=null||A.svgaFrameTableFrameIndex!=null||A.frameTableFrameIndex!=null,Jg=A.svgaFrameTableOpacity!=null||typeof A.uniforms.u_opacity=="number",Cg=A.uniforms.u_projection;if(!(Cg instanceof Float32Array)||Cg.length<16)return null;let GA=1,fA=0,dA=0,iA=1,eA=0,tA=0,hA=(E=A.svgaFrameTableOpacity)!=null?E:typeof A.uniforms.u_opacity=="number"?A.uniforms.u_opacity:1,aA=(t=(e=(i=A.svgaFrameIndex)!=null?i:A.svgaFrameTableFrameIndex)!=null?e:A.frameTableFrameIndex)!=null?t:0,nA=0,RA=0,uA=this.canvas.width,TA=this.canvas.height,Qg=0,Og=(a=A.svgaFrameTableAtlasPage)!=null?a:-1,PA=(h=(r=(n=(s=(o=A.svgaFrameTableMetadataBase)!=null?o:A.svgaFrameTableSpriteBase)!=null?s:A.frameTableSpriteBase)!=null?n:A.svgaSpriteMetadataBase)!=null?r:A.svgaSpriteBase)!=null?h:0;if(AA&&AA.length>=4)GA=(c=AA[0])!=null?c:GA,fA=(D=AA[1])!=null?D:fA,dA=(w=AA[2])!=null?w:dA,iA=(l=AA[3])!=null?l:iA,DA&&DA.length>=2&&(eA=(F=DA[0])!=null?F:eA,tA=(d=DA[1])!=null?d:tA),IA&&IA.length>=4&&(nA=(y=IA[0])!=null?y:nA,RA=(G=IA[1])!=null?G:RA,uA=(f=IA[2])!=null?f:uA,TA=(u=IA[3])!=null?u:TA,Qg=1);else if(L&&L.length>=13)GA=(R=L[0])!=null?R:GA,fA=(M=L[1])!=null?M:fA,dA=(N=L[2])!=null?N:dA,iA=(S=L[3])!=null?S:iA,eA=(Y=L[4])!=null?Y:eA,tA=(U=L[5])!=null?U:tA,Jg||(hA=(k=L[6])!=null?k:hA),mg||(aA=(m=L[7])!=null?m:aA),nA=(J=L[8])!=null?J:nA,RA=(q=L[9])!=null?q:RA,uA=(_=L[10])!=null?_:uA,TA=(Z=L[11])!=null?Z:TA,Qg=((x=L[12])!=null?x:0)>.5?1:0,A.svgaFrameTableMetadataBase==null&&A.svgaFrameTableSpriteBase==null&&A.frameTableSpriteBase==null&&A.svgaSpriteMetadataBase==null&&A.svgaSpriteBase==null&&L.length>=14&&(PA=(X=L[13])!=null?X:PA);else if(EA instanceof Float32Array&&EA.length>=16){GA=(T=EA[0])!=null?T:GA,fA=(gA=EA[1])!=null?gA:fA,dA=(UA=EA[4])!=null?UA:dA,iA=(yA=EA[5])!=null?yA:iA,eA=(rA=EA[12])!=null?rA:eA,tA=(BA=EA[13])!=null?BA:tA;const CI=Bg instanceof Float32Array&&Bg.length>=4?Bg:IA;CI&&CI.length>=4&&(nA=(Ig=CI[0])!=null?Ig:nA,RA=(QA=CI[1])!=null?QA:RA,uA=(V=CI[2])!=null?V:uA,TA=(YA=CI[3])!=null?YA:TA,Qg=typeof A.uniforms.u_clipEnabled=="number"?A.uniforms.u_clipEnabled>.5?1:0:1)}return AA&&L&&L.length>=13&&(DA||(eA=(kA=L[4])!=null?kA:eA,tA=(W=L[5])!=null?W:tA),Jg||(hA=(pA=L[6])!=null?pA:hA),mg||(aA=(LA=L[7])!=null?LA:aA),IA||(nA=(ag=L[8])!=null?ag:nA,RA=(OA=L[9])!=null?OA:RA,uA=(KA=L[10])!=null?KA:uA,TA=(vA=L[11])!=null?vA:TA,Qg=((sA=L[12])!=null?sA:0)>.5?1:0)),Number.isFinite(hA)||(hA=1),Number.isFinite(aA)||(aA=0),Number.isFinite(PA)||(PA=0),Number.isFinite(Og)||(Og=-1),aA=Math.max(0,Math.min(I-1,Math.floor(aA))),PA=Math.max(0,Math.floor(PA)),![GA,fA,dA,iA,eA,tA,hA].every(Number.isFinite)||g<1?null:{parentA:GA,parentB:fA,parentC:dA,parentD:iA,tx:eA,ty:tA,opacity:hA,frameIndex:aA,clipX0:nA,clipY0:RA,clipX1:uA,clipY1:TA,clipEnabled:Qg,metadataBase:PA,atlasPage:Math.max(-1,Math.floor(Og))}}reserveSVGAFrameTableUniform(A,g,I,B,Q,E,i,e=0,t=2){if(!g)return null;const a=this.uniformSlotIndex++;if(a>=this.maxUniformSlots)return console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots"),null;const o=this.svgaFrameTableUniformScratch;o.fill(0),o.set(A.length===16?A:A.subarray(0,16),0),o[16]=g.parentA,o[17]=g.parentB,o[18]=g.parentC,o[19]=g.parentD,o[20]=g.tx,o[21]=g.ty,o[22]=g.opacity,o[23]=g.frameIndex,o[24]=g.clipX0,o[25]=g.clipY0,o[26]=g.clipX1,o[27]=g.clipY1;const s=this.svgaFrameTableUniformWords;s[28]=Math.max(0,Math.floor(g.metadataBase)),s[29]=Math.max(1,Math.floor(Q)),s[30]=(g.clipEnabled>.5?1:0)|(i===1?2:0)|(i===2?4:0),s[31]=E==null?0:Math.max(1,Math.floor(E)+1),s[32]=Math.max(1,Math.floor(I)),s[33]=Math.max(1,Math.floor(B)),s[34]=3,s[35]=g.atlasPage>=0?Math.floor(g.atlasPage):4294967295,s[36]=i===2?Math.max(1,Math.floor(e)):0,s[37]=Math.max(2,Math.floor(t)),s[38]=i;const n=a*this.uniformSlotStride;return this.writeUniformShadow(n,o,bB),n}drawMotionInstancedSvga(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,i=A.instanceData,e=A.motionTrackBuffer,t=A.motionTrackGlobalsBuffer;if(!i||!e||!t||E<1)return;const a=this.buffers.get(e.id),o=this.buffers.get(t.id),s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!a||!o||!s||!n)return;const r=this.ensureMotionSvgaPipeline();this.lastDrawPipeline!==r.pipeline&&(Q.setPipeline(r.pipeline),this.lastDrawPipeline=r.pipeline,this.lastInstancedTextureBindGroup=null);const h=A.uniforms.u_projection;if(!(h instanceof Float32Array)||h.length<16)return;this.ensureInstancedProjection(h);const c=E*CA.SVGA_INSTANCED_STRIDE,D=this.instancedStorageRingOffset;if(D+c>Lg)return;this.instancedStorageRingOffset+=QI(c,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(D,i,c),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=c;const w=`${c}:${e.id}:${t.id}:${this.frameUsesStencil?1:0}`;let l=this.motionDataBindGroupCache.get(w);l||(l=this.device.createBindGroup({layout:r.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),size:64}},{binding:1,resource:{buffer:this.ensureInstancedStorageBuffer(),offset:0,size:c}},{binding:2,resource:{buffer:a.buffer,size:a.buffer.size}},{binding:3,resource:{buffer:o.buffer,size:32}}]}),this.motionDataBindGroupCache.set(w,l)),Q.setBindGroup(0,l,[D]);const F=A.textures[0],d=F?this.textures.get(F.id):null,y=(I=F==null?void 0:F.id)!=null?I:0;let G=this.instancedTextureBindGroupCache.get(y);G||(G=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:(B=d==null?void 0:d.view)!=null?B:this.dummyTextureView},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(y,G)),Q.setBindGroup(1,G),Q.setVertexBuffer(0,s.buffer),Q.setIndexBuffer(n.buffer,"uint32"),this.lastVertexBufferId=A.vertexBuffer.id,this.lastIndexBufferId=A.indexBuffer.id,Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedParticles(A){var g,I,B,Q;const E=this.passEncoder,i=(g=A.instanceCount)!=null?g:0,e=A.instanceBuffer;if(!e||i<1||i>CA.PARTICLE_INSTANCED_MAX)return;const t=this.buffers.get(e.id),a=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!t||!a||!o)return;const s=(I=A.particleBlend)!=null?I:"additive",n=A.shader==="particle-sprite-instanced",r=n?this.ensureParticleSpritePipeline(s):this.ensureParticlePipeline(s);this.lastDrawPipeline!==r.pipeline&&(E.setPipeline(r.pipeline),this.lastDrawPipeline=r.pipeline,this.lastInstancedTextureBindGroup=null);const h=A.uniforms.u_projection;if(!(h instanceof Float32Array)||h.length<16)return;this.ensureInstancedProjection(h);const c=n&&(Q=(B=A.textures[0])==null?void 0:B.id)!=null?Q:0;if(n&&!this.textures.has(c))return;const D=`${n?"sprite-v2":"ballistic-v1"}:${this.frameUsesStencil?"pass":"none"}:${s}:${e.id}:${c}`;let w=this.particleDataBindGroupCache.get(D);if(w||(w=this.device.createBindGroup({layout:r.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.ensureInstancedProjectionBuffer(),offset:0,size:64}},{binding:1,resource:{buffer:t.buffer,offset:0,size:t.buffer.size}}]}),this.particleDataBindGroupCache.set(D,w)),E.setBindGroup(0,w),n){const l=this.textures.get(c);let F=this.instancedTextureBindGroupCache.get(c);F||(F=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:l.view},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(c,F)),E.setBindGroup(1,F)}this.lastVertexBufferId!==A.vertexBuffer.id&&(E.setVertexBuffer(0,a.buffer),this.lastVertexBufferId=A.vertexBuffer.id),this.lastIndexBufferId!==A.indexBuffer.id&&(E.setIndexBuffer(o.buffer,"uint32"),this.lastIndexBufferId=A.indexBuffer.id),E.drawIndexed(A.indexCount,i,0,0,0),this.recordSubmittedDraw()}drawInstancedAlpha(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,i=A.instanceData;if(E<1||!i||i.length<E*12)return;if(E>CA.ALPHA_INSTANCED_MAX){console.warn("[WebGPU] alpha-video-instanced: instanceCount exceeds max",E);return}const t=this.ensureInstancedAlphaPipeline(),a=t.pipeline;this.lastDrawPipeline!==a&&(Q.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.frameUsesStencil&&this.lastStencilRef!==0&&(Q.setStencilReference(0),this.lastStencilRef=0);const o=A.uniforms.u_projection;if(!(o instanceof Float32Array)||o.length<16)return;const s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!s||!n)return;this.ensureInstancedProjection(o);const r=E*CA.ALPHA_INSTANCED_STRIDE,h=this.instancedStorageRingOffset;if(h+r>Lg){console.warn("[WebGPU] instanced alpha storage ring full");return}this.instancedStorageRingOffset+=QI(r,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(h,i,r);const c=A.textures[0],D=c?this.textures.get(c.id):null,w=(I=D==null?void 0:D.view)!=null?I:this.dummyTextureView,l=(B=c==null?void 0:c.id)!=null?B:0;let F=this.instancedTextureBindGroupCache.get(l);F||(F=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:w},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(l,F)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(t,r),[h]),this.lastInstancedTextureBindGroup!==F&&(Q.setBindGroup(1,F),this.lastInstancedTextureBindGroup=F);const d=A.vertexBuffer.id,y=A.indexBuffer.id;this.lastVertexBufferId!==d&&(Q.setVertexBuffer(0,s.buffer),this.lastVertexBufferId=d),this.lastIndexBufferId!==y&&(Q.setIndexBuffer(n.buffer,"uint32"),this.lastIndexBufferId=y),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}drawInstancedVap(A){var g,I,B;const Q=this.passEncoder,E=(g=A.instanceCount)!=null?g:0,i=A.instanceData;if(E<1||!i||i.length<E*32)return;if(E>CA.VAP_INSTANCED_MAX){console.warn("[WebGPU] vap-instanced: instanceCount exceeds max",E);return}const t=this.ensureInstancedVapPipeline(),a=t.pipeline;this.lastDrawPipeline!==a&&(Q.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.frameUsesStencil&&this.lastStencilRef!==0&&(Q.setStencilReference(0),this.lastStencilRef=0);const o=A.uniforms.u_projection;if(!(o instanceof Float32Array)||o.length<16)return;const s=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);if(!s||!n)return;this.ensureInstancedProjection(o);const r=E*CA.VAP_INSTANCED_STRIDE,h=this.instancedStorageRingOffset;if(h+r>Lg){console.warn("[WebGPU] instanced VAP storage ring full");return}this.instancedStorageRingOffset+=QI(r,this.storageBindOffsetAlign),this.writeInstancedStorageShadow(h,i,r);const c=A.textures[0],D=c?this.textures.get(c.id):null,w=(I=D==null?void 0:D.view)!=null?I:this.dummyTextureView,l=(B=c==null?void 0:c.id)!=null?B:0;let F=this.instancedTextureBindGroupCache.get(l);F||(F=this.device.createBindGroup({layout:this.instancedTextureBindGroupLayout,entries:[{binding:0,resource:w},{binding:1,resource:this.sampler}]}),this.instancedTextureBindGroupCache.set(l,F)),Q.setBindGroup(0,this.ensureInstancedDataBindGroup(t,r),[h]),this.lastInstancedTextureBindGroup!==F&&(Q.setBindGroup(1,F),this.lastInstancedTextureBindGroup=F);const d=A.vertexBuffer.id,y=A.indexBuffer.id;this.lastVertexBufferId!==d&&(Q.setVertexBuffer(0,s.buffer),this.lastVertexBufferId=d),this.lastIndexBufferId!==y&&(Q.setIndexBuffer(n.buffer,"uint32"),this.lastIndexBufferId=y),Q.drawIndexed(A.indexCount,E,0,0,0),this.recordSubmittedDraw()}clearStencil(){}setScissor(A,g,I,B){if(!this.passEncoder)return;const Q=this.canvas.width,E=this.canvas.height,i=Math.max(0,Math.min(Q,Math.floor(A))),e=Math.max(0,Math.min(E,Math.floor(g))),t=Math.max(i,Math.min(Q,Math.ceil(A+I))),a=Math.max(e,Math.min(E,Math.ceil(g+B)));this.passEncoder.setScissorRect(i,e,t-i,a-e)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,g,I,B,Q,E,i;this.deviceLostHandler=null,this.runtimeDiagnosticHandler=null,this.device&&(this.device.onuncapturederror=null);for(const[,e]of this.buffers)e.buffer.destroy();for(const[,e]of this.textures)e.texture.destroy();(A=this.uniformBuffer)==null||A.destroy(),(g=this.instancedProjectionBuffer)==null||g.destroy(),(I=this.instancedStorageBuffer)==null||I.destroy(),(B=this.depthStencilTexture)==null||B.destroy(),(Q=this.msaaColorTexture)==null||Q.destroy(),(E=this.dummyTexture)==null||E.destroy(),(i=this.device)==null||i.destroy(),this.buffers.clear(),this.textures.clear(),this.texturedBindGroupCache.clear(),this.dualTexturedBindGroupCache.clear(),this.instancedTextureBindGroupCache.clear(),this.particleDataBindGroupCache.clear(),this.motionDataBindGroupCache.clear(),this.pipelines.clear()}};p(hg,"SVGA_INSTANCED_MAX",2048);p(hg,"SVGA_INSTANCED_STRIDE",52);p(hg,"SVGA_FRAME_TABLE_INSTANCE_MAX",2048);p(hg,"SVGA_FRAME_TABLE_ROW_BYTES",vQ*Float32Array.BYTES_PER_ELEMENT);p(hg,"CLIP_MASK_INSTANCED_MAX",2048);p(hg,"CLIP_MASK_INSTANCED_STRIDE",24);p(hg,"ALPHA_INSTANCED_MAX",1024);p(hg,"ALPHA_INSTANCED_STRIDE",48);p(hg,"VAP_INSTANCED_MAX",1024);p(hg,"VAP_INSTANCED_STRIDE",128);p(hg,"PARTICLE_INSTANCED_MAX",8192);let TQ=hg;function TC(C,A,g){const I=C.createShader(A);if(!I)throw new Error("Failed to create shader");if(C.shaderSource(I,g),C.compileShader(I),!C.getShaderParameter(I,C.COMPILE_STATUS)){const B=C.getShaderInfoLog(I);throw C.deleteShader(I),new Error(`Shader compile failed: ${B}`)}return I}function WA(C,A,g){const I=TC(C,C.VERTEX_SHADER,A),B=TC(C,C.FRAGMENT_SHADER,g),Q=C.createProgram();if(!Q)throw C.deleteShader(I),C.deleteShader(B),new Error("Failed to create program");if(C.attachShader(Q,I),C.attachShader(Q,B),C.linkProgram(Q),!C.getProgramParameter(Q,C.LINK_STATUS)){const E=C.getProgramInfoLog(Q);throw C.deleteProgram(Q),C.deleteShader(I),C.deleteShader(B),new Error(`Program link failed: ${E}`)}return C.deleteShader(I),C.deleteShader(B),Q}function WC(C,A=C.LINEAR,g=C.CLAMP_TO_EDGE){const I=C.createTexture();if(!I)throw new Error("Failed to create texture");return C.bindTexture(C.TEXTURE_2D,I),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,g),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,g),I}function Li(C=typeof navigator!="undefined"?navigator:null){var A,g;const I=(A=C==null?void 0:C.userAgent)!=null?A:"";return/iPad|iPhone|iPod/i.test(I)||/Macintosh/i.test(I)&&((g=C==null?void 0:C.maxTouchPoints)!=null?g:0)>1}function vI(C){const A=C;return typeof A.displayWidth=="number"&&A.displayWidth>0?A.displayWidth:typeof A.codedWidth=="number"&&A.codedWidth>0?A.codedWidth:typeof A.videoWidth=="number"&&A.videoWidth>0?A.videoWidth:typeof A.naturalWidth=="number"&&A.naturalWidth>0?A.naturalWidth:typeof A.width=="number"&&A.width>0?A.width:0}function TI(C){const A=C;return typeof A.displayHeight=="number"&&A.displayHeight>0?A.displayHeight:typeof A.codedHeight=="number"&&A.codedHeight>0?A.codedHeight:typeof A.videoHeight=="number"&&A.videoHeight>0?A.videoHeight:typeof A.naturalHeight=="number"&&A.naturalHeight>0?A.naturalHeight:typeof A.height=="number"&&A.height>0?A.height:0}var Hi=Object.defineProperty,xi=(C,A,g)=>A in C?Hi(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,H=(C,A,g)=>xi(C,typeof A!="symbol"?A+"":A,g);const gB="svga-frame-table-instanced-premul",VC=8,bi=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),qi=new Float32Array([1,1]),SA=class bA{constructor(A,g=!0){H(this,"type","webgl2"),H(this,"supportsAtomicFrameReplay",!0),H(this,"canvas"),H(this,"maxTextureSize",4096),H(this,"antialias"),H(this,"gl"),H(this,"nextId",1),H(this,"buffers",new Map),H(this,"textures",new Map),H(this,"frameTables",new Map),H(this,"ownedFrameTableMetadataIds",new Set),H(this,"programs",new Map),H(this,"vertexArrays",new Map),H(this,"cachedDrawProgram",null),H(this,"cachedTex0Id",null),H(this,"cachedFrameTableId",null),H(this,"cachedFrameMetadataId",null),H(this,"cachedProjectionRef",null),H(this,"cachedProjectionShader",null),H(this,"videoUploadCanvas",null),H(this,"videoUploadCtx",null),H(this,"videoElementPreferCanvasBridge",Li()),H(this,"videoElementDirectUploadValidated",!1),H(this,"maxVertexTextureImageUnits",0),H(this,"svgaFrameTableSupported",!1),H(this,"instancedSvgaInstanceGLBuffer",null),H(this,"svgaSlotStateTexture",null),H(this,"svgaSlotStateTextureWidth",0),H(this,"svgaSlotStateTextureHeight",0),H(this,"svgaSlotStateUploadScratch",new Float32Array(0)),H(this,"svgaSlotStateUploadId",-1),H(this,"svgaTableInfoScratch",new Int32Array(4)),H(this,"svgaTableSizeScratch",new Int32Array(2)),H(this,"svgaMetadataSizeScratch",new Int32Array(2)),H(this,"instancedClipMaskGLBuffer",null),H(this,"instancedAlphaInstanceGLBuffer",null),H(this,"performanceBufferWrites",0),H(this,"performanceBufferWriteBytes",0),H(this,"performanceStorageBufferWrites",0),H(this,"performanceStorageBufferWriteBytes",0),H(this,"performanceSubmittedDrawCalls",0),H(this,"performanceRejectedDrawCalls",0),H(this,"performanceSVGADynamicUploadWrites",0),H(this,"performanceSVGADynamicUploadBytes",0),H(this,"runtimeSubmittedDrawCalls",0),H(this,"runtimeRejectedDrawCalls",0),H(this,"currentDrawResult",$("invalid-command","WebGL2 draw has not been submitted")),H(this,"currentDrawRecorded",!1),H(this,"runtimeBackendLosses",0),H(this,"runtimeDiagnosticHandler",null),H(this,"contextLost",!1),H(this,"deviceLostHandler",null),H(this,"onContextLost",I=>{var B,Q;I.preventDefault(),this.contextLost=!0,this.runtimeBackendLosses++,(B=this.runtimeDiagnosticHandler)==null||B.call(this,{type:"backend-lost"}),this.svgaFrameTableSupported=!1,this.buffers.clear(),this.textures.clear(),this.frameTables.clear(),this.programs.clear(),this.vertexArrays.clear(),this.ownedFrameTableMetadataIds.clear(),this.instancedSvgaInstanceGLBuffer=null,this.instancedClipMaskGLBuffer=null,this.instancedAlphaInstanceGLBuffer=null,this.instancedVapInstanceGLBuffer=null,this.svgaSlotStateTexture=null,(Q=this.deviceLostHandler)==null||Q.call(this)}),H(this,"instancedVapInstanceGLBuffer",null),this.canvas=A,this.antialias=g}async init(){const A=this.canvas.getContext("webgl2",{alpha:!0,premultipliedAlpha:!0,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL2 not available");this.gl=A,this.canvas.addEventListener("webglcontextlost",this.onContextLost),this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.maxVertexTextureImageUnits=A.getParameter(A.MAX_VERTEX_TEXTURE_IMAGE_UNITS)||0,A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}getPerformanceSnapshot(){return{bufferWrites:this.performanceBufferWrites,bufferWriteBytes:this.performanceBufferWriteBytes,storageBufferWrites:this.performanceStorageBufferWrites,storageBufferWriteBytes:this.performanceStorageBufferWriteBytes,submittedDrawCalls:this.performanceSubmittedDrawCalls,rejectedDrawCalls:this.performanceRejectedDrawCalls,svgaDynamicUploadWrites:this.performanceSVGADynamicUploadWrites,svgaDynamicUploadBytes:this.performanceSVGADynamicUploadBytes}}getRuntimeDiagnosticsSnapshot(){return{submittedDrawCalls:this.runtimeSubmittedDrawCalls,rejectedDrawCalls:this.runtimeRejectedDrawCalls,webgpuUncapturedErrors:0,backendLosses:this.runtimeBackendLosses}}setRuntimeDiagnosticHandler(A){this.runtimeDiagnosticHandler=A}resetPerformanceSnapshot(){this.performanceBufferWrites=0,this.performanceBufferWriteBytes=0,this.performanceStorageBufferWrites=0,this.performanceStorageBufferWriteBytes=0,this.performanceSubmittedDrawCalls=0,this.performanceRejectedDrawCalls=0,this.performanceSVGADynamicUploadWrites=0,this.performanceSVGADynamicUploadBytes=0}setDeviceLostHandler(A){this.deviceLostHandler=A}recordSubmittedDraw(){this.currentDrawResult=tg,this.currentDrawRecorded=!0,this.performanceSubmittedDrawCalls++,this.runtimeSubmittedDrawCalls++}rejectSVGAFastPathDraw(){this.currentDrawRecorded=!0,this.currentDrawResult.submitted&&(this.currentDrawResult=$("invalid-command","WebGL2 draw was rejected")),this.performanceRejectedDrawCalls++,this.runtimeRejectedDrawCalls++}initPrograms(){const A=this.gl,g=WA(A,P.svgaBatchPremul.vert,P.svgaBatchPremul.frag);this.programs.set("svga-batch-premul",this.makeProgramEntry(g,{transform:!0,opacity:!0})),this.bindProgramSamplers(g,{u_atlas:0});const I=WA(A,P.svgaInstancedPremul.vert,P.svgaInstancedPremul.frag);if(this.programs.set("svga-instanced-premul",this.makeProgramEntry(I)),this.bindProgramSamplers(I,{u_atlas:0}),this.maxVertexTextureImageUnits>=2&&this.maxTextureSize>=3)try{const n=WA(A,P.svgaFrameTableInstancedPremul.vert,P.svgaFrameTableInstancedPremul.frag);this.programs.set(gB,this.makeProgramEntry(n,{frameTable:!0,spriteMetadata:!0,tableInfo:!0,frameTableSize:!0,spriteMetadataSize:!0,spriteMetadataStride:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,slotOpacity:!0,atlasPage:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,instanceStateEnabled:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0,spritesPerSlot:!0})),this.bindProgramSamplers(n,{u_atlas:0,u_frameTable:1,u_spriteMetadata:2,u_slotStates:3});const r=WA(A,P.svgaFrameTableShape.vert,P.svgaFrameTableShape.frag);this.programs.set("svga-frame-table-shape-premul",this.makeProgramEntry(r,{frameTable:!0,tableInfo:!0,frameTableSize:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,slotOpacity:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0})),this.bindProgramSamplers(r,{u_frameTable:0,u_slotStates:3});const h=WA(A,P.svgaFrameTableClipMask.vert,P.svgaFrameTableClipMask.frag);this.programs.set("svga-frame-table-clip-mask",this.makeProgramEntry(h,{frameTable:!0,tableInfo:!0,frameTableSize:!0,spriteBase:!0,frameIndex:!0,parentAffine:!0,parentTranslate:!0,clipRect:!0,clipEnabled:!0,canvasHeight:!0,slotStates:!0,slotStateSize:!0,compactSlotStateEnabled:!0})),this.bindProgramSamplers(h,{u_frameTable:0,u_slotStates:3}),this.svgaFrameTableSupported=!0}catch(n){this.svgaFrameTableSupported=!1,console.warn("[WebGL2] SVGA frame-table shader unavailable; using CPU reference path.",n)}const B=WA(A,P.vap.vert,P.vap.frag);this.programs.set("vap",this.makeProgramEntry(B,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(B,{u_video:0});const Q=WA(A,P.vapMixOverlay.vert,P.vapMixOverlay.frag);this.programs.set("vap-mix-overlay",this.makeProgramEntry(Q,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(Q,{u_resource:0,u_video:1});const E=WA(A,P.alphaVideo.vert,P.alphaVideo.frag);this.programs.set("alpha-video",this.makeProgramEntry(E,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(E,{u_video:0});const i=WA(A,P.rgbaTextured.vert,P.rgbaTextured.frag);this.programs.set("rgba-textured",this.makeProgramEntry(i,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(i,{u_video:0});const e=WA(A,P.alphaVideoInstanced.vert,P.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",this.makeProgramEntry(e)),this.bindProgramSamplers(e,{u_video:0});const t=WA(A,P.vapInstanced.vert,P.vapInstanced.frag);this.programs.set("vap-instanced",this.makeProgramEntry(t)),this.bindProgramSamplers(t,{u_video:0});const a=WA(A,P.clipMask.vert,P.clipMask.frag);this.programs.set("clip-mask",this.makeProgramEntry(a,{transform:!0}));const o=WA(A,P.clipMaskInstanced.vert,P.clipMaskInstanced.frag);this.programs.set("clip-mask-instanced",this.makeProgramEntry(o));const s=WA(A,P.particleInstanced.vert,P.particleInstanced.frag);this.programs.set("particle-instanced",this.makeProgramEntry(s))}ensureParticleSpriteProgram(){let A=this.programs.get("particle-sprite-instanced");if(A)return A;const g=WA(this.gl,P.particleSpriteInstanced.vert,P.particleSpriteInstanced.frag);return A=this.makeProgramEntry(g,{particleSprite:!0}),this.programs.set("particle-sprite-instanced",A),this.bindProgramSamplers(g,{u_atlas:0}),A}makeProgramEntry(A,g={}){const I=this.gl;return{program:A,projLoc:I.getUniformLocation(A,"u_projection"),transformLoc:g.transform?I.getUniformLocation(A,"u_transform"):null,atlasRemapLoc:g.atlasRemap?I.getUniformLocation(A,"u_atlasRemap"):null,opacityLoc:g.opacity?I.getUniformLocation(A,"u_opacity"):null,rgbPremultipliedLoc:g.rgbPremultiplied?I.getUniformLocation(A,"u_rgbPremultiplied"):null,frameTableLoc:g.frameTable?I.getUniformLocation(A,"u_frameTable"):null,spriteMetadataLoc:g.spriteMetadata?I.getUniformLocation(A,"u_spriteMetadata"):null,tableInfoLoc:g.tableInfo?I.getUniformLocation(A,"u_tableInfo"):null,frameTableSizeLoc:g.frameTableSize?I.getUniformLocation(A,"u_frameTableSize"):null,spriteMetadataSizeLoc:g.spriteMetadataSize?I.getUniformLocation(A,"u_spriteMetadataSize"):null,spriteMetadataStrideLoc:g.spriteMetadataStride?I.getUniformLocation(A,"u_spriteMetadataTexelsPerRow"):null,spriteBaseLoc:g.spriteBase?I.getUniformLocation(A,"u_spriteBase"):null,frameIndexLoc:g.frameIndex?I.getUniformLocation(A,"u_frameIndex"):null,parentAffineLoc:g.parentAffine?I.getUniformLocation(A,"u_parentAffine"):null,parentTranslateLoc:g.parentTranslate?I.getUniformLocation(A,"u_parentTranslate"):null,slotOpacityLoc:g.slotOpacity?I.getUniformLocation(A,"u_slotOpacity"):null,atlasPageLoc:g.atlasPage?I.getUniformLocation(A,"u_atlasPage"):null,clipRectLoc:g.clipRect?I.getUniformLocation(A,"u_clipRect"):null,clipEnabledLoc:g.clipEnabled?I.getUniformLocation(A,"u_clipEnabled"):null,canvasHeightLoc:g.canvasHeight?I.getUniformLocation(A,"u_canvasHeight"):null,instanceStateEnabledLoc:g.instanceStateEnabled?I.getUniformLocation(A,"u_instanceStateEnabled"):null,slotStatesLoc:g.slotStates?I.getUniformLocation(A,"u_slotStates"):null,slotStateSizeLoc:g.slotStateSize?I.getUniformLocation(A,"u_slotStateSize"):null,compactSlotStateEnabledLoc:g.compactSlotStateEnabled?I.getUniformLocation(A,"u_compactSlotStateEnabled"):null,spritesPerSlotLoc:g.spritesPerSlot?I.getUniformLocation(A,"u_spritesPerSlot"):null,particleTimeLoc:g.particleSprite?I.getUniformLocation(A,"u_time"):null,particleGlobalAlphaLoc:g.particleSprite?I.getUniformLocation(A,"u_globalAlpha"):null,particleSizeEnvelopeLoc:g.particleSprite?I.getUniformLocation(A,"u_sizeEnvelope"):null,particleFadeModeLoc:g.particleSprite?I.getUniformLocation(A,"u_fadeMode"):null,particleCssScaleLoc:g.particleSprite?I.getUniformLocation(A,"u_cssScale"):null,lastOpacity:null,lastRgbPremultiplied:null}}applyIdentityTransform(A){A.transformLoc&&this.gl.uniformMatrix4fv(A.transformLoc,!1,bi)}bindProgramSamplers(A,g){const I=this.gl;I.useProgram(A);for(const B in g){const Q=I.getUniformLocation(A,B);Q&&I.uniform1i(Q,g[B])}}applyProjectionUniform(A,g,I){!A.projLoc||!(I instanceof Float32Array)||I.length<16||this.cachedProjectionShader===g&&this.cachedProjectionRef===I||(this.gl.uniformMatrix4fv(A.projLoc,!1,I),this.cachedProjectionShader=g,this.cachedProjectionRef=I)}applyDrawUniforms(A,g,I){const B=this.gl;if(this.applyProjectionUniform(A,g,I.uniforms.u_projection),A.transformLoc){const Q=I.uniforms.u_transform;Q instanceof Float32Array?B.uniformMatrix4fv(A.transformLoc,!1,Q):this.applyIdentityTransform(A)}if(A.atlasRemapLoc){const Q=I.uniforms.u_atlasRemap;Q instanceof Float32Array&&B.uniform4fv(A.atlasRemapLoc,Q)}if(A.opacityLoc){const Q=I.uniforms.u_opacity,E=typeof Q=="number"?Q:1;A.lastOpacity!==E&&(B.uniform1f(A.opacityLoc,E),A.lastOpacity=E)}if(A.rgbPremultipliedLoc){const Q=I.uniforms.u_rgbPremultiplied;typeof Q=="number"&&A.lastRgbPremultiplied!==Q&&(B.uniform1f(A.rgbPremultipliedLoc,Q),A.lastRgbPremultiplied=Q)}}beginFrame(A={}){const g=this.gl;if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return g.viewport(0,0,this.canvas.width,this.canvas.height),g.colorMask(!0,!0,!0,!0),g.stencilMask(255),g.disable(g.STENCIL_TEST),g.disable(g.SCISSOR_TEST),g.clearColor(0,0,0,0),g.clearStencil(0),g.clear(g.COLOR_BUFFER_BIT|(A.stencil?g.STENCIL_BUFFER_BIT:0)),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedFrameTableId=null,this.cachedFrameMetadataId=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,this.svgaSlotStateUploadId=-1,tg}catch(I){return $("submission-error",this.errorMessage(I))}}endFrame(){if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return this.gl.flush(),tg}catch(A){return $("submission-error",this.errorMessage(A))}}abortFrame(){const A=this.gl;if(this.contextLost)return $("backend-lost","WebGL2 context is lost");try{return A.colorMask(!0,!0,!0,!0),A.stencilMask(255),A.disable(A.STENCIL_TEST),A.disable(A.SCISSOR_TEST),A.clearColor(0,0,0,0),A.clearStencil(0),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.flush(),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedFrameTableId=null,this.cachedFrameMetadataId=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,this.svgaSlotStateUploadId=-1,tg}catch(g){return $("submission-error",this.errorMessage(g))}}errorMessage(A){return A instanceof Error?A.message:String(A)}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}createBuffer(A,g){const I=this.gl,B=I.createBuffer();if(!B)throw new Error("Failed to create buffer");I.bindVertexArray(null);const Q=g==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(Q,B),I.bufferData(Q,A,I.DYNAMIC_DRAW);const E=this.nextId++;return this.buffers.set(E,{buffer:B,usage:g,byteLength:this.getBufferSourceByteLength(A)}),{id:E,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=this.gl;Q.bindVertexArray(null);const E=B.usage==="index"?Q.ELEMENT_ARRAY_BUFFER:Q.ARRAY_BUFFER;Q.bindBuffer(E,B.buffer);const i=this.getBufferSourceByteLength(g);I===0&&i<=B.byteLength?Q.bufferSubData(E,0,g):(Q.bufferData(E,g,Q.DYNAMIC_DRAW),B.byteLength=i)}deleteBuffer(A){const g=this.buffers.get(A.id);g&&(this.gl.bindVertexArray(null),this.deleteVertexArraysForBuffer(A.id),this.gl.deleteBuffer(g.buffer),this.buffers.delete(A.id))}uploadVideoFrameToTexture(A,g,I){const B=this.gl,Q=g.videoWidth,E=g.videoHeight;if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||Q<=0||E<=0)return!1;if(!this.videoElementPreferCanvasBridge){B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1);try{if(I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g),!this.videoElementDirectUploadValidated){const t=B.getError();if(t!==B.NO_ERROR)throw new Error(`WebGL video upload error: 0x${t.toString(16)}`);this.videoElementDirectUploadValidated=!0}return!0}catch(t){this.videoElementPreferCanvasBridge=!0,console.debug("[WebGL2] direct HTMLVideo upload failed; using canvas bridge.",t)}finally{B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}}this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const i=this.videoUploadCanvas,e=this.videoUploadCtx;return e?((i.width!==Q||i.height!==E)&&(i.width=Q,i.height=E),e.drawImage(g,0,0,Q,E),B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,i):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,i),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),!0):!1}createTexture(A,g){var I,B;const Q=this.gl;Q.activeTexture(Q.TEXTURE0),this.cachedTex0Id=null;const E=g.filter==="nearest"?Q.NEAREST:Q.LINEAR,i=WC(Q,E),e=g.premultiplyAlpha===!0;let t=(I=g.width)!=null?I:1,a=(B=g.height)!=null?B:1;if(A instanceof ArrayBuffer)Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,t,a,0,Q.RGBA,Q.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame){const s=A;Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,1),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e?1:0),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,s),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),t=s.displayWidth||s.codedWidth||t,a=s.displayHeight||s.codedHeight||a}else if(A instanceof HTMLVideoElement)Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e?1:0),this.uploadVideoFrameToTexture(i,A,!0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t=A.videoWidth||t,a=A.videoHeight||a;else{const s=e,n=g.sourcePremultiplied===!0,r=s&&!n?1:0;Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(t=A.width,a=A.height)}const o=this.nextId++;return this.textures.set(o,{texture:i,width:t,height:a}),{id:o,width:t,height:a}}canCreateSVGAFrameTable(){return this.svgaFrameTableSupported&&this.maxVertexTextureImageUnits>=2&&this.maxTextureSize>=3}assertSVGAFrameTableSupport(){if(!this.canCreateSVGAFrameTable())throw new Error(`WebGL2 SVGA frame table unsupported (vertexTextureUnits=${this.maxVertexTextureImageUnits}, maxTextureSize=${this.maxTextureSize}, shader=${this.svgaFrameTableSupported?"ready":"unavailable"})`)}createFloatTableTexture(A,g,I,B){const Q=this.gl,E=Math.floor(g),i=Math.floor(I);if(E<1||i<1||E>this.maxTextureSize||i>this.maxTextureSize)throw new RangeError(`[WebGL2] ${B} dimensions ${E}x${i} exceed MAX_TEXTURE_SIZE=${this.maxTextureSize}`);if(A.length!==E*i*4)throw new RangeError(`[WebGL2] ${B} data length ${A.length} does not match ${E}x${i} RGBA texels`);Q.activeTexture(Q.TEXTURE0),this.cachedTex0Id=null;const e=Q.createTexture();if(!e)throw new Error(`[WebGL2] failed to create ${B} texture`);Q.bindTexture(Q.TEXTURE_2D,e),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_MIN_FILTER,Q.NEAREST),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_MAG_FILTER,Q.NEAREST),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_WRAP_S,Q.CLAMP_TO_EDGE),Q.texParameteri(Q.TEXTURE_2D,Q.TEXTURE_WRAP_T,Q.CLAMP_TO_EDGE);const t=Q.getParameter(Q.UNPACK_ALIGNMENT);Q.pixelStorei(Q.UNPACK_ALIGNMENT,1);try{Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA32F,E,i,0,Q.RGBA,Q.FLOAT,A);const a=Q.getError();if(a!==Q.NO_ERROR)throw new Error(`GL error 0x${a.toString(16)} while uploading ${B}`)}catch(a){throw Q.deleteTexture(e),a}finally{Q.pixelStorei(Q.UNPACK_ALIGNMENT,t||4)}return{texture:e,width:E,height:i}}createLinearFloatTableTexture(A,g,I,B){const Q=Math.floor(g),E=Math.max(1,Math.floor(I));if(Q<1||A.length!==Q*4)throw new RangeError(`[WebGL2] ${B} requires ${Q*4} floats, got ${A.length}`);const i=this.maxTextureSize-this.maxTextureSize%E;if(i<E)throw new RangeError(`[WebGL2] ${B} cannot fit a ${E}-texel record in MAX_TEXTURE_SIZE=${this.maxTextureSize}`);const e=Math.max(E,Math.min(i,Q-Q%E||E)),t=Math.ceil(Q/e);if(t>this.maxTextureSize)throw new RangeError(`[WebGL2] ${B} dimensions ${e}x${t} exceed MAX_TEXTURE_SIZE=${this.maxTextureSize}`);const a=e*t===Q?A:new Float32Array(e*t*4);return a!==A&&a.set(A),this.createFloatTableTexture(a,e,t,B)}createSVGAFrameTableMetadata(A,g,I=VC){this.assertSVGAFrameTableSupport();const B=Math.floor(g);if(B<1||!Number.isFinite(B))throw new RangeError(`[WebGL2] invalid SVGA sprite metadata count: ${g}`);const Q=Math.floor(I);if(Q<8||Q%4!==0)throw new RangeError(`[WebGL2] invalid SVGA metadata stride: ${I}`);const E=new Float32Array(B*Q);if(A.length===B*4)for(let t=0;t<B;t++){const a=t*4,o=t*Q;E.set(A.subarray(a,a+4),o),E[o+4]=t,E[o+5]=0}else if(A.length===E.length)E.set(A);else throw new RangeError(`[WebGL2] SVGA sprite metadata requires ${B*4} or ${E.length} floats, got ${A.length}`);const i=this.createLinearFloatTableTexture(E,B*(Q/4),Q/4,"SVGA sprite metadata"),e=this.nextId++;return this.textures.set(e,{texture:i.texture,width:i.width,height:i.height}),{id:e,width:i.width,height:i.height}}createSVGAFrameTable(A,g){var I,B,Q,E,i,e;this.assertSVGAFrameTableSupport();const t=Math.floor(g.spriteCount),a=Math.floor(g.frameCount);if(t<1||a<1||!Number.isFinite(t)||!Number.isFinite(a))throw new RangeError(`[WebGL2] invalid SVGA frame table dimensions ${t}x${a}`);const o=t*a;if(!Number.isSafeInteger(o)||A.length!==o*Vg)throw new RangeError(`[WebGL2] SVGA frame table requires ${o*Vg} floats, got ${A.length}`);const s=this.createLinearFloatTableTexture(A,o*3,3,"SVGA frame table"),n=this.nextId++,r={id:n,width:s.width,height:s.height};this.textures.set(n,{texture:s.texture,width:s.width,height:s.height});let h=g.metadataTexture,c;try{if(h&&!this.textures.has(h.id))throw new Error(`WebGL2 SVGA sprite metadata texture ${h.id} is not owned by this backend`);if(h=h!=null?h:((I=g.spriteMetadata)!=null?I:g.metadata)?this.createSVGAFrameTableMetadata((B=g.spriteMetadata)!=null?B:g.metadata,t):void 0,!g.metadataTexture&&h&&this.ownedFrameTableMetadataIds.add(h.id),g.hybridSpriteMetadata){const F=g.hybridSpriteMetadata.length/II;if(!Number.isSafeInteger(F)||F<1)throw new RangeError("SVGA Hybrid sprite metadata must contain complete 12-float rows");c=this.createSVGAFrameTableMetadata(g.hybridSpriteMetadata,F,II),this.ownedFrameTableMetadataIds.add(c.id)}}catch(F){this.gl.deleteTexture(s.texture),this.textures.delete(n);for(const d of[h,c]){if(!d||!this.ownedFrameTableMetadataIds.has(d.id))continue;const y=this.textures.get(d.id);y&&this.gl.deleteTexture(y.texture),this.textures.delete(d.id),this.ownedFrameTableMetadataIds.delete(d.id)}throw F}const D=g.atlasPageCount,w=Number.isFinite(D)&&D>0?Math.floor(D):1,l={backend:"webgl2",kind:"webgl2-texture",texture:r,textureWidth:s.width,textureHeight:s.height,spriteCount:t,frameCount:a,atlasPageCount:w,strideFloats:Vg,byteLength:A.byteLength,...h?{spriteMetadataTexture:h}:{},...c?{hybridSpriteMetadataTexture:c}:{}};return this.frameTables.set(n,{texture:s.texture,width:s.width,height:s.height,metadataTexture:h&&(E=(Q=this.textures.get(h.id))==null?void 0:Q.texture)!=null?E:null,metadataWidth:(i=h==null?void 0:h.width)!=null?i:0,metadataHeight:(e=h==null?void 0:h.height)!=null?e:0,metadataOwned:!g.metadataTexture&&!!h,binding:l}),l}deleteSVGAFrameTable(A){var g,I,B,Q,E;if(!A||A.backend!=="webgl2")return;const i=A.texture.id,e=this.frameTables.get(i);if(e){this.gl.deleteTexture(e.texture),this.textures.delete(i);const t=(g=e.binding.spriteMetadataTexture)==null?void 0:g.id;if(e.metadataOwned&&t!=null&&t!==i){const o=this.textures.get(t);o&&this.gl.deleteTexture(o.texture),this.textures.delete(t),this.ownedFrameTableMetadataIds.delete(t)}const a=(I=e.binding.hybridSpriteMetadataTexture)==null?void 0:I.id;if(a!=null&&a!==i){const o=this.textures.get(a);o&&this.gl.deleteTexture(o.texture),this.textures.delete(a),this.ownedFrameTableMetadataIds.delete(a)}this.frameTables.delete(i)}else{const t=this.textures.get(i);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(i));const a=(B=A.spriteMetadataTexture)==null?void 0:B.id;if(a!=null&&this.ownedFrameTableMetadataIds.has(a)){const s=this.textures.get(a);s&&this.gl.deleteTexture(s.texture),this.textures.delete(a),this.ownedFrameTableMetadataIds.delete(a)}const o=(Q=A.hybridSpriteMetadataTexture)==null?void 0:Q.id;if(o!=null&&this.ownedFrameTableMetadataIds.has(o)){const s=this.textures.get(o);s&&this.gl.deleteTexture(s.texture),this.textures.delete(o),this.ownedFrameTableMetadataIds.delete(o)}}this.cachedFrameTableId===i&&(this.cachedFrameTableId=null),this.cachedFrameMetadataId===((E=A.spriteMetadataTexture)==null?void 0:E.id)&&(this.cachedFrameMetadataId=null)}createEmptyTexture(A,g,I={}){const B=this.gl;B.activeTexture(B.TEXTURE0),this.cachedTex0Id=null;const Q=I.filter==="nearest"?B.NEAREST:B.LINEAR,E=WC(B,Q),i=Math.max(1,Math.floor(A)),e=Math.max(1,Math.floor(g));B.bindTexture(B.TEXTURE_2D,E),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,i,e,0,B.RGBA,B.UNSIGNED_BYTE,null);const t=this.nextId++;return this.textures.set(t,{texture:E,width:i,height:e}),{id:t,width:i,height:e}}updateTexture(A,g){const I=this.textures.get(A.id);if(!I)return;if(this.gl.activeTexture(this.gl.TEXTURE0),this.cachedTex0Id=null,typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const e=this.gl,t=vI(g),a=TI(g),o=t===I.width&&a===I.height;e.bindTexture(e.TEXTURE_2D,I.texture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),o?e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,g):(e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,g),t>0&&a>0&&(I.width=t,I.height=a)),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){const e=g.videoWidth,t=g.videoHeight,a=e!==I.width||t!==I.height;this.uploadVideoFrameToTexture(I.texture,g,a)&&a&&(I.width=e,I.height=t);return}const B=this.gl,Q=vI(g),E=TI(g),i=Q===I.width&&E===I.height;B.bindTexture(B.TEXTURE_2D,I.texture),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),i?B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g):(B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g),Q>0&&E>0&&(I.width=Q,I.height=E)),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,g,I,B,Q,E){const i=this.textures.get(A.id);if(!i)return;const e=this.gl;e.activeTexture(e.TEXTURE0),this.cachedTex0Id=null,e.bindTexture(e.TEXTURE_2D,i.texture);let t,a;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame)t=g.displayWidth||g.codedWidth,a=g.displayHeight||g.codedHeight;else if(g instanceof HTMLVideoElement){if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;t=g.videoWidth,a=g.videoHeight}else{const n=g;t=n.width,a=n.height}if(!t||!a)return;const o=Q!=null?Q:t,s=E!=null?E:a;if(o!==t||s!==a){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const n=this.videoUploadCanvas,r=this.videoUploadCtx;if(!r)return;(n.width!==o||n.height!==s)&&(n.width=o,n.height=s),r.drawImage(g,0,0,o,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,n),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0)}deleteTexture(A){const g=this.textures.get(A.id);g&&(this.gl.deleteTexture(g.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var g;const I=A.shader;if(this.currentDrawResult=$("invalid-command",`WebGL2 rejected ${I}`),this.currentDrawRecorded=!1,this.contextLost)return this.currentDrawResult=$("backend-lost","WebGL2 context is lost"),this.rejectSVGAFastPathDraw(),this.currentDrawResult;try{if(I===gB||I==="svga-timeline-instanced-premul")return this.drawSVGAFrameTableGL(A),this.completeDrawResult();if(I==="svga-frame-table-shape-premul"||I==="svga-frame-table-clip-mask")return this.drawSVGAFrameTableMeshGL(A),this.completeDrawResult();if(A.shader==="svga-instanced-premul")return this.drawInstancedSvgaGL(A),this.completeDrawResult();if(A.shader==="clip-mask-instanced")return this.drawInstancedClipMaskGL(A),this.completeDrawResult();if(A.shader==="alpha-video-instanced")return this.drawInstancedAlphaGL(A),this.completeDrawResult();if(A.shader==="vap-instanced")return this.drawInstancedVapGL(A),this.completeDrawResult();if(A.shader==="particle-instanced")return this.drawInstancedParticlesGL(A),this.completeDrawResult();if(A.shader==="particle-sprite-instanced")return this.drawInstancedParticleSpritesGL(A),this.completeDrawResult();const B=this.gl,Q=(g=A.stencil)!=null?g:"none",E=A.shader==="clip-mask"||Q==="clear"?"clip-mask":A.shader,i=this.programs.get(E);if(!i)return this.rejectDrawResult("invalid-command",`WebGL2 shader unavailable: ${E}`);Q==="clear"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,0,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1)):Q==="write"||A.shader==="clip-mask"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,1,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1)):Q==="test"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.EQUAL,1,255),B.stencilOp(B.KEEP,B.KEEP,B.KEEP),B.stencilMask(0),B.colorMask(!0,!0,!0,!0)):(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==E&&(B.useProgram(i.program),this.cachedDrawProgram=E);for(let a=0;a<A.textures.length;a++){const o=A.textures[a].id;if(a===0&&this.cachedTex0Id===o)continue;const s=this.textures.get(o);if(!s)return this.rejectDrawResult("missing-resource",`WebGL2 texture ${o} is unavailable`);B.activeTexture(B.TEXTURE0+a),B.bindTexture(B.TEXTURE_2D,s.texture),a===0&&(this.cachedTex0Id=o)}this.applyDrawUniforms(i,E,A);const e=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);return!e||!t?this.rejectDrawResult("missing-resource","WebGL2 draw buffer is unavailable"):(this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)&&(B.bindBuffer(B.ARRAY_BUFFER,e.buffer),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,t.buffer),this.setupAttributes(E)),B.drawElements(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0),this.recordSubmittedDraw(),(Q!=="none"||A.shader==="clip-mask")&&(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)),tg)}catch(B){return this.rejectDrawResult("submission-error",this.errorMessage(B))}}completeDrawResult(){return this.currentDrawRecorded||this.rejectSVGAFastPathDraw(),this.currentDrawResult}rejectDrawResult(A,g){return this.currentDrawResult=$(A,g),this.rejectSVGAFastPathDraw(),this.currentDrawResult}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,g,I,B){const Q=this.gl,E=this.canvas.width,i=this.canvas.height,e=Math.max(0,Math.min(E,Math.floor(A))),t=Math.max(0,Math.min(i,Math.floor(g))),a=Math.max(e,Math.min(E,Math.ceil(A+I))),o=Math.max(t,Math.min(i,Math.ceil(g+B)));Q.enable(Q.SCISSOR_TEST),Q.scissor(e,i-o,a-e,o-t)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const g=this.gl;if(A===gB){g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0);for(let B=1;B<=9;B++)g.vertexAttribDivisor(B,0),g.disableVertexAttribArray(B)}else if(A==="svga-batch-premul"||A==="svga-frame-table-shape-premul")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,3,g.FLOAT,!1,36,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,4,g.FLOAT,!1,36,12),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,36,28);else if(A==="vap")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,24,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,24,8),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,24,16);else if(A==="clip-mask"||A==="svga-frame-table-clip-mask")g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0),g.disableVertexAttribArray(1),g.disableVertexAttribArray(2);else{g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,16,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,16,8);for(let B=2;B<=9;B++)g.vertexAttribDivisor(B,0),g.disableVertexAttribArray(B)}}bindCachedVertexArray(A,g,I){const B=this.gl;let Q=this.vertexArrays.get(A);Q||(Q=new Map,this.vertexArrays.set(A,Q));let E=Q.get(g);E||(E=new Map,Q.set(g,E));const i=E.get(I);if(i)return B.bindVertexArray(i),!1;const e=B.createVertexArray();if(!e)throw new Error("Failed to create vertex array");return E.set(I,e),B.bindVertexArray(e),!0}deleteVertexArraysForBuffer(A){const g=this.gl;for(const[I,B]of this.vertexArrays){for(const[Q,E]of B){if(Q===A){for(const e of E.values())g.deleteVertexArray(e);B.delete(Q);continue}const i=E.get(A);i&&(g.deleteVertexArray(i),E.delete(A)),E.size===0&&B.delete(Q)}B.size===0&&this.vertexArrays.delete(I)}}deleteAllVertexArrays(){for(const A of this.vertexArrays.values())for(const g of A.values())for(const I of g.values())this.gl.deleteVertexArray(I);this.vertexArrays.clear()}ensureInstancedSvgaInstanceBuffer(){const A=this.gl;if(!this.instancedSvgaInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_SVGA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedSvgaInstanceGLBuffer=g}return this.instancedSvgaInstanceGLBuffer}uploadSVGASlotStates(A,g,I=-1){const B=this.gl,Q=g*4;if(g<1||A.length<g*$A||Q<1)return null;const E=Math.min(this.maxTextureSize,Math.max(4,2**Math.ceil(Math.log2(Q)))),i=Math.ceil(Q/E);if(i>this.maxTextureSize||!this.svgaSlotStateTexture&&(this.svgaSlotStateTexture=B.createTexture(),!this.svgaSlotStateTexture))return null;if(B.activeTexture(B.TEXTURE3),B.bindTexture(B.TEXTURE_2D,this.svgaSlotStateTexture),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MIN_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MAG_FILTER,B.NEAREST),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_S,B.CLAMP_TO_EDGE),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_T,B.CLAMP_TO_EDGE),(this.svgaSlotStateTextureWidth!==E||this.svgaSlotStateTextureHeight!==i)&&(B.texImage2D(B.TEXTURE_2D,0,B.RGBA32F,E,i,0,B.RGBA,B.FLOAT,null),this.svgaSlotStateTextureWidth=E,this.svgaSlotStateTextureHeight=i),I>=0&&this.svgaSlotStateUploadId===I)return{width:E,height:i};const e=E*i*4,t=A.subarray(0,g*$A);let a=t;return e!==t.length&&(this.svgaSlotStateUploadScratch.length<e&&(this.svgaSlotStateUploadScratch=new Float32Array(e)),this.svgaSlotStateUploadScratch.fill(0,0,e),this.svgaSlotStateUploadScratch.set(t),a=this.svgaSlotStateUploadScratch.subarray(0,e)),B.texSubImage2D(B.TEXTURE_2D,0,0,0,E,i,B.RGBA,B.FLOAT,a,0),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=g*$A*Float32Array.BYTES_PER_ELEMENT,this.svgaSlotStateUploadId=I,{width:E,height:i}}resolveSVGAFrameTableSlotState(A,g){var I,B,Q,E,i,e,t,a,o,s,n,r,h,c,D,w,l,F,d,y,G,f,u,R,M,N,S,Y,U,k,m,J,q,_,Z,x,X,T,gA,UA,yA,rA,BA,Ig,QA,V,YA,kA,W,pA,LA,ag,OA,KA,vA;const sA=A.uniforms,L=(B=(I=A.svgaFrameTableSlotState)!=null?I:A.svgaSlotState)!=null?B:sA.u_svgaSlotState instanceof Float32Array?sA.u_svgaSlotState:sA.u_slotState instanceof Float32Array?sA.u_slotState:null,EA=sA.u_transform,Bg=sA.u_clipRect,AA=A.svgaFrameTableParentAffine,DA=A.svgaFrameTableParentTranslate,IA=A.svgaFrameTableClipRect,mg=A.svgaFrameIndex!=null||A.svgaFrameTableFrameIndex!=null||A.frameTableFrameIndex!=null,Jg=A.svgaFrameTableOpacity!=null||typeof sA.u_opacity=="number";let Cg=1,GA=0,fA=0,dA=1,iA=0,eA=0,tA=(Q=A.svgaFrameTableOpacity)!=null?Q:typeof sA.u_opacity=="number"?sA.u_opacity:1,hA=(e=(i=(E=A.svgaFrameIndex)!=null?E:A.svgaFrameTableFrameIndex)!=null?i:A.frameTableFrameIndex)!=null?e:0,aA=0,nA=0,RA=this.canvas.width,uA=this.canvas.height,TA=0,Qg=(n=(s=(o=(a=(t=A.svgaFrameTableMetadataBase)!=null?t:A.svgaFrameTableSpriteBase)!=null?a:A.frameTableSpriteBase)!=null?o:A.svgaSpriteMetadataBase)!=null?s:A.svgaSpriteBase)!=null?n:0,Og=(r=A.svgaFrameTableAtlasPage)!=null?r:-1;if(AA&&AA.length>=4)Cg=(h=AA[0])!=null?h:Cg,GA=(c=AA[1])!=null?c:GA,fA=(D=AA[2])!=null?D:fA,dA=(w=AA[3])!=null?w:dA,DA&&DA.length>=2&&(iA=(l=DA[0])!=null?l:iA,eA=(F=DA[1])!=null?F:eA),IA&&IA.length>=4&&(aA=(d=IA[0])!=null?d:aA,nA=(y=IA[1])!=null?y:nA,RA=(G=IA[2])!=null?G:RA,uA=(f=IA[3])!=null?f:uA,TA=1);else if(L&&L.length>=13)Cg=(u=L[0])!=null?u:Cg,GA=(R=L[1])!=null?R:GA,fA=(M=L[2])!=null?M:fA,dA=(N=L[3])!=null?N:dA,iA=(S=L[4])!=null?S:iA,eA=(Y=L[5])!=null?Y:eA,Jg||(tA=(U=L[6])!=null?U:tA),mg||(hA=(k=L[7])!=null?k:hA),aA=(m=L[8])!=null?m:aA,nA=(J=L[9])!=null?J:nA,RA=(q=L[10])!=null?q:RA,uA=(_=L[11])!=null?_:uA,TA=((Z=L[12])!=null?Z:0)>.5?1:0,A.svgaFrameTableMetadataBase==null&&A.svgaFrameTableSpriteBase==null&&A.frameTableSpriteBase==null&&A.svgaSpriteMetadataBase==null&&A.svgaSpriteBase==null&&L.length>=14&&(Qg=(x=L[13])!=null?x:Qg);else if(EA instanceof Float32Array&&EA.length>=16){Cg=(X=EA[0])!=null?X:Cg,GA=(T=EA[1])!=null?T:GA,fA=(gA=EA[4])!=null?gA:fA,dA=(UA=EA[5])!=null?UA:dA,iA=(yA=EA[12])!=null?yA:iA,eA=(rA=EA[13])!=null?rA:eA;const PA=Bg instanceof Float32Array&&Bg.length>=4?Bg:IA;PA&&PA.length>=4&&(aA=(BA=PA[0])!=null?BA:aA,nA=(Ig=PA[1])!=null?Ig:nA,RA=(QA=PA[2])!=null?QA:RA,uA=(V=PA[3])!=null?V:uA,TA=typeof sA.u_clipEnabled=="number"?sA.u_clipEnabled>.5?1:0:1)}return AA&&L&&L.length>=13&&(DA||(iA=(YA=L[4])!=null?YA:iA,eA=(kA=L[5])!=null?kA:eA),Jg||(tA=(W=L[6])!=null?W:tA),mg||(hA=(pA=L[7])!=null?pA:hA),IA||(aA=(LA=L[8])!=null?LA:aA,nA=(ag=L[9])!=null?ag:nA,RA=(OA=L[10])!=null?OA:RA,uA=(KA=L[11])!=null?KA:uA,TA=((vA=L[12])!=null?vA:0)>.5?1:0)),Number.isFinite(tA)||(tA=1),Number.isFinite(hA)||(hA=0),Number.isFinite(Qg)||(Qg=0),Number.isFinite(Og)||(Og=-1),hA=Math.max(0,Math.min(Math.max(1,g)-1,Math.floor(hA))),Qg=Math.max(0,Math.floor(Qg)),[Cg,GA,fA,dA,iA,eA,tA,aA,nA,RA,uA].every(Number.isFinite)?{parentA:Cg,parentB:GA,parentC:fA,parentD:dA,tx:iA,ty:eA,opacity:tA,frameIndex:hA,clipX0:aA,clipY0:nA,clipX1:RA,clipY1:uA,clipEnabled:TA,metadataBase:Qg,atlasPage:Math.max(-1,Math.floor(Og))}:null}drawSVGAFrameTableGL(A){var g,I,B,Q,E,i,e,t,a,o,s,n,r,h,c,D,w,l,F,d,y,G,f,u;const R=this.gl;if(!this.svgaFrameTableSupported){this.rejectSVGAFastPathDraw();return}const M=(g=A.svgaFrameTable)!=null?g:null,N=M&&typeof M=="object"&&"backend"in M?M:null,S=(E=(Q=(B=(I=(N==null?void 0:N.backend)==="webgl2"?N.texture:null)!=null?I:M&&"id"in M?M:null)!=null?B:A.svgaFrameTableTexture)!=null?Q:A.frameTableTexture)!=null?E:null;if(!S){this.rejectSVGAFastPathDraw();return}const Y=this.frameTables.get(S.id);if(!Y){this.rejectSVGAFastPathDraw();return}const U=(a=(e=(i=A.svgaSpriteMetadataTexture)!=null?i:A.svgaSpriteMetadata)!=null?e:A.spriteMetadataTexture)!=null?a:(N==null?void 0:N.backend)==="webgl2"&&(t=N.spriteMetadataTexture)!=null?t:null;if(!U){this.rejectSVGAFastPathDraw();return}const k=this.textures.get(U.id);if(!k){this.rejectSVGAFastPathDraw();return}const m=(o=A.svgaFrameTableFrameCount)!=null?o:A.frameTableFrameCount,J=(s=A.svgaFrameTableSpriteCount)!=null?s:A.frameTableSpriteCount,q=Math.floor(Number.isFinite(m)?m:(N==null?void 0:N.backend)==="webgl2"?N.frameCount:0),_=Math.floor(Number.isFinite(J)?J:(N==null?void 0:N.backend)==="webgl2"?N.spriteCount:0),Z=Math.floor((n=A.instanceCount)!=null?n:0),x=A.instanceData,X=A.svgaFrameTableSlotStates,T=Math.floor((r=A.svgaFrameTableSlotStateCount)!=null?r:0),gA=Math.floor((h=A.svgaFrameTableSpritesPerSlot)!=null?h:0),UA=X!=null&&T>0&&gA>0&&T*gA===Z&&X.length>=T*$A,yA=!UA&&x!=null&&x.length>=Z*$A,rA=Y.width*Y.height,BA=k.width*k.height,QA=Math.floor((c=A.svgaSpriteMetadataStrideFloats)!=null?c:VC)/4,V=this.resolveSVGAFrameTableSlotState(A,q);let YA=(D=V==null?void 0:V.metadataBase)!=null?D:-1;if(V)if(UA)YA+=gA;else if(yA){let AA=-1;for(let DA=0;DA<Z;DA++){const IA=Math.floor((w=x[DA*$A+Ng.metadataBase])!=null?w:-1);IA>AA&&(AA=IA)}YA=AA+1}else YA+=Z;if(Z<1||Z>2048||q<1||_<1||!Number.isSafeInteger(q)||!Number.isSafeInteger(_)||!Number.isSafeInteger(QA)||QA<2||q*_*3>rA||!V||V.metadataBase<0||YA<1||YA*QA>BA){this.rejectSVGAFastPathDraw();return}const kA=gB,W=this.programs.get(kA);if(!W){this.rejectSVGAFastPathDraw();return}const pA=A.textures[0],LA=pA?this.textures.get(pA.id):null;if(!LA){this.rejectSVGAFastPathDraw();return}const ag=(l=A.stencil)!=null?l:"none";ag==="test"?(R.enable(R.STENCIL_TEST),R.stencilFunc(R.EQUAL,1,255),R.stencilOp(R.KEEP,R.KEEP,R.KEEP),R.stencilMask(0),R.colorMask(!0,!0,!0,!0)):(R.disable(R.STENCIL_TEST),R.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==kA&&(R.useProgram(W.program),this.cachedDrawProgram=kA),R.activeTexture(R.TEXTURE0),this.cachedTex0Id!==pA.id&&(R.bindTexture(R.TEXTURE_2D,LA.texture),this.cachedTex0Id=pA.id),R.activeTexture(R.TEXTURE1),this.cachedFrameTableId!==S.id&&(R.bindTexture(R.TEXTURE_2D,Y.texture),this.cachedFrameTableId=S.id),R.activeTexture(R.TEXTURE2),this.cachedFrameMetadataId!==U.id&&(R.bindTexture(R.TEXTURE_2D,k.texture),this.cachedFrameMetadataId=U.id);let OA=null;if(UA&&(OA=this.uploadSVGASlotStates(X,T,A.svgaFrameTableSlotStateUploadId),!OA)){this.rejectSVGAFastPathDraw();return}this.applyProjectionUniform(W,kA,A.uniforms.u_projection);const KA=this.svgaTableInfoScratch;KA[0]=q,KA[1]=_,KA[2]=3,KA[3]=0;const vA=this.svgaTableSizeScratch;vA[0]=Y.width,vA[1]=Y.height;const sA=this.svgaMetadataSizeScratch;sA[0]=k.width,sA[1]=k.height;const L=R;if(W.tableInfoLoc&&((F=L.uniform4iv)==null||F.call(L,W.tableInfoLoc,KA)),W.frameTableSizeLoc&&((d=L.uniform2iv)==null||d.call(L,W.frameTableSizeLoc,vA)),W.spriteMetadataSizeLoc&&((y=L.uniform2iv)==null||y.call(L,W.spriteMetadataSizeLoc,sA)),W.spriteMetadataStrideLoc&&R.uniform1i(W.spriteMetadataStrideLoc,QA),W.spriteBaseLoc&&R.uniform1i(W.spriteBaseLoc,V.metadataBase),W.frameIndexLoc&&R.uniform1i(W.frameIndexLoc,V.frameIndex),W.parentAffineLoc&&R.uniform4f(W.parentAffineLoc,V.parentA,V.parentB,V.parentC,V.parentD),W.parentTranslateLoc&&R.uniform2f(W.parentTranslateLoc,V.tx,V.ty),W.slotOpacityLoc&&R.uniform1f(W.slotOpacityLoc,V.opacity),W.atlasPageLoc&&R.uniform1i(W.atlasPageLoc,V.atlasPage),W.clipRectLoc&&R.uniform4f(W.clipRectLoc,V.clipX0,V.clipY0,V.clipX1,V.clipY1),W.clipEnabledLoc&&R.uniform1f(W.clipEnabledLoc,V.clipEnabled),W.canvasHeightLoc&&R.uniform1f(W.canvasHeightLoc,this.canvas.height),W.instanceStateEnabledLoc&&R.uniform1f(W.instanceStateEnabledLoc,yA?1:0),W.compactSlotStateEnabledLoc&&R.uniform1f(W.compactSlotStateEnabledLoc,UA?1:0),W.spritesPerSlotLoc&&R.uniform1i(W.spritesPerSlotLoc,UA?gA:1),W.slotStateSizeLoc){const AA=new Int32Array([(G=OA==null?void 0:OA.width)!=null?G:1,(f=OA==null?void 0:OA.height)!=null?f:1]);(u=L.uniform2iv)==null||u.call(L,W.slotStateSizeLoc,AA)}const EA=this.buffers.get(A.vertexBuffer.id),Bg=this.buffers.get(A.indexBuffer.id);if(!EA||!Bg){this.rejectSVGAFastPathDraw();return}if(this.bindCachedVertexArray(kA,A.vertexBuffer.id,A.indexBuffer.id)&&(R.bindBuffer(R.ARRAY_BUFFER,EA.buffer),R.bindBuffer(R.ELEMENT_ARRAY_BUFFER,Bg.buffer),this.setupAttributes(kA)),yA){const AA=this.ensureInstancedSvgaInstanceBuffer();R.bindBuffer(R.ARRAY_BUFFER,AA),R.bufferSubData(R.ARRAY_BUFFER,0,x,0,Z*$A),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=Z*$A*Float32Array.BYTES_PER_ELEMENT;const DA=16*Float32Array.BYTES_PER_ELEMENT;for(let IA=1;IA<=4;IA++)R.enableVertexAttribArray(IA),R.vertexAttribPointer(IA,4,R.FLOAT,!1,DA,(IA-1)*4*Float32Array.BYTES_PER_ELEMENT),R.vertexAttribDivisor(IA,1)}else for(let AA=1;AA<=4;AA++)R.disableVertexAttribArray(AA),R.vertexAttribDivisor(AA,0);R.drawElementsInstanced(R.TRIANGLES,A.indexCount,R.UNSIGNED_INT,0,Z),this.recordSubmittedDraw(),ag!=="none"&&(R.disable(R.STENCIL_TEST),R.colorMask(!0,!0,!0,!0))}drawSVGAFrameTableMeshGL(A){var g,I,B,Q,E,i,e,t,a,o,s,n,r,h;const c=this.gl;if(!this.svgaFrameTableSupported)return;const D=(g=A.svgaFrameTable)!=null?g:null,w=D&&typeof D=="object"&&"backend"in D?D:null,l=(w==null?void 0:w.backend)==="webgl2"?w.texture:(I=A.svgaFrameTableTexture)!=null?I:null;if(!l)return;const F=this.frameTables.get(l.id);if(!F)return;const d=Math.floor((Q=(B=A.svgaFrameTableFrameCount)!=null?B:w==null?void 0:w.frameCount)!=null?Q:0),y=Math.floor((i=(E=A.svgaFrameTableSpriteCount)!=null?E:w==null?void 0:w.spriteCount)!=null?i:0),G=Math.floor((e=A.instanceCount)!=null?e:1),f=A.svgaFrameTableSlotStates,u=Math.floor((t=A.svgaFrameTableSlotStateCount)!=null?t:0),R=f!=null&&u===G&&A.svgaFrameTableSpritesPerSlot===1&&f.length>=u*$A,M=this.resolveSVGAFrameTableSlotState(A,d);if(!M||d<1||y<1||G<1||G>2048)return;const N=A.shader,S=this.programs.get(N);if(!S)return;const Y=(a=A.stencil)!=null?a:"none";Y==="clear"?(c.enable(c.STENCIL_TEST),c.stencilFunc(c.ALWAYS,0,255),c.stencilOp(c.KEEP,c.KEEP,c.REPLACE),c.stencilMask(255),c.colorMask(!1,!1,!1,!1)):Y==="write"?(c.enable(c.STENCIL_TEST),c.stencilFunc(c.ALWAYS,1,255),c.stencilOp(c.KEEP,c.KEEP,c.REPLACE),c.stencilMask(255),c.colorMask(!1,!1,!1,!1)):Y==="test"?(c.enable(c.STENCIL_TEST),c.stencilFunc(c.EQUAL,1,255),c.stencilOp(c.KEEP,c.KEEP,c.KEEP),c.stencilMask(0),c.colorMask(!0,!0,!0,!0)):(c.disable(c.STENCIL_TEST),c.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==N&&(c.useProgram(S.program),this.cachedDrawProgram=N),c.activeTexture(c.TEXTURE0),this.cachedTex0Id!==l.id&&(c.bindTexture(c.TEXTURE_2D,F.texture),this.cachedTex0Id=l.id),this.applyProjectionUniform(S,N,A.uniforms.u_projection),this.svgaTableInfoScratch[0]=d,this.svgaTableInfoScratch[1]=y,this.svgaTableInfoScratch[2]=3,this.svgaTableInfoScratch[3]=0,this.svgaTableSizeScratch[0]=F.width,this.svgaTableSizeScratch[1]=F.height;const U=c;S.tableInfoLoc&&((o=U.uniform4iv)==null||o.call(U,S.tableInfoLoc,this.svgaTableInfoScratch)),S.frameTableSizeLoc&&((s=U.uniform2iv)==null||s.call(U,S.frameTableSizeLoc,this.svgaTableSizeScratch)),S.spriteBaseLoc&&c.uniform1i(S.spriteBaseLoc,M.metadataBase),S.frameIndexLoc&&c.uniform1i(S.frameIndexLoc,M.frameIndex),S.parentAffineLoc&&c.uniform4f(S.parentAffineLoc,M.parentA,M.parentB,M.parentC,M.parentD),S.parentTranslateLoc&&c.uniform2f(S.parentTranslateLoc,M.tx,M.ty),S.slotOpacityLoc&&c.uniform1f(S.slotOpacityLoc,M.opacity),S.clipRectLoc&&c.uniform4f(S.clipRectLoc,M.clipX0,M.clipY0,M.clipX1,M.clipY1),S.clipEnabledLoc&&c.uniform1f(S.clipEnabledLoc,M.clipEnabled),S.canvasHeightLoc&&c.uniform1f(S.canvasHeightLoc,this.canvas.height);let k=null;if(R&&(k=this.uploadSVGASlotStates(f,u,A.svgaFrameTableSlotStateUploadId),!k))return;S.compactSlotStateEnabledLoc&&c.uniform1f(S.compactSlotStateEnabledLoc,R?1:0),S.slotStateSizeLoc&&(this.svgaTableSizeScratch[0]=(n=k==null?void 0:k.width)!=null?n:1,this.svgaTableSizeScratch[1]=(r=k==null?void 0:k.height)!=null?r:1,(h=U.uniform2iv)==null||h.call(U,S.slotStateSizeLoc,this.svgaTableSizeScratch));const m=this.buffers.get(A.vertexBuffer.id),J=this.buffers.get(A.indexBuffer.id);!m||!J||(this.bindCachedVertexArray(N,A.vertexBuffer.id,A.indexBuffer.id)&&(c.bindBuffer(c.ARRAY_BUFFER,m.buffer),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,J.buffer),this.setupAttributes(N)),c.drawElementsInstanced(c.TRIANGLES,A.indexCount,c.UNSIGNED_INT,0,G),this.recordSubmittedDraw(),Y!=="none"&&(c.disable(c.STENCIL_TEST),c.colorMask(!0,!0,!0,!0)))}drawInstancedParticlesGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0;if(B<1||!A.instanceBuffer)return;const Q=this.buffers.get(A.instanceBuffer.id),E=this.buffers.get(A.vertexBuffer.id),i=this.buffers.get(A.indexBuffer.id),e=this.programs.get("particle-instanced");if(!Q||!E||!i||!e)return;I.useProgram(e.program),this.cachedDrawProgram="particle-instanced",this.applyProjectionUniform(e,"particle-instanced",A.uniforms.u_projection);const t=A.uniforms.u_time,a=A.uniforms.u_particleSize,o=A.uniforms.u_globalAlpha;I.uniform1f(I.getUniformLocation(e.program,"u_time"),typeof t=="number"?t:0),I.uniform1f(I.getUniformLocation(e.program,"u_particleSize"),typeof a=="number"?a:8),I.uniform1f(I.getUniformLocation(e.program,"u_globalAlpha"),typeof o=="number"?o:1),I.bindVertexArray(null),I.bindBuffer(I.ARRAY_BUFFER,E.buffer),I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,8,0),I.vertexAttribDivisor(0,0),I.bindBuffer(I.ARRAY_BUFFER,Q.buffer);const s=64;for(let n=1;n<=4;n++)I.enableVertexAttribArray(n),I.vertexAttribPointer(n,4,I.FLOAT,!1,s,16+(n-1)*16),I.vertexAttribDivisor(n,1);I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,i.buffer),I.blendFunc(I.ONE,A.particleBlend==="additive"?I.ONE:I.ONE_MINUS_SRC_ALPHA),I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw(),I.blendFunc(I.ONE,I.ONE_MINUS_SRC_ALPHA)}drawInstancedParticleSpritesGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0;if(B<1||!A.instanceBuffer||!A.textures[0])return;const Q=this.buffers.get(A.instanceBuffer.id),E=this.buffers.get(A.vertexBuffer.id),i=this.buffers.get(A.indexBuffer.id),e=this.textures.get(A.textures[0].id);if(!Q||!E||!i||!e)return;const t=this.ensureParticleSpriteProgram();I.useProgram(t.program),this.cachedDrawProgram="particle-sprite-instanced",this.applyProjectionUniform(t,"particle-sprite-instanced",A.uniforms.u_projection);const a=A.uniforms.u_time,o=A.uniforms.u_globalAlpha,s=A.uniforms.u_sizeEnvelope,n=A.uniforms.u_fadeMode,r=A.uniforms.u_cssScale;t.particleTimeLoc&&I.uniform1f(t.particleTimeLoc,typeof a=="number"?a:0),t.particleGlobalAlphaLoc&&I.uniform1f(t.particleGlobalAlphaLoc,typeof o=="number"?o:1),t.particleSizeEnvelopeLoc&&I.uniform1f(t.particleSizeEnvelopeLoc,typeof s=="number"?s:1),t.particleFadeModeLoc&&I.uniform1f(t.particleFadeModeLoc,typeof n=="number"?n:1),t.particleCssScaleLoc&&I.uniform2fv(t.particleCssScaleLoc,r instanceof Float32Array&&r.length>=2?r:qi),I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,e.texture),this.cachedTex0Id=A.textures[0].id,I.bindVertexArray(null),I.bindBuffer(I.ARRAY_BUFFER,E.buffer),I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,8,0),I.vertexAttribDivisor(0,0),I.bindBuffer(I.ARRAY_BUFFER,Q.buffer);const h=96;for(let c=1;c<=6;c++)I.enableVertexAttribArray(c),I.vertexAttribPointer(c,4,I.FLOAT,!1,h,32+(c-1)*16),I.vertexAttribDivisor(c,1);I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,i.buffer),I.blendFunc(I.ONE,A.particleBlend==="additive"?I.ONE:I.ONE_MINUS_SRC_ALPHA),I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw(),I.blendFunc(I.ONE,I.ONE_MINUS_SRC_ALPHA)}drawInstancedSvgaGL(A){var g,I;const B=this.gl,Q=(g=A.instanceCount)!=null?g:0,E=A.instanceData;if(Q<1||!E||E.length<Q*bA.INST_SVGA_GL_FLOATS)return;if(Q>bA.INST_SVGA_GL_MAX){console.warn("[WebGL2] svga-instanced-premul: instanceCount exceeds max",Q);return}const i=(I=A.stencil)!=null?I:"none";i==="test"?(B.enable(B.STENCIL_TEST),B.stencilFunc(B.EQUAL,1,255),B.stencilOp(B.KEEP,B.KEEP,B.KEEP),B.stencilMask(0),B.colorMask(!0,!0,!0,!0)):(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0));const e="svga-instanced-premul",t=this.programs.get(e);if(!t)return;this.cachedDrawProgram!==e&&(B.useProgram(t.program),this.cachedDrawProgram=e);for(let n=0;n<A.textures.length;n++){const r=A.textures[n].id;if(n===0&&this.cachedTex0Id===r)continue;const h=this.textures.get(r);h&&(B.activeTexture(B.TEXTURE0+n),B.bindTexture(B.TEXTURE_2D,h.texture),n===0&&(this.cachedTex0Id=r))}this.applyProjectionUniform(t,e,A.uniforms.u_projection);const a=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!a||!o)return;const s=this.ensureInstancedSvgaInstanceBuffer();if(B.bindBuffer(B.ARRAY_BUFFER,s),B.bufferSubData(B.ARRAY_BUFFER,0,E,0,Q*bA.INST_SVGA_GL_FLOATS),this.performanceSVGADynamicUploadWrites++,this.performanceSVGADynamicUploadBytes+=Q*bA.INST_SVGA_GL_FLOATS*Float32Array.BYTES_PER_ELEMENT,this.bindCachedVertexArray(e,A.vertexBuffer.id,A.indexBuffer.id)){const n=bA.INST_SVGA_GL_STRIDE;B.bindBuffer(B.ARRAY_BUFFER,s),B.enableVertexAttribArray(1),B.vertexAttribPointer(1,4,B.FLOAT,!1,n,0),B.vertexAttribDivisor(1,1),B.enableVertexAttribArray(2),B.vertexAttribPointer(2,3,B.FLOAT,!1,n,16),B.vertexAttribDivisor(2,1),B.enableVertexAttribArray(3),B.vertexAttribPointer(3,4,B.FLOAT,!1,n,28),B.vertexAttribDivisor(3,1),B.enableVertexAttribArray(4),B.vertexAttribIPointer(4,2,B.UNSIGNED_INT,n,44),B.vertexAttribDivisor(4,1),B.bindBuffer(B.ARRAY_BUFFER,a.buffer),B.enableVertexAttribArray(0),B.vertexAttribPointer(0,2,B.FLOAT,!1,8,0),B.vertexAttribDivisor(0,0),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,o.buffer)}B.drawElementsInstanced(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0,Q),this.recordSubmittedDraw(),i!=="none"&&(B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0))}ensureInstancedClipMaskBuffer(){const A=this.gl;if(!this.instancedClipMaskGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_CLIP_MASK_GL_BYTES,A.DYNAMIC_DRAW),this.instancedClipMaskGLBuffer=g}return this.instancedClipMaskGLBuffer}drawInstancedClipMaskGL(A){var g,I;const B=this.gl,Q=(g=A.instanceCount)!=null?g:0,E=A.instanceData;if(Q<1||!E||E.length<Q*bA.INST_CLIP_MASK_GL_FLOATS)return;if(Q>bA.INST_CLIP_MASK_GL_MAX){console.warn("[WebGL2] clip-mask-instanced: instanceCount exceeds max",Q);return}const i="clip-mask-instanced",e=this.programs.get(i);if(!e)return;const t=this.buffers.get(A.vertexBuffer.id),a=this.buffers.get(A.indexBuffer.id);if(!t||!a)return;const o=(I=A.stencil)!=null?I:"write";B.enable(B.STENCIL_TEST),B.stencilFunc(B.ALWAYS,o==="clear"?0:1,255),B.stencilOp(B.KEEP,B.KEEP,B.REPLACE),B.stencilMask(255),B.colorMask(!1,!1,!1,!1),this.cachedDrawProgram!==i&&(B.useProgram(e.program),this.cachedDrawProgram=i),this.applyProjectionUniform(e,i,A.uniforms.u_projection);const s=this.ensureInstancedClipMaskBuffer();if(B.bindBuffer(B.ARRAY_BUFFER,s),o!=="clear"&&B.bufferSubData(B.ARRAY_BUFFER,0,E,0,Q*bA.INST_CLIP_MASK_GL_FLOATS),this.bindCachedVertexArray(i,A.vertexBuffer.id,A.indexBuffer.id)){const n=bA.INST_CLIP_MASK_GL_STRIDE;B.bindBuffer(B.ARRAY_BUFFER,s),B.enableVertexAttribArray(1),B.vertexAttribPointer(1,4,B.FLOAT,!1,n,0),B.vertexAttribDivisor(1,1),B.enableVertexAttribArray(2),B.vertexAttribPointer(2,2,B.FLOAT,!1,n,16),B.vertexAttribDivisor(2,1),B.bindBuffer(B.ARRAY_BUFFER,t.buffer),B.enableVertexAttribArray(0),B.vertexAttribPointer(0,2,B.FLOAT,!1,8,0),B.vertexAttribDivisor(0,0),B.bindBuffer(B.ELEMENT_ARRAY_BUFFER,a.buffer)}B.drawElementsInstanced(B.TRIANGLES,A.indexCount,B.UNSIGNED_INT,0,Q),this.recordSubmittedDraw(),B.disable(B.STENCIL_TEST),B.colorMask(!0,!0,!0,!0)}ensureInstancedAlphaInstanceBuffer(){const A=this.gl;if(!this.instancedAlphaInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_ALPHA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedAlphaInstanceGLBuffer=g}return this.instancedAlphaInstanceGLBuffer}drawInstancedAlphaGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*12)return;if(B>bA.INST_ALPHA_GL_MAX){console.warn("[WebGL2] alpha-video-instanced: instanceCount exceeds max",B);return}I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0);const E="alpha-video-instanced",i=this.programs.get("alpha-video-instanced");if(!i)return;this.cachedDrawProgram!==E&&(I.useProgram(i.program),this.cachedDrawProgram=E);for(let o=0;o<A.textures.length;o++){const s=A.textures[o].id;if(o===0&&this.cachedTex0Id===s)continue;const n=this.textures.get(s);n&&(I.activeTexture(I.TEXTURE0+o),I.bindTexture(I.TEXTURE_2D,n.texture),o===0&&(this.cachedTex0Id=s))}this.applyProjectionUniform(i,E,A.uniforms.u_projection);const e=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);if(!e||!t)return;const a=this.ensureInstancedAlphaInstanceBuffer();if(I.bindBuffer(I.ARRAY_BUFFER,a),I.bufferSubData(I.ARRAY_BUFFER,0,Q,0,B*12),this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)){I.bindBuffer(I.ARRAY_BUFFER,a);for(let n=0;n<3;n++){const r=2+n;I.enableVertexAttribArray(r),I.vertexAttribPointer(r,4,I.FLOAT,!1,48,n*16),I.vertexAttribDivisor(r,1)}I.bindBuffer(I.ARRAY_BUFFER,e.buffer);const s=16;I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,s,0),I.vertexAttribDivisor(0,0),I.enableVertexAttribArray(1),I.vertexAttribPointer(1,2,I.FLOAT,!1,s,8),I.vertexAttribDivisor(1,0),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,t.buffer)}I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw()}ensureInstancedVapInstanceBuffer(){const A=this.gl;if(!this.instancedVapInstanceGLBuffer){const g=A.createBuffer();if(!g)throw new Error("createBuffer failed");A.bindVertexArray(null),A.bindBuffer(A.ARRAY_BUFFER,g),A.bufferData(A.ARRAY_BUFFER,bA.INST_VAP_GL_BYTES,A.DYNAMIC_DRAW),this.instancedVapInstanceGLBuffer=g}return this.instancedVapInstanceGLBuffer}drawInstancedVapGL(A){var g;const I=this.gl,B=(g=A.instanceCount)!=null?g:0,Q=A.instanceData;if(B<1||!Q||Q.length<B*32)return;if(B>bA.INST_VAP_GL_MAX){console.warn("[WebGL2] vap-instanced: instanceCount exceeds max",B);return}I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0);const E="vap-instanced",i=this.programs.get("vap-instanced");if(!i)return;this.cachedDrawProgram!==E&&(I.useProgram(i.program),this.cachedDrawProgram=E);for(let o=0;o<A.textures.length;o++){const s=A.textures[o].id;if(o===0&&this.cachedTex0Id===s)continue;const n=this.textures.get(s);n&&(I.activeTexture(I.TEXTURE0+o),I.bindTexture(I.TEXTURE_2D,n.texture),o===0&&(this.cachedTex0Id=s))}this.applyProjectionUniform(i,E,A.uniforms.u_projection);const e=this.buffers.get(A.vertexBuffer.id),t=this.buffers.get(A.indexBuffer.id);if(!e||!t)return;const a=this.ensureInstancedVapInstanceBuffer();if(I.bindBuffer(I.ARRAY_BUFFER,a),I.bufferSubData(I.ARRAY_BUFFER,0,Q,0,B*32),this.bindCachedVertexArray(E,A.vertexBuffer.id,A.indexBuffer.id)){I.bindBuffer(I.ARRAY_BUFFER,a);for(let n=0;n<8;n++){const r=2+n;I.enableVertexAttribArray(r),I.vertexAttribPointer(r,4,I.FLOAT,!1,128,n*16),I.vertexAttribDivisor(r,1)}I.bindBuffer(I.ARRAY_BUFFER,e.buffer);const s=16;I.enableVertexAttribArray(0),I.vertexAttribPointer(0,2,I.FLOAT,!1,s,0),I.vertexAttribDivisor(0,0),I.enableVertexAttribArray(1),I.vertexAttribPointer(1,2,I.FLOAT,!1,s,8),I.vertexAttribDivisor(1,0),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,t.buffer)}I.drawElementsInstanced(I.TRIANGLES,A.indexCount,I.UNSIGNED_INT,0,B),this.recordSubmittedDraw()}destroy(){this.deviceLostHandler=null,this.canvas.removeEventListener("webglcontextlost",this.onContextLost),this.runtimeDiagnosticHandler=null;const A=this.gl;A.bindVertexArray(null),this.deleteAllVertexArrays(),this.instancedSvgaInstanceGLBuffer&&(A.deleteBuffer(this.instancedSvgaInstanceGLBuffer),this.instancedSvgaInstanceGLBuffer=null),this.svgaSlotStateTexture&&(A.deleteTexture(this.svgaSlotStateTexture),this.svgaSlotStateTexture=null,this.svgaSlotStateTextureWidth=0,this.svgaSlotStateTextureHeight=0),this.instancedClipMaskGLBuffer&&(A.deleteBuffer(this.instancedClipMaskGLBuffer),this.instancedClipMaskGLBuffer=null),this.instancedAlphaInstanceGLBuffer&&(A.deleteBuffer(this.instancedAlphaInstanceGLBuffer),this.instancedAlphaInstanceGLBuffer=null),this.instancedVapInstanceGLBuffer&&(A.deleteBuffer(this.instancedVapInstanceGLBuffer),this.instancedVapInstanceGLBuffer=null);for(const[,I]of this.buffers)A.deleteBuffer(I.buffer);for(const[,I]of this.textures)A.deleteTexture(I.texture);for(const[,I]of this.programs)A.deleteProgram(I.program);this.buffers.clear(),this.frameTables.clear(),this.ownedFrameTableMetadataIds.clear(),this.textures.clear(),this.programs.clear();const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}};H(SA,"INST_SVGA_GL_MAX",2048);H(SA,"INST_SVGA_GL_FLOATS",13);H(SA,"INST_SVGA_GL_STRIDE",SA.INST_SVGA_GL_FLOATS*4);H(SA,"INST_SVGA_GL_BYTES",SA.INST_SVGA_GL_MAX*16*Float32Array.BYTES_PER_ELEMENT);H(SA,"INST_CLIP_MASK_GL_MAX",2048);H(SA,"INST_CLIP_MASK_GL_FLOATS",6);H(SA,"INST_CLIP_MASK_GL_STRIDE",SA.INST_CLIP_MASK_GL_FLOATS*4);H(SA,"INST_CLIP_MASK_GL_BYTES",SA.INST_CLIP_MASK_GL_MAX*SA.INST_CLIP_MASK_GL_STRIDE);H(SA,"INST_ALPHA_GL_MAX",1024);H(SA,"INST_ALPHA_GL_BYTES",SA.INST_ALPHA_GL_MAX*48);H(SA,"INST_VAP_GL_MAX",1024);H(SA,"INST_VAP_GL_BYTES",SA.INST_VAP_GL_MAX*128);let WQ=SA;var vi=Object.defineProperty,Ti=(C,A,g)=>A in C?vi(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,mA=(C,A,g)=>Ti(C,typeof A!="symbol"?A+"":A,g);function Wi(C,A){let g=C.replace(/^#version\s+300\s+es\s*/m,"");return A==="vertex"?(g=g.replace(/layout\s*\(location\s*=\s*\d+\)\s*in\s+/g,"attribute "),g=g.replace(/\bout\s+/g,"varying ")):(g=g.replace(/\bin\s+/g,"varying "),g=g.replace(/out\s+vec4\s+fragColor\s*;\s*/g,""),g=g.replace(/\bfragColor\b/g,"gl_FragColor"),g=g.replace(/\btexture\s*\(/g,"texture2D(")),g}function ZC(C,A,g,I){const B=C.createShader(A);if(!B)throw new Error("Failed to create shader");if(C.shaderSource(B,Wi(g,I)),C.compileShader(B),!C.getShaderParameter(B,C.COMPILE_STATUS)){const Q=C.getShaderInfoLog(B);throw C.deleteShader(B),new Error(`Shader compile failed: ${Q}`)}return B}function dI(C,A,g,I){const B=ZC(C,C.VERTEX_SHADER,A,"vertex"),Q=ZC(C,C.FRAGMENT_SHADER,g,"fragment"),E=C.createProgram();if(!E)throw C.deleteShader(B),C.deleteShader(Q),new Error("Failed to create program");C.attachShader(E,B),C.attachShader(E,Q);for(const[i,e]of Object.entries(I))C.bindAttribLocation(E,e,i);if(C.linkProgram(E),!C.getProgramParameter(E,C.LINK_STATUS)){const i=C.getProgramInfoLog(E);throw C.deleteProgram(E),C.deleteShader(B),C.deleteShader(Q),new Error(`Program link failed: ${i}`)}return C.deleteShader(B),C.deleteShader(Q),E}function XC(C,A=C.LINEAR,g=C.CLAMP_TO_EDGE){const I=C.createTexture();if(!I)throw new Error("Failed to create texture");return C.bindTexture(C.TEXTURE_2D,I),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,A),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,g),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,g),I}const Vi=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);class aC{constructor(A,g=!0){mA(this,"type","webgl1"),mA(this,"canvas"),mA(this,"maxTextureSize",4096),mA(this,"antialias"),mA(this,"gl"),mA(this,"nextId",1),mA(this,"buffers",new Map),mA(this,"textures",new Map),mA(this,"programs",new Map),mA(this,"cachedDrawProgram",null),mA(this,"cachedTex0Id",null),mA(this,"cachedProjectionRef",null),mA(this,"cachedProjectionShader",null),mA(this,"lastDrawSubmitted",!1),mA(this,"videoUploadCanvas",null),mA(this,"videoUploadCtx",null),mA(this,"supportsUintIndices",!1),this.canvas=A,this.antialias=g}async init(){const A=this.canvas.getContext("webgl",{alpha:!0,premultipliedAlpha:!0,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL1 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.supportsUintIndices=!!A.getExtension("OES_element_index_uint"),A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}initPrograms(){const A=this.gl,g=dI(A,P.svgaBatchPremul.vert,P.svgaBatchPremul.frag,{a_position:0,a_color:1,a_uv:2});this.programs.set("svga-batch-premul",this.makeProgramEntry(g,{transform:!0,opacity:!0})),this.bindProgramSamplers(g,{u_atlas:0});const I=dI(A,P.vap.vert,P.vap.frag,{a_position:0,a_rgbUV:1,a_alphaUV:2});this.programs.set("vap",this.makeProgramEntry(I,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(I,{u_video:0});const B=dI(A,P.alphaVideo.vert,P.alphaVideo.frag,{a_position:0,a_uv:1});this.programs.set("alpha-video",this.makeProgramEntry(B,{transform:!0,atlasRemap:!0,opacity:!0,rgbPremultiplied:!0})),this.bindProgramSamplers(B,{u_video:0});const Q=dI(A,P.rgbaTextured.vert,P.rgbaTextured.frag,{a_position:0,a_uv:1});this.programs.set("rgba-textured",this.makeProgramEntry(Q,{transform:!0,atlasRemap:!0,opacity:!0})),this.bindProgramSamplers(Q,{u_video:0});const E=dI(A,P.clipMask.vert,P.clipMask.frag,{a_position:0});this.programs.set("clip-mask",this.makeProgramEntry(E,{transform:!0}))}makeProgramEntry(A,g={}){const I=this.gl;return{program:A,projLoc:I.getUniformLocation(A,"u_projection"),transformLoc:g.transform?I.getUniformLocation(A,"u_transform"):null,atlasRemapLoc:g.atlasRemap?I.getUniformLocation(A,"u_atlasRemap"):null,opacityLoc:g.opacity?I.getUniformLocation(A,"u_opacity"):null,rgbPremultipliedLoc:g.rgbPremultiplied?I.getUniformLocation(A,"u_rgbPremultiplied"):null,lastOpacity:null,lastRgbPremultiplied:null}}applyIdentityTransform(A){A.transformLoc&&this.gl.uniformMatrix4fv(A.transformLoc,!1,Vi)}bindProgramSamplers(A,g){const I=this.gl;I.useProgram(A);for(const B in g){const Q=I.getUniformLocation(A,B);Q&&I.uniform1i(Q,g[B])}}applyDrawUniforms(A,g,I){const B=this.gl,Q=I.uniforms.u_projection;if(A.projLoc&&Q instanceof Float32Array&&Q.length>=16&&(this.cachedProjectionShader!==g||this.cachedProjectionRef!==Q)&&(B.uniformMatrix4fv(A.projLoc,!1,Q),this.cachedProjectionShader=g,this.cachedProjectionRef=Q),A.transformLoc){const E=I.uniforms.u_transform;E instanceof Float32Array?B.uniformMatrix4fv(A.transformLoc,!1,E):this.applyIdentityTransform(A)}if(A.atlasRemapLoc){const E=I.uniforms.u_atlasRemap;E instanceof Float32Array&&B.uniform4fv(A.atlasRemapLoc,E)}if(A.opacityLoc){const E=I.uniforms.u_opacity,i=typeof E=="number"?E:1;A.lastOpacity!==i&&(B.uniform1f(A.opacityLoc,i),A.lastOpacity=i)}if(A.rgbPremultipliedLoc){const E=I.uniforms.u_rgbPremultiplied;typeof E=="number"&&A.lastRgbPremultiplied!==E&&(B.uniform1f(A.rgbPremultipliedLoc,E),A.lastRgbPremultiplied=E)}}beginFrame(A={}){const g=this.gl;try{return g.viewport(0,0,this.canvas.width,this.canvas.height),g.colorMask(!0,!0,!0,!0),g.stencilMask(255),g.disable(g.STENCIL_TEST),g.disable(g.SCISSOR_TEST),g.clearColor(0,0,0,0),g.clearStencil(0),g.clear(g.COLOR_BUFFER_BIT|(A.stencil?g.STENCIL_BUFFER_BIT:0)),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,tg}catch(I){return $("submission-error",this.errorMessage(I))}}endFrame(){try{return this.gl.flush(),tg}catch(A){return $("submission-error",this.errorMessage(A))}}abortFrame(){const A=this.gl;try{return A.colorMask(!0,!0,!0,!0),A.stencilMask(255),A.disable(A.STENCIL_TEST),A.disable(A.SCISSOR_TEST),A.clearColor(0,0,0,0),A.clearStencil(0),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.flush(),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null,tg}catch(g){return $("submission-error",this.errorMessage(g))}}errorMessage(A){return A instanceof Error?A.message:String(A)}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}normalizeIndexSource(A){if(this.supportsUintIndices)return A;if(ArrayBuffer.isView(A)){if(A instanceof Uint16Array)return A;if("length"in A)return Uint16Array.from(A);const g=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return new Uint16Array(g.buffer.slice(g.byteOffset,g.byteOffset+g.byteLength))}return new Uint16Array(A)}createBuffer(A,g){const I=this.gl,B=I.createBuffer();if(!B)throw new Error("Failed to create buffer");const Q=g==="index"?this.normalizeIndexSource(A):A,E=g==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(E,B),I.bufferData(E,Q,I.DYNAMIC_DRAW);const i=this.nextId++;return this.buffers.set(i,{buffer:B,usage:g,byteLength:this.getBufferSourceByteLength(Q)}),{id:i,usage:g}}updateBuffer(A,g,I=0){const B=this.buffers.get(A.id);if(!B)return;const Q=this.gl,E=B.usage==="index"?this.normalizeIndexSource(g):g,i=B.usage==="index"?Q.ELEMENT_ARRAY_BUFFER:Q.ARRAY_BUFFER;Q.bindBuffer(i,B.buffer);const e=this.getBufferSourceByteLength(E);I===0&&e<=B.byteLength?Q.bufferSubData(i,0,E):(Q.bufferData(i,E,Q.DYNAMIC_DRAW),B.byteLength=e)}deleteBuffer(A){const g=this.buffers.get(A.id);g&&(this.gl.deleteBuffer(g.buffer),this.buffers.delete(A.id))}ensureVideoUploadCanvas(A,g){return this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d")),!this.videoUploadCtx||!this.videoUploadCanvas?null:((this.videoUploadCanvas.width!==A||this.videoUploadCanvas.height!==g)&&(this.videoUploadCanvas.width=A,this.videoUploadCanvas.height=g),this.videoUploadCtx)}uploadVideoFrameToTexture(A,g,I){const B=this.gl,Q=g.videoWidth,E=g.videoHeight;if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||Q<=0||E<=0)return!1;const i=this.ensureVideoUploadCanvas(Q,E);return!i||!this.videoUploadCanvas?!1:(i.drawImage(g,0,0,Q,E),B.bindTexture(B.TEXTURE_2D,A),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),I?B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas):B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),!0)}createTexture(A,g){var I,B;const Q=this.gl,E=g.filter==="nearest"?Q.NEAREST:Q.LINEAR,i=XC(Q,E),e=g.premultiplyAlpha===!0;let t=(I=g.width)!=null?I:1,a=(B=g.height)!=null?B:1;if(A instanceof ArrayBuffer)Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,t,a,0,Q.RGBA,Q.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame)Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,1),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e?1:0),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),t=A.displayWidth||A.codedWidth||t,a=A.displayHeight||A.codedHeight||a;else if(A instanceof HTMLVideoElement)Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e?1:0),this.uploadVideoFrameToTexture(i,A,!0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t=A.videoWidth||t,a=A.videoHeight||a;else{const s=e,n=g.sourcePremultiplied===!0,r=s&&!n?1:0;Q.bindTexture(Q.TEXTURE_2D,i),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r),Q.texImage2D(Q.TEXTURE_2D,0,Q.RGBA,Q.RGBA,Q.UNSIGNED_BYTE,A),Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),Q.pixelStorei(Q.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(t=A.width,a=A.height)}const o=this.nextId++;return this.textures.set(o,{texture:i,width:t,height:a}),{id:o,width:t,height:a}}createEmptyTexture(A,g,I={}){const B=this.gl,Q=I.filter==="nearest"?B.NEAREST:B.LINEAR,E=XC(B,Q),i=Math.max(1,Math.floor(A)),e=Math.max(1,Math.floor(g));B.bindTexture(B.TEXTURE_2D,E),B.texImage2D(B.TEXTURE_2D,0,B.RGBA,i,e,0,B.RGBA,B.UNSIGNED_BYTE,null);const t=this.nextId++;return this.textures.set(t,{texture:E,width:i,height:e}),{id:t,width:i,height:e}}updateTexture(A,g){const I=this.textures.get(A.id);if(!I)return;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const e=this.gl,t=vI(g),a=TI(g),o=t===I.width&&a===I.height;e.bindTexture(e.TEXTURE_2D,I.texture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),o?e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,g):(e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,g),t>0&&a>0&&(I.width=t,I.height=a)),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){const e=g.videoWidth,t=g.videoHeight,a=e!==I.width||t!==I.height;this.uploadVideoFrameToTexture(I.texture,g,a)&&a&&(I.width=e,I.height=t);return}const B=this.gl,Q=vI(g),E=TI(g),i=Q===I.width&&E===I.height;B.bindTexture(B.TEXTURE_2D,I.texture),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),i?B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,g):(B.texImage2D(B.TEXTURE_2D,0,B.RGBA,B.RGBA,B.UNSIGNED_BYTE,g),Q>0&&E>0&&(I.width=Q,I.height=E)),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,g,I,B,Q,E){const i=this.textures.get(A.id);if(!i)return;const e=this.gl;e.bindTexture(e.TEXTURE_2D,i.texture);let t,a;if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame)t=g.displayWidth||g.codedWidth,a=g.displayHeight||g.codedHeight;else if(g instanceof HTMLVideoElement){if(g.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;t=g.videoWidth,a=g.videoHeight}else{const n=g;t=n.width,a=n.height}if(!t||!a)return;const o=Q!=null?Q:t,s=E!=null?E:a;if(o!==t||s!==a){const n=this.ensureVideoUploadCanvas(o,s);if(!n||!this.videoUploadCanvas)return;n.drawImage(g,0,0,o,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,this.videoUploadCanvas),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}if(g instanceof HTMLVideoElement){e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);return}e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),e.texSubImage2D(e.TEXTURE_2D,0,I,B,e.RGBA,e.UNSIGNED_BYTE,g)}deleteTexture(A){const g=this.textures.get(A.id);g&&(this.gl.deleteTexture(g.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){this.lastDrawSubmitted=!1;const g=A.stencil==="clear"||A.shader==="clip-mask"?"clip-mask":A.shader;if(!this.programs.has(g))return $("invalid-command",`WebGL1 shader unavailable: ${g}`);if(!this.buffers.has(A.vertexBuffer.id)||!this.buffers.has(A.indexBuffer.id))return $("missing-resource","WebGL1 draw buffer is unavailable");for(const I of A.textures)if(!this.textures.has(I.id))return $("missing-resource",`WebGL1 texture ${I.id} is unavailable`);try{this.drawInternal(A)}catch(I){return $("submission-error",this.errorMessage(I))}return this.lastDrawSubmitted?tg:$("invalid-command",`WebGL1 rejected ${A.shader}`)}drawInternal(A){var g;const I=this.gl,B=(g=A.stencil)!=null?g:"none",Q=A.shader==="clip-mask"||B==="clear"?"clip-mask":A.shader;if(Q==="svga-instanced-premul"||Q==="alpha-video-instanced"||Q==="vap-instanced")throw new Error(`WebGL1 backend does not support instanced shader: ${Q}`);const E=this.programs.get(Q);if(!E)return;B==="clear"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.ALWAYS,0,255),I.stencilOp(I.KEEP,I.KEEP,I.REPLACE),I.stencilMask(255),I.colorMask(!1,!1,!1,!1)):B==="write"||A.shader==="clip-mask"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.ALWAYS,1,255),I.stencilOp(I.KEEP,I.KEEP,I.REPLACE),I.stencilMask(255),I.colorMask(!1,!1,!1,!1)):B==="test"?(I.enable(I.STENCIL_TEST),I.stencilFunc(I.EQUAL,1,255),I.stencilOp(I.KEEP,I.KEEP,I.KEEP),I.stencilMask(0),I.colorMask(!0,!0,!0,!0)):(I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==Q&&(I.useProgram(E.program),this.cachedDrawProgram=Q);for(let t=0;t<A.textures.length;t++){const a=A.textures[t].id;if(t===0&&this.cachedTex0Id===a)continue;const o=this.textures.get(a);o&&(I.activeTexture(I.TEXTURE0+t),I.bindTexture(I.TEXTURE_2D,o.texture),t===0&&(this.cachedTex0Id=a))}this.applyDrawUniforms(E,Q,A);const i=this.buffers.get(A.vertexBuffer.id),e=this.buffers.get(A.indexBuffer.id);!i||!e||(I.bindBuffer(I.ARRAY_BUFFER,i.buffer),I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,e.buffer),this.setupAttributes(Q),I.drawElements(I.TRIANGLES,A.indexCount,this.supportsUintIndices?I.UNSIGNED_INT:I.UNSIGNED_SHORT,0),this.lastDrawSubmitted=!0,(B!=="none"||A.shader==="clip-mask")&&(I.disable(I.STENCIL_TEST),I.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,g,I,B){const Q=this.gl,E=this.canvas.width,i=this.canvas.height,e=Math.max(0,Math.min(E,Math.floor(A))),t=Math.max(0,Math.min(i,Math.floor(g))),a=Math.max(e,Math.min(E,Math.ceil(A+I))),o=Math.max(t,Math.min(i,Math.ceil(g+B)));Q.enable(Q.SCISSOR_TEST),Q.scissor(e,i-o,a-e,o-t)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const g=this.gl;g.disableVertexAttribArray(0),g.disableVertexAttribArray(1),g.disableVertexAttribArray(2),A==="svga-batch-premul"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,3,g.FLOAT,!1,36,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,4,g.FLOAT,!1,36,12),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,36,28)):A==="vap"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,24,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,24,8),g.enableVertexAttribArray(2),g.vertexAttribPointer(2,2,g.FLOAT,!1,24,16)):A==="clip-mask"?(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,8,0)):(g.enableVertexAttribArray(0),g.vertexAttribPointer(0,2,g.FLOAT,!1,16,0),g.enableVertexAttribArray(1),g.vertexAttribPointer(1,2,g.FLOAT,!1,16,8))}destroy(){const A=this.gl;for(const[,I]of this.buffers)A.deleteBuffer(I.buffer);for(const[,I]of this.textures)A.deleteTexture(I.texture);for(const[,I]of this.programs)A.deleteProgram(I.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}}function VQ(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function Zi(){return typeof navigator!="undefined"&&"gpu"in navigator&&VQ()}function Xi(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(C){return!1}}function Oi(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(C){return!1}}function Pi(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"&&globalThis.crossOriginIsolated===!0}function ZQ(){return typeof OffscreenCanvas!="undefined"}async function XQ(C,A=!0,g=!0,I=!1){const B=g,Q=g;if(I){const i=new aC(C,Q);return await i.init(),i}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&VQ())try{const i=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(i){const e=new TQ(C,i,B);return await e.init(),e}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(i){console.warn(`[GiftStage] WebGPU init failed: ${i instanceof Error?i.message:String(i)}, fallback to WebGL2/WebGL1.`)}else A&&typeof navigator!="undefined"&&"gpu"in navigator&&console.warn("[GiftStage] WebGPU unavailable: GPUQueue.copyExternalImageToTexture is not supported, fallback to WebGL2/WebGL1.");try{const i=new WQ(C,Q);return await i.init(),i}catch(i){console.warn(`[GiftStage] WebGL2 init failed: ${i instanceof Error?i.message:String(i)}, fallback to WebGL1.`)}const E=new aC(C,Q);return await E.init(),E}const ji={width:1920,height:1080},zi={width:2560,height:1440};function _i(C=typeof navigator!="undefined"?navigator:void 0){var A;if(!(C!=null&&C.userAgent))return!1;const g=C.userAgent;return!!(/Android|iPhone|iPod|Mobile/i.test(g)||/iPad/i.test(g)||/Macintosh/i.test(g)&&((A=C.maxTouchPoints)!=null?A:0)>1)}function $i(C){return _i(C)?ji:zi}function Ae(C,A,g){const I=C.clientWidth||C.getBoundingClientRect().width||0,B=C.clientHeight||C.getBoundingClientRect().height||0,Q=A>0&&Number.isFinite(A)?A:1;let E=Math.max(1,Math.round(I*Q)),i=Math.max(1,Math.round(B*Q));if(g!==!1){const e=g!=null?g:$i(),t=Math.max(e.width,e.height),a=Math.min(e.width,e.height);if(t>0&&a>0){const o=Math.min(1,t/Math.max(E,i),a/Math.min(E,i));o<1&&(E=Math.max(1,Math.round(E*o)),i=Math.max(1,Math.round(i*o)))}}(C.width!==E||C.height!==i)&&(C.width=E,C.height=i)}function Xg(C){const A=C.clientWidth||C.getBoundingClientRect().width||1,g=C.clientHeight||C.getBoundingClientRect().height||1;return{sx:C.width/Math.max(1,A),sy:C.height/Math.max(1,g)}}const $g=9,ge={a:1,b:0,c:0,d:1,tx:0,ty:0};function OQ(C,A,g){return(C*g+A)*$g}function Ie(C,A,g){var I,B;const Q=(I=C.shapesIndex[A*C.frameCount+g])!=null?I:-1;return Q<0?null:(B=C.shapesTable[Q])!=null?B:null}function PQ(C,A){var g,I,B,Q,E,i,e;const t=C.length;let a=A!=null?A:0;if(a<=0)for(const l of C)a=Math.max(a,l.frames.length);const o=C.map(l=>l.imageKey),s=new Float32Array(t*a*$g),n=[],r=new Map,h=new Int32Array(t*a).fill(-1),c=[],D=new Int32Array(t*a).fill(-1);let w=!1;for(let l=0;l<t;l++){const F=C[l];let d=null,y=-1;for(let G=0;G<a;G++){const f=F.frames[G],u=OQ(l,G,a);if(!f){s[u+2]=1,s[u+5]=1;continue}const R=(I=(g=f.layout)==null?void 0:g.width)!=null?I:0,M=(Q=(B=f.layout)==null?void 0:B.height)!=null?Q:0,N=(E=f.transform)!=null?E:ge;s[u]=R,s[u+1]=M,s[u+2]=N.a,s[u+3]=N.b,s[u+4]=N.c,s[u+5]=N.d,s[u+6]=N.tx,s[u+7]=N.ty,s[u+8]=f.alpha;const S=(i=f.clipPath)!=null?i:"";if(S.length>0){let k=r.get(S);k===void 0&&(k=n.length,n.push(S),r.set(S,k)),h[l*a+G]=k}const Y=f.shapes;if(!Y||Y.length===0){d=null,y=-1;continue}if(((e=Y[0])==null?void 0:e.kind)==="keep"){y>=0&&(D[l*a+G]=y,w=!0);continue}if(d!==null&&Y===d&&y>=0){D[l*a+G]=y,w=!0;continue}const U=Y.every(k=>k.kind!=="keep")?Y:Y.filter(k=>k.kind!=="keep");if(U.length===0){d=null,y=-1;continue}d=U,y=c.length,c.push(U),D[l*a+G]=y,w=!0}}return{spriteCount:t,frameCount:a,imageKeys:o,frameData:s,clipPaths:n,clipPathIndex:h,shapesTable:c,shapesIndex:D,hasAnyShapes:w}}function Wg(C,A){if(A.allFramesInsideViewBox!==void 0)return A.allFramesInsideViewBox;const g=C.viewBoxWidth,I=C.viewBoxHeight;let B=g>0&&I>0&&!A.hasAnyShapes;const Q=B?Math.max(g,I)*.001+.001:0;A:for(let E=0;B&&E<A.spriteCount;E++)for(let i=0;i<A.frameCount;i++){const e=OQ(E,i,A.frameCount),t=A.frameData[e],a=A.frameData[e+1];if(t<=0||a<=0)continue;const o=A.frameData[e+2],s=A.frameData[e+3],n=A.frameData[e+4],r=A.frameData[e+5],h=A.frameData[e+6],c=A.frameData[e+7],D=o*t+h,w=s*t+c,l=o*t+n*a+h,F=s*t+r*a+c,d=n*a+h,y=r*a+c;if(Math.min(h,D,l,d)<-Q||Math.min(c,w,F,y)<-Q||Math.max(h,D,l,d)>g+Q||Math.max(c,w,F,y)>I+Q){B=!1;break A}}return A.allFramesInsideViewBox=B,B}function hB(C,A,g){const I=Math.floor(C.length/_g),B=Math.floor(A.length/(nI*ug)),Q=Math.floor(g.length/YI),E=Math.min(I,B,Q);for(let i=0;i<E;i++){const e=i*_g,t=C[e],a=C[e+1],o=C[e+2],s=C[e+3],n=C[e+4],r=C[e+5],h=C[e+6],c=C[e+7],D=C[e+8],w=C[e+9],l=C[e+10],F=C[e+11],d=C[e+12],y=h,G=c,f=o*t+h,u=s*t+c,R=o*t+n*a+h,M=s*t+r*a+c,N=n*a+h,S=r*a+c,Y=i*nI*ug;A[Y]=y,A[Y+1]=G,A[Y+2]=0,A[Y+3]=1,A[Y+4]=1,A[Y+5]=1,A[Y+6]=D,A[Y+7]=w,A[Y+8]=l;const U=Y+ug;A[U]=f,A[U+1]=u,A[U+2]=0,A[U+3]=1,A[U+4]=1,A[U+5]=1,A[U+6]=D,A[U+7]=F,A[U+8]=l;const k=Y+2*ug;A[k]=R,A[k+1]=M,A[k+2]=0,A[k+3]=1,A[k+4]=1,A[k+5]=1,A[k+6]=D,A[k+7]=F,A[k+8]=d;const m=Y+3*ug;A[m]=N,A[m+1]=S,A[m+2]=0,A[m+3]=1,A[m+4]=1,A[m+5]=1,A[m+6]=D,A[m+7]=w,A[m+8]=d;const J=i*YI,q=i*nI;g[J]=q,g[J+1]=q+1,g[J+2]=q+2,g[J+3]=q,g[J+4]=q+2,g[J+5]=q+3}return E}function Be(C,A,g){const I=PC(C,z.__wbindgen_malloc),B=qA;var Q=PC(A,z.__wbindgen_malloc),E=qA,i=$Q(g,z.__wbindgen_malloc),e=qA;return z.build_batch_vertices(I,B,Q,E,A,i,e,g)>>>0}function Ce(C){const A=JB(C,z.__wbindgen_malloc),g=qA,I=z.decode_svga(A,g);if(I[2])throw WI(I[1]);return WI(I[0])}function Qe(C){const A=JB(C,z.__wbindgen_malloc),g=qA,I=z.decode_svga_payload(A,g);if(I[3])throw WI(I[2]);var B=mB(I[0],I[1]).slice();return z.__wbindgen_free(I[0],I[1]*1,1),B}function Ee(C){const A=JB(C,z.__wbindgen_malloc),g=qA,I=z.decode_svga_payload_profiled(A,g);if(I[3])throw WI(I[2]);var B=mB(I[0],I[1]).slice();return z.__wbindgen_free(I[0],I[1]*1,1),B}function ie(C){const A=JB(C,z.__wbindgen_malloc),g=qA,I=z.inflate(A,g);if(I[3])throw WI(I[2]);var B=mB(I[0],I[1]).slice();return z.__wbindgen_free(I[0],I[1]*1,1),B}function jQ(){z.init()}function ee(){return z.take_svga_payload_profile()}function te(C,A){const g=ne(C,z.__wbindgen_malloc),I=qA,B=$Q(A,z.__wbindgen_malloc),Q=qA,E=z.triangulate_clip_polygons(g,I,B,Q);var i=ae(E[0],E[1]).slice();return z.__wbindgen_free(E[0],E[1]*4,4),i}function zQ(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,g){return Error(qB(A,g))},__wbg_String_8564e559799eccda:function(A,g){const I=String(g),B=re(I,z.__wbindgen_malloc,z.__wbindgen_realloc),Q=qA;OC().setInt32(A+4,Q,!0),OC().setInt32(A+0,B,!0)},__wbg___wbindgen_copy_to_typed_array_a4db337751e0b328:function(A,g,I){new Uint8Array(I.buffer,I.byteOffset,I.byteLength).set(mB(A,g))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,g){throw new Error(qB(A,g))},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_now_008d9b84600b5c19:function(){return performance.now()},__wbg_set_08463b1df38a7e29:function(A,g,I){return A.set(g,I)},__wbg_set_6be42768c690e380:function(A,g,I){A[g]=I},__wbg_set_6c60b2e8ad0e9383:function(A,g,I){A[g>>>0]=I},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,g){return qB(A,g)},__wbindgen_cast_0000000000000003:function(A){return BigInt.asUintN(64,A)},__wbindgen_init_externref_table:function(){const A=z.__wbindgen_externrefs,g=A.grow(4);A.set(0,void 0),A.set(g+0,void 0),A.set(g+1,null),A.set(g+2,!0),A.set(g+3,!1)}}}}function ae(C,A){return C=C>>>0,_Q().subarray(C/4,C/4+A)}function mB(C,A){return C=C>>>0,rI().subarray(C/1,C/1+A)}let jg=null;function OC(){return(jg===null||jg.buffer.detached===!0||jg.buffer.detached===void 0&&jg.buffer!==z.memory.buffer)&&(jg=new DataView(z.memory.buffer)),jg}let SI=null;function oe(){return(SI===null||SI.byteLength===0)&&(SI=new Float32Array(z.memory.buffer)),SI}let fI=null;function se(){return(fI===null||fI.byteLength===0)&&(fI=new Float64Array(z.memory.buffer)),fI}function qB(C,A){return C=C>>>0,ce(C,A)}let MI=null;function _Q(){return(MI===null||MI.byteLength===0)&&(MI=new Uint32Array(z.memory.buffer)),MI}let NI=null;function rI(){return(NI===null||NI.byteLength===0)&&(NI=new Uint8Array(z.memory.buffer)),NI}function $Q(C,A){const g=A(C.length*4,4)>>>0;return _Q().set(C,g/4),qA=C.length,g}function JB(C,A){const g=A(C.length*1,1)>>>0;return rI().set(C,g/1),qA=C.length,g}function PC(C,A){const g=A(C.length*4,4)>>>0;return oe().set(C,g/4),qA=C.length,g}function ne(C,A){const g=A(C.length*8,8)>>>0;return se().set(C,g/8),qA=C.length,g}function re(C,A,g){if(g===void 0){const i=pI.encode(C),e=A(i.length,1)>>>0;return rI().subarray(e,e+i.length).set(i),qA=i.length,e}let I=C.length,B=A(I,1)>>>0;const Q=rI();let E=0;for(;E<I;E++){const i=C.charCodeAt(E);if(i>127)break;Q[B+E]=i}if(E!==I){E!==0&&(C=C.slice(E)),B=g(B,I,I=E+C.length*3,1)>>>0;const i=rI().subarray(B+E,B+I),e=pI.encodeInto(C,i);E+=e.written,B=g(B,I,E,1)>>>0}return qA=E,B}function WI(C){const A=z.__wbindgen_externrefs.get(C);return z.__externref_table_dealloc(C),A}let cB=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});cB.decode();const he=2146435072;let vB=0;function ce(C,A){return vB+=A,vB>=he&&(cB=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),cB.decode(),vB=A),cB.decode(rI().subarray(C,C+A))}const pI=new TextEncoder;"encodeInto"in pI||(pI.encodeInto=function(C,A){const g=pI.encode(C);return A.set(g),{read:C.length,written:g.length}});let qA=0,z;function AE(C,A){return z=C.exports,jg=null,SI=null,fI=null,MI=null,NI=null,z.__wbindgen_start(),z}async function De(C,A){if(typeof Response=="function"&&C instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(C,A)}catch(B){if(C.ok&&g(C.type)&&C.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",B);else throw B}const I=await C.arrayBuffer();return await WebAssembly.instantiate(I,A)}else{const I=await WebAssembly.instantiate(C,A);return I instanceof WebAssembly.Instance?{instance:I,module:C}:I}function g(I){switch(I){case"basic":case"cors":case"default":return!0}return!1}}function le(C){if(z!==void 0)return z;C!==void 0&&(Object.getPrototypeOf(C)===Object.prototype?{module:C}=C:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const A=zQ();C instanceof WebAssembly.Module||(C=new WebAssembly.Module(C));const g=new WebAssembly.Instance(C,A);return AE(g)}async function gE(C){if(z!==void 0)return z;C!==void 0&&(Object.getPrototypeOf(C)===Object.prototype?{module_or_path:C}=C:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),C===void 0&&(C=new URL("data:application/wasm;base64,AGFzbQEAAAAB6gI0YAJ/fwF/YAR/f39/AGADf39/AGACf38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAAAYAZ/f39/f38AYAR/f39/AX9gAAR/f39/YAABb2AFf39/f38Bf2ACf38Ef39/f2ACf38Bb2AGf39/f39/AX9gAn9/AX5gAAF/YAV/f31/fwBgBX9/fn9/AGAFf398f38AYAJ9fQF9YAJ8fAF8YAADf39/YAACf39gAAF8YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2ABfgFvYAh/f39/f39/fwBgBn9/f3x8fABgCHx8fHx8fHx8AX9gA39/fgBgBn9/f31/fwBgBn9/f35/fwBgBn9/f3x/fwBgAn9/A39/f2AEf39/fwJ/f2AIf39/f29/f28Bf2AEf35/fwBgBH99f38AYAR/fH9/AGADf399AGAHf39/f39/fwBgAXwBf2ADf398AAKmBxAXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfbm93XzAwOGQ5Yjg0NjAwYjVjMTkAGhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAbFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ABwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAHRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx1fX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYQAeFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld185OWNhYmFlNTAxYzBhOGEwAAwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgADBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfNGY5ZmFmYmIzOTA5YWY3MgAMFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgADFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMADxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ19iMjliNWM1YTgwNjViYTFhAB8XLi9naWZ0X3N0YWdlX3dhc21fYmcuanM1X193YmdfX193YmluZGdlbl9jb3B5X3RvX3R5cGVkX2FycmF5X2E0ZGIzMzc3NTFlMGIzMjgAIBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAAgXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAIRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAPFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzACIDzgHMAQEjJAcBAgIJAAMEEAYCAgMDAQUECgAKACUREQMBBQICAAICAwQAEgMAAQIDBgABAAEABgEEAQEDBQAGCQUCCQkCBQIDAAIIASYCAwEGBQYCCQYFAQEFBQUFAQEACScoKQUBAQIEBAUBBAAAAAcCAwEBBgIAAA0AAAoABg4ODiorLBAHDQUUExUGBgEKBAEIAgYWFxcWAAADAwMDAgAwAwIxAgQCMjMFABIKAwABAQMAAAMAAAICBwcIAgQEBgwAAAgDAwAEAAMAAwcIAgQJAnABZmZvAIAIBQMBABEGCQF/AUGAgMAACwe6Ag8GbWVtb3J5AgALZGVjb2RlX3N2Z2EAjgETZGVjb2RlX3N2Z2FfcGF5bG9hZACMARxkZWNvZGVfc3ZnYV9wYXlsb2FkX3Byb2ZpbGVkAIsBGXRha2Vfc3ZnYV9wYXlsb2FkX3Byb2ZpbGUAzQEHaW5mbGF0ZQCNARRidWlsZF9iYXRjaF92ZXJ0aWNlcwCQARl0cmlhbmd1bGF0ZV9jbGlwX3BvbHlnb25zAI8BBGluaXQA2gERX193YmluZGdlbl9tYWxsb2MAgwESX193YmluZGdlbl9yZWFsbG9jAIgBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBGV9f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oAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIAo2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABayAKSQRAIARBoAJqIAEgCkEBQQEQTCAEKAKoAiEBCyAKBEAgBCgCpAIgAWogCSAK/AoAAAsgBCAEKAKoAiAKaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAMAQsgBSgCCCIJQQJHBEAgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakEBOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIMQwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIUQwAAAAAgBSgCEBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIcQwAAAAAgBSgCGBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIkQwAAAAAgBSgCIBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIsQwAAAAAgBSgCKBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAMAQsgBSgCMCIJQQJGDQIgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakECOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI0QwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI8QwAAAAAgBSgCOBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJEQwAAAAAgBSgCQBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJMQwAAAAAgBSgCSBsMAQsgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJq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ZkUgLCAroiApICaiZkVyDQAgHSAHQQhqKwMAoSAJKwMAIByhoiAcIAcrAwChIAlBCGorAwAgHaGioUQAAAAAAAAAAGYNAgsgCiAPRw0ACwwGCyABIAhHDQALCwJAAkAgC0H/AXFBAWsOAgQBAAsgDEEcaiENIAEgDGohBiABIQoDQCAKIQgCQANAIAwgBigCJCIBaiEHIAYoAhBBAE4EQCAGKAIgIQogBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQIgBkEIaisDACIcIAogDGoiCUEIaisDAKEgBysDACAGKwMAIh2hoiAdIAkrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEGIAEgCEcNAAtBASELIAghAQwICyAGKAIcIQggBigCGCEJIAogDGoiBiABNgIkAkAgCUUNACAJIApHBEAgCSANaiAINgIADAELIAYgCDYCHAsgByAKNgIgIAgEQCAHIAggDGogASAIRhsgCTYCGAtBASELIAEgCkcNAAsMBgsgDEEkaiEYIAEgDGohCyABIQgDQCAMIAsoAiQiD2ohByAPIBhqKAIAIg0gCygCICIZRwRAIAwgGWohFiALKAIQIhBB/////wdxIRoDQAJAIAwgDSIOaiIRKAIQIgYgEHNB/////wdxRQRAIA0gGGooAgAhDQwBCyARKAIkIQ0gBkH/////B3EiFyAHKAIQQf////8HcUYNACAWKAIQQf////8HcSAXRg0AIAwgESgCIGohFCAMIA1qIRMgESsDCCEeIBErAwAhHyALKwMIIR0gCysDACEhIBAhCSALIQYDQCAJIRICQCAMIAYiCigCJGoiBigCECIJQf////8HcSIbIBdGDQAgEkH/////B3EiEiAaRiASIBdGciAaIBtGcg0AIAorAwAgCkEIaisDACAGKwMAIAZBCGorAwAgISAdIB8gHhAoDQILIAYgC0cNAAsgHyAhoSEiIB4gHaEhIwJAAkAgHSAWQQhqKwMAIhyhIiggBysDACIkICGhIieiIikgISAWKwMAIiChIiogB0EIaisDACIlIB2hIiaiIitjRQRAICMgICAfoaIgIiAcIB6homMNASAfICShICaiICcgHiAloaJjRQ0CDAELICMgJCAfoaIgIiAlIB6hoqFEAAAAAAAAAABmRSAfICChIBwgHaGiICAg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AAseACAARQRAENABAAsgACACIAMgBCAFIAEoAhARDQALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEKAAscACAARQRAENABAAsgACACIAMgBCABKAIQEQEACxwAIABFBEAQ0AEACyAAIAIgAyAEIAEoAhARLQALHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEuAAscACAARQRAENABAAsgACACIAMgBCABKAIQES8ACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARDEAQsLCgBBCCAAENIBAAsaACAARQRAENABAAsgACACIAMgASgCEBECAAsaACAARQRAENABAAsgACACIAMgASgCEBEEAAsYACAARQRAENABAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEH4scAANgIACxIAQfjQwABBOUGU0cAAEIIBAAslAQFvEAYhAxA2IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxAELCxQAIAAgACABIAAgAV0bIAEgAVwbCxQAIAAgACABIAAgAWMbIAEgAWIbCxQAIAEgASAAIAAgAWMbIAAgAGIbCxQAIAEgASAAIAAgAV0bIAAgAFwbCx0AIAEgAC0AAEECdCIAKALMrEAgACgCtKxAELIBCx0AIAEgAC0AAEECdCIAKAKArkAgACgC6K1AELIBCx8AIABBCGpBxLTAACkCADcCACAAQby0wAApAgA3AgALHwAgAEEIakGcxsAAKQIANwIAIABBlMbAACkCADcCAAsfACAAQQhqQazGwAApAgA3AgAgAEGkxsAAKQIANwIACx8AIAAEQCAAIAEQ0gEAC0G80sAAQSNB0NLAABCCAQALEgAgACABQQF0QQFyIAIQggEACxYBAW8gACABEA4hAhA2IgAgAiYBIAALFAAgACACuxC0ATYCBCAAQQA2AgALFAAgACABtxC0ATYCBCAAQQA2AgALFQAgACABIAIQrAE2AgQgAEEANgIAC9MLAQ5/IAAhDyMAQRBrIggkACABKAIQIQcgBkH/AXFBAnQoAoi1QCEKIwBBEGsiBiQAAkACQAJAAkACQAJA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aW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAIWNhbm5vdCBhZHZhbmNlIHBhc3QgYHJlbWFpbmluZ2A6IMAEIDw9IMAAE2ludmFsaWQga2V5IHZhbHVlOiDAABlpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogwAASU2VyaWFsaXplIGZhaWxlZDogwAAQSW5mbGF0ZSBmYWlsZWQ6IMAAGFByb3RvYnVmIGRlY29kZSBmYWlsZWQ6IMAAwAI6IMAAc3JjXHZlcnRleC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXNfbXV0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxvdXRwdXRfYnVmZmVyLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcZmxhdGUyLTEuMS45XHNyY1xidWZyZWFkZXIucnMAc3JjXGNsaXAucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcc3RyZWFtLnJzAHNyY1xwcm90b2J1Zi5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGVhcmN1dC0wLjQuOVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41XHNyY1xsaWIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGxpYi5ycwDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAHJlY3RlbGxpcHNlegYQAA8AAAAiAAAAEwAAAERlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hTVkdBUGF5bG9hZFByb2ZpbGVpbnB1dEJ5dGVzb3V0cHV0Qnl0ZXNwcm9zdERlY29kZU1zbWV0YWRhdGFBbmRJbWFnZXNNc2ZyYW1lVGFibGVNc2ZpbmFsaXplTXNwYXlsb2FkQnVpbGRNc3J1c3RUb3RhbE1zaW1hZ2VCeXRlc2ltYWdlQ291bnRzcHJpdGVDb3VudGZyYW1lQ291bnRjZWxsQ291bnRjbGlwUGF0aENvdW50c2hhcGVDb3VudHNoYXBlR3JvdXBDb3VudHNoYXBlQnl0ZXN3cml0ZXJJbml0aWFsQ2FwYWNpdHl3cml0ZXJGaW5hbENhcGFjaXR5RGVjb2RlZFJlY3R4eXdpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RlY29kZWRBdWRpb2F1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVEZWNvZGVkQ29sb3JyZ0RlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkU2hhcGVraW5kcGF0aF9kYXRhc3R5bGVEZWNvZGVkTGF5b3V0RGVjb2RlZFBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzRGVjb2RlZFNwcml0ZWltYWdlX2tleURlY29kZWRFbGxpcHNlcmFkaXVzX3hyYWRpdXNfeQAAAP//////////GA4QAEGwnMAAC/MDegYQAA8AAABKAwAAIwAAAHoGEAAPAAAAaQMAACkAAAB6BhAADwAAAFIDAAApAAAASwkQAF4AAACFAgAAKAAAAEsJEABeAAAAbgQAABwAAABLCRAAXgAAAN0CAAAhAAAASwkQAF4AAADpAAAAJgAAAEsJEABeAAAABgEAAB0AAABLCRAAXgAAAHoEAAAzAAAASwkQAF4AAAB7BAAAMwAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVu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ciB1bmRlcmZsb3dpbnZhbGlkIHZhcmludHJlY3Vyc2lvbiBsaW1pdCByZWFjaGVkVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0TgUQAGQAAABiAAAAFQAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAJkWEACfFhAAqxYQALoWEADEFhAAzBYQAGFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAigYQAFMAAAAVAQAACQAAAIUIEABJAAAAsgEAADEAAABSZ2JhQ29sb3JyZ2JhU2hhcGVBcmdzZFNoYXBlU3R5bGVmaWxsc3Ryb2tlc3Ryb2tlX3dpZHRobGluZV9jYXBsaW5lX2pvaW5taXRlcl9saW1pdGxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9kYXNoX2lpaUVsbGlwc2VBcmdzeHlyYWRpdXNfeHJhZGl1c195UmVjdEFyZ3N3aWR0aGhlaWdodGNvcm5lcl9yYWRpdXOqCRAAagAAADUAAAAOAAAAAAAAAP//////////OBgQAEHQsMAAC80BQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGZhaWxlZCB0byBkZWNvZGUgUHJvdG9idWYgbWVzc2FnZTogAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgBBqLLAAAvdAgEAAAAvAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDJAxAAYAAAADoFAAAyAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAAzAAAAOAAAAMkDEABgAAAASAUAAEkAAABMYXlvdXRFcnJvcm92ZXJmbG93AFsCEABkAAAAvQIAAB0AAABbAhAAZAAAAKkCAAAVAAAAOQAAADoAAAA7AAAAPAAAAD0AAAAVChAAXgAA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bAAAAEQEAAAjAAAASwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpAEsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKClLBxAAbAAAAEcEAAANAAAASwcQAGwAAABIBAAAIgAAAEsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQBLBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpSwcQAGwAAABNBAAADQAAAEsHEABsAAAATgQAACIAAABLBxAAbAAAAE4EAAANAAAASwcQAGwAAABPBAAAJgAAAEsHEABsAAAATwQAAA0AAABLBxAAbAAAACwEAAAXAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAACwYQAG4AAABCAQAAHAAAAAsGEABuAAAAdgEAADAAAADeBhAAbAAAAHwAAAARAAAA3gYQAGwAAACJAAAAEQAAAG1dy9YsUOtjeEGmV3Ebi7mauO6RURSWWM+WAOjSnxKKZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBv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",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:sI&&sI.tagName.toUpperCase()==="SCRIPT"&&sI.src||new URL("gift-stage.cjs",document.baseURI).href));const A=zQ();(typeof C=="string"||typeof Request=="function"&&C instanceof Request||typeof URL=="function"&&C instanceof URL)&&(C=fetch(C));const{instance:g,module:I}=await De(await C,A);return AE(g)}const we=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:Be,decode_svga:Ce,decode_svga_payload:Qe,decode_svga_payload_profiled:Ee,default:gE,inflate:ie,init:jQ,initSync:le,take_svga_payload_profile:ee,triangulate_clip_polygons:te},Symbol.toStringTag,{value:"Module"})),TB="data:application/wasm;base64,AGFzbQEAAAAB6gI0YAJ/fwF/YAR/f39/AGADf39/AGACf38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAAAYAZ/f39/f38AYAR/f39/AX9gAAR/f39/YAABb2AFf39/f38Bf2ACf38Ef39/f2ACf38Bb2AGf39/f39/AX9gAn9/AX5gAAF/YAV/f31/fwBgBX9/fn9/AGAFf398f38AYAJ9fQF9YAJ8fAF8YAADf39/YAACf39gAAF8YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2ABfgFvYAh/f39/f39/fwBgBn9/f3x8fABgCHx8fHx8fHx8AX9gA39/fgBgBn9/f31/fwBgBn9/f35/fwBgBn9/f3x/fwBgAn9/A39/f2AEf39/fwJ/f2AIf39/f29/f28Bf2AEf35/fwBgBH99f38AYAR/fH9/AGADf399AGAHf39/f39/fwBgAXwBf2ADf398AAKmBxAXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfbm93XzAwOGQ5Yjg0NjAwYjVjMTkAGhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAbFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF8wODQ2M2IxZGYzOGE3ZTI5ABwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZiZTQyNzY4YzY5MGUzODAAHRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx1fX3diZ19TdHJpbmdfODU2NGU1NTk3OTllY2NkYQAeFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld185OWNhYmFlNTAxYzBhOGEwAAwXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3X2YzYzlkZjRmMzhmM2Y3OTgADBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfNGY5ZmFmYmIzOTA5YWY3MgAMFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzJ19fd2JnX19fd2JpbmRnZW5fdGhyb3dfODFmYzc3Njc5YWY4M2JjNgADFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzHF9fd2JnX0Vycm9yXzJlNTliMWIzN2E5YTM0YzMADxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcytfX3diZ19fX3diaW5kZ2VuX2lzX3N0cmluZ19iMjliNWM1YTgwNjViYTFhAB8XLi9naWZ0X3N0YWdlX3dhc21fYmcuanM1X193YmdfX193YmluZGdlbl9jb3B5X3RvX3R5cGVkX2FycmF5X2E0ZGIzMzc3NTFlMGIzMjgAIBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcx9fX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlAAgXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMgX193YmluZGdlbl9jYXN0XzAwMDAwMDAwMDAwMDAwMDEAIRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMgAPFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzIF9fd2JpbmRnZW5fY2FzdF8wMDAwMDAwMDAwMDAwMDAzACIDzgHMAQEjJAcBAgIJAAMEEAYCAgMDAQUECgAKACUREQMBBQICAAICAwQAEgMAAQIDBgABAAEABgEEAQEDBQAGCQUCCQkCBQIDAAIIASYCAwEGBQYCCQYFAQEFBQUFAQEACScoKQUBAQIEBAUBBAAAAAcCAwEBBgIAAA0AAAoABg4ODiorLBAHDQUUExUGBgEKBAEIAgYWFxcWAAADAwMDAgAwAwIxAgQCMjMFABIKAwABAQMAAAMAAAICBwcIAgQEBgwAAAgDAwAEAAMAAwcIAgQJAnABZmZvAIAIBQMBABEGCQF/AUGAgMAACwe6Ag8GbWVtb3J5AgALZGVjb2RlX3N2Z2EAjgETZGVjb2RlX3N2Z2FfcGF5bG9hZACMARxkZWNvZGVfc3ZnYV9wYXlsb2FkX3Byb2ZpbGVkAIsBGXRha2Vfc3ZnYV9wYXlsb2FkX3Byb2ZpbGUAzQEHaW5mbGF0ZQCNARRidWlsZF9iYXRjaF92ZXJ0aWNlcwCQARl0cmlhbmd1bGF0ZV9jbGlwX3BvbHlnb25zAI8BBGluaXQA2gERX193YmluZGdlbl9tYWxsb2MAgwESX193YmluZGdlbl9yZWFsbG9jAIgBFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBGV9f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oAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIAo2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABayAKSQRAIARBoAJqIAEgCkEBQQEQTCAEKAKoAiEBCyAKBEAgBCgCpAIgAWogCSAK/AoAAAsgBCAEKAKoAiAKaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAMAQsgBSgCCCIJQQJHBEAgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakEBOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIMQwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIUQwAAAAAgBSgCEBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIcQwAAAAAgBSgCGBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIkQwAAAAAgBSgCIBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgIsQwAAAAAgBSgCKBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAMAQsgBSgCMCIJQQJGDQIgBCgCoAIgAUYEQCAEQaACahBhCyAEKAKkAiABakECOgAAIAQgAUEBaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI0QwAAAAAgCUEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgI8QwAAAAAgBSgCOBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJEQwAAAAAgBSgCQBshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgJMQwAAAAAgBSgCSBsMAQsgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAkMAAAAACyFBIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmogQTgAACAEIAQoAqgCIitBBGoiHTYCqAICQCAFKAJQIiJBAkcEQCAFKAKIASIsQQJHIgEgAUECciAFKAKoASIXQQJGIgkbIgFBBHIgASAFKAJYIhgbIgFBCHIgASAFKAJgIhEbIgFBEHIgASAFKAJoIg4bIgFBIHIgASAFKAJ4IhIgBSoCfCJHQwAAAABecSAFKAJwIgsgBSoCdCJFQwAAAABecWogBSgCgAEiCiAFKgKEASJEQwAAAABecWoiLRshASAEKAKgAiAdRgRAIARBoAJqEGELIAQoAqQCIB1qIAE6AAAgBCArQQVqIgE2AqgCICxBAkcEQCAFKgKMAUMAAAAAICxBAXEbIUEgBCgCoAIgAWtBA00EfyAEQaACaiABQQRBAUEBEEwgBCgCqAIFIAELIAQoAqQCaiBBOAAAIAQgBCgCqAJBBGoiATYCqAIgBSoClAFDAAAAACAFKAKQARshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgKcAUMAAAAAIAUoApgBGyFBIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmogQTgAACAEIAQoAqgCQQRqIgE2AqgCIAUqAqQBQwAAAAAgBSgCoAEbIUEgBCgCoAIgAWtBA00EfyAEQaACaiABQQRBAUEBEEwgBCgCqAIFIAELIAQoAqQCaiBBOAAAIAQgBCgCqAJBBGoiATYCqAILIAlFBEAgBSoCrAFDAAAAACAXQQFxGyFBIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmogQTgAACAEIAQoAqgCQQRqIgE2AqgCIAUqArQBQwAAAAAgBSgCsAEbIUEgBCgCoAIgAWtBA00EfyAEQaACaiABQQRBAUEBEEwgBCgCqAIFIAELIAQoAqQCaiBBOAAAIAQgBCgCqAJBBGoiATYCqAIgBSoCvAFDAAAAACAFKAK4ARshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgLEAUMAAAAAIAUoAsABGyFBIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmogQTgAACAEIAQoAqgCQQRqIgE2AqgCCyAFKgJUQwAAAAAgIkEBcRshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIJNgKoAiAYBEAgBSgCXCEBIAQoAqACIAlrQQNNBH8gBEGgAmogCUEEQQFBARBMIAQoAqgCBSAJCyAEKAKkAmogATYAACAEIAQoAqgCQQRqIgk2AqgCCyARBEAgBSgCZCEBIAQoAqACIAlrQQNNBH8gBEGgAmogCUEEQQFBARBMIAQoAqgCBSAJCyAEKAKkAmogATYAACAEIAQoAqgCQQRqIgk2AqgCCyAOBEAgBSoCbCFBIAQoAqACIAlrQQNNBH8gBEGgAmogCUEEQQFBARBMIAQoAqgCBSAJCyAEKAKkAmogQTgAACAEIAQoAqgCQQRqIgk2AqgCCyAtRQ0BIAQoAqACIAlrQQNNBH8gBEGgAmogCUEEQQFBARBMIAQoAqgCBSAJCyAEKAKkAmogLTYAACAEIAQoAqgCQQRqIgk2AqgCIAQgRDgCkAEgBCAKNgKMASAEIEc4AogBIAQgEjYChAEgBCBFOAKAASAEIAs2AnxBACEGA0AgNyAGQQN0aiEBIAZBAWohBgNAAkAgAUEEaygCAEEBRgRAIAEqAgAiQUMAAAAAXg0BCyABQQhqIQEgBkEBaiIGQQRHDQEMBAsLIAQoAqACIAlrQQNNBH8gBEGgAmogCUEEQQFBARBMIAQoAqgCBSAJCyAEKAKkAmogQTgAACAEIAQoAqgCQQRqIgk2AqgCIAZBA0cNAAsMAQsgBCgCoAIgHUYEQCAEQaACahBhCyAEKAKkAiAdakEAOgAAIAQgK0EFaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIJNgKoAgsCfSAFKALIASIBQQJHBEAgBSoCzAFDAACAPyABQQFxGyFBIAQoAqACIAlrQQNNBH8gBEGgAmogCUEEQQFBARBMIAQoAqgCBSAJCyAEKAKkAmogQTgAACAEIAQoAqgCQQRqIgE2AqgCIAUqAtQBQwAAAAAgBSgC0AEbIUEgBCgCoAIgAWtBA00EfyAEQaACaiABQQRBAUEBEEwgBCgCqAIFIAELIAQoAqQCaiBBOAAAIAQgBCgCqAJBBGoiATYCqAIgBSoC3AFDAAAAACAFKALYARshQSAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqIEE4AAAgBCAEKAKoAkEEaiIBNgKoAiAFKgLkAUMAAIA/IAUoAuABGyFBIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmogQTgAACAEIAQoAqgCQQRqIgE2AqgCIAUqAuwBQwAAAAAgBSgC6AEbIUEgBCgCoAIgAWtBA00EfyAEQaACaiABQQRBAUEBEEwgBCgCqAIFIAELIAQoAqQCaiBBOAAAIAQgBCgCqAJBBGoiATYCqAIgBSoC9AFDAAAAACAFKALwARsMAQsgBCgCoAIgCWtBA00EfyAEQaACaiAJQQRBAUEBEEwgBCgCqAIFIAkLIAQoAqQCakGAgID8AzYAACAEIAQoAqgCQQRqIgE2AqgCIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmpBADYAACAEIAQoAqgCQQRqIgE2AqgCIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmpBADYAACAEIAQoAqgCQQRqIgE2AqgCIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmpBgICA/AM2AAAgBCAEKAKoAkEEaiIBNgKoAiAEKAKgAiABa0EDTQR/IARBoAJqIAFBBEEBQQEQTCAEKAKoAgUgAQsgBCgCpAJqQQA2AAAgBCAEKAKoAkEEaiIBNgKoAkMAAAAACyFBIAQoAqACIAFrQQNNBH8gBEGgAmogAUEEQQFBARBMIAQoAqgCBSABCyAEKAKkAmogQTgAACAEIAQoAqgCQQRqIgE2AqgCIAhBAWohCAsgBUGEAmoiBSAaRw0ACyAIBEAgBCkDoAIhOSAEKAKcAiIGIAQoApQCRgRAIwBBEGsiCyQAIAtBBGogBEGUAmoiCigCACIFIAooAgRBBCAFQQF0IgUgBUEETRsiCUEEQRAQSyALKAIEQQFGBEAgCygCCCALKAIMEKoBAAsgCygCCCEFIAogCTYCACAKIAU2AgQgC0EQaiQACyAEKAKYAiAGQQR0aiIFIAg2AgwgBSABNgIIIAUgOTcCACAEIAZBAWo2ApwCIBQgI00NA0F/IAEgL2oiASABIC9JGyEvQX8gCCAwaiIBIAEgMEkbITAMBwsgBCgCoAIiBUUNAQsgBCgCpAIgBUEBEMQBC0F/IQYMBQsgIyAUQcCcwAAQcwALQQEgBRCqAQALICMgHEGwnMAAEHMACyAGQQBIBEBBfyEGDAILIBQgI00NAwsgFSAjQQJ0aiAGNgIAQQEhNAsgDUEBaiINIBNHDQALIBAiGyA2Rw0BDAMLCyAjIBRB0JzAABBzAAtBBCAfEKoBAAsgAwRAEAAgT6EhVRAAIVMLIAQoAuwBIQEgBCgC2AEgBCgC4AEiBWtBA00EfyAEQdgBaiAFQQRBAUEBEEwgBCgC4AEFIAULIAQoAtwBaiABNgAAIAQgBCgC4AFBBGoiATYC4AEgBCgC7AEiBQRAIAQoAugBIgYgBUEDdGohCANAIAZBBGooAgAhCSAGKAIAIQUgBCgC2AEgAWtBA00EfyAEQdgBaiABQQRBAUEBEEwgBCgC4AEFIAELIAQoAtwBaiAJNgAAIAQgBCgC4AFBBGoiATYC4AEgBCgC2AEgAWsgCUkEQCAEQdgBaiABIAlBAUEBEEwgBCgC4AEhAQsgCQRAIAQoAtwBIAFqIAUgCfwKAAALIAQgBCgC4AEgCWoiATYC4AEgBkEIaiIGIAhHDQALCyABQQNxBEADQCAEKALYASABRgRAIARB2AFqEGELIAQoAtwBIAFqQQA6AAAgBCABQQFqIgE2AuABIAFBA3ENAAsLIBwEQCAcQQJ0IQYgByEFA0AgBSgCACEIIAVBBGohBSAEKALYASABa0EDTQR/IARB2AFqIAFBBEEBQQEQTCAEKALgAQUgAQsgBCgC3AFqIAg2AAAgBCAEKALgAUEEaiIBNgLgASAGQQRrIgYNAAsLIAQoApwCIQUgBCgC2AEgAWtBA00EfyAEQdgBaiABQQRBAUEBEEwgBCgC4AEFIAELIAQoAtwBaiAFNgAAIAQgBCgC4AFBBGoiATYC4AEgBCgCnAIiBQRAIAVBBHQhCSAEKAKYAkEIaiEFA0AgBUEEaigCACEIIAQoAtgBIAFrQQNNBH8gBEHYAWogAUEEQQFBARBMIAQoAuABBSABCyAEKALcAWogCDYAACAEIAQoAuABQQRqIgY2AuABIAVBBGsoAgAhASAFKAIAIgggBCgC2AEgBmtLBEAgBEHYAWogBiAIQQFBARBMIAQoAuABIQYLIAgEQCAEKALcASAGaiABIAj8CgAACyAEIAQoAuABIAhqIgE2AuABIAVBEGohBSAJQRBrIgkNAAsLIAFBA3EEQANAIAQoAtgBIAFGBEAgBEHYAWoQYQsgBCgC3AEgAWpBADoAACAEIAFBAWoiATYC4AEgAUEDcQ0ACwsgFARAIBUhBQNAIAUoAgAhCCAFQQRqIQUgBCgC2AEgAWtBA00EfyAEQdgBaiABQQRBAUEBEEwgBCgC4AEFIAELIAQoAtwBaiAINgAAIAQgBCgC4AFBBGoiATYC4AEgH0EEayIfDQALCyAEKALYASABRgRAIARB2AFqEGELIAQoAtwBIAFqIDQ6AAAgBCABQQFqIgE2AuABAkACQCABQQdLBEAgBCgC3AFBAkEDIDQbQQIgJxs7AAYgBEG4AmoiECAEQeABaigCACIJNgIAIAQgBCkC2AE3A7ACIANFDQIgBCgC2AEhCBAAIU9BsOvAACgCAA0BIAQoApwCIQUgBCgC7AEhAyAEKAI0IQFBoOzAACAINgIAQZzswAAgJjYCAEGY7MAAIC82AgBBlOzAACAFNgIAQZDswAAgMDYCAEGM7MAAIAM2AgBBiOzAACAUNgIAQYTswAAgEzYCAEGA7MAAIBk2AgBB/OvAACABNgIAQfjrwAAgLjYCAEH068AAIAk2AgBB8OvAACACNgIAQdDrwAAgVTkDAEHI68AAIFQ5AwBBwOvAACBSOQMAQbjrwABCATcDAEHo68AAIE8gUKE5AwBB4OvAACBPIFGhOQMAQdjrwAAgTyBToTkDAAwCC0EGQQggAUHElsAAEDkAC0GgqcAAEIoBAAsgACAEKQOwAjcCACAAQQhqIBAoAgA2AgAgFgRAIBUgFkECdEEEEMQBCyAEKAKcAiIFBEAgBCgCmAIhAQNAIAEoAgAiAARAIAFBBGooAgAgAEEBEMQBCyABQRBqIQEgBUEBayIFDQALCyAEKAKUAiIABEAgBCgCmAIgAEEEdEEEEMQBCyAxBEAgByAxQQJ0QQQQxAELAkAgBCgC9AEiAEUNACAAIABBDGxBE2pBeHEiAWpBCWoiAEUNACAEKALwASABayAAQQgQxAELIAQoAuQBIgAEQCAEKALoASAAQQN0QQQQxAELIAQoAmAiAEGAgICAeEYgAEVyRQRAIAQoAmQgAEEBEMQBCyA1EEIgBEHIAGoQPCAEKAJIIgAEQCAEKAJMIABBGGxBBBDEAQsgBCgCWCECIAQoAlwiBQRAIAJBJGohAQNAIAFBBGsoAgAiAEGAgICAeEYgAEVyRQRAIAEoAgAgAEEBEMQBCyABQSxqIQEgBUEBayIFDQALCyAEKAJUIgBFDQAgAiAAQSxsQQQQxAELIARBwAJqJAAL11MBK38jAEHQAGsiCCQAAkACQAJAAkACQAJ/AkACQCAFIAZJDQBBfyAFQQFrIgtBACAFIAtPGyAHQQRxIiYbIhFBAWoiLCARcQ0AIAggAzYCICAIIAI2AhwgAS0AgFIhCSAIIAY2AiwgCCAFNgIoIAggBDYCJCAIIAEtAOxROgBAIAggASgC2FE2AjwgCCABKALUUTYCOCAIIAEoAsBRNgI0IAggASgC3FE2AjBBAUEDIAdBAXEiJxshLUEBQXwgB0ECcRshHiABQYDRAGohICABQZDQAGohLiABQeDRAGohFiABQe3RAGohHyABQYDGAGohISABQYA2aiEiIAFBoNEAaiEZIAFBgM8AaiEoIAFB5NEAaiEjIAFBgBRqIRogAUGABGohGyABQYAtaiEkIAFBgB1qISUDQEH/ASEFAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAQJ/An8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAJQf8BcQ4ZJiUkIxEnECIhIB8eAQIdHBsaGRgDBBcABi0LIAgoAiAhCSAIKAIcIQUgCCgCPCIQQQNLDRQgASgCzFEhDSAIKAIwIQogCCgCNCIEDQQgCUUNFSAFQQFqIQsgCUEBayEJQQAhDCAFLQAAIA1BCHRyDBMLIAgoAiwhDgJAAkACQAJAIAgoAiAiC0EESQ0AIAgoAiQhDyAIKAIoIQwDQCAMIA5rIgRBAkkNASAEQYICSyALQQ5PcQ0KIAgoAjAhBCAIAn8gCCgCNCIFQQ5LBEAgBQwBCyAIIAtBAmsiCzYCICAIIAgoAhwiCkECajYCHCAKLwAAIAV0IARyIQQgBUEQcgsCfyAbIARB/wdxQQF0ai4BACIFQQBIBEBBCiEJA0ACQCAEIAl2QQFxIAVBf3NqIgVBwARPBEAgCUEBaiEJQf//ASEFDAELIAlBAWohCSAaIAVBAXRqLgEAIgVBAEgNAQsLIAlB/wFxDAELIAVBCXYLIgprIg02AjQgCCAEIAp2Igo2AjAgCCAFNgI8IAVBgAJxDQMgCCANQQ5LBH8gDQUgCCALQQJrNgIgIAggCCgCHCIEQQJqNgIcIAQvAAAgDXQgCnIhCiANQRByCwJ/IBsgCkH/B3FBAXRqLgEAIgRBAEgEQEEKIQkDQAJAIAogCXZBAXEgBEF/c2oiBEHABE8EQCAJQQFqIQlB//8BIQQMAQsgCUEBaiEJIBogBEEBdGouAQAiBEEASA0BCwsgCUH/AXEMAQsgBEEJdgsiC2s2AjQgCCAKIAt2NgIwIAwgDk0NCyAOIA9qIAU6AAAgDkEBaiEFIARBgAJxDQIgBSAMTw0MIAUgD2ogBDoAACAOQQJqIQ4gCCgCICILQQRPDQALCyAIIA42AiwgCCgCNCINQQ9JDQIgCCgCMCEEIA0hCgwQCyAIIAQ2AjwgCCAFNgIsQRUhCQwoCyAIIA42AixBFSEJDCcLIAtBAU0EQCAIKAIcIQkCQCAbIAgoAjAiBEH/B3FBAXRqLgEAIgVBAEgEQEELIQogDUELSQ0NA0AgBCAKQQFrdkEBcSAFQX9zaiIFQb8ESw0PIBogBUEBdGouAQAiBUEATg0CIA0gCkEBaiIKTw0ACwwNCyAFQYAESSANIAVBCXZJcg0MCyANIQogCSEMDA0LIAggC0ECazYCICAIIAgoAhwiBEECajYCHCANQRByIQogCCgCMCAELwAAIA10ciEEDA0LQRUhCSAIKAI8IgtB/wFLDSUgCCgCKCIFIAgoAiwiBEYEQEENIQlBAiEFDCsLIAQgBU8NByAIKAIkIARqIAs6AAAgCCAEQQFqNgIsQQwhCQwlC0EDIQkgAS0A6lFFDSQgCCAIKAI0IgVBeHEgAyAIKAIgayIEIAVBA3YiCyAEIAtJGyILQQN0ayIMNgI0IAMgBCALayIESQ0HIAgoAjAhCyAIIAMgBGs2AiAgCCACIARqNgIcQRghCSAIQX8gDEEYcXRBf3MgCyAFQQdxdnE2AjAgJ0UNJCAIQQA2AjxBFyEJDCQLIAggCCgCPCIFQf8DcSIENgI8QRQhCSAEQYACRg0jQSEhCSAEQZ0CSw0jIAggBUEBa0EfcSIEQQF0QZy2wABqLwEANgI8IAggBC0A/LVAIgQ6AEBBDkEPIAQbIQkMIwsgBEEHTQ0MIAUhCyAEIQwgCgwNC0EAIQUMJgsgCCAONgIsIAhBGGohKSAIQRxqIRJBACEOIAhBMGoiFS0AECETIBUoAgwhBSAVKAIIIRcgFSgCBCEKIBUoAgAhCUEMIRwCQCAIQSRqIh0oAgQiFCAdKAIIIg9rQYMCSQ0AIBIoAgQiEEEOSQ0AIAFBgC1qIS8gAUGAHWohMCABQYAUaiEqIAFBgARqISsgHSgCACEYIBIoAgAhCyAHQQRxQQBHITEDQCALIQUCQAJAA0AgCkEOSwR/IAoFIBIgEEECayIQNgIEIBIgBUECaiILNgIAIAUvAAAgCnQgCXIhCSALIQUgCkEQcgsCfyArIAlB/wdxQQF0ai4BACIEQQBIBEBBCiEKA0AgCSAKdkEBcSAEQX9zaiIEQcAETwRAQf//ASEEIApBAWpB/wFxDAMLIApBAWohCiAqIARBAXRqLgEAIgRBAEgNAAsgCkH/AXEMAQsgBEEJdgsiDGshCiAJIAx2IQkCQAJAIARBgAJxRQRAIApBDksEfyAKBSASIBBBAmsiEDYCBCASIAVBAmoiCzYCACAFLwAAIAp0IAlyIQkgCyEFIApBEHILAn8gKyAJQf8HcUEBdGouAQAiDkEASARAQQohCgNAIAkgCnZBAXEgDkF/c2oiDUHABE8EQEH//wEhDiAKQQFqQf8BcQwDCyAKQQFqIQogKiANQQF0ai4BACIOQQBIDQALIApB/wFxDAELIA5BCXYLIQ0gDyAUTw0BIA1rIQogCSANdiEJIB0gD0EBaiIMNgIIIA8gGGogBDoAACAOQYACcUUNAiAMIQ8gDiEEC0GAAiEFQQAhDiAEQf8DcSIMQYACRw0EQRQhHAwGCyAPIBRBnLXAABBzAAsgDCAUTw0BIB0gD0ECaiIPNgIIIAwgGGogDjoAAEEAIQ4gFCAPa0GDAkkEQCAEIQUMBQsgEEEOTw0ACyAEIQUMAwsgDCAUQZy1wAAQcwALIAxBnQJLBEBBISEcQf8BIQ4gDCEFDAILIARBAWtBH3EiBC0A/LVAIRMgBEEBdEGctsAAagJ/IApBDksEQCALIQQgCgwBCyASIBBBAmsiEDYCBCASIAtBAmoiBDYCACALLwAAIAp0IAlyIQkgCkEQcgshDS8BACEFAkAgE0UEQCAEIQwMAQsgCSATdiEKIAlBfyATdEF/c3EgBWohBSANIBNrIgtBDksEQCAEIQwgCyENIAohCQwBCyASIBBBAmsiEDYCBCASIARBAmoiDDYCACALQRByIQ0gBC8AACALdCAKciEJCyANAn8gMCAJQf8HcUEBdGouAQAiBEEASARAQQohCgNAIAkgCnZBAXEgBEF/c2oiBEHABE8EQEH//wEhBCAKQQFqQf8BcQwDCyAKQQFqIQogLyAEQQF0ai4BACIEQQBIDQALIApB/wFxDAELIARBCXYLIgtrIQogCSALdiEJIARB/wNxIgtBHUsEQEEiIRxB/wEhDgwCCyAEQf8BcSIEQQF2Ig1BAWsiE0EAIA0gE08bIRMgC0EBdC8BprdAIRcCQCAEQQRJBEAgDCELDAELAkACfyAKQQ9PBEAgDCELIAohDSAJDAELIBBBAU0NASASIBBBAmsiEDYCBCASIAxBAmoiCzYCACAKQRByIQ0gDC8AACAKdCAJcgshBCANIBNrIQogBCATdiEJIARBfyATdEF/c3EgF2ohFwwBC0EAQQIgEEH0t8AAEDkACyAxIA8gF0lxIBQgF0lyRQRAIA8gF2sgEXEhBAJAIAVBA0YEQCAPQQNqIBRLIA9BfEtyDQEgBEECaiARcSINIBRPDQEgBEEBaiARcSIyIBRPIAQgFE9yDQEgDyAYaiIMIAQgGGotAAA6AAAgDCAYIDJqLQAAOgABIAwgDSAYai0AADoAAgwBCyAYIBQgBCAPIAUgERAXCyAdIAUgD2oiDzYCCCAUIA9rQYMCSQ0CIBBBDUsNAQwCCwtB/wEhDkEeIRwLIBUgEzoAECAVIAU2AgwgFSAXNgIIIBUgCjYCBCAVIAk2AgAgKSAcOgABICkgDjoAACAILQAZIQkgCC0AGCIFRQ0gDCQLIA4gDEGctcAAEHMACyAFIAxBnLXAABBzAAsgBCAFQZy1wAAQcwALIAQgAyADQey1wAAQOQALAkAgC0UEQCANIQoMAQsgDUEIaiEKIAlBAWohDCAJLQAAIA10IARyIQRBACELIA1BBksNAiAbIARB/wdxQQF0ai4BACIFQQBIBEAgDUEDSQ0BQQshCQNAIAQgCUEBa3ZBAXEgBUF/c2oiBUG/BEsNAyAaIAVBAXRqLgEAIgVBAE4NBCAKIAlBAWoiCU8NAAsMAQsgBUGABEkNACAKIAVBCXZPDQILIAggCjYCNCAIIAQ2AjAgCEEANgIgQQwMHgsgBUHABEGEwMAAEHMACyAIIAs2AiAgCCAMNgIcCwJAIBsgBEH/B3FBAXRqLgEAIgVBAEgEQEEKIQkDQAJAIAQgCXZBAXEgBUF/c2oiBUHABE8EQCAJQQFqIQlB//8BIQUMAQsgCUEBaiEJIBogBUEBdGouAQAiBUEASA0BCwsgCUH/AXEhCQwBCyAFQQl2IQkgBUH/A3EhBQsgCCAFNgI8IAggCiAJazYCNCAIIAQgCXY2AjBBDSEJDBgLQRQhCSAIKAI8RQ0XQQchCSAIKAIoIAgoAixHDRdBBiEJQQIhBQwcCyAIQQA2AjwgCCAIKAI0IgRBeHE2AjQgCCAIKAIwIARBB3F2NgIwQQUhCQwWCyAJRQ0DIARBCHIhDCAFQQFqIQsgCUEBayEJIAUtAAAgBHQgCnILIQQgCCAMQQhrIgw2AjQgCCAEQQh2Igo2AjAgBEH/AXEgDUEIdHILIgQ2AsxRIAggEEEBaiIFNgI8IAVBBEYEQCALIQUMAQsCQCAMBEACfyAMQQdLBEAgCiEPIAwhDSALDAELIAlFDQQgDEEIciENIAlBAWshCSALLQAAIAx0IApyIQ8gC0EBagshBSAIIA1BCGsiCzYCNCAIIA9BCHYiCjYCMCAPQf8BcSAEQQh0ciEODAELIAlFDQIgC0EBaiEFIAlBAWshCSALLQAAIARBCHRyIQ5BACELCyABIA42AsxRIAggEEECaiIENgI8IARBBEYNACABAn8gCwRAAn8gC0EHSwRAIAUhDCALIQ8gCgwBCyAJRQ0EIAtBCHIhDyAFQQFqIQwgCUEBayEJIAUtAAAgC3QgCnILIQQgCCAPQQhrIgs2AjQgCCAEQQh2Igo2AjAgBEH/AXEgDkEIdHIMAQsgCUUNAiAFQQFqIQwgCUEBayEJQQAhCyAFLQAAIA5BCHRyCyIENgLMUSAIIBBBA2oiBTYCPCAFQQRGBEAgDCEFDAELIAECfyALBEACfyALQQdLBEAgCyEPIAwMAQsgCUUNBCALQQhyIQ8gCUEBayEJIAwtAAAgC3QgCnIhCiAMQQFqCyEFIAggD0EIazYCNCAIIApBCHY2AjAgCkH/AXEgBEEIdHIMAQsgCUUNAiAMQQFqIQUgCUEBayEJIAwtAAAgBEEIdHILNgLMUSAIIBBBBHI2AjwLIAggCTYCICAIIAU2AhxBGCEJDBILIAhBADYCIEEXDBQLQR4hCSAmQQAgCCgCLCIEIAgoAjgiCkkbDRAgCiAIKAIoIgtLDRACQCALIAgoAjwiDCAEaiINTwRAIAgoAiQhBSAEIAprIBFxIgkgBEkgCSAEayAMT3INAQtBE0EMIAwbIQkMEQsgESAEIAprcSEKAkAgDEEDRgRAIARBA2ogC0sgBEF8S3INASAKIAtPIApBAmogEXEiDCALT3INASALIApBAWogEXEiC00NASAEIAVqIgQgBSAKai0AADoAACAEIAUgC2otAAA6AAEgBCAFIAxqLQAAOgACDAELIAUgCyAKIAQgDCAREBcLIAggDTYCLEEMIQkMEAsgCCgCJCEKIAgoAjghDSAIKAI8IQUgCCgCLCEJIAgoAighBAJAA0AgBCAJRg0BIAogBCAJIA1rIBFxIAkgBSAEIAlrIgsgBSALSRsiDCAREBcgCSAMaiEJIAUgC0sgBSAMayEFDQALIAggBTYCPCAIIAk2AixBDCEJDBALIAggBTYCPCAIIAQ2AixBEyEJQQIhBQwUCyAIKAIoIgUgCCgCLCIERgRAQRIhCUECIQUMFAsgBCAFSQRAIAgoAiQgBGogCCgCODoAACAIIARBAWo2AiwgCCgCNCEEIAggCCgCPEEBayIFNgI8QRFBBiAEG0EGIAUbIQkMDwsgBCAFQZy1wAAQcwALIAgoAjAhCQJ/IAgoAjQiBEEHSwRAIAQMAQtBESAIKAIgIgtFDREaIAgoAhwhBSAIIAtBAWs2AiAgCCAFQQFqNgIcIAUtAAAgBHQgCXIhCSAEQQhyCyEEIAggCUH/AXE2AjggCCAEQQhrNgI0IAggCUEIdjYCMEESIQkMDQsgCCgCMCEEAkACQCAIKAI0IgkgCC0AQCIMTwRAIAkhCwwBCyAIKAIgIgVFDQFBASAFayEKIAgoAhwhBQNAAkAgBS0AACAJdCAEciEEIAlBCGoiCSILIAxPDQAgBUEBaiEFIApBAWoiCkEBRw0BDAMLCyAIQQAgCms2AiAgCCAFQQFqNgIcCyAIIAsgDGs2AjQgCCAEIAx2NgIwIAggCCgCOCAEQX8gDHRBf3NxajYCOEEWIQkMDQsgCCAJNgI0IAggBDYCMCAIQQA2AiBBEAwPCwJAAkACQAJAAkAgCCgCNCILQQ9PBEAgCCgCMCEEIAshCgwBCwJAAkAgCCgCICIOQQFNBEAgCCgCHCENAkAgJSAIKAIwIgRB/wdxQQF0ai4BACIFQQBIBEBBCyEKIAtBC0kNAwNAIAQgCkEBa3ZBAXEgBUF/c2oiBUG/BEsNByAkIAVBAXRqLgEAIgVBAE4NAiALIApBAWoiCk8NAAsMAwsgBUGABEkgCyAFQQl2SXINAgsgCyEKIA0hDAwCCyAIIA5BAms2AiAgCCAIKAIcIgRBAmo2AhwgC0EQciEKIAgoAjAgBC8AACALdHIhBAwCCyAORQRAIAshCgwGCyALQQhqIQogDUEBaiEMIA0tAAAgC3QgBHIhBEEAIQ4gC0EGSw0AICUgBEH/B3FBAXRqLgEAIgVBAEgEQCALQQNJDQZBCyEJA0AgBCAJQQFrdkEBcSAFQX9zaiIFQb8ESw0EICQgBUEBdGouAQAiBUEATg0CIAlBAWoiCSAKTQ0ACwwGCyAFQYAESSAKIAVBCXZJcg0FCyAIIA42AiAgCCAMNgIcCyAlIARB/wdxQQF0ai4BACIFQQBODQFBCiEJA0ACQCAEIAl2QQFxIAVBf3NqIgVBwARPBEAgCUEBaiEJQf//ASEFDAELIAlBAWohCSAkIAVBAXRqLgEAIgVBAEgNAQsLIAlB/wFxIQkMAgsgBUHABEGEwMAAEHMACyAFQQl2IQkgBUH/A3EhBQsgCCAKIAlrNgI0IAggBCAJdjYCMEEiIQkgBUEdSw0MIAggBUEBdC8BprdANgI4IAggBUH+AXFBAXYiBEEBayILQQAgBCALTxs6AEBBFkEQIAVBBEkbIQkMDAsgCCAKNgI0IAggBDYCMCAIQQA2AiBBDwwOCyAIKAIwIQQCQAJAIAgoAjQiCSAILQBAIgxPBEAgCSELDAELIAgoAiAiBUUNAUEBIAVrIQogCCgCHCEFA0ACQCAFLQAAIAl0IARyIQQgCUEIaiIJIgsgDE8NACAFQQFqIQUgCkEBaiIKQQFHDQEMAwsLIAhBACAKazYCICAIIAVBAWo2AhwLIAggCyAMazYCNCAIIAQgDHY2AjAgCCAIKAI8IARBfyAMdEF/c3FqNgI8QQ8hCQwLCyAIIAk2AjQgCCAENgIwIAhBADYCIEEODA0LIAgoAjAhBAJAIAgoAjQiCSAILQBAIgxPBEAgCSELDAELAkAgCCgCICIFBEBBASAFayEKIAgoAhwhBQNAIAUtAAAgCXQgBHIhBCAJQQhqIgkiCyAMTw0CIAVBAWohBSAKQQFqIgpBAUcNAAsLIAggCTYCNCAIIAQ2AjAgCEEANgIgQQsMDgsgCEEAIAprNgIgIAggBUEBajYCHAsgCCALIAxrNgI0IAggBCAMdjYCMCAIQQs2AkwgCEKDgICAMDcCRCAIQcQAaiAIKAI4IgVBAnFBAnRqKAIAIARBfyAMdEF/c3FqIQtBACEKIAgoAjwhBCAFQRBGBEAgASAEQQFrQf8DcWotAAAhCgsgBCALaiILQf8DcSIFIARB/wNxIgRJBEAgBCAFQYAEQeS3wAAQOQALIAUgBGsiBQRAIAEgBGogCiAF/AsACyAIIAs2AjxBCiEJDAkLIAgoAhwhCyAIKAIgIQ4DQAJAAkACQAJAAkACQAJAAkACQAJAIAgoAjwiECABLwHkUSIEIAEvAeZRaiIFTwRAQRohCSAFIBBHDRQgBEGhAk8NAiAEBEAgKCABIAT8CgAACyABLwHmUSIMIAEvAeRRIgRqQf8DcSIFIARB/wNxIgRJDQMgBSAEayIKIAxBH3EiBUcNBCAFBEAgGSABIARqIAX8CgAACyABIAEtAOtRQQFrOgDrUSAIQRBqIAEgCEEwahAWIAgtABAiBEEDRw0BQQohCUH/ASEFDBkLIAgoAjQiCkEPTwRAIAgoAjAhBCALIQ8gDiEMIAohDQwICyAOQQFNBEACQCAiIAgoAjAiBEH/B3FBAXRqLgEAIgxBAEgEQEELIQUgCkELSQ0HA0AgBCAFQQFrdkEBcSAMQX9zaiIMQb8ESw0JICEgDEEBdGouAQAiDEEATg0CIAogBUEBaiIFTw0ACwwHCyAMQYAESSAKIAxBCXZJcg0GCyAKIQ0gDiEMIAshDwwHCyAIIA5BAmsiDDYCICAIIAtBAmoiDzYCHCAKQRByIQ0gCCgCMCALLwAAIAp0ciEEDAcLIAgtABEhCQwIC0EAIARBoAJB3LXAABA5AAsgBCAFQYAEQcy1wAAQOQALIwBBIGsiACQAIAAgCjYCCCAAIAU2AgwgACAAQQxqrUKAgICA4AeENwMYIAAgAEEIaq1CgICAgOAHhDcDEEGjlcAAIABBEGpBvLXAABCCAQALAkAgDkUEQCAKIQ0MAQsgCkEIaiENIAtBAWohDyALLQAAIAp0IARyIQRBACEMIApBBksNAiAiIARB/wdxQQF0ai4BACIFQQBIBEAgCkEDSQ0BQQshCQNAIAQgCUEBa3ZBAXEgBUF/c2oiDEG/BEsNAyAhIAxBAXRqLgEAIgVBAE4EQEEAIQwMBQsgDSAJQQFqIglPDQALDAELIAVBgARJDQAgDSAFQQl2Tw0CC0EAIQwgCEEANgIgIAggCyAOaiIPNgIcIAggDTYCNCAIIAQ2AjBBAiEEIB4hCQwDCyAMQcAEQYTAwAAQcwALIAggDDYCICAIIA82AhwLAkAgIiAEQf8HcUEBdGouAQAiBUEASARAQQohCQNAAkAgBCAJdkEBcSAFQX9zaiIFQcAETwRAIAlBAWohCUH//wEhBQwBCyAJQQFqIQkgISAFQQF0ai4BACIFQQBIDQELCyAJQf8BcSEJDAELIAVBCXYhCSAFQf8DcSEFCyAIIA0gCWs2AjQgCCAEIAl2NgIwIAggBTYCOCAFQRBPBEBBASEEIBBFBEBBICEJIAVBEEYNAgsgCEGChhw2AEQgCCAIQcQAaiAFQQNxai0AADoAQEELIQkMAQsgASAQQf8DcWogBToAACAIIBBBAWo2AjxBACEECyAPIQsgDCEOCyAEQf8BcSIERQ0ACyAEQQJrDQggCSEFQQohCQwMCyAIKAIgIQogCCgCHCEOAkACQAJAA0ACfyAIKAI8IgsgAS8B6FFPBEAgAUETOwHoUSAIQQhqIAEgCEEwahAWIAgtAAgiBUEDRg0DIAgtAAkMAQsCfwJAIAgoAjQiBUEDTwRAIAgoAjAhBAwBCyAKRQRAQQAhCkECDAILIApBAWshCiAIKAIwIA4tAAAgBXRyIQQgDkEBaiEOIAVBCHIhBQsgCCAFQQNrNgI0IAggBEEDdjYCMCALQRJLDQQgCy0A7LZAIgVBE08NBSAFIB9qIARBB3E6AAAgCCALQQFqNgI8QQALIQUgHgshCSAFRQ0ACyAFQQJHBEAgCCAKNgIgIAggDjYCHAwLCyAIIAo2AiAgCCAONgIcIAkhBUEJIQkMDgsgCCAKNgIgIAggDjYCHEEJIQlB/wEhBQwOCyALQRNBgLfAABBzAAsgBUETQZC3wAAQcwALIAgoAjwiDEECTQRAIAgoAjAhCSAIKAIcIQsgCCgCICEOIAgoAjQhDSAIQQQ2AkwgCEKFgICA0AA3AkQCfwJAAkACQCAIQcQAaiAMQQJ0aigCACIPIA1LBEAgDkUEQCAMIQoMAwtBACEEIA0hBQJAA0AgBCALaiIQLQAAIAV0IAlyIQkgBUEIaiIKIA9PDQEgCiEFIA4gBEEBaiIERw0ACyAMIQoMAgsgCCAEQX9zIA5qIg42AiAgCCAQQQFqIgs2AhwgBUEIaiENCyAjIAxBAXQiBGogBC8BoLdAIAlBfyAPdEF/c3FqOwEAIA0gD2shDSAJIA92IgkgDEEBaiIKQQNGDQMaIAhBBDYCTCAIQoWAgIDQADcCRAJAIA0gCEHEAGogCkECdGooAgAiD08NACAORQ0CQQAhBCANIQUDQCAEIAtqIhAtAAAgBXQgCXIhCSAPIAVBCGoiBU0EQCAIIARBf3MgDmoiDjYCICAIIBBBAWoiCzYCHCAFIQ0MAgsgDiAEQQFqIgRHDQALDAELICMgCkEBdCIEaiAELwGgt0AgCUF/IA90QX9zcWo7AQAgDSAPayENIAkgD3YiCSAMQQJqIgpBA0YNAxogCEEENgJMIA0gCEHEAGogCkECdGooAgAiDE8NAiAORQ0BQQAhBCANIQUDQCAEIAtqIg8tAAAgBXQgCXIhCSAMIAVBCGoiBU0EQCAIIARBf3MgDmo2AiAgCCAPQQFqNgIcIAUhDQwECyAOIARBAWoiBEcNAAsLIA5BA3QgDWohDQsgCEEANgIgIAggCjYCPCAIIA02AjQgCCAJNgIwQQgMDAsgIyAKQQF0IgRqIAQvAaC3QCAJQX8gDHRBf3NxajsBACANIAxrIQ0gCSAMdgshBCAIIA02AjQgCCAENgIwCyAfQgA3AAAgH0EPakEANgAAIB9BCGpCADcAACAIQQA2AjxBG0EJQRsgAS8B5lFBH0kbIAEvAeRRQZ8CTxshCQwGC0EHIAgoAiAiBUUNCBogCCgCPCIKIAUgCCgCKCINIAgoAiwiC2siBCAEIAVLGyIEIAQgCksbIgQgC2oiDCAESSAMIA1LckUEQCAIKAIcIQ0gBARAIAgoAiQgC2ogDSAE/AoAAAsgCCAFIARrNgIgIAggBCANajYCHCAIIAw2AiwgCCAKIARrNgI8QQYhCQwGCyALIAwgDUGstcAAEDkACyAIKAIgIQQgCCgCHCEKAkACQCAIKAI0IgVBA08EQCAIKAIwIQkMAQsgBEUEQEEAIQQgHiEFDAILIARBAWshBCAIKAIwIAotAAAgBXRyIQkgCkEBaiEKIAVBCHIhBQsgASAJQQFxOgDqUSABIAlBAXZBA3EiCzoA61EgCCAFQQNrNgI0IAggCUEDdjYCMEEEIQkCQAJAAkACQAJAIAtBAWsOAwABAgMLIAFBoIKAATYC5FEgKEEIQZAB/AsAIC5BCUHwAPwLACAgQRBqQoeOnLjw4MGDBzcCACAgQQhqQoeOnLjw4MGDBzcCACAgQoeOnLjw4MGDBzcCACABQoiQoMCAgYKECDcCmFEgGUKFipSo0KDBggU3AgAgGUEIakKFipSo0KDBggU3AgAgGUEQakKFipSo0KDBggU3AgAgGUEYakKFipSo0KDBggU3AgAgCCABIAhBMGoQFiAILQABIQkgCC0AACILQQFGDQJB/wEhBSALQQNrDQMMBAsgCEEANgI8QQghCQwBC0EZIQkLIAggBDYCICAIIAo2AhwMBgsgCSEFCyAIIAQ2AiBBAyEJDAgLQQIgCCgCICIFRQ0GGiABIAgoAhwiCy0AACIENgLIUSAIIAVBAWs2AiAgCCALQQFqNgIcQR1BHUEDIAEoAsRRIgVBD3FBCEcgBCAFQQh0ckEfcCAEQSBxckEAR3IiBCAEICwgBUEEdkEIakEfcSIEdkVyICYbGyAEQQ9LGyEJDAMLQQEgCCgCICIERQ0FGiABIAgoAhwiBS0AADYCxFEgCCAEQQFrNgIgIAggBUEBajYCHEECIQkMAgsgAUKBgICAEDcCzFEgAUIANwLEUSAIQUBrQQA6AAAgCEE4akIANwMAIAhCADcDMCAtIQkMAQsgCCgCNCEFAkAgCCgCPCINQQNLDQAgCCgCMCEJIAgoAhwhBCAIKAIgIQoCQAJAIAVFBEAgCg0BDAYLAn8gBUEHSwRAIAQhCyAFDAELIApFDQYgCCAKQQFrIgo2AiAgCCAEQQFqIgs2AhwgBC0AACAFdCAJciEJIAVBCHILIQQgDSAWaiAJOgAAIAggBEEIayIFNgI0IAggCUEIdiIJNgIwDAELIA0gFmogBC0AADoAACAIIApBAWsiCjYCICAIIARBAWoiCzYCHEEAIQULIAggDUEBaiIENgI8IARBBEYNAAJAIAUEQAJ/IAVBB0sEQCALIQwgBQwBCyAKRQ0GIAggCkEBayIKNgIgIAggC0EBaiIMNgIcIAstAAAgBXQgCXIhCSAFQQhyCyEFIAQgFmogCToAACAIIAVBCGsiBTYCNCAIIAlBCHYiCTYCMAwBCyAKRQ0EIAQgFmogCy0AADoAACAIIApBAWsiCjYCICAIIAtBAWoiDDYCHEEAIQULIAggDUECaiIENgI8IARBBEYNAAJAIAUEQAJ/IAVBB0sEQCAMIQsgBQwBCyAKRQ0GIAggCkEBayIKNgIgIAggDEEBaiILNgIcIAwtAAAgBXQgCXIhCSAFQQhyCyEFIAQgFmogCToAACAIIAVBCGsiBTYCNCAIIAlBCHYiCTYCMAwBCyAKRQ0EIAQgFmogDC0AADoAACAIIApBAWsiCjYCICAIIAxBAWoiCzYCHEEAIQULIAggDUEDaiIENgI8IARBBEYNAAJAIAUEQCAFQQdNBEAgCkUNBiAIIApBAWs2AiAgCCALQQFqNgIcIAstAAAgBXQgCXIhCSAFQQhyIQULIAQgFmogCToAACAIIAVBCGsiBTYCNCAIIAlBCHY2AjAMAQsgCkUNBCAEIBZqIAstAAA6AAAgCCAKQQFrNgIgIAggC0EBajYCHEEAIQULIAggDUEEcjYCPAsgCCABLwHgUSIENgI8QR8hCSABLwHiUSAEc0H//wNHDQBBFCEJIARFDQBBEUEGIAUbIQkMAAsACyAAQQA2AgggAEEANgIAIABB/QE6AAQMBgtBBQshCSAeIQULQQEhCkEAIQQgBUH/AXEiAkEBRg0BIAJB/AFGDQILIAggCCgCNCICIAMgCCgCIGsiBCACQQN2IgIgAiAESxsiBEEDdGs2AjQgBUH/AXFBAEchCgwBC0EBQQFBAiAJQf8BcUEXRhsgCCgCKCAIKAIsRxshBQsgASAJOgCAUiABIAgoAjQiAjYCwFEgASAIKQM4NwLUUSABIAgtAEA6AOxRIAEgCCgCMEF/IAJ0QX9zcTYC3FECQCAHQcAAcQRAIAgoAiwhCQwBCyAIKAIsIQkgB0EJcUUgBcBBAEhyDQAgCCgCKCICIAlJIAYgCUtyRQRAIAEoAtBRIQIgCCgCJCELIAhBxgA2AkQgCCACNgJIIwBBEGsiAiQAIAJBCGogCEHEAGoiBy8BBCAHLwEGIAYgC2ogCSAGayAHKAIAEQUAIAcgAigCCDYCBCACQRBqJAAgASAIKAJIIgI2AtBRIAVBfiAFIAIgASgCzFFHGyAKGyAFICcbIQUMAQsgBiAJIAJB3LbAABA5AAsgACAFOgAEIAAgCSAGazYCCCAAIAMgBCAIKAIgams2AgALIAhB0ABqJAALuDEDFn8SfAR+IwBBIGsiFSQAA0ACQCALQf8BcSAFRAAAAAAAAAAAYXINACAAKAIEIgwgAWohBwJAAkACQAJAA0AgBygCFEUEQCAFIAcrAwAgA6GiIhxEAAAAAAAA8L9kRSAcRAAAAAAAAPBBY0VyDQMgHKshBiAFIAcrAwggBKGiIhxEAAAAAAAA8L9kRSAcRAAAAAAAAPBBY0VyDQIgByAcq60gBq1CIIaEIi5CCIYgLoRC/4H8h/CfwP8AgyIuQgSGIC6EQo+evPjw4cOHD4MiLkIChiAuhEKz5syZs+bMmTODIi5CAYYgLoRC1arVqtWq1arVAIMiLkIgiCAuQgGGhD4CFAsgByAHKAIgNgIYIAcgBygCJCIGNgIcIAYgDGohByABIAZHDQALIAcoAhghBiAHQQA2AhggBkUNAiAGIAxqQQA2AhwgDEEcaiERQQEhEiABIRADQCAQRQ0EQQAhFCASQQJJIRYgECEGQQAhEEEAIQcDQCAHIQggECENIBEgBiIPaigCACEKAkAgFgRAQQEhCQwBCyAKRQRAQQEhCQwBC0EBIQkDQCAKIBFqKAIAIQogCUEBaiIJIBJPDQEgCg0ACwsgFEEBaiEUIBIhDgNAIA0hECAKIQYDQCAIIQcCQAJAAkACfwJAAkAgCUUEQCAORSAGRXINASAGIAxqIgggBzYCGCAOQQFrIQ5BACEJIAgoAhwMAwsgDw0BCyAGDQcgB0UNDCAHIBFqQQA2AgAgEkEBdCESIBRBAkgNDQwICyAORQRAIAwgD2oiEyAHNgIYIAlBAWshCUEAIQ4gDyIIIQ0gBiEKIBMoAhwhDwwECyAGRQ0CIAwgD2oiEygCFCAGIAxqIggoAhRMDQEgCCAHNgIYIA5BAWshDiAIKAIcCyEKIAYhCCAGIQ0gCiEGDAILIBMgBzYCGCAJQQFrIQkgDyIIIQ0gBiEKIBMoAhwhDwwBCyAMIA9qIgYgBzYCGCAJQQFrIQlBACEKIA8iCCENIAYoAhwhD0EAIQYLIAdFDQEgByARaiAINgIADAALAAsACwALAAtBwJ3AABDMAQALQbCdwAAQzAEAC0HgnMAAEMwBAAtBgJ3AABDMAQALIAAoAgQiDEEQaiENA0AgASEIAkACQAJAAkACQCAFRAAAAAAAAAAAYgRAA0AgCCAMaiIOKAIgIgogDigCJCIIRg0DAkAgDisDCCIfIAogDGoiBkEIaisDACIgoSAIIAxqIgcrAwAiIiAOKwMAIiGhoiAhIAYrAwAiHqEgB0EIaisDACIjIB+hoqFEAAAAAAAAAABmDQAgHiAhICIQogEQogEhJCAgIB8gIxCjARCjASElIB4gISAiEKMBEKMBISggICAfICMQogEQogEhJwJAAkACQCAFICQgA6GiIhxEAAAAAAAA8L9kRSAcRAAAAAAAAPBBY0VyRQRAIByrIQkgBSAnIAShoiIcRAAAAAAAAPC/ZEUgHEQAAAAAAADwQWNFcg0BIByrIAUgKCADoaIiHEQAAAAAAADwv2RFIBxEAAAAAAAA8EFjRXINAiAcqyEHIAUgJSAEoaIiHEQAAAAAAADwv2RFIBxEAAAAAAAA8EFjRXINAyAcqyEQAkAgDigCHCIGRQ0AIBCtIAetQiCGhCIuQgiGIC6EQv+B/Ifwn8D/AIMiLkIEhiAuhEKPnrz48OHDhw+DIi5CAoYgLoRCs+bMmbPmzJkzgyIuQgGGIC6EQtWq1arVqtWq1QCDIi5CIIggLkIBhoSnIRADQCAGIAxqIgcoAhQgEEoNAQJAIAYgCEYgBiAKRnINACAHKwMIIhwgJWVFDQAgHCAnZkUgBysDACIdICRmRSAdIChlRXJyIB0gHmEgHCAgYXFyDQAgIiAdoSIpICAgHKEiKqIgHiAdoSImICMgHKEiK6JmRQ0AICYgHyAcoSImoiAhIB2hIiwgKqJmRSAsICuiICkgJqJmRXINACAcIAwgBygCIGoiBkEIaisDAKEgDCAHKAIkaiISKwMAIB2hoiAdIAYrAwChIBJBCGorAwAgHKGioUQAAAAAAAAAAGYNBwsgBygCHCIGDQALCyAOKAIYIgZFDQutIAmtQiCGhCIuQgiGIC6EQv+B/Ifwn8D/AIMiLkIEhiAuhEKPnrz48OHDhw+DIi5CAoYgLoRCs+bMmbPmzJkzgyIuQgGGIC6EQtWq1arVqtWq1QCDIi5CIIggLkIBhoSnIQkDQCAGIAxqIgcoAhQgCUgNDAJAIAYgCEYgBiAKRnINACAHKwMIIhwgJWVFDQAgHCAnZkUgBysDACIdICRmRSAdIChlRXJyIB0gHmEgHCAgYXFyDQAgIiAdoSIpICAgHKEiKqIgHiAdoSImICMgHKEiK6JmRQ0AICYgHyAcoSImoiAhIB2hIiwgKqJmRSAsICuiICkgJqJmRXINACAcIAwgBygCIGoiBkEIaisDAKEgDCAHKAIkaiIPKwMAIB2hoiAdIAYrAwChIA9BCGorAwAgHKGioUQAAAAAAAAAAGYNBgsgBygCGCIGDQALDAsLQbCdwAAQzAEAC0HAncAAEMwBAAtBsJ3AABDMAQALQcCdwAAQzAEACyABIAhHDQAMAgsACwNAIAggDGoiDigCICIKIA4oAiQiCEYNAgJAIA4rAwgiICAKIAxqIgdBCGorAwAiHqEgCCAMaiIGKwMAIiIgDisDACIfoaIgHyAHKwMAIiGhIAZBCGorAwAiIyAgoaKhRAAAAAAAAAAAZg0AIAYoAiQhBiAeICAgIxCjARCjASEkICEgHyAiEKMBEKMBISUgHiAgICMQogEQogEhKCAhIB8gIhCiARCiASEnIAYgCkYNBiAMIAYgDGoiCSgCIGohBgNAIAYhByAMIAkiBigCJCIPaiEJAkAgBisDACIcICdmRSAcICVlRXINACAGKwMIIh0gKGZFIB0gJGVFciAcICFhIB0gHmFxcg0AICIgHKEiKSAeIB2hIiqiICEgHKEiJiAjIB2hIiuiZkUNACAmICAgHaEiJqIgHyAcoSIsICqiZkUgLCAroiApICaiZkVyDQAgHSAHQQhqKwMAoSAJKwMAIByhoiAcIAcrAwChIAlBCGorAwAgHaGioUQAAAAAAAAAAGYNAgsgCiAPRw0ACwwGCyABIAhHDQALCwJAAkAgC0H/AXFBAWsOAgQBAAsgDEEcaiENIAEgDGohBiABIQoDQCAKIQgCQANAIAwgBigCJCIBaiEHIAYoAhBBAE4EQCAGKAIgIQogBisDACAHKwMAYgR/QQAFIAYrAwggBysDCGELDQIgBkEIaisDACIcIAogDGoiCUEIaisDAKEgBysDACAGKwMAIh2hoiAdIAkrAwChIAdBCGorAwAgHKGioUQAAAAAAAAAAGENAgsgByEGIAEgCEcNAAtBASELIAghAQwICyAGKAIcIQggBigCGCEJIAogDGoiBiABNgIkAkAgCUUNACAJIApHBEAgCSANaiAINgIADAELIAYgCDYCHAsgByAKNgIgIAgEQCAHIAggDGogASAIRhsgCTYCGAtBASELIAEgCkcNAAsMBgsgDEEkaiEYIAEgDGohCyABIQgDQCAMIAsoAiQiD2ohByAPIBhqKAIAIg0gCygCICIZRwRAIAwgGWohFiALKAIQIhBB/////wdxIRoDQAJAIAwgDSIOaiIRKAIQIgYgEHNB/////wdxRQRAIA0gGGooAgAhDQwBCyARKAIkIQ0gBkH/////B3EiFyAHKAIQQf////8HcUYNACAWKAIQQf////8HcSAXRg0AIAwgESgCIGohFCAMIA1qIRMgESsDCCEeIBErAwAhHyALKwMIIR0gCysDACEhIBAhCSALIQYDQCAJIRICQCAMIAYiCigCJGoiBigCECIJQf////8HcSIbIBdGDQAgEkH/////B3EiEiAaRiASIBdGciAaIBtGcg0AIAorAwAgCkEIaisDACAGKwMAIAZBCGorAwAgISAdIB8gHhAoDQILIAYgC0cNAAsgHyAhoSEiIB4gHaEhIwJAAkAgHSAWQQhqKwMAIhyhIiggBysDACIkICGhIieiIikgISAWKwMAIiChIiogB0EIaisDACIlIB2hIiaiIitjRQRAICMgICAfoaIgIiAcIB6homMNASAfICShICaiICcgHiAloaJjRQ0CDAELICMgJCAfoaIgIiAlIB6hoqFEAAAAAAAAAABmRSAfICChIBwgHaGiICAg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AAseACAARQRAENABAAsgACACIAMgBCAFIAEoAhARDQALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEKAAscACAARQRAENABAAsgACACIAMgBCABKAIQEQEACxwAIABFBEAQ0AEACyAAIAIgAyAEIAEoAhARLQALHAAgAEUEQBDQAQALIAAgAiADIAQgASgCEBEuAAscACAARQRAENABAAsgACACIAMgBCABKAIQES8ACygBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAFBARDEAQsLCgBBCCAAENIBAAsaACAARQRAENABAAsgACACIAMgASgCEBECAAsaACAARQRAENABAAsgACACIAMgASgCEBEEAAsYACAARQRAENABAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEH4scAANgIACxIAQfjQwABBOUGU0cAAEIIBAAslAQFvEAYhAxA2IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxAELCxQAIAAgACABIAAgAV0bIAEgAVwbCxQAIAAgACABIAAgAWMbIAEgAWIbCxQAIAEgASAAIAAgAWMbIAAgAGIbCxQAIAEgASAAIAAgAV0bIAAgAFwbCx0AIAEgAC0AAEECdCIAKALMrEAgACgCtKxAELIBCx0AIAEgAC0AAEECdCIAKAKArkAgACgC6K1AELIBCx8AIABBCGpBxLTAACkCADcCACAAQby0wAApAgA3AgALHwAgAEEIakGcxsAAKQIANwIAIABBlMbAACkCADcCAAsfACAAQQhqQazGwAApAgA3AgAgAEGkxsAAKQIANwIACx8AIAAEQCAAIAEQ0gEAC0G80sAAQSNB0NLAABCCAQALEgAgACABQQF0QQFyIAIQggEACxYBAW8gACABEA4hAhA2IgAgAiYBIAALFAAgACACuxC0ATYCBCAAQQA2AgALFAAgACABtxC0ATYCBCAAQQA2AgALFQAgACABIAIQrAE2AgQgAEEANgIAC9MLAQ5/IAAhDyMAQRBrIggkACABKAIQIQcgBkH/AXFBAnQoAoi1QCEKIwBBEGsiBiQAAkACQAJAAkACQAJA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aW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAQcmFuZ2UgZW5kIGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAIWNhbm5vdCBhZHZhbmNlIHBhc3QgYHJlbWFpbmluZ2A6IMAEIDw9IMAAE2ludmFsaWQga2V5IHZhbHVlOiDAABlpbnZhbGlkIHdpcmUgdHlwZSB2YWx1ZTogwAASU2VyaWFsaXplIGZhaWxlZDogwAAQSW5mbGF0ZSBmYWlsZWQ6IMAAGFByb3RvYnVmIGRlY29kZSBmYWlsZWQ6IMAAwAI6IMAAc3JjXHZlcnRleC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXNfbXV0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zaGFyZWQvc21hbGxzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvc2xpY2Uvc29ydC9zdGFibGUvcXVpY2tzb3J0LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL2l0ZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxvdXRwdXRfYnVmZmVyLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcZmxhdGUyLTEuMS45XHNyY1xidWZyZWFkZXIucnMAc3JjXGNsaXAucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcc3RyZWFtLnJzAHNyY1xwcm90b2J1Zi5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGVhcmN1dC0wLjQuOVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41XHNyY1xsaWIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGxpYi5ycwDALCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBhIEphdmFTY3JpcHQgbnVtYmVyACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAHJlY3RlbGxpcHNlegYQAA8AAAAiAAAAEwAAAERlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hTVkdBUGF5bG9hZFByb2ZpbGVpbnB1dEJ5dGVzb3V0cHV0Qnl0ZXNwcm9zdERlY29kZU1zbWV0YWRhdGFBbmRJbWFnZXNNc2ZyYW1lVGFibGVNc2ZpbmFsaXplTXNwYXlsb2FkQnVpbGRNc3J1c3RUb3RhbE1zaW1hZ2VCeXRlc2ltYWdlQ291bnRzcHJpdGVDb3VudGZyYW1lQ291bnRjZWxsQ291bnRjbGlwUGF0aENvdW50c2hhcGVDb3VudHNoYXBlR3JvdXBDb3VudHNoYXBlQnl0ZXN3cml0ZXJJbml0aWFsQ2FwYWNpdHl3cml0ZXJGaW5hbENhcGFjaXR5RGVjb2RlZFJlY3R4eXdpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RlY29kZWRBdWRpb2F1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVEZWNvZGVkQ29sb3JyZ0RlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkU2hhcGVraW5kcGF0aF9kYXRhc3R5bGVEZWNvZGVkTGF5b3V0RGVjb2RlZFBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzRGVjb2RlZFNwcml0ZWltYWdlX2tleURlY29kZWRFbGxpcHNlcmFkaXVzX3hyYWRpdXNfeQAAAP//////////GA4QAEGwnMAAC/MDegYQAA8AAABKAwAAIwAAAHoGEAAPAAAAaQMAACkAAAB6BhAADwAAAFIDAAApAAAASwkQAF4AAACFAgAAKAAAAEsJEABeAAAAbgQAABwAAABLCRAAXgAAAN0CAAAhAAAASwkQAF4AAADpAAAAJgAAAEsJEABeAAAABgEAAB0AAABLCRAAXgAAAHoEAAAzAAAASwkQAF4AAAB7BAAAMwAAAGludmFsaWQgdGFnIHZhbHVlOiAwaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVu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ciB1bmRlcmZsb3dpbnZhbGlkIHZhcmludHJlY3Vyc2lvbiBsaW1pdCByZWFjaGVkVmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0TgUQAGQAAABiAAAAFQAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAAJkWEACfFhAAqxYQALoWEADEFhAAzBYQAGFzc2VydGlvbiBmYWlsZWQ6IG4gPD0gc2VsZi5idWYuaW5pdCAtIHNlbGYuYnVmLmZpbGxlZAAAigYQAFMAAAAVAQAACQAAAIUIEABJAAAAsgEAADEAAABSZ2JhQ29sb3JyZ2JhU2hhcGVBcmdzZFNoYXBlU3R5bGVmaWxsc3Ryb2tlc3Ryb2tlX3dpZHRobGluZV9jYXBsaW5lX2pvaW5taXRlcl9saW1pdGxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9kYXNoX2lpaUVsbGlwc2VBcmdzeHlyYWRpdXNfeHJhZGl1c195UmVjdEFyZ3N3aWR0aGhlaWdodGNvcm5lcl9yYWRpdXOqCRAAagAAADUAAAAOAAAAAAAAAP//////////OBgQAEHQsMAAC80BQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQAACoEEABeAAAAawAAAA0AAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGZhaWxlZCB0byBkZWNvZGUgUHJvdG9idWYgbWVzc2FnZTogAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgBBqLLAAAvdAgEAAAAvAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQDJAxAAYAAAADoFAAAyAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAAzAAAAOAAAAMkDEABgAAAASAUAAEkAAABMYXlvdXRFcnJvcm92ZXJmbG93AFsCEABkAAAAvQIAAB0AAABbAhAAZAAAAKkCAAAVAAAAOQAAADoAAAA7AAAAPAAAAD0AAAAVChAAXgAA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bAAAAEQEAAAjAAAASwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpAEsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKClLBxAAbAAAAEcEAAANAAAASwcQAGwAAABIBAAAIgAAAEsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQBLBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpSwcQAGwAAABNBAAADQAAAEsHEABsAAAATgQAACIAAABLBxAAbAAAAE4EAAANAAAASwcQAGwAAABPBAAAJgAAAEsHEABsAAAATwQAAA0AAABLBxAAbAAAACwEAAAXAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAACwYQAG4AAABCAQAAHAAAAAsGEABuAAAAdgEAADAAAADeBhAAbAAAAHwAAAARAAAA3gYQAGwAAACJAAAAEQAAAG1dy9YsUOtjeEGmV3Ebi7mauO6RURSWWM+WAOjSnxKKZW50aXR5IG5vdCBmb3VuZHBlcm1pc3Npb24gZGVuaWVkY29ubmVjdGlvbiByZWZ1c2VkY29ubmVjdGlvbiByZXNldGhvc3QgdW5yZWFjaGFibGVuZXR3b3JrIHVucmVhY2hhYmxlY29ubmVjdGlvbiBhYm9ydGVkbm90IGNvbm5lY3RlZGFkZHJlc3MgaW4gdXNlYWRkcmVzcyBub3QgYXZhaWxhYmxlbmV0d29yayBkb3duYnJva2VuIHBpcGVlbnRpdHkgYWxyZWFkeSBleGlzdHNvcGVyYXRpb24gd291bGQgYmxvY2tub3QgYSBkaXJlY3RvcnlpcyBhIGRpcmVjdG9yeWRpcmVjdG9yeSBub3QgZW1wdHlyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWZpbGVzeXN0ZW0gbG9vcCBv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";let JA=null,IB=null;function jC(){return typeof performance!="undefined"?performance.now():Date.now()}function Fe(){var C;const A=globalThis.process;return(C=A==null?void 0:A.versions)!=null&&C.node&&TB.startsWith("/")?new URL(Object.assign({})[`../..${TB}`],typeof document=="undefined"?require("url").pathToFileURL(__filename).href:sI&&sI.tagName.toUpperCase()==="SCRIPT"&&sI.src||new URL("gift-stage.cjs",document.baseURI).href):TB}function hI(){return JA!==null}async function IE(){return JA?!0:IB||(IB=(async()=>{try{return await gE({module_or_path:Fe()}),jQ(),JA=we,!0}catch(C){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",C),!1}})(),IB)}function ye(C){if(!JA)return null;try{return JA.inflate(C)}catch(A){return null}}function Ge(C){if(!JA)return null;try{return ue(JA.decode_svga(C))}catch(A){return null}}function de(C){if(!JA)return null;try{return JA.decode_svga_payload(C)}catch(A){return null}}function Re(C){if(!JA)return null;try{const A=jC(),g=typeof JA.decode_svga_payload_profiled=="function"?JA.decode_svga_payload_profiled(C):JA.decode_svga_payload(C),I=jC()-A,B=typeof JA.take_svga_payload_profile=="function"?JA.take_svga_payload_profile():null,Q=B&&typeof B=="object"?B:null;return{payload:g,profile:Q?{...Q,jsCallTotalMs:I,wasmBoundaryAndGlueMs:Math.max(0,I-Q.rustTotalMs)}:void 0}}catch(A){return null}}function WB(C,A,g){if(!JA)return null;try{return JA.build_batch_vertices(C,A,g)}catch(I){return null}}function ue(C){var A,g,I,B,Q,E,i;const e=C.params,t=e?{viewBoxWidth:(A=e.view_box_width)!=null?A:0,viewBoxHeight:(g=e.view_box_height)!=null?g:0,fps:(I=e.fps)!=null?I:20,frames:(B=e.frames)!=null?B:0}:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},a=new Map,o=C.images;if(o instanceof Map)for(const[r,h]of o)a.set(r,h instanceof Uint8Array?h:new Uint8Array(h));else if(o&&typeof o=="object")for(const[r,h]of Object.entries(o))a.set(r,h instanceof Uint8Array?h:new Uint8Array(h));const s=((Q=C.sprites)!=null?Q:[]).map(Se),n=((E=C.audios)!=null?E:[]).map(r=>{var h,c,D,w,l;return{audioKey:(h=r.audio_key)!=null?h:"",startFrame:(c=r.start_frame)!=null?c:0,endFrame:(D=r.end_frame)!=null?D:0,startTime:(w=r.start_time)!=null?w:0,totalTime:(l=r.total_time)!=null?l:0}});return{version:(i=C.version)!=null?i:"",params:t,images:a,spriteTable:PQ(s,t.frames),audios:n}}function Se(C){var A,g;let I=null;const B=((A=C.frames)!=null?A:[]).map(Q=>{var E,i,e,t,a,o,s,n,r,h,c;const D=Array.isArray(Q.shapes)?Q.shapes:[];let w;return D.length===0?(I=null,w=null):((E=D[0])==null?void 0:E.kind)==="keep"?w=I:(w=Ne(D),I=w),{alpha:(i=Q.alpha)!=null?i:0,layout:Q.layout?{width:(e=Q.layout.width)!=null?e:0,height:(t=Q.layout.height)!=null?t:0}:null,transform:Q.transform?{a:(a=Q.transform.a)!=null?a:1,b:(o=Q.transform.b)!=null?o:0,c:(s=Q.transform.c)!=null?s:0,d:(n=Q.transform.d)!=null?n:1,tx:(r=Q.transform.tx)!=null?r:0,ty:(h=Q.transform.ty)!=null?h:0}:null,clipPath:(c=Q.clip_path)!=null?c:"",shapes:w}});return{imageKey:(g=C.image_key)!=null?g:"",frames:B}}function zC(C){var A,g,I,B;return C?{r:(A=C.r)!=null?A:0,g:(g=C.g)!=null?g:0,b:(I=C.b)!=null?I:0,a:(B=C.a)!=null?B:0}:null}function fe(C){var A,g,I,B,Q,E;const i=(A=C==null?void 0:C.line_dash)!=null?A:C==null?void 0:C.lineDash;return{fill:zC(C==null?void 0:C.fill),stroke:zC(C==null?void 0:C.stroke),strokeWidth:(I=(g=C==null?void 0:C.stroke_width)!=null?g:C==null?void 0:C.strokeWidth)!=null?I:0,lineCap:(B=C==null?void 0:C.line_cap)!=null?B:C==null?void 0:C.lineCap,lineJoin:(Q=C==null?void 0:C.line_join)!=null?Q:C==null?void 0:C.lineJoin,miterLimit:(E=C==null?void 0:C.miter_limit)!=null?E:C==null?void 0:C.miterLimit,lineDash:Array.isArray(i)&&i.length>0?i:void 0}}function Me(C){var A,g,I,B,Q,E;return{a:(A=C==null?void 0:C.a)!=null?A:1,b:(g=C==null?void 0:C.b)!=null?g:0,c:(I=C==null?void 0:C.c)!=null?I:0,d:(B=C==null?void 0:C.d)!=null?B:1,tx:(Q=C==null?void 0:C.tx)!=null?Q:0,ty:(E=C==null?void 0:C.ty)!=null?E:0}}function Ne(C){var A,g,I,B,Q,E,i,e,t,a,o,s,n;if(!Array.isArray(C)||C.length===0)return null;const r=[];for(const h of C){const c=h==null?void 0:h.kind;if(c!=="path"&&c!=="rect"&&c!=="ellipse")continue;const D={kind:c,pathData:(A=h.path_data)!=null?A:h.pathData,rect:h.rect?{x:(g=h.rect.x)!=null?g:0,y:(I=h.rect.y)!=null?I:0,width:(B=h.rect.width)!=null?B:0,height:(Q=h.rect.height)!=null?Q:0,cornerRadius:(i=(E=h.rect.corner_radius)!=null?E:h.rect.cornerRadius)!=null?i:0}:void 0,ellipse:h.ellipse?{x:(e=h.ellipse.x)!=null?e:0,y:(t=h.ellipse.y)!=null?t:0,radiusX:(o=(a=h.ellipse.radius_x)!=null?a:h.ellipse.radiusX)!=null?o:0,radiusY:(n=(s=h.ellipse.radius_y)!=null?s:h.ellipse.radiusY)!=null?n:0}:void 0,style:fe(h.style),transform:Me(h.transform)};r.push(D)}return r.length>0?r:null}var Ue=Object.defineProperty,ke=(C,A,g)=>A in C?Ue(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,VB=(C,A,g)=>ke(C,typeof A!="symbol"?A+"":A,g);class BE{constructor(){VB(this,"floatPoolA",null),VB(this,"floatPoolB",null),VB(this,"uint32Pool",null)}getFloat32(A){var g,I;if(!this.floatPoolA||this.floatPoolA.length<A){const B=Math.max(A,((I=(g=this.floatPoolA)==null?void 0:g.length)!=null?I:0)*2,1024);this.floatPoolA=new Float32Array(B)}return this.floatPoolA}getFloat32B(A){var g,I;if(!this.floatPoolB||this.floatPoolB.length<A){const B=Math.max(A,((I=(g=this.floatPoolB)==null?void 0:g.length)!=null?I:0)*2,1024);this.floatPoolB=new Float32Array(B)}return this.floatPoolB}getUint32(A){var g,I;if(!this.uint32Pool||this.uint32Pool.length<A){const B=Math.max(A,((I=(g=this.uint32Pool)==null?void 0:g.length)!=null?I:0)*2,1024);this.uint32Pool=new Uint32Array(B)}return this.uint32Pool}destroy(){this.floatPoolA=null,this.floatPoolB=null,this.uint32Pool=null}}function pg(C,A,g,I,B,Q){const E=1/(C-A),i=1/(g-I),e=1/(B-Q),t=new Float32Array(16);return t[0]=-2*E,t[5]=-2*i,t[10]=2*e,t[12]=(C+A)*E,t[13]=(I+g)*i,t[14]=(B+Q)*e,t[15]=1,t}function cg(C,A,g){return C+(A-C)*g}function DB(C,A,g){return C<A?A:C>g?g:C}let Ye=0;function SC(){return`gift_${++Ye}_${Date.now().toString(36)}`}const dB=8;function LB(C){if(!C||C.trim().length===0)return[];const A=[];let g=[],I=0,B=0,Q=0,E=0,i=0,e=0;const t=pe(C);let a=0;function o(){return a<t.length?parseFloat(t[a++]):0}for(;a<t.length;)switch(t[a++]){case"M":for(g.length>0&&(A.push(g),g=[]),I=o(),B=o(),Q=I,E=B,g.push({x:I,y:B});a<t.length&&!isNaN(parseFloat(t[a]));)I=o(),B=o(),g.push({x:I,y:B});break;case"m":for(g.length>0&&(A.push(g),g=[]),I+=o(),B+=o(),Q=I,E=B,g.push({x:I,y:B});a<t.length&&!isNaN(parseFloat(t[a]));)I+=o(),B+=o(),g.push({x:I,y:B});break;case"L":for(;a<t.length&&!isNaN(parseFloat(t[a]));)I=o(),B=o(),g.push({x:I,y:B});break;case"l":for(;a<t.length&&!isNaN(parseFloat(t[a]));)I+=o(),B+=o(),g.push({x:I,y:B});break;case"H":for(;a<t.length&&!isNaN(parseFloat(t[a]));)I=o(),g.push({x:I,y:B});break;case"h":for(;a<t.length&&!isNaN(parseFloat(t[a]));)I+=o(),g.push({x:I,y:B});break;case"V":for(;a<t.length&&!isNaN(parseFloat(t[a]));)B=o(),g.push({x:I,y:B});break;case"v":for(;a<t.length&&!isNaN(parseFloat(t[a]));)B+=o(),g.push({x:I,y:B});break;case"C":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=o(),r=o(),h=o(),c=o(),D=o(),w=o();BB(g,I,B,n,r,h,c,D,w),i=h,e=c,I=D,B=w}break}case"c":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=I+o(),r=B+o(),h=I+o(),c=B+o(),D=I+o(),w=B+o();BB(g,I,B,n,r,h,c,D,w),i=h,e=c,I=D,B=w}break}case"S":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=2*I-i,r=2*B-e,h=o(),c=o(),D=o(),w=o();BB(g,I,B,n,r,h,c,D,w),i=h,e=c,I=D,B=w}break}case"s":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=2*I-i,r=2*B-e,h=I+o(),c=B+o(),D=I+o(),w=B+o();BB(g,I,B,n,r,h,c,D,w),i=h,e=c,I=D,B=w}break}case"Q":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=o(),r=o(),h=o(),c=o();_C(g,I,B,n,r,h,c),i=n,e=r,I=h,B=c}break}case"q":{for(;a<t.length&&!isNaN(parseFloat(t[a]));){const n=I+o(),r=B+o(),h=I+o(),c=B+o();_C(g,I,B,n,r,h,c),i=n,e=r,I=h,B=c}break}case"Z":case"z":I=Q,B=E,g.length>0&&(A.push(g),g=[]);break}return g.length>0&&A.push(g),A}function pe(C){return C.replace(/([A-Za-z])/g," $1 ").replace(/,/g," ").trim().split(/\s+/).filter(A=>A.length>0)}function BB(C,A,g,I,B,Q,E,i,e){for(let t=1;t<=dB;t++){const a=t/dB,o=1-a,s=o*o,n=a*a;C.push({x:s*o*A+3*s*a*I+3*o*n*Q+n*a*i,y:s*o*g+3*s*a*B+3*o*n*E+n*a*e})}}function _C(C,A,g,I,B,Q,E){for(let i=1;i<=dB;i++){const e=i/dB,t=1-e;C.push({x:t*t*A+2*t*e*I+e*e*Q,y:t*t*g+2*t*e*B+e*e*E})}}function Ke(C){const A=C.length;if(A<3)return[];if(A===3)return[0,1,2];const g=[],I=Array.from({length:A},(i,e)=>e),Q=me(C)>0;let E=A*A;for(;I.length>3&&E-- >0;){let i=!1;const e=I.length;for(let t=0;t<e;t++){const a=I[(t-1+e)%e],o=I[t],s=I[(t+1)%e],n=C[a],r=C[o],h=C[s],c=(r.x-n.x)*(h.y-n.y)-(r.y-n.y)*(h.x-n.x);if(!(Q?c>0:c<0))continue;let w=!1;for(let l=0;l<e;l++)if(!(l===(t-1+e)%e||l===t||l===(t+1)%e)&&Je(C[I[l]],n,r,h)){w=!0;break}if(!w){Q?g.push(a,o,s):g.push(a,s,o),I.splice(t,1),i=!0;break}}if(!i)break}if(I.length===3){const[i,e,t]=I;Q?g.push(i,e,t):g.push(i,t,e)}return g}function me(C){let A=0;const g=C.length;for(let I=0;I<g;I++){const B=(I+1)%g;A+=C[I].x*C[B].y,A-=C[B].x*C[I].y}return A*.5}function Je(C,A,g,I){const B=ZB(C,A,g),Q=ZB(C,g,I),E=ZB(C,I,A),i=B<0||Q<0||E<0,e=B>0||Q>0||E>0;return!(i&&e)}function ZB(C,A,g){return(C.x-g.x)*(A.y-g.y)-(A.x-g.x)*(C.y-g.y)}const fC={x:0,y:0};function ng(C){var A;return C.scale*((A=C.motionScaleX)!=null?A:1)}function rg(C){var A;return C.scale*((A=C.motionScaleY)!=null?A:1)}function $C(C,A,g){if(typeof C=="string"){const I=Number.parseFloat(C);return Number.isFinite(I)?A*I/100:A*.5}if(typeof C=="number"&&Number.isFinite(C)){const I=g&&g>0?A/g:1;return C*I}return A*.5}function HB(C,A={x:0,y:0}){const g=C.options.transformOrigin;return A.x=C.x+$C(g==null?void 0:g.x,C.width,C.options.width)*ng(C),A.y=C.y+$C(g==null?void 0:g.y,C.height,C.options.height)*rg(C),A}function aI(C,A,g,I,B,Q){const E=C.rotation||0,i=Math.cos(E),e=Math.sin(E),t=HB(C,fC),a=A-t.x,o=g-t.y;return Q[0]=i*I,Q[1]=e*I,Q[2]=0,Q[3]=0,Q[4]=-e*B,Q[5]=i*B,Q[6]=0,Q[7]=0,Q[8]=0,Q[9]=0,Q[10]=1,Q[11]=0,Q[12]=t.x+i*a-e*o,Q[13]=t.y+e*a+i*o,Q[14]=0,Q[15]=1,Q}function Le(C,A,g=A){const I=C.rotation||0;if(I===0)return g!==A&&Object.assign(g,A),g;const B=Math.cos(I),Q=Math.sin(I),E=HB(C,fC),{a:i,b:e,c:t,d:a,tx:o,ty:s}=A,n=o-E.x,r=s-E.y;return g.a=B*i-Q*e,g.b=Q*i+B*e,g.c=B*t-Q*a,g.d=Q*t+B*a,g.tx=E.x+B*n-Q*r,g.ty=E.y+Q*n+B*r,g}function Sg(C,A,g,I,B,Q={x:0,y:0,w:0,h:0}){const E=C.rotation||0;if(E===0)return Q.x=A,Q.y=g,Q.w=I,Q.h=B,Q;const i=Math.cos(E),e=Math.sin(E),t=HB(C,fC),a=A-t.x,o=g-t.y,s=a+I,n=o+B,r=t.x+i*a-e*o,h=t.y+e*a+i*o,c=t.x+i*s-e*o,D=t.y+e*s+i*o,w=t.x+i*s-e*n,l=t.y+e*s+i*n,F=t.x+i*a-e*n,d=t.y+e*a+i*n,y=Math.min(r,c,w,F),G=Math.min(h,D,l,d),f=Math.max(r,c,w,F),u=Math.max(h,D,l,d);return Q.x=y,Q.y=G,Q.w=f-y,Q.h=u-G,Q}function XA(C){var A;return(A=C.options.objectFit)!=null?A:"contain"}function Fg(C,A,g,I,B=!1){const Q=I!=null?I:{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0},E=C.width*(B?C.scale:ng(C)),i=C.height*(B?C.scale:rg(C)),e=XA(C);if(!(A>0)||!(g>0))return Q.scaleX=1,Q.scaleY=1,Q.width=E,Q.height=i,Q.offsetX=0,Q.offsetY=0,Q;if(e==="fill")return Q.scaleX=E/A,Q.scaleY=i/g,Q.width=E,Q.height=i,Q.offsetX=0,Q.offsetY=0,Q;const t=e==="cover"?Math.max(E/A,i/g):Math.min(E/A,i/g),a=A*t,o=g*t;return Q.scaleX=t,Q.scaleY=t,Q.width=a,Q.height=o,Q.offsetX=e==="cover"?(E-a)*.5:0,Q.offsetY=e==="cover"?(i-o)*.5:0,Q}function He(C,A,g=2){const I=C.length;let B=xe(C,0,I,g,!0);const Q=[];if(!B||B.next===B.prev)return Q;let E,i,e;if(C.length>80*g){E=C[0],i=C[1];let t=E,a=i;for(let o=g;o<I;o+=g){const s=C[o],n=C[o+1];s<E&&(E=s),n<i&&(i=n),s>t&&(t=s),n>a&&(a=n)}e=Math.max(t-E,a-i),e=e!==0?32767/e:0}return ZI(B,Q,g,E,i,e,0),Q}function xe(C,A,g,I,B){let Q;if(B===ze(C,A,g,I)>0)for(let E=A;E<g;E+=I)Q=AQ(E/I|0,C[E],C[E+1],Q);else for(let E=g-I;E>=A;E-=I)Q=AQ(E/I|0,C[E],C[E+1],Q);return Q&&xB(Q,Q.next)&&(XI(Q),Q=Q.next),Q}function VI(C,A){if(!C)return C;A||(A=C);let g=C,I;do if(I=!1,!g.steiner&&(xB(g,g.next)||FA(g.prev,g,g.next)===0)){if(XI(g),g=A=g.prev,g===g.next)break;I=!0}else g=g.next;while(I||g!==A);return A}function ZI(C,A,g,I,B,Q,E){if(!C)return;!E&&Q&&We(C,I,B,Q);let i=C;for(;C.prev!==C.next;){const e=C.prev,t=C.next;if(Q?qe(C,I,B,Q):be(C)){A.push(e.i,C.i,t.i),XI(C),C=t.next,i=t.next;continue}if(C=t,C===i){E?E===1?(C=ve(VI(C),A),ZI(C,A,g,I,B,Q,2)):E===2&&Te(C,A,g,I,B,Q):ZI(VI(C),A,g,I,B,Q,1);break}}}function be(C){const A=C.prev,g=C,I=C.next;if(FA(A,g,I)>=0)return!1;const B=A.x,Q=g.x,E=I.x,i=A.y,e=g.y,t=I.y,a=Math.min(B,Q,E),o=Math.min(i,e,t),s=Math.max(B,Q,E),n=Math.max(i,e,t);let r=I.next;for(;r!==A;){if(r.x>=a&&r.x<=s&&r.y>=o&&r.y<=n&&UI(B,i,Q,e,E,t,r.x,r.y)&&FA(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function qe(C,A,g,I){const B=C.prev,Q=C,E=C.next;if(FA(B,Q,E)>=0)return!1;const i=B.x,e=Q.x,t=E.x,a=B.y,o=Q.y,s=E.y,n=Math.min(i,e,t),r=Math.min(a,o,s),h=Math.max(i,e,t),c=Math.max(a,o,s),D=oC(n,r,A,g,I),w=oC(h,c,A,g,I);let l=C.prevZ,F=C.nextZ;for(;l&&l.z>=D&&F&&F.z<=w;){if(l.x>=n&&l.x<=h&&l.y>=r&&l.y<=c&&l!==B&&l!==E&&UI(i,a,e,o,t,s,l.x,l.y)&&FA(l.prev,l,l.next)>=0||(l=l.prevZ,F.x>=n&&F.x<=h&&F.y>=r&&F.y<=c&&F!==B&&F!==E&&UI(i,a,e,o,t,s,F.x,F.y)&&FA(F.prev,F,F.next)>=0))return!1;F=F.nextZ}for(;l&&l.z>=D;){if(l.x>=n&&l.x<=h&&l.y>=r&&l.y<=c&&l!==B&&l!==E&&UI(i,a,e,o,t,s,l.x,l.y)&&FA(l.prev,l,l.next)>=0)return!1;l=l.prevZ}for(;F&&F.z<=w;){if(F.x>=n&&F.x<=h&&F.y>=r&&F.y<=c&&F!==B&&F!==E&&UI(i,a,e,o,t,s,F.x,F.y)&&FA(F.prev,F,F.next)>=0)return!1;F=F.nextZ}return!0}function ve(C,A){let g=C;do{const I=g.prev,B=g.next.next;!xB(I,B)&&CE(I,g,g.next,B)&&RB(I,B)&&RB(B,I)&&(A.push(I.i,g.i,B.i),XI(g),XI(g.next),g=C=B),g=g.next}while(g!==C);return VI(g)}function Te(C,A,g,I,B,Q){let E=C;do{let i=E.next.next;for(;i!==E.prev;){if(E.i!==i.i&&Xe(E,i)){let e=je(E,i);E=VI(E,E.next),e=VI(e,e.next),ZI(E,A,g,I,B,Q,0),ZI(e,A,g,I,B,Q,0);return}i=i.next}E=E.next}while(E!==C)}function We(C,A,g,I){let B=C;do B.z===0&&(B.z=oC(B.x,B.y,A,g,I)),B.prevZ=B.prev,B.nextZ=B.next,B=B.next;while(B!==C);B.prevZ.nextZ=null,B.prevZ=null,Ve(B)}function Ve(C){let A,g=1;do{let I=C,B;C=null;let Q=null;for(A=0;I;){A++;let E=I,i=0;for(let t=0;t<g&&(i++,E=E.nextZ,!!E);t++);let e=g;for(;i>0||e>0&&E;)i!==0&&(e===0||!E||I.z<=E.z)?(B=I,I=I.nextZ,i--):(B=E,E=E.nextZ,e--),Q?Q.nextZ=B:C=B,B.prevZ=Q,Q=B;I=E}Q.nextZ=null,g*=2}while(A>1);return C}function oC(C,A,g,I,B){return C=(C-g)*B|0,A=(A-I)*B|0,C=(C|C<<8)&16711935,C=(C|C<<4)&252645135,C=(C|C<<2)&858993459,C=(C|C<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,C|A<<1}function Ze(C,A,g,I,B,Q,E,i){return(B-E)*(A-i)>=(C-E)*(Q-i)&&(C-E)*(I-i)>=(g-E)*(A-i)&&(g-E)*(Q-i)>=(B-E)*(I-i)}function UI(C,A,g,I,B,Q,E,i){return!(C===E&&A===i)&&Ze(C,A,g,I,B,Q,E,i)}function Xe(C,A){return C.next.i!==A.i&&C.prev.i!==A.i&&!Oe(C,A)&&(RB(C,A)&&RB(A,C)&&Pe(C,A)&&(FA(C.prev,C,A.prev)||FA(C,A.prev,A))||xB(C,A)&&FA(C.prev,C,C.next)>0&&FA(A.prev,A,A.next)>0)}function FA(C,A,g){return(A.y-C.y)*(g.x-A.x)-(A.x-C.x)*(g.y-A.y)}function xB(C,A){return C.x===A.x&&C.y===A.y}function CE(C,A,g,I){const B=QB(FA(C,A,g)),Q=QB(FA(C,A,I)),E=QB(FA(g,I,C)),i=QB(FA(g,I,A));return!!(B!==Q&&E!==i||B===0&&CB(C,g,A)||Q===0&&CB(C,I,A)||E===0&&CB(g,C,I)||i===0&&CB(g,A,I))}function CB(C,A,g){return A.x<=Math.max(C.x,g.x)&&A.x>=Math.min(C.x,g.x)&&A.y<=Math.max(C.y,g.y)&&A.y>=Math.min(C.y,g.y)}function QB(C){return C>0?1:C<0?-1:0}function Oe(C,A){let g=C;do{if(g.i!==C.i&&g.next.i!==C.i&&g.i!==A.i&&g.next.i!==A.i&&CE(g,g.next,C,A))return!0;g=g.next}while(g!==C);return!1}function RB(C,A){return FA(C.prev,C,C.next)<0?FA(C,A,C.next)>=0&&FA(C,C.prev,A)>=0:FA(C,A,C.prev)<0||FA(C,C.next,A)<0}function Pe(C,A){let g=C,I=!1;const B=(C.x+A.x)/2,Q=(C.y+A.y)/2;do g.y>Q!=g.next.y>Q&&g.next.y!==g.y&&B<(g.next.x-g.x)*(Q-g.y)/(g.next.y-g.y)+g.x&&(I=!I),g=g.next;while(g!==C);return I}function je(C,A){const g=sC(C.i,C.x,C.y),I=sC(A.i,A.x,A.y),B=C.next,Q=A.prev;return C.next=A,A.prev=C,g.next=B,B.prev=g,I.next=g,g.prev=I,Q.next=I,I.prev=Q,I}function AQ(C,A,g,I){const B=sC(C,A,g);return I?(B.next=I.next,B.prev=I,I.next.prev=B,I.next=B):(B.prev=B,B.next=B),B}function XI(C){C.next.prev=C.prev,C.prev.next=C.next,C.prevZ&&(C.prevZ.nextZ=C.nextZ),C.nextZ&&(C.nextZ.prevZ=C.prevZ)}function sC(C,A,g){return{i:C,x:A,y:g,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function ze(C,A,g,I){let B=0;for(let Q=A,E=g-I;Q<g;Q+=I)B+=(C[E]-C[Q])*(C[Q+1]+C[E+1]),E=Q;return B}function lB(C){const{vertices:A,indices:g}=C;if(!(A instanceof Float32Array))return"clip vertices must be Float32Array";if(!(g instanceof Uint32Array))return"clip indices must be Uint32Array integers";if(A.length<6||A.length%2!==0)return"clip vertices must contain at least three xy pairs";for(let B=0;B<A.length;B++)if(!Number.isFinite(A[B]))return`clip vertex ${B} is not finite`;if(g.length<3||g.length%3!==0)return"clip indices must contain complete triangles";const I=A.length/2;for(let B=0;B<g.length;B+=3){const Q=g[B],E=g[B+1],i=g[B+2];if(!Number.isInteger(Q)||!Number.isInteger(E)||!Number.isInteger(i))return`clip triangle ${B/3} contains a non-integer index`;if(Q>=I||E>=I||i>=I)return`clip triangle ${B/3} references an out-of-range vertex`;if(Q===E||E===i||Q===i)return`clip triangle ${B/3} is degenerate`;const e=A[Q*2],t=A[Q*2+1],a=A[E*2],o=A[E*2+1],s=A[i*2],n=A[i*2+1],r=(a-e)*(n-t)-(o-t)*(s-e);if(!Number.isFinite(r)||Math.abs(r)<=Number.EPSILON)return`clip triangle ${B/3} has zero area`}return null}function _e(C,A){const g=[],I=C.length/2;for(let B=0;B+2<A.length;B+=3){const Q=A[B],E=A[B+1],i=A[B+2];if(Q>=I||E>=I||i>=I){g.push(Q,E,i);continue}if(Q===E||E===i||Q===i)continue;const e=C[Q*2],t=C[Q*2+1],a=C[E*2],o=C[E*2+1],s=C[i*2],n=C[i*2+1],r=(a-e)*(n-t)-(o-t)*(s-e);(!Number.isFinite(r)||Math.abs(r)>Number.EPSILON)&&g.push(Q,E,i)}return g.length===A.length?A:new Uint32Array(g)}function QE(C){if(!C.trim())return"empty";const A=LB(C);if(A.length===0)return"invalid";for(const g of A)if(g.some(I=>!Number.isFinite(I.x)||!Number.isFinite(I.y)))return"invalid";for(const g of A){if(g.length===0)continue;let I=1;for(const o of g)I=Math.max(I,Math.abs(o.x),Math.abs(o.y));const B=I*1e-7,Q=B*B,E=[];for(const o of g){const s=E[E.length-1];if(s){const n=o.x-s.x,r=o.y-s.y;if(n*n+r*r<=Q)continue}E.push(o)}if(E.length>1){const o=E[0],s=E[E.length-1],n=o.x-s.x,r=o.y-s.y;n*n+r*r<=Q&&E.pop()}const i=[];for(const o of E)i.some(s=>{const n=o.x-s.x,r=o.y-s.y;return n*n+r*r<=Q})||i.push(o);if(i.length<3)continue;const e=i[0];let t=null;for(let o=1;o<i.length;o++){const s=i[o],n=s.x-e.x,r=s.y-e.y;if(n*n+r*r>Q){t={x:n,y:r};break}}if(!t)continue;const a=B*Math.max(1,Math.hypot(t.x,t.y));if(i.some(o=>Math.abs(t.x*(o.y-e.y)-t.y*(o.x-e.x))>a))return"fillable"}return"empty"}function $e(C,A){const g=LB(C);if(g.length===0)return null;const I=[],B=[],Q=[];for(const a of g)if(!(a.length<3)){Q.push(a);for(const o of a)I.push(o.x,o.y),B.push(o.x,o.y)}if(I.length===0)return null;const E=[];let i=0;for(const a of Q){const o=[];for(const n of a)o.push(n.x,n.y);const s=He(o,void 0,2);for(const n of s)E.push(n+i);i+=a.length}if(E.length===0)return null;const e=new Float32Array(I),t=_e(e,new Uint32Array(E));return t.length===0?null:{vertices:e,indices:t}}const EE=`function hA(A, I, g = 2) {
|
|
2021
2021
|
const B = A.length;
|
|
2022
2022
|
let Q = NA(A, 0, B, g, !0);
|
|
2023
2023
|
const E = [];
|
|
@@ -2755,7 +2755,7 @@ IA.onmessage = (A) => {
|
|
|
2755
2755
|
!I || I.type !== "build-svga-clip-meshes" || BI.push(() => CI(I));
|
|
2756
2756
|
};
|
|
2757
2757
|
//# sourceMappingURL=svga-clip-worker-3AvUKvjL.js.map
|
|
2758
|
-
`,gQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",EE],{type:"text/javascript;charset=utf-8"});function At(C){let A;try{if(A=gQ&&(self.URL||self.webkitURL).createObjectURL(gQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(EE),{type:"module",name:C==null?void 0:C.name})}}function cA(C="Operation aborted"){const A=new Error(C);return A.name="AbortError",A}function Kg(C){return C instanceof Error?C.name==="AbortError"?!0:"cause"in C&&Kg(C.cause):!1}function b(C,A){if(C!=null&&C.aborted)throw cA(A)}var gt=Object.defineProperty,It=(C,A,g)=>A in C?gt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,XB=(C,A,g)=>It(C,typeof A!="symbol"?A+"":A,g);class Bt{constructor(){XB(this,"active",0),XB(this,"maxConcurrent",1),XB(this,"waiters",[])}configure(A){this.maxConcurrent=Math.max(1,Math.floor(Number.isFinite(A)?A:1)),this.drain()}tryAcquire(){return this.active>=this.maxConcurrent?null:(this.active++,this.createRelease())}acquire(A){if(A!=null&&A.aborted)return Promise.reject(cA("SVGA worker task aborted"));const g=this.tryAcquire();return g?Promise.resolve(g):new Promise((I,B)=>{const Q={resolve:I,reject:B,signal:A};A&&(Q.onAbort=()=>{const E=this.waiters.indexOf(Q);E>=0&&this.waiters.splice(E,1),B(cA("SVGA worker task aborted"))},A.addEventListener("abort",Q.onAbort,{once:!0})),this.waiters.push(Q)})}createRelease(){let A=!1;return()=>{A||(A=!0,this.active--,this.drain())}}run(A,g){if(g!=null&&g.aborted)return Promise.reject(cA("SVGA worker task aborted"));const I=this.tryAcquire();return I?this.execute(A,I):this.acquire(g).then(B=>this.execute(A,B))}async execute(A,g){try{return await A()}finally{g()}}drain(){for(var A;this.active<this.maxConcurrent&&this.waiters.length>0;){const g=this.waiters.shift();if(g){if(g.signal&&g.onAbort&&g.signal.removeEventListener("abort",g.onAbort),(A=g.signal)!=null&&A.aborted){g.reject(cA("SVGA worker task aborted"));continue}this.active++,g.resolve(this.createRelease())}}}}const MC=new Bt;function NC(C){C!=null&&MC.configure(C)}function UC(C,A){return MC.run(C,A)}function Ct(C){return MC.acquire(C)}let KI=null,Qt=1;const OI=new Map;function iE(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function uB(C,A,g){KI===C&&(KI=null);try{C.terminate()}catch(I){}for(const[I,B]of OI)B.owner===C&&(OI.delete(I),iE(B),B.reject(g==null||I===g?A:new Error("SVGA clip worker restarted after another request was canceled")))}function Et(){if(!KI){const C=new At;KI=C,C.addEventListener("message",A=>{var g;const I=A.data;if(!I||I.type!=="build-svga-clip-meshes-result")return;const B=OI.get(I.id);if(!B||B.owner!==C)return;if(OI.delete(I.id),iE(B),I.error){B.reject(new Error(I.error));return}const Q=new Set(B.paths),E=new Map;for(const i of(g=I.entries)!=null?g:[]){if(!Q.has(i.path)){B.reject(new Error(`SVGA clip worker returned unknown path: ${i.path}`));return}if(E.has(i.path)){B.reject(new Error(`SVGA clip worker returned duplicate path: ${i.path}`));return}if(!i.vertices||!i.indices){B.reject(new Error(`SVGA clip worker returned no mesh for fillable path: ${i.path}`));return}const e={vertices:i.vertices,indices:i.indices},t=lB(e);if(t){B.reject(new Error(`SVGA clip worker returned invalid mesh for ${i.path}: ${t}`));return}E.set(i.path,e)}for(const i of B.paths)if(!E.has(i)){B.reject(new Error(`SVGA clip worker omitted requested path: ${i}`));return}B.resolve(E)}),C.addEventListener("error",A=>{uB(C,new Error(A.message||"SVGA clip worker error"))}),C.addEventListener("messageerror",()=>{uB(C,new Error("SVGA clip worker message deserialization failed"))})}return KI}function eE(){return typeof Worker!="undefined"}function it(C,A={}){return eE()?new Set(C).size!==C.length?Promise.reject(new Error("SVGA clip worker request contains duplicate paths")):UC(()=>{b(A.signal,"SVGA clip worker task aborted");const g=Et(),I=Qt++;return new Promise((B,Q)=>{var E,i;const e={owner:g,signal:A.signal,paths:[...C],resolve:B,reject:Q};if(e.onAbort=()=>{uB(g,cA("SVGA clip worker task aborted"),I)},OI.set(I,e),(E=A.signal)!=null&&E.aborted){e.onAbort();return}(i=A.signal)==null||i.addEventListener("abort",e.onAbort,{once:!0});try{g.postMessage({type:"build-svga-clip-meshes",id:I,paths:C,workerTimeSliceMs:A.workerTimeSliceMs})}catch(t){uB(g,t instanceof Error?t:new Error(String(t)))}})},A.signal):Promise.reject(new Error("SVGA clip worker unavailable"))}var et=Object.defineProperty,tt=(C,A,g)=>A in C?et(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,EB=(C,A,g)=>tt(C,typeof A!="symbol"?A+"":A,g);const tE=1e3/60,at=2,ot=12,st=.25;function wB(){return typeof performance!="undefined"?performance.now():Date.now()}function nt(){return new Promise(C=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>C());return}setTimeout(C,0)}).then(wB)}function rt(C,A={}){var g,I,B;const Q=Math.max(.1,(g=A.minBudgetMs)!=null?g:at),E=Math.max(Q,(I=A.maxBudgetMs)!=null?I:ot),i=Math.max(.05,Math.min(.95,(B=A.frameFraction)!=null?B:.5)),e=Number.isFinite(C)&&C>0?C:tE;return Math.max(Q,Math.min(E,e*i))}function ht(C,A){return!Number.isFinite(A)||A<4||A>100?C:C+(A-C)*st}class ct{constructor(){EB(this,"frameIntervalMs",tE),EB(this,"lastFrameAt",-1),EB(this,"sliceStartedAt",wB()),EB(this,"nextFramePromise",null)}budgetMs(A={}){return rt(this.frameIntervalMs,A)}shouldYield(A={}){return wB()-this.sliceStartedAt>=this.budgetMs(A)}async yield(){this.nextFramePromise||(this.nextFramePromise=nt().then(A=>{this.lastFrameAt>=0&&(this.frameIntervalMs=ht(this.frameIntervalMs,A-this.lastFrameAt)),this.lastFrameAt=A,this.sliceStartedAt=wB()}).finally(()=>{this.nextFramePromise=null})),await this.nextFramePromise}}const OB=new ct;function gg(C={}){return{get budgetMs(){return OB.budgetMs(C)},shouldYield(){return OB.shouldYield(C)},yield(){return OB.yield()}}}function cI(C){return C!=null&&Number.isInteger(C)&&C>=0}function IQ(C,A){return cI(C)?C:A}function aE(C,A,g){const I=C*A*g;return Number.isSafeInteger(I)?I:Number.POSITIVE_INFINITY}function kC(C,A){var g;if(C.length%vg!==0)throw new RangeError(`SVGA frameData length must be a multiple of ${vg}, got ${C.length}`);const I=C.length/vg,B=I*Vg,Q=A!=null?A:new Float32Array(B);if(Q.length<B)throw new RangeError(`SVGA packed output is too small: need ${B} floats, got ${Q.length}`);for(let E=0;E<I;E++){const i=E*vg,e=E*Vg;for(let t=0;t<vg;t++)Q[e+t]=(g=C[i+t])!=null?g:0;Q[e+9]=0,Q[e+10]=0,Q[e+11]=0}return Q}function Dt(C,A){return kC(C,A)}function $I(C,A,g=Vg){const I=cI(C)?C:0,B=cI(A)?A:0,Q=cI(g)?g:Vg;return aE(I,B,Q)*Float32Array.BYTES_PER_ELEMENT}function lt(C,A,g=KB){return Number.isFinite(g)&&g>=0&&$I(C,A)<=g}function wt(C,A,g,I=KB){const B=$I(A,g);return Number.isFinite(C)&&C>=0&&Number.isFinite(I)&&I>=0&&Number.isFinite(B)&&C+B<=I}const YC=1,Ft=2;function oE(C,A,g={}){const I=new Float32Array(C.length*tC);for(let B=0;B<C.length;B++){const Q=B*tC,E=A.get(C[B]);if(I[Q+4]=B,!E){I[Q+6]=YC;continue}const i=Number.isInteger(E.textureIndex)&&E.textureIndex>=0?E.textureIndex:0;I[Q]=E.x,I[Q+1]=E.y,I[Q+2]=E.x+E.w,I[Q+3]=E.y+E.h,I[Q+5]=i}return I}function yt(C,A){var g,I;let B=-1;for(const Q of C){const E=(I=(g=A.get(Q))==null?void 0:g.textureIndex)!=null?I:0;Number.isInteger(E)&&E>=0&&(B=Math.max(B,E))}return B+1}function Gt(C){if(C.hasClipPaths!=null)return C.hasClipPaths;const A=C.spriteTable;if(!A)return!1;for(const g of A.clipPathIndex)if(g>=0)return!0;return A.clipPaths.length>0&&A.clipPathIndex.length===0}function dg(C,A,g,I,B,Q,E,i){var e;const t=(e=E.strategy)!=null?e:"auto",a=cI(E.compatibleInstanceCount)?E.compatibleInstanceCount:0,o=cI(E.atlasPageCount)?E.atlasPageCount:E.hasAtlas===!1?0:1;return{path:C,eligible:C!=="cpu-reference",selectedPath:C,backend:A,requested:t,requestedStrategy:t,spriteCount:g,frameCount:I,compatibleInstanceCount:a,atlasPageCount:o,tableBytes:B,frameTableBytes:B,commandTableBytes:0,budgetBytes:Q,pathState:i==="table-preparing"?"preparing":C==="cpu-reference"?"fallback":"settled",drawBatchMode:C==="gpu-hybrid"?"hybrid-scheduled":"per-slot",drawCompatibleInstanceCount:a,fallbackReasons:i?[i]:[],...i?{fallbackReason:i}:{}}}function nC(C){var A,g,I,B,Q,E,i;const e=C.spriteTable,t=IQ(C.spriteCount,(A=e==null?void 0:e.spriteCount)!=null?A:0),a=IQ(C.frameCount,(g=e==null?void 0:e.frameCount)!=null?g:0),o=(I=C.budgetBytes)!=null?I:KB,s=$I(t,a),n=(B=C.strategy)!=null?B:"auto",r=(E=(Q=C.hasAnyShapes)!=null?Q:e==null?void 0:e.hasAnyShapes)!=null?E:!1;if(n==="cpu")return dg("cpu-reference",C.backend,t,a,s,o,C,"policy-disabled");if(C.backend==="webgl1")return dg("cpu-reference",C.backend,t,a,s,o,C,"device-capability");const h=(i=C.frameDataLength)!=null?i:e==null?void 0:e.frameData.length,c=aE(t,a,vg);if(t<=0||a<=0||!Number.isFinite(c)||h!=null&&h!==c)return dg("cpu-reference",C.backend,t,a,s,o,C,"validation-failed");if(!Number.isFinite(o)||o<0||s>o)return dg("cpu-reference",C.backend,t,a,s,o,C,"table-too-large-or-budget");if(C.hasAtlas===!1&&!r)return dg("cpu-reference",C.backend,t,a,s,o,C,"plan-not-ready-or-unsupported");if(C.tablePreparing)return dg("cpu-reference",C.backend,t,a,s,o,C,"table-preparing");if(C.uploadFailed)return dg("cpu-reference",C.backend,t,a,s,o,C,"upload-failed");const D=Gt(C);return C.hasSlotTextureOverride===!0?dg("cpu-reference",C.backend,t,a,s,o,C,"slot-overrides"):dg(r||D?"gpu-hybrid":"gpu-direct",C.backend,t,a,s,o,C)}const DI=0,mI=1,bg=2,SB=3,JI=4;function dt(C){const A=LB(C);if(A.length!==1||A[0].length!==4)return null;const g=A[0],I=g.map(r=>r.x),B=g.map(r=>r.y),Q=Math.min(...I),E=Math.min(...B),i=Math.max(...I),e=Math.max(...B);if(!(i>Q&&e>E))return null;const t=Math.max(i-Q,e-E)*1e-4+1e-6;let a=0;const o=[];for(const r of g){const h=Math.abs(r.x-Q)<=t,c=Math.abs(r.x-i)<=t,D=Math.abs(r.y-E)<=t,w=Math.abs(r.y-e)<=t;if(!h&&!c||!D&&!w)return null;const l=(h?0:1)|(D?0:2);if(o.includes(l))return null;o.push(l),a|=1<<l}if(a!==15)return null;let s=0;for(let r=0;r<g.length;r++){const h=g[r],c=g[(r+1)%g.length],D=Math.abs(c.x-h.x),w=Math.abs(c.y-h.y);if(!(D<=t&&w>t||w<=t&&D>t))return null;s+=h.x*c.y-c.x*h.y}const n=2*(i-Q)*(e-E);return Math.abs(Math.abs(s)-n)>t*n?null:{x0:Q,y0:E,x1:i,y1:e}}function rC(C){var A,g,I,B,Q,E,i,e,t;const a=C.spriteTable,o=(A=C.atlasTextureHandles)!=null&&A.length?C.atlasTextureHandles:C.atlasTextureHandle?[C.atlasTextureHandle]:[],s=new Uint32Array(a.frameCount+1),n=[],r=(N,S,Y,U,k,m=null)=>{n.push({type:N,spriteIndex:S,shapeIndex:Y,clipPathIndex:U,atlasPage:k,localClipRect:m})};for(let N=0;N<a.frameCount;N++){s[N]=n.length;for(let S=0;S<a.spriteCount;S++){const Y=S*a.frameCount+N,U=Y*vg;if(((g=a.frameData[U+8])!=null?g:0)<.05)continue;const k=(I=a.shapesIndex[Y])!=null?I:-1,m=k>=0&&((Q=(B=a.shapesTable[k])==null?void 0:B.length)!=null?Q:0)>0,J=(E=a.clipPathIndex[Y])!=null?E:-1,q=J>=0&&!!a.clipPaths[J];if((q?QE(a.clipPaths[J]):null)==="empty")continue;const Z=C.atlasRects.get((i=a.imageKeys[S])!=null?i:""),x=(e=Z==null?void 0:Z.textureIndex)!=null?e:0,X=!!Z&&!!o[x],T=q&&!m?dt(a.clipPaths[J]):null,gA=!!T&&X;!m&&!X||(q&&!gA&&r(bg,S,k,J,x),m&&r(mI,S,k,J,x),X&&r(q&&!gA?SB:DI,S,k,J,x,T),q&&!gA&&r(JI,S,k,J,x))}}s[a.frameCount]=n.length;const h=new Uint32Array(a.frameCount),c=new Map;for(let N=0;N<a.frameCount;N++){const S=s[N],Y=s[N+1];let U="";for(let m=S;m<Y;m++){const J=n[m],q=J.localClipRect;U+=`${J.type},${J.spriteIndex},${J.shapeIndex},${J.clipPathIndex},${J.atlasPage},`,U+=q?`${q.x0},${q.y0},${q.x1},${q.y1};`:";"}let k=c.get(U);k==null&&(k=c.size+1,c.set(U,k)),h[N]=k}const D=new Uint8Array(n.length),w=new Uint32Array(n.length),l=new Int32Array(n.length*3),F=new Float32Array(n.length*II);for(let N=0;N<n.length;N++){const S=n[N];D[N]=S.type,w[N]=S.spriteIndex;const Y=N*3;l[Y]=S.shapeIndex,l[Y+1]=S.clipPathIndex,l[Y+2]=S.atlasPage;const U=N*II,k=C.atlasRects.get((t=a.imageKeys[S.spriteIndex])!=null?t:"");F[U+4]=S.spriteIndex,F[U+5]=S.atlasPage,k?(F[U]=k.x,F[U+1]=k.y,F[U+2]=k.x+k.w,F[U+3]=k.y+k.h):F[U+6]=YC,S.localClipRect&&(F[U+6]|=Ft,F[U+8]=S.localClipRect.x0,F[U+9]=S.localClipRect.y0,F[U+10]=S.localClipRect.x1,F[U+11]=S.localClipRect.y1)}const d=new Uint32Array(a.frameCount+1),y=[],G=[],f=[];for(let N=0;N<a.frameCount;N++){d[N]=y.length;const S=s[N],Y=s[N+1];let U=S;for(;U<Y;){const k=D[U];let m=1;if(k===DI){const J=l[U*3+2];for(;U+m<Y&&D[U+m]===DI&&l[(U+m)*3+2]===J;)m++}y.push(U),G.push(m),f.push(k),U+=m}}d[a.frameCount]=y.length;const u=new Uint32Array(y),R=new Uint32Array(G),M=new Uint8Array(f);return{frameOffsets:s,frameScheduleIds:h,operations:D,spriteIndices:w,meshReferences:l,spriteMetadata:F,runFrameOffsets:d,runOperationStarts:u,runOperationCounts:R,runTypes:M,byteLength:s.byteLength+h.byteLength+D.byteLength+w.byteLength+l.byteLength+F.byteLength+d.byteLength+u.byteLength+R.byteLength+M.byteLength}}var Rt=Object.defineProperty,ut=(C,A,g)=>A in C?Rt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,K=(C,A,g)=>ut(C,typeof A!="symbol"?A+"":A,g);const jA=2048,BQ=13,PB=14,EI=$A;class lI extends Error{constructor(A){super("SVGA FastPath submission rejected; replaying frame through CPU Reference"),this.entity=A,this.name="SVGAFastPathFrameReplayError"}}class zg extends Error{constructor(A){super(A),this.name="SVGAStencilTransactionError"}}class Hg extends Error{constructor(){super("SVGA renderer was destroyed during frame submission"),this.name="SVGARendererDestroyedError"}}const iB=6,eB={x:0,y:0,w:1,h:1},pC=class hC{constructor(A,g,I){this.onClipMeshReady=A,this.onHybridValidationFailure=g,this.onRuntimeDiagnostic=I,K(this,"pool",new BE),K(this,"vertexBufHandles",[]),K(this,"indexBufHandles",[]),K(this,"clipSpriteVertBufHandles",[]),K(this,"clipSpriteIdxBufHandles",[]),K(this,"batchDrawCursor",0),K(this,"clipSpriteDrawCursor",0),K(this,"canvasWidth",0),K(this,"canvasHeight",0),K(this,"projCacheW",0),K(this,"projCacheH",0),K(this,"projCache",null),K(this,"clipMeshCache",new Map),K(this,"clipMeshStates",new Map),K(this,"clipMeshStateWaiters",new Map),K(this,"clipMeshGeneration",0),K(this,"clipMeshProducerController",new AbortController),K(this,"clipMeshProducerTasks",new Set),K(this,"destroyed",!1),K(this,"clipMeshDestroyed",!1),K(this,"clipGeometryKindCache",new Map),K(this,"clipMeshesWithBuffers",new Set),K(this,"clipMeshRefCounts",new Map),K(this,"entityRetainedClipMeshes",new WeakMap),K(this,"pendingClipMeshPaths",new Set),K(this,"clipMeshBuildInFlight",!1),K(this,"stencilTransactionState","idle"),K(this,"clipFrameDataScratch",new Float32Array(_g)),K(this,"staticBatchCacheRowScratch",new Float32Array(_g)),K(this,"instancedFrameDataScratch",new Float32Array(jA*BQ)),K(this,"instancedFrameDataWords",new Uint32Array(this.instancedFrameDataScratch.buffer)),K(this,"timelineBatchDataScratch",new Float32Array(jA*EI)),K(this,"timelineBatchFrameScratch",new Int32Array(jA)),K(this,"timelineDirectSlotDataScratch",new Float32Array(jA*EI)),K(this,"clipSpriteVertsScratch",null),K(this,"clipSpriteIndicesScratch",null),K(this,"clipMaskBatchTransformsScratch",new Float32Array(0)),K(this,"instancedQuadVB",null),K(this,"instancedQuadIB",null),K(this,"whiteTexture",null),K(this,"shapeMeshCache",new WeakMap),K(this,"shapeMeshesWithBuffers",new Set),K(this,"shapeMeshRefCounts",new Map),K(this,"entityRetainedShapeMeshes",new WeakMap),K(this,"clipTransformMat",new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])),K(this,"shapeTransformMat",new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])),K(this,"slotScissor",{x:0,y:0,w:0,h:0}),K(this,"slotClipX0",0),K(this,"slotClipY0",0),K(this,"slotClipX1",0),K(this,"slotClipY1",0),K(this,"slotScissorActive",!1),K(this,"sharedClipStencilActive",!1),K(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),K(this,"spriteWorkPool",[]),K(this,"spriteWorkCursor",0),K(this,"batchSpritesScratch",[]),K(this,"drawGroupScratch",[]),K(this,"directSlotsScratch",[]),K(this,"hybridSlotsScratch",[]),K(this,"timelineSlotStateUploadId",0),K(this,"sharedSlotLayerWorkPool",[]),K(this,"sharedSlotLayerWorksScratch",[]),K(this,"clipLayerBatchPool",[]),K(this,"clipLayerBatchesScratch",[]),K(this,"entityHasShapesCache",new WeakMap),K(this,"entityFrameClipModeCache",new WeakMap),K(this,"gpuMotionEntityEligibilityCache",new WeakMap),K(this,"entityClipMeshArrayCache",new WeakMap),K(this,"affineScratch",{a:1,b:0,c:0,d:1,tx:0,ty:0}),K(this,"plainInstancedTexturesScratch",[]),K(this,"plainInstancedUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"plainInstancedDrawCommand",{shader:"svga-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.plainInstancedTexturesScratch,uniforms:this.plainInstancedUniformsScratch}),K(this,"timelineTexturesScratch",[]),K(this,"timelineUniformsScratch",{u_projection:new Float32Array(16)}),K(this,"timelineSlotStateScratch",new Float32Array(PB)),K(this,"timelineSlotStateCache",new Map),K(this,"timelineRenderableFrameCache",new Map),K(this,"timelineOriginScratch",{x:0,y:0}),K(this,"timelineDrawCommand",{shader:"svga-frame-table-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"none"}),K(this,"timelineShapeDrawCommand",{shader:"svga-frame-table-shape-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"none"}),K(this,"timelineClipDrawCommand",{shader:"svga-frame-table-clip-mask",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"write"}),K(this,"plainBatchTexturesScratch",[]),K(this,"plainBatchUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"plainBatchDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.plainBatchTexturesScratch,uniforms:this.plainBatchUniformsScratch}),K(this,"clipInstancedTexturesScratch",[]),K(this,"clipInstancedUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"clipInstancedDrawCommand",{shader:"svga-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:1,textures:this.clipInstancedTexturesScratch,uniforms:this.clipInstancedUniformsScratch,stencil:"test"}),K(this,"clipBatchTexturesScratch",[]),K(this,"clipBatchUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"clipBatchDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.clipBatchTexturesScratch,uniforms:this.clipBatchUniformsScratch,stencil:"test"}),K(this,"clipMaskTexturesScratch",[]),K(this,"clipMaskUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.clipTransformMat}),K(this,"clipMaskDrawCommand",{shader:"clip-mask",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.clipMaskTexturesScratch,uniforms:this.clipMaskUniformsScratch}),K(this,"clipMaskInstancedUniformsScratch",{u_projection:new Float32Array(16)}),K(this,"clipMaskInstancedDrawCommand",{shader:"clip-mask-instanced",vertexBuffer:null,indexBuffer:null,indexCount:0,instanceCount:1,instanceData:this.clipMaskBatchTransformsScratch,textures:this.clipMaskTexturesScratch,uniforms:this.clipMaskInstancedUniformsScratch}),K(this,"shapeTexturesScratch",[]),K(this,"shapeUniformsScratch",{u_projection:new Float32Array(16),u_transform:new Float32Array(16),u_opacity:1}),K(this,"shapeDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.shapeTexturesScratch,uniforms:this.shapeUniformsScratch})}emitRuntimeDiagnostic(A){var g;if(this.destroyed)return!1;try{(g=this.onRuntimeDiagnostic)==null||g.call(this,A)}catch(I){console.error("[GiftStage:SVGA] runtime diagnostic observer failed",I)}return!this.destroyed}notifyClipMeshReady(){var A;if(!(this.destroyed||this.clipMeshDestroyed))try{(A=this.onClipMeshReady)==null||A.call(this)}catch(g){console.error("[GiftStage:SVGA] clip mesh ready observer failed",g)}}beginFrame(A){this.assertRendererAlive(),this.batchDrawCursor=0,this.clipSpriteDrawCursor=0,this.timelineSlotStateCache.clear(),this.timelineRenderableFrameCache.clear(),this.stencilTransactionState="idle";const g=A.canvas.width,I=A.canvas.height;this.canvasWidth=g,this.canvasHeight=I}endFrame(){if(this.assertRendererAlive(),this.stencilTransactionState!=="idle")throw new zg(`SVGA stencil transaction ended in ${this.stencilTransactionState}`)}abortFrame(){this.assertRendererAlive(),this.stencilTransactionState="idle",this.slotScissorActive=!1}flush(A,g){this.beginFrame(A),this.drawSlots(A,g.values())}drawSlot(A,g){if(g.type!=="svga"||!this.hasRenderableSVGA(g)||g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")return;if(this.beginFrame(A),this.canUseTimelinePath(A,g,"gpu-direct")){this.drawTimelineSlot(A,g,this.getProjection())||g.videoEntity&&this.rejectFastPathFrame(g.videoEntity);return}const I=this.drawGroupScratch;I.length=0,I.push(g),this.flushGroup(A,I),I.length=0}drawSlots(A,g){var I;this.beginFrame(A);const B=this.drawGroupScratch,Q=this.directSlotsScratch,E=this.hybridSlotsScratch;B.length=0,Q.length=0,E.length=0;const i=()=>{var t;if(Q.length===0)return;const a=(t=Q[0])==null?void 0:t.videoEntity;try{this.flushDirectSlots(A,Q,this.getProjection())}catch(o){throw o instanceof lI||o instanceof Hg||a&&this.rejectFastPathFrame(a),o}Q.length=0},e=()=>{var t;if(E.length===0)return;const a=(t=E[0])==null?void 0:t.videoEntity;try{this.flushHybridScheduledSlots(A,E,this.getProjection())}catch(o){throw o instanceof lI||o instanceof Hg||a&&this.rejectFastPathFrame(a),o}E.length=0};for(const t of g)if(!(t.type!=="svga"||!this.hasRenderableSVGA(t))&&!(t.state!=="playing"&&t.state!=="fly"&&t.state!=="stopped")){if(this.canUseTimelinePath(A,t,"gpu-direct")){B.length>0&&(this.flushGroup(A,B),B.length=0),e(),Q.length>0&&!this.areDirectSlotsBatchCompatible(Q[0],t)&&i(),Q.push(t);continue}if(i(),this.canUseTimelinePath(A,t,"gpu-hybrid")&&((I=t.videoEntity)!=null&&I.svgaHybridCommandTable)){B.length>0&&(this.flushGroup(A,B),B.length=0),E.length>0&&!this.areHybridSlotsBatchCompatible(E[0],t)&&e(),E.push(t);continue}e(),B.push(t)}i(),e(),B.length>0&&this.flushGroup(A,B),B.length=0,Q.length=0,E.length=0}submitBackendDraw(A,g){var I;this.assertRendererAlive();const B=(I=g.stencil)!=null?I:g.shader==="clip-mask"?"write":"none";let Q=this.stencilTransactionState;if(B==="write"){if(this.stencilTransactionState==="content-tested")throw new zg("stencil write attempted after content test without clear");Q="mask-written"}else if(B==="test"){if(this.stencilTransactionState==="idle")throw new zg("stencil test attempted without a mask");Q="content-tested"}else if(B==="clear"){if(this.stencilTransactionState==="idle")throw new zg("stencil clear attempted without a mask");Q="idle"}try{const E=A.draw(g);if(E.submitted)return this.stencilTransactionState=Q,!0;const i=`${g.shader} rejected (${E.reason})${E.message?`: ${E.message}`:""}`;if(!this.emitRuntimeDiagnostic({type:"backend-operation-rejected",message:i}))throw new Hg;if(g.shader==="svga-frame-table-instanced-premul"&&(E.reason==="invalid-command"||E.reason==="missing-resource")&&!this.emitRuntimeDiagnostic({type:"atlas-command-invalid",message:i}))throw new Hg;if(B!=="none"&&!this.emitRuntimeDiagnostic({type:"stencil-transaction-failure",message:i}))throw new Hg;return!1}catch(E){if(E instanceof zg||E instanceof Hg)throw E;const i=E instanceof Error?E.message:String(E);if(!this.emitRuntimeDiagnostic({type:B==="none"?"backend-operation-rejected":"stencil-transaction-failure",message:i}))throw new Hg;return!1}}assertRendererAlive(){if(this.destroyed)throw new Hg}requireBackendDraw(A,g,I){if(!this.submitBackendDraw(A,g))throw new Error(`SVGA backend rejected ${I}`)}areDirectSlotsBatchCompatible(A,g){var I,B,Q,E;const i=A.videoEntity;if(!i||g.videoEntity!==i||((I=A.svgaFrameTableState)==null?void 0:I.binding)!==((B=g.svgaFrameTableState)==null?void 0:B.binding))return!1;const e=(Q=i.atlasTextureHandles)!=null&&Q.length?i.atlasTextureHandles:i.atlasTextureHandle?[i.atlasTextureHandle]:[],t=(E=i.svgaTimelineDrawRuns)!=null?E:[];return t.length!==1||t.some(a=>a.spriteBase<0||a.spriteCount<1||a.spriteBase+a.spriteCount>i.spriteTable.spriteCount||!e[a.textureIndex])?!1:this.areTimelineMotionBindingsCompatible(A,g)}areHybridSlotsBatchCompatible(A,g){var I,B,Q,E,i;return A.videoEntity!=null&&g.videoEntity===A.videoEntity&&((I=A.svgaFrameTableState)==null?void 0:I.binding)===((B=g.svgaFrameTableState)==null?void 0:B.binding)&&A.videoEntity.svgaHybridCommandTable===((Q=g.videoEntity)==null?void 0:Q.svgaHybridCommandTable)&&!((E=A.svgaSlotTextures)!=null&&E.size)&&!((i=g.svgaSlotTextures)!=null&&i.size)&&this.areTimelineMotionBindingsCompatible(A,g)}areTimelineMotionBindingsCompatible(A,g){const I=A.motionTrackBinding,B=g.motionTrackBinding;return!I&&!B?!0:!!I&&!!B&&I.buffer===B.buffer&&I.globalsBuffer===B.globalsBuffer&&I.sampleCount===B.sampleCount&&I.sampleIntervalMs===B.sampleIntervalMs&&I.currentTimeMs===B.currentTimeMs}rejectFastPathFrame(A){var g;this.assertRendererAlive();try{(g=this.onHybridValidationFailure)==null||g.call(this,A)}catch(I){console.error("[GiftStage:SVGA] runtime fallback callback failed",I)}throw this.assertRendererAlive(),new lI(A)}flushDirectSlots(A,g,I){var B,Q,E,i,e,t;const a=g[0],o=a==null?void 0:a.videoEntity,s=(B=o==null?void 0:o.spriteTable.spriteCount)!=null?B:0;if(!a||!o||s<1)return;const n=(Q=o.atlasTextureHandles)!=null&&Q.length?o.atlasTextureHandles:o.atlasTextureHandle?[o.atlasTextureHandle]:[],r=(E=o.svgaTimelineDrawRuns)!=null?E:[];if((r.length===0||r.some(l=>!n[l.textureIndex])||g.some(l=>{var F;return!((F=l.svgaFrameTableState)!=null&&F.binding)||this.resolveRenderableFrame(l,o)==null}))&&this.rejectFastPathFrame(o),!this.areDirectSlotsBatchCompatible(a,a)){for(const l of g)l.svgaDrawBatchMode="per-slot",l.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,l,I)||this.rejectFastPathFrame(o);return}const h=r[0],c=Math.max(1,Math.floor(jA/h.spriteCount));if(c<2){for(const l of g)l.svgaDrawBatchMode="per-slot",l.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,l,I)||this.rejectFastPathFrame(o);return}const D=n[h.textureIndex],w=(i=a.svgaFrameTableState)==null?void 0:i.binding;if(!(!D||!w)){this.ensureInstancedQuadBuffers(A);for(let l=0;l<g.length;l+=c){const F=Math.min(c,g.length-l),d=this.timelineDirectSlotDataScratch;let y=0;for(let R=0;R<F;R++){const M=g[l+R],N=this.resolveRenderableFrame(M,o);if(N==null)break;const S=this.resolveTimelineSlotState(M,N,h.spriteBase),Y=R*EI;d.set(S.subarray(0,PB),Y),d[Y+Ng.atlasPage]=h.textureIndex,d[Y+Ng.motionTrackPlusOne]=((t=(e=M.motionTrackBinding)==null?void 0:e.trackIndex)!=null?t:-1)+1,M.svgaFrameTableState.frameIndex=N,M.svgaDrawBatchMode="multi-slot",M.svgaDrawCompatibleInstanceCount=F,y++}if(y!==F){for(let R=0;R<F;R++){const M=g[l+R];M.svgaDrawBatchMode="per-slot",M.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,M,I)||this.rejectFastPathFrame(o)}continue}const G=this.timelineDrawCommand;G.vertexBuffer=this.instancedQuadVB,G.indexBuffer=this.instancedQuadIB,G.instanceCount=F*h.spriteCount,G.instanceData=void 0,G.svgaFrameTableSlotStates=d,G.svgaFrameTableSlotStateCount=F,G.svgaFrameTableSpritesPerSlot=h.spriteCount,G.svgaFrameTableSlotStateUploadId=++this.timelineSlotStateUploadId,G.stencil="none",G.svgaFrameTable=w,G.svgaFrameTableFrameCount=o.spriteTable.frameCount,G.svgaFrameTableSpriteCount=s,G.svgaFrameTableFrameIndex=a.currentFrame,G.svgaFrameTableSpriteBase=h.spriteBase,G.svgaFrameTableAtlasPage=h.textureIndex,G.svgaFrameTableSlotState=this.resolveTimelineSlotState(a,a.currentFrame,h.spriteBase),G.svgaSlotState=G.svgaFrameTableSlotState;const f=a.motionTrackBinding;G.motionTrackBuffer=f==null?void 0:f.buffer,G.motionTrackGlobalsBuffer=f==null?void 0:f.globalsBuffer,G.motionTrackSampleCount=f==null?void 0:f.sampleCount,G.motionTrackSampleIntervalMs=f==null?void 0:f.sampleIntervalMs,G.motionTrackTimeMs=f==null?void 0:f.currentTimeMs,G.motionTrackIndex=f==null?void 0:f.trackIndex,this.timelineTexturesScratch[0]=D,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=I;const u=this.submitBackendDraw(A,G);G.svgaFrameTableSlotStates=void 0,G.svgaFrameTableSlotStateCount=void 0,G.svgaFrameTableSpritesPerSlot=void 0,G.svgaFrameTableSlotStateUploadId=void 0,u||this.rejectFastPathFrame(o)}A.resetScissor()}}requiresStencil(A){var g,I,B,Q,E;for(const i of A){if(i.type!=="svga"||!i.videoEntity||i.state!=="playing"&&i.state!=="fly"&&i.state!=="stopped")continue;const e=this.resolveRenderableFrame(i,i.videoEntity);if(e==null)continue;if(i.options.svgaFrameEvaluation!=="cpu"&&!((g=i.svgaSlotTextures)!=null&&g.size)&&((I=i.svgaFrameTableState)==null?void 0:I.binding)!=null&&i.svgaFrameTableState.renderInfo.selectedPath==="gpu-hybrid"){const a=i.videoEntity.svgaHybridCommandTable;if(a){const o=(B=a.frameOffsets[e])!=null?B:0,s=(Q=a.frameOffsets[e+1])!=null?Q:o;for(let n=o;n<s;n++)if(a.operations[n]===bg)return!0;continue}}if(i.opacity<.05)continue;const t=this.getFrameClipMode(i.videoEntity,e);if(t===2||t===1&&((E=i.rotation)!=null?E:0)!==0)return!0}return!1}resolveRenderableFrame(A,g){var I;if(this.timelineRenderableFrameCache.has(A))return(I=this.timelineRenderableFrameCache.get(A))!=null?I:null;const B=A.currentFrame;if(this.isFrameClipReady(g,B))return A.svgaClipReadyFrame=B,this.timelineRenderableFrameCache.set(A,B),B;const Q=A.svgaClipReadyFrame;return Q!=null&&Q>=0&&Q<g.spriteTable.frameCount&&this.isFrameClipReady(g,Q)?(this.timelineRenderableFrameCache.set(A,Q),Q):(this.timelineRenderableFrameCache.set(A,null),null)}isFrameClipReady(A,g){var I,B,Q,E;const i=A.spriteTable;if(g<0||g>=i.frameCount)return!1;const e=A.svgaHybridCommandTable;if(e){const a=(I=e.frameOffsets[g])!=null?I:0,o=(B=e.frameOffsets[g+1])!=null?B:a;let s=!0;for(let n=a;n<o;n++){if(e.operations[n]!==bg)continue;const r=(Q=e.meshReferences[n*3+1])!=null?Q:-1;this.getClipMeshByIndex(A,r)===void 0&&(s=!1)}return s}let t=!0;for(let a=0;a<i.spriteCount;a++){const o=(a*i.frameCount+g)*$g;if(i.frameData[o+8]<.05)continue;const s=(E=i.clipPathIndex[a*i.frameCount+g])!=null?E:-1;if(s<0)continue;const n=i.clipPaths[s];if(!n||this.getClipGeometryKind(n)==="empty")continue;const r=this.clipMeshStates.get(n);if(!((r==null?void 0:r.status)==="valid"||(r==null?void 0:r.status)==="empty")){if((r==null?void 0:r.status)==="invalid"){this.handleInvalidClipMesh(A,n,r);continue}(r==null?void 0:r.status)!=="building"&&this.queueClipMeshBuild(n),t=!1}}return t}getFrameClipMode(A,g){const I=A.spriteTable;if(g<0||g>=I.frameCount)return 0;let B=this.entityFrameClipModeCache.get(A);(!B||B.length!==I.frameCount)&&(B=new Uint8Array(I.frameCount),B.fill(255),this.entityFrameClipModeCache.set(A,B));const Q=B[g];if(Q!==255)return Q;let E=0,i=!1;for(let e=0;e<I.spriteCount;e++){const t=(e*I.frameCount+g)*$g;if(I.frameData[t+8]<.05)continue;const a=this.getClipMeshForSprite(A,e,g);if(a===void 0){E=2,i=!0;break}if(!a||a.indices.length===0)continue;if(!this.getClipRect(a)||!tB(I.frameData[t+2],I.frameData[t+3],I.frameData[t+4],I.frameData[t+5])){E=2;break}E=1}return i||(B[g]=E),E}async prewarmClipMeshes(A,g={}){const I=Array.from(new Set(A.spriteTable.clipPaths.filter(B=>B.length>0&&this.getClipGeometryKind(B)!=="empty")));return I.length===0?0:this.buildMissingClipMeshes(I,g)}async prewarmClipMeshesForFrame(A,g,I={}){const B=this.collectFrameClipPaths(A.spriteTable,g);return B.length===0?0:this.buildMissingClipMeshes(B,I)}prewarmShapeMeshes(A,g){const I=new Set;let B=0;for(const Q of g.spriteTable.shapesTable){if(!(Q!=null&&Q.length)||I.has(Q))continue;I.add(Q);const E=this.getShapeMesh(Q);!E||E.indices.length===0||(this.ensureShapeMeshBuffers(A,E),B++)}return B}retainHybridMeshes(A,g){var I,B,Q,E,i,e;const t=g.svgaHybridCommandTable;if(!t)throw new Error("SVGA Hybrid command table missing");if(this.entityRetainedClipMeshes.has(g)||this.entityRetainedShapeMeshes.has(g))return;const a=new Set,o=new Set;for(let s=0;s<t.operations.length;s++){const n=t.operations[s],r=s*3;if(n===bg||n===JI){const h=this.getClipMeshByIndex(g,(I=t.meshReferences[r+1])!=null?I:-1);if(!h||h.vertices.length<6||h.indices.length<3)throw new Error("SVGA Hybrid clip mesh validation failed");a.add(h)}if(n===mI){const h=(B=t.meshReferences[r])!=null?B:-1,c=g.spriteTable.shapesTable[h],D=c?this.getShapeMesh(c):null;if(!D||D.gpuVertices.length<9||D.indices.length<3)throw new Error("SVGA Hybrid shape mesh validation failed");o.add(D)}}try{for(const s of a)this.ensureClipMeshBuffers(A,s);for(const s of o)this.ensureShapeMeshBuffers(A,s)}catch(s){for(const n of a)((Q=this.clipMeshRefCounts.get(n))!=null?Q:0)>0||(n.vertexBuf&&A.deleteBuffer(n.vertexBuf),n.indexBuf&&A.deleteBuffer(n.indexBuf),n.vertexBuf=null,n.indexBuf=null,this.clipMeshesWithBuffers.delete(n));for(const n of o)((E=this.shapeMeshRefCounts.get(n))!=null?E:0)>0||(n.vertexBuf&&A.deleteBuffer(n.vertexBuf),n.indexBuf&&A.deleteBuffer(n.indexBuf),n.vertexBuf=null,n.indexBuf=null,this.shapeMeshesWithBuffers.delete(n));throw s}for(const s of a)this.clipMeshRefCounts.set(s,((i=this.clipMeshRefCounts.get(s))!=null?i:0)+1);for(const s of o)this.shapeMeshRefCounts.set(s,((e=this.shapeMeshRefCounts.get(s))!=null?e:0)+1);this.entityRetainedClipMeshes.set(g,a),this.entityRetainedShapeMeshes.set(g,o)}releaseHybridMeshes(A,g){var I,B,Q,E;const i=this.entityRetainedClipMeshes.get(g);if(i){for(const t of i){const a=Math.max(0,((I=this.clipMeshRefCounts.get(t))!=null?I:1)-1);if(a>0){this.clipMeshRefCounts.set(t,a);continue}this.clipMeshRefCounts.delete(t),t.vertexBuf&&A.deleteBuffer(t.vertexBuf),t.indexBuf&&A.deleteBuffer(t.indexBuf),t.vertexBuf=null,t.indexBuf=null,this.clipMeshesWithBuffers.delete(t);for(const[o,s]of this.clipMeshCache)s===t&&this.clipMeshCache.delete(o)}this.entityRetainedClipMeshes.delete(g),this.entityClipMeshArrayCache.delete(g)}const e=this.entityRetainedShapeMeshes.get(g);if(e){for(const t of e){const a=Math.max(0,((B=this.shapeMeshRefCounts.get(t))!=null?B:1)-1);if(a>0){this.shapeMeshRefCounts.set(t,a);continue}this.shapeMeshRefCounts.delete(t),t.vertexBuf&&A.deleteBuffer(t.vertexBuf),t.indexBuf&&A.deleteBuffer(t.indexBuf),t.vertexBuf=null,t.indexBuf=null,this.shapeMeshesWithBuffers.delete(t)}this.entityRetainedShapeMeshes.delete(g)}for(const t of g.spriteTable.shapesTable){const a=t?this.shapeMeshCache.get(t):null;!a||((Q=this.shapeMeshRefCounts.get(a))!=null?Q:0)>0||(a.vertexBuf&&A.deleteBuffer(a.vertexBuf),a.indexBuf&&A.deleteBuffer(a.indexBuf),a.vertexBuf=null,a.indexBuf=null,this.shapeMeshesWithBuffers.delete(a))}for(const t of g.spriteTable.clipPaths){const a=this.clipMeshCache.get(t);!a||((E=this.clipMeshRefCounts.get(a))!=null?E:0)>0||(a.vertexBuf&&A.deleteBuffer(a.vertexBuf),a.indexBuf&&A.deleteBuffer(a.indexBuf),a.vertexBuf=null,a.indexBuf=null,this.clipMeshesWithBuffers.delete(a),this.clipMeshCache.delete(t))}}collectFrameClipPaths(A,g){var I;if(g<0||g>=A.frameCount)return[];const B=new Set;for(let Q=0;Q<A.spriteCount;Q++){const E=(Q*A.frameCount+g)*$g;if(A.frameData[E+8]<.05)continue;const i=(I=A.clipPathIndex[Q*A.frameCount+g])!=null?I:-1;if(i<0)continue;const e=A.clipPaths[i];e&&this.getClipGeometryKind(e)!=="empty"&&B.add(e)}return Array.from(B)}async buildMissingClipMeshes(A,g={}){var I,B;if(b(g.signal,"SVGA clip prewarm aborted"),(I=g.checkActive)==null||I.call(g),this.clipMeshDestroyed)throw cA("SVGA renderer destroyed during clip prewarm");const Q=A.find(i=>{var e;return((e=this.clipMeshStates.get(i))==null?void 0:e.status)==="invalid"});if(Q){const i=this.clipMeshStates.get(Q);throw new Error(`SVGA clip mesh remains invalid for ${Q}: ${(i==null?void 0:i.status)==="invalid"?i.reason:"unknown error"}`)}const E=A.filter(i=>!this.clipMeshStates.has(i));return E.length>0&&this.startClipMeshProducer(E,{frameBudgetMs:g.frameBudgetMs,workerTimeSliceMs:g.workerTimeSliceMs,useWorker:g.useWorker}),await this.waitForClipMeshPaths(A,g.signal),b(g.signal,"SVGA clip prewarm aborted"),(B=g.checkActive)==null||B.call(g),A.length}startClipMeshProducer(A,g){if(this.clipMeshDestroyed||A.length===0)return;const I=++this.clipMeshGeneration;for(const E of A)this.publishClipMeshState(E,{status:"building",requestId:I,generation:I,attempts:0});const B=[],Q=this.runClipMeshProducer(A,I,g,B).catch(E=>{this.clipMeshDestroyed&&Kg(E)||this.failClipMeshProducer(A,I,E,B)}).finally(()=>{this.clipMeshProducerTasks.delete(Q)});this.clipMeshProducerTasks.add(Q),Q.catch(E=>{console.error("[GiftStage:SVGA] clip mesh producer terminalization failed",E);try{this.failClipMeshProducer(A,I,E,B)}catch(i){console.error("[GiftStage:SVGA] clip mesh producer emergency terminalization failed",i)}})}async runClipMeshProducer(A,g,I,B){var Q;const E=this.clipMeshProducerController.signal;if(b(E,"SVGA clip producer aborted"),I.useWorker!==!1&&eE())try{const a=await it(A,{workerTimeSliceMs:I.workerTimeSliceMs,signal:E});b(E,"SVGA clip producer aborted");for(const o of A){const s=this.clipMeshStates.get(o);if((s==null?void 0:s.status)!=="building"||s.generation!==g)continue;const n=a.get(o);if(!n)throw new Error(`SVGA clip worker omitted mesh after validation: ${o}`);const r=lB(n);if(r)throw new Error(`SVGA clip mesh invalid for ${o}: ${r}`);this.publishClipMeshState(o,{status:"valid",mesh:n,generation:g,attempts:s.attempts+1})}return}catch(a){if(E.aborted)throw Kg(a)?a:cA("SVGA clip producer aborted");B.push({type:"clip-protocol-error",message:a instanceof Error?a.message:String(a)}),console.warn("[GiftStage:SVGA] clip mesh worker failed, using main thread",a)}const i=gg({maxBudgetMs:Math.max(1,(Q=I.frameBudgetMs)!=null?Q:8)});let e=0,t=null;for(const a of A){b(E,"SVGA clip producer aborted");const o=this.clipMeshStates.get(a);if(!((o==null?void 0:o.status)!=="building"||o.generation!==g)){try{const s=$e(a),n=s?lB(s):"triangulation produced no mesh";if(!s||n)throw new Error(n||"triangulation produced no mesh");this.publishClipMeshState(a,{status:"valid",mesh:s,generation:g,attempts:o.attempts+1})}catch(s){const n=s instanceof Error?s.message:String(s);this.publishClipMeshState(a,{status:"invalid",reason:n,generation:g,attempts:o.attempts+1}),B.push({type:"clip-mesh-invalid",message:`${a}: ${n}`}),t!=null||(t=new Error(`SVGA clip mesh invalid for ${a}: ${n}`))}e++,e<A.length&&i.shouldYield()&&(await i.yield(),b(E,"SVGA clip producer aborted"))}}if(this.emitClipProducerDiagnosticsAfterTerminal(A,g,B),t)throw t;A.length>0&&console.info(`[GiftStage:SVGA] clip mesh main prewarm paths=${A.length} built=${e}`)}failClipMeshProducer(A,g,I,B=[]){if(this.clipMeshDestroyed)return;const Q=I instanceof Error?I.message:String(I),E=[];for(const i of A){const e=this.clipMeshStates.get(i);(e==null?void 0:e.status)!=="building"||e.generation!==g||(this.publishClipMeshState(i,{status:"invalid",reason:Q,generation:g,attempts:e.attempts+1}),E.push(i))}for(const i of E)B.push({type:"clip-mesh-invalid",message:`${i}: ${Q}`});this.emitClipProducerDiagnosticsAfterTerminal(A,g,B)}emitClipProducerDiagnosticsAfterTerminal(A,g,I){if(this.clipMeshDestroyed){I.length=0;return}if(A.some(Q=>{const E=this.clipMeshStates.get(Q);return(E==null?void 0:E.status)==="building"&&E.generation===g}))throw new Error(`SVGA clip producer generation ${g} emitted diagnostics before terminalization`);for(const Q of I.splice(0))this.emitRuntimeDiagnostic(Q)}publishClipMeshState(A,g){if(this.clipMeshDestroyed)return;const I=this.clipMeshStates.get(A);I&&g.generation<I.generation||(this.clipMeshStates.set(A,g),g.status==="valid"?this.clipMeshCache.set(A,g.mesh):g.status==="empty"?this.clipMeshCache.set(A,null):this.clipMeshCache.delete(A),this.entityClipMeshArrayCache=new WeakMap,this.entityFrameClipModeCache=new WeakMap,g.status!=="building"&&this.settleClipMeshStateWaiters(A,g))}async waitForClipMeshPaths(A,g){await Promise.all(A.map(I=>this.waitForClipMeshPath(I,g)))}waitForClipMeshPath(A,g){if(this.clipMeshDestroyed)return Promise.reject(cA("SVGA renderer destroyed during clip prewarm"));const I=this.clipMeshStates.get(A);return(I==null?void 0:I.status)==="valid"||(I==null?void 0:I.status)==="empty"?Promise.resolve():(I==null?void 0:I.status)==="invalid"?Promise.reject(new Error(`SVGA clip mesh invalid for ${A}: ${I.reason}`)):g!=null&&g.aborted?Promise.reject(cA("SVGA clip prewarm aborted")):new Promise((B,Q)=>{const E={resolve:B,reject:Q,signal:g};let i=this.clipMeshStateWaiters.get(A);i||(i=new Set,this.clipMeshStateWaiters.set(A,i)),E.onAbort=()=>{i.delete(E),i.size===0&&this.clipMeshStateWaiters.delete(A),Q(cA("SVGA clip prewarm aborted"))},i.add(E),g==null||g.addEventListener("abort",E.onAbort,{once:!0})})}settleClipMeshStateWaiters(A,g){const I=this.clipMeshStateWaiters.get(A);if(I){this.clipMeshStateWaiters.delete(A);for(const B of I)B.signal&&B.onAbort&&B.signal.removeEventListener("abort",B.onAbort),g.status==="invalid"?B.reject(new Error(`SVGA clip mesh invalid for ${A}: ${g.reason}`)):B.resolve()}}queueClipMeshBuild(A){if(this.clipMeshDestroyed)return;const g=this.clipMeshStates.get(A);!A||(g==null?void 0:g.status)==="valid"||(g==null?void 0:g.status)==="empty"||(g==null?void 0:g.status)==="building"||(g==null?void 0:g.status)==="invalid"||this.pendingClipMeshPaths.has(A)||(this.pendingClipMeshPaths.add(A),this.scheduleClipMeshBuildFlush())}scheduleClipMeshBuildFlush(){if(this.clipMeshDestroyed||this.clipMeshBuildInFlight)return;this.clipMeshBuildInFlight=!0,(typeof queueMicrotask=="function"?queueMicrotask:g=>setTimeout(g,0))(()=>{this.flushPendingClipMeshBuilds()})}async flushPendingClipMeshBuilds(){if(this.clipMeshDestroyed){this.pendingClipMeshPaths.clear(),this.clipMeshBuildInFlight=!1;return}const A=Array.from(this.pendingClipMeshPaths);if(this.pendingClipMeshPaths.clear(),A.length===0){this.clipMeshBuildInFlight=!1;return}try{await this.buildMissingClipMeshes(A)}catch(g){console.warn("[GiftStage:SVGA] deferred clip mesh build failed",g)}finally{if(this.clipMeshBuildInFlight=!1,this.clipMeshDestroyed){this.pendingClipMeshPaths.clear();return}this.pendingClipMeshPaths.size>0&&this.scheduleClipMeshBuildFlush(),this.notifyClipMeshReady()}}hydrateClipMeshes(A){if(!(!A||A.size===0))for(const[g,I]of A)I!=null&&I.vertices&&I.indices&&!this.clipMeshStates.has(g)&&lB(I)==null&&this.publishClipMeshState(g,{status:"valid",mesh:I,generation:++this.clipMeshGeneration,attempts:1})}snapshotClipMeshes(A){const g=new Map;for(const I of A.spriteTable.clipPaths){if(!I||g.has(I))continue;const B=this.clipMeshCache.get(I);B!=null&&B.vertices&&B.indices&&g.set(I,{vertices:new Float32Array(B.vertices),indices:new Uint32Array(B.indices)})}return g}canUseTimelinePath(A,g,I){var B;const Q=g.videoEntity,E=g.svgaFrameTableState,i=E==null?void 0:E.binding;if(!Q||!i||i.backend!==A.type||g.options.svgaFrameEvaluation==="cpu"||g.motionTrackBinding!=null&&A.type!=="webgpu"||(B=g.svgaSlotTextures)!=null&&B.size)return!1;const e=E.renderInfo.selectedPath;return I?e===I:e==="gpu-direct"||e==="gpu-hybrid"}resolveTimelineSlotState(A,g,I,B){var Q,E,i,e,t,a,o,s,n;const r=A.videoEntity,h=A.motionTrackBinding!=null,c=Fg(A,r.params.viewBoxWidth,r.params.viewBoxHeight,this.layoutScratch,h);if(h){const m=XA(A),J=A.width*A.scale,q=A.height*A.scale,_=m==="cover"?J:Math.min(c.width,J),Z=m==="cover"?q:Math.min(c.height,q),x=-J/2+(m==="cover"?0:c.offsetX),X=-q/2+(m==="cover"?0:c.offsetY),T=this.timelineSlotStateScratch;return T[0]=c.scaleX,T[1]=0,T[2]=0,T[3]=c.scaleY,T[4]=c.offsetX-A.width*A.scale/2,T[5]=c.offsetY-A.height*A.scale/2,T[6]=1,T[7]=g,T[8]=(Q=B==null?void 0:B.x0)!=null?Q:x,T[9]=(E=B==null?void 0:B.y0)!=null?E:X,T[10]=(i=B==null?void 0:B.x1)!=null?i:x+_,T[11]=(e=B==null?void 0:B.y1)!=null?e:X+Z,T[12]=1,T[13]=I,T}const D=XA(A),w=A.width*ng(A),l=A.height*rg(A),F=D==="cover"?w:Math.min(c.width,w),d=D==="cover"?l:Math.min(c.height,l),y=D==="cover"?A.x:A.x+c.offsetX,G=D==="cover"?A.y:A.y+c.offsetY;Sg(A,y,G,F,d,this.slotScissor);const f=(t=A.rotation)!=null?t:0,u=Math.cos(f),R=Math.sin(f),M=HB(A,this.timelineOriginScratch),N=A.x+c.offsetX,S=A.y+c.offsetY,Y=N-M.x,U=S-M.y,k=this.timelineSlotStateScratch;return k[0]=u*c.scaleX,k[1]=R*c.scaleX,k[2]=-R*c.scaleY,k[3]=u*c.scaleY,k[4]=M.x+u*Y-R*U,k[5]=M.y+R*Y+u*U,k[6]=A.opacity,k[7]=g,k[8]=(a=B==null?void 0:B.x0)!=null?a:Math.floor(this.slotScissor.x),k[9]=(o=B==null?void 0:B.y0)!=null?o:Math.floor(this.slotScissor.y),k[10]=(s=B==null?void 0:B.x1)!=null?s:Math.ceil(this.slotScissor.x+this.slotScissor.w),k[11]=(n=B==null?void 0:B.y1)!=null?n:Math.ceil(this.slotScissor.y+this.slotScissor.h),k[12]=1,k[13]=I,k}resolveCachedTimelineSlotState(A,g){const I=this.timelineSlotStateCache.get(A);if((I==null?void 0:I.frame)===g)return I.state;const B=this.resolveTimelineSlotState(A,g,0).slice();return this.timelineSlotStateCache.set(A,{frame:g,state:B}),B}drawTimelineRange(A,g,I,B,Q,E,i,e="none",t,a,o=-1){var s;if(!this.canUseTimelinePath(A,g)||Q<1)return!1;const n=g.videoEntity,r=g.svgaFrameTableState,h=r.binding;this.ensureInstancedQuadBuffers(A);const c=this.timelineDrawCommand;c.vertexBuffer=this.instancedQuadVB,c.indexBuffer=this.instancedQuadIB,c.instanceCount=Q*((s=a==null?void 0:a.slotCount)!=null?s:1),c.instanceData=void 0,c.svgaFrameTableSlotStates=a==null?void 0:a.states,c.svgaFrameTableSlotStateCount=a==null?void 0:a.slotCount,c.svgaFrameTableSpritesPerSlot=a==null?void 0:a.spritesPerSlot,c.svgaFrameTableSlotStateUploadId=a==null?void 0:a.uploadId,c.stencil=e,c.svgaFrameTable=h,c.svgaFrameIndex=I,c.svgaSpriteBase=B,c.svgaFrameTableFrameCount=n.spriteTable.frameCount,c.svgaFrameTableSpriteCount=n.spriteTable.spriteCount,c.svgaFrameTableFrameIndex=I,c.svgaFrameTableSpriteBase=B,c.svgaFrameTableAtlasPage=o,c.svgaFrameTableSlotState=this.resolveTimelineSlotState(g,I,B,t),c.svgaSlotState=c.svgaFrameTableSlotState;const D=g.motionTrackBinding;c.motionTrackBuffer=D==null?void 0:D.buffer,c.motionTrackGlobalsBuffer=D==null?void 0:D.globalsBuffer,c.motionTrackSampleCount=D==null?void 0:D.sampleCount,c.motionTrackSampleIntervalMs=D==null?void 0:D.sampleIntervalMs,c.motionTrackTimeMs=D==null?void 0:D.currentTimeMs,c.motionTrackIndex=D==null?void 0:D.trackIndex,this.timelineTexturesScratch[0]=E,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=i;const w=this.submitBackendDraw(A,c);return c.svgaFrameTableSlotStates=void 0,c.svgaFrameTableSlotStateCount=void 0,c.svgaFrameTableSpritesPerSlot=void 0,c.svgaFrameTableSlotStateUploadId=void 0,r.frameIndex=I,w}drawTimelineSlot(A,g,I){var B,Q;const E=g.videoEntity;if(!E||!this.canUseTimelinePath(A,g,"gpu-direct"))return!1;const i=this.resolveRenderableFrame(g,E);if(i==null)return!1;const e=(B=E.atlasTextureHandles)!=null&&B.length?E.atlasTextureHandles:E.atlasTextureHandle?[E.atlasTextureHandle]:[];let t=!1;for(const a of(Q=E.svgaTimelineDrawRuns)!=null?Q:[]){const o=e[a.textureIndex];if(!o)continue;let s=a.spriteBase,n=a.spriteCount;for(;n>0;){const r=Math.min(jA,n);if(!this.drawTimelineRange(A,g,i,s,r,o,I,"none",void 0,void 0,a.textureIndex))return!1;t=!0,s+=r,n-=r}}return A.resetScissor(),t}getClipMeshByIndex(A,g){if(g<0)return null;const I=A.spriteTable;let B=this.entityClipMeshArrayCache.get(A);(!B||B.length!==I.clipPaths.length)&&(B=new Array(I.clipPaths.length),this.entityClipMeshArrayCache.set(A,B));const Q=B[g];if(Q!==void 0)return Q;const E=I.clipPaths[g];if(!E)return null;if(this.getClipGeometryKind(E)==="empty")return this.clipMeshStates.has(E)||this.publishClipMeshState(E,{status:"empty",generation:++this.clipMeshGeneration,attempts:0}),B[g]=null,null;const i=this.clipMeshStates.get(E);if(!i){this.queueClipMeshBuild(E);return}if(i.status!=="building")return i.status==="invalid"?this.handleInvalidClipMesh(A,E,i):i.status==="empty"?(B[g]=null,null):(B[g]=i.mesh,i.mesh)}handleInvalidClipMesh(A,g,I){var B;const Q=(B=A.svgaFrameTableState)==null?void 0:B.renderInfo.selectedPath;return(Q==="gpu-direct"||Q==="gpu-hybrid")&&this.rejectFastPathFrame(A),console.error(`[GiftStage:SVGA] invalid clip mesh treated as an empty CPU clip: ${g}`,I.reason),null}drawTimelineMesh(A,g,I,B,Q,E,i,e,t,a,o){var s,n;if(!this.canUseTimelinePath(A,g,"gpu-hybrid"))return!1;const r=g.videoEntity,h=(s=g.svgaFrameTableState)==null?void 0:s.binding;if(!h)return!1;const c=e==="svga-frame-table-shape-premul"?this.timelineShapeDrawCommand:this.timelineClipDrawCommand;c.vertexBuffer=Q,c.indexBuffer=E,c.indexCount=i,c.instanceCount=(n=o==null?void 0:o.slotCount)!=null?n:1,c.instanceData=void 0,c.svgaFrameTableSlotStates=o==null?void 0:o.states,c.svgaFrameTableSlotStateCount=o==null?void 0:o.slotCount,c.svgaFrameTableSpritesPerSlot=o==null?void 0:o.spritesPerSlot,c.svgaFrameTableSlotStateUploadId=o==null?void 0:o.uploadId,c.stencil=t,c.svgaFrameTable=h,c.svgaFrameTableFrameCount=r.spriteTable.frameCount,c.svgaFrameTableSpriteCount=r.spriteTable.spriteCount,c.svgaFrameTableFrameIndex=I,c.svgaFrameTableSpriteBase=B,c.svgaFrameTableSlotState=this.resolveTimelineSlotState(g,I,B),c.svgaSlotState=c.svgaFrameTableSlotState;const D=g.motionTrackBinding;c.motionTrackBuffer=D==null?void 0:D.buffer,c.motionTrackGlobalsBuffer=D==null?void 0:D.globalsBuffer,c.motionTrackSampleCount=D==null?void 0:D.sampleCount,c.motionTrackSampleIntervalMs=D==null?void 0:D.sampleIntervalMs,c.motionTrackTimeMs=D==null?void 0:D.currentTimeMs,c.motionTrackIndex=D==null?void 0:D.trackIndex,this.timelineTexturesScratch[0]=this.getWhiteTexture(A),this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=a;const w=this.submitBackendDraw(A,c);return c.svgaFrameTableSlotStates=void 0,c.svgaFrameTableSlotStateCount=void 0,c.svgaFrameTableSpritesPerSlot=void 0,c.svgaFrameTableSlotStateUploadId=void 0,g.svgaFrameTableState.frameIndex=I,w}flushHybridScheduledSlots(A,g,I){var B,Q,E;const i=g[0],e=i==null?void 0:i.videoEntity;if(!i||!e)return;const t=this.prepareDisjointHybridSlots(g,e);if(g.length>=2&&t==null&&this.prepareDisjointHybridSlots(g,e,!0)!=null){const n=e.svgaHybridCommandTable,r=new Map;for(let h=0;h<g.length;h++){const c=this.timelineBatchFrameScratch[h],D=(B=n.frameScheduleIds[c])!=null?B:-1;let w=r.get(D);w||(w=[],r.set(D,w)),w.push(g[h])}if(r.size>1){for(const h of r.values())this.flushHybridScheduledSlots(A,h,I);return}}if(g.length<2||t==null){for(const s of g)s.svgaDrawBatchMode="hybrid-scheduled",s.svgaDrawCompatibleInstanceCount=1,this.drawHybridScheduledSlot(A,s,I)||this.rejectFastPathFrame(e);return}const a=this.timelineBatchDataScratch;for(let s=0;s<g.length;s++){const n=g[s],r=this.timelineBatchFrameScratch[s],h=this.resolveTimelineSlotState(n,r,0),c=s*EI;a.set(h.subarray(0,PB),c),a[c+Ng.atlasPage]=-1,a[c+Ng.motionTrackPlusOne]=((E=(Q=n.motionTrackBinding)==null?void 0:Q.trackIndex)!=null?E:-1)+1,n.svgaFrameTableState.frameIndex=r,n.svgaDrawBatchMode="hybrid-scheduled",n.svgaDrawCompatibleInstanceCount=g.length}const o={states:a,slotCount:g.length,spritesPerSlot:1,uploadId:++this.timelineSlotStateUploadId};this.drawHybridScheduledOperations(A,i,t,I,o)||this.rejectFastPathFrame(e)}prepareDisjointHybridSlots(A,g,I=!1){var B;if(A.length<2||A.length*EI>this.timelineBatchDataScratch.length)return null;const Q=this.sharedSlotLayerWorksScratch;Q.length=0;const E=g.svgaHybridCommandTable;if(!E)return null;let i=-1,e=-1;for(let t=0;t<A.length;t++){const a=A[t];if(a.motionTrackBinding||a.videoEntity!==g)return Q.length=0,null;const o=this.resolveRenderableFrame(a,g),s=o==null?-1:(B=E.frameScheduleIds[o])!=null?B:-1;if(o==null||s<0||!I&&e>=0&&s!==e)return Q.length=0,null;i<0&&(i=o),e=s,this.timelineBatchFrameScratch[t]=o;const n=XA(a),r=Fg(a,g.params.viewBoxWidth,g.params.viewBoxHeight,this.layoutScratch,!1),h=a.width*ng(a),c=a.height*rg(a),D=n==="cover"?h:Math.min(r.width,h),w=n==="cover"?c:Math.min(r.height,c),l=n==="cover"?a.x:a.x+r.offsetX,F=n==="cover"?a.y:a.y+r.offsetY;Sg(a,l,F,D,w,this.slotScissor),this.updateSlotClipBounds();let d=this.sharedSlotLayerWorkPool[t];d||(d={slot:a,renderFrame:o,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0},this.sharedSlotLayerWorkPool[t]=d),d.slot=a,d.renderFrame=o,d.clipX0=this.slotClipX0,d.clipY0=this.slotClipY0,d.clipX1=this.slotClipX1,d.clipY1=this.slotClipY1;for(const y of Q)if(d.clipX1>y.clipX0&&d.clipX0<y.clipX1&&d.clipY1>y.clipY0&&d.clipY0<y.clipY1)return Q.length=0,null;Q.push(d)}return Q.length=0,i}drawHybridScheduledSlot(A,g,I){const B=g.videoEntity;if(!B)return!1;const Q=this.resolveRenderableFrame(g,B);return Q!=null?this.drawHybridScheduledOperations(A,g,Q,I):!1}drawHybridScheduledOperations(A,g,I,B,Q){var E,i,e,t,a,o,s,n,r,h,c,D,w,l,F;const d=g.videoEntity,y=d==null?void 0:d.svgaHybridCommandTable;if(!d||!y)return!1;const G=(E=y.runFrameOffsets[I])!=null?E:0,f=(i=y.runFrameOffsets[I+1])!=null?i:G,u=(e=d.atlasTextureHandles)!=null&&e.length?d.atlasTextureHandles:d.atlasTextureHandle?[d.atlasTextureHandle]:[];for(let S=G;S<f;S++){const Y=(t=y.runOperationStarts[S])!=null?t:0,U=y.runTypes[S],k=Y*3;if(U===bg||U===JI){const m=(a=y.meshReferences[k+1])!=null?a:-1,J=this.getClipMeshByIndex(d,m);if(!J||J.indices.length<3)return!1}else if(U===mI){const m=(o=y.meshReferences[k])!=null?o:-1,J=d.spriteTable.shapesTable[m],q=J?this.getShapeMesh(J):null;if(!q||q.indices.length<3)return!1}else if(U===DI||U===SB){const m=(s=y.meshReferences[k+2])!=null?s:-1;if(m<0||!u[m])return!1}}const R=(n=g.svgaFrameTableState)==null?void 0:n.binding,M=(R==null?void 0:R.backend)==="webgpu"?R.hybridSpriteMetadataBuffer:void 0,N=(R==null?void 0:R.backend)==="webgl2"?R.hybridSpriteMetadataTexture:void 0;this.timelineDrawCommand.svgaSpriteMetadata=M!=null?M:N,this.timelineDrawCommand.svgaSpriteMetadataBuffer=M,this.timelineDrawCommand.svgaSpriteMetadataTexture=N,this.timelineDrawCommand.svgaSpriteMetadataStrideFloats=II;try{Q||(g.svgaDrawBatchMode="hybrid-scheduled",g.svgaDrawCompatibleInstanceCount=1);for(let S=G;S<f;S++){const Y=(r=y.runOperationStarts[S])!=null?r:0,U=y.runTypes[S],k=(h=y.runOperationCounts[S])!=null?h:1,m=(c=y.spriteIndices[Y])!=null?c:0,J=Y*3,q=(D=y.meshReferences[J])!=null?D:-1,_=(w=y.meshReferences[J+1])!=null?w:-1,Z=(l=y.meshReferences[J+2])!=null?l:0;if(U===DI){const x=u[Z],X=Math.max(1,Math.floor(jA/((F=Q==null?void 0:Q.slotCount)!=null?F:1)));for(let T=0;T<k;T+=X){const gA=Math.min(X,k-T);if(Q&&(Q.spritesPerSlot=gA),!x||!this.drawTimelineRange(A,g,I,Y+T,gA,x,B,"none",void 0,Q))return!1}continue}if(U===SB){const x=u[Z];if(Q&&(Q.spritesPerSlot=1),!x||!this.drawTimelineRange(A,g,I,Y,1,x,B,"test",void 0,Q))return!1}else if(U===mI){const x=d.spriteTable.shapesTable[q],X=x?this.getShapeMesh(x):null;if(!X||X.indices.length===0)return!1;const T=this.ensureShapeMeshBuffers(A,X);if(Q&&(Q.spritesPerSlot=1),!this.drawTimelineMesh(A,g,I,m,T.vertexBuf,T.indexBuf,X.indices.length,"svga-frame-table-shape-premul",_>=0?"test":"none",B,Q))return!1}else if(U===bg||U===JI){const x=this.getClipMeshByIndex(d,_);if(!x||x.indices.length===0)return!1;const X=this.ensureClipMeshBuffers(A,x);if(Q&&(Q.spritesPerSlot=1),!this.drawTimelineMesh(A,g,I,m,X.vertexBuf,X.indexBuf,x.indices.length,"svga-frame-table-clip-mask",U===bg?"write":"clear",B,Q))return!1}}return!0}finally{this.timelineDrawCommand.svgaSpriteMetadata=void 0,this.timelineDrawCommand.svgaSpriteMetadataBuffer=void 0,this.timelineDrawCommand.svgaSpriteMetadataTexture=void 0,this.timelineDrawCommand.svgaSpriteMetadataStrideFloats=void 0,this.destroyed||A.resetScissor()}}flushGroup(A,g){var I,B,Q,E,i,e,t,a,o,s;if(g.length===0)return;const n=this.getProjection();if((A.type==="webgl2"||A.type==="webgpu")&&this.tryFlushDisjointSharedEntityLayers(A,g,n))return;this.spriteWorkCursor=0;const r=this.batchSpritesScratch;r.length=0;let h=null;this.slotScissorActive=!1;for(const c of g){const D=c.videoEntity,w=this.resolveRenderableFrame(c,D);if(w==null)continue;const l=D.params.viewBoxWidth,F=D.params.viewBoxHeight,d=XA(c),y=this.canUseGpuMotion(c),G=Fg(c,l,F,this.layoutScratch,y),f=G.scaleX,u=G.scaleY,R=c.width*ng(c),M=c.height*rg(c),N=d==="cover"?R:Math.min(G.width,R),S=d==="cover"?M:Math.min(G.height,M),Y=d==="cover"?c.x:c.x+G.offsetX,U=d==="cover"?c.y:c.y+G.offsetY;Sg(c,Y,U,N,S,this.slotScissor),this.updateSlotClipBounds();const k=(A.type==="webgl2"||A.type==="webgpu")&&!D.spriteTable.hasAnyShapes&&!((I=c.svgaSlotTextures)!=null&&I.size),m=!k&&d!=="cover"&&!c.rotation&&!((B=c.svgaSlotTextures)!=null&&B.size)&&D.spriteTable.allFramesInsideViewBox===!0;if(k||m)this.slotScissorActive&&(r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null),A.resetScissor(),this.slotScissorActive=!1);else{r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null);const x=this.slotScissor;A.setScissor(x.x,x.y,x.w,x.h),this.slotScissorActive=!0}const J=(Q=D.atlasTextureHandles)!=null&&Q.length?D.atlasTextureHandles:(E=D.atlasTextureHandle)!=null?E:null,q=(i=c.svgaSlotTextures)!=null?i:null,_=c.state==="stopped"&&!D.spriteTable.hasAnyShapes&&this.getFrameClipMode(D,w)===0;if(!_)c.svgaStaticBatchCache&&(c.svgaStaticBatchCache=null);else if(this.staticBatchCacheMatches(c.svgaStaticBatchCache,c,D,J,q,f,u,G.offsetX,G.offsetY,w)){h=this.drawFromStaticBatchCache(A,c.svgaStaticBatchCache,r,h,n);continue}let Z=_?[]:null;for(let x=0;x<D.spriteTable.spriteCount;x++){const X=D.spriteTable,T=(x*X.frameCount+w)*$g;if(X.frameData[T+8]*c.opacity<.05)continue;const gA=(e=X.clipPathIndex[x*X.frameCount+w])!=null?e:-1,UA=gA>=0?X.clipPaths[gA]:void 0;if(UA&&this.getClipGeometryKind(UA)==="empty")continue;const yA=Ie(X,x,w),rA=!!yA&&yA.length>0,BA=this.acquireSpriteWork(c,x,X.frameData,T,f,u,G.offsetX,G.offsetY),Ig=(t=X.imageKeys[x])!=null?t:"",QA=this.resolveSpriteTextureInto(c,Ig,BA);if(!QA&&!rA){this.spriteWorkCursor--;continue}const V=this.getClipMeshForSprite(D,x,w);if(gA>=0&&V===void 0)throw this.spriteWorkCursor--,Z=null,new Error("SVGA clip mesh is still building; discard the complete frame");if(gA>=0&&V===null){this.spriteWorkCursor--,Z=null;continue}if(rA){Z=null,r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null),V&&V.indices.length>0?(this.drawShapeFrame(A,BA,yA,V,n),QA&&this.drawClippedSprite(A,BA,V,n)):(this.drawShapeFrame(A,BA,yA,V,n),QA&&this.drawSingleSprite(A,BA,n));continue}V&&V.indices.length>0?(Z=null,r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null),this.drawClippedSprite(A,BA,V,n)):BA.override?(Z&&Z.push(this.captureStaticBatchCacheEntry(BA,!0)),r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null),this.drawSingleSprite(A,BA,n)):(Z&&Z.push(this.captureStaticBatchCacheEntry(BA,!1)),h&&h.id!==BA.handle.id&&(this.drawBatch(A,r,h,n),r.length=0,h=null),r.push(BA),h=BA.handle,r.length>=jA&&(this.drawBatch(A,r,h,n),r.length=0,h=null))}_&&(c.svgaStaticBatchCache=Z?{entries:Z,entity:D,atlasHandlesDep:J,svgaSlotTextures:q,currentFrame:w,opacity:c.opacity,x:c.x,y:c.y,width:c.width,height:c.height,scale:c.scale,motionScaleX:(a=c.motionScaleX)!=null?a:1,motionScaleY:(o=c.motionScaleY)!=null?o:1,rotation:(s=c.rotation)!=null?s:0,sx:f,sy:u,offsetX:G.offsetX,offsetY:G.offsetY}:null)}r.length>0&&this.drawBatch(A,r,h,n),r.length=0,this.releaseSpriteWorks(),this.slotScissorActive=!1,A.resetScissor()}tryFlushDisjointSharedEntityLayers(A,g,I){var B,Q,E,i,e;if(g.length<2)return!1;const t=(B=g[0])==null?void 0:B.videoEntity;if(!t||t.spriteTable.hasAnyShapes)return!1;const a=this.sharedSlotLayerWorksScratch;a.length=0;for(let r=0;r<g.length;r++){const h=g[r];if(h.videoEntity!==t||(Q=h.svgaSlotTextures)!=null&&Q.size)return a.length=0,!1;const c=this.resolveRenderableFrame(h,t);if(c==null)return a.length=0,!1;const D=XA(h),w=Fg(h,t.params.viewBoxWidth,t.params.viewBoxHeight,this.layoutScratch,this.canUseGpuMotion(h)),l=h.width*ng(h),F=h.height*rg(h),d=D==="cover"?l:Math.min(w.width,l),y=D==="cover"?F:Math.min(w.height,F),G=D==="cover"?h.x:h.x+w.offsetX,f=D==="cover"?h.y:h.y+w.offsetY;Sg(h,G,f,d,y,this.slotScissor),this.updateSlotClipBounds();let u=this.sharedSlotLayerWorkPool[r];u||(u={slot:h,renderFrame:c,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0},this.sharedSlotLayerWorkPool[r]=u),u.slot=h,u.renderFrame=c,u.sx=w.scaleX,u.sy=w.scaleY,u.offsetX=w.offsetX,u.offsetY=w.offsetY,u.clipX0=this.slotClipX0,u.clipY0=this.slotClipY0,u.clipX1=this.slotClipX1,u.clipY1=this.slotClipY1;for(const R of a)if(u.clipX1>R.clipX0&&u.clipX0<R.clipX1&&u.clipY1>R.clipY0&&u.clipY0<R.clipY1)return a.length=0,!1;a.push(u)}this.spriteWorkCursor=0,this.slotScissorActive=!1;const o=this.batchSpritesScratch;o.length=0;let s=null;const n=t.spriteTable;for(let r=0;r<n.spriteCount;r++){this.resetClipLayerBatches();for(const h of a){const c=(r*n.frameCount+h.renderFrame)*$g;if(n.frameData[c+8]*h.slot.opacity<.05)continue;const D=(E=n.clipPathIndex[r*n.frameCount+h.renderFrame])!=null?E:-1,w=D>=0?n.clipPaths[D]:void 0;if(w&&this.getClipGeometryKind(w)==="empty")continue;this.slotClipX0=h.clipX0,this.slotClipY0=h.clipY0,this.slotClipX1=h.clipX1,this.slotClipY1=h.clipY1;const l=this.acquireSpriteWork(h.slot,r,n.frameData,c,h.sx,h.sy,h.offsetX,h.offsetY),F=(i=n.imageKeys[r])!=null?i:"";if(!this.resolveSpriteTextureInto(h.slot,F,l)){this.spriteWorkCursor--;continue}const d=this.getClipMeshForSprite(t,r,h.renderFrame);if(D>=0&&d===void 0)throw this.spriteWorkCursor--,new Error("SVGA clip mesh is still building; discard the complete frame");if(D>=0&&d===null){this.spriteWorkCursor--;continue}if(!d||d.indices.length===0){s&&s.id!==l.handle.id&&(this.drawBatch(A,o,s,I),o.length=0),o.push(l),s=l.handle,o.length>=jA&&(this.drawBatch(A,o,s,I),o.length=0,s=null);continue}const y=this.getClipRect(d),G=this.resolveClipTransform(l);if(y&&((e=l.slot.rotation)!=null?e:0)===0&&tB(G.a,G.b,G.c,G.d)){this.intersectWorkClipRect(l,y,G.a,G.d,G.tx,G.ty)&&(s&&s.id!==l.handle.id&&(this.drawBatch(A,o,s,I),o.length=0),o.push(l),s=l.handle,o.length>=jA&&(this.drawBatch(A,o,s,I),o.length=0,s=null));continue}this.acquireClipLayerBatch(d,l.handle).works.push(l)}if(this.clipLayerBatchesScratch.length>0){o.length>0&&(this.drawBatch(A,o,s,I),o.length=0,s=null);for(const h of this.clipLayerBatchesScratch)if(h.works.length<2||!this.drawBatchedClipLayer(A,h.works,h.mesh,h.texture,I))for(const c of h.works)this.drawClippedSprite(A,c,h.mesh,I)}}return o.length>0&&this.drawBatch(A,o,s,I),o.length=0,this.resetClipLayerBatches(),a.length=0,this.releaseSpriteWorks(),A.resetScissor(),!0}resetClipLayerBatches(){for(const A of this.clipLayerBatchesScratch)A.works.length=0;this.clipLayerBatchesScratch.length=0}acquireClipLayerBatch(A,g){for(const Q of this.clipLayerBatchesScratch)if(Q.mesh===A&&Q.texture.id===g.id)return Q;const I=this.clipLayerBatchesScratch.length;let B=this.clipLayerBatchPool[I];return B||(B={mesh:A,texture:g,works:[]},this.clipLayerBatchPool[I]=B),B.mesh=A,B.texture=g,B.works.length=0,this.clipLayerBatchesScratch.push(B),B}resolveClipTransform(A){const{slot:g,sx:I,sy:B,offsetX:Q,offsetY:E,a:i,b:e,c:t,d:a,tx:o,ty:s}=A;return this.rotateTransform(g,i*I,e*B,t*I,a*B,o*I+g.x+Q,s*B+g.y+E)}intersectWorkClipRect(A,g,I,B,Q,E){const i=Math.max(A.clipX0,Math.floor(I*g.x+Q)),e=Math.max(A.clipY0,Math.floor(B*g.y+E)),t=Math.min(A.clipX1,Math.ceil(I*(g.x+g.w)+Q)),a=Math.min(A.clipY1,Math.ceil(B*(g.y+g.h)+E));return t<=i||a<=e?!1:(A.clipX0=i,A.clipY0=e,A.clipX1=t,A.clipY1=a,!0)}drawBatchedClipLayer(A,g,I,B,Q){const E=g.length;if(E<2||E>jA)return!1;const i=I.indices.length;if(I.vertices.length<6||i<3)return!1;const e=E*6;if(this.clipMaskBatchTransformsScratch.length<e){let F=Math.max(64,this.clipMaskBatchTransformsScratch.length);for(;F<e;)F*=2;this.clipMaskBatchTransformsScratch=new Float32Array(F)}const t=this.clipMaskBatchTransformsScratch,a=this.getClipMeshBounds(I);for(let F=0;F<E;F++){const d=g[F],y=this.resolveClipTransform(d),G=F*6;t[G]=y.a,t[G+1]=y.b,t[G+2]=y.c,t[G+3]=y.d,t[G+4]=y.tx,t[G+5]=y.ty;let f=1/0,u=1/0,R=-1/0,M=-1/0;for(let N=0;N<4;N++){const S=N&1?a.x1:a.x0,Y=N&2?a.y1:a.y0,U=y.a*S+y.c*Y+y.tx,k=y.b*S+y.d*Y+y.ty;U<f&&(f=U),k<u&&(u=k),U>R&&(R=U),k>M&&(M=k)}if(f<d.clipX0||u<d.clipY0||R>d.clipX1||M>d.clipY1)return!1}const o=g.every(F=>this.canUseTimelinePath(A,F.slot,"gpu-hybrid")&&!F.override),s=o?this.prepareTimelineWorks(A,g,E,B,Q,"test"):null;if(o&&!s)return!1;let n=null;if(!o){this.ensureInstancedQuadBuffers(A);const F=this.instancedFrameDataScratch,d=A.type==="webgl2"?"webgl2":"webgpu";for(let y=0;y<E;y++)this.packInstancedFrameData(F,y,g[y],d);n=this.clipInstancedDrawCommand,n.vertexBuffer=this.instancedQuadVB,n.indexBuffer=this.instancedQuadIB,n.instanceCount=E,n.instanceData=F,this.clipInstancedTexturesScratch[0]=B,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=Q}const r=this.ensureClipMeshBuffers(A,I),h=this.clipMaskInstancedDrawCommand;h.vertexBuffer=r.vertexBuf,h.indexBuffer=r.indexBuf,h.indexCount=i,h.instanceCount=E,h.instanceData=t,h.stencil="write",this.clipMaskInstancedUniformsScratch.u_projection=Q,this.requireBackendDraw(A,h,"batched stencil write");let c=!1,D;try{if(o){if(!this.submitPreparedTimelineWorks(A,s))throw new zg("batched timeline stencil test became unavailable after mask write")}else this.requireBackendDraw(A,n,"batched stencil test")}catch(F){c=!0,D=F}if(this.destroyed)throw D;let w=!1,l;try{h.stencil="clear",this.requireBackendDraw(A,h,"batched stencil clear")}catch(F){w=!0,l=F}if(c&&w)throw new AggregateError([D,l],"SVGA batched stencil test and clear both failed");if(c)throw D;if(w)throw l;return!0}acquireSpriteWork(A,g,I,B,Q,E,i,e){let t=this.spriteWorkPool[this.spriteWorkCursor];return t||(t={slot:A,spriteIndex:g,layoutW:0,layoutH:0,a:1,b:0,c:0,d:1,tx:0,ty:0,alpha:0,handle:null,rect:eB,override:null,sx:Q,sy:E,offsetX:i,offsetY:e,clipX0:0,clipY0:0,clipX1:0,clipY1:0,cachedRow:null,gpuMotion:!1},this.spriteWorkPool[this.spriteWorkCursor]=t),this.spriteWorkCursor++,t.slot=A,t.spriteIndex=g,t.layoutW=I[B],t.layoutH=I[B+1],t.a=I[B+2],t.b=I[B+3],t.c=I[B+4],t.d=I[B+5],t.tx=I[B+6],t.ty=I[B+7],t.alpha=I[B+8],t.sx=Q,t.sy=E,t.offsetX=i,t.offsetY=e,this.copyCurrentSlotClipToWork(t),t.cachedRow=null,t.gpuMotion=this.canUseGpuMotion(A),t}acquireCachedSpriteWork(A){let g=this.spriteWorkPool[this.spriteWorkCursor];return g||(g={slot:null,spriteIndex:-1,layoutW:0,layoutH:0,a:1,b:0,c:0,d:1,tx:0,ty:0,alpha:0,handle:A.handle,rect:eB,override:null,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0,cachedRow:null,gpuMotion:!1},this.spriteWorkPool[this.spriteWorkCursor]=g),this.spriteWorkCursor++,g.handle=A.handle,g.cachedRow=A.row,this.copyCurrentSlotClipToWork(g),g}updateSlotClipBounds(){const A=this.slotScissor,g=Math.max(0,Math.min(this.canvasWidth,Math.floor(A.x))),I=Math.max(0,Math.min(this.canvasHeight,Math.floor(A.y)));this.slotClipX0=g,this.slotClipY0=I,this.slotClipX1=Math.max(g,Math.min(this.canvasWidth,Math.ceil(A.x+A.w))),this.slotClipY1=Math.max(I,Math.min(this.canvasHeight,Math.ceil(A.y+A.h)))}copyCurrentSlotClipToWork(A){A.clipX0=this.slotClipX0,A.clipY0=this.slotClipY0,A.clipX1=this.slotClipX1,A.clipY1=this.slotClipY1}releaseSpriteWorks(){for(let A=0;A<this.spriteWorkCursor;A++){const g=this.spriteWorkPool[A];g.slot=null,g.handle=null,g.rect=eB,g.override=null,g.cachedRow=null}this.spriteWorkCursor=0}staticBatchCacheMatches(A,g,I,B,Q,E,i,e,t,a){var o,s,n;return A?A.entity===I&&A.atlasHandlesDep===B&&A.svgaSlotTextures===Q&&A.currentFrame===a&&A.opacity===g.opacity&&A.x===g.x&&A.y===g.y&&A.width===g.width&&A.height===g.height&&A.scale===g.scale&&A.motionScaleX===((o=g.motionScaleX)!=null?o:1)&&A.motionScaleY===((s=g.motionScaleY)!=null?s:1)&&A.rotation===((n=g.rotation)!=null?n:0)&&A.sx===E&&A.sy===i&&A.offsetX===e&&A.offsetY===t:!1}captureStaticBatchCacheEntry(A,g){const I=this.staticBatchCacheRowScratch;return this.packFrameData(I,0,A),{row:I.slice(),handle:A.handle,isOverride:g}}drawFromStaticBatchCache(A,g,I,B,Q){for(const E of g.entries){const i=this.acquireCachedSpriteWork(E);if(E.isOverride){I.length>0&&(this.drawBatch(A,I,B,Q),I.length=0,B=null),this.drawSingleSprite(A,i,Q);continue}B&&B.id!==E.handle.id&&(this.drawBatch(A,I,B,Q),I.length=0,B=null),I.push(i),B=E.handle,I.length>=jA&&(this.drawBatch(A,I,B,Q),I.length=0,B=null)}return B}getProjection(){return this.projCache&&this.projCacheW===this.canvasWidth&&this.projCacheH===this.canvasHeight?this.projCache:(this.projCacheW=this.canvasWidth,this.projCacheH=this.canvasHeight,this.projCache=pg(0,this.canvasWidth,this.canvasHeight,0,-1,1),this.projCache)}drawBatch(A,g,I,B){const Q=Math.min(g.length,jA);if(Q<1)return;if(A.type==="webgl2"||A.type==="webgpu"){if(this.tryDrawTimelineBatch(A,g,Q,I,B))return;this.drawBatchInstancedWebGL(A,g,Q,I,B);return}const E=this.pool.getFloat32(Q*_g);for(let w=0;w<Q;w++)this.packFrameData(E,w,g[w]);const i=Q*nI*ug,e=Q*YI,t=this.pool.getFloat32B(i),a=this.pool.getUint32(e),o=new Float32Array(E.buffer,0,Q*_g),s=new Float32Array(t.buffer,0,i),n=new Uint32Array(a.buffer,0,e);(!hI()||WB(o,s,n)===null)&&hB(o,s,n);const r=this.batchDrawCursor++,h=this.ensureVertexBuffer(A,r,s),c=this.ensureIndexBuffer(A,r,n),D=this.plainBatchDrawCommand;D.vertexBuffer=h,D.indexBuffer=c,D.indexCount=e,this.plainBatchTexturesScratch[0]=I,this.plainBatchTexturesScratch.length=1,this.plainBatchUniformsScratch.u_projection=B,this.requireBackendDraw(A,D,"CPU reference batch")}tryDrawTimelineBatch(A,g,I,B,Q){for(let e=0;e<I;e++){const t=g[e];if(t.cachedRow||t.override||t.gpuMotion||!this.canUseTimelinePath(A,t.slot,"gpu-hybrid"))return!1}const E=g[0];let i=!0;for(let e=0;e<I;e++){const t=g[e];if(t.slot!==E.slot||t.spriteIndex!==E.spriteIndex+e){i=!1;break}}if(i){const e=this.resolveRenderableFrame(E.slot,E.slot.videoEntity);return e==null?!1:this.drawTimelineRange(A,E.slot,e,E.spriteIndex,I,B,Q,"none",{x0:E.clipX0,y0:E.clipY0,x1:E.clipX1,y1:E.clipY1})}return this.drawTimelineWorks(A,g,I,B,Q)}drawTimelineWorks(A,g,I,B,Q,E="none"){const i=this.prepareTimelineWorks(A,g,I,B,Q,E);return i?this.submitPreparedTimelineWorks(A,i):!1}prepareTimelineWorks(A,g,I,B,Q,E){var i,e,t;if(I<1||I>jA)return null;const a=g[0],o=a.slot.videoEntity,s=(i=a.slot.svgaFrameTableState)==null?void 0:i.binding;if(!o||!s)return null;const n=this.timelineBatchDataScratch;for(let h=0;h<I;h++){const c=g[h];if(c.slot.videoEntity!==o||((e=c.slot.svgaFrameTableState)==null?void 0:e.binding)!==s||c.override||!this.canUseTimelinePath(A,c.slot,"gpu-hybrid"))return null;const D=this.resolveRenderableFrame(c.slot,o);if(D==null)return null;const w=this.resolveCachedTimelineSlotState(c.slot,D),l=h*EI;n.set(w.subarray(0,8),l),n[l+8]=c.clipX0,n[l+9]=c.clipY0,n[l+10]=c.clipX1,n[l+11]=c.clipY1,n[l+12]=1,n[l+Ng.metadataBase]=c.spriteIndex,n[l+Ng.atlasPage]=(t=c.rect.textureIndex)!=null?t:-1,n[l+Ng.motionTrackPlusOne]=1,c.slot.svgaFrameTableState.frameIndex=D}this.ensureInstancedQuadBuffers(A);const r=this.timelineDrawCommand;return r.vertexBuffer=this.instancedQuadVB,r.indexBuffer=this.instancedQuadIB,r.instanceCount=I,r.instanceData=n,r.stencil=E,r.svgaFrameTable=s,r.svgaFrameTableFrameCount=o.spriteTable.frameCount,r.svgaFrameTableSpriteCount=o.spriteTable.spriteCount,r.svgaFrameTableFrameIndex=a.slot.currentFrame,r.svgaFrameTableSpriteBase=0,r.svgaFrameTableSlotState=this.resolveTimelineSlotState(a.slot,a.slot.svgaFrameTableState.frameIndex,0),r.svgaSlotState=r.svgaFrameTableSlotState,r.motionTrackBuffer=void 0,r.motionTrackGlobalsBuffer=void 0,r.motionTrackSampleCount=void 0,r.motionTrackSampleIntervalMs=void 0,r.motionTrackTimeMs=void 0,r.motionTrackIndex=void 0,this.timelineTexturesScratch[0]=B,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=Q,r}submitPreparedTimelineWorks(A,g){try{return this.submitBackendDraw(A,g)}finally{g.instanceData=void 0}}canUseGpuMotion(A){var g;const I=A.videoEntity,B=A.motionTrackBinding;if(!I||!B||I.spriteTable.hasAnyShapes||I.spriteTable.allFramesInsideViewBox!==!0||(g=A.svgaSlotTextures)!=null&&g.size||A.options.objectFit==="cover"||A.options.transformOrigin)return!1;const Q=this.gpuMotionEntityEligibilityCache.get(I);if(Q!=null)return Q;for(const E of I.spriteTable.clipPathIndex)if(E>=0)return this.gpuMotionEntityEligibilityCache.set(I,!1),!1;return this.gpuMotionEntityEligibilityCache.set(I,!0),!0}drawBatchInstancedWebGL(A,g,I,B,Q){this.ensureInstancedQuadBuffers(A);const E=this.instancedFrameDataScratch,i=A.type==="webgl2"?"webgl2":"webgpu";for(let s=0;s<I;s++)this.packInstancedFrameData(E,s,g[s],i);const e=this.plainInstancedDrawCommand,t=g[0].gpuMotion?g[0].slot.motionTrackBinding:null;e.shader=A.type==="webgpu"&&t?"svga-motion-instanced-premul":"svga-instanced-premul",e.vertexBuffer=this.instancedQuadVB,e.indexBuffer=this.instancedQuadIB,e.instanceCount=I,e.instanceData=E,e.stencil="none",e.motionTrackBuffer=t==null?void 0:t.buffer,e.motionTrackGlobalsBuffer=t==null?void 0:t.globalsBuffer,e.motionTrackSampleCount=t==null?void 0:t.sampleCount,e.motionTrackSampleIntervalMs=t==null?void 0:t.sampleIntervalMs,e.motionTrackTimeMs=t==null?void 0:t.currentTimeMs;const{sx:a,sy:o}=Xg(A.canvas);e.motionTrackCssScaleX=a,e.motionTrackCssScaleY=o,this.plainInstancedTexturesScratch[0]=B,this.plainInstancedTexturesScratch.length=1,this.plainInstancedUniformsScratch.u_projection=Q,this.requireBackendDraw(A,e,"CPU reference instanced batch")}drawClippedSprite(A,g,I,B){var Q;const{slot:E,sx:i,sy:e,offsetX:t,offsetY:a,a:o,b:s,c:n,d:r,tx:h,ty:c}=g,D=this.rotateTransform(E,o*i,s*e,n*i,r*e,h*i+E.x+t,c*e+E.y+a),{a:w,b:l,c:F,d,tx:y,ty:G}=D,f=this.getClipRect(I);if(f&&((Q=E.rotation)!=null?Q:0)===0&&tB(w,l,F,d)){this.applyClipRectScissor(A,f,w,d,y,G)&&this.drawSingleSprite(A,g,B),this.restoreSlotScissor(A);return}const u=this.ensureClipMeshBuffers(A,I),R=this.packClipTransform(w,l,F,d,y,G);if(this.sharedClipStencilActive){if(A.type==="webgl2"||A.type==="webgpu"){if(!this.drawTimelineStencilTest(A,g,B)){this.ensureInstancedQuadBuffers(A);const N=this.instancedFrameDataScratch;this.packInstancedFrameData(N,0,g,A.type);const S=this.clipInstancedDrawCommand;S.vertexBuffer=this.instancedQuadVB,S.indexBuffer=this.instancedQuadIB,S.instanceData=N,this.clipInstancedTexturesScratch[0]=g.handle,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=B,this.requireBackendDraw(A,S,"shared stencil sprite test")}}else this.drawBatchSpriteWithStencilTest(A,g,B);this.clearSharedClipStencil(A,I,R,B);return}const M=this.clipMaskDrawCommand;if(M.vertexBuffer=u.vertexBuf,M.indexBuffer=u.indexBuf,M.indexCount=I.indices.length,M.stencil="write",this.clipMaskUniformsScratch.u_projection=B,this.clipMaskUniformsScratch.u_transform=R,this.requireBackendDraw(A,M,"stencil write"),A.type==="webgl2"||A.type==="webgpu"){if(!this.drawTimelineStencilTest(A,g,B)){this.ensureInstancedQuadBuffers(A);const N=this.instancedFrameDataScratch;this.packInstancedFrameData(N,0,g,A.type);const S=this.clipInstancedDrawCommand;S.vertexBuffer=this.instancedQuadVB,S.indexBuffer=this.instancedQuadIB,S.instanceData=N,this.clipInstancedTexturesScratch[0]=g.handle,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=B,this.requireBackendDraw(A,S,"stencil sprite test")}this.clearClipStencil(A,I,u,R,B);return}this.drawBatchSpriteWithStencilTest(A,g,B),this.clearClipStencil(A,I,u,R,B)}drawTimelineStencilTest(A,g,I){if(g.override||!this.canUseTimelinePath(A,g.slot,"gpu-hybrid"))return!1;const B=g.slot.videoEntity;if(!B)return!1;const Q=this.resolveRenderableFrame(g.slot,B);return Q==null?!1:this.drawTimelineRange(A,g.slot,Q,g.spriteIndex,1,g.handle,I,"test",{x0:g.clipX0,y0:g.clipY0,x1:g.clipX1,y1:g.clipY1})}drawBatchSpriteWithStencilTest(A,g,I){const B=this.clipFrameDataScratch;this.packFrameData(B,0,g);const Q=nI*ug,E=YI;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<Q)&&(this.clipSpriteVertsScratch=new Float32Array(Q)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<E)&&(this.clipSpriteIndicesScratch=new Uint32Array(E));const i=this.clipSpriteVertsScratch,e=this.clipSpriteIndicesScratch;(!hI()||WB(B,i,e)===null)&&hB(B,i,e);const t=this.clipSpriteDrawCursor++,a=this.ensureClipSpriteVertexBuffer(A,t,i.subarray(0,Q)),o=this.ensureClipSpriteIndexBuffer(A,t,e.subarray(0,E)),s=this.clipBatchDrawCommand;s.vertexBuffer=a,s.indexBuffer=o,s.indexCount=E,this.clipBatchTexturesScratch[0]=g.handle,this.clipBatchTexturesScratch.length=1,this.clipBatchUniformsScratch.u_projection=I,this.requireBackendDraw(A,s,"WebGL1 stencil sprite test")}applyClipRectScissor(A,g,I,B,Q,E){const i=I*g.x+Q,e=B*g.y+E,t=this.slotScissor,a=Math.max(i,t.x),o=Math.max(e,t.y),s=Math.min(i+I*g.w,t.x+t.w),n=Math.min(e+B*g.h,t.y+t.h);return s<=a||n<=o?!1:(A.setScissor(a,o,s-a,n-o),!0)}restoreSlotScissor(A){if(!this.slotScissorActive){A.resetScissor();return}const g=this.slotScissor;A.setScissor(g.x,g.y,g.w,g.h)}getClipRect(A){return A.rect===void 0&&(A.rect=St(A.vertices,A.indices)),A.rect}getClipMeshBounds(A){if(A.bounds)return A.bounds;const g=A.vertices;let I=1/0,B=1/0,Q=-1/0,E=-1/0;for(let i=0;i<g.length;i+=2){const e=g[i],t=g[i+1];e<I&&(I=e),t<B&&(B=t),e>Q&&(Q=e),t>E&&(E=t)}return A.bounds={x0:I,y0:B,x1:Q,y1:E},A.bounds}ensureClipMeshBuffers(A,g){if(!g.vertexBuf||!g.indexBuf){g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;const I=A.createBuffer(g.vertices,"vertex");try{const B=A.createBuffer(g.indices,"index");g.vertexBuf=I,g.indexBuf=B,this.clipMeshesWithBuffers.add(g)}catch(B){throw A.deleteBuffer(I),B}}return{vertexBuf:g.vertexBuf,indexBuf:g.indexBuf}}packClipTransform(A,g,I,B,Q,E){const i=this.clipTransformMat;return i[0]=A,i[1]=g,i[4]=I,i[5]=B,i[12]=Q,i[13]=E,i}drawSingleSprite(A,g,I){var B;if(A.type==="webgl2"||A.type==="webgpu"){const r=(B=g.slot)==null?void 0:B.videoEntity,h=r?this.resolveRenderableFrame(g.slot,r):null;if(h!=null&&this.canUseTimelinePath(A,g.slot,"gpu-hybrid")&&!g.override&&this.drawTimelineRange(A,g.slot,h,g.spriteIndex,1,g.handle,I,"none",{x0:g.clipX0,y0:g.clipY0,x1:g.clipX1,y1:g.clipY1}))return;this.ensureInstancedQuadBuffers(A);const c=this.instancedFrameDataScratch;this.packInstancedFrameData(c,0,g,A.type);const D=this.plainInstancedDrawCommand;D.vertexBuffer=this.instancedQuadVB,D.indexBuffer=this.instancedQuadIB,D.instanceCount=1,D.instanceData=c,this.plainInstancedTexturesScratch[0]=g.handle,this.plainInstancedTexturesScratch.length=1,this.plainInstancedUniformsScratch.u_projection=I,this.requireBackendDraw(A,D,"single instanced sprite");return}const Q=this.clipFrameDataScratch;this.packFrameData(Q,0,g);const E=nI*ug,i=YI;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<E)&&(this.clipSpriteVertsScratch=new Float32Array(E)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<i)&&(this.clipSpriteIndicesScratch=new Uint32Array(i));const e=this.clipSpriteVertsScratch,t=this.clipSpriteIndicesScratch;(!hI()||WB(Q,e,t)===null)&&hB(Q,e,t);const a=this.clipSpriteDrawCursor++,o=this.ensureClipSpriteVertexBuffer(A,a,e.subarray(0,E)),s=this.ensureClipSpriteIndexBuffer(A,a,t.subarray(0,i)),n=this.plainBatchDrawCommand;n.vertexBuffer=o,n.indexBuffer=s,n.indexCount=i,this.plainBatchTexturesScratch[0]=g.handle,this.plainBatchTexturesScratch.length=1,this.plainBatchUniformsScratch.u_projection=I,this.requireBackendDraw(A,n,"single CPU reference sprite")}clearClipStencil(A,g,I,B,Q){const E=this.clipMaskDrawCommand;E.vertexBuffer=I.vertexBuf,E.indexBuffer=I.indexBuf,E.indexCount=g.indices.length,E.stencil="clear",this.clipMaskUniformsScratch.u_projection=Q,this.clipMaskUniformsScratch.u_transform=B,this.requireBackendDraw(A,E,"stencil clear")}rotateTransform(A,g,I,B,Q,E,i){const e=this.affineScratch;return e.a=g,e.b=I,e.c=B,e.d=Q,e.tx=E,e.ty=i,Le(A,e,e)}packFrameData(A,g,I){this.packFrameDataAt(A,g*_g,I)}packInstancedFrameData(A,g,I,B){const Q=g*BQ;this.packFrameDataAt(A,Q,I);const E=A[Q],i=A[Q+1],e=A[Q+2],t=A[Q+3],a=A[Q+4],o=A[Q+5],s=A[Q+6],n=A[Q+7],r=A[Q+8],h=A[Q+9],c=A[Q+10],D=A[Q+11],w=A[Q+12];A[Q]=e*E,A[Q+1]=t*E,A[Q+2]=a*i,A[Q+3]=o*i,A[Q+4]=s,A[Q+5]=n,A[Q+6]=r,A[Q+7]=h,A[Q+8]=c,A[Q+9]=D,A[Q+10]=w;let l=I.clipY0,F=I.clipY1;if(B==="webgl2"){const d=l;l=this.canvasHeight-F,F=this.canvasHeight-d}this.instancedFrameDataWords[Q+11]=this.packClipCoordinatePair(I.clipX0,l),this.instancedFrameDataWords[Q+12]=this.packClipCoordinatePair(I.clipX1,F),I.gpuMotion&&I.slot.motionTrackBinding&&(A[Q+11]=I.slot.motionTrackBinding.trackIndex,A[Q+12]=0)}packClipCoordinatePair(A,g){const I=Math.max(0,Math.min(65535,A))&65535,B=Math.max(0,Math.min(65535,g))&65535;return(I|B<<16)>>>0}packFrameDataAt(A,g,I){if(I.cachedRow){A.set(I.cachedRow,g);return}const{slot:B,layoutW:Q,layoutH:E,a:i,b:e,c:t,d:a,tx:o,ty:s,alpha:n,rect:r,override:h,sx:c,sy:D,offsetX:w,offsetY:l}=I;let F=Q||(h==null?void 0:h.logicalWidth)||0,d=E||(h==null?void 0:h.logicalHeight)||0,y=0,G=0;if((h==null?void 0:h.mode)==="dynamic"){const Z=Q||h.logicalWidth,x=E||h.logicalHeight;F=h.logicalWidth,d=h.logicalHeight,y=Math.max(0,(Z-F)*.5),G=Math.max(0,(x-d)*.5)}const f=i*c,u=e*D,R=t*c,M=a*D,N=o*c+f*y+R*G,S=s*D+u*y+M*G,Y=I.gpuMotion?{a:f,b:u,c:R,d:M,tx:N+w-B.width*B.scale/2,ty:S+l-B.height*B.scale/2}:this.rotateTransform(B,f,u,R,M,N+B.x+w,S+B.y+l),{a:U,b:k,c:m,d:J,tx:q,ty:_}=Y;A[g]=F,A[g+1]=d,A[g+2]=U,A[g+3]=k,A[g+4]=m,A[g+5]=J,A[g+6]=q,A[g+7]=_,A[g+8]=n*(I.gpuMotion?1:B.opacity),A[g+9]=r.x,A[g+10]=r.y,A[g+11]=r.x+r.w,A[g+12]=r.y+r.h}resolveSpriteTextureInto(A,g,I){var B,Q,E,i,e;const t=(Q=(B=A.svgaSlotTextures)==null?void 0:B.get(g))!=null?Q:null;if(t)return I.handle=t.texture,I.rect=eB,I.override=t,!0;const a=A.videoEntity,o=a.atlasRects.get(g),s=(E=o==null?void 0:o.textureIndex)!=null?E:0,n=(e=(i=a.atlasTextureHandles)==null?void 0:i[s])!=null?e:a.atlasTextureHandle;return!o||!n?!1:(I.handle=n,I.rect=o,I.override=null,!0)}drawShapeFrame(A,g,I,B,Q){var E;const i=this.getShapeMesh(I);if(!i||i.indices.length===0)return;const{slot:e,sx:t,sy:a,offsetX:o,offsetY:s,a:n,b:r,c:h,d:c,tx:D,ty:w,alpha:l}=g,F=this.getWhiteTexture(A),d=this.rotateTransform(e,n*t,r*a,h*t,c*a,D*t+e.x+o,w*a+e.y+s),{a:y,b:G,c:f,d:u,tx:R,ty:M}=d,N=!!B&&B.indices.length>0;let S=!1,Y=null,U=null,k=!1;if(N){const q=this.getClipRect(B);if(q&&((E=e.rotation)!=null?E:0)===0&&tB(y,G,f,u)){if(!this.applyClipRectScissor(A,q,y,u,R,M)){this.restoreSlotScissor(A);return}S=!0}else{Y=this.ensureClipMeshBuffers(A,B),U=this.packClipTransform(y,G,f,u,R,M);const _=this.clipMaskDrawCommand;_.vertexBuffer=Y.vertexBuf,_.indexBuffer=Y.indexBuf,_.indexCount=B.indices.length,_.stencil="write",this.clipMaskUniformsScratch.u_projection=Q,this.clipMaskUniformsScratch.u_transform=U,this.requireBackendDraw(A,_,"shape stencil write"),k=g.handle!=null,k&&(this.sharedClipStencilActive=!0)}}const m=this.ensureShapeMeshBuffers(A,i),J=this.shapeDrawCommand;J.vertexBuffer=m.vertexBuf,J.indexBuffer=m.indexBuf,J.indexCount=i.indices.length,J.stencil=N?"test":"none",this.shapeTexturesScratch[0]=F,this.shapeTexturesScratch.length=1,this.shapeUniformsScratch.u_projection=Q,this.shapeUniformsScratch.u_transform=this.packShapeTransform(y,G,f,u,R,M),this.shapeUniformsScratch.u_opacity=l*e.opacity,this.requireBackendDraw(A,J,"shape draw"),Y&&U&&B&&!k&&this.clearClipStencil(A,B,Y,U,Q),S&&this.restoreSlotScissor(A)}clearSharedClipStencil(A,g,I,B){this.sharedClipStencilActive=!1,this.clearClipStencil(A,g,this.ensureClipMeshBuffers(A,g),I,B)}ensureShapeMeshBuffers(A,g){if(!g.vertexBuf||!g.indexBuf){g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;const I=A.createBuffer(g.gpuVertices,"vertex");try{const B=A.createBuffer(g.indices,"index");g.vertexBuf=I,g.indexBuf=B,this.shapeMeshesWithBuffers.add(g)}catch(B){throw A.deleteBuffer(I),B}}return{vertexBuf:g.vertexBuf,indexBuf:g.indexBuf}}packShapeTransform(A,g,I,B,Q,E){const i=this.shapeTransformMat;return i[0]=A,i[1]=g,i[4]=I,i[5]=B,i[12]=Q,i[13]=E,i}hasAtlasTexture(A){var g;const I=A.videoEntity;return I?!!I.atlasTextureHandle||!!((g=I.atlasTextureHandles)!=null&&g.length):!1}hasRenderableSVGA(A){if(this.hasAtlasTexture(A))return!0;const g=A.videoEntity;if(!(g!=null&&g.spriteTable))return!1;const I=this.entityHasShapesCache.get(g);if(I!==void 0)return I;const B=g.spriteTable.hasAnyShapes;return this.entityHasShapesCache.set(g,B),B}getWhiteTexture(A){return this.whiteTexture?this.whiteTexture:(this.whiteTexture=A.createTexture(new Uint8Array([255,255,255,255]).buffer,{width:1,height:1,filter:"nearest"}),this.whiteTexture)}getShapeMesh(A){var g;if(!A||A.length===0)return null;if(this.shapeMeshCache.has(A))return(g=this.shapeMeshCache.get(A))!=null?g:null;const I=[],B=[];for(const e of A)this.appendShape(e,I,B);if(I.length===0||B.length===0)return this.shapeMeshCache.set(A,null),null;const Q=new Float32Array(I),E=new Float32Array(I.length/iB*ug);for(let e=0,t=0;e<I.length;e+=iB,t+=ug)E[t]=I[e],E[t+1]=I[e+1],E[t+3]=I[e+2],E[t+4]=I[e+3],E[t+5]=I[e+4],E[t+6]=I[e+5],E[t+7]=.5,E[t+8]=.5;const i={vertices:Q,indices:new Uint32Array(B),gpuVertices:E};return this.shapeMeshCache.set(A,i),i}appendShape(A,g,I){const B=A.style.fill,Q=A.style.stroke,E=this.buildShapeSubPaths(A);for(const i of E){if(i.length<2)continue;const e=i.map(t=>({x:A.transform.a*t.x+A.transform.c*t.y+A.transform.tx,y:A.transform.b*t.x+A.transform.d*t.y+A.transform.ty}));B&&B.a>0&&e.length>=3&&this.appendFill(e,B,g,I),Q&&Q.a>0&&A.style.strokeWidth>.01&&this.appendStroke(e,Q,A.style.strokeWidth,g,I)}}buildShapeSubPaths(A){var g;if(A.kind==="path")return LB((g=A.pathData)!=null?g:"").map(I=>this.cleanupPoints(I)).filter(I=>I.length>=2);if(A.kind==="rect"&&A.rect){const I=A.rect;return[[{x:I.x,y:I.y},{x:I.x+I.width,y:I.y},{x:I.x+I.width,y:I.y+I.height},{x:I.x,y:I.y+I.height}]]}if(A.kind==="ellipse"&&A.ellipse){const I=A.ellipse,B=[],Q=40;for(let E=0;E<Q;E++){const i=E/Q*Math.PI*2;B.push({x:I.x+Math.cos(i)*I.radiusX,y:I.y+Math.sin(i)*I.radiusY})}return[B]}return[]}appendFill(A,g,I,B){const Q=this.cleanupPoints(A);if(Q.length<3)return;const E=I.length/iB;for(const e of Q)I.push(e.x,e.y,this.clamp01(g.r),this.clamp01(g.g),this.clamp01(g.b),this.clamp01(g.a));const i=Ke(Q);if(i.length>=(Q.length-2)*3)for(const e of i)B.push(E+e);else for(let e=1;e<Q.length-1;e++)B.push(E,E+e,E+e+1)}appendStroke(A,g,I,B,Q){A=this.cleanupPoints(A);const E=I*.5;for(let i=0;i<A.length;i++){const e=A[i],t=A[(i+1)%A.length],a=t.x-e.x,o=t.y-e.y,s=Math.hypot(a,o);if(s<=1e-4)continue;const n=-o/s*E,r=a/s*E,h=B.length/iB,c=this.clamp01(g.r),D=this.clamp01(g.g),w=this.clamp01(g.b),l=this.clamp01(g.a);B.push(e.x-n,e.y-r,c,D,w,l),B.push(e.x+n,e.y+r,c,D,w,l),B.push(t.x+n,t.y+r,c,D,w,l),B.push(t.x-n,t.y-r,c,D,w,l),Q.push(h,h+1,h+2,h+2,h+3,h)}}clamp01(A){return Math.max(0,Math.min(1,Number.isFinite(A)?A:0))}cleanupPoints(A){if(A.length===0)return[];const g=[],I=1e-4;let B=null;for(const Q of A){if(B){const E=Q.x-B.x,i=Q.y-B.y;if(E*E+i*i<=I)continue}g.push(Q),B=Q}if(g.length>2){const Q=g[0],E=g[g.length-1],i=Q.x-E.x,e=Q.y-E.y;i*i+e*e<=I&&g.pop()}return g}getClipGeometryKind(A){const g=this.clipGeometryKindCache.get(A);if(g)return g;const I=QE(A);return this.clipGeometryKindCache.set(A,I),I}getClipMeshForSprite(A,g,I){var B;const Q=A.spriteTable,E=(B=Q.clipPathIndex[g*Q.frameCount+I])!=null?B:-1;if(E<0)return null;let i=this.entityClipMeshArrayCache.get(A);(!i||i.length!==Q.clipPaths.length)&&(i=new Array(Q.clipPaths.length),this.entityClipMeshArrayCache.set(A,i));const e=i[E];if(e!==void 0)return e;const t=Q.clipPaths[E];if(this.getClipGeometryKind(t)==="empty")return this.clipMeshStates.has(t)||this.publishClipMeshState(t,{status:"empty",generation:++this.clipMeshGeneration,attempts:0}),i[E]=null,null;const a=this.clipMeshStates.get(t);if(!a){this.queueClipMeshBuild(t);return}if(a.status!=="building")return a.status==="invalid"?this.handleInvalidClipMesh(A,t,a):a.status==="empty"?(i[E]=null,null):(i[E]=a.mesh,a.mesh)}ensureVertexBuffer(A,g,I){const B=this.vertexBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"vertex");return this.vertexBufHandles[g]=Q,Q}}ensureIndexBuffer(A,g,I){const B=this.indexBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"index");return this.indexBufHandles[g]=Q,Q}}ensureClipSpriteVertexBuffer(A,g,I){const B=this.clipSpriteVertBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"vertex");return this.clipSpriteVertBufHandles[g]=Q,Q}}ensureClipSpriteIndexBuffer(A,g,I){const B=this.clipSpriteIdxBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"index");return this.clipSpriteIdxBufHandles[g]=Q,Q}}ensureInstancedQuadBuffers(A){this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(hC.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(hC.INSTANCED_QUAD_INDICES,"index"))}destroy(A){if(!this.destroyed){this.destroyed=!0,this.clipMeshDestroyed=!0,this.clipMeshBuildInFlight=!1,this.stencilTransactionState="idle",this.slotScissorActive=!1,this.clipMeshProducerController.abort();for(const g of this.vertexBufHandles)A.deleteBuffer(g);for(const g of this.indexBufHandles)A.deleteBuffer(g);for(const g of this.clipSpriteVertBufHandles)A.deleteBuffer(g);for(const g of this.clipSpriteIdxBufHandles)A.deleteBuffer(g);for(const g of this.clipMeshesWithBuffers)g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;this.clipMeshesWithBuffers.clear();for(const g of this.shapeMeshesWithBuffers)g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;this.shapeMeshesWithBuffers.clear(),this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.whiteTexture&&A.deleteTexture(this.whiteTexture),this.pool.destroy();for(const g of this.clipMeshStateWaiters.values())for(const I of g)I.signal&&I.onAbort&&I.signal.removeEventListener("abort",I.onAbort),I.reject(cA("SVGA renderer destroyed during clip prewarm"));this.clipMeshStateWaiters.clear(),this.clipMeshProducerTasks.clear(),this.clipMeshCache.clear(),this.clipMeshStates.clear(),this.pendingClipMeshPaths.clear(),this.vertexBufHandles=[],this.indexBufHandles=[],this.clipSpriteVertBufHandles=[],this.clipSpriteIdxBufHandles=[],this.instancedQuadVB=null,this.instancedQuadIB=null,this.whiteTexture=null,this.projCache=null}}};K(pC,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));K(pC,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let sE=pC;const CQ=1e-4;function tB(C,A,g,I){const B=Math.max(Math.abs(C),Math.abs(I));return C>0&&I>0&&Math.abs(A)<=B*CQ&&Math.abs(g)<=B*CQ}function St(C,A){if(C.length!==8||A.length!==6)return null;let g=1/0,I=1/0,B=-1/0,Q=-1/0;for(let a=0;a<8;a+=2){const o=C[a],s=C[a+1];o<g&&(g=o),o>B&&(B=o),s<I&&(I=s),s>Q&&(Q=s)}const E=B-g,i=Q-I;if(!(E>0&&i>0))return null;const e=Math.max(E,i)*1e-4+1e-6;let t=0;for(let a=0;a<8;a+=2){const o=C[a],s=C[a+1],n=Math.abs(o-g)<=e,r=Math.abs(o-B)<=e,h=Math.abs(s-I)<=e,c=Math.abs(s-Q)<=e;if(!n&&!r||!h&&!c)return null;t|=1<<((n?0:1)|(h?0:2))}return t!==15?null:{x:g,y:I,w:E,h:i}}var ft=Object.defineProperty,Mt=(C,A,g)=>A in C?ft(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,lg=(C,A,g)=>Mt(C,typeof A!="symbol"?A+"":A,g);const Nt=4,Ut=128*1024*1024,kt=2048*1024*1024,Yt="gift-stage-resource-cache",pt=3,Rg="resources",og="resourceMeta",xg="cacheState",Pg="totalBytes",QQ="byUpdatedAt",Kt=3e4;class mt{constructor(A){lg(this,"maxConcurrent"),lg(this,"active",0),lg(this,"queue",[]),this.maxConcurrent=Math.max(1,A)}setMaxConcurrent(A){this.maxConcurrent=Math.max(1,A),this.drain()}async run(A){return new Promise((g,I)=>{this.queue.push(()=>{Promise.resolve().then(A).then(g,I).finally(()=>{this.active--,this.drain()})}),this.drain()})}drain(){for(;this.active<this.maxConcurrent&&this.queue.length>0;){const A=this.queue.shift();this.active++,A==null||A()}}}function Jt(){return typeof indexedDB!="undefined"}function kg(C){return C.length*2}function Lt(C){var A,g,I;let B=256;const Q=C.imageBlob;if(Q)B+=Q.byteLength;else for(const i of Object.values((A=C.images)!=null?A:{}))B+=i.byteLength;for(const i of(g=C.imageEntries)!=null?g:[])B+=kg(i.key)+16;for(const i of C.audios)B+=kg(i.audioKey)+32;const E=C.spriteTable;(!Q||E.frameData.buffer!==Q)&&(B+=E.frameData.byteLength),(!Q||E.clipPathIndex.buffer!==Q)&&(B+=E.clipPathIndex.byteLength),(!Q||E.shapesIndex.buffer!==Q)&&(B+=E.shapesIndex.byteLength);for(const i of E.imageKeys)B+=kg(i);for(const i of E.clipPaths)B+=kg(i);for(const i of E.shapesTable)for(const e of i)B+=kg((I=e.pathData)!=null?I:"")+96;return B}function Ht(C){return typeof C=="string"?kg(C):C.byteLength}class xt{constructor(){lg(this,"limiter",new mt(Nt)),lg(this,"pending",new Map),lg(this,"memory",new Map),lg(this,"memoryBytes",0),lg(this,"maxMemoryBytes",Ut),lg(this,"maxPersistentBytes",kt),lg(this,"dbPromise",null),lg(this,"persistentTrimPromise",null)}configure(A){(A==null?void 0:A.maxConcurrent)!=null&&this.limiter.setMaxConcurrent(A.maxConcurrent),(A==null?void 0:A.maxMemoryBytes)!=null&&A.maxMemoryBytes>0&&(this.maxMemoryBytes=A.maxMemoryBytes,this.trimMemory()),(A==null?void 0:A.maxPersistentBytes)!=null&&A.maxPersistentBytes>0&&(this.maxPersistentBytes=A.maxPersistentBytes,this.schedulePersistentTrim())}runLimited(A){return this.limiter.run(A)}async fetchArrayBuffer(A,g){const I=`ab:${A}`,B=this.getMemory(I,"arrayBuffer");if(B)return B.slice(0);const Q=await this.getPersistent(I,"arrayBuffer");return Q?(this.setMemory(I,"arrayBuffer",Q,Q.byteLength),Q.slice(0)):(await this.getOrCreatePending(I,()=>this.limiter.run(async()=>{const i=await fetch(A,{mode:"cors",signal:g});if(!i.ok)throw new Error(`fetch failed ${i.status}`);const e=await i.arrayBuffer();return this.setMemory(I,"arrayBuffer",e,e.byteLength),this.setPersistent(I,"arrayBuffer",e.slice(0)),e}))).slice(0)}async fetchText(A,g){const I=`text:${A}`,B=this.getMemory(I,"text");if(B!=null)return B;const Q=await this.getPersistent(I,"text");return Q!=null?(this.setMemory(I,"text",Q,kg(Q)),Q):this.getOrCreatePending(I,()=>this.limiter.run(async()=>{const E=await fetch(A,{mode:"cors",signal:g});if(!E.ok)throw new Error(`fetch failed ${E.status}`);const i=await E.text();return this.setMemory(I,"text",i,kg(i)),this.setPersistent(I,"text",i),i}))}async fetchJSON(A,g){const I=`json:${A}`,B=this.getMemory(I,"json");if(B!=null)return B;const Q=await this.fetchText(A,g),E=JSON.parse(Q);return this.setMemory(I,"json",E,kg(Q)),E}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,g){this.setMemory(A,"svga-payload",g,Lt(g))}getMemoryValue(A,g){return this.getMemory(A,g)}setMemoryValue(A,g,I,B){this.setMemory(A,g,I,B)}getPersistedArrayBuffer(A){return this.getPersistent(A,"arrayBuffer")}setPersistedArrayBuffer(A,g){return this.setPersistent(A,"arrayBuffer",g)}deletePersistedValue(A){return this.deletePersistent(A)}getOrCreatePending(A,g){const I=this.pending.get(A);if(I)return I;const B=g().finally(()=>{this.pending.delete(A)});return this.pending.set(A,B),B}getMemory(A,g){const I=this.memory.get(A);return!I||I.kind!==g?null:(this.memory.delete(A),this.memory.set(A,I),I.value)}setMemory(A,g,I,B){const Q=this.memory.get(A);Q&&(this.memoryBytes-=Q.size,this.memory.delete(A)),this.memory.set(A,{key:A,kind:g,size:Math.max(0,B),value:I}),this.memoryBytes+=Math.max(0,B),this.trimMemory()}trimMemory(){for(;this.memoryBytes>this.maxMemoryBytes&&this.memory.size>0;){const A=this.memory.keys().next().value;if(!A)break;const g=this.memory.get(A);if(!g)break;this.memoryBytes-=g.size,this.memory.delete(A)}}async openDb(){return Jt()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const g=indexedDB.open(Yt,pt);g.onupgradeneeded=()=>{const I=g.result;for(const E of[Rg,og,xg])I.objectStoreNames.contains(E)&&I.deleteObjectStore(E);I.createObjectStore(Rg,{keyPath:"key"}),I.createObjectStore(og,{keyPath:"key"}).createIndex(QQ,"updatedAt",{unique:!1}),I.createObjectStore(xg,{keyPath:"key"}).put({key:Pg,totalBytes:0})},g.onsuccess=()=>A(g.result),g.onerror=()=>A(null),g.onblocked=()=>A(null)}catch(g){A(null)}})),this.dbPromise):null}async getPersistent(A,g){const I=await this.openDb();return I?new Promise(B=>{try{const Q=I.transaction([Rg,og],"readonly");Q.onerror=()=>B(null),Q.onabort=()=>B(null);const i=Q.objectStore(Rg).get(A);i.onsuccess=()=>{const e=i.result;if(!e||e.kind!==g){B(null);return}const t=Q.objectStore(og).get(A);t.onsuccess=()=>{const a=t.result;if((!a||Date.now()-a.updatedAt>=Kt)&&this.touchPersistent(A,g),g==="arrayBuffer"){B(e.value);return}B(e.value)},t.onerror=()=>B(e.value)},i.onerror=()=>B(null)}catch(Q){B(null)}}):null}async setPersistent(A,g,I){const B=await this.openDb();if(!B)return;const Q=Ht(I);await new Promise(E=>{try{const i=B.transaction([Rg,og,xg],"readwrite");i.oncomplete=()=>E(),i.onerror=()=>E(),i.onabort=()=>E();const e=i.objectStore(Rg),t=i.objectStore(og),a=i.objectStore(xg),o=t.get(A);o.onsuccess=()=>{const s=o.result,n=a.get(Pg);n.onsuccess=()=>{var r,h;const c=n.result,D=Math.max(0,((r=c==null?void 0:c.totalBytes)!=null?r:0)-((h=s==null?void 0:s.sizeBytes)!=null?h:0)+Q);e.put({key:A,kind:g,value:I}),t.put({key:A,kind:g,sizeBytes:Q,updatedAt:Date.now()}),a.put({key:Pg,totalBytes:D})}}}catch(i){E()}}),this.schedulePersistentTrim()}async touchPersistent(A,g){const I=await this.openDb();I&&await new Promise(B=>{try{const Q=I.transaction(og,"readwrite");Q.oncomplete=()=>B(),Q.onerror=()=>B(),Q.onabort=()=>B();const E=Q.objectStore(og),i=E.get(A);i.onsuccess=()=>{const e=i.result;!e||e.kind!==g||E.put({...e,updatedAt:Date.now()})}}catch(Q){B()}})}schedulePersistentTrim(){this.persistentTrimPromise||(this.persistentTrimPromise=this.trimPersistent().finally(()=>{this.persistentTrimPromise=null}))}async trimPersistent(){const A=await this.openDb();A&&await new Promise(g=>{try{const I=A.transaction([Rg,og,xg],"readwrite");I.oncomplete=()=>g(),I.onerror=()=>g(),I.onabort=()=>g();const B=I.objectStore(Rg),Q=I.objectStore(og),E=I.objectStore(xg),i=E.get(Pg);i.onsuccess=()=>{var e;const t=i.result;let a=Math.max(0,(e=t==null?void 0:t.totalBytes)!=null?e:0);if(a<=this.maxPersistentBytes)return;const o=Q.index(QQ).openCursor();o.onsuccess=()=>{const s=o.result;if(!s||a<=this.maxPersistentBytes){E.put({key:Pg,totalBytes:a});return}const n=s.value;B.delete(n.key),s.delete(),a=Math.max(0,a-n.sizeBytes),s.continue()}}}catch(I){g()}})}async deletePersistent(A){const g=await this.openDb();g&&await new Promise(I=>{try{const B=g.transaction([Rg,og,xg],"readwrite");B.oncomplete=()=>I(),B.onerror=()=>I(),B.onabort=()=>I();const Q=B.objectStore(Rg),E=B.objectStore(og),i=B.objectStore(xg),e=E.get(A);e.onsuccess=()=>{const t=e.result,a=i.get(Pg);a.onsuccess=()=>{var o,s;const n=a.result;Q.delete(A),E.delete(A),i.put({key:Pg,totalBytes:Math.max(0,((o=n==null?void 0:n.totalBytes)!=null?o:0)-((s=t==null?void 0:t.sizeBytes)!=null?s:0))})}}}catch(B){I()}})}}const yg=new xt;function bt(C){yg.configure(C)}function cC(C){return yg.runLimited(C)}function BI(C,A){return yg.fetchArrayBuffer(C,A)}function qt(C,A){return yg.fetchJSON(C,A)}function KC(C){return yg.getSVGAWorkerPayload(C)}function EQ(C,A){yg.setSVGAWorkerPayload(C,A)}function vt(C,A){return yg.getMemoryValue(C,A)}function nE(C,A,g,I){yg.setMemoryValue(C,A,g,I)}function Tt(C){return yg.getPersistedArrayBuffer(C)}function Wt(C,A){return yg.setPersistedArrayBuffer(C,A)}function Vt(C){return yg.deletePersistedValue(C)}async function DC(C){const A=typeof C=="string"?await qt(C):C;if(!A.info)throw new Error("VAP config missing info");if(!A.info.rgbFrame||!A.info.aFrame)throw new Error("VAP config missing rgbFrame or aFrame");return A}function AI(C,A={w:0,h:0}){const[,,g,I]=C.rgbFrame,B=C.w>0?C.w:g,Q=C.h>0?C.h:I;return A.w=B>0&&Q>0?B:C.videoW,A.h=B>0&&Q>0?Q:C.videoH,A}function RI(C,A,g,I={left:0,right:0,top:0,bottom:0}){const[B,Q,E,i]=C;return I.left=B/A,I.right=(B+E)/A,I.top=(g-Q)/g,I.bottom=(g-Q-i)/g,I}var Zt=Object.defineProperty,Xt=(C,A,g)=>A in C?Zt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,WA=(C,A,g)=>Xt(C,typeof A!="symbol"?A+"":A,g);class rE{constructor(A){WA(this,"onFrameAvailable"),WA(this,"frameInfo",new Map),WA(this,"pending",new Set),WA(this,"lastHandle",new Map),WA(this,"started",new Set),WA(this,"firstUploaded",new Set),WA(this,"forceTimeFallback",new Set),WA(this,"lastArmAt",new Map),WA(this,"lastCallbackAt",new Map),WA(this,"lastProgressAt",new Map),WA(this,"lastRecoveryAt",new Map),WA(this,"stallLogged",new Set),WA(this,"stagnationLogged",new Set),WA(this,"lastTimeFallback",new Map),WA(this,"healthTimers",new Map),this.onFrameAvailable=A}preUpload(A,g){const I=g.currentTime;if(typeof g.requestVideoFrameCallback!="function"||this.forceTimeFallback.has(A)){if(!this.firstUploaded.has(A))return this.firstUploaded.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),typeof g.requestVideoFrameCallback=="function"&&this.debugInfo(A,"initial upload using time fallback",g),!0;const a=this.consumeTimeAdvance(A,I);if(a)this.stagnationLogged.has(A)&&(this.stagnationLogged.delete(A),this.debugInfo(A,"time fallback progress resumed",g));else if(this.forceTimeFallback.has(A)&&!this.stagnationLogged.has(A)&&!g.paused&&!g.ended){const o=this.lastProgressAt.get(A);o!==void 0&&performance.now()-o>1e3&&(this.stagnationLogged.add(A),this.debugWarn(A,"time fallback has no progress",g,{lastProgressAgeMs:Math.round(performance.now()-o)}))}return a}this.ensureRvf(A,g);const B=performance.now(),Q=this.lastCallbackAt.get(A),E=this.lastArmAt.get(A),i=Q!=null?Q:E,e=this.lastTimeFallback.get(A),t=e!==void 0&&Math.abs(I-e)>1e-4;return this.firstUploaded.has(A)&&i!==void 0&&B-i>500&&!g.paused&&!g.ended&&(this.stallLogged.has(A)||(this.stallLogged.add(A),this.debugWarn(A,"rVFC stalled for slot",g,{stallAgeMs:Math.round(B-i),lastCallbackAgeMs:Q!==void 0?Math.round(B-Q):null,lastArmAgeMs:E!==void 0?Math.round(B-E):null,timeAdvanced:t})),this.tryRecoverStalledPlayback(A,g,I,B),this.started.delete(A),this.ensureRvf(A,g),t)?(this.forceTimeFallback.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),this.debugWarn(A,"switching slot to time fallback",g,{stallAgeMs:Math.round(B-i)}),!0):this.firstUploaded.has(A)?this.pending.has(A)?(this.pending.delete(A),this.lastTimeFallback.set(A,I),this.markProgress(A),(this.stallLogged.delete(A)||this.forceTimeFallback.delete(A))&&(this.stagnationLogged.delete(A),this.debugInfo(A,"rVFC progress resumed",g)),!0):!1:(this.firstUploaded.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),!0)}getFrameInfo(A){return this.frameInfo.get(A)}ensureRvf(A,g){if(this.started.has(A))return;this.started.add(A),this.ensureHealthTimer(A,g);const I=(B,Q)=>{var E;this.frameInfo.set(A,Q),this.lastCallbackAt.set(A,performance.now()),this.pending.add(A),(E=this.onFrameAvailable)==null||E.call(this,g);try{this.lastArmAt.set(A,performance.now());const i=g.requestVideoFrameCallback(I);this.lastHandle.set(A,i)}catch(i){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback re-arm failed",g)}};try{this.lastArmAt.set(A,performance.now());const B=g.requestVideoFrameCallback(I);this.lastHandle.set(A,B)}catch(B){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback initial arm failed",g)}}ensureHealthTimer(A,g){if(this.healthTimers.has(A))return;const I=setInterval(()=>{var B;g.paused||g.ended||(B=this.onFrameAvailable)==null||B.call(this,g)},500);this.healthTimers.set(A,I)}consumeTimeAdvance(A,g){const I=this.lastTimeFallback.get(A);return I===void 0||Math.abs(g-I)>1e-4?(this.lastTimeFallback.set(A,g),this.markProgress(A),!0):!1}markProgress(A){this.lastProgressAt.set(A,performance.now())}tryRecoverStalledPlayback(A,g,I,B){if(g.paused||g.ended||g.seeking)return;const Q=this.lastRecoveryAt.get(A);if(Q!==void 0&&B-Q<1500)return;this.lastRecoveryAt.set(A,B);const E=Number.isFinite(g.duration)?g.duration:NaN,i=Number.isFinite(E)&&E>0,e=i?Math.min(Math.max(0,E-.001),I+.001):I;try{i&&e>I&&(g.currentTime=e)}catch(t){}try{const t=g.play();t&&typeof t.catch=="function"&&t.catch(()=>{})}catch(t){}this.debugWarn(A,"attempting stalled video recovery",g,{currentTime:I,nudgedTime:e,readyState:g.readyState})}debugInfo(A,g,I,B){console.info("[GiftStage:VideoGate]",g,this.snapshot(A,I,B))}debugWarn(A,g,I,B){console.warn("[GiftStage:VideoGate]",g,this.snapshot(A,I,B))}snapshot(A,g,I){return{slotId:A,currentTime:Number(g.currentTime.toFixed(3)),readyState:g.readyState,networkState:g.networkState,paused:g.paused,ended:g.ended,seeking:g.seeking,playbackRate:g.playbackRate,forceTimeFallback:this.forceTimeFallback.has(A),pending:this.pending.has(A),...I}}release(A,g){if(!g){this.cleanup(A);return}const I=this.lastHandle.get(A);if(I!=null)try{g.cancelVideoFrameCallback(I)}catch(B){}this.cleanup(A)}cleanup(A){const g=this.healthTimers.get(A);g!=null&&clearInterval(g),this.healthTimers.delete(A),this.frameInfo.delete(A),this.lastHandle.delete(A),this.started.delete(A),this.pending.delete(A),this.firstUploaded.delete(A),this.forceTimeFallback.delete(A),this.lastArmAt.delete(A),this.lastCallbackAt.delete(A),this.lastProgressAt.delete(A),this.lastRecoveryAt.delete(A),this.stallLogged.delete(A),this.stagnationLogged.delete(A),this.lastTimeFallback.delete(A)}}const hE=new Float32Array([0,0,1,1]);function fB(C,A,g,I){const B=I!=null?I:new Float32Array(4);return!g||C<=0||A<=0?(B[0]=0,B[1]=0,B[2]=1,B[3]=1,B):(B[0]=g.x/C,B[1]=g.y/A,B[2]=g.w/C,B[3]=g.h/A,B)}const Ot=3;function Pt(){return typeof document!="undefined"&&typeof document.createElement=="function"}function wI(C,A){if(!Pt())throw new Error("Canvas rendering is unavailable in this environment");const g=document.createElement("canvas");return g.width=Math.max(1,Math.round(C)),g.height=Math.max(1,Math.round(A)),g}function FI(C,A){const g=C.getContext("2d",A);if(!g)throw new Error("Failed to acquire 2D canvas context");return g}let jB=null;function jt(){return jB||(jB=FI(wI(1,1))),jB}function cE(C){return!!C&&typeof C=="object"&&typeof C.text=="string"}function zt(C){return!!C&&typeof C=="object"&&"image"in C}function DE(C){return!!C&&typeof C=="object"&&"image"in C}function iQ(C){return!C||typeof C!="object"?!1:typeof HTMLCanvasElement!="undefined"&&C instanceof HTMLCanvasElement||typeof HTMLImageElement!="undefined"&&C instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&C instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas||typeof HTMLVideoElement!="undefined"&&C instanceof HTMLVideoElement||typeof VideoFrame!="undefined"&&C instanceof VideoFrame||typeof ImageData!="undefined"&&C instanceof ImageData}function MB(C){return new Promise((A,g)=>{const I=new Image;I.crossOrigin="anonymous",I.onload=()=>A(I),I.onerror=()=>g(new Error(`Failed to load image: ${C}`)),I.src=C})}function yI(C){if(typeof HTMLImageElement!="undefined"&&C instanceof HTMLImageElement)return{width:C.naturalWidth||C.width,height:C.naturalHeight||C.height};if(typeof HTMLCanvasElement!="undefined"&&C instanceof HTMLCanvasElement)return{width:C.width,height:C.height};if(typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas)return{width:C.width,height:C.height};if(typeof ImageBitmap!="undefined"&&C instanceof ImageBitmap)return{width:C.width,height:C.height};if(C&&typeof C=="object"&&"videoWidth"in C&&typeof C.videoWidth=="number")return{width:C.videoWidth,height:C.videoHeight};if(C&&typeof C=="object"&&"displayWidth"in C&&typeof C.displayWidth=="number")return{width:C.displayWidth||C.codedWidth,height:C.displayHeight||C.codedHeight};const A=C;return typeof A.width=="number"&&typeof A.height=="number"?{width:A.width,height:A.height}:{width:0,height:0}}function lC(C){if(typeof ImageData!="undefined"&&C instanceof ImageData){const A=wI(C.width,C.height);return FI(A).putImageData(C,0,0),A}return C}function _t(C){const A=/^\[(.+)\]$/.exec(C);return A?A[1]:C}function $t(C,A,g){var I,B;return C?typeof C=="string"?{font:C,color:g}:{font:(I=C.font)!=null?I:A,color:(B=C.color)!=null?B:g}:{font:A,color:g}}function GI(C){return typeof C=="number"&&Number.isFinite(C)&&C>0}function Aa(C,A){const g=Math.max(1,Math.round(A*100)/100);return/\d+(?:\.\d+)?px\b/.test(C)?C.replace(/\d+(?:\.\d+)?px\b/,`${g}px`):`${g}px ${C}`}function ga(C){const A=typeof C=="string"?C:C==null?void 0:C.font,g=A?/(\d+(?:\.\d+)?)px\b/.exec(A):null;if(!g)return;const I=Number(g[1]);return GI(I)?I:void 0}function eQ(C,A,g,I){const B=C.measureText(A),Q=B.width/g,E=(B.actualBoundingBoxAscent||0)+(B.actualBoundingBoxDescent||0),i=E>0?E/g:I;return{width:Math.max(1,Q),height:Math.max(1,i)}}function Ia(C,A,g,I,B,Q,E,i){let e=Math.max(1,Math.min(E,i)),t=Math.max(e,i),a=e,o={width:1,height:1};for(let s=0;s<16;s++){const n=(e+t)*.5;C.font=I(n);const r=eQ(C,A,g,n);r.width<=B&&r.height<=Q?(a=n,o=r,e=n):t=n}return C.font=I(a),o=eQ(C,A,g,a),{fontSize:a,metrics:o}}function lE(C,A,g,I){var B,Q,E,i,e,t;const a=Math.max(1,I.scale||1),o=Math.max(1,Math.round(C)),s=Math.max(1,Math.round(A)),n=jt(),r=(B=I.color)!=null?B:"#ffffff",h=Math.max(0,(Q=I.padding)!=null?Q:2),c=Math.max(1,o-h*2),D=Math.max(1,s-h*2),w=Math.max(1,(e=(i=(E=I.maxFontSize)!=null?E:I.fontSize)!=null?i:ga(I.fontStyle))!=null?e:Math.max(8,D)),l=Math.max(1,Math.min((t=I.minFontSize)!=null?t:8,w)),F=r,d=`${I.style==="b"?"bold ":""}${w*a}px Arial`,y=$t(I.fontStyle,d,F),G=S=>Aa(y.font,S*a),f=Ia(n,g,a,G,c,D,l,GI(I.fontSize)?Math.min(I.fontSize,w):w),u=I.sizing==="intrinsic"?Math.max(1,Math.min(o,Math.ceil(f.metrics.width+h*2))):o,R=I.sizing==="intrinsic"?Math.max(1,Math.min(s,Math.ceil(f.metrics.height+h*2))):s,M=wI(u*a,R*a),N=FI(M);return N.clearRect(0,0,M.width,M.height),N.textAlign="center",N.textBaseline="middle",N.font=G(f.fontSize),N.fillStyle=y.color,N.fillText(g,M.width/2,M.height/2),{canvas:M,logicalWidth:u,logicalHeight:R}}async function Ba(C,A,g,I){var B,Q,E,i,e,t;const a=C.spriteTable,o=new Set(A),s=new Map;for(let h=0;h<a.imageKeys.length;h++){const c=a.imageKeys[h];o.has(c)&&s.set(c,h)}const n=new Map,{frameCount:r}=a;for(const h of A){const c=s.get(h);if(c==null){const y=C.atlasRects.get(h);n.set(h,{width:(y==null?void 0:y.w)||1,height:(y==null?void 0:y.h)||1,renderScale:1});continue}let D=0,w=0,l=Number.POSITIVE_INFINITY;for(let y=0;y<r;y++){const G=(c*r+y)*9,f=(B=a.frameData[G])!=null?B:0,u=(Q=a.frameData[G+1])!=null?Q:0,R=(E=a.frameData[G+2])!=null?E:1,M=(i=a.frameData[G+3])!=null?i:0,N=(e=a.frameData[G+4])!=null?e:0,S=(t=a.frameData[G+5])!=null?t:1;if(D=Math.max(D,f),w=Math.max(w,u),f>0&&u>0){const Y=Math.abs(R)*f+Math.abs(N)*u,U=Math.abs(M)*f+Math.abs(S)*u,k=Y>0?Y/f:1,m=U>0?U/u:1,J=Math.min(k||1,m||1);GI(J)&&(l=Math.min(l,J))}y+1<r&&g.shouldYield()&&(await g.yield(),I==null||I())}const F=GI(l)?l:1,d=C.atlasRects.get(h);n.set(h,{width:D||(d==null?void 0:d.w)||1,height:w||(d==null?void 0:d.h)||1,renderScale:F})}return n}function zB(C,A){if(GI(C))return!GI(A)||A===1?C:C/A}async function Ca(C,A,g,I=1){var B,Q,E;if(cE(C)){const e=(B=C.mode)!=null?B:"dynamic",t=lE(A,g,C.text,{scale:(Q=C.scale)!=null?Q:Ot,color:C.color,style:C.style,fontStyle:C.fontStyle,fontSize:zB(C.fontSize,I),minFontSize:zB(C.minFontSize,I),maxFontSize:zB(C.maxFontSize,I),padding:C.padding,sizing:e==="dynamic"?"intrinsic":"box"});return{source:t.canvas,mode:e,logicalWidth:t.logicalWidth,logicalHeight:t.logicalHeight}}if(zt(C)){const e=typeof C.image=="string"?await MB(C.image):C.image,t=yI(e);return{source:e,mode:(E=C.mode)!=null?E:"replace",logicalWidth:Math.max(1,t.width||A),logicalHeight:Math.max(1,t.height||g)}}if(typeof C=="string"){const e=await MB(C),t=yI(e);return{source:e,mode:"replace",logicalWidth:Math.max(1,t.width||A),logicalHeight:Math.max(1,t.height||g)}}const i=yI(C);return{source:C,mode:"replace",logicalWidth:Math.max(1,i.width||A),logicalHeight:Math.max(1,i.height||g)}}async function Qa(C,A,g,I={}){var B,Q,E;const i=new Map;if(!g)return i;const e=Object.entries(g),t=gg({maxBudgetMs:I.frameBudgetMs}),a=await Ba(A,e.map(([o])=>o),t,I.checkActive);for(let o=0;o<e.length;o++){const[s,n]=e[o];(B=I.checkActive)==null||B.call(I);const r=(Q=a.get(s))!=null?Q:{width:1,height:1,renderScale:1},h=await Ca(n,r.width,r.height,r.renderScale),c=yI(h.source),D=c.width||r.width,w=c.height||r.height,l=C.createTexture(h.source,{width:D,height:w,filter:"linear",premultiplyAlpha:!0});i.set(s,{texture:l,mode:h.mode,logicalWidth:h.logicalWidth,logicalHeight:h.logicalHeight}),o+1<e.length&&t.shouldYield()&&(await t.yield(),(E=I.checkActive)==null||E.call(I))}return i}function Ea(C,A){var g,I;if(!A)return;const B=String(C.srcId),Q=C.srcTag,E=_t(C.srcTag);return(I=(g=A[Q])!=null?g:A[E])!=null?I:A[B]}function ia(C,A,g){var I,B,Q,E,i,e;const t=typeof A=="string"?A:A.text,a=(I=g==null?void 0:g.width)!=null?I:C.w&&C.w>0?C.w:1,o=(B=g==null?void 0:g.height)!=null?B:C.h&&C.h>0?C.h:1,s=lE(a,o,t,{scale:typeof A=="string"?1:(Q=A.scale)!=null?Q:1,color:typeof A=="string"?C.color:(E=A.color)!=null?E:C.color,style:typeof A=="string"?C.style:(i=A.style)!=null?i:C.style,fontStyle:typeof A=="string"?C.fontStyle:(e=A.fontStyle)!=null?e:C.fontStyle,fontSize:typeof A=="string"?void 0:A.fontSize,minFontSize:typeof A=="string"?void 0:A.minFontSize,maxFontSize:typeof A=="string"?void 0:A.maxFontSize,padding:typeof A=="string"?void 0:A.padding,sizing:"box"});return{source:s.canvas,width:s.canvas.width,height:s.canvas.height}}function ea(C,A){var g;const I=String(A);let B=0,Q=0;for(const E of(g=C.frame)!=null?g:[])for(const i of E.obj){if(String(i.srcId)!==I)continue;const[,,e,t]=i.frame;B=Math.max(B,e),Q=Math.max(Q,t)}return B>0&&Q>0?{width:B,height:Q}:void 0}async function ta(C){return typeof C=="string"?MB(C):DE(C)?typeof C.image=="string"?MB(C.image):lC(C.image):lC(C)}async function aa(C,A){const g=new Map;if(!C.src||C.src.length===0||!A)return g;for(const I of C.src){const B=Ea(I,A);if(B==null)continue;if(I.srcType==="txt"){if(iQ(B)){const t=lC(B),a=yI(t);g.set(String(I.srcId),{source:t,width:Math.max(1,a.width),height:Math.max(1,a.height)});continue}const e=ia(I,typeof B=="string"||cE(B)?B:String(B),ea(C,I.srcId));g.set(String(I.srcId),e);continue}const Q=iQ(B)||typeof B=="string"||DE(B)?B:null;if(!Q)continue;const E=await ta(Q),i=yI(E);g.set(String(I.srcId),{source:E,width:Math.max(1,i.width),height:Math.max(1,i.height)})}return g}function oa(C){var A;const g=new Map;for(const I of(A=C.frame)!=null?A:[]){const B=[...I.obj].sort((Q,E)=>{var i,e;return((i=Q.z)!=null?i:0)-((e=E.z)!=null?e:0)});for(const Q of B)Q.srcKey===void 0&&(Q.srcKey=String(Q.srcId));g.set(I.i,B)}return g}function sa(C,A){const g=wI(C,A),I=wI(C,A),B=wI(1,1);return{compositeCanvas:g,compositeCtx:FI(g),rawCanvas:I,rawCtx:FI(I),scratchCanvas:B,scratchCtx:FI(B)}}function tQ(C,A,g,I,B=!0){var Q,E;if(!C.compositeCanvas||!C.compositeCtx||!C.rawCanvas||!C.rawCtx||!C.scratchCanvas||!C.scratchCtx)throw new Error("VAP CPU compositor state is incomplete");const{info:i}=A,e=i.videoW||C.width,t=i.videoH||C.height,[a,o,s,n]=i.rgbFrame,[r,h,c,D]=i.aFrame;(C.rawCanvas.width!==e||C.rawCanvas.height!==t)&&(C.rawCanvas.width=e,C.rawCanvas.height=t),C.rawCtx.clearRect(0,0,e,t),C.rawCtx.drawImage(g,0,0,e,t);const w=C.rawCtx.getImageData(0,0,e,t).data,l=C.compositeCtx.createImageData(C.width,C.height),F=l.data;for(let y=0;y<C.height;y++){const G=Math.min(t-1,Math.max(0,o+Math.floor(y/C.height*n))),f=Math.min(t-1,Math.max(0,h+Math.floor(y/C.height*D)));for(let u=0;u<C.width;u++){const R=Math.min(e-1,Math.max(0,a+Math.floor(u/C.width*s))),M=Math.min(e-1,Math.max(0,r+Math.floor(u/C.width*c))),N=(G*e+R)*4,S=(f*e+M)*4,Y=w[S]/255,U=(y*C.width+u)*4,k=B?1:Y;F[U]=Math.round(w[N]*k),F[U+1]=Math.round(w[N+1]*k),F[U+2]=Math.round(w[N+2]*k),F[U+3]=Math.round(Y*255)}}const d=(Q=C.frameMap.get(I))!=null?Q:[];for(const y of d){const G=(E=C.resources)==null?void 0:E.get(String(y.srcId));if(!G)continue;const[f,u,R,M]=y.frame,[N,S,Y,U]=y.mFrame;if(R<=0||M<=0||Y<=0||U<=0)continue;(C.scratchCanvas.width!==R||C.scratchCanvas.height!==M)&&(C.scratchCanvas.width=Math.max(1,Math.round(R)),C.scratchCanvas.height=Math.max(1,Math.round(M))),C.scratchCtx.clearRect(0,0,C.scratchCanvas.width,C.scratchCanvas.height),C.scratchCtx.drawImage(G.source,0,0,C.scratchCanvas.width,C.scratchCanvas.height);const k=C.scratchCtx.getImageData(0,0,C.scratchCanvas.width,C.scratchCanvas.height).data,m=Math.max(0,Math.floor(f)),J=Math.max(0,Math.floor(u)),q=Math.min(C.width,Math.ceil(f+R)),_=Math.min(C.height,Math.ceil(u+M));for(let Z=J;Z<_;Z++){const x=Math.min(C.scratchCanvas.height-1,Math.max(0,Math.floor((Z-u)/M*C.scratchCanvas.height))),X=Math.min(t-1,Math.max(0,S+Math.floor((Z-u)/M*U)));for(let T=m;T<q;T++){const gA=Math.min(C.scratchCanvas.width-1,Math.max(0,Math.floor((T-f)/R*C.scratchCanvas.width))),UA=Math.min(e-1,Math.max(0,N+Math.floor((T-f)/R*Y))),yA=(x*C.scratchCanvas.width+gA)*4,rA=(X*e+UA)*4,BA=k[yA+3]/255,Ig=w[rA]/255,QA=BA*Ig;if(QA<=0)continue;const V=(Z*C.width+T)*4,YA=k[yA]/255*QA,kA=k[yA+1]/255*QA,W=k[yA+2]/255*QA,pA=F[V+3]/255,LA=1-QA;F[V]=Math.round((YA+F[V]/255*LA)*255),F[V+1]=Math.round((kA+F[V+1]/255*LA)*255),F[V+2]=Math.round((W+F[V+2]/255*LA)*255),F[V+3]=Math.round((QA+pA*LA)*255)}}}return C.compositeCtx.putImageData(l,0,0),C.compositeCanvas}var na=Object.defineProperty,ra=(C,A,g)=>A in C?na(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,O=(C,A,g)=>ra(C,typeof A!="symbol"?A+"":A,g);const _B=1024,aQ=32,AB=class Mg{constructor(A){O(this,"instancedQuadVB",null),O(this,"instancedQuadIB",null),O(this,"quadVB",null),O(this,"quadIB",null),O(this,"rgbaWebGLQuadVB",null),O(this,"rgbaTopLeftQuadVB",null),O(this,"rgbaQuadIB",null),O(this,"wcDbgFirstDraw",new Set),O(this,"wcDbgNullWarns",new Map),O(this,"htmlGate"),O(this,"lastWcFrameRef",new Map),O(this,"scratchAtlasRemap",new Float32Array(4)),O(this,"instancePackScratch",new Float32Array(_B*aQ)),O(this,"scratchTransform",new Float32Array(16)),O(this,"contentSizeScratch",{w:0,h:0}),O(this,"rgbUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"alphaUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"maskUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"processedHtmlGatesScratch",new Set),O(this,"vapVertexScratch",new Float32Array(24)),O(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),O(this,"clipScratch",{x:0,y:0,w:0,h:0}),O(this,"instancedListScratch",[]),O(this,"instancedByTexScratch",new Map),O(this,"instancedTexturesScratch",[]),O(this,"instancedUniformsScratch",{u_projection:new Float32Array(16),u_video:0}),O(this,"instancedDrawCommand",{shader:"vap-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:0,instanceData:this.instancePackScratch,textures:this.instancedTexturesScratch,uniforms:this.instancedUniformsScratch}),O(this,"geometryTexturesScratch",[]),O(this,"geometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_rgbPremultiplied:1,u_video:0}),O(this,"geometryDrawCommand",{shader:"vap",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.geometryTexturesScratch,uniforms:this.geometryUniformsScratch}),O(this,"mixedGeometryTexturesScratch",[]),O(this,"mixedGeometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:hE,u_opacity:1,u_video:0}),O(this,"mixedGeometryDrawCommand",{shader:"rgba-textured",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.mixedGeometryTexturesScratch,uniforms:this.mixedGeometryUniformsScratch}),O(this,"overlayTexturesScratch",[]),O(this,"overlayUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_resource:0,u_video:1}),O(this,"overlayDrawCommand",{shader:"vap-mix-overlay",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.overlayTexturesScratch,uniforms:this.overlayUniformsScratch}),O(this,"projCacheW",0),O(this,"projCacheH",0),O(this,"projCache",null),this.htmlGate=new rE(A)}syncVideoTextures(A,g){var I,B,Q,E;let i=!1;const e=this.processedHtmlGatesScratch;e.clear();for(const t of g.values()){if(t.type!=="vap"||t.paused||t.state!=="playing"&&t.state!=="fly"&&t.state!=="stopped"||!t.videoTextureHandle)continue;if(((I=t.vapMixState)==null?void 0:I.mode)==="composited"){i=this.syncMixedTexture(A,t)||i;continue}const a=t.webcodecsPlayback;if(a){const o=(B=t.wcPlaybackTime)!=null?B:0,s=a.getFrameForTime(o);if(this.wcDbgFirstDraw.has(t.id)||(this.wcDbgFirstDraw.add(t.id),console.info("[GiftStage:WC] VAP first draw",{giftId:t.id,state:t.state,t:o,hasFrame:!!s,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),s){const n=t.webcodecsSurface;if(((E=n==null?void 0:n.lastUploadedFrame)!=null?E:this.lastWcFrameRef.get(t.id))!==s){const h=t.wcAtlasRect;h?A.updateTextureRegion(t.videoTextureHandle,s,h.x,h.y,h.w,h.h):A.updateTexture(t.videoTextureHandle,s),n?n.lastUploadedFrame=s:this.lastWcFrameRef.set(t.id,s),i=!0}}else{const n=((Q=this.wcDbgNullWarns.get(t.id))!=null?Q:0)+1;this.wcDbgNullWarns.set(t.id,n),n<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:t.id,t:o,n})}}else if(t.videoElement){const o=this.getHtmlVideoGateId(t);if(e.has(o))continue;e.add(o),this.htmlGate.preUpload(o,t.videoElement)&&(A.updateTexture(t.videoTextureHandle,t.videoElement),i=!0)}}return i}draw(A,g){(A.type==="webgpu"||A.type==="webgl2")&&this.drawInstancedVapBatches(A,g);for(const I of g.values())if(I.type==="vap"&&!(I.state!=="playing"&&I.state!=="fly"&&I.state!=="stopped")&&!(!I.videoElement&&!I.webcodecsPlayback||!I.videoTextureHandle)){if(I.vapMixState){I.vapMixState.mode==="direct"?this.drawMixedDirectGeometry(A,I):this.drawMixedGeometry(A,I);continue}(A.type==="webgpu"||A.type==="webgl2")&&XA(I)!=="cover"||this.drawGeometry(A,I)}}drawSlot(A,g){if(g.type==="vap"&&!(g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")&&!(!g.videoElement&&!g.webcodecsPlayback||!g.videoTextureHandle)){if(g.vapMixState){g.vapMixState.mode==="direct"?this.drawMixedDirectGeometry(A,g):this.drawMixedGeometry(A,g);return}this.drawGeometry(A,g)}}drawInstancedVapBatches(A,g){const I=this.instancedListScratch;I.length=0;for(const a of g.values())a.type!=="vap"||a.state!=="playing"&&a.state!=="fly"&&a.state!=="stopped"||a.vapMixState||!a.videoElement&&!a.webcodecsPlayback||!a.videoTextureHandle||XA(a)==="cover"||!a.vapConfig||I.push(a);if(I.length===0)return;this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(Mg.QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(Mg.QUAD_INDICES,"index"));const B=A.canvas.width,Q=A.canvas.height;let E;this.projCache&&this.projCacheW===B&&this.projCacheH===Q?E=this.projCache:(this.projCacheW=B,this.projCacheH=Q,this.projCache=pg(0,B,Q,0,-1,1),E=this.projCache);const i=this.instancedByTexScratch;for(const a of i.values())a.length=0;for(const a of I){const o=a.videoTextureHandle.id;let s=i.get(o);s||(s=[],i.set(o,s)),s.push(a)}const e=this.instancePackScratch,t=this.instancedDrawCommand;t.vertexBuffer=this.instancedQuadVB,t.indexBuffer=this.instancedQuadIB,this.instancedUniformsScratch.u_projection=E;for(const[a,o]of i){if(o.length===0){i.delete(a);continue}for(let s=0;s<o.length;s+=_B){const n=Math.min(_B,o.length-s);for(let r=0;r<n;r++)this.fillVapInstanceData(o[s+r],e,r*aQ);t.instanceCount=n,this.instancedTexturesScratch[0]=o[s].videoTextureHandle,this.instancedTexturesScratch.length=1,Tg(A.draw(t),"VAP instanced draw")}}}fillVapInstanceData(A,g,I){var B,Q,E,i;const e=A.vapConfig,{info:t}=e,a=t.videoW>0?t.videoW:(Q=(B=A.webcodecsPlayback)==null?void 0:B.videoWidth)!=null?Q:1,o=t.videoH>0?t.videoH:(i=(E=A.webcodecsPlayback)==null?void 0:E.videoHeight)!=null?i:1,s=this.scratchTransform,{w:n,h:r}=AI(t,this.contentSizeScratch),h=Fg(A,n,r,this.layoutScratch);aI(A,A.x+h.offsetX,A.y+h.offsetY,h.width,h.height,s),g.set(s,I);const c=RI(t.rgbFrame,a,o,this.rgbUVScratch),D=RI(t.aFrame,a,o,this.alphaUVScratch),w=A.videoTextureHandle,l=fB(w.width,w.height,A.wcAtlasRect,this.scratchAtlasRemap);g.set(l,I+16);const F=I+20;g[F+0]=c.left,g[F+1]=c.right,g[F+2]=c.top,g[F+3]=c.bottom,g[F+4]=D.left,g[F+5]=D.right,g[F+6]=D.top,g[F+7]=D.bottom,g[F+8]=A.opacity,g[F+9]=A.options.videoRGBAlphaMode!=="straight"?1:0,g[F+10]=0,g[F+11]=0}syncMixedTexture(A,g){var I;const B=g.vapConfig,Q=g.vapMixState;if(!B||!Q||Q.mode!=="composited"||!g.videoTextureHandle)return!1;const E=this.getMixedFrameIndex(g,B),i=g.webcodecsPlayback;if(i){const t=(I=g.wcPlaybackTime)!=null?I:0,a=i.getFrameForTime(t);if(!a||Q.lastSourceRef===a&&Q.lastFrameIndex===E)return!1;const o=Q.composer?Q.composer.render(a,E):tQ(Q,B,a,E,g.options.videoRGBAlphaMode!=="straight");return A.updateTexture(g.videoTextureHandle,o),Q.lastSourceRef=a,Q.lastFrameIndex=E,!0}if(!g.videoElement||!this.htmlGate.preUpload(g.id,g.videoElement)&&Q.lastFrameIndex===E)return!1;const e=Q.composer?Q.composer.render(g.videoElement,E):tQ(Q,B,g.videoElement,E,g.options.videoRGBAlphaMode!=="straight");return A.updateTexture(g.videoTextureHandle,e),Q.lastSourceRef=g.videoElement,Q.lastFrameIndex=E,!0}releaseHtmlVideo(A){var g;this.htmlGate.release(this.getHtmlVideoGateId(A),(g=A.videoElement)!=null?g:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A),this.wcDbgFirstDraw.delete(A),this.wcDbgNullWarns.delete(A)}drawGeometry(A,g){var I,B,Q,E;const i=A.canvas.width,e=A.canvas.height;let t;this.projCache&&this.projCacheW===i&&this.projCacheH===e?t=this.projCache:(this.projCacheW=i,this.projCacheH=e,this.projCache=pg(0,i,e,0,-1,1),t=this.projCache);const a=g.vapConfig;if(!a){console.warn("[GiftStage:WC] VAP vapConfig missing — draw skipped",{giftId:g.id});return}const{info:o}=a,s=o.videoW>0?o.videoW:(B=(I=g.webcodecsPlayback)==null?void 0:I.videoWidth)!=null?B:1,n=o.videoH>0?o.videoH:(E=(Q=g.webcodecsPlayback)==null?void 0:Q.videoHeight)!=null?E:1,r=this.scratchTransform,h=XA(g),{w:c,h:D}=AI(o,this.contentSizeScratch),w=Fg(g,c,D,this.layoutScratch);aI(g,g.x+w.offsetX,g.y+w.offsetY,w.width,w.height,r);const l=RI(o.rgbFrame,s,n,this.rgbUVScratch),F=RI(o.aFrame,s,n,this.alphaUVScratch),d=g.videoTextureHandle,y=fB(d.width,d.height,g.wcAtlasRect,this.scratchAtlasRemap),G=this.vapVertexScratch;G[0]=0,G[1]=0,G[2]=l.left,G[3]=l.top,G[4]=F.left,G[5]=F.top,G[6]=1,G[7]=0,G[8]=l.right,G[9]=l.top,G[10]=F.right,G[11]=F.top,G[12]=1,G[13]=1,G[14]=l.right,G[15]=l.bottom,G[16]=F.right,G[17]=F.bottom,G[18]=0,G[19]=1,G[20]=l.left,G[21]=l.bottom,G[22]=F.left,G[23]=F.bottom,this.quadVB=this.ensureBuffer(A,this.quadVB,G,"vertex"),this.quadIB||(this.quadIB=A.createBuffer(Mg.QUAD_INDICES,"index"));const f=this.geometryDrawCommand;if(f.vertexBuffer=this.quadVB,f.indexBuffer=this.quadIB,this.geometryTexturesScratch[0]=g.videoTextureHandle,this.geometryTexturesScratch.length=1,this.geometryUniformsScratch.u_projection=t,this.geometryUniformsScratch.u_transform=r,this.geometryUniformsScratch.u_atlasRemap=y,this.geometryUniformsScratch.u_opacity=g.opacity,this.geometryUniformsScratch.u_rgbPremultiplied=g.options.videoRGBAlphaMode!=="straight"?1:0,h==="cover"){const u=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(u.x,u.y,u.w,u.h)}Tg(A.draw(f),"VAP draw"),h==="cover"&&A.resetScissor()}drawMixedGeometry(A,g){const I=A.canvas.width,B=A.canvas.height;let Q;this.projCache&&this.projCacheW===I&&this.projCacheH===B?Q=this.projCache:(this.projCacheW=I,this.projCacheH=B,this.projCache=pg(0,I,B,0,-1,1),Q=this.projCache);const E=g.vapConfig;if(!E||!g.vapMixState||g.vapMixState.mode!=="composited"||!g.videoTextureHandle)return;const i=this.scratchTransform,e=XA(g),{w:t,h:a}=AI(E.info,this.contentSizeScratch),o=Fg(g,t,a,this.layoutScratch);aI(g,g.x+o.offsetX,g.y+o.offsetY,o.width,o.height,i);const s=!!g.vapMixState.composer||A.type==="webgpu";let n=s?this.rgbaTopLeftQuadVB:this.rgbaWebGLQuadVB;if(n||(n=A.createBuffer(s?Mg.RGBA_QUAD_VERTS_WEBGPU:Mg.RGBA_QUAD_VERTS_WEBGL,"vertex"),s?this.rgbaTopLeftQuadVB=n:this.rgbaWebGLQuadVB=n),this.rgbaQuadIB||(this.rgbaQuadIB=A.createBuffer(Mg.QUAD_INDICES,"index")),e==="cover"){const h=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(h.x,h.y,h.w,h.h)}const r=this.mixedGeometryDrawCommand;r.vertexBuffer=n,r.indexBuffer=this.rgbaQuadIB,this.mixedGeometryTexturesScratch[0]=g.videoTextureHandle,this.mixedGeometryTexturesScratch.length=1,this.mixedGeometryUniformsScratch.u_projection=Q,this.mixedGeometryUniformsScratch.u_transform=i,this.mixedGeometryUniformsScratch.u_opacity=g.opacity,Tg(A.draw(r),"VAP mix draw"),e==="cover"&&A.resetScissor()}drawMixedDirectGeometry(A,g){var I;const B=g.vapConfig,Q=g.vapMixState,E=g.videoTextureHandle;if(!B||!Q||Q.mode!=="direct"||!Q.resourceTextures||!E)return;this.drawGeometry(A,g);const i=Q.frameMap.get(this.getMixedFrameIndex(g,B));if(!i||i.length===0)return;const e=A.canvas.width,t=A.canvas.height;let a;this.projCache&&this.projCacheW===e&&this.projCacheH===t?a=this.projCache:(this.projCacheW=e,this.projCacheH=t,this.projCache=pg(0,e,t,0,-1,1),a=this.projCache),this.rgbaTopLeftQuadVB||(this.rgbaTopLeftQuadVB=A.createBuffer(Mg.RGBA_QUAD_VERTS_WEBGPU,"vertex")),this.rgbaQuadIB||(this.rgbaQuadIB=A.createBuffer(Mg.QUAD_INDICES,"index"));const{info:o}=B,{w:s,h:n}=AI(o,this.contentSizeScratch),r=Fg(g,s,n,this.layoutScratch);if(XA(g)==="cover"){const F=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(F.x,F.y,F.w,F.h)}else{const F=Sg(g,g.x+r.offsetX,g.y+r.offsetY,r.width,r.height,this.clipScratch);A.setScissor(F.x,F.y,F.w,F.h)}const h=o.videoW>0?o.videoW:E.width,c=o.videoH>0?o.videoH:E.height,D=this.scratchTransform,w=this.scratchAtlasRemap,l=this.overlayDrawCommand;l.vertexBuffer=this.rgbaTopLeftQuadVB,l.indexBuffer=this.rgbaQuadIB,this.overlayUniformsScratch.u_projection=a,this.overlayUniformsScratch.u_opacity=g.opacity;for(const F of i){const d=Q.resourceTextures.get((I=F.srcKey)!=null?I:String(F.srcId));if(!d)continue;const[y,G,f,u]=F.frame,[,,R,M]=F.mFrame;if(f<=0||u<=0||R<=0||M<=0)continue;aI(g,g.x+r.offsetX+y*r.scaleX,g.y+r.offsetY+G*r.scaleY,f*r.scaleX,u*r.scaleY,D);const N=RI(F.mFrame,h,c,this.maskUVScratch);w[0]=N.left,w[1]=N.right,w[2]=N.top,w[3]=N.bottom,this.overlayTexturesScratch[0]=d,this.overlayTexturesScratch[1]=E,this.overlayTexturesScratch.length=2,Tg(A.draw(l),"VAP overlay draw")}A.resetScissor()}ensureBuffer(A,g,I,B){return g?(A.updateBuffer(g,I),g):A.createBuffer(I,B)}destroy(A){this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.rgbaWebGLQuadVB&&A.deleteBuffer(this.rgbaWebGLQuadVB),this.rgbaTopLeftQuadVB&&A.deleteBuffer(this.rgbaTopLeftQuadVB),this.rgbaQuadIB&&A.deleteBuffer(this.rgbaQuadIB),this.instancedQuadVB=null,this.instancedQuadIB=null,this.quadVB=null,this.quadIB=null,this.rgbaWebGLQuadVB=null,this.rgbaTopLeftQuadVB=null,this.rgbaQuadIB=null,this.lastWcFrameRef.clear(),this.processedHtmlGatesScratch.clear(),this.projCache=null,this.projCacheW=0,this.projCacheH=0}getMixedFrameIndex(A,g){var I,B,Q;if(A.webcodecsPlayback)return Math.max(0,Math.round(((I=A.wcPlaybackTime)!=null?I:0)*g.info.fps));const E=this.htmlGate.getFrameInfo(A.id),i=E==null?void 0:E.mediaTime;return typeof i=="number"&&Number.isFinite(i)&&i>=0?Math.max(0,Math.round(i*g.info.fps)):Math.max(0,Math.round(((Q=(B=A.videoElement)==null?void 0:B.currentTime)!=null?Q:0)*g.info.fps))}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}};O(AB,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));O(AB,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));O(AB,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));O(AB,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let wE=AB;var ha=Object.defineProperty,ca=(C,A,g)=>A in C?ha(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,oA=(C,A,g)=>ca(C,typeof A!="symbol"?A+"":A,g);const oQ=1024,sQ=12,mC=class kI{constructor(A){oA(this,"quadVB",null),oA(this,"quadIB",null),oA(this,"instancePackScratch",new Float32Array(oQ*sQ)),oA(this,"projCacheW",0),oA(this,"projCacheH",0),oA(this,"projCache",null),oA(this,"scratchTransform",new Float32Array(16)),oA(this,"contentSizeScratch",{w:0,h:0}),oA(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),oA(this,"clipScratch",{x:0,y:0,w:0,h:0}),oA(this,"wcDbgFirstDraw",new Set),oA(this,"wcDbgNullWarns",new Map),oA(this,"htmlGate"),oA(this,"lastWcFrameRef",new Map),oA(this,"scratchAtlasRemap",new Float32Array(4)),oA(this,"processedHtmlGatesScratch",new Set),oA(this,"instancedTexturesScratch",[]),oA(this,"instancedUniformsScratch",{u_projection:new Float32Array(16),u_video:0}),oA(this,"instancedDrawCommand",{shader:"alpha-video-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:0,instanceData:this.instancePackScratch,textures:this.instancedTexturesScratch,uniforms:this.instancedUniformsScratch}),oA(this,"geometryTexturesScratch",[]),oA(this,"geometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_rgbPremultiplied:1,u_video:0}),oA(this,"geometryDrawCommand",{shader:"alpha-video",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.geometryTexturesScratch,uniforms:this.geometryUniformsScratch}),this.htmlGate=new rE(A)}static alphaVideoContentSize(A,g){if(A.webcodecsPlayback){const E=A.webcodecsPlayback.videoWidth,i=A.webcodecsPlayback.videoHeight;return g.w=E>0?E*.5:0,g.h=i,g}const I=A.videoElement,B=I.videoWidth,Q=I.videoHeight;return g.w=B>0?B*.5:0,g.h=Q,g}syncVideoTextures(A,g){var I,B,Q;let E=!1;const i=this.processedHtmlGatesScratch;i.clear();for(const e of g.values()){if(e.type!=="alphaVideo"||e.paused||e.state!=="playing"&&e.state!=="fly"||!e.videoTextureHandle)continue;const t=e.webcodecsPlayback;if(t){const a=(I=e.wcPlaybackTime)!=null?I:0,o=t.getFrameForTime(a);if(this.wcDbgFirstDraw.has(e.id)||(this.wcDbgFirstDraw.add(e.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:e.id,state:e.state,t:a,hasFrame:!!o,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),o){const s=e.webcodecsSurface;if(((Q=s==null?void 0:s.lastUploadedFrame)!=null?Q:this.lastWcFrameRef.get(e.id))!==o){const r=e.wcAtlasRect;r?A.updateTextureRegion(e.videoTextureHandle,o,r.x,r.y,r.w,r.h):A.updateTexture(e.videoTextureHandle,o),s?s.lastUploadedFrame=o:this.lastWcFrameRef.set(e.id,o),E=!0}}else{const s=((B=this.wcDbgNullWarns.get(e.id))!=null?B:0)+1;this.wcDbgNullWarns.set(e.id,s),s<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:e.id,t:a,n:s})}}else if(e.videoElement){const a=this.getHtmlVideoGateId(e);if(i.has(a))continue;i.add(a),this.htmlGate.preUpload(a,e.videoElement)&&(A.updateTexture(e.videoTextureHandle,e.videoElement),E=!0)}}return E}draw(A,g){if(A.type==="webgpu"||A.type==="webgl2"){this.drawInstancedAlphaBatches(A,g);return}for(const I of g.values())I.type==="alphaVideo"&&(I.state!=="playing"&&I.state!=="fly"&&I.state!=="stopped"||!I.videoElement&&!I.webcodecsPlayback||!I.videoTextureHandle||this.drawGeometry(A,I))}drawSlot(A,g){g.type==="alphaVideo"&&(g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped"||!g.videoElement&&!g.webcodecsPlayback||!g.videoTextureHandle||this.drawGeometry(A,g))}drawInstancedAlphaBatches(A,g){var I;let B=null,Q=0,E=null;const i=this.instancePackScratch;for(const e of g.values()){if(e.type!=="alphaVideo"||e.state!=="playing"&&e.state!=="fly"&&e.state!=="stopped"||!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle)continue;if(XA(e)==="cover"||((I=e.rotation)!=null?I:0)!==0){B&&Q>0&&E&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0),this.drawGeometry(A,e);continue}const t=e.videoTextureHandle;B&&B.id!==t.id&&Q>0&&E&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0),B||(this.ensureQuadBuffers(A),E=this.getProjection(A),B=t),this.fillAlphaInstanceData(e,i,Q*sQ),Q++,Q===oQ&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0)}B&&Q>0&&E&&this.flushInstancedBatch(A,B,Q,E)}flushInstancedBatch(A,g,I,B){const Q=this.instancedDrawCommand;Q.vertexBuffer=this.quadVB,Q.indexBuffer=this.quadIB,Q.instanceCount=I,this.instancedTexturesScratch[0]=g,this.instancedTexturesScratch.length=1,this.instancedUniformsScratch.u_projection=B,Tg(A.draw(Q),"alpha-video instanced draw")}fillAlphaInstanceData(A,g,I){const B=kI.alphaVideoContentSize(A,this.contentSizeScratch),Q=Fg(A,B.w,B.h,this.layoutScratch);g[I+0]=A.x+Q.offsetX,g[I+1]=A.y+Q.offsetY,g[I+2]=Q.width,g[I+3]=Q.height;const E=A.videoTextureHandle,i=fB(E.width,E.height,A.wcAtlasRect,this.scratchAtlasRemap);g.set(i,I+4),g[I+8]=A.opacity,g[I+9]=A.options.videoRGBAlphaMode!=="straight"?1:0,g[I+10]=0,g[I+11]=0}releaseHtmlVideo(A){var g;this.htmlGate.release(this.getHtmlVideoGateId(A),(g=A.videoElement)!=null?g:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A),this.wcDbgFirstDraw.delete(A),this.wcDbgNullWarns.delete(A)}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}drawGeometry(A,g){const I=this.getProjection(A),B=this.scratchTransform,Q=XA(g),E=kI.alphaVideoContentSize(g,this.contentSizeScratch),i=Fg(g,E.w,E.h,this.layoutScratch);aI(g,g.x+i.offsetX,g.y+i.offsetY,i.width,i.height,B),this.ensureQuadBuffers(A);const e=g.videoTextureHandle,t=fB(e.width,e.height,g.wcAtlasRect,this.scratchAtlasRemap),a=this.geometryDrawCommand;if(a.vertexBuffer=this.quadVB,a.indexBuffer=this.quadIB,this.geometryTexturesScratch[0]=e,this.geometryTexturesScratch.length=1,this.geometryUniformsScratch.u_projection=I,this.geometryUniformsScratch.u_transform=B,this.geometryUniformsScratch.u_atlasRemap=t,this.geometryUniformsScratch.u_opacity=g.opacity,this.geometryUniformsScratch.u_rgbPremultiplied=g.options.videoRGBAlphaMode!=="straight"?1:0,Q==="cover"){const o=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(o.x,o.y,o.w,o.h)}Tg(A.draw(a),"alpha-video draw"),Q==="cover"&&A.resetScissor()}ensureQuadBuffers(A){this.quadVB||(this.quadVB=A.createBuffer(kI.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(kI.QUAD_INDICES,"index"))}getProjection(A){const g=A.canvas.width,I=A.canvas.height;return this.projCache&&this.projCacheW===g&&this.projCacheH===I?this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=pg(0,g,I,0,-1,1),this.projCache)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null,this.projCacheW=0,this.projCacheH=0,this.lastWcFrameRef.clear(),this.processedHtmlGatesScratch.clear()}};oA(mC,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));oA(mC,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let FE=mC;var Da=Object.defineProperty,la=(C,A,g)=>A in C?Da(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eg=(C,A,g)=>la(C,typeof A!="symbol"?A+"":A,g);const JC=class wC{constructor(){eg(this,"quadVB",null),eg(this,"quadIB",null),eg(this,"scratchTransform",new Float32Array(16)),eg(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),eg(this,"clipScratch",{x:0,y:0,w:0,h:0}),eg(this,"projCacheW",0),eg(this,"projCacheH",0),eg(this,"projCache",null),eg(this,"texturesScratch",[]),eg(this,"uniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:hE,u_opacity:1,u_video:0}),eg(this,"drawCommand",{shader:"rgba-textured",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.texturesScratch,uniforms:this.uniformsScratch})}drawSlot(A,g){if(g.type!=="image"||!g.imageTextureHandle||g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")return;const I=g.imageTextureHandle,B=Fg(g,I.width,I.height,this.layoutScratch),Q=g.x+B.offsetX,E=g.y+B.offsetY;aI(g,Q,E,B.width,B.height,this.scratchTransform);let i=this.quadVB;i||(i=A.createBuffer(wC.QUAD_VERTS,"vertex"),this.quadVB=i),this.quadIB||(this.quadIB=A.createBuffer(wC.QUAD_INDICES,"index"));const e=A.canvas.width,t=A.canvas.height;(!this.projCache||this.projCacheW!==e||this.projCacheH!==t)&&(this.projCacheW=e,this.projCacheH=t,this.projCache=pg(0,e,t,0,-1,1));const a=XA(g)==="cover";if(a){const o=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(o.x,o.y,o.w,o.h)}this.drawCommand.vertexBuffer=i,this.drawCommand.indexBuffer=this.quadIB,this.texturesScratch[0]=I,this.texturesScratch.length=1,this.uniformsScratch.u_projection=this.projCache,this.uniformsScratch.u_opacity=g.opacity,Tg(A.draw(this.drawCommand),"image draw"),a&&A.resetScissor()}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null}};eg(JC,"QUAD_VERTS",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));eg(JC,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let yE=JC;var wa=Object.defineProperty,Fa=(C,A,g)=>A in C?wa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,aB=(C,A,g)=>Fa(C,typeof A!="symbol"?A+"":A,g);class GE{constructor(){aB(this,"animations",new Map),aB(this,"completedScratch",[]),aB(this,"individuallyPaused",new Set),aB(this,"globallyPaused",!1)}startFly(A,g,I,B,Q,E,i,e=A.opacity,t=(a=>(a=A.rotation)!=null?a:0)()){this.startTween(A,g,I,B,Q,E,i,void 0,e,t)}startTween(A,g,I,B,Q,E,i,e,t=A.opacity,a=(o=>(o=A.rotation)!=null?o:0)()){var o;this.cancelForGift(A.id),this.animations.set(A.id,{giftId:A.id,startX:A.x,startY:A.y,startScale:A.scale,startOpacity:A.opacity,startRotation:(o=A.rotation)!=null?o:0,targetX:g,targetY:I,targetScale:B,targetOpacity:t,targetRotation:a,startTime:-1,pausedAt:this.globallyPaused||this.individuallyPaused.has(A.id)?performance.now():void 0,duration:Q,easing:E,onComplete:i,onCancel:e})}startTweenPromise(A,g,I,B,Q,E,i,e=A.opacity,t=(a=>(a=A.rotation)!=null?a:0)()){return new Promise(a=>{this.startTween(A,g,I,B,Q,E,()=>{i==null||i(),a()},a,e,t)})}startSequence(A,g){return this.cancelForGift(A.id),g.length===0?Promise.resolve():new Promise(I=>{let B=0;const Q=()=>{var E,i;const e=g[B++];if(!e){I();return}this.startTween(A,e.targetX,e.targetY,e.targetScale,e.duration,e.easing,()=>{var t;(t=e.onComplete)==null||t.call(e),Q()},void 0,e.targetOpacity,(i=(E=e.targetRotation)!=null?E:A.rotation)!=null?i:0)};Q()})}update(A){var g,I;const B=this.completedScratch;B.length=0;for(const[Q,E]of this.animations){E.startTime<0&&(E.startTime=A);const i=(g=E.pausedAt)!=null?g:A;DB((i-E.startTime)/E.duration,0,1)>=1&&(this.animations.delete(Q),B.push(E))}for(const Q of B)(I=Q.onComplete)==null||I.call(Q);B.length=0}getAnimatedState(A,g){var I;const B=this.animations.get(A);if(!B)return null;B.startTime<0&&(B.startTime=g);const Q=DB((((I=B.pausedAt)!=null?I:g)-B.startTime)/B.duration,0,1),E=B.easing(Q);return{x:cg(B.startX,B.targetX,E),y:cg(B.startY,B.targetY,E),scale:cg(B.startScale,B.targetScale,E),opacity:cg(B.startOpacity,B.targetOpacity,E),rotation:cg(B.startRotation,B.targetRotation,E)}}applyAnimatedState(A,g){var I;const B=this.animations.get(A.id);if(!B)return!1;B.startTime<0&&(B.startTime=g);const Q=DB((((I=B.pausedAt)!=null?I:g)-B.startTime)/B.duration,0,1),E=B.easing(Q);return A.x=cg(B.startX,B.targetX,E),A.y=cg(B.startY,B.targetY,E),A.scale=cg(B.startScale,B.targetScale,E),A.opacity=cg(B.startOpacity,B.targetOpacity,E),A.rotation=cg(B.startRotation,B.targetRotation,E),!0}hasAnimation(A){return this.animations.has(A)}hasActiveAnimations(){return this.animations.size>0}hasRunningAnimations(){for(const A of this.animations.values())if(A.pausedAt==null)return!0;return!1}pauseForGift(A,g=performance.now()){this.individuallyPaused.add(A);const I=this.animations.get(A);!I||I.pausedAt!=null||(I.pausedAt=g)}resumeForGift(A,g=performance.now()){if(this.individuallyPaused.delete(A),this.globallyPaused)return;const I=this.animations.get(A);!I||I.pausedAt==null||(I.startTime>=0&&(I.startTime+=g-I.pausedAt),I.pausedAt=void 0)}pauseAll(A=performance.now()){this.globallyPaused=!0;for(const g of this.animations.values())g.pausedAt==null&&(g.pausedAt=A)}resumeAll(A=performance.now()){this.globallyPaused=!1;for(const[g,I]of this.animations)this.individuallyPaused.has(g)||I.pausedAt!=null&&(I.startTime>=0&&(I.startTime+=A-I.pausedAt),I.pausedAt=void 0)}cancelForGift(A){var g;const I=this.animations.get(A);I&&(this.animations.delete(A),(g=I.onCancel)==null||g.call(I))}releaseGift(A){this.cancelForGift(A),this.individuallyPaused.delete(A)}destroy(){this.animations.clear(),this.individuallyPaused.clear(),this.globallyPaused=!1,this.completedScratch.length=0}}var ya=Object.defineProperty,Ga=(C,A,g)=>A in C?ya(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,iI=(C,A,g)=>Ga(C,typeof A!="symbol"?A+"":A,g);class dE{constructor(){iI(this,"ctx",null),iI(this,"decodedCache",new Map),iI(this,"activeSources",[]),iI(this,"globalMute",!1),iI(this,"suspended",!1),iI(this,"gainNode",null)}ensureContext(){return this.ctx||(this.ctx=new AudioContext,this.gainNode=this.ctx.createGain(),this.gainNode.connect(this.ctx.destination),this.globalMute&&(this.gainNode.gain.value=0)),this.ctx.state==="suspended"&&this.ctx.resume().catch(()=>{}),this.ctx}async decodeAudio(A,g){if(this.decodedCache.has(A))return;const I=this.ensureContext();try{const B=await I.decodeAudioData(g.slice(0));this.decodedCache.set(A,B)}catch(B){}}tickFrame(A,g){if(A.videoEntity&&!A.options.mute&&!(this.suspended||A.paused)){for(const I of A.videoEntity.audios)g===I.startFrame&&this.startAudio(A.id,I);for(let I=this.activeSources.length-1;I>=0;I--){const B=this.activeSources[I];if(B.giftId===A.id&&g>=B.endFrame){try{B.source.stop()}catch(Q){}B.source.disconnect(),this.activeSources.splice(I,1)}}}}tickFrameForKey(A,g,I){if(A.videoEntity&&!A.options.mute&&!(this.suspended||A.paused))for(const B of A.videoEntity.audios)B.audioKey===I&&g===B.startFrame&&this.startAudio(A.id,B)}syncPlaybackScopeFrame(A,g,I=!1){var B,Q;const E=A.videoEntity,i=(B=E==null?void 0:E.params.frames)!=null?B:0,e=(Q=E==null?void 0:E.params.fps)!=null?Q:0;if(!E||!(i>0)||!(e>0)||!Number.isFinite(g)||this.suspended||A.paused||A.options.mute){this.stopAllForGift(A.id);return}const t=Math.max(0,Math.floor(g/i)),a=g-t*i,o=new Map;E.audios.forEach((s,n)=>{if(a<s.startFrame||a>=s.endFrame)return;const r=`${n}:${s.audioKey}:${s.startFrame}:${s.endFrame}`;o.set(r,{audio:s,offsetMs:s.startTime+(a-s.startFrame)/e*1e3})}),I&&this.stopAllForGift(A.id);for(let s=this.activeSources.length-1;s>=0;s--){const n=this.activeSources[s];if(n.giftId===A.id){if(n.loopIndex===t&&n.scheduleKey&&o.has(n.scheduleKey)){o.delete(n.scheduleKey);continue}this.stopSourceAt(s)}}for(const[s,n]of o)this.startAudio(A.id,n.audio,n.offsetMs,s,t)}startAudio(A,g,I=g.startTime,B,Q){var E;const i=this.decodedCache.get(g.audioKey);if(!i)return;const e=this.ensureContext(),t=e.createBufferSource();t.buffer=i,t.connect((E=this.gainNode)!=null?E:e.destination);const a=Number.isFinite(i.duration)?i.duration:Number.POSITIVE_INFINITY,o=Math.max(0,I/1e3);if(o>=a){t.disconnect();return}try{t.start(0,o)}catch(s){t.disconnect();return}t.onended=()=>{t.disconnect();const s=this.activeSources.findIndex(n=>n.source===t&&n.giftId===A);s>=0&&this.activeSources.splice(s,1)},this.activeSources.push({source:t,endFrame:g.endFrame,giftId:A,scheduleKey:B,loopIndex:Q})}stopSourceAt(A){const g=this.activeSources[A];if(g){try{g.source.stop()}catch(I){}g.source.disconnect(),this.activeSources.splice(A,1)}}stopAllForGift(A){for(let g=this.activeSources.length-1;g>=0;g--)this.activeSources[g].giftId===A&&this.stopSourceAt(g)}setMute(A){this.globalMute=A,this.gainNode&&(this.gainNode.gain.value=A?0:1)}setSuspended(A){if(this.suspended=A,!!A)for(let g=this.activeSources.length-1;g>=0;g--)this.stopSourceAt(g)}destroy(){var A;for(const g of this.activeSources){try{g.source.stop()}catch(I){}g.source.disconnect()}this.activeSources=[],this.decodedCache.clear(),(A=this.ctx)==null||A.close().catch(()=>{}),this.ctx=null,this.gainNode=null}}var da=Object.defineProperty,Ra=(C,A,g)=>A in C?da(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eI=(C,A,g)=>Ra(C,typeof A!="symbol"?A+"":A,g);class ua{constructor(A,g){eI(this,"atlasW"),eI(this,"atlasH"),eI(this,"rowY",0),eI(this,"rowH",0),eI(this,"rowX",0),eI(this,"slots",new Map),this.atlasW=Math.max(64,Math.floor(A)),this.atlasH=Math.max(64,Math.floor(g))}get size(){return{w:this.atlasW,h:this.atlasH}}tryAllocate(A,g,I){const B=Math.max(1,Math.ceil(g)),Q=Math.max(1,Math.ceil(I));if(B>this.atlasW||Q>this.atlasH||(this.rowX+B>this.atlasW&&(this.rowY+=this.rowH,this.rowX=0,this.rowH=0),this.rowY+Q>this.atlasH))return null;const E={x:this.rowX,y:this.rowY,w:B,h:Q};return this.slots.set(A,E),this.rowX+=B,this.rowH=Math.max(this.rowH,Q),E}release(A){this.slots.delete(A)}getRect(A){return this.slots.get(A)}}function Sa(C){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(C.trim());if(!A)return null;const g=Number(A[1]);return Number.isFinite(g)?g:null}function nQ(C,A,g){if(typeof C=="number")return C;const I=Sa(C);if(I==null)throw new Error(`Invalid percentage coordinate: ${C}`);return A*I/100-g/2}function RE(C,A,g,I,B,Q){return{x:nQ(C,B,g),y:nQ(A,Q,I)}}var fa=Object.defineProperty,Ma=(C,A,g)=>A in C?fa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,MA=(C,A,g)=>Ma(C,typeof A!="symbol"?A+"":A,g);const rQ=16,hQ=24,Na=4,Ua=8,cQ=8192,ka=new Float32Array([-.5,-.5,.5,-.5,.5,.5,-.5,.5]),Ya=new Uint32Array([0,1,2,0,2,3]);class uE extends Error{constructor(A,g){super(g),this.group=A,this.name="ParticleBatchGroupDrawError"}}class SE{constructor(A,g){MA(this,"backend"),MA(this,"batches",new Set),MA(this,"groups",new Set),MA(this,"atlases",new Map),MA(this,"onRuntimeDiagnostic"),MA(this,"quadVB",null),MA(this,"quadIB",null),MA(this,"nextOrder",0),MA(this,"projW",0),MA(this,"projH",0),MA(this,"projection",null),MA(this,"backendLost",!1),MA(this,"destroyed",!1),MA(this,"drawOrderDirty",!0),MA(this,"behindDrawOrder",[]),MA(this,"aboveDrawOrder",[]),MA(this,"cssScaleUniform",new Float32Array([1,1])),MA(this,"uniforms",{u_projection:new Float32Array(16),u_time:0,u_particleSize:8,u_globalAlpha:1,u_sizeEnvelope:1,u_fadeMode:1,u_cssScale:new Float32Array([1,1])}),MA(this,"command",{shader:"particle-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:[],uniforms:this.uniforms}),this.backend=A,this.onRuntimeDiagnostic=g}async createAtlas(A){var g;if(this.assertAvailable(),this.backend.type==="webgl1")throw new Error("ParticleAtlas requires WebGPU or WebGL2");const I=Math.floor(A.width),B=Math.floor(A.height),Q=Math.max(1,(g=this.backend.maxTextureSize)!=null?g:4096);if(!Number.isFinite(I)||!Number.isFinite(B)||I<1||B<1)throw new Error("ParticleAtlas dimensions must be positive integers");if(I>Q||B>Q)throw new Error(`ParticleAtlas exceeds backend max texture size ${Q}`);if(A.colorSpace!=="srgb"||A.alphaMode!=="premultiplied")throw new Error("ParticleAtlas requires premultiplied sRGB RGBA8 pixels");const E=I*B*4;if(A.pixels.length!==E)throw new Error(`ParticleAtlas pixels length must be ${E}`);const i=new Uint8Array(E);i.set(A.pixels);const e=this.backend.createTexture(i.buffer,{width:I,height:B,format:"rgba8",filter:"linear",wrap:"clamp",sourcePremultiplied:!0}),t=this;let a;const o={width:I,height:B,get destroyed(){return a.callerReleased},get lost(){return a.lost},destroy(){t.releaseAtlasCaller(a)}};return a={handle:o,texture:e,refs:1,callerReleased:!1,lost:!1},this.atlases.set(o,a),o}createBatch(A){this.assertAvailable(),this.validateDescriptor(A);const g=this.createGroupRecord();let I=null;try{return I=this.stageRecord(A,g),g.batches.add(I),this.groups.add(g),this.batches.add(I),this.drawOrderDirty=!0,I}catch(B){throw I&&this.disposeStagedRecord(I),g._destroyed=!0,B}}createBatchGroup(A){if(this.assertAvailable(),!Array.isArray(A)||A.length<1)throw new Error("ParticleBatchGroup requires at least one descriptor");for(const B of A)this.validateDescriptor(B);const g=this.createGroupRecord(),I=[];try{for(const B of A)I.push(this.stageRecord(B,g));for(const B of I)g.batches.add(B);this.groups.add(g);for(const B of I)this.batches.add(B);return this.drawOrderDirty=!0,g}catch(B){for(let Q=I.length-1;Q>=0;Q--)this.disposeStagedRecord(I[Q]);throw g._destroyed=!0,B}}get activeCount(){return this.batches.size}rebuildDrawOrder(){if(!this.drawOrderDirty)return;this.behindDrawOrder.length=0,this.aboveDrawOrder.length=0;for(const g of this.batches)(g.compositeLayer==="behind-media"?this.behindDrawOrder:this.aboveDrawOrder).push(g);const A=(g,I)=>g.zIndex-I.zIndex||g.order-I.order;this.behindDrawOrder.sort(A),this.aboveDrawOrder.sort(A),this.drawOrderDirty=!1}draw(A="above-media"){if(this.batches.size===0||this.backendLost||this.destroyed)return;this.quadVB||(this.quadVB=this.backend.createBuffer(ka,"vertex")),this.quadIB||(this.quadIB=this.backend.createBuffer(Ya,"index"));const g=this.backend.canvas.width,I=this.backend.canvas.height;(!this.projection||this.projW!==g||this.projH!==I)&&(this.projW=g,this.projH=I,this.projection=pg(0,g,I,0,-1,1)),this.command.vertexBuffer=this.quadVB,this.command.indexBuffer=this.quadIB,this.uniforms.u_projection=this.projection,this.rebuildDrawOrder();const B=A==="behind-media"?this.behindDrawOrder:this.aboveDrawOrder;for(const Q of B)if(!(Q.destroyed||Q.group.destroyed||Q.group.faulted||Q.count<=0||Q.evaluatedOpacity<=0)){this.uniforms.u_time=Q.timeMs/1e3,this.uniforms.u_particleSize=Q.particleSize,this.uniforms.u_globalAlpha=Q.evaluatedOpacity,this.uniforms.u_sizeEnvelope=Q.format==="sprite-v2"?Q.header[2]:1,this.uniforms.u_fadeMode=Q.format==="sprite-v2"?Q.header[3]:1,this.cssScaleUniform[0]=Q.format==="sprite-v2"?Q.header[4]:1,this.cssScaleUniform[1]=Q.format==="sprite-v2"?Q.header[5]:1,this.uniforms.u_cssScale=this.cssScaleUniform,this.command.shader=Q.format==="sprite-v2"?"particle-sprite-instanced":"particle-instanced",this.command.instanceCount=Q.count,this.command.instanceBuffer=Q.instanceBuffer,this.command.particleBlend=Q.blend,this.command.textures=Q.textures;try{Tg(this.backend.draw(this.command),`${Q.format} particle draw`)}catch(E){this.faultGroup(Q.group,E)}}}prepareFrame(){if(this.batches.size===0||this.backendLost||this.destroyed)return;const{sx:A,sy:g}=Xg(this.backend.canvas);for(const I of this.groups)if(!(I._destroyed||I._faulted)){for(const B of I.batches)this.syncRecordCssScale(B,A,g)&&(I.dirty=!0);if(I.dirty){for(const B of I.batches)this.updateRecordHeader(B);try{for(const B of I.batches)this.backend.updateBuffer(B.instanceBuffer,B.header,0);I.dirty=!1}catch(B){this.faultGroup(I,B)}}}}onBackendLoss(){if(!this.backendLost){this.backendLost=!0;for(const A of this.atlases.values())A.lost=!0;for(const A of this.groups)A._faulted=!0;this.quadVB=null,this.quadIB=null,this.projection=null}}destroy(){if(!this.destroyed){for(const A of Array.from(this.groups))A.destroy();this.backendLost||(this.quadVB&&this.backend.deleteBuffer(this.quadVB),this.quadIB&&this.backend.deleteBuffer(this.quadIB)),this.quadVB=null,this.quadIB=null,this.projection=null,this.destroyed=!0;for(const A of this.atlases.values())A.callerReleased=!0,A.lost||(A.lost=this.backendLost),A.refs=0,this.backendLost||this.backend.deleteTexture(A.texture);this.atlases.clear()}}assertAvailable(){if(this.destroyed)throw new Error("ParticleBatchRenderer is destroyed");if(this.backendLost)throw new Error("ParticleBatch backend is lost")}validateDescriptor(A){var g,I,B;if(this.backend.type==="webgl1")throw new Error("ParticleBatch requires WebGPU or WebGL2");const Q=Math.floor(A.count);if(!Number.isFinite(A.count)||Q!==A.count||Q<0)throw new Error("ParticleBatch count must be a non-negative integer");if(Q>cQ)throw new Error(`ParticleBatch count exceeds backend capacity ${cQ}`);const i=((g=A.format)!=null?g:"ballistic-v1")==="sprite-v2"?hQ:rQ;if(A.instances.length!==Q*i)throw new Error(`ParticleBatch instances length must be ${Q*i}`);for(const e of A.instances)if(!Number.isFinite(e))throw new Error("ParticleBatch instances must be finite");if(A.format==="sprite-v2"){const e=this.atlases.get(A.atlas);if(!e||e.callerReleased||e.lost)throw new Error("ParticleBatch sprite atlas is destroyed or lost");this.validateEnvelope((I=A.envelope)==null?void 0:I.opacity,"opacity"),this.validateEnvelope((B=A.envelope)==null?void 0:B.size,"size");for(let t=0;t<Q;t++){const a=t*hQ,o=A.instances[a+16],s=A.instances[a+17],n=A.instances[a+18],r=A.instances[a+19],h=A.instances[a+20],c=A.instances[a+21],D=A.instances[a+22],w=A.instances[a+23];if(o<0||s<0)throw new Error("sprite-v2 dimensions must be non-negative");if(n<0||n>1||r<0||r>1)throw new Error("sprite-v2 anchors must be normalized");if(h<0||c<0||D>1||w>1||!(h<D)||!(c<w))throw new Error("sprite-v2 UV rectangle is invalid")}}}validateEnvelope(A,g){if(!A)return;let I=-1/0;for(const B of A){if(![B.startMs,B.endMs,B.from,B.to].every(Number.isFinite)||!(B.endMs>B.startMs)||B.startMs<I)throw new Error(`ParticleBatch ${g} envelope is invalid`);if(B.interpolation&&B.interpolation!=="linear"&&B.interpolation!=="hold")throw new Error(`ParticleBatch ${g} envelope interpolation is invalid`);I=B.endMs}}cloneEnvelope(A){var g;return(g=A==null?void 0:A.map(I=>({...I})))!=null?g:[]}createGroupRecord(){const A=this;let g;return g={batches:new Set,_destroyed:!1,_faulted:!1,dirty:!1,diagnosticSent:!1,get count(){return g.batches.size},get destroyed(){return g._destroyed},get faulted(){return g._faulted},setTime(I){if(!g._destroyed)for(const B of g.batches)A.setRecordTime(B,I)},setOpacity(I){if(!g._destroyed)for(const B of g.batches)A.setRecordOpacity(B,I)},destroy(){A.destroyGroup(g)}},g}stageRecord(A,g){var I,B,Q,E,i,e,t,a,o,s,n;const r=(I=A.format)!=null?I:"ballistic-v1",h=r==="sprite-v2"?Ua:Na,c=new Float32Array(h+A.instances.length);c.set(A.instances,h);const{sx:D,sy:w}=Xg(this.backend.canvas);let l=1,F=null;if(A.format!=="sprite-v2"){for(let R=0;R<A.count;R++){const M=h+R*rQ;c[M+2]*=D,c[M+3]*=w,c[M+4]*=D,c[M+5]*=w,c[M+6]*=D,c[M+7]*=w}l=Math.max(0,(B=A.particleSize)!=null?B:8)*Math.sqrt(D*w),c[1]=l,c[2]=Math.max(0,Math.min(1,(Q=A.opacity)!=null?Q:1))}else F=this.atlases.get(A.atlas),this.retainAtlas(F),c[1]=Math.max(0,Math.min(1,(E=A.opacity)!=null?E:1)),c[2]=this.evaluateEnvelope((i=A.envelope)==null?void 0:i.size,0,1),c[3]=A.fadeMode==="none"?0:1,c[4]=D,c[5]=w,c[6]=0,c[7]=0;let d;try{d=this.backend.createBuffer(c,"storage")}catch(R){throw F&&this.releaseAtlasRetain(F),R}const y=this;let G;const f=Math.max(0,Math.min(1,(e=A.opacity)!=null?e:1)),u=A.format==="sprite-v2"?A:null;return G={count:A.count,instanceBuffer:d,format:r,atlas:F,group:g,timeMs:0,baseOpacity:f,evaluatedOpacity:f,particleSize:l,fadeMode:(u==null?void 0:u.fadeMode)==="none"?"none":"lifetime",opacityEnvelope:u?this.cloneEnvelope((t=u.envelope)==null?void 0:t.opacity):[],sizeEnvelope:u?this.cloneEnvelope((a=u.envelope)==null?void 0:a.size):[],compositeLayer:(o=A.compositeLayer)!=null?o:"above-media",zIndex:(s=A.zIndex)!=null?s:0,blend:(n=A.blend)!=null?n:"additive",order:this.nextOrder++,header:c.subarray(0,h),textures:F?[F.texture]:[],_destroyed:!1,get destroyed(){return G._destroyed},setTime(R){y.setRecordTime(G,R)},setOpacity(R){y.setRecordOpacity(G,R)},destroy(){y.destroyRecord(G)}},this.updateRecordHeader(G),G}setRecordTime(A,g){if(A._destroyed||A.group._destroyed||A.group._faulted)return;const I=Math.max(0,Number.isFinite(g)?g:0);A.timeMs!==I&&(A.timeMs=I,this.updateRecordHeader(A),A.group.dirty=!0)}setRecordOpacity(A,g){if(A._destroyed||A.group._destroyed||A.group._faulted)return;const I=Math.max(0,Math.min(1,Number.isFinite(g)?g:0));A.baseOpacity!==I&&(A.baseOpacity=I,this.updateRecordHeader(A),A.group.dirty=!0)}updateRecordHeader(A){if(A.header[0]=A.timeMs/1e3,A.format==="sprite-v2"){const g=this.evaluateEnvelope(A.opacityEnvelope,A.timeMs,1),I=this.evaluateEnvelope(A.sizeEnvelope,A.timeMs,1);A.evaluatedOpacity=Math.max(0,A.baseOpacity*g),A.header[1]=A.evaluatedOpacity,A.header[2]=Math.max(0,I),A.header[3]=A.fadeMode==="none"?0:1}else A.evaluatedOpacity=A.baseOpacity,A.header[2]=A.evaluatedOpacity}syncRecordCssScale(A,g,I){return A.format!=="sprite-v2"||A.header[4]===g&&A.header[5]===I?!1:(A.header[4]=g,A.header[5]=I,!0)}evaluateEnvelope(A,g,I){if(!(A!=null&&A.length))return I;if(g<A[0].startMs)return A[0].from;let B=A[0].from;for(const Q of A){if(g<Q.startMs)return B;if(g<Q.endMs){if(Q.interpolation==="hold")return Q.from;const E=(g-Q.startMs)/(Q.endMs-Q.startMs);return Q.from+(Q.to-Q.from)*E}B=Q.to}return B}faultGroup(A,g){var I;A._faulted=!0,A.dirty=!1;const B=g instanceof Error?g.message:String(g);if(!A.diagnosticSent){A.diagnosticSent=!0;try{(I=this.onRuntimeDiagnostic)==null||I.call(this,{type:"particle-group-failure",message:B})}catch(Q){console.error("[GiftStage] particle diagnostic observer failed",Q)}}throw new uE(A,`ParticleBatchGroup draw failed: ${B}`)}destroyGroup(A){if(!A._destroyed){A._destroyed=!0;for(const g of Array.from(A.batches))this.destroyRecord(g);this.groups.delete(A)}}destroyRecord(A){A._destroyed||(A._destroyed=!0,this.batches.delete(A),this.drawOrderDirty=!0,A.group.batches.delete(A),!this.backendLost&&!this.destroyed&&this.backend.deleteBuffer(A.instanceBuffer),A.atlas&&this.releaseAtlasRetain(A.atlas),A.group.batches.size===0&&(A.group._destroyed=!0,this.groups.delete(A.group)))}disposeStagedRecord(A){this.backendLost||this.backend.deleteBuffer(A.instanceBuffer),A.atlas&&this.releaseAtlasRetain(A.atlas),A._destroyed=!0}retainAtlas(A){if(A.callerReleased||A.lost)throw new Error("ParticleAtlas is destroyed or lost");A.refs++}releaseAtlasCaller(A){A.callerReleased||(A.callerReleased=!0,this.releaseAtlasRef(A))}releaseAtlasRetain(A){this.releaseAtlasRef(A)}releaseAtlasRef(A){A.refs=Math.max(0,A.refs-1),!(A.refs>0)&&(!A.lost&&!this.backendLost&&!this.destroyed&&this.backend.deleteTexture(A.texture),this.atlases.delete(A.handle))}}var pa=Object.defineProperty,Ka=(C,A,g)=>A in C?pa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,j=(C,A,g)=>Ka(C,typeof A!="symbol"?A+"":A,g);class ma extends Error{constructor(A,g){super(`${A} rejected (${g.reason})${g.message?`: ${g.message}`:""}`),this.operation=A,this.result=g,this.name="BackendOperationError"}}class PI{constructor(A,g,I){j(this,"backend"),j(this,"svgaBatch"),j(this,"vapRenderer"),j(this,"alphaVideoRenderer"),j(this,"imageRenderer"),j(this,"particleBatchRenderer"),j(this,"postAnimator"),j(this,"audioManager"),j(this,"slots"),j(this,"handles"),j(this,"rafId",null),j(this,"lastTime",0),j(this,"running",!1),j(this,"destroyed",!1),j(this,"globallyPaused",!1),j(this,"suspendedForHidden",!1),j(this,"forceNextDraw",!0),j(this,"pendingAtomicFrameRetry",!1),j(this,"atomicRetryUsedForGenericFailure",!1),j(this,"atomicRetryProgressEntities",new Set),j(this,"runtimeFrameAbortCount",0),j(this,"runtimeReplayFailureCount",0),j(this,"runtimeRetryFrameCount",0),j(this,"backendQuarantined",!1),j(this,"onRuntimeDiagnostic"),j(this,"onAnimationFrame",B=>{try{this.renderLoop(B)}catch(Q){if(this.destroyed)return;this.running=!1,this.rafId=null,this.lastTime=0,this.forceNextDraw=!0,this.emitRuntimeDiagnostic({type:"frame-controller-failure",message:this.runtimeErrorMessage(Q)}),console.error("[GiftStage] animation frame controller failed",Q)}}),j(this,"onHtmlVideoFrame",B=>{if(!this.destroyed&&!(this.globallyPaused||this.suspendedForHidden)){for(const Q of this.slots.values())if(Q.videoElement===B&&!Q.paused&&(Q.state==="playing"||Q.state==="fly")){this.invalidate();return}}}),j(this,"finishedSlotIdsScratch",[]),j(this,"videoRunMapScratch",new Map),j(this,"sortedSlots",[]),j(this,"visibleSlotsScratch",[]),j(this,"collapsedLayerScratch",[]),j(this,"coincidentSeenScratch",new Set),j(this,"drawRunScratch",[]),j(this,"wcAtlas",null),j(this,"wcDbgTickOnce",new Set),j(this,"advancedSharedWebCodecsScratch",new Set),j(this,"activeSharedWebCodecsScratch",new Set),j(this,"frameControllers",new Set),this.backend=A,this.onRuntimeDiagnostic=I,this.svgaBatch=new sE(()=>this.invalidate(),g,B=>this.emitRuntimeDiagnostic(B)),this.vapRenderer=new wE(this.onHtmlVideoFrame),this.alphaVideoRenderer=new FE(this.onHtmlVideoFrame),this.imageRenderer=new yE,this.particleBatchRenderer=new SE(A,B=>this.emitRuntimeDiagnostic(B)),this.postAnimator=new GE,this.audioManager=new dE,this.slots=new Map,this.handles=new Map}getRuntimeDiagnosticsSnapshot(){return{frameAbortCount:this.runtimeFrameAbortCount,replayFailureCount:this.runtimeReplayFailureCount,retryFrameCount:this.runtimeRetryFrameCount}}emitRuntimeDiagnostic(A){var g;try{(g=this.onRuntimeDiagnostic)==null||g.call(this,A)}catch(I){console.error("[GiftStage] runtime diagnostic observer failed",I)}}addSlot(A,g){this.slots.set(A.id,A),this.handles.set(A.id,g),this.insertSortedSlot(A),this.invalidate({resetClock:!0})}getHandle(A){return this.handles.get(A)}releaseSlotResources(A){var g,I,B,Q,E,i,e,t,a,o;if((g=A.loadAbortController)==null||g.abort(),A.loadAbortController=null,(I=A.detachLoadAbortSignal)==null||I.call(A),A.detachLoadAbortSignal=null,A.videoPlaybackWatchdogTimer!=null&&(clearTimeout(A.videoPlaybackWatchdogTimer),A.videoPlaybackWatchdogTimer=null),this.wcDbgTickOnce.delete(A.id),A.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(A),this.vapRenderer.clearWebCodecsFrameRef(A.id),(Q=(B=A.vapMixState)==null?void 0:B.composer)==null||Q.destroy(),(E=A.vapMixState)!=null&&E.resourceTextures)){for(const s of A.vapMixState.resourceTextures.values())this.backend.deleteTexture(s);A.vapMixState.resourceTextures.clear()}if(A.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(A),this.alphaVideoRenderer.clearWebCodecsFrameRef(A.id)),this.audioManager.stopAllForGift(A.id),this.postAnimator.releaseGift(A.id),A.videoEntity&&!A.releaseSharedSVGAAsset&&this.deleteSVGAAtlasTextures(A.videoEntity),A.svgaSlotTextures){for(const s of A.svgaSlotTextures.values())this.backend.deleteTexture(s.texture);A.svgaSlotTextures.clear(),A.svgaSlotTextures=void 0}A.wcAtlasRect&&!A.releaseWebCodecsSurface?(this.releaseWebCodecsAtlasAllocation(A.id),A.wcAtlasRect=void 0):A.videoTextureHandle&&!A.releaseSharedVideoTexture&&!A.releaseWebCodecsSurface&&this.backend.deleteTexture(A.videoTextureHandle),A.videoTextureHandle=null,A.imageTextureHandle&&(A.releaseSharedImageTexture?A.releaseSharedImageTexture():this.backend.deleteTexture(A.imageTextureHandle)),A.imageTextureHandle=null,A.releaseSharedImageTexture=null,(i=A.releaseWebCodecsSurface)==null||i.call(A),A.releaseWebCodecsSurface=null,A.webcodecsSurface=null,A.wcAtlasRect=void 0,A.webcodecsPlayback&&(A.releaseWebCodecsPlayback?A.releaseWebCodecsPlayback():A.webcodecsPlayback.destroy(),A.webcodecsPlayback=null),A.releaseWebCodecsPlayback=null,A.webcodecsSharedState=null,A.videoElement&&!A.releaseSharedVideoPlayback&&(A.videoElement.pause(),A.videoElement.removeAttribute("src"),A.videoElement.load(),A.videoElement.remove()),A.videoElement=null,(e=A.releaseSharedVideoPlayback)==null||e.call(A),A.releaseSharedVideoPlayback=null,(t=A.releaseSharedSVGAAsset)==null||t.call(A),A.releaseSharedSVGAAsset=null,(a=A.releaseSharedVideoTexture)==null||a.call(A),A.releaseSharedVideoTexture=null,(o=A.releaseMediaSource)==null||o.call(A),A.releaseMediaSource=null,A.vapMixState=null,A.videoEntity=null}removeSlot(A){const g=this.slots.get(A);g&&this.releaseSlotResources(g),this.slots.delete(A),this.handles.delete(A);const I=this.sortedSlots.indexOf(g);I>=0&&this.sortedSlots.splice(I,1),this.forceNextDraw=!0,!this.destroyed&&(this.slots.size===0&&!this.hasActiveFrameController()?(this.clearFrameOnce(),this.stop()):this.invalidate())}getSlot(A){return this.slots.get(A)}get activeCount(){return this.slots.size}getSlotIds(){return Array.from(this.slots.keys())}countCompatibleSVGAInstances(A){var g;let I=0;for(const B of this.slots.values())B.type==="svga"&&B.videoEntity===A&&!((g=B.svgaSlotTextures)!=null&&g.size)&&B.options.svgaFrameEvaluation!=="cpu"&&B.state!=="finished"&&I++;return I}registerFrameController(A){return this.frameControllers.add(A),this.invalidate({resetClock:!0}),()=>{this.frameControllers.delete(A),this.slots.size===0&&!this.hasActiveFrameController()&&this.stop()}}createParticleBatch(A){const g=this.particleBatchRenderer.createBatch(A);return this.invalidate(),g}async createParticleAtlas(A){return this.particleBatchRenderer.createAtlas(A)}createParticleBatchGroup(A){const g=this.particleBatchRenderer.createBatchGroup(A);return this.invalidate(),g}handleBackendLoss(){this.particleBatchRenderer.onBackendLoss()}tryAllocateWebCodecsAtlas(A,g,I,B){if(!B||B.width<=0||B.height<=0)return null;if(this.wcAtlas&&(this.wcAtlas.cfg.width!==B.width||this.wcAtlas.cfg.height!==B.height)){if(this.wcAtlas.ref>0)return null;this.backend.deleteTexture(this.wcAtlas.handle),this.wcAtlas=null}this.wcAtlas||(this.wcAtlas={cfg:{width:B.width,height:B.height},handle:this.backend.createEmptyTexture(B.width,B.height,{filter:"linear"}),alloc:new ua(B.width,B.height),ref:0});const Q=this.wcAtlas.alloc.tryAllocate(A,g,I);return Q?(this.wcAtlas.ref++,{handle:this.wcAtlas.handle,rect:Q}):null}releaseWebCodecsAtlasAllocation(A){const g=this.wcAtlas;g&&(g.alloc.release(A),g.ref=Math.max(0,g.ref-1),g.ref<=0&&(this.backend.deleteTexture(g.handle),this.wcAtlas=null))}syncSlotLayoutFromOptions(){const{sx:A,sy:g}=Xg(this.backend.canvas);for(const I of this.slots.values()){if(this.postAnimator.hasAnimation(I.id))continue;const B=I.options,Q=RE(B.x,B.y,B.width,B.height,this.backend.canvas.clientWidth,this.backend.canvas.clientHeight);I.x=Q.x*A,I.y=Q.y*g,I.width=B.width*A,I.height=B.height*g}this.invalidate()}invalidate(A={}){this.destroyed||(this.forceNextDraw=!0,A.orderChanged&&this.sortedSlots.sort(PI.compareSlots),!(this.globallyPaused||this.suspendedForHidden||this.running)&&this.start(A.resetClock!==!1))}start(A=!0){this.destroyed||this.running||this.globallyPaused||this.suspendedForHidden||(this.running=!0,(A||this.lastTime<=0)&&(this.lastTime=performance.now()),this.rafId=requestAnimationFrame(this.onAnimationFrame))}stop(){this.running=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}clearFrameOnce(){this.assertBackendOperation("begin-frame",this.backend.beginFrame({stencil:!1})),this.svgaBatch.beginFrame(this.backend),this.assertBackendOperation("end-frame",this.backend.endFrame())}pause(){this.globallyPaused=!0,this.syncAudioSuspension(),this.postAnimator.pauseAll(),this.stop(),this.syncAllVideoPlayback()}resume(){this.globallyPaused=!1,this.syncAudioSuspension(),this.postAnimator.resumeAll(),(this.slots.size>0||this.hasActiveFrameController())&&this.invalidate({resetClock:!0}),this.syncAllVideoPlayback()}setHidden(A){A!==this.suspendedForHidden&&(this.suspendedForHidden=A,this.syncAudioSuspension(),A?this.stop():!this.globallyPaused&&(this.slots.size>0||this.hasActiveFrameController())&&this.invalidate({resetClock:!0}),this.syncAllVideoPlayback())}syncAllVideoPlayback(){for(const A of this.slots.values())A.videoElement&&this.syncVideoPlaybackForSlot(A)}hasActiveVideoConsumer(A,g){if(this.globallyPaused||this.suspendedForHidden)return!1;for(const I of this.slots.values())if(!(I.id===g||I.videoElement!==A)&&!I.paused&&!(I.state!=="playing"&&I.state!=="fly"))return!0;return!1}syncVideoPlaybackForSlot(A){const g=A.videoElement;if(!g)return;if(A.playbackScopeControlled){g.paused||g.pause();return}if(!this.globallyPaused&&!this.suspendedForHidden&&!A.paused&&(A.state==="playing"||A.state==="fly")){g.paused&&g.play().catch(()=>{});return}A.releaseSharedVideoPlayback&&this.hasActiveVideoConsumer(g,A.id)||g.paused||g.pause()}syncAudioSuspension(){const A=this.globallyPaused||this.suspendedForHidden;if(this.audioManager.setSuspended(A),!A)for(const g of this.slots.values()){if(g.type!=="svga"||!g.videoEntity||g.paused||g.state!=="playing"&&g.state!=="fly")continue;const I=g.videoEntity.params.fps,B=g.videoEntity.params.frames,Q=g.loopCount*B+g.currentFrame+g.accumulatedTime*I;this.audioManager.syncPlaybackScopeFrame(g,Q)}}applyPlaybackScopeMediaTime(A,g,I=!1,B=!1){var Q,E,i,e,t,a;const o=this.slots.get(A);if(!o)return;const s=Math.max(0,g)/1e3;if(o.type==="svga"&&o.videoEntity){const n=o.videoEntity.params.fps,r=o.videoEntity.params.frames;if(!(n>0)||!(r>0))return;const h=o.currentFrame,c=s*n,D=(Q=o.options.loop)!=null?Q:1;let w=!1;if(D===0){const l=Math.floor(c);o.loopCount=Math.floor(l/r),o.currentFrame=l%r,o.accumulatedTime=(c-l)/n}else{const l=Math.max(1,D)*r;if(c>=l)w=!0,o.loopCount=Math.max(1,D),o.currentFrame=r-1,o.accumulatedTime=0;else{const F=Math.floor(c);o.loopCount=Math.floor(F/r),o.currentFrame=F%r,o.accumulatedTime=(c-F)/n}}if(w?this.audioManager.stopAllForGift(o.id):this.audioManager.syncPlaybackScopeFrame(o,c,B),o.currentFrame!==h||I&&o.svgaInitialFrameEmitted!==!0){const l=this.handles.get(A);l&&((E=o.onFrame)==null||E.call(o,o.currentFrame,l)),o.svgaInitialFrameEmitted=!0}return}if(o.webcodecsPlayback){const n=o.webcodecsPlayback.duration;if(!(n>0)||!Number.isFinite(n))return;const r=(i=o.options.loop)!=null?i:1;if(r===0)o.loopCount=Math.floor(s/n),o.wcPlaybackTime=s%n;else{const h=Math.max(1,r)*n;s>=h?(o.loopCount=Math.max(1,r),o.wcPlaybackTime=Math.max(0,n-1e-6)):(o.loopCount=Math.floor(s/n),o.wcPlaybackTime=s%n)}if(o.webcodecsSharedState){const h=Math.max(0,(performance.now()-o.webcodecsSharedState.startedAtMs)/1e3);o.wcSharedTimeOffset=o.wcPlaybackTime-h}(t=(e=o.webcodecsPlayback).ensureDecodedThrough)==null||t.call(e,o.wcPlaybackTime);return}if(o.videoElement){const n=o.videoElement.duration,r=(a=o.options.loop)!=null?a:1;if(n>0&&Number.isFinite(n))if(r===0)o.loopCount=Math.floor(s/n),o.videoElement.currentTime=s%n;else{const h=Math.max(1,r)*n;s>=h?(o.loopCount=Math.max(1,r),o.videoElement.currentTime=Math.max(0,n-1e-6)):(o.loopCount=Math.floor(s/n),o.videoElement.currentTime=s%n)}else o.videoElement.currentTime=s}}prewarmSVGAClipMeshes(A,g){return this.svgaBatch.prewarmClipMeshes(A,g)}prewarmSVGAClipMeshesForFrame(A,g,I){return this.svgaBatch.prewarmClipMeshesForFrame(A,g,I)}prewarmSVGAShapeMeshes(A){return this.svgaBatch.prewarmShapeMeshes(this.backend,A)}retainSVGAHybridMeshes(A){this.svgaBatch.retainHybridMeshes(this.backend,A)}releaseSVGAHybridMeshes(A){this.svgaBatch.releaseHybridMeshes(this.backend,A)}hydrateSVGAClipMeshes(A){this.svgaBatch.hydrateClipMeshes(A)}snapshotSVGAClipMeshes(A){return this.svgaBatch.snapshotClipMeshes(A)}renderLoop(A){var g,I,B;if(this.destroyed||!this.running)return;if(this.pendingAtomicFrameRetry){if(this.pendingAtomicFrameRetry=!1,this.forceNextDraw=!1,this.lastTime=A,this.runtimeRetryFrameCount++,this.emitRuntimeDiagnostic({type:"svga-frame-retry"}),this.destroyed)return;const e=this.drawPreparedFrameWithReplay(this.getRenderOrderedSlots(),!0);if(this.destroyed)return;e&&this.resetAtomicRetryCycle(),this.scheduleNextFrame();return}const Q=Math.max(0,A-this.lastTime),E=Q/1e3;this.lastTime=A;let i=this.forceNextDraw;this.advancedSharedWebCodecsScratch.clear(),this.activeSharedWebCodecsScratch.clear();for(const e of this.frameControllers)if(e.active&&(i=e.tick(A,Q)||i),this.destroyed)return;for(const e of this.slots.values())!e.paused&&!e.playbackScopeControlled&&e.state==="playing"&&e.webcodecsPlayback&&e.webcodecsSharedState&&this.activeSharedWebCodecsScratch.add(e.webcodecsSharedState.id);for(const[e,t]of this.slots){if(t.paused||t.state==="loading"){if(t.paused&&!t.playbackScopeControlled&&t.state==="playing"&&t.webcodecsPlayback&&t.webcodecsSharedState&&this.activeSharedWebCodecsScratch.has(t.webcodecsSharedState.id)&&(this.tickSharedWebCodecs(t,A,!1),this.destroyed))return;continue}const a=this.handles.get(e);if(this.postAnimator.applyAnimatedState(t,A)&&(i=!0),this.destroyed||!t.playbackScopeControlled&&t.type==="svga"&&t.videoEntity&&t.state==="playing"&&(i=this.tickSVGA(t,E,a,A)||i,this.destroyed)||!t.playbackScopeControlled&&t.type==="image"&&t.state==="playing"&&(i=this.tickImage(t,E,a,A)||i,this.destroyed))return;if(!t.playbackScopeControlled&&(t.type==="vap"||t.type==="alphaVideo")&&t.webcodecsPlayback&&t.state==="playing"){if(t.webcodecsSharedState)this.tickSharedWebCodecs(t,A,!0);else{if(this.tickWebCodecs(t,E,a),this.destroyed)return;(B=(I=t.webcodecsPlayback).ensureDecodedThrough)==null||B.call(I,(g=t.wcPlaybackTime)!=null?g:0)}if(this.destroyed)return}}if(i=this.postAnimator.hasActiveAnimations()||i,this.postAnimator.update(A),!this.destroyed&&(i=this.removeFinished()||i,!this.destroyed&&(i=this.vapRenderer.syncVideoTextures(this.backend,this.slots)||i,!this.destroyed&&(i=this.alphaVideoRenderer.syncVideoTextures(this.backend,this.slots)||i,!this.destroyed)))){if(i){this.forceNextDraw=!1;const e=this.getRenderOrderedSlots();if(this.destroyed)return;const t=this.drawPreparedFrameWithReplay(e);if(this.destroyed)return;t&&this.resetAtomicRetryCycle()}this.scheduleNextFrame()}}drawPreparedFrameWithReplay(A,g=!1){if(this.destroyed)return!1;try{return this.drawPreparedFrame(A),!this.destroyed}catch(I){if(this.destroyed)return!1;const B=this.abortPreparedFrame(I);if(this.destroyed)return!1;if(!B)return this.recordReplayFailure(I),!1;if(!(I instanceof lI)&&!(I instanceof uE)){if(g)return this.recordReplayFailure(I),this.destroyed||console.error("[GiftStage:SVGA] scheduled atomic frame retry failed",I),!1;throw I}I instanceof lI&&this.atomicRetryProgressEntities.add(I.entity);try{return!(this.destroyed||(this.drawPreparedFrame(A),this.destroyed))}catch(Q){return this.destroyed||(this.abortPreparedFrame(Q),this.destroyed)||(this.recordReplayFailure(Q),this.destroyed)||(this.shouldScheduleAtomicRetry(Q)&&(this.pendingAtomicFrameRetry=!0,this.forceNextDraw=!0),console.error("[GiftStage:SVGA] atomic frame replay failed",Q)),!1}}}abortPreparedFrame(A){if(this.destroyed)return!1;let g=!0;if(this.svgaBatch.abortFrame(),this.destroyed||A instanceof zg&&(this.emitRuntimeDiagnostic({type:"stencil-transaction-failure",message:A.message}),this.destroyed))return!1;try{const I=this.backend.abortFrame();I.submitted||(g=!1,this.backendQuarantined=!0,this.pendingAtomicFrameRetry=!1,this.emitRuntimeDiagnostic({type:"backend-quarantined",message:`abort-frame rejected (${I.reason})${I.message?`: ${I.message}`:""}`}))}catch(I){g=!1,this.backendQuarantined=!0,this.pendingAtomicFrameRetry=!1,this.emitRuntimeDiagnostic({type:"backend-quarantined",message:this.runtimeErrorMessage(I)}),console.error("[GiftStage:SVGA] backend frame abort failed",I)}finally{this.destroyed||(this.runtimeFrameAbortCount++,this.emitRuntimeDiagnostic({type:"svga-frame-abort",message:this.runtimeErrorMessage(A)}))}return g}recordReplayFailure(A){this.runtimeReplayFailureCount++,this.emitRuntimeDiagnostic({type:"svga-frame-replay-failed",message:this.runtimeErrorMessage(A)})}shouldScheduleAtomicRetry(A){return A instanceof lI?this.atomicRetryProgressEntities.has(A.entity)?this.atomicRetryUsedForGenericFailure?!1:(this.atomicRetryUsedForGenericFailure=!0,!0):(this.atomicRetryProgressEntities.add(A.entity),!0):this.atomicRetryUsedForGenericFailure?!1:(this.atomicRetryUsedForGenericFailure=!0,!0)}resetAtomicRetryCycle(){this.pendingAtomicFrameRetry=!1,this.atomicRetryUsedForGenericFailure=!1,this.atomicRetryProgressEntities.clear()}runtimeErrorMessage(A){return A instanceof Error?A.message:String(A)}scheduleNextFrame(){if(this.destroyed){this.running=!1,this.rafId=null,this.lastTime=0;return}this.needsContinuousFrame()?this.rafId=requestAnimationFrame(this.onAnimationFrame):(this.running=!1,this.rafId=null,this.lastTime=0)}drawPreparedFrame(A){if(!this.destroyed){if(this.backendQuarantined)throw new Error("GPU backend is quarantined");this.svgaBatch.beginFrame(this.backend),!this.destroyed&&(this.assertBackendOperation("begin-frame",this.backend.beginFrame({stencil:this.svgaBatch.requiresStencil(A)})),!this.destroyed&&(this.particleBatchRenderer.prepareFrame(),!this.destroyed&&(this.particleBatchRenderer.draw("behind-media"),!this.destroyed&&(this.drawRenderLayers(A),!this.destroyed&&(this.particleBatchRenderer.draw("above-media"),!this.destroyed&&(this.svgaBatch.endFrame(),!this.destroyed&&this.assertBackendOperation("end-frame",this.backend.endFrame())))))))}}assertBackendOperation(A,g){if(!g.submitted)throw this.emitRuntimeDiagnostic({type:"backend-operation-rejected",message:`${A} rejected (${g.reason})${g.message?`: ${g.message}`:""}`}),new ma(A,g)}tickSharedWebCodecs(A,g,I){var B,Q;const E=A.webcodecsSharedState;if(!E)return;const i=Math.max(E.playback.duration,1e-9),e=Math.max(0,(g-E.startedAtMs)/1e3),t=Number.isFinite(A.wcSharedTimeOffset)?A.wcSharedTimeOffset:0;if(A.wcPlaybackTime=((e+t)%i+i)%i,!!I){if(t===0){if(this.advancedSharedWebCodecsScratch.has(E.id))return;this.advancedSharedWebCodecsScratch.add(E.id)}(Q=(B=E.playback).ensureDecodedThrough)==null||Q.call(B,A.wcPlaybackTime)}}tickWebCodecs(A,g,I){var B,Q;const E=A.webcodecsPlayback;if(!E)return;const i=Math.max(E.duration,1e-9);if(!Number.isFinite(i))return;const e=(B=A.options.loop)!=null?B:1;let t=((Q=A.wcPlaybackTime)!=null?Q:0)+g;if(e===0){A.wcPlaybackTime=(t%i+i)%i,this.wcDbgLogTickOnce(A,i,A.wcPlaybackTime,e);return}const a=Math.floor(t/i);if(A.loopCount+a>=e){A.loopCount=e,A.wcPlaybackTime=i-1e-6,this.wcDbgLogTickOnce(A,i,A.wcPlaybackTime,e),this.onWebCodecsPlaybackComplete(A,I);return}A.loopCount+=a,A.wcPlaybackTime=t-a*i,this.wcDbgLogTickOnce(A,i,A.wcPlaybackTime,e)}wcDbgLogTickOnce(A,g,I,B){var Q;this.wcDbgTickOnce.has(A.id)||(this.wcDbgTickOnce.add(A.id),console.info("[GiftStage:WC] clock tick",{giftId:A.id,type:A.type,state:A.state,paused:A.paused,duration:g,wcPlaybackTime:I,loop:(Q=A.options.loop)!=null?Q:1,maxLoopsEffective:B,backend:this.backend.type,canvasCss:`${this.backend.canvas.clientWidth}x${this.backend.canvas.clientHeight}`,canvasBuf:`${this.backend.canvas.width}x${this.backend.canvas.height}`}))}onWebCodecsPlaybackComplete(A,g){var I;(I=A.onComplete)==null||I.call(A,g),A.state=A.options.clearsAfterStop===!1?"stopped":"finished"}tickSVGA(A,g,I,B){var Q,E;const i=A.videoEntity,e=i.params.fps,t=i.params.frames;if(e<=0||t<=0)return!1;const a=1/e,o=A.currentFrame;A.accumulatedTime+=g;const s=Math.floor(A.accumulatedTime/a);if(s<=0)return!1;A.accumulatedTime-=s*a;const n=(Q=A.options.loop)!=null?Q:1,r=A.loopCount*t+A.currentFrame+s;return n===0?(A.loopCount=Math.floor(r/t),A.currentFrame=r%t):r>=n*t?(A.loopCount=n,A.currentFrame=t-1,this.onGiftPlayComplete(A,I,B)):(A.loopCount=Math.floor(r/t),A.currentFrame=r%t),A.currentFrame=Math.max(0,Math.min(A.currentFrame,t-1)),A.currentFrame!==o&&(this.audioManager.tickFrame(A,A.currentFrame),(E=A.onFrame)==null||E.call(A,A.currentFrame,I),A.svgaInitialFrameEmitted=!0),A.currentFrame!==o}onGiftPlayComplete(A,g,I){var B;(B=A.onComplete)==null||B.call(A,g),A.state=A.options.clearsAfterStop===!1?"stopped":"finished"}tickImage(A,g,I,B){var Q;const E=(Q=A.options.duration)!=null?Q:0;return!(E>0)||(A.accumulatedTime+=g,A.accumulatedTime*1e3<E)?!1:(A.accumulatedTime=E/1e3,this.onGiftPlayComplete(A,I,B),!0)}removeFinished(){const A=this.finishedSlotIdsScratch;A.length=0;for(const[g,I]of this.slots)I.state==="finished"&&A.push(g);for(const g of A)this.removeSlot(g);return A.length>0}getRenderOrderedSlots(){const A=this.visibleSlotsScratch;A.length=0;for(const g of this.sortedSlots)g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped"||A.push(g);return A}drawRenderLayers(A){var g,I;let B=0;for(;B<A.length;){const Q=(g=A[B].zIndex)!=null?g:0;let E=B+1;for(;E<A.length&&((I=A[E].zIndex)!=null?I:0)===Q;)E++;this.drawLayer(this.collapseCoincidentVisualRange(A,B,E)),B=E}}collapseCoincidentVisualDuplicates(A){return this.collapseCoincidentVisualRange(A,0,A.length)}collapseCoincidentVisualRange(A,g,I){const B=this.coincidentSeenScratch,Q=this.collapsedLayerScratch;B.clear(),Q.length=0;for(let E=I-1;E>=g;E-=1){const i=A[E],e=this.getCoincidentVisualKey(i);e&&B.has(e)||(e&&B.add(e),Q.push(i))}return Q.reverse(),Q}getCoincidentVisualKey(A){var g,I,B,Q,E;if(A.motionTrackBinding||this.postAnimator.hasAnimation(A.id))return null;const i=this.getBatchKey(A);if(i.includes(":-1:")||i.endsWith(":-1")||i==="svga::0")return null;const e=A.type==="svga"?`frame=${A.currentFrame}`:A.wcAtlasRect?`rect=${A.wcAtlasRect.x},${A.wcAtlasRect.y},${A.wcAtlasRect.w},${A.wcAtlasRect.h}`:"frame=shared-texture",t=A.type==="svga"?this.getSVGASlotTextureKey(A):"",a=(g=A.options.objectFit)!=null?g:"contain",o=(B=(I=A.options.transformOrigin)==null?void 0:I.x)!=null?B:"50%",s=(E=(Q=A.options.transformOrigin)==null?void 0:Q.y)!=null?E:"50%",n=A.coincidentVisualKeyCache;if(n&&n.resourceKey===i&&n.frameKey===e&&n.svgaSlotKey===t&&n.objectFit===a&&n.x===A.x&&n.y===A.y&&n.width===A.width&&n.height===A.height&&n.scale===A.scale&&n.opacity===A.opacity&&n.rotation===A.rotation&&n.originX===o&&n.originY===s)return n.key;const r=[A.type,i,e,t,`fit=${a}`,`x=${A.x}`,`y=${A.y}`,`w=${A.width}`,`h=${A.height}`,`scale=${A.scale}`,`opacity=${A.opacity}`,`rotation=${A.rotation}`,`origin=${o},${s}`].join("|");return A.coincidentVisualKeyCache={key:r,resourceKey:i,frameKey:e,svgaSlotKey:t,objectFit:a,x:A.x,y:A.y,width:A.width,height:A.height,scale:A.scale,opacity:A.opacity,rotation:A.rotation,originX:o,originY:s},r}getSVGASlotTextureKey(A){const g=A.svgaSlotTextures;if(!g||g.size===0)return"";const I=A.svgaSlotTextureKeyCache;if(I&&I.map===g&&I.size===g.size)return I.key;const B=Array.from(g.entries()).sort(([Q],[E])=>Q.localeCompare(E)).map(([Q,E])=>`${Q}:${E.texture.id}:${E.mode}:${E.logicalWidth}x${E.logicalHeight}`).join(",");return A.svgaSlotTextureKeyCache={key:B,map:g,size:g.size},B}drawLayer(A){if(A.length===0)return;let g=A[0].type,I=this.getBatchKey(A[0]);const B=this.drawRunScratch;B.length=0;for(const Q of A){const E=this.getBatchKey(Q);(Q.type!==g||E!==I)&&B.length>0&&(this.drawSlotRun(g,B),B.length=0),g=Q.type,I=E,B.push(Q)}B.length>0&&this.drawSlotRun(g,B),B.length=0}needsContinuousFrame(){var A;if(this.backendQuarantined)return!1;if(this.pendingAtomicFrameRetry)return!0;if(this.globallyPaused)return!1;if(this.hasActiveFrameController()||this.postAnimator.hasRunningAnimations())return!0;for(const g of this.slots.values())if(!(g.paused||g.state!=="playing")&&(g.type==="svga"&&g.videoEntity||g.type==="image"&&((A=g.options.duration)!=null?A:0)>0||(g.type==="vap"||g.type==="alphaVideo")&&g.webcodecsPlayback||(g.type==="vap"||g.type==="alphaVideo")&&g.videoElement&&typeof g.videoElement.requestVideoFrameCallback!="function"))return!0;return!1}hasActiveFrameController(){for(const A of this.frameControllers)if(A.active)return!0;return!1}insertSortedSlot(A){let g=0,I=this.sortedSlots.length;for(;g<I;){const B=g+I>>>1;PI.compareSlots(this.sortedSlots[B],A)<=0?g=B+1:I=B}this.sortedSlots.splice(g,0,A)}static compareSlots(A,g){var I,B,Q,E;const i=((I=A.zIndex)!=null?I:0)-((B=g.zIndex)!=null?B:0);return i!==0?i:((Q=A.renderOrder)!=null?Q:0)-((E=g.renderOrder)!=null?E:0)}drawSlotRun(A,g){if(g.length===0)return;if(A==="svga"){this.svgaBatch.drawSlots(this.backend,g);return}if(A==="image"){for(const B of g)this.imageRenderer.drawSlot(this.backend,B);return}const I=this.videoRunMapScratch;I.clear();for(const B of g)I.set(B.id,B);A==="vap"?this.vapRenderer.draw(this.backend,I):this.alphaVideoRenderer.draw(this.backend,I)}getBatchKey(A){var g,I,B,Q,E,i,e,t,a,o,s,n;const r=A.batchKeyCache;switch(A.type){case"svga":{const h=A.videoEntity,c=(g=h==null?void 0:h.atlasTextureHandles)!=null&&g.length?h.atlasTextureHandles:(I=h==null?void 0:h.atlasTextureHandle)!=null?I:null,D=A.svgaSlotTextures&&A.svgaSlotTextures.size>0?1:0,w=(Q=(B=A.motionTrackBinding)==null?void 0:B.buffer)!=null?Q:null;if(r&&r.d0===c&&r.d1===D&&r.d2===w)return r.key;const l=((E=h==null?void 0:h.atlasTextureHandles)!=null&&E.length?h.atlasTextureHandles:h!=null&&h.atlasTextureHandle?[h.atlasTextureHandle]:[]).map(y=>y.id).join(","),F=(i=w==null?void 0:w.id)!=null?i:"none",d=`svga:${l}:${D}:motion:${F}`;return A.batchKeyCache={key:d,d0:c,d1:D,d2:w},d}case"vap":{const h=A.videoTextureHandle,c=!!A.vapMixState,D=(e=A.options.objectFit)!=null?e:"contain";if(r&&r.d0===h&&r.d1===c&&r.d2===D)return r.key;const w=`vap:${c?"mixed":"video"}:${(t=h==null?void 0:h.id)!=null?t:-1}:${D}`;return A.batchKeyCache={key:w,d0:h,d1:c,d2:D},w}case"alphaVideo":{const h=A.videoTextureHandle,c=(a=A.options.objectFit)!=null?a:"contain";if(r&&r.d0===h&&r.d1===c)return r.key;const D=`alpha:${(o=h==null?void 0:h.id)!=null?o:-1}:${c}`;return A.batchKeyCache={key:D,d0:h,d1:c,d2:null},D}case"image":{const h=A.imageTextureHandle,c=(s=A.options.objectFit)!=null?s:"contain";if(r&&r.d0===h&&r.d1===c)return r.key;const D=`image:${(n=h==null?void 0:h.id)!=null?n:-1}:${c}`;return A.batchKeyCache={key:D,d0:h,d1:c,d2:null},D}}}deleteSVGAAtlasTextures(A){var g,I,B,Q;(g=A.svgaFrameTableState)!=null&&g.binding&&((B=(I=this.backend).deleteSVGAFrameTable)==null||B.call(I,A.svgaFrameTableState.binding),A.svgaFrameTableState=null,A.svgaTimelineDrawRuns=void 0,A.svgaHybridCommandTable=void 0);const E=(Q=A.atlasTextureHandles)!=null&&Q.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],i=new Set;for(const e of E)i.has(e.id)||(i.add(e.id),this.backend.deleteTexture(e))}destroy(){if(!this.destroyed){this.destroyed=!0,this.stop(),this.resetAtomicRetryCycle();for(const A of Array.from(this.slots.keys()))this.removeSlot(A);this.svgaBatch.destroy(this.backend),this.vapRenderer.destroy(this.backend),this.alphaVideoRenderer.destroy(this.backend),this.imageRenderer.destroy(this.backend),this.particleBatchRenderer.destroy(),this.postAnimator.destroy(),this.audioManager.destroy(),this.sortedSlots.length=0,this.visibleSlotsScratch.length=0,this.collapsedLayerScratch.length=0,this.drawRunScratch.length=0,this.coincidentSeenScratch.clear(),this.frameControllers.clear(),this.backend.destroy()}}}function DQ(){return typeof DecompressionStream!="undefined"}function Ag(){return typeof performance!="undefined"?performance.now():Date.now()}function fE(C){return C instanceof Error?`${C.name}: ${C.message}`:String(C)}async function Ja(C,A,g){const I=g?Ag():0,B=g?{inputBytes:C.byteLength,nativeAvailable:DQ(),nativeAttempts:[]}:null,Q=(i,e)=>(B&&(B.selectedPath=e,B.outputBytes=i.byteLength,B.totalMs=Ag()-I,g==null||g(B)),i),E=i=>{throw B&&(B.error=fE(i),B.totalMs=Ag()-I,g==null||g(B)),i};if(DQ())try{return Q(await FC(C,B!=null?B:void 0),"native")}catch(i){}try{const i=B?Ag():0,e=A();return B&&(B.wasmMs=Ag()-i),e?Q(e,"wasm"):Q(await FC(C,B!=null?B:void 0),"native-retry")}catch(i){return E(i)}}async function FC(C,A){if(typeof DecompressionStream!="undefined"){try{return await $B(C,"deflate",A==null?void 0:A.nativeAttempts)}catch(g){}try{return await $B(C.slice(2),"deflate-raw",A==null?void 0:A.nativeAttempts)}catch(g){}return $B(C.slice(2,-4),"deflate-raw",A==null?void 0:A.nativeAttempts)}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function $B(C,A,g){const I=g?Ag():0,B=g?{format:A,inputBytes:C.byteLength,inputChunks:1,writerSubmitMs:0,readMs:0,concatMs:0,totalMs:0,outputChunks:0,outputBytes:0,status:"failed"}:null;try{const Q=new DecompressionStream(A),E=Q.writable.getWriter(),i=Q.readable.getReader(),e=B?Ag():0,t=Promise.resolve(E.write(new Uint8Array(C.buffer,C.byteOffset,C.byteLength))),a=Promise.resolve(E.close());t.catch(()=>{}),a.catch(()=>{}),B&&(B.writerSubmitMs=Ag()-e);const o=[];let s=0;const n=B?Ag():0;for(;;){const{done:D,value:w}=await i.read();if(D)break;o.push(w),s+=w.length}await Promise.all([t,a]),B&&(B.readMs=Ag()-n,B.outputChunks=o.length,B.outputBytes=s);const r=B?Ag():0,h=new Uint8Array(s);let c=0;for(const D of o)h.set(D,c),c+=D.length;return B&&(B.concatMs=Ag()-r,B.totalMs=Ag()-I,B.status="success"),h}catch(Q){throw B&&(B.totalMs=Ag()-I,B.error=fE(Q)),Q}finally{B&&(g==null||g.push(B))}}typeof TextEncoder!="undefined"&&new TextEncoder;const lQ=typeof TextDecoder!="undefined"?new TextDecoder:null;function ME(C){const A=C instanceof Uint8Array?C:new Uint8Array(C);return lQ?lQ.decode(A):La(A)}function La(C){let A="";for(let g=0;g<C.length;g+=1){const I=C[g];if(I<128){A+=String.fromCharCode(I);continue}if(I>=192&&I<224&&g+1<C.length){const B=(I&31)<<6|C[++g]&63;A+=String.fromCharCode(B);continue}if(I>=224&&I<240&&g+2<C.length){const B=(I&15)<<12|(C[++g]&63)<<6|C[++g]&63;A+=String.fromCharCode(B);continue}if(I>=240&&I<248&&g+3<C.length){let B=(I&7)<<18|(C[++g]&63)<<12|(C[++g]&63)<<6|C[++g]&63;B-=65536,A+=String.fromCharCode(55296+(B>>10),56320+(B&1023));continue}A+="�"}return A}var Ha=Object.defineProperty,xa=(C,A,g)=>A in C?Ha(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,AC=(C,A,g)=>xa(C,typeof A!="symbol"?A+"":A,g);const ba=0,qa=1,va=2,Ta=5;class LC{constructor(A,g=0,I){AC(this,"view"),AC(this,"pos"),AC(this,"end"),this.view=new DataView(A.buffer,A.byteOffset,A.byteLength),this.pos=g,this.end=g+(I!=null?I:A.byteLength)}get remaining(){return this.end-this.pos}readVarint(){let A=0,g=0;for(;this.pos<this.end;){const I=this.view.getUint8(this.pos++);if(A|=(I&127)<<g,(I&128)===0)return A>>>0;g+=7}return A>>>0}readSignedVarint(){return this.readVarint()|0}readFloat(){const A=this.view.getFloat32(this.pos,!0);return this.pos+=4,A}readDouble(){const A=this.view.getFloat64(this.pos,!0);return this.pos+=8,A}readBytes(){const A=this.readVarint(),g=this.view.byteOffset+this.pos;this.pos+=A;const I=this.view.buffer.slice(g,g+A);return new Uint8Array(I)}readString(){const A=this.readBytes();return ME(A)}readTag(){if(this.pos>=this.end)return null;const A=this.readVarint();return{field:A>>>3,wire:A&7}}skip(A){switch(A){case ba:this.readVarint();break;case qa:this.pos+=8;break;case va:this.pos+=this.readVarint();break;case Ta:this.pos+=4;break}}sub(A){const g=new LC(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,g}}function Wa(C){const A={viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.viewBoxWidth=C.readFloat();break;case 2:A.viewBoxHeight=C.readFloat();break;case 3:A.fps=C.readSignedVarint();break;case 4:A.frames=C.readSignedVarint();break;default:C.skip(g.wire)}}return A}function Va(C){const A={x:0,y:0,width:0,height:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.width=C.readFloat();break;case 4:A.height=C.readFloat();break;default:C.skip(g.wire)}}return A}function NE(C){const A={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.a=C.readFloat();break;case 2:A.b=C.readFloat();break;case 3:A.c=C.readFloat();break;case 4:A.d=C.readFloat();break;case 5:A.tx=C.readFloat();break;case 6:A.ty=C.readFloat();break;default:C.skip(g.wire)}}return A}function wQ(C){const A={r:0,g:0,b:0,a:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.r=C.readFloat();break;case 2:A.g=C.readFloat();break;case 3:A.b=C.readFloat();break;case 4:A.a=C.readFloat();break;default:C.skip(g.wire)}}return A}function Za(C){const A={fill:null,stroke:null,strokeWidth:0},g=[];for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:{const B=C.readVarint();A.fill=wQ(C.sub(B));break}case 2:{const B=C.readVarint();A.stroke=wQ(C.sub(B));break}case 3:A.strokeWidth=C.readFloat();break;case 4:A.lineCap=C.readVarint();break;case 5:A.lineJoin=C.readVarint();break;case 6:A.miterLimit=C.readFloat();break;case 7:g[0]=C.readFloat();break;case 8:g[1]=C.readFloat();break;case 9:g[2]=C.readFloat();break;default:C.skip(I.wire)}}return g.some(I=>I>0)&&(A.lineDash=g.filter(I=>I>0)),A}function Xa(C){let A="";for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A=C.readString();break;default:C.skip(g.wire)}}return A}function Oa(C){const A={x:0,y:0,width:0,height:0,cornerRadius:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.width=C.readFloat();break;case 4:A.height=C.readFloat();break;case 5:A.cornerRadius=C.readFloat();break;default:C.skip(g.wire)}}return A}function Pa(C){const A={x:0,y:0,radiusX:0,radiusY:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.radiusX=C.readFloat();break;case 4:A.radiusY=C.readFloat();break;default:C.skip(g.wire)}}return A}function ja(C){let A=0,g="",I,B,Q={fill:null,stroke:null,strokeWidth:0},E={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;C.remaining>0;){const i=C.readTag();if(!i)break;switch(i.field){case 1:A=C.readVarint();break;case 2:{const e=C.readVarint();g=Xa(C.sub(e));break}case 3:{const e=C.readVarint();I=Oa(C.sub(e));break}case 4:{const e=C.readVarint();B=Pa(C.sub(e));break}case 10:{const e=C.readVarint();Q=Za(C.sub(e));break}case 11:{const e=C.readVarint();E=NE(C.sub(e));break}default:C.skip(i.wire)}}return A===3?{kind:"keep"}:g?{kind:"path",pathData:g,style:Q,transform:E}:I?{kind:"rect",rect:I,style:Q,transform:E}:B?{kind:"ellipse",ellipse:B,style:Q,transform:E}:null}function za(C){const A={alpha:0,layout:null,transform:null,clipPath:""},g=[];for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:A.alpha=C.readFloat();break;case 2:{const B=C.readVarint();A.layout=Va(C.sub(B));break}case 3:{const B=C.readVarint();A.transform=NE(C.sub(B));break}case 4:A.clipPath=C.readString();break;case 5:{const B=C.readVarint(),Q=ja(C.sub(B));Q&&g.push(Q);break}default:C.skip(I.wire)}}return g.length>0&&(A.shapes=g),A}function _a(C){var A;const g={imageKey:"",frames:[]};for(;C.remaining>0;){const B=C.readTag();if(!B)break;switch(B.field){case 1:g.imageKey=C.readString();break;case 2:{const Q=C.readVarint();g.frames.push(za(C.sub(Q)));break}default:C.skip(B.wire)}}let I=null;for(const B of g.frames){const Q=B.shapes;if(!Q||Q.length===0){B.shapes=null,I=null;continue}if(((A=Q[0])==null?void 0:A.kind)==="keep"){B.shapes=I;continue}const E=Q.filter(i=>i.kind!=="keep");B.shapes=E.length>0?E:null,I=B.shapes}return g}function $a(C){const A={audioKey:"",startFrame:0,endFrame:0,startTime:0,totalTime:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.audioKey=C.readString();break;case 2:A.startFrame=C.readSignedVarint();break;case 3:A.endFrame=C.readSignedVarint();break;case 4:A.startTime=C.readSignedVarint();break;case 5:A.totalTime=C.readSignedVarint();break;default:C.skip(g.wire)}}return A}function Ao(C){let A="",g=new Uint8Array(0);for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:A=C.readString();break;case 2:g=C.readBytes();break;default:C.skip(I.wire)}}return{key:A,value:g}}function yC(C){const A=new LC(C),g=[],I={version:"",params:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},images:new Map,audios:[]};for(;A.remaining>0;){const Q=A.readTag();if(!Q)break;switch(Q.field){case 1:I.version=A.readString();break;case 2:{const E=A.readVarint();I.params=Wa(A.sub(E));break}case 3:{const E=A.readVarint(),{key:i,value:e}=Ao(A.sub(E));I.images.set(i,e);break}case 4:{const E=A.readVarint();g.push(_a(A.sub(E)));break}case 5:{const E=A.readVarint();I.audios.push($a(A.sub(E)));break}default:A.skip(Q.wire)}}const B=PQ(g,I.params.frames);return Wg(I.params,B),{version:I.version,params:I.params,images:I.images,spriteTable:B,audios:I.audios}}function FQ(C,A){C.f32(A.r),C.f32(A.g),C.f32(A.b),C.f32(A.a)}function yQ(C){return{r:C.f32(),g:C.f32(),b:C.f32(),a:C.f32()}}function go(C,A){var g,I,B;const Q=(I=(g=A.lineDash)==null?void 0:g.filter(i=>i>0))!=null?I:[];let E=0;if(A.fill&&(E|=1),A.stroke&&(E|=2),A.lineCap!==void 0&&(E|=4),A.lineJoin!==void 0&&(E|=8),A.miterLimit!==void 0&&(E|=16),Q.length>0&&(E|=32),C.u8(E),A.fill&&FQ(C,A.fill),A.stroke&&FQ(C,A.stroke),C.f32((B=A.strokeWidth)!=null?B:0),A.lineCap!==void 0&&C.i32(A.lineCap),A.lineJoin!==void 0&&C.i32(A.lineJoin),A.miterLimit!==void 0&&C.f32(A.miterLimit),Q.length>0){C.u32(Q.length);for(const i of Q)C.f32(i)}}function Io(C){const A=C.u8(),g=A&1?yQ(C):null,I=A&2?yQ(C):null,B={fill:g,stroke:I,strokeWidth:C.f32()};if(A&4&&(B.lineCap=C.i32()),A&8&&(B.lineJoin=C.i32()),A&16&&(B.miterLimit=C.f32()),A&32){const Q=C.u32(),E=[];for(let i=0;i<Q;i++)E.push(C.f32());E.length>0&&(B.lineDash=E)}return B}async function Bo(C,A,g){var I,B,Q,E;C.u8(A.kind==="path"?0:A.kind==="rect"?1:2),await C.stringCooperative((I=A.pathData)!=null?I:"",g);const i=(B=A.rect)!=null?B:{x:0,y:0,width:0,height:0,cornerRadius:0};C.f32(i.x),C.f32(i.y),C.f32(i.width),C.f32(i.height),C.f32((Q=i.cornerRadius)!=null?Q:0);const e=(E=A.ellipse)!=null?E:{x:0,y:0,radiusX:0,radiusY:0};C.f32(e.x),C.f32(e.y),C.f32(e.radiusX),C.f32(e.radiusY),go(C,A.style),C.f32(A.transform.a),C.f32(A.transform.b),C.f32(A.transform.c),C.f32(A.transform.d),C.f32(A.transform.tx),C.f32(A.transform.ty)}function Co(C){const A=C.u8();if(A===3)throw new Error("Unexpected shape keep marker in sprite table shapes group");const g=C.string(),I={x:C.f32(),y:C.f32(),width:C.f32(),height:C.f32(),cornerRadius:C.f32()},B={x:C.f32(),y:C.f32(),radiusX:C.f32(),radiusY:C.f32()},Q=Io(C),E={a:C.f32(),b:C.f32(),c:C.f32(),d:C.f32(),tx:C.f32(),ty:C.f32()};return A===0?{kind:"path",pathData:g,style:Q,transform:E}:A===1?{kind:"rect",rect:I,style:Q,transform:E}:{kind:"ellipse",ellipse:B,style:Q,transform:E}}async function Qo(C,A,g){C.u32(A.spriteCount);for(const I of A.imageKeys)await C.stringCooperative(I,g),await g();C.pad4(),C.u32(A.frameCount),await C.rawBytesCooperative(new Uint8Array(A.frameData.buffer,A.frameData.byteOffset,A.frameData.byteLength),g),C.u32(A.clipPaths.length);for(const I of A.clipPaths)await C.stringCooperative(I,g),await g();C.pad4(),await C.rawBytesCooperative(new Uint8Array(A.clipPathIndex.buffer,A.clipPathIndex.byteOffset,A.clipPathIndex.byteLength),g),C.u32(A.shapesTable.length);for(const I of A.shapesTable){C.u32(I.length);for(const B of I)await Bo(C,B,g),await g()}C.pad4(),await C.rawBytesCooperative(new Uint8Array(A.shapesIndex.buffer,A.shapesIndex.byteOffset,A.shapesIndex.byteLength),g),C.u8(A.hasAnyShapes?1:0)}async function UE(C,A){const g=C.u32(),I=[];for(let w=0;w<g;w++)I.push(C.string()),await A();C.pad4();const B=C.u32(),Q=g*B*vg;C.pad4();const E=C.position,i=new Float32Array(C.sourceBuffer(),E,Q);C.skip(Q*4),await A();const e=C.u32(),t=[];for(let w=0;w<e;w++)t.push(C.string()),await A();C.pad4();const a=g*B,o=C.position,s=new Int32Array(C.sourceBuffer(),o,a);C.skip(a*4),await A();const n=C.u32(),r=[];for(let w=0;w<n;w++){const l=C.u32(),F=[];for(let d=0;d<l;d++)F.push(Co(C)),await A();r.push(F)}C.pad4();const h=g*B,c=C.position,D=new Int32Array(C.sourceBuffer(),c,h);return C.skip(h*4),await A(),{spriteCount:g,frameCount:B,imageKeys:I,frameData:i,clipPaths:t,clipPathIndex:s,shapesTable:r,shapesIndex:D,hasAnyShapes:C.u8()!==0}}var Eo=Object.defineProperty,io=(C,A,g)=>A in C?Eo(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,gC=(C,A,g)=>io(C,typeof A!="symbol"?A+"":A,g);const eo=1397182530,to=2;function ao(C){return C+3&-4}let oo=class{constructor(A){this.buffer=A,gC(this,"view"),gC(this,"bytes"),gC(this,"offset",0),this.view=new DataView(A),this.bytes=new Uint8Array(A)}get position(){return this.offset}skip(A){this.offset+=A}pad4(){this.offset=ao(this.offset)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}i32(){const A=this.view.getInt32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),g=this.offset;return this.offset+=A,this.bytes.subarray(g,g+A)}bytesRef(){const A=this.u32(),g=this.offset;return this.offset+=A,{offset:g,length:A}}string(){return ME(this.bytesValue())}sourceBuffer(){return this.buffer}};async function kE(C,A,g,I){const B=gg({maxBudgetMs:g}),Q=async()=>{b(I,"SVGA payload deserialization aborted"),B.shouldYield()&&await B.yield(),b(I,"SVGA payload deserialization aborted")};b(I,"SVGA payload deserialization aborted");const E=new oo(C);if(E.u32()!==eo)throw new Error("Invalid SVGA worker payload magic");if(E.u16()!==to)throw new Error("Unsupported SVGA worker payload version");const i=E.u16(),e=E.string(),t={viewBoxWidth:E.f32(),viewBoxHeight:E.f32(),fps:E.f32(),frames:E.u32()},a=[],o=E.u32();for(let h=0;h<o;h++)a.push({audioKey:E.string(),startFrame:E.i32(),endFrame:E.i32(),startTime:E.i32(),totalTime:E.i32()}),await Q();const s=[],n=E.u32();for(let h=0;h<n;h++){const c=E.string(),D=E.bytesRef();s.push({key:c,offset:D.offset,length:D.length}),await Q()}const r=await UE(E,Q);return(i&2)!==0&&(r.allFramesInsideViewBox=(i&1)!==0),b(I,"SVGA payload deserialization aborted"),{version:e,params:t,audios:a,spriteTable:r,images:{},imageBlob:E.sourceBuffer(),imageEntries:s,__debug:A}}const YE=`function DA() {
|
|
2758
|
+
`,gQ=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",EE],{type:"text/javascript;charset=utf-8"});function At(C){let A;try{if(A=gQ&&(self.URL||self.webkitURL).createObjectURL(gQ),!A)throw"";const g=new Worker(A,{type:"module",name:C==null?void 0:C.name});return g.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),g}catch(g){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(EE),{type:"module",name:C==null?void 0:C.name})}}function cA(C="Operation aborted"){const A=new Error(C);return A.name="AbortError",A}function Kg(C){return C instanceof Error?C.name==="AbortError"?!0:"cause"in C&&Kg(C.cause):!1}function b(C,A){if(C!=null&&C.aborted)throw cA(A)}var gt=Object.defineProperty,It=(C,A,g)=>A in C?gt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,XB=(C,A,g)=>It(C,typeof A!="symbol"?A+"":A,g);class Bt{constructor(){XB(this,"active",0),XB(this,"maxConcurrent",1),XB(this,"waiters",[])}configure(A){this.maxConcurrent=Math.max(1,Math.floor(Number.isFinite(A)?A:1)),this.drain()}tryAcquire(){return this.active>=this.maxConcurrent?null:(this.active++,this.createRelease())}acquire(A){if(A!=null&&A.aborted)return Promise.reject(cA("SVGA worker task aborted"));const g=this.tryAcquire();return g?Promise.resolve(g):new Promise((I,B)=>{const Q={resolve:I,reject:B,signal:A};A&&(Q.onAbort=()=>{const E=this.waiters.indexOf(Q);E>=0&&this.waiters.splice(E,1),B(cA("SVGA worker task aborted"))},A.addEventListener("abort",Q.onAbort,{once:!0})),this.waiters.push(Q)})}createRelease(){let A=!1;return()=>{A||(A=!0,this.active--,this.drain())}}run(A,g){if(g!=null&&g.aborted)return Promise.reject(cA("SVGA worker task aborted"));const I=this.tryAcquire();return I?this.execute(A,I):this.acquire(g).then(B=>this.execute(A,B))}async execute(A,g){try{return await A()}finally{g()}}drain(){for(var A;this.active<this.maxConcurrent&&this.waiters.length>0;){const g=this.waiters.shift();if(g){if(g.signal&&g.onAbort&&g.signal.removeEventListener("abort",g.onAbort),(A=g.signal)!=null&&A.aborted){g.reject(cA("SVGA worker task aborted"));continue}this.active++,g.resolve(this.createRelease())}}}}const MC=new Bt;function NC(C){C!=null&&MC.configure(C)}function UC(C,A){return MC.run(C,A)}function Ct(C){return MC.acquire(C)}let KI=null,Qt=1;const OI=new Map;function iE(C){C.signal&&C.onAbort&&C.signal.removeEventListener("abort",C.onAbort)}function uB(C,A,g){KI===C&&(KI=null);try{C.terminate()}catch(I){}for(const[I,B]of OI)B.owner===C&&(OI.delete(I),iE(B),B.reject(g==null||I===g?A:new Error("SVGA clip worker restarted after another request was canceled")))}function Et(){if(!KI){const C=new At;KI=C,C.addEventListener("message",A=>{var g;const I=A.data;if(!I||I.type!=="build-svga-clip-meshes-result")return;const B=OI.get(I.id);if(!B||B.owner!==C)return;if(OI.delete(I.id),iE(B),I.error){B.reject(new Error(I.error));return}const Q=new Set(B.paths),E=new Map;for(const i of(g=I.entries)!=null?g:[]){if(!Q.has(i.path)){B.reject(new Error(`SVGA clip worker returned unknown path: ${i.path}`));return}if(E.has(i.path)){B.reject(new Error(`SVGA clip worker returned duplicate path: ${i.path}`));return}if(!i.vertices||!i.indices){B.reject(new Error(`SVGA clip worker returned no mesh for fillable path: ${i.path}`));return}const e={vertices:i.vertices,indices:i.indices},t=lB(e);if(t){B.reject(new Error(`SVGA clip worker returned invalid mesh for ${i.path}: ${t}`));return}E.set(i.path,e)}for(const i of B.paths)if(!E.has(i)){B.reject(new Error(`SVGA clip worker omitted requested path: ${i}`));return}B.resolve(E)}),C.addEventListener("error",A=>{uB(C,new Error(A.message||"SVGA clip worker error"))}),C.addEventListener("messageerror",()=>{uB(C,new Error("SVGA clip worker message deserialization failed"))})}return KI}function eE(){return typeof Worker!="undefined"}function it(C,A={}){return eE()?new Set(C).size!==C.length?Promise.reject(new Error("SVGA clip worker request contains duplicate paths")):UC(()=>{b(A.signal,"SVGA clip worker task aborted");const g=Et(),I=Qt++;return new Promise((B,Q)=>{var E,i;const e={owner:g,signal:A.signal,paths:[...C],resolve:B,reject:Q};if(e.onAbort=()=>{uB(g,cA("SVGA clip worker task aborted"),I)},OI.set(I,e),(E=A.signal)!=null&&E.aborted){e.onAbort();return}(i=A.signal)==null||i.addEventListener("abort",e.onAbort,{once:!0});try{g.postMessage({type:"build-svga-clip-meshes",id:I,paths:C,workerTimeSliceMs:A.workerTimeSliceMs})}catch(t){uB(g,t instanceof Error?t:new Error(String(t)))}})},A.signal):Promise.reject(new Error("SVGA clip worker unavailable"))}var et=Object.defineProperty,tt=(C,A,g)=>A in C?et(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,EB=(C,A,g)=>tt(C,typeof A!="symbol"?A+"":A,g);const tE=1e3/60,at=2,ot=12,st=.25;function wB(){return typeof performance!="undefined"?performance.now():Date.now()}function nt(){return new Promise(C=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>C());return}setTimeout(C,0)}).then(wB)}function rt(C,A={}){var g,I,B;const Q=Math.max(.1,(g=A.minBudgetMs)!=null?g:at),E=Math.max(Q,(I=A.maxBudgetMs)!=null?I:ot),i=Math.max(.05,Math.min(.95,(B=A.frameFraction)!=null?B:.5)),e=Number.isFinite(C)&&C>0?C:tE;return Math.max(Q,Math.min(E,e*i))}function ht(C,A){return!Number.isFinite(A)||A<4||A>100?C:C+(A-C)*st}class ct{constructor(){EB(this,"frameIntervalMs",tE),EB(this,"lastFrameAt",-1),EB(this,"sliceStartedAt",wB()),EB(this,"nextFramePromise",null)}budgetMs(A={}){return rt(this.frameIntervalMs,A)}shouldYield(A={}){return wB()-this.sliceStartedAt>=this.budgetMs(A)}async yield(){this.nextFramePromise||(this.nextFramePromise=nt().then(A=>{this.lastFrameAt>=0&&(this.frameIntervalMs=ht(this.frameIntervalMs,A-this.lastFrameAt)),this.lastFrameAt=A,this.sliceStartedAt=wB()}).finally(()=>{this.nextFramePromise=null})),await this.nextFramePromise}}const OB=new ct;function gg(C={}){return{get budgetMs(){return OB.budgetMs(C)},shouldYield(){return OB.shouldYield(C)},yield(){return OB.yield()}}}function cI(C){return C!=null&&Number.isInteger(C)&&C>=0}function IQ(C,A){return cI(C)?C:A}function aE(C,A,g){const I=C*A*g;return Number.isSafeInteger(I)?I:Number.POSITIVE_INFINITY}function kC(C,A){var g;if(C.length%vg!==0)throw new RangeError(`SVGA frameData length must be a multiple of ${vg}, got ${C.length}`);const I=C.length/vg,B=I*Vg,Q=A!=null?A:new Float32Array(B);if(Q.length<B)throw new RangeError(`SVGA packed output is too small: need ${B} floats, got ${Q.length}`);for(let E=0;E<I;E++){const i=E*vg,e=E*Vg;for(let t=0;t<vg;t++)Q[e+t]=(g=C[i+t])!=null?g:0;Q[e+9]=0,Q[e+10]=0,Q[e+11]=0}return Q}function Dt(C,A){return kC(C,A)}function $I(C,A,g=Vg){const I=cI(C)?C:0,B=cI(A)?A:0,Q=cI(g)?g:Vg;return aE(I,B,Q)*Float32Array.BYTES_PER_ELEMENT}function lt(C,A,g=KB){return Number.isFinite(g)&&g>=0&&$I(C,A)<=g}function wt(C,A,g,I=KB){const B=$I(A,g);return Number.isFinite(C)&&C>=0&&Number.isFinite(I)&&I>=0&&Number.isFinite(B)&&C+B<=I}const YC=1,Ft=2;function oE(C,A,g={}){const I=new Float32Array(C.length*tC);for(let B=0;B<C.length;B++){const Q=B*tC,E=A.get(C[B]);if(I[Q+4]=B,!E){I[Q+6]=YC;continue}const i=Number.isInteger(E.textureIndex)&&E.textureIndex>=0?E.textureIndex:0;I[Q]=E.x,I[Q+1]=E.y,I[Q+2]=E.x+E.w,I[Q+3]=E.y+E.h,I[Q+5]=i}return I}function yt(C,A){var g,I;let B=-1;for(const Q of C){const E=(I=(g=A.get(Q))==null?void 0:g.textureIndex)!=null?I:0;Number.isInteger(E)&&E>=0&&(B=Math.max(B,E))}return B+1}function Gt(C){if(C.hasClipPaths!=null)return C.hasClipPaths;const A=C.spriteTable;if(!A)return!1;for(const g of A.clipPathIndex)if(g>=0)return!0;return A.clipPaths.length>0&&A.clipPathIndex.length===0}function dg(C,A,g,I,B,Q,E,i){var e;const t=(e=E.strategy)!=null?e:"auto",a=cI(E.compatibleInstanceCount)?E.compatibleInstanceCount:0,o=cI(E.atlasPageCount)?E.atlasPageCount:E.hasAtlas===!1?0:1;return{path:C,eligible:C!=="cpu-reference",selectedPath:C,backend:A,requested:t,requestedStrategy:t,spriteCount:g,frameCount:I,compatibleInstanceCount:a,atlasPageCount:o,tableBytes:B,frameTableBytes:B,commandTableBytes:0,budgetBytes:Q,pathState:i==="table-preparing"?"preparing":C==="cpu-reference"?"fallback":"settled",drawBatchMode:C==="gpu-hybrid"?"hybrid-scheduled":"per-slot",drawCompatibleInstanceCount:a,fallbackReasons:i?[i]:[],...i?{fallbackReason:i}:{}}}function nC(C){var A,g,I,B,Q,E,i;const e=C.spriteTable,t=IQ(C.spriteCount,(A=e==null?void 0:e.spriteCount)!=null?A:0),a=IQ(C.frameCount,(g=e==null?void 0:e.frameCount)!=null?g:0),o=(I=C.budgetBytes)!=null?I:KB,s=$I(t,a),n=(B=C.strategy)!=null?B:"auto",r=(E=(Q=C.hasAnyShapes)!=null?Q:e==null?void 0:e.hasAnyShapes)!=null?E:!1;if(n==="cpu")return dg("cpu-reference",C.backend,t,a,s,o,C,"policy-disabled");if(C.backend==="webgl1")return dg("cpu-reference",C.backend,t,a,s,o,C,"device-capability");const h=(i=C.frameDataLength)!=null?i:e==null?void 0:e.frameData.length,c=aE(t,a,vg);if(t<=0||a<=0||!Number.isFinite(c)||h!=null&&h!==c)return dg("cpu-reference",C.backend,t,a,s,o,C,"validation-failed");if(!Number.isFinite(o)||o<0||s>o)return dg("cpu-reference",C.backend,t,a,s,o,C,"table-too-large-or-budget");if(C.hasAtlas===!1&&!r)return dg("cpu-reference",C.backend,t,a,s,o,C,"plan-not-ready-or-unsupported");if(C.tablePreparing)return dg("cpu-reference",C.backend,t,a,s,o,C,"table-preparing");if(C.uploadFailed)return dg("cpu-reference",C.backend,t,a,s,o,C,"upload-failed");const D=Gt(C);return C.hasSlotTextureOverride===!0?dg("cpu-reference",C.backend,t,a,s,o,C,"slot-overrides"):dg(r||D?"gpu-hybrid":"gpu-direct",C.backend,t,a,s,o,C)}const DI=0,mI=1,bg=2,SB=3,JI=4;function dt(C){const A=LB(C);if(A.length!==1||A[0].length!==4)return null;const g=A[0],I=g.map(r=>r.x),B=g.map(r=>r.y),Q=Math.min(...I),E=Math.min(...B),i=Math.max(...I),e=Math.max(...B);if(!(i>Q&&e>E))return null;const t=Math.max(i-Q,e-E)*1e-4+1e-6;let a=0;const o=[];for(const r of g){const h=Math.abs(r.x-Q)<=t,c=Math.abs(r.x-i)<=t,D=Math.abs(r.y-E)<=t,w=Math.abs(r.y-e)<=t;if(!h&&!c||!D&&!w)return null;const l=(h?0:1)|(D?0:2);if(o.includes(l))return null;o.push(l),a|=1<<l}if(a!==15)return null;let s=0;for(let r=0;r<g.length;r++){const h=g[r],c=g[(r+1)%g.length],D=Math.abs(c.x-h.x),w=Math.abs(c.y-h.y);if(!(D<=t&&w>t||w<=t&&D>t))return null;s+=h.x*c.y-c.x*h.y}const n=2*(i-Q)*(e-E);return Math.abs(Math.abs(s)-n)>t*n?null:{x0:Q,y0:E,x1:i,y1:e}}function rC(C){var A,g,I,B,Q,E,i,e,t;const a=C.spriteTable,o=(A=C.atlasTextureHandles)!=null&&A.length?C.atlasTextureHandles:C.atlasTextureHandle?[C.atlasTextureHandle]:[],s=new Uint32Array(a.frameCount+1),n=[],r=(N,S,Y,U,k,m=null)=>{n.push({type:N,spriteIndex:S,shapeIndex:Y,clipPathIndex:U,atlasPage:k,localClipRect:m})};for(let N=0;N<a.frameCount;N++){s[N]=n.length;for(let S=0;S<a.spriteCount;S++){const Y=S*a.frameCount+N,U=Y*vg;if(((g=a.frameData[U+8])!=null?g:0)<.05)continue;const k=(I=a.shapesIndex[Y])!=null?I:-1,m=k>=0&&((Q=(B=a.shapesTable[k])==null?void 0:B.length)!=null?Q:0)>0,J=(E=a.clipPathIndex[Y])!=null?E:-1,q=J>=0&&!!a.clipPaths[J];if((q?QE(a.clipPaths[J]):null)==="empty")continue;const Z=C.atlasRects.get((i=a.imageKeys[S])!=null?i:""),x=(e=Z==null?void 0:Z.textureIndex)!=null?e:0,X=!!Z&&!!o[x],T=q&&!m?dt(a.clipPaths[J]):null,gA=!!T&&X;!m&&!X||(q&&!gA&&r(bg,S,k,J,x),m&&r(mI,S,k,J,x),X&&r(q&&!gA?SB:DI,S,k,J,x,T),q&&!gA&&r(JI,S,k,J,x))}}s[a.frameCount]=n.length;const h=new Uint32Array(a.frameCount),c=new Map;for(let N=0;N<a.frameCount;N++){const S=s[N],Y=s[N+1];let U="";for(let m=S;m<Y;m++){const J=n[m],q=J.localClipRect;U+=`${J.type},${J.spriteIndex},${J.shapeIndex},${J.clipPathIndex},${J.atlasPage},`,U+=q?`${q.x0},${q.y0},${q.x1},${q.y1};`:";"}let k=c.get(U);k==null&&(k=c.size+1,c.set(U,k)),h[N]=k}const D=new Uint8Array(n.length),w=new Uint32Array(n.length),l=new Int32Array(n.length*3),F=new Float32Array(n.length*II);for(let N=0;N<n.length;N++){const S=n[N];D[N]=S.type,w[N]=S.spriteIndex;const Y=N*3;l[Y]=S.shapeIndex,l[Y+1]=S.clipPathIndex,l[Y+2]=S.atlasPage;const U=N*II,k=C.atlasRects.get((t=a.imageKeys[S.spriteIndex])!=null?t:"");F[U+4]=S.spriteIndex,F[U+5]=S.atlasPage,k?(F[U]=k.x,F[U+1]=k.y,F[U+2]=k.x+k.w,F[U+3]=k.y+k.h):F[U+6]=YC,S.localClipRect&&(F[U+6]|=Ft,F[U+8]=S.localClipRect.x0,F[U+9]=S.localClipRect.y0,F[U+10]=S.localClipRect.x1,F[U+11]=S.localClipRect.y1)}const d=new Uint32Array(a.frameCount+1),y=[],G=[],f=[];for(let N=0;N<a.frameCount;N++){d[N]=y.length;const S=s[N],Y=s[N+1];let U=S;for(;U<Y;){const k=D[U];let m=1;if(k===DI){const J=l[U*3+2];for(;U+m<Y&&D[U+m]===DI&&l[(U+m)*3+2]===J;)m++}y.push(U),G.push(m),f.push(k),U+=m}}d[a.frameCount]=y.length;const u=new Uint32Array(y),R=new Uint32Array(G),M=new Uint8Array(f);return{frameOffsets:s,frameScheduleIds:h,operations:D,spriteIndices:w,meshReferences:l,spriteMetadata:F,runFrameOffsets:d,runOperationStarts:u,runOperationCounts:R,runTypes:M,byteLength:s.byteLength+h.byteLength+D.byteLength+w.byteLength+l.byteLength+F.byteLength+d.byteLength+u.byteLength+R.byteLength+M.byteLength}}var Rt=Object.defineProperty,ut=(C,A,g)=>A in C?Rt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,K=(C,A,g)=>ut(C,typeof A!="symbol"?A+"":A,g);const jA=2048,BQ=13,PB=14,EI=$A;class lI extends Error{constructor(A){super("SVGA FastPath submission rejected; replaying frame through CPU Reference"),this.entity=A,this.name="SVGAFastPathFrameReplayError"}}class zg extends Error{constructor(A){super(A),this.name="SVGAStencilTransactionError"}}class Hg extends Error{constructor(){super("SVGA renderer was destroyed during frame submission"),this.name="SVGARendererDestroyedError"}}const iB=6,eB={x:0,y:0,w:1,h:1},pC=class hC{constructor(A,g,I){this.onClipMeshReady=A,this.onHybridValidationFailure=g,this.onRuntimeDiagnostic=I,K(this,"pool",new BE),K(this,"vertexBufHandles",[]),K(this,"indexBufHandles",[]),K(this,"clipSpriteVertBufHandles",[]),K(this,"clipSpriteIdxBufHandles",[]),K(this,"batchDrawCursor",0),K(this,"clipSpriteDrawCursor",0),K(this,"canvasWidth",0),K(this,"canvasHeight",0),K(this,"projCacheW",0),K(this,"projCacheH",0),K(this,"projCache",null),K(this,"clipMeshCache",new Map),K(this,"clipMeshStates",new Map),K(this,"clipMeshStateWaiters",new Map),K(this,"clipMeshGeneration",0),K(this,"clipMeshProducerController",new AbortController),K(this,"clipMeshProducerTasks",new Set),K(this,"destroyed",!1),K(this,"clipMeshDestroyed",!1),K(this,"clipGeometryKindCache",new Map),K(this,"clipMeshesWithBuffers",new Set),K(this,"clipMeshRefCounts",new Map),K(this,"entityRetainedClipMeshes",new WeakMap),K(this,"pendingClipMeshPaths",new Set),K(this,"clipMeshBuildInFlight",!1),K(this,"stencilTransactionState","idle"),K(this,"clipFrameDataScratch",new Float32Array(_g)),K(this,"staticBatchCacheRowScratch",new Float32Array(_g)),K(this,"instancedFrameDataScratch",new Float32Array(jA*BQ)),K(this,"instancedFrameDataWords",new Uint32Array(this.instancedFrameDataScratch.buffer)),K(this,"timelineBatchDataScratch",new Float32Array(jA*EI)),K(this,"timelineBatchFrameScratch",new Int32Array(jA)),K(this,"timelineDirectSlotDataScratch",new Float32Array(jA*EI)),K(this,"clipSpriteVertsScratch",null),K(this,"clipSpriteIndicesScratch",null),K(this,"clipMaskBatchTransformsScratch",new Float32Array(0)),K(this,"instancedQuadVB",null),K(this,"instancedQuadIB",null),K(this,"whiteTexture",null),K(this,"shapeMeshCache",new WeakMap),K(this,"shapeMeshesWithBuffers",new Set),K(this,"shapeMeshRefCounts",new Map),K(this,"entityRetainedShapeMeshes",new WeakMap),K(this,"clipTransformMat",new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])),K(this,"shapeTransformMat",new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])),K(this,"slotScissor",{x:0,y:0,w:0,h:0}),K(this,"slotClipX0",0),K(this,"slotClipY0",0),K(this,"slotClipX1",0),K(this,"slotClipY1",0),K(this,"slotScissorActive",!1),K(this,"sharedClipStencilActive",!1),K(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),K(this,"spriteWorkPool",[]),K(this,"spriteWorkCursor",0),K(this,"batchSpritesScratch",[]),K(this,"drawGroupScratch",[]),K(this,"directSlotsScratch",[]),K(this,"hybridSlotsScratch",[]),K(this,"timelineSlotStateUploadId",0),K(this,"sharedSlotLayerWorkPool",[]),K(this,"sharedSlotLayerWorksScratch",[]),K(this,"clipLayerBatchPool",[]),K(this,"clipLayerBatchesScratch",[]),K(this,"entityHasShapesCache",new WeakMap),K(this,"entityFrameClipModeCache",new WeakMap),K(this,"gpuMotionEntityEligibilityCache",new WeakMap),K(this,"entityClipMeshArrayCache",new WeakMap),K(this,"affineScratch",{a:1,b:0,c:0,d:1,tx:0,ty:0}),K(this,"plainInstancedTexturesScratch",[]),K(this,"plainInstancedUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"plainInstancedDrawCommand",{shader:"svga-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.plainInstancedTexturesScratch,uniforms:this.plainInstancedUniformsScratch}),K(this,"timelineTexturesScratch",[]),K(this,"timelineUniformsScratch",{u_projection:new Float32Array(16)}),K(this,"timelineSlotStateScratch",new Float32Array(PB)),K(this,"timelineSlotStateCache",new Map),K(this,"timelineRenderableFrameCache",new Map),K(this,"timelineOriginScratch",{x:0,y:0}),K(this,"timelineDrawCommand",{shader:"svga-frame-table-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"none"}),K(this,"timelineShapeDrawCommand",{shader:"svga-frame-table-shape-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"none"}),K(this,"timelineClipDrawCommand",{shader:"svga-frame-table-clip-mask",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.timelineTexturesScratch,uniforms:this.timelineUniformsScratch,stencil:"write"}),K(this,"plainBatchTexturesScratch",[]),K(this,"plainBatchUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"plainBatchDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.plainBatchTexturesScratch,uniforms:this.plainBatchUniformsScratch}),K(this,"clipInstancedTexturesScratch",[]),K(this,"clipInstancedUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"clipInstancedDrawCommand",{shader:"svga-instanced-premul",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:1,textures:this.clipInstancedTexturesScratch,uniforms:this.clipInstancedUniformsScratch,stencil:"test"}),K(this,"clipBatchTexturesScratch",[]),K(this,"clipBatchUniformsScratch",{u_projection:new Float32Array(16),u_atlas:0}),K(this,"clipBatchDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.clipBatchTexturesScratch,uniforms:this.clipBatchUniformsScratch,stencil:"test"}),K(this,"clipMaskTexturesScratch",[]),K(this,"clipMaskUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.clipTransformMat}),K(this,"clipMaskDrawCommand",{shader:"clip-mask",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.clipMaskTexturesScratch,uniforms:this.clipMaskUniformsScratch}),K(this,"clipMaskInstancedUniformsScratch",{u_projection:new Float32Array(16)}),K(this,"clipMaskInstancedDrawCommand",{shader:"clip-mask-instanced",vertexBuffer:null,indexBuffer:null,indexCount:0,instanceCount:1,instanceData:this.clipMaskBatchTransformsScratch,textures:this.clipMaskTexturesScratch,uniforms:this.clipMaskInstancedUniformsScratch}),K(this,"shapeTexturesScratch",[]),K(this,"shapeUniformsScratch",{u_projection:new Float32Array(16),u_transform:new Float32Array(16),u_opacity:1}),K(this,"shapeDrawCommand",{shader:"svga-batch-premul",vertexBuffer:null,indexBuffer:null,indexCount:0,textures:this.shapeTexturesScratch,uniforms:this.shapeUniformsScratch})}emitRuntimeDiagnostic(A){var g;if(this.destroyed)return!1;try{(g=this.onRuntimeDiagnostic)==null||g.call(this,A)}catch(I){console.error("[GiftStage:SVGA] runtime diagnostic observer failed",I)}return!this.destroyed}notifyClipMeshReady(){var A;if(!(this.destroyed||this.clipMeshDestroyed))try{(A=this.onClipMeshReady)==null||A.call(this)}catch(g){console.error("[GiftStage:SVGA] clip mesh ready observer failed",g)}}beginFrame(A){this.assertRendererAlive(),this.batchDrawCursor=0,this.clipSpriteDrawCursor=0,this.timelineSlotStateCache.clear(),this.timelineRenderableFrameCache.clear(),this.stencilTransactionState="idle";const g=A.canvas.width,I=A.canvas.height;this.canvasWidth=g,this.canvasHeight=I}endFrame(){if(this.assertRendererAlive(),this.stencilTransactionState!=="idle")throw new zg(`SVGA stencil transaction ended in ${this.stencilTransactionState}`)}abortFrame(){this.assertRendererAlive(),this.stencilTransactionState="idle",this.slotScissorActive=!1}flush(A,g){this.beginFrame(A),this.drawSlots(A,g.values())}drawSlot(A,g){if(g.type!=="svga"||!this.hasRenderableSVGA(g)||g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")return;if(this.beginFrame(A),this.canUseTimelinePath(A,g,"gpu-direct")){this.drawTimelineSlot(A,g,this.getProjection())||g.videoEntity&&this.rejectFastPathFrame(g.videoEntity);return}const I=this.drawGroupScratch;I.length=0,I.push(g),this.flushGroup(A,I),I.length=0}drawSlots(A,g){var I;this.beginFrame(A);const B=this.drawGroupScratch,Q=this.directSlotsScratch,E=this.hybridSlotsScratch;B.length=0,Q.length=0,E.length=0;const i=()=>{var t;if(Q.length===0)return;const a=(t=Q[0])==null?void 0:t.videoEntity;try{this.flushDirectSlots(A,Q,this.getProjection())}catch(o){throw o instanceof lI||o instanceof Hg||a&&this.rejectFastPathFrame(a),o}Q.length=0},e=()=>{var t;if(E.length===0)return;const a=(t=E[0])==null?void 0:t.videoEntity;try{this.flushHybridScheduledSlots(A,E,this.getProjection())}catch(o){throw o instanceof lI||o instanceof Hg||a&&this.rejectFastPathFrame(a),o}E.length=0};for(const t of g)if(!(t.type!=="svga"||!this.hasRenderableSVGA(t))&&!(t.state!=="playing"&&t.state!=="fly"&&t.state!=="stopped")){if(this.canUseTimelinePath(A,t,"gpu-direct")){B.length>0&&(this.flushGroup(A,B),B.length=0),e(),Q.length>0&&!this.areDirectSlotsBatchCompatible(Q[0],t)&&i(),Q.push(t);continue}if(i(),this.canUseTimelinePath(A,t,"gpu-hybrid")&&((I=t.videoEntity)!=null&&I.svgaHybridCommandTable)){B.length>0&&(this.flushGroup(A,B),B.length=0),E.length>0&&!this.areHybridSlotsBatchCompatible(E[0],t)&&e(),E.push(t);continue}e(),B.push(t)}i(),e(),B.length>0&&this.flushGroup(A,B),B.length=0,Q.length=0,E.length=0}submitBackendDraw(A,g){var I;this.assertRendererAlive();const B=(I=g.stencil)!=null?I:g.shader==="clip-mask"?"write":"none";let Q=this.stencilTransactionState;if(B==="write"){if(this.stencilTransactionState==="content-tested")throw new zg("stencil write attempted after content test without clear");Q="mask-written"}else if(B==="test"){if(this.stencilTransactionState==="idle")throw new zg("stencil test attempted without a mask");Q="content-tested"}else if(B==="clear"){if(this.stencilTransactionState==="idle")throw new zg("stencil clear attempted without a mask");Q="idle"}try{const E=A.draw(g);if(E.submitted)return this.stencilTransactionState=Q,!0;const i=`${g.shader} rejected (${E.reason})${E.message?`: ${E.message}`:""}`;if(!this.emitRuntimeDiagnostic({type:"backend-operation-rejected",message:i}))throw new Hg;if(g.shader==="svga-frame-table-instanced-premul"&&(E.reason==="invalid-command"||E.reason==="missing-resource")&&!this.emitRuntimeDiagnostic({type:"atlas-command-invalid",message:i}))throw new Hg;if(B!=="none"&&!this.emitRuntimeDiagnostic({type:"stencil-transaction-failure",message:i}))throw new Hg;return!1}catch(E){if(E instanceof zg||E instanceof Hg)throw E;const i=E instanceof Error?E.message:String(E);if(!this.emitRuntimeDiagnostic({type:B==="none"?"backend-operation-rejected":"stencil-transaction-failure",message:i}))throw new Hg;return!1}}assertRendererAlive(){if(this.destroyed)throw new Hg}requireBackendDraw(A,g,I){if(!this.submitBackendDraw(A,g))throw new Error(`SVGA backend rejected ${I}`)}areDirectSlotsBatchCompatible(A,g){var I,B,Q,E;const i=A.videoEntity;if(!i||g.videoEntity!==i||((I=A.svgaFrameTableState)==null?void 0:I.binding)!==((B=g.svgaFrameTableState)==null?void 0:B.binding))return!1;const e=(Q=i.atlasTextureHandles)!=null&&Q.length?i.atlasTextureHandles:i.atlasTextureHandle?[i.atlasTextureHandle]:[],t=(E=i.svgaTimelineDrawRuns)!=null?E:[];return t.length!==1||t.some(a=>a.spriteBase<0||a.spriteCount<1||a.spriteBase+a.spriteCount>i.spriteTable.spriteCount||!e[a.textureIndex])?!1:this.areTimelineMotionBindingsCompatible(A,g)}areHybridSlotsBatchCompatible(A,g){var I,B,Q,E,i;return A.videoEntity!=null&&g.videoEntity===A.videoEntity&&((I=A.svgaFrameTableState)==null?void 0:I.binding)===((B=g.svgaFrameTableState)==null?void 0:B.binding)&&A.videoEntity.svgaHybridCommandTable===((Q=g.videoEntity)==null?void 0:Q.svgaHybridCommandTable)&&!((E=A.svgaSlotTextures)!=null&&E.size)&&!((i=g.svgaSlotTextures)!=null&&i.size)&&this.areTimelineMotionBindingsCompatible(A,g)}areTimelineMotionBindingsCompatible(A,g){const I=A.motionTrackBinding,B=g.motionTrackBinding;return!I&&!B?!0:!!I&&!!B&&I.buffer===B.buffer&&I.globalsBuffer===B.globalsBuffer&&I.sampleCount===B.sampleCount&&I.sampleIntervalMs===B.sampleIntervalMs&&I.currentTimeMs===B.currentTimeMs}rejectFastPathFrame(A){var g;this.assertRendererAlive();try{(g=this.onHybridValidationFailure)==null||g.call(this,A)}catch(I){console.error("[GiftStage:SVGA] runtime fallback callback failed",I)}throw this.assertRendererAlive(),new lI(A)}flushDirectSlots(A,g,I){var B,Q,E,i,e,t;const a=g[0],o=a==null?void 0:a.videoEntity,s=(B=o==null?void 0:o.spriteTable.spriteCount)!=null?B:0;if(!a||!o||s<1)return;const n=(Q=o.atlasTextureHandles)!=null&&Q.length?o.atlasTextureHandles:o.atlasTextureHandle?[o.atlasTextureHandle]:[],r=(E=o.svgaTimelineDrawRuns)!=null?E:[];if((r.length===0||r.some(l=>!n[l.textureIndex])||g.some(l=>{var F;return!((F=l.svgaFrameTableState)!=null&&F.binding)||this.resolveRenderableFrame(l,o)==null}))&&this.rejectFastPathFrame(o),!this.areDirectSlotsBatchCompatible(a,a)){for(const l of g)l.svgaDrawBatchMode="per-slot",l.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,l,I)||this.rejectFastPathFrame(o);return}const h=r[0],c=Math.max(1,Math.floor(jA/h.spriteCount));if(c<2){for(const l of g)l.svgaDrawBatchMode="per-slot",l.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,l,I)||this.rejectFastPathFrame(o);return}const D=n[h.textureIndex],w=(i=a.svgaFrameTableState)==null?void 0:i.binding;if(!(!D||!w)){this.ensureInstancedQuadBuffers(A);for(let l=0;l<g.length;l+=c){const F=Math.min(c,g.length-l),d=this.timelineDirectSlotDataScratch;let y=0;for(let R=0;R<F;R++){const M=g[l+R],N=this.resolveRenderableFrame(M,o);if(N==null)break;const S=this.resolveTimelineSlotState(M,N,h.spriteBase),Y=R*EI;d.set(S.subarray(0,PB),Y),d[Y+Ng.atlasPage]=h.textureIndex,d[Y+Ng.motionTrackPlusOne]=((t=(e=M.motionTrackBinding)==null?void 0:e.trackIndex)!=null?t:-1)+1,M.svgaFrameTableState.frameIndex=N,M.svgaDrawBatchMode="multi-slot",M.svgaDrawCompatibleInstanceCount=F,y++}if(y!==F){for(let R=0;R<F;R++){const M=g[l+R];M.svgaDrawBatchMode="per-slot",M.svgaDrawCompatibleInstanceCount=1,this.drawTimelineSlot(A,M,I)||this.rejectFastPathFrame(o)}continue}const G=this.timelineDrawCommand;G.vertexBuffer=this.instancedQuadVB,G.indexBuffer=this.instancedQuadIB,G.instanceCount=F*h.spriteCount,G.instanceData=void 0,G.svgaFrameTableSlotStates=d,G.svgaFrameTableSlotStateCount=F,G.svgaFrameTableSpritesPerSlot=h.spriteCount,G.svgaFrameTableSlotStateUploadId=++this.timelineSlotStateUploadId,G.stencil="none",G.svgaFrameTable=w,G.svgaFrameTableFrameCount=o.spriteTable.frameCount,G.svgaFrameTableSpriteCount=s,G.svgaFrameTableFrameIndex=a.currentFrame,G.svgaFrameTableSpriteBase=h.spriteBase,G.svgaFrameTableAtlasPage=h.textureIndex,G.svgaFrameTableSlotState=this.resolveTimelineSlotState(a,a.currentFrame,h.spriteBase),G.svgaSlotState=G.svgaFrameTableSlotState;const f=a.motionTrackBinding;G.motionTrackBuffer=f==null?void 0:f.buffer,G.motionTrackGlobalsBuffer=f==null?void 0:f.globalsBuffer,G.motionTrackSampleCount=f==null?void 0:f.sampleCount,G.motionTrackSampleIntervalMs=f==null?void 0:f.sampleIntervalMs,G.motionTrackTimeMs=f==null?void 0:f.currentTimeMs,G.motionTrackIndex=f==null?void 0:f.trackIndex,this.timelineTexturesScratch[0]=D,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=I;const u=this.submitBackendDraw(A,G);G.svgaFrameTableSlotStates=void 0,G.svgaFrameTableSlotStateCount=void 0,G.svgaFrameTableSpritesPerSlot=void 0,G.svgaFrameTableSlotStateUploadId=void 0,u||this.rejectFastPathFrame(o)}A.resetScissor()}}requiresStencil(A){var g,I,B,Q,E;for(const i of A){if(i.type!=="svga"||!i.videoEntity||i.state!=="playing"&&i.state!=="fly"&&i.state!=="stopped")continue;const e=this.resolveRenderableFrame(i,i.videoEntity);if(e==null)continue;if(i.options.svgaFrameEvaluation!=="cpu"&&!((g=i.svgaSlotTextures)!=null&&g.size)&&((I=i.svgaFrameTableState)==null?void 0:I.binding)!=null&&i.svgaFrameTableState.renderInfo.selectedPath==="gpu-hybrid"){const a=i.videoEntity.svgaHybridCommandTable;if(a){const o=(B=a.frameOffsets[e])!=null?B:0,s=(Q=a.frameOffsets[e+1])!=null?Q:o;for(let n=o;n<s;n++)if(a.operations[n]===bg)return!0;continue}}if(i.opacity<.05)continue;const t=this.getFrameClipMode(i.videoEntity,e);if(t===2||t===1&&((E=i.rotation)!=null?E:0)!==0)return!0}return!1}resolveRenderableFrame(A,g){var I;if(this.timelineRenderableFrameCache.has(A))return(I=this.timelineRenderableFrameCache.get(A))!=null?I:null;const B=A.currentFrame;if(this.isFrameClipReady(g,B))return A.svgaClipReadyFrame=B,this.timelineRenderableFrameCache.set(A,B),B;const Q=A.svgaClipReadyFrame;return Q!=null&&Q>=0&&Q<g.spriteTable.frameCount&&this.isFrameClipReady(g,Q)?(this.timelineRenderableFrameCache.set(A,Q),Q):(this.timelineRenderableFrameCache.set(A,null),null)}isFrameClipReady(A,g){var I,B,Q,E;const i=A.spriteTable;if(g<0||g>=i.frameCount)return!1;const e=A.svgaHybridCommandTable;if(e){const a=(I=e.frameOffsets[g])!=null?I:0,o=(B=e.frameOffsets[g+1])!=null?B:a;let s=!0;for(let n=a;n<o;n++){if(e.operations[n]!==bg)continue;const r=(Q=e.meshReferences[n*3+1])!=null?Q:-1;this.getClipMeshByIndex(A,r)===void 0&&(s=!1)}return s}let t=!0;for(let a=0;a<i.spriteCount;a++){const o=(a*i.frameCount+g)*$g;if(i.frameData[o+8]<.05)continue;const s=(E=i.clipPathIndex[a*i.frameCount+g])!=null?E:-1;if(s<0)continue;const n=i.clipPaths[s];if(!n||this.getClipGeometryKind(n)==="empty")continue;const r=this.clipMeshStates.get(n);if(!((r==null?void 0:r.status)==="valid"||(r==null?void 0:r.status)==="empty")){if((r==null?void 0:r.status)==="invalid"){this.handleInvalidClipMesh(A,n,r);continue}(r==null?void 0:r.status)!=="building"&&this.queueClipMeshBuild(n),t=!1}}return t}getFrameClipMode(A,g){const I=A.spriteTable;if(g<0||g>=I.frameCount)return 0;let B=this.entityFrameClipModeCache.get(A);(!B||B.length!==I.frameCount)&&(B=new Uint8Array(I.frameCount),B.fill(255),this.entityFrameClipModeCache.set(A,B));const Q=B[g];if(Q!==255)return Q;let E=0,i=!1;for(let e=0;e<I.spriteCount;e++){const t=(e*I.frameCount+g)*$g;if(I.frameData[t+8]<.05)continue;const a=this.getClipMeshForSprite(A,e,g);if(a===void 0){E=2,i=!0;break}if(!a||a.indices.length===0)continue;if(!this.getClipRect(a)||!tB(I.frameData[t+2],I.frameData[t+3],I.frameData[t+4],I.frameData[t+5])){E=2;break}E=1}return i||(B[g]=E),E}async prewarmClipMeshes(A,g={}){const I=Array.from(new Set(A.spriteTable.clipPaths.filter(B=>B.length>0&&this.getClipGeometryKind(B)!=="empty")));return I.length===0?0:this.buildMissingClipMeshes(I,g)}async prewarmClipMeshesForFrame(A,g,I={}){const B=this.collectFrameClipPaths(A.spriteTable,g);return B.length===0?0:this.buildMissingClipMeshes(B,I)}prewarmShapeMeshes(A,g){const I=new Set;let B=0;for(const Q of g.spriteTable.shapesTable){if(!(Q!=null&&Q.length)||I.has(Q))continue;I.add(Q);const E=this.getShapeMesh(Q);!E||E.indices.length===0||(this.ensureShapeMeshBuffers(A,E),B++)}return B}retainHybridMeshes(A,g){var I,B,Q,E,i,e;const t=g.svgaHybridCommandTable;if(!t)throw new Error("SVGA Hybrid command table missing");if(this.entityRetainedClipMeshes.has(g)||this.entityRetainedShapeMeshes.has(g))return;const a=new Set,o=new Set;for(let s=0;s<t.operations.length;s++){const n=t.operations[s],r=s*3;if(n===bg||n===JI){const h=this.getClipMeshByIndex(g,(I=t.meshReferences[r+1])!=null?I:-1);if(!h||h.vertices.length<6||h.indices.length<3)throw new Error("SVGA Hybrid clip mesh validation failed");a.add(h)}if(n===mI){const h=(B=t.meshReferences[r])!=null?B:-1,c=g.spriteTable.shapesTable[h],D=c?this.getShapeMesh(c):null;if(!D||D.gpuVertices.length<9||D.indices.length<3)throw new Error("SVGA Hybrid shape mesh validation failed");o.add(D)}}try{for(const s of a)this.ensureClipMeshBuffers(A,s);for(const s of o)this.ensureShapeMeshBuffers(A,s)}catch(s){for(const n of a)((Q=this.clipMeshRefCounts.get(n))!=null?Q:0)>0||(n.vertexBuf&&A.deleteBuffer(n.vertexBuf),n.indexBuf&&A.deleteBuffer(n.indexBuf),n.vertexBuf=null,n.indexBuf=null,this.clipMeshesWithBuffers.delete(n));for(const n of o)((E=this.shapeMeshRefCounts.get(n))!=null?E:0)>0||(n.vertexBuf&&A.deleteBuffer(n.vertexBuf),n.indexBuf&&A.deleteBuffer(n.indexBuf),n.vertexBuf=null,n.indexBuf=null,this.shapeMeshesWithBuffers.delete(n));throw s}for(const s of a)this.clipMeshRefCounts.set(s,((i=this.clipMeshRefCounts.get(s))!=null?i:0)+1);for(const s of o)this.shapeMeshRefCounts.set(s,((e=this.shapeMeshRefCounts.get(s))!=null?e:0)+1);this.entityRetainedClipMeshes.set(g,a),this.entityRetainedShapeMeshes.set(g,o)}releaseHybridMeshes(A,g){var I,B,Q,E;const i=this.entityRetainedClipMeshes.get(g);if(i){for(const t of i){const a=Math.max(0,((I=this.clipMeshRefCounts.get(t))!=null?I:1)-1);if(a>0){this.clipMeshRefCounts.set(t,a);continue}this.clipMeshRefCounts.delete(t),t.vertexBuf&&A.deleteBuffer(t.vertexBuf),t.indexBuf&&A.deleteBuffer(t.indexBuf),t.vertexBuf=null,t.indexBuf=null,this.clipMeshesWithBuffers.delete(t);for(const[o,s]of this.clipMeshCache)s===t&&this.clipMeshCache.delete(o)}this.entityRetainedClipMeshes.delete(g),this.entityClipMeshArrayCache.delete(g)}const e=this.entityRetainedShapeMeshes.get(g);if(e){for(const t of e){const a=Math.max(0,((B=this.shapeMeshRefCounts.get(t))!=null?B:1)-1);if(a>0){this.shapeMeshRefCounts.set(t,a);continue}this.shapeMeshRefCounts.delete(t),t.vertexBuf&&A.deleteBuffer(t.vertexBuf),t.indexBuf&&A.deleteBuffer(t.indexBuf),t.vertexBuf=null,t.indexBuf=null,this.shapeMeshesWithBuffers.delete(t)}this.entityRetainedShapeMeshes.delete(g)}for(const t of g.spriteTable.shapesTable){const a=t?this.shapeMeshCache.get(t):null;!a||((Q=this.shapeMeshRefCounts.get(a))!=null?Q:0)>0||(a.vertexBuf&&A.deleteBuffer(a.vertexBuf),a.indexBuf&&A.deleteBuffer(a.indexBuf),a.vertexBuf=null,a.indexBuf=null,this.shapeMeshesWithBuffers.delete(a))}for(const t of g.spriteTable.clipPaths){const a=this.clipMeshCache.get(t);!a||((E=this.clipMeshRefCounts.get(a))!=null?E:0)>0||(a.vertexBuf&&A.deleteBuffer(a.vertexBuf),a.indexBuf&&A.deleteBuffer(a.indexBuf),a.vertexBuf=null,a.indexBuf=null,this.clipMeshesWithBuffers.delete(a),this.clipMeshCache.delete(t))}}collectFrameClipPaths(A,g){var I;if(g<0||g>=A.frameCount)return[];const B=new Set;for(let Q=0;Q<A.spriteCount;Q++){const E=(Q*A.frameCount+g)*$g;if(A.frameData[E+8]<.05)continue;const i=(I=A.clipPathIndex[Q*A.frameCount+g])!=null?I:-1;if(i<0)continue;const e=A.clipPaths[i];e&&this.getClipGeometryKind(e)!=="empty"&&B.add(e)}return Array.from(B)}async buildMissingClipMeshes(A,g={}){var I,B;if(b(g.signal,"SVGA clip prewarm aborted"),(I=g.checkActive)==null||I.call(g),this.clipMeshDestroyed)throw cA("SVGA renderer destroyed during clip prewarm");const Q=A.find(i=>{var e;return((e=this.clipMeshStates.get(i))==null?void 0:e.status)==="invalid"});if(Q){const i=this.clipMeshStates.get(Q);throw new Error(`SVGA clip mesh remains invalid for ${Q}: ${(i==null?void 0:i.status)==="invalid"?i.reason:"unknown error"}`)}const E=A.filter(i=>!this.clipMeshStates.has(i));return E.length>0&&this.startClipMeshProducer(E,{frameBudgetMs:g.frameBudgetMs,workerTimeSliceMs:g.workerTimeSliceMs,useWorker:g.useWorker}),await this.waitForClipMeshPaths(A,g.signal),b(g.signal,"SVGA clip prewarm aborted"),(B=g.checkActive)==null||B.call(g),A.length}startClipMeshProducer(A,g){if(this.clipMeshDestroyed||A.length===0)return;const I=++this.clipMeshGeneration;for(const E of A)this.publishClipMeshState(E,{status:"building",requestId:I,generation:I,attempts:0});const B=[],Q=this.runClipMeshProducer(A,I,g,B).catch(E=>{this.clipMeshDestroyed&&Kg(E)||this.failClipMeshProducer(A,I,E,B)}).finally(()=>{this.clipMeshProducerTasks.delete(Q)});this.clipMeshProducerTasks.add(Q),Q.catch(E=>{console.error("[GiftStage:SVGA] clip mesh producer terminalization failed",E);try{this.failClipMeshProducer(A,I,E,B)}catch(i){console.error("[GiftStage:SVGA] clip mesh producer emergency terminalization failed",i)}})}async runClipMeshProducer(A,g,I,B){var Q;const E=this.clipMeshProducerController.signal;if(b(E,"SVGA clip producer aborted"),I.useWorker!==!1&&eE())try{const a=await it(A,{workerTimeSliceMs:I.workerTimeSliceMs,signal:E});b(E,"SVGA clip producer aborted");for(const o of A){const s=this.clipMeshStates.get(o);if((s==null?void 0:s.status)!=="building"||s.generation!==g)continue;const n=a.get(o);if(!n)throw new Error(`SVGA clip worker omitted mesh after validation: ${o}`);const r=lB(n);if(r)throw new Error(`SVGA clip mesh invalid for ${o}: ${r}`);this.publishClipMeshState(o,{status:"valid",mesh:n,generation:g,attempts:s.attempts+1})}return}catch(a){if(E.aborted)throw Kg(a)?a:cA("SVGA clip producer aborted");B.push({type:"clip-protocol-error",message:a instanceof Error?a.message:String(a)}),console.warn("[GiftStage:SVGA] clip mesh worker failed, using main thread",a)}const i=gg({maxBudgetMs:Math.max(1,(Q=I.frameBudgetMs)!=null?Q:8)});let e=0,t=null;for(const a of A){b(E,"SVGA clip producer aborted");const o=this.clipMeshStates.get(a);if(!((o==null?void 0:o.status)!=="building"||o.generation!==g)){try{const s=$e(a),n=s?lB(s):"triangulation produced no mesh";if(!s||n)throw new Error(n||"triangulation produced no mesh");this.publishClipMeshState(a,{status:"valid",mesh:s,generation:g,attempts:o.attempts+1})}catch(s){const n=s instanceof Error?s.message:String(s);this.publishClipMeshState(a,{status:"invalid",reason:n,generation:g,attempts:o.attempts+1}),B.push({type:"clip-mesh-invalid",message:`${a}: ${n}`}),t!=null||(t=new Error(`SVGA clip mesh invalid for ${a}: ${n}`))}e++,e<A.length&&i.shouldYield()&&(await i.yield(),b(E,"SVGA clip producer aborted"))}}if(this.emitClipProducerDiagnosticsAfterTerminal(A,g,B),t)throw t;A.length>0&&console.info(`[GiftStage:SVGA] clip mesh main prewarm paths=${A.length} built=${e}`)}failClipMeshProducer(A,g,I,B=[]){if(this.clipMeshDestroyed)return;const Q=I instanceof Error?I.message:String(I),E=[];for(const i of A){const e=this.clipMeshStates.get(i);(e==null?void 0:e.status)!=="building"||e.generation!==g||(this.publishClipMeshState(i,{status:"invalid",reason:Q,generation:g,attempts:e.attempts+1}),E.push(i))}for(const i of E)B.push({type:"clip-mesh-invalid",message:`${i}: ${Q}`});this.emitClipProducerDiagnosticsAfterTerminal(A,g,B)}emitClipProducerDiagnosticsAfterTerminal(A,g,I){if(this.clipMeshDestroyed){I.length=0;return}if(A.some(Q=>{const E=this.clipMeshStates.get(Q);return(E==null?void 0:E.status)==="building"&&E.generation===g}))throw new Error(`SVGA clip producer generation ${g} emitted diagnostics before terminalization`);for(const Q of I.splice(0))this.emitRuntimeDiagnostic(Q)}publishClipMeshState(A,g){if(this.clipMeshDestroyed)return;const I=this.clipMeshStates.get(A);I&&g.generation<I.generation||(this.clipMeshStates.set(A,g),g.status==="valid"?this.clipMeshCache.set(A,g.mesh):g.status==="empty"?this.clipMeshCache.set(A,null):this.clipMeshCache.delete(A),this.entityClipMeshArrayCache=new WeakMap,this.entityFrameClipModeCache=new WeakMap,g.status!=="building"&&this.settleClipMeshStateWaiters(A,g))}async waitForClipMeshPaths(A,g){await Promise.all(A.map(I=>this.waitForClipMeshPath(I,g)))}waitForClipMeshPath(A,g){if(this.clipMeshDestroyed)return Promise.reject(cA("SVGA renderer destroyed during clip prewarm"));const I=this.clipMeshStates.get(A);return(I==null?void 0:I.status)==="valid"||(I==null?void 0:I.status)==="empty"?Promise.resolve():(I==null?void 0:I.status)==="invalid"?Promise.reject(new Error(`SVGA clip mesh invalid for ${A}: ${I.reason}`)):g!=null&&g.aborted?Promise.reject(cA("SVGA clip prewarm aborted")):new Promise((B,Q)=>{const E={resolve:B,reject:Q,signal:g};let i=this.clipMeshStateWaiters.get(A);i||(i=new Set,this.clipMeshStateWaiters.set(A,i)),E.onAbort=()=>{i.delete(E),i.size===0&&this.clipMeshStateWaiters.delete(A),Q(cA("SVGA clip prewarm aborted"))},i.add(E),g==null||g.addEventListener("abort",E.onAbort,{once:!0})})}settleClipMeshStateWaiters(A,g){const I=this.clipMeshStateWaiters.get(A);if(I){this.clipMeshStateWaiters.delete(A);for(const B of I)B.signal&&B.onAbort&&B.signal.removeEventListener("abort",B.onAbort),g.status==="invalid"?B.reject(new Error(`SVGA clip mesh invalid for ${A}: ${g.reason}`)):B.resolve()}}queueClipMeshBuild(A){if(this.clipMeshDestroyed)return;const g=this.clipMeshStates.get(A);!A||(g==null?void 0:g.status)==="valid"||(g==null?void 0:g.status)==="empty"||(g==null?void 0:g.status)==="building"||(g==null?void 0:g.status)==="invalid"||this.pendingClipMeshPaths.has(A)||(this.pendingClipMeshPaths.add(A),this.scheduleClipMeshBuildFlush())}scheduleClipMeshBuildFlush(){if(this.clipMeshDestroyed||this.clipMeshBuildInFlight)return;this.clipMeshBuildInFlight=!0,(typeof queueMicrotask=="function"?queueMicrotask:g=>setTimeout(g,0))(()=>{this.flushPendingClipMeshBuilds()})}async flushPendingClipMeshBuilds(){if(this.clipMeshDestroyed){this.pendingClipMeshPaths.clear(),this.clipMeshBuildInFlight=!1;return}const A=Array.from(this.pendingClipMeshPaths);if(this.pendingClipMeshPaths.clear(),A.length===0){this.clipMeshBuildInFlight=!1;return}try{await this.buildMissingClipMeshes(A)}catch(g){console.warn("[GiftStage:SVGA] deferred clip mesh build failed",g)}finally{if(this.clipMeshBuildInFlight=!1,this.clipMeshDestroyed){this.pendingClipMeshPaths.clear();return}this.pendingClipMeshPaths.size>0&&this.scheduleClipMeshBuildFlush(),this.notifyClipMeshReady()}}hydrateClipMeshes(A){if(!(!A||A.size===0))for(const[g,I]of A)I!=null&&I.vertices&&I.indices&&!this.clipMeshStates.has(g)&&lB(I)==null&&this.publishClipMeshState(g,{status:"valid",mesh:I,generation:++this.clipMeshGeneration,attempts:1})}snapshotClipMeshes(A){const g=new Map;for(const I of A.spriteTable.clipPaths){if(!I||g.has(I))continue;const B=this.clipMeshCache.get(I);B!=null&&B.vertices&&B.indices&&g.set(I,{vertices:new Float32Array(B.vertices),indices:new Uint32Array(B.indices)})}return g}canUseTimelinePath(A,g,I){var B;const Q=g.videoEntity,E=g.svgaFrameTableState,i=E==null?void 0:E.binding;if(!Q||!i||i.backend!==A.type||g.options.svgaFrameEvaluation==="cpu"||g.motionTrackBinding!=null&&A.type!=="webgpu"||(B=g.svgaSlotTextures)!=null&&B.size)return!1;const e=E.renderInfo.selectedPath;return I?e===I:e==="gpu-direct"||e==="gpu-hybrid"}resolveTimelineSlotState(A,g,I,B){var Q,E,i,e,t,a,o,s,n;const r=A.videoEntity,h=A.motionTrackBinding!=null,c=Fg(A,r.params.viewBoxWidth,r.params.viewBoxHeight,this.layoutScratch,h);if(h){const m=XA(A),J=A.width*A.scale,q=A.height*A.scale,_=m==="cover"?J:Math.min(c.width,J),Z=m==="cover"?q:Math.min(c.height,q),x=-J/2+(m==="cover"?0:c.offsetX),X=-q/2+(m==="cover"?0:c.offsetY),T=this.timelineSlotStateScratch;return T[0]=c.scaleX,T[1]=0,T[2]=0,T[3]=c.scaleY,T[4]=c.offsetX-A.width*A.scale/2,T[5]=c.offsetY-A.height*A.scale/2,T[6]=1,T[7]=g,T[8]=(Q=B==null?void 0:B.x0)!=null?Q:x,T[9]=(E=B==null?void 0:B.y0)!=null?E:X,T[10]=(i=B==null?void 0:B.x1)!=null?i:x+_,T[11]=(e=B==null?void 0:B.y1)!=null?e:X+Z,T[12]=1,T[13]=I,T}const D=XA(A),w=A.width*ng(A),l=A.height*rg(A),F=D==="cover"?w:Math.min(c.width,w),d=D==="cover"?l:Math.min(c.height,l),y=D==="cover"?A.x:A.x+c.offsetX,G=D==="cover"?A.y:A.y+c.offsetY;Sg(A,y,G,F,d,this.slotScissor);const f=(t=A.rotation)!=null?t:0,u=Math.cos(f),R=Math.sin(f),M=HB(A,this.timelineOriginScratch),N=A.x+c.offsetX,S=A.y+c.offsetY,Y=N-M.x,U=S-M.y,k=this.timelineSlotStateScratch;return k[0]=u*c.scaleX,k[1]=R*c.scaleX,k[2]=-R*c.scaleY,k[3]=u*c.scaleY,k[4]=M.x+u*Y-R*U,k[5]=M.y+R*Y+u*U,k[6]=A.opacity,k[7]=g,k[8]=(a=B==null?void 0:B.x0)!=null?a:Math.floor(this.slotScissor.x),k[9]=(o=B==null?void 0:B.y0)!=null?o:Math.floor(this.slotScissor.y),k[10]=(s=B==null?void 0:B.x1)!=null?s:Math.ceil(this.slotScissor.x+this.slotScissor.w),k[11]=(n=B==null?void 0:B.y1)!=null?n:Math.ceil(this.slotScissor.y+this.slotScissor.h),k[12]=1,k[13]=I,k}resolveCachedTimelineSlotState(A,g){const I=this.timelineSlotStateCache.get(A);if((I==null?void 0:I.frame)===g)return I.state;const B=this.resolveTimelineSlotState(A,g,0).slice();return this.timelineSlotStateCache.set(A,{frame:g,state:B}),B}drawTimelineRange(A,g,I,B,Q,E,i,e="none",t,a,o=-1){var s;if(!this.canUseTimelinePath(A,g)||Q<1)return!1;const n=g.videoEntity,r=g.svgaFrameTableState,h=r.binding;this.ensureInstancedQuadBuffers(A);const c=this.timelineDrawCommand;c.vertexBuffer=this.instancedQuadVB,c.indexBuffer=this.instancedQuadIB,c.instanceCount=Q*((s=a==null?void 0:a.slotCount)!=null?s:1),c.instanceData=void 0,c.svgaFrameTableSlotStates=a==null?void 0:a.states,c.svgaFrameTableSlotStateCount=a==null?void 0:a.slotCount,c.svgaFrameTableSpritesPerSlot=a==null?void 0:a.spritesPerSlot,c.svgaFrameTableSlotStateUploadId=a==null?void 0:a.uploadId,c.stencil=e,c.svgaFrameTable=h,c.svgaFrameIndex=I,c.svgaSpriteBase=B,c.svgaFrameTableFrameCount=n.spriteTable.frameCount,c.svgaFrameTableSpriteCount=n.spriteTable.spriteCount,c.svgaFrameTableFrameIndex=I,c.svgaFrameTableSpriteBase=B,c.svgaFrameTableAtlasPage=o,c.svgaFrameTableSlotState=this.resolveTimelineSlotState(g,I,B,t),c.svgaSlotState=c.svgaFrameTableSlotState;const D=g.motionTrackBinding;c.motionTrackBuffer=D==null?void 0:D.buffer,c.motionTrackGlobalsBuffer=D==null?void 0:D.globalsBuffer,c.motionTrackSampleCount=D==null?void 0:D.sampleCount,c.motionTrackSampleIntervalMs=D==null?void 0:D.sampleIntervalMs,c.motionTrackTimeMs=D==null?void 0:D.currentTimeMs,c.motionTrackIndex=D==null?void 0:D.trackIndex,this.timelineTexturesScratch[0]=E,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=i;const w=this.submitBackendDraw(A,c);return c.svgaFrameTableSlotStates=void 0,c.svgaFrameTableSlotStateCount=void 0,c.svgaFrameTableSpritesPerSlot=void 0,c.svgaFrameTableSlotStateUploadId=void 0,r.frameIndex=I,w}drawTimelineSlot(A,g,I){var B,Q;const E=g.videoEntity;if(!E||!this.canUseTimelinePath(A,g,"gpu-direct"))return!1;const i=this.resolveRenderableFrame(g,E);if(i==null)return!1;const e=(B=E.atlasTextureHandles)!=null&&B.length?E.atlasTextureHandles:E.atlasTextureHandle?[E.atlasTextureHandle]:[];let t=!1;for(const a of(Q=E.svgaTimelineDrawRuns)!=null?Q:[]){const o=e[a.textureIndex];if(!o)continue;let s=a.spriteBase,n=a.spriteCount;for(;n>0;){const r=Math.min(jA,n);if(!this.drawTimelineRange(A,g,i,s,r,o,I,"none",void 0,void 0,a.textureIndex))return!1;t=!0,s+=r,n-=r}}return A.resetScissor(),t}getClipMeshByIndex(A,g){if(g<0)return null;const I=A.spriteTable;let B=this.entityClipMeshArrayCache.get(A);(!B||B.length!==I.clipPaths.length)&&(B=new Array(I.clipPaths.length),this.entityClipMeshArrayCache.set(A,B));const Q=B[g];if(Q!==void 0)return Q;const E=I.clipPaths[g];if(!E)return null;if(this.getClipGeometryKind(E)==="empty")return this.clipMeshStates.has(E)||this.publishClipMeshState(E,{status:"empty",generation:++this.clipMeshGeneration,attempts:0}),B[g]=null,null;const i=this.clipMeshStates.get(E);if(!i){this.queueClipMeshBuild(E);return}if(i.status!=="building")return i.status==="invalid"?this.handleInvalidClipMesh(A,E,i):i.status==="empty"?(B[g]=null,null):(B[g]=i.mesh,i.mesh)}handleInvalidClipMesh(A,g,I){var B;const Q=(B=A.svgaFrameTableState)==null?void 0:B.renderInfo.selectedPath;return(Q==="gpu-direct"||Q==="gpu-hybrid")&&this.rejectFastPathFrame(A),console.error(`[GiftStage:SVGA] invalid clip mesh treated as an empty CPU clip: ${g}`,I.reason),null}drawTimelineMesh(A,g,I,B,Q,E,i,e,t,a,o){var s,n;if(!this.canUseTimelinePath(A,g,"gpu-hybrid"))return!1;const r=g.videoEntity,h=(s=g.svgaFrameTableState)==null?void 0:s.binding;if(!h)return!1;const c=e==="svga-frame-table-shape-premul"?this.timelineShapeDrawCommand:this.timelineClipDrawCommand;c.vertexBuffer=Q,c.indexBuffer=E,c.indexCount=i,c.instanceCount=(n=o==null?void 0:o.slotCount)!=null?n:1,c.instanceData=void 0,c.svgaFrameTableSlotStates=o==null?void 0:o.states,c.svgaFrameTableSlotStateCount=o==null?void 0:o.slotCount,c.svgaFrameTableSpritesPerSlot=o==null?void 0:o.spritesPerSlot,c.svgaFrameTableSlotStateUploadId=o==null?void 0:o.uploadId,c.stencil=t,c.svgaFrameTable=h,c.svgaFrameTableFrameCount=r.spriteTable.frameCount,c.svgaFrameTableSpriteCount=r.spriteTable.spriteCount,c.svgaFrameTableFrameIndex=I,c.svgaFrameTableSpriteBase=B,c.svgaFrameTableSlotState=this.resolveTimelineSlotState(g,I,B),c.svgaSlotState=c.svgaFrameTableSlotState;const D=g.motionTrackBinding;c.motionTrackBuffer=D==null?void 0:D.buffer,c.motionTrackGlobalsBuffer=D==null?void 0:D.globalsBuffer,c.motionTrackSampleCount=D==null?void 0:D.sampleCount,c.motionTrackSampleIntervalMs=D==null?void 0:D.sampleIntervalMs,c.motionTrackTimeMs=D==null?void 0:D.currentTimeMs,c.motionTrackIndex=D==null?void 0:D.trackIndex,this.timelineTexturesScratch[0]=this.getWhiteTexture(A),this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=a;const w=this.submitBackendDraw(A,c);return c.svgaFrameTableSlotStates=void 0,c.svgaFrameTableSlotStateCount=void 0,c.svgaFrameTableSpritesPerSlot=void 0,c.svgaFrameTableSlotStateUploadId=void 0,g.svgaFrameTableState.frameIndex=I,w}flushHybridScheduledSlots(A,g,I){var B,Q,E;const i=g[0],e=i==null?void 0:i.videoEntity;if(!i||!e)return;const t=this.prepareDisjointHybridSlots(g,e);if(g.length>=2&&t==null&&this.prepareDisjointHybridSlots(g,e,!0)!=null){const n=e.svgaHybridCommandTable,r=new Map;for(let h=0;h<g.length;h++){const c=this.timelineBatchFrameScratch[h],D=(B=n.frameScheduleIds[c])!=null?B:-1;let w=r.get(D);w||(w=[],r.set(D,w)),w.push(g[h])}if(r.size>1){for(const h of r.values())this.flushHybridScheduledSlots(A,h,I);return}}if(g.length<2||t==null){for(const s of g)s.svgaDrawBatchMode="hybrid-scheduled",s.svgaDrawCompatibleInstanceCount=1,this.drawHybridScheduledSlot(A,s,I)||this.rejectFastPathFrame(e);return}const a=this.timelineBatchDataScratch;for(let s=0;s<g.length;s++){const n=g[s],r=this.timelineBatchFrameScratch[s],h=this.resolveTimelineSlotState(n,r,0),c=s*EI;a.set(h.subarray(0,PB),c),a[c+Ng.atlasPage]=-1,a[c+Ng.motionTrackPlusOne]=((E=(Q=n.motionTrackBinding)==null?void 0:Q.trackIndex)!=null?E:-1)+1,n.svgaFrameTableState.frameIndex=r,n.svgaDrawBatchMode="hybrid-scheduled",n.svgaDrawCompatibleInstanceCount=g.length}const o={states:a,slotCount:g.length,spritesPerSlot:1,uploadId:++this.timelineSlotStateUploadId};this.drawHybridScheduledOperations(A,i,t,I,o)||this.rejectFastPathFrame(e)}prepareDisjointHybridSlots(A,g,I=!1){var B;if(A.length<2||A.length*EI>this.timelineBatchDataScratch.length)return null;const Q=this.sharedSlotLayerWorksScratch;Q.length=0;const E=g.svgaHybridCommandTable;if(!E)return null;let i=-1,e=-1;for(let t=0;t<A.length;t++){const a=A[t];if(a.motionTrackBinding||a.videoEntity!==g)return Q.length=0,null;const o=this.resolveRenderableFrame(a,g),s=o==null?-1:(B=E.frameScheduleIds[o])!=null?B:-1;if(o==null||s<0||!I&&e>=0&&s!==e)return Q.length=0,null;i<0&&(i=o),e=s,this.timelineBatchFrameScratch[t]=o;const n=XA(a),r=Fg(a,g.params.viewBoxWidth,g.params.viewBoxHeight,this.layoutScratch,!1),h=a.width*ng(a),c=a.height*rg(a),D=n==="cover"?h:Math.min(r.width,h),w=n==="cover"?c:Math.min(r.height,c),l=n==="cover"?a.x:a.x+r.offsetX,F=n==="cover"?a.y:a.y+r.offsetY;Sg(a,l,F,D,w,this.slotScissor),this.updateSlotClipBounds();let d=this.sharedSlotLayerWorkPool[t];d||(d={slot:a,renderFrame:o,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0},this.sharedSlotLayerWorkPool[t]=d),d.slot=a,d.renderFrame=o,d.clipX0=this.slotClipX0,d.clipY0=this.slotClipY0,d.clipX1=this.slotClipX1,d.clipY1=this.slotClipY1;for(const y of Q)if(d.clipX1>y.clipX0&&d.clipX0<y.clipX1&&d.clipY1>y.clipY0&&d.clipY0<y.clipY1)return Q.length=0,null;Q.push(d)}return Q.length=0,i}drawHybridScheduledSlot(A,g,I){const B=g.videoEntity;if(!B)return!1;const Q=this.resolveRenderableFrame(g,B);return Q!=null?this.drawHybridScheduledOperations(A,g,Q,I):!1}drawHybridScheduledOperations(A,g,I,B,Q){var E,i,e,t,a,o,s,n,r,h,c,D,w,l,F;const d=g.videoEntity,y=d==null?void 0:d.svgaHybridCommandTable;if(!d||!y)return!1;const G=(E=y.runFrameOffsets[I])!=null?E:0,f=(i=y.runFrameOffsets[I+1])!=null?i:G,u=(e=d.atlasTextureHandles)!=null&&e.length?d.atlasTextureHandles:d.atlasTextureHandle?[d.atlasTextureHandle]:[];for(let S=G;S<f;S++){const Y=(t=y.runOperationStarts[S])!=null?t:0,U=y.runTypes[S],k=Y*3;if(U===bg||U===JI){const m=(a=y.meshReferences[k+1])!=null?a:-1,J=this.getClipMeshByIndex(d,m);if(!J||J.indices.length<3)return!1}else if(U===mI){const m=(o=y.meshReferences[k])!=null?o:-1,J=d.spriteTable.shapesTable[m],q=J?this.getShapeMesh(J):null;if(!q||q.indices.length<3)return!1}else if(U===DI||U===SB){const m=(s=y.meshReferences[k+2])!=null?s:-1;if(m<0||!u[m])return!1}}const R=(n=g.svgaFrameTableState)==null?void 0:n.binding,M=(R==null?void 0:R.backend)==="webgpu"?R.hybridSpriteMetadataBuffer:void 0,N=(R==null?void 0:R.backend)==="webgl2"?R.hybridSpriteMetadataTexture:void 0;this.timelineDrawCommand.svgaSpriteMetadata=M!=null?M:N,this.timelineDrawCommand.svgaSpriteMetadataBuffer=M,this.timelineDrawCommand.svgaSpriteMetadataTexture=N,this.timelineDrawCommand.svgaSpriteMetadataStrideFloats=II;try{Q||(g.svgaDrawBatchMode="hybrid-scheduled",g.svgaDrawCompatibleInstanceCount=1);for(let S=G;S<f;S++){const Y=(r=y.runOperationStarts[S])!=null?r:0,U=y.runTypes[S],k=(h=y.runOperationCounts[S])!=null?h:1,m=(c=y.spriteIndices[Y])!=null?c:0,J=Y*3,q=(D=y.meshReferences[J])!=null?D:-1,_=(w=y.meshReferences[J+1])!=null?w:-1,Z=(l=y.meshReferences[J+2])!=null?l:0;if(U===DI){const x=u[Z],X=Math.max(1,Math.floor(jA/((F=Q==null?void 0:Q.slotCount)!=null?F:1)));for(let T=0;T<k;T+=X){const gA=Math.min(X,k-T);if(Q&&(Q.spritesPerSlot=gA),!x||!this.drawTimelineRange(A,g,I,Y+T,gA,x,B,"none",void 0,Q))return!1}continue}if(U===SB){const x=u[Z];if(Q&&(Q.spritesPerSlot=1),!x||!this.drawTimelineRange(A,g,I,Y,1,x,B,"test",void 0,Q))return!1}else if(U===mI){const x=d.spriteTable.shapesTable[q],X=x?this.getShapeMesh(x):null;if(!X||X.indices.length===0)return!1;const T=this.ensureShapeMeshBuffers(A,X);if(Q&&(Q.spritesPerSlot=1),!this.drawTimelineMesh(A,g,I,m,T.vertexBuf,T.indexBuf,X.indices.length,"svga-frame-table-shape-premul",_>=0?"test":"none",B,Q))return!1}else if(U===bg||U===JI){const x=this.getClipMeshByIndex(d,_);if(!x||x.indices.length===0)return!1;const X=this.ensureClipMeshBuffers(A,x);if(Q&&(Q.spritesPerSlot=1),!this.drawTimelineMesh(A,g,I,m,X.vertexBuf,X.indexBuf,x.indices.length,"svga-frame-table-clip-mask",U===bg?"write":"clear",B,Q))return!1}}return!0}finally{this.timelineDrawCommand.svgaSpriteMetadata=void 0,this.timelineDrawCommand.svgaSpriteMetadataBuffer=void 0,this.timelineDrawCommand.svgaSpriteMetadataTexture=void 0,this.timelineDrawCommand.svgaSpriteMetadataStrideFloats=void 0,this.destroyed||A.resetScissor()}}flushGroup(A,g){var I,B,Q,E,i,e,t,a,o,s;if(g.length===0)return;const n=this.getProjection();if((A.type==="webgl2"||A.type==="webgpu")&&this.tryFlushDisjointSharedEntityLayers(A,g,n))return;this.spriteWorkCursor=0;const r=this.batchSpritesScratch;r.length=0;let h=null;this.slotScissorActive=!1;for(const c of g){const D=c.videoEntity,w=this.resolveRenderableFrame(c,D);if(w==null)continue;const l=D.params.viewBoxWidth,F=D.params.viewBoxHeight,d=XA(c),y=this.canUseGpuMotion(c),G=Fg(c,l,F,this.layoutScratch,y),f=G.scaleX,u=G.scaleY,R=c.width*ng(c),M=c.height*rg(c),N=d==="cover"?R:Math.min(G.width,R),S=d==="cover"?M:Math.min(G.height,M),Y=d==="cover"?c.x:c.x+G.offsetX,U=d==="cover"?c.y:c.y+G.offsetY;Sg(c,Y,U,N,S,this.slotScissor),this.updateSlotClipBounds();const k=(A.type==="webgl2"||A.type==="webgpu")&&!D.spriteTable.hasAnyShapes&&!((I=c.svgaSlotTextures)!=null&&I.size),m=!k&&d!=="cover"&&!c.rotation&&!((B=c.svgaSlotTextures)!=null&&B.size)&&D.spriteTable.allFramesInsideViewBox===!0;if(k||m)this.slotScissorActive&&(r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null),A.resetScissor(),this.slotScissorActive=!1);else{r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null);const x=this.slotScissor;A.setScissor(x.x,x.y,x.w,x.h),this.slotScissorActive=!0}const J=(Q=D.atlasTextureHandles)!=null&&Q.length?D.atlasTextureHandles:(E=D.atlasTextureHandle)!=null?E:null,q=(i=c.svgaSlotTextures)!=null?i:null,_=c.state==="stopped"&&!D.spriteTable.hasAnyShapes&&this.getFrameClipMode(D,w)===0;if(!_)c.svgaStaticBatchCache&&(c.svgaStaticBatchCache=null);else if(this.staticBatchCacheMatches(c.svgaStaticBatchCache,c,D,J,q,f,u,G.offsetX,G.offsetY,w)){h=this.drawFromStaticBatchCache(A,c.svgaStaticBatchCache,r,h,n);continue}let Z=_?[]:null;for(let x=0;x<D.spriteTable.spriteCount;x++){const X=D.spriteTable,T=(x*X.frameCount+w)*$g;if(X.frameData[T+8]*c.opacity<.05)continue;const gA=(e=X.clipPathIndex[x*X.frameCount+w])!=null?e:-1,UA=gA>=0?X.clipPaths[gA]:void 0;if(UA&&this.getClipGeometryKind(UA)==="empty")continue;const yA=Ie(X,x,w),rA=!!yA&&yA.length>0,BA=this.acquireSpriteWork(c,x,X.frameData,T,f,u,G.offsetX,G.offsetY),Ig=(t=X.imageKeys[x])!=null?t:"",QA=this.resolveSpriteTextureInto(c,Ig,BA);if(!QA&&!rA){this.spriteWorkCursor--;continue}const V=this.getClipMeshForSprite(D,x,w);if(gA>=0&&V===void 0)throw this.spriteWorkCursor--,Z=null,new Error("SVGA clip mesh is still building; discard the complete frame");if(gA>=0&&V===null){this.spriteWorkCursor--,Z=null;continue}if(rA){Z=null,r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null),V&&V.indices.length>0?(this.drawShapeFrame(A,BA,yA,V,n),QA&&this.drawClippedSprite(A,BA,V,n)):(this.drawShapeFrame(A,BA,yA,V,n),QA&&this.drawSingleSprite(A,BA,n));continue}V&&V.indices.length>0?(Z=null,r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null),this.drawClippedSprite(A,BA,V,n)):BA.override?(Z&&Z.push(this.captureStaticBatchCacheEntry(BA,!0)),r.length>0&&(this.drawBatch(A,r,h,n),r.length=0,h=null),this.drawSingleSprite(A,BA,n)):(Z&&Z.push(this.captureStaticBatchCacheEntry(BA,!1)),h&&h.id!==BA.handle.id&&(this.drawBatch(A,r,h,n),r.length=0,h=null),r.push(BA),h=BA.handle,r.length>=jA&&(this.drawBatch(A,r,h,n),r.length=0,h=null))}_&&(c.svgaStaticBatchCache=Z?{entries:Z,entity:D,atlasHandlesDep:J,svgaSlotTextures:q,currentFrame:w,opacity:c.opacity,x:c.x,y:c.y,width:c.width,height:c.height,scale:c.scale,motionScaleX:(a=c.motionScaleX)!=null?a:1,motionScaleY:(o=c.motionScaleY)!=null?o:1,rotation:(s=c.rotation)!=null?s:0,sx:f,sy:u,offsetX:G.offsetX,offsetY:G.offsetY}:null)}r.length>0&&this.drawBatch(A,r,h,n),r.length=0,this.releaseSpriteWorks(),this.slotScissorActive=!1,A.resetScissor()}tryFlushDisjointSharedEntityLayers(A,g,I){var B,Q,E,i,e;if(g.length<2)return!1;const t=(B=g[0])==null?void 0:B.videoEntity;if(!t||t.spriteTable.hasAnyShapes)return!1;const a=this.sharedSlotLayerWorksScratch;a.length=0;for(let r=0;r<g.length;r++){const h=g[r];if(h.videoEntity!==t||(Q=h.svgaSlotTextures)!=null&&Q.size)return a.length=0,!1;const c=this.resolveRenderableFrame(h,t);if(c==null)return a.length=0,!1;const D=XA(h),w=Fg(h,t.params.viewBoxWidth,t.params.viewBoxHeight,this.layoutScratch,this.canUseGpuMotion(h)),l=h.width*ng(h),F=h.height*rg(h),d=D==="cover"?l:Math.min(w.width,l),y=D==="cover"?F:Math.min(w.height,F),G=D==="cover"?h.x:h.x+w.offsetX,f=D==="cover"?h.y:h.y+w.offsetY;Sg(h,G,f,d,y,this.slotScissor),this.updateSlotClipBounds();let u=this.sharedSlotLayerWorkPool[r];u||(u={slot:h,renderFrame:c,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0},this.sharedSlotLayerWorkPool[r]=u),u.slot=h,u.renderFrame=c,u.sx=w.scaleX,u.sy=w.scaleY,u.offsetX=w.offsetX,u.offsetY=w.offsetY,u.clipX0=this.slotClipX0,u.clipY0=this.slotClipY0,u.clipX1=this.slotClipX1,u.clipY1=this.slotClipY1;for(const R of a)if(u.clipX1>R.clipX0&&u.clipX0<R.clipX1&&u.clipY1>R.clipY0&&u.clipY0<R.clipY1)return a.length=0,!1;a.push(u)}this.spriteWorkCursor=0,this.slotScissorActive=!1;const o=this.batchSpritesScratch;o.length=0;let s=null;const n=t.spriteTable;for(let r=0;r<n.spriteCount;r++){this.resetClipLayerBatches();for(const h of a){const c=(r*n.frameCount+h.renderFrame)*$g;if(n.frameData[c+8]*h.slot.opacity<.05)continue;const D=(E=n.clipPathIndex[r*n.frameCount+h.renderFrame])!=null?E:-1,w=D>=0?n.clipPaths[D]:void 0;if(w&&this.getClipGeometryKind(w)==="empty")continue;this.slotClipX0=h.clipX0,this.slotClipY0=h.clipY0,this.slotClipX1=h.clipX1,this.slotClipY1=h.clipY1;const l=this.acquireSpriteWork(h.slot,r,n.frameData,c,h.sx,h.sy,h.offsetX,h.offsetY),F=(i=n.imageKeys[r])!=null?i:"";if(!this.resolveSpriteTextureInto(h.slot,F,l)){this.spriteWorkCursor--;continue}const d=this.getClipMeshForSprite(t,r,h.renderFrame);if(D>=0&&d===void 0)throw this.spriteWorkCursor--,new Error("SVGA clip mesh is still building; discard the complete frame");if(D>=0&&d===null){this.spriteWorkCursor--;continue}if(!d||d.indices.length===0){s&&s.id!==l.handle.id&&(this.drawBatch(A,o,s,I),o.length=0),o.push(l),s=l.handle,o.length>=jA&&(this.drawBatch(A,o,s,I),o.length=0,s=null);continue}const y=this.getClipRect(d),G=this.resolveClipTransform(l);if(y&&((e=l.slot.rotation)!=null?e:0)===0&&tB(G.a,G.b,G.c,G.d)){this.intersectWorkClipRect(l,y,G.a,G.d,G.tx,G.ty)&&(s&&s.id!==l.handle.id&&(this.drawBatch(A,o,s,I),o.length=0),o.push(l),s=l.handle,o.length>=jA&&(this.drawBatch(A,o,s,I),o.length=0,s=null));continue}this.acquireClipLayerBatch(d,l.handle).works.push(l)}if(this.clipLayerBatchesScratch.length>0){o.length>0&&(this.drawBatch(A,o,s,I),o.length=0,s=null);for(const h of this.clipLayerBatchesScratch)if(h.works.length<2||!this.drawBatchedClipLayer(A,h.works,h.mesh,h.texture,I))for(const c of h.works)this.drawClippedSprite(A,c,h.mesh,I)}}return o.length>0&&this.drawBatch(A,o,s,I),o.length=0,this.resetClipLayerBatches(),a.length=0,this.releaseSpriteWorks(),A.resetScissor(),!0}resetClipLayerBatches(){for(const A of this.clipLayerBatchesScratch)A.works.length=0;this.clipLayerBatchesScratch.length=0}acquireClipLayerBatch(A,g){for(const Q of this.clipLayerBatchesScratch)if(Q.mesh===A&&Q.texture.id===g.id)return Q;const I=this.clipLayerBatchesScratch.length;let B=this.clipLayerBatchPool[I];return B||(B={mesh:A,texture:g,works:[]},this.clipLayerBatchPool[I]=B),B.mesh=A,B.texture=g,B.works.length=0,this.clipLayerBatchesScratch.push(B),B}resolveClipTransform(A){const{slot:g,sx:I,sy:B,offsetX:Q,offsetY:E,a:i,b:e,c:t,d:a,tx:o,ty:s}=A;return this.rotateTransform(g,i*I,e*B,t*I,a*B,o*I+g.x+Q,s*B+g.y+E)}intersectWorkClipRect(A,g,I,B,Q,E){const i=Math.max(A.clipX0,Math.floor(I*g.x+Q)),e=Math.max(A.clipY0,Math.floor(B*g.y+E)),t=Math.min(A.clipX1,Math.ceil(I*(g.x+g.w)+Q)),a=Math.min(A.clipY1,Math.ceil(B*(g.y+g.h)+E));return t<=i||a<=e?!1:(A.clipX0=i,A.clipY0=e,A.clipX1=t,A.clipY1=a,!0)}drawBatchedClipLayer(A,g,I,B,Q){const E=g.length;if(E<2||E>jA)return!1;const i=I.indices.length;if(I.vertices.length<6||i<3)return!1;const e=E*6;if(this.clipMaskBatchTransformsScratch.length<e){let F=Math.max(64,this.clipMaskBatchTransformsScratch.length);for(;F<e;)F*=2;this.clipMaskBatchTransformsScratch=new Float32Array(F)}const t=this.clipMaskBatchTransformsScratch,a=this.getClipMeshBounds(I);for(let F=0;F<E;F++){const d=g[F],y=this.resolveClipTransform(d),G=F*6;t[G]=y.a,t[G+1]=y.b,t[G+2]=y.c,t[G+3]=y.d,t[G+4]=y.tx,t[G+5]=y.ty;let f=1/0,u=1/0,R=-1/0,M=-1/0;for(let N=0;N<4;N++){const S=N&1?a.x1:a.x0,Y=N&2?a.y1:a.y0,U=y.a*S+y.c*Y+y.tx,k=y.b*S+y.d*Y+y.ty;U<f&&(f=U),k<u&&(u=k),U>R&&(R=U),k>M&&(M=k)}if(f<d.clipX0||u<d.clipY0||R>d.clipX1||M>d.clipY1)return!1}const o=g.every(F=>this.canUseTimelinePath(A,F.slot,"gpu-hybrid")&&!F.override),s=o?this.prepareTimelineWorks(A,g,E,B,Q,"test"):null;if(o&&!s)return!1;let n=null;if(!o){this.ensureInstancedQuadBuffers(A);const F=this.instancedFrameDataScratch,d=A.type==="webgl2"?"webgl2":"webgpu";for(let y=0;y<E;y++)this.packInstancedFrameData(F,y,g[y],d);n=this.clipInstancedDrawCommand,n.vertexBuffer=this.instancedQuadVB,n.indexBuffer=this.instancedQuadIB,n.instanceCount=E,n.instanceData=F,this.clipInstancedTexturesScratch[0]=B,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=Q}const r=this.ensureClipMeshBuffers(A,I),h=this.clipMaskInstancedDrawCommand;h.vertexBuffer=r.vertexBuf,h.indexBuffer=r.indexBuf,h.indexCount=i,h.instanceCount=E,h.instanceData=t,h.stencil="write",this.clipMaskInstancedUniformsScratch.u_projection=Q,this.requireBackendDraw(A,h,"batched stencil write");let c=!1,D;try{if(o){if(!this.submitPreparedTimelineWorks(A,s))throw new zg("batched timeline stencil test became unavailable after mask write")}else this.requireBackendDraw(A,n,"batched stencil test")}catch(F){c=!0,D=F}if(this.destroyed)throw D;let w=!1,l;try{h.stencil="clear",this.requireBackendDraw(A,h,"batched stencil clear")}catch(F){w=!0,l=F}if(c&&w)throw new AggregateError([D,l],"SVGA batched stencil test and clear both failed");if(c)throw D;if(w)throw l;return!0}acquireSpriteWork(A,g,I,B,Q,E,i,e){let t=this.spriteWorkPool[this.spriteWorkCursor];return t||(t={slot:A,spriteIndex:g,layoutW:0,layoutH:0,a:1,b:0,c:0,d:1,tx:0,ty:0,alpha:0,handle:null,rect:eB,override:null,sx:Q,sy:E,offsetX:i,offsetY:e,clipX0:0,clipY0:0,clipX1:0,clipY1:0,cachedRow:null,gpuMotion:!1},this.spriteWorkPool[this.spriteWorkCursor]=t),this.spriteWorkCursor++,t.slot=A,t.spriteIndex=g,t.layoutW=I[B],t.layoutH=I[B+1],t.a=I[B+2],t.b=I[B+3],t.c=I[B+4],t.d=I[B+5],t.tx=I[B+6],t.ty=I[B+7],t.alpha=I[B+8],t.sx=Q,t.sy=E,t.offsetX=i,t.offsetY=e,this.copyCurrentSlotClipToWork(t),t.cachedRow=null,t.gpuMotion=this.canUseGpuMotion(A),t}acquireCachedSpriteWork(A){let g=this.spriteWorkPool[this.spriteWorkCursor];return g||(g={slot:null,spriteIndex:-1,layoutW:0,layoutH:0,a:1,b:0,c:0,d:1,tx:0,ty:0,alpha:0,handle:A.handle,rect:eB,override:null,sx:1,sy:1,offsetX:0,offsetY:0,clipX0:0,clipY0:0,clipX1:0,clipY1:0,cachedRow:null,gpuMotion:!1},this.spriteWorkPool[this.spriteWorkCursor]=g),this.spriteWorkCursor++,g.handle=A.handle,g.cachedRow=A.row,this.copyCurrentSlotClipToWork(g),g}updateSlotClipBounds(){const A=this.slotScissor,g=Math.max(0,Math.min(this.canvasWidth,Math.floor(A.x))),I=Math.max(0,Math.min(this.canvasHeight,Math.floor(A.y)));this.slotClipX0=g,this.slotClipY0=I,this.slotClipX1=Math.max(g,Math.min(this.canvasWidth,Math.ceil(A.x+A.w))),this.slotClipY1=Math.max(I,Math.min(this.canvasHeight,Math.ceil(A.y+A.h)))}copyCurrentSlotClipToWork(A){A.clipX0=this.slotClipX0,A.clipY0=this.slotClipY0,A.clipX1=this.slotClipX1,A.clipY1=this.slotClipY1}releaseSpriteWorks(){for(let A=0;A<this.spriteWorkCursor;A++){const g=this.spriteWorkPool[A];g.slot=null,g.handle=null,g.rect=eB,g.override=null,g.cachedRow=null}this.spriteWorkCursor=0}staticBatchCacheMatches(A,g,I,B,Q,E,i,e,t,a){var o,s,n;return A?A.entity===I&&A.atlasHandlesDep===B&&A.svgaSlotTextures===Q&&A.currentFrame===a&&A.opacity===g.opacity&&A.x===g.x&&A.y===g.y&&A.width===g.width&&A.height===g.height&&A.scale===g.scale&&A.motionScaleX===((o=g.motionScaleX)!=null?o:1)&&A.motionScaleY===((s=g.motionScaleY)!=null?s:1)&&A.rotation===((n=g.rotation)!=null?n:0)&&A.sx===E&&A.sy===i&&A.offsetX===e&&A.offsetY===t:!1}captureStaticBatchCacheEntry(A,g){const I=this.staticBatchCacheRowScratch;return this.packFrameData(I,0,A),{row:I.slice(),handle:A.handle,isOverride:g}}drawFromStaticBatchCache(A,g,I,B,Q){for(const E of g.entries){const i=this.acquireCachedSpriteWork(E);if(E.isOverride){I.length>0&&(this.drawBatch(A,I,B,Q),I.length=0,B=null),this.drawSingleSprite(A,i,Q);continue}B&&B.id!==E.handle.id&&(this.drawBatch(A,I,B,Q),I.length=0,B=null),I.push(i),B=E.handle,I.length>=jA&&(this.drawBatch(A,I,B,Q),I.length=0,B=null)}return B}getProjection(){return this.projCache&&this.projCacheW===this.canvasWidth&&this.projCacheH===this.canvasHeight?this.projCache:(this.projCacheW=this.canvasWidth,this.projCacheH=this.canvasHeight,this.projCache=pg(0,this.canvasWidth,this.canvasHeight,0,-1,1),this.projCache)}drawBatch(A,g,I,B){const Q=Math.min(g.length,jA);if(Q<1)return;if(A.type==="webgl2"||A.type==="webgpu"){if(this.tryDrawTimelineBatch(A,g,Q,I,B))return;this.drawBatchInstancedWebGL(A,g,Q,I,B);return}const E=this.pool.getFloat32(Q*_g);for(let w=0;w<Q;w++)this.packFrameData(E,w,g[w]);const i=Q*nI*ug,e=Q*YI,t=this.pool.getFloat32B(i),a=this.pool.getUint32(e),o=new Float32Array(E.buffer,0,Q*_g),s=new Float32Array(t.buffer,0,i),n=new Uint32Array(a.buffer,0,e);(!hI()||WB(o,s,n)===null)&&hB(o,s,n);const r=this.batchDrawCursor++,h=this.ensureVertexBuffer(A,r,s),c=this.ensureIndexBuffer(A,r,n),D=this.plainBatchDrawCommand;D.vertexBuffer=h,D.indexBuffer=c,D.indexCount=e,this.plainBatchTexturesScratch[0]=I,this.plainBatchTexturesScratch.length=1,this.plainBatchUniformsScratch.u_projection=B,this.requireBackendDraw(A,D,"CPU reference batch")}tryDrawTimelineBatch(A,g,I,B,Q){for(let e=0;e<I;e++){const t=g[e];if(t.cachedRow||t.override||t.gpuMotion||!this.canUseTimelinePath(A,t.slot,"gpu-hybrid"))return!1}const E=g[0];let i=!0;for(let e=0;e<I;e++){const t=g[e];if(t.slot!==E.slot||t.spriteIndex!==E.spriteIndex+e){i=!1;break}}if(i){const e=this.resolveRenderableFrame(E.slot,E.slot.videoEntity);return e==null?!1:this.drawTimelineRange(A,E.slot,e,E.spriteIndex,I,B,Q,"none",{x0:E.clipX0,y0:E.clipY0,x1:E.clipX1,y1:E.clipY1})}return this.drawTimelineWorks(A,g,I,B,Q)}drawTimelineWorks(A,g,I,B,Q,E="none"){const i=this.prepareTimelineWorks(A,g,I,B,Q,E);return i?this.submitPreparedTimelineWorks(A,i):!1}prepareTimelineWorks(A,g,I,B,Q,E){var i,e,t;if(I<1||I>jA)return null;const a=g[0],o=a.slot.videoEntity,s=(i=a.slot.svgaFrameTableState)==null?void 0:i.binding;if(!o||!s)return null;const n=this.timelineBatchDataScratch;for(let h=0;h<I;h++){const c=g[h];if(c.slot.videoEntity!==o||((e=c.slot.svgaFrameTableState)==null?void 0:e.binding)!==s||c.override||!this.canUseTimelinePath(A,c.slot,"gpu-hybrid"))return null;const D=this.resolveRenderableFrame(c.slot,o);if(D==null)return null;const w=this.resolveCachedTimelineSlotState(c.slot,D),l=h*EI;n.set(w.subarray(0,8),l),n[l+8]=c.clipX0,n[l+9]=c.clipY0,n[l+10]=c.clipX1,n[l+11]=c.clipY1,n[l+12]=1,n[l+Ng.metadataBase]=c.spriteIndex,n[l+Ng.atlasPage]=(t=c.rect.textureIndex)!=null?t:-1,n[l+Ng.motionTrackPlusOne]=1,c.slot.svgaFrameTableState.frameIndex=D}this.ensureInstancedQuadBuffers(A);const r=this.timelineDrawCommand;return r.vertexBuffer=this.instancedQuadVB,r.indexBuffer=this.instancedQuadIB,r.instanceCount=I,r.instanceData=n,r.stencil=E,r.svgaFrameTable=s,r.svgaFrameTableFrameCount=o.spriteTable.frameCount,r.svgaFrameTableSpriteCount=o.spriteTable.spriteCount,r.svgaFrameTableFrameIndex=a.slot.currentFrame,r.svgaFrameTableSpriteBase=0,r.svgaFrameTableSlotState=this.resolveTimelineSlotState(a.slot,a.slot.svgaFrameTableState.frameIndex,0),r.svgaSlotState=r.svgaFrameTableSlotState,r.motionTrackBuffer=void 0,r.motionTrackGlobalsBuffer=void 0,r.motionTrackSampleCount=void 0,r.motionTrackSampleIntervalMs=void 0,r.motionTrackTimeMs=void 0,r.motionTrackIndex=void 0,this.timelineTexturesScratch[0]=B,this.timelineTexturesScratch.length=1,this.timelineUniformsScratch.u_projection=Q,r}submitPreparedTimelineWorks(A,g){try{return this.submitBackendDraw(A,g)}finally{g.instanceData=void 0}}canUseGpuMotion(A){var g;const I=A.videoEntity,B=A.motionTrackBinding;if(!I||!B||I.spriteTable.hasAnyShapes||I.spriteTable.allFramesInsideViewBox!==!0||(g=A.svgaSlotTextures)!=null&&g.size||A.options.objectFit==="cover"||A.options.transformOrigin)return!1;const Q=this.gpuMotionEntityEligibilityCache.get(I);if(Q!=null)return Q;for(const E of I.spriteTable.clipPathIndex)if(E>=0)return this.gpuMotionEntityEligibilityCache.set(I,!1),!1;return this.gpuMotionEntityEligibilityCache.set(I,!0),!0}drawBatchInstancedWebGL(A,g,I,B,Q){this.ensureInstancedQuadBuffers(A);const E=this.instancedFrameDataScratch,i=A.type==="webgl2"?"webgl2":"webgpu";for(let s=0;s<I;s++)this.packInstancedFrameData(E,s,g[s],i);const e=this.plainInstancedDrawCommand,t=g[0].gpuMotion?g[0].slot.motionTrackBinding:null;e.shader=A.type==="webgpu"&&t?"svga-motion-instanced-premul":"svga-instanced-premul",e.vertexBuffer=this.instancedQuadVB,e.indexBuffer=this.instancedQuadIB,e.instanceCount=I,e.instanceData=E,e.stencil="none",e.motionTrackBuffer=t==null?void 0:t.buffer,e.motionTrackGlobalsBuffer=t==null?void 0:t.globalsBuffer,e.motionTrackSampleCount=t==null?void 0:t.sampleCount,e.motionTrackSampleIntervalMs=t==null?void 0:t.sampleIntervalMs,e.motionTrackTimeMs=t==null?void 0:t.currentTimeMs;const{sx:a,sy:o}=Xg(A.canvas);e.motionTrackCssScaleX=a,e.motionTrackCssScaleY=o,this.plainInstancedTexturesScratch[0]=B,this.plainInstancedTexturesScratch.length=1,this.plainInstancedUniformsScratch.u_projection=Q,this.requireBackendDraw(A,e,"CPU reference instanced batch")}drawClippedSprite(A,g,I,B){var Q;const{slot:E,sx:i,sy:e,offsetX:t,offsetY:a,a:o,b:s,c:n,d:r,tx:h,ty:c}=g,D=this.rotateTransform(E,o*i,s*e,n*i,r*e,h*i+E.x+t,c*e+E.y+a),{a:w,b:l,c:F,d,tx:y,ty:G}=D,f=this.getClipRect(I);if(f&&((Q=E.rotation)!=null?Q:0)===0&&tB(w,l,F,d)){this.applyClipRectScissor(A,f,w,d,y,G)&&this.drawSingleSprite(A,g,B),this.restoreSlotScissor(A);return}const u=this.ensureClipMeshBuffers(A,I),R=this.packClipTransform(w,l,F,d,y,G);if(this.sharedClipStencilActive){if(A.type==="webgl2"||A.type==="webgpu"){if(!this.drawTimelineStencilTest(A,g,B)){this.ensureInstancedQuadBuffers(A);const N=this.instancedFrameDataScratch;this.packInstancedFrameData(N,0,g,A.type);const S=this.clipInstancedDrawCommand;S.vertexBuffer=this.instancedQuadVB,S.indexBuffer=this.instancedQuadIB,S.instanceData=N,this.clipInstancedTexturesScratch[0]=g.handle,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=B,this.requireBackendDraw(A,S,"shared stencil sprite test")}}else this.drawBatchSpriteWithStencilTest(A,g,B);this.clearSharedClipStencil(A,I,R,B);return}const M=this.clipMaskDrawCommand;if(M.vertexBuffer=u.vertexBuf,M.indexBuffer=u.indexBuf,M.indexCount=I.indices.length,M.stencil="write",this.clipMaskUniformsScratch.u_projection=B,this.clipMaskUniformsScratch.u_transform=R,this.requireBackendDraw(A,M,"stencil write"),A.type==="webgl2"||A.type==="webgpu"){if(!this.drawTimelineStencilTest(A,g,B)){this.ensureInstancedQuadBuffers(A);const N=this.instancedFrameDataScratch;this.packInstancedFrameData(N,0,g,A.type);const S=this.clipInstancedDrawCommand;S.vertexBuffer=this.instancedQuadVB,S.indexBuffer=this.instancedQuadIB,S.instanceData=N,this.clipInstancedTexturesScratch[0]=g.handle,this.clipInstancedTexturesScratch.length=1,this.clipInstancedUniformsScratch.u_projection=B,this.requireBackendDraw(A,S,"stencil sprite test")}this.clearClipStencil(A,I,u,R,B);return}this.drawBatchSpriteWithStencilTest(A,g,B),this.clearClipStencil(A,I,u,R,B)}drawTimelineStencilTest(A,g,I){if(g.override||!this.canUseTimelinePath(A,g.slot,"gpu-hybrid"))return!1;const B=g.slot.videoEntity;if(!B)return!1;const Q=this.resolveRenderableFrame(g.slot,B);return Q==null?!1:this.drawTimelineRange(A,g.slot,Q,g.spriteIndex,1,g.handle,I,"test",{x0:g.clipX0,y0:g.clipY0,x1:g.clipX1,y1:g.clipY1})}drawBatchSpriteWithStencilTest(A,g,I){const B=this.clipFrameDataScratch;this.packFrameData(B,0,g);const Q=nI*ug,E=YI;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<Q)&&(this.clipSpriteVertsScratch=new Float32Array(Q)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<E)&&(this.clipSpriteIndicesScratch=new Uint32Array(E));const i=this.clipSpriteVertsScratch,e=this.clipSpriteIndicesScratch;(!hI()||WB(B,i,e)===null)&&hB(B,i,e);const t=this.clipSpriteDrawCursor++,a=this.ensureClipSpriteVertexBuffer(A,t,i.subarray(0,Q)),o=this.ensureClipSpriteIndexBuffer(A,t,e.subarray(0,E)),s=this.clipBatchDrawCommand;s.vertexBuffer=a,s.indexBuffer=o,s.indexCount=E,this.clipBatchTexturesScratch[0]=g.handle,this.clipBatchTexturesScratch.length=1,this.clipBatchUniformsScratch.u_projection=I,this.requireBackendDraw(A,s,"WebGL1 stencil sprite test")}applyClipRectScissor(A,g,I,B,Q,E){const i=I*g.x+Q,e=B*g.y+E,t=this.slotScissor,a=Math.max(i,t.x),o=Math.max(e,t.y),s=Math.min(i+I*g.w,t.x+t.w),n=Math.min(e+B*g.h,t.y+t.h);return s<=a||n<=o?!1:(A.setScissor(a,o,s-a,n-o),!0)}restoreSlotScissor(A){if(!this.slotScissorActive){A.resetScissor();return}const g=this.slotScissor;A.setScissor(g.x,g.y,g.w,g.h)}getClipRect(A){return A.rect===void 0&&(A.rect=St(A.vertices,A.indices)),A.rect}getClipMeshBounds(A){if(A.bounds)return A.bounds;const g=A.vertices;let I=1/0,B=1/0,Q=-1/0,E=-1/0;for(let i=0;i<g.length;i+=2){const e=g[i],t=g[i+1];e<I&&(I=e),t<B&&(B=t),e>Q&&(Q=e),t>E&&(E=t)}return A.bounds={x0:I,y0:B,x1:Q,y1:E},A.bounds}ensureClipMeshBuffers(A,g){if(!g.vertexBuf||!g.indexBuf){g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;const I=A.createBuffer(g.vertices,"vertex");try{const B=A.createBuffer(g.indices,"index");g.vertexBuf=I,g.indexBuf=B,this.clipMeshesWithBuffers.add(g)}catch(B){throw A.deleteBuffer(I),B}}return{vertexBuf:g.vertexBuf,indexBuf:g.indexBuf}}packClipTransform(A,g,I,B,Q,E){const i=this.clipTransformMat;return i[0]=A,i[1]=g,i[4]=I,i[5]=B,i[12]=Q,i[13]=E,i}drawSingleSprite(A,g,I){var B;if(A.type==="webgl2"||A.type==="webgpu"){const r=(B=g.slot)==null?void 0:B.videoEntity,h=r?this.resolveRenderableFrame(g.slot,r):null;if(h!=null&&this.canUseTimelinePath(A,g.slot,"gpu-hybrid")&&!g.override&&this.drawTimelineRange(A,g.slot,h,g.spriteIndex,1,g.handle,I,"none",{x0:g.clipX0,y0:g.clipY0,x1:g.clipX1,y1:g.clipY1}))return;this.ensureInstancedQuadBuffers(A);const c=this.instancedFrameDataScratch;this.packInstancedFrameData(c,0,g,A.type);const D=this.plainInstancedDrawCommand;D.vertexBuffer=this.instancedQuadVB,D.indexBuffer=this.instancedQuadIB,D.instanceCount=1,D.instanceData=c,this.plainInstancedTexturesScratch[0]=g.handle,this.plainInstancedTexturesScratch.length=1,this.plainInstancedUniformsScratch.u_projection=I,this.requireBackendDraw(A,D,"single instanced sprite");return}const Q=this.clipFrameDataScratch;this.packFrameData(Q,0,g);const E=nI*ug,i=YI;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<E)&&(this.clipSpriteVertsScratch=new Float32Array(E)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<i)&&(this.clipSpriteIndicesScratch=new Uint32Array(i));const e=this.clipSpriteVertsScratch,t=this.clipSpriteIndicesScratch;(!hI()||WB(Q,e,t)===null)&&hB(Q,e,t);const a=this.clipSpriteDrawCursor++,o=this.ensureClipSpriteVertexBuffer(A,a,e.subarray(0,E)),s=this.ensureClipSpriteIndexBuffer(A,a,t.subarray(0,i)),n=this.plainBatchDrawCommand;n.vertexBuffer=o,n.indexBuffer=s,n.indexCount=i,this.plainBatchTexturesScratch[0]=g.handle,this.plainBatchTexturesScratch.length=1,this.plainBatchUniformsScratch.u_projection=I,this.requireBackendDraw(A,n,"single CPU reference sprite")}clearClipStencil(A,g,I,B,Q){const E=this.clipMaskDrawCommand;E.vertexBuffer=I.vertexBuf,E.indexBuffer=I.indexBuf,E.indexCount=g.indices.length,E.stencil="clear",this.clipMaskUniformsScratch.u_projection=Q,this.clipMaskUniformsScratch.u_transform=B,this.requireBackendDraw(A,E,"stencil clear")}rotateTransform(A,g,I,B,Q,E,i){const e=this.affineScratch;return e.a=g,e.b=I,e.c=B,e.d=Q,e.tx=E,e.ty=i,Le(A,e,e)}packFrameData(A,g,I){this.packFrameDataAt(A,g*_g,I)}packInstancedFrameData(A,g,I,B){const Q=g*BQ;this.packFrameDataAt(A,Q,I);const E=A[Q],i=A[Q+1],e=A[Q+2],t=A[Q+3],a=A[Q+4],o=A[Q+5],s=A[Q+6],n=A[Q+7],r=A[Q+8],h=A[Q+9],c=A[Q+10],D=A[Q+11],w=A[Q+12];A[Q]=e*E,A[Q+1]=t*E,A[Q+2]=a*i,A[Q+3]=o*i,A[Q+4]=s,A[Q+5]=n,A[Q+6]=r,A[Q+7]=h,A[Q+8]=c,A[Q+9]=D,A[Q+10]=w;let l=I.clipY0,F=I.clipY1;if(B==="webgl2"){const d=l;l=this.canvasHeight-F,F=this.canvasHeight-d}this.instancedFrameDataWords[Q+11]=this.packClipCoordinatePair(I.clipX0,l),this.instancedFrameDataWords[Q+12]=this.packClipCoordinatePair(I.clipX1,F),I.gpuMotion&&I.slot.motionTrackBinding&&(A[Q+11]=I.slot.motionTrackBinding.trackIndex,A[Q+12]=0)}packClipCoordinatePair(A,g){const I=Math.max(0,Math.min(65535,A))&65535,B=Math.max(0,Math.min(65535,g))&65535;return(I|B<<16)>>>0}packFrameDataAt(A,g,I){if(I.cachedRow){A.set(I.cachedRow,g);return}const{slot:B,layoutW:Q,layoutH:E,a:i,b:e,c:t,d:a,tx:o,ty:s,alpha:n,rect:r,override:h,sx:c,sy:D,offsetX:w,offsetY:l}=I;let F=Q||(h==null?void 0:h.logicalWidth)||0,d=E||(h==null?void 0:h.logicalHeight)||0,y=0,G=0;if((h==null?void 0:h.mode)==="dynamic"){const Z=Q||h.logicalWidth,x=E||h.logicalHeight;F=h.logicalWidth,d=h.logicalHeight,y=Math.max(0,(Z-F)*.5),G=Math.max(0,(x-d)*.5)}const f=i*c,u=e*D,R=t*c,M=a*D,N=o*c+f*y+R*G,S=s*D+u*y+M*G,Y=I.gpuMotion?{a:f,b:u,c:R,d:M,tx:N+w-B.width*B.scale/2,ty:S+l-B.height*B.scale/2}:this.rotateTransform(B,f,u,R,M,N+B.x+w,S+B.y+l),{a:U,b:k,c:m,d:J,tx:q,ty:_}=Y;A[g]=F,A[g+1]=d,A[g+2]=U,A[g+3]=k,A[g+4]=m,A[g+5]=J,A[g+6]=q,A[g+7]=_,A[g+8]=n*(I.gpuMotion?1:B.opacity),A[g+9]=r.x,A[g+10]=r.y,A[g+11]=r.x+r.w,A[g+12]=r.y+r.h}resolveSpriteTextureInto(A,g,I){var B,Q,E,i,e;const t=(Q=(B=A.svgaSlotTextures)==null?void 0:B.get(g))!=null?Q:null;if(t)return I.handle=t.texture,I.rect=eB,I.override=t,!0;const a=A.videoEntity,o=a.atlasRects.get(g),s=(E=o==null?void 0:o.textureIndex)!=null?E:0,n=(e=(i=a.atlasTextureHandles)==null?void 0:i[s])!=null?e:a.atlasTextureHandle;return!o||!n?!1:(I.handle=n,I.rect=o,I.override=null,!0)}drawShapeFrame(A,g,I,B,Q){var E;const i=this.getShapeMesh(I);if(!i||i.indices.length===0)return;const{slot:e,sx:t,sy:a,offsetX:o,offsetY:s,a:n,b:r,c:h,d:c,tx:D,ty:w,alpha:l}=g,F=this.getWhiteTexture(A),d=this.rotateTransform(e,n*t,r*a,h*t,c*a,D*t+e.x+o,w*a+e.y+s),{a:y,b:G,c:f,d:u,tx:R,ty:M}=d,N=!!B&&B.indices.length>0;let S=!1,Y=null,U=null,k=!1;if(N){const q=this.getClipRect(B);if(q&&((E=e.rotation)!=null?E:0)===0&&tB(y,G,f,u)){if(!this.applyClipRectScissor(A,q,y,u,R,M)){this.restoreSlotScissor(A);return}S=!0}else{Y=this.ensureClipMeshBuffers(A,B),U=this.packClipTransform(y,G,f,u,R,M);const _=this.clipMaskDrawCommand;_.vertexBuffer=Y.vertexBuf,_.indexBuffer=Y.indexBuf,_.indexCount=B.indices.length,_.stencil="write",this.clipMaskUniformsScratch.u_projection=Q,this.clipMaskUniformsScratch.u_transform=U,this.requireBackendDraw(A,_,"shape stencil write"),k=g.handle!=null,k&&(this.sharedClipStencilActive=!0)}}const m=this.ensureShapeMeshBuffers(A,i),J=this.shapeDrawCommand;J.vertexBuffer=m.vertexBuf,J.indexBuffer=m.indexBuf,J.indexCount=i.indices.length,J.stencil=N?"test":"none",this.shapeTexturesScratch[0]=F,this.shapeTexturesScratch.length=1,this.shapeUniformsScratch.u_projection=Q,this.shapeUniformsScratch.u_transform=this.packShapeTransform(y,G,f,u,R,M),this.shapeUniformsScratch.u_opacity=l*e.opacity,this.requireBackendDraw(A,J,"shape draw"),Y&&U&&B&&!k&&this.clearClipStencil(A,B,Y,U,Q),S&&this.restoreSlotScissor(A)}clearSharedClipStencil(A,g,I,B){this.sharedClipStencilActive=!1,this.clearClipStencil(A,g,this.ensureClipMeshBuffers(A,g),I,B)}ensureShapeMeshBuffers(A,g){if(!g.vertexBuf||!g.indexBuf){g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;const I=A.createBuffer(g.gpuVertices,"vertex");try{const B=A.createBuffer(g.indices,"index");g.vertexBuf=I,g.indexBuf=B,this.shapeMeshesWithBuffers.add(g)}catch(B){throw A.deleteBuffer(I),B}}return{vertexBuf:g.vertexBuf,indexBuf:g.indexBuf}}packShapeTransform(A,g,I,B,Q,E){const i=this.shapeTransformMat;return i[0]=A,i[1]=g,i[4]=I,i[5]=B,i[12]=Q,i[13]=E,i}hasAtlasTexture(A){var g;const I=A.videoEntity;return I?!!I.atlasTextureHandle||!!((g=I.atlasTextureHandles)!=null&&g.length):!1}hasRenderableSVGA(A){if(this.hasAtlasTexture(A))return!0;const g=A.videoEntity;if(!(g!=null&&g.spriteTable))return!1;const I=this.entityHasShapesCache.get(g);if(I!==void 0)return I;const B=g.spriteTable.hasAnyShapes;return this.entityHasShapesCache.set(g,B),B}getWhiteTexture(A){return this.whiteTexture?this.whiteTexture:(this.whiteTexture=A.createTexture(new Uint8Array([255,255,255,255]).buffer,{width:1,height:1,filter:"nearest"}),this.whiteTexture)}getShapeMesh(A){var g;if(!A||A.length===0)return null;if(this.shapeMeshCache.has(A))return(g=this.shapeMeshCache.get(A))!=null?g:null;const I=[],B=[];for(const e of A)this.appendShape(e,I,B);if(I.length===0||B.length===0)return this.shapeMeshCache.set(A,null),null;const Q=new Float32Array(I),E=new Float32Array(I.length/iB*ug);for(let e=0,t=0;e<I.length;e+=iB,t+=ug)E[t]=I[e],E[t+1]=I[e+1],E[t+3]=I[e+2],E[t+4]=I[e+3],E[t+5]=I[e+4],E[t+6]=I[e+5],E[t+7]=.5,E[t+8]=.5;const i={vertices:Q,indices:new Uint32Array(B),gpuVertices:E};return this.shapeMeshCache.set(A,i),i}appendShape(A,g,I){const B=A.style.fill,Q=A.style.stroke,E=this.buildShapeSubPaths(A);for(const i of E){if(i.length<2)continue;const e=i.map(t=>({x:A.transform.a*t.x+A.transform.c*t.y+A.transform.tx,y:A.transform.b*t.x+A.transform.d*t.y+A.transform.ty}));B&&B.a>0&&e.length>=3&&this.appendFill(e,B,g,I),Q&&Q.a>0&&A.style.strokeWidth>.01&&this.appendStroke(e,Q,A.style.strokeWidth,g,I)}}buildShapeSubPaths(A){var g;if(A.kind==="path")return LB((g=A.pathData)!=null?g:"").map(I=>this.cleanupPoints(I)).filter(I=>I.length>=2);if(A.kind==="rect"&&A.rect){const I=A.rect;return[[{x:I.x,y:I.y},{x:I.x+I.width,y:I.y},{x:I.x+I.width,y:I.y+I.height},{x:I.x,y:I.y+I.height}]]}if(A.kind==="ellipse"&&A.ellipse){const I=A.ellipse,B=[],Q=40;for(let E=0;E<Q;E++){const i=E/Q*Math.PI*2;B.push({x:I.x+Math.cos(i)*I.radiusX,y:I.y+Math.sin(i)*I.radiusY})}return[B]}return[]}appendFill(A,g,I,B){const Q=this.cleanupPoints(A);if(Q.length<3)return;const E=I.length/iB;for(const e of Q)I.push(e.x,e.y,this.clamp01(g.r),this.clamp01(g.g),this.clamp01(g.b),this.clamp01(g.a));const i=Ke(Q);if(i.length>=(Q.length-2)*3)for(const e of i)B.push(E+e);else for(let e=1;e<Q.length-1;e++)B.push(E,E+e,E+e+1)}appendStroke(A,g,I,B,Q){A=this.cleanupPoints(A);const E=I*.5;for(let i=0;i<A.length;i++){const e=A[i],t=A[(i+1)%A.length],a=t.x-e.x,o=t.y-e.y,s=Math.hypot(a,o);if(s<=1e-4)continue;const n=-o/s*E,r=a/s*E,h=B.length/iB,c=this.clamp01(g.r),D=this.clamp01(g.g),w=this.clamp01(g.b),l=this.clamp01(g.a);B.push(e.x-n,e.y-r,c,D,w,l),B.push(e.x+n,e.y+r,c,D,w,l),B.push(t.x+n,t.y+r,c,D,w,l),B.push(t.x-n,t.y-r,c,D,w,l),Q.push(h,h+1,h+2,h+2,h+3,h)}}clamp01(A){return Math.max(0,Math.min(1,Number.isFinite(A)?A:0))}cleanupPoints(A){if(A.length===0)return[];const g=[],I=1e-4;let B=null;for(const Q of A){if(B){const E=Q.x-B.x,i=Q.y-B.y;if(E*E+i*i<=I)continue}g.push(Q),B=Q}if(g.length>2){const Q=g[0],E=g[g.length-1],i=Q.x-E.x,e=Q.y-E.y;i*i+e*e<=I&&g.pop()}return g}getClipGeometryKind(A){const g=this.clipGeometryKindCache.get(A);if(g)return g;const I=QE(A);return this.clipGeometryKindCache.set(A,I),I}getClipMeshForSprite(A,g,I){var B;const Q=A.spriteTable,E=(B=Q.clipPathIndex[g*Q.frameCount+I])!=null?B:-1;if(E<0)return null;let i=this.entityClipMeshArrayCache.get(A);(!i||i.length!==Q.clipPaths.length)&&(i=new Array(Q.clipPaths.length),this.entityClipMeshArrayCache.set(A,i));const e=i[E];if(e!==void 0)return e;const t=Q.clipPaths[E];if(this.getClipGeometryKind(t)==="empty")return this.clipMeshStates.has(t)||this.publishClipMeshState(t,{status:"empty",generation:++this.clipMeshGeneration,attempts:0}),i[E]=null,null;const a=this.clipMeshStates.get(t);if(!a){this.queueClipMeshBuild(t);return}if(a.status!=="building")return a.status==="invalid"?this.handleInvalidClipMesh(A,t,a):a.status==="empty"?(i[E]=null,null):(i[E]=a.mesh,a.mesh)}ensureVertexBuffer(A,g,I){const B=this.vertexBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"vertex");return this.vertexBufHandles[g]=Q,Q}}ensureIndexBuffer(A,g,I){const B=this.indexBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"index");return this.indexBufHandles[g]=Q,Q}}ensureClipSpriteVertexBuffer(A,g,I){const B=this.clipSpriteVertBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"vertex");return this.clipSpriteVertBufHandles[g]=Q,Q}}ensureClipSpriteIndexBuffer(A,g,I){const B=this.clipSpriteIdxBufHandles[g];if(B)return A.updateBuffer(B,I),B;{const Q=A.createBuffer(I,"index");return this.clipSpriteIdxBufHandles[g]=Q,Q}}ensureInstancedQuadBuffers(A){this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(hC.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(hC.INSTANCED_QUAD_INDICES,"index"))}destroy(A){if(!this.destroyed){this.destroyed=!0,this.clipMeshDestroyed=!0,this.clipMeshBuildInFlight=!1,this.stencilTransactionState="idle",this.slotScissorActive=!1,this.clipMeshProducerController.abort();for(const g of this.vertexBufHandles)A.deleteBuffer(g);for(const g of this.indexBufHandles)A.deleteBuffer(g);for(const g of this.clipSpriteVertBufHandles)A.deleteBuffer(g);for(const g of this.clipSpriteIdxBufHandles)A.deleteBuffer(g);for(const g of this.clipMeshesWithBuffers)g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;this.clipMeshesWithBuffers.clear();for(const g of this.shapeMeshesWithBuffers)g.vertexBuf&&A.deleteBuffer(g.vertexBuf),g.indexBuf&&A.deleteBuffer(g.indexBuf),g.vertexBuf=null,g.indexBuf=null;this.shapeMeshesWithBuffers.clear(),this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.whiteTexture&&A.deleteTexture(this.whiteTexture),this.pool.destroy();for(const g of this.clipMeshStateWaiters.values())for(const I of g)I.signal&&I.onAbort&&I.signal.removeEventListener("abort",I.onAbort),I.reject(cA("SVGA renderer destroyed during clip prewarm"));this.clipMeshStateWaiters.clear(),this.clipMeshProducerTasks.clear(),this.clipMeshCache.clear(),this.clipMeshStates.clear(),this.pendingClipMeshPaths.clear(),this.vertexBufHandles=[],this.indexBufHandles=[],this.clipSpriteVertBufHandles=[],this.clipSpriteIdxBufHandles=[],this.instancedQuadVB=null,this.instancedQuadIB=null,this.whiteTexture=null,this.projCache=null}}};K(pC,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));K(pC,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let sE=pC;const CQ=1e-4;function tB(C,A,g,I){const B=Math.max(Math.abs(C),Math.abs(I));return C>0&&I>0&&Math.abs(A)<=B*CQ&&Math.abs(g)<=B*CQ}function St(C,A){if(C.length!==8||A.length!==6)return null;let g=1/0,I=1/0,B=-1/0,Q=-1/0;for(let a=0;a<8;a+=2){const o=C[a],s=C[a+1];o<g&&(g=o),o>B&&(B=o),s<I&&(I=s),s>Q&&(Q=s)}const E=B-g,i=Q-I;if(!(E>0&&i>0))return null;const e=Math.max(E,i)*1e-4+1e-6;let t=0;for(let a=0;a<8;a+=2){const o=C[a],s=C[a+1],n=Math.abs(o-g)<=e,r=Math.abs(o-B)<=e,h=Math.abs(s-I)<=e,c=Math.abs(s-Q)<=e;if(!n&&!r||!h&&!c)return null;t|=1<<((n?0:1)|(h?0:2))}return t!==15?null:{x:g,y:I,w:E,h:i}}var ft=Object.defineProperty,Mt=(C,A,g)=>A in C?ft(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,lg=(C,A,g)=>Mt(C,typeof A!="symbol"?A+"":A,g);const Nt=4,Ut=128*1024*1024,kt=2048*1024*1024,Yt="gift-stage-resource-cache",pt=3,Rg="resources",og="resourceMeta",xg="cacheState",Pg="totalBytes",QQ="byUpdatedAt",Kt=3e4;class mt{constructor(A){lg(this,"maxConcurrent"),lg(this,"active",0),lg(this,"queue",[]),this.maxConcurrent=Math.max(1,A)}setMaxConcurrent(A){this.maxConcurrent=Math.max(1,A),this.drain()}async run(A){return new Promise((g,I)=>{this.queue.push(()=>{Promise.resolve().then(A).then(g,I).finally(()=>{this.active--,this.drain()})}),this.drain()})}drain(){for(;this.active<this.maxConcurrent&&this.queue.length>0;){const A=this.queue.shift();this.active++,A==null||A()}}}function Jt(){return typeof indexedDB!="undefined"}function kg(C){return C.length*2}function Lt(C){var A,g,I;let B=256;const Q=C.imageBlob;if(Q)B+=Q.byteLength;else for(const i of Object.values((A=C.images)!=null?A:{}))B+=i.byteLength;for(const i of(g=C.imageEntries)!=null?g:[])B+=kg(i.key)+16;for(const i of C.audios)B+=kg(i.audioKey)+32;const E=C.spriteTable;(!Q||E.frameData.buffer!==Q)&&(B+=E.frameData.byteLength),(!Q||E.clipPathIndex.buffer!==Q)&&(B+=E.clipPathIndex.byteLength),(!Q||E.shapesIndex.buffer!==Q)&&(B+=E.shapesIndex.byteLength);for(const i of E.imageKeys)B+=kg(i);for(const i of E.clipPaths)B+=kg(i);for(const i of E.shapesTable)for(const e of i)B+=kg((I=e.pathData)!=null?I:"")+96;return B}function Ht(C){return typeof C=="string"?kg(C):C.byteLength}class xt{constructor(){lg(this,"limiter",new mt(Nt)),lg(this,"pending",new Map),lg(this,"memory",new Map),lg(this,"memoryBytes",0),lg(this,"maxMemoryBytes",Ut),lg(this,"maxPersistentBytes",kt),lg(this,"dbPromise",null),lg(this,"persistentTrimPromise",null)}configure(A){(A==null?void 0:A.maxConcurrent)!=null&&this.limiter.setMaxConcurrent(A.maxConcurrent),(A==null?void 0:A.maxMemoryBytes)!=null&&A.maxMemoryBytes>0&&(this.maxMemoryBytes=A.maxMemoryBytes,this.trimMemory()),(A==null?void 0:A.maxPersistentBytes)!=null&&A.maxPersistentBytes>0&&(this.maxPersistentBytes=A.maxPersistentBytes,this.schedulePersistentTrim())}runLimited(A){return this.limiter.run(A)}async fetchArrayBuffer(A,g){const I=`ab:${A}`,B=this.getMemory(I,"arrayBuffer");if(B)return B.slice(0);const Q=await this.getPersistent(I,"arrayBuffer");return Q?(this.setMemory(I,"arrayBuffer",Q,Q.byteLength),Q.slice(0)):(await this.getOrCreatePending(I,()=>this.limiter.run(async()=>{const i=await fetch(A,{mode:"cors",signal:g});if(!i.ok)throw new Error(`fetch failed ${i.status}`);const e=await i.arrayBuffer();return this.setMemory(I,"arrayBuffer",e,e.byteLength),this.setPersistent(I,"arrayBuffer",e.slice(0)),e}))).slice(0)}async fetchText(A,g){const I=`text:${A}`,B=this.getMemory(I,"text");if(B!=null)return B;const Q=await this.getPersistent(I,"text");return Q!=null?(this.setMemory(I,"text",Q,kg(Q)),Q):this.getOrCreatePending(I,()=>this.limiter.run(async()=>{const E=await fetch(A,{mode:"cors",signal:g});if(!E.ok)throw new Error(`fetch failed ${E.status}`);const i=await E.text();return this.setMemory(I,"text",i,kg(i)),this.setPersistent(I,"text",i),i}))}async fetchJSON(A,g){const I=`json:${A}`,B=this.getMemory(I,"json");if(B!=null)return B;const Q=await this.fetchText(A,g),E=JSON.parse(Q);return this.setMemory(I,"json",E,kg(Q)),E}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,g){this.setMemory(A,"svga-payload",g,Lt(g))}getMemoryValue(A,g){return this.getMemory(A,g)}setMemoryValue(A,g,I,B){this.setMemory(A,g,I,B)}getPersistedArrayBuffer(A){return this.getPersistent(A,"arrayBuffer")}setPersistedArrayBuffer(A,g){return this.setPersistent(A,"arrayBuffer",g)}deletePersistedValue(A){return this.deletePersistent(A)}getOrCreatePending(A,g){const I=this.pending.get(A);if(I)return I;const B=g().finally(()=>{this.pending.delete(A)});return this.pending.set(A,B),B}getMemory(A,g){const I=this.memory.get(A);return!I||I.kind!==g?null:(this.memory.delete(A),this.memory.set(A,I),I.value)}setMemory(A,g,I,B){const Q=this.memory.get(A);Q&&(this.memoryBytes-=Q.size,this.memory.delete(A)),this.memory.set(A,{key:A,kind:g,size:Math.max(0,B),value:I}),this.memoryBytes+=Math.max(0,B),this.trimMemory()}trimMemory(){for(;this.memoryBytes>this.maxMemoryBytes&&this.memory.size>0;){const A=this.memory.keys().next().value;if(!A)break;const g=this.memory.get(A);if(!g)break;this.memoryBytes-=g.size,this.memory.delete(A)}}async openDb(){return Jt()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const g=indexedDB.open(Yt,pt);g.onupgradeneeded=()=>{const I=g.result;for(const E of[Rg,og,xg])I.objectStoreNames.contains(E)&&I.deleteObjectStore(E);I.createObjectStore(Rg,{keyPath:"key"}),I.createObjectStore(og,{keyPath:"key"}).createIndex(QQ,"updatedAt",{unique:!1}),I.createObjectStore(xg,{keyPath:"key"}).put({key:Pg,totalBytes:0})},g.onsuccess=()=>A(g.result),g.onerror=()=>A(null),g.onblocked=()=>A(null)}catch(g){A(null)}})),this.dbPromise):null}async getPersistent(A,g){const I=await this.openDb();return I?new Promise(B=>{try{const Q=I.transaction([Rg,og],"readonly");Q.onerror=()=>B(null),Q.onabort=()=>B(null);const i=Q.objectStore(Rg).get(A);i.onsuccess=()=>{const e=i.result;if(!e||e.kind!==g){B(null);return}const t=Q.objectStore(og).get(A);t.onsuccess=()=>{const a=t.result;if((!a||Date.now()-a.updatedAt>=Kt)&&this.touchPersistent(A,g),g==="arrayBuffer"){B(e.value);return}B(e.value)},t.onerror=()=>B(e.value)},i.onerror=()=>B(null)}catch(Q){B(null)}}):null}async setPersistent(A,g,I){const B=await this.openDb();if(!B)return;const Q=Ht(I);await new Promise(E=>{try{const i=B.transaction([Rg,og,xg],"readwrite");i.oncomplete=()=>E(),i.onerror=()=>E(),i.onabort=()=>E();const e=i.objectStore(Rg),t=i.objectStore(og),a=i.objectStore(xg),o=t.get(A);o.onsuccess=()=>{const s=o.result,n=a.get(Pg);n.onsuccess=()=>{var r,h;const c=n.result,D=Math.max(0,((r=c==null?void 0:c.totalBytes)!=null?r:0)-((h=s==null?void 0:s.sizeBytes)!=null?h:0)+Q);e.put({key:A,kind:g,value:I}),t.put({key:A,kind:g,sizeBytes:Q,updatedAt:Date.now()}),a.put({key:Pg,totalBytes:D})}}}catch(i){E()}}),this.schedulePersistentTrim()}async touchPersistent(A,g){const I=await this.openDb();I&&await new Promise(B=>{try{const Q=I.transaction(og,"readwrite");Q.oncomplete=()=>B(),Q.onerror=()=>B(),Q.onabort=()=>B();const E=Q.objectStore(og),i=E.get(A);i.onsuccess=()=>{const e=i.result;!e||e.kind!==g||E.put({...e,updatedAt:Date.now()})}}catch(Q){B()}})}schedulePersistentTrim(){this.persistentTrimPromise||(this.persistentTrimPromise=this.trimPersistent().finally(()=>{this.persistentTrimPromise=null}))}async trimPersistent(){const A=await this.openDb();A&&await new Promise(g=>{try{const I=A.transaction([Rg,og,xg],"readwrite");I.oncomplete=()=>g(),I.onerror=()=>g(),I.onabort=()=>g();const B=I.objectStore(Rg),Q=I.objectStore(og),E=I.objectStore(xg),i=E.get(Pg);i.onsuccess=()=>{var e;const t=i.result;let a=Math.max(0,(e=t==null?void 0:t.totalBytes)!=null?e:0);if(a<=this.maxPersistentBytes)return;const o=Q.index(QQ).openCursor();o.onsuccess=()=>{const s=o.result;if(!s||a<=this.maxPersistentBytes){E.put({key:Pg,totalBytes:a});return}const n=s.value;B.delete(n.key),s.delete(),a=Math.max(0,a-n.sizeBytes),s.continue()}}}catch(I){g()}})}async deletePersistent(A){const g=await this.openDb();g&&await new Promise(I=>{try{const B=g.transaction([Rg,og,xg],"readwrite");B.oncomplete=()=>I(),B.onerror=()=>I(),B.onabort=()=>I();const Q=B.objectStore(Rg),E=B.objectStore(og),i=B.objectStore(xg),e=E.get(A);e.onsuccess=()=>{const t=e.result,a=i.get(Pg);a.onsuccess=()=>{var o,s;const n=a.result;Q.delete(A),E.delete(A),i.put({key:Pg,totalBytes:Math.max(0,((o=n==null?void 0:n.totalBytes)!=null?o:0)-((s=t==null?void 0:t.sizeBytes)!=null?s:0))})}}}catch(B){I()}})}}const yg=new xt;function bt(C){yg.configure(C)}function cC(C){return yg.runLimited(C)}function BI(C,A){return yg.fetchArrayBuffer(C,A)}function qt(C,A){return yg.fetchJSON(C,A)}function KC(C){return yg.getSVGAWorkerPayload(C)}function EQ(C,A){yg.setSVGAWorkerPayload(C,A)}function vt(C,A){return yg.getMemoryValue(C,A)}function nE(C,A,g,I){yg.setMemoryValue(C,A,g,I)}function Tt(C){return yg.getPersistedArrayBuffer(C)}function Wt(C,A){return yg.setPersistedArrayBuffer(C,A)}function Vt(C){return yg.deletePersistedValue(C)}async function DC(C){const A=typeof C=="string"?await qt(C):C;if(!A.info)throw new Error("VAP config missing info");if(!A.info.rgbFrame||!A.info.aFrame)throw new Error("VAP config missing rgbFrame or aFrame");return A}function AI(C,A={w:0,h:0}){const[,,g,I]=C.rgbFrame,B=C.w>0?C.w:g,Q=C.h>0?C.h:I;return A.w=B>0&&Q>0?B:C.videoW,A.h=B>0&&Q>0?Q:C.videoH,A}function RI(C,A,g,I={left:0,right:0,top:0,bottom:0}){const[B,Q,E,i]=C;return I.left=B/A,I.right=(B+E)/A,I.top=(g-Q)/g,I.bottom=(g-Q-i)/g,I}var Zt=Object.defineProperty,Xt=(C,A,g)=>A in C?Zt(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,VA=(C,A,g)=>Xt(C,typeof A!="symbol"?A+"":A,g);class rE{constructor(A){VA(this,"onFrameAvailable"),VA(this,"frameInfo",new Map),VA(this,"pending",new Set),VA(this,"lastHandle",new Map),VA(this,"started",new Set),VA(this,"firstUploaded",new Set),VA(this,"forceTimeFallback",new Set),VA(this,"lastArmAt",new Map),VA(this,"lastCallbackAt",new Map),VA(this,"lastProgressAt",new Map),VA(this,"lastRecoveryAt",new Map),VA(this,"stallLogged",new Set),VA(this,"stagnationLogged",new Set),VA(this,"lastTimeFallback",new Map),VA(this,"healthTimers",new Map),this.onFrameAvailable=A}preUpload(A,g){const I=g.currentTime;if(typeof g.requestVideoFrameCallback!="function"||this.forceTimeFallback.has(A)){if(!this.firstUploaded.has(A))return this.firstUploaded.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),typeof g.requestVideoFrameCallback=="function"&&this.debugInfo(A,"initial upload using time fallback",g),!0;const a=this.consumeTimeAdvance(A,I);if(a)this.stagnationLogged.has(A)&&(this.stagnationLogged.delete(A),this.debugInfo(A,"time fallback progress resumed",g));else if(this.forceTimeFallback.has(A)&&!this.stagnationLogged.has(A)&&!g.paused&&!g.ended){const o=this.lastProgressAt.get(A);o!==void 0&&performance.now()-o>1e3&&(this.stagnationLogged.add(A),this.debugWarn(A,"time fallback has no progress",g,{lastProgressAgeMs:Math.round(performance.now()-o)}))}return a}this.ensureRvf(A,g);const B=performance.now(),Q=this.lastCallbackAt.get(A),E=this.lastArmAt.get(A),i=Q!=null?Q:E,e=this.lastTimeFallback.get(A),t=e!==void 0&&Math.abs(I-e)>1e-4;return this.firstUploaded.has(A)&&i!==void 0&&B-i>500&&!g.paused&&!g.ended&&(this.stallLogged.has(A)||(this.stallLogged.add(A),this.debugWarn(A,"rVFC stalled for slot",g,{stallAgeMs:Math.round(B-i),lastCallbackAgeMs:Q!==void 0?Math.round(B-Q):null,lastArmAgeMs:E!==void 0?Math.round(B-E):null,timeAdvanced:t})),this.tryRecoverStalledPlayback(A,g,I,B),this.started.delete(A),this.ensureRvf(A,g),t)?(this.forceTimeFallback.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),this.debugWarn(A,"switching slot to time fallback",g,{stallAgeMs:Math.round(B-i)}),!0):this.firstUploaded.has(A)?this.pending.has(A)?(this.pending.delete(A),this.lastTimeFallback.set(A,I),this.markProgress(A),(this.stallLogged.delete(A)||this.forceTimeFallback.delete(A))&&(this.stagnationLogged.delete(A),this.debugInfo(A,"rVFC progress resumed",g)),!0):!1:(this.firstUploaded.add(A),this.lastTimeFallback.set(A,I),this.markProgress(A),!0)}getFrameInfo(A){return this.frameInfo.get(A)}ensureRvf(A,g){if(this.started.has(A))return;this.started.add(A),this.ensureHealthTimer(A,g);const I=(B,Q)=>{var E;this.frameInfo.set(A,Q),this.lastCallbackAt.set(A,performance.now()),this.pending.add(A),(E=this.onFrameAvailable)==null||E.call(this,g);try{this.lastArmAt.set(A,performance.now());const i=g.requestVideoFrameCallback(I);this.lastHandle.set(A,i)}catch(i){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback re-arm failed",g)}};try{this.lastArmAt.set(A,performance.now());const B=g.requestVideoFrameCallback(I);this.lastHandle.set(A,B)}catch(B){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback initial arm failed",g)}}ensureHealthTimer(A,g){if(this.healthTimers.has(A))return;const I=setInterval(()=>{var B;g.paused||g.ended||(B=this.onFrameAvailable)==null||B.call(this,g)},500);this.healthTimers.set(A,I)}consumeTimeAdvance(A,g){const I=this.lastTimeFallback.get(A);return I===void 0||Math.abs(g-I)>1e-4?(this.lastTimeFallback.set(A,g),this.markProgress(A),!0):!1}markProgress(A){this.lastProgressAt.set(A,performance.now())}tryRecoverStalledPlayback(A,g,I,B){if(g.paused||g.ended||g.seeking)return;const Q=this.lastRecoveryAt.get(A);if(Q!==void 0&&B-Q<1500)return;this.lastRecoveryAt.set(A,B);const E=Number.isFinite(g.duration)?g.duration:NaN,i=Number.isFinite(E)&&E>0,e=i?Math.min(Math.max(0,E-.001),I+.001):I;try{i&&e>I&&(g.currentTime=e)}catch(t){}try{const t=g.play();t&&typeof t.catch=="function"&&t.catch(()=>{})}catch(t){}this.debugWarn(A,"attempting stalled video recovery",g,{currentTime:I,nudgedTime:e,readyState:g.readyState})}debugInfo(A,g,I,B){console.info("[GiftStage:VideoGate]",g,this.snapshot(A,I,B))}debugWarn(A,g,I,B){console.warn("[GiftStage:VideoGate]",g,this.snapshot(A,I,B))}snapshot(A,g,I){return{slotId:A,currentTime:Number(g.currentTime.toFixed(3)),readyState:g.readyState,networkState:g.networkState,paused:g.paused,ended:g.ended,seeking:g.seeking,playbackRate:g.playbackRate,forceTimeFallback:this.forceTimeFallback.has(A),pending:this.pending.has(A),...I}}release(A,g){if(!g){this.cleanup(A);return}const I=this.lastHandle.get(A);if(I!=null)try{g.cancelVideoFrameCallback(I)}catch(B){}this.cleanup(A)}cleanup(A){const g=this.healthTimers.get(A);g!=null&&clearInterval(g),this.healthTimers.delete(A),this.frameInfo.delete(A),this.lastHandle.delete(A),this.started.delete(A),this.pending.delete(A),this.firstUploaded.delete(A),this.forceTimeFallback.delete(A),this.lastArmAt.delete(A),this.lastCallbackAt.delete(A),this.lastProgressAt.delete(A),this.lastRecoveryAt.delete(A),this.stallLogged.delete(A),this.stagnationLogged.delete(A),this.lastTimeFallback.delete(A)}}const hE=new Float32Array([0,0,1,1]);function fB(C,A,g,I){const B=I!=null?I:new Float32Array(4);return!g||C<=0||A<=0?(B[0]=0,B[1]=0,B[2]=1,B[3]=1,B):(B[0]=g.x/C,B[1]=g.y/A,B[2]=g.w/C,B[3]=g.h/A,B)}const Ot=3;function Pt(){return typeof document!="undefined"&&typeof document.createElement=="function"}function wI(C,A){if(!Pt())throw new Error("Canvas rendering is unavailable in this environment");const g=document.createElement("canvas");return g.width=Math.max(1,Math.round(C)),g.height=Math.max(1,Math.round(A)),g}function FI(C,A){const g=C.getContext("2d",A);if(!g)throw new Error("Failed to acquire 2D canvas context");return g}let jB=null;function jt(){return jB||(jB=FI(wI(1,1))),jB}function cE(C){return!!C&&typeof C=="object"&&typeof C.text=="string"}function zt(C){return!!C&&typeof C=="object"&&"image"in C}function DE(C){return!!C&&typeof C=="object"&&"image"in C}function iQ(C){return!C||typeof C!="object"?!1:typeof HTMLCanvasElement!="undefined"&&C instanceof HTMLCanvasElement||typeof HTMLImageElement!="undefined"&&C instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&C instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas||typeof HTMLVideoElement!="undefined"&&C instanceof HTMLVideoElement||typeof VideoFrame!="undefined"&&C instanceof VideoFrame||typeof ImageData!="undefined"&&C instanceof ImageData}function MB(C){return new Promise((A,g)=>{const I=new Image;I.crossOrigin="anonymous",I.onload=()=>A(I),I.onerror=()=>g(new Error(`Failed to load image: ${C}`)),I.src=C})}function yI(C){if(typeof HTMLImageElement!="undefined"&&C instanceof HTMLImageElement)return{width:C.naturalWidth||C.width,height:C.naturalHeight||C.height};if(typeof HTMLCanvasElement!="undefined"&&C instanceof HTMLCanvasElement)return{width:C.width,height:C.height};if(typeof OffscreenCanvas!="undefined"&&C instanceof OffscreenCanvas)return{width:C.width,height:C.height};if(typeof ImageBitmap!="undefined"&&C instanceof ImageBitmap)return{width:C.width,height:C.height};if(C&&typeof C=="object"&&"videoWidth"in C&&typeof C.videoWidth=="number")return{width:C.videoWidth,height:C.videoHeight};if(C&&typeof C=="object"&&"displayWidth"in C&&typeof C.displayWidth=="number")return{width:C.displayWidth||C.codedWidth,height:C.displayHeight||C.codedHeight};const A=C;return typeof A.width=="number"&&typeof A.height=="number"?{width:A.width,height:A.height}:{width:0,height:0}}function lC(C){if(typeof ImageData!="undefined"&&C instanceof ImageData){const A=wI(C.width,C.height);return FI(A).putImageData(C,0,0),A}return C}function _t(C){const A=/^\[(.+)\]$/.exec(C);return A?A[1]:C}function $t(C,A,g){var I,B;return C?typeof C=="string"?{font:C,color:g}:{font:(I=C.font)!=null?I:A,color:(B=C.color)!=null?B:g}:{font:A,color:g}}function GI(C){return typeof C=="number"&&Number.isFinite(C)&&C>0}function Aa(C,A){const g=Math.max(1,Math.round(A*100)/100);return/\d+(?:\.\d+)?px\b/.test(C)?C.replace(/\d+(?:\.\d+)?px\b/,`${g}px`):`${g}px ${C}`}function ga(C){const A=typeof C=="string"?C:C==null?void 0:C.font,g=A?/(\d+(?:\.\d+)?)px\b/.exec(A):null;if(!g)return;const I=Number(g[1]);return GI(I)?I:void 0}function eQ(C,A,g,I){const B=C.measureText(A),Q=B.width/g,E=(B.actualBoundingBoxAscent||0)+(B.actualBoundingBoxDescent||0),i=E>0?E/g:I;return{width:Math.max(1,Q),height:Math.max(1,i)}}function Ia(C,A,g,I,B,Q,E,i){let e=Math.max(1,Math.min(E,i)),t=Math.max(e,i),a=e,o={width:1,height:1};for(let s=0;s<16;s++){const n=(e+t)*.5;C.font=I(n);const r=eQ(C,A,g,n);r.width<=B&&r.height<=Q?(a=n,o=r,e=n):t=n}return C.font=I(a),o=eQ(C,A,g,a),{fontSize:a,metrics:o}}function lE(C,A,g,I){var B,Q,E,i,e,t;const a=Math.max(1,I.scale||1),o=Math.max(1,Math.round(C)),s=Math.max(1,Math.round(A)),n=jt(),r=(B=I.color)!=null?B:"#ffffff",h=Math.max(0,(Q=I.padding)!=null?Q:2),c=Math.max(1,o-h*2),D=Math.max(1,s-h*2),w=Math.max(1,(e=(i=(E=I.maxFontSize)!=null?E:I.fontSize)!=null?i:ga(I.fontStyle))!=null?e:Math.max(8,D)),l=Math.max(1,Math.min((t=I.minFontSize)!=null?t:8,w)),F=r,d=`${I.style==="b"?"bold ":""}${w*a}px Arial`,y=$t(I.fontStyle,d,F),G=S=>Aa(y.font,S*a),f=Ia(n,g,a,G,c,D,l,GI(I.fontSize)?Math.min(I.fontSize,w):w),u=I.sizing==="intrinsic"?Math.max(1,Math.min(o,Math.ceil(f.metrics.width+h*2))):o,R=I.sizing==="intrinsic"?Math.max(1,Math.min(s,Math.ceil(f.metrics.height+h*2))):s,M=wI(u*a,R*a),N=FI(M);return N.clearRect(0,0,M.width,M.height),N.textAlign="center",N.textBaseline="middle",N.font=G(f.fontSize),N.fillStyle=y.color,N.fillText(g,M.width/2,M.height/2),{canvas:M,logicalWidth:u,logicalHeight:R}}async function Ba(C,A,g,I){var B,Q,E,i,e,t;const a=C.spriteTable,o=new Set(A),s=new Map;for(let h=0;h<a.imageKeys.length;h++){const c=a.imageKeys[h];o.has(c)&&s.set(c,h)}const n=new Map,{frameCount:r}=a;for(const h of A){const c=s.get(h);if(c==null){const y=C.atlasRects.get(h);n.set(h,{width:(y==null?void 0:y.w)||1,height:(y==null?void 0:y.h)||1,renderScale:1});continue}let D=0,w=0,l=Number.POSITIVE_INFINITY;for(let y=0;y<r;y++){const G=(c*r+y)*9,f=(B=a.frameData[G])!=null?B:0,u=(Q=a.frameData[G+1])!=null?Q:0,R=(E=a.frameData[G+2])!=null?E:1,M=(i=a.frameData[G+3])!=null?i:0,N=(e=a.frameData[G+4])!=null?e:0,S=(t=a.frameData[G+5])!=null?t:1;if(D=Math.max(D,f),w=Math.max(w,u),f>0&&u>0){const Y=Math.abs(R)*f+Math.abs(N)*u,U=Math.abs(M)*f+Math.abs(S)*u,k=Y>0?Y/f:1,m=U>0?U/u:1,J=Math.min(k||1,m||1);GI(J)&&(l=Math.min(l,J))}y+1<r&&g.shouldYield()&&(await g.yield(),I==null||I())}const F=GI(l)?l:1,d=C.atlasRects.get(h);n.set(h,{width:D||(d==null?void 0:d.w)||1,height:w||(d==null?void 0:d.h)||1,renderScale:F})}return n}function zB(C,A){if(GI(C))return!GI(A)||A===1?C:C/A}async function Ca(C,A,g,I=1){var B,Q,E;if(cE(C)){const e=(B=C.mode)!=null?B:"dynamic",t=lE(A,g,C.text,{scale:(Q=C.scale)!=null?Q:Ot,color:C.color,style:C.style,fontStyle:C.fontStyle,fontSize:zB(C.fontSize,I),minFontSize:zB(C.minFontSize,I),maxFontSize:zB(C.maxFontSize,I),padding:C.padding,sizing:e==="dynamic"?"intrinsic":"box"});return{source:t.canvas,mode:e,logicalWidth:t.logicalWidth,logicalHeight:t.logicalHeight}}if(zt(C)){const e=typeof C.image=="string"?await MB(C.image):C.image,t=yI(e);return{source:e,mode:(E=C.mode)!=null?E:"replace",logicalWidth:Math.max(1,t.width||A),logicalHeight:Math.max(1,t.height||g)}}if(typeof C=="string"){const e=await MB(C),t=yI(e);return{source:e,mode:"replace",logicalWidth:Math.max(1,t.width||A),logicalHeight:Math.max(1,t.height||g)}}const i=yI(C);return{source:C,mode:"replace",logicalWidth:Math.max(1,i.width||A),logicalHeight:Math.max(1,i.height||g)}}async function Qa(C,A,g,I={}){var B,Q,E;const i=new Map;if(!g)return i;const e=Object.entries(g),t=gg({maxBudgetMs:I.frameBudgetMs}),a=await Ba(A,e.map(([o])=>o),t,I.checkActive);for(let o=0;o<e.length;o++){const[s,n]=e[o];(B=I.checkActive)==null||B.call(I);const r=(Q=a.get(s))!=null?Q:{width:1,height:1,renderScale:1},h=await Ca(n,r.width,r.height,r.renderScale),c=yI(h.source),D=c.width||r.width,w=c.height||r.height,l=C.createTexture(h.source,{width:D,height:w,filter:"linear",premultiplyAlpha:!0});i.set(s,{texture:l,mode:h.mode,logicalWidth:h.logicalWidth,logicalHeight:h.logicalHeight}),o+1<e.length&&t.shouldYield()&&(await t.yield(),(E=I.checkActive)==null||E.call(I))}return i}function Ea(C,A){var g,I;if(!A)return;const B=String(C.srcId),Q=C.srcTag,E=_t(C.srcTag);return(I=(g=A[Q])!=null?g:A[E])!=null?I:A[B]}function ia(C,A,g){var I,B,Q,E,i,e;const t=typeof A=="string"?A:A.text,a=(I=g==null?void 0:g.width)!=null?I:C.w&&C.w>0?C.w:1,o=(B=g==null?void 0:g.height)!=null?B:C.h&&C.h>0?C.h:1,s=lE(a,o,t,{scale:typeof A=="string"?1:(Q=A.scale)!=null?Q:1,color:typeof A=="string"?C.color:(E=A.color)!=null?E:C.color,style:typeof A=="string"?C.style:(i=A.style)!=null?i:C.style,fontStyle:typeof A=="string"?C.fontStyle:(e=A.fontStyle)!=null?e:C.fontStyle,fontSize:typeof A=="string"?void 0:A.fontSize,minFontSize:typeof A=="string"?void 0:A.minFontSize,maxFontSize:typeof A=="string"?void 0:A.maxFontSize,padding:typeof A=="string"?void 0:A.padding,sizing:"box"});return{source:s.canvas,width:s.canvas.width,height:s.canvas.height}}function ea(C,A){var g;const I=String(A);let B=0,Q=0;for(const E of(g=C.frame)!=null?g:[])for(const i of E.obj){if(String(i.srcId)!==I)continue;const[,,e,t]=i.frame;B=Math.max(B,e),Q=Math.max(Q,t)}return B>0&&Q>0?{width:B,height:Q}:void 0}async function ta(C){return typeof C=="string"?MB(C):DE(C)?typeof C.image=="string"?MB(C.image):lC(C.image):lC(C)}async function aa(C,A){const g=new Map;if(!C.src||C.src.length===0||!A)return g;for(const I of C.src){const B=Ea(I,A);if(B==null)continue;if(I.srcType==="txt"){if(iQ(B)){const t=lC(B),a=yI(t);g.set(String(I.srcId),{source:t,width:Math.max(1,a.width),height:Math.max(1,a.height)});continue}const e=ia(I,typeof B=="string"||cE(B)?B:String(B),ea(C,I.srcId));g.set(String(I.srcId),e);continue}const Q=iQ(B)||typeof B=="string"||DE(B)?B:null;if(!Q)continue;const E=await ta(Q),i=yI(E);g.set(String(I.srcId),{source:E,width:Math.max(1,i.width),height:Math.max(1,i.height)})}return g}function oa(C){var A;const g=new Map;for(const I of(A=C.frame)!=null?A:[]){const B=[...I.obj].sort((Q,E)=>{var i,e;return((i=Q.z)!=null?i:0)-((e=E.z)!=null?e:0)});for(const Q of B)Q.srcKey===void 0&&(Q.srcKey=String(Q.srcId));g.set(I.i,B)}return g}function sa(C,A){const g=wI(C,A),I=wI(C,A),B=wI(1,1);return{compositeCanvas:g,compositeCtx:FI(g),rawCanvas:I,rawCtx:FI(I),scratchCanvas:B,scratchCtx:FI(B)}}function tQ(C,A,g,I,B=!0){var Q,E;if(!C.compositeCanvas||!C.compositeCtx||!C.rawCanvas||!C.rawCtx||!C.scratchCanvas||!C.scratchCtx)throw new Error("VAP CPU compositor state is incomplete");const{info:i}=A,e=i.videoW||C.width,t=i.videoH||C.height,[a,o,s,n]=i.rgbFrame,[r,h,c,D]=i.aFrame;(C.rawCanvas.width!==e||C.rawCanvas.height!==t)&&(C.rawCanvas.width=e,C.rawCanvas.height=t),C.rawCtx.clearRect(0,0,e,t),C.rawCtx.drawImage(g,0,0,e,t);const w=C.rawCtx.getImageData(0,0,e,t).data,l=C.compositeCtx.createImageData(C.width,C.height),F=l.data;for(let y=0;y<C.height;y++){const G=Math.min(t-1,Math.max(0,o+Math.floor(y/C.height*n))),f=Math.min(t-1,Math.max(0,h+Math.floor(y/C.height*D)));for(let u=0;u<C.width;u++){const R=Math.min(e-1,Math.max(0,a+Math.floor(u/C.width*s))),M=Math.min(e-1,Math.max(0,r+Math.floor(u/C.width*c))),N=(G*e+R)*4,S=(f*e+M)*4,Y=w[S]/255,U=(y*C.width+u)*4,k=B?1:Y;F[U]=Math.round(w[N]*k),F[U+1]=Math.round(w[N+1]*k),F[U+2]=Math.round(w[N+2]*k),F[U+3]=Math.round(Y*255)}}const d=(Q=C.frameMap.get(I))!=null?Q:[];for(const y of d){const G=(E=C.resources)==null?void 0:E.get(String(y.srcId));if(!G)continue;const[f,u,R,M]=y.frame,[N,S,Y,U]=y.mFrame;if(R<=0||M<=0||Y<=0||U<=0)continue;(C.scratchCanvas.width!==R||C.scratchCanvas.height!==M)&&(C.scratchCanvas.width=Math.max(1,Math.round(R)),C.scratchCanvas.height=Math.max(1,Math.round(M))),C.scratchCtx.clearRect(0,0,C.scratchCanvas.width,C.scratchCanvas.height),C.scratchCtx.drawImage(G.source,0,0,C.scratchCanvas.width,C.scratchCanvas.height);const k=C.scratchCtx.getImageData(0,0,C.scratchCanvas.width,C.scratchCanvas.height).data,m=Math.max(0,Math.floor(f)),J=Math.max(0,Math.floor(u)),q=Math.min(C.width,Math.ceil(f+R)),_=Math.min(C.height,Math.ceil(u+M));for(let Z=J;Z<_;Z++){const x=Math.min(C.scratchCanvas.height-1,Math.max(0,Math.floor((Z-u)/M*C.scratchCanvas.height))),X=Math.min(t-1,Math.max(0,S+Math.floor((Z-u)/M*U)));for(let T=m;T<q;T++){const gA=Math.min(C.scratchCanvas.width-1,Math.max(0,Math.floor((T-f)/R*C.scratchCanvas.width))),UA=Math.min(e-1,Math.max(0,N+Math.floor((T-f)/R*Y))),yA=(x*C.scratchCanvas.width+gA)*4,rA=(X*e+UA)*4,BA=k[yA+3]/255,Ig=w[rA]/255,QA=BA*Ig;if(QA<=0)continue;const V=(Z*C.width+T)*4,YA=k[yA]/255*QA,kA=k[yA+1]/255*QA,W=k[yA+2]/255*QA,pA=F[V+3]/255,LA=1-QA;F[V]=Math.round((YA+F[V]/255*LA)*255),F[V+1]=Math.round((kA+F[V+1]/255*LA)*255),F[V+2]=Math.round((W+F[V+2]/255*LA)*255),F[V+3]=Math.round((QA+pA*LA)*255)}}}return C.compositeCtx.putImageData(l,0,0),C.compositeCanvas}var na=Object.defineProperty,ra=(C,A,g)=>A in C?na(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,O=(C,A,g)=>ra(C,typeof A!="symbol"?A+"":A,g);const _B=1024,aQ=32,AB=class Mg{constructor(A){O(this,"instancedQuadVB",null),O(this,"instancedQuadIB",null),O(this,"quadVB",null),O(this,"quadIB",null),O(this,"rgbaWebGLQuadVB",null),O(this,"rgbaTopLeftQuadVB",null),O(this,"rgbaQuadIB",null),O(this,"wcDbgFirstDraw",new Set),O(this,"wcDbgNullWarns",new Map),O(this,"htmlGate"),O(this,"lastWcFrameRef",new Map),O(this,"scratchAtlasRemap",new Float32Array(4)),O(this,"instancePackScratch",new Float32Array(_B*aQ)),O(this,"scratchTransform",new Float32Array(16)),O(this,"contentSizeScratch",{w:0,h:0}),O(this,"rgbUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"alphaUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"maskUVScratch",{left:0,right:0,top:0,bottom:0}),O(this,"processedHtmlGatesScratch",new Set),O(this,"vapVertexScratch",new Float32Array(24)),O(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),O(this,"clipScratch",{x:0,y:0,w:0,h:0}),O(this,"instancedListScratch",[]),O(this,"instancedByTexScratch",new Map),O(this,"instancedTexturesScratch",[]),O(this,"instancedUniformsScratch",{u_projection:new Float32Array(16),u_video:0}),O(this,"instancedDrawCommand",{shader:"vap-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:0,instanceData:this.instancePackScratch,textures:this.instancedTexturesScratch,uniforms:this.instancedUniformsScratch}),O(this,"geometryTexturesScratch",[]),O(this,"geometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_rgbPremultiplied:1,u_video:0}),O(this,"geometryDrawCommand",{shader:"vap",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.geometryTexturesScratch,uniforms:this.geometryUniformsScratch}),O(this,"mixedGeometryTexturesScratch",[]),O(this,"mixedGeometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:hE,u_opacity:1,u_video:0}),O(this,"mixedGeometryDrawCommand",{shader:"rgba-textured",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.mixedGeometryTexturesScratch,uniforms:this.mixedGeometryUniformsScratch}),O(this,"overlayTexturesScratch",[]),O(this,"overlayUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_resource:0,u_video:1}),O(this,"overlayDrawCommand",{shader:"vap-mix-overlay",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.overlayTexturesScratch,uniforms:this.overlayUniformsScratch}),O(this,"projCacheW",0),O(this,"projCacheH",0),O(this,"projCache",null),this.htmlGate=new rE(A)}syncVideoTextures(A,g){var I,B,Q,E;let i=!1;const e=this.processedHtmlGatesScratch;e.clear();for(const t of g.values()){if(t.type!=="vap"||t.paused||t.state!=="playing"&&t.state!=="fly"&&t.state!=="stopped"||!t.videoTextureHandle)continue;if(((I=t.vapMixState)==null?void 0:I.mode)==="composited"){i=this.syncMixedTexture(A,t)||i;continue}const a=t.webcodecsPlayback;if(a){const o=(B=t.wcPlaybackTime)!=null?B:0,s=a.getFrameForTime(o);if(this.wcDbgFirstDraw.has(t.id)||(this.wcDbgFirstDraw.add(t.id),console.info("[GiftStage:WC] VAP first draw",{giftId:t.id,state:t.state,t:o,hasFrame:!!s,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),s){const n=t.webcodecsSurface;if(((E=n==null?void 0:n.lastUploadedFrame)!=null?E:this.lastWcFrameRef.get(t.id))!==s){const h=t.wcAtlasRect;h?A.updateTextureRegion(t.videoTextureHandle,s,h.x,h.y,h.w,h.h):A.updateTexture(t.videoTextureHandle,s),n?n.lastUploadedFrame=s:this.lastWcFrameRef.set(t.id,s),i=!0}}else{const n=((Q=this.wcDbgNullWarns.get(t.id))!=null?Q:0)+1;this.wcDbgNullWarns.set(t.id,n),n<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:t.id,t:o,n})}}else if(t.videoElement){const o=this.getHtmlVideoGateId(t);if(e.has(o))continue;e.add(o),this.htmlGate.preUpload(o,t.videoElement)&&(A.updateTexture(t.videoTextureHandle,t.videoElement),i=!0)}}return i}draw(A,g){(A.type==="webgpu"||A.type==="webgl2")&&this.drawInstancedVapBatches(A,g);for(const I of g.values())if(I.type==="vap"&&!(I.state!=="playing"&&I.state!=="fly"&&I.state!=="stopped")&&!(!I.videoElement&&!I.webcodecsPlayback||!I.videoTextureHandle)){if(I.vapMixState){I.vapMixState.mode==="direct"?this.drawMixedDirectGeometry(A,I):this.drawMixedGeometry(A,I);continue}(A.type==="webgpu"||A.type==="webgl2")&&XA(I)!=="cover"||this.drawGeometry(A,I)}}drawSlot(A,g){if(g.type==="vap"&&!(g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")&&!(!g.videoElement&&!g.webcodecsPlayback||!g.videoTextureHandle)){if(g.vapMixState){g.vapMixState.mode==="direct"?this.drawMixedDirectGeometry(A,g):this.drawMixedGeometry(A,g);return}this.drawGeometry(A,g)}}drawInstancedVapBatches(A,g){const I=this.instancedListScratch;I.length=0;for(const a of g.values())a.type!=="vap"||a.state!=="playing"&&a.state!=="fly"&&a.state!=="stopped"||a.vapMixState||!a.videoElement&&!a.webcodecsPlayback||!a.videoTextureHandle||XA(a)==="cover"||!a.vapConfig||I.push(a);if(I.length===0)return;this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(Mg.QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(Mg.QUAD_INDICES,"index"));const B=A.canvas.width,Q=A.canvas.height;let E;this.projCache&&this.projCacheW===B&&this.projCacheH===Q?E=this.projCache:(this.projCacheW=B,this.projCacheH=Q,this.projCache=pg(0,B,Q,0,-1,1),E=this.projCache);const i=this.instancedByTexScratch;for(const a of i.values())a.length=0;for(const a of I){const o=a.videoTextureHandle.id;let s=i.get(o);s||(s=[],i.set(o,s)),s.push(a)}const e=this.instancePackScratch,t=this.instancedDrawCommand;t.vertexBuffer=this.instancedQuadVB,t.indexBuffer=this.instancedQuadIB,this.instancedUniformsScratch.u_projection=E;for(const[a,o]of i){if(o.length===0){i.delete(a);continue}for(let s=0;s<o.length;s+=_B){const n=Math.min(_B,o.length-s);for(let r=0;r<n;r++)this.fillVapInstanceData(o[s+r],e,r*aQ);t.instanceCount=n,this.instancedTexturesScratch[0]=o[s].videoTextureHandle,this.instancedTexturesScratch.length=1,Tg(A.draw(t),"VAP instanced draw")}}}fillVapInstanceData(A,g,I){var B,Q,E,i;const e=A.vapConfig,{info:t}=e,a=t.videoW>0?t.videoW:(Q=(B=A.webcodecsPlayback)==null?void 0:B.videoWidth)!=null?Q:1,o=t.videoH>0?t.videoH:(i=(E=A.webcodecsPlayback)==null?void 0:E.videoHeight)!=null?i:1,s=this.scratchTransform,{w:n,h:r}=AI(t,this.contentSizeScratch),h=Fg(A,n,r,this.layoutScratch);aI(A,A.x+h.offsetX,A.y+h.offsetY,h.width,h.height,s),g.set(s,I);const c=RI(t.rgbFrame,a,o,this.rgbUVScratch),D=RI(t.aFrame,a,o,this.alphaUVScratch),w=A.videoTextureHandle,l=fB(w.width,w.height,A.wcAtlasRect,this.scratchAtlasRemap);g.set(l,I+16);const F=I+20;g[F+0]=c.left,g[F+1]=c.right,g[F+2]=c.top,g[F+3]=c.bottom,g[F+4]=D.left,g[F+5]=D.right,g[F+6]=D.top,g[F+7]=D.bottom,g[F+8]=A.opacity,g[F+9]=A.options.videoRGBAlphaMode!=="straight"?1:0,g[F+10]=0,g[F+11]=0}syncMixedTexture(A,g){var I;const B=g.vapConfig,Q=g.vapMixState;if(!B||!Q||Q.mode!=="composited"||!g.videoTextureHandle)return!1;const E=this.getMixedFrameIndex(g,B),i=g.webcodecsPlayback;if(i){const t=(I=g.wcPlaybackTime)!=null?I:0,a=i.getFrameForTime(t);if(!a||Q.lastSourceRef===a&&Q.lastFrameIndex===E)return!1;const o=Q.composer?Q.composer.render(a,E):tQ(Q,B,a,E,g.options.videoRGBAlphaMode!=="straight");return A.updateTexture(g.videoTextureHandle,o),Q.lastSourceRef=a,Q.lastFrameIndex=E,!0}if(!g.videoElement||!this.htmlGate.preUpload(g.id,g.videoElement)&&Q.lastFrameIndex===E)return!1;const e=Q.composer?Q.composer.render(g.videoElement,E):tQ(Q,B,g.videoElement,E,g.options.videoRGBAlphaMode!=="straight");return A.updateTexture(g.videoTextureHandle,e),Q.lastSourceRef=g.videoElement,Q.lastFrameIndex=E,!0}releaseHtmlVideo(A){var g;this.htmlGate.release(this.getHtmlVideoGateId(A),(g=A.videoElement)!=null?g:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A),this.wcDbgFirstDraw.delete(A),this.wcDbgNullWarns.delete(A)}drawGeometry(A,g){var I,B,Q,E;const i=A.canvas.width,e=A.canvas.height;let t;this.projCache&&this.projCacheW===i&&this.projCacheH===e?t=this.projCache:(this.projCacheW=i,this.projCacheH=e,this.projCache=pg(0,i,e,0,-1,1),t=this.projCache);const a=g.vapConfig;if(!a){console.warn("[GiftStage:WC] VAP vapConfig missing — draw skipped",{giftId:g.id});return}const{info:o}=a,s=o.videoW>0?o.videoW:(B=(I=g.webcodecsPlayback)==null?void 0:I.videoWidth)!=null?B:1,n=o.videoH>0?o.videoH:(E=(Q=g.webcodecsPlayback)==null?void 0:Q.videoHeight)!=null?E:1,r=this.scratchTransform,h=XA(g),{w:c,h:D}=AI(o,this.contentSizeScratch),w=Fg(g,c,D,this.layoutScratch);aI(g,g.x+w.offsetX,g.y+w.offsetY,w.width,w.height,r);const l=RI(o.rgbFrame,s,n,this.rgbUVScratch),F=RI(o.aFrame,s,n,this.alphaUVScratch),d=g.videoTextureHandle,y=fB(d.width,d.height,g.wcAtlasRect,this.scratchAtlasRemap),G=this.vapVertexScratch;G[0]=0,G[1]=0,G[2]=l.left,G[3]=l.top,G[4]=F.left,G[5]=F.top,G[6]=1,G[7]=0,G[8]=l.right,G[9]=l.top,G[10]=F.right,G[11]=F.top,G[12]=1,G[13]=1,G[14]=l.right,G[15]=l.bottom,G[16]=F.right,G[17]=F.bottom,G[18]=0,G[19]=1,G[20]=l.left,G[21]=l.bottom,G[22]=F.left,G[23]=F.bottom,this.quadVB=this.ensureBuffer(A,this.quadVB,G,"vertex"),this.quadIB||(this.quadIB=A.createBuffer(Mg.QUAD_INDICES,"index"));const f=this.geometryDrawCommand;if(f.vertexBuffer=this.quadVB,f.indexBuffer=this.quadIB,this.geometryTexturesScratch[0]=g.videoTextureHandle,this.geometryTexturesScratch.length=1,this.geometryUniformsScratch.u_projection=t,this.geometryUniformsScratch.u_transform=r,this.geometryUniformsScratch.u_atlasRemap=y,this.geometryUniformsScratch.u_opacity=g.opacity,this.geometryUniformsScratch.u_rgbPremultiplied=g.options.videoRGBAlphaMode!=="straight"?1:0,h==="cover"){const u=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(u.x,u.y,u.w,u.h)}Tg(A.draw(f),"VAP draw"),h==="cover"&&A.resetScissor()}drawMixedGeometry(A,g){const I=A.canvas.width,B=A.canvas.height;let Q;this.projCache&&this.projCacheW===I&&this.projCacheH===B?Q=this.projCache:(this.projCacheW=I,this.projCacheH=B,this.projCache=pg(0,I,B,0,-1,1),Q=this.projCache);const E=g.vapConfig;if(!E||!g.vapMixState||g.vapMixState.mode!=="composited"||!g.videoTextureHandle)return;const i=this.scratchTransform,e=XA(g),{w:t,h:a}=AI(E.info,this.contentSizeScratch),o=Fg(g,t,a,this.layoutScratch);aI(g,g.x+o.offsetX,g.y+o.offsetY,o.width,o.height,i);const s=!!g.vapMixState.composer||A.type==="webgpu";let n=s?this.rgbaTopLeftQuadVB:this.rgbaWebGLQuadVB;if(n||(n=A.createBuffer(s?Mg.RGBA_QUAD_VERTS_WEBGPU:Mg.RGBA_QUAD_VERTS_WEBGL,"vertex"),s?this.rgbaTopLeftQuadVB=n:this.rgbaWebGLQuadVB=n),this.rgbaQuadIB||(this.rgbaQuadIB=A.createBuffer(Mg.QUAD_INDICES,"index")),e==="cover"){const h=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(h.x,h.y,h.w,h.h)}const r=this.mixedGeometryDrawCommand;r.vertexBuffer=n,r.indexBuffer=this.rgbaQuadIB,this.mixedGeometryTexturesScratch[0]=g.videoTextureHandle,this.mixedGeometryTexturesScratch.length=1,this.mixedGeometryUniformsScratch.u_projection=Q,this.mixedGeometryUniformsScratch.u_transform=i,this.mixedGeometryUniformsScratch.u_opacity=g.opacity,Tg(A.draw(r),"VAP mix draw"),e==="cover"&&A.resetScissor()}drawMixedDirectGeometry(A,g){var I;const B=g.vapConfig,Q=g.vapMixState,E=g.videoTextureHandle;if(!B||!Q||Q.mode!=="direct"||!Q.resourceTextures||!E)return;this.drawGeometry(A,g);const i=Q.frameMap.get(this.getMixedFrameIndex(g,B));if(!i||i.length===0)return;const e=A.canvas.width,t=A.canvas.height;let a;this.projCache&&this.projCacheW===e&&this.projCacheH===t?a=this.projCache:(this.projCacheW=e,this.projCacheH=t,this.projCache=pg(0,e,t,0,-1,1),a=this.projCache),this.rgbaTopLeftQuadVB||(this.rgbaTopLeftQuadVB=A.createBuffer(Mg.RGBA_QUAD_VERTS_WEBGPU,"vertex")),this.rgbaQuadIB||(this.rgbaQuadIB=A.createBuffer(Mg.QUAD_INDICES,"index"));const{info:o}=B,{w:s,h:n}=AI(o,this.contentSizeScratch),r=Fg(g,s,n,this.layoutScratch);if(XA(g)==="cover"){const F=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(F.x,F.y,F.w,F.h)}else{const F=Sg(g,g.x+r.offsetX,g.y+r.offsetY,r.width,r.height,this.clipScratch);A.setScissor(F.x,F.y,F.w,F.h)}const h=o.videoW>0?o.videoW:E.width,c=o.videoH>0?o.videoH:E.height,D=this.scratchTransform,w=this.scratchAtlasRemap,l=this.overlayDrawCommand;l.vertexBuffer=this.rgbaTopLeftQuadVB,l.indexBuffer=this.rgbaQuadIB,this.overlayUniformsScratch.u_projection=a,this.overlayUniformsScratch.u_opacity=g.opacity;for(const F of i){const d=Q.resourceTextures.get((I=F.srcKey)!=null?I:String(F.srcId));if(!d)continue;const[y,G,f,u]=F.frame,[,,R,M]=F.mFrame;if(f<=0||u<=0||R<=0||M<=0)continue;aI(g,g.x+r.offsetX+y*r.scaleX,g.y+r.offsetY+G*r.scaleY,f*r.scaleX,u*r.scaleY,D);const N=RI(F.mFrame,h,c,this.maskUVScratch);w[0]=N.left,w[1]=N.right,w[2]=N.top,w[3]=N.bottom,this.overlayTexturesScratch[0]=d,this.overlayTexturesScratch[1]=E,this.overlayTexturesScratch.length=2,Tg(A.draw(l),"VAP overlay draw")}A.resetScissor()}ensureBuffer(A,g,I,B){return g?(A.updateBuffer(g,I),g):A.createBuffer(I,B)}destroy(A){this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.rgbaWebGLQuadVB&&A.deleteBuffer(this.rgbaWebGLQuadVB),this.rgbaTopLeftQuadVB&&A.deleteBuffer(this.rgbaTopLeftQuadVB),this.rgbaQuadIB&&A.deleteBuffer(this.rgbaQuadIB),this.instancedQuadVB=null,this.instancedQuadIB=null,this.quadVB=null,this.quadIB=null,this.rgbaWebGLQuadVB=null,this.rgbaTopLeftQuadVB=null,this.rgbaQuadIB=null,this.lastWcFrameRef.clear(),this.processedHtmlGatesScratch.clear(),this.projCache=null,this.projCacheW=0,this.projCacheH=0}getMixedFrameIndex(A,g){var I,B,Q;if(A.webcodecsPlayback)return Math.max(0,Math.round(((I=A.wcPlaybackTime)!=null?I:0)*g.info.fps));const E=this.htmlGate.getFrameInfo(A.id),i=E==null?void 0:E.mediaTime;return typeof i=="number"&&Number.isFinite(i)&&i>=0?Math.max(0,Math.round(i*g.info.fps)):Math.max(0,Math.round(((Q=(B=A.videoElement)==null?void 0:B.currentTime)!=null?Q:0)*g.info.fps))}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}};O(AB,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));O(AB,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));O(AB,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));O(AB,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let wE=AB;var ha=Object.defineProperty,ca=(C,A,g)=>A in C?ha(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,oA=(C,A,g)=>ca(C,typeof A!="symbol"?A+"":A,g);const oQ=1024,sQ=12,mC=class kI{constructor(A){oA(this,"quadVB",null),oA(this,"quadIB",null),oA(this,"instancePackScratch",new Float32Array(oQ*sQ)),oA(this,"projCacheW",0),oA(this,"projCacheH",0),oA(this,"projCache",null),oA(this,"scratchTransform",new Float32Array(16)),oA(this,"contentSizeScratch",{w:0,h:0}),oA(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),oA(this,"clipScratch",{x:0,y:0,w:0,h:0}),oA(this,"wcDbgFirstDraw",new Set),oA(this,"wcDbgNullWarns",new Map),oA(this,"htmlGate"),oA(this,"lastWcFrameRef",new Map),oA(this,"scratchAtlasRemap",new Float32Array(4)),oA(this,"processedHtmlGatesScratch",new Set),oA(this,"instancedTexturesScratch",[]),oA(this,"instancedUniformsScratch",{u_projection:new Float32Array(16),u_video:0}),oA(this,"instancedDrawCommand",{shader:"alpha-video-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,instanceCount:0,instanceData:this.instancePackScratch,textures:this.instancedTexturesScratch,uniforms:this.instancedUniformsScratch}),oA(this,"geometryTexturesScratch",[]),oA(this,"geometryUniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:this.scratchAtlasRemap,u_opacity:1,u_rgbPremultiplied:1,u_video:0}),oA(this,"geometryDrawCommand",{shader:"alpha-video",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.geometryTexturesScratch,uniforms:this.geometryUniformsScratch}),this.htmlGate=new rE(A)}static alphaVideoContentSize(A,g){if(A.webcodecsPlayback){const E=A.webcodecsPlayback.videoWidth,i=A.webcodecsPlayback.videoHeight;return g.w=E>0?E*.5:0,g.h=i,g}const I=A.videoElement,B=I.videoWidth,Q=I.videoHeight;return g.w=B>0?B*.5:0,g.h=Q,g}syncVideoTextures(A,g){var I,B,Q;let E=!1;const i=this.processedHtmlGatesScratch;i.clear();for(const e of g.values()){if(e.type!=="alphaVideo"||e.paused||e.state!=="playing"&&e.state!=="fly"||!e.videoTextureHandle)continue;const t=e.webcodecsPlayback;if(t){const a=(I=e.wcPlaybackTime)!=null?I:0,o=t.getFrameForTime(a);if(this.wcDbgFirstDraw.has(e.id)||(this.wcDbgFirstDraw.add(e.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:e.id,state:e.state,t:a,hasFrame:!!o,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),o){const s=e.webcodecsSurface;if(((Q=s==null?void 0:s.lastUploadedFrame)!=null?Q:this.lastWcFrameRef.get(e.id))!==o){const r=e.wcAtlasRect;r?A.updateTextureRegion(e.videoTextureHandle,o,r.x,r.y,r.w,r.h):A.updateTexture(e.videoTextureHandle,o),s?s.lastUploadedFrame=o:this.lastWcFrameRef.set(e.id,o),E=!0}}else{const s=((B=this.wcDbgNullWarns.get(e.id))!=null?B:0)+1;this.wcDbgNullWarns.set(e.id,s),s<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:e.id,t:a,n:s})}}else if(e.videoElement){const a=this.getHtmlVideoGateId(e);if(i.has(a))continue;i.add(a),this.htmlGate.preUpload(a,e.videoElement)&&(A.updateTexture(e.videoTextureHandle,e.videoElement),E=!0)}}return E}draw(A,g){if(A.type==="webgpu"||A.type==="webgl2"){this.drawInstancedAlphaBatches(A,g);return}for(const I of g.values())I.type==="alphaVideo"&&(I.state!=="playing"&&I.state!=="fly"&&I.state!=="stopped"||!I.videoElement&&!I.webcodecsPlayback||!I.videoTextureHandle||this.drawGeometry(A,I))}drawSlot(A,g){g.type==="alphaVideo"&&(g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped"||!g.videoElement&&!g.webcodecsPlayback||!g.videoTextureHandle||this.drawGeometry(A,g))}drawInstancedAlphaBatches(A,g){var I;let B=null,Q=0,E=null;const i=this.instancePackScratch;for(const e of g.values()){if(e.type!=="alphaVideo"||e.state!=="playing"&&e.state!=="fly"&&e.state!=="stopped"||!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle)continue;if(XA(e)==="cover"||((I=e.rotation)!=null?I:0)!==0){B&&Q>0&&E&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0),this.drawGeometry(A,e);continue}const t=e.videoTextureHandle;B&&B.id!==t.id&&Q>0&&E&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0),B||(this.ensureQuadBuffers(A),E=this.getProjection(A),B=t),this.fillAlphaInstanceData(e,i,Q*sQ),Q++,Q===oQ&&(this.flushInstancedBatch(A,B,Q,E),B=null,Q=0)}B&&Q>0&&E&&this.flushInstancedBatch(A,B,Q,E)}flushInstancedBatch(A,g,I,B){const Q=this.instancedDrawCommand;Q.vertexBuffer=this.quadVB,Q.indexBuffer=this.quadIB,Q.instanceCount=I,this.instancedTexturesScratch[0]=g,this.instancedTexturesScratch.length=1,this.instancedUniformsScratch.u_projection=B,Tg(A.draw(Q),"alpha-video instanced draw")}fillAlphaInstanceData(A,g,I){const B=kI.alphaVideoContentSize(A,this.contentSizeScratch),Q=Fg(A,B.w,B.h,this.layoutScratch);g[I+0]=A.x+Q.offsetX,g[I+1]=A.y+Q.offsetY,g[I+2]=Q.width,g[I+3]=Q.height;const E=A.videoTextureHandle,i=fB(E.width,E.height,A.wcAtlasRect,this.scratchAtlasRemap);g.set(i,I+4),g[I+8]=A.opacity,g[I+9]=A.options.videoRGBAlphaMode!=="straight"?1:0,g[I+10]=0,g[I+11]=0}releaseHtmlVideo(A){var g;this.htmlGate.release(this.getHtmlVideoGateId(A),(g=A.videoElement)!=null?g:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A),this.wcDbgFirstDraw.delete(A),this.wcDbgNullWarns.delete(A)}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}drawGeometry(A,g){const I=this.getProjection(A),B=this.scratchTransform,Q=XA(g),E=kI.alphaVideoContentSize(g,this.contentSizeScratch),i=Fg(g,E.w,E.h,this.layoutScratch);aI(g,g.x+i.offsetX,g.y+i.offsetY,i.width,i.height,B),this.ensureQuadBuffers(A);const e=g.videoTextureHandle,t=fB(e.width,e.height,g.wcAtlasRect,this.scratchAtlasRemap),a=this.geometryDrawCommand;if(a.vertexBuffer=this.quadVB,a.indexBuffer=this.quadIB,this.geometryTexturesScratch[0]=e,this.geometryTexturesScratch.length=1,this.geometryUniformsScratch.u_projection=I,this.geometryUniformsScratch.u_transform=B,this.geometryUniformsScratch.u_atlasRemap=t,this.geometryUniformsScratch.u_opacity=g.opacity,this.geometryUniformsScratch.u_rgbPremultiplied=g.options.videoRGBAlphaMode!=="straight"?1:0,Q==="cover"){const o=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(o.x,o.y,o.w,o.h)}Tg(A.draw(a),"alpha-video draw"),Q==="cover"&&A.resetScissor()}ensureQuadBuffers(A){this.quadVB||(this.quadVB=A.createBuffer(kI.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(kI.QUAD_INDICES,"index"))}getProjection(A){const g=A.canvas.width,I=A.canvas.height;return this.projCache&&this.projCacheW===g&&this.projCacheH===I?this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=pg(0,g,I,0,-1,1),this.projCache)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null,this.projCacheW=0,this.projCacheH=0,this.lastWcFrameRef.clear(),this.processedHtmlGatesScratch.clear()}};oA(mC,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));oA(mC,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let FE=mC;var Da=Object.defineProperty,la=(C,A,g)=>A in C?Da(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eg=(C,A,g)=>la(C,typeof A!="symbol"?A+"":A,g);const JC=class wC{constructor(){eg(this,"quadVB",null),eg(this,"quadIB",null),eg(this,"scratchTransform",new Float32Array(16)),eg(this,"layoutScratch",{scaleX:1,scaleY:1,width:0,height:0,offsetX:0,offsetY:0}),eg(this,"clipScratch",{x:0,y:0,w:0,h:0}),eg(this,"projCacheW",0),eg(this,"projCacheH",0),eg(this,"projCache",null),eg(this,"texturesScratch",[]),eg(this,"uniformsScratch",{u_projection:new Float32Array(16),u_transform:this.scratchTransform,u_atlasRemap:hE,u_opacity:1,u_video:0}),eg(this,"drawCommand",{shader:"rgba-textured",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:this.texturesScratch,uniforms:this.uniformsScratch})}drawSlot(A,g){if(g.type!=="image"||!g.imageTextureHandle||g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped")return;const I=g.imageTextureHandle,B=Fg(g,I.width,I.height,this.layoutScratch),Q=g.x+B.offsetX,E=g.y+B.offsetY;aI(g,Q,E,B.width,B.height,this.scratchTransform);let i=this.quadVB;i||(i=A.createBuffer(wC.QUAD_VERTS,"vertex"),this.quadVB=i),this.quadIB||(this.quadIB=A.createBuffer(wC.QUAD_INDICES,"index"));const e=A.canvas.width,t=A.canvas.height;(!this.projCache||this.projCacheW!==e||this.projCacheH!==t)&&(this.projCacheW=e,this.projCacheH=t,this.projCache=pg(0,e,t,0,-1,1));const a=XA(g)==="cover";if(a){const o=Sg(g,g.x,g.y,g.width*ng(g),g.height*rg(g),this.clipScratch);A.setScissor(o.x,o.y,o.w,o.h)}this.drawCommand.vertexBuffer=i,this.drawCommand.indexBuffer=this.quadIB,this.texturesScratch[0]=I,this.texturesScratch.length=1,this.uniformsScratch.u_projection=this.projCache,this.uniformsScratch.u_opacity=g.opacity,Tg(A.draw(this.drawCommand),"image draw"),a&&A.resetScissor()}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null}};eg(JC,"QUAD_VERTS",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));eg(JC,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let yE=JC;var wa=Object.defineProperty,Fa=(C,A,g)=>A in C?wa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,aB=(C,A,g)=>Fa(C,typeof A!="symbol"?A+"":A,g);class GE{constructor(){aB(this,"animations",new Map),aB(this,"completedScratch",[]),aB(this,"individuallyPaused",new Set),aB(this,"globallyPaused",!1)}startFly(A,g,I,B,Q,E,i,e=A.opacity,t=(a=>(a=A.rotation)!=null?a:0)()){this.startTween(A,g,I,B,Q,E,i,void 0,e,t)}startTween(A,g,I,B,Q,E,i,e,t=A.opacity,a=(o=>(o=A.rotation)!=null?o:0)()){var o;this.cancelForGift(A.id),this.animations.set(A.id,{giftId:A.id,startX:A.x,startY:A.y,startScale:A.scale,startOpacity:A.opacity,startRotation:(o=A.rotation)!=null?o:0,targetX:g,targetY:I,targetScale:B,targetOpacity:t,targetRotation:a,startTime:-1,pausedAt:this.globallyPaused||this.individuallyPaused.has(A.id)?performance.now():void 0,duration:Q,easing:E,onComplete:i,onCancel:e})}startTweenPromise(A,g,I,B,Q,E,i,e=A.opacity,t=(a=>(a=A.rotation)!=null?a:0)()){return new Promise(a=>{this.startTween(A,g,I,B,Q,E,()=>{i==null||i(),a()},a,e,t)})}startSequence(A,g){return this.cancelForGift(A.id),g.length===0?Promise.resolve():new Promise(I=>{let B=0;const Q=()=>{var E,i;const e=g[B++];if(!e){I();return}this.startTween(A,e.targetX,e.targetY,e.targetScale,e.duration,e.easing,()=>{var t;(t=e.onComplete)==null||t.call(e),Q()},void 0,e.targetOpacity,(i=(E=e.targetRotation)!=null?E:A.rotation)!=null?i:0)};Q()})}update(A){var g,I;const B=this.completedScratch;B.length=0;for(const[Q,E]of this.animations){E.startTime<0&&(E.startTime=A);const i=(g=E.pausedAt)!=null?g:A;DB((i-E.startTime)/E.duration,0,1)>=1&&(this.animations.delete(Q),B.push(E))}for(const Q of B)(I=Q.onComplete)==null||I.call(Q);B.length=0}getAnimatedState(A,g){var I;const B=this.animations.get(A);if(!B)return null;B.startTime<0&&(B.startTime=g);const Q=DB((((I=B.pausedAt)!=null?I:g)-B.startTime)/B.duration,0,1),E=B.easing(Q);return{x:cg(B.startX,B.targetX,E),y:cg(B.startY,B.targetY,E),scale:cg(B.startScale,B.targetScale,E),opacity:cg(B.startOpacity,B.targetOpacity,E),rotation:cg(B.startRotation,B.targetRotation,E)}}applyAnimatedState(A,g){var I;const B=this.animations.get(A.id);if(!B)return!1;B.startTime<0&&(B.startTime=g);const Q=DB((((I=B.pausedAt)!=null?I:g)-B.startTime)/B.duration,0,1),E=B.easing(Q);return A.x=cg(B.startX,B.targetX,E),A.y=cg(B.startY,B.targetY,E),A.scale=cg(B.startScale,B.targetScale,E),A.opacity=cg(B.startOpacity,B.targetOpacity,E),A.rotation=cg(B.startRotation,B.targetRotation,E),!0}hasAnimation(A){return this.animations.has(A)}hasActiveAnimations(){return this.animations.size>0}hasRunningAnimations(){for(const A of this.animations.values())if(A.pausedAt==null)return!0;return!1}pauseForGift(A,g=performance.now()){this.individuallyPaused.add(A);const I=this.animations.get(A);!I||I.pausedAt!=null||(I.pausedAt=g)}resumeForGift(A,g=performance.now()){if(this.individuallyPaused.delete(A),this.globallyPaused)return;const I=this.animations.get(A);!I||I.pausedAt==null||(I.startTime>=0&&(I.startTime+=g-I.pausedAt),I.pausedAt=void 0)}pauseAll(A=performance.now()){this.globallyPaused=!0;for(const g of this.animations.values())g.pausedAt==null&&(g.pausedAt=A)}resumeAll(A=performance.now()){this.globallyPaused=!1;for(const[g,I]of this.animations)this.individuallyPaused.has(g)||I.pausedAt!=null&&(I.startTime>=0&&(I.startTime+=A-I.pausedAt),I.pausedAt=void 0)}cancelForGift(A){var g;const I=this.animations.get(A);I&&(this.animations.delete(A),(g=I.onCancel)==null||g.call(I))}releaseGift(A){this.cancelForGift(A),this.individuallyPaused.delete(A)}destroy(){this.animations.clear(),this.individuallyPaused.clear(),this.globallyPaused=!1,this.completedScratch.length=0}}var ya=Object.defineProperty,Ga=(C,A,g)=>A in C?ya(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,iI=(C,A,g)=>Ga(C,typeof A!="symbol"?A+"":A,g);class dE{constructor(){iI(this,"ctx",null),iI(this,"decodedCache",new Map),iI(this,"activeSources",[]),iI(this,"globalMute",!1),iI(this,"suspended",!1),iI(this,"gainNode",null)}ensureContext(){return this.ctx||(this.ctx=new AudioContext,this.gainNode=this.ctx.createGain(),this.gainNode.connect(this.ctx.destination),this.globalMute&&(this.gainNode.gain.value=0)),this.ctx.state==="suspended"&&this.ctx.resume().catch(()=>{}),this.ctx}async decodeAudio(A,g){if(this.decodedCache.has(A))return;const I=this.ensureContext();try{const B=await I.decodeAudioData(g.slice(0));this.decodedCache.set(A,B)}catch(B){}}tickFrame(A,g){if(A.videoEntity&&!A.options.mute&&!(this.suspended||A.paused)){for(const I of A.videoEntity.audios)g===I.startFrame&&this.startAudio(A.id,I);for(let I=this.activeSources.length-1;I>=0;I--){const B=this.activeSources[I];if(B.giftId===A.id&&g>=B.endFrame){try{B.source.stop()}catch(Q){}B.source.disconnect(),this.activeSources.splice(I,1)}}}}tickFrameForKey(A,g,I){if(A.videoEntity&&!A.options.mute&&!(this.suspended||A.paused))for(const B of A.videoEntity.audios)B.audioKey===I&&g===B.startFrame&&this.startAudio(A.id,B)}syncPlaybackScopeFrame(A,g,I=!1){var B,Q;const E=A.videoEntity,i=(B=E==null?void 0:E.params.frames)!=null?B:0,e=(Q=E==null?void 0:E.params.fps)!=null?Q:0;if(!E||!(i>0)||!(e>0)||!Number.isFinite(g)||this.suspended||A.paused||A.options.mute){this.stopAllForGift(A.id);return}const t=Math.max(0,Math.floor(g/i)),a=g-t*i,o=new Map;E.audios.forEach((s,n)=>{if(a<s.startFrame||a>=s.endFrame)return;const r=`${n}:${s.audioKey}:${s.startFrame}:${s.endFrame}`;o.set(r,{audio:s,offsetMs:s.startTime+(a-s.startFrame)/e*1e3})}),I&&this.stopAllForGift(A.id);for(let s=this.activeSources.length-1;s>=0;s--){const n=this.activeSources[s];if(n.giftId===A.id){if(n.loopIndex===t&&n.scheduleKey&&o.has(n.scheduleKey)){o.delete(n.scheduleKey);continue}this.stopSourceAt(s)}}for(const[s,n]of o)this.startAudio(A.id,n.audio,n.offsetMs,s,t)}startAudio(A,g,I=g.startTime,B,Q){var E;const i=this.decodedCache.get(g.audioKey);if(!i)return;const e=this.ensureContext(),t=e.createBufferSource();t.buffer=i,t.connect((E=this.gainNode)!=null?E:e.destination);const a=Number.isFinite(i.duration)?i.duration:Number.POSITIVE_INFINITY,o=Math.max(0,I/1e3);if(o>=a){t.disconnect();return}try{t.start(0,o)}catch(s){t.disconnect();return}t.onended=()=>{t.disconnect();const s=this.activeSources.findIndex(n=>n.source===t&&n.giftId===A);s>=0&&this.activeSources.splice(s,1)},this.activeSources.push({source:t,endFrame:g.endFrame,giftId:A,scheduleKey:B,loopIndex:Q})}stopSourceAt(A){const g=this.activeSources[A];if(g){try{g.source.stop()}catch(I){}g.source.disconnect(),this.activeSources.splice(A,1)}}stopAllForGift(A){for(let g=this.activeSources.length-1;g>=0;g--)this.activeSources[g].giftId===A&&this.stopSourceAt(g)}setMute(A){this.globalMute=A,this.gainNode&&(this.gainNode.gain.value=A?0:1)}setSuspended(A){if(this.suspended=A,!!A)for(let g=this.activeSources.length-1;g>=0;g--)this.stopSourceAt(g)}destroy(){var A;for(const g of this.activeSources){try{g.source.stop()}catch(I){}g.source.disconnect()}this.activeSources=[],this.decodedCache.clear(),(A=this.ctx)==null||A.close().catch(()=>{}),this.ctx=null,this.gainNode=null}}var da=Object.defineProperty,Ra=(C,A,g)=>A in C?da(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,eI=(C,A,g)=>Ra(C,typeof A!="symbol"?A+"":A,g);class ua{constructor(A,g){eI(this,"atlasW"),eI(this,"atlasH"),eI(this,"rowY",0),eI(this,"rowH",0),eI(this,"rowX",0),eI(this,"slots",new Map),this.atlasW=Math.max(64,Math.floor(A)),this.atlasH=Math.max(64,Math.floor(g))}get size(){return{w:this.atlasW,h:this.atlasH}}tryAllocate(A,g,I){const B=Math.max(1,Math.ceil(g)),Q=Math.max(1,Math.ceil(I));if(B>this.atlasW||Q>this.atlasH||(this.rowX+B>this.atlasW&&(this.rowY+=this.rowH,this.rowX=0,this.rowH=0),this.rowY+Q>this.atlasH))return null;const E={x:this.rowX,y:this.rowY,w:B,h:Q};return this.slots.set(A,E),this.rowX+=B,this.rowH=Math.max(this.rowH,Q),E}release(A){this.slots.delete(A)}getRect(A){return this.slots.get(A)}}function Sa(C){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(C.trim());if(!A)return null;const g=Number(A[1]);return Number.isFinite(g)?g:null}function nQ(C,A,g){if(typeof C=="number")return C;const I=Sa(C);if(I==null)throw new Error(`Invalid percentage coordinate: ${C}`);return A*I/100-g/2}function RE(C,A,g,I,B,Q){return{x:nQ(C,B,g),y:nQ(A,Q,I)}}var fa=Object.defineProperty,Ma=(C,A,g)=>A in C?fa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,MA=(C,A,g)=>Ma(C,typeof A!="symbol"?A+"":A,g);const rQ=16,hQ=24,Na=4,Ua=8,cQ=8192,ka=new Float32Array([-.5,-.5,.5,-.5,.5,.5,-.5,.5]),Ya=new Uint32Array([0,1,2,0,2,3]);class uE extends Error{constructor(A,g){super(g),this.group=A,this.name="ParticleBatchGroupDrawError"}}class SE{constructor(A,g){MA(this,"backend"),MA(this,"batches",new Set),MA(this,"groups",new Set),MA(this,"atlases",new Map),MA(this,"onRuntimeDiagnostic"),MA(this,"quadVB",null),MA(this,"quadIB",null),MA(this,"nextOrder",0),MA(this,"projW",0),MA(this,"projH",0),MA(this,"projection",null),MA(this,"backendLost",!1),MA(this,"destroyed",!1),MA(this,"drawOrderDirty",!0),MA(this,"behindDrawOrder",[]),MA(this,"aboveDrawOrder",[]),MA(this,"cssScaleUniform",new Float32Array([1,1])),MA(this,"uniforms",{u_projection:new Float32Array(16),u_time:0,u_particleSize:8,u_globalAlpha:1,u_sizeEnvelope:1,u_fadeMode:1,u_cssScale:new Float32Array([1,1])}),MA(this,"command",{shader:"particle-instanced",vertexBuffer:null,indexBuffer:null,indexCount:6,textures:[],uniforms:this.uniforms}),this.backend=A,this.onRuntimeDiagnostic=g}async createAtlas(A){var g;if(this.assertAvailable(),this.backend.type==="webgl1")throw new Error("ParticleAtlas requires WebGPU or WebGL2");const I=Math.floor(A.width),B=Math.floor(A.height),Q=Math.max(1,(g=this.backend.maxTextureSize)!=null?g:4096);if(!Number.isFinite(I)||!Number.isFinite(B)||I<1||B<1)throw new Error("ParticleAtlas dimensions must be positive integers");if(I>Q||B>Q)throw new Error(`ParticleAtlas exceeds backend max texture size ${Q}`);if(A.colorSpace!=="srgb"||A.alphaMode!=="premultiplied")throw new Error("ParticleAtlas requires premultiplied sRGB RGBA8 pixels");const E=I*B*4;if(A.pixels.length!==E)throw new Error(`ParticleAtlas pixels length must be ${E}`);const i=new Uint8Array(E);i.set(A.pixels);const e=this.backend.createTexture(i.buffer,{width:I,height:B,format:"rgba8",filter:"linear",wrap:"clamp",sourcePremultiplied:!0}),t=this;let a;const o={width:I,height:B,get destroyed(){return a.callerReleased},get lost(){return a.lost},destroy(){t.releaseAtlasCaller(a)}};return a={handle:o,texture:e,refs:1,callerReleased:!1,lost:!1},this.atlases.set(o,a),o}createBatch(A){this.assertAvailable(),this.validateDescriptor(A);const g=this.createGroupRecord();let I=null;try{return I=this.stageRecord(A,g),g.batches.add(I),this.groups.add(g),this.batches.add(I),this.drawOrderDirty=!0,I}catch(B){throw I&&this.disposeStagedRecord(I),g._destroyed=!0,B}}createBatchGroup(A){if(this.assertAvailable(),!Array.isArray(A)||A.length<1)throw new Error("ParticleBatchGroup requires at least one descriptor");for(const B of A)this.validateDescriptor(B);const g=this.createGroupRecord(),I=[];try{for(const B of A)I.push(this.stageRecord(B,g));for(const B of I)g.batches.add(B);this.groups.add(g);for(const B of I)this.batches.add(B);return this.drawOrderDirty=!0,g}catch(B){for(let Q=I.length-1;Q>=0;Q--)this.disposeStagedRecord(I[Q]);throw g._destroyed=!0,B}}get activeCount(){return this.batches.size}rebuildDrawOrder(){if(!this.drawOrderDirty)return;this.behindDrawOrder.length=0,this.aboveDrawOrder.length=0;for(const g of this.batches)(g.compositeLayer==="behind-media"?this.behindDrawOrder:this.aboveDrawOrder).push(g);const A=(g,I)=>g.zIndex-I.zIndex||g.order-I.order;this.behindDrawOrder.sort(A),this.aboveDrawOrder.sort(A),this.drawOrderDirty=!1}draw(A="above-media"){if(this.batches.size===0||this.backendLost||this.destroyed)return;this.quadVB||(this.quadVB=this.backend.createBuffer(ka,"vertex")),this.quadIB||(this.quadIB=this.backend.createBuffer(Ya,"index"));const g=this.backend.canvas.width,I=this.backend.canvas.height;(!this.projection||this.projW!==g||this.projH!==I)&&(this.projW=g,this.projH=I,this.projection=pg(0,g,I,0,-1,1)),this.command.vertexBuffer=this.quadVB,this.command.indexBuffer=this.quadIB,this.uniforms.u_projection=this.projection,this.rebuildDrawOrder();const B=A==="behind-media"?this.behindDrawOrder:this.aboveDrawOrder;for(const Q of B)if(!(Q.destroyed||Q.group.destroyed||Q.group.faulted||Q.count<=0||Q.evaluatedOpacity<=0)){this.uniforms.u_time=Q.timeMs/1e3,this.uniforms.u_particleSize=Q.particleSize,this.uniforms.u_globalAlpha=Q.evaluatedOpacity,this.uniforms.u_sizeEnvelope=Q.format==="sprite-v2"?Q.header[2]:1,this.uniforms.u_fadeMode=Q.format==="sprite-v2"?Q.header[3]:1,this.cssScaleUniform[0]=Q.format==="sprite-v2"?Q.header[4]:1,this.cssScaleUniform[1]=Q.format==="sprite-v2"?Q.header[5]:1,this.uniforms.u_cssScale=this.cssScaleUniform,this.command.shader=Q.format==="sprite-v2"?"particle-sprite-instanced":"particle-instanced",this.command.instanceCount=Q.count,this.command.instanceBuffer=Q.instanceBuffer,this.command.particleBlend=Q.blend,this.command.textures=Q.textures;try{Tg(this.backend.draw(this.command),`${Q.format} particle draw`)}catch(E){this.faultGroup(Q.group,E)}}}prepareFrame(){if(this.batches.size===0||this.backendLost||this.destroyed)return;const{sx:A,sy:g}=Xg(this.backend.canvas);for(const I of this.groups)if(!(I._destroyed||I._faulted)){for(const B of I.batches)this.syncRecordCssScale(B,A,g)&&(I.dirty=!0);if(I.dirty){for(const B of I.batches)this.updateRecordHeader(B);try{for(const B of I.batches)this.backend.updateBuffer(B.instanceBuffer,B.header,0);I.dirty=!1}catch(B){this.faultGroup(I,B)}}}}onBackendLoss(){if(!this.backendLost){this.backendLost=!0;for(const A of this.atlases.values())A.lost=!0;for(const A of this.groups)A._faulted=!0;this.quadVB=null,this.quadIB=null,this.projection=null}}destroy(){if(!this.destroyed){for(const A of Array.from(this.groups))A.destroy();this.backendLost||(this.quadVB&&this.backend.deleteBuffer(this.quadVB),this.quadIB&&this.backend.deleteBuffer(this.quadIB)),this.quadVB=null,this.quadIB=null,this.projection=null,this.destroyed=!0;for(const A of this.atlases.values())A.callerReleased=!0,A.lost||(A.lost=this.backendLost),A.refs=0,this.backendLost||this.backend.deleteTexture(A.texture);this.atlases.clear()}}assertAvailable(){if(this.destroyed)throw new Error("ParticleBatchRenderer is destroyed");if(this.backendLost)throw new Error("ParticleBatch backend is lost")}validateDescriptor(A){var g,I,B;if(this.backend.type==="webgl1")throw new Error("ParticleBatch requires WebGPU or WebGL2");const Q=Math.floor(A.count);if(!Number.isFinite(A.count)||Q!==A.count||Q<0)throw new Error("ParticleBatch count must be a non-negative integer");if(Q>cQ)throw new Error(`ParticleBatch count exceeds backend capacity ${cQ}`);const i=((g=A.format)!=null?g:"ballistic-v1")==="sprite-v2"?hQ:rQ;if(A.instances.length!==Q*i)throw new Error(`ParticleBatch instances length must be ${Q*i}`);for(const e of A.instances)if(!Number.isFinite(e))throw new Error("ParticleBatch instances must be finite");if(A.format==="sprite-v2"){const e=this.atlases.get(A.atlas);if(!e||e.callerReleased||e.lost)throw new Error("ParticleBatch sprite atlas is destroyed or lost");this.validateEnvelope((I=A.envelope)==null?void 0:I.opacity,"opacity"),this.validateEnvelope((B=A.envelope)==null?void 0:B.size,"size");for(let t=0;t<Q;t++){const a=t*hQ,o=A.instances[a+16],s=A.instances[a+17],n=A.instances[a+18],r=A.instances[a+19],h=A.instances[a+20],c=A.instances[a+21],D=A.instances[a+22],w=A.instances[a+23];if(o<0||s<0)throw new Error("sprite-v2 dimensions must be non-negative");if(n<0||n>1||r<0||r>1)throw new Error("sprite-v2 anchors must be normalized");if(h<0||c<0||D>1||w>1||!(h<D)||!(c<w))throw new Error("sprite-v2 UV rectangle is invalid")}}}validateEnvelope(A,g){if(!A)return;let I=-1/0;for(const B of A){if(![B.startMs,B.endMs,B.from,B.to].every(Number.isFinite)||!(B.endMs>B.startMs)||B.startMs<I)throw new Error(`ParticleBatch ${g} envelope is invalid`);if(B.interpolation&&B.interpolation!=="linear"&&B.interpolation!=="hold")throw new Error(`ParticleBatch ${g} envelope interpolation is invalid`);I=B.endMs}}cloneEnvelope(A){var g;return(g=A==null?void 0:A.map(I=>({...I})))!=null?g:[]}createGroupRecord(){const A=this;let g;return g={batches:new Set,_destroyed:!1,_faulted:!1,dirty:!1,diagnosticSent:!1,get count(){return g.batches.size},get destroyed(){return g._destroyed},get faulted(){return g._faulted},setTime(I){if(!g._destroyed)for(const B of g.batches)A.setRecordTime(B,I)},setOpacity(I){if(!g._destroyed)for(const B of g.batches)A.setRecordOpacity(B,I)},destroy(){A.destroyGroup(g)}},g}stageRecord(A,g){var I,B,Q,E,i,e,t,a,o,s,n;const r=(I=A.format)!=null?I:"ballistic-v1",h=r==="sprite-v2"?Ua:Na,c=new Float32Array(h+A.instances.length);c.set(A.instances,h);const{sx:D,sy:w}=Xg(this.backend.canvas);let l=1,F=null;if(A.format!=="sprite-v2"){for(let R=0;R<A.count;R++){const M=h+R*rQ;c[M+2]*=D,c[M+3]*=w,c[M+4]*=D,c[M+5]*=w,c[M+6]*=D,c[M+7]*=w}l=Math.max(0,(B=A.particleSize)!=null?B:8)*Math.sqrt(D*w),c[1]=l,c[2]=Math.max(0,Math.min(1,(Q=A.opacity)!=null?Q:1))}else F=this.atlases.get(A.atlas),this.retainAtlas(F),c[1]=Math.max(0,Math.min(1,(E=A.opacity)!=null?E:1)),c[2]=this.evaluateEnvelope((i=A.envelope)==null?void 0:i.size,0,1),c[3]=A.fadeMode==="none"?0:1,c[4]=D,c[5]=w,c[6]=0,c[7]=0;let d;try{d=this.backend.createBuffer(c,"storage")}catch(R){throw F&&this.releaseAtlasRetain(F),R}const y=this;let G;const f=Math.max(0,Math.min(1,(e=A.opacity)!=null?e:1)),u=A.format==="sprite-v2"?A:null;return G={count:A.count,instanceBuffer:d,format:r,atlas:F,group:g,timeMs:0,baseOpacity:f,evaluatedOpacity:f,particleSize:l,fadeMode:(u==null?void 0:u.fadeMode)==="none"?"none":"lifetime",opacityEnvelope:u?this.cloneEnvelope((t=u.envelope)==null?void 0:t.opacity):[],sizeEnvelope:u?this.cloneEnvelope((a=u.envelope)==null?void 0:a.size):[],compositeLayer:(o=A.compositeLayer)!=null?o:"above-media",zIndex:(s=A.zIndex)!=null?s:0,blend:(n=A.blend)!=null?n:"additive",order:this.nextOrder++,header:c.subarray(0,h),textures:F?[F.texture]:[],_destroyed:!1,get destroyed(){return G._destroyed},setTime(R){y.setRecordTime(G,R)},setOpacity(R){y.setRecordOpacity(G,R)},destroy(){y.destroyRecord(G)}},this.updateRecordHeader(G),G}setRecordTime(A,g){if(A._destroyed||A.group._destroyed||A.group._faulted)return;const I=Math.max(0,Number.isFinite(g)?g:0);A.timeMs!==I&&(A.timeMs=I,this.updateRecordHeader(A),A.group.dirty=!0)}setRecordOpacity(A,g){if(A._destroyed||A.group._destroyed||A.group._faulted)return;const I=Math.max(0,Math.min(1,Number.isFinite(g)?g:0));A.baseOpacity!==I&&(A.baseOpacity=I,this.updateRecordHeader(A),A.group.dirty=!0)}updateRecordHeader(A){if(A.header[0]=A.timeMs/1e3,A.format==="sprite-v2"){const g=this.evaluateEnvelope(A.opacityEnvelope,A.timeMs,1),I=this.evaluateEnvelope(A.sizeEnvelope,A.timeMs,1);A.evaluatedOpacity=Math.max(0,A.baseOpacity*g),A.header[1]=A.evaluatedOpacity,A.header[2]=Math.max(0,I),A.header[3]=A.fadeMode==="none"?0:1}else A.evaluatedOpacity=A.baseOpacity,A.header[2]=A.evaluatedOpacity}syncRecordCssScale(A,g,I){return A.format!=="sprite-v2"||A.header[4]===g&&A.header[5]===I?!1:(A.header[4]=g,A.header[5]=I,!0)}evaluateEnvelope(A,g,I){if(!(A!=null&&A.length))return I;if(g<A[0].startMs)return A[0].from;let B=A[0].from;for(const Q of A){if(g<Q.startMs)return B;if(g<Q.endMs){if(Q.interpolation==="hold")return Q.from;const E=(g-Q.startMs)/(Q.endMs-Q.startMs);return Q.from+(Q.to-Q.from)*E}B=Q.to}return B}faultGroup(A,g){var I;A._faulted=!0,A.dirty=!1;const B=g instanceof Error?g.message:String(g);if(!A.diagnosticSent){A.diagnosticSent=!0;try{(I=this.onRuntimeDiagnostic)==null||I.call(this,{type:"particle-group-failure",message:B})}catch(Q){console.error("[GiftStage] particle diagnostic observer failed",Q)}}throw new uE(A,`ParticleBatchGroup draw failed: ${B}`)}destroyGroup(A){if(!A._destroyed){A._destroyed=!0;for(const g of Array.from(A.batches))this.destroyRecord(g);this.groups.delete(A)}}destroyRecord(A){A._destroyed||(A._destroyed=!0,this.batches.delete(A),this.drawOrderDirty=!0,A.group.batches.delete(A),!this.backendLost&&!this.destroyed&&this.backend.deleteBuffer(A.instanceBuffer),A.atlas&&this.releaseAtlasRetain(A.atlas),A.group.batches.size===0&&(A.group._destroyed=!0,this.groups.delete(A.group)))}disposeStagedRecord(A){this.backendLost||this.backend.deleteBuffer(A.instanceBuffer),A.atlas&&this.releaseAtlasRetain(A.atlas),A._destroyed=!0}retainAtlas(A){if(A.callerReleased||A.lost)throw new Error("ParticleAtlas is destroyed or lost");A.refs++}releaseAtlasCaller(A){A.callerReleased||(A.callerReleased=!0,this.releaseAtlasRef(A))}releaseAtlasRetain(A){this.releaseAtlasRef(A)}releaseAtlasRef(A){A.refs=Math.max(0,A.refs-1),!(A.refs>0)&&(!A.lost&&!this.backendLost&&!this.destroyed&&this.backend.deleteTexture(A.texture),this.atlases.delete(A.handle))}}var pa=Object.defineProperty,Ka=(C,A,g)=>A in C?pa(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,j=(C,A,g)=>Ka(C,typeof A!="symbol"?A+"":A,g);class ma extends Error{constructor(A,g){super(`${A} rejected (${g.reason})${g.message?`: ${g.message}`:""}`),this.operation=A,this.result=g,this.name="BackendOperationError"}}class PI{constructor(A,g,I){j(this,"backend"),j(this,"svgaBatch"),j(this,"vapRenderer"),j(this,"alphaVideoRenderer"),j(this,"imageRenderer"),j(this,"particleBatchRenderer"),j(this,"postAnimator"),j(this,"audioManager"),j(this,"slots"),j(this,"handles"),j(this,"rafId",null),j(this,"lastTime",0),j(this,"running",!1),j(this,"destroyed",!1),j(this,"globallyPaused",!1),j(this,"suspendedForHidden",!1),j(this,"forceNextDraw",!0),j(this,"pendingAtomicFrameRetry",!1),j(this,"atomicRetryUsedForGenericFailure",!1),j(this,"atomicRetryProgressEntities",new Set),j(this,"runtimeFrameAbortCount",0),j(this,"runtimeReplayFailureCount",0),j(this,"runtimeRetryFrameCount",0),j(this,"backendQuarantined",!1),j(this,"onRuntimeDiagnostic"),j(this,"onAnimationFrame",B=>{try{this.renderLoop(B)}catch(Q){if(this.destroyed)return;this.running=!1,this.rafId=null,this.lastTime=0,this.forceNextDraw=!0,this.emitRuntimeDiagnostic({type:"frame-controller-failure",message:this.runtimeErrorMessage(Q)}),console.error("[GiftStage] animation frame controller failed",Q)}}),j(this,"onHtmlVideoFrame",B=>{if(!this.destroyed&&!(this.globallyPaused||this.suspendedForHidden)){for(const Q of this.slots.values())if(Q.videoElement===B&&!Q.paused&&(Q.state==="playing"||Q.state==="fly")){this.invalidate();return}}}),j(this,"finishedSlotIdsScratch",[]),j(this,"videoRunMapScratch",new Map),j(this,"sortedSlots",[]),j(this,"visibleSlotsScratch",[]),j(this,"collapsedLayerScratch",[]),j(this,"coincidentSeenScratch",new Set),j(this,"drawRunScratch",[]),j(this,"wcAtlas",null),j(this,"wcDbgTickOnce",new Set),j(this,"advancedSharedWebCodecsScratch",new Set),j(this,"activeSharedWebCodecsScratch",new Set),j(this,"frameControllers",new Set),this.backend=A,this.onRuntimeDiagnostic=I,this.svgaBatch=new sE(()=>this.invalidate(),g,B=>this.emitRuntimeDiagnostic(B)),this.vapRenderer=new wE(this.onHtmlVideoFrame),this.alphaVideoRenderer=new FE(this.onHtmlVideoFrame),this.imageRenderer=new yE,this.particleBatchRenderer=new SE(A,B=>this.emitRuntimeDiagnostic(B)),this.postAnimator=new GE,this.audioManager=new dE,this.slots=new Map,this.handles=new Map}getRuntimeDiagnosticsSnapshot(){return{frameAbortCount:this.runtimeFrameAbortCount,replayFailureCount:this.runtimeReplayFailureCount,retryFrameCount:this.runtimeRetryFrameCount}}emitRuntimeDiagnostic(A){var g;try{(g=this.onRuntimeDiagnostic)==null||g.call(this,A)}catch(I){console.error("[GiftStage] runtime diagnostic observer failed",I)}}addSlot(A,g){this.slots.set(A.id,A),this.handles.set(A.id,g),this.insertSortedSlot(A),this.invalidate({resetClock:!0})}getHandle(A){return this.handles.get(A)}releaseSlotResources(A){var g,I,B,Q,E,i,e,t,a,o;if((g=A.loadAbortController)==null||g.abort(),A.loadAbortController=null,(I=A.detachLoadAbortSignal)==null||I.call(A),A.detachLoadAbortSignal=null,A.videoPlaybackWatchdogTimer!=null&&(clearTimeout(A.videoPlaybackWatchdogTimer),A.videoPlaybackWatchdogTimer=null),this.wcDbgTickOnce.delete(A.id),A.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(A),this.vapRenderer.clearWebCodecsFrameRef(A.id),(Q=(B=A.vapMixState)==null?void 0:B.composer)==null||Q.destroy(),(E=A.vapMixState)!=null&&E.resourceTextures)){for(const s of A.vapMixState.resourceTextures.values())this.backend.deleteTexture(s);A.vapMixState.resourceTextures.clear()}if(A.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(A),this.alphaVideoRenderer.clearWebCodecsFrameRef(A.id)),this.audioManager.stopAllForGift(A.id),this.postAnimator.releaseGift(A.id),A.videoEntity&&!A.releaseSharedSVGAAsset&&this.deleteSVGAAtlasTextures(A.videoEntity),A.svgaSlotTextures){for(const s of A.svgaSlotTextures.values())this.backend.deleteTexture(s.texture);A.svgaSlotTextures.clear(),A.svgaSlotTextures=void 0}A.wcAtlasRect&&!A.releaseWebCodecsSurface?(this.releaseWebCodecsAtlasAllocation(A.id),A.wcAtlasRect=void 0):A.videoTextureHandle&&!A.releaseSharedVideoTexture&&!A.releaseWebCodecsSurface&&this.backend.deleteTexture(A.videoTextureHandle),A.videoTextureHandle=null,A.imageTextureHandle&&(A.releaseSharedImageTexture?A.releaseSharedImageTexture():this.backend.deleteTexture(A.imageTextureHandle)),A.imageTextureHandle=null,A.releaseSharedImageTexture=null,(i=A.releaseWebCodecsSurface)==null||i.call(A),A.releaseWebCodecsSurface=null,A.webcodecsSurface=null,A.wcAtlasRect=void 0,A.webcodecsPlayback&&(A.releaseWebCodecsPlayback?A.releaseWebCodecsPlayback():A.webcodecsPlayback.destroy(),A.webcodecsPlayback=null),A.releaseWebCodecsPlayback=null,A.webcodecsSharedState=null,A.videoElement&&!A.releaseSharedVideoPlayback&&(A.videoElement.pause(),A.videoElement.removeAttribute("src"),A.videoElement.load(),A.videoElement.remove()),A.videoElement=null,(e=A.releaseSharedVideoPlayback)==null||e.call(A),A.releaseSharedVideoPlayback=null,(t=A.releaseSharedSVGAAsset)==null||t.call(A),A.releaseSharedSVGAAsset=null,(a=A.releaseSharedVideoTexture)==null||a.call(A),A.releaseSharedVideoTexture=null,(o=A.releaseMediaSource)==null||o.call(A),A.releaseMediaSource=null,A.vapMixState=null,A.videoEntity=null}removeSlot(A){const g=this.slots.get(A);g&&this.releaseSlotResources(g),this.slots.delete(A),this.handles.delete(A);const I=this.sortedSlots.indexOf(g);I>=0&&this.sortedSlots.splice(I,1),this.forceNextDraw=!0,!this.destroyed&&(this.slots.size===0&&!this.hasActiveFrameController()?(this.clearFrameOnce(),this.stop()):this.invalidate())}getSlot(A){return this.slots.get(A)}get activeCount(){return this.slots.size}getSlotIds(){return Array.from(this.slots.keys())}countCompatibleSVGAInstances(A){var g;let I=0;for(const B of this.slots.values())B.type==="svga"&&B.videoEntity===A&&!((g=B.svgaSlotTextures)!=null&&g.size)&&B.options.svgaFrameEvaluation!=="cpu"&&B.state!=="finished"&&I++;return I}registerFrameController(A){return this.frameControllers.add(A),this.invalidate({resetClock:!0}),()=>{this.frameControllers.delete(A),this.slots.size===0&&!this.hasActiveFrameController()&&this.stop()}}createParticleBatch(A){const g=this.particleBatchRenderer.createBatch(A);return this.invalidate(),g}async createParticleAtlas(A){return this.particleBatchRenderer.createAtlas(A)}createParticleBatchGroup(A){const g=this.particleBatchRenderer.createBatchGroup(A);return this.invalidate(),g}handleBackendLoss(){this.particleBatchRenderer.onBackendLoss()}tryAllocateWebCodecsAtlas(A,g,I,B){if(!B||B.width<=0||B.height<=0)return null;if(this.wcAtlas&&(this.wcAtlas.cfg.width!==B.width||this.wcAtlas.cfg.height!==B.height)){if(this.wcAtlas.ref>0)return null;this.backend.deleteTexture(this.wcAtlas.handle),this.wcAtlas=null}this.wcAtlas||(this.wcAtlas={cfg:{width:B.width,height:B.height},handle:this.backend.createEmptyTexture(B.width,B.height,{filter:"linear"}),alloc:new ua(B.width,B.height),ref:0});const Q=this.wcAtlas.alloc.tryAllocate(A,g,I);return Q?(this.wcAtlas.ref++,{handle:this.wcAtlas.handle,rect:Q}):null}releaseWebCodecsAtlasAllocation(A){const g=this.wcAtlas;g&&(g.alloc.release(A),g.ref=Math.max(0,g.ref-1),g.ref<=0&&(this.backend.deleteTexture(g.handle),this.wcAtlas=null))}syncSlotLayoutFromOptions(){const{sx:A,sy:g}=Xg(this.backend.canvas);for(const I of this.slots.values()){if(this.postAnimator.hasAnimation(I.id))continue;const B=I.options,Q=RE(B.x,B.y,B.width,B.height,this.backend.canvas.clientWidth,this.backend.canvas.clientHeight);I.x=Q.x*A,I.y=Q.y*g,I.width=B.width*A,I.height=B.height*g}this.invalidate()}invalidate(A={}){this.destroyed||(this.forceNextDraw=!0,A.orderChanged&&this.sortedSlots.sort(PI.compareSlots),!(this.globallyPaused||this.suspendedForHidden||this.running)&&this.start(A.resetClock!==!1))}start(A=!0){this.destroyed||this.running||this.globallyPaused||this.suspendedForHidden||(this.running=!0,(A||this.lastTime<=0)&&(this.lastTime=performance.now()),this.rafId=requestAnimationFrame(this.onAnimationFrame))}stop(){this.running=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}clearFrameOnce(){this.assertBackendOperation("begin-frame",this.backend.beginFrame({stencil:!1})),this.svgaBatch.beginFrame(this.backend),this.assertBackendOperation("end-frame",this.backend.endFrame())}pause(){this.globallyPaused=!0,this.syncAudioSuspension(),this.postAnimator.pauseAll(),this.stop(),this.syncAllVideoPlayback()}resume(){this.globallyPaused=!1,this.syncAudioSuspension(),this.postAnimator.resumeAll(),(this.slots.size>0||this.hasActiveFrameController())&&this.invalidate({resetClock:!0}),this.syncAllVideoPlayback()}setHidden(A){A!==this.suspendedForHidden&&(this.suspendedForHidden=A,this.syncAudioSuspension(),A?this.stop():!this.globallyPaused&&(this.slots.size>0||this.hasActiveFrameController())&&this.invalidate({resetClock:!0}),this.syncAllVideoPlayback())}syncAllVideoPlayback(){for(const A of this.slots.values())A.videoElement&&this.syncVideoPlaybackForSlot(A)}hasActiveVideoConsumer(A,g){if(this.globallyPaused||this.suspendedForHidden)return!1;for(const I of this.slots.values())if(!(I.id===g||I.videoElement!==A)&&!I.paused&&!(I.state!=="playing"&&I.state!=="fly"))return!0;return!1}syncVideoPlaybackForSlot(A){const g=A.videoElement;if(!g)return;if(A.playbackScopeControlled){g.paused||g.pause();return}if(!this.globallyPaused&&!this.suspendedForHidden&&!A.paused&&(A.state==="playing"||A.state==="fly")){g.paused&&g.play().catch(()=>{});return}A.releaseSharedVideoPlayback&&this.hasActiveVideoConsumer(g,A.id)||g.paused||g.pause()}syncAudioSuspension(){const A=this.globallyPaused||this.suspendedForHidden;if(this.audioManager.setSuspended(A),!A)for(const g of this.slots.values()){if(g.type!=="svga"||!g.videoEntity||g.paused||g.state!=="playing"&&g.state!=="fly")continue;const I=g.videoEntity.params.fps,B=g.videoEntity.params.frames,Q=g.loopCount*B+g.currentFrame+g.accumulatedTime*I;this.audioManager.syncPlaybackScopeFrame(g,Q)}}applyPlaybackScopeMediaTime(A,g,I=!1,B=!1){var Q,E,i,e,t,a;const o=this.slots.get(A);if(!o)return;const s=Math.max(0,g)/1e3;if(o.type==="svga"&&o.videoEntity){const n=o.videoEntity.params.fps,r=o.videoEntity.params.frames;if(!(n>0)||!(r>0))return;const h=o.currentFrame,c=s*n,D=(Q=o.options.loop)!=null?Q:1;let w=!1;if(D===0){const l=Math.floor(c);o.loopCount=Math.floor(l/r),o.currentFrame=l%r,o.accumulatedTime=(c-l)/n}else{const l=Math.max(1,D)*r;if(c>=l)w=!0,o.loopCount=Math.max(1,D),o.currentFrame=r-1,o.accumulatedTime=0;else{const F=Math.floor(c);o.loopCount=Math.floor(F/r),o.currentFrame=F%r,o.accumulatedTime=(c-F)/n}}if(w?this.audioManager.stopAllForGift(o.id):this.audioManager.syncPlaybackScopeFrame(o,c,B),o.currentFrame!==h||I&&o.svgaInitialFrameEmitted!==!0){const l=this.handles.get(A);l&&((E=o.onFrame)==null||E.call(o,o.currentFrame,l)),o.svgaInitialFrameEmitted=!0}return}if(o.webcodecsPlayback){const n=o.webcodecsPlayback.duration;if(!(n>0)||!Number.isFinite(n))return;const r=(i=o.options.loop)!=null?i:1;if(r===0)o.loopCount=Math.floor(s/n),o.wcPlaybackTime=s%n;else{const h=Math.max(1,r)*n;s>=h?(o.loopCount=Math.max(1,r),o.wcPlaybackTime=Math.max(0,n-1e-6)):(o.loopCount=Math.floor(s/n),o.wcPlaybackTime=s%n)}if(o.webcodecsSharedState){const h=Math.max(0,(performance.now()-o.webcodecsSharedState.startedAtMs)/1e3);o.wcSharedTimeOffset=o.wcPlaybackTime-h}(t=(e=o.webcodecsPlayback).ensureDecodedThrough)==null||t.call(e,o.wcPlaybackTime);return}if(o.videoElement){const n=o.videoElement.duration,r=(a=o.options.loop)!=null?a:1;if(n>0&&Number.isFinite(n))if(r===0)o.loopCount=Math.floor(s/n),o.videoElement.currentTime=s%n;else{const h=Math.max(1,r)*n;s>=h?(o.loopCount=Math.max(1,r),o.videoElement.currentTime=Math.max(0,n-1e-6)):(o.loopCount=Math.floor(s/n),o.videoElement.currentTime=s%n)}else o.videoElement.currentTime=s}}prewarmSVGAClipMeshes(A,g){return this.svgaBatch.prewarmClipMeshes(A,g)}prewarmSVGAClipMeshesForFrame(A,g,I){return this.svgaBatch.prewarmClipMeshesForFrame(A,g,I)}prewarmSVGAShapeMeshes(A){return this.svgaBatch.prewarmShapeMeshes(this.backend,A)}retainSVGAHybridMeshes(A){this.svgaBatch.retainHybridMeshes(this.backend,A)}releaseSVGAHybridMeshes(A){this.svgaBatch.releaseHybridMeshes(this.backend,A)}hydrateSVGAClipMeshes(A){this.svgaBatch.hydrateClipMeshes(A)}snapshotSVGAClipMeshes(A){return this.svgaBatch.snapshotClipMeshes(A)}renderLoop(A){var g,I,B;if(this.destroyed||!this.running)return;if(this.pendingAtomicFrameRetry){if(this.pendingAtomicFrameRetry=!1,this.forceNextDraw=!1,this.lastTime=A,this.runtimeRetryFrameCount++,this.emitRuntimeDiagnostic({type:"svga-frame-retry"}),this.destroyed)return;const e=this.drawPreparedFrameWithReplay(this.getRenderOrderedSlots(),!0);if(this.destroyed)return;e&&this.resetAtomicRetryCycle(),this.scheduleNextFrame();return}const Q=Math.max(0,A-this.lastTime),E=Q/1e3;this.lastTime=A;let i=this.forceNextDraw;this.advancedSharedWebCodecsScratch.clear(),this.activeSharedWebCodecsScratch.clear();for(const e of this.frameControllers)if(e.active&&(i=e.tick(A,Q)||i),this.destroyed)return;for(const e of this.slots.values())!e.paused&&!e.playbackScopeControlled&&e.state==="playing"&&e.webcodecsPlayback&&e.webcodecsSharedState&&this.activeSharedWebCodecsScratch.add(e.webcodecsSharedState.id);for(const[e,t]of this.slots){if(t.paused||t.state==="loading"){if(t.paused&&!t.playbackScopeControlled&&t.state==="playing"&&t.webcodecsPlayback&&t.webcodecsSharedState&&this.activeSharedWebCodecsScratch.has(t.webcodecsSharedState.id)&&(this.tickSharedWebCodecs(t,A,!1),this.destroyed))return;continue}const a=this.handles.get(e);if(this.postAnimator.applyAnimatedState(t,A)&&(i=!0),this.destroyed||!t.playbackScopeControlled&&t.type==="svga"&&t.videoEntity&&t.state==="playing"&&(i=this.tickSVGA(t,E,a,A)||i,this.destroyed)||!t.playbackScopeControlled&&t.type==="image"&&t.state==="playing"&&(i=this.tickImage(t,E,a,A)||i,this.destroyed))return;if(!t.playbackScopeControlled&&(t.type==="vap"||t.type==="alphaVideo")&&t.webcodecsPlayback&&t.state==="playing"){if(t.webcodecsSharedState)this.tickSharedWebCodecs(t,A,!0);else{if(this.tickWebCodecs(t,E,a),this.destroyed)return;(B=(I=t.webcodecsPlayback).ensureDecodedThrough)==null||B.call(I,(g=t.wcPlaybackTime)!=null?g:0)}if(this.destroyed)return}}if(i=this.postAnimator.hasActiveAnimations()||i,this.postAnimator.update(A),!this.destroyed&&(i=this.removeFinished()||i,!this.destroyed&&(i=this.vapRenderer.syncVideoTextures(this.backend,this.slots)||i,!this.destroyed&&(i=this.alphaVideoRenderer.syncVideoTextures(this.backend,this.slots)||i,!this.destroyed)))){if(i){this.forceNextDraw=!1;const e=this.getRenderOrderedSlots();if(this.destroyed)return;const t=this.drawPreparedFrameWithReplay(e);if(this.destroyed)return;t&&this.resetAtomicRetryCycle()}this.scheduleNextFrame()}}drawPreparedFrameWithReplay(A,g=!1){if(this.destroyed)return!1;try{return this.drawPreparedFrame(A),!this.destroyed}catch(I){if(this.destroyed)return!1;const B=this.abortPreparedFrame(I);if(this.destroyed)return!1;if(!B)return this.recordReplayFailure(I),!1;if(!(I instanceof lI)&&!(I instanceof uE)){if(g)return this.recordReplayFailure(I),this.destroyed||console.error("[GiftStage:SVGA] scheduled atomic frame retry failed",I),!1;throw I}I instanceof lI&&this.atomicRetryProgressEntities.add(I.entity);try{return!(this.destroyed||(this.drawPreparedFrame(A),this.destroyed))}catch(Q){return this.destroyed||(this.abortPreparedFrame(Q),this.destroyed)||(this.recordReplayFailure(Q),this.destroyed)||(this.shouldScheduleAtomicRetry(Q)&&(this.pendingAtomicFrameRetry=!0,this.forceNextDraw=!0),console.error("[GiftStage:SVGA] atomic frame replay failed",Q)),!1}}}abortPreparedFrame(A){if(this.destroyed)return!1;let g=!0;if(this.svgaBatch.abortFrame(),this.destroyed||A instanceof zg&&(this.emitRuntimeDiagnostic({type:"stencil-transaction-failure",message:A.message}),this.destroyed))return!1;try{const I=this.backend.abortFrame();I.submitted||(g=!1,this.backendQuarantined=!0,this.pendingAtomicFrameRetry=!1,this.emitRuntimeDiagnostic({type:"backend-quarantined",message:`abort-frame rejected (${I.reason})${I.message?`: ${I.message}`:""}`}))}catch(I){g=!1,this.backendQuarantined=!0,this.pendingAtomicFrameRetry=!1,this.emitRuntimeDiagnostic({type:"backend-quarantined",message:this.runtimeErrorMessage(I)}),console.error("[GiftStage:SVGA] backend frame abort failed",I)}finally{this.destroyed||(this.runtimeFrameAbortCount++,this.emitRuntimeDiagnostic({type:"svga-frame-abort",message:this.runtimeErrorMessage(A)}))}return g}recordReplayFailure(A){this.runtimeReplayFailureCount++,this.emitRuntimeDiagnostic({type:"svga-frame-replay-failed",message:this.runtimeErrorMessage(A)})}shouldScheduleAtomicRetry(A){return A instanceof lI?this.atomicRetryProgressEntities.has(A.entity)?this.atomicRetryUsedForGenericFailure?!1:(this.atomicRetryUsedForGenericFailure=!0,!0):(this.atomicRetryProgressEntities.add(A.entity),!0):this.atomicRetryUsedForGenericFailure?!1:(this.atomicRetryUsedForGenericFailure=!0,!0)}resetAtomicRetryCycle(){this.pendingAtomicFrameRetry=!1,this.atomicRetryUsedForGenericFailure=!1,this.atomicRetryProgressEntities.clear()}runtimeErrorMessage(A){return A instanceof Error?A.message:String(A)}scheduleNextFrame(){if(this.destroyed){this.running=!1,this.rafId=null,this.lastTime=0;return}this.needsContinuousFrame()?this.rafId=requestAnimationFrame(this.onAnimationFrame):(this.running=!1,this.rafId=null,this.lastTime=0)}drawPreparedFrame(A){if(!this.destroyed){if(this.backendQuarantined)throw new Error("GPU backend is quarantined");this.svgaBatch.beginFrame(this.backend),!this.destroyed&&(this.assertBackendOperation("begin-frame",this.backend.beginFrame({stencil:this.svgaBatch.requiresStencil(A)})),!this.destroyed&&(this.particleBatchRenderer.prepareFrame(),!this.destroyed&&(this.particleBatchRenderer.draw("behind-media"),!this.destroyed&&(this.drawRenderLayers(A),!this.destroyed&&(this.particleBatchRenderer.draw("above-media"),!this.destroyed&&(this.svgaBatch.endFrame(),!this.destroyed&&this.assertBackendOperation("end-frame",this.backend.endFrame())))))))}}assertBackendOperation(A,g){if(!g.submitted)throw this.emitRuntimeDiagnostic({type:"backend-operation-rejected",message:`${A} rejected (${g.reason})${g.message?`: ${g.message}`:""}`}),new ma(A,g)}tickSharedWebCodecs(A,g,I){var B,Q;const E=A.webcodecsSharedState;if(!E)return;const i=Math.max(E.playback.duration,1e-9),e=Math.max(0,(g-E.startedAtMs)/1e3),t=Number.isFinite(A.wcSharedTimeOffset)?A.wcSharedTimeOffset:0;if(A.wcPlaybackTime=((e+t)%i+i)%i,!!I){if(t===0){if(this.advancedSharedWebCodecsScratch.has(E.id))return;this.advancedSharedWebCodecsScratch.add(E.id)}(Q=(B=E.playback).ensureDecodedThrough)==null||Q.call(B,A.wcPlaybackTime)}}tickWebCodecs(A,g,I){var B,Q;const E=A.webcodecsPlayback;if(!E)return;const i=Math.max(E.duration,1e-9);if(!Number.isFinite(i))return;const e=(B=A.options.loop)!=null?B:1;let t=((Q=A.wcPlaybackTime)!=null?Q:0)+g;if(e===0){A.wcPlaybackTime=(t%i+i)%i,this.wcDbgLogTickOnce(A,i,A.wcPlaybackTime,e);return}const a=Math.floor(t/i);if(A.loopCount+a>=e){A.loopCount=e,A.wcPlaybackTime=i-1e-6,this.wcDbgLogTickOnce(A,i,A.wcPlaybackTime,e),this.onWebCodecsPlaybackComplete(A,I);return}A.loopCount+=a,A.wcPlaybackTime=t-a*i,this.wcDbgLogTickOnce(A,i,A.wcPlaybackTime,e)}wcDbgLogTickOnce(A,g,I,B){var Q;this.wcDbgTickOnce.has(A.id)||(this.wcDbgTickOnce.add(A.id),console.info("[GiftStage:WC] clock tick",{giftId:A.id,type:A.type,state:A.state,paused:A.paused,duration:g,wcPlaybackTime:I,loop:(Q=A.options.loop)!=null?Q:1,maxLoopsEffective:B,backend:this.backend.type,canvasCss:`${this.backend.canvas.clientWidth}x${this.backend.canvas.clientHeight}`,canvasBuf:`${this.backend.canvas.width}x${this.backend.canvas.height}`}))}onWebCodecsPlaybackComplete(A,g){var I;(I=A.onComplete)==null||I.call(A,g),A.state=A.options.clearsAfterStop===!1?"stopped":"finished"}tickSVGA(A,g,I,B){var Q,E;const i=A.videoEntity,e=i.params.fps,t=i.params.frames;if(e<=0||t<=0)return!1;const a=1/e,o=A.currentFrame;A.accumulatedTime+=g;const s=Math.floor(A.accumulatedTime/a);if(s<=0)return!1;A.accumulatedTime-=s*a;const n=(Q=A.options.loop)!=null?Q:1,r=A.loopCount*t+A.currentFrame+s;return n===0?(A.loopCount=Math.floor(r/t),A.currentFrame=r%t):r>=n*t?(A.loopCount=n,A.currentFrame=t-1,this.onGiftPlayComplete(A,I,B)):(A.loopCount=Math.floor(r/t),A.currentFrame=r%t),A.currentFrame=Math.max(0,Math.min(A.currentFrame,t-1)),A.currentFrame!==o&&(this.audioManager.tickFrame(A,A.currentFrame),(E=A.onFrame)==null||E.call(A,A.currentFrame,I),A.svgaInitialFrameEmitted=!0),A.currentFrame!==o}onGiftPlayComplete(A,g,I){var B;(B=A.onComplete)==null||B.call(A,g),A.state=A.options.clearsAfterStop===!1?"stopped":"finished"}tickImage(A,g,I,B){var Q;const E=(Q=A.options.duration)!=null?Q:0;return!(E>0)||(A.accumulatedTime+=g,A.accumulatedTime*1e3<E)?!1:(A.accumulatedTime=E/1e3,this.onGiftPlayComplete(A,I,B),!0)}removeFinished(){const A=this.finishedSlotIdsScratch;A.length=0;for(const[g,I]of this.slots)I.state==="finished"&&A.push(g);for(const g of A)this.removeSlot(g);return A.length>0}getRenderOrderedSlots(){const A=this.visibleSlotsScratch;A.length=0;for(const g of this.sortedSlots)g.state!=="playing"&&g.state!=="fly"&&g.state!=="stopped"||A.push(g);return A}drawRenderLayers(A){var g,I;let B=0;for(;B<A.length;){const Q=(g=A[B].zIndex)!=null?g:0;let E=B+1;for(;E<A.length&&((I=A[E].zIndex)!=null?I:0)===Q;)E++;this.drawLayer(this.collapseCoincidentVisualRange(A,B,E)),B=E}}collapseCoincidentVisualDuplicates(A){return this.collapseCoincidentVisualRange(A,0,A.length)}collapseCoincidentVisualRange(A,g,I){const B=this.coincidentSeenScratch,Q=this.collapsedLayerScratch;B.clear(),Q.length=0;for(let E=I-1;E>=g;E-=1){const i=A[E],e=this.getCoincidentVisualKey(i);e&&B.has(e)||(e&&B.add(e),Q.push(i))}return Q.reverse(),Q}getCoincidentVisualKey(A){var g,I,B,Q,E;if(A.motionTrackBinding||this.postAnimator.hasAnimation(A.id))return null;const i=this.getBatchKey(A);if(i.includes(":-1:")||i.endsWith(":-1")||i==="svga::0")return null;const e=A.type==="svga"?`frame=${A.currentFrame}`:A.wcAtlasRect?`rect=${A.wcAtlasRect.x},${A.wcAtlasRect.y},${A.wcAtlasRect.w},${A.wcAtlasRect.h}`:"frame=shared-texture",t=A.type==="svga"?this.getSVGASlotTextureKey(A):"",a=(g=A.options.objectFit)!=null?g:"contain",o=(B=(I=A.options.transformOrigin)==null?void 0:I.x)!=null?B:"50%",s=(E=(Q=A.options.transformOrigin)==null?void 0:Q.y)!=null?E:"50%",n=A.coincidentVisualKeyCache;if(n&&n.resourceKey===i&&n.frameKey===e&&n.svgaSlotKey===t&&n.objectFit===a&&n.x===A.x&&n.y===A.y&&n.width===A.width&&n.height===A.height&&n.scale===A.scale&&n.opacity===A.opacity&&n.rotation===A.rotation&&n.originX===o&&n.originY===s)return n.key;const r=[A.type,i,e,t,`fit=${a}`,`x=${A.x}`,`y=${A.y}`,`w=${A.width}`,`h=${A.height}`,`scale=${A.scale}`,`opacity=${A.opacity}`,`rotation=${A.rotation}`,`origin=${o},${s}`].join("|");return A.coincidentVisualKeyCache={key:r,resourceKey:i,frameKey:e,svgaSlotKey:t,objectFit:a,x:A.x,y:A.y,width:A.width,height:A.height,scale:A.scale,opacity:A.opacity,rotation:A.rotation,originX:o,originY:s},r}getSVGASlotTextureKey(A){const g=A.svgaSlotTextures;if(!g||g.size===0)return"";const I=A.svgaSlotTextureKeyCache;if(I&&I.map===g&&I.size===g.size)return I.key;const B=Array.from(g.entries()).sort(([Q],[E])=>Q.localeCompare(E)).map(([Q,E])=>`${Q}:${E.texture.id}:${E.mode}:${E.logicalWidth}x${E.logicalHeight}`).join(",");return A.svgaSlotTextureKeyCache={key:B,map:g,size:g.size},B}drawLayer(A){if(A.length===0)return;let g=A[0].type,I=this.getBatchKey(A[0]);const B=this.drawRunScratch;B.length=0;for(const Q of A){const E=this.getBatchKey(Q);(Q.type!==g||E!==I)&&B.length>0&&(this.drawSlotRun(g,B),B.length=0),g=Q.type,I=E,B.push(Q)}B.length>0&&this.drawSlotRun(g,B),B.length=0}needsContinuousFrame(){var A;if(this.backendQuarantined)return!1;if(this.pendingAtomicFrameRetry)return!0;if(this.globallyPaused)return!1;if(this.hasActiveFrameController()||this.postAnimator.hasRunningAnimations())return!0;for(const g of this.slots.values())if(!(g.paused||g.state!=="playing")&&(g.type==="svga"&&g.videoEntity||g.type==="image"&&((A=g.options.duration)!=null?A:0)>0||(g.type==="vap"||g.type==="alphaVideo")&&g.webcodecsPlayback||(g.type==="vap"||g.type==="alphaVideo")&&g.videoElement&&typeof g.videoElement.requestVideoFrameCallback!="function"))return!0;return!1}hasActiveFrameController(){for(const A of this.frameControllers)if(A.active)return!0;return!1}insertSortedSlot(A){let g=0,I=this.sortedSlots.length;for(;g<I;){const B=g+I>>>1;PI.compareSlots(this.sortedSlots[B],A)<=0?g=B+1:I=B}this.sortedSlots.splice(g,0,A)}static compareSlots(A,g){var I,B,Q,E;const i=((I=A.zIndex)!=null?I:0)-((B=g.zIndex)!=null?B:0);return i!==0?i:((Q=A.renderOrder)!=null?Q:0)-((E=g.renderOrder)!=null?E:0)}drawSlotRun(A,g){if(g.length===0)return;if(A==="svga"){this.svgaBatch.drawSlots(this.backend,g);return}if(A==="image"){for(const B of g)this.imageRenderer.drawSlot(this.backend,B);return}const I=this.videoRunMapScratch;I.clear();for(const B of g)I.set(B.id,B);A==="vap"?this.vapRenderer.draw(this.backend,I):this.alphaVideoRenderer.draw(this.backend,I)}getBatchKey(A){var g,I,B,Q,E,i,e,t,a,o,s,n;const r=A.batchKeyCache;switch(A.type){case"svga":{const h=A.videoEntity,c=(g=h==null?void 0:h.atlasTextureHandles)!=null&&g.length?h.atlasTextureHandles:(I=h==null?void 0:h.atlasTextureHandle)!=null?I:null,D=A.svgaSlotTextures&&A.svgaSlotTextures.size>0?1:0,w=(Q=(B=A.motionTrackBinding)==null?void 0:B.buffer)!=null?Q:null;if(r&&r.d0===c&&r.d1===D&&r.d2===w)return r.key;const l=((E=h==null?void 0:h.atlasTextureHandles)!=null&&E.length?h.atlasTextureHandles:h!=null&&h.atlasTextureHandle?[h.atlasTextureHandle]:[]).map(y=>y.id).join(","),F=(i=w==null?void 0:w.id)!=null?i:"none",d=`svga:${l}:${D}:motion:${F}`;return A.batchKeyCache={key:d,d0:c,d1:D,d2:w},d}case"vap":{const h=A.videoTextureHandle,c=!!A.vapMixState,D=(e=A.options.objectFit)!=null?e:"contain";if(r&&r.d0===h&&r.d1===c&&r.d2===D)return r.key;const w=`vap:${c?"mixed":"video"}:${(t=h==null?void 0:h.id)!=null?t:-1}:${D}`;return A.batchKeyCache={key:w,d0:h,d1:c,d2:D},w}case"alphaVideo":{const h=A.videoTextureHandle,c=(a=A.options.objectFit)!=null?a:"contain";if(r&&r.d0===h&&r.d1===c)return r.key;const D=`alpha:${(o=h==null?void 0:h.id)!=null?o:-1}:${c}`;return A.batchKeyCache={key:D,d0:h,d1:c,d2:null},D}case"image":{const h=A.imageTextureHandle,c=(s=A.options.objectFit)!=null?s:"contain";if(r&&r.d0===h&&r.d1===c)return r.key;const D=`image:${(n=h==null?void 0:h.id)!=null?n:-1}:${c}`;return A.batchKeyCache={key:D,d0:h,d1:c,d2:null},D}}}deleteSVGAAtlasTextures(A){var g,I,B,Q;(g=A.svgaFrameTableState)!=null&&g.binding&&((B=(I=this.backend).deleteSVGAFrameTable)==null||B.call(I,A.svgaFrameTableState.binding),A.svgaFrameTableState=null,A.svgaTimelineDrawRuns=void 0,A.svgaHybridCommandTable=void 0);const E=(Q=A.atlasTextureHandles)!=null&&Q.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],i=new Set;for(const e of E)i.has(e.id)||(i.add(e.id),this.backend.deleteTexture(e))}destroy(){if(!this.destroyed){this.destroyed=!0,this.stop(),this.resetAtomicRetryCycle();for(const A of Array.from(this.slots.keys()))this.removeSlot(A);this.svgaBatch.destroy(this.backend),this.vapRenderer.destroy(this.backend),this.alphaVideoRenderer.destroy(this.backend),this.imageRenderer.destroy(this.backend),this.particleBatchRenderer.destroy(),this.postAnimator.destroy(),this.audioManager.destroy(),this.sortedSlots.length=0,this.visibleSlotsScratch.length=0,this.collapsedLayerScratch.length=0,this.drawRunScratch.length=0,this.coincidentSeenScratch.clear(),this.frameControllers.clear(),this.backend.destroy()}}}function DQ(){return typeof DecompressionStream!="undefined"}function Ag(){return typeof performance!="undefined"?performance.now():Date.now()}function fE(C){return C instanceof Error?`${C.name}: ${C.message}`:String(C)}async function Ja(C,A,g){const I=g?Ag():0,B=g?{inputBytes:C.byteLength,nativeAvailable:DQ(),nativeAttempts:[]}:null,Q=(i,e)=>(B&&(B.selectedPath=e,B.outputBytes=i.byteLength,B.totalMs=Ag()-I,g==null||g(B)),i),E=i=>{throw B&&(B.error=fE(i),B.totalMs=Ag()-I,g==null||g(B)),i};if(DQ())try{return Q(await FC(C,B!=null?B:void 0),"native")}catch(i){}try{const i=B?Ag():0,e=A();return B&&(B.wasmMs=Ag()-i),e?Q(e,"wasm"):Q(await FC(C,B!=null?B:void 0),"native-retry")}catch(i){return E(i)}}async function FC(C,A){if(typeof DecompressionStream!="undefined"){try{return await $B(C,"deflate",A==null?void 0:A.nativeAttempts)}catch(g){}try{return await $B(C.slice(2),"deflate-raw",A==null?void 0:A.nativeAttempts)}catch(g){}return $B(C.slice(2,-4),"deflate-raw",A==null?void 0:A.nativeAttempts)}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function $B(C,A,g){const I=g?Ag():0,B=g?{format:A,inputBytes:C.byteLength,inputChunks:1,writerSubmitMs:0,readMs:0,concatMs:0,totalMs:0,outputChunks:0,outputBytes:0,status:"failed"}:null;try{const Q=new DecompressionStream(A),E=Q.writable.getWriter(),i=Q.readable.getReader(),e=B?Ag():0,t=Promise.resolve(E.write(new Uint8Array(C.buffer,C.byteOffset,C.byteLength))),a=Promise.resolve(E.close());t.catch(()=>{}),a.catch(()=>{}),B&&(B.writerSubmitMs=Ag()-e);const o=[];let s=0;const n=B?Ag():0;for(;;){const{done:D,value:w}=await i.read();if(D)break;o.push(w),s+=w.length}await Promise.all([t,a]),B&&(B.readMs=Ag()-n,B.outputChunks=o.length,B.outputBytes=s);const r=B?Ag():0,h=new Uint8Array(s);let c=0;for(const D of o)h.set(D,c),c+=D.length;return B&&(B.concatMs=Ag()-r,B.totalMs=Ag()-I,B.status="success"),h}catch(Q){throw B&&(B.totalMs=Ag()-I,B.error=fE(Q)),Q}finally{B&&(g==null||g.push(B))}}typeof TextEncoder!="undefined"&&new TextEncoder;const lQ=typeof TextDecoder!="undefined"?new TextDecoder:null;function ME(C){const A=C instanceof Uint8Array?C:new Uint8Array(C);return lQ?lQ.decode(A):La(A)}function La(C){let A="";for(let g=0;g<C.length;g+=1){const I=C[g];if(I<128){A+=String.fromCharCode(I);continue}if(I>=192&&I<224&&g+1<C.length){const B=(I&31)<<6|C[++g]&63;A+=String.fromCharCode(B);continue}if(I>=224&&I<240&&g+2<C.length){const B=(I&15)<<12|(C[++g]&63)<<6|C[++g]&63;A+=String.fromCharCode(B);continue}if(I>=240&&I<248&&g+3<C.length){let B=(I&7)<<18|(C[++g]&63)<<12|(C[++g]&63)<<6|C[++g]&63;B-=65536,A+=String.fromCharCode(55296+(B>>10),56320+(B&1023));continue}A+="�"}return A}var Ha=Object.defineProperty,xa=(C,A,g)=>A in C?Ha(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,AC=(C,A,g)=>xa(C,typeof A!="symbol"?A+"":A,g);const ba=0,qa=1,va=2,Ta=5;class LC{constructor(A,g=0,I){AC(this,"view"),AC(this,"pos"),AC(this,"end"),this.view=new DataView(A.buffer,A.byteOffset,A.byteLength),this.pos=g,this.end=g+(I!=null?I:A.byteLength)}get remaining(){return this.end-this.pos}readVarint(){let A=0,g=0;for(;this.pos<this.end;){const I=this.view.getUint8(this.pos++);if(A|=(I&127)<<g,(I&128)===0)return A>>>0;g+=7}return A>>>0}readSignedVarint(){return this.readVarint()|0}readFloat(){const A=this.view.getFloat32(this.pos,!0);return this.pos+=4,A}readDouble(){const A=this.view.getFloat64(this.pos,!0);return this.pos+=8,A}readBytes(){const A=this.readVarint(),g=this.view.byteOffset+this.pos;this.pos+=A;const I=this.view.buffer.slice(g,g+A);return new Uint8Array(I)}readString(){const A=this.readBytes();return ME(A)}readTag(){if(this.pos>=this.end)return null;const A=this.readVarint();return{field:A>>>3,wire:A&7}}skip(A){switch(A){case ba:this.readVarint();break;case qa:this.pos+=8;break;case va:this.pos+=this.readVarint();break;case Ta:this.pos+=4;break}}sub(A){const g=new LC(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,g}}function Wa(C){const A={viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.viewBoxWidth=C.readFloat();break;case 2:A.viewBoxHeight=C.readFloat();break;case 3:A.fps=C.readSignedVarint();break;case 4:A.frames=C.readSignedVarint();break;default:C.skip(g.wire)}}return A}function Va(C){const A={x:0,y:0,width:0,height:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.width=C.readFloat();break;case 4:A.height=C.readFloat();break;default:C.skip(g.wire)}}return A}function NE(C){const A={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.a=C.readFloat();break;case 2:A.b=C.readFloat();break;case 3:A.c=C.readFloat();break;case 4:A.d=C.readFloat();break;case 5:A.tx=C.readFloat();break;case 6:A.ty=C.readFloat();break;default:C.skip(g.wire)}}return A}function wQ(C){const A={r:0,g:0,b:0,a:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.r=C.readFloat();break;case 2:A.g=C.readFloat();break;case 3:A.b=C.readFloat();break;case 4:A.a=C.readFloat();break;default:C.skip(g.wire)}}return A}function Za(C){const A={fill:null,stroke:null,strokeWidth:0},g=[];for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:{const B=C.readVarint();A.fill=wQ(C.sub(B));break}case 2:{const B=C.readVarint();A.stroke=wQ(C.sub(B));break}case 3:A.strokeWidth=C.readFloat();break;case 4:A.lineCap=C.readVarint();break;case 5:A.lineJoin=C.readVarint();break;case 6:A.miterLimit=C.readFloat();break;case 7:g[0]=C.readFloat();break;case 8:g[1]=C.readFloat();break;case 9:g[2]=C.readFloat();break;default:C.skip(I.wire)}}return g.some(I=>I>0)&&(A.lineDash=g.filter(I=>I>0)),A}function Xa(C){let A="";for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A=C.readString();break;default:C.skip(g.wire)}}return A}function Oa(C){const A={x:0,y:0,width:0,height:0,cornerRadius:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.width=C.readFloat();break;case 4:A.height=C.readFloat();break;case 5:A.cornerRadius=C.readFloat();break;default:C.skip(g.wire)}}return A}function Pa(C){const A={x:0,y:0,radiusX:0,radiusY:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.x=C.readFloat();break;case 2:A.y=C.readFloat();break;case 3:A.radiusX=C.readFloat();break;case 4:A.radiusY=C.readFloat();break;default:C.skip(g.wire)}}return A}function ja(C){let A=0,g="",I,B,Q={fill:null,stroke:null,strokeWidth:0},E={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;C.remaining>0;){const i=C.readTag();if(!i)break;switch(i.field){case 1:A=C.readVarint();break;case 2:{const e=C.readVarint();g=Xa(C.sub(e));break}case 3:{const e=C.readVarint();I=Oa(C.sub(e));break}case 4:{const e=C.readVarint();B=Pa(C.sub(e));break}case 10:{const e=C.readVarint();Q=Za(C.sub(e));break}case 11:{const e=C.readVarint();E=NE(C.sub(e));break}default:C.skip(i.wire)}}return A===3?{kind:"keep"}:g?{kind:"path",pathData:g,style:Q,transform:E}:I?{kind:"rect",rect:I,style:Q,transform:E}:B?{kind:"ellipse",ellipse:B,style:Q,transform:E}:null}function za(C){const A={alpha:0,layout:null,transform:null,clipPath:""},g=[];for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:A.alpha=C.readFloat();break;case 2:{const B=C.readVarint();A.layout=Va(C.sub(B));break}case 3:{const B=C.readVarint();A.transform=NE(C.sub(B));break}case 4:A.clipPath=C.readString();break;case 5:{const B=C.readVarint(),Q=ja(C.sub(B));Q&&g.push(Q);break}default:C.skip(I.wire)}}return g.length>0&&(A.shapes=g),A}function _a(C){var A;const g={imageKey:"",frames:[]};for(;C.remaining>0;){const B=C.readTag();if(!B)break;switch(B.field){case 1:g.imageKey=C.readString();break;case 2:{const Q=C.readVarint();g.frames.push(za(C.sub(Q)));break}default:C.skip(B.wire)}}let I=null;for(const B of g.frames){const Q=B.shapes;if(!Q||Q.length===0){B.shapes=null,I=null;continue}if(((A=Q[0])==null?void 0:A.kind)==="keep"){B.shapes=I;continue}const E=Q.filter(i=>i.kind!=="keep");B.shapes=E.length>0?E:null,I=B.shapes}return g}function $a(C){const A={audioKey:"",startFrame:0,endFrame:0,startTime:0,totalTime:0};for(;C.remaining>0;){const g=C.readTag();if(!g)break;switch(g.field){case 1:A.audioKey=C.readString();break;case 2:A.startFrame=C.readSignedVarint();break;case 3:A.endFrame=C.readSignedVarint();break;case 4:A.startTime=C.readSignedVarint();break;case 5:A.totalTime=C.readSignedVarint();break;default:C.skip(g.wire)}}return A}function Ao(C){let A="",g=new Uint8Array(0);for(;C.remaining>0;){const I=C.readTag();if(!I)break;switch(I.field){case 1:A=C.readString();break;case 2:g=C.readBytes();break;default:C.skip(I.wire)}}return{key:A,value:g}}function yC(C){const A=new LC(C),g=[],I={version:"",params:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},images:new Map,audios:[]};for(;A.remaining>0;){const Q=A.readTag();if(!Q)break;switch(Q.field){case 1:I.version=A.readString();break;case 2:{const E=A.readVarint();I.params=Wa(A.sub(E));break}case 3:{const E=A.readVarint(),{key:i,value:e}=Ao(A.sub(E));I.images.set(i,e);break}case 4:{const E=A.readVarint();g.push(_a(A.sub(E)));break}case 5:{const E=A.readVarint();I.audios.push($a(A.sub(E)));break}default:A.skip(Q.wire)}}const B=PQ(g,I.params.frames);return Wg(I.params,B),{version:I.version,params:I.params,images:I.images,spriteTable:B,audios:I.audios}}function FQ(C,A){C.f32(A.r),C.f32(A.g),C.f32(A.b),C.f32(A.a)}function yQ(C){return{r:C.f32(),g:C.f32(),b:C.f32(),a:C.f32()}}function go(C,A){var g,I,B;const Q=(I=(g=A.lineDash)==null?void 0:g.filter(i=>i>0))!=null?I:[];let E=0;if(A.fill&&(E|=1),A.stroke&&(E|=2),A.lineCap!==void 0&&(E|=4),A.lineJoin!==void 0&&(E|=8),A.miterLimit!==void 0&&(E|=16),Q.length>0&&(E|=32),C.u8(E),A.fill&&FQ(C,A.fill),A.stroke&&FQ(C,A.stroke),C.f32((B=A.strokeWidth)!=null?B:0),A.lineCap!==void 0&&C.i32(A.lineCap),A.lineJoin!==void 0&&C.i32(A.lineJoin),A.miterLimit!==void 0&&C.f32(A.miterLimit),Q.length>0){C.u32(Q.length);for(const i of Q)C.f32(i)}}function Io(C){const A=C.u8(),g=A&1?yQ(C):null,I=A&2?yQ(C):null,B={fill:g,stroke:I,strokeWidth:C.f32()};if(A&4&&(B.lineCap=C.i32()),A&8&&(B.lineJoin=C.i32()),A&16&&(B.miterLimit=C.f32()),A&32){const Q=C.u32(),E=[];for(let i=0;i<Q;i++)E.push(C.f32());E.length>0&&(B.lineDash=E)}return B}async function Bo(C,A,g){var I,B,Q,E;C.u8(A.kind==="path"?0:A.kind==="rect"?1:2),await C.stringCooperative((I=A.pathData)!=null?I:"",g);const i=(B=A.rect)!=null?B:{x:0,y:0,width:0,height:0,cornerRadius:0};C.f32(i.x),C.f32(i.y),C.f32(i.width),C.f32(i.height),C.f32((Q=i.cornerRadius)!=null?Q:0);const e=(E=A.ellipse)!=null?E:{x:0,y:0,radiusX:0,radiusY:0};C.f32(e.x),C.f32(e.y),C.f32(e.radiusX),C.f32(e.radiusY),go(C,A.style),C.f32(A.transform.a),C.f32(A.transform.b),C.f32(A.transform.c),C.f32(A.transform.d),C.f32(A.transform.tx),C.f32(A.transform.ty)}function Co(C){const A=C.u8();if(A===3)throw new Error("Unexpected shape keep marker in sprite table shapes group");const g=C.string(),I={x:C.f32(),y:C.f32(),width:C.f32(),height:C.f32(),cornerRadius:C.f32()},B={x:C.f32(),y:C.f32(),radiusX:C.f32(),radiusY:C.f32()},Q=Io(C),E={a:C.f32(),b:C.f32(),c:C.f32(),d:C.f32(),tx:C.f32(),ty:C.f32()};return A===0?{kind:"path",pathData:g,style:Q,transform:E}:A===1?{kind:"rect",rect:I,style:Q,transform:E}:{kind:"ellipse",ellipse:B,style:Q,transform:E}}async function Qo(C,A,g){C.u32(A.spriteCount);for(const I of A.imageKeys)await C.stringCooperative(I,g),await g();C.pad4(),C.u32(A.frameCount),await C.rawBytesCooperative(new Uint8Array(A.frameData.buffer,A.frameData.byteOffset,A.frameData.byteLength),g),C.u32(A.clipPaths.length);for(const I of A.clipPaths)await C.stringCooperative(I,g),await g();C.pad4(),await C.rawBytesCooperative(new Uint8Array(A.clipPathIndex.buffer,A.clipPathIndex.byteOffset,A.clipPathIndex.byteLength),g),C.u32(A.shapesTable.length);for(const I of A.shapesTable){C.u32(I.length);for(const B of I)await Bo(C,B,g),await g()}C.pad4(),await C.rawBytesCooperative(new Uint8Array(A.shapesIndex.buffer,A.shapesIndex.byteOffset,A.shapesIndex.byteLength),g),C.u8(A.hasAnyShapes?1:0)}async function UE(C,A){const g=C.u32(),I=[];for(let w=0;w<g;w++)I.push(C.string()),await A();C.pad4();const B=C.u32(),Q=g*B*vg;C.pad4();const E=C.position,i=new Float32Array(C.sourceBuffer(),E,Q);C.skip(Q*4),await A();const e=C.u32(),t=[];for(let w=0;w<e;w++)t.push(C.string()),await A();C.pad4();const a=g*B,o=C.position,s=new Int32Array(C.sourceBuffer(),o,a);C.skip(a*4),await A();const n=C.u32(),r=[];for(let w=0;w<n;w++){const l=C.u32(),F=[];for(let d=0;d<l;d++)F.push(Co(C)),await A();r.push(F)}C.pad4();const h=g*B,c=C.position,D=new Int32Array(C.sourceBuffer(),c,h);return C.skip(h*4),await A(),{spriteCount:g,frameCount:B,imageKeys:I,frameData:i,clipPaths:t,clipPathIndex:s,shapesTable:r,shapesIndex:D,hasAnyShapes:C.u8()!==0}}var Eo=Object.defineProperty,io=(C,A,g)=>A in C?Eo(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,gC=(C,A,g)=>io(C,typeof A!="symbol"?A+"":A,g);const eo=1397182530,to=2;function ao(C){return C+3&-4}let oo=class{constructor(A){this.buffer=A,gC(this,"view"),gC(this,"bytes"),gC(this,"offset",0),this.view=new DataView(A),this.bytes=new Uint8Array(A)}get position(){return this.offset}skip(A){this.offset+=A}pad4(){this.offset=ao(this.offset)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}i32(){const A=this.view.getInt32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),g=this.offset;return this.offset+=A,this.bytes.subarray(g,g+A)}bytesRef(){const A=this.u32(),g=this.offset;return this.offset+=A,{offset:g,length:A}}string(){return ME(this.bytesValue())}sourceBuffer(){return this.buffer}};async function kE(C,A,g,I){const B=gg({maxBudgetMs:g}),Q=async()=>{b(I,"SVGA payload deserialization aborted"),B.shouldYield()&&await B.yield(),b(I,"SVGA payload deserialization aborted")};b(I,"SVGA payload deserialization aborted");const E=new oo(C);if(E.u32()!==eo)throw new Error("Invalid SVGA worker payload magic");if(E.u16()!==to)throw new Error("Unsupported SVGA worker payload version");const i=E.u16(),e=E.string(),t={viewBoxWidth:E.f32(),viewBoxHeight:E.f32(),fps:E.f32(),frames:E.u32()},a=[],o=E.u32();for(let h=0;h<o;h++)a.push({audioKey:E.string(),startFrame:E.i32(),endFrame:E.i32(),startTime:E.i32(),totalTime:E.i32()}),await Q();const s=[],n=E.u32();for(let h=0;h<n;h++){const c=E.string(),D=E.bytesRef();s.push({key:c,offset:D.offset,length:D.length}),await Q()}const r=await UE(E,Q);return(i&2)!==0&&(r.allFramesInsideViewBox=(i&1)!==0),b(I,"SVGA payload deserialization aborted"),{version:e,params:t,audios:a,spriteTable:r,images:{},imageBlob:E.sourceBuffer(),imageEntries:s,__debug:A}}const YE=`function DA() {
|
|
2759
2759
|
return typeof DecompressionStream != "undefined";
|
|
2760
2760
|
}
|
|
2761
2761
|
function c() {
|
|
@@ -4649,5 +4649,5 @@ m.onmessage = (t) => {
|
|
|
4649
4649
|
v_texcoord = a_texCoord;
|
|
4650
4650
|
v_alpha_texCoord = a_alpha_texCoord;
|
|
4651
4651
|
}
|
|
4652
|
-
`}function fs(C,A,g){return{vertex:Ss(g),fragment:us(C,A,g)}}function Ms(C,A,g,I,B=new Float32Array(g.size*_I)){B.fill(0);const Q=A.get(I);if(!Q||Q.length===0)return B;const[E,i]=C.info.rgbFrame;let e=0;for(const t of Q){const a=g.get(String(t.srcId));if(!a)continue;if(e+_I>B.length)break;const[o,s,n,r]=t.frame,[h,c,D,w]=t.mFrame,l=pB(o+E,s+i,n,r,C.info.videoW,C.info.videoH),F=pB(h,c,D,w,C.info.videoW,C.info.videoH);B[e++]=a,B[e++]=l[0],B[e++]=l[1],B[e++]=l[2],B[e++]=l[3],B[e++]=F[0],B[e++]=F[1],B[e++]=F[2],B[e++]=F[3]}return B}class Ns{constructor(A,g,I,B,Q,E=!0){this.config=A,this.frameMap=g,ig(this,"canvas"),ig(this,"gl"),ig(this,"program"),ig(this,"vertexShader"),ig(this,"fragmentShader"),ig(this,"vertexBuffer"),ig(this,"videoTexture"),ig(this,"imagePosLoc"),ig(this,"imagePositionsScratch"),ig(this,"resourceEntries"),ig(this,"textureUnitBySrcId",new Map),ig(this,"videoTextureWidth",1),ig(this,"videoTextureHeight",1);var i;if(I.size===0)throw new Error("VAP mix composer requires at least one slot resource");this.canvas=Gs(B,Q);const e={alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1};let t=!0,a=this.canvas.getContext("webgl2",e);if(a||(t=!1,a=this.canvas.getContext("webgl",e)||this.canvas.getContext("experimental-webgl",e)),!a)throw new Error("VAP mixed rendering requires WebGL support");this.gl=a;const o=Math.max(1,a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS)),s=Math.max(0,o-1),n=[];let r=1;for(const u of(i=A.src)!=null?i:[]){const R=I.get(String(u.srcId));if(!R)continue;if(r>s){console.warn("[GiftStage] VAP mixed resources exceed texture unit limit, skipping",{srcId:u.srcId,srcTag:u.srcTag,maxUnits:o});continue}const M=LQ(a,r,R.source,!0),N={srcId:String(u.srcId),unit:r,texture:M};n.push(N),this.textureUnitBySrcId.set(N.srcId,N.unit),r++}if(n.length===0)throw new Error("VAP mixed rendering could not bind any slot resources");this.resourceEntries=n;let h=1;for(const u of g.values())h=Math.max(h,u.length);this.imagePositionsScratch=new Float32Array(h*_I);const c=fs(this.resourceEntries.length,h,t),D=ds(a,c.vertex,c.fragment);this.program=D.program,this.vertexShader=D.vertexShader,this.fragmentShader=D.fragmentShader,this.imagePosLoc=a.getUniformLocation(this.program,"image_pos"),this.videoTexture=LQ(a,0);const w=a.getUniformLocation(this.program,"u_image_video");w!==null&&a.uniform1i(w,0);const l=a.getUniformLocation(this.program,"u_rgbPremultiplied");l!==null&&a.uniform1f(l,E?1:0);for(const u of this.resourceEntries){const R=a.getUniformLocation(this.program,`u_image${u.unit}`);R!==null&&a.uniform1i(R,u.unit)}const F=a.createBuffer();if(!F)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=F,a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,Rs(A.info),a.STATIC_DRAW);const d=6*Float32Array.BYTES_PER_ELEMENT,y=a.getAttribLocation(this.program,"a_position"),G=a.getAttribLocation(this.program,"a_texCoord"),f=a.getAttribLocation(this.program,"a_alpha_texCoord");a.enableVertexAttribArray(y),a.vertexAttribPointer(y,2,a.FLOAT,!1,d,0),a.enableVertexAttribArray(G),a.vertexAttribPointer(G,2,a.FLOAT,!1,d,2*Float32Array.BYTES_PER_ELEMENT),a.enableVertexAttribArray(f),a.vertexAttribPointer(f,2,a.FLOAT,!1,d,4*Float32Array.BYTES_PER_ELEMENT),a.viewport(0,0,this.canvas.width,this.canvas.height),a.disable(a.BLEND),a.disable(a.DEPTH_TEST),a.clearColor(0,0,0,0),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE)}render(A,g){const I=this.gl;I.useProgram(this.program),I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,this.videoTexture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1);const B=vI(A),Q=TI(A);B>0&&Q>0&&B===this.videoTextureWidth&&Q===this.videoTextureHeight?I.texSubImage2D(I.TEXTURE_2D,0,0,0,I.RGBA,I.UNSIGNED_BYTE,A):(I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),B>0&&Q>0&&(this.videoTextureWidth=B,this.videoTextureHeight=Q)),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);const E=Ms(this.config,this.frameMap,this.textureUnitBySrcId,g,this.imagePositionsScratch);return this.imagePosLoc!==null&&I.uniform1fv(this.imagePosLoc,E),I.clear(I.COLOR_BUFFER_BIT),I.drawArrays(I.TRIANGLE_STRIP,0,4),this.canvas}destroy(){const A=this.gl;for(const I of this.resourceEntries)A.deleteTexture(I.texture);A.deleteTexture(this.videoTexture),A.deleteBuffer(this.vertexBuffer),A.deleteProgram(this.program),A.deleteShader(this.vertexShader),A.deleteShader(this.fragmentShader);const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}}var Us=Object.defineProperty,ks=(C,A,g)=>A in C?Us(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,Yg=(C,A,g)=>ks(C,typeof A!="symbol"?A+"":A,g);const vE=1397178947,TE=14,Ys=8,Ug=64*1024;function WE(C){return C+3&-4}class ps{constructor(A=1024){Yg(this,"buffer"),Yg(this,"view"),Yg(this,"bytes"),Yg(this,"offset",0),Yg(this,"encoder",new TextEncoder),this.buffer=new ArrayBuffer(A),this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}ensure(A){const g=this.offset+A;if(g<=this.buffer.byteLength)return;let I=this.buffer.byteLength;for(;I<g;)I*=2;const B=new ArrayBuffer(I);new Uint8Array(B).set(this.bytes.subarray(0,this.offset)),this.buffer=B,this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}async ensureCooperative(A,g){const I=this.offset+A;if(I<=this.buffer.byteLength)return;let B=this.buffer.byteLength;for(;B<I;)B*=2;const Q=new ArrayBuffer(B),E=new Uint8Array(Q);for(let i=0;i<this.offset;i+=Ug){const e=Math.min(i+Ug,this.offset);E.set(this.bytes.subarray(i,e),i),e<this.offset&&await(g==null?void 0:g())}this.buffer=Q,this.view=new DataView(this.buffer),this.bytes=E}u8(A){this.ensure(1),this.view.setUint8(this.offset,A),this.offset+=1}u16(A){this.ensure(2),this.view.setUint16(this.offset,A,!0),this.offset+=2}u32(A){this.ensure(4),this.view.setUint32(this.offset,A,!0),this.offset+=4}i32(A){this.ensure(4),this.view.setInt32(this.offset,A|0,!0),this.offset+=4}f32(A){this.ensure(4),this.view.setFloat32(this.offset,A,!0),this.offset+=4}bytesValue(A){this.u32(A.byteLength),this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}rawBytes(A){this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}async bytesValueCooperative(A,g){await this.ensureCooperative(4+A.byteLength,g),this.u32(A.byteLength),await this.rawBytesCooperative(A,g)}async rawBytesCooperative(A,g){await this.ensureCooperative(A.byteLength,g);for(let I=0;I<A.byteLength;I+=Ug){const B=Math.min(I+Ug,A.byteLength);this.bytes.set(A.subarray(I,B),this.offset),this.offset+=B-I,B<A.byteLength&&await(g==null?void 0:g())}}async stringCooperative(A,g){await this.bytesValueCooperative(this.encoder.encode(A),g)}string(A){this.bytesValue(this.encoder.encode(A))}pad4(){const A=WE(this.offset)-this.offset;for(let g=0;g<A;g++)this.u8(0)}finish(){return this.buffer.slice(0,this.offset)}async finishCooperative(A){const g=new Uint8Array(this.offset),I=this.bytes.subarray(0,this.offset);for(let B=0;B<I.byteLength;B+=Ug){const Q=Math.min(B+Ug,I.byteLength);g.set(I.subarray(B,Q),B),Q<I.byteLength&&A.shouldYield()&&await A.yield()}return g.buffer}}class Ks{constructor(A){this.buffer=A,Yg(this,"view"),Yg(this,"bytes"),Yg(this,"offset",0),Yg(this,"decoder",new TextDecoder),this.view=new DataView(A),this.bytes=new Uint8Array(A)}get position(){return this.offset}skip(A){this.offset+=A}pad4(){this.offset=WE(this.offset)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}i32(){const A=this.view.getInt32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),g=this.bytes.slice(this.offset,this.offset+A);return this.offset+=A,g}async ownedBytesValueCooperative(A){const g=this.u32(),I=this.bytes.subarray(this.offset,this.offset+g);this.offset+=g;const B=new Uint8Array(g);for(let Q=0;Q<g;Q+=Ug){const E=Math.min(Q+Ug,g);B.set(I.subarray(Q,E),Q),E<g&&A.shouldYield()&&await A.yield()}return B.buffer}string(){return this.decoder.decode(this.bytesValue())}sourceBuffer(){return this.buffer}}function VE(C){var A,g;let I=0;for(const Q of C.atlasPages)I+=Q.imageBytes.byteLength;for(const[Q,E]of C.audioBlobs)I+=Q.length*2+E.byteLength;for(const[Q]of C.atlasRects)I+=Q.length*2+20;if(C.clipMeshes)for(const[Q,E]of C.clipMeshes)I+=Q.length*2+E.vertices.byteLength+E.indices.byteLength;const B=C.spriteTable;I+=B.frameData.byteLength,I+=B.clipPathIndex.byteLength,I+=B.shapesIndex.byteLength;for(const Q of B.imageKeys)I+=Q.length*2;for(const Q of B.clipPaths)I+=Q.length*2;for(const Q of B.shapesTable)for(const E of Q)I+=((g=(A=E.pathData)==null?void 0:A.length)!=null?g:0)*2+96;return I}async function sg(C){C.shouldYield()&&await C.yield()}async function ms(C,A){var g,I,B;const Q=C.spriteTable,E=gg({maxBudgetMs:A}),i=()=>sg(E),e=new ps(Ys+VE(C)+Ug);e.u32(vE),e.u16(TE),e.u16(Q.allFramesInsideViewBox===void 0?0:2|(Q.allFramesInsideViewBox?1:0)),e.f32(C.params.viewBoxWidth),e.f32(C.params.viewBoxHeight),e.f32(C.params.fps),e.u32(C.params.frames),e.u32(C.atlasPages.length);for(const t of C.atlasPages)e.u32(t.width),e.u32(t.height),await e.bytesValueCooperative(new Uint8Array(t.imageBytes),i),await sg(E);e.u32(C.atlasRects.size);for(const[t,a]of C.atlasRects)await e.stringCooperative(t,i),e.u32((g=a.textureIndex)!=null?g:0),e.f32(a.x),e.f32(a.y),e.f32(a.w),e.f32(a.h),await sg(E);e.u32(C.audios.length);for(const t of C.audios)await e.stringCooperative(t.audioKey,i),e.u32(t.startFrame),e.u32(t.endFrame),e.f32(t.startTime),e.f32(t.totalTime),await sg(E);e.u32(C.audioBlobs.size);for(const[t,a]of C.audioBlobs)await e.stringCooperative(t,i),await e.bytesValueCooperative(new Uint8Array(a),i),await sg(E);if(await Qo(e,Q,i),e.u32((B=(I=C.clipMeshes)==null?void 0:I.size)!=null?B:0),C.clipMeshes)for(const[t,a]of C.clipMeshes)await e.stringCooperative(t,i),await e.bytesValueCooperative(new Uint8Array(a.vertices.buffer,a.vertices.byteOffset,a.vertices.byteLength),i),await e.bytesValueCooperative(new Uint8Array(a.indices.buffer,a.indices.byteOffset,a.indices.byteLength),i),await sg(E);return e.finishCooperative(E)}async function Js(C,A){const g=gg({maxBudgetMs:A}),I=new Ks(C);if(I.u32()!==vE)throw new Error("Invalid SVGA cache binary magic");if(I.u16()!==TE)throw new Error("Unsupported SVGA cache binary version");const B=I.u16(),Q={viewBoxWidth:I.f32(),viewBoxHeight:I.f32(),fps:I.f32(),frames:I.u32()},E=I.u32(),i=[];for(let D=0;D<E;D++){const w=I.u32(),l=I.u32(),F=await I.ownedBytesValueCooperative(g);i.push({width:w,height:l,imageBytes:F}),await sg(g)}const e=I.u32(),t=new Map;for(let D=0;D<e;D++){const w=I.string(),l=I.u32();t.set(w,{textureIndex:l,x:I.f32(),y:I.f32(),w:I.f32(),h:I.f32()}),await sg(g)}const a=I.u32(),o=[];for(let D=0;D<a;D++)o.push({audioKey:I.string(),startFrame:I.u32(),endFrame:I.u32(),startTime:I.f32(),totalTime:I.f32()}),await sg(g);const s=I.u32(),n=new Map;for(let D=0;D<s;D++){const w=I.string();n.set(w,await I.ownedBytesValueCooperative(g)),await sg(g)}const r=await UE(I,()=>sg(g));(B&2)!==0&&(r.allFramesInsideViewBox=(B&1)!==0),Wg(Q,r);const h=I.u32(),c=new Map;for(let D=0;D<h;D++){const w=I.string(),l=new Float32Array(await I.ownedBytesValueCooperative(g)),F=new Uint32Array(await I.ownedBytesValueCooperative(g));w&&l.length>=6&&F.length>=3&&c.set(w,{vertices:l,indices:F}),await sg(g)}return{params:Q,spriteTable:r,audios:o,audioBlobs:n,atlasRects:t,atlasPages:i,clipMeshes:c}}function dC(C){return`svga-asset:${C}`}function RC(C){return`svga-asset-bin:${C}`}async function Ls(C,A={}){const g=vt(dC(C),"svga-asset");if(g)return Wg(g.params,g.spriteTable),g;const I=await Tt(RC(C));if(!I)return null;try{const B=await Js(I,A.frameBudgetMs);return nE(dC(C),"svga-asset",B,I.byteLength),B}catch(B){return Vt(RC(C)),null}}async function rB(C,A,g={}){Wg(A.params,A.spriteTable);const I=await ms(A,g.frameBudgetMs);nE(dC(C),"svga-asset",A,Math.max(I.byteLength,VE(A))),await Wt(RC(C),I)}function qg(C){return typeof C=="number"&&Number.isFinite(C)&&C>0}function Hs(C,A){const g=qg(C)?C*.5:0,I=qg(A)?A:0;return{width:g,height:I}}function xs(C,A,g,I){const B=qg(A.width)?A.width:void 0,Q=qg(A.height)?A.height:void 0,E=qg(C.width)?C.width:void 0,i=qg(C.height)?C.height:void 0,e=C.useOriginalSize===!0;if(E&&i)return{width:E,height:i};if(E)return B&&Q?{width:E,height:E*Q/B}:{width:E,height:E};if(i)return B&&Q?{width:i*B/Q,height:i}:{width:i,height:i};let t=B!=null?B:0,a=Q!=null?Q:0;if(t>0&&a>0&&qg(g)&&qg(I)&&(!e||t>g||a>I)){const o=Math.min(g/t,I/a);t*=o,a*=o}return{width:t,height:a}}function bs(C,A){var g,I,B;if(typeof C=="string"){const E=(g=/^data:(image\/[a-z0-9.+-]+)/i.exec(C))==null?void 0:g[1];if(E)return E;const i=(B=(I=C.split(/[?#]/,1)[0])==null?void 0:I.toLowerCase())!=null?B:"";if(i.endsWith(".svg"))return"image/svg+xml";if(i.endsWith(".png"))return"image/png";if(i.endsWith(".jpg")||i.endsWith(".jpeg"))return"image/jpeg";if(i.endsWith(".webp"))return"image/webp";if(i.endsWith(".gif"))return"image/gif";if(i.endsWith(".avif"))return"image/avif"}if(A[0]===137&&A[1]===80&&A[2]===78&&A[3]===71)return"image/png";if(A[0]===255&&A[1]===216&&A[2]===255)return"image/jpeg";if(A[0]===71&&A[1]===73&&A[2]===70)return"image/gif";if(A[0]===82&&A[1]===73&&A[2]===70&&A[3]===70&&A[8]===87&&A[9]===69&&A[10]===66&&A[11]===80)return"image/webp";const Q=new TextDecoder().decode(A.subarray(0,Math.min(A.length,256)));return/^\s*(?:<\?xml[^>]*>\s*)?<svg[\s>]/i.test(Q)?"image/svg+xml":""}function HQ(C,A){return new Promise((g,I)=>{const B=URL.createObjectURL(C),Q=new Image;Q.crossOrigin="anonymous";const E=()=>{A==null||A.removeEventListener("abort",e),Q.onload=null,Q.onerror=null},i=t=>{E(),URL.revokeObjectURL(B),I(t)},e=()=>i(cA("Image decoding aborted"));Q.onload=()=>{E();const t=Q.naturalWidth||Q.width,a=Q.naturalHeight||Q.height;if(t<=0||a<=0){URL.revokeObjectURL(B),I(new Error("Decoded image has invalid dimensions"));return}g({source:Q,width:t,height:a,sourcePremultiplied:!1,dispose:()=>URL.revokeObjectURL(B)})},Q.onerror=()=>i(new Error("Failed to decode image")),A==null||A.addEventListener("abort",e,{once:!0}),Q.src=B})}async function eC(C,A){b(A,"Image loading aborted");const g=typeof C=="string"?await BI(C,A):C;b(A,"Image loading aborted");const I=new Uint8Array(g),B=new Blob([I],{type:bs(C,I)});if(typeof createImageBitmap=="function"){let Q=null;try{Q=await createImageBitmap(B,{premultiplyAlpha:"premultiply"})}catch(E){b(A,"Image decoding aborted");try{Q=await createImageBitmap(B)}catch(i){return b(A,"Image decoding aborted"),HQ(B,A)}}if(A!=null&&A.aborted)throw Q.close(),cA("Image decoding aborted");if(Q.width<=0||Q.height<=0)throw Q.close(),new Error("Decoded image has invalid dimensions");return{source:Q,width:Q.width,height:Q.height,sourcePremultiplied:!0,dispose:()=>Q.close()}}return HQ(B,A)}const Dg=8;var qs=Object.defineProperty,vs=(C,A,g)=>A in C?qs(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,ZA=(C,A,g)=>vs(C,typeof A!="symbol"?A+"":A,g);function xQ(C,A){return Number.isFinite(C)?C:A}class Ts{constructor(A,g,I){ZA(this,"data"),ZA(this,"stride"),ZA(this,"gpuBuffer"),ZA(this,"backend"),ZA(this,"_released",!1),this.backend=A,this.data=g,this.stride=I,this.gpuBuffer=A&&A.type==="webgpu"?A.createBuffer(g,"storage"):null}get released(){return this._released}release(){var A;this._released||(this._released=!0,this.gpuBuffer&&((A=this.backend)==null||A.deleteBuffer(this.gpuBuffer)),this.backend=null)}}class GB{constructor(A,g){ZA(this,"trackCount"),ZA(this,"sampleCount"),ZA(this,"sampleIntervalMs"),ZA(this,"durationMs"),ZA(this,"table"),ZA(this,"gpuGlobalsBuffer"),ZA(this,"backend"),ZA(this,"gpuGlobals",new Float32Array(8)),ZA(this,"scratch",new Float32Array(Dg)),ZA(this,"_released",!1);var I;this.backend=A,this.trackCount=Math.max(1,Math.floor(g.trackCount)),this.sampleCount=Math.max(1,Math.floor(g.sampleCount)),this.sampleIntervalMs=Math.max(.001,xQ(g.sampleIntervalMs,1e3/60));const B=this.trackCount*this.sampleCount*Dg;if(g.samples.length!==B)throw new Error(`MotionTrack samples length must be ${B}, got ${g.samples.length}`);this.durationMs=Math.max(0,xQ((I=g.durationMs)!=null?I:(this.sampleCount-1)*this.sampleIntervalMs,0)),this.table=new Ts(A,new Float32Array(g.samples),Dg),this.gpuGlobals[1]=this.sampleIntervalMs,this.gpuGlobals[2]=this.sampleCount,this.gpuGlobalsBuffer=(A==null?void 0:A.type)==="webgpu"?A.createBuffer(this.gpuGlobals,"uniform"):null}get released(){return this._released}sample(A,g,I=this.scratch){if(this._released)throw new Error("MotionTrack is released");if(!Number.isInteger(A)||A<0||A>=this.trackCount)throw new RangeError(`MotionTrack index out of range: ${A}`);if(I.length<Dg)throw new RangeError(`MotionTrack output requires ${Dg} floats`);const B=Math.max(0,Math.min(this.sampleCount-1,g/this.sampleIntervalMs)),Q=Math.floor(B),E=Math.min(this.sampleCount-1,Q+1),i=A*this.sampleCount*Dg,e=i+Q*Dg,t=i+E*Dg,a=this.table.data,s=Q!==E&&a[e+7]>.5?B-Q:0;for(let n=0;n<Dg;n++){const r=a[e+n];I[n]=n>=6||s<=0?r:r+(a[t+n]-r)*s}return I}updateGpuGlobals(A,g,I){!this.gpuGlobalsBuffer||!this.backend||(this.gpuGlobals[0]=A,this.gpuGlobals[3]=g,this.gpuGlobals[4]=I,this.backend.updateBuffer(this.gpuGlobalsBuffer,this.gpuGlobals,0))}release(){var A;this._released||(this._released=!0,this.gpuGlobalsBuffer&&((A=this.backend)==null||A.deleteBuffer(this.gpuGlobalsBuffer)),this.table.release())}}var Ws=Object.defineProperty,Vs=(C,A,g)=>A in C?Ws(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,VA=(C,A,g)=>Vs(C,typeof A!="symbol"?A+"":A,g);class ZE{constructor(A,g=`scope-${SC()}`){VA(this,"id"),VA(this,"host"),VA(this,"controller",new AbortController),VA(this,"gifts",new Map),VA(this,"tracks",new Set),VA(this,"bindings",new Set),VA(this,"particleBatches",new Set),VA(this,"particleBatchGroups",new Set),VA(this,"frameListeners",new Set),VA(this,"finishListeners",new Set),VA(this,"unregisterController"),VA(this,"_state","idle"),VA(this,"_currentTimeMs",0),VA(this,"durationMs",0),VA(this,"lastTickAtMs",0),this.host=A,this.id=g,this.unregisterController=A.registerFrameController(this)}get signal(){return this.controller.signal}get state(){return this._state}get currentTimeMs(){return this._currentTimeMs}get active(){return this._state==="playing"}async addGift(A){this.assertAlive();const g=await this.host.addGift({...A,startPaused:!0,playbackScopeControlled:!0,signal:this.signal});if(this.signal.aborted)throw g.destroy(),new DOMException("Playback scope was destroyed","AbortError");return this.gifts.set(g.id,g),g}createMotionTrack(A){this.assertAlive();const g=new GB(this.host.backend,A);return this.tracks.add(g),g}createParticleBatch(A){this.assertAlive();const g=this.host.createParticleBatch(A);return this.particleBatches.add(g),g.setTime(this._currentTimeMs),g}createParticleBatchGroup(A){if(this.assertAlive(),!this.host.createParticleBatchGroup)throw new Error("ParticleBatchGroup is not supported by this host");const g=this.host.createParticleBatchGroup(A);try{return g.setTime(this._currentTimeMs),this.particleBatchGroups.add(g),g}catch(I){throw g.destroy(),I}}bindMotion(A,g,I,B={}){var Q;if(this.assertAlive(),!this.gifts.has(A.id))throw new Error("Gift does not belong to this playback scope");if(!this.tracks.has(g))throw new Error("MotionTrack does not belong to this playback scope");const E={gift:A,track:g,trackIndex:I,center:B.center!==!1,gpuDriven:!1,scratch:new Float32Array(8)};this.bindings.add(E);const i=this.host.getSlot(A.id);i&&B.center!==!1&&g instanceof GB&&g.table.gpuBuffer&&g.gpuGlobalsBuffer&&this.host.backendType==="webgpu"&&i.type==="svga"&&i.videoEntity&&!((Q=i.svgaSlotTextures)!=null&&Q.size)&&i.options.objectFit!=="cover"&&!i.options.transformOrigin&&(E.gpuDriven=!0,i.motionTrackBinding={buffer:g.table.gpuBuffer,globalsBuffer:g.gpuGlobalsBuffer,trackIndex:I,sampleCount:g.sampleCount,sampleIntervalMs:g.sampleIntervalMs,currentTimeMs:this._currentTimeMs},i.x=0,i.y=0,i.motionScaleX=1,i.motionScaleY=1,i.rotation=0,i.opacity=1),E.gpuDriven||this.applyBinding(E,this._currentTimeMs);const e=E.gpuDriven?i==null?void 0:i.motionTrackBinding:null;return this.host.invalidate(),()=>{this.bindings.delete(E);const t=this.host.getSlot(A.id);E.gpuDriven&&t&&t.motionTrackBinding===e&&(t.motionTrackBinding=null,this.host.invalidate())}}onFrame(A){return this.frameListeners.add(A),()=>this.frameListeners.delete(A)}onFinish(A){return this.finishListeners.add(A),()=>this.finishListeners.delete(A)}start(A){var g;this.assertAlive(),this.durationMs=Math.max(0,A.durationMs),this._currentTimeMs=Math.max(0,Math.min(this.durationMs,(g=A.fromMs)!=null?g:0)),this.lastTickAtMs=performance.now(),this._state="playing";for(const I of this.gifts.values())I.resume();this.applyMediaTime(this._currentTimeMs,!0,!0),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.host.invalidate(!0)}pause(){if(this._state==="playing"){this._state="paused";for(const A of this.gifts.values())A.pause()}}resume(){if(this._state==="paused"){this.lastTickAtMs=performance.now(),this._state="playing";for(const A of this.gifts.values())A.resume();this.applyMediaTime(this._currentTimeMs,!1,!0),this.host.invalidate(!0)}}seek(A){this.assertAlive(),this._currentTimeMs=Math.max(0,Math.min(this.durationMs,A)),this._state==="playing"&&(this.lastTickAtMs=performance.now()),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.applyMediaTime(this._currentTimeMs,!1,!0),this.emitFrame(0),this.host.invalidate()}stop(){if(!(this._state==="destroyed"||this._state==="stopped")){this._state="stopped";for(const A of this.gifts.values())A.pause();this.host.invalidate()}}tick(A,g){if(this._state!=="playing")return!1;const I=Math.max(0,g),B=this.lastTickAtMs>0?Math.max(0,A-this.lastTickAtMs):I,Q=Math.min(I,B);if(this.lastTickAtMs=A,this._currentTimeMs=Math.min(this.durationMs,this._currentTimeMs+Q),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.applyMediaTime(this._currentTimeMs),this.emitFrame(Q),this._currentTimeMs>=this.durationMs){this._state="stopped";for(const E of this.gifts.values())E.pause();for(const E of this.finishListeners)E()}return!0}destroy(){var A;if(this._state!=="destroyed"){this._state="destroyed",this.controller.abort(),(A=this.unregisterController)==null||A.call(this),this.unregisterController=null;for(const g of this.bindings)this.bindings.delete(g);for(const g of this.gifts.values())this.host.removeGift(g.id);this.gifts.clear();for(const g of this.tracks)g.release();this.tracks.clear();for(const g of this.particleBatches)g.destroy();this.particleBatches.clear();for(const g of this.particleBatchGroups)g.destroy();this.particleBatchGroups.clear(),this.frameListeners.clear(),this.finishListeners.clear()}}applyAll(A){const g=this.host.backend;if(g){const{sx:I,sy:B}=Xg(g.canvas);for(const Q of this.tracks)Q instanceof GB&&Q.updateGpuGlobals(A,I,B)}for(const I of this.bindings)I.gpuDriven||this.applyBinding(I,A)}applyParticleTime(A){for(const g of this.particleBatches)g.setTime(A);for(const g of this.particleBatchGroups)g.setTime(A)}applyBinding(A,g){const I=this.host.getSlot(A.gift.id);if(!I)return;I.motionTrackBinding&&(I.motionTrackBinding.currentTimeMs=g);const B=A.track.sample(A.trackIndex,g,A.scratch),Q=this.host.backend;if(!Q)return;const{sx:E,sy:i}=Xg(Q.canvas),e=Number.isFinite(B[2])?B[2]:1,t=Number.isFinite(B[3])?B[3]:1;I.motionScaleX=e,I.motionScaleY=t,I.rotation=Number.isFinite(B[4])?B[4]:0,I.opacity=B[6]>.5?Math.max(0,Math.min(1,B[5])):0;const a=B[0]*E,o=B[1]*i;I.x=A.center?a-I.width*e/2:a,I.y=A.center?o-I.height*t/2:o,I.batchKeyCache=void 0,I.coincidentVisualKeyCache=void 0,I.svgaStaticBatchCache=null}applyMediaTime(A,g=!1,I=!1){for(const B of this.gifts.values())this.host.applyMediaTime(B.id,A,g,I)}emitFrame(A){const g={nowMs:this._currentTimeMs,deltaMs:A,progress:this.durationMs>0?this._currentTimeMs/this.durationMs:1};for(const I of this.frameListeners)I(g)}assertAlive(){if(this._state==="destroyed")throw new Error("Playback scope is destroyed")}}var Zs=Object.defineProperty,Xs=(C,A,g)=>A in C?Zs(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,v=(C,A,g)=>Xs(C,typeof A!="symbol"?A+"":A,g);function bQ(C){return Number.isFinite(C)?Math.max(0,Math.min(1,C)):1}function Os(C){return"delayMs"in C}const wA="GiftStage load canceled";class qQ extends Error{}function fg(C){let A=!1;return()=>{A||(A=!0,C())}}function Ps(C,A=typeof navigator!="undefined"?navigator.hardwareConcurrency:void 0){if(C!=null)return Math.max(1,Math.floor(Number.isFinite(C)?C:1));const g=A!=null&&Number.isFinite(A)&&A>0?Math.floor(A):4;return Math.max(1,Math.min(4,Math.floor(g/2)))}const Gg=class zA{constructor(A){v(this,"sharedSVGAEntities",new Map),v(this,"pendingSharedSVGAEntities",new Map),v(this,"svgaFullClipPrewarmPromises",new WeakMap),v(this,"svgaPersistentCacheWriters",new WeakMap),v(this,"svgaPersistentCacheWritePromises",new WeakMap),v(this,"sharedVideoSources",new Map),v(this,"sharedHtmlVideos",new Map),v(this,"sharedVideoTextures",new Map),v(this,"pendingSharedHtmlVideos",new Map),v(this,"sharedImageTextures",new Map),v(this,"pendingSharedImageTextures",new Map),v(this,"sharedWebCodecsPlaybacks",new Map),v(this,"pendingSharedWebCodecsPlaybacks",new Map),v(this,"sharedWebCodecsSurfaces",new Map),v(this,"completedPlaybackSlots",new Set),v(this,"playbackCompleteWaiters",new Map),v(this,"canvas"),v(this,"backend",null),v(this,"manager",null),v(this,"options"),v(this,"ready"),v(this,"destroyed",!1),v(this,"resizeObserver",null),v(this,"nextRenderOrder",0),v(this,"nextSharedWebCodecsPlaybackId",1),v(this,"nextSharedWebCodecsSurfaceId",1),v(this,"playbackScopes",new Set),v(this,"mountedPlugins",new Set),v(this,"svgaReportedPathKeys",new WeakMap),v(this,"svgaFrameTablePromises",new WeakMap),v(this,"svgaFrameTableResidentBytes",new WeakMap),v(this,"svgaFrameTableReservedBytes",new WeakMap),v(this,"releasedSVGATimelineEntities",new WeakSet),v(this,"activeSVGAGpuFrameTableBytes",0),v(this,"reservedSVGAGpuFrameTableBytes",0),v(this,"svgaBackendLost",!1),v(this,"svgaPreparingEntities",new Set),v(this,"activeSVGATimelineEntities",new Set),v(this,"svgaEntitySources",new WeakMap),v(this,"runtimeFallbackCount",0),v(this,"runtimeObserverErrorCount",0),v(this,"lastRuntimeDiagnostic",null),v(this,"playbackPaused",!1),v(this,"onWindowLayout",()=>{this.destroyed||this.syncCanvasSize()}),v(this,"onVisibilityChange",()=>{var g;this.destroyed||((g=this.manager)==null||g.setHidden(document.hidden),document.hidden?this.clearAllHtmlVideoPlaybackWatchdogs():this.rearmHtmlVideoPlaybackWatchdogs())}),this.options=A,this.canvas=document.createElement("canvas"),this.canvas.style.cssText="position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:9999;",A.container.appendChild(this.canvas),document.addEventListener("visibilitychange",this.onVisibilityChange),this.ready=this.init()}backingStoreDpr(){const A=this.options.resolution;if(A!=null&&A>0&&Number.isFinite(A))return A;const g=typeof window!="undefined"&&window.devicePixelRatio>0?window.devicePixelRatio:1;return Math.min(g,2)}syncCanvasSize(){var A;Ae(this.canvas,this.backingStoreDpr(),this.options.maxRenderSize),(A=this.manager)==null||A.syncSlotLayoutFromOptions()}resourcePipelineConcurrency(){return Ps(this.options.maxConcurrentParse)}async init(){var A,g,I,B;this.syncCanvasSize(),document.hidden||await new Promise(t=>requestAnimationFrame(()=>t())),this.syncCanvasSize(),bt({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:zA.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:zA.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES}),NC((A=this.options.svgaWorkerTaskConcurrency)!=null?A:1);const Q=(g=this.options.preferWebGPU)!=null?g:!0,E=this.options.antialias,[i]=await Promise.all([XQ(this.canvas,Q,E,this.options.forceWebGL1===!0),IE()]);this.backend=i;const e=i;(I=i.setRuntimeDiagnosticHandler)==null||I.call(i,t=>{this.emitRuntimeDiagnostic({type:t.type,...t.message?{message:t.message}:{}})}),(B=e.setDeviceLostHandler)==null||B.call(e,()=>this.handleSVGABackendLoss()),this.manager=new PI(this.backend,t=>{this.fallbackSVGAFrameTable(t,"validation-failed")},t=>{this.emitRuntimeDiagnostic(t)}),this.manager.setHidden(document.hidden),this.resizeObserver=new ResizeObserver(()=>{this.destroyed||this.syncCanvasSize()}),this.resizeObserver.observe(this.canvas),window.addEventListener("resize",this.onWindowLayout),window.addEventListener("orientationchange",this.onWindowLayout)}svgaParseOptions(A){return{useWorker:this.options.svgaParseInWorker!==!1,svgaLoadFrameBudgetMs:this.options.svgaLoadFrameBudgetMs,svgaWorkerFrameBudgetMs:this.options.svgaWorkerFrameBudgetMs,svgaWorkerTaskConcurrency:this.options.svgaWorkerTaskConcurrency,svgaWorkerImageDecodeConcurrency:this.options.svgaWorkerImageDecodeConcurrency,svgaParseProfile:this.options.svgaParseProfile,signal:A}}svgaAtlasFrameBudgetMs(){const A=this.options.svgaLoadFrameBudgetMs,g=this.options.svgaAtlasFrameBudgetMs;return A==null?g:g==null?A:Math.min(A,g)}svgaClipFrameBudgetMs(){var A;const g=(A=this.options.svgaClipPrewarmFrameBudgetMs)!=null?A:8,I=this.options.svgaLoadFrameBudgetMs;return I==null?g:Math.min(I,g)}isSlotLoadActive(A){var g,I;return!this.destroyed&&((g=A.loadAbortController)==null?void 0:g.signal.aborted)!==!0&&((I=this.manager)==null?void 0:I.getSlot(A.id))===A}assertSlotLoadActive(A){if(!this.isSlotLoadActive(A))throw new Error(wA)}isLoadCanceled(A){return Kg(A)||A instanceof Error&&A.message===wA}currentCanvasCssSize(){const A=this.canvas.clientWidth||this.options.container.clientWidth||window.innerWidth||0,g=this.canvas.clientHeight||this.options.container.clientHeight||window.innerHeight||0;return{width:A,height:g}}async resolveGiftIntrinsicSize(A,g){switch(A.type){case"svga":{const I=await Uo(A.source,this.svgaParseOptions(g));return{width:I.viewBoxWidth,height:I.viewBoxHeight}}case"vap":{if(!A.config)throw new Error("VAP requires config");const I=await DC(A.config),B=AI(I.info);return{width:B.w,height:B.h}}case"alphaVideo":return this.probeVideoNaturalSize(A.source,"alphaVideo");case"image":{const I=await eC(A.source,g);try{return{width:I.width,height:I.height}}finally{I.dispose()}}}}async normalizeAddGiftOptions(A,g){if(A.width!=null&&A.height!=null)return A;const I=this.currentCanvasCssSize();if(A.objectFit==="cover"&&A.width==null&&A.height==null&&I.width>0&&I.height>0)return{...A,width:I.width,height:I.height};const B=g!=null?g:await this.resolveGiftIntrinsicSize(A,A.signal),Q=xs({width:A.width,height:A.height,useOriginalSize:A.useOriginalSize},B,I.width,I.height);return{...A,width:Q.width,height:Q.height}}resolveAnimationStepTarget(A,g){var I,B,Q,E,i,e;const{sx:t,sy:a}=Xg(this.canvas),o=(I=g.scaleTo)!=null?I:A.scale,s=g.flyTo!=null?g.flyTo.x*t:A.x+A.width*A.scale/2,n=g.flyTo!=null?g.flyTo.y*a:A.y+A.height*A.scale/2;return{targetX:s-A.width*o/2,targetY:n-A.height*o/2,targetScale:o,targetOpacity:bQ((B=g.opacity)!=null?B:A.opacity),targetRotation:(E=(Q=g.rotationTo)!=null?Q:A.rotation)!=null?E:0,duration:Math.max(1,(i=g.duration)!=null?i:600),easing:(e=g.easing)!=null?e:bE}}runGiftAnimationStep(A,g,I){const B=this.resolveAnimationStepTarget(A,I),Q=this.manager.postAnimator.startTweenPromise(A,B.targetX,B.targetY,B.targetScale,B.duration,B.easing,()=>{var E;return(E=I.onComplete)==null?void 0:E.call(I,g)},B.targetOpacity,B.targetRotation);return this.manager.invalidate({resetClock:!0}),Q}createGiftAnimationChain(A,g,I){const B=Array.isArray(I)?[...I]:I?[I]:[],Q=[];let E=!1,i=!1,e=null,t=null;const a=s=>new Promise(n=>{if(i){n();return}t=n,e=setTimeout(()=>{e=null,t=null,n()},Math.max(0,s))}),o={to:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push(s),o},then:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push(s),o},delay:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push({delayMs:Math.max(0,s)}),o},onComplete:s=>{if(E)throw new Error("Gift animation chain has already started");return Q.push(s),o},start:async(s="immediate")=>{var n,r;E=!0;const h=(n=this.manager)==null?void 0:n.getSlot(A.id);if(!h||h.state==="finished")return g;s==="afterGiftComplete"&&await this.waitForGiftPlaybackComplete(A.id);let c=!1;for(const D of B){if(i||!((r=this.manager)!=null&&r.getSlot(A.id))||A.state==="finished"){c=!0;break}Os(D)?await a(D.delayMs):await this.runGiftAnimationStep(A,g,D)}if(!c&&!i)for(const D of Q)D(g);return g},cancel:()=>{var s;i=!0,e!=null&&(clearTimeout(e),e=null),t==null||t(),t=null,(s=this.manager)==null||s.postAnimator.cancelForGift(A.id)}};return o}getGiftRenderInfo(A){var g,I,B,Q,E,i,e,t,a,o,s,n,r,h,c,D,w,l,F,d,y,G,f,u,R,M;if(A.type!=="svga")return null;const N=A.videoEntity,S=(I=(g=A.svgaFrameTableState)!=null?g:N==null?void 0:N.svgaFrameTableState)!=null?I:null,Y=N==null?void 0:N.spriteTable,U=N?(Q=(B=N.atlasTextureHandles)==null?void 0:B.length)!=null?Q:N.atlasTextureHandle?1:0:0,k=N&&(e=(i=(E=this.manager)==null?void 0:E.countCompatibleSVGAInstances)==null?void 0:i.call(E,N))!=null?e:0;if(S){const m=S.renderInfo.selectedPath,J=m==="cpu-reference",q=(t=S.renderInfo.frameTableBytes)!=null?t:S.renderInfo.tableBytes,_=(s=(o=(a=N==null?void 0:N.svgaHybridCommandTable)==null?void 0:a.byteLength)!=null?o:S.renderInfo.commandTableBytes)!=null?s:0;return{selectedPath:m,svgaFramePath:m,parentMotionMode:A.motionTrackBinding&&((n=this.backend)==null?void 0:n.type)==="webgpu"?"gpu-table":A.motionTrackBinding?"cpu-reference":void 0,backend:S.renderInfo.backend,requested:(h=(r=A.options.svgaFrameEvaluation)!=null?r:this.options.svgaFrameEvaluation)!=null?h:"auto",spriteCount:(c=Y==null?void 0:Y.spriteCount)!=null?c:S.renderInfo.spriteCount,frameCount:(D=Y==null?void 0:Y.frameCount)!=null?D:S.renderInfo.frameCount,compatibleInstanceCount:k,atlasPageCount:U,tableBytes:S.renderInfo.tableBytes,frameTableBytes:q,commandTableBytes:_,budgetBytes:S.renderInfo.budgetBytes,pathState:(w=S.renderInfo.pathState)!=null?w:S.renderInfo.fallbackReasons.includes("table-preparing")?"preparing":m==="cpu-reference"?"fallback":"settled",drawBatchMode:J?"per-slot":(l=A.svgaDrawBatchMode)!=null?l:m==="gpu-hybrid"?"hybrid-scheduled":"per-slot",drawCompatibleInstanceCount:J?1:(F=A.svgaDrawCompatibleInstanceCount)!=null?F:k,fallbackReasons:[...S.renderInfo.fallbackReasons],...S.renderInfo.fallbackReason?{fallbackReason:S.renderInfo.fallbackReason}:{}}}return{selectedPath:"cpu-reference",svgaFramePath:"cpu-reference",parentMotionMode:A.motionTrackBinding?"cpu-reference":void 0,backend:(y=(d=this.backend)==null?void 0:d.type)!=null?y:"webgl2",requested:(f=(G=A.options.svgaFrameEvaluation)!=null?G:this.options.svgaFrameEvaluation)!=null?f:"auto",spriteCount:(u=Y==null?void 0:Y.spriteCount)!=null?u:0,frameCount:(R=Y==null?void 0:Y.frameCount)!=null?R:0,compatibleInstanceCount:k,atlasPageCount:U,tableBytes:0,frameTableBytes:0,commandTableBytes:0,budgetBytes:(M=this.options.svgaGpuFrameTableBudgetBytes)!=null?M:32*1024*1024,pathState:"preparing",drawBatchMode:"per-slot",drawCompatibleInstanceCount:k,fallbackReasons:[A.options.svgaFrameEvaluation==="cpu"||this.options.svgaFrameEvaluation==="cpu"?"policy-disabled":"table-preparing"]}}reportSVGARenderPath(A){var g,I;this.ensureSVGATimelineBookkeeping();const B=this.getGiftRenderInfo(A);if(!B)return;const Q=`${B.selectedPath}|${B.pathState}|${B.drawBatchMode}|${B.drawCompatibleInstanceCount}|${B.fallbackReasons.join(",")}|${B.tableBytes}|${B.commandTableBytes}`;if(this.svgaReportedPathKeys.get(A)!==Q){this.svgaReportedPathKeys.set(A,Q);try{(I=(g=this.options).onSVGARenderPathChange)==null||I.call(g,{giftId:A.id,...B})}catch(E){this.recordObserverError("onSVGARenderPathChange",E)}}}async addGift(A){var g,I,B,Q,E,i,e,t,a,o,s,n;if(console.info("[GiftStage] addGift await ready…",A.type),await this.ready,b(A.signal,wA),console.info("[GiftStage] addGift ready, loading…",A.type),this.destroyed)throw new Error("GiftStage is destroyed");let r=null;A.type==="image"&&(r=await this.acquireImageTexture(A.source,A.signal));let h;try{h=await this.normalizeAddGiftOptions(A,r?{width:r.width,height:r.height}:void 0)}catch(u){throw r==null||r.release(),u}if(this.destroyed)throw r==null||r.release(),new Error("GiftStage is destroyed");const c=SC(),D=new AbortController,w=()=>D.abort();(g=A.signal)!=null&&g.aborted?w():(I=A.signal)==null||I.addEventListener("abort",w,{once:!0});const{sx:l,sy:F}=Xg(this.canvas),d=RE(h.x,h.y,h.width,h.height,this.canvas.clientWidth,this.canvas.clientHeight),y={id:c,type:h.type,state:"loading",options:h,zIndex:(B=h.zIndex)!=null?B:0,renderOrder:this.nextRenderOrder++,x:d.x*l,y:d.y*F,width:h.width*l,height:h.height*F,scale:1,opacity:bQ((Q=h.opacity)!=null?Q:1),rotation:Number.isFinite(h.rotation)?h.rotation:0,paused:h.startPaused===!0,playbackScopeControlled:h.playbackScopeControlled===!0,svgaInitialFrameEmitted:!1,currentFrame:0,accumulatedTime:0,lastTickTime:0,loopCount:0,svgaClipReadyFrame:null,videoEntity:null,loadAbortController:D,detachLoadAbortSignal:A.signal?()=>{var u;return(u=A.signal)==null?void 0:u.removeEventListener("abort",w)}:null,videoPlaybackWatchdogTimer:null,videoPlaybackCompletionStarted:!1,svgaSlotTextures:void 0,videoElement:null,releaseMediaSource:null,releaseSharedSVGAAsset:null,releaseSharedVideoPlayback:null,releaseSharedVideoTexture:null,webcodecsPlayback:null,webcodecsSharedState:null,releaseWebCodecsPlayback:null,wcPlaybackTime:0,videoTextureHandle:null,imageTextureHandle:(E=r==null?void 0:r.texture)!=null?E:null,releaseSharedImageTexture:(i=r==null?void 0:r.release)!=null?i:null,webcodecsSurface:null,releaseWebCodecsSurface:null,vapMixState:null,onFrame:h.onFrame,onComplete:void 0};let G;G={id:c,type:h.type,pause:()=>{var u,R,M,N;y.paused=!0,y.type==="svga"&&((u=this.manager)==null||u.audioManager.stopAllForGift(y.id)),this.clearHtmlVideoPlaybackWatchdog(y),(R=this.manager)==null||R.postAnimator.pauseForGift(y.id),(M=this.manager)==null||M.invalidate(),(N=this.manager)==null||N.syncVideoPlaybackForSlot(y)},resume:()=>{var u,R,M,N,S;if(y.paused=!1,(u=this.manager)==null||u.postAnimator.resumeForGift(y.id),(R=this.manager)==null||R.invalidate({resetClock:!0}),(M=this.manager)==null||M.syncVideoPlaybackForSlot(y),y.type==="svga"&&y.videoEntity&&!y.playbackScopeControlled){const Y=y.videoEntity.params.fps,U=y.videoEntity.params.frames,k=y.loopCount*U+y.currentFrame+y.accumulatedTime*Y;(N=this.manager)==null||N.audioManager.syncPlaybackScopeFrame(y,k),y.svgaInitialFrameEmitted!==!0&&((S=y.onFrame)==null||S.call(y,y.currentFrame,G),y.svgaInitialFrameEmitted=!0)}y.videoElement&&!y.releaseSharedVideoPlayback&&this.armHtmlVideoPlaybackWatchdog(y,y.videoElement)},destroy:()=>{this.removeGift(c)},getRenderInfo:()=>this.getGiftRenderInfo(y),animate:u=>this.createGiftAnimationChain(y,G,u)};const f=h.onComplete;y.onComplete=u=>{this.markGiftPlaybackComplete(y.id),f==null||f(u)},this.manager.addSlot(y,G);try{switch(h.type){case"svga":await this.loadSVGA(y);break;case"vap":await this.loadVAP(y,h);break;case"alphaVideo":await this.loadAlphaVideo(y,h);break;case"image":break}this.assertSlotLoadActive(y),h.type==="svga"&&y.state==="playing"||(y.state="playing",this.manager.invalidate({resetClock:!0}),h.type==="svga"&&y.videoEntity&&!y.paused&&!y.playbackScopeControlled&&(this.manager.audioManager.tickFrame(y,y.currentFrame),(e=y.onFrame)==null||e.call(y,y.currentFrame,G),y.svgaInitialFrameEmitted=!0)),this.manager.syncVideoPlaybackForSlot(y),y.webcodecsPlayback&&console.info("[GiftStage:WC] gift playing",{giftId:y.id,type:y.type,layoutBufPx:{x:y.x,y:y.y,w:y.width,h:y.height}}),h.type==="image"&&!(h.duration>0)&&this.markGiftPlaybackComplete(y.id)}catch(u){if(this.isLoadCanceled(u))return((t=this.manager)==null?void 0:t.getSlot(y.id))===y?this.manager.removeSlot(y.id):(a=this.manager)==null||a.releaseSlotResources(y),G;y.state="finished",(o=this.manager)==null||o.invalidate(),(n=(s=this.options).onError)==null||n.call(s,u instanceof Error?u:new Error(String(u)))}return G}async loadSVGA(A){var g,I,B,Q;const E=typeof A.options.source=="string"?A.options.source:null,i=(g=A.loadAbortController)==null?void 0:g.signal;if(E){const n=await this.acquireSharedSVGAEntity(E,i);if(!this.isSlotLoadActive(A))throw n.release(),new Error(wA);A.releaseSharedSVGAAsset=n.release,await this.finishLoadSVGA(A,n.entity,n.audioBlobs),this.assertSlotLoadActive(A);return}const{movie:e,imageBitmaps:t,audioBlobs:a}=await yB(A.options.source,this.svgaParseOptions(i));let o=null,s=!1;try{this.assertSlotLoadActive(A),o=await this.buildSVGAAtlasIfNeeded(t,!!E,!0,i),this.assertSlotLoadActive(A);const n={params:e.params,spriteTable:e.spriteTable,audios:e.audios,atlasTextureHandle:(I=o==null?void 0:o.textureHandle)!=null?I:null,atlasTextureHandles:(B=o==null?void 0:o.textureHandles)!=null?B:[],atlasRects:(Q=o==null?void 0:o.rects)!=null?Q:new Map,audioBuffers:new Map};await this.finishLoadSVGA(A,n,a),A.releaseSharedSVGAAsset=fg(()=>this.deleteSVGAAtlasTextures(n)),s=!0,this.assertSlotLoadActive(A),E&&(o!=null&&o.encodedPngBytesPromises)&&Promise.all(o.encodedPngBytesPromises).then(r=>{r.some(h=>!h)||rB(E,{params:e.params,spriteTable:e.spriteTable,audios:e.audios,audioBlobs:a,atlasRects:o.rects,atlasPages:o.pages.map((h,c)=>({width:h.atlasWidth,height:h.atlasHeight,imageBytes:r[c]}))},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})})}catch(n){throw s||this.deleteSVGAAtlasResultTextures(o),n}finally{for(const n of t.values())n.close()}}async acquireSharedSVGAEntity(A,g){const I=A,B=this.sharedSVGAEntities.get(I);if(B)return B.refs++,{entity:B.entity,audioBlobs:B.audioBlobs,release:()=>this.releaseSharedSVGAEntity(I)};let Q=this.pendingSharedSVGAEntities.get(I);if(!Q){const e=new AbortController;Q={cacheKey:I,controller:e,consumers:0,settled:!1,promise:null};const t=Q;Q.promise=this.buildSharedSVGAEntity(A,e.signal).finally(()=>{t.settled=!0,this.pendingSharedSVGAEntities.get(I)===t&&this.pendingSharedSVGAEntities.delete(I)}),this.pendingSharedSVGAEntities.set(I,Q)}let E;try{E=await this.waitForPendingSharedSVGAEntity(Q,g)}catch(e){throw e}let i=this.sharedSVGAEntities.get(I);return i?i.refs++:(i={refs:1,entity:E.entity,audioBlobs:E.audioBlobs},this.sharedSVGAEntities.set(I,i)),{entity:i.entity,audioBlobs:i.audioBlobs,release:()=>this.releaseSharedSVGAEntity(I)}}waitForPendingSharedSVGAEntity(A,g){return A.consumers++,new Promise((I,B)=>{let Q=!1;const E=e=>{Q||(Q=!0,g==null||g.removeEventListener("abort",i),A.consumers=Math.max(0,A.consumers-1),A.consumers===0&&!A.settled&&A.controller.abort(),e())},i=()=>{E(()=>B(cA(wA)))};if(g!=null&&g.aborted){i();return}g==null||g.addEventListener("abort",i,{once:!0}),A.promise.then(e=>E(()=>I(e)),e=>E(()=>B(e)))})}async buildSharedSVGAEntity(A,g){var I,B,Q,E,i;const e=await Ls(A,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs});if(b(g,wA),e){const o=await this.createCachedSVGAAtlasTextures(e.atlasPages,g);(I=this.manager)==null||I.hydrateSVGAClipMeshes(e.clipMeshes);const s={params:e.params,spriteTable:e.spriteTable,audios:e.audios,atlasTextureHandle:(B=o[0])!=null?B:null,atlasTextureHandles:o,atlasRects:e.atlasRects,audioBuffers:new Map};return this.svgaPersistentCacheWriters.set(s,async n=>{await rB(A,{params:e.params,spriteTable:e.spriteTable,audios:e.audios,audioBlobs:e.audioBlobs,atlasRects:e.atlasRects,atlasPages:e.atlasPages,clipMeshes:n},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})}),{entity:s,audioBlobs:e.audioBlobs}}let t=await yB(A,this.svgaParseOptions(g)),a=null;try{try{a=await this.buildSVGAAtlasIfNeeded(t.imageBitmaps,!0,!0,g)}catch(r){if(Kg(r)||!(r instanceof Zg))throw r;for(const h of t.imageBitmaps.values())h.close();t=await yB(A,this.svgaParseOptions(g)),a=await this.buildSVGAAtlasIfNeeded(t.imageBitmaps,!0,!1,g)}const{movie:o,audioBlobs:s}=t,n={params:o.params,spriteTable:o.spriteTable,audios:o.audios,atlasTextureHandle:(Q=a==null?void 0:a.textureHandle)!=null?Q:null,atlasTextureHandles:(E=a==null?void 0:a.textureHandles)!=null?E:[],atlasRects:(i=a==null?void 0:a.rects)!=null?i:new Map,audioBuffers:new Map};if(b(g,wA),a&&a.encodedPngBytesPromises){const r=a,h=a.encodedPngBytesPromises;this.svgaPersistentCacheWriters.set(n,async c=>{const D=await Promise.all(h);D.some(w=>!w)||await rB(A,{params:o.params,spriteTable:o.spriteTable,audios:o.audios,audioBlobs:s,atlasRects:r.rects,atlasPages:r.pages.map((w,l)=>({width:w.atlasWidth,height:w.atlasHeight,imageBytes:D[l]})),clipMeshes:c},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})})}else a||this.svgaPersistentCacheWriters.set(n,async r=>{await rB(A,{params:o.params,spriteTable:o.spriteTable,audios:o.audios,audioBlobs:s,atlasRects:new Map,atlasPages:[],clipMeshes:r},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})});return b(g,wA),{entity:n,audioBlobs:s}}catch(o){throw this.deleteSVGAAtlasResultTextures(a),o}finally{for(const o of t.imageBitmaps.values())o.close()}}releaseSharedSVGAEntity(A){const g=this.sharedSVGAEntities.get(A);g&&(g.refs=Math.max(0,g.refs-1),!(g.refs>0)&&(this.deleteSVGAAtlasTextures(g.entity),this.sharedSVGAEntities.delete(A)))}async createCachedSVGAAtlasTextures(A,g){var I;const B=[],Q=gg({maxBudgetMs:this.svgaAtlasFrameBudgetMs()}),E=A.map(i=>createImageBitmap(new Blob([i.imageBytes],{type:"image/png"}),{premultiplyAlpha:"premultiply"}));try{for(let i=0;i<A.length;i++){b(g,wA);const e=A[i],t=await E[i];try{if(this.destroyed||!this.backend)throw new Error(wA);const a=this.backend.createTexture(t,{width:e.width,height:e.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:!0});B.push(a)}finally{t.close()}i+1<A.length&&Q.shouldYield()&&await Q.yield(),b(g,wA)}return B}catch(i){for(const e of B)(I=this.backend)==null||I.deleteTexture(e);for(const e of E)e.then(t=>t.close()).catch(()=>{});throw i}}svgaGpuFrameTableBudgetBytes(){const A=this.options.svgaGpuFrameTableBudgetBytes;return Number.isFinite(A)&&A>=0?Math.floor(A):uC}ensureSVGATimelineBookkeeping(){var A;this.svgaReportedPathKeys||(this.svgaReportedPathKeys=new WeakMap),this.svgaFrameTablePromises||(this.svgaFrameTablePromises=new WeakMap),this.svgaFrameTableResidentBytes||(this.svgaFrameTableResidentBytes=new WeakMap),this.svgaFrameTableReservedBytes||(this.svgaFrameTableReservedBytes=new WeakMap),this.releasedSVGATimelineEntities||(this.releasedSVGATimelineEntities=new WeakSet),this.svgaPreparingEntities||(this.svgaPreparingEntities=new Set),this.activeSVGATimelineEntities||(this.activeSVGATimelineEntities=new Set),this.svgaEntitySources||(this.svgaEntitySources=new WeakMap),Number.isFinite(this.activeSVGAGpuFrameTableBytes)||(this.activeSVGAGpuFrameTableBytes=0),Number.isFinite(this.reservedSVGAGpuFrameTableBytes)||(this.reservedSVGAGpuFrameTableBytes=0),Number.isFinite(this.runtimeFallbackCount)||(this.runtimeFallbackCount=0),Number.isFinite(this.runtimeObserverErrorCount)||(this.runtimeObserverErrorCount=0),(A=this.lastRuntimeDiagnostic)!=null||(this.lastRuntimeDiagnostic=null)}emitRuntimeDiagnostic(A){var g,I,B,Q,E,i;const e={...A,timestampMs:typeof performance!="undefined"?performance.now():Date.now(),backend:(I=(g=this.backend)==null?void 0:g.type)!=null?I:"webgl2",...A.giftIds?{giftIds:[...A.giftIds]}:{}};this.lastRuntimeDiagnostic=e;try{(Q=(B=this.options).onRuntimeDiagnostic)==null||Q.call(B,{...e,...e.giftIds?{giftIds:[...e.giftIds]}:{}})}catch(t){this.runtimeObserverErrorCount++,this.lastRuntimeDiagnostic={type:"observer-error",timestampMs:typeof performance!="undefined"?performance.now():Date.now(),backend:(i=(E=this.backend)==null?void 0:E.type)!=null?i:"webgl2",message:`onRuntimeDiagnostic: ${this.runtimeErrorMessage(t)}`},console.error("[GiftStage] onRuntimeDiagnostic observer failed",t)}}recordObserverError(A,g){this.runtimeObserverErrorCount++,console.error(`[GiftStage] ${A} observer failed`,g),this.emitRuntimeDiagnostic({type:"observer-error",message:`${A}: ${this.runtimeErrorMessage(g)}`})}runtimeErrorMessage(A){return A instanceof Error?A.message:String(A)}handleSVGABackendLoss(){var A;if(this.svgaBackendLost)return;this.svgaBackendLost=!0,(A=this.manager)==null||A.handleBackendLoss();const g=new Set([...this.svgaPreparingEntities,...this.activeSVGATimelineEntities]);for(const I of g)this.fallbackSVGAFrameTable(I,"validation-failed")}reserveSVGAFrameTableBytes(A,g){if(this.svgaFrameTableReservedBytes.has(A))return!0;const I=this.svgaGpuFrameTableBudgetBytes();return!Number.isFinite(g)||g<0||this.activeSVGAGpuFrameTableBytes+this.reservedSVGAGpuFrameTableBytes+g>I?!1:(this.svgaFrameTableReservedBytes.set(A,g),this.reservedSVGAGpuFrameTableBytes+=g,!0)}rollbackSVGAFrameTableReservation(A){var g;const I=(g=this.svgaFrameTableReservedBytes.get(A))!=null?g:0;I<=0||(this.svgaFrameTableReservedBytes.delete(A),this.reservedSVGAGpuFrameTableBytes=Math.max(0,this.reservedSVGAGpuFrameTableBytes-I))}commitSVGAFrameTableReservation(A){var g;const I=(g=this.svgaFrameTableReservedBytes.get(A))!=null?g:0;this.rollbackSVGAFrameTableReservation(A),!(I<=0)&&(this.svgaFrameTableResidentBytes.set(A,I),this.activeSVGAGpuFrameTableBytes+=I)}buildSVGATimelineDrawPlan(A){var g,I,B;const Q=A.spriteTable,E=oE(Q.imageKeys,A.atlasRects),i=(g=A.atlasTextureHandles)!=null&&g.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],e=[];let t=null;for(let a=0;a<Q.spriteCount;a++){const o=A.atlasRects.get((I=Q.imageKeys[a])!=null?I:""),s=(B=o==null?void 0:o.textureIndex)!=null?B:0;if(!(!!o&&!!i[s])){t=null;continue}t&&t.textureIndex===s&&t.spriteBase+t.spriteCount===a?t.spriteCount++:(t={spriteBase:a,spriteCount:1,textureIndex:s},e.push(t))}return{metadata:E,runs:e,atlasPageCount:i.length}}createSVGATimelineState(A,g={}){var I,B,Q,E,i;const e=A.spriteTable,t=(I=A.atlasTextureHandles)!=null&&I.length?A.atlasTextureHandles.length:A.atlasTextureHandle?1:0;return{binding:null,renderInfo:nC({backend:(Q=(B=this.backend)==null?void 0:B.type)!=null?Q:"webgl2",spriteTable:e,hasAtlas:t>0,hasSlotTextureOverride:g.hasSlotTextureOverride,strategy:(i=(E=g.strategy)!=null?E:this.options.svgaFrameEvaluation)!=null?i:"auto",budgetBytes:this.svgaGpuFrameTableBudgetBytes(),tablePreparing:g.preparing,uploadFailed:g.uploadFailed,compatibleInstanceCount:g.compatibleInstanceCount,atlasPageCount:t}),currentTimeMs:0,frameIndex:0}}ensureSVGAFrameTable(A,g=!1){var I,B,Q;this.ensureSVGATimelineBookkeeping();const E=this.svgaFrameTablePromises.get(A);if(E)return E;const i=this.backend,e=(I=this.options.svgaFrameEvaluation)!=null?I:"auto",t=!!(i!=null&&i.createSVGAFrameTable)&&i.type!=="webgl1"&&i.supportsAtomicFrameReplay===!0&&typeof i.abortFrame=="function",a=i,o=!this.svgaBackendLost&&t&&((Q=(B=a.canCreateSVGAFrameTable)==null?void 0:B.call(a))!=null?Q:!0),s=this.createSVGATimelineState(A,{preparing:e!=="cpu"&&o,strategy:e});if(!o&&e!=="cpu"&&(s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,fallbackReason:"device-capability",fallbackReasons:["device-capability"]}),A.svgaFrameTableState=s,e==="cpu"||!o||!i){const r=Promise.resolve();return this.svgaFrameTablePromises.set(A,r),r}this.svgaPreparingEntities.add(A);const n=new Promise(r=>{if(g&&typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>setTimeout(r,0));return}setTimeout(r,0)}).then(async()=>{var r,h,c,D,w,l;if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))return;const F=A.spriteTable,d=this.buildSVGATimelineDrawPlan(A),y=$I(F.spriteCount,F.frameCount),G=F.clipPathIndex.some(Y=>Y>=0),f=F.hasAnyShapes||G?rC(A):void 0,u=y+d.metadata.byteLength,R=(r=f==null?void 0:f.byteLength)!=null?r:0,M=u+R,N=this.svgaGpuFrameTableBudgetBytes();if(!Number.isFinite(M)||!d.runs.length&&!F.hasAnyShapes){const Y=!d.runs.length&&!F.hasAnyShapes?"validation-failed":"table-too-large-or-budget";s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,tableBytes:M,fallbackReason:Y,fallbackReasons:[Y]};return}if(!this.reserveSVGAFrameTableBytes(A,M)){s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,tableBytes:M,fallbackReason:"table-too-large-or-budget",fallbackReasons:["table-too-large-or-budget"]};return}let S=null;try{const Y=kC(F.frameData);if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))return;if(S=i.createSVGAFrameTable(Y,{spriteCount:F.spriteCount,frameCount:F.frameCount,spriteMetadata:d.metadata,hybridSpriteMetadata:f==null?void 0:f.spriteMetadata,atlasPageCount:d.atlasPageCount,label:"giftstage-svga-frame-table"}),this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A)){(h=i.deleteSVGAFrameTable)==null||h.call(i,S),this.rollbackSVGAFrameTableReservation(A);return}const U=nC({backend:i.type,spriteTable:F,hasAtlas:d.atlasPageCount>0,strategy:"auto",budgetBytes:N,atlasPageCount:d.atlasPageCount});if(U.tableBytes=M,U.frameTableBytes=u,U.commandTableBytes=R,U.selectedPath==="gpu-hybrid"&&(A.svgaHybridCommandTable=f,await this.ensureSVGAHybridSchedulePrepared(A),this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))){(c=i.deleteSVGAFrameTable)==null||c.call(i,S),this.rollbackSVGAFrameTableReservation(A);return}if(U.selectedPath!=="gpu-direct"&&U.selectedPath!=="gpu-hybrid"){(D=i.deleteSVGAFrameTable)==null||D.call(i,S),this.rollbackSVGAFrameTableReservation(A);return}this.commitSVGAFrameTableReservation(A),this.activeSVGATimelineEntities.add(A),A.svgaTimelineDrawRuns=d.runs,s.binding=S,s.renderInfo=U}catch(Y){S&&((w=i.deleteSVGAFrameTable)==null||w.call(i,S)),this.rollbackSVGAFrameTableReservation(A),(l=this.manager)==null||l.releaseSVGAHybridMeshes(A);const U=Y instanceof qQ?"validation-failed":Y instanceof RangeError?"table-too-large-or-budget":"upload-failed";s.binding=null,A.svgaHybridCommandTable=void 0,s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,fallbackReason:U,fallbackReasons:[U]},console.warn("[GiftStage:SVGA] GPU frame table unavailable; using CPU reference",Y)}}).finally(()=>{this.svgaPreparingEntities.delete(A),this.rollbackSVGAFrameTableReservation(A),this.refreshSVGATimelineSlots(A)});return this.svgaFrameTablePromises.set(A,n),n}refreshSVGATimelineSlots(A,g){if(!this.manager)return;const I=[];for(const B of this.manager.getSlotIds()){const Q=this.manager.getSlot(B);!Q||Q.videoEntity!==A||I.push(Q)}for(const B of I)this.assignSVGATimelineStateToSlot(B,A);this.manager.invalidate(),g==null||g();for(const B of I)this.reportSVGARenderPath(B)}assignSVGATimelineStateToSlot(A,g){var I,B,Q,E,i,e,t,a;const o=(B=(I=A.options.svgaFrameEvaluation)!=null?I:this.options.svgaFrameEvaluation)!=null?B:"auto";if(o==="cpu"||(Q=A.svgaSlotTextures)!=null&&Q.size){A.svgaFrameTableState=this.createSVGATimelineState(g,{strategy:o,hasSlotTextureOverride:!!((E=A.svgaSlotTextures)!=null&&E.size),compatibleInstanceCount:(t=(e=(i=this.manager)==null?void 0:i.countCompatibleSVGAInstances)==null?void 0:e.call(i,g))!=null?t:0}),A.svgaDrawBatchMode="per-slot",A.svgaDrawCompatibleInstanceCount=1;return}const s=g.svgaFrameTableState;A.svgaFrameTableState=s?{binding:s.binding,renderInfo:s.renderInfo,currentTimeMs:0,frameIndex:A.currentFrame}:null,((a=A.svgaFrameTableState)==null?void 0:a.renderInfo.selectedPath)==="cpu-reference"&&(A.svgaDrawBatchMode="per-slot",A.svgaDrawCompatibleInstanceCount=1)}releaseSVGAFrameTable(A){var g,I,B,Q,E;this.ensureSVGATimelineBookkeeping(),this.releasedSVGATimelineEntities.add(A);const i=(g=A.svgaFrameTableState)==null?void 0:g.binding;i&&((B=(I=this.backend)==null?void 0:I.deleteSVGAFrameTable)==null||B.call(I,i)),this.rollbackSVGAFrameTableReservation(A),(Q=this.manager)==null||Q.releaseSVGAHybridMeshes(A),this.activeSVGATimelineEntities.delete(A),this.svgaPreparingEntities.delete(A);const e=(E=this.svgaFrameTableResidentBytes.get(A))!=null?E:0;this.activeSVGAGpuFrameTableBytes=Math.max(0,this.activeSVGAGpuFrameTableBytes-e),this.svgaFrameTableResidentBytes.delete(A),A.svgaFrameTableState=null,A.svgaTimelineDrawRuns=void 0,A.svgaHybridCommandTable=void 0}fallbackSVGAFrameTable(A,g){var I,B,Q,E;this.ensureSVGATimelineBookkeeping();const i=A.svgaFrameTableState;if(!i||i.renderInfo.selectedPath==="cpu-reference"&&!i.renderInfo.fallbackReasons.includes("table-preparing"))return;const e=this.getSVGAEntityDiagnosticContext(A);i.binding&&((B=(I=this.backend)==null?void 0:I.deleteSVGAFrameTable)==null||B.call(I,i.binding)),this.rollbackSVGAFrameTableReservation(A),(Q=this.manager)==null||Q.releaseSVGAHybridMeshes(A),this.activeSVGATimelineEntities.delete(A);const t=(E=this.svgaFrameTableResidentBytes.get(A))!=null?E:0;this.activeSVGAGpuFrameTableBytes=Math.max(0,this.activeSVGAGpuFrameTableBytes-t),this.svgaFrameTableResidentBytes.delete(A),i.binding=null,i.renderInfo={...i.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",fallbackReason:g,fallbackReasons:[g],drawBatchMode:"per-slot",drawCompatibleInstanceCount:1},A.svgaHybridCommandTable=void 0,this.refreshSVGATimelineSlots(A,()=>{this.runtimeFallbackCount++,this.emitRuntimeDiagnostic({type:"svga-runtime-fallback",source:e.source,giftIds:e.giftIds,reason:g})})}getSVGAEntityDiagnosticContext(A){var g;this.ensureSVGATimelineBookkeeping();const I=[];let B=(g=this.svgaEntitySources.get(A))!=null?g:null;if(this.manager)for(const Q of this.manager.getSlotIds()){const E=this.manager.getSlot(Q);!E||E.videoEntity!==A||(I.push(E.id),B==null&&typeof E.options.source=="string"&&(B=E.options.source))}return{source:B,giftIds:I}}deleteSVGAAtlasTextures(A){var g,I;this.releaseSVGAFrameTable(A);const B=(g=A.atlasTextureHandles)!=null&&g.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],Q=new Set;for(const E of B)Q.has(E.id)||(Q.add(E.id),(I=this.backend)==null||I.deleteTexture(E))}deleteSVGAAtlasResultTextures(A){var g,I;if(!A)return;const B=(g=A.textureHandles)!=null&&g.length?A.textureHandles:A.textureHandle?[A.textureHandle]:[],Q=new Set;for(const E of B)Q.has(E.id)||(Q.add(E.id),(I=this.backend)==null||I.deleteTexture(E))}async finishLoadSVGA(A,g,I){var B,Q,E;this.assertSlotLoadActive(A),this.ensureSVGATimelineBookkeeping(),this.svgaEntitySources.set(g,typeof A.options.source=="string"?A.options.source:null),A.videoEntity=g;const i=this.manager.prewarmSVGAClipMeshesForFrame(g,0,{frameBudgetMs:this.svgaClipFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaClipPrewarmInWorker!==!1,checkActive:()=>this.assertSlotLoadActive(A),signal:(B=A.loadAbortController)==null?void 0:B.signal}),e=A.options.svgaSlots?Qa(this.backend,g,A.options.svgaSlots,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,checkActive:()=>this.assertSlotLoadActive(A)}):Promise.resolve(void 0),[,t]=await Promise.all([i,e]);this.assertSlotLoadActive(A),A.svgaSlotTextures=t,A.svgaClipReadyFrame=0;const a=(E=(Q=A.options.svgaFrameEvaluation)!=null?Q:this.options.svgaFrameEvaluation)!=null?E:"auto";this.primeSVGAFirstFrame(A);const o=a==="cpu"?Promise.resolve():this.ensureSVGAFrameTable(g,!0);if(this.assignSVGATimelineStateToSlot(A,g),this.reportSVGARenderPath(A),o.catch(()=>{}),this.decodeSVGAAudioInBackground(A,I),this.options.svgaPrewarmClipMeshes!==!1){const s=this.ensureSVGAFullClipPrewarm(g);s.catch(n=>{this.isLoadCanceled(n)||console.warn("[GiftStage:SVGA] background clip mesh prewarm failed",n)}),this.queueSVGAPersistentCacheWrite(g,s)}else this.queueSVGAPersistentCacheWrite(g,Promise.resolve(0))}primeSVGAFirstFrame(A){var g;if(A.state==="loading"&&(A.state="playing",this.manager.invalidate({resetClock:!0}),!A.paused&&!A.playbackScopeControlled)){this.manager.audioManager.tickFrame(A,A.currentFrame);const I=this.manager.getHandle(A.id);I&&((g=A.onFrame)==null||g.call(A,A.currentFrame,I)),A.svgaInitialFrameEmitted=!0}}async decodeSVGAAudioInBackground(A,g){var I,B,Q,E;if(g.size===0)return;const i=gg({maxBudgetMs:this.options.svgaLoadFrameBudgetMs});try{let e=0;for(const[t,a]of g){if(await this.manager.audioManager.decodeAudio(t,a),this.assertSlotLoadActive(A),A.playbackScopeControlled){const o=(B=(I=A.videoEntity)==null?void 0:I.params.fps)!=null?B:0,s=(E=(Q=A.videoEntity)==null?void 0:Q.params.frames)!=null?E:0,n=A.loopCount*s+A.currentFrame+A.accumulatedTime*o;this.manager.audioManager.syncPlaybackScopeFrame(A,n)}else A.paused||this.manager.audioManager.tickFrameForKey(A,A.currentFrame,t);e++,e<g.size&&i.shouldYield()&&(await i.yield(),this.assertSlotLoadActive(A))}}catch(e){this.isLoadCanceled(e)||console.warn("[GiftStage:SVGA] background audio decode failed",e)}}ensureSVGAFullClipPrewarm(A){const g=this.svgaFullClipPrewarmPromises.get(A);if(g)return g;const I=this.manager.prewarmSVGAClipMeshes(A,{frameBudgetMs:this.svgaClipFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaClipPrewarmInWorker!==!1}).then(B=>{var Q;return(Q=this.manager)==null||Q.invalidate(),B});return this.svgaFullClipPrewarmPromises.set(A,I),I}async ensureSVGAHybridSchedulePrepared(A){var g,I,B;if((g=A.svgaHybridCommandTable)!=null||(A.svgaHybridCommandTable=rC(A)),A.spriteTable.clipPathIndex.some(Q=>Q>=0)){const Q=this.ensureSVGAFullClipPrewarm(A);await Q,this.queueSVGAPersistentCacheWrite(A,Q)}(I=this.manager)==null||I.prewarmSVGAShapeMeshes(A);try{(B=this.manager)==null||B.retainSVGAHybridMeshes(A)}catch(Q){throw new qQ(Q instanceof Error?Q.message:"SVGA Hybrid mesh validation failed")}}queueSVGAPersistentCacheWrite(A,g){var I,B;const Q=(I=this.svgaPersistentCacheWriters)==null?void 0:I.get(A);if(!Q||(B=this.svgaPersistentCacheWritePromises)!=null&&B.has(A))return;const E=g.then(()=>Q(this.manager.snapshotSVGAClipMeshes(A))).catch(i=>{console.warn("[GiftStage:SVGA] persistent cache write failed",i)});this.svgaPersistentCacheWritePromises.set(A,E)}svgaAtlasMaxSize(){var A,g,I;const B=(A=this.options.svgaAtlasMaxSize)!=null?A:zA.SVGA_ATLAS_MAX_SIZE,Q=(I=(g=this.backend)==null?void 0:g.maxTextureSize)!=null?I:B;return Math.max(64,Math.min(Q,B))}async buildSVGAAtlasIfNeeded(A,g,I=!0,B){if(A.size===0)return null;if(this.destroyed||!this.backend)throw new Error(wA);return xE(A,this.backend,this.svgaAtlasMaxSize(),zA.SVGA_ATLAS_PADDING,{captureEncodedPng:g,maxPages:this.svgaAtlasMaxPages(),mainThreadFrameBudgetMs:this.svgaAtlasFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:I,signal:B})}svgaAtlasMaxPages(){var A;return Math.max(1,Math.floor((A=this.options.svgaAtlasMaxPages)!=null?A:4))}shouldTryWebCodecs(A){return(A==null?void 0:A.mute)!==!1&&this.options.preferWebCodecs===!0&&typeof VideoDecoder!="undefined"}logPlaybackBackend(A,g,I){const B=g==="webcodecs"?"WebCodecs (mp4box decode)":"HTMLVideoElement",Q=I?` — ${I}`:"";console.info(`[GiftStage] ${A.type} [${A.id}]: ${B}${Q}`)}async tryWebCodecsPlayback(A,g){if(!this.shouldTryWebCodecs())return null;try{const I=typeof A=="string"?await BI(A,g):A;if(g!=null&&g.aborted)throw new Error(wA);return await gI.create(I,g,{useWorker:this.options.webCodecsDecodeInWorker!==!1,maxDecodedFrames:this.options.webCodecsMaxDecodedFrames,decodeAheadFrames:this.options.webCodecsDecodeAheadFrames})}catch(I){if(this.isLoadCanceled(I)||g!=null&&g.aborted)throw new Error(wA);const B=I instanceof Error?I.message:String(I);return console.warn(`[GiftStage] WebCodecs path failed, falling back to <video>: ${B}`),null}}async acquireWebCodecsPlayback(A,g){if(!this.shouldTryWebCodecs(A))return null;if(this.options.shareIdenticalVideoPlayback!==!1&&A.loop===0&&A.startPaused!==!0&&A.playbackScopeControlled!==!0&&typeof A.source=="string"){const B=this.normalizeSharedVideoSourceKey(A.source);if(B)return this.acquireSharedWebCodecsPlayback(B,g)}const I=await this.tryWebCodecsPlayback(A.source,g);return I?{playback:I,sharedState:null,release:fg(()=>I.destroy())}:null}async acquireSharedWebCodecsPlayback(A,g){var I;const B=performance.now(),Q=Math.max(0,(I=this.options.sharedVideoPlaybackWindowMs)!=null?I:zA.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS),E=this.sharedWebCodecsPlaybacks.get(A);if(E){for(const t of E)if(!(t.refs<=0||B-t.startedAtMs>Q))return t.refs++,{playback:t.playback,sharedState:t,release:fg(()=>this.releaseSharedWebCodecsPlayback(t))}}let i=this.pendingSharedWebCodecsPlaybacks.get(A);i||(i=this.createPendingSharedWebCodecsPlayback(A),this.pendingSharedWebCodecsPlaybacks.set(A,i));const e=await this.waitForPendingSharedWebCodecsPlayback(i,g);return e?(e.refs++,{playback:e.playback,sharedState:e,release:fg(()=>this.releaseSharedWebCodecsPlayback(e))}):null}createPendingSharedWebCodecsPlayback(A){const g=new AbortController,I={cacheKey:A,controller:g,consumers:0,settled:!1,promise:null};return I.promise=this.tryWebCodecsPlayback(A,g.signal).then(B=>{if(I.settled=!0,this.pendingSharedWebCodecsPlaybacks.get(A)===I&&this.pendingSharedWebCodecsPlaybacks.delete(A),!B)return null;if(I.consumers===0||this.destroyed)return B.destroy(),null;const Q={id:this.nextSharedWebCodecsPlaybackId++,cacheKey:A,refs:0,playback:B,startedAtMs:performance.now()};let E=this.sharedWebCodecsPlaybacks.get(A);return E||(E=new Set,this.sharedWebCodecsPlaybacks.set(A,E)),E.add(Q),Q},B=>{throw I.settled=!0,this.pendingSharedWebCodecsPlaybacks.get(A)===I&&this.pendingSharedWebCodecsPlaybacks.delete(A),B}),I}waitForPendingSharedWebCodecsPlayback(A,g){return A.consumers++,new Promise((I,B)=>{let Q=!1;const E=e=>{Q||(Q=!0,g==null||g.removeEventListener("abort",i),A.consumers=Math.max(0,A.consumers-1),A.consumers===0&&!A.settled&&A.controller.abort(),e())},i=()=>{E(()=>B(new Error(wA)))};if(g!=null&&g.aborted){i();return}g==null||g.addEventListener("abort",i,{once:!0}),A.promise.then(e=>E(()=>I(e)),e=>E(()=>B(e)))})}releaseSharedWebCodecsPlayback(A){if(A.refs=Math.max(0,A.refs-1),A.refs>0)return;A.playback.destroy();const g=this.sharedWebCodecsPlaybacks.get(A.cacheKey);g==null||g.delete(A),(g==null?void 0:g.size)===0&&this.sharedWebCodecsPlaybacks.delete(A.cacheKey)}attachWebCodecsPlayback(A,g){var I,B,Q;A.webcodecsPlayback=g.playback,A.webcodecsSharedState=g.sharedState,A.releaseWebCodecsPlayback=g.release;const E=Math.max(g.playback.duration,1e-9);return A.wcPlaybackTime=g.sharedState?Math.max(0,(performance.now()-g.sharedState.startedAtMs)/1e3)%E:0,A.wcSharedTimeOffset=0,(B=(I=g.playback).ensureDecodedThrough)==null||B.call(I,A.wcPlaybackTime),(Q=g.playback.getFrameForTime(A.wcPlaybackTime))!=null?Q:g.playback.getFrameForTime(0)}releaseAttachedWebCodecsPlayback(A){var g;A.releaseWebCodecsPlayback?A.releaseWebCodecsPlayback():(g=A.webcodecsPlayback)==null||g.destroy(),A.releaseWebCodecsPlayback=null,A.webcodecsSharedState=null,A.webcodecsPlayback=null}acquireSharedWebCodecsSurface(A,g,I,B,Q,E,i){const e=A.webcodecsSharedState;if(!e)return null;const t=i?this.options.webCodecsVideoAtlas:void 0;if(t&&t.width>0&&t.height>0){const r=`${e.id}:atlas:${t.width}x${t.height}:${Q}x${E}`,h=this.retainSharedWebCodecsSurface(r);if(h)return h;const c=this.nextSharedWebCodecsSurfaceId++,D=`wc-shared-surface:${c}`,w=this.manager.tryAllocateWebCodecsAtlas(D,Q,E,t);if(w){try{this.backend.updateTextureRegion(w.handle,g,w.rect.x,w.rect.y,w.rect.w,w.rect.h)}catch(l){throw this.manager.releaseWebCodecsAtlasAllocation(D),l}return this.createSharedWebCodecsSurface(r,c,w.handle,g,w.rect,D)}}const a=`${e.id}:full:${I}x${B}`,o=this.retainSharedWebCodecsSurface(a);if(o)return o;const s=this.nextSharedWebCodecsSurfaceId++,n=this.backend.createTexture(g,{width:I,height:B,filter:"linear"});return this.createSharedWebCodecsSurface(a,s,n,g,void 0,null)}retainSharedWebCodecsSurface(A){const g=this.sharedWebCodecsSurfaces.get(A);return g?(g.refs++,{surface:g.surface,release:fg(()=>this.releaseSharedWebCodecsSurface(g))}):null}createSharedWebCodecsSurface(A,g,I,B,Q,E){const i={key:A,refs:1,atlasAllocationId:E,surface:{id:g,texture:I,atlasRect:Q,lastUploadedFrame:B}};return this.sharedWebCodecsSurfaces.set(A,i),{surface:i.surface,release:fg(()=>this.releaseSharedWebCodecsSurface(i))}}releaseSharedWebCodecsSurface(A){var g,I;A.refs=Math.max(0,A.refs-1),!(A.refs>0)&&(this.sharedWebCodecsSurfaces.delete(A.key),A.atlasAllocationId?(g=this.manager)==null||g.releaseWebCodecsAtlasAllocation(A.atlasAllocationId):(I=this.backend)==null||I.deleteTexture(A.surface.texture),A.surface.lastUploadedFrame=null)}attachSharedWebCodecsSurface(A,g){A.webcodecsSurface=g.surface,A.releaseWebCodecsSurface=g.release,A.videoTextureHandle=g.surface.texture,A.wcAtlasRect=g.surface.atlasRect}async loadVAP(A,g){var I,B,Q,E;if(!g.config)throw new Error("VAP requires config");const i=g.config,e=(I=A.loadAbortController)==null?void 0:I.signal,t=(async()=>{const l=await DC(i);this.assertSlotLoadActive(A);const F=await aa(l,g.vapSlots);return this.assertSlotLoadActive(A),{config:l,vapResources:F}})();console.info("[GiftStage:WC] loadVAP: try WebCodecs / video…");const a=this.acquireWebCodecsPlayback(g,e),[o,s]=await Promise.allSettled([t,a]);if(!this.isSlotLoadActive(A)||o.status==="rejected"||s.status==="rejected")throw s.status==="fulfilled"&&((B=s.value)==null||B.release()),o.status==="rejected"?o.reason:s.status==="rejected"?s.reason:new Error(wA);const{config:n,vapResources:r}=o.value,h=s.value;if(A.vapConfig=n,r.size>0){const l=AI(n.info),F=oa(n);let d=null;if(this.backend.type==="webgpu"||this.backend.type==="webgl2")try{d=this.createVAPMixResourceTextures(r)}catch(y){console.warn("[GiftStage] VAP main-context mixed textures failed; falling back to compositor",y)}if(d)A.vapMixState={mode:"direct",width:l.w,height:l.h,resourceTextures:d,frameMap:F,lastFrameIndex:-1,lastSourceRef:null};else{let y=null,G=null;try{y=new Ns(n,F,r,l.w,l.h,g.videoRGBAlphaMode!=="straight")}catch(u){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",u),G=sa(l.w,l.h)}const f=this.backend.createEmptyTexture(l.w,l.h,{filter:"linear"});A.vapMixState={mode:"composited",texture:f,width:l.w,height:l.h,composer:y,frameMap:F,resources:y?void 0:r,lastFrameIndex:-1,lastSourceRef:null,...G!=null?G:{}},A.videoTextureHandle=f}}if(h){const l=this.attachWebCodecsPlayback(A,h);if(!l)throw this.releaseAttachedWebCodecsPlayback(A),new Error("WebCodecs: missing first frame");if(!A.vapMixState||A.vapMixState.mode==="direct"){const d=l.displayWidth||l.codedWidth,y=l.displayHeight||l.codedHeight,G=!A.vapMixState,{w:f,h:u}=mQ(A,d,y,"vap",n),R=this.acquireSharedWebCodecsSurface(A,l,d,y,f,u,G);if(R)this.attachSharedWebCodecsSurface(A,R);else{const M=G?this.manager.tryAllocateWebCodecsAtlas(A.id,f,u,this.options.webCodecsVideoAtlas):null;M?(A.videoTextureHandle=M.handle,A.wcAtlasRect=M.rect,this.backend.updateTextureRegion(M.handle,l,M.rect.x,M.rect.y,f,u)):A.videoTextureHandle=this.backend.createTexture(l,{width:d,height:y,filter:"linear"})}}A.videoElement=null;const F=A.videoTextureHandle;console.info("[GiftStage:WC] VAP texture",{giftId:A.id,atlas:!!A.wcAtlasRect&&!A.vapMixState,mixed:!!A.vapMixState,tex:`${F.width}x${F.height}`,frame0:`${l.displayWidth}x${l.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const D=await this.tryAcquireSharedHtmlVideo(A,g);if(!this.isSlotLoadActive(A))throw D==null||D.release(),new Error(wA);if(D)A.videoElement=D.video,A.releaseSharedVideoPlayback=D.release;else{const l=await this.acquireVideoPlaybackSource(g.source);if(!this.isSlotLoadActive(A))throw(Q=l.release)==null||Q.call(l),new Error(wA);A.releaseMediaSource=(E=l.release)!=null?E:null;const F=this.createVideo(l.src,g.loop===0,g.mute!==!1);A.videoElement=F}const w=A.videoElement;if(D){await D.ready,this.assertSlotLoadActive(A);const l=this.acquireSharedVideoTexture(D.cacheKey,w);A.videoTextureHandle=l.texture,A.releaseSharedVideoTexture=l.release}else await this.waitVideoReady(w),this.assertSlotLoadActive(A),(!A.vapMixState||A.vapMixState.mode==="direct")&&(A.videoTextureHandle=this.backend.createTexture(w,{width:w.videoWidth,height:w.videoHeight,filter:"linear"}));!A.releaseSharedVideoPlayback&&!A.playbackScopeControlled&&this.bindVideoLoopOnEnded(A,w),this.logPlaybackBackend(A,"video",g.mute===!1?"WebCodecs disabled for audible playback":this.shouldTryWebCodecs(g)?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}createVAPMixResourceTextures(A){const g=new Map;try{for(const[I,B]of A)g.set(I,this.backend.createTexture(B.source,{width:B.width,height:B.height,filter:"linear",premultiplyAlpha:!1}));return g}catch(I){for(const B of g.values())this.backend.deleteTexture(B);throw I}}async loadAlphaVideo(A,g){var I,B,Q;const E=(I=A.loadAbortController)==null?void 0:I.signal;console.info("[GiftStage:WC] loadAlphaVideo: try WebCodecs / video…");const i=await this.acquireWebCodecsPlayback(g,E);if(!this.isSlotLoadActive(A))throw i==null||i.release(),new Error(wA);if(i){const a=this.attachWebCodecsPlayback(A,i);if(!a)throw this.releaseAttachedWebCodecsPlayback(A),new Error("WebCodecs: missing first frame");const o=a.displayWidth||a.codedWidth,s=a.displayHeight||a.codedHeight,{w:n,h:r}=mQ(A,o,s,"alphaVideo",void 0),h=this.acquireSharedWebCodecsSurface(A,a,o,s,n,r,!0);if(h)this.attachSharedWebCodecsSurface(A,h);else{const D=this.manager.tryAllocateWebCodecsAtlas(A.id,n,r,this.options.webCodecsVideoAtlas);D?(A.videoTextureHandle=D.handle,A.wcAtlasRect=D.rect,this.backend.updateTextureRegion(D.handle,a,D.rect.x,D.rect.y,n,r)):A.videoTextureHandle=this.backend.createTexture(a,{width:o,height:s,filter:"linear"})}A.videoElement=null;const c=A.videoTextureHandle;console.info("[GiftStage:WC] alphaVideo texture",{giftId:A.id,atlas:!!A.wcAtlasRect,tex:`${c.width}x${c.height}`,frame0:`${a.displayWidth}x${a.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const e=await this.tryAcquireSharedHtmlVideo(A,g);if(!this.isSlotLoadActive(A))throw e==null||e.release(),new Error(wA);if(e)A.videoElement=e.video,A.releaseSharedVideoPlayback=e.release;else{const a=await this.acquireVideoPlaybackSource(g.source);if(!this.isSlotLoadActive(A))throw(B=a.release)==null||B.call(a),new Error(wA);A.releaseMediaSource=(Q=a.release)!=null?Q:null;const o=this.createVideo(a.src,g.loop===0,g.mute!==!1);A.videoElement=o}const t=A.videoElement;if(e){await e.ready,this.assertSlotLoadActive(A);const a=this.acquireSharedVideoTexture(e.cacheKey,t);A.videoTextureHandle=a.texture,A.releaseSharedVideoTexture=a.release}else await this.waitVideoReady(t),this.assertSlotLoadActive(A),A.videoTextureHandle=this.backend.createTexture(t,{width:t.videoWidth,height:t.videoHeight,filter:"linear"});!A.releaseSharedVideoPlayback&&!A.playbackScopeControlled&&this.bindVideoLoopOnEnded(A,t),this.logPlaybackBackend(A,"video",g.mute===!1?"WebCodecs disabled for audible playback":this.shouldTryWebCodecs(g)?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}bindVideoLoopOnEnded(A,g){g.addEventListener("ended",()=>{var I;if(A.state!=="playing")return;const B=(I=A.options.loop)!=null?I:1;if(B===0){g.currentTime=0,g.play();return}if(A.loopCount++,A.loopCount>=B){this.completeHtmlVideoPlayback(A);return}g.currentTime=0,g.play().catch(()=>{})}),this.armHtmlVideoPlaybackWatchdog(A,g)}clearHtmlVideoPlaybackWatchdog(A){A.videoPlaybackWatchdogTimer!=null&&(clearTimeout(A.videoPlaybackWatchdogTimer),A.videoPlaybackWatchdogTimer=null)}clearAllHtmlVideoPlaybackWatchdogs(){if(this.manager)for(const A of this.manager.getSlotIds()){const g=this.manager.getSlot(A);g&&this.clearHtmlVideoPlaybackWatchdog(g)}}rearmHtmlVideoPlaybackWatchdogs(){if(!(!this.manager||this.playbackPaused||document.hidden))for(const A of this.manager.getSlotIds()){const g=this.manager.getSlot(A);g!=null&&g.videoElement&&!g.releaseSharedVideoPlayback&&!g.playbackScopeControlled&&!g.paused&&g.state==="playing"&&this.armHtmlVideoPlaybackWatchdog(g,g.videoElement)}}completeHtmlVideoPlayback(A){var g,I;if(A.state!=="playing"||A.videoPlaybackCompletionStarted)return;A.videoPlaybackCompletionStarted=!0,this.clearHtmlVideoPlaybackWatchdog(A);let B;B={id:A.id,type:A.type,pause:()=>{},resume:()=>{},destroy:()=>this.removeGift(A.id),getRenderInfo:()=>this.getGiftRenderInfo(A),animate:Q=>this.createGiftAnimationChain(A,B,Q)};try{(g=A.onComplete)==null||g.call(A,B)}finally{A.state=A.options.clearsAfterStop===!1?"stopped":"finished",(I=this.manager)==null||I.invalidate()}}armHtmlVideoPlaybackWatchdog(A,g){var I;if(this.clearHtmlVideoPlaybackWatchdog(A),A.playbackScopeControlled||A.paused||this.playbackPaused||document.hidden)return;const B=(I=A.options.loop)!=null?I:1,Q=g.duration;if(B<=0||!Number.isFinite(Q)||Q<=0)return;const E=Math.max(1,Math.ceil(B)),i=Q*E*1e3;if(!Number.isFinite(i))return;const e=Math.min(zA.HTML_VIDEO_WATCHDOG_MAX_GRACE_MS,Math.max(zA.HTML_VIDEO_WATCHDOG_MIN_GRACE_MS,i*zA.HTML_VIDEO_WATCHDOG_GRACE_RATIO)),t=performance.now()+i+e,a=()=>{if(A.state==="finished"||A.state==="stopped"){A.videoPlaybackWatchdogTimer=null;return}const o=t-performance.now();if(o>0){A.videoPlaybackWatchdogTimer=setTimeout(a,Math.min(o,zA.MAX_TIMER_DELAY_MS));return}A.videoPlaybackWatchdogTimer=null,A.state==="playing"&&(console.warn("[GiftStage] HTMLVideo playback timed out; completing gift",{giftId:A.id,type:A.type,duration:Q,loop:E}),this.completeHtmlVideoPlayback(A))};A.videoPlaybackWatchdogTimer=setTimeout(a,Math.min(i+e,zA.MAX_TIMER_DELAY_MS))}createVideo(A,g,I=!0){const B=document.createElement("video");return B.crossOrigin="anonymous",B.autoplay=!0,B.preload="auto",B.muted=I,B.defaultMuted=I,B.playsInline=!0,B.setAttribute("playsinline",""),B.setAttribute("webkit-playsinline","true"),B.loop=g,B.style.cssText="display:none;",B.src=A,document.body.appendChild(B),B.load(),B}waitVideoMetadata(A){return new Promise((g,I)=>{let B=!1,Q=null;const E=()=>{A.removeEventListener("loadedmetadata",e),A.removeEventListener("error",t),Q!=null&&clearTimeout(Q),Q=null},i=a=>{B||(B=!0,E(),a())},e=()=>{i(g)},t=()=>{i(()=>I(new Error("Video metadata load failed")))};A.addEventListener("loadedmetadata",e),A.addEventListener("error",t),Q=setTimeout(()=>i(()=>I(new Error("Video metadata load timed out"))),zA.HTML_VIDEO_READY_TIMEOUT_MS),A.readyState>=HTMLMediaElement.HAVE_METADATA&&i(g)})}async probeVideoNaturalSize(A,g="video"){var I;const B=await this.acquireVideoPlaybackSource(A),Q=document.createElement("video");Q.crossOrigin="anonymous",Q.preload="metadata",Q.muted=!0,Q.playsInline=!0,Q.setAttribute("playsinline",""),Q.setAttribute("webkit-playsinline","true"),Q.style.cssText="display:none;",Q.src=B.src,document.body.appendChild(Q),Q.load();try{return await this.waitVideoMetadata(Q),g==="alphaVideo"?Hs(Q.videoWidth,Q.videoHeight):{width:Q.videoWidth,height:Q.videoHeight}}finally{try{Q.pause(),Q.removeAttribute("src"),Q.load(),Q.remove()}catch(E){}(I=B.release)==null||I.call(B)}}async acquireVideoPlaybackSource(A){if(typeof A!="string"){const B=URL.createObjectURL(new Blob([A]));return{src:B,release:()=>URL.revokeObjectURL(B)}}const g=this.normalizeSharedVideoSourceKey(A);if(!g)return{src:A};let I=this.sharedVideoSources.get(g);I||(I={refs:0,objectUrl:null,promise:this.fetchSharedVideoSource(g)},this.sharedVideoSources.set(g,I)),I.refs++;try{return{src:await I.promise,release:()=>this.releaseSharedVideoSource(g)}}catch(B){return this.releaseSharedVideoSource(g),console.warn("[GiftStage] shared video prefetch failed, using original url",B),{src:A}}}normalizeSharedVideoSourceKey(A){try{const g=new URL(A,window.location.href);return g.protocol==="blob:"||g.protocol==="data:"?null:g.href}catch(g){return null}}async fetchSharedVideoSource(A){const g=new Blob([await BI(A)]),I=this.sharedVideoSources.get(A),B=URL.createObjectURL(g);return I&&(I.objectUrl=B,I.refs===0&&(URL.revokeObjectURL(B),this.sharedVideoSources.delete(A))),B}releaseSharedVideoSource(A){const g=this.sharedVideoSources.get(A);g&&(g.refs=Math.max(0,g.refs-1),g.refs===0&&g.objectUrl&&(URL.revokeObjectURL(g.objectUrl),this.sharedVideoSources.delete(A)))}async tryAcquireSharedHtmlVideo(A,g){var I,B;if(this.options.shareIdenticalVideoPlayback===!1||g.startPaused===!0||g.playbackScopeControlled===!0||g.loop!==0||typeof g.source!="string"||A.type==="vap"&&A.vapMixState)return null;const Q=this.normalizeSharedVideoSourceKey(g.source);if(!Q)return null;const E=`${Q}::muted=${g.mute!==!1?1:0}`,i=(I=this.options.sharedVideoPlaybackWindowMs)!=null?I:zA.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,e=Math.max(0,i)/1e3,t=this.sharedHtmlVideos.get(E);if(t)return t.video.currentTime>e?null:(t.refs++,{cacheKey:E,video:t.video,ready:t.ready,release:()=>this.releaseSharedHtmlVideo(E)});let a=this.pendingSharedHtmlVideos.get(E);a||(a=(async()=>{var n;const r=await this.acquireVideoPlaybackSource(g.source),h=this.createVideo(r.src,!0,g.mute!==!1),c=this.waitVideoReady(h);return{video:h,ready:c,releaseSource:(n=r.release)!=null?n:null}})(),this.pendingSharedHtmlVideos.set(E,a));let o;try{o=await a}catch(n){throw this.pendingSharedHtmlVideos.delete(E),n}let s=this.sharedHtmlVideos.get(E);return s?s.refs++:(s={refs:1,video:o.video,ready:o.ready,releaseSource:(B=o.releaseSource)!=null?B:null},this.sharedHtmlVideos.set(E,s)),this.pendingSharedHtmlVideos.delete(E),{cacheKey:E,video:s.video,ready:s.ready,release:()=>this.releaseSharedHtmlVideo(E)}}acquireSharedVideoTexture(A,g){const I=this.sharedVideoTextures.get(A);if(I)return I.refs++,{texture:I.texture,release:()=>this.releaseSharedVideoTexture(A)};const B=this.backend.createTexture(g,{width:g.videoWidth,height:g.videoHeight,filter:"linear"});return this.sharedVideoTextures.set(A,{refs:1,texture:B}),{texture:B,release:()=>this.releaseSharedVideoTexture(A)}}async acquireImageTexture(A,g){if(typeof A!="string"){const E=await eC(A,g);try{if(b(g,"Image loading aborted"),this.destroyed||!this.backend)throw new Error("GiftStage is destroyed");const i=this.backend.createTexture(E.source,{width:E.width,height:E.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:E.sourcePremultiplied});return{texture:i,width:E.width,height:E.height,release:fg(()=>{var e;return(e=this.backend)==null?void 0:e.deleteTexture(i)})}}finally{E.dispose()}}const I=this.sharedImageTextures.get(A);if(I)return I.refs++,{texture:I.texture,width:I.width,height:I.height,release:fg(()=>this.releaseSharedImageTexture(A))};let B=this.pendingSharedImageTextures.get(A);if(!B){B=(async()=>{const i=await eC(A);try{if(this.destroyed||!this.backend)throw new Error("GiftStage is destroyed");const t={refs:0,texture:this.backend.createTexture(i.source,{width:i.width,height:i.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:i.sourcePremultiplied}),width:i.width,height:i.height};return this.sharedImageTextures.set(A,t),t}finally{i.dispose()}})(),this.pendingSharedImageTextures.set(A,B);const E=()=>{this.pendingSharedImageTextures.get(A)===B&&this.pendingSharedImageTextures.delete(A),queueMicrotask(()=>{var i;const e=this.sharedImageTextures.get(A);(e==null?void 0:e.refs)===0&&((i=this.backend)==null||i.deleteTexture(e.texture),this.sharedImageTextures.delete(A))})};B.then(E,E)}const Q=await B;return b(g,"Image loading aborted"),Q.refs++,{texture:Q.texture,width:Q.width,height:Q.height,release:fg(()=>this.releaseSharedImageTexture(A))}}releaseSharedImageTexture(A){var g;const I=this.sharedImageTextures.get(A);I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0)&&((g=this.backend)==null||g.deleteTexture(I.texture),this.sharedImageTextures.delete(A)))}releaseSharedVideoTexture(A){var g;const I=this.sharedVideoTextures.get(A);I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0)&&((g=this.backend)==null||g.deleteTexture(I.texture),this.sharedVideoTextures.delete(A)))}releaseSharedHtmlVideo(A){var g;const I=this.sharedHtmlVideos.get(A);if(I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0))){try{I.video.pause(),I.video.removeAttribute("src"),I.video.load(),I.video.remove()}catch(B){}(g=I.releaseSource)==null||g.call(I),this.sharedHtmlVideos.delete(A)}}waitForFirstVideoFrame(A){return new Promise(g=>{typeof A.requestVideoFrameCallback=="function"?A.requestVideoFrameCallback(()=>g()):requestAnimationFrame(()=>g())})}waitVideoReady(A){return new Promise((g,I)=>{let B=!1,Q=!1,E=null;const i=()=>{A.removeEventListener("canplay",a),A.removeEventListener("error",o),E!=null&&clearTimeout(E),E=null},e=s=>{B||(B=!0,i(),s())},t=async()=>{if(!(Q||B)){Q=!0;try{try{await A.play()}catch(s){if(A.muted)throw s;console.warn("[GiftStage] audible HTMLVideo autoplay was blocked; retrying muted",s),A.muted=!0,A.defaultMuted=!0,await A.play()}await this.waitForFirstVideoFrame(A),e(g)}catch(s){e(()=>I(s))}}},a=()=>{t()},o=()=>{e(()=>I(new Error("Video load failed")))};A.addEventListener("canplay",a),A.addEventListener("error",o),E=setTimeout(()=>e(()=>I(new Error("Video ready timed out"))),zA.HTML_VIDEO_READY_TIMEOUT_MS),A.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&t()})}get capabilities(){var A,g,I,B,Q,E,i;const e=(g=(A=this.backend)==null?void 0:A.type)!=null?g:"webgl2",t=this.backend,a=e!=="webgl1"&&!!(t!=null&&t.createSVGAFrameTable)&&((B=(I=t.canCreateSVGAFrameTable)==null?void 0:I.call(t))!=null?B:!0),o=a?e==="webgpu"?"storage-buffer":"float-texture":"unavailable",s=this.svgaGpuFrameTableBudgetBytes();return{backend:e,sharedTimeline:!0,scopedPlayback:!0,assetLeases:!0,motionTrack:{mode:e==="webgpu"?"gpu-table":"cpu-reference",gpuMediaTypes:e==="webgpu"?["svga"]:[],cpuReferenceFallback:!0,nonUniformScale:!0,sampleFloats:Dg},particles:{backend:e==="webgpu"||e==="webgl2"?e:"unavailable",canvas2D:!1,formats:e==="webgpu"||e==="webgl2"?["ballistic-v1","sprite-v2"]:[],...e==="webgpu"||e==="webgl2"?{spriteAtlas:{source:"rgba8-premultiplied",maxSize:(E=(Q=this.backend)==null?void 0:Q.maxTextureSize)!=null?E:4096},compositeLayers:["behind-media","above-media"],batchEnvelope:!0,atomicBatchGroup:!0,maxInstancesPerBatch:8192}:{}},svgaFrameTimeline:{transport:o,direct:a,hybrid:a,maxTableBytes:s,supportedPaths:a?["gpu-direct","gpu-hybrid","cpu-reference"]:["cpu-reference"],defaultEvaluation:(i=this.options.svgaFrameEvaluation)!=null?i:"auto",gpuDirect:a,gpuHybrid:a,cpuReference:!0,tableBudgetBytes:s}}}async preload(A,g,I){var B,Q;if(await this.ready,b(I,"GiftStage preload canceled"),this.destroyed)throw new Error("GiftStage is destroyed");let E=!1;if(A==="svga"){if(typeof g!="string")throw new Error("SVGA preload lease currently requires a URL source");const e=await this.acquireSharedSVGAEntity(g,I),{entity:t}=e;await this.ensureSVGAFrameTable(t),b(I,"GiftStage preload canceled");const a=t.spriteTable;return{metadata:{type:A,width:t.params.viewBoxWidth,height:t.params.viewBoxHeight,fps:t.params.fps,frameCount:t.params.frames,spriteCount:a.spriteCount,atlasPageCount:(Q=(B=t.atlasTextureHandles)==null?void 0:B.length)!=null?Q:t.atlasTextureHandle?1:0,hasShapes:a.hasAnyShapes,hasClipPaths:a.clipPathIndex.some(o=>o>=0),allFramesInsideViewBox:a.allFramesInsideViewBox===!0},get released(){return E},release:()=>{E||(E=!0,e.release())}}}const i=await this.acquireImageTexture(g,I);return{metadata:{type:A,width:i.width,height:i.height},get released(){return E},release:()=>{E||(E=!0,i.release())}}}async createParticleAtlas(A){if(await this.ready,this.destroyed)throw new Error("GiftStage is destroyed");if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleAtlas(A)}createPlaybackScope(A){if(this.destroyed)throw new Error("GiftStage is destroyed");const g=this,I={get backendType(){return g.backendType},get backend(){return g.backend},getSlot:E=>{var i;return(i=this.manager)==null?void 0:i.getSlot(E)},addGift:E=>this.addGift(E),removeGift:E=>this.removeGift(E),applyMediaTime:(E,i,e,t)=>{var a;(a=this.manager)==null||a.applyPlaybackScopeMediaTime(E,i,e,t)},invalidate:E=>{var i;return(i=this.manager)==null?void 0:i.invalidate({resetClock:E})},registerFrameController:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.registerFrameController(E)},createParticleBatch:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleBatch(E)},createParticleBatchGroup:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleBatchGroup(E)}},B=new ZE(I,A);this.playbackScopes.add(B);const Q=B.destroy.bind(B);return B.destroy=()=>{Q(),this.playbackScopes.delete(B)},B}async mount(A){if(await this.ready,this.destroyed)throw new Error("GiftStage is destroyed");const g=new Set,I=new Set,B={stage:this,capabilities:this.capabilities,getViewport:()=>this.currentCanvasCssSize(),preload:(e,t,a)=>this.preload(e,t,a),createParticleAtlas:async e=>{const t=await this.createParticleAtlas(e);return I.add(t),t},createPlaybackScope:e=>{const t=this.createPlaybackScope(e);return g.add(t),t}},Q=await A.setup(B);let E=!1;const i={name:A.name,api:Q,get destroyed(){return E},destroy:()=>{var e;if(!E){E=!0;for(const t of g)t.destroy();g.clear(),(e=Q==null?void 0:Q.destroy)==null||e.call(Q);for(const t of I)t.destroy();I.clear(),this.mountedPlugins.delete(i)}}};return this.mountedPlugins.add(i),i}removeGift(A){var g;this.resolveGiftPlaybackWaiters(A),this.completedPlaybackSlots.delete(A),this.playbackCompleteWaiters.delete(A),(g=this.manager)==null||g.removeSlot(A)}removeAll(){if(this.manager)for(const A of this.manager.getSlotIds())this.manager.removeSlot(A)}pause(){var A;this.playbackPaused=!0,this.clearAllHtmlVideoPlaybackWatchdogs(),(A=this.manager)==null||A.pause()}resume(){var A;this.playbackPaused=!1,(A=this.manager)==null||A.resume(),this.rearmHtmlVideoPlaybackWatchdogs()}get activeCount(){var A,g;return(g=(A=this.manager)==null?void 0:A.activeCount)!=null?g:0}get backendType(){var A,g;return(g=(A=this.backend)==null?void 0:A.type)!=null?g:"webgl2"}getDiagnostics(){var A,g,I,B,Q,E;this.ensureSVGATimelineBookkeeping();const i=(I=(g=(A=this.manager)==null?void 0:A.getRuntimeDiagnosticsSnapshot)==null?void 0:g.call(A))!=null?I:{frameAbortCount:0,replayFailureCount:0,retryFrameCount:0},e=(E=(Q=(B=this.backend)==null?void 0:B.getRuntimeDiagnosticsSnapshot)==null?void 0:Q.call(B))!=null?E:{submittedDrawCalls:0,rejectedDrawCalls:0,webgpuUncapturedErrors:0,backendLosses:0},t=this.lastRuntimeDiagnostic?{...this.lastRuntimeDiagnostic,...this.lastRuntimeDiagnostic.giftIds?{giftIds:[...this.lastRuntimeDiagnostic.giftIds]}:{}}:null;return{backend:this.backendType,frameAbortCount:i.frameAbortCount,replayFailureCount:i.replayFailureCount,retryFrameCount:i.retryFrameCount,runtimeFallbackCount:this.runtimeFallbackCount,submittedDrawCalls:e.submittedDrawCalls,rejectedDrawCalls:e.rejectedDrawCalls,webgpuUncapturedErrorCount:e.webgpuUncapturedErrors,backendLossCount:e.backendLosses,observerErrorCount:this.runtimeObserverErrorCount,lastEvent:t}}destroy(){var A,g,I,B,Q,E;if(this.destroyed)return;this.destroyed=!0;for(const e of Array.from(this.mountedPlugins))e.destroy();this.mountedPlugins.clear();for(const e of Array.from(this.playbackScopes))e.destroy();this.playbackScopes.clear();for(const e of this.pendingSharedSVGAEntities.values())e.controller.abort();for(const e of this.pendingSharedWebCodecsPlaybacks.values())e.controller.abort();this.pendingSharedWebCodecsPlaybacks.clear(),(A=this.resizeObserver)==null||A.disconnect(),this.resizeObserver=null,window.removeEventListener("resize",this.onWindowLayout),window.removeEventListener("orientationchange",this.onWindowLayout),document.removeEventListener("visibilitychange",this.onVisibilityChange);for(const e of this.sharedImageTextures.values())(g=this.backend)==null||g.deleteTexture(e.texture);this.sharedImageTextures.clear(),this.pendingSharedImageTextures.clear(),(B=(I=this.backend)==null?void 0:I.setRuntimeDiagnosticHandler)==null||B.call(I,null);const i=this.backend;(Q=i==null?void 0:i.setDeviceLostHandler)==null||Q.call(i,null),(E=this.manager)==null||E.destroy();for(const[e]of this.sharedHtmlVideos)this.releaseSharedHtmlVideo(e);for(const[e]of this.sharedSVGAEntities)this.releaseSharedSVGAEntity(e);for(const[e]of this.sharedVideoTextures)this.releaseSharedVideoTexture(e);this.pendingSharedSVGAEntities.clear(),this.pendingSharedHtmlVideos.clear();for(const e of this.sharedWebCodecsPlaybacks.values())for(const t of e)t.playback.destroy();this.sharedWebCodecsPlaybacks.clear(),this.sharedWebCodecsSurfaces.clear(),this.completedPlaybackSlots.clear(),this.playbackCompleteWaiters.clear();for(const[e,t]of this.sharedVideoSources)t.objectUrl&&URL.revokeObjectURL(t.objectUrl),this.sharedVideoSources.delete(e);this.canvas.remove(),this.backend=null,this.manager=null}markGiftPlaybackComplete(A){this.completedPlaybackSlots.add(A),this.resolveGiftPlaybackWaiters(A)}resolveGiftPlaybackWaiters(A){const g=this.playbackCompleteWaiters.get(A);if(!(!g||g.size===0)){for(const I of g)I();this.playbackCompleteWaiters.delete(A)}}waitForGiftPlaybackComplete(A){var g;return this.completedPlaybackSlots.has(A)||!((g=this.manager)!=null&&g.getSlot(A))?Promise.resolve():new Promise(I=>{let B=this.playbackCompleteWaiters.get(A);B||(B=new Set,this.playbackCompleteWaiters.set(A,B)),B.add(I)})}};v(Gg,"SVGA_ATLAS_MAX_SIZE",2048);v(Gg,"SVGA_ATLAS_PADDING",2);v(Gg,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);v(Gg,"HTML_VIDEO_READY_TIMEOUT_MS",15e3);v(Gg,"HTML_VIDEO_WATCHDOG_MIN_GRACE_MS",2e3);v(Gg,"HTML_VIDEO_WATCHDOG_MAX_GRACE_MS",1e4);v(Gg,"HTML_VIDEO_WATCHDOG_GRACE_RATIO",.2);v(Gg,"MAX_TIMER_DELAY_MS",2147e6);v(Gg,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);v(Gg,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let js=Gg;exports.AlphaVideoRenderer=FE;exports.AudioManager=dE;exports.BufferPool=BE;exports.GiftStage=js;exports.ImageRenderer=yE;exports.MOTION_TRACK_SAMPLE_FLOATS=Dg;exports.MotionTrackLeaseImpl=GB;exports.ParticleBatchRenderer=SE;exports.PlaybackScopeImpl=ZE;exports.PostAnimator=GE;exports.RenderManager=PI;exports.SVGABatchRenderer=sE;exports.SVGA_FRAME_TABLE_BUDGET_BYTES=KB;exports.SVGA_FRAME_TABLE_FLOATS=Vg;exports.SVGA_GPU_FRAME_TABLE_BUDGET_BYTES=uC;exports.SVGA_HYBRID_OP_CLIP_CLEAR=JI;exports.SVGA_HYBRID_OP_CLIP_TEST=SB;exports.SVGA_HYBRID_OP_CLIP_WRITE=bg;exports.SVGA_HYBRID_OP_SHAPE=mI;exports.SVGA_HYBRID_OP_TEXTURE=DI;exports.SVGA_SPRITE_METADATA_FLAG_MISSING_RECT=YC;exports.SVGA_SPRITE_METADATA_FLOATS=tC;exports.VAPRenderer=wE;exports.WebCodecsMp4Playback=gI;exports.WebGL1Backend=aC;exports.WebGL2Backend=WQ;exports.WebGPUBackend=TQ;exports.analyzeSVGAFrameTimelineEligibility=nC;exports.buildAtlas=xE;exports.buildBatchVerticesJS=hB;exports.buildSVGAHybridCommandTable=rC;exports.canSharedArrayBuffer=Pi;exports.canWebGL1=Oi;exports.canWebGL2=Xi;exports.canWebGPU=Zi;exports.clamp=DB;exports.countSVGASpriteAtlasPages=yt;exports.createBackend=XQ;exports.decodeSVGAProto=yC;exports.easeInOutCubic=Po;exports.easeInOutQuad=Oo;exports.easeInQuad=Zo;exports.easeOutBack=jo;exports.easeOutCubic=bE;exports.easeOutQuad=Xo;exports.estimateSVGAFrameTableBytes=$I;exports.generateId=SC;exports.inflateJS=FC;exports.initWasm=IE;exports.isSVGAFrameTableBudgetAvailable=wt;exports.isSVGAFrameTableWithinBudget=lt;exports.isWasmReady=hI;exports.lerp=cg;exports.linear=Vo;exports.ortho=pg;exports.packSVGAFrameDataToVec4=Dt;exports.packSVGAFrameTable=kC;exports.packSVGASpriteMetadata=oE;exports.parseSVGA=yB;exports.parseVAPConfig=DC;
|
|
4652
|
+
`}function fs(C,A,g){return{vertex:Ss(g),fragment:us(C,A,g)}}function Ms(C,A,g,I,B=new Float32Array(g.size*_I)){B.fill(0);const Q=A.get(I);if(!Q||Q.length===0)return B;const[E,i]=C.info.rgbFrame;let e=0;for(const t of Q){const a=g.get(String(t.srcId));if(!a)continue;if(e+_I>B.length)break;const[o,s,n,r]=t.frame,[h,c,D,w]=t.mFrame,l=pB(o+E,s+i,n,r,C.info.videoW,C.info.videoH),F=pB(h,c,D,w,C.info.videoW,C.info.videoH);B[e++]=a,B[e++]=l[0],B[e++]=l[1],B[e++]=l[2],B[e++]=l[3],B[e++]=F[0],B[e++]=F[1],B[e++]=F[2],B[e++]=F[3]}return B}class Ns{constructor(A,g,I,B,Q,E=!0){this.config=A,this.frameMap=g,ig(this,"canvas"),ig(this,"gl"),ig(this,"program"),ig(this,"vertexShader"),ig(this,"fragmentShader"),ig(this,"vertexBuffer"),ig(this,"videoTexture"),ig(this,"imagePosLoc"),ig(this,"imagePositionsScratch"),ig(this,"resourceEntries"),ig(this,"textureUnitBySrcId",new Map),ig(this,"videoTextureWidth",1),ig(this,"videoTextureHeight",1);var i;if(I.size===0)throw new Error("VAP mix composer requires at least one slot resource");this.canvas=Gs(B,Q);const e={alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1};let t=!0,a=this.canvas.getContext("webgl2",e);if(a||(t=!1,a=this.canvas.getContext("webgl",e)||this.canvas.getContext("experimental-webgl",e)),!a)throw new Error("VAP mixed rendering requires WebGL support");this.gl=a;const o=Math.max(1,a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS)),s=Math.max(0,o-1),n=[];let r=1;for(const u of(i=A.src)!=null?i:[]){const R=I.get(String(u.srcId));if(!R)continue;if(r>s){console.warn("[GiftStage] VAP mixed resources exceed texture unit limit, skipping",{srcId:u.srcId,srcTag:u.srcTag,maxUnits:o});continue}const M=LQ(a,r,R.source,!0),N={srcId:String(u.srcId),unit:r,texture:M};n.push(N),this.textureUnitBySrcId.set(N.srcId,N.unit),r++}if(n.length===0)throw new Error("VAP mixed rendering could not bind any slot resources");this.resourceEntries=n;let h=1;for(const u of g.values())h=Math.max(h,u.length);this.imagePositionsScratch=new Float32Array(h*_I);const c=fs(this.resourceEntries.length,h,t),D=ds(a,c.vertex,c.fragment);this.program=D.program,this.vertexShader=D.vertexShader,this.fragmentShader=D.fragmentShader,this.imagePosLoc=a.getUniformLocation(this.program,"image_pos"),this.videoTexture=LQ(a,0);const w=a.getUniformLocation(this.program,"u_image_video");w!==null&&a.uniform1i(w,0);const l=a.getUniformLocation(this.program,"u_rgbPremultiplied");l!==null&&a.uniform1f(l,E?1:0);for(const u of this.resourceEntries){const R=a.getUniformLocation(this.program,`u_image${u.unit}`);R!==null&&a.uniform1i(R,u.unit)}const F=a.createBuffer();if(!F)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=F,a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,Rs(A.info),a.STATIC_DRAW);const d=6*Float32Array.BYTES_PER_ELEMENT,y=a.getAttribLocation(this.program,"a_position"),G=a.getAttribLocation(this.program,"a_texCoord"),f=a.getAttribLocation(this.program,"a_alpha_texCoord");a.enableVertexAttribArray(y),a.vertexAttribPointer(y,2,a.FLOAT,!1,d,0),a.enableVertexAttribArray(G),a.vertexAttribPointer(G,2,a.FLOAT,!1,d,2*Float32Array.BYTES_PER_ELEMENT),a.enableVertexAttribArray(f),a.vertexAttribPointer(f,2,a.FLOAT,!1,d,4*Float32Array.BYTES_PER_ELEMENT),a.viewport(0,0,this.canvas.width,this.canvas.height),a.disable(a.BLEND),a.disable(a.DEPTH_TEST),a.clearColor(0,0,0,0),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE)}render(A,g){const I=this.gl;I.useProgram(this.program),I.activeTexture(I.TEXTURE0),I.bindTexture(I.TEXTURE_2D,this.videoTexture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1);const B=vI(A),Q=TI(A);B>0&&Q>0&&B===this.videoTextureWidth&&Q===this.videoTextureHeight?I.texSubImage2D(I.TEXTURE_2D,0,0,0,I.RGBA,I.UNSIGNED_BYTE,A):(I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),B>0&&Q>0&&(this.videoTextureWidth=B,this.videoTextureHeight=Q)),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);const E=Ms(this.config,this.frameMap,this.textureUnitBySrcId,g,this.imagePositionsScratch);return this.imagePosLoc!==null&&I.uniform1fv(this.imagePosLoc,E),I.clear(I.COLOR_BUFFER_BIT),I.drawArrays(I.TRIANGLE_STRIP,0,4),this.canvas}destroy(){const A=this.gl;for(const I of this.resourceEntries)A.deleteTexture(I.texture);A.deleteTexture(this.videoTexture),A.deleteBuffer(this.vertexBuffer),A.deleteProgram(this.program),A.deleteShader(this.vertexShader),A.deleteShader(this.fragmentShader);const g=A.getExtension("WEBGL_lose_context");g==null||g.loseContext()}}var Us=Object.defineProperty,ks=(C,A,g)=>A in C?Us(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,Yg=(C,A,g)=>ks(C,typeof A!="symbol"?A+"":A,g);const vE=1397178947,TE=14,Ys=8,Ug=64*1024;function WE(C){return C+3&-4}class ps{constructor(A=1024){Yg(this,"buffer"),Yg(this,"view"),Yg(this,"bytes"),Yg(this,"offset",0),Yg(this,"encoder",new TextEncoder),this.buffer=new ArrayBuffer(A),this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}ensure(A){const g=this.offset+A;if(g<=this.buffer.byteLength)return;let I=this.buffer.byteLength;for(;I<g;)I*=2;const B=new ArrayBuffer(I);new Uint8Array(B).set(this.bytes.subarray(0,this.offset)),this.buffer=B,this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}async ensureCooperative(A,g){const I=this.offset+A;if(I<=this.buffer.byteLength)return;let B=this.buffer.byteLength;for(;B<I;)B*=2;const Q=new ArrayBuffer(B),E=new Uint8Array(Q);for(let i=0;i<this.offset;i+=Ug){const e=Math.min(i+Ug,this.offset);E.set(this.bytes.subarray(i,e),i),e<this.offset&&await(g==null?void 0:g())}this.buffer=Q,this.view=new DataView(this.buffer),this.bytes=E}u8(A){this.ensure(1),this.view.setUint8(this.offset,A),this.offset+=1}u16(A){this.ensure(2),this.view.setUint16(this.offset,A,!0),this.offset+=2}u32(A){this.ensure(4),this.view.setUint32(this.offset,A,!0),this.offset+=4}i32(A){this.ensure(4),this.view.setInt32(this.offset,A|0,!0),this.offset+=4}f32(A){this.ensure(4),this.view.setFloat32(this.offset,A,!0),this.offset+=4}bytesValue(A){this.u32(A.byteLength),this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}rawBytes(A){this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}async bytesValueCooperative(A,g){await this.ensureCooperative(4+A.byteLength,g),this.u32(A.byteLength),await this.rawBytesCooperative(A,g)}async rawBytesCooperative(A,g){await this.ensureCooperative(A.byteLength,g);for(let I=0;I<A.byteLength;I+=Ug){const B=Math.min(I+Ug,A.byteLength);this.bytes.set(A.subarray(I,B),this.offset),this.offset+=B-I,B<A.byteLength&&await(g==null?void 0:g())}}async stringCooperative(A,g){await this.bytesValueCooperative(this.encoder.encode(A),g)}string(A){this.bytesValue(this.encoder.encode(A))}pad4(){const A=WE(this.offset)-this.offset;for(let g=0;g<A;g++)this.u8(0)}finish(){return this.buffer.slice(0,this.offset)}async finishCooperative(A){const g=new Uint8Array(this.offset),I=this.bytes.subarray(0,this.offset);for(let B=0;B<I.byteLength;B+=Ug){const Q=Math.min(B+Ug,I.byteLength);g.set(I.subarray(B,Q),B),Q<I.byteLength&&A.shouldYield()&&await A.yield()}return g.buffer}}class Ks{constructor(A){this.buffer=A,Yg(this,"view"),Yg(this,"bytes"),Yg(this,"offset",0),Yg(this,"decoder",new TextDecoder),this.view=new DataView(A),this.bytes=new Uint8Array(A)}get position(){return this.offset}skip(A){this.offset+=A}pad4(){this.offset=WE(this.offset)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}i32(){const A=this.view.getInt32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),g=this.bytes.slice(this.offset,this.offset+A);return this.offset+=A,g}async ownedBytesValueCooperative(A){const g=this.u32(),I=this.bytes.subarray(this.offset,this.offset+g);this.offset+=g;const B=new Uint8Array(g);for(let Q=0;Q<g;Q+=Ug){const E=Math.min(Q+Ug,g);B.set(I.subarray(Q,E),Q),E<g&&A.shouldYield()&&await A.yield()}return B.buffer}string(){return this.decoder.decode(this.bytesValue())}sourceBuffer(){return this.buffer}}function VE(C){var A,g;let I=0;for(const Q of C.atlasPages)I+=Q.imageBytes.byteLength;for(const[Q,E]of C.audioBlobs)I+=Q.length*2+E.byteLength;for(const[Q]of C.atlasRects)I+=Q.length*2+20;if(C.clipMeshes)for(const[Q,E]of C.clipMeshes)I+=Q.length*2+E.vertices.byteLength+E.indices.byteLength;const B=C.spriteTable;I+=B.frameData.byteLength,I+=B.clipPathIndex.byteLength,I+=B.shapesIndex.byteLength;for(const Q of B.imageKeys)I+=Q.length*2;for(const Q of B.clipPaths)I+=Q.length*2;for(const Q of B.shapesTable)for(const E of Q)I+=((g=(A=E.pathData)==null?void 0:A.length)!=null?g:0)*2+96;return I}async function sg(C){C.shouldYield()&&await C.yield()}async function ms(C,A){var g,I,B;const Q=C.spriteTable,E=gg({maxBudgetMs:A}),i=()=>sg(E),e=new ps(Ys+VE(C)+Ug);e.u32(vE),e.u16(TE),e.u16(Q.allFramesInsideViewBox===void 0?0:2|(Q.allFramesInsideViewBox?1:0)),e.f32(C.params.viewBoxWidth),e.f32(C.params.viewBoxHeight),e.f32(C.params.fps),e.u32(C.params.frames),e.u32(C.atlasPages.length);for(const t of C.atlasPages)e.u32(t.width),e.u32(t.height),await e.bytesValueCooperative(new Uint8Array(t.imageBytes),i),await sg(E);e.u32(C.atlasRects.size);for(const[t,a]of C.atlasRects)await e.stringCooperative(t,i),e.u32((g=a.textureIndex)!=null?g:0),e.f32(a.x),e.f32(a.y),e.f32(a.w),e.f32(a.h),await sg(E);e.u32(C.audios.length);for(const t of C.audios)await e.stringCooperative(t.audioKey,i),e.u32(t.startFrame),e.u32(t.endFrame),e.f32(t.startTime),e.f32(t.totalTime),await sg(E);e.u32(C.audioBlobs.size);for(const[t,a]of C.audioBlobs)await e.stringCooperative(t,i),await e.bytesValueCooperative(new Uint8Array(a),i),await sg(E);if(await Qo(e,Q,i),e.u32((B=(I=C.clipMeshes)==null?void 0:I.size)!=null?B:0),C.clipMeshes)for(const[t,a]of C.clipMeshes)await e.stringCooperative(t,i),await e.bytesValueCooperative(new Uint8Array(a.vertices.buffer,a.vertices.byteOffset,a.vertices.byteLength),i),await e.bytesValueCooperative(new Uint8Array(a.indices.buffer,a.indices.byteOffset,a.indices.byteLength),i),await sg(E);return e.finishCooperative(E)}async function Js(C,A){const g=gg({maxBudgetMs:A}),I=new Ks(C);if(I.u32()!==vE)throw new Error("Invalid SVGA cache binary magic");if(I.u16()!==TE)throw new Error("Unsupported SVGA cache binary version");const B=I.u16(),Q={viewBoxWidth:I.f32(),viewBoxHeight:I.f32(),fps:I.f32(),frames:I.u32()},E=I.u32(),i=[];for(let D=0;D<E;D++){const w=I.u32(),l=I.u32(),F=await I.ownedBytesValueCooperative(g);i.push({width:w,height:l,imageBytes:F}),await sg(g)}const e=I.u32(),t=new Map;for(let D=0;D<e;D++){const w=I.string(),l=I.u32();t.set(w,{textureIndex:l,x:I.f32(),y:I.f32(),w:I.f32(),h:I.f32()}),await sg(g)}const a=I.u32(),o=[];for(let D=0;D<a;D++)o.push({audioKey:I.string(),startFrame:I.u32(),endFrame:I.u32(),startTime:I.f32(),totalTime:I.f32()}),await sg(g);const s=I.u32(),n=new Map;for(let D=0;D<s;D++){const w=I.string();n.set(w,await I.ownedBytesValueCooperative(g)),await sg(g)}const r=await UE(I,()=>sg(g));(B&2)!==0&&(r.allFramesInsideViewBox=(B&1)!==0),Wg(Q,r);const h=I.u32(),c=new Map;for(let D=0;D<h;D++){const w=I.string(),l=new Float32Array(await I.ownedBytesValueCooperative(g)),F=new Uint32Array(await I.ownedBytesValueCooperative(g));w&&l.length>=6&&F.length>=3&&c.set(w,{vertices:l,indices:F}),await sg(g)}return{params:Q,spriteTable:r,audios:o,audioBlobs:n,atlasRects:t,atlasPages:i,clipMeshes:c}}function dC(C){return`svga-asset:${C}`}function RC(C){return`svga-asset-bin:${C}`}async function Ls(C,A={}){const g=vt(dC(C),"svga-asset");if(g)return Wg(g.params,g.spriteTable),g;const I=await Tt(RC(C));if(!I)return null;try{const B=await Js(I,A.frameBudgetMs);return nE(dC(C),"svga-asset",B,I.byteLength),B}catch(B){return Vt(RC(C)),null}}async function rB(C,A,g={}){Wg(A.params,A.spriteTable);const I=await ms(A,g.frameBudgetMs);nE(dC(C),"svga-asset",A,Math.max(I.byteLength,VE(A))),await Wt(RC(C),I)}function qg(C){return typeof C=="number"&&Number.isFinite(C)&&C>0}function Hs(C,A){const g=qg(C)?C*.5:0,I=qg(A)?A:0;return{width:g,height:I}}function xs(C,A,g,I){const B=qg(A.width)?A.width:void 0,Q=qg(A.height)?A.height:void 0,E=qg(C.width)?C.width:void 0,i=qg(C.height)?C.height:void 0,e=C.useOriginalSize===!0;if(E&&i)return{width:E,height:i};if(E)return B&&Q?{width:E,height:E*Q/B}:{width:E,height:E};if(i)return B&&Q?{width:i*B/Q,height:i}:{width:i,height:i};let t=B!=null?B:0,a=Q!=null?Q:0;if(t>0&&a>0&&qg(g)&&qg(I)&&(!e||t>g||a>I)){const o=Math.min(g/t,I/a);t*=o,a*=o}return{width:t,height:a}}function bs(C,A){var g,I,B;if(typeof C=="string"){const E=(g=/^data:(image\/[a-z0-9.+-]+)/i.exec(C))==null?void 0:g[1];if(E)return E;const i=(B=(I=C.split(/[?#]/,1)[0])==null?void 0:I.toLowerCase())!=null?B:"";if(i.endsWith(".svg"))return"image/svg+xml";if(i.endsWith(".png"))return"image/png";if(i.endsWith(".jpg")||i.endsWith(".jpeg"))return"image/jpeg";if(i.endsWith(".webp"))return"image/webp";if(i.endsWith(".gif"))return"image/gif";if(i.endsWith(".avif"))return"image/avif"}if(A[0]===137&&A[1]===80&&A[2]===78&&A[3]===71)return"image/png";if(A[0]===255&&A[1]===216&&A[2]===255)return"image/jpeg";if(A[0]===71&&A[1]===73&&A[2]===70)return"image/gif";if(A[0]===82&&A[1]===73&&A[2]===70&&A[3]===70&&A[8]===87&&A[9]===69&&A[10]===66&&A[11]===80)return"image/webp";const Q=new TextDecoder().decode(A.subarray(0,Math.min(A.length,256)));return/^\s*(?:<\?xml[^>]*>\s*)?<svg[\s>]/i.test(Q)?"image/svg+xml":""}function HQ(C,A){return new Promise((g,I)=>{const B=URL.createObjectURL(C),Q=new Image;Q.crossOrigin="anonymous";const E=()=>{A==null||A.removeEventListener("abort",e),Q.onload=null,Q.onerror=null},i=t=>{E(),URL.revokeObjectURL(B),I(t)},e=()=>i(cA("Image decoding aborted"));Q.onload=()=>{E();const t=Q.naturalWidth||Q.width,a=Q.naturalHeight||Q.height;if(t<=0||a<=0){URL.revokeObjectURL(B),I(new Error("Decoded image has invalid dimensions"));return}g({source:Q,width:t,height:a,sourcePremultiplied:!1,dispose:()=>URL.revokeObjectURL(B)})},Q.onerror=()=>i(new Error("Failed to decode image")),A==null||A.addEventListener("abort",e,{once:!0}),Q.src=B})}async function eC(C,A){b(A,"Image loading aborted");const g=typeof C=="string"?await BI(C,A):C;b(A,"Image loading aborted");const I=new Uint8Array(g),B=new Blob([I],{type:bs(C,I)});if(typeof createImageBitmap=="function"){let Q=null;try{Q=await createImageBitmap(B,{premultiplyAlpha:"premultiply"})}catch(E){b(A,"Image decoding aborted");try{Q=await createImageBitmap(B)}catch(i){return b(A,"Image decoding aborted"),HQ(B,A)}}if(A!=null&&A.aborted)throw Q.close(),cA("Image decoding aborted");if(Q.width<=0||Q.height<=0)throw Q.close(),new Error("Decoded image has invalid dimensions");return{source:Q,width:Q.width,height:Q.height,sourcePremultiplied:!0,dispose:()=>Q.close()}}return HQ(B,A)}const Dg=8;var qs=Object.defineProperty,vs=(C,A,g)=>A in C?qs(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,ZA=(C,A,g)=>vs(C,typeof A!="symbol"?A+"":A,g);function xQ(C,A){return Number.isFinite(C)?C:A}class Ts{constructor(A,g,I){ZA(this,"data"),ZA(this,"stride"),ZA(this,"gpuBuffer"),ZA(this,"backend"),ZA(this,"_released",!1),this.backend=A,this.data=g,this.stride=I,this.gpuBuffer=A&&A.type==="webgpu"?A.createBuffer(g,"storage"):null}get released(){return this._released}release(){var A;this._released||(this._released=!0,this.gpuBuffer&&((A=this.backend)==null||A.deleteBuffer(this.gpuBuffer)),this.backend=null)}}class GB{constructor(A,g){ZA(this,"trackCount"),ZA(this,"sampleCount"),ZA(this,"sampleIntervalMs"),ZA(this,"durationMs"),ZA(this,"table"),ZA(this,"gpuGlobalsBuffer"),ZA(this,"backend"),ZA(this,"gpuGlobals",new Float32Array(8)),ZA(this,"scratch",new Float32Array(Dg)),ZA(this,"_released",!1);var I;this.backend=A,this.trackCount=Math.max(1,Math.floor(g.trackCount)),this.sampleCount=Math.max(1,Math.floor(g.sampleCount)),this.sampleIntervalMs=Math.max(.001,xQ(g.sampleIntervalMs,1e3/60));const B=this.trackCount*this.sampleCount*Dg;if(g.samples.length!==B)throw new Error(`MotionTrack samples length must be ${B}, got ${g.samples.length}`);this.durationMs=Math.max(0,xQ((I=g.durationMs)!=null?I:(this.sampleCount-1)*this.sampleIntervalMs,0)),this.table=new Ts(A,new Float32Array(g.samples),Dg),this.gpuGlobals[1]=this.sampleIntervalMs,this.gpuGlobals[2]=this.sampleCount,this.gpuGlobalsBuffer=(A==null?void 0:A.type)==="webgpu"?A.createBuffer(this.gpuGlobals,"uniform"):null}get released(){return this._released}sample(A,g,I=this.scratch){if(this._released)throw new Error("MotionTrack is released");if(!Number.isInteger(A)||A<0||A>=this.trackCount)throw new RangeError(`MotionTrack index out of range: ${A}`);if(I.length<Dg)throw new RangeError(`MotionTrack output requires ${Dg} floats`);const B=Math.max(0,Math.min(this.sampleCount-1,g/this.sampleIntervalMs)),Q=Math.floor(B),E=Math.min(this.sampleCount-1,Q+1),i=A*this.sampleCount*Dg,e=i+Q*Dg,t=i+E*Dg,a=this.table.data,s=Q!==E&&a[e+7]>.5?B-Q:0;for(let n=0;n<Dg;n++){const r=a[e+n];I[n]=n>=6||s<=0?r:r+(a[t+n]-r)*s}return I}updateGpuGlobals(A,g,I){!this.gpuGlobalsBuffer||!this.backend||(this.gpuGlobals[0]=A,this.gpuGlobals[3]=g,this.gpuGlobals[4]=I,this.backend.updateBuffer(this.gpuGlobalsBuffer,this.gpuGlobals,0))}release(){var A;this._released||(this._released=!0,this.gpuGlobalsBuffer&&((A=this.backend)==null||A.deleteBuffer(this.gpuGlobalsBuffer)),this.table.release())}}var Ws=Object.defineProperty,Vs=(C,A,g)=>A in C?Ws(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,xA=(C,A,g)=>Vs(C,typeof A!="symbol"?A+"":A,g);class ZE{constructor(A,g=`scope-${SC()}`){xA(this,"id"),xA(this,"host"),xA(this,"controller",new AbortController),xA(this,"gifts",new Map),xA(this,"tracks",new Set),xA(this,"bindings",new Set),xA(this,"particleBatches",new Set),xA(this,"particleBatchGroups",new Set),xA(this,"frameListeners",new Set),xA(this,"finishListeners",new Set),xA(this,"unregisterController"),xA(this,"_state","idle"),xA(this,"_currentTimeMs",0),xA(this,"durationMs",0),xA(this,"lastTickAtMs",0),xA(this,"playbackRevision",0),this.host=A,this.id=g,this.unregisterController=A.registerFrameController(this)}get signal(){return this.controller.signal}get state(){return this._state}get currentTimeMs(){return this._currentTimeMs}get active(){return this._state==="playing"}async addGift(A){this.assertAlive();const g=await this.host.addGift({...A,startPaused:!0,playbackScopeControlled:!0,signal:this.signal});if(this.signal.aborted)throw g.destroy(),new DOMException("Playback scope was destroyed","AbortError");return this.gifts.set(g.id,g),g}createMotionTrack(A){this.assertAlive();const g=new GB(this.host.backend,A);this.tracks.add(g);const I=g.release.bind(g);return g.release=()=>{I(),this.tracks.delete(g)},g}createParticleBatch(A){this.assertAlive();const g=this.host.createParticleBatch(A);return this.particleBatches.add(g),g.setTime(this._currentTimeMs),g}createParticleBatchGroup(A){if(this.assertAlive(),!this.host.createParticleBatchGroup)throw new Error("ParticleBatchGroup is not supported by this host");const g=this.host.createParticleBatchGroup(A);try{return g.setTime(this._currentTimeMs),this.particleBatchGroups.add(g),g}catch(I){throw g.destroy(),I}}bindMotion(A,g,I,B={}){var Q;if(this.assertAlive(),!this.gifts.has(A.id))throw new Error("Gift does not belong to this playback scope");if(!this.tracks.has(g))throw new Error("MotionTrack does not belong to this playback scope");const E={gift:A,track:g,trackIndex:I,center:B.center!==!1,gpuDriven:!1,scratch:new Float32Array(8)};this.bindings.add(E);const i=this.host.getSlot(A.id);i&&B.center!==!1&&g instanceof GB&&g.table.gpuBuffer&&g.gpuGlobalsBuffer&&this.host.backendType==="webgpu"&&i.type==="svga"&&i.videoEntity&&!((Q=i.svgaSlotTextures)!=null&&Q.size)&&i.options.objectFit!=="cover"&&!i.options.transformOrigin&&(E.gpuDriven=!0,i.motionTrackBinding={buffer:g.table.gpuBuffer,globalsBuffer:g.gpuGlobalsBuffer,trackIndex:I,sampleCount:g.sampleCount,sampleIntervalMs:g.sampleIntervalMs,currentTimeMs:this._currentTimeMs},i.x=0,i.y=0,i.motionScaleX=1,i.motionScaleY=1,i.rotation=0,i.opacity=1),E.gpuDriven||this.applyBinding(E,this._currentTimeMs);const e=E.gpuDriven?i==null?void 0:i.motionTrackBinding:null;return this.host.invalidate(),()=>{this.bindings.delete(E);const t=this.host.getSlot(A.id);E.gpuDriven&&t&&t.motionTrackBinding===e&&(t.motionTrackBinding=null,this.host.invalidate())}}onFrame(A){return this.frameListeners.add(A),()=>this.frameListeners.delete(A)}onFinish(A){return this.finishListeners.add(A),()=>this.finishListeners.delete(A)}start(A){var g;this.assertAlive(),this.playbackRevision++,this.durationMs=Math.max(0,A.durationMs),this._currentTimeMs=Math.max(0,Math.min(this.durationMs,(g=A.fromMs)!=null?g:0)),this.lastTickAtMs=performance.now(),this._state="playing";for(const I of this.gifts.values())I.resume();this.applyMediaTime(this._currentTimeMs,!0,!0),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.host.invalidate(!0)}pause(){if(this._state==="playing"){this.playbackRevision++,this._state="paused";for(const A of this.gifts.values())A.pause()}}resume(){if(this._state==="paused"){this.playbackRevision++,this.lastTickAtMs=performance.now(),this._state="playing";for(const A of this.gifts.values())A.resume();this.applyMediaTime(this._currentTimeMs,!1,!0),this.host.invalidate(!0)}}seek(A){this.assertAlive(),this.playbackRevision++,this._currentTimeMs=Math.max(0,Math.min(this.durationMs,A)),this._state==="playing"&&(this.lastTickAtMs=performance.now()),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.applyMediaTime(this._currentTimeMs,!1,!0),this.emitFrame(0),this.host.invalidate()}stop(){if(!(this._state==="destroyed"||this._state==="stopped")){this.playbackRevision++,this._state="stopped";for(const A of this.gifts.values())A.pause();this.host.invalidate()}}tick(A,g){if(this._state!=="playing")return!1;const I=this.playbackRevision,B=Math.max(0,g),Q=this.lastTickAtMs>0?Math.max(0,A-this.lastTickAtMs):B,E=Math.min(B,Q);if(this.lastTickAtMs=A,this._currentTimeMs=Math.min(this.durationMs,this._currentTimeMs+E),this.applyAll(this._currentTimeMs),this.applyParticleTime(this._currentTimeMs),this.applyMediaTime(this._currentTimeMs),I!==this.playbackRevision||(this.emitFrame(E),I!==this.playbackRevision))return!0;if(this._currentTimeMs>=this.durationMs){this._state="stopped";for(const i of this.gifts.values())i.pause();for(const i of this.finishListeners)i()}return!0}destroy(){var A;if(this._state!=="destroyed"){this.playbackRevision++,this._state="destroyed",this.controller.abort(),(A=this.unregisterController)==null||A.call(this),this.unregisterController=null;for(const g of this.bindings)this.bindings.delete(g);for(const g of this.gifts.values())this.host.removeGift(g.id);this.gifts.clear();for(const g of this.tracks)g.release();this.tracks.clear();for(const g of this.particleBatches)g.destroy();this.particleBatches.clear();for(const g of this.particleBatchGroups)g.destroy();this.particleBatchGroups.clear(),this.frameListeners.clear(),this.finishListeners.clear()}}applyAll(A){const g=this.host.backend;if(g){const{sx:I,sy:B}=Xg(g.canvas);for(const Q of this.tracks)Q instanceof GB&&Q.updateGpuGlobals(A,I,B)}for(const I of this.bindings)I.gpuDriven||this.applyBinding(I,A)}applyParticleTime(A){for(const g of this.particleBatches)g.setTime(A);for(const g of this.particleBatchGroups)g.setTime(A)}applyBinding(A,g){const I=this.host.getSlot(A.gift.id);if(!I)return;I.motionTrackBinding&&(I.motionTrackBinding.currentTimeMs=g);const B=A.track.sample(A.trackIndex,g,A.scratch),Q=this.host.backend;if(!Q)return;const{sx:E,sy:i}=Xg(Q.canvas),e=Number.isFinite(B[2])?B[2]:1,t=Number.isFinite(B[3])?B[3]:1;I.motionScaleX=e,I.motionScaleY=t,I.rotation=Number.isFinite(B[4])?B[4]:0,I.opacity=B[6]>.5?Math.max(0,Math.min(1,B[5])):0;const a=B[0]*E,o=B[1]*i;I.x=A.center?a-I.width*e/2:a,I.y=A.center?o-I.height*t/2:o,I.batchKeyCache=void 0,I.coincidentVisualKeyCache=void 0,I.svgaStaticBatchCache=null}applyMediaTime(A,g=!1,I=!1){for(const B of this.gifts.values())this.host.applyMediaTime(B.id,A,g,I)}emitFrame(A){const g={nowMs:this._currentTimeMs,deltaMs:A,progress:this.durationMs>0?this._currentTimeMs/this.durationMs:1};for(const I of this.frameListeners)I(g)}assertAlive(){if(this._state==="destroyed")throw new Error("Playback scope is destroyed")}}var Zs=Object.defineProperty,Xs=(C,A,g)=>A in C?Zs(C,A,{enumerable:!0,configurable:!0,writable:!0,value:g}):C[A]=g,v=(C,A,g)=>Xs(C,typeof A!="symbol"?A+"":A,g);function bQ(C){return Number.isFinite(C)?Math.max(0,Math.min(1,C)):1}function Os(C){return"delayMs"in C}const wA="GiftStage load canceled";class qQ extends Error{}function fg(C){let A=!1;return()=>{A||(A=!0,C())}}function Ps(C,A=typeof navigator!="undefined"?navigator.hardwareConcurrency:void 0){if(C!=null)return Math.max(1,Math.floor(Number.isFinite(C)?C:1));const g=A!=null&&Number.isFinite(A)&&A>0?Math.floor(A):4;return Math.max(1,Math.min(4,Math.floor(g/2)))}const Gg=class zA{constructor(A){v(this,"sharedSVGAEntities",new Map),v(this,"pendingSharedSVGAEntities",new Map),v(this,"svgaFullClipPrewarmPromises",new WeakMap),v(this,"svgaPersistentCacheWriters",new WeakMap),v(this,"svgaPersistentCacheWritePromises",new WeakMap),v(this,"sharedVideoSources",new Map),v(this,"sharedHtmlVideos",new Map),v(this,"sharedVideoTextures",new Map),v(this,"pendingSharedHtmlVideos",new Map),v(this,"sharedImageTextures",new Map),v(this,"pendingSharedImageTextures",new Map),v(this,"sharedWebCodecsPlaybacks",new Map),v(this,"pendingSharedWebCodecsPlaybacks",new Map),v(this,"sharedWebCodecsSurfaces",new Map),v(this,"completedPlaybackSlots",new Set),v(this,"playbackCompleteWaiters",new Map),v(this,"canvas"),v(this,"backend",null),v(this,"manager",null),v(this,"options"),v(this,"ready"),v(this,"destroyed",!1),v(this,"resizeObserver",null),v(this,"nextRenderOrder",0),v(this,"nextSharedWebCodecsPlaybackId",1),v(this,"nextSharedWebCodecsSurfaceId",1),v(this,"playbackScopes",new Set),v(this,"mountedPlugins",new Set),v(this,"svgaReportedPathKeys",new WeakMap),v(this,"svgaFrameTablePromises",new WeakMap),v(this,"svgaFrameTableResidentBytes",new WeakMap),v(this,"svgaFrameTableReservedBytes",new WeakMap),v(this,"releasedSVGATimelineEntities",new WeakSet),v(this,"activeSVGAGpuFrameTableBytes",0),v(this,"reservedSVGAGpuFrameTableBytes",0),v(this,"svgaBackendLost",!1),v(this,"svgaPreparingEntities",new Set),v(this,"activeSVGATimelineEntities",new Set),v(this,"svgaEntitySources",new WeakMap),v(this,"runtimeFallbackCount",0),v(this,"runtimeObserverErrorCount",0),v(this,"lastRuntimeDiagnostic",null),v(this,"playbackPaused",!1),v(this,"onWindowLayout",()=>{this.destroyed||this.syncCanvasSize()}),v(this,"onVisibilityChange",()=>{var g;this.destroyed||((g=this.manager)==null||g.setHidden(document.hidden),document.hidden?this.clearAllHtmlVideoPlaybackWatchdogs():this.rearmHtmlVideoPlaybackWatchdogs())}),this.options=A,this.canvas=document.createElement("canvas"),this.canvas.style.cssText="position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:9999;",A.container.appendChild(this.canvas),document.addEventListener("visibilitychange",this.onVisibilityChange),this.ready=this.init()}backingStoreDpr(){const A=this.options.resolution;if(A!=null&&A>0&&Number.isFinite(A))return A;const g=typeof window!="undefined"&&window.devicePixelRatio>0?window.devicePixelRatio:1;return Math.min(g,2)}syncCanvasSize(){var A;Ae(this.canvas,this.backingStoreDpr(),this.options.maxRenderSize),(A=this.manager)==null||A.syncSlotLayoutFromOptions()}resourcePipelineConcurrency(){return Ps(this.options.maxConcurrentParse)}async init(){var A,g,I,B;this.syncCanvasSize(),document.hidden||await new Promise(t=>requestAnimationFrame(()=>t())),this.syncCanvasSize(),bt({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:zA.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:zA.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES}),NC((A=this.options.svgaWorkerTaskConcurrency)!=null?A:1);const Q=(g=this.options.preferWebGPU)!=null?g:!0,E=this.options.antialias,[i]=await Promise.all([XQ(this.canvas,Q,E,this.options.forceWebGL1===!0),IE()]);this.backend=i;const e=i;(I=i.setRuntimeDiagnosticHandler)==null||I.call(i,t=>{this.emitRuntimeDiagnostic({type:t.type,...t.message?{message:t.message}:{}})}),(B=e.setDeviceLostHandler)==null||B.call(e,()=>this.handleSVGABackendLoss()),this.manager=new PI(this.backend,t=>{this.fallbackSVGAFrameTable(t,"validation-failed")},t=>{this.emitRuntimeDiagnostic(t)}),this.manager.setHidden(document.hidden),this.resizeObserver=new ResizeObserver(()=>{this.destroyed||this.syncCanvasSize()}),this.resizeObserver.observe(this.canvas),window.addEventListener("resize",this.onWindowLayout),window.addEventListener("orientationchange",this.onWindowLayout)}svgaParseOptions(A){return{useWorker:this.options.svgaParseInWorker!==!1,svgaLoadFrameBudgetMs:this.options.svgaLoadFrameBudgetMs,svgaWorkerFrameBudgetMs:this.options.svgaWorkerFrameBudgetMs,svgaWorkerTaskConcurrency:this.options.svgaWorkerTaskConcurrency,svgaWorkerImageDecodeConcurrency:this.options.svgaWorkerImageDecodeConcurrency,svgaParseProfile:this.options.svgaParseProfile,signal:A}}svgaAtlasFrameBudgetMs(){const A=this.options.svgaLoadFrameBudgetMs,g=this.options.svgaAtlasFrameBudgetMs;return A==null?g:g==null?A:Math.min(A,g)}svgaClipFrameBudgetMs(){var A;const g=(A=this.options.svgaClipPrewarmFrameBudgetMs)!=null?A:8,I=this.options.svgaLoadFrameBudgetMs;return I==null?g:Math.min(I,g)}isSlotLoadActive(A){var g,I;return!this.destroyed&&((g=A.loadAbortController)==null?void 0:g.signal.aborted)!==!0&&((I=this.manager)==null?void 0:I.getSlot(A.id))===A}assertSlotLoadActive(A){if(!this.isSlotLoadActive(A))throw new Error(wA)}isLoadCanceled(A){return Kg(A)||A instanceof Error&&A.message===wA}currentCanvasCssSize(){const A=this.canvas.clientWidth||this.options.container.clientWidth||window.innerWidth||0,g=this.canvas.clientHeight||this.options.container.clientHeight||window.innerHeight||0;return{width:A,height:g}}async resolveGiftIntrinsicSize(A,g){switch(A.type){case"svga":{const I=await Uo(A.source,this.svgaParseOptions(g));return{width:I.viewBoxWidth,height:I.viewBoxHeight}}case"vap":{if(!A.config)throw new Error("VAP requires config");const I=await DC(A.config),B=AI(I.info);return{width:B.w,height:B.h}}case"alphaVideo":return this.probeVideoNaturalSize(A.source,"alphaVideo");case"image":{const I=await eC(A.source,g);try{return{width:I.width,height:I.height}}finally{I.dispose()}}}}async normalizeAddGiftOptions(A,g){if(A.width!=null&&A.height!=null)return A;const I=this.currentCanvasCssSize();if(A.objectFit==="cover"&&A.width==null&&A.height==null&&I.width>0&&I.height>0)return{...A,width:I.width,height:I.height};const B=g!=null?g:await this.resolveGiftIntrinsicSize(A,A.signal),Q=xs({width:A.width,height:A.height,useOriginalSize:A.useOriginalSize},B,I.width,I.height);return{...A,width:Q.width,height:Q.height}}resolveAnimationStepTarget(A,g){var I,B,Q,E,i,e;const{sx:t,sy:a}=Xg(this.canvas),o=(I=g.scaleTo)!=null?I:A.scale,s=g.flyTo!=null?g.flyTo.x*t:A.x+A.width*A.scale/2,n=g.flyTo!=null?g.flyTo.y*a:A.y+A.height*A.scale/2;return{targetX:s-A.width*o/2,targetY:n-A.height*o/2,targetScale:o,targetOpacity:bQ((B=g.opacity)!=null?B:A.opacity),targetRotation:(E=(Q=g.rotationTo)!=null?Q:A.rotation)!=null?E:0,duration:Math.max(1,(i=g.duration)!=null?i:600),easing:(e=g.easing)!=null?e:bE}}runGiftAnimationStep(A,g,I){const B=this.resolveAnimationStepTarget(A,I),Q=this.manager.postAnimator.startTweenPromise(A,B.targetX,B.targetY,B.targetScale,B.duration,B.easing,()=>{var E;return(E=I.onComplete)==null?void 0:E.call(I,g)},B.targetOpacity,B.targetRotation);return this.manager.invalidate({resetClock:!0}),Q}createGiftAnimationChain(A,g,I){const B=Array.isArray(I)?[...I]:I?[I]:[],Q=[];let E=!1,i=!1,e=null,t=null;const a=s=>new Promise(n=>{if(i){n();return}t=n,e=setTimeout(()=>{e=null,t=null,n()},Math.max(0,s))}),o={to:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push(s),o},then:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push(s),o},delay:s=>{if(E)throw new Error("Gift animation chain has already started");return B.push({delayMs:Math.max(0,s)}),o},onComplete:s=>{if(E)throw new Error("Gift animation chain has already started");return Q.push(s),o},start:async(s="immediate")=>{var n,r;E=!0;const h=(n=this.manager)==null?void 0:n.getSlot(A.id);if(!h||h.state==="finished")return g;s==="afterGiftComplete"&&await this.waitForGiftPlaybackComplete(A.id);let c=!1;for(const D of B){if(i||!((r=this.manager)!=null&&r.getSlot(A.id))||A.state==="finished"){c=!0;break}Os(D)?await a(D.delayMs):await this.runGiftAnimationStep(A,g,D)}if(!c&&!i)for(const D of Q)D(g);return g},cancel:()=>{var s;i=!0,e!=null&&(clearTimeout(e),e=null),t==null||t(),t=null,(s=this.manager)==null||s.postAnimator.cancelForGift(A.id)}};return o}getGiftRenderInfo(A){var g,I,B,Q,E,i,e,t,a,o,s,n,r,h,c,D,w,l,F,d,y,G,f,u,R,M;if(A.type!=="svga")return null;const N=A.videoEntity,S=(I=(g=A.svgaFrameTableState)!=null?g:N==null?void 0:N.svgaFrameTableState)!=null?I:null,Y=N==null?void 0:N.spriteTable,U=N?(Q=(B=N.atlasTextureHandles)==null?void 0:B.length)!=null?Q:N.atlasTextureHandle?1:0:0,k=N&&(e=(i=(E=this.manager)==null?void 0:E.countCompatibleSVGAInstances)==null?void 0:i.call(E,N))!=null?e:0;if(S){const m=S.renderInfo.selectedPath,J=m==="cpu-reference",q=(t=S.renderInfo.frameTableBytes)!=null?t:S.renderInfo.tableBytes,_=(s=(o=(a=N==null?void 0:N.svgaHybridCommandTable)==null?void 0:a.byteLength)!=null?o:S.renderInfo.commandTableBytes)!=null?s:0;return{selectedPath:m,svgaFramePath:m,parentMotionMode:A.motionTrackBinding&&((n=this.backend)==null?void 0:n.type)==="webgpu"?"gpu-table":A.motionTrackBinding?"cpu-reference":void 0,backend:S.renderInfo.backend,requested:(h=(r=A.options.svgaFrameEvaluation)!=null?r:this.options.svgaFrameEvaluation)!=null?h:"auto",spriteCount:(c=Y==null?void 0:Y.spriteCount)!=null?c:S.renderInfo.spriteCount,frameCount:(D=Y==null?void 0:Y.frameCount)!=null?D:S.renderInfo.frameCount,compatibleInstanceCount:k,atlasPageCount:U,tableBytes:S.renderInfo.tableBytes,frameTableBytes:q,commandTableBytes:_,budgetBytes:S.renderInfo.budgetBytes,pathState:(w=S.renderInfo.pathState)!=null?w:S.renderInfo.fallbackReasons.includes("table-preparing")?"preparing":m==="cpu-reference"?"fallback":"settled",drawBatchMode:J?"per-slot":(l=A.svgaDrawBatchMode)!=null?l:m==="gpu-hybrid"?"hybrid-scheduled":"per-slot",drawCompatibleInstanceCount:J?1:(F=A.svgaDrawCompatibleInstanceCount)!=null?F:k,fallbackReasons:[...S.renderInfo.fallbackReasons],...S.renderInfo.fallbackReason?{fallbackReason:S.renderInfo.fallbackReason}:{}}}return{selectedPath:"cpu-reference",svgaFramePath:"cpu-reference",parentMotionMode:A.motionTrackBinding?"cpu-reference":void 0,backend:(y=(d=this.backend)==null?void 0:d.type)!=null?y:"webgl2",requested:(f=(G=A.options.svgaFrameEvaluation)!=null?G:this.options.svgaFrameEvaluation)!=null?f:"auto",spriteCount:(u=Y==null?void 0:Y.spriteCount)!=null?u:0,frameCount:(R=Y==null?void 0:Y.frameCount)!=null?R:0,compatibleInstanceCount:k,atlasPageCount:U,tableBytes:0,frameTableBytes:0,commandTableBytes:0,budgetBytes:(M=this.options.svgaGpuFrameTableBudgetBytes)!=null?M:32*1024*1024,pathState:"preparing",drawBatchMode:"per-slot",drawCompatibleInstanceCount:k,fallbackReasons:[A.options.svgaFrameEvaluation==="cpu"||this.options.svgaFrameEvaluation==="cpu"?"policy-disabled":"table-preparing"]}}reportSVGARenderPath(A){var g,I;this.ensureSVGATimelineBookkeeping();const B=this.getGiftRenderInfo(A);if(!B)return;const Q=`${B.selectedPath}|${B.pathState}|${B.drawBatchMode}|${B.drawCompatibleInstanceCount}|${B.fallbackReasons.join(",")}|${B.tableBytes}|${B.commandTableBytes}`;if(this.svgaReportedPathKeys.get(A)!==Q){this.svgaReportedPathKeys.set(A,Q);try{(I=(g=this.options).onSVGARenderPathChange)==null||I.call(g,{giftId:A.id,...B})}catch(E){this.recordObserverError("onSVGARenderPathChange",E)}}}async addGift(A){var g,I,B,Q,E,i,e,t,a,o,s,n;if(console.info("[GiftStage] addGift await ready…",A.type),await this.ready,b(A.signal,wA),console.info("[GiftStage] addGift ready, loading…",A.type),this.destroyed)throw new Error("GiftStage is destroyed");let r=null;A.type==="image"&&(r=await this.acquireImageTexture(A.source,A.signal));let h;try{h=await this.normalizeAddGiftOptions(A,r?{width:r.width,height:r.height}:void 0)}catch(u){throw r==null||r.release(),u}if(this.destroyed)throw r==null||r.release(),new Error("GiftStage is destroyed");const c=SC(),D=new AbortController,w=()=>D.abort();(g=A.signal)!=null&&g.aborted?w():(I=A.signal)==null||I.addEventListener("abort",w,{once:!0});const{sx:l,sy:F}=Xg(this.canvas),d=RE(h.x,h.y,h.width,h.height,this.canvas.clientWidth,this.canvas.clientHeight),y={id:c,type:h.type,state:"loading",options:h,zIndex:(B=h.zIndex)!=null?B:0,renderOrder:this.nextRenderOrder++,x:d.x*l,y:d.y*F,width:h.width*l,height:h.height*F,scale:1,opacity:bQ((Q=h.opacity)!=null?Q:1),rotation:Number.isFinite(h.rotation)?h.rotation:0,paused:h.startPaused===!0,playbackScopeControlled:h.playbackScopeControlled===!0,svgaInitialFrameEmitted:!1,currentFrame:0,accumulatedTime:0,lastTickTime:0,loopCount:0,svgaClipReadyFrame:null,videoEntity:null,loadAbortController:D,detachLoadAbortSignal:A.signal?()=>{var u;return(u=A.signal)==null?void 0:u.removeEventListener("abort",w)}:null,videoPlaybackWatchdogTimer:null,videoPlaybackCompletionStarted:!1,svgaSlotTextures:void 0,videoElement:null,releaseMediaSource:null,releaseSharedSVGAAsset:null,releaseSharedVideoPlayback:null,releaseSharedVideoTexture:null,webcodecsPlayback:null,webcodecsSharedState:null,releaseWebCodecsPlayback:null,wcPlaybackTime:0,videoTextureHandle:null,imageTextureHandle:(E=r==null?void 0:r.texture)!=null?E:null,releaseSharedImageTexture:(i=r==null?void 0:r.release)!=null?i:null,webcodecsSurface:null,releaseWebCodecsSurface:null,vapMixState:null,onFrame:h.onFrame,onComplete:void 0};let G;G={id:c,type:h.type,pause:()=>{var u,R,M,N;y.paused=!0,y.type==="svga"&&((u=this.manager)==null||u.audioManager.stopAllForGift(y.id)),this.clearHtmlVideoPlaybackWatchdog(y),(R=this.manager)==null||R.postAnimator.pauseForGift(y.id),(M=this.manager)==null||M.invalidate(),(N=this.manager)==null||N.syncVideoPlaybackForSlot(y)},resume:()=>{var u,R,M,N,S;if(y.paused=!1,(u=this.manager)==null||u.postAnimator.resumeForGift(y.id),(R=this.manager)==null||R.invalidate({resetClock:!0}),(M=this.manager)==null||M.syncVideoPlaybackForSlot(y),y.type==="svga"&&y.videoEntity&&!y.playbackScopeControlled){const Y=y.videoEntity.params.fps,U=y.videoEntity.params.frames,k=y.loopCount*U+y.currentFrame+y.accumulatedTime*Y;(N=this.manager)==null||N.audioManager.syncPlaybackScopeFrame(y,k),y.svgaInitialFrameEmitted!==!0&&((S=y.onFrame)==null||S.call(y,y.currentFrame,G),y.svgaInitialFrameEmitted=!0)}y.videoElement&&!y.releaseSharedVideoPlayback&&this.armHtmlVideoPlaybackWatchdog(y,y.videoElement)},destroy:()=>{this.removeGift(c)},getRenderInfo:()=>this.getGiftRenderInfo(y),animate:u=>this.createGiftAnimationChain(y,G,u)};const f=h.onComplete;y.onComplete=u=>{this.markGiftPlaybackComplete(y.id),f==null||f(u)},this.manager.addSlot(y,G);try{switch(h.type){case"svga":await this.loadSVGA(y);break;case"vap":await this.loadVAP(y,h);break;case"alphaVideo":await this.loadAlphaVideo(y,h);break;case"image":break}this.assertSlotLoadActive(y),h.type==="svga"&&y.state==="playing"||(y.state="playing",this.manager.invalidate({resetClock:!0}),h.type==="svga"&&y.videoEntity&&!y.paused&&!y.playbackScopeControlled&&(this.manager.audioManager.tickFrame(y,y.currentFrame),(e=y.onFrame)==null||e.call(y,y.currentFrame,G),y.svgaInitialFrameEmitted=!0)),this.manager.syncVideoPlaybackForSlot(y),y.webcodecsPlayback&&console.info("[GiftStage:WC] gift playing",{giftId:y.id,type:y.type,layoutBufPx:{x:y.x,y:y.y,w:y.width,h:y.height}}),h.type==="image"&&!(h.duration>0)&&this.markGiftPlaybackComplete(y.id)}catch(u){if(this.isLoadCanceled(u))return((t=this.manager)==null?void 0:t.getSlot(y.id))===y?this.manager.removeSlot(y.id):(a=this.manager)==null||a.releaseSlotResources(y),G;y.state="finished",(o=this.manager)==null||o.invalidate(),(n=(s=this.options).onError)==null||n.call(s,u instanceof Error?u:new Error(String(u)))}return G}async loadSVGA(A){var g,I,B,Q;const E=typeof A.options.source=="string"?A.options.source:null,i=(g=A.loadAbortController)==null?void 0:g.signal;if(E){const n=await this.acquireSharedSVGAEntity(E,i);if(!this.isSlotLoadActive(A))throw n.release(),new Error(wA);A.releaseSharedSVGAAsset=n.release,await this.finishLoadSVGA(A,n.entity,n.audioBlobs),this.assertSlotLoadActive(A);return}const{movie:e,imageBitmaps:t,audioBlobs:a}=await yB(A.options.source,this.svgaParseOptions(i));let o=null,s=!1;try{this.assertSlotLoadActive(A),o=await this.buildSVGAAtlasIfNeeded(t,!!E,!0,i),this.assertSlotLoadActive(A);const n={params:e.params,spriteTable:e.spriteTable,audios:e.audios,atlasTextureHandle:(I=o==null?void 0:o.textureHandle)!=null?I:null,atlasTextureHandles:(B=o==null?void 0:o.textureHandles)!=null?B:[],atlasRects:(Q=o==null?void 0:o.rects)!=null?Q:new Map,audioBuffers:new Map};await this.finishLoadSVGA(A,n,a),A.releaseSharedSVGAAsset=fg(()=>this.deleteSVGAAtlasTextures(n)),s=!0,this.assertSlotLoadActive(A),E&&(o!=null&&o.encodedPngBytesPromises)&&Promise.all(o.encodedPngBytesPromises).then(r=>{r.some(h=>!h)||rB(E,{params:e.params,spriteTable:e.spriteTable,audios:e.audios,audioBlobs:a,atlasRects:o.rects,atlasPages:o.pages.map((h,c)=>({width:h.atlasWidth,height:h.atlasHeight,imageBytes:r[c]}))},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})})}catch(n){throw s||this.deleteSVGAAtlasResultTextures(o),n}finally{for(const n of t.values())n.close()}}async acquireSharedSVGAEntity(A,g){const I=A,B=this.sharedSVGAEntities.get(I);if(B)return B.refs++,{entity:B.entity,audioBlobs:B.audioBlobs,release:()=>this.releaseSharedSVGAEntity(I)};let Q=this.pendingSharedSVGAEntities.get(I);if(!Q){const e=new AbortController;Q={cacheKey:I,controller:e,consumers:0,settled:!1,promise:null};const t=Q;Q.promise=this.buildSharedSVGAEntity(A,e.signal).finally(()=>{t.settled=!0,this.pendingSharedSVGAEntities.get(I)===t&&this.pendingSharedSVGAEntities.delete(I)}),this.pendingSharedSVGAEntities.set(I,Q)}let E;try{E=await this.waitForPendingSharedSVGAEntity(Q,g)}catch(e){throw e}let i=this.sharedSVGAEntities.get(I);return i?i.refs++:(i={refs:1,entity:E.entity,audioBlobs:E.audioBlobs},this.sharedSVGAEntities.set(I,i)),{entity:i.entity,audioBlobs:i.audioBlobs,release:()=>this.releaseSharedSVGAEntity(I)}}waitForPendingSharedSVGAEntity(A,g){return A.consumers++,new Promise((I,B)=>{let Q=!1;const E=e=>{Q||(Q=!0,g==null||g.removeEventListener("abort",i),A.consumers=Math.max(0,A.consumers-1),A.consumers===0&&!A.settled&&A.controller.abort(),e())},i=()=>{E(()=>B(cA(wA)))};if(g!=null&&g.aborted){i();return}g==null||g.addEventListener("abort",i,{once:!0}),A.promise.then(e=>E(()=>I(e)),e=>E(()=>B(e)))})}async buildSharedSVGAEntity(A,g){var I,B,Q,E,i;const e=await Ls(A,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs});if(b(g,wA),e){const o=await this.createCachedSVGAAtlasTextures(e.atlasPages,g);(I=this.manager)==null||I.hydrateSVGAClipMeshes(e.clipMeshes);const s={params:e.params,spriteTable:e.spriteTable,audios:e.audios,atlasTextureHandle:(B=o[0])!=null?B:null,atlasTextureHandles:o,atlasRects:e.atlasRects,audioBuffers:new Map};return this.svgaPersistentCacheWriters.set(s,async n=>{await rB(A,{params:e.params,spriteTable:e.spriteTable,audios:e.audios,audioBlobs:e.audioBlobs,atlasRects:e.atlasRects,atlasPages:e.atlasPages,clipMeshes:n},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})}),{entity:s,audioBlobs:e.audioBlobs}}let t=await yB(A,this.svgaParseOptions(g)),a=null;try{try{a=await this.buildSVGAAtlasIfNeeded(t.imageBitmaps,!0,!0,g)}catch(r){if(Kg(r)||!(r instanceof Zg))throw r;for(const h of t.imageBitmaps.values())h.close();t=await yB(A,this.svgaParseOptions(g)),a=await this.buildSVGAAtlasIfNeeded(t.imageBitmaps,!0,!1,g)}const{movie:o,audioBlobs:s}=t,n={params:o.params,spriteTable:o.spriteTable,audios:o.audios,atlasTextureHandle:(Q=a==null?void 0:a.textureHandle)!=null?Q:null,atlasTextureHandles:(E=a==null?void 0:a.textureHandles)!=null?E:[],atlasRects:(i=a==null?void 0:a.rects)!=null?i:new Map,audioBuffers:new Map};if(b(g,wA),a&&a.encodedPngBytesPromises){const r=a,h=a.encodedPngBytesPromises;this.svgaPersistentCacheWriters.set(n,async c=>{const D=await Promise.all(h);D.some(w=>!w)||await rB(A,{params:o.params,spriteTable:o.spriteTable,audios:o.audios,audioBlobs:s,atlasRects:r.rects,atlasPages:r.pages.map((w,l)=>({width:w.atlasWidth,height:w.atlasHeight,imageBytes:D[l]})),clipMeshes:c},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})})}else a||this.svgaPersistentCacheWriters.set(n,async r=>{await rB(A,{params:o.params,spriteTable:o.spriteTable,audios:o.audios,audioBlobs:s,atlasRects:new Map,atlasPages:[],clipMeshes:r},{frameBudgetMs:this.options.svgaLoadFrameBudgetMs})});return b(g,wA),{entity:n,audioBlobs:s}}catch(o){throw this.deleteSVGAAtlasResultTextures(a),o}finally{for(const o of t.imageBitmaps.values())o.close()}}releaseSharedSVGAEntity(A){const g=this.sharedSVGAEntities.get(A);g&&(g.refs=Math.max(0,g.refs-1),!(g.refs>0)&&(this.deleteSVGAAtlasTextures(g.entity),this.sharedSVGAEntities.delete(A)))}async createCachedSVGAAtlasTextures(A,g){var I;const B=[],Q=gg({maxBudgetMs:this.svgaAtlasFrameBudgetMs()}),E=A.map(i=>createImageBitmap(new Blob([i.imageBytes],{type:"image/png"}),{premultiplyAlpha:"premultiply"}));try{for(let i=0;i<A.length;i++){b(g,wA);const e=A[i],t=await E[i];try{if(this.destroyed||!this.backend)throw new Error(wA);const a=this.backend.createTexture(t,{width:e.width,height:e.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:!0});B.push(a)}finally{t.close()}i+1<A.length&&Q.shouldYield()&&await Q.yield(),b(g,wA)}return B}catch(i){for(const e of B)(I=this.backend)==null||I.deleteTexture(e);for(const e of E)e.then(t=>t.close()).catch(()=>{});throw i}}svgaGpuFrameTableBudgetBytes(){const A=this.options.svgaGpuFrameTableBudgetBytes;return Number.isFinite(A)&&A>=0?Math.floor(A):uC}ensureSVGATimelineBookkeeping(){var A;this.svgaReportedPathKeys||(this.svgaReportedPathKeys=new WeakMap),this.svgaFrameTablePromises||(this.svgaFrameTablePromises=new WeakMap),this.svgaFrameTableResidentBytes||(this.svgaFrameTableResidentBytes=new WeakMap),this.svgaFrameTableReservedBytes||(this.svgaFrameTableReservedBytes=new WeakMap),this.releasedSVGATimelineEntities||(this.releasedSVGATimelineEntities=new WeakSet),this.svgaPreparingEntities||(this.svgaPreparingEntities=new Set),this.activeSVGATimelineEntities||(this.activeSVGATimelineEntities=new Set),this.svgaEntitySources||(this.svgaEntitySources=new WeakMap),Number.isFinite(this.activeSVGAGpuFrameTableBytes)||(this.activeSVGAGpuFrameTableBytes=0),Number.isFinite(this.reservedSVGAGpuFrameTableBytes)||(this.reservedSVGAGpuFrameTableBytes=0),Number.isFinite(this.runtimeFallbackCount)||(this.runtimeFallbackCount=0),Number.isFinite(this.runtimeObserverErrorCount)||(this.runtimeObserverErrorCount=0),(A=this.lastRuntimeDiagnostic)!=null||(this.lastRuntimeDiagnostic=null)}emitRuntimeDiagnostic(A){var g,I,B,Q,E,i;const e={...A,timestampMs:typeof performance!="undefined"?performance.now():Date.now(),backend:(I=(g=this.backend)==null?void 0:g.type)!=null?I:"webgl2",...A.giftIds?{giftIds:[...A.giftIds]}:{}};this.lastRuntimeDiagnostic=e;try{(Q=(B=this.options).onRuntimeDiagnostic)==null||Q.call(B,{...e,...e.giftIds?{giftIds:[...e.giftIds]}:{}})}catch(t){this.runtimeObserverErrorCount++,this.lastRuntimeDiagnostic={type:"observer-error",timestampMs:typeof performance!="undefined"?performance.now():Date.now(),backend:(i=(E=this.backend)==null?void 0:E.type)!=null?i:"webgl2",message:`onRuntimeDiagnostic: ${this.runtimeErrorMessage(t)}`},console.error("[GiftStage] onRuntimeDiagnostic observer failed",t)}}recordObserverError(A,g){this.runtimeObserverErrorCount++,console.error(`[GiftStage] ${A} observer failed`,g),this.emitRuntimeDiagnostic({type:"observer-error",message:`${A}: ${this.runtimeErrorMessage(g)}`})}runtimeErrorMessage(A){return A instanceof Error?A.message:String(A)}handleSVGABackendLoss(){var A;if(this.svgaBackendLost)return;this.svgaBackendLost=!0,(A=this.manager)==null||A.handleBackendLoss();const g=new Set([...this.svgaPreparingEntities,...this.activeSVGATimelineEntities]);for(const I of g)this.fallbackSVGAFrameTable(I,"validation-failed")}reserveSVGAFrameTableBytes(A,g){if(this.svgaFrameTableReservedBytes.has(A))return!0;const I=this.svgaGpuFrameTableBudgetBytes();return!Number.isFinite(g)||g<0||this.activeSVGAGpuFrameTableBytes+this.reservedSVGAGpuFrameTableBytes+g>I?!1:(this.svgaFrameTableReservedBytes.set(A,g),this.reservedSVGAGpuFrameTableBytes+=g,!0)}rollbackSVGAFrameTableReservation(A){var g;const I=(g=this.svgaFrameTableReservedBytes.get(A))!=null?g:0;I<=0||(this.svgaFrameTableReservedBytes.delete(A),this.reservedSVGAGpuFrameTableBytes=Math.max(0,this.reservedSVGAGpuFrameTableBytes-I))}commitSVGAFrameTableReservation(A){var g;const I=(g=this.svgaFrameTableReservedBytes.get(A))!=null?g:0;this.rollbackSVGAFrameTableReservation(A),!(I<=0)&&(this.svgaFrameTableResidentBytes.set(A,I),this.activeSVGAGpuFrameTableBytes+=I)}buildSVGATimelineDrawPlan(A){var g,I,B;const Q=A.spriteTable,E=oE(Q.imageKeys,A.atlasRects),i=(g=A.atlasTextureHandles)!=null&&g.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],e=[];let t=null;for(let a=0;a<Q.spriteCount;a++){const o=A.atlasRects.get((I=Q.imageKeys[a])!=null?I:""),s=(B=o==null?void 0:o.textureIndex)!=null?B:0;if(!(!!o&&!!i[s])){t=null;continue}t&&t.textureIndex===s&&t.spriteBase+t.spriteCount===a?t.spriteCount++:(t={spriteBase:a,spriteCount:1,textureIndex:s},e.push(t))}return{metadata:E,runs:e,atlasPageCount:i.length}}createSVGATimelineState(A,g={}){var I,B,Q,E,i;const e=A.spriteTable,t=(I=A.atlasTextureHandles)!=null&&I.length?A.atlasTextureHandles.length:A.atlasTextureHandle?1:0;return{binding:null,renderInfo:nC({backend:(Q=(B=this.backend)==null?void 0:B.type)!=null?Q:"webgl2",spriteTable:e,hasAtlas:t>0,hasSlotTextureOverride:g.hasSlotTextureOverride,strategy:(i=(E=g.strategy)!=null?E:this.options.svgaFrameEvaluation)!=null?i:"auto",budgetBytes:this.svgaGpuFrameTableBudgetBytes(),tablePreparing:g.preparing,uploadFailed:g.uploadFailed,compatibleInstanceCount:g.compatibleInstanceCount,atlasPageCount:t}),currentTimeMs:0,frameIndex:0}}ensureSVGAFrameTable(A,g=!1){var I,B,Q;this.ensureSVGATimelineBookkeeping();const E=this.svgaFrameTablePromises.get(A);if(E)return E;const i=this.backend,e=(I=this.options.svgaFrameEvaluation)!=null?I:"auto",t=!!(i!=null&&i.createSVGAFrameTable)&&i.type!=="webgl1"&&i.supportsAtomicFrameReplay===!0&&typeof i.abortFrame=="function",a=i,o=!this.svgaBackendLost&&t&&((Q=(B=a.canCreateSVGAFrameTable)==null?void 0:B.call(a))!=null?Q:!0),s=this.createSVGATimelineState(A,{preparing:e!=="cpu"&&o,strategy:e});if(!o&&e!=="cpu"&&(s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,fallbackReason:"device-capability",fallbackReasons:["device-capability"]}),A.svgaFrameTableState=s,e==="cpu"||!o||!i){const r=Promise.resolve();return this.svgaFrameTablePromises.set(A,r),r}this.svgaPreparingEntities.add(A);const n=new Promise(r=>{if(g&&typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>setTimeout(r,0));return}setTimeout(r,0)}).then(async()=>{var r,h,c,D,w,l;if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))return;const F=A.spriteTable,d=this.buildSVGATimelineDrawPlan(A),y=$I(F.spriteCount,F.frameCount),G=F.clipPathIndex.some(Y=>Y>=0),f=F.hasAnyShapes||G?rC(A):void 0,u=y+d.metadata.byteLength,R=(r=f==null?void 0:f.byteLength)!=null?r:0,M=u+R,N=this.svgaGpuFrameTableBudgetBytes();if(!Number.isFinite(M)||!d.runs.length&&!F.hasAnyShapes){const Y=!d.runs.length&&!F.hasAnyShapes?"validation-failed":"table-too-large-or-budget";s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,tableBytes:M,fallbackReason:Y,fallbackReasons:[Y]};return}if(!this.reserveSVGAFrameTableBytes(A,M)){s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,tableBytes:M,fallbackReason:"table-too-large-or-budget",fallbackReasons:["table-too-large-or-budget"]};return}let S=null;try{const Y=kC(F.frameData);if(this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))return;if(S=i.createSVGAFrameTable(Y,{spriteCount:F.spriteCount,frameCount:F.frameCount,spriteMetadata:d.metadata,hybridSpriteMetadata:f==null?void 0:f.spriteMetadata,atlasPageCount:d.atlasPageCount,label:"giftstage-svga-frame-table"}),this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A)){(h=i.deleteSVGAFrameTable)==null||h.call(i,S),this.rollbackSVGAFrameTableReservation(A);return}const U=nC({backend:i.type,spriteTable:F,hasAtlas:d.atlasPageCount>0,strategy:"auto",budgetBytes:N,atlasPageCount:d.atlasPageCount});if(U.tableBytes=M,U.frameTableBytes=u,U.commandTableBytes=R,U.selectedPath==="gpu-hybrid"&&(A.svgaHybridCommandTable=f,await this.ensureSVGAHybridSchedulePrepared(A),this.destroyed||this.svgaBackendLost||this.releasedSVGATimelineEntities.has(A))){(c=i.deleteSVGAFrameTable)==null||c.call(i,S),this.rollbackSVGAFrameTableReservation(A);return}if(U.selectedPath!=="gpu-direct"&&U.selectedPath!=="gpu-hybrid"){(D=i.deleteSVGAFrameTable)==null||D.call(i,S),this.rollbackSVGAFrameTableReservation(A);return}this.commitSVGAFrameTableReservation(A),this.activeSVGATimelineEntities.add(A),A.svgaTimelineDrawRuns=d.runs,s.binding=S,s.renderInfo=U}catch(Y){S&&((w=i.deleteSVGAFrameTable)==null||w.call(i,S)),this.rollbackSVGAFrameTableReservation(A),(l=this.manager)==null||l.releaseSVGAHybridMeshes(A);const U=Y instanceof qQ?"validation-failed":Y instanceof RangeError?"table-too-large-or-budget":"upload-failed";s.binding=null,A.svgaHybridCommandTable=void 0,s.renderInfo={...s.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",drawBatchMode:"per-slot",drawCompatibleInstanceCount:1,fallbackReason:U,fallbackReasons:[U]},console.warn("[GiftStage:SVGA] GPU frame table unavailable; using CPU reference",Y)}}).finally(()=>{this.svgaPreparingEntities.delete(A),this.rollbackSVGAFrameTableReservation(A),this.refreshSVGATimelineSlots(A)});return this.svgaFrameTablePromises.set(A,n),n}refreshSVGATimelineSlots(A,g){if(!this.manager)return;const I=[];for(const B of this.manager.getSlotIds()){const Q=this.manager.getSlot(B);!Q||Q.videoEntity!==A||I.push(Q)}for(const B of I)this.assignSVGATimelineStateToSlot(B,A);this.manager.invalidate(),g==null||g();for(const B of I)this.reportSVGARenderPath(B)}assignSVGATimelineStateToSlot(A,g){var I,B,Q,E,i,e,t,a;const o=(B=(I=A.options.svgaFrameEvaluation)!=null?I:this.options.svgaFrameEvaluation)!=null?B:"auto";if(o==="cpu"||(Q=A.svgaSlotTextures)!=null&&Q.size){A.svgaFrameTableState=this.createSVGATimelineState(g,{strategy:o,hasSlotTextureOverride:!!((E=A.svgaSlotTextures)!=null&&E.size),compatibleInstanceCount:(t=(e=(i=this.manager)==null?void 0:i.countCompatibleSVGAInstances)==null?void 0:e.call(i,g))!=null?t:0}),A.svgaDrawBatchMode="per-slot",A.svgaDrawCompatibleInstanceCount=1;return}const s=g.svgaFrameTableState;A.svgaFrameTableState=s?{binding:s.binding,renderInfo:s.renderInfo,currentTimeMs:0,frameIndex:A.currentFrame}:null,((a=A.svgaFrameTableState)==null?void 0:a.renderInfo.selectedPath)==="cpu-reference"&&(A.svgaDrawBatchMode="per-slot",A.svgaDrawCompatibleInstanceCount=1)}releaseSVGAFrameTable(A){var g,I,B,Q,E;this.ensureSVGATimelineBookkeeping(),this.releasedSVGATimelineEntities.add(A);const i=(g=A.svgaFrameTableState)==null?void 0:g.binding;i&&((B=(I=this.backend)==null?void 0:I.deleteSVGAFrameTable)==null||B.call(I,i)),this.rollbackSVGAFrameTableReservation(A),(Q=this.manager)==null||Q.releaseSVGAHybridMeshes(A),this.activeSVGATimelineEntities.delete(A),this.svgaPreparingEntities.delete(A);const e=(E=this.svgaFrameTableResidentBytes.get(A))!=null?E:0;this.activeSVGAGpuFrameTableBytes=Math.max(0,this.activeSVGAGpuFrameTableBytes-e),this.svgaFrameTableResidentBytes.delete(A),A.svgaFrameTableState=null,A.svgaTimelineDrawRuns=void 0,A.svgaHybridCommandTable=void 0}fallbackSVGAFrameTable(A,g){var I,B,Q,E;this.ensureSVGATimelineBookkeeping();const i=A.svgaFrameTableState;if(!i||i.renderInfo.selectedPath==="cpu-reference"&&!i.renderInfo.fallbackReasons.includes("table-preparing"))return;const e=this.getSVGAEntityDiagnosticContext(A);i.binding&&((B=(I=this.backend)==null?void 0:I.deleteSVGAFrameTable)==null||B.call(I,i.binding)),this.rollbackSVGAFrameTableReservation(A),(Q=this.manager)==null||Q.releaseSVGAHybridMeshes(A),this.activeSVGATimelineEntities.delete(A);const t=(E=this.svgaFrameTableResidentBytes.get(A))!=null?E:0;this.activeSVGAGpuFrameTableBytes=Math.max(0,this.activeSVGAGpuFrameTableBytes-t),this.svgaFrameTableResidentBytes.delete(A),i.binding=null,i.renderInfo={...i.renderInfo,path:"cpu-reference",selectedPath:"cpu-reference",pathState:"fallback",fallbackReason:g,fallbackReasons:[g],drawBatchMode:"per-slot",drawCompatibleInstanceCount:1},A.svgaHybridCommandTable=void 0,this.refreshSVGATimelineSlots(A,()=>{this.runtimeFallbackCount++,this.emitRuntimeDiagnostic({type:"svga-runtime-fallback",source:e.source,giftIds:e.giftIds,reason:g})})}getSVGAEntityDiagnosticContext(A){var g;this.ensureSVGATimelineBookkeeping();const I=[];let B=(g=this.svgaEntitySources.get(A))!=null?g:null;if(this.manager)for(const Q of this.manager.getSlotIds()){const E=this.manager.getSlot(Q);!E||E.videoEntity!==A||(I.push(E.id),B==null&&typeof E.options.source=="string"&&(B=E.options.source))}return{source:B,giftIds:I}}deleteSVGAAtlasTextures(A){var g,I;this.releaseSVGAFrameTable(A);const B=(g=A.atlasTextureHandles)!=null&&g.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],Q=new Set;for(const E of B)Q.has(E.id)||(Q.add(E.id),(I=this.backend)==null||I.deleteTexture(E))}deleteSVGAAtlasResultTextures(A){var g,I;if(!A)return;const B=(g=A.textureHandles)!=null&&g.length?A.textureHandles:A.textureHandle?[A.textureHandle]:[],Q=new Set;for(const E of B)Q.has(E.id)||(Q.add(E.id),(I=this.backend)==null||I.deleteTexture(E))}async finishLoadSVGA(A,g,I){var B,Q,E;this.assertSlotLoadActive(A),this.ensureSVGATimelineBookkeeping(),this.svgaEntitySources.set(g,typeof A.options.source=="string"?A.options.source:null),A.videoEntity=g;const i=this.manager.prewarmSVGAClipMeshesForFrame(g,0,{frameBudgetMs:this.svgaClipFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaClipPrewarmInWorker!==!1,checkActive:()=>this.assertSlotLoadActive(A),signal:(B=A.loadAbortController)==null?void 0:B.signal}),e=A.options.svgaSlots?Qa(this.backend,g,A.options.svgaSlots,{frameBudgetMs:this.options.svgaLoadFrameBudgetMs,checkActive:()=>this.assertSlotLoadActive(A)}):Promise.resolve(void 0),[,t]=await Promise.all([i,e]);this.assertSlotLoadActive(A),A.svgaSlotTextures=t,A.svgaClipReadyFrame=0;const a=(E=(Q=A.options.svgaFrameEvaluation)!=null?Q:this.options.svgaFrameEvaluation)!=null?E:"auto";this.primeSVGAFirstFrame(A);const o=a==="cpu"?Promise.resolve():this.ensureSVGAFrameTable(g,!0);if(this.assignSVGATimelineStateToSlot(A,g),this.reportSVGARenderPath(A),o.catch(()=>{}),this.decodeSVGAAudioInBackground(A,I),this.options.svgaPrewarmClipMeshes!==!1){const s=this.ensureSVGAFullClipPrewarm(g);s.catch(n=>{this.isLoadCanceled(n)||console.warn("[GiftStage:SVGA] background clip mesh prewarm failed",n)}),this.queueSVGAPersistentCacheWrite(g,s)}else this.queueSVGAPersistentCacheWrite(g,Promise.resolve(0))}primeSVGAFirstFrame(A){var g;if(A.state==="loading"&&(A.state="playing",this.manager.invalidate({resetClock:!0}),!A.paused&&!A.playbackScopeControlled)){this.manager.audioManager.tickFrame(A,A.currentFrame);const I=this.manager.getHandle(A.id);I&&((g=A.onFrame)==null||g.call(A,A.currentFrame,I)),A.svgaInitialFrameEmitted=!0}}async decodeSVGAAudioInBackground(A,g){var I,B,Q,E;if(g.size===0)return;const i=gg({maxBudgetMs:this.options.svgaLoadFrameBudgetMs});try{let e=0;for(const[t,a]of g){if(await this.manager.audioManager.decodeAudio(t,a),this.assertSlotLoadActive(A),A.playbackScopeControlled){const o=(B=(I=A.videoEntity)==null?void 0:I.params.fps)!=null?B:0,s=(E=(Q=A.videoEntity)==null?void 0:Q.params.frames)!=null?E:0,n=A.loopCount*s+A.currentFrame+A.accumulatedTime*o;this.manager.audioManager.syncPlaybackScopeFrame(A,n)}else A.paused||this.manager.audioManager.tickFrameForKey(A,A.currentFrame,t);e++,e<g.size&&i.shouldYield()&&(await i.yield(),this.assertSlotLoadActive(A))}}catch(e){this.isLoadCanceled(e)||console.warn("[GiftStage:SVGA] background audio decode failed",e)}}ensureSVGAFullClipPrewarm(A){const g=this.svgaFullClipPrewarmPromises.get(A);if(g)return g;const I=this.manager.prewarmSVGAClipMeshes(A,{frameBudgetMs:this.svgaClipFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:this.options.svgaClipPrewarmInWorker!==!1}).then(B=>{var Q;return(Q=this.manager)==null||Q.invalidate(),B});return this.svgaFullClipPrewarmPromises.set(A,I),I}async ensureSVGAHybridSchedulePrepared(A){var g,I,B;if((g=A.svgaHybridCommandTable)!=null||(A.svgaHybridCommandTable=rC(A)),A.spriteTable.clipPathIndex.some(Q=>Q>=0)){const Q=this.ensureSVGAFullClipPrewarm(A);await Q,this.queueSVGAPersistentCacheWrite(A,Q)}(I=this.manager)==null||I.prewarmSVGAShapeMeshes(A);try{(B=this.manager)==null||B.retainSVGAHybridMeshes(A)}catch(Q){throw new qQ(Q instanceof Error?Q.message:"SVGA Hybrid mesh validation failed")}}queueSVGAPersistentCacheWrite(A,g){var I,B;const Q=(I=this.svgaPersistentCacheWriters)==null?void 0:I.get(A);if(!Q||(B=this.svgaPersistentCacheWritePromises)!=null&&B.has(A))return;const E=g.then(()=>Q(this.manager.snapshotSVGAClipMeshes(A))).catch(i=>{console.warn("[GiftStage:SVGA] persistent cache write failed",i)});this.svgaPersistentCacheWritePromises.set(A,E)}svgaAtlasMaxSize(){var A,g,I;const B=(A=this.options.svgaAtlasMaxSize)!=null?A:zA.SVGA_ATLAS_MAX_SIZE,Q=(I=(g=this.backend)==null?void 0:g.maxTextureSize)!=null?I:B;return Math.max(64,Math.min(Q,B))}async buildSVGAAtlasIfNeeded(A,g,I=!0,B){if(A.size===0)return null;if(this.destroyed||!this.backend)throw new Error(wA);return xE(A,this.backend,this.svgaAtlasMaxSize(),zA.SVGA_ATLAS_PADDING,{captureEncodedPng:g,maxPages:this.svgaAtlasMaxPages(),mainThreadFrameBudgetMs:this.svgaAtlasFrameBudgetMs(),workerTimeSliceMs:this.options.svgaWorkerFrameBudgetMs,useWorker:I,signal:B})}svgaAtlasMaxPages(){var A;return Math.max(1,Math.floor((A=this.options.svgaAtlasMaxPages)!=null?A:4))}shouldTryWebCodecs(A){return(A==null?void 0:A.mute)!==!1&&this.options.preferWebCodecs===!0&&typeof VideoDecoder!="undefined"}logPlaybackBackend(A,g,I){const B=g==="webcodecs"?"WebCodecs (mp4box decode)":"HTMLVideoElement",Q=I?` — ${I}`:"";console.info(`[GiftStage] ${A.type} [${A.id}]: ${B}${Q}`)}async tryWebCodecsPlayback(A,g){if(!this.shouldTryWebCodecs())return null;try{const I=typeof A=="string"?await BI(A,g):A;if(g!=null&&g.aborted)throw new Error(wA);return await gI.create(I,g,{useWorker:this.options.webCodecsDecodeInWorker!==!1,maxDecodedFrames:this.options.webCodecsMaxDecodedFrames,decodeAheadFrames:this.options.webCodecsDecodeAheadFrames})}catch(I){if(this.isLoadCanceled(I)||g!=null&&g.aborted)throw new Error(wA);const B=I instanceof Error?I.message:String(I);return console.warn(`[GiftStage] WebCodecs path failed, falling back to <video>: ${B}`),null}}async acquireWebCodecsPlayback(A,g){if(!this.shouldTryWebCodecs(A))return null;if(this.options.shareIdenticalVideoPlayback!==!1&&A.loop===0&&A.startPaused!==!0&&A.playbackScopeControlled!==!0&&typeof A.source=="string"){const B=this.normalizeSharedVideoSourceKey(A.source);if(B)return this.acquireSharedWebCodecsPlayback(B,g)}const I=await this.tryWebCodecsPlayback(A.source,g);return I?{playback:I,sharedState:null,release:fg(()=>I.destroy())}:null}async acquireSharedWebCodecsPlayback(A,g){var I;const B=performance.now(),Q=Math.max(0,(I=this.options.sharedVideoPlaybackWindowMs)!=null?I:zA.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS),E=this.sharedWebCodecsPlaybacks.get(A);if(E){for(const t of E)if(!(t.refs<=0||B-t.startedAtMs>Q))return t.refs++,{playback:t.playback,sharedState:t,release:fg(()=>this.releaseSharedWebCodecsPlayback(t))}}let i=this.pendingSharedWebCodecsPlaybacks.get(A);i||(i=this.createPendingSharedWebCodecsPlayback(A),this.pendingSharedWebCodecsPlaybacks.set(A,i));const e=await this.waitForPendingSharedWebCodecsPlayback(i,g);return e?(e.refs++,{playback:e.playback,sharedState:e,release:fg(()=>this.releaseSharedWebCodecsPlayback(e))}):null}createPendingSharedWebCodecsPlayback(A){const g=new AbortController,I={cacheKey:A,controller:g,consumers:0,settled:!1,promise:null};return I.promise=this.tryWebCodecsPlayback(A,g.signal).then(B=>{if(I.settled=!0,this.pendingSharedWebCodecsPlaybacks.get(A)===I&&this.pendingSharedWebCodecsPlaybacks.delete(A),!B)return null;if(I.consumers===0||this.destroyed)return B.destroy(),null;const Q={id:this.nextSharedWebCodecsPlaybackId++,cacheKey:A,refs:0,playback:B,startedAtMs:performance.now()};let E=this.sharedWebCodecsPlaybacks.get(A);return E||(E=new Set,this.sharedWebCodecsPlaybacks.set(A,E)),E.add(Q),Q},B=>{throw I.settled=!0,this.pendingSharedWebCodecsPlaybacks.get(A)===I&&this.pendingSharedWebCodecsPlaybacks.delete(A),B}),I}waitForPendingSharedWebCodecsPlayback(A,g){return A.consumers++,new Promise((I,B)=>{let Q=!1;const E=e=>{Q||(Q=!0,g==null||g.removeEventListener("abort",i),A.consumers=Math.max(0,A.consumers-1),A.consumers===0&&!A.settled&&A.controller.abort(),e())},i=()=>{E(()=>B(new Error(wA)))};if(g!=null&&g.aborted){i();return}g==null||g.addEventListener("abort",i,{once:!0}),A.promise.then(e=>E(()=>I(e)),e=>E(()=>B(e)))})}releaseSharedWebCodecsPlayback(A){if(A.refs=Math.max(0,A.refs-1),A.refs>0)return;A.playback.destroy();const g=this.sharedWebCodecsPlaybacks.get(A.cacheKey);g==null||g.delete(A),(g==null?void 0:g.size)===0&&this.sharedWebCodecsPlaybacks.delete(A.cacheKey)}attachWebCodecsPlayback(A,g){var I,B,Q;A.webcodecsPlayback=g.playback,A.webcodecsSharedState=g.sharedState,A.releaseWebCodecsPlayback=g.release;const E=Math.max(g.playback.duration,1e-9);return A.wcPlaybackTime=g.sharedState?Math.max(0,(performance.now()-g.sharedState.startedAtMs)/1e3)%E:0,A.wcSharedTimeOffset=0,(B=(I=g.playback).ensureDecodedThrough)==null||B.call(I,A.wcPlaybackTime),(Q=g.playback.getFrameForTime(A.wcPlaybackTime))!=null?Q:g.playback.getFrameForTime(0)}releaseAttachedWebCodecsPlayback(A){var g;A.releaseWebCodecsPlayback?A.releaseWebCodecsPlayback():(g=A.webcodecsPlayback)==null||g.destroy(),A.releaseWebCodecsPlayback=null,A.webcodecsSharedState=null,A.webcodecsPlayback=null}acquireSharedWebCodecsSurface(A,g,I,B,Q,E,i){const e=A.webcodecsSharedState;if(!e)return null;const t=i?this.options.webCodecsVideoAtlas:void 0;if(t&&t.width>0&&t.height>0){const r=`${e.id}:atlas:${t.width}x${t.height}:${Q}x${E}`,h=this.retainSharedWebCodecsSurface(r);if(h)return h;const c=this.nextSharedWebCodecsSurfaceId++,D=`wc-shared-surface:${c}`,w=this.manager.tryAllocateWebCodecsAtlas(D,Q,E,t);if(w){try{this.backend.updateTextureRegion(w.handle,g,w.rect.x,w.rect.y,w.rect.w,w.rect.h)}catch(l){throw this.manager.releaseWebCodecsAtlasAllocation(D),l}return this.createSharedWebCodecsSurface(r,c,w.handle,g,w.rect,D)}}const a=`${e.id}:full:${I}x${B}`,o=this.retainSharedWebCodecsSurface(a);if(o)return o;const s=this.nextSharedWebCodecsSurfaceId++,n=this.backend.createTexture(g,{width:I,height:B,filter:"linear"});return this.createSharedWebCodecsSurface(a,s,n,g,void 0,null)}retainSharedWebCodecsSurface(A){const g=this.sharedWebCodecsSurfaces.get(A);return g?(g.refs++,{surface:g.surface,release:fg(()=>this.releaseSharedWebCodecsSurface(g))}):null}createSharedWebCodecsSurface(A,g,I,B,Q,E){const i={key:A,refs:1,atlasAllocationId:E,surface:{id:g,texture:I,atlasRect:Q,lastUploadedFrame:B}};return this.sharedWebCodecsSurfaces.set(A,i),{surface:i.surface,release:fg(()=>this.releaseSharedWebCodecsSurface(i))}}releaseSharedWebCodecsSurface(A){var g,I;A.refs=Math.max(0,A.refs-1),!(A.refs>0)&&(this.sharedWebCodecsSurfaces.delete(A.key),A.atlasAllocationId?(g=this.manager)==null||g.releaseWebCodecsAtlasAllocation(A.atlasAllocationId):(I=this.backend)==null||I.deleteTexture(A.surface.texture),A.surface.lastUploadedFrame=null)}attachSharedWebCodecsSurface(A,g){A.webcodecsSurface=g.surface,A.releaseWebCodecsSurface=g.release,A.videoTextureHandle=g.surface.texture,A.wcAtlasRect=g.surface.atlasRect}async loadVAP(A,g){var I,B,Q,E;if(!g.config)throw new Error("VAP requires config");const i=g.config,e=(I=A.loadAbortController)==null?void 0:I.signal,t=(async()=>{const l=await DC(i);this.assertSlotLoadActive(A);const F=await aa(l,g.vapSlots);return this.assertSlotLoadActive(A),{config:l,vapResources:F}})();console.info("[GiftStage:WC] loadVAP: try WebCodecs / video…");const a=this.acquireWebCodecsPlayback(g,e),[o,s]=await Promise.allSettled([t,a]);if(!this.isSlotLoadActive(A)||o.status==="rejected"||s.status==="rejected")throw s.status==="fulfilled"&&((B=s.value)==null||B.release()),o.status==="rejected"?o.reason:s.status==="rejected"?s.reason:new Error(wA);const{config:n,vapResources:r}=o.value,h=s.value;if(A.vapConfig=n,r.size>0){const l=AI(n.info),F=oa(n);let d=null;if(this.backend.type==="webgpu"||this.backend.type==="webgl2")try{d=this.createVAPMixResourceTextures(r)}catch(y){console.warn("[GiftStage] VAP main-context mixed textures failed; falling back to compositor",y)}if(d)A.vapMixState={mode:"direct",width:l.w,height:l.h,resourceTextures:d,frameMap:F,lastFrameIndex:-1,lastSourceRef:null};else{let y=null,G=null;try{y=new Ns(n,F,r,l.w,l.h,g.videoRGBAlphaMode!=="straight")}catch(u){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",u),G=sa(l.w,l.h)}const f=this.backend.createEmptyTexture(l.w,l.h,{filter:"linear"});A.vapMixState={mode:"composited",texture:f,width:l.w,height:l.h,composer:y,frameMap:F,resources:y?void 0:r,lastFrameIndex:-1,lastSourceRef:null,...G!=null?G:{}},A.videoTextureHandle=f}}if(h){const l=this.attachWebCodecsPlayback(A,h);if(!l)throw this.releaseAttachedWebCodecsPlayback(A),new Error("WebCodecs: missing first frame");if(!A.vapMixState||A.vapMixState.mode==="direct"){const d=l.displayWidth||l.codedWidth,y=l.displayHeight||l.codedHeight,G=!A.vapMixState,{w:f,h:u}=mQ(A,d,y,"vap",n),R=this.acquireSharedWebCodecsSurface(A,l,d,y,f,u,G);if(R)this.attachSharedWebCodecsSurface(A,R);else{const M=G?this.manager.tryAllocateWebCodecsAtlas(A.id,f,u,this.options.webCodecsVideoAtlas):null;M?(A.videoTextureHandle=M.handle,A.wcAtlasRect=M.rect,this.backend.updateTextureRegion(M.handle,l,M.rect.x,M.rect.y,f,u)):A.videoTextureHandle=this.backend.createTexture(l,{width:d,height:y,filter:"linear"})}}A.videoElement=null;const F=A.videoTextureHandle;console.info("[GiftStage:WC] VAP texture",{giftId:A.id,atlas:!!A.wcAtlasRect&&!A.vapMixState,mixed:!!A.vapMixState,tex:`${F.width}x${F.height}`,frame0:`${l.displayWidth}x${l.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const D=await this.tryAcquireSharedHtmlVideo(A,g);if(!this.isSlotLoadActive(A))throw D==null||D.release(),new Error(wA);if(D)A.videoElement=D.video,A.releaseSharedVideoPlayback=D.release;else{const l=await this.acquireVideoPlaybackSource(g.source);if(!this.isSlotLoadActive(A))throw(Q=l.release)==null||Q.call(l),new Error(wA);A.releaseMediaSource=(E=l.release)!=null?E:null;const F=this.createVideo(l.src,g.loop===0,g.mute!==!1);A.videoElement=F}const w=A.videoElement;if(D){await D.ready,this.assertSlotLoadActive(A);const l=this.acquireSharedVideoTexture(D.cacheKey,w);A.videoTextureHandle=l.texture,A.releaseSharedVideoTexture=l.release}else await this.waitVideoReady(w),this.assertSlotLoadActive(A),(!A.vapMixState||A.vapMixState.mode==="direct")&&(A.videoTextureHandle=this.backend.createTexture(w,{width:w.videoWidth,height:w.videoHeight,filter:"linear"}));!A.releaseSharedVideoPlayback&&!A.playbackScopeControlled&&this.bindVideoLoopOnEnded(A,w),this.logPlaybackBackend(A,"video",g.mute===!1?"WebCodecs disabled for audible playback":this.shouldTryWebCodecs(g)?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}createVAPMixResourceTextures(A){const g=new Map;try{for(const[I,B]of A)g.set(I,this.backend.createTexture(B.source,{width:B.width,height:B.height,filter:"linear",premultiplyAlpha:!1}));return g}catch(I){for(const B of g.values())this.backend.deleteTexture(B);throw I}}async loadAlphaVideo(A,g){var I,B,Q;const E=(I=A.loadAbortController)==null?void 0:I.signal;console.info("[GiftStage:WC] loadAlphaVideo: try WebCodecs / video…");const i=await this.acquireWebCodecsPlayback(g,E);if(!this.isSlotLoadActive(A))throw i==null||i.release(),new Error(wA);if(i){const a=this.attachWebCodecsPlayback(A,i);if(!a)throw this.releaseAttachedWebCodecsPlayback(A),new Error("WebCodecs: missing first frame");const o=a.displayWidth||a.codedWidth,s=a.displayHeight||a.codedHeight,{w:n,h:r}=mQ(A,o,s,"alphaVideo",void 0),h=this.acquireSharedWebCodecsSurface(A,a,o,s,n,r,!0);if(h)this.attachSharedWebCodecsSurface(A,h);else{const D=this.manager.tryAllocateWebCodecsAtlas(A.id,n,r,this.options.webCodecsVideoAtlas);D?(A.videoTextureHandle=D.handle,A.wcAtlasRect=D.rect,this.backend.updateTextureRegion(D.handle,a,D.rect.x,D.rect.y,n,r)):A.videoTextureHandle=this.backend.createTexture(a,{width:o,height:s,filter:"linear"})}A.videoElement=null;const c=A.videoTextureHandle;console.info("[GiftStage:WC] alphaVideo texture",{giftId:A.id,atlas:!!A.wcAtlasRect,tex:`${c.width}x${c.height}`,frame0:`${a.displayWidth}x${a.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const e=await this.tryAcquireSharedHtmlVideo(A,g);if(!this.isSlotLoadActive(A))throw e==null||e.release(),new Error(wA);if(e)A.videoElement=e.video,A.releaseSharedVideoPlayback=e.release;else{const a=await this.acquireVideoPlaybackSource(g.source);if(!this.isSlotLoadActive(A))throw(B=a.release)==null||B.call(a),new Error(wA);A.releaseMediaSource=(Q=a.release)!=null?Q:null;const o=this.createVideo(a.src,g.loop===0,g.mute!==!1);A.videoElement=o}const t=A.videoElement;if(e){await e.ready,this.assertSlotLoadActive(A);const a=this.acquireSharedVideoTexture(e.cacheKey,t);A.videoTextureHandle=a.texture,A.releaseSharedVideoTexture=a.release}else await this.waitVideoReady(t),this.assertSlotLoadActive(A),A.videoTextureHandle=this.backend.createTexture(t,{width:t.videoWidth,height:t.videoHeight,filter:"linear"});!A.releaseSharedVideoPlayback&&!A.playbackScopeControlled&&this.bindVideoLoopOnEnded(A,t),this.logPlaybackBackend(A,"video",g.mute===!1?"WebCodecs disabled for audible playback":this.shouldTryWebCodecs(g)?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}bindVideoLoopOnEnded(A,g){g.addEventListener("ended",()=>{var I;if(A.state!=="playing")return;const B=(I=A.options.loop)!=null?I:1;if(B===0){g.currentTime=0,g.play();return}if(A.loopCount++,A.loopCount>=B){this.completeHtmlVideoPlayback(A);return}g.currentTime=0,g.play().catch(()=>{})}),this.armHtmlVideoPlaybackWatchdog(A,g)}clearHtmlVideoPlaybackWatchdog(A){A.videoPlaybackWatchdogTimer!=null&&(clearTimeout(A.videoPlaybackWatchdogTimer),A.videoPlaybackWatchdogTimer=null)}clearAllHtmlVideoPlaybackWatchdogs(){if(this.manager)for(const A of this.manager.getSlotIds()){const g=this.manager.getSlot(A);g&&this.clearHtmlVideoPlaybackWatchdog(g)}}rearmHtmlVideoPlaybackWatchdogs(){if(!(!this.manager||this.playbackPaused||document.hidden))for(const A of this.manager.getSlotIds()){const g=this.manager.getSlot(A);g!=null&&g.videoElement&&!g.releaseSharedVideoPlayback&&!g.playbackScopeControlled&&!g.paused&&g.state==="playing"&&this.armHtmlVideoPlaybackWatchdog(g,g.videoElement)}}completeHtmlVideoPlayback(A){var g,I;if(A.state!=="playing"||A.videoPlaybackCompletionStarted)return;A.videoPlaybackCompletionStarted=!0,this.clearHtmlVideoPlaybackWatchdog(A);let B;B={id:A.id,type:A.type,pause:()=>{},resume:()=>{},destroy:()=>this.removeGift(A.id),getRenderInfo:()=>this.getGiftRenderInfo(A),animate:Q=>this.createGiftAnimationChain(A,B,Q)};try{(g=A.onComplete)==null||g.call(A,B)}finally{A.state=A.options.clearsAfterStop===!1?"stopped":"finished",(I=this.manager)==null||I.invalidate()}}armHtmlVideoPlaybackWatchdog(A,g){var I;if(this.clearHtmlVideoPlaybackWatchdog(A),A.playbackScopeControlled||A.paused||this.playbackPaused||document.hidden)return;const B=(I=A.options.loop)!=null?I:1,Q=g.duration;if(B<=0||!Number.isFinite(Q)||Q<=0)return;const E=Math.max(1,Math.ceil(B)),i=Q*E*1e3;if(!Number.isFinite(i))return;const e=Math.min(zA.HTML_VIDEO_WATCHDOG_MAX_GRACE_MS,Math.max(zA.HTML_VIDEO_WATCHDOG_MIN_GRACE_MS,i*zA.HTML_VIDEO_WATCHDOG_GRACE_RATIO)),t=performance.now()+i+e,a=()=>{if(A.state==="finished"||A.state==="stopped"){A.videoPlaybackWatchdogTimer=null;return}const o=t-performance.now();if(o>0){A.videoPlaybackWatchdogTimer=setTimeout(a,Math.min(o,zA.MAX_TIMER_DELAY_MS));return}A.videoPlaybackWatchdogTimer=null,A.state==="playing"&&(console.warn("[GiftStage] HTMLVideo playback timed out; completing gift",{giftId:A.id,type:A.type,duration:Q,loop:E}),this.completeHtmlVideoPlayback(A))};A.videoPlaybackWatchdogTimer=setTimeout(a,Math.min(i+e,zA.MAX_TIMER_DELAY_MS))}createVideo(A,g,I=!0){const B=document.createElement("video");return B.crossOrigin="anonymous",B.autoplay=!0,B.preload="auto",B.muted=I,B.defaultMuted=I,B.playsInline=!0,B.setAttribute("playsinline",""),B.setAttribute("webkit-playsinline","true"),B.loop=g,B.style.cssText="display:none;",B.src=A,document.body.appendChild(B),B.load(),B}waitVideoMetadata(A){return new Promise((g,I)=>{let B=!1,Q=null;const E=()=>{A.removeEventListener("loadedmetadata",e),A.removeEventListener("error",t),Q!=null&&clearTimeout(Q),Q=null},i=a=>{B||(B=!0,E(),a())},e=()=>{i(g)},t=()=>{i(()=>I(new Error("Video metadata load failed")))};A.addEventListener("loadedmetadata",e),A.addEventListener("error",t),Q=setTimeout(()=>i(()=>I(new Error("Video metadata load timed out"))),zA.HTML_VIDEO_READY_TIMEOUT_MS),A.readyState>=HTMLMediaElement.HAVE_METADATA&&i(g)})}async probeVideoNaturalSize(A,g="video"){var I;const B=await this.acquireVideoPlaybackSource(A),Q=document.createElement("video");Q.crossOrigin="anonymous",Q.preload="metadata",Q.muted=!0,Q.playsInline=!0,Q.setAttribute("playsinline",""),Q.setAttribute("webkit-playsinline","true"),Q.style.cssText="display:none;",Q.src=B.src,document.body.appendChild(Q),Q.load();try{return await this.waitVideoMetadata(Q),g==="alphaVideo"?Hs(Q.videoWidth,Q.videoHeight):{width:Q.videoWidth,height:Q.videoHeight}}finally{try{Q.pause(),Q.removeAttribute("src"),Q.load(),Q.remove()}catch(E){}(I=B.release)==null||I.call(B)}}async acquireVideoPlaybackSource(A){if(typeof A!="string"){const B=URL.createObjectURL(new Blob([A]));return{src:B,release:()=>URL.revokeObjectURL(B)}}const g=this.normalizeSharedVideoSourceKey(A);if(!g)return{src:A};let I=this.sharedVideoSources.get(g);I||(I={refs:0,objectUrl:null,promise:this.fetchSharedVideoSource(g)},this.sharedVideoSources.set(g,I)),I.refs++;try{return{src:await I.promise,release:()=>this.releaseSharedVideoSource(g)}}catch(B){return this.releaseSharedVideoSource(g),console.warn("[GiftStage] shared video prefetch failed, using original url",B),{src:A}}}normalizeSharedVideoSourceKey(A){try{const g=new URL(A,window.location.href);return g.protocol==="blob:"||g.protocol==="data:"?null:g.href}catch(g){return null}}async fetchSharedVideoSource(A){const g=new Blob([await BI(A)]),I=this.sharedVideoSources.get(A),B=URL.createObjectURL(g);return I&&(I.objectUrl=B,I.refs===0&&(URL.revokeObjectURL(B),this.sharedVideoSources.delete(A))),B}releaseSharedVideoSource(A){const g=this.sharedVideoSources.get(A);g&&(g.refs=Math.max(0,g.refs-1),g.refs===0&&g.objectUrl&&(URL.revokeObjectURL(g.objectUrl),this.sharedVideoSources.delete(A)))}async tryAcquireSharedHtmlVideo(A,g){var I,B;if(this.options.shareIdenticalVideoPlayback===!1||g.startPaused===!0||g.playbackScopeControlled===!0||g.loop!==0||typeof g.source!="string"||A.type==="vap"&&A.vapMixState)return null;const Q=this.normalizeSharedVideoSourceKey(g.source);if(!Q)return null;const E=`${Q}::muted=${g.mute!==!1?1:0}`,i=(I=this.options.sharedVideoPlaybackWindowMs)!=null?I:zA.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,e=Math.max(0,i)/1e3,t=this.sharedHtmlVideos.get(E);if(t)return t.video.currentTime>e?null:(t.refs++,{cacheKey:E,video:t.video,ready:t.ready,release:()=>this.releaseSharedHtmlVideo(E)});let a=this.pendingSharedHtmlVideos.get(E);a||(a=(async()=>{var n;const r=await this.acquireVideoPlaybackSource(g.source),h=this.createVideo(r.src,!0,g.mute!==!1),c=this.waitVideoReady(h);return{video:h,ready:c,releaseSource:(n=r.release)!=null?n:null}})(),this.pendingSharedHtmlVideos.set(E,a));let o;try{o=await a}catch(n){throw this.pendingSharedHtmlVideos.delete(E),n}let s=this.sharedHtmlVideos.get(E);return s?s.refs++:(s={refs:1,video:o.video,ready:o.ready,releaseSource:(B=o.releaseSource)!=null?B:null},this.sharedHtmlVideos.set(E,s)),this.pendingSharedHtmlVideos.delete(E),{cacheKey:E,video:s.video,ready:s.ready,release:()=>this.releaseSharedHtmlVideo(E)}}acquireSharedVideoTexture(A,g){const I=this.sharedVideoTextures.get(A);if(I)return I.refs++,{texture:I.texture,release:()=>this.releaseSharedVideoTexture(A)};const B=this.backend.createTexture(g,{width:g.videoWidth,height:g.videoHeight,filter:"linear"});return this.sharedVideoTextures.set(A,{refs:1,texture:B}),{texture:B,release:()=>this.releaseSharedVideoTexture(A)}}async acquireImageTexture(A,g){if(typeof A!="string"){const E=await eC(A,g);try{if(b(g,"Image loading aborted"),this.destroyed||!this.backend)throw new Error("GiftStage is destroyed");const i=this.backend.createTexture(E.source,{width:E.width,height:E.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:E.sourcePremultiplied});return{texture:i,width:E.width,height:E.height,release:fg(()=>{var e;return(e=this.backend)==null?void 0:e.deleteTexture(i)})}}finally{E.dispose()}}const I=this.sharedImageTextures.get(A);if(I)return I.refs++,{texture:I.texture,width:I.width,height:I.height,release:fg(()=>this.releaseSharedImageTexture(A))};let B=this.pendingSharedImageTextures.get(A);if(!B){B=(async()=>{const i=await eC(A);try{if(this.destroyed||!this.backend)throw new Error("GiftStage is destroyed");const t={refs:0,texture:this.backend.createTexture(i.source,{width:i.width,height:i.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:i.sourcePremultiplied}),width:i.width,height:i.height};return this.sharedImageTextures.set(A,t),t}finally{i.dispose()}})(),this.pendingSharedImageTextures.set(A,B);const E=()=>{this.pendingSharedImageTextures.get(A)===B&&this.pendingSharedImageTextures.delete(A),queueMicrotask(()=>{var i;const e=this.sharedImageTextures.get(A);(e==null?void 0:e.refs)===0&&((i=this.backend)==null||i.deleteTexture(e.texture),this.sharedImageTextures.delete(A))})};B.then(E,E)}const Q=await B;return b(g,"Image loading aborted"),Q.refs++,{texture:Q.texture,width:Q.width,height:Q.height,release:fg(()=>this.releaseSharedImageTexture(A))}}releaseSharedImageTexture(A){var g;const I=this.sharedImageTextures.get(A);I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0)&&((g=this.backend)==null||g.deleteTexture(I.texture),this.sharedImageTextures.delete(A)))}releaseSharedVideoTexture(A){var g;const I=this.sharedVideoTextures.get(A);I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0)&&((g=this.backend)==null||g.deleteTexture(I.texture),this.sharedVideoTextures.delete(A)))}releaseSharedHtmlVideo(A){var g;const I=this.sharedHtmlVideos.get(A);if(I&&(I.refs=Math.max(0,I.refs-1),!(I.refs>0))){try{I.video.pause(),I.video.removeAttribute("src"),I.video.load(),I.video.remove()}catch(B){}(g=I.releaseSource)==null||g.call(I),this.sharedHtmlVideos.delete(A)}}waitForFirstVideoFrame(A){return new Promise(g=>{typeof A.requestVideoFrameCallback=="function"?A.requestVideoFrameCallback(()=>g()):requestAnimationFrame(()=>g())})}waitVideoReady(A){return new Promise((g,I)=>{let B=!1,Q=!1,E=null;const i=()=>{A.removeEventListener("canplay",a),A.removeEventListener("error",o),E!=null&&clearTimeout(E),E=null},e=s=>{B||(B=!0,i(),s())},t=async()=>{if(!(Q||B)){Q=!0;try{try{await A.play()}catch(s){if(A.muted)throw s;console.warn("[GiftStage] audible HTMLVideo autoplay was blocked; retrying muted",s),A.muted=!0,A.defaultMuted=!0,await A.play()}await this.waitForFirstVideoFrame(A),e(g)}catch(s){e(()=>I(s))}}},a=()=>{t()},o=()=>{e(()=>I(new Error("Video load failed")))};A.addEventListener("canplay",a),A.addEventListener("error",o),E=setTimeout(()=>e(()=>I(new Error("Video ready timed out"))),zA.HTML_VIDEO_READY_TIMEOUT_MS),A.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&t()})}get capabilities(){var A,g,I,B,Q,E,i;const e=(g=(A=this.backend)==null?void 0:A.type)!=null?g:"webgl2",t=this.backend,a=e!=="webgl1"&&!!(t!=null&&t.createSVGAFrameTable)&&((B=(I=t.canCreateSVGAFrameTable)==null?void 0:I.call(t))!=null?B:!0),o=a?e==="webgpu"?"storage-buffer":"float-texture":"unavailable",s=this.svgaGpuFrameTableBudgetBytes();return{backend:e,sharedTimeline:!0,scopedPlayback:!0,assetLeases:!0,motionTrack:{mode:e==="webgpu"?"gpu-table":"cpu-reference",gpuMediaTypes:e==="webgpu"?["svga"]:[],cpuReferenceFallback:!0,nonUniformScale:!0,sampleFloats:Dg},particles:{backend:e==="webgpu"||e==="webgl2"?e:"unavailable",canvas2D:!1,formats:e==="webgpu"||e==="webgl2"?["ballistic-v1","sprite-v2"]:[],...e==="webgpu"||e==="webgl2"?{spriteAtlas:{source:"rgba8-premultiplied",maxSize:(E=(Q=this.backend)==null?void 0:Q.maxTextureSize)!=null?E:4096},compositeLayers:["behind-media","above-media"],batchEnvelope:!0,atomicBatchGroup:!0,maxInstancesPerBatch:8192}:{}},svgaFrameTimeline:{transport:o,direct:a,hybrid:a,maxTableBytes:s,supportedPaths:a?["gpu-direct","gpu-hybrid","cpu-reference"]:["cpu-reference"],defaultEvaluation:(i=this.options.svgaFrameEvaluation)!=null?i:"auto",gpuDirect:a,gpuHybrid:a,cpuReference:!0,tableBudgetBytes:s}}}async preload(A,g,I){var B,Q;if(await this.ready,b(I,"GiftStage preload canceled"),this.destroyed)throw new Error("GiftStage is destroyed");let E=!1;if(A==="svga"){if(typeof g!="string")throw new Error("SVGA preload lease currently requires a URL source");const e=await this.acquireSharedSVGAEntity(g,I),{entity:t}=e;await this.ensureSVGAFrameTable(t),b(I,"GiftStage preload canceled");const a=t.spriteTable;return{metadata:{type:A,width:t.params.viewBoxWidth,height:t.params.viewBoxHeight,fps:t.params.fps,frameCount:t.params.frames,spriteCount:a.spriteCount,atlasPageCount:(Q=(B=t.atlasTextureHandles)==null?void 0:B.length)!=null?Q:t.atlasTextureHandle?1:0,hasShapes:a.hasAnyShapes,hasClipPaths:a.clipPathIndex.some(o=>o>=0),allFramesInsideViewBox:a.allFramesInsideViewBox===!0},get released(){return E},release:()=>{E||(E=!0,e.release())}}}const i=await this.acquireImageTexture(g,I);return{metadata:{type:A,width:i.width,height:i.height},get released(){return E},release:()=>{E||(E=!0,i.release())}}}async createParticleAtlas(A){if(await this.ready,this.destroyed)throw new Error("GiftStage is destroyed");if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleAtlas(A)}createPlaybackScope(A){if(this.destroyed)throw new Error("GiftStage is destroyed");const g=this,I={get backendType(){return g.backendType},get backend(){return g.backend},getSlot:E=>{var i;return(i=this.manager)==null?void 0:i.getSlot(E)},addGift:E=>this.addGift(E),removeGift:E=>this.removeGift(E),applyMediaTime:(E,i,e,t)=>{var a;(a=this.manager)==null||a.applyPlaybackScopeMediaTime(E,i,e,t)},invalidate:E=>{var i;return(i=this.manager)==null?void 0:i.invalidate({resetClock:E})},registerFrameController:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.registerFrameController(E)},createParticleBatch:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleBatch(E)},createParticleBatchGroup:E=>{if(!this.manager)throw new Error("GiftStage is not ready");return this.manager.createParticleBatchGroup(E)}},B=new ZE(I,A);this.playbackScopes.add(B);const Q=B.destroy.bind(B);return B.destroy=()=>{Q(),this.playbackScopes.delete(B)},B}async mount(A){if(await this.ready,this.destroyed)throw new Error("GiftStage is destroyed");const g=new Set,I=new Set,B={stage:this,capabilities:this.capabilities,getViewport:()=>this.currentCanvasCssSize(),preload:(e,t,a)=>this.preload(e,t,a),createParticleAtlas:async e=>{const t=await this.createParticleAtlas(e);I.add(t);const a=t.destroy.bind(t);return t.destroy=()=>{try{a()}finally{I.delete(t)}},t},createPlaybackScope:e=>{const t=this.createPlaybackScope(e);g.add(t);const a=t.destroy.bind(t);return t.destroy=()=>{try{a()}finally{g.delete(t)}},t}},Q=await A.setup(B);let E=!1;const i={name:A.name,api:Q,get destroyed(){return E},destroy:()=>{var e;if(!E){E=!0;for(const t of g)t.destroy();g.clear(),(e=Q==null?void 0:Q.destroy)==null||e.call(Q);for(const t of I)t.destroy();I.clear(),this.mountedPlugins.delete(i)}}};return this.mountedPlugins.add(i),i}removeGift(A){var g;this.resolveGiftPlaybackWaiters(A),this.completedPlaybackSlots.delete(A),this.playbackCompleteWaiters.delete(A),(g=this.manager)==null||g.removeSlot(A)}removeAll(){if(this.manager)for(const A of this.manager.getSlotIds())this.manager.removeSlot(A)}pause(){var A;this.playbackPaused=!0,this.clearAllHtmlVideoPlaybackWatchdogs(),(A=this.manager)==null||A.pause()}resume(){var A;this.playbackPaused=!1,(A=this.manager)==null||A.resume(),this.rearmHtmlVideoPlaybackWatchdogs()}get activeCount(){var A,g;return(g=(A=this.manager)==null?void 0:A.activeCount)!=null?g:0}get backendType(){var A,g;return(g=(A=this.backend)==null?void 0:A.type)!=null?g:"webgl2"}getDiagnostics(){var A,g,I,B,Q,E;this.ensureSVGATimelineBookkeeping();const i=(I=(g=(A=this.manager)==null?void 0:A.getRuntimeDiagnosticsSnapshot)==null?void 0:g.call(A))!=null?I:{frameAbortCount:0,replayFailureCount:0,retryFrameCount:0},e=(E=(Q=(B=this.backend)==null?void 0:B.getRuntimeDiagnosticsSnapshot)==null?void 0:Q.call(B))!=null?E:{submittedDrawCalls:0,rejectedDrawCalls:0,webgpuUncapturedErrors:0,backendLosses:0},t=this.lastRuntimeDiagnostic?{...this.lastRuntimeDiagnostic,...this.lastRuntimeDiagnostic.giftIds?{giftIds:[...this.lastRuntimeDiagnostic.giftIds]}:{}}:null;return{backend:this.backendType,frameAbortCount:i.frameAbortCount,replayFailureCount:i.replayFailureCount,retryFrameCount:i.retryFrameCount,runtimeFallbackCount:this.runtimeFallbackCount,submittedDrawCalls:e.submittedDrawCalls,rejectedDrawCalls:e.rejectedDrawCalls,webgpuUncapturedErrorCount:e.webgpuUncapturedErrors,backendLossCount:e.backendLosses,observerErrorCount:this.runtimeObserverErrorCount,lastEvent:t}}destroy(){var A,g,I,B,Q,E;if(this.destroyed)return;this.destroyed=!0;for(const e of Array.from(this.mountedPlugins))e.destroy();this.mountedPlugins.clear();for(const e of Array.from(this.playbackScopes))e.destroy();this.playbackScopes.clear();for(const e of this.pendingSharedSVGAEntities.values())e.controller.abort();for(const e of this.pendingSharedWebCodecsPlaybacks.values())e.controller.abort();this.pendingSharedWebCodecsPlaybacks.clear(),(A=this.resizeObserver)==null||A.disconnect(),this.resizeObserver=null,window.removeEventListener("resize",this.onWindowLayout),window.removeEventListener("orientationchange",this.onWindowLayout),document.removeEventListener("visibilitychange",this.onVisibilityChange);for(const e of this.sharedImageTextures.values())(g=this.backend)==null||g.deleteTexture(e.texture);this.sharedImageTextures.clear(),this.pendingSharedImageTextures.clear(),(B=(I=this.backend)==null?void 0:I.setRuntimeDiagnosticHandler)==null||B.call(I,null);const i=this.backend;(Q=i==null?void 0:i.setDeviceLostHandler)==null||Q.call(i,null),(E=this.manager)==null||E.destroy();for(const[e]of this.sharedHtmlVideos)this.releaseSharedHtmlVideo(e);for(const[e]of this.sharedSVGAEntities)this.releaseSharedSVGAEntity(e);for(const[e]of this.sharedVideoTextures)this.releaseSharedVideoTexture(e);this.pendingSharedSVGAEntities.clear(),this.pendingSharedHtmlVideos.clear();for(const e of this.sharedWebCodecsPlaybacks.values())for(const t of e)t.playback.destroy();this.sharedWebCodecsPlaybacks.clear(),this.sharedWebCodecsSurfaces.clear(),this.completedPlaybackSlots.clear(),this.playbackCompleteWaiters.clear();for(const[e,t]of this.sharedVideoSources)t.objectUrl&&URL.revokeObjectURL(t.objectUrl),this.sharedVideoSources.delete(e);this.canvas.remove(),this.backend=null,this.manager=null}markGiftPlaybackComplete(A){this.completedPlaybackSlots.add(A),this.resolveGiftPlaybackWaiters(A)}resolveGiftPlaybackWaiters(A){const g=this.playbackCompleteWaiters.get(A);if(!(!g||g.size===0)){for(const I of g)I();this.playbackCompleteWaiters.delete(A)}}waitForGiftPlaybackComplete(A){var g;return this.completedPlaybackSlots.has(A)||!((g=this.manager)!=null&&g.getSlot(A))?Promise.resolve():new Promise(I=>{let B=this.playbackCompleteWaiters.get(A);B||(B=new Set,this.playbackCompleteWaiters.set(A,B)),B.add(I)})}};v(Gg,"SVGA_ATLAS_MAX_SIZE",2048);v(Gg,"SVGA_ATLAS_PADDING",2);v(Gg,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);v(Gg,"HTML_VIDEO_READY_TIMEOUT_MS",15e3);v(Gg,"HTML_VIDEO_WATCHDOG_MIN_GRACE_MS",2e3);v(Gg,"HTML_VIDEO_WATCHDOG_MAX_GRACE_MS",1e4);v(Gg,"HTML_VIDEO_WATCHDOG_GRACE_RATIO",.2);v(Gg,"MAX_TIMER_DELAY_MS",2147e6);v(Gg,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);v(Gg,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let js=Gg;exports.AlphaVideoRenderer=FE;exports.AudioManager=dE;exports.BufferPool=BE;exports.GiftStage=js;exports.ImageRenderer=yE;exports.MOTION_TRACK_SAMPLE_FLOATS=Dg;exports.MotionTrackLeaseImpl=GB;exports.ParticleBatchRenderer=SE;exports.PlaybackScopeImpl=ZE;exports.PostAnimator=GE;exports.RenderManager=PI;exports.SVGABatchRenderer=sE;exports.SVGA_FRAME_TABLE_BUDGET_BYTES=KB;exports.SVGA_FRAME_TABLE_FLOATS=Vg;exports.SVGA_GPU_FRAME_TABLE_BUDGET_BYTES=uC;exports.SVGA_HYBRID_OP_CLIP_CLEAR=JI;exports.SVGA_HYBRID_OP_CLIP_TEST=SB;exports.SVGA_HYBRID_OP_CLIP_WRITE=bg;exports.SVGA_HYBRID_OP_SHAPE=mI;exports.SVGA_HYBRID_OP_TEXTURE=DI;exports.SVGA_SPRITE_METADATA_FLAG_MISSING_RECT=YC;exports.SVGA_SPRITE_METADATA_FLOATS=tC;exports.VAPRenderer=wE;exports.WebCodecsMp4Playback=gI;exports.WebGL1Backend=aC;exports.WebGL2Backend=WQ;exports.WebGPUBackend=TQ;exports.analyzeSVGAFrameTimelineEligibility=nC;exports.buildAtlas=xE;exports.buildBatchVerticesJS=hB;exports.buildSVGAHybridCommandTable=rC;exports.canSharedArrayBuffer=Pi;exports.canWebGL1=Oi;exports.canWebGL2=Xi;exports.canWebGPU=Zi;exports.clamp=DB;exports.countSVGASpriteAtlasPages=yt;exports.createBackend=XQ;exports.decodeSVGAProto=yC;exports.easeInOutCubic=Po;exports.easeInOutQuad=Oo;exports.easeInQuad=Zo;exports.easeOutBack=jo;exports.easeOutCubic=bE;exports.easeOutQuad=Xo;exports.estimateSVGAFrameTableBytes=$I;exports.generateId=SC;exports.inflateJS=FC;exports.initWasm=IE;exports.isSVGAFrameTableBudgetAvailable=wt;exports.isSVGAFrameTableWithinBudget=lt;exports.isWasmReady=hI;exports.lerp=cg;exports.linear=Vo;exports.ortho=pg;exports.packSVGAFrameDataToVec4=Dt;exports.packSVGAFrameTable=kC;exports.packSVGASpriteMetadata=oE;exports.parseSVGA=yB;exports.parseVAPConfig=DC;
|
|
4653
4653
|
//# sourceMappingURL=gift-stage.cjs.map
|