@taole/giftstage 0.1.7 → 0.1.8

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.
@@ -1,4 +1,4 @@
1
- "use strict";var QB=g=>{throw TypeError(g)};var cn=(g,A,t)=>A.has(g)||QB("Cannot "+t);var rB=(g,A,t)=>(cn(g,A,"read from private field"),t?t.call(g):A.get(g)),ln=(g,A,t)=>A.has(g)?QB("Cannot add the same private member more than once"):A instanceof WeakSet?A.add(g):A.set(g,t),oB=(g,A,t,e)=>(cn(g,A,"write to private field"),e?e.call(g,t):A.set(g,t),t),dn=(g,A,t)=>(cn(g,A,"access private method"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var fn=typeof document!="undefined"?document.currentScript:null;const ua=`#version 300 es
1
+ "use strict";var oB=g=>{throw TypeError(g)};var cn=(g,A,t)=>A.has(g)||oB("Cannot "+t);var EB=(g,A,t)=>(cn(g,A,"read from private field"),t?t.call(g):A.get(g)),ln=(g,A,t)=>A.has(g)?oB("Cannot add the same private member more than once"):A instanceof WeakSet?A.add(g):A.set(g,t),hB=(g,A,t,e)=>(cn(g,A,"write to private field"),e?e.call(g,t):A.set(g,t),t),dn=(g,A,t)=>(cn(g,A,"access private method"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var fn=typeof document!="undefined"?document.currentScript:null;const ya=`#version 300 es
2
2
  precision highp float;
3
3
 
4
4
  layout(location = 0) in vec3 a_position;
@@ -15,7 +15,7 @@ void main() {
15
15
  v_uv = a_uv;
16
16
  v_color = a_color;
17
17
  }
18
- `,wa=`#version 300 es
18
+ `,ma=`#version 300 es
19
19
  precision highp float;
20
20
 
21
21
  layout(location = 0) in vec2 a_corner;
@@ -39,7 +39,7 @@ void main() {
39
39
  v_uv = mix(a_uvRect.xy, a_uvRect.zw, a_corner);
40
40
  v_color = vec4(1.0, 1.0, 1.0, a_translateAlpha.z);
41
41
  }
42
- `,EB=`#version 300 es
42
+ `,cB=`#version 300 es
43
43
  precision mediump float;
44
44
 
45
45
  uniform sampler2D u_atlas;
@@ -54,7 +54,7 @@ void main() {
54
54
  c.rgb *= c.a;
55
55
  fragColor = c;
56
56
  }
57
- `,Da=`#version 300 es
57
+ `,Ga=`#version 300 es
58
58
  precision highp float;
59
59
 
60
60
  layout(location = 0) in vec2 a_position;
@@ -73,7 +73,7 @@ void main() {
73
73
  v_rgbUV = u_atlasRemap.xy + a_rgbUV * u_atlasRemap.zw;
74
74
  v_alphaUV = u_atlasRemap.xy + a_alphaUV * u_atlasRemap.zw;
75
75
  }
76
- `,hB=`#version 300 es
76
+ `,lB=`#version 300 es
77
77
  precision mediump float;
78
78
 
79
79
  uniform sampler2D u_video;
@@ -88,7 +88,7 @@ void main() {
88
88
  float alpha = texture(u_video, v_alphaUV).r;
89
89
  fragColor = vec4(rgb * alpha, alpha);
90
90
  }
91
- `,pa=`#version 300 es
91
+ `,Sa=`#version 300 es
92
92
  precision highp float;
93
93
 
94
94
  layout(location = 0) in vec2 a_position;
@@ -107,7 +107,7 @@ void main() {
107
107
  v_rgbUV = atlasUv;
108
108
  v_alphaUV = atlasUv + vec2(-0.5 * u_atlasRemap.z, 0.0);
109
109
  }
110
- `,cB=`#version 300 es
110
+ `,dB=`#version 300 es
111
111
  precision mediump float;
112
112
 
113
113
  uniform sampler2D u_video;
@@ -122,7 +122,7 @@ void main() {
122
122
  float alpha = texture(u_video, v_alphaUV).r;
123
123
  fragColor = vec4(rgb * alpha, alpha);
124
124
  }
125
- `,ya=`#version 300 es
125
+ `,Fa=`#version 300 es
126
126
  precision highp float;
127
127
 
128
128
  layout(location = 0) in vec2 a_position;
@@ -138,7 +138,7 @@ void main() {
138
138
  gl_Position = u_projection * u_transform * vec4(a_position, 0.0, 1.0);
139
139
  v_uv = u_atlasRemap.xy + a_uv * u_atlasRemap.zw;
140
140
  }
141
- `,ma=`#version 300 es
141
+ `,Na=`#version 300 es
142
142
  precision mediump float;
143
143
 
144
144
  uniform sampler2D u_video;
@@ -150,7 +150,7 @@ out vec4 fragColor;
150
150
  void main() {
151
151
  fragColor = texture(u_video, v_uv);
152
152
  }
153
- `,Ga=`#version 300 es
153
+ `,xa=`#version 300 es
154
154
  precision highp float;
155
155
 
156
156
  layout(location = 0) in vec2 a_position;
@@ -175,7 +175,7 @@ void main() {
175
175
  v_rgbUV = atlasUv;
176
176
  v_alphaUV = atlasUv + vec2(-0.5 * ar.z, 0.0);
177
177
  }
178
- `,Sa=`#version 300 es
178
+ `,Ra=`#version 300 es
179
179
  precision highp float;
180
180
 
181
181
  layout(location = 0) in vec2 a_position;
@@ -209,7 +209,7 @@ void main() {
209
209
  v_rgbUV = ar.xy + vec2(rgb_u, rgb_v) * ar.zw;
210
210
  v_alphaUV = ar.xy + vec2(a_u, a_v) * ar.zw;
211
211
  }
212
- `,Fa=`#version 300 es
212
+ `,Ua=`#version 300 es
213
213
  precision mediump float;
214
214
 
215
215
  uniform mat4 u_projection;
@@ -219,7 +219,7 @@ layout(location = 0) in vec2 a_pos;
219
219
  void main() {
220
220
  gl_Position = u_projection * vec4(a_pos, 0.0, 1.0);
221
221
  }
222
- `,Na=`#version 300 es
222
+ `,Ma=`#version 300 es
223
223
  precision mediump float;
224
224
 
225
225
  out vec4 fragColor;
@@ -227,7 +227,7 @@ out vec4 fragColor;
227
227
  void main() {
228
228
  fragColor = vec4(0.0);
229
229
  }
230
- `,Ra=`/** Padded layout shared with VAP/alpha-video textured pipelines (unused fields ignored in SVGA). */
230
+ `,ba=`/** Padded layout shared with VAP/alpha-video textured pipelines (unused fields ignored in SVGA). */
231
231
  struct Uniforms {
232
232
  projection: mat4x4f,
233
233
  transform: mat4x4f,
@@ -265,7 +265,7 @@ fn fs(f: VOut) -> @location(0) vec4f {
265
265
  c = vec4f(c.rgb * c.a, c.a);
266
266
  return c;
267
267
  }
268
- `,xa=`struct Uniforms {
268
+ `,ka=`struct Uniforms {
269
269
  projection: mat4x4f,
270
270
  transform: mat4x4f,
271
271
  /** xy = atlas min (0–1), zw = extent (du,dv) for full decoded frame quad. */
@@ -303,7 +303,7 @@ fn fs(f: VOut) -> @location(0) vec4f {
303
303
  let alpha = textureSample(videoTex, videoSampler, f.alphaUV).r;
304
304
  return vec4f(rgb * alpha, alpha);
305
305
  }
306
- `,Ua=`struct Uniforms {
306
+ `,Ya=`struct Uniforms {
307
307
  projection: mat4x4f,
308
308
  transform: mat4x4f,
309
309
  atlasRemap: vec4f,
@@ -341,7 +341,7 @@ fn fs(f: VOut) -> @location(0) vec4f {
341
341
  let alpha = textureSample(videoTex, videoSampler, f.alphaUV).r;
342
342
  return vec4f(rgb * alpha, alpha);
343
343
  }
344
- `,Ma=`struct Uniforms {
344
+ `,_a=`struct Uniforms {
345
345
  projection: mat4x4f,
346
346
  transform: mat4x4f,
347
347
  atlasRemap: vec4f,
@@ -373,7 +373,7 @@ fn vs(v: VIn) -> VOut {
373
373
  fn fs(f: VOut) -> @location(0) vec4f {
374
374
  return textureSample(videoTex, videoSampler, f.uv);
375
375
  }
376
- `,ba=`/// Batched alpha (RGB | A side-by-side): one draw per shared texture (e.g. atlas).\r
376
+ `,La=`/// Batched alpha (RGB | A side-by-side): one draw per shared texture (e.g. atlas).\r
377
377
  /// Per-instance: transform + atlasRemap; shared projection in uniform.\r
378
378
  \r
379
379
  struct Globals {\r
@@ -421,7 +421,7 @@ fn fs(f: VOut) -> @location(0) vec4f {\r
421
421
  let alpha = textureSample(videoTex, videoSampler, f.alphaUV).r;\r
422
422
  return vec4f(rgb * alpha, alpha);\r
423
423
  }\r
424
- `,ka=`/// Batched VAP: one draw per shared texture (e.g. atlas). Per-instance: transform, atlasRemap,\r
424
+ `,Ja=`/// Batched VAP: one draw per shared texture (e.g. atlas). Per-instance: transform, atlasRemap,\r
425
425
  /// rgb/alpha UV rects (left, right, top, bottom in normalized [0,1] space); shared projection in uniform.\r
426
426
  \r
427
427
  struct Globals {\r
@@ -477,7 +477,7 @@ fn fs(f: VOut) -> @location(0) vec4f {\r
477
477
  let alpha = textureSample(videoTex, videoSampler, f.alphaUV).r;\r
478
478
  return vec4f(rgb * alpha, alpha);\r
479
479
  }\r
480
- `,Ya=`struct Uniforms {
480
+ `,Ha=`struct Uniforms {
481
481
  projection: mat4x4f,
482
482
  }
483
483
 
@@ -502,7 +502,7 @@ fn vs(v: VIn) -> VOut {
502
502
  fn fs(f: VOut) -> @location(0) vec4f {
503
503
  return vec4f(0.0, 0.0, 0.0, 0.0);
504
504
  }
505
- `,_a=`struct Globals {\r
505
+ `,va=`struct Globals {\r
506
506
  projection: mat4x4f,\r
507
507
  }\r
508
508
  \r
@@ -551,7 +551,7 @@ fn fs(f: VOut) -> @location(0) vec4f {\r
551
551
  c = vec4f(c.rgb * c.a, c.a);\r
552
552
  return c;\r
553
553
  }\r
554
- `,Y={svgaBatch:{vert:ua,frag:EB},svgaInstanced:{vert:wa,frag:EB},vap:{vert:Da,frag:hB},vapInstanced:{vert:Sa,frag:hB},alphaVideo:{vert:pa,frag:cB},alphaVideoInstanced:{vert:Ga,frag:cB},rgbaTextured:{vert:ya,frag:ma},clipMask:{vert:Fa,frag:Na}},lA={svgaBatch:Ra,svgaInstanced:_a,vap:xa,vapInstanced:ka,alphaVideo:Ua,alphaVideoInstanced:ba,rgbaTextured:Ma,clipMask:Ya};var La=Object.defineProperty,Ja=(g,A,t)=>A in g?La(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,G=(g,A,t)=>Ja(g,typeof A!="symbol"?A+"":A,t);const Ha=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),va=new Float32Array([0,0,1,1]),O=class q{constructor(A,t,e=!0){G(this,"type","webgpu"),G(this,"canvas"),G(this,"adapter"),G(this,"device"),G(this,"context"),G(this,"format"),G(this,"encoder",null),G(this,"passEncoder",null),G(this,"nextId",1),G(this,"buffers",new Map),G(this,"textures",new Map),G(this,"pipelines",new Map),G(this,"sampler"),G(this,"uniformBuffer"),G(this,"uniformSlotStride",256),G(this,"maxUniformSlots",8192),G(this,"uniformSlotIndex",0),G(this,"lastDrawPipeline",null),G(this,"lastStencilRef",-1),G(this,"lastVertexBufferId",-1),G(this,"lastIndexBufferId",-1),G(this,"uniformScratch144",new Float32Array(36)),G(this,"depthStencilTexture",null),G(this,"depthStencilView",null),G(this,"msaaColorTexture",null),G(this,"msaaColorView",null),G(this,"lastCanvasWidth",0),G(this,"lastCanvasHeight",0),G(this,"lastDepthStencilSampleCount",0),G(this,"msaaSampleCount",1),G(this,"wantAntialias"),G(this,"configuredCanvasWidth",0),G(this,"configuredCanvasHeight",0),G(this,"dummyTexture"),G(this,"dummyTextureView"),G(this,"videoUploadCanvas",null),G(this,"videoUploadCtx",null),G(this,"videoElementPreferCanvasBridge",!1),G(this,"videoFramePreferCanvasBridge",!1),G(this,"textureBindGroupCache",new Map),G(this,"instancedAlphaProjBuffer"),G(this,"instancedSvgaInstanceBuffer"),G(this,"instancedAlphaInstanceBuffer"),G(this,"instancedVapInstanceBuffer"),G(this,"storageBindOffsetAlign",256),G(this,"instancedSvgaSlotBytes"),G(this,"instancedAlphaSlotBytes"),G(this,"instancedVapSlotBytes"),G(this,"instancedSvgaRingOffset",0),G(this,"instancedAlphaRingOffset",0),G(this,"instancedVapRingOffset",0),G(this,"instancedProjectionCache",new Float32Array(16)),G(this,"instancedProjectionValid",!1),G(this,"lastInstancedTextureBindGroup",null),this.canvas=A,this.adapter=t,this.wantAntialias=e}async init(){this.device=await this.adapter.requestDevice(),this.device.onuncapturederror=t=>{console.error("[WebGPU Error]",t.error.message)},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;const A=this.storageBindOffsetAlign;this.instancedSvgaSlotBytes=Math.ceil(q.INSTANCED_SVGA_CHUNK_BYTES/A)*A,this.instancedAlphaSlotBytes=Math.ceil(q.INSTANCED_ALPHA_CHUNK_BYTES/A)*A,this.instancedVapSlotBytes=Math.ceil(q.INSTANCED_VAP_CHUNK_BYTES/A)*A,this.uniformBuffer=this.device.createBuffer({size:this.uniformSlotStride*this.maxUniformSlots,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedAlphaProjBuffer=this.device.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedSvgaInstanceBuffer=this.device.createBuffer({size:q.INSTANCED_STORAGE_RING_SLOTS*this.instancedSvgaSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.instancedAlphaInstanceBuffer=this.device.createBuffer({size:q.INSTANCED_STORAGE_RING_SLOTS*this.instancedAlphaSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.instancedVapInstanceBuffer=this.device.createBuffer({size:q.INSTANCED_STORAGE_RING_SLOTS*this.instancedVapSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),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}ensureDepthStencil(A,t){var e,i;this.depthStencilTexture&&this.lastCanvasWidth===A&&this.lastCanvasHeight===t&&this.lastDepthStencilSampleCount===this.msaaSampleCount||((e=this.depthStencilTexture)==null||e.destroy(),(i=this.msaaColorTexture)==null||i.destroy(),this.msaaColorTexture=null,this.msaaColorView=null,this.depthStencilTexture=this.device.createTexture({size:[A,t],format:"depth24plus-stencil8",sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.depthStencilView=this.depthStencilTexture.createView(),this.msaaSampleCount>1&&(this.msaaColorTexture=this.device.createTexture({size:[A,t],format:this.format,sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.msaaColorView=this.msaaColorTexture.createView()),this.lastCanvasWidth=A,this.lastCanvasHeight=t,this.lastDepthStencilSampleCount=this.msaaSampleCount)}initPipelines(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:144}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:64}}]});this.createTexturedPipeline("svga-batch:none",lA.svgaBatch,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"none"),this.createTexturedPipeline("svga-batch:test",lA.svgaBatch,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"test"),this.createClipMaskPipeline(t),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("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"),this.createInstancedSvgaPipeline(),this.createInstancedAlphaVideoPipeline(),this.createVapInstancedPipeline()}createInstancedSvgaPipeline(){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:q.SVGA_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:lA.svgaInstanced}),i={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"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),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("svga-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedSvgaInstanceBuffer,offset:0,size:q.INSTANCED_SVGA_CHUNK_BYTES}}]}),needsTexture:!0})}createVapInstancedPipeline(){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:q.VAP_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:lA.vapInstanced}),i={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"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,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("vap-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedVapInstanceBuffer,offset:0,size:q.INSTANCED_VAP_CHUNK_BYTES}}]}),needsTexture:!0})}createInstancedAlphaVideoPipeline(){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:q.ALPHA_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:lA.alphaVideoInstanced}),i={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"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,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("alpha-video-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedAlphaInstanceBuffer,offset:0,size:q.INSTANCED_ALPHA_CHUNK_BYTES}}]}),needsTexture:!0})}createTexturedPipeline(A,t,e,i,I,s){const n=this.device.createShaderModule({code:t}),B=s==="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}:{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"}},C=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[e]}),vertex:{module:n,entryPoint:"vs",buffers:[{arrayStride:I,attributes:i}]},fragment:{module:n,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:B,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:C,bindGroupLayout:e,needsTexture:!0})}createClipMaskPipeline(A){const t=this.device.createShaderModule({code:lA.clipMask}),e=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:t,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:t,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:e,bindGroupLayout:A,needsTexture:!1})}beginFrame(){const A=this.canvas.width,t=this.canvas.height;(A!==this.configuredCanvasWidth||t!==this.configuredCanvasHeight)&&this.configureCanvasContext(),this.ensureDepthStencil(A,t),this.encoder=this.device.createCommandEncoder();const e=this.context.getCurrentTexture().createView(),i=this.msaaSampleCount>1&&this.msaaColorView?{view:this.msaaColorView,resolveTarget:e,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"discard"}:{view:e,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"};this.uniformSlotIndex=0,this.instancedSvgaRingOffset=0,this.instancedAlphaRingOffset=0,this.instancedVapRingOffset=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,this.lastInstancedTextureBindGroup=null,this.passEncoder=this.encoder.beginRenderPass({colorAttachments:[i],depthStencilAttachment:{view:this.depthStencilView,stencilClearValue:0,stencilLoadOp:"clear",stencilStoreOp:"store",depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}})}endFrame(){this.passEncoder&&this.passEncoder.end(),this.encoder&&this.device.queue.submit([this.encoder.finish()]),this.passEncoder=null,this.encoder=null}ensureInstancedProjection(A){if(!(A.length<16)){if(this.instancedProjectionValid){let t=!0;for(let e=0;e<16;e++)if(this.instancedProjectionCache[e]!==A[e]){t=!1;break}if(t)return}this.instancedProjectionCache.set(A.subarray(0,16)),this.instancedProjectionValid=!0,this.device.queue.writeBuffer(this.instancedAlphaProjBuffer,0,A.buffer,A.byteOffset,64)}}createBuffer(A,t){let e=GPUBufferUsage.COPY_DST;t==="vertex"?e|=GPUBufferUsage.VERTEX:t==="index"?e|=GPUBufferUsage.INDEX:e|=GPUBufferUsage.UNIFORM;const i=(()=>{if(A instanceof ArrayBuffer)return new Uint8Array(A);if(typeof SharedArrayBuffer!="undefined"&&A instanceof SharedArrayBuffer){const a=new Uint8Array(A);return new Uint8Array(a)}const n=A,B=n.buffer,C=new Uint8Array(B,n.byteOffset,n.byteLength);return typeof SharedArrayBuffer!="undefined"&&B instanceof SharedArrayBuffer?new Uint8Array(C):C})(),I=this.device.createBuffer({size:Math.max(i.byteLength,4),usage:e,mappedAtCreation:!0});new Uint8Array(I.getMappedRange()).set(i),I.unmap();const s=this.nextId++;return this.buffers.set(s,{buffer:I,usage:t}),{id:s,usage:t}}updateBuffer(A,t,e=0){const i=this.buffers.get(A.id);if(!i)return;const I=(()=>{if(t instanceof ArrayBuffer)return new Uint8Array(t);if(typeof SharedArrayBuffer!="undefined"&&t instanceof SharedArrayBuffer){const Q=new Uint8Array(t);return new Uint8Array(Q)}const B=t,C=B.buffer,a=new Uint8Array(C,B.byteOffset,B.byteLength);return typeof SharedArrayBuffer!="undefined"&&C instanceof SharedArrayBuffer?new Uint8Array(a):a})(),s=I.byteLength;if(s>i.buffer.size){i.buffer.destroy();let B=GPUBufferUsage.COPY_DST;i.usage==="vertex"?B|=GPUBufferUsage.VERTEX:i.usage==="index"?B|=GPUBufferUsage.INDEX:B|=GPUBufferUsage.UNIFORM,i.buffer=this.device.createBuffer({size:s,usage:B})}const n=new Uint8Array(I.buffer,I.byteOffset,I.byteLength);this.device.queue.writeBuffer(i.buffer,0,n)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(t.buffer.destroy(),this.buffers.delete(A.id))}copyHtmlVideoToTextureDirect(A,t,e,i){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:i,flipY:!0},{texture:A},[t,e]),!0}catch(I){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video>) failed; using canvas bridge.",I),!1}}copyVideoFrameToTextureDirect(A,t,e,i){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:i,flipY:!0},{texture:A},[t,e]),!0}catch(I){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame) failed; using canvas bridge.",I),!1}}drawVideoLikeSourceToTexture(A,t,e,i){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const I=this.videoUploadCanvas,s=this.videoUploadCtx;s&&((I.width!==t||I.height!==e)&&(I.width=t,I.height=e),s.drawImage(i,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:I,flipY:!0},{texture:A},[t,e]))}copyImageSourceToTexture(A,t,e,i){if(typeof VideoFrame!="undefined"&&i instanceof VideoFrame){const I=i,s=I.displayWidth||I.codedWidth,n=I.displayHeight||I.codedHeight;if(!s||!n||!t||!e||this.copyVideoFrameToTextureDirect(A,t,e,I))return;this.drawVideoLikeSourceToTexture(A,t,e,I);return}if(i instanceof HTMLVideoElement){const I=i,s=I.videoWidth,n=I.videoHeight;if(I.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!s||!n||!t||!e)return;if(I.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTexture(A,t,e,I);return}if(this.copyHtmlVideoToTextureDirect(A,t,e,I))return;this.drawVideoLikeSourceToTexture(A,t,e,I);return}this.device.queue.copyExternalImageToTexture({source:i},{texture:A},[t,e])}createTexture(A,t){var e,i;const I=(e=t.width)!=null?e:1,s=(i=t.height)!=null?i:1,n=this.device.createTexture({size:[I,s],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});A instanceof ArrayBuffer?this.device.queue.writeTexture({texture:n},A,{bytesPerRow:I*4},[I,s]):this.copyImageSourceToTexture(n,I,s,A);const B=this.nextId++;return this.textures.set(B,{texture:n,view:n.createView(),width:I,height:s}),{id:B,width:I,height:s}}createEmptyTexture(A,t,e={}){const i=Math.max(1,Math.floor(A)),I=Math.max(1,Math.floor(t)),s=this.device.createTexture({size:[i,I],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),n=this.nextId++;return this.textures.set(n,{texture:s,view:s.createView(),width:i,height:I}),{id:n,width:i,height:I}}updateTexture(A,t){const e=this.textures.get(A.id);e&&this.copyImageSourceToTexture(e.texture,e.width,e.height,t)}updateTextureRegion(A,t,e,i,I,s){const n=this.textures.get(A.id);if(!n)return;const B={texture:n.texture,origin:{x:Math.floor(e),y:Math.floor(i)}};if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const o=t,r=o.displayWidth||o.codedWidth,E=o.displayHeight||o.codedHeight;if(!r||!E)return;const h=I!=null?I:r,c=s!=null?s:E;if(h!==r||c!==E){this.drawVideoLikeSourceToTextureRegion(n.texture,h,c,o,B.origin.x,B.origin.y);return}try{this.device.queue.copyExternalImageToTexture({source:o,flipY:!0},B,[r,E])}catch(f){this.drawVideoLikeSourceToTextureRegion(n.texture,r,E,o,B.origin.x,B.origin.y)}return}if(t instanceof HTMLVideoElement){const o=t,r=o.videoWidth,E=o.videoHeight;if(o.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!r||!E)return;const h=I!=null?I:r,c=s!=null?s:E;if(h!==r||c!==E){this.drawVideoLikeSourceToTextureRegion(n.texture,h,c,o,B.origin.x,B.origin.y);return}if(o.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(n.texture,r,E,o,B.origin.x,B.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(n.texture,r,E,o,B.origin.x,B.origin.y))return;this.drawVideoLikeSourceToTextureRegion(n.texture,r,E,o,B.origin.x,B.origin.y);return}const C=t,a=I!=null?I:C.width,Q=s!=null?s:C.height;if(a!==C.width||Q!==C.height){this.drawVideoLikeSourceToTextureRegion(n.texture,a,Q,C,B.origin.x,B.origin.y);return}this.device.queue.copyExternalImageToTexture({source:C},B,[C.width,C.height])}copyHtmlVideoToTextureRegionDirect(A,t,e,i,I,s){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:i,flipY:!0},{texture:A,origin:{x:I,y:s}},[t,e]),!0}catch(n){return!1}}drawVideoLikeSourceToTextureRegion(A,t,e,i,I,s){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const n=this.videoUploadCanvas,B=this.videoUploadCtx;B&&((n.width!==t||n.height!==e)&&(n.width=t,n.height=e),B.drawImage(i,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:n,flipY:!0},{texture:A,origin:{x:I,y:s}},[t,e]))}deleteTexture(A){const t=this.textures.get(A.id);if(!t)return;t.texture.destroy(),this.textures.delete(A.id);const e=`\0${A.id}`;for(const i of this.textureBindGroupCache.keys())i.endsWith(e)&&this.textureBindGroupCache.delete(i)}draw(A){var t,e,i;if(!this.passEncoder)return;if(A.shader==="svga-instanced"){this.drawInstancedSvga(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlpha(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVap(A);return}const I=(t=A.stencil)!=null?t:"none",s=A.shader==="clip-mask"||I==="clear"?"clip-mask:write":`${A.shader}:${I}`,n=this.pipelines.get(s);if(!n)return;const B=this.passEncoder,C=n.pipeline;this.lastDrawPipeline!==C&&(B.setPipeline(C),this.lastDrawPipeline=C,this.lastInstancedTextureBindGroup=null);let a=0;I==="clear"?a=0:(I==="write"||A.shader==="clip-mask"||I==="test")&&(a=1),this.lastStencilRef!==a&&(B.setStencilReference(a),this.lastStencilRef=a);const Q=this.uniformSlotIndex++;if(Q>=this.maxUniformSlots){console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots");return}const o=Q*this.uniformSlotStride,r=A.uniforms.u_projection;if(n.needsTexture){const d=A.uniforms.u_transform,u=d instanceof Float32Array&&d.length>=16?d:Ha,p=A.uniforms.u_atlasRemap,D=p instanceof Float32Array&&p.length>=4?p:va;if(r instanceof Float32Array&&r.length>=16){const y=this.uniformScratch144;y.set(r.subarray(0,16),0),y.set(u.subarray(0,16),16),y.set(D.subarray(0,4),32),this.device.queue.writeBuffer(this.uniformBuffer,o,y.buffer,y.byteOffset,144)}else this.device.queue.writeBuffer(this.uniformBuffer,o+64,u.buffer,u.byteOffset,64),this.device.queue.writeBuffer(this.uniformBuffer,o+128,D.buffer,D.byteOffset,16)}else r instanceof Float32Array&&r.length>=16&&this.device.queue.writeBuffer(this.uniformBuffer,o,r.buffer,r.byteOffset,64);if(n.needsTexture){const d=A.textures.length>0?A.textures[0]:null,u=d?this.textures.get(d.id):null,p=(e=u==null?void 0:u.view)!=null?e:this.dummyTextureView,D=(i=d==null?void 0:d.id)!=null?i:0,y=`${s}\0${D}`;let S=this.textureBindGroupCache.get(y);S||(S=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:144}},{binding:1,resource:p},{binding:2,resource:this.sampler}]}),this.textureBindGroupCache.set(y,S)),B.setBindGroup(0,S,[o])}else n.uniformOnlyBindGroup||(n.uniformOnlyBindGroup=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:64}}]})),B.setBindGroup(0,n.uniformOnlyBindGroup,[o]);const E=this.buffers.get(A.vertexBuffer.id),h=this.buffers.get(A.indexBuffer.id);if(!E||!h)return;const c=A.vertexBuffer.id,f=A.indexBuffer.id;this.lastVertexBufferId!==c&&(B.setVertexBuffer(0,E.buffer),this.lastVertexBufferId=c),this.lastIndexBufferId!==f&&(B.setIndexBuffer(h.buffer,"uint32"),this.lastIndexBufferId=f),B.drawIndexed(A.indexCount)}drawInstancedSvga(A){var t,e,i;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*13)return;if(s>q.SVGA_INSTANCED_MAX){console.warn("[WebGPU] svga-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("svga-instanced:none");if(!C)return;const a=C.pipeline;this.lastDrawPipeline!==a&&(I.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const Q=A.uniforms.u_projection;if(!(Q instanceof Float32Array)||Q.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),r=this.buffers.get(A.indexBuffer.id);if(!o||!r)return;this.ensureInstancedProjection(Q);const E=s*q.SVGA_INSTANCED_STRIDE,h=this.instancedSvgaRingOffset;if(h+this.instancedSvgaSlotBytes>this.instancedSvgaInstanceBuffer.size){console.warn("[WebGPU] instanced SVGA storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedSvgaRingOffset+=this.instancedSvgaSlotBytes,this.device.queue.writeBuffer(this.instancedSvgaInstanceBuffer,h,n.buffer,n.byteOffset,E);const c=A.textures[0],f=c?this.textures.get(c.id):null,d=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,p=`svga-instanced:none\0${(i=c==null?void 0:c.id)!=null?i:0}`;let D=this.textureBindGroupCache.get(p);D||(D=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:d},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(p,D)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==D&&(I.setBindGroup(1,D),this.lastInstancedTextureBindGroup=D);const y=A.vertexBuffer.id,S=A.indexBuffer.id;this.lastVertexBufferId!==y&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=y),this.lastIndexBufferId!==S&&(I.setIndexBuffer(r.buffer,"uint32"),this.lastIndexBufferId=S),I.drawIndexed(A.indexCount,s,0,0,0)}drawInstancedAlpha(A){var t,e,i;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*20)return;if(s>q.ALPHA_INSTANCED_MAX){console.warn("[WebGPU] alpha-video-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("alpha-video-instanced:none");if(!C)return;const a=C.pipeline;this.lastDrawPipeline!==a&&(I.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const Q=A.uniforms.u_projection;if(!(Q instanceof Float32Array)||Q.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),r=this.buffers.get(A.indexBuffer.id);if(!o||!r)return;this.ensureInstancedProjection(Q);const E=s*q.ALPHA_INSTANCED_STRIDE,h=this.instancedAlphaRingOffset;if(h+this.instancedAlphaSlotBytes>this.instancedAlphaInstanceBuffer.size){console.warn("[WebGPU] instanced alpha storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedAlphaRingOffset+=this.instancedAlphaSlotBytes,this.device.queue.writeBuffer(this.instancedAlphaInstanceBuffer,h,n.buffer,n.byteOffset,E);const c=A.textures[0],f=c?this.textures.get(c.id):null,d=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,p=`alpha-video-instanced:none\0${(i=c==null?void 0:c.id)!=null?i:0}`;let D=this.textureBindGroupCache.get(p);D||(D=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:d},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(p,D)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==D&&(I.setBindGroup(1,D),this.lastInstancedTextureBindGroup=D);const y=A.vertexBuffer.id,S=A.indexBuffer.id;this.lastVertexBufferId!==y&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=y),this.lastIndexBufferId!==S&&(I.setIndexBuffer(r.buffer,"uint32"),this.lastIndexBufferId=S),I.drawIndexed(A.indexCount,s,0,0,0)}drawInstancedVap(A){var t,e,i;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*28)return;if(s>q.VAP_INSTANCED_MAX){console.warn("[WebGPU] vap-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("vap-instanced:none");if(!C)return;const a=C.pipeline;this.lastDrawPipeline!==a&&(I.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const Q=A.uniforms.u_projection;if(!(Q instanceof Float32Array)||Q.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),r=this.buffers.get(A.indexBuffer.id);if(!o||!r)return;this.ensureInstancedProjection(Q);const E=s*q.VAP_INSTANCED_STRIDE,h=this.instancedVapRingOffset;if(h+this.instancedVapSlotBytes>this.instancedVapInstanceBuffer.size){console.warn("[WebGPU] instanced VAP storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedVapRingOffset+=this.instancedVapSlotBytes,this.device.queue.writeBuffer(this.instancedVapInstanceBuffer,h,n.buffer,n.byteOffset,E);const c=A.textures[0],f=c?this.textures.get(c.id):null,d=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,p=`vap-instanced:none\0${(i=c==null?void 0:c.id)!=null?i:0}`;let D=this.textureBindGroupCache.get(p);D||(D=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:d},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(p,D)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==D&&(I.setBindGroup(1,D),this.lastInstancedTextureBindGroup=D);const y=A.vertexBuffer.id,S=A.indexBuffer.id;this.lastVertexBufferId!==y&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=y),this.lastIndexBufferId!==S&&(I.setIndexBuffer(r.buffer,"uint32"),this.lastIndexBufferId=S),I.drawIndexed(A.indexCount,s,0,0,0)}clearStencil(){}setScissor(A,t,e,i){if(!this.passEncoder)return;const I=this.canvas.width,s=this.canvas.height,n=Math.max(0,Math.min(I,Math.round(A))),B=Math.max(0,Math.min(s,Math.round(t))),C=Math.max(n,Math.min(I,Math.round(A+e))),a=Math.max(B,Math.min(s,Math.round(t+i)));this.passEncoder.setScissorRect(n,B,C-n,a-B)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,t,e,i,I,s,n,B,C;for(const[,a]of this.buffers)a.buffer.destroy();for(const[,a]of this.textures)a.texture.destroy();(A=this.uniformBuffer)==null||A.destroy(),(t=this.instancedAlphaProjBuffer)==null||t.destroy(),(e=this.instancedSvgaInstanceBuffer)==null||e.destroy(),(i=this.instancedAlphaInstanceBuffer)==null||i.destroy(),(I=this.instancedVapInstanceBuffer)==null||I.destroy(),(s=this.depthStencilTexture)==null||s.destroy(),(n=this.msaaColorTexture)==null||n.destroy(),(B=this.dummyTexture)==null||B.destroy(),(C=this.device)==null||C.destroy(),this.buffers.clear(),this.textures.clear(),this.textureBindGroupCache.clear(),this.pipelines.clear()}};G(O,"SVGA_INSTANCED_MAX",2048);G(O,"SVGA_INSTANCED_STRIDE",52);G(O,"ALPHA_INSTANCED_MAX",1024);G(O,"ALPHA_INSTANCED_STRIDE",80);G(O,"VAP_INSTANCED_MAX",1024);G(O,"VAP_INSTANCED_STRIDE",112);G(O,"INSTANCED_SVGA_CHUNK_BYTES",O.SVGA_INSTANCED_MAX*O.SVGA_INSTANCED_STRIDE);G(O,"INSTANCED_ALPHA_CHUNK_BYTES",O.ALPHA_INSTANCED_MAX*O.ALPHA_INSTANCED_STRIDE);G(O,"INSTANCED_VAP_CHUNK_BYTES",O.VAP_INSTANCED_MAX*O.VAP_INSTANCED_STRIDE);G(O,"INSTANCED_STORAGE_RING_SLOTS",512);let ZB=O;function lB(g,A,t){const e=g.createShader(A);if(!e)throw new Error("Failed to create shader");if(g.shaderSource(e,t),g.compileShader(e),!g.getShaderParameter(e,g.COMPILE_STATUS)){const i=g.getShaderInfoLog(e);throw g.deleteShader(e),new Error(`Shader compile failed: ${i}`)}return e}function yA(g,A,t){const e=lB(g,g.VERTEX_SHADER,A),i=lB(g,g.FRAGMENT_SHADER,t),I=g.createProgram();if(!I)throw g.deleteShader(e),g.deleteShader(i),new Error("Failed to create program");if(g.attachShader(I,e),g.attachShader(I,i),g.linkProgram(I),!g.getProgramParameter(I,g.LINK_STATUS)){const s=g.getProgramInfoLog(I);throw g.deleteProgram(I),g.deleteShader(e),g.deleteShader(i),new Error(`Program link failed: ${s}`)}return g.deleteShader(e),g.deleteShader(i),I}function dB(g,A=g.LINEAR,t=g.CLAMP_TO_EDGE){const e=g.createTexture();if(!e)throw new Error("Failed to create texture");return g.bindTexture(g.TEXTURE_2D,e),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,A),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,A),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,t),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,t),e}var Ka=Object.defineProperty,Ta=(g,A,t)=>A in g?Ka(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,J=(g,A,t)=>Ta(g,typeof A!="symbol"?A+"":A,t);const EA=class bA{constructor(A,t=!0){J(this,"type","webgl2"),J(this,"canvas"),J(this,"antialias"),J(this,"gl"),J(this,"nextId",1),J(this,"buffers",new Map),J(this,"textures",new Map),J(this,"programs",new Map),J(this,"cachedDrawProgram",null),J(this,"cachedTex0Id",null),J(this,"cachedProjectionRef",null),J(this,"cachedProjectionShader",null),J(this,"videoUploadCanvas",null),J(this,"videoUploadCtx",null),J(this,"instancedSvgaInstanceGLBuffer",null),J(this,"instancedAlphaInstanceGLBuffer",null),J(this,"instancedVapInstanceGLBuffer",null),this.canvas=A,this.antialias=t}async init(){const A=this.canvas.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL2 not available");this.gl=A,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,t=yA(A,Y.svgaBatch.vert,Y.svgaBatch.frag);this.programs.set("svga-batch",{program:t,uniforms:this.getUniforms(t,["u_projection","u_atlas"]),vao:null});const e=yA(A,Y.svgaInstanced.vert,Y.svgaInstanced.frag);this.programs.set("svga-instanced",{program:e,uniforms:this.getUniforms(e,["u_projection","u_atlas"]),vao:null});const i=yA(A,Y.vap.vert,Y.vap.frag);this.programs.set("vap",{program:i,uniforms:this.getUniforms(i,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const I=yA(A,Y.alphaVideo.vert,Y.alphaVideo.frag);this.programs.set("alpha-video",{program:I,uniforms:this.getUniforms(I,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const s=yA(A,Y.rgbaTextured.vert,Y.rgbaTextured.frag);this.programs.set("rgba-textured",{program:s,uniforms:this.getUniforms(s,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const n=yA(A,Y.alphaVideoInstanced.vert,Y.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",{program:n,uniforms:this.getUniforms(n,["u_projection","u_video"]),vao:null});const B=yA(A,Y.vapInstanced.vert,Y.vapInstanced.frag);this.programs.set("vap-instanced",{program:B,uniforms:this.getUniforms(B,["u_projection","u_video"]),vao:null});const C=yA(A,Y.clipMask.vert,Y.clipMask.frag);this.programs.set("clip-mask",{program:C,uniforms:this.getUniforms(C,["u_projection"]),vao:null})}getUniforms(A,t){const e=new Map;for(const i of t){const I=this.gl.getUniformLocation(A,i);I&&e.set(i,I)}return e}beginFrame(){const A=this.gl;A.viewport(0,0,this.canvas.width,this.canvas.height),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.disable(A.STENCIL_TEST),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null}endFrame(){this.gl.flush()}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}createBuffer(A,t){const e=this.gl,i=e.createBuffer();if(!i)throw new Error("Failed to create buffer");const I=t==="index"?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER;e.bindBuffer(I,i),e.bufferData(I,A,e.DYNAMIC_DRAW);const s=this.nextId++;return this.buffers.set(s,{buffer:i,usage:t,byteLength:this.getBufferSourceByteLength(A)}),{id:s,usage:t}}updateBuffer(A,t,e=0){const i=this.buffers.get(A.id);if(!i)return;const I=this.gl,s=i.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(s,i.buffer);const n=this.getBufferSourceByteLength(t);e===0&&n<=i.byteLength?I.bufferSubData(s,0,t):(I.bufferData(s,t,I.DYNAMIC_DRAW),i.byteLength=n)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(this.gl.deleteBuffer(t.buffer),this.buffers.delete(A.id))}uploadVideoFrameToTexture(A,t){const e=this.gl,i=t.videoWidth,I=t.videoHeight;if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||i<=0||I<=0)return!1;this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const s=this.videoUploadCanvas,n=this.videoUploadCtx;return n?((s.width!==i||s.height!==I)&&(s.width=i,s.height=I),n.drawImage(t,0,0,i,I),e.bindTexture(e.TEXTURE_2D,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),!0):!1}createTexture(A,t){var e,i;const I=this.gl,s=t.filter==="nearest"?I.NEAREST:I.LINEAR,n=dB(I,s);let B=(e=t.width)!=null?e:1,C=(i=t.height)!=null?i:1;if(A instanceof ArrayBuffer)I.texImage2D(I.TEXTURE_2D,0,I.RGBA,B,C,0,I.RGBA,I.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame){const Q=A;I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,Q),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),B=Q.displayWidth||Q.codedWidth||B,C=Q.displayHeight||Q.codedHeight||C}else A instanceof HTMLVideoElement?(I.bindTexture(I.TEXTURE_2D,n),this.uploadVideoFrameToTexture(n,A),B=A.videoWidth||B,C=A.videoHeight||C):(I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(B=A.width,C=A.height));const a=this.nextId++;return this.textures.set(a,{texture:n,width:B,height:C}),{id:a,width:B,height:C}}createEmptyTexture(A,t,e={}){const i=this.gl,I=e.filter==="nearest"?i.NEAREST:i.LINEAR,s=dB(i,I),n=Math.max(1,Math.floor(A)),B=Math.max(1,Math.floor(t));i.bindTexture(i.TEXTURE_2D,s),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,n,B,0,i.RGBA,i.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:n,height:B}),{id:C,width:n,height:B}}updateTexture(A,t){const e=this.textures.get(A.id);if(!e)return;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const I=this.gl;I.bindTexture(I.TEXTURE_2D,e.texture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,t),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){this.uploadVideoFrameToTexture(e.texture,t);return}const i=this.gl;i.bindTexture(i.TEXTURE_2D,e.texture),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,t,e,i,I,s){const n=this.textures.get(A.id);if(!n)return;const B=this.gl;B.bindTexture(B.TEXTURE_2D,n.texture);let C,a;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame)C=t.displayWidth||t.codedWidth,a=t.displayHeight||t.codedHeight;else if(t instanceof HTMLVideoElement){if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;C=t.videoWidth,a=t.videoHeight}else{const r=t;C=r.width,a=r.height}if(!C||!a)return;const Q=I!=null?I:C,o=s!=null?s:a;if(Q!==C||o!==a){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const r=this.videoUploadCanvas,E=this.videoUploadCtx;if(!E)return;r.width=Q,r.height=o,E.drawImage(t,0,0,Q,o),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,r),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}deleteTexture(A){const t=this.textures.get(A.id);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var t;if(A.shader==="svga-instanced"){this.drawInstancedSvgaGL(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlphaGL(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVapGL(A);return}this.resetInstancedAuxVertexState();const e=this.gl,i=(t=A.stencil)!=null?t:"none",I=A.shader==="clip-mask"||i==="clear"?"clip-mask":A.shader,s=this.programs.get(I);if(!s)return;i==="clear"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,0,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):i==="write"||A.shader==="clip-mask"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):i==="test"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.stencilMask(0),e.colorMask(!0,!0,!0,!0)):(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==I&&(e.useProgram(s.program),this.cachedDrawProgram=I);for(let C=0;C<A.textures.length;C++){const a=A.textures[C].id;if(C===0&&this.cachedTex0Id===a)continue;const Q=this.textures.get(a);Q&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,Q.texture),C===0&&(this.cachedTex0Id=a))}for(const[C,a]of Object.entries(A.uniforms)){const Q=s.uniforms.get(C);if(Q)if(a instanceof Float32Array)if(a.length===16){if(C==="u_projection"&&this.cachedProjectionShader===I&&this.cachedProjectionRef===a)continue;C==="u_projection"&&(this.cachedProjectionShader=I,this.cachedProjectionRef=a),e.uniformMatrix4fv(Q,!1,a)}else a.length===4?e.uniform4fv(Q,a):a.length===2&&e.uniform2fv(Q,a);else e.uniform1i(Q,a)}const n=this.buffers.get(A.vertexBuffer.id),B=this.buffers.get(A.indexBuffer.id);!n||!B||(e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,B.buffer),this.setupAttributes(I),e.drawElements(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0),(i!=="none"||A.shader==="clip-mask")&&(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,t,e,i){const I=this.gl,s=this.canvas.width,n=this.canvas.height,B=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(n,Math.round(t))),a=Math.max(B,Math.min(s,Math.round(A+e))),Q=Math.max(C,Math.min(n,Math.round(t+i)));I.enable(I.SCISSOR_TEST),I.scissor(B,n-Q,a-B,Q-C)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const t=this.gl;if(A==="svga-batch")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,36,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,4,t.FLOAT,!1,36,12),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,36,28);else if(A==="vap")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,24,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,24,8),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,24,16);else if(A==="clip-mask")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,8,0),t.disableVertexAttribArray(1),t.disableVertexAttribArray(2);else{t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,16,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,16,8);for(let i=2;i<=8;i++)t.vertexAttribDivisor(i,0),t.disableVertexAttribArray(i)}}resetInstancedAuxVertexState(){const A=this.gl;for(let t=1;t<=8;t++)A.vertexAttribDivisor(t,0),A.disableVertexAttribArray(t)}ensureInstancedSvgaInstanceBuffer(){const A=this.gl;if(!this.instancedSvgaInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,bA.INST_SVGA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedSvgaInstanceGLBuffer=t}return this.instancedSvgaInstanceGLBuffer}drawInstancedSvgaGL(A){var t;const e=this.gl,i=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(i<1||!I||I.length<i*13)return;if(i>bA.INST_SVGA_GL_MAX){console.warn("[WebGL2] svga-instanced: instanceCount exceeds max",i);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="svga-instanced",n=this.programs.get(s);if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let o=0;o<A.textures.length;o++){const r=A.textures[o].id;if(o===0&&this.cachedTex0Id===r)continue;const E=this.textures.get(r);E&&(e.activeTexture(e.TEXTURE0+o),e.bindTexture(e.TEXTURE_2D,E.texture),o===0&&(this.cachedTex0Id=r))}for(const[o,r]of Object.entries(A.uniforms)){const E=n.uniforms.get(o);if(E)if(r instanceof Float32Array){if(r.length===16){if(o==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===r)continue;o==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=r),e.uniformMatrix4fv(E,!1,r)}}else e.uniform1i(E,r)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const a=this.ensureInstancedSvgaInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,i*13);const Q=52;e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,Q,0),e.vertexAttribDivisor(1,1),e.enableVertexAttribArray(2),e.vertexAttribPointer(2,4,e.FLOAT,!1,Q,8),e.vertexAttribDivisor(2,1),e.enableVertexAttribArray(3),e.vertexAttribPointer(3,3,e.FLOAT,!1,Q,24),e.vertexAttribDivisor(3,1),e.enableVertexAttribArray(4),e.vertexAttribPointer(4,4,e.FLOAT,!1,Q,36),e.vertexAttribDivisor(4,1),e.bindBuffer(e.ARRAY_BUFFER,B.buffer),e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,8,0),e.vertexAttribDivisor(0,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,i)}ensureInstancedAlphaInstanceBuffer(){const A=this.gl;if(!this.instancedAlphaInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,bA.INST_ALPHA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedAlphaInstanceGLBuffer=t}return this.instancedAlphaInstanceGLBuffer}drawInstancedAlphaGL(A){var t;const e=this.gl,i=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(i<1||!I||I.length<i*20)return;for(let r=7;r<=8;r++)e.vertexAttribDivisor(r,0),e.disableVertexAttribArray(r);if(i>bA.INST_ALPHA_GL_MAX){console.warn("[WebGL2] alpha-video-instanced: instanceCount exceeds max",i);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="alpha-video-instanced",n=this.programs.get("alpha-video-instanced");if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let r=0;r<A.textures.length;r++){const E=A.textures[r].id;if(r===0&&this.cachedTex0Id===E)continue;const h=this.textures.get(E);h&&(e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_2D,h.texture),r===0&&(this.cachedTex0Id=E))}for(const[r,E]of Object.entries(A.uniforms)){const h=n.uniforms.get(r);if(h)if(E instanceof Float32Array){if(E.length===16){if(r==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===E)continue;r==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=E),e.uniformMatrix4fv(h,!1,E)}}else e.uniform1i(h,E)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const a=this.ensureInstancedAlphaInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,i*20);const Q=80;for(let r=0;r<5;r++){const E=2+r;e.enableVertexAttribArray(E),e.vertexAttribPointer(E,4,e.FLOAT,!1,Q,r*16),e.vertexAttribDivisor(E,1)}e.bindBuffer(e.ARRAY_BUFFER,B.buffer);const o=16;e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,o,0),e.vertexAttribDivisor(0,0),e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,o,8),e.vertexAttribDivisor(1,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,i)}ensureInstancedVapInstanceBuffer(){const A=this.gl;if(!this.instancedVapInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,bA.INST_VAP_GL_BYTES,A.DYNAMIC_DRAW),this.instancedVapInstanceGLBuffer=t}return this.instancedVapInstanceGLBuffer}drawInstancedVapGL(A){var t;const e=this.gl,i=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(i<1||!I||I.length<i*28)return;if(i>bA.INST_VAP_GL_MAX){console.warn("[WebGL2] vap-instanced: instanceCount exceeds max",i);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="vap-instanced",n=this.programs.get("vap-instanced");if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let r=0;r<A.textures.length;r++){const E=A.textures[r].id;if(r===0&&this.cachedTex0Id===E)continue;const h=this.textures.get(E);h&&(e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_2D,h.texture),r===0&&(this.cachedTex0Id=E))}for(const[r,E]of Object.entries(A.uniforms)){const h=n.uniforms.get(r);if(h)if(E instanceof Float32Array){if(E.length===16){if(r==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===E)continue;r==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=E),e.uniformMatrix4fv(h,!1,E)}}else e.uniform1i(h,E)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const a=this.ensureInstancedVapInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,i*28);const Q=112;for(let r=0;r<7;r++){const E=2+r;e.enableVertexAttribArray(E),e.vertexAttribPointer(E,4,e.FLOAT,!1,Q,r*16),e.vertexAttribDivisor(E,1)}e.bindBuffer(e.ARRAY_BUFFER,B.buffer);const o=16;e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,o,0),e.vertexAttribDivisor(0,0),e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,o,8),e.vertexAttribDivisor(1,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,i)}destroy(){const A=this.gl;this.instancedSvgaInstanceGLBuffer&&(A.deleteBuffer(this.instancedSvgaInstanceGLBuffer),this.instancedSvgaInstanceGLBuffer=null),this.instancedAlphaInstanceGLBuffer&&(A.deleteBuffer(this.instancedAlphaInstanceGLBuffer),this.instancedAlphaInstanceGLBuffer=null),this.instancedVapInstanceGLBuffer&&(A.deleteBuffer(this.instancedVapInstanceGLBuffer),this.instancedVapInstanceGLBuffer=null);for(const[,e]of this.buffers)A.deleteBuffer(e.buffer);for(const[,e]of this.textures)A.deleteTexture(e.texture);for(const[,e]of this.programs)A.deleteProgram(e.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}};J(EA,"INST_SVGA_GL_MAX",2048);J(EA,"INST_SVGA_GL_BYTES",EA.INST_SVGA_GL_MAX*52);J(EA,"INST_ALPHA_GL_MAX",1024);J(EA,"INST_ALPHA_GL_BYTES",EA.INST_ALPHA_GL_MAX*80);J(EA,"INST_VAP_GL_MAX",1024);J(EA,"INST_VAP_GL_BYTES",EA.INST_VAP_GL_MAX*112);let VB=EA;var qa=Object.defineProperty,Za=(g,A,t)=>A in g?qa(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,AA=(g,A,t)=>Za(g,typeof A!="symbol"?A+"":A,t);function Va(g,A){let t=g.replace(/^#version\s+300\s+es\s*/m,"");return A==="vertex"?(t=t.replace(/layout\s*\(location\s*=\s*\d+\)\s*in\s+/g,"attribute "),t=t.replace(/\bout\s+/g,"varying ")):(t=t.replace(/\bin\s+/g,"varying "),t=t.replace(/out\s+vec4\s+fragColor\s*;\s*/g,""),t=t.replace(/\bfragColor\b/g,"gl_FragColor"),t=t.replace(/\btexture\s*\(/g,"texture2D(")),t}function fB(g,A,t,e){const i=g.createShader(A);if(!i)throw new Error("Failed to create shader");if(g.shaderSource(i,Va(t,e)),g.compileShader(i),!g.getShaderParameter(i,g.COMPILE_STATUS)){const I=g.getShaderInfoLog(i);throw g.deleteShader(i),new Error(`Shader compile failed: ${I}`)}return i}function Cs(g,A,t,e){const i=fB(g,g.VERTEX_SHADER,A,"vertex"),I=fB(g,g.FRAGMENT_SHADER,t,"fragment"),s=g.createProgram();if(!s)throw g.deleteShader(i),g.deleteShader(I),new Error("Failed to create program");g.attachShader(s,i),g.attachShader(s,I);for(const[n,B]of Object.entries(e))g.bindAttribLocation(s,B,n);if(g.linkProgram(s),!g.getProgramParameter(s,g.LINK_STATUS)){const n=g.getProgramInfoLog(s);throw g.deleteProgram(s),g.deleteShader(i),g.deleteShader(I),new Error(`Program link failed: ${n}`)}return g.deleteShader(i),g.deleteShader(I),s}function uB(g,A=g.LINEAR,t=g.CLAMP_TO_EDGE){const e=g.createTexture();if(!e)throw new Error("Failed to create texture");return g.bindTexture(g.TEXTURE_2D,e),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,A),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,A),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,t),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,t),e}class Kn{constructor(A,t=!0){AA(this,"type","webgl1"),AA(this,"canvas"),AA(this,"antialias"),AA(this,"gl"),AA(this,"nextId",1),AA(this,"buffers",new Map),AA(this,"textures",new Map),AA(this,"programs",new Map),AA(this,"cachedDrawProgram",null),AA(this,"cachedTex0Id",null),AA(this,"cachedProjectionRef",null),AA(this,"cachedProjectionShader",null),AA(this,"videoUploadCanvas",null),AA(this,"videoUploadCtx",null),AA(this,"supportsUintIndices",!1),this.canvas=A,this.antialias=t}async init(){const A=this.canvas.getContext("webgl",{alpha:!0,premultipliedAlpha:!1,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL1 not available");this.gl=A,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;this.programs.set("svga-batch",{program:Cs(A,Y.svgaBatch.vert,Y.svgaBatch.frag,{a_position:0,a_color:1,a_uv:2}),uniforms:new Map}),this.programs.get("svga-batch").uniforms=this.getUniforms(this.programs.get("svga-batch").program,["u_projection","u_atlas"]),this.programs.set("vap",{program:Cs(A,Y.vap.vert,Y.vap.frag,{a_position:0,a_rgbUV:1,a_alphaUV:2}),uniforms:new Map}),this.programs.get("vap").uniforms=this.getUniforms(this.programs.get("vap").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("alpha-video",{program:Cs(A,Y.alphaVideo.vert,Y.alphaVideo.frag,{a_position:0,a_uv:1}),uniforms:new Map}),this.programs.get("alpha-video").uniforms=this.getUniforms(this.programs.get("alpha-video").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("rgba-textured",{program:Cs(A,Y.rgbaTextured.vert,Y.rgbaTextured.frag,{a_position:0,a_uv:1}),uniforms:new Map}),this.programs.get("rgba-textured").uniforms=this.getUniforms(this.programs.get("rgba-textured").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("clip-mask",{program:Cs(A,Y.clipMask.vert,Y.clipMask.frag,{a_position:0}),uniforms:new Map}),this.programs.get("clip-mask").uniforms=this.getUniforms(this.programs.get("clip-mask").program,["u_projection"])}getUniforms(A,t){const e=new Map;for(const i of t){const I=this.gl.getUniformLocation(A,i);I&&e.set(i,I)}return e}beginFrame(){const A=this.gl;A.viewport(0,0,this.canvas.width,this.canvas.height),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.disable(A.STENCIL_TEST),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null}endFrame(){this.gl.flush()}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 t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return new Uint16Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength))}return new Uint16Array(A)}createBuffer(A,t){const e=this.gl,i=e.createBuffer();if(!i)throw new Error("Failed to create buffer");const I=t==="index"?this.normalizeIndexSource(A):A,s=t==="index"?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER;e.bindBuffer(s,i),e.bufferData(s,I,e.DYNAMIC_DRAW);const n=this.nextId++;return this.buffers.set(n,{buffer:i,usage:t,byteLength:this.getBufferSourceByteLength(I)}),{id:n,usage:t}}updateBuffer(A,t,e=0){const i=this.buffers.get(A.id);if(!i)return;const I=this.gl,s=i.usage==="index"?this.normalizeIndexSource(t):t,n=i.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(n,i.buffer);const B=this.getBufferSourceByteLength(s);e===0&&B<=i.byteLength?I.bufferSubData(n,0,s):(I.bufferData(n,s,I.DYNAMIC_DRAW),i.byteLength=B)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(this.gl.deleteBuffer(t.buffer),this.buffers.delete(A.id))}ensureVideoUploadCanvas(A,t){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!==t)&&(this.videoUploadCanvas.width=A,this.videoUploadCanvas.height=t),this.videoUploadCtx)}uploadVideoFrameToTexture(A,t){const e=this.gl,i=t.videoWidth,I=t.videoHeight;if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||i<=0||I<=0)return!1;const s=this.ensureVideoUploadCanvas(i,I);return!s||!this.videoUploadCanvas?!1:(s.drawImage(t,0,0,i,I),e.bindTexture(e.TEXTURE_2D,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.videoUploadCanvas),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),!0)}createTexture(A,t){var e,i;const I=this.gl,s=t.filter==="nearest"?I.NEAREST:I.LINEAR,n=uB(I,s);let B=(e=t.width)!=null?e:1,C=(i=t.height)!=null?i:1;A instanceof ArrayBuffer?I.texImage2D(I.TEXTURE_2D,0,I.RGBA,B,C,0,I.RGBA,I.UNSIGNED_BYTE,new Uint8Array(A)):typeof VideoFrame!="undefined"&&A instanceof VideoFrame?(I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),B=A.displayWidth||A.codedWidth||B,C=A.displayHeight||A.codedHeight||C):A instanceof HTMLVideoElement?(I.bindTexture(I.TEXTURE_2D,n),this.uploadVideoFrameToTexture(n,A),B=A.videoWidth||B,C=A.videoHeight||C):(I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(B=A.width,C=A.height));const a=this.nextId++;return this.textures.set(a,{texture:n,width:B,height:C}),{id:a,width:B,height:C}}createEmptyTexture(A,t,e={}){const i=this.gl,I=e.filter==="nearest"?i.NEAREST:i.LINEAR,s=uB(i,I),n=Math.max(1,Math.floor(A)),B=Math.max(1,Math.floor(t));i.bindTexture(i.TEXTURE_2D,s),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,n,B,0,i.RGBA,i.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:n,height:B}),{id:C,width:n,height:B}}updateTexture(A,t){const e=this.textures.get(A.id);if(!e)return;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const I=this.gl;I.bindTexture(I.TEXTURE_2D,e.texture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,t),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){this.uploadVideoFrameToTexture(e.texture,t);return}const i=this.gl;i.bindTexture(i.TEXTURE_2D,e.texture),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,t,e,i,I,s){const n=this.textures.get(A.id);if(!n)return;const B=this.gl;B.bindTexture(B.TEXTURE_2D,n.texture);let C,a;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame)C=t.displayWidth||t.codedWidth,a=t.displayHeight||t.codedHeight;else if(t instanceof HTMLVideoElement){if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;C=t.videoWidth,a=t.videoHeight}else{const r=t;C=r.width,a=r.height}if(!C||!a)return;const Q=I!=null?I:C,o=s!=null?s:a;if(Q!==C||o!==a){const r=this.ensureVideoUploadCanvas(Q,o);if(!r||!this.videoUploadCanvas)return;r.drawImage(t,0,0,Q,o),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t)}deleteTexture(A){const t=this.textures.get(A.id);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var t;const e=this.gl,i=(t=A.stencil)!=null?t:"none",I=A.shader==="clip-mask"||i==="clear"?"clip-mask":A.shader;if(I==="svga-instanced"||I==="alpha-video-instanced"||I==="vap-instanced")throw new Error(`WebGL1 backend does not support instanced shader: ${I}`);const s=this.programs.get(I);if(!s)return;i==="clear"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,0,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):i==="write"||A.shader==="clip-mask"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):i==="test"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.stencilMask(0),e.colorMask(!0,!0,!0,!0)):(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==I&&(e.useProgram(s.program),this.cachedDrawProgram=I);for(let C=0;C<A.textures.length;C++){const a=A.textures[C].id;if(C===0&&this.cachedTex0Id===a)continue;const Q=this.textures.get(a);Q&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,Q.texture),C===0&&(this.cachedTex0Id=a))}for(const[C,a]of Object.entries(A.uniforms)){const Q=s.uniforms.get(C);if(Q)if(a instanceof Float32Array)if(a.length===16){if(C==="u_projection"&&this.cachedProjectionShader===I&&this.cachedProjectionRef===a)continue;C==="u_projection"&&(this.cachedProjectionShader=I,this.cachedProjectionRef=a),e.uniformMatrix4fv(Q,!1,a)}else a.length===4?e.uniform4fv(Q,a):a.length===2&&e.uniform2fv(Q,a);else e.uniform1i(Q,a)}const n=this.buffers.get(A.vertexBuffer.id),B=this.buffers.get(A.indexBuffer.id);!n||!B||(e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,B.buffer),this.setupAttributes(I),e.drawElements(e.TRIANGLES,A.indexCount,this.supportsUintIndices?e.UNSIGNED_INT:e.UNSIGNED_SHORT,0),(i!=="none"||A.shader==="clip-mask")&&(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,t,e,i){const I=this.gl,s=this.canvas.width,n=this.canvas.height,B=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(n,Math.round(t))),a=Math.max(B,Math.min(s,Math.round(A+e))),Q=Math.max(C,Math.min(n,Math.round(t+i)));I.enable(I.SCISSOR_TEST),I.scissor(B,n-Q,a-B,Q-C)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const t=this.gl;t.disableVertexAttribArray(0),t.disableVertexAttribArray(1),t.disableVertexAttribArray(2),A==="svga-batch"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,36,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,4,t.FLOAT,!1,36,12),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,36,28)):A==="vap"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,24,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,24,8),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,24,16)):A==="clip-mask"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,8,0)):(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,16,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,16,8))}destroy(){const A=this.gl;for(const[,e]of this.buffers)A.deleteBuffer(e.buffer);for(const[,e]of this.textures)A.deleteTexture(e.texture);for(const[,e]of this.programs)A.deleteProgram(e.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}}function WB(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function Wa(){return typeof navigator!="undefined"&&"gpu"in navigator&&WB()}function za(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(g){return!1}}function ja(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(g){return!1}}function Xa(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"}function Oa(){return typeof OffscreenCanvas!="undefined"}async function zB(g,A=!0,t=!0,e=!1){const i=t!=null?t:!1,I=t!=null?t:!0;if(e){const n=new Kn(g,I);return await n.init(),n}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&WB())try{const n=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(n){const B=new ZB(g,n,i);return await B.init(),B}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(n){console.warn(`[GiftStage] WebGPU init failed: ${n instanceof Error?n.message:String(n)}, 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 n=new VB(g,I);return await n.init(),n}catch(n){console.warn(`[GiftStage] WebGL2 init failed: ${n instanceof Error?n.message:String(n)}, fallback to WebGL1.`)}const s=new Kn(g,I);return await s.init(),s}function Pa(g,A){const t=g.clientWidth||g.getBoundingClientRect().width||0,e=g.clientHeight||g.getBoundingClientRect().height||0,i=A>0&&Number.isFinite(A)?A:1,I=Math.max(1,Math.round(t*i)),s=Math.max(1,Math.round(e*i));(g.width!==I||g.height!==s)&&(g.width=I,g.height=s)}function fs(g){const A=g.clientWidth||g.getBoundingClientRect().width||1,t=g.clientHeight||g.getBoundingClientRect().height||1;return{sx:g.width/Math.max(1,A),sy:g.height/Math.max(1,t)}}const SA=13,RA=9,zA=4,us=6;function Ts(g,A,t){const e=Math.floor(g.length/SA),i=Math.floor(A.length/(zA*RA)),I=Math.floor(t.length/us),s=Math.min(e,i,I);for(let n=0;n<s;n++){const B=n*SA,C=g[B],a=g[B+1],Q=g[B+2],o=g[B+3],r=g[B+4],E=g[B+5],h=g[B+6],c=g[B+7],f=g[B+8],d=g[B+9],u=g[B+10],p=g[B+11],D=g[B+12],y=h,S=c,N=Q*C+h,x=o*C+c,F=Q*C+r*a+h,M=o*C+E*a+c,W=r*a+h,v=E*a+c,_=n*zA*RA;A[_]=y,A[_+1]=S,A[_+2]=0,A[_+3]=1,A[_+4]=1,A[_+5]=1,A[_+6]=f,A[_+7]=d,A[_+8]=u;const K=_+RA;A[K]=N,A[K+1]=x,A[K+2]=0,A[K+3]=1,A[K+4]=1,A[K+5]=1,A[K+6]=f,A[K+7]=p,A[K+8]=u;const b=_+2*RA;A[b]=F,A[b+1]=M,A[b+2]=0,A[b+3]=1,A[b+4]=1,A[b+5]=1,A[b+6]=f,A[b+7]=p,A[b+8]=D;const z=_+3*RA;A[z]=W,A[z+1]=v,A[z+2]=0,A[z+3]=1,A[z+4]=1,A[z+5]=1,A[z+6]=f,A[z+7]=d,A[z+8]=D;const tA=n*us,X=n*zA;t[tA]=X,t[tA+1]=X+1,t[tA+2]=X+2,t[tA+3]=X,t[tA+4]=X+2,t[tA+5]=X+3}return s}function $a(g,A,t){const e=DB(g,k.__wbindgen_malloc),i=QA;var I=DB(A,k.__wbindgen_malloc),s=QA,n=gQ(t,k.__wbindgen_malloc),B=QA;return k.build_batch_vertices(e,i,I,s,A,n,B,t)>>>0}function AQ(g){const A=PB(g,k.__wbindgen_malloc),t=QA,e=k.decode_svga(A,t);if(e[2])throw Tn(e[1]);return Tn(e[0])}function tQ(g){const A=PB(g,k.__wbindgen_malloc),t=QA,e=k.inflate(A,t);if(e[3])throw Tn(e[2]);var i=OB(e[0],e[1]).slice();return k.__wbindgen_free(e[0],e[1]*1,1),i}function jB(){k.init()}function XB(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,t){return Error(un(A,t))},__wbg_String_8564e559799eccda:function(A,t){const e=String(t),i=IQ(e,k.__wbindgen_malloc,k.__wbindgen_realloc),I=QA;wB().setInt32(A+4,I,!0),wB().setInt32(A+0,i,!0)},__wbg___wbindgen_copy_to_typed_array_a4db337751e0b328:function(A,t,e){new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(OB(A,t))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,t){throw new Error(un(A,t))},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_set_08463b1df38a7e29:function(A,t,e){return A.set(t,e)},__wbg_set_6be42768c690e380:function(A,t,e){A[t]=e},__wbg_set_6c60b2e8ad0e9383:function(A,t,e){A[t>>>0]=e},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,t){return un(A,t)},__wbindgen_init_externref_table:function(){const A=k.__wbindgen_externrefs,t=A.grow(4);A.set(0,void 0),A.set(t+0,void 0),A.set(t+1,null),A.set(t+2,!0),A.set(t+3,!1)}}}}function OB(g,A){return g=g>>>0,jA().subarray(g/1,g/1+A)}let kA=null;function wB(){return(kA===null||kA.buffer.detached===!0||kA.buffer.detached===void 0&&kA.buffer!==k.memory.buffer)&&(kA=new DataView(k.memory.buffer)),kA}let os=null;function eQ(){return(os===null||os.byteLength===0)&&(os=new Float32Array(k.memory.buffer)),os}function un(g,A){return g=g>>>0,nQ(g,A)}let Es=null;function iQ(){return(Es===null||Es.byteLength===0)&&(Es=new Uint32Array(k.memory.buffer)),Es}let hs=null;function jA(){return(hs===null||hs.byteLength===0)&&(hs=new Uint8Array(k.memory.buffer)),hs}function gQ(g,A){const t=A(g.length*4,4)>>>0;return iQ().set(g,t/4),QA=g.length,t}function PB(g,A){const t=A(g.length*1,1)>>>0;return jA().set(g,t/1),QA=g.length,t}function DB(g,A){const t=A(g.length*4,4)>>>0;return eQ().set(g,t/4),QA=g.length,t}function IQ(g,A,t){if(t===void 0){const n=ws.encode(g),B=A(n.length,1)>>>0;return jA().subarray(B,B+n.length).set(n),QA=n.length,B}let e=g.length,i=A(e,1)>>>0;const I=jA();let s=0;for(;s<e;s++){const n=g.charCodeAt(s);if(n>127)break;I[i+s]=n}if(s!==e){s!==0&&(g=g.slice(s)),i=t(i,e,e=s+g.length*3,1)>>>0;const n=jA().subarray(i+s,i+e),B=ws.encodeInto(g,n);s+=B.written,i=t(i,e,s,1)>>>0}return QA=s,i}function Tn(g){const A=k.__wbindgen_externrefs.get(g);return k.__externref_table_dealloc(g),A}let qs=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});qs.decode();const sQ=2146435072;let wn=0;function nQ(g,A){return wn+=A,wn>=sQ&&(qs=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),qs.decode(),wn=A),qs.decode(jA().subarray(g,g+A))}const ws=new TextEncoder;"encodeInto"in ws||(ws.encodeInto=function(g,A){const t=ws.encode(g);return A.set(t),{read:g.length,written:t.length}});let QA=0,k;function $B(g,A){return k=g.exports,kA=null,os=null,Es=null,hs=null,k.__wbindgen_start(),k}async function BQ(g,A){if(typeof Response=="function"&&g instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(g,A)}catch(i){if(g.ok&&t(g.type)&&g.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",i);else throw i}const e=await g.arrayBuffer();return await WebAssembly.instantiate(e,A)}else{const e=await WebAssembly.instantiate(g,A);return e instanceof WebAssembly.Instance?{instance:e,module:g}:e}function t(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}}function CQ(g){if(k!==void 0)return k;g!==void 0&&(Object.getPrototypeOf(g)===Object.prototype?{module:g}=g:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const A=XB();g instanceof WebAssembly.Module||(g=new WebAssembly.Module(g));const t=new WebAssembly.Instance(g,A);return $B(t)}async function AC(g){if(k!==void 0)return k;g!==void 0&&(Object.getPrototypeOf(g)===Object.prototype?{module_or_path:g}=g:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),g===void 0&&(g=new URL("data:application/wasm;base64,AGFzbQEAAAABlgIoYAJ/fwF/YAN/f38AYAJ/fwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAR/f39/AX9gBn9/f39/fwBgAABgAAFvYAV/f39/fwF/YAJ/fwFvYAZ/f39/f38Bf2AAAX9gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAAR/f39/YAADf39/YANvb28Bb2ADb39vAGADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2AIf39/f39/f38AYAJ/fwF+YAZ/f39+f38AYAZ/f399f38AYAZ/f398f38AYAJ/fwR/f39/YAJ/fwN/f39gCH9/f39vf39vAX9gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwK2Bg4XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzA4NDYzYjFkZjM4YTdlMjkAFRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAWFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABcXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAGBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfOTljYWJhZTUwMWMwYThhMAALFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld19mM2M5ZGY0ZjM4ZjNmNzk4AAsXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAA0XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19zdHJpbmdfYjI5YjVjNWE4MDY1YmExYQAZFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzNV9fd2JnX19fd2JpbmRnZW5f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AEG45sAANgIAQbjmwABBsObAADYCAEHM5sAAQcDmwAA2AgBBwObAAEG45sAANgIAQdTmwABByObAADYCAEHI5sAAQcDmwAA2AgBB3ObAAEHQ5sAANgIAQdDmwABByObAADYCAEHY5sAAQdDmwAA2AgBB5ObAAEHY5sAANgIAQeDmwABB2ObAADYCAEHs5sAAQeDmwAA2AgBB6ObAAEHg5sAANgIAQfTmwABB6ObAADYCAEHw5sAAQejmwAA2AgBB/ObAAEHw5sAANgIAQfjmwABB8ObAADYCAEGE58AAQfjmwAA2AgBBgOfAAEH45sAANgIAQYznwABBgOfAADYCAEGI58AAQYDnwAA2AgBBlOfAAEGI58AANgIAQZDnwABBiOfAADYCAEGc58AAQZDnwAA2AgBBpOfAAEGY58AANgIAQZjnwABBkOfAADYCAEGs58AAQaDnwAA2AgBBoOfAAEGY58AANgIAQbTnwABBqOfAADYCAEGo58AAQaDnwAA2AgBBvOfAAEGw58AANgIAQbDnwABBqOfAADYCAEHE58AAQbjnwAA2AgBBuOfAAEGw58AANgIAQcznwABBwOfAADYCAEHA58AAQbjnwAA2AgBB1OfAAEHI58AANgIAQcjnwABBwOfAADYCAEHc58AAQdDnwAA2AgBB0OfAAEHI58AANgIAQeTnwABB2OfAADYCAEHY58AAQdDnwAA2AgBB7OfAAEHg58AANgIAQeDnwABB2OfAADYCAEH058AAQejnwAA2AgBB6OfAAEHg58AANgIAQfznwABB8OfAADYCAEHw58AAQejnwAA2AgBBhOjAAEH458AANgIAQfjnwABB8OfAADYCAEGM6MAAQYDowAA2AgBBgOjAAEH458AANgIAQZTowABBiOjAADYCAEGI6MAAQYDowAA2AgBBrOjAACABQQ9qQXhxIgBBCGsiAjYCAEGQ6MAAQYjowAA2AgBBpOjAACAEQShrIgQgASAAa2pBCGoiADYCACACIABBAXI2AgQgASAEakEoNgIEQbjowABBgICAATYCAAwICyACIANJIAEgAk1yDQAgACgCDCIDQQFxDQAgA0EBdiAHRg0DC0G86MAAQbzowAAoAgAiACABIAAgAUkbNgIAIAEgBGohA0GA5sAAIQACQAJAA0AgAyAAKAIAIgZHBEAgACgCCCIADQEM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AgAiASAAKAIEIgAgCyACIAMQggENACABIAQgBSAAKAIMEQQAIQYLIAYLlAYBBX8gAEEIayIBIABBBGsoAgAiA0F4cSIAaiECAkACQCADQQFxDQAgA0ECcUUNASABKAIAIgMgAGohACABIANrIgFBqOjAACgCAEYEQCACKAIEQQNxQQNHDQFBoOjAACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADECYLAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkGs6MAAKAIARg0CIAJBqOjAACgCAEYNAyACIANBeHEiAhAmIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQajowAAoAgBHDQFBoOjAACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgALIABBgAJJDQIgASAAECdBACEBQcDowABBwOjAACgCAEEBayIANgIAIAANBEGI5sAAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQcDowABB/x8gASABQf8fTRs2AgAPC0Gs6MAAIAE2AgBBpOjAAEGk6MAAKAIAIABqIgA2AgAgASAAQQFyNgIEQajowAAoAgAgAUYEQEGg6MAAQQA2AgBBqOjAAEEANgIACyAAQbjowAAoAgAiA00NA0Gs6MAAKAIAIgJFDQNBACEAQaTowAAoAgAiBEEpSQ0CQYDmwAAhAQNAIAIgASgCACIFTwRAIAIgBSABKAIEakkNBAsgASgCCCEBDAALAAtBqOjAACABNgIAQaDowABBoOjAACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgAPCwJAQZjowAAoAgAiAkEBIABBA3Z0IgNxRQRAQZjowAAgAiADcjYCACAAQfgBcUGQ5sAAaiIAIQIMAQsgAEH4AXEiAEGQ5sAAaiECIABBmObAAGooAgAhAAsgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBiObAACgCACIBBEADQCAAQQFqIQAgASgCCCIBDQALC0HA6MAAQf8fIAAgAEH/H00bNgIAIAMgBE8NAEG46MAAQX82AgALC+8EAQh/IwBBIGsiAyQAIAAoAgQhAgJAAkACQAJAAkAgACgCDCIEQQFxRQRAIAEgAmoiASACSQ0BIAQoAhBBAUYNAiAD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RQRAQbirwABBMhDRAQALIAVBCGogASADIAQgAigCEBEDACAAIAUtAAgiATYCCCAAIAUoAgxBACABGzYCBCAAQQAgBS0ACSABGzYCACAFQRBqJAALWwEBfyMAQSBrIgUkACAFIAE2AgQgBSAANgIAIAUgAzYCDCAFIAI2AgggBSAFQQhqrUKAgICA4AyENwMYIAUgBa1CgICAgKAMhDcDEEGmhcAAIAVBEGogBBB/AAtgAQF/IwBBEGsiBCQAIAFFBEBBuKvAAEEyENEBAAsgBEEIaiABIAMgAigCEBEBACAAIAQtAAgiATYCCCAAIAQoAgxBACABGzYCBCAAQQAgBC0ACSABGzYCACAEQRBqJAALXgECfyMAQSBrIgYkACABRQRAQbirwABBMhDRAQALIAZBFGoiByABIAMgBCAFIAIoAhARBQAgBkEIaiAHEFYgBiAGKAIIIAYoAgwQvQEgACAGKQMANwIAIAZBIGokAAtbAQF/IAEoAgAiBEEBcQRAIAAgASAEIAQgAiADEEEPCyAEIAQoAggiAUEBajYCCCABQQBOBEAgACAENgIMIAAgAzYCCCAAIAI2AgQgAEHMrMAANgIADwsQyAEAC0kBAX8jAEEQayICJAAgASAAKAIAIgBBf3NBH3ZBAUEAIAAgAEEfdSIBcyABayACQQZqIgEQICIAIAFqQQogAGsQFSACQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQERAAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQEQUAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQEREAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQERIAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAG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IAEoAgAgASgCBCAAKAIMKAIAIgAoAgAgACgCBBAeCzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQAARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQQAC0UBAX9BGEEEEM4BIgJFBEBBBEEYENQBAAsgAiABNgIUIAIgADYCECACQoCAgICAgICAgH83AgggAkKAgICAwAA3AgAgAgs7AQF/IwBBEGsiASQAIAFBOjYCDCABQTo2AgQgASAANgIIIAEgAEEEajYCAEG0gcAAIAFByK3AABB/AAs2AQF/A0AgACgAACEDIAAgASgAADYAACABIAM2AAAgAEEEaiEAIAFBBGohASACQQFrIgINAAsL7QEBA38gASgCCCICQYCAgBBxRQRAIAJBgICAIHFFBEAgACABEHYPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQCO1UA6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGM1cAAQQIgAiADakEQakEAIAJrEBUgA0EQaiQADwtBACECIwBBEGsiAyQAIAAoAgAhAANAIAIgA2pBD2ogAEEPcS0A/NRAOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBjNXAAEECIAIgA2pBEGpBACACaxAVIANBEGokAAtVAQF/IwBBEGsiAyQAIAMgAjYCDCADIAE2AgggA0EIaiEBIANBDGohAgJAIAAoAgAiAEEBcQRAIAAgASgCACACKAIAEHQMAQsgABCRAQsgA0EQaiQAC1gBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADQQhqIQEgA0EMaiECAkAgACgCACIAQQFxBEAgAEF+cSABKAIAIAIoAgAQdAwBCyAAEJEBCyADQRBqJAALLgACQCADaUEBRyABQYCAgIB4IANrS3INACAAIAEgAyACELcBIgBFDQAgAA8LAAs5AQF/QQEhAgJAIAAgARArDQAgASgCAEGs5MAAQQIgASgCBCgCDBEEAA0AIABBBGogARArIQILIAIL0hECGH8EfiMAQRBrIhEkACARIAE2AgwgESAANgIIAn8gEUEIaiEAIwBBIGsiDSQAAkACfwJAQQBBqKrAACgCABEHACIPBEAgDygCAA0DIA9BfzYCACANQQhqIQ4gACgCACEQIAAoAgQhEiMAQRBrIhgkACAPQQRqIgooAgQiASAQIBIgEBsiAnEhACACrSIcQhmIQoGChIiQoMCAAX4hHSAKKAIAIQICQAJAA0ACQCAAIAJqKQAAIhsgHYUiGkJ/hSAaQoGChIiQoMCAAX2DQoCBgoSIkKDAgH+DIhpQRQRAA0AgECACIBp6p0EDdiAAaiABcUF0bGoiCEEMaygCAEYEQCAIQQhrKAIAIBJGDQMLIBpCAX0gGoMiGlBFDQALCyAbIBtCAYaDQoCBgoSIkKDAgH+DUEUNAiAAIARBCGoiBGogAXEhAAwBCwsgDiAKNgIEIA4gCDYCAEEAIQoMAQsgCigCCEUEQCAYQQhqIRkjAEFAaiIGJAACfwJAIAooAgwiCEEBaiIBIAhPBEACQCAKKAIEIgcgB0EBaiIAQQN2IgJBB2wgB0EISRsiE0EBdiABSQRAIAZBMGoCfyATQQFqIgAgASAAIAFLGyIAQQ9PBEAgAEH/////AUsNBUF/IABBA3RBB25BAWtndkEBagwBC0EEIABBCHFBCGogAEEESRsLIgBBDCAAEDIgBigCOCEMIAYoAjQiByAGKAIwIgRFDQQaIAYoAjwhACAHQQlqIgEEQCAEQf8BIAH8CwALIAYgADYCLCAGIAw2AiggBiAHNgIkIAYgBDYCICAGQQg2AhwgCARAIARBDGshCyAEQQhqIRMgCigCACIBQQxrIRQgASkDAEJ/hUKAgYKEiJCgwIB/gyEaIAghAiABIQADQCAaUARAA0AgA0EIaiEDIABBCGoiACkDAEKAgYKEiJCgwIB/gyIaQoCBgoSIkKDAgH9RDQALIBpCgIGChIiQoMCAf4UhGgsgBCABIBp6p0EDdiADaiIVQXRsaiIFQQxrKAIAIgkgBUEIaygCACAJGyIWIAdxIgVqKQAAQoCBgoSIkKDAgH+DIhtQBEBBCCEJA0AgBSAJaiEFIAlBCGohCSAEIAUgB3EiBWopAABCgIGChIiQoMCAf4MiG1ANAAsLIBpCAX0gGoMhGiAEIBt6p0EDdiAFaiAHcSIFaiwAAEEATgRAIAQpAwBCgIGChIiQoMCAf4N6p0EDdiEFCyAEIAVqIBZBGXYiCToAACATIAVBCGsgB3FqIAk6AAAgCyAFQXRsaiIFQQhqIBQgFUF0bGoiCUEIaigAADYAACAFIAkpAAA3AAAgAkEBayICDQALCyAGIAg2AiwgBiAMIAhrNgIoQQAhAwNAIAMgCmoiACgCACEBIAAgAyAGakEgaiIAKAIANgIAIAAgATYCACADQQRqIgNBEEcNAAsgBigCJCIARQ0BIAAgAEEMbEETakF4cSIBakEJaiIARQ0BIAYoAiAgAWsgAEEIEMUBDAELIAAEQCACIABBB3FBAEdqIQQgCigCACIBIQMDQCADIAMpAwAiGkJ/hUIHiEKBgoSIkKDAgAGDIBpC//79+/fv37//AIR8NwMAIANBCGohAyAEQQFrIgQNAAsCQCAAQQhPBEAgACABaiABKQAANwAADAELIABFDQAgAUEIaiABIAD8CgAACyABQQhqIQkgAUEMayEUIAEhAEEAIQQDQCAEIgVBAWohBAJAIAEgBWoiFS0AAEGAAUcNACABIARBdGxqIQwgFCAFQXRsaiEWAkADQCAWKAIAIgIgFigCBCACGyIXIAdxIgIhAyABIAJqKQAAQoCBgoSIkKDAgH+DIhpQBEBBCCELA0AgAyALaiEDIAtBCGohCyABIAMgB3EiA2opAABCgIGChIiQoMCAf4MiGlANAAsLIAEgGnqnQQN2IANqIAdxIgNqLAAAQQBOBEAgASkDAEKAgYKEiJCgwIB/g3qnQQN2IQMLIAMgAmsgBSACa3MgB3FBCE8EQCABIANqIgItAAAgAiAXQRl2IgI6AAAgCSADQQhrIAdxaiACOgAAIANBdGwhAkH/AUYNAiABIAJqIQNBdCECA0AgACACaiILKAAAIRcgCyACIANqIgsoAAA2AAAgCyAXNgAAIAJBBGoiAg0ACwwBCwsgFSAXQRl2IgI6AAAgCSAFQQhrIAdxaiACOgAADAELIBVB/wE6AAAgCSAFQQhrIAdxakH/AToAACACIBRqIgJBCGogDEEIaigAADYAACACIAwpAAA3AAALIABBDGshACAFIAdHDQALCyAKIBMgCGs2AggLQYGAgIB4DAILEKEBIAYoAgQhDCAGKAIADAELEKEBIAYoAgwhDCAGKAIICyEAIBkgDDYCBCAZIAA2AgAgBkFAayQACyAOIBI2AgwgDiAQNgIIIA4gHDcDAAsgDiAKNgIQIBhBEGokACANKAIYIgRFDQEgDSkDCCEaIA0pAxAhGyANIBAgEhDcATYCECANIBs3AgggBCgCACIBIAQoAgQiCCAapyIFcSIAaikAAEKAgYKEiJCgwIB/gyIaUARAQQghAgNAIAAgAmohACACQQhqIQIgASAAIAhxIgBqKQAAQoCBgoSIkKDAgH+DIhpQDQALCyABIBp6p0EDdiAAaiAIcSIAaiwAACICQQBOBEAgASABKQMAQoCBgoSIkKDAgH+DeqdBA3YiAGotAAAhAgsgACABaiAFQRl2IgU6AAAgASAAQQhrIAhxakEIaiAFOgAAIAQgBCgCCCACQQFxazYCCCAEIAQoAgxBAWo2AgwgASAAQXRsaiIAQQxrIgEgDikCADcCACABQQhqIA5BCGooAgA2AgAgAAwCCyMAQRBrIgAkACAAIABBD2qtQoCAgIDQCYQ3AwBB5oPAACAAQYyrwAAQfwALIA0oAggLQQRrKAIAIQAQMCIBIAAlASYBIA8gDygCAEEBajYCACANQSBqJAAgAQwBC0GsqsAAEI0BAAsgEUEQaiQAC7MBAQJ/IwBBEGsiACQAIAEoAgBBoMfAAEELIAEoAgQoAgwRBAAhAyAAQQhqIgJBADoABSACIAM6AAQgAiABNgIAIAIiAS0ABCECIAEtAAUEQCABAn9BASACQQFxDQAaIAEoAgAiAS0ACkGAAXFFBEAgASgCAEGf1cAAQQIgASgCBCgCDBEEAAwBCyABKAIAQZ7VwABBASABKAIEKAIMEQQACyICOgAECyACQQFxIABBEGokAAssAQF/IwBBEGsiASQAIAEgAUEPaq1CgICAgNAMhDcDAEGqhcAAIAEgABB/AAvDDAITfwF+IwBBEGsiCSQAIwBBQGoiBCQAIAQgATYCGCAEIAA2AhQgBCAEQT9qIgA2AjQgBCAANgIwIAQgBEEYajYCLCAEIARBFGo2AigjAEEQayIOJAAgDkEIaiAEQShqIgAoAgAoAgAgACgCBCgCABB7IARBHGohDCAOKAIIIhEhCCAOKAIMIg8hBSMAQfAAayIDJAACQCAFQQJPBEAjAEEgayIBJAAjAEEQayIAJAAgAEEEakGAgAJBARBAIAAoAgghBiAAKAIEBEAgBiAAKAIMEK0BAAsgACgCDCEHIAFBFGoiAkGAgAI2AgggAiAHNgIEIAIgBjYCACAAQRBqJAAgAUEIaiACEFggASkDCCEVQZDSAkEEEM4BIgBFBEBBBEGQ0gIQ1AEACyAAQQBBidIC/AsAIABBATsBjtICIABBAToAjNICIABBAjoAjdICIANBCGoiCkEYaiICQQhqQgA3AwAgAkIANwMAIAIgADYCECAKQgA3AxAgCiAVNwMIIAogBUECazYCBCAKIAhBAmo2AgAgAUEgaiQAIANBADYCRCADQoCAgIAQNwI8IANByABqIQUjAEEwayICJABBgMAAIQgCQAJAIANBPGoiBigCACISIAYoAggiAWtBIE8EQCABIQAMAQsgAkEQaiAKIAYQKiACLQAQQQRHBEAgBSACKQMQIhVCIIg+AgQgBSAVPAAAIAVBA2ogFaciAEEYdjoAACAFIABBCHY7AAEMAgsgAigCFARAIAYoAgghAAwBCyAFQQQ6AAAgBUEANgIEDAELA0ACQCAAIAYoAgAiB0cgByASR3INACACQRBqIAogBhAqIAItABBBBEcEQCAFIAIpAxAiFUIgiD4CBCAFIBU8AAAgBUEDaiAVpyIAQRh2OgAAIAUgAEEIdjsAAQwDCyAGKAIIIQAgAigCFARAIAYoAgAhBwwBCyAFQQQ6AAAgBSAAIAFrNgIEDAILAkACQAJAAkAgACAHRgRAIAJBCGogBiAHQSBBAUEBED0gAigCCEGBgICAeEcNASAGKAIAIQcgBigCCCEACyAGKAIEIQ0gAiALNgIcIAJBADYCGCACIAAgDWo2AhAgAiAIIAcgAGsiACAAIAhLGyILNgIUIAJBIGogCiACQRBqEDYgAi0AICIAQQRHDQEMAgsgBUKBzAA3AgAMBAsDQEEAIQcCQAJAAkACQCAAQf8BcUEBaw4DAgABBgsgAigCJC0ACEEjRw0FDAILIAIoAiQtAAhBI0YNAQwECyACLQAhQSNHDQMLIAIgAikDIDcDKCACQShqEG4gAkEgaiAKIAJBEGoQNiACLQAgIgBBBEcNAAsLQQEhBwsgBiACKAIYIg0gBigCCGoiADYCCCAHRQRAIAUgAikDIDcCAAwCCyANBEACQCALIA1HIAtBfyAIIBBBAWpBACALIA1LGyIQQQFKGyAIIAIoAhwiByALRxsiCElyDQAgCEEATgRAIAhBAXQhCAwBC0F/IQgLIAcgDWshCwwBBSAFQQQ6AAAgBSAAIAFrNgIECwsLIAJBMGokACADLQBIQQRHBEAgAyADKQNINwNQIANBBjYCbCADIANB0ABqNgJoIANB3ABqIgBB+ITAACADQegAahAjIAMoAmAgAygCZBDbASEFIAAQ0gEgAy0AUEEDRgRAIAMoAlQiACgCACEBIAAoAgQiAigCACIGBEAgASAGEQYACyACKAIEIgYEQCABIAYgAigCCBDFAQsgAEEMQQQQxQELIAxBgICAgHg2AgAgDCAFNgIEIANBPGoQ0gEgA0EIahCTAQwCCyAMIAMpAjw3AgAgDEEIaiADQcQAaigCADYCACADQQhqEJMBDAELQbOowABBFxDbASEAIAxBgICAgHg2AgAgDCAANgIECyADQfAAaiQAIA8EQCARIA9BARDFAQsgDkEQaiQAAn8gBCgCHEGAgICAeEYEQEEBIQAgBCgCICETQQAMAQsgBEEwaiAEQSRqKAIANgIAIAQgBCkCHDcDKCAEQQhqIARBKGoQWCAEKAIMIRRBACEAIAQoAggLIQEgCSAANgIMIAkgEzYCCCAJIBQ2AgQgCSABNgIAIARBQGskACAJKAIAIAkoAgQgCSgCCCAJKAIMIAlBEGokAAssAQF/IAAgACgCECIBQQFrNgIQIAFBAUYEQCAAQQFBARBQIABBFEEEEMUBCwv8UQQsfwJ+DX0BbyMAQRBrIhskACMAQTBrIhMkACATIAE2AhggEyAANgIUIBMgE0EvaiIANgIoIBMgADYCJCATIBNBGGo2AiAgEyATQRRqNgIcIwBBEGsiASQAIAFBCGogE0EcaiIAKAIAKAIAIAAoAgQoAgAQeyABKAIIIighACABKAIMIichBCMAQbABayIHJAAjAEHgAWsiAiQAIAIgBDYCDCACIAA2AghB2OjAAC0AAEEBRwRAEE4LIAdBCGohACACQThqQaiYwAApAwA3AwBByOjAAEHI6MAAKQMAIi5CAXw3AwAgAkGAgICAeDYCaCACQQI2AhAgAkIENwNgIAJCADcDWCACQoCAgIDAADcDUCACQaCYwAApAwA3AzAgAkHQ6MAAKQMANwNIIAIgLjcDQCACQRBqIgYgAkEIahAUIQQgAkH4AGogBkHoAPwKAAACQCAEBEAgAEEDNgIAIAAgBDYCBCACQdABahCmASACQZgBahBvIAJBuAFqIgYoAggiAARAIAYoAgQhBANAIARBDGoQpgEgBBB1IARBBEHwABBQIARBGGohBCAAQQFrIgANAAsLIAZBBEEYEFAgAigCzAEiAARAIAIoAsgBQSBqIQoDQCAKEKYBIApBLGohCiAAQQFrIgANAAsLIAJBxAFqQQRBLBBQDAELIAAgAkEQakHoAPwKAAALIAJB4AFqJAACQCAHKAIIIgRBA0YEQCAHIAcoAgw2AqQBIAdBAzYCrAEgByAHQaQBajYCqAEgB0HwAGoiAkGLhcAAIAdBqAFqECMgBygCdCAHKAJ4ENsBIQAgAhDSASAHKAKkASICKAIMQYCAgIB4RwRAIAJBDGoQ0gELIAJBBEEQEFAgAkEYQQQQxQFBASEKDAELIAcoAiwhAiAHKAIoIQAgBEECRgR/QQAFIAcoAiRBACAHKAIgQQFxGyERIAcoAhxBFCAHKAIYQQFxGyEWIAcqAhRDAAAAACAHKAIQQQFxGyEwIAcqAgxDAAAAACAEQQFxGyExQQELIR4gBygCaCEfIAcoAmQhICAHKAJgIRkgBygCXCEhIAcoAlghDSAHKAJUISIgBygCUCEXIAcoAkwhCiAHKAJIIQ8gBygCNCEEIAApAwAhLiACBEAgACACQRhsIglrQRhrIQMgAiAJakEhaiEFQQghCQsgByADNgKYASAHIAU2ApQBIAcgCTYCkAEgByAENgKIASAHIAA2AoABIAcgAEEIajYCeCAHIC5Cf4VCgIGChIiQoMCAf4M3A3AgByAAIAJqQQFqNgJ8IwBBIGsiAiQAQdjowAAtAABBAUcEQBBOCyACQQhqIhRBiKHAACkDADcDACACQRhqIhVB0OjAACkDADcDACACQRBqIg5ByOjAACkDACIuNwMAQcjowAAgLkIBfDcDACACQYChwAApAwA3AwAjAEFAaiIFJAAgB0HwAGoiCSgCGCEAIAVBPGogCUEsaigCADYCACAFQTRqIAlBJGopAgA3AgAgBSAJKQIcNwIsIABBAWpBAXYgACACKAIMGyIEIAIoAghLBEAgBUEIaiACIAQgDhAQCyAHQQhqIRIgBUEgaiAJQRBqKQMANwMAIAVBGGogCUEIaikDADcDACAFIAA2AiggBSAJKQMANwMQIwBB8ABrIgAkACAAIAVBEGpBMPwKAAACQAJAIAACfyAAKAIYIgsEQCAAQcwAaiEYIAAoAgghBCAAKAIQIQMgACkDACEuA0AgLlAEQANAIANBwAFrIQMgBCkDACAEQQhqIQRCgIGChIiQoMCAf4MiLkKAgYKEiJCgwIB/UQ0ACyAAIAM2AhAgACAENgIIIC5CgIGChIiQoMCAf4UhLgsgACAuQgF9IC6DIi83AwAgAyAueqdBA3ZBaGxqIgZBFGspAgAhLiAGQRhrKAIAIQggAEE4aiIQIAZBDGsiBkEIaigCADYCACAAIAYpAgA3AzAgC0EBayILIAhBgICAgHhGDQIaIABB4ABqIBAoAgAiBjYCACAAIAApAzA3A1ggACgCXCEaIABB5ABqIAZBABBAIAAoAmghECAAKAJkQQFGDQMgACgCbCEMIAYEQCAMIBogBvwKAAALIABB2ABqIhoQ0gEgACAGNgJUIAAgDDYCUCAAIBA2AkwgACAuNwJEIAAgCDYCQCAAIC43AlwgACAINgJYIABB5ABqIgYgAiAaIBgQHCAAKAJkQYCAgIB4RwRAIAYQ0gELIC8hLiALDQALC0EACzYCGCAAKAIYBEADQAJAIAApAwAiLlBFBEAgACgCECEEDAELIAAoAhAhBCAAKAIIIQMDQCAEQcABayEEIAMpAwAgA0EIaiEDQoCBgoSIkKDAgH+DIi5CgIGChIiQoMCAf1ENAAsgACAENgIQIAAgAzYCCCAuQoCBgoSIkKDAgH+FIS4LIAAgLkIBfSAugzcDACAAIAAoAhhBAWsiAzYCGCAEIC56p0EDdkFobGpBGGsQogEgAw0ACwsCQCAAKAIgIgRFDQAgACgCJCIDRQ0AIAAoAiggAyAEEMUBCyAAQfAAaiQADAELIBAgACgCbBCtAQALIAVBQGskACASQRhqIBUpAwA3AwAgEkEQaiAOKQMANwMAIBJBCGogFCkDADcDACASIAIpAwA3AwAgAkEgaiQAIAcgCiAXQRhsajYCfCAHIA82AnggByAKNgJ0IAcgCjYCcCMAQRBrIhAkACAJKAIIISMgCSgCACIMIQYgCSgCDBojAEEwayIIJAAgCSgCBCIAIAkoAgwiJEcEQCAIQRRqIRcDQCAJIABBGGoiBDYCBCAAQRBqKAIAISUgAEEUaigCACEmIABBDGooAgAhFCAAKAIAIQMgCCAAQQRqKAIAIgIgAEEIaigCAEHwAGxqNgIsIAggAzYCKCAIIAI2AiQgCCACNgIgIwBBEGsiDyQAIAhBIGoiCigCCCEcIAooAgAiAiEAIAooAgwaQwAAAAAhMkMAAAAAITNDAAAAACE0QwAAAAAhNUMAAAAAITZDAAAAACE3QwAAAAAhOEMAAAAAITlDAAAAACE6QwAAAAAhOyMAQfAAayIFJAAgCigCBCILIAooAgwiHUcEQCAFQdgAaiEpA0AgBSALQfAA/AoAACAKIAtB8ABqIgs2AgRBACEVIAUqAgQhPCAFKAIAISpBACEYIAUoAggiA0ECRwRAIAUqAhxDAAAAACAFKAIYQQFxGyEzIAUqAhRDAAAAACAFKAIQQQFxGyE0IAUqAgxDAAAAACADQQFxGyE1IAUqAiRDAAAAACAFKAIgQQFxGyEyQQEhGAsgBSgCKCIDQQJHBEAgBSoCTEMAAAAAIAUoAkhBAXEbITcgBSoCREMAAIA/IAUoAkBBAXEbITggBSoCPEMAAAAAIAUoAjhBAXEbITkgBSoCNEMAAAAAIAUoAjBBAXEbITogBSoCLEMAAIA/IANBAXEbITsgBSoCVEMAAAAAIAUoAlBBAXEbITZBASEVC0EAIAUoAmwgBSgCZCIrQYCAgIB4RiIaGyEsQQEgBSgCaCAaGyEtIAUoAmAiDgRAIAUoAlxB+AFqIQMDQCADKAIAQYGAgIB4RwRAIAMQpgELIANBhAJqIQMgDkEBayIODQALCyApQQRBhAIQUCAAIDxDAAAAACAqGzgCPCAAICw2AjggACAtNgI0IABBACArIBobNgIwIAAgNjgCLCAAIDc4AiggACA4OAIkIAAgOTgCICAAIDo4AhwgACA7OAIYIAAgFTYCFCAAIDI4AhAgACAzOAIMIAAgNDgCCCAAIDU4AgQgACAYNgIAIABBQGshACALIB1HDQALCyAPQQhqIgMgADYCBCADIAI2AgAgBUHwAGokACAPKAIMIQ4jAEEQayIFJAAgCkEANgIIIAooAgwhCyAKKAIEIQAgCkEENgIAIAVCgICAgMAANwIIIAVBCGpBBEHwABBQIApBBDYCDCAKQQQ2AgQgCyAAa0HwAG4hAyAAIAtHBEAgAEHYAGohAANAIABBDGoQpgEgABB6IABBBEGEAhBQIABB8ABqIQAgA0EBayIDDQALCyAFQRBqJAAgAiEAAkAgHEHwAGwiA0EwcUUNACADQUBxIgVFBEBBBCEAIAIgA0EEEMUBDAELIAIgA0EEIAUQtwEiAA0AQQQgBRDUAQALIBcgADYCBCAXIANBBnY2AgAgFyAOIAJrQQZ2NgIIIwBBEGsiAiQAIAooAgwiBSAKKAIEIgBrQfAAbiEDIAAgBUcEQCAAQdgAaiEAA0AgAEEMahCmASAAEHogAEEEQYQCEFAgAEHwAGohACADQQFrIgMNAAsLIAIgCigCADYCDCACIAooAgg2AgggAkEIakEEQfAAEFAgAkEQaiQAIA9BEGokACAIQRBqIgJBACAmIBRBgICAgHhGIgAbNgIAIAZBEGogCEEYaikCADcCACAIQQEgJSAAGzYCDCAIQQAgFCAAGzYCCCAGIAgpAgg3AgAgBkEIaiACKQIANwIAIAZBGGohBiAEIgAgJEcNAAsLIBBBCGoiACAGNgIEIAAgDDYCACAIQTBqJAAgECgCDCEDIwBBEGsiAiQAIAlBADYCCCAJKAIMIQQgCSgCBCEKIAlBBDYCACACQoCAgIDAADcCCCACQQhqQQRBGBBQIAlBBDYCDCAJQQQ2AgQgBCAKa0EYbiEAIAQgCkcEQANAIApBDGoQpgEgChB1IApBBEHwABBQIApBGGohCiAAQQFrIgANAAsLIAJBEGokACAHQTRqIhcgDDYCBCAXICM2AgAgFyADIAxrQRhuNgIIIwBBEGsiAiQAIAkoAgwiAyAJKAIEIgRrQRhuIQAgAyAERwRAA0AgBEEMahCmASAEEHUgBEEEQfAAEFAgBEEYaiEEIABBAWsiAA0ACwsgAiAJKAIANgIMIAIgCSgCCDYCCCACQQhqQQRBGBBQIAJBEGokACAQQRBqJAAgByANICFBLGxqNgJ8IAcgIjYCeCAHIA02AnQgByANNgJwIwBBEGsiAyQAIAkoAgghBiAJKAIAIgIhACAJKAIMGiAJKAIEIgQgCSgCDCIIRwRAA0AgBEEkaigCACELIARBKGooAgAhCiAEQSBqKAIAIQUgBEEMaigCACENIARBCGooAgAhDiAEQRRqKAIAIRAgBEEQaigCACEMIARBHGooAgAhDyAEQRhqKAIAIRQgAEEMaiAEQQRqKAIAQQAgBCgCAEEBcRs2AgAgAEEYaiAPQQAgFEEBcRs2AgAgAEEUaiAQQQAgDEEBcRs2AgAgAEEQaiANQQAgDkEBcRs2AgAgAEEIakEAIAogBUGAgICAeEYiChs2AgAgAEEEakEBIAsgChs2AgAgAEEAIAUgChs2AgAgAEEcaiEAIARBLGoiBCAIRw0ACyAJIAQ2AgQLIANBCGoiBCAANgIEIAQgAjYCACADKAIMIQgjAEEQayIFJAAgCUEANgIIIAkoAgwhCiAJKAIEIQQgCUEENgIAIAVCgICAgMAANwIIIAVBCGpBBEEsEFAgCUEENgIMIAlBBDYCBCAKIARrQSxuIQAgBCAKRwRAIARBIGohBANAIAQQpgEgBEEsaiEEIABBAWsiAA0ACwsgB0FAayEQIAVBEGokACAGQSxsIgRBHG4hBSACIQACQCAGRQ0AIAQgBUEcbCIGRg0AIARBG00EQEEEIQAgBEUNASACIARBBBDFAQwBCyACIARBBCAGELcBIgANAEEEIAYQ1AEACyAQIAA2AgQgECAFNgIAIBAgCCACa0EcbjYCCCMAQRBrIgIkACAJKAIMIgUgCSgCBCIEa0EsbiEAIAQgBUcEQCAEQSBqIQoDQCAKEKYBIApBLGohCiAAQQFrIgANAAsLIAIgCSgCADYCDCACIAkoAgg2AgggAkEIakEEQSwQUCACQRBqJAAgA0EQaiQAIAcgETYCXCAHIBY2AlggByAwOAJUIAcgMTgCUCAHIB42AkxBACEKIAdBACAfIBlBgICAgHhGIgAbNgIwIAdBASAgIAAbNgIsIAdBACAZIAAbNgIoIAdBADYCcCMAQUBqIgUkACAFQThqIAkQuAEgBSgCPCEDIAcCfwJAIAUoAjgiAEUNACAFIAM2AjQgBSAANgIwIAVBKGogBUEwakGaosAAQQcgEkEgahBZAkAgBSgCKEEBcQRAIAUoAiwhAwwBCyMAQRBrIgIkACAFQTBqIggoAgAhBAJ/IBJBxABqIgAoAgBBAUYEQCAAQQRqIQMjAEFAaiIAJAAgAEE4aiAEELgBIAAoAjwhBCACAn8CQCAAKAI4IgZFDQAgACAENgI0IAAgBjYCMCAAQShqIABBMGpB4aLAAEEOIAMQXQJAIAAoAihBAXEEQCAAKAIsIQQMAQsgAEEgaiAAQTBqQe+iwABBDyADQQRqEF0gACgCIEEBcQRAIAAoAiQhBAwBCyAAQRhqIABBMGpB/qLAAEEDIANBCGoQXCAAKAIYQQFxBEAgACgCHCEEDAELIABBEGogAEEwakGBo8AAQQYgA0EMahBcIAAoAhBBAXEEQCAAKAIUIQQMAQsgAEEIaiAAKAIwIAAoAjQQuQEgACgCDCEEIAAoAggMAgsgACgCNCIDQYQISQ0AIAMQUwtBAQs2AgAgAiAENgIEIABBQGskACACKAIAIQYgAigCBAwBCyACQQhqIAQQqQEgAigCCCEGIAIoAgwLIQRBASEAIAZBAXFFBEAgCEEEakGhosAAQQYQiwEgBBDGAUEAIQALIAVBIGoiAyAENgIEIAMgADYCACACQRBqJAAgBSgCIEEBcQRAIAUoAiQhAwwBCyMAQRBrIgwkACAMQQhqIRYgBUEwaiIYKAIAIQIjAEHwAGsiAyQAIAMgEigCDDYCOCADIBIoAgAiADYCMCADIABBCGo2AiggAyAAIBIoAgRqQQFqNgIsIAMgACkDAEJ/hUKAgYKEiJCgwIB/gzcDICADQdgAaiEAAn8gAi0AAUUEQBAEIT0QMCIEID0mAUEADAELELYBIQRBAQshBiAAIAI2AhAgAEEANgIIIAAgBDYCBCAAIAY2AgAgFgJ/AkACQCADKAJYQQJGBEAgAygCXCEADAELIANB0ABqIANB6ABqKAIANgIAIANByABqIANB4ABqKQIANwMAIAMgAykCWDcDQANAIANBGGohBkEAIQAgA0EgaiICKAIYIggEfwJAIAIpAwAiLlBFBEAgAigCECEADAELIAIoAhAhACACKAIIIQQDQCAAQcABayEAIAQpAwAgBEEIaiEEQoCBgoSIkKDAgH+DIi5CgIGChIiQoMCAf1ENAAsgAiAANgIQIAIgBDYCCCAuQoCBgoSIkKDAgH+FIS4LIAIgCEEBazYCGCACIC5CAX0gLoM3AwAgACAueqdBA3ZBaGxqIgJBDGshACACQRhrBUEACyECIAYgADYCBCAGIAI2AgAgAygCGCIARQ0CIAMoAhwhAiADIAA2AmwgAyACNgJYIwBBEGsiCyQAIwBBEGsiACQAIABBCGogA0FAayIGKAIQIANB7ABqKAIAIgIoAgQgAigCCBCvAUEBIQQgACgCDCECIAAoAghBAXFFBEACQCAGKAIIRQ0AIAYoAgwiBEGECEkNACAEEFMLIAYgAjYCDCAGQQE2AghBACEECyADQRBqIRkgA0HYAGohDiALQQhqIgggAjYCBCAIIAQ2AgAgAEEQaiQAQQEhBAJ/IAsoAghBAXEEQCALKAIMDAELIwBBEGsiDSQAIAYoAgghACAGQQA2AggCQAJAIAAEQCAGKAIMIQggBigCECEPIA4oAgAhBCMAQTBrIgIkACAEKAIEIQAgAkEkaiAPIAQoAggiDxCkASANAn8CQAJAIAIoAiRFBEAgAigCKCEADAELIAJBIGogAkEsaigCADYCACACIAIpAiQ3AxggD0UNAQNAAkAgAiAANgIkIwBBEGsiBCQAIAJBGGoiESgCCCEUIBEoAgAaIARBCGoiDiACQSRqKAIALQAAuBDYATYCBCAOQQA2AgBBASEOIAQoAgwhFSAEKAIIQQFxRQRAIBEoAgQgFCAVELIBIBEgFEEBajYCCEEAIQ4LIAJBEGoiESAVNgIEIBEgDjYCACAEQRBqJAAgAigCEEEBcQ0AIABBAWohACAPQQFrIg8NAQwDCwsgAigCFCEAIAIoAhwiBEGECEkNACAEEFMLQQEMAQsgAkEIaiACQRhqELMBIAIoAgwhACACKAIICzYCACANIAA2AgQgAkEwaiQAQQEhBCANKAIEIQAgDSgCAEEBcQRAIAhBhAhJDQMgCBBTDAMLIAZBBGohAgJAAkACQCAGKAIAQQFGBEAgDSAINgIMIA1BDGooAgAlARAJDQICfyMAQRBrIgIkACACQQRqIg5BM0EAEEAgAigCCCEEIAIoAgRBAUcEQCACKAIMIgZBsJjAAEEz/AoAACACQTM2AgwgAiAGNgIIIAIgBDYCBCAGQTMQ2wEgDhDSASACQRBqJAAMAQsgBCACKAIMEK0BAAshAiAIQYQITwRAIAgQUwtBASEEIABBhAhPDQEMBQsgAigCACUBIAglASAAJQEQACE9EDAiAiA9JgEgAkGECE8EQCACEFMLIABBhAhPBEAgABBTC0EAIQQgCEGECEkNAiAIEFMMAgsgABBTDAMLIAIgCCAAEMYBQQAhBAsMAgtB1KXAAEExENEBAAsgAiEACyALIAA2AgQgCyAENgIAIA1BEGokACALKAIAIQQgCygCBAshACAZIAQ2AgAgGSAANgIEIAtBEGokACADKAIQQQFxRQ0ACyADKAIUIQAgAygCRCICQYQITwRAIAIQUwsgAygCSEUNACADKAJMIgJBhAhJDQAgAhBTC0EBDAELIANB6ABqIANB0ABqKAIANgIAIANB4ABqIANByABqKQMANwMAIAMgAykDQDcDWCADQQhqIQAgA0HYAGoiAigCBCEEAkAgAigCCEUNACACKAIMIgJBhAhJDQAgAhBTCyAAIAQ2AgQgAEEANgIAIAMoAgwhACADKAIICzYCACAWIAA2AgQgA0HwAGokAEEBIQQgDCgCDCEAIAwoAghBAXFFBEAgGEEEakGnosAAQQYQiwEgABDGAUEAIQQLIAVBGGoiAiAANgIEIAIgBDYCACAMQRBqJAAgBSgCGEEBcQRAIAUoAhwhAwwBCyMAQRBrIhYkACAFQTBqIiEoAgAhACMAQTBrIggkACASQSxqIgIoAgQhBCAIQSRqIAAgAigCCCIAEKQBIBZBCGoiIgJ/AkACQCAIKAIkRQRAIAgoAighBAwBCyAIQSBqIAhBLGooAgA2AgAgCCAIKQIkNwMYIABFDQEgAEEYbCEPA0ACQCAIIAQ2AiQjAEEQayIZJAAgCEEYaiIYKAIIIR4gCEEkaigCACEAIBgoAgAhAiMAQTBrIgYkACAGQShqIAIQuAEgBigCLCEDIBlBCGoiIwJ/AkAgBigCKCICRQ0AIAYgAzYCJCAGIAI2AiAgBkEYaiAGQSBqQZSjwABBCSAAEFkCQCAGKAIYQQFxBEAgBigCHCEDDAELIwBBEGsiFCQAIAZBIGoiJCgCACECIwBBMGsiCyQAIABBDGoiACgCBCEOIAtBJGogAiAAKAIIIgAQpAEgFEEIaiIlAn8CQAJAIAsoAiRFBEAgCygCKCEODAELIAtBIGogC0EsaigCADYCACALIAspAiQ3AxggAEUNASAAQQZ0IR8DQAJAIAsgDjYCJCMAQRBrIhUkACALQRhqIhooAgghICALQSRqKAIAIREgGigCACEAIwBBQGoiAiQAIAJBOGogABC4ASACKAI8IQAgFUEIaiImAn8CQCACKAI4IgNFDQAgAiAANgI0IAIgAzYCMCACQShqIAJBMGpB8aHAAEEFIBFBPGoQXQJAIAIoAihBAXEEQCACKAIsIQAMAQsjAEEQayINJAAgAkEwaiIcKAIAIQMCfyARKAIAQQFGBEAgEUEEaiEMIwBBQGoiACQAIABBOGogAxC4ASAAKAI8IQMgDQJ/AkAgACgCOCIdRQ0AIAAgAzYCNCAAIB02AjAgAEEoaiAAQTBqQceiwABBASAMEF0CQCAAKAIoQQFxBEAgACgCLCEDDAELIABBIGogAEEwakHIosAAQQEgDEEEahBdIAAoAiBBAXEEQCAAKAIkIQMMAQsgAEEYaiAAQTBqQcmiwABBBSAMQQhqEF0gACgCGEEBcQRAIAAoAhwhAwwBCyAAQRBqIABBMGpBzqLAAEEGIAxBDGoQXSAAKAIQQQFxBEAgACgCFCEDDAELIABBCGogACgCMCAAKAI0ELkBIAAoAgwhAyAAKAIIDAILIAAoAjQiDEGECEkNACAMEFMLQQELNgIAIA0gAzYCBCAAQUBrJAAgDSgCACEAIA0oAgQMAQsgDUEIaiADEKkBIA0oAgghACANKAIMCyEMQQEhAyAAQQFxRQRAIBxBBGpB9qHAAEEGEIsBIAwQxgFBACEDCyACQSBqIgAgDDYCBCAAIAM2AgAgDUEQaiQAIAIoAiBBAXEEQCACKAIkIQAMAQsjAEEQayINJAAgAkEwaiIcKAIAIQMCfyARQRRqIgAoAgBBAUYEQCAAQQRqIQwjAEHQAGsiACQAIABByABqIAMQuAEgACgCTCEDIA0CfwJAIAAoAkgiHUUNACAAIAM2AkQgACAdNgJAIABBOGogAEFAa0GgocAAQQEgDBBdAkAgACgCOEEBcQRAIAAoAjwhAwwBCyAAQTBqIABBQGtBoaHAAEEBIAxBBGoQXSAAKAIwQQFxBEAgACgCNCEDDAELIABBKGogAEFAa0GiocAAQQEgDEEIahBdIAAoAihBAXEEQCAAKAIsIQMMAQsgAEEgaiAAQUBrQaOhwABBASAMQQxqEF0gACgCIEEBcQRAIAAoAiQhAwwBCyAAQRhqIABBQGtBpKHAAEECIAxBEGoQXSAAKAIYQQFxBEAgACgCHCEDDAELIABBEGogAEFAa0GmocAAQQIgDEEUahBdIAAoAhBBAXEEQCAAKAIUIQMMAQsgAEEIaiAAKAJAIAAoAkQQuQEgACgCDCEDIAAoAggMAgsgACgCRCIMQYQISQ0AIAwQUwtBAQs2AgAgDSADNgIEIABB0ABqJAAgDSgCACEAIA0oAgQMAQsgDUEIaiADEKkBIA0oAgghACANKAIMCyEMQQEhAyAAQQFxRQRAIBxBBGpB/KHAAEEJEIsBIAwQxgFBACEDCyACQRhqIgAgDDYCBCAAIAM2AgAgDUEQaiQAIAIoAhhBAXEEQCACKAIcIQAMAQsgAkEQaiACQTBqQYWiwABBCSARQTBqEFkgAigCEEEBcQRAIAIoAhQhAAwBCyACQQhqIAIoAjAgAigCNBC5ASACKAIMIQAgAigCCAwCCyACKAI0IgNBhAhJDQAgAxBTC0EBCzYCACAmIAA2AgQgAkFAayQAQQEhACAVKAIMIQIgFSgCCEEBcUUEQCAaKAIEICAgAhCyASAaICBBAWo2AghBACEACyALQRBqIgMgAjYCBCADIAA2AgAgFUEQaiQAIAsoAhBBAXENACAOQUBrIQ4gH0FAaiIfDQEMAwsLIAsoAhQhDiALKAIcIgBBhAhJDQAgABBTC0EBDAELIAtBCGogC0EYahCzASALKAIMIQ4gCygCCAs2AgAgJSAONgIEIAtBMGokAEEBIQAgFCgCDCECIBQoAghBAXFFBEAgJEEEakGBo8AAQQYQiwEgAhDGAUEAIQALIAZBEGoiAyACNgIEIAMgADYCACAUQRBqJAAgBigCEEEBcQRAIAYoAhQhAwwBCyAGQQhqIAYoAiAgBigCJBC5ASAGKAIMIQMgBigCCAwCCyAGKAIkIgBBhAhJDQAgABBTC0EBCzYCACAjIAM2AgQgBkEwaiQAQQEhACAZKAIMIQIgGSgCCEEBcUUEQCAYKAIEIB4gAhCyASAYIB5BAWo2AghBACEACyAIQRBqIgMgAjYCBCADIAA2AgAgGUEQaiQAIAgoAhBBAXENACAEQRhqIQQgD0EYayIPDQEMAwsLIAgoAhQhBCAIKAIcIgBBhAhJDQAgABBTC0EBDAELIAhBCGogCEEYahCzASAIKAIMIQQgCCgCCAs2AgAgIiAENgIEIAhBMGokAEEBIQQgFigCDCEAIBYoAghBAXFFBEAgIUEEakGtosAAQQcQiwEgABDGAUEAIQQLIAVBEGoiAiAANgIEIAIgBDYCACAWQRBqJAAgBSgCEEEBcQRAIAUoAhQhAwwBCyMAQRBrIggkACAFQTBqIg4oAgAhACMAQTBrIgIkACASQThqIgQoAgQhAyACQSRqIAAgBCgCCCIAEKQBIAhBCGoiDAJ/AkACQCACKAIkRQRAIAIoAighAwwBCyACQSBqIAJBLGooAgA2AgAgAiACKQIkNwMYIABFDQEgAEEcbCEPA0ACQCACIAM2AiQjAEEQayILJAAgAkEYaiISKAIIIQ0gAkEkaigCACEGIBIoAgAhBCMAQUBqIgAkACAAQThqIAQQuAEgACgCPCEEIAtBCGoiEQJ/AkAgACgCOCIWRQ0AIAAgBDYCNCAAIBY2AjAgAEEoaiAAQTBqQbShwABBCSAGEFkCQCAAKAIoQQFxBEAgACgCLCEEDAELIABBIGogAEEwakG9ocAAQQsgBkEMahBcIAAoAiBBAXEEQCAAKAIkIQQMAQsgAEEYaiAAQTBqQcihwABBCSAGQRBqEFwgACgCGEEBcQRAIAAoAhwhBAwBCyAAQRBqIABBMGpB0aHAAEEKIAZBFGoQXCAAKAIQQQFxBEAgACgCFCEEDAELIABBCGogAEEwakHbocAAQQogBkEYahBcIAAoAghBAXEEQCAAKAIMIQQMAQsgACAAKAIwIAAoAjQQuQEgACgCBCEEIAAoAgAMAgsgACgCNCIGQYQISQ0AIAYQUwtBAQs2AgAgESAENgIEIABBQGskAEEBIQAgCygCDCEEIAsoAghBAXFFBEAgEigCBCANIAQQsgEgEiANQQFqNgIIQQAhAAsgAkEQaiIGIAQ2AgQgBiAANgIAIAtBEGokACACKAIQQQFxDQAgA0EcaiEDIA9BHGsiDw0BDAMLCyACKAIUIQMgAigCHCIAQYQISQ0AIAAQUwtBAQwBCyACQQhqIAJBGGoQswEgAigCDCEDIAIoAggLNgIAIAwgAzYCBCACQTBqJABBASEDIAgoAgwhACAIKAIIQQFxRQRAIA5BBGpBtKLAAEEGEIsBIAAQxgFBACEDCyAFQQhqIgIgADYCBCACIAM2AgAgCEEQaiQAIAUoAghBAXEEQCAFKAIMIQMMAQsgBSAFKAIwIAUoAjQQuQEgBSgCBCEDIAUoAgAMAgsgBSgCNCIAQYQISQ0AIAAQUwtBAQs2AgAgByADNgIEIAVBQGskACAHKAIEIQAgBygCAEEBcQRAIAcgADYCpAEgB0EENgKsASAHIAdBpAFqNgKoASAJQeOEwAAgB0GoAWoQIyAHKAJ0IAcoAngQ2wEhACAJENIBIAcoAqQBIgJBhAhPBEAgAhBTC0EBIQoLIAdBKGoQ0gEgB0EIahBvIBcoAggiBARAIBcoAgQhBgNAIAYQ0gEgBkEMaiICKAIIIgkEQCACKAIEQTBqIQMDQCADENIBIANBQGshAyAJQQFrIgkNAAsLIAJBBEHAABBQIAZBGGohBiAEQQFrIgQNAAsLIBdBBEEYEFAgECgCCCIEBEAgECgCBCEGA0AgBhDSASAGQRxqIQYgBEEBayIEDQALCyAQQQRBHBBQCyABIAA2AgQgASAKNgIAIAdBsAFqJAAgASgCBCEAIAEoAgAhAiAnBEAgKCAnQQEQxQELIBNBCGoiBCACNgIAIAQgADYCBCABQRBqJAAgEygCDCEAIBsgEygCCCIBNgIIIBsgAEEAIAFBAXEiARs2AgQgG0EAIAAgARs2AgAgE0EwaiQAIBsoAgAgGygCBCAbKAIIIBtBEGokAAtmAQJ/IAAgACgCCCIBQQFrNgIIIAFBAUYEQCMAQRBrIgEkACAAKAIEIgJBAEgEQEGgrMAAQSsgAUEPakGQrMAAQaytwAAQXwALIAAoAgAgAkEBEMUBIAFBEGokACAAQQxBBBDFAQsL/BYCEn8NfRAwIgggBCYBEDAiCSAHJgEjAEHgAGsiCiQAIAogATYCECAKIAA2AgwgCiACNgIUIAogAzYCGCAKIAg2AhwgCiAFNgIgIAogBjYCJCAKIAk2AiggCiAKQd8AaiIANgJYIAogCkEoajYCVCAKIApBJGo2AlAgCiAKQSBqNgJMIAogADYCSCAKIApBHGo2AkQgCiAKQRhqNgJAIAogCkEUajYCPCAKIAA2AjggCiAANgI0IAogCkEQajYCMCAKIApBDGo2AixBACEJIwBBQGoiDSQAIApBLGoiACgCACgCACEBIA0gACgCBCgCACICNgI8IA0gATYCOCANIAI2AjQgDUEQaiANQTRqIgEQViANKAIUIQsgDSgCECEGIAAoAhgoAgAhEiAAKAIQKAIAIQIgDSAAKAIUKAIAIgM2AjwgDSACNgI4IA0gAzYCNCANQQhqIAEQViANIBI2AiQgDSANKAIMIgg2AiAgDSANKAIIIgM2AhwgACgCKCgCACETIAAoAiAoAgAhAiANIAAoAiQoAgAiADYCPCANIAI2AjggDSAANgI0IA0gARBWIA0gEzYCMCANIA0oAgQiDjYCLCANIA0oAgAiBTYCKAJ/IAYhASADIQAgBSECAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDkEGbiIQIAhBJG4iESALQQ1uIhQgESAUSRsiESAQIBFJGyIRBEAgEUEkbCEUQQwgCyALQQxNG0ENbkEkbCEVQSMgCCAIQSNNG0EkbkEkbCEWQQUgDiAOQQVNG0EGbkENbCEXQQMhEANAIAsgDE0NAyAMQQFqIAtPDQQgDEECaiALTw0FIAxBA2ogC08NBiAMQQRqIAtPDQcgDEEFaiALTw0IIAxBBmogC08NCSAMQQdqIAtPDQogDEEIaiALTw0LIAxBCWogC08NDCAMQQpqIAtPDQ0gDEELaiALTw0OIAkgFUYNDyAIIAlNDRAgASoCACEaIAFBBGoqAgAhICABQQhqKgIAIR4gAUEMaioCACEkIAFBEGoqAgAhJSABQRRqKgIAISYgAUEcaioCACEbIAFBIGoqAgAhHCABQSRqKgIAISEgAUEoaioCACEdIAFBLGoqAgAhIiABQTBqKgIAISMgACABQRhqKgIAIh84AgAgCUEBaiAITw0RIABBBGogGzgCACAJQQJqIAhPDRIgAEEIakEANgIAIAlBA2ogCE8NEyAAQQxqQYCAgPwDNgIAIAlBBGogCE8NFCAAQRBqQYCAgPwDNgIAIAlBBWogCE8NFSAAQRRqQYCAgPwDNgIAIAlBBmogCE8NFiAAQRhqIBw4AgAgCUEHaiAITw0XIABBHGogITgCACAJQQhqIAhPDRggAEEgaiAdOAIAIAlBCWogCE8NGSAAQSRqIBogHpQiHiAfkjgCACAJQQpqIAhPDRogAEEoaiAaICSUIhogG5I4AgAgCUELaiAITw0bIABBLGpBADYCACAJQQxqIAhPDRwgAEEwakGAgID8AzYCACAJQQ1qIAhPDR0gAEE0akGAgID8AzYCACAJQQ5qIAhPDR4gAEE4akGAgID8AzYCACAJQQ9qIAhPDR8gAEE8aiAcOAIAIAlBEGogCE8NICAAQUBrICI4AgAgCUERaiAITw0hIABBxABqIB04AgAgCUESaiAITw0iIABByABqIB4gICAllCIdkiAfkjgCACAJQRNqIAhPDSMgAEHMAGogGiAgICaUIhqSIBuSOAIAIAlBFGogCE8NJCAAQdAAakEANgIAIAlBFWogCE8NJSAAQdQAakGAgID8AzYCACAJQRZqIAhPDSYgAEHYAGpBgICA/AM2AgAgCUEXaiAITw0nIABB3ABqQYCAgPwDNgIAIAlBGGogCE8NKCAAQeAAaiAcOAIAIAlBGWogCE8NKSAAQeQAaiAiOAIAIAlBGmogCE8NKiAAQegAaiAjOAIAIAlBG2ogCE8NKyAAQewAaiAdIB+SOAIAIAlBHGogCE8NLCAAQfAAaiAaIBuSOAIAIAlBHWogCE8NLSAAQfQAakEANgIAIAlBHmogCE8NLiAAQfgAakGAgID8AzYCACAJQR9qIAhPDS8gAEH8AGpBgICA/AM2AgAgCUEgaiAITw0wIABBgAFqQYCAgPwDNgIAIAlBIWogCE8NMSAAQYQBaiAcOAIAIAlBImogCE8NMiAAQYgBaiAhOAIAIAkgFkYNMyAAQYwBaiAjOAIAIA4gD00NNCACIBBBA2siGDYCACAPQQFqIA5PDTUgAkEEaiAQQQJrNgIAIA9BAmogDk8NNiACQQhqIBBBAWsiGTYCACAPQQNqIA5PDTcgAkEMaiAYNgIAIA9BBGogDk8NOCACQRBqIBk2AgAgDCAXRg0CIAJBFGogEDYCACABQTRqIQEgAEGQAWohACAQQQRqIRAgDEENaiEMIAJBGGohAiAPQQZqIQ8gFCAJQSRqIglHDQALCyARDDcLIA9BBWogDkHEn8AAEG0ACyAMIAtB5JjAABBtAAsgDEEBaiALQfSYwAAQbQALIAxBAmogC0GEmcAAEG0ACyAMQQNqIAtBlJnAABBtAAsgDEEEaiALQaSZwAAQbQALIAxBBWogC0G0mcAAEG0ACyAMQQZqIAtBxJnAABBtAAsgDEEHaiALQdSZwAAQbQALIAxBCGogC0HkmcAAEG0ACyAMQQlqIAtB9JnAABBtAAsgDEEKaiALQYSawAAQbQALIAxBC2ogC0GUmsAAEG0ACyAMQQxqIAtBpJrAABBtAAsgCSAIQbSawAAQbQALIAlBAWogCEHEmsAAEG0ACyAJQQJqIAhB1JrAABBtAAsgCUEDaiAIQeSawAAQbQALIAlBBGogCEH0msAAEG0ACyAJQQVqIAhBhJvAABBtAAsgCUEGaiAIQZSbwAAQbQALIAlBB2ogCEGkm8AAEG0ACyAJQQhqIAhBtJvAABBtAAsgCUEJaiAIQcSbwAAQbQALIAlBCmogCEHUm8AAEG0ACyAJQQtqIAhB5JvAABBtAAsgCUEMaiAIQfSbwAAQbQALIAlBDWogCEGEnMAAEG0ACyAJQQ5qIAhBlJzAABBtAAsgCUEPaiAIQaScwAAQbQALIAlBEGogCEG0nMAAEG0ACyAJQRFqIAhBxJzAABBtAAsgCUESaiAIQdScwAAQbQALIAlBE2ogCEHknMAAEG0ACyAJQRRqIAhB9JzAABBtAAsgCUEVaiAIQYSdwAAQbQALIAlBFmogCEGUncAAEG0ACyAJQRdqIAhBpJ3AABBtAAsgCUEYaiAIQbSdwAAQbQALIAlBGWogCEHEncAAEG0ACyAJQRpqIAhB1J3AABBtAAsgCUEbaiAIQeSdwAAQbQALIAlBHGogCEH0ncAAEG0ACyAJQR1qIAhBhJ7AABBtAAsgCUEeaiAIQZSewAAQbQALIAlBH2ogCEGknsAAEG0ACyAJQSBqIAhBtJ7AABBtAAsgCUEhaiAIQcSewAAQbQALIAlBImogCEHUnsAAEG0ACyAJQSNqIAhB5J7AABBtAAsgDyAOQfSewAAQbQALIA9BAWogDkGEn8AAEG0ACyAPQQJqIA5BlJ/AABBtAAsgD0EDaiAOQaSfwAAQbQALIA9BBGogDkG0n8AAEG0ACyAFIA5BAnQiASANQTBqEMoBIA4EQCAFIAFBBBDFAQsgE0GECE8EQCATEFMLIAMgCEECdCIBIA1BJGoQygEgCARAIAMgAUEEEMUBCyASQYQITwRAIBIQUwsgCwRAIAYgC0ECdEEEEMUBCyANQUBrJAAgCkHgAGokAAsoAQF/IAAoAgwiAQRAIAAoAgggAUEBEMUBCyAAKAIoQZDSAkEEEMUBCx8BAX8gACgCACAAKAIIIgJrIAFJBEAgACACIAEQeQsLJQAgAEUEQEG4q8AAQTIQ0QEACyAAIAIgAyAEIAUgASgCEBEMAAsgAQF/QQEhASAAKAIAIgBBAXEEfyABBSAAKAIIQQFGCwsjACAARQRAQbirwABBMhDRAQALIAAgAiADIAQgASgCEBEkAAsjACAARQRAQbirwABBMhDRAQALIAAgAiADIAQgASgCEBEDAAsjACAARQRAQbirwABBMhDRAQALIAAgAiADIAQgASgCEBEIAAsjACAARQRAQbirwABBMhDRAQALIAAgAiADIAQgASgCEBElAAsjACAARQRAQbirwABBMhDRAQALIAAgAiADIAQgASgCEBEmAAsoAQF/IAAoAgAiAUGAgICAeHJBgICAgHhHBEAgACgCBCABQQEQxQELCyEAIABFBEBBuKvAAEEyENEBAAsgACACIAMgASgCEBEEAAshACAARQRAQbirwABBMhDRAQALIAAgAiADIAEoAhARAQALHwAgAEUEQEG4q8AAQTIQ0QEACyAAIAIgASgCEBEAAAshACAAQQA2AgwgACADNgIIIAAgAjYCBCAAQZitwAA2AgALEQBBnMvAAEE5QbjLwAAQfwALDwAgABDSASAAQQxqENIBC9MDAgd/AX5B9OTAAC0AAEEBRwRAIwBBEGsiAiQAAn8gAEUEQEGoq8AAIQFBAAwBCyAAKAIAIQEgAEEANgIAIABBCGpBqKvAACABQQFxIgMbIQEgACgCBEEAIAMbCyEFIAJBCGoiBiABQQhqKQIANwMAIAIgASkCADcDAAJAAkACQEH05MAALQAAQQFrDgIBAAILQbyqwABB/QBB/KrAABB/AAtB9OTAAEECOgAAAkBB6OTAACgCACIDRQ0AQfDkwAAoAgAiBARAQeTkwAAoAgAiAEEIaiEBIAApAwBCf4VCgIGChIiQoMCAf4MhCANAIAhQBEADQCAAQeAAayEAIAEpAwAgAUEIaiEBQoCBgoSIkKDAgH+DIghCgIGChIiQoMCAf1ENAAsgCEKAgYKEiJCgwIB/hSEICyAAIAh6p0EDdkF0bGpBBGsoAgAiB0GECE8EQCAHEFMLIAhCAX0gCIMhCCAEQQFrIgQNAAsLIAMgA0EMbEETakF4cSIAakEJaiIBRQ0AQeTkwAAoAgAgAGsgAUEIEMUBCwtB4OTAACAFNgIAQeTkwAAgAikDADcCAEH05MAAQQE6AABB7OTAACAGKQMANwIAIAJBEGokAAtB4OTAAAslAQFvEAUhAxAwIgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQxQELCxYAIAAoAgBBgICAgHhHBEAgABDSAQsLHQAgASAALQAAQQJ0IgAoAsSgQCAAKAKsoEAQsQELHQAgASAALQAAQQJ0IgAoApCqQCAAKAL4qUAQsQELGgAgAEEANgIAIABBgQhBgAggAS0AABs2AgQLHwAgAEEIakH8rsAAKQIANwIAIABB9K7AACkCADcCAAsfACAAQQhqQbTAwAApAgA3AgAgAEGswMAAKQIANwIACx8AIABBCGpBxMDAACkCADcCACAAQbzAwAApAgA3AgALHgAgAARAIAAgARDUAQALQeDMwABBI0H0zMAAEH8ACxEAIAAgAUEBdEEBciACEH8ACxUAIAAgAiADENwBNgIEIABBADYCAAsQACABBEAgACABIAIQxQELCxYAIAAoAgAgASACIAAoAgQoAgwRBAALFAEBbyAAJQEgASACJQEgAhBTEAELEwAgACABKAIENgIEIABBADYCAAvQBgEDfyMAQdAAayIFJAAgBSADNgIEIAUgAjYCAAJ/AkACQCABQYECTwRAQf0BIQYDQAJAIAAgBmoiB0EDaiwAAEG/f0wEQCAHQQJqLAAAQb9/TA0BIAZBAmohBgwFCyAGQQNqIQYMBAsgB0EBaiwAAEG/f0oNAiAHLAAAQb9/Sg0DIAZBBGsiBkF9Rw0AC0EAIQYMAgsgBSABNgIMIAUgADYCCEEBDAILIAZBAWohBgsgBSAANgIIIAUgBjYCDEEFQQAgASAGSyIGGyEHQaHXwABBASAGGwshBiAFIAc2AhQgBSAGNgIQAkAgBSABIAJPBH8gASADTw0BIAMFIAILNgIgIAUgBUEQaq1CgICAgKAMhDcDOCAFIAVBCGqtQoCAgICgDIQ3AzAgBSAFQSBqrUKAgICAoAeENwMoQcCAwAAgBUEoaiAEEH8ACwJ/AkACQAJAIAIgA00EQCACRSABIAJNckUEQCAFQQRqIAUgACACaiwAAEG/f0obKAIAIQMLIAUgAzYCGCABIANNDQJBACEHIANFDQEDQCAAIANqLAAAQb9/SgRAIAMhBwwDCyADQQFrIgMNAAsMAQsgBSAFQRBqrUKAgICAoAyENwNAIAUgBUEIaq1CgICAgKAMhDcDOCAFIAVBBGqtQoCAgICgB4Q3AzAgBSAFrUKAgICAoAeENwMoQZSAwAAgBUEoaiAEEH8ACyABIAdGDQAgBQJ/AkAgACAHaiICLAAAIgNBAEgEQCACLQABQT9xIQAgA0EfcSEBIANBX0sNASABQQZ0IAByDAILIAUgA0H/AXE2AhxBAQwECyACLQACQT9xIABBBnRyIgAgAUEMdHIgA0FwSQ0AGiABQRJ0QYCA8ABxIAItAANBP3EgAEEGdHJyCyIANgIcIABBgAFPDQFBAQwCCyAEEM0BAAtBAiAAQYAQSQ0AGkEDQQQgAEGAgARJGwshACAFIAc2AiAgBSAAIAdqNgIkIAUgBUEQaq1CgICAgKAMhDcDSCAFIAVBCGqtQoCAgICgDIQ3A0AgBSAFQSBqrUKAgICAsAyENwM4IAUgBUEcaq1CgICAgMAMhDcDMCAFIAVBGGqtQoCAgICgB4Q3AyhB6YDAACAFQShqIAQQfwALFAAgACgCACABIAAoAgQoAgwRAAALFAIBbwF/EAYhABAwIgEgACYBIAEL6wYBBX8CfwJAAkACQAJAAkACQAJAIABBBGsiBygCACIIQXhxIgRBBEEIIAhBA3EiBRsgAWpPBEAgBUEAIAFBJ2oiBiAESRsNAQJAIAJBCU8EQCACIAMQJCICDQFBAAwKC0EAIQIgA0HM/3tLDQhBECADQQtqQXhxIANBC0kbIQEgAEEIayEGIAVFBEAgBkUgAUGAAklyIAQgAWtBgIAISyABIARPcnINByAADAoLIAQgBmohBQJAIAEgBEsEQCAFQazowAAoAgBGDQFBqOjAACgCACAFRwRAIAUoAgQiCEECcQ0JIAhBeHEiCCAEaiIEIAFJDQkgBSAIECYgBCABayIFQRBPBEAgByABIAcoAgBBAXFyQQJyNgIAIAEgBmoiASAFQQNyNgIEIAQgBmoiBCAEKAIEQQFyNgIEIAEgBRAiDAkLIAcgBCAHKAIAQQFxckECcjYCACAEIAZqIgEgASgCBEEBcjYCBAwIC0Gg6MAAKAIAIARqIgQgAUkNCAJAIAQgAWsiBUEPTQRAIAcgCEEBcSAEckECcjYCACAEIAZqIgEgASgCBEEBcjYCBEEAIQVBACEBDAELIAcgASAIQQFxckECcjYCACABIAZqIgEgBUEBcjYCBCAEIAZqIgQgBTYCACAEIAQoAgRBfnE2AgQLQajowAAgATYCAEGg6MAAIAU2AgAMBwsgBCABayIEQQ9NDQYgByABIAhBAXFyQQJyNgIAIAEgBmoiASAEQQNyNgIEIAUgBSgCBEEBcjYCBCABIAQQIgwGC0Gk6MAAKAIAIARqIgQgAUsNBAwGCyADIAEgASADSxsiAwRAIAIgACAD/AoAAAsgBygCACIDQXhxIgcgAUEEQQggA0EDcSIDG2pJDQIgA0UgBiAHT3INBkH8x8AAQS5BrMjAABCuAQALQbzHwABBLkHsx8AAEK4BAAtB/MfAAEEuQazIwAAQrgEAC0G8x8AAQS5B7MfAABCuAQALIAcgASAIQQFxckECcjYCACABIAZqIgUgBCABayIBQQFyNgIEQaTowAAgATYCAEGs6MAAIAU2AgALIAZFDQAgAAwDCyADEA8iAUUNASADQXxBeCAHKAIAIgJBA3EbIAJBeHFqIgIgAiADSxsiAgRAIAEgACAC/AoAAAsgASECCyAAEBYLIAILCxEAIAAQtgE2AgQgACABNgIACxAAIAAgAjYCBCAAQQA2AgALDwAgACABKAIAIAIgAxAtCw8AIAAgASgCACACIAMQOAsNACAAIAEgASACahBsCxAAIAAgAjYCBCAAIAE2AgALEwAgAEEoNgIEIABBzK7AADYCAAsRACAAKAIAIAAoAgQgARDWAQsRACAAKAIEIAAoAgggARDWAQsRACABIAAoAgAgACgCBBCxAQsTACAAQazHwAA2AgQgACABNgIAC8AGARB/IAAoAgQhBiAAKAIIIQRBACEAIwBBEGsiCiQAQQEhDAJAIAEoAgAiC0EiIAEoAgQiDSgCECIOEQAADQACQCAERQRADAELQQAgBGshDyAEIQAgBiEBAkACfwNAIAAgAWpBACEDAkADQCABIANqIgUtAAAiB0H/AGtB/wFxQaEBSSAHQSJGciAHQdwARnINASAAIANBAWoiA0cNAAsgACAIagwCCyAFQQFqIQECQCAFLAAAIgBBAE4EQCAAQf8BcSEADAELIAEtAABBP3EhCSAAQR9xIQcgBUECaiEBIABBX00EQCAHQQZ0IAlyIQAMAQsgAS0AAEE/cSAJQQZ0ciEJIAVBA2ohASAAQXBJBEAgCSAHQQx0ciEADAELIAdBEnRBgIDwAHEgAS0AAEE/cSAJQQZ0cnIhACAFQQRqIQELIAogAEGBgAQQGAJAIAotAA0iByAKLQAMIglrIhFB/wFxQQFGDQACQAJAAkAgAiADIAhqIgVLDQACQCACRQ0AIAIgBE8EQCACIARHDQIMAQsgAiAGaiwAAEG/f0wNAQsCQCAFRQ0AIAQgBU0EQCAFIA9qRQ0BDAILIAYgCGogA2osAABBv39MDQELIAsgAiAGaiAIIAJrIANqIA0oAgwiAhEEAEUNAQwCCyAGIAQgAiAFQYTTwAAQtAEACwJAIAdBgQFPBEAgCyAKKAIAIA4RAAANAgwBCyALIAkgCmogESACEQQADQELAn9BASAAQYABSQ0AGkECIABBgBBJDQAaQQNBBCAAQYCABEkbCyAIaiADaiECDAELDAULAn9BASAAQYABSQ0AGkECIABBgBBJDQAaQQNBBCAAQYCABEkbCyAIaiIFIANqIQggAWsiAA0ACyADIAVqCyIDIAJJDQBBACEAAkAgAkUNACACIARPBEAgAiIAIARHDQIMAQsgAiIAIAZqLAAAQb9/TA0BCyADRQRAQQAhAwwCCyADIARPBEAgAyAERg0CIAAhAgwBCyADIAZqLAAAQb9/Sg0BIAAhAgsgBiAEIAIgA0GU08AAELQBAAsgCyAAIAZqIAMgAGsgDSgCDBEEAA0AIAtBIiAOEQAAIQwLIApBEGokACAMCxAAIAEgACgCACAAKAIEEB0LYQEBfwJAAkAgAEEEaygCACICQXhxIgNBBEEIIAJBA3EiAhsgAWpPBEAgAkEAIAMgAUEnaksbDQEgABAWDAILQbzHwABBLkHsx8AAEK4BAAtB/MfAAEEuQazIwAAQrgEACwsdAQFvIAAoAgAlASABJQEgARBTIAIlASACEFMQAgsNACAAKAIAKAIIQQFGCxEAQditwABBC0HgrcAAEH8ACw0AIAAoAgAoAhBBAUYLDwAgACABIAIoAgAlARAKCw8AIABB0MbAACABIAIQHgsPACAAQdDLwAAgASACEB4LDwBBptfAAEErIAAQrgEACxkAAn8gAUEJTwRAIAEgABAkDAELIAAQDwsLigEBAn8CQCMAQRBrIgEkACABQQRqIANBABBAIAEoAgghBCABKAIEQQFHBEAgASgCDCEFIAMEQCAFIAIgA/wKAAALIAAgBDYCCCAAIAM2AgQgACAFNgIAIABBB0EgIARBCnZnayIAIABBB08bQQJ0QQFyNgIMIAFBEGokAAwBCyAEIAEoAgwQrQEACwsOACABQbytwABBCxCxAQsJACAAIAEQBwALCgAgAEEBQQEQUAsMACAAIAEpAgA3AwALPgEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJBCGoiACgCACAAKAIEQeTowAAoAgAiAEHMACAAGxECAAALDgAgAUHIy8AAQQUQsQELCgAgAiAAIAEQHQsNACABQa7kwABBGBAdCxYCAW8BfyAAEAwhARAwIgIgASYBIAILCgAgACgCABCRAQsKACAAKAIAEI8BCxYBAW8gACABEAghAhAwIgAgAiYBIAALFgEBbyAAIAEQDSECEDAiACACJgEgAAsJACAAQQA2AgALDABB4OjAAEEBOgAACwIACwQAQQALAgALC4dkCwBBgIDAAAujGGludmFsaWQgdGFnIHZhbHVlOiAwDmJlZ2luIDw9IGVuZCAowAQgPD0gwBApIHdoZW4gc2xpY2luZyBgwAFgwAALYnl0ZSBpbmRleCDAFiBpcyBvdXQgb2YgYm91bmRzIG9mIGDAAWDAAAtieXRlIGluZGV4IMAmIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSDACCAoYnl0ZXMgwAYpIG9mIGDAAWDAACJhZHZhbmNlIG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IGFkdmFuY2luZyBieSDAABZzbGljZSBpbmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhlIGluZGV4IGlzIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAACFjYW5ub3QgYWR2YW5jZSBwYXN0IGByZW1haW5pbmdgOiDABCA8PSDAAEhjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiDAABNpbnZhbGlkIGtleSB2YWx1ZTogwAAZaW52YWxpZCB3aXJlIHR5cGUgdmFsdWU6IMAAElNlcmlhbGl6ZSBmYWlsZWQ6IMAAEEluZmxhdGUgZmFpbGVkOiDAABhQcm90b2J1ZiBkZWNvZGUgZmFpbGVkOiDAAMACOiDAAHNyY1x2ZXJ0ZXgucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGJ5dGVzX211dC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL2lvL2ltcGxzLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xieXRlcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3RocmVhZF9sb2NhbC9ub190aHJlYWRzLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcb3V0cHV0X2J1ZmZlci5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGZsYXRlMi0xLjEuOVxzcmNcYnVmcmVhZGVyLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L251bS5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXHN0cmVhbS5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcd2FzbS1iaW5kZ2VuLTAuMi4xMTdcc3JjXGV4dGVybnJlZi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXGNvcmUucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnVmXHRha2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHNlcmRlLXdhc20tYmluZGdlbi0wLjYuNVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xsaWIucnMAJmNvcHlfZnJvbV9zbGljZTogc291cmNlIHNsaWNlIGxlbmd0aCAowCspIGRvZXMgbm90IG1hdGNoIGRlc3RpbmF0aW9u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c3NlcnRpb24gZmFpbGVkOiBuIDw9IHNlbGYuYnVmLmluaXQgLSBzZWxmLmJ1Zi5maWxsZWQAWgYQAFMAAAAVAQAACQAAALkIEABJAAAAsgEAADEAAABoAxAASwAAADYBAAAYAAAAAQAAAAAAAABpbnZhbGlkIHN0cmluZyB2YWx1ZTogZGF0YSBpcyBub3QgVVRGLTggZW5jb2RlZAC0AxAAYAAAAMMCAAAJAAAAY29ycnVwdCBkZWZsYXRlIHN0cmVhbQAA6gQQAGQAAABiAAAAFQAAAGBsZW5gIGdyZWF0ZXIgdGhhbiByZW1haW5pbmfeBxAAYwAAAJgAAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogY250IDw9IHNlbGYubGltaXQA3gcQAGMAAACSAAAACQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWVpbnZhbGlkIHRhZyB2YWx1ZTogMGRlbGltaXRlZCBsZW5ndGggZXhjZWVkZWRidWZmZXIgdW5kZXJmbG93dW5leHBlY3RlZCBlbmQgZ3JvdXAgdGFncmVjdXJzaW9uIGxpbWl0IHJlYWNoZWRpbnZhbGlkIHZhcmludFJnYmFDb2xvcmdyYmFTaGFwZUFyZ3NkU2hhcGVTdHlsZW1pdGVyX2xpbWl0bGluZV9kYXNoX2lpaWZpbGxsaW5lX2NhcHN0cm9rZWxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9qb2luc3Ryb2tlX3dpZHRoRWxsaXBzZUFyZ3N4eXJhZGl1c194cmFkaXVzX3lSZWN0QXJnc3dpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RhdGEgdG9vIHNob3J0IGZvciB6bGliQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQVBBAAXgAAAGsAAAANAAAAYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50VmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0AAAABgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAthQQALwUEADIFBAA1xQQAOEUEADpFBAACAAAAH8JEABqAAAANQAAAA4AAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAFQQQAF4AAABrAAAADQAAAAoGEABPAAAA3wEAABkAAAAAAAAA//////////+gFRAAQbirwAALVWNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkZmFpbGVkIHRvIGRlY29kZSBQcm90b2J1ZiBtZXNzYWdlOiAAQZiswAALpQMBAAAAJgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAJwAAACgAAAApAAAAKgAAACsAAAC0AxAAYAAAADoFAAAyAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAAvAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAtAMQAGAAAABIBQAASQAAAExheW91dEVycm9yAOoJEABeAAAAqgAAAAUAAABhYm9ydAAAAOoJEABeAAAAbgAAAAkAAABvdmVyZmxvd7oCEABkAAAAqQIAABUAAAC6AhAAZAAAAL0CAAAdAAAAOwAAADwAAAA9AAAAPgAAAD8AAACuBhAAbAAAAHwAAAARAAAArgYQAGwAAACJAAAAEQAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXnTcnEjtIHIS91jtwZSgLmiQQAAAAwAAAAEAAAAQgAAAEEAAAAMAAAABAAAAEMAAABCAAAAhBcQAEQAAABFAAAARgAAAEQAAABHAEHIr8AAC2kCAAAAAAAAAAQAAAB0BBAAdQAAACAAAAAJAAAAdAQQAHUAAAAqAAAAEwAAABsHEABsAAAAXgYAACgAAAAbBxAAbAAAAGsGAAA2AAAAGwcQAGwAAABrBgAAGgAAABsHEABsAAAAcwcAAD4AQbywwAALqRsBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACGwcQAGwAAADZBwAATQAAAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYBAREgAIBwkGCgULBAwDDQIOAQ8AGwcQAGwAAAA8BgAALQAAABsHEABsAAAAPAYAABkAAAAbBxAAbAAAAIQGAAAgAAAAAQEBAAQAAAAbBxAAbAAAABECAAAoAAAAAAAAgABAAMAAIACgAGAA4AAQAJAAUADQADAAsABwAPAACACIAEgAyAAoAKgAaADoABgAmABYANgAOAC4AHgA+AAEAIQARADEACQApABkAOQAFACUAFQA1AA0ALQAdAD0AAwAjABMAMwALACsAGwA7AAcAJwAXADcADwAvAB8APwAAgCCAEIAwgAiAKIAYgDiABIAkgBSANIAMgCyAHIA8gAKAIoASgDKACoAqgBqAOoAGgCaAFoA2gA6ALoAegD6AAYAhgBGAMYAJgCmAGYA5gAWAJYAVgDWADYAtgB2APYADgCOAE4AzgAuAK4AbgDuAB4AngBeAN4APgC+AH4A/gABAIEAQQDBACEAoQBhAOEAEQCRAFEA0QAxALEAcQDxAAkAiQBJAMkAKQCpAGkA6QAZAJkAWQDZADkAuQB5APkABQCFAEUAxQAlAKUAZQDlABUAlQBVANUANQC1AHUA9QANAI0ATQDNAC0ArQBtAO0AHQCdAF0A3QA9AL0AfQD9AAMAgwBDAMMAIwCjAGMA4wATAJMAUwDTADMAswBzAPMACwCLAEsAywArAKsAawDrABsAmwBbANsAOwC7AHsA+wAHAIcARwDHACcApwBnAOcAFwCXAFcA1wA3ALcAdwD3AA8AjwBPAM8ALwCvAG8A7wAfAJ8AXwDfAD8AvwB/AP+AAICAgECAwIAggKCAYIDggBCAkIBQgNCAMICwgHCA8IAIgIiASIDIgCiAqIBogOiAGICYgFiA2IA4gLiAeID4gASAhIBEgMSAJICkgGSA5IAUgJSAVIDUgDSAtIB0gPSADICMgEyAzIAsgKyAbIDsgByAnIBcgNyAPIC8gHyA/IACgIKAQoDCgCKAooBigOKAEoCSgFKA0oAygLKAcoDygAqAioBKgMqAKoCqgGqA6oAagJqAWoDagDqAuoB6gPqABoCGgEaAxoAmgKaAZoDmgBaAloBWgNaANoC2gHaA9oAOgI6AToDOgC6AroBugO6AHoCegF6A3oA+gL6AfoD+gAGAgYBBgMGAIYChgGGA4YARgJGAUYDRgDGAsYBxgPGACYCJgEmAyYApgKmAaYDpgBmAmYBZgNmAOYC5gHmA+YAFgIWARYDFgCWApYBlgOWAFYCVgFWA1YA1gLWAdYD1gA2AjYBNgM2ALYCtgG2A7YAdgJ2AXYDdgD2AvYB9gP2AA4CDgEOAw4AjgKOAY4DjgBOAk4BTgNOAM4CzgHOA84ALgIuAS4DLgCuAq4BrgOuAG4CbgFuA24A7gLuAe4D7gAeAh4BHgMeAJ4CngGeA54AXgJeAV4DXgDeAt4B3gPeAD4CPgE+Az4AvgK+Ab4DvgB+An4BfgN+AP4C/gH+A/xsHEABsAAAAhgIAAB0AAAAbBxAAbAAAACIEAAAUAAAAGwcQAGwAAAAjBAAAEgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAzIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAANgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDMpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAADcEAAANAAAAGwcQAGwAAAA5BAAAIgAAABsHEABsAAAAOgQAACYAAAAbBxAAbAAAADsEAAAmAAAAGwcQAGwAAABEBAAAIwAAABsHEABsAAAARAQAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMSA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEYEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAxKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABHBAAADQAAABsHEABsAAAASAQAACIAAAAbBxAAbAAAAEgEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0X3BvcyArIDIgPCBvdXRfc2xpY2UubGVuKCkAGwcQAGwAAABMBAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IChzb3VyY2VfcG9zICsgMikgJiBvdXRfYnVmX3NpemVfbWFzayA8IG91dF9zbGljZS5sZW4oKRsHEABsAAAATQQAAA0AAAAbBxAAbAAAAE4EAAAiAAAAGwcQAGwAAABOBAAADQAAABsHEABsAAAATwQAACYAAAAbBxAAbAAAAE8EAAANAAAAGwcQAGwAAAAsBAAAFwAAAJsFEABuAAAAQgEAABwAAACbBRAAbgAAAHYBAAAwAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAAbV3L1ixQ62N4QaZXcRuLuZq47pFRFJZYz5YA6NKfEoplbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvcm9wZXJh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",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:fn&&fn.tagName.toUpperCase()==="SCRIPT"&&fn.src||new URL("gift-stage.cjs.js",document.baseURI).href));const A=XB();(typeof g=="string"||typeof Request=="function"&&g instanceof Request||typeof URL=="function"&&g instanceof URL)&&(g=fetch(g));const{instance:t,module:e}=await BQ(await g,A);return $B(t)}const aQ=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:$a,decode_svga:AQ,default:AC,inflate:tQ,init:jB,initSync:CQ},Symbol.toStringTag,{value:"Module"})),QQ="data:application/wasm;base64,AGFzbQEAAAABlgIoYAJ/fwF/YAN/f38AYAJ/fwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAR/f39/AX9gBn9/f39/fwBgAABgAAFvYAV/f39/fwF/YAJ/fwFvYAZ/f39/f38Bf2AAAX9gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAAR/f39/YAADf39/YANvb28Bb2ADb39vAGADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2AIf39/f39/f38AYAJ/fwF+YAZ/f39+f38AYAZ/f399f38AYAZ/f398f38AYAJ/fwR/f39/YAJ/fwN/f39gCH9/f39vf39vAX9gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwK2Bg4XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzA4NDYzYjFkZjM4YTdlMjkAFRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAWFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABcXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAGBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfOTljYWJhZTUwMWMwYThhMAALFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld19mM2M5ZGY0ZjM4ZjNmNzk4AAsXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAA0XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19zdHJpbmdfYjI5YjVjNWE4MDY1YmExYQAZFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzNV9fd2JnX19fd2JpbmRnZW5f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AEG45sAANgIAQbjmwABBsObAADYCAEHM5sAAQcDmwAA2AgBBwObAAEG45sAANgIAQdTmwABByObAADYCAEHI5sAAQcDmwAA2AgBB3ObAAEHQ5sAANgIAQdDmwABByObAADYCAEHY5sAAQdDmwAA2AgBB5ObAAEHY5sAANgIAQeDmwABB2ObAADYCAEHs5sAAQeDmwAA2AgBB6ObAAEHg5sAANgIAQfTmwABB6ObAADYCAEHw5sAAQejmwAA2AgBB/ObAAEHw5sAANgIAQfjmwABB8ObAADYCAEGE58AAQfjmwAA2AgBBgOfAAEH45sAANgIAQYznwABBgOfAADYCAEGI58AAQYDnwAA2AgBBlOfAAEGI58AANgIAQZDnwABBiOfAADYCAEGc58AAQZDnwAA2AgBBpOfAAEGY58AANgIAQZjnwABBkOfAADYCAEGs58AAQaDnwAA2AgBBoOfAAEGY58AANgIAQbTnwABBqOfAADYCAEGo58AAQaDnwAA2AgBBvOfAAEGw58AANgIAQbDnwABBqOfAADYCAEHE58AAQbjnwAA2AgBBuOfAAEGw58AANgIAQcznwABBwOfAADYCAEHA58AAQbjnwAA2AgBB1OfAAEHI58AANgIAQcjnwABBwOfAADYCAEHc58AAQdDnwAA2AgBB0OfAAEHI58AANgIAQeTnwABB2OfAADYCAEHY58AAQdDnwAA2AgBB7OfAAEHg58AANgIAQeDnwABB2OfAADYCAEH058AAQejnwAA2AgBB6OfAAEHg58AANgIAQfznwABB8OfAADYCAEHw58AAQejnwAA2AgBBhOjAAEH458AANgIAQfjnwABB8OfAADYCAEGM6MAAQYDowAA2AgBBgOjAAEH458AANgIAQZTowABBiOjAADYCAEGI6MAAQYDowAA2AgBBrOjAACABQQ9qQXhxIgBBCGsiAjYCAEGQ6MAAQYjowAA2AgBBpOjAACAEQShrIgQgASAAa2pBCGoiADYCACACIABBAXI2AgQgASAEakEoNgIEQbjowABBgICAATYCAAwICyACIANJIAEgAk1yDQAgACgCDCIDQQFxDQAgA0EBdiAHRg0DC0G86MAAQbzowAAoAgAiACABIAAgAUkbNgIAIAEgBGohA0GA5sAAIQACQAJAA0AgAyAAKAIAIgZHBEAgACgCCCIADQEM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AgAiASAAKAIEIgAgCyACIAMQggENACABIAQgBSAAKAIMEQQAIQYLIAYLlAYBBX8gAEEIayIBIABBBGsoAgAiA0F4cSIAaiECAkACQCADQQFxDQAgA0ECcUUNASABKAIAIgMgAGohACABIANrIgFBqOjAACgCAEYEQCACKAIEQQNxQQNHDQFBoOjAACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADECYLAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkGs6MAAKAIARg0CIAJBqOjAACgCAEYNAyACIANBeHEiAhAmIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQajowAAoAgBHDQFBoOjAACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgALIABBgAJJDQIgASAAECdBACEBQcDowABBwOjAACgCAEEBayIANgIAIAANBEGI5sAAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQcDowABB/x8gASABQf8fTRs2AgAPC0Gs6MAAIAE2AgBBpOjAAEGk6MAAKAIAIABqIgA2AgAgASAAQQFyNgIEQajowAAoAgAgAUYEQEGg6MAAQQA2AgBBqOjAAEEANgIACyAAQbjowAAoAgAiA00NA0Gs6MAAKAIAIgJFDQNBACEAQaTowAAoAgAiBEEpSQ0CQYDmwAAhAQNAIAIgASgCACIFTwRAIAIgBSABKAIEakkNBAsgASgCCCEBDAALAAtBqOjAACABNgIAQaDowABBoOjAACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgAPCwJAQZjowAAoAgAiAkEBIABBA3Z0IgNxRQRAQZjowAAgAiADcjYCACAAQfgBcUGQ5sAAaiIAIQIMAQsgAEH4AXEiAEGQ5sAAaiECIABBmObAAGooAgAhAAsgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBiObAACgCACIBBEADQCAAQQFqIQAgASgCCCIBDQALC0HA6MAAQf8fIAAgAEH/H00bNgIAIAMgBE8NAEG46MAAQX82AgALC+8EAQh/IwBBIGsiAyQAIAAoAgQhAgJAAkACQAJAAkAgACgCDCIEQQFxRQRAIAEgAmoiASACSQ0BIAQoAhBBAUYNAiAD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RQRAQbirwABBMhDRAQALIAVBCGogASADIAQgAigCEBEDACAAIAUtAAgiATYCCCAAIAUoAgxBACABGzYCBCAAQQAgBS0ACSABGzYCACAFQRBqJAALWwEBfyMAQSBrIgUkACAFIAE2AgQgBSAANgIAIAUgAzYCDCAFIAI2AgggBSAFQQhqrUKAgICA4AyENwMYIAUgBa1CgICAgKAMhDcDEEGmhcAAIAVBEGogBBB/AAtgAQF/IwBBEGsiBCQAIAFFBEBBuKvAAEEyENEBAAsgBEEIaiABIAMgAigCEBEBACAAIAQtAAgiATYCCCAAIAQoAgxBACABGzYCBCAAQQAgBC0ACSABGzYCACAEQRBqJAALXgECfyMAQSBrIgYkACABRQRAQbirwABBMhDRAQALIAZBFGoiByABIAMgBCAFIAIoAhARBQAgBkEIaiAHEFYgBiAGKAIIIAYoAgwQvQEgACAGKQMANwIAIAZBIGokAAtbAQF/IAEoAgAiBEEBcQRAIAAgASAEIAQgAiADEEEPCyAEIAQoAggiAUEBajYCCCABQQBOBEAgACAENgIMIAAgAzYCCCAAIAI2AgQgAEHMrMAANgIADwsQyAEAC0kBAX8jAEEQayICJAAgASAAKAIAIgBBf3NBH3ZBAUEAIAAgAEEfdSIBcyABayACQQZqIgEQICIAIAFqQQogAGsQFSACQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQERAAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQEQUAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQEREAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQERIAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAG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IAEoAgAgASgCBCAAKAIMKAIAIgAoAgAgACgCBBAeCzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQAARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQQAC0UBAX9BGEEEEM4BIgJFBEBBBEEYENQBAAsgAiABNgIUIAIgADYCECACQoCAgICAgICAgH83AgggAkKAgICAwAA3AgAgAgs7AQF/IwBBEGsiASQAIAFBOjYCDCABQTo2AgQgASAANgIIIAEgAEEEajYCAEG0gcAAIAFByK3AABB/AAs2AQF/A0AgACgAACEDIAAgASgAADYAACABIAM2AAAgAEEEaiEAIAFBBGohASACQQFrIgINAAsL7QEBA38gASgCCCICQYCAgBBxRQRAIAJBgICAIHFFBEAgACABEHYPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQCO1UA6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGM1cAAQQIgAiADakEQakEAIAJrEBUgA0EQaiQADwtBACECIwBBEGsiAyQAIAAoAgAhAANAIAIgA2pBD2ogAEEPcS0A/NRAOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBjNXAAEECIAIgA2pBEGpBACACaxAVIANBEGokAAtVAQF/IwBBEGsiAyQAIAMgAjYCDCADIAE2AgggA0EIaiEBIANBDGohAgJAIAAoAgAiAEEBcQRAIAAgASgCACACKAIAEHQMAQsgABCRAQsgA0EQaiQAC1gBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADQQhqIQEgA0EMaiECAkAgACgCACIAQQFxBEAgAEF+cSABKAIAIAIoAgAQdAwBCyAAEJEBCyADQRBqJAALLgACQCADaUEBRyABQYCAgIB4IANrS3INACAAIAEgAyACELcBIgBFDQAgAA8LAAs5AQF/QQEhAgJAIAAgARArDQAgASgCAEGs5MAAQQIgASgCBCgCDBEEAA0AIABBBGogARArIQILIAIL0hECGH8EfiMAQRBrIhEkACARIAE2AgwgESAANgIIAn8gEUEIaiEAIwBBIGsiDSQAAkACfwJAQQBBqKrAACgCABEHACIPBEAgDygCAA0DIA9BfzYCACANQQhqIQ4gACgCACEQIAAoAgQhEiMA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dmFsaWQgdGFnIHZhbHVlOiAwDmJlZ2luIDw9IGVuZCAowAQgPD0gwBApIHdoZW4gc2xpY2luZyBgwAFgwAALYnl0ZSBpbmRleCDAFiBpcyBvdXQgb2YgYm91bmRzIG9mIGDAAWDAAAtieXRlIGluZGV4IMAmIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSDACCAoYnl0ZXMgwAYpIG9mIGDAAWDAACJhZHZhbmNlIG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IGFkdmFuY2luZyBieSDAABZzbGljZSBpbmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhlIGluZGV4IGlzIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAACFjYW5ub3QgYWR2YW5jZSBwYXN0IGByZW1haW5pbmdgOiDABCA8PSDAAEhjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiDAABNpbnZhbGlkIGtleSB2YWx1ZTogwAAZaW52YWxpZCB3aXJlIHR5cGUgdmFsdWU6IMAAElNlcmlhbGl6ZSBmYWlsZWQ6IMAAEEluZmxhdGUgZmFpbGVkOiDAABhQcm90b2J1ZiBkZWNvZGUgZmFpbGVkOiDAAMACOiDAAHNyY1x2ZXJ0ZXgucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGJ5dGVzX211dC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL2lvL2ltcGxzLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xieXRlcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3RocmVhZF9sb2NhbC9ub190aHJlYWRzLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcb3V0cHV0X2J1ZmZlci5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGZsYXRlMi0xLjEuOVxzcmNcYnVmcmVhZGVyLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L251bS5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXHN0cmVhbS5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcd2FzbS1iaW5kZ2VuLTAuMi4xMTdcc3JjXGV4dGVybnJlZi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXGNvcmUucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnVmXHRha2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHNlcmRlLXdhc20tYmluZGdlbi0wLjYuNVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xsaWIucnMAJmNvcHlfZnJvbV9zbGljZTogc291cmNlIHNsaWNlIGxlbmd0aCAowCspIGRvZXMgbm90IG1hdGNoIGRlc3RpbmF0aW9uIHNsaWNlIGxlbmd0aCAowAEpAMALIChvcyBlcnJvciDAASkAE2ludmFsaWQgd2lyZSB0eXBlOiDACyAoZXhwZWN0ZWQgwAEpAMABLsACOiAAaW52YWxpZCB2YXJpbnRMYXlvdXR4eXdpZHRoaGVpZ2h0VHJhbnNmb3JtYWJjZHR4dHlBdWRpb0VudGl0eWF1ZGlvX2tleXN0YXJ0X2ZyYW1lZW5kX2ZyYW1lc3RhcnRfdGltZXRvdGFsX3RpbWVGcmFtZUVudGl0eWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoc2hhcGVzTW92aWVFbnRpdHl2ZXJzaW9ucGFyYW1zaW1hZ2Vzc3ByaXRlc2F1ZGlvc01vdmllUGFyYW1zdmlld19ib3hfd2lkdGh2aWV3X2JveF9oZWlnaHRmcHNmcmFtZXNTaGFwZUVudGl0eXIjdHlwZXNoYXBlcmVjdGVsbGlwc2VzdHlsZXNTcHJpdGVFbnRpdHlpbWFnZV9rZXkAAAAAAP//////////GAwQAEGwmMAAC9MITWFwIGtleSBpcyBub3QgYSBzdHJpbmcgYW5kIGNhbm5vdCBiZSBhbiBvYmplY3Qga2V5AKwCEAANAAAAHAAAABgAAACsAhAADQAAAB0AAAAYAAAArAIQAA0AAAAeAAAAEQAAAKwCEAANAAAAHwAAABEAAACsAhAADQAAACAAAAARAAAArAIQAA0AAAAhAAAAEQAAAKwCEAANAAAAIgAAABIAAACsAhAADQAAACMAAAASAAAArAIQAA0AAAAkAAAAFQAAAKwCEAANAAAAJQAAABgAAACsAhAADQAAACYAAAAYAAAArAIQAA0AAAAnAAAAGAAAAKwCEAANAAAAKAAAABgAAACsAhAADQAAADYAAAAJAAAArAIQAA0AAAA3AAAACQAAAKwCEAANAAAAOAAAAAkAAACsAhAADQAAADkAAAAJAAAArAIQAA0AAAA6AAAACQAAAKwCEAANAAAAOwAAAAkAAACsAhAADQAAADwAAAAJAAAArAIQAA0AAAA9AAAACQAAAKwCEAANAAAAPgAAAAkAAACsAhAADQAAAEIAAAAJAAAArAIQAA0AAABDAAAACQAAAKwCEAANAAAARAAAAAkAAACsAhAADQAAAEUAAAAJAAAArAIQAA0AAABGAAAACQAAAKwCEAANAAAARwAAAAkAAACsAhAADQAAAEgAAAAJAAAArAIQAA0AAABJAAAACQAAAKwCEAANAAAASgAAAAkAAACsAhAADQAAAE4AAAAJAAAArAIQAA0AAABPAAAACQAAAKwCEAANAAAAUAAAAAkAAACsAhAADQAAAFEAAAAJAAAArAIQAA0AAABSAAAACQAAAKwCEAANAAAAUwAAAAkAAACsAhAADQAAAFQAAAAJAAAArAIQAA0AAABVAAAACQAAAKwCEAANAAAAVgAAAAkAAACsAhAADQAAAFoAAAAJAAAArAIQAA0AAABbAAAACQAAAKwCEAANAAAAXAAAAAkAAACsAhAADQAAAF0AAAAJAAAArAIQAA0AAABeAAAACQAAAKwCEAANAAAAXwAAAAkAAACsAhAADQAAAGAAAAAJAAAArAIQAA0AAABhAAAACQAAAKwCEAANAAAAYgAAAAkAAACsAhAADQAAAGYAAAAJAAAArAIQAA0AAABnAAAACQAAAKwCEAANAAAAaAAAAAkAAACsAhAADQAAAGkAAAAJAAAArAIQAA0AAABqAAAACQAAAKwCEAANAAAAawAAAAkAAAByZWN1cnNpb24gbGltaXQgcmVhY2hlZFZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdAAABgAAAAwAAAAPAAAACgAAAAgAAAAMAAAA6w8QAPEPEAD9DxAADBAQABYQEAAeEBAAcmVjdXJzaW9uIGxpbWl0IHJlYWNoZWQAAAAAAP//////////eBAQAEGQocAAC5sKRGVjb2RlZFRyYW5zZm9ybWFiY2R0eHR5RGVjb2RlZEF1ZGlvYXVkaW9fa2V5c3RhcnRfZnJhbWVlbmRfZnJhbWVzdGFydF90aW1ldG90YWxfdGltZURlY29kZWRGcmFtZWFscGhhbGF5b3V0dHJhbnNmb3JtY2xpcF9wYXRoRGVjb2RlZE1vdmlldmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NEZWNvZGVkTGF5b3V0eHl3aWR0aGhlaWdodERlY29kZWRQYXJhbXN2aWV3X2JveF93aWR0aHZpZXdfYm94X2hlaWdodGZwc2ZyYW1lc0RlY29kZWRTcHJpdGVpbWFnZV9rZXlhc3NlcnRpb24gZmFpbGVkOiBuIDw9IHNlbGYuYnVmLmluaXQgLSBzZWxmLmJ1Zi5maWxsZWQAWgYQAFMAAAAVAQAACQAAALkIEABJAAAAsgEAADEAAABoAxAASwAAADYBAAAYAAAAAQAAAAAAAABpbnZhbGlkIHN0cmluZyB2YWx1ZTogZGF0YSBpcyBub3QgVVRGLTggZW5jb2RlZAC0AxAAYAAAAMMCAAAJAAAAY29ycnVwdCBkZWZsYXRlIHN0cmVhbQAA6gQQAGQAAABiAAAAFQAAAGBsZW5gIGdyZWF0ZXIgdGhhbiByZW1haW5pbmfeBxAAYwAAAJgAAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogY250IDw9IHNlbGYubGltaXQA3gcQAGMAAACSAAAACQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWVpbnZhbGlkIHRhZyB2YWx1ZTogMGRlbGltaXRlZCBsZW5ndGggZXhjZWVkZWRidWZmZXIgdW5kZXJmbG93dW5leHBlY3RlZCBlbmQgZ3JvdXAgdGFncmVjdXJzaW9uIGxpbWl0IHJlYWNoZWRpbnZhbGlkIHZhcmludFJnYmFDb2xvcmdyYmFTaGFwZUFyZ3NkU2hhcGVTdHlsZW1pdGVyX2xpbWl0bGluZV9kYXNoX2lpaWZpbGxsaW5lX2NhcHN0cm9rZWxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9qb2luc3Ryb2tlX3dpZHRoRWxsaXBzZUFyZ3N4eXJhZGl1c194cmFkaXVzX3lSZWN0QXJnc3dpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RhdGEgdG9vIHNob3J0IGZvciB6bGliQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQVBBAAXgAAAGsAAAANAAAAYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50VmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0AAAABgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAthQQALwUEADIFBAA1xQQAOEUEADpFBAACAAAAH8JEABqAAAANQAAAA4AAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAFQQQAF4AAABrAAAADQAAAAoGEABPAAAA3wEAABkAAAAAAAAA//////////+gFRAAQbirwAALVWNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkZmFpbGVkIHRvIGRlY29kZSBQcm90b2J1ZiBtZXNzYWdlOiAAQZiswAALpQMBAAAAJgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAJwAAACgAAAApAAAAKgAAACsAAAC0AxAAYAAAADoFAAAyAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAAvAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAtAMQAGAAAABIBQAASQAAAExheW91dEVycm9yAOoJEABeAAAAqgAAAAUAAABhYm9ydAAAAOoJEABeAAAAbgAAAAkAAABvdmVyZmxvd7oCEABkAAAAqQIAABUAAAC6AhAAZAAAAL0CAAAdAAAAOwAAADwAAAA9AAAAPgAAAD8AAACuBhAAbAAAAHwAAAARAAAArgYQAGwAAACJAAAAEQAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXnTcnEjtIHIS91jtwZSgLmiQQAAAAwAAAAEAAAAQgAAAEEAAAAMAAAABAAAAEMAAABCAAAAhBcQAEQAAABFAAAARgAAAEQAAABHAEHIr8AAC2kCAAAAAAAAAAQAAAB0BBAAdQAAACAAAAAJAAAAdAQQAHUAAAAqAAAAEwAAABsHEABsAAAAXgYAACgAAAAbBxAAbAAAAGsGAAA2AAAAGwcQAGwAAABrBgAAGgAAABsHEABsAAAAcwcAAD4AQbywwAALqRsBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACGwcQAGwAAADZBwAATQAAAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYBAREgAIBwkGCgULBAwDDQIOAQ8AGwcQAGwAAAA8BgAALQAAABsHEABsAAAAPAYAABkAAAAbBxAAbAAAAIQGAAAgAAAAAQEBAAQAAAAbBxAAbAAAABECAAAoAAAAAAAAgABAAMAAIACgAGAA4AAQAJAAUADQADAAsABwAPAACACIAEgAyAAoAKgAaADoABgAmABYANgAOAC4AHgA+AAEAIQARADEACQApABkAOQAFACUAFQA1AA0ALQAdAD0AAwAjABMAMwALACsAGwA7AAcAJwAXADcADwAvAB8APwAAgCCAEIAwgAiAKIAYgDiABIAkgBSANIAMgCyAHIA8gAKAIoASgDKACoAqgBqAOoAGgCaAFoA2gA6ALoAegD6AAYAhgBGAMYAJgCmAGYA5gAWAJYAVgDWADYAtgB2APYADgCOAE4AzgAuAK4AbgDuAB4AngBeAN4APgC+AH4A/gABAIEAQQDBACEAoQBhAOEAEQCRAFEA0QAxALEAcQDxAAkAiQBJAMkAKQCpAGkA6QAZAJkAWQDZADkAuQB5APkABQCFAEUAxQAlAKUAZQDlABUAlQBVANUANQC1AHUA9QANAI0ATQDNAC0ArQBtAO0AHQCdAF0A3QA9AL0AfQD9AAMAgwBDAMMAIwCjAGMA4wATAJMAUwDTADMAswBzAPMACwCLAEsAywArAKsAawDrABsAmwBbANsAOwC7AHsA+wAHAIcARwDHACcApwBnAOcAFwCXAFcA1wA3ALcAdwD3AA8AjwBPAM8ALwCvAG8A7wAfAJ8AXwDfAD8AvwB/AP+AAICAgECAwIAggKCAYIDggBCAkIBQgNCAMICwgHCA8IAIgIiASIDIgCiAqIBogOiAGICYgFiA2IA4gLiAeID4gASAhIBEgMSAJICkgGSA5IAUgJSAVIDUgDSAtIB0gPSADICMgEyAzIAsgKyAbIDsgByAnIBcgNyAPIC8gHyA/IACgIKAQoDCgCKAooBigOKAEoCSgFKA0oAygLKAcoDygAqAioBKgMqAKoCqgGqA6oAagJqAWoDagDqAuoB6gPqABoCGgEaAxoAmgKaAZoDmgBaAloBWgNaANoC2gHaA9oAOgI6AToDOgC6AroBugO6AHoCegF6A3oA+gL6AfoD+gAGAgYBBgMGAIYChgGGA4YARgJGAUYDRgDGAsYBxgPGACYCJgEmAyYApgKmAaYDpgBmAmYBZgNmAOYC5gHmA+YAFgIWARYDFgCWApYBlgOWAFYCVgFWA1YA1gLWAdYD1gA2AjYBNgM2ALYCtgG2A7YAdgJ2AXYDdgD2AvYB9gP2AA4CDgEOAw4AjgKOAY4DjgBOAk4BTgNOAM4CzgHOA84ALgIuAS4DLgCuAq4BrgOuAG4CbgFuA24A7gLuAe4D7gAeAh4BHgMeAJ4CngGeA54AXgJeAV4DXgDeAt4B3gPeAD4CPgE+Az4AvgK+Ab4DvgB+An4BfgN+AP4C/gH+A/xsHEABsAAAAhgIAAB0AAAAbBxAAbAAAACIEAAAUAAAAGwcQAGwAAAAjBAAAEgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAzIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAANgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDMpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAADcEAAANAAAAGwcQAGwAAAA5BAAAIgAAABsHEABsAAAAOgQAACYAAAAbBxAAbAAAADsEAAAmAAAAGwcQAGwAAABEBAAAIwAAABsHEABsAAAARAQAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMSA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEYEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAxKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABHBAAADQAAABsHEABsAAAASAQAACIAAAAbBxAAbAAAAEgEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0X3BvcyArIDIgPCBvdXRfc2xpY2UubGVuKCkAGwcQAGwAAABMBAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IChzb3VyY2VfcG9zICsgMikgJiBvdXRfYnVmX3NpemVfbWFzayA8IG91dF9zbGljZS5sZW4oKRsHEABsAAAATQQAAA0AAAAbBxAAbAAAAE4EAAAiAAAAGwcQAGwAAABOBAAADQAAABsHEABsAAAATwQAACYAAAAbBxAAbAAAAE8EAAANAAAAGwcQAGwAAAAsBAAAFwAAAJsFEABuAAAAQgEAABwAAACbBRAAbgAAAHYBAAAwAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAAbV3L1ixQ62N4QaZXcRuLuZq47pFRFJZYz5YA6NKfEoplbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvcm9wZXJh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";let uA=null,_s=null;function XA(){return uA!==null}async function tC(){return uA?!0:_s||(_s=(async()=>{try{return await AC({module_or_path:QQ}),jB(),uA=aQ,!0}catch(g){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",g),!1}})(),_s)}function rQ(g){if(!uA)return null;try{return uA.inflate(g)}catch(A){return null}}function oQ(g){if(!uA)return null;try{return EQ(uA.decode_svga(g))}catch(A){return null}}function Dn(g,A,t){if(!uA)return null;try{return uA.build_batch_vertices(g,A,t)}catch(e){return null}}function EQ(g){var A,t,e,i,I,s,n;const B=g.params,C=B?{viewBoxWidth:(A=B.view_box_width)!=null?A:0,viewBoxHeight:(t=B.view_box_height)!=null?t:0,fps:(e=B.fps)!=null?e:20,frames:(i=B.frames)!=null?i:0}:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},a=new Map,Q=g.images;if(Q instanceof Map)for(const[E,h]of Q)a.set(E,h instanceof Uint8Array?h:new Uint8Array(h));else if(Q&&typeof Q=="object")for(const[E,h]of Object.entries(Q))a.set(E,h instanceof Uint8Array?h:new Uint8Array(h));const o=((I=g.sprites)!=null?I:[]).map(E=>{var h,c;return{imageKey:(h=E.image_key)!=null?h:"",frames:((c=E.frames)!=null?c:[]).map(f=>{var d,u,p,D,y,S,N,x,F,M,W,v;return{alpha:(d=f.alpha)!=null?d:0,layout:f.layout?{x:(u=f.layout.x)!=null?u:0,y:(p=f.layout.y)!=null?p:0,width:(D=f.layout.width)!=null?D:0,height:(y=f.layout.height)!=null?y:0}:null,transform:f.transform?{a:(S=f.transform.a)!=null?S:1,b:(N=f.transform.b)!=null?N:0,c:(x=f.transform.c)!=null?x:0,d:(F=f.transform.d)!=null?F:1,tx:(M=f.transform.tx)!=null?M:0,ty:(W=f.transform.ty)!=null?W:0}:null,clipPath:(v=f.clip_path)!=null?v:""}})}}),r=((s=g.audios)!=null?s:[]).map(E=>{var h,c,f,d,u;return{audioKey:(h=E.audio_key)!=null?h:"",startFrame:(c=E.start_frame)!=null?c:0,endFrame:(f=E.end_frame)!=null?f:0,startTime:(d=E.start_time)!=null?d:0,totalTime:(u=E.total_time)!=null?u:0}});return{version:(n=g.version)!=null?n:"",params:C,images:a,sprites:o,audios:r}}var hQ=Object.defineProperty,cQ=(g,A,t)=>A in g?hQ(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,pn=(g,A,t)=>cQ(g,typeof A!="symbol"?A+"":A,t);class eC{constructor(){pn(this,"floatPoolA",null),pn(this,"floatPoolB",null),pn(this,"uint32Pool",null)}getFloat32(A){var t,e;if(!this.floatPoolA||this.floatPoolA.length<A){const i=Math.max(A,((e=(t=this.floatPoolA)==null?void 0:t.length)!=null?e:0)*2,1024);this.floatPoolA=new Float32Array(i)}return this.floatPoolA}getFloat32B(A){var t,e;if(!this.floatPoolB||this.floatPoolB.length<A){const i=Math.max(A,((e=(t=this.floatPoolB)==null?void 0:t.length)!=null?e:0)*2,1024);this.floatPoolB=new Float32Array(i)}return this.floatPoolB}getUint32(A){var t,e;if(!this.uint32Pool||this.uint32Pool.length<A){const i=Math.max(A,((e=(t=this.uint32Pool)==null?void 0:t.length)!=null?e:0)*2,1024);this.uint32Pool=new Uint32Array(i)}return this.uint32Pool}destroy(){this.floatPoolA=null,this.floatPoolB=null,this.uint32Pool=null}}function LA(g,A,t,e,i,I){const s=1/(g-A),n=1/(t-e),B=1/(i-I),C=new Float32Array(16);return C[0]=-2*s,C[5]=-2*n,C[10]=2*B,C[12]=(g+A)*s,C[13]=(e+t)*n,C[14]=(i+I)*B,C[15]=1,C}function Zs(g,A,t){return g+(A-g)*t}function qn(g,A,t){return g<A?A:g>t?t:g}let lQ=0;function iC(){return`gift_${++lQ}_${Date.now().toString(36)}`}const sn=8;function dQ(g){if(!g||g.trim().length===0)return[];const A=[];let t=[],e=0,i=0,I=0,s=0,n=0,B=0;const C=fQ(g);let a=0;function Q(){return a<C.length?parseFloat(C[a++]):0}for(;a<C.length;)switch(C[a++]){case"M":for(t.length>0&&(A.push(t),t=[]),e=Q(),i=Q(),I=e,s=i,t.push({x:e,y:i});a<C.length&&!isNaN(parseFloat(C[a]));)e=Q(),i=Q(),t.push({x:e,y:i});break;case"m":for(t.length>0&&(A.push(t),t=[]),e+=Q(),i+=Q(),I=e,s=i,t.push({x:e,y:i});a<C.length&&!isNaN(parseFloat(C[a]));)e+=Q(),i+=Q(),t.push({x:e,y:i});break;case"L":for(;a<C.length&&!isNaN(parseFloat(C[a]));)e=Q(),i=Q(),t.push({x:e,y:i});break;case"l":for(;a<C.length&&!isNaN(parseFloat(C[a]));)e+=Q(),i+=Q(),t.push({x:e,y:i});break;case"H":for(;a<C.length&&!isNaN(parseFloat(C[a]));)e=Q(),t.push({x:e,y:i});break;case"h":for(;a<C.length&&!isNaN(parseFloat(C[a]));)e+=Q(),t.push({x:e,y:i});break;case"V":for(;a<C.length&&!isNaN(parseFloat(C[a]));)i=Q(),t.push({x:e,y:i});break;case"v":for(;a<C.length&&!isNaN(parseFloat(C[a]));)i+=Q(),t.push({x:e,y:i});break;case"C":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=Q(),E=Q(),h=Q(),c=Q(),f=Q(),d=Q();Ls(t,e,i,r,E,h,c,f,d),n=h,B=c,e=f,i=d}break}case"c":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=e+Q(),E=i+Q(),h=e+Q(),c=i+Q(),f=e+Q(),d=i+Q();Ls(t,e,i,r,E,h,c,f,d),n=h,B=c,e=f,i=d}break}case"S":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=2*e-n,E=2*i-B,h=Q(),c=Q(),f=Q(),d=Q();Ls(t,e,i,r,E,h,c,f,d),n=h,B=c,e=f,i=d}break}case"s":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=2*e-n,E=2*i-B,h=e+Q(),c=i+Q(),f=e+Q(),d=i+Q();Ls(t,e,i,r,E,h,c,f,d),n=h,B=c,e=f,i=d}break}case"Q":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=Q(),E=Q(),h=Q(),c=Q();pB(t,e,i,r,E,h,c),n=r,B=E,e=h,i=c}break}case"q":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=e+Q(),E=i+Q(),h=e+Q(),c=i+Q();pB(t,e,i,r,E,h,c),n=r,B=E,e=h,i=c}break}case"Z":case"z":e=I,i=s,t.length>0&&(A.push(t),t=[]);break}return t.length>0&&A.push(t),A}function fQ(g){return g.replace(/([A-Za-z])/g," $1 ").replace(/,/g," ").trim().split(/\s+/).filter(A=>A.length>0)}function Ls(g,A,t,e,i,I,s,n,B){for(let C=1;C<=sn;C++){const a=C/sn,Q=1-a,o=Q*Q,r=a*a;g.push({x:o*Q*A+3*o*a*e+3*Q*r*I+r*a*n,y:o*Q*t+3*o*a*i+3*Q*r*s+r*a*B})}}function pB(g,A,t,e,i,I,s){for(let n=1;n<=sn;n++){const B=n/sn,C=1-B;g.push({x:C*C*A+2*C*B*e+B*B*I,y:C*C*t+2*C*B*i+B*B*s})}}function uQ(g){const A=g.length;if(A<3)return[];if(A===3)return[0,1,2];const t=[],e=Array.from({length:A},(n,B)=>B),I=wQ(g)>0;let s=A*A;for(;e.length>3&&s-- >0;){let n=!1;const B=e.length;for(let C=0;C<B;C++){const a=e[(C-1+B)%B],Q=e[C],o=e[(C+1)%B],r=g[a],E=g[Q],h=g[o],c=(E.x-r.x)*(h.y-r.y)-(E.y-r.y)*(h.x-r.x);if(!(I?c>0:c<0))continue;let d=!1;for(let u=0;u<B;u++)if(!(u===(C-1+B)%B||u===C||u===(C+1)%B)&&DQ(g[e[u]],r,E,h)){d=!0;break}if(!d){I?t.push(a,Q,o):t.push(a,o,Q),e.splice(C,1),n=!0;break}}if(!n)break}if(e.length===3){const[n,B,C]=e;I?t.push(n,B,C):t.push(n,C,B)}return t}function wQ(g){let A=0;const t=g.length;for(let e=0;e<t;e++){const i=(e+1)%t;A+=g[e].x*g[i].y,A-=g[i].x*g[e].y}return A*.5}function DQ(g,A,t,e){const i=yn(g,A,t),I=yn(g,t,e),s=yn(g,e,A),n=i<0||I<0||s<0,B=i>0||I>0||s>0;return!(n&&B)}function yn(g,A,t){return(g.x-t.x)*(A.y-t.y)-(A.x-t.x)*(g.y-t.y)}function JA(g){var A;return(A=g.options.objectFit)!=null?A:"contain"}var pQ=Object.defineProperty,yQ=(g,A,t)=>A in g?pQ(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,L=(g,A,t)=>yQ(g,typeof A!="symbol"?A+"":A,t);const mn=2048,gB=class Zn{constructor(){L(this,"pool",new eC),L(this,"vertexBufHandles",[]),L(this,"indexBufHandles",[]),L(this,"clipVertBufHandles",[]),L(this,"clipIdxBufHandles",[]),L(this,"clipSpriteVertBufHandles",[]),L(this,"clipSpriteIdxBufHandles",[]),L(this,"batchDrawCursor",0),L(this,"clipMaskDrawCursor",0),L(this,"clipSpriteDrawCursor",0),L(this,"canvasWidth",0),L(this,"canvasHeight",0),L(this,"projCacheW",0),L(this,"projCacheH",0),L(this,"projCache",null),L(this,"clipMeshCache",new Map),L(this,"clipTransformedVertsScratch",null),L(this,"clipFrameDataScratch",new Float32Array(SA)),L(this,"instancedFrameDataScratch",new Float32Array(mn*SA)),L(this,"clipSpriteVertsScratch",null),L(this,"clipSpriteIndicesScratch",null),L(this,"instancedQuadVB",null),L(this,"instancedQuadIB",null)}beginFrame(A){this.batchDrawCursor=0,this.clipMaskDrawCursor=0,this.clipSpriteDrawCursor=0;const t=A.canvas.width,e=A.canvas.height;this.canvasWidth=t,this.canvasHeight=e}flush(A,t){this.beginFrame(A),this.drawSlots(A,t.values())}drawSlot(A,t){var e;t.type!=="svga"||!((e=t.videoEntity)!=null&&e.atlasTextureHandle)||t.state!=="playing"&&t.state!=="fly"||this.flushGroup(A,[t])}drawSlots(A,t){var e;const i=[];for(const I of t)I.type!=="svga"||!((e=I.videoEntity)!=null&&e.atlasTextureHandle)||I.state!=="playing"&&I.state!=="fly"||i.push(I);i.length!==0&&this.flushGroup(A,i)}flushGroup(A,t){if(t.length===0)return;const e=this.getProjection(),i=[];let I=null;for(const s of t){const n=s.videoEntity,B=n.params.viewBoxWidth,C=n.params.viewBoxHeight,a=s.width/B,Q=s.height/C,o=JA(s);let r,E,h,c;if(o==="fill")r=a*s.scale,E=Q*s.scale,h=B*r,c=C*E;else{r=E=Math.min(a,Q)*s.scale;const d=Math.min(a,Q);h=B*d*s.scale,c=C*d*s.scale}i.length>0&&(this.drawBatch(A,i,I,e),i.length=0,I=null),A.setScissor(s.x,s.y,Math.min(h,s.width),Math.min(c,s.height));for(const f of n.sprites){if(s.currentFrame<0||s.currentFrame>=f.frames.length)continue;const d=f.frames[s.currentFrame];if(d.alpha<.05)continue;const u=this.resolveSpriteTextureBinding(s,f.imageKey);if(!u)continue;const p={slot:s,sprite:f,frame:d,binding:u,sx:r,sy:E},D=d.clipPath,y=D&&D.length>0?this.getClipMesh(D):null,S=!u.override&&(!I||I.id===u.handle.id);y&&y.indices.length>0?(i.length>0&&(this.drawBatch(A,i,I,e),i.length=0,I=null),this.drawClippedSprite(A,p,y,e)):S?(i.push(p),I=u.handle,i.length>=mn&&(this.drawBatch(A,i,I,e),i.length=0,I=null)):(i.length>0&&(this.drawBatch(A,i,I,e),i.length=0,I=null),this.drawSingleSprite(A,p,e))}}i.length>0&&this.drawBatch(A,i,I,e),A.resetScissor()}getProjection(){return this.projCache&&this.projCacheW===this.canvasWidth&&this.projCacheH===this.canvasHeight?this.projCache:(this.projCacheW=this.canvasWidth,this.projCacheH=this.canvasHeight,this.projCache=LA(0,this.canvasWidth,this.canvasHeight,0,-1,1),this.projCache)}drawBatch(A,t,e,i){const I=Math.min(t.length,mn);if(I<1)return;if(A.type==="webgl2"||A.type==="webgpu"){this.drawBatchInstancedWebGL(A,t,I,e,i);return}const s=this.pool.getFloat32(I*SA);for(let f=0;f<I;f++){const{slot:d,frame:u,binding:p,sx:D,sy:y}=t[f];this.packFrameData(s,f,d,u,p,D,y)}const n=I*zA*RA,B=I*us,C=this.pool.getFloat32B(n),a=this.pool.getUint32(B),Q=new Float32Array(s.buffer,0,I*SA),o=new Float32Array(C.buffer,0,n),r=new Uint32Array(a.buffer,0,B);(!XA()||Dn(Q,o,r)===null)&&Ts(Q,o,r);const E=this.batchDrawCursor++,h=this.ensureVertexBuffer(A,E,o),c=this.ensureIndexBuffer(A,E,r);A.draw({shader:"svga-batch",vertexBuffer:h,indexBuffer:c,indexCount:B,textures:[e],uniforms:{u_projection:i,u_atlas:0}})}drawBatchInstancedWebGL(A,t,e,i,I){this.ensureInstancedQuadBuffers(A);const s=this.instancedFrameDataScratch;for(let n=0;n<e;n++){const{slot:B,frame:C,binding:a,sx:Q,sy:o}=t[n];this.packFrameData(s,n,B,C,a,Q,o)}A.draw({shader:"svga-instanced",vertexBuffer:this.instancedQuadVB,indexBuffer:this.instancedQuadIB,indexCount:6,instanceCount:e,instanceData:s.subarray(0,e*SA),textures:[i],uniforms:{u_projection:I,u_atlas:0}})}drawClippedSprite(A,t,e,i){var I,s,n,B,C,a;const{slot:Q,frame:o,binding:r,sx:E,sy:h}=t,c=o.transform,f=((I=c==null?void 0:c.a)!=null?I:1)*E,d=((s=c==null?void 0:c.b)!=null?s:0)*h,u=((n=c==null?void 0:c.c)!=null?n:0)*E,p=((B=c==null?void 0:c.d)!=null?B:1)*h,D=((C=c==null?void 0:c.tx)!=null?C:0)*E+Q.x,y=((a=c==null?void 0:c.ty)!=null?a:0)*h+Q.y,S=e.vertices;(!this.clipTransformedVertsScratch||this.clipTransformedVertsScratch.length<S.length)&&(this.clipTransformedVertsScratch=new Float32Array(S.length));const N=this.clipTransformedVertsScratch;for(let DA=0;DA<S.length;DA+=2){const ks=S[DA],MA=S[DA+1];N[DA]=f*ks+u*MA+D,N[DA+1]=d*ks+p*MA+y}const x=this.clipMaskDrawCursor++,F=this.ensureClipVertexBuffer(A,x,N.subarray(0,S.length)),M=this.ensureClipIndexBuffer(A,x,e.indices),W={shader:"clip-mask",vertexBuffer:F,indexBuffer:M,indexCount:e.indices.length,textures:[],uniforms:{u_projection:i},stencil:"write"};A.draw(W);const v=this.clipFrameDataScratch;this.packFrameData(v,0,Q,o,r,E,h);const _=zA*RA,K=us;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<_)&&(this.clipSpriteVertsScratch=new Float32Array(_)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<K)&&(this.clipSpriteIndicesScratch=new Uint32Array(K));const b=this.clipSpriteVertsScratch,z=this.clipSpriteIndicesScratch;(!XA()||Dn(v,b,z)===null)&&Ts(v,b,z);const tA=this.clipSpriteDrawCursor++,X=this.ensureClipSpriteVertexBuffer(A,tA,b.subarray(0,_)),ZA=this.ensureClipSpriteIndexBuffer(A,tA,z.subarray(0,K)),Bs={shader:"svga-batch",vertexBuffer:X,indexBuffer:ZA,indexCount:K,textures:[r.handle],uniforms:{u_projection:i,u_atlas:0},stencil:"test"};A.draw(Bs);const cA={shader:"clip-mask",vertexBuffer:F,indexBuffer:M,indexCount:e.indices.length,textures:[],uniforms:{u_projection:i},stencil:"clear"};A.draw(cA)}drawSingleSprite(A,t,e){const i=this.clipFrameDataScratch;this.packFrameData(i,0,t.slot,t.frame,t.binding,t.sx,t.sy);const I=zA*RA,s=us;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<I)&&(this.clipSpriteVertsScratch=new Float32Array(I)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<s)&&(this.clipSpriteIndicesScratch=new Uint32Array(s));const n=this.clipSpriteVertsScratch,B=this.clipSpriteIndicesScratch;(!XA()||Dn(i,n,B)===null)&&Ts(i,n,B);const C=this.clipSpriteDrawCursor++,a=this.ensureClipSpriteVertexBuffer(A,C,n.subarray(0,I)),Q=this.ensureClipSpriteIndexBuffer(A,C,B.subarray(0,s));A.draw({shader:"svga-batch",vertexBuffer:a,indexBuffer:Q,indexCount:s,textures:[t.binding.handle],uniforms:{u_projection:e,u_atlas:0}})}packFrameData(A,t,e,i,I,s,n){var B,C,a,Q,o,r,E,h,c,f,d,u;const p=i.layout,D=i.transform,y=I.rect,S=I.handle.width,N=I.handle.height,x=.5/S,F=.5/N,M=I.override;let W=(C=(B=p==null?void 0:p.width)!=null?B:M==null?void 0:M.logicalWidth)!=null?C:0,v=(Q=(a=p==null?void 0:p.height)!=null?a:M==null?void 0:M.logicalHeight)!=null?Q:0,_=0,K=0;if((M==null?void 0:M.mode)==="dynamic"){const Bs=(o=p==null?void 0:p.width)!=null?o:M.logicalWidth,cA=(r=p==null?void 0:p.height)!=null?r:M.logicalHeight;W=M.logicalWidth,v=M.logicalHeight,_=Math.max(0,(Bs-W)*.5),K=Math.max(0,(cA-v)*.5)}const b=t*SA,z=((E=D==null?void 0:D.a)!=null?E:1)*s,tA=((h=D==null?void 0:D.b)!=null?h:0)*n,X=((c=D==null?void 0:D.c)!=null?c:0)*s,ZA=((f=D==null?void 0:D.d)!=null?f:1)*n;A[b]=W,A[b+1]=v,A[b+2]=z,A[b+3]=tA,A[b+4]=X,A[b+5]=ZA,A[b+6]=((d=D==null?void 0:D.tx)!=null?d:0)*s+z*_+X*K+e.x,A[b+7]=((u=D==null?void 0:D.ty)!=null?u:0)*n+tA*_+ZA*K+e.y,A[b+8]=i.alpha,A[b+9]=y.x+x,A[b+10]=y.y+F,A[b+11]=y.x+y.w-x,A[b+12]=y.y+y.h-F}resolveSpriteTextureBinding(A,t){var e,i;const I=(i=(e=A.svgaSlotTextures)==null?void 0:e.get(t))!=null?i:null;if(I)return{handle:I.texture,rect:{x:0,y:0,w:1,h:1},override:I};const s=A.videoEntity,n=s.atlasRects.get(t),B=s.atlasTextureHandle;return!n||!B?null:{handle:B,rect:n,override:null}}getClipMesh(A){var t;if(this.clipMeshCache.has(A))return(t=this.clipMeshCache.get(A))!=null?t:null;const e=dQ(A);if(e.length===0)return this.clipMeshCache.set(A,null),null;const i=[],I=[];for(const n of e){if(n.length<3)continue;const B=i.length/2;for(const a of n)i.push(a.x,a.y);const C=uQ(n);for(const a of C)I.push(a+B)}if(I.length===0)return this.clipMeshCache.set(A,null),null;const s={vertices:new Float32Array(i),indices:new Uint32Array(I)};return this.clipMeshCache.set(A,s),s}ensureVertexBuffer(A,t,e){const i=this.vertexBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"vertex");return this.vertexBufHandles[t]=I,I}}ensureIndexBuffer(A,t,e){const i=this.indexBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"index");return this.indexBufHandles[t]=I,I}}ensureClipVertexBuffer(A,t,e){const i=this.clipVertBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"vertex");return this.clipVertBufHandles[t]=I,I}}ensureClipIndexBuffer(A,t,e){const i=this.clipIdxBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"index");return this.clipIdxBufHandles[t]=I,I}}ensureClipSpriteVertexBuffer(A,t,e){const i=this.clipSpriteVertBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"vertex");return this.clipSpriteVertBufHandles[t]=I,I}}ensureClipSpriteIndexBuffer(A,t,e){const i=this.clipSpriteIdxBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"index");return this.clipSpriteIdxBufHandles[t]=I,I}}ensureInstancedQuadBuffers(A){this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(Zn.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(Zn.INSTANCED_QUAD_INDICES,"index"))}destroy(A){for(const t of this.vertexBufHandles)A.deleteBuffer(t);for(const t of this.indexBufHandles)A.deleteBuffer(t);for(const t of this.clipVertBufHandles)A.deleteBuffer(t);for(const t of this.clipIdxBufHandles)A.deleteBuffer(t);for(const t of this.clipSpriteVertBufHandles)A.deleteBuffer(t);for(const t of this.clipSpriteIdxBufHandles)A.deleteBuffer(t);this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.pool.destroy(),this.clipMeshCache.clear(),this.vertexBufHandles=[],this.indexBufHandles=[],this.clipVertBufHandles=[],this.clipIdxBufHandles=[],this.clipSpriteVertBufHandles=[],this.clipSpriteIdxBufHandles=[],this.instancedQuadVB=null,this.instancedQuadIB=null,this.projCache=null}};L(gB,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));L(gB,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let gC=gB;var mQ=Object.defineProperty,GQ=(g,A,t)=>A in g?mQ(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,aA=(g,A,t)=>GQ(g,typeof A!="symbol"?A+"":A,t);const SQ=4,FQ=128*1024*1024,NQ=2048*1024*1024,RQ="gift-stage-resource-cache",xQ=2,nA="resources",Gn="byUpdatedAt",UQ=3e4;class MQ{constructor(A){aA(this,"maxConcurrent"),aA(this,"active",0),aA(this,"queue",[]),this.maxConcurrent=Math.max(1,A)}setMaxConcurrent(A){this.maxConcurrent=Math.max(1,A),this.drain()}async run(A){this.active>=this.maxConcurrent&&await new Promise(t=>{this.queue.push(t)}),this.active++;try{return await A()}finally{this.active--,this.drain()}}drain(){for(;this.active<this.maxConcurrent&&this.queue.length>0;){const A=this.queue.shift();A==null||A()}}}function bQ(){return typeof indexedDB!="undefined"}function Ds(g){return g.length*2}function kQ(g){let A=0;for(const t of Object.values(g.images))A+=t.byteLength;return A+=Ds(JSON.stringify({version:g.version,params:g.params,sprites:g.sprites,audios:g.audios})),A}function Sn(g){return typeof g=="string"?Ds(g):g.byteLength}class YQ{constructor(){aA(this,"limiter",new MQ(SQ)),aA(this,"pending",new Map),aA(this,"memory",new Map),aA(this,"memoryBytes",0),aA(this,"maxMemoryBytes",FQ),aA(this,"maxPersistentBytes",NQ),aA(this,"dbPromise",null),aA(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,t){const e=`ab:${A}`,i=this.getMemory(e,"arrayBuffer");if(i)return i.slice(0);const I=await this.getPersistent(e,"arrayBuffer");return I?(this.setMemory(e,"arrayBuffer",I,I.byteLength),I.slice(0)):this.getOrCreatePending(e,()=>this.limiter.run(async()=>{const s=await fetch(A,{mode:"cors",signal:t});if(!s.ok)throw new Error(`fetch failed ${s.status}`);const n=await s.arrayBuffer();return this.setMemory(e,"arrayBuffer",n,n.byteLength),this.setPersistent(e,"arrayBuffer",n.slice(0)),n.slice(0)}))}async fetchText(A,t){const e=`text:${A}`,i=this.getMemory(e,"text");if(i!=null)return i;const I=await this.getPersistent(e,"text");return I!=null?(this.setMemory(e,"text",I,Ds(I)),I):this.getOrCreatePending(e,()=>this.limiter.run(async()=>{const s=await fetch(A,{mode:"cors",signal:t});if(!s.ok)throw new Error(`fetch failed ${s.status}`);const n=await s.text();return this.setMemory(e,"text",n,Ds(n)),this.setPersistent(e,"text",n),n}))}async fetchJSON(A,t){const e=`json:${A}`,i=this.getMemory(e,"json");if(i!=null)return i;const I=await this.fetchText(A,t),s=JSON.parse(I);return this.setMemory(e,"json",s,Ds(I)),s}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,t){this.setMemory(A,"svga-payload",t,kQ(t))}getMemoryValue(A,t){return this.getMemory(A,t)}setMemoryValue(A,t,e,i){this.setMemory(A,t,e,i)}getPersistedArrayBuffer(A){return this.getPersistent(A,"arrayBuffer")}setPersistedArrayBuffer(A,t){return this.setPersistent(A,"arrayBuffer",t)}deletePersistedValue(A){return this.deletePersistent(A)}getOrCreatePending(A,t){const e=this.pending.get(A);if(e)return e;const i=t().finally(()=>{this.pending.delete(A)});return this.pending.set(A,i),i}getMemory(A,t){const e=this.memory.get(A);return!e||e.kind!==t?null:(this.memory.delete(A),this.memory.set(A,e),e.value)}setMemory(A,t,e,i){const I=this.memory.get(A);I&&(this.memoryBytes-=I.size,this.memory.delete(A)),this.memory.set(A,{key:A,kind:t,size:Math.max(0,i),value:e}),this.memoryBytes+=Math.max(0,i),this.trimMemory()}trimMemory(){for(;this.memoryBytes>this.maxMemoryBytes&&this.memory.size>0;){const A=this.memory.keys().next().value;if(!A)break;const t=this.memory.get(A);if(!t)break;this.memoryBytes-=t.size,this.memory.delete(A)}}async openDb(){return bQ()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const t=indexedDB.open(RQ,xQ);t.onupgradeneeded=()=>{const e=t.result;let i;e.objectStoreNames.contains(nA)?i=t.transaction.objectStore(nA):i=e.createObjectStore(nA,{keyPath:"key"}),i.indexNames.contains(Gn)||i.createIndex(Gn,"updatedAt",{unique:!1})},t.onsuccess=()=>A(t.result),t.onerror=()=>A(null),t.onblocked=()=>A(null)}catch(t){A(null)}})),this.dbPromise):null}async getPersistent(A,t){const e=await this.openDb();return e?new Promise(i=>{try{const I=e.transaction(nA,"readonly");I.onerror=()=>i(null),I.onabort=()=>i(null);const n=I.objectStore(nA).get(A);n.onsuccess=()=>{const B=n.result;if(!B||B.kind!==t){i(null);return}const C=B.sizeBytes||Sn(B.value);if(Date.now()-B.updatedAt>=UQ&&this.touchPersistent({...B,sizeBytes:C,updatedAt:Date.now()}),t==="arrayBuffer"){i(B.value.slice(0));return}i(B.value)},n.onerror=()=>i(null)}catch(I){i(null)}}):null}async setPersistent(A,t,e){const i=await this.openDb();if(!i)return;const I=Sn(e);await new Promise(s=>{try{const n=i.transaction(nA,"readwrite");n.onerror=()=>s(),n.onabort=()=>s();const C=n.objectStore(nA).put({key:A,kind:t,value:e,sizeBytes:I,updatedAt:Date.now()});C.onsuccess=()=>s(),C.onerror=()=>s()}catch(n){s()}}),this.schedulePersistentTrim()}async touchPersistent(A){const t=await this.openDb();t&&await new Promise(e=>{try{const i=t.transaction(nA,"readwrite");i.onerror=()=>e(),i.onabort=()=>e();const s=i.objectStore(nA).put(A);s.onsuccess=()=>e(),s.onerror=()=>e()}catch(i){e()}})}schedulePersistentTrim(){this.persistentTrimPromise||(this.persistentTrimPromise=this.trimPersistent().finally(()=>{this.persistentTrimPromise=null}))}async trimPersistent(){const A=await this.openDb();A&&await new Promise(t=>{try{const e=A.transaction(nA,"readwrite");e.oncomplete=()=>t(),e.onerror=()=>t(),e.onabort=()=>t();const i=e.objectStore(nA),I=i.index(Gn),s=[];let n=0;const B=I.openCursor();B.onsuccess=()=>{const C=B.result;if(C){const Q=C.value,o=Q.sizeBytes||Sn(Q.value);n+=o,s.push({key:Q.key,sizeBytes:o}),C.continue();return}if(n<=this.maxPersistentBytes)return;let a=n;for(const Q of s){if(a<=this.maxPersistentBytes)break;i.delete(Q.key),a-=Q.sizeBytes}},B.onerror=()=>t()}catch(e){t()}})}async deletePersistent(A){const t=await this.openDb();t&&await new Promise(e=>{try{const i=t.transaction(nA,"readwrite");i.onerror=()=>e(),i.onabort=()=>e();const s=i.objectStore(nA).delete(A);s.onsuccess=()=>e(),s.onerror=()=>e()}catch(i){e()}})}}const rA=new YQ;function _Q(g){rA.configure(g)}function Vn(g){return rA.runLimited(g)}function Rs(g,A){return rA.fetchArrayBuffer(g,A)}function LQ(g,A){return rA.fetchJSON(g,A)}function IB(g){return rA.getSVGAWorkerPayload(g)}function yB(g,A){rA.setSVGAWorkerPayload(g,A)}function JQ(g,A){return rA.getMemoryValue(g,A)}function IC(g,A,t,e){rA.setMemoryValue(g,A,t,e)}function HQ(g){return rA.getPersistedArrayBuffer(g)}function vQ(g,A){return rA.setPersistedArrayBuffer(g,A)}function KQ(g){return rA.deletePersistedValue(g)}async function Wn(g){const A=typeof g=="string"?await LQ(g):g;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 OA(g){const[,,A,t]=g.rgbFrame,e=g.w>0?g.w:A,i=g.h>0?g.h:t;return e>0&&i>0?{w:e,h:i}:{w:g.videoW,h:g.videoH}}function Js(g,A,t){const[e,i,I,s]=g;return{left:e/A,right:(e+I)/A,top:(t-i)/t,bottom:(t-i-s)/t}}var TQ=Object.defineProperty,qQ=(g,A,t)=>A in g?TQ(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,BA=(g,A,t)=>qQ(g,typeof A!="symbol"?A+"":A,t);class sC{constructor(){BA(this,"frameInfo",new Map),BA(this,"pending",new Set),BA(this,"lastHandle",new Map),BA(this,"started",new Set),BA(this,"firstUploaded",new Set),BA(this,"forceTimeFallback",new Set),BA(this,"lastArmAt",new Map),BA(this,"lastCallbackAt",new Map),BA(this,"lastProgressAt",new Map),BA(this,"lastRecoveryAt",new Map),BA(this,"stallLogged",new Set),BA(this,"stagnationLogged",new Set),BA(this,"lastTimeFallback",new Map)}preUpload(A,t){const e=t.currentTime;if(typeof t.requestVideoFrameCallback!="function"||this.forceTimeFallback.has(A)){if(!this.firstUploaded.has(A))return this.firstUploaded.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),typeof t.requestVideoFrameCallback=="function"&&this.debugInfo(A,"initial upload using time fallback",t),!0;const a=this.consumeTimeAdvance(A,e);if(a)this.stagnationLogged.has(A)&&(this.stagnationLogged.delete(A),this.debugInfo(A,"time fallback progress resumed",t));else if(this.forceTimeFallback.has(A)&&!this.stagnationLogged.has(A)&&!t.paused&&!t.ended){const Q=this.lastProgressAt.get(A);Q!==void 0&&performance.now()-Q>1e3&&(this.stagnationLogged.add(A),this.debugWarn(A,"time fallback has no progress",t,{lastProgressAgeMs:Math.round(performance.now()-Q)}))}return a}this.ensureRvf(A,t);const i=performance.now(),I=this.lastCallbackAt.get(A),s=this.lastArmAt.get(A),n=I!=null?I:s,B=this.lastTimeFallback.get(A),C=B!==void 0&&Math.abs(e-B)>1e-4;return this.firstUploaded.has(A)&&n!==void 0&&i-n>500&&!t.paused&&!t.ended&&(this.stallLogged.has(A)||(this.stallLogged.add(A),this.debugWarn(A,"rVFC stalled for slot",t,{stallAgeMs:Math.round(i-n),lastCallbackAgeMs:I!==void 0?Math.round(i-I):null,lastArmAgeMs:s!==void 0?Math.round(i-s):null,timeAdvanced:C})),this.tryRecoverStalledPlayback(A,t,e,i),this.started.delete(A),this.ensureRvf(A,t),C)?(this.forceTimeFallback.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),this.debugWarn(A,"switching slot to time fallback",t,{stallAgeMs:Math.round(i-n)}),!0):this.firstUploaded.has(A)?this.pending.has(A)?(this.pending.delete(A),this.lastTimeFallback.set(A,e),this.markProgress(A),(this.stallLogged.delete(A)||this.forceTimeFallback.delete(A))&&(this.stagnationLogged.delete(A),this.debugInfo(A,"rVFC progress resumed",t)),!0):!1:(this.firstUploaded.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),!0)}getFrameInfo(A){return this.frameInfo.get(A)}ensureRvf(A,t){if(this.started.has(A))return;this.started.add(A);const e=(i,I)=>{this.frameInfo.set(A,I),this.lastCallbackAt.set(A,performance.now()),this.pending.add(A);try{this.lastArmAt.set(A,performance.now());const s=t.requestVideoFrameCallback(e);this.lastHandle.set(A,s)}catch(s){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback re-arm failed",t)}};try{this.lastArmAt.set(A,performance.now());const i=t.requestVideoFrameCallback(e);this.lastHandle.set(A,i)}catch(i){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback initial arm failed",t)}}consumeTimeAdvance(A,t){const e=this.lastTimeFallback.get(A);return e===void 0||Math.abs(t-e)>1e-4?(this.lastTimeFallback.set(A,t),this.markProgress(A),!0):!1}markProgress(A){this.lastProgressAt.set(A,performance.now())}tryRecoverStalledPlayback(A,t,e,i){if(t.paused||t.ended||t.seeking)return;const I=this.lastRecoveryAt.get(A);if(I!==void 0&&i-I<1500)return;this.lastRecoveryAt.set(A,i);const s=Number.isFinite(t.duration)?t.duration:NaN,n=Number.isFinite(s)&&s>0,B=n?Math.min(Math.max(0,s-.001),e+.001):e;try{n&&B>e&&(t.currentTime=B)}catch(C){}try{const C=t.play();C&&typeof C.catch=="function"&&C.catch(()=>{})}catch(C){}this.debugWarn(A,"attempting stalled video recovery",t,{currentTime:e,nudgedTime:B,readyState:t.readyState})}debugInfo(A,t,e,i){console.info("[GiftStage:VideoGate]",t,this.snapshot(A,e,i))}debugWarn(A,t,e,i){console.warn("[GiftStage:VideoGate]",t,this.snapshot(A,e,i))}snapshot(A,t,e){return{slotId:A,currentTime:Number(t.currentTime.toFixed(3)),readyState:t.readyState,networkState:t.networkState,paused:t.paused,ended:t.ended,seeking:t.seeking,playbackRate:t.playbackRate,forceTimeFallback:this.forceTimeFallback.has(A),pending:this.pending.has(A),...e}}release(A,t){if(!t){this.cleanup(A);return}const e=this.lastHandle.get(A);if(e!=null)try{t.cancelVideoFrameCallback(e)}catch(i){}this.cleanup(A)}cleanup(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)}}function nn(g,A,t,e){const i=e!=null?e:new Float32Array(4);return!t||g<=0||A<=0?(i[0]=0,i[1]=0,i[2]=1,i[3]=1,i):(i[0]=t.x/g,i[1]=t.y/A,i[2]=t.w/g,i[3]=t.h/A,i)}const ZQ=3;function VQ(){return typeof document!="undefined"&&typeof document.createElement=="function"}function ps(g,A){if(!VQ())throw new Error("Canvas rendering is unavailable in this environment");const t=document.createElement("canvas");return t.width=Math.max(1,Math.round(g)),t.height=Math.max(1,Math.round(A)),t}function ys(g){const A=g.getContext("2d");if(!A)throw new Error("Failed to acquire 2D canvas context");return A}function nC(g){return!!g&&typeof g=="object"&&typeof g.text=="string"}function WQ(g){return!!g&&typeof g=="object"&&"image"in g}function BC(g){return!!g&&typeof g=="object"&&"image"in g}function mB(g){return!g||typeof g!="object"?!1:typeof HTMLCanvasElement!="undefined"&&g instanceof HTMLCanvasElement||typeof HTMLImageElement!="undefined"&&g instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&g instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&g instanceof OffscreenCanvas||typeof HTMLVideoElement!="undefined"&&g instanceof HTMLVideoElement||typeof VideoFrame!="undefined"&&g instanceof VideoFrame||typeof ImageData!="undefined"&&g instanceof ImageData}function Bn(g){return new Promise((A,t)=>{const e=new Image;e.crossOrigin="anonymous",e.onload=()=>A(e),e.onerror=()=>t(new Error(`Failed to load image: ${g}`)),e.src=g})}function HA(g){if(typeof HTMLImageElement!="undefined"&&g instanceof HTMLImageElement)return{width:g.naturalWidth||g.width,height:g.naturalHeight||g.height};if(typeof HTMLCanvasElement!="undefined"&&g instanceof HTMLCanvasElement)return{width:g.width,height:g.height};if(typeof OffscreenCanvas!="undefined"&&g instanceof OffscreenCanvas)return{width:g.width,height:g.height};if(typeof ImageBitmap!="undefined"&&g instanceof ImageBitmap)return{width:g.width,height:g.height};if(g&&typeof g=="object"&&"videoWidth"in g&&typeof g.videoWidth=="number")return{width:g.videoWidth,height:g.videoHeight};if(g&&typeof g=="object"&&"displayWidth"in g&&typeof g.displayWidth=="number")return{width:g.displayWidth||g.codedWidth,height:g.displayHeight||g.codedHeight};const A=g;return typeof A.width=="number"&&typeof A.height=="number"?{width:A.width,height:A.height}:{width:0,height:0}}function zn(g){if(typeof ImageData!="undefined"&&g instanceof ImageData){const A=ps(g.width,g.height);return ys(A).putImageData(g,0,0),A}return g}function zQ(g){const A=/^\[(.+)\]$/.exec(g);return A?A[1]:g}function jQ(g,A,t){var e,i;return g?typeof g=="string"?{font:g,color:t}:{font:(e=g.font)!=null?e:A,color:(i=g.color)!=null?i:t}:{font:A,color:t}}function CC(g,A,t,e){var i;const I=Math.max(1,e.scale||1),s=Math.max(1,Math.round(g)),n=Math.max(1,Math.round(A)),B=ps(s*I,n*I),C=ys(B),a=(i=e.color)!=null?i:"#ffffff",Q=Math.max(1,t.length),o=Math.max(12,Math.min(s/Q,n-8)),r=`${e.style==="b"?"bold ":""}${o*I}px Arial`,E=jQ(e.fontStyle,r,a);return C.clearRect(0,0,B.width,B.height),C.textAlign="center",C.textBaseline="middle",C.font=E.font,C.fillStyle=E.color,C.fillText(t,B.width/2,B.height/2),{canvas:B,logicalWidth:s,logicalHeight:n}}function XQ(g,A){var t,e,i,I;const s=g.sprites.find(a=>a.imageKey===A);if(!s)return{width:1,height:1};let n=0,B=0;for(const a of s.frames)n=Math.max(n,(e=(t=a.layout)==null?void 0:t.width)!=null?e:0),B=Math.max(B,(I=(i=a.layout)==null?void 0:i.height)!=null?I:0);if(n>0&&B>0)return{width:n,height:B};const C=g.atlasRects.get(A);return C?{width:C.w,height:C.h}:{width:1,height:1}}async function OQ(g,A,t){var e,i,I;if(nC(g)){const n=CC(A,t,g.text,{scale:(e=g.scale)!=null?e:ZQ,color:g.color,style:g.style,fontStyle:g.fontStyle});return{source:n.canvas,mode:(i=g.mode)!=null?i:"dynamic",logicalWidth:n.logicalWidth,logicalHeight:n.logicalHeight}}if(WQ(g)){const n=typeof g.image=="string"?await Bn(g.image):g.image,B=HA(n);return{source:n,mode:(I=g.mode)!=null?I:"replace",logicalWidth:Math.max(1,B.width||A),logicalHeight:Math.max(1,B.height||t)}}if(typeof g=="string"){const n=await Bn(g),B=HA(n);return{source:n,mode:"replace",logicalWidth:Math.max(1,B.width||A),logicalHeight:Math.max(1,B.height||t)}}const s=HA(g);return{source:g,mode:"replace",logicalWidth:Math.max(1,s.width||A),logicalHeight:Math.max(1,s.height||t)}}async function PQ(g,A,t){const e=new Map;if(!t)return e;for(const[i,I]of Object.entries(t)){const s=XQ(A,i),n=await OQ(I,s.width,s.height),B=g.createTexture(n.source,{width:HA(n.source).width||s.width,height:HA(n.source).height||s.height,filter:"linear"});e.set(i,{texture:B,mode:n.mode,logicalWidth:n.logicalWidth,logicalHeight:n.logicalHeight})}return e}function $Q(g,A){var t,e;if(!A)return;const i=String(g.srcId),I=g.srcTag,s=zQ(g.srcTag);return(e=(t=A[I])!=null?t:A[s])!=null?e:A[i]}function Ar(g,A){var t,e,i,I;const s=typeof A=="string"?A:A.text,n=g.w&&g.w>0?g.w:1,B=g.h&&g.h>0?g.h:1,C=CC(n,B,s,{scale:typeof A=="string"?1:(t=A.scale)!=null?t:1,color:typeof A=="string"?g.color:(e=A.color)!=null?e:g.color,style:typeof A=="string"?g.style:(i=A.style)!=null?i:g.style,fontStyle:typeof A=="string"?g.fontStyle:(I=A.fontStyle)!=null?I:g.fontStyle});return{source:C.canvas,width:C.canvas.width,height:C.canvas.height}}async function tr(g){return typeof g=="string"?Bn(g):BC(g)?typeof g.image=="string"?Bn(g.image):zn(g.image):zn(g)}async function er(g,A){const t=new Map;if(!g.src||g.src.length===0||!A)return t;for(const e of g.src){const i=$Q(e,A);if(i==null)continue;if(e.srcType==="txt"){if(mB(i)){const C=zn(i),a=HA(C);t.set(String(e.srcId),{source:C,width:Math.max(1,a.width),height:Math.max(1,a.height)});continue}const B=Ar(e,typeof i=="string"||nC(i)?i:String(i));t.set(String(e.srcId),B);continue}const I=mB(i)||typeof i=="string"||BC(i)?i:null;if(!I)continue;const s=await tr(I),n=HA(s);t.set(String(e.srcId),{source:s,width:Math.max(1,n.width),height:Math.max(1,n.height)})}return t}function ir(g){var A;const t=new Map;for(const e of(A=g.frame)!=null?A:[]){const i=[...e.obj].sort((I,s)=>{var n,B;return((n=I.z)!=null?n:0)-((B=s.z)!=null?B:0)});t.set(e.i,i)}return t}function gr(g,A){const t=ps(g,A),e=ps(g,A),i=ps(1,1);return{compositeCanvas:t,compositeCtx:ys(t),rawCanvas:e,rawCtx:ys(e),scratchCanvas:i,scratchCtx:ys(i)}}function GB(g,A,t,e){var i;if(!g.compositeCanvas||!g.compositeCtx||!g.rawCanvas||!g.rawCtx||!g.scratchCanvas||!g.scratchCtx)throw new Error("VAP CPU compositor state is incomplete");const{info:I}=A,s=I.videoW||g.width,n=I.videoH||g.height,[B,C,a,Q]=I.rgbFrame,[o,r,E,h]=I.aFrame;(g.rawCanvas.width!==s||g.rawCanvas.height!==n)&&(g.rawCanvas.width=s,g.rawCanvas.height=n),g.rawCtx.clearRect(0,0,s,n),g.rawCtx.drawImage(t,0,0,s,n);const c=g.rawCtx.getImageData(0,0,s,n).data,f=g.compositeCtx.createImageData(g.width,g.height),d=f.data;for(let p=0;p<g.height;p++){const D=Math.min(n-1,Math.max(0,C+Math.floor(p/g.height*Q))),y=Math.min(n-1,Math.max(0,r+Math.floor(p/g.height*h)));for(let S=0;S<g.width;S++){const N=Math.min(s-1,Math.max(0,B+Math.floor(S/g.width*a))),x=Math.min(s-1,Math.max(0,o+Math.floor(S/g.width*E))),F=(D*s+N)*4,M=(y*s+x)*4,W=c[M]/255,v=(p*g.width+S)*4;d[v]=Math.round(c[F]*W),d[v+1]=Math.round(c[F+1]*W),d[v+2]=Math.round(c[F+2]*W),d[v+3]=Math.round(W*255)}}const u=(i=g.frameMap.get(e))!=null?i:[];for(const p of u){const D=g.resources.get(String(p.srcId));if(!D)continue;const[y,S,N,x]=p.frame,[F,M,W,v]=p.mFrame;if(N<=0||x<=0||W<=0||v<=0)continue;(g.scratchCanvas.width!==N||g.scratchCanvas.height!==x)&&(g.scratchCanvas.width=Math.max(1,Math.round(N)),g.scratchCanvas.height=Math.max(1,Math.round(x))),g.scratchCtx.clearRect(0,0,g.scratchCanvas.width,g.scratchCanvas.height),g.scratchCtx.drawImage(D.source,0,0,g.scratchCanvas.width,g.scratchCanvas.height);const _=g.scratchCtx.getImageData(0,0,g.scratchCanvas.width,g.scratchCanvas.height).data,K=Math.max(0,Math.floor(y)),b=Math.max(0,Math.floor(S)),z=Math.min(g.width,Math.ceil(y+N)),tA=Math.min(g.height,Math.ceil(S+x));for(let X=b;X<tA;X++){const ZA=Math.min(g.scratchCanvas.height-1,Math.max(0,Math.floor((X-S)/x*g.scratchCanvas.height))),Bs=Math.min(n-1,Math.max(0,M+Math.floor((X-S)/x*v)));for(let cA=K;cA<z;cA++){const DA=Math.min(g.scratchCanvas.width-1,Math.max(0,Math.floor((cA-y)/N*g.scratchCanvas.width))),ks=Math.min(s-1,Math.max(0,F+Math.floor((cA-y)/N*W))),MA=(ZA*g.scratchCanvas.width+DA)*4,oa=(Bs*s+ks)*4,Ea=_[MA+3]/255,ha=c[oa]/255,VA=Ea*ha;if(VA<=0)continue;const pA=(X*g.width+cA)*4,ca=_[MA]/255*VA,la=_[MA+1]/255*VA,da=_[MA+2]/255*VA,fa=d[pA+3]/255,Ys=1-VA;d[pA]=Math.round((ca+d[pA]/255*Ys)*255),d[pA+1]=Math.round((la+d[pA+1]/255*Ys)*255),d[pA+2]=Math.round((da+d[pA+2]/255*Ys)*255),d[pA+3]=Math.round((VA+fa*Ys)*255)}}}return g.compositeCtx.putImageData(f,0,0),g.compositeCanvas}var Ir=Object.defineProperty,sr=(g,A,t)=>A in g?Ir(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,Z=(g,A,t)=>sr(g,typeof A!="symbol"?A+"":A,t);const Fn=1024,Nn=28,bs=class cs{constructor(){Z(this,"quadVB",null),Z(this,"quadIB",null),Z(this,"rgbaQuadVB",null),Z(this,"rgbaQuadIB",null),Z(this,"quadIndices",new Uint32Array([0,1,2,0,2,3])),Z(this,"wcDbgFirstDraw",new Set),Z(this,"wcDbgNullWarns",new Map),Z(this,"htmlGate",new sC),Z(this,"lastWcFrameRef",new Map),Z(this,"scratchAtlasRemap",new Float32Array(4)),Z(this,"instancePackScratch",new Float32Array(Fn*Nn)),Z(this,"scratchTransform",new Float32Array(16)),Z(this,"projCacheW",0),Z(this,"projCacheH",0),Z(this,"projCache",null)}syncVideoTextures(A,t){var e,i;let I=!1;const s=new Set;for(const n of t.values()){if(n.type!=="vap"||n.state!=="playing"&&n.state!=="fly"||!n.videoTextureHandle)continue;if(n.vapMixState){I=this.syncMixedTexture(A,n)||I;continue}const B=n.webcodecsPlayback;if(B){const C=(e=n.wcPlaybackTime)!=null?e:0,a=B.getFrameForTime(C);if(this.wcDbgFirstDraw.has(n.id)||(this.wcDbgFirstDraw.add(n.id),console.info("[GiftStage:WC] VAP first draw",{giftId:n.id,state:n.state,t:C,hasFrame:!!a,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),a){if(this.lastWcFrameRef.get(n.id)!==a){const o=n.wcAtlasRect;o?A.updateTextureRegion(n.videoTextureHandle,a,o.x,o.y,o.w,o.h):A.updateTexture(n.videoTextureHandle,a),this.lastWcFrameRef.set(n.id,a),I=!0}}else{const Q=((i=this.wcDbgNullWarns.get(n.id))!=null?i:0)+1;this.wcDbgNullWarns.set(n.id,Q),Q<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:n.id,t:C,n:Q})}}else if(n.videoElement){const C=this.getHtmlVideoGateId(n);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,n.videoElement)&&(A.updateTexture(n.videoTextureHandle,n.videoElement),I=!0)}}return I}draw(A,t){(A.type==="webgpu"||A.type==="webgl2")&&this.drawInstancedVapBatches(A,t);for(const e of t.values())if(e.type==="vap"&&!(e.state!=="playing"&&e.state!=="fly")&&!(!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle)){if(e.vapMixState){this.drawMixedGeometry(A,e);continue}A.type==="webgpu"||A.type==="webgl2"||this.drawGeometry(A,e)}}drawSlot(A,t){if(t.type==="vap"&&!(t.state!=="playing"&&t.state!=="fly")&&!(!t.videoElement&&!t.webcodecsPlayback||!t.videoTextureHandle)){if(t.vapMixState){this.drawMixedGeometry(A,t);return}this.drawGeometry(A,t)}}drawInstancedVapBatches(A,t){const e=[];for(const C of t.values())C.type!=="vap"||C.state!=="playing"&&C.state!=="fly"||C.vapMixState||!C.videoElement&&!C.webcodecsPlayback||!C.videoTextureHandle||!C.vapConfig||e.push(C);if(e.length===0)return;this.quadVB||(this.quadVB=A.createBuffer(cs.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(cs.QUAD_INDICES,"index"));const i=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===i&&this.projCacheH===I?s=this.projCache:(this.projCacheW=i,this.projCacheH=I,this.projCache=LA(0,i,I,0,-1,1),s=this.projCache);const n=new Map;for(const C of e){const a=C.videoTextureHandle.id;let Q=n.get(a);Q||(Q=[],n.set(a,Q)),Q.push(C)}const B=this.instancePackScratch;for(const C of n.values())for(let a=0;a<C.length;a+=Fn){const Q=Math.min(Fn,C.length-a);for(let r=0;r<Q;r++)this.fillVapInstanceData(C[a+r],B,r*Nn);const o=B.subarray(0,Q*Nn);A.draw({shader:"vap-instanced",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,instanceCount:Q,instanceData:o,textures:[C[a].videoTextureHandle],uniforms:{u_projection:s,u_video:0}})}}fillVapInstanceData(A,t,e){var i,I,s,n;const B=A.vapConfig,{info:C}=B,a=C.videoW>0?C.videoW:(I=(i=A.webcodecsPlayback)==null?void 0:i.videoWidth)!=null?I:1,Q=C.videoH>0?C.videoH:(n=(s=A.webcodecsPlayback)==null?void 0:s.videoHeight)!=null?n:1,o=this.scratchTransform,r=A.width*A.scale,E=A.height*A.scale;let h=r,c=E;if(JA(A)==="contain"){const{w:y,h:S}=OA(C);if(y>0&&S>0){const N=Math.min(r/y,E/S);h=y*N,c=S*N}}o[0]=h,o[5]=c,o[10]=1,o[12]=A.x,o[13]=A.y,o[15]=1,t.set(o,e);const f=Js(C.rgbFrame,a,Q),d=Js(C.aFrame,a,Q),u=A.videoTextureHandle,p=nn(u.width,u.height,A.wcAtlasRect,this.scratchAtlasRemap);t.set(p,e+16);const D=e+20;t[D+0]=f.left,t[D+1]=f.right,t[D+2]=f.top,t[D+3]=f.bottom,t[D+4]=d.left,t[D+5]=d.right,t[D+6]=d.top,t[D+7]=d.bottom}syncMixedTexture(A,t){var e;const i=t.vapConfig,I=t.vapMixState;if(!i||!I||!t.videoTextureHandle)return!1;const s=this.getMixedFrameIndex(t,i),n=t.webcodecsPlayback;if(n){const C=(e=t.wcPlaybackTime)!=null?e:0,a=n.getFrameForTime(C);if(!a||I.lastSourceRef===a&&I.lastFrameIndex===s)return!1;const Q=I.composer?I.composer.render(a,s):GB(I,i,a,s);return A.updateTexture(t.videoTextureHandle,Q),I.lastSourceRef=a,I.lastFrameIndex=s,!0}if(!t.videoElement||!this.htmlGate.preUpload(t.id,t.videoElement)&&I.lastFrameIndex===s)return!1;const B=I.composer?I.composer.render(t.videoElement,s):GB(I,i,t.videoElement,s);return A.updateTexture(t.videoTextureHandle,B),I.lastSourceRef=t.videoElement,I.lastFrameIndex=s,!0}releaseHtmlVideo(A){var t;this.htmlGate.release(this.getHtmlVideoGateId(A),(t=A.videoElement)!=null?t:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A)}drawGeometry(A,t){var e,i,I,s;const n=A.canvas.width,B=A.canvas.height;let C;this.projCache&&this.projCacheW===n&&this.projCacheH===B?C=this.projCache:(this.projCacheW=n,this.projCacheH=B,this.projCache=LA(0,n,B,0,-1,1),C=this.projCache);const a=t.vapConfig;if(!a){console.warn("[GiftStage:WC] VAP vapConfig missing — draw skipped",{giftId:t.id});return}const{info:Q}=a,o=Q.videoW>0?Q.videoW:(i=(e=t.webcodecsPlayback)==null?void 0:e.videoWidth)!=null?i:1,r=Q.videoH>0?Q.videoH:(s=(I=t.webcodecsPlayback)==null?void 0:I.videoHeight)!=null?s:1,E=new Float32Array(16),h=t.width*t.scale,c=t.height*t.scale;let f=h,d=c;if(JA(t)==="contain"){const{w:x,h:F}=OA(Q);if(x>0&&F>0){const M=Math.min(h/x,c/F);f=x*M,d=F*M}}E[0]=f,E[5]=d,E[10]=1,E[12]=t.x,E[13]=t.y,E[15]=1;const u=Js(Q.rgbFrame,o,r),p=Js(Q.aFrame,o,r),D=t.videoTextureHandle,y=nn(D.width,D.height,t.wcAtlasRect,this.scratchAtlasRemap),S=new Float32Array([0,0,u.left,u.top,p.left,p.top,1,0,u.right,u.top,p.right,p.top,1,1,u.right,u.bottom,p.right,p.bottom,0,1,u.left,u.bottom,p.left,p.bottom]);this.quadVB=this.ensureBuffer(A,this.quadVB,S,"vertex"),this.quadIB=this.ensureBuffer(A,this.quadIB,this.quadIndices,"index");const N={shader:"vap",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,textures:[t.videoTextureHandle],uniforms:{u_projection:C,u_transform:E,u_atlasRemap:y,u_video:0}};A.draw(N)}drawMixedGeometry(A,t){var e;const i=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===i&&this.projCacheH===I?s=this.projCache:(this.projCacheW=i,this.projCacheH=I,this.projCache=LA(0,i,I,0,-1,1),s=this.projCache);const n=t.vapConfig;if(!n||!t.vapMixState||!t.videoTextureHandle)return;const B=this.scratchTransform,C=t.width*t.scale,a=t.height*t.scale;let Q=C,o=a;if(JA(t)==="contain"){const{w:E,h}=OA(n.info);if(E>0&&h>0){const c=Math.min(C/E,a/h);Q=E*c,o=h*c}}B[0]=Q,B[5]=o,B[10]=1,B[12]=t.x,B[13]=t.y,B[15]=1;const r=(e=t.vapMixState)!=null&&e.composer||A.type==="webgpu"?cs.RGBA_QUAD_VERTS_WEBGPU:cs.RGBA_QUAD_VERTS_WEBGL;this.rgbaQuadVB=this.ensureBuffer(A,this.rgbaQuadVB,r,"vertex"),this.rgbaQuadIB=this.ensureBuffer(A,this.rgbaQuadIB,this.quadIndices,"index"),A.draw({shader:"rgba-textured",vertexBuffer:this.rgbaQuadVB,indexBuffer:this.rgbaQuadIB,indexCount:6,textures:[t.videoTextureHandle],uniforms:{u_projection:s,u_transform:B,u_atlasRemap:new Float32Array([0,0,1,1]),u_video:0}})}ensureBuffer(A,t,e,i){return t?(A.updateBuffer(t,e),t):A.createBuffer(e,i)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.rgbaQuadVB&&A.deleteBuffer(this.rgbaQuadVB),this.rgbaQuadIB&&A.deleteBuffer(this.rgbaQuadIB),this.quadVB=null,this.quadIB=null,this.rgbaQuadVB=null,this.rgbaQuadIB=null,this.lastWcFrameRef.clear(),this.projCache=null,this.projCacheW=0,this.projCacheH=0}getMixedFrameIndex(A,t){var e,i,I;if(A.webcodecsPlayback)return Math.max(0,Math.round(((e=A.wcPlaybackTime)!=null?e:0)*t.info.fps));const s=this.htmlGate.getFrameInfo(A.id),n=s==null?void 0:s.mediaTime;return typeof n=="number"&&Number.isFinite(n)&&n>=0?Math.max(0,Math.round(n*t.info.fps)):Math.max(0,Math.round(((I=(i=A.videoElement)==null?void 0:i.currentTime)!=null?I:0)*t.info.fps))}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}};Z(bs,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));Z(bs,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));Z(bs,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));Z(bs,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let aC=bs;var nr=Object.defineProperty,Br=(g,A,t)=>A in g?nr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,iA=(g,A,t)=>Br(g,typeof A!="symbol"?A+"":A,t);const Rn=1024,xn=20,sB=class YA{constructor(){iA(this,"quadVB",null),iA(this,"quadIB",null),iA(this,"instancePackScratch",new Float32Array(Rn*xn)),iA(this,"projCacheW",0),iA(this,"projCacheH",0),iA(this,"projCache",null),iA(this,"scratchTransform",new Float32Array(16)),iA(this,"wcDbgFirstDraw",new Set),iA(this,"wcDbgNullWarns",new Map),iA(this,"htmlGate",new sC),iA(this,"lastWcFrameRef",new Map),iA(this,"scratchAtlasRemap",new Float32Array(4))}static alphaVideoContentSize(A){if(A.webcodecsPlayback){const I=A.webcodecsPlayback.videoWidth,s=A.webcodecsPlayback.videoHeight;return{w:I>0?I*.5:0,h:s}}const t=A.videoElement,e=t.videoWidth,i=t.videoHeight;return{w:e>0?e*.5:0,h:i}}syncVideoTextures(A,t){var e,i;let I=!1;const s=new Set;for(const n of t.values()){if(n.type!=="alphaVideo"||n.state!=="playing"&&n.state!=="fly"||!n.videoTextureHandle)continue;const B=n.webcodecsPlayback;if(B){const C=(e=n.wcPlaybackTime)!=null?e:0,a=B.getFrameForTime(C);if(this.wcDbgFirstDraw.has(n.id)||(this.wcDbgFirstDraw.add(n.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:n.id,state:n.state,t:C,hasFrame:!!a,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),a){if(this.lastWcFrameRef.get(n.id)!==a){const o=n.wcAtlasRect;o?A.updateTextureRegion(n.videoTextureHandle,a,o.x,o.y,o.w,o.h):A.updateTexture(n.videoTextureHandle,a),this.lastWcFrameRef.set(n.id,a),I=!0}}else{const Q=((i=this.wcDbgNullWarns.get(n.id))!=null?i:0)+1;this.wcDbgNullWarns.set(n.id,Q),Q<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:n.id,t:C,n:Q})}}else if(n.videoElement){const C=this.getHtmlVideoGateId(n);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,n.videoElement)&&(A.updateTexture(n.videoTextureHandle,n.videoElement),I=!0)}}return I}draw(A,t){if(A.type==="webgpu"||A.type==="webgl2"){this.drawInstancedAlphaBatches(A,t);return}for(const e of t.values())e.type==="alphaVideo"&&(e.state!=="playing"&&e.state!=="fly"||!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle||this.drawGeometry(A,e))}drawSlot(A,t){t.type==="alphaVideo"&&(t.state!=="playing"&&t.state!=="fly"||!t.videoElement&&!t.webcodecsPlayback||!t.videoTextureHandle||this.drawGeometry(A,t))}drawInstancedAlphaBatches(A,t){const e=[];for(const C of t.values())C.type==="alphaVideo"&&(C.state!=="playing"&&C.state!=="fly"||!C.videoElement&&!C.webcodecsPlayback||!C.videoTextureHandle||e.push(C));if(e.length===0)return;this.quadVB||(this.quadVB=A.createBuffer(YA.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(YA.QUAD_INDICES,"index"));const i=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===i&&this.projCacheH===I?s=this.projCache:(this.projCacheW=i,this.projCacheH=I,this.projCache=LA(0,i,I,0,-1,1),s=this.projCache);const n=new Map;for(const C of e){const a=C.videoTextureHandle.id;let Q=n.get(a);Q||(Q=[],n.set(a,Q)),Q.push(C)}const B=this.instancePackScratch;for(const C of n.values())for(let a=0;a<C.length;a+=Rn){const Q=Math.min(Rn,C.length-a);for(let r=0;r<Q;r++)this.fillAlphaInstanceData(C[a+r],B,r*xn);const o=B.subarray(0,Q*xn);A.draw({shader:"alpha-video-instanced",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,instanceCount:Q,instanceData:o,textures:[C[a].videoTextureHandle],uniforms:{u_projection:s,u_video:0}})}}fillAlphaInstanceData(A,t,e){const i=this.scratchTransform,I=A.width*A.scale,s=A.height*A.scale;let n=I,B=s;if(JA(A)==="contain"){const{w:Q,h:o}=YA.alphaVideoContentSize(A);if(Q>0&&o>0){const r=Math.min(I/Q,s/o);n=Q*r,B=o*r}}i[0]=n,i[5]=B,i[10]=1,i[12]=A.x,i[13]=A.y,i[15]=1,t.set(i,e);const C=A.videoTextureHandle,a=nn(C.width,C.height,A.wcAtlasRect,this.scratchAtlasRemap);t.set(a,e+16)}releaseHtmlVideo(A){var t;this.htmlGate.release(this.getHtmlVideoGateId(A),(t=A.videoElement)!=null?t:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A)}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}drawGeometry(A,t){const e=A.canvas.width,i=A.canvas.height;let I;this.projCache&&this.projCacheW===e&&this.projCacheH===i?I=this.projCache:(this.projCacheW=e,this.projCacheH=i,this.projCache=LA(0,e,i,0,-1,1),I=this.projCache);const s=this.scratchTransform,n=t.width*t.scale,B=t.height*t.scale;let C=n,a=B;if(JA(t)==="contain"){const{w:E,h}=YA.alphaVideoContentSize(t);if(E>0&&h>0){const c=Math.min(n/E,B/h);C=E*c,a=h*c}}s[0]=C,s[5]=a,s[10]=1,s[12]=t.x,s[13]=t.y,s[15]=1,this.quadVB||(this.quadVB=A.createBuffer(YA.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(YA.QUAD_INDICES,"index"));const Q=t.videoTextureHandle,o=nn(Q.width,Q.height,t.wcAtlasRect,this.scratchAtlasRemap),r={shader:"alpha-video",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,textures:[Q],uniforms:{u_projection:I,u_transform:s,u_atlasRemap:o,u_video:0}};A.draw(r)}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()}};iA(sB,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));iA(sB,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let QC=sB;var Cr=Object.defineProperty,ar=(g,A,t)=>A in g?Cr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,Qr=(g,A,t)=>ar(g,A+"",t);class rC{constructor(){Qr(this,"animations",[])}startFly(A,t,e,i,I,s,n){this.animations=this.animations.filter(B=>B.giftId!==A.id),this.animations.push({giftId:A.id,startX:A.x,startY:A.y,startScale:A.scale,targetX:t,targetY:e,targetScale:i,startTime:-1,duration:I,easing:s,onComplete:n})}update(A){var t;for(let e=this.animations.length-1;e>=0;e--){const i=this.animations[e];i.startTime<0&&(i.startTime=A),qn((A-i.startTime)/i.duration,0,1)>=1&&((t=i.onComplete)==null||t.call(i),this.animations.splice(e,1))}}getAnimatedState(A,t){const e=this.animations.find(s=>s.giftId===A);if(!e)return null;e.startTime<0&&(e.startTime=t);const i=qn((t-e.startTime)/e.duration,0,1),I=e.easing(i);return{x:Zs(e.startX,e.targetX,I),y:Zs(e.startY,e.targetY,I),scale:Zs(e.startScale,e.targetScale,I)}}hasAnimation(A){return this.animations.some(t=>t.giftId===A)}hasActiveAnimations(){return this.animations.length>0}cancelForGift(A){this.animations=this.animations.filter(t=>t.giftId!==A)}destroy(){this.animations=[]}}var rr=Object.defineProperty,or=(g,A,t)=>A in g?rr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,as=(g,A,t)=>or(g,typeof A!="symbol"?A+"":A,t);class oC{constructor(){as(this,"ctx",null),as(this,"decodedCache",new Map),as(this,"activeSources",[]),as(this,"globalMute",!1),as(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,t){if(this.decodedCache.has(A))return;const e=this.ensureContext();try{const i=await e.decodeAudioData(t.slice(0));this.decodedCache.set(A,i)}catch(i){}}tickFrame(A,t,e){if(A.videoEntity&&!A.options.mute){for(const i of A.videoEntity.audios)t===i.startFrame&&this.startAudio(A.id,i);for(let i=this.activeSources.length-1;i>=0;i--){const I=this.activeSources[i];if(I.giftId===A.id&&t>=I.endFrame){try{I.source.stop()}catch(s){}I.source.disconnect(),this.activeSources.splice(i,1)}}}}startAudio(A,t){var e;const i=this.decodedCache.get(t.audioKey);if(!i)return;const I=this.ensureContext(),s=I.createBufferSource();s.buffer=i,s.connect((e=this.gainNode)!=null?e:I.destination),s.start(0,t.startTime/1e3),s.onended=()=>{s.disconnect();const n=this.activeSources.findIndex(B=>B.source===s&&B.giftId===A);n>=0&&this.activeSources.splice(n,1)},this.activeSources.push({source:s,endFrame:t.endFrame,giftId:A})}stopAllForGift(A){for(let t=this.activeSources.length-1;t>=0;t--)if(this.activeSources[t].giftId===A){try{this.activeSources[t].source.stop()}catch(e){}this.activeSources[t].source.disconnect(),this.activeSources.splice(t,1)}}setMute(A){this.globalMute=A,this.gainNode&&(this.gainNode.gain.value=A?0:1)}destroy(){var A;for(const t of this.activeSources){try{t.source.stop()}catch(e){}t.source.disconnect()}this.activeSources=[],this.decodedCache.clear(),(A=this.ctx)==null||A.close().catch(()=>{}),this.ctx=null,this.gainNode=null}}function Er(g){return g}function hr(g){return g*g}function cr(g){return g*(2-g)}function lr(g){return g<.5?2*g*g:-1+(4-2*g)*g}function xs(g){const A=g-1;return A*A*A+1}function dr(g){return g<.5?4*g*g*g:(g-1)*(2*g-2)*(2*g-2)+1}function fr(g){return 1+2.70158*Math.pow(g-1,3)+1.70158*Math.pow(g-1,2)}var ur=Object.defineProperty,wr=(g,A,t)=>A in g?ur(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,WA=(g,A,t)=>wr(g,typeof A!="symbol"?A+"":A,t);class Dr{constructor(A,t){WA(this,"atlasW"),WA(this,"atlasH"),WA(this,"rowY",0),WA(this,"rowH",0),WA(this,"rowX",0),WA(this,"slots",new Map),this.atlasW=Math.max(64,Math.floor(A)),this.atlasH=Math.max(64,Math.floor(t))}get size(){return{w:this.atlasW,h:this.atlasH}}tryAllocate(A,t,e){const i=Math.max(1,Math.ceil(t)),I=Math.max(1,Math.ceil(e));if(i>this.atlasW||I>this.atlasH||(this.rowX+i>this.atlasW&&(this.rowY+=this.rowH,this.rowX=0,this.rowH=0),this.rowY+I>this.atlasH))return null;const s={x:this.rowX,y:this.rowY,w:i,h:I};return this.slots.set(A,s),this.rowX+=i,this.rowH=Math.max(this.rowH,I),s}release(A){this.slots.delete(A)}getRect(A){return this.slots.get(A)}}function pr(g){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(g.trim());if(!A)return null;const t=Number(A[1]);return Number.isFinite(t)?t:null}function SB(g,A,t){if(typeof g=="number")return g;const e=pr(g);if(e==null)throw new Error(`Invalid percentage coordinate: ${g}`);return A*e/100-t/2}function EC(g,A,t,e,i,I){return{x:SB(g,i,t),y:SB(A,I,e)}}var yr=Object.defineProperty,mr=(g,A,t)=>A in g?yr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,eA=(g,A,t)=>mr(g,typeof A!="symbol"?A+"":A,t);class hC{constructor(A){eA(this,"backend"),eA(this,"svgaBatch"),eA(this,"vapRenderer"),eA(this,"alphaVideoRenderer"),eA(this,"postAnimator"),eA(this,"audioManager"),eA(this,"slots"),eA(this,"handles"),eA(this,"rafId",null),eA(this,"lastTime",0),eA(this,"running",!1),eA(this,"forceNextDraw",!0),eA(this,"wcAtlas",null),eA(this,"wcDbgTickOnce",new Set),this.backend=A,this.svgaBatch=new gC,this.vapRenderer=new aC,this.alphaVideoRenderer=new QC,this.postAnimator=new rC,this.audioManager=new oC,this.slots=new Map,this.handles=new Map}addSlot(A,t){this.slots.set(A.id,A),this.handles.set(A.id,t),this.forceNextDraw=!0,this.running||this.start()}removeSlot(A){var t,e,i,I,s,n,B;const C=this.slots.get(A);if(C){if(C.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(C),this.vapRenderer.clearWebCodecsFrameRef(C.id),(e=(t=C.vapMixState)==null?void 0:t.composer)==null||e.destroy()),C.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(C),this.alphaVideoRenderer.clearWebCodecsFrameRef(C.id)),this.audioManager.stopAllForGift(A),this.postAnimator.cancelForGift(A),(i=C.videoEntity)!=null&&i.atlasTextureHandle&&!C.releaseSharedSVGAAsset&&this.backend.deleteTexture(C.videoEntity.atlasTextureHandle),C.svgaSlotTextures){for(const a of C.svgaSlotTextures.values())this.backend.deleteTexture(a.texture);C.svgaSlotTextures.clear()}C.wcAtlasRect?this.releaseWebCodecsAtlasSlot(C.id):C.videoTextureHandle&&!C.releaseSharedVideoTexture&&this.backend.deleteTexture(C.videoTextureHandle),C.webcodecsPlayback&&(C.webcodecsPlayback.destroy(),C.webcodecsPlayback=null),C.videoElement&&!C.releaseSharedVideoPlayback&&(C.videoElement.pause(),C.videoElement.removeAttribute("src"),C.videoElement.load(),C.videoElement.remove()),(I=C.releaseSharedVideoPlayback)==null||I.call(C),C.releaseSharedVideoPlayback=null,(s=C.releaseSharedSVGAAsset)==null||s.call(C),C.releaseSharedSVGAAsset=null,(n=C.releaseSharedVideoTexture)==null||n.call(C),C.releaseSharedVideoTexture=null,(B=C.releaseMediaSource)==null||B.call(C),C.releaseMediaSource=null}this.slots.delete(A),this.handles.delete(A),this.forceNextDraw=!0,this.slots.size===0&&this.stop()}getSlot(A){return this.slots.get(A)}get activeCount(){return this.slots.size}getSlotIds(){return Array.from(this.slots.keys())}tryAllocateWebCodecsAtlas(A,t,e,i){if(!i||i.width<=0||i.height<=0)return null;if(this.wcAtlas&&(this.wcAtlas.cfg.width!==i.width||this.wcAtlas.cfg.height!==i.height)){if(this.wcAtlas.ref>0)return null;this.backend.deleteTexture(this.wcAtlas.handle),this.wcAtlas=null}this.wcAtlas||(this.wcAtlas={cfg:{width:i.width,height:i.height},handle:this.backend.createEmptyTexture(i.width,i.height,{filter:"linear"}),alloc:new Dr(i.width,i.height),ref:0});const I=this.wcAtlas.alloc.tryAllocate(A,t,e);return I?(this.wcAtlas.ref++,{handle:this.wcAtlas.handle,rect:I}):null}releaseWebCodecsAtlasSlot(A){const t=this.wcAtlas;t&&(t.alloc.release(A),t.ref=Math.max(0,t.ref-1),t.ref<=0&&(this.backend.deleteTexture(t.handle),this.wcAtlas=null))}syncSlotLayoutFromOptions(){const{sx:A,sy:t}=fs(this.backend.canvas);this.forceNextDraw=!0;for(const e of this.slots.values()){if(this.postAnimator.hasAnimation(e.id))continue;const i=e.options,I=EC(i.x,i.y,i.width,i.height,this.backend.canvas.clientWidth,this.backend.canvas.clientHeight);e.x=I.x*A,e.y=I.y*t,e.width=i.width*A,e.height=i.height*t}}start(){this.running||(this.running=!0,this.lastTime=performance.now(),this.rafId=requestAnimationFrame(A=>this.renderLoop(A)))}stop(){this.running=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}pause(){this.stop()}resume(){this.slots.size>0&&!this.running&&this.start()}renderLoop(A){var t,e;if(!this.running)return;const i=(A-this.lastTime)/1e3;this.lastTime=A;let I=this.forceNextDraw;for(const[s,n]of this.slots){if(n.paused||n.state==="loading")continue;const B=this.handles.get(s),C=this.postAnimator.getAnimatedState(s,A);if(C&&(n.x=C.x,n.y=C.y,n.scale=C.scale,I=!0),n.type==="svga"&&n.videoEntity&&n.state==="playing"&&(I=this.tickSVGA(n,i,B,A)||I),(n.type==="vap"||n.type==="alphaVideo")&&n.webcodecsPlayback&&n.state==="playing"){this.tickWebCodecs(n,i,B);const a=n.webcodecsPlayback;(e=a.ensureDecodedThrough)==null||e.call(a,(t=n.wcPlaybackTime)!=null?t:0)}}if(I=this.postAnimator.hasActiveAnimations()||I,this.postAnimator.update(A),I=this.removeFinished()||I,I=this.vapRenderer.syncVideoTextures(this.backend,this.slots)||I,I=this.alphaVideoRenderer.syncVideoTextures(this.backend,this.slots)||I,I){this.forceNextDraw=!1,this.backend.beginFrame(),this.svgaBatch.beginFrame(this.backend);for(const s of this.getRenderLayers())this.drawLayer(s);this.backend.endFrame()}this.rafId=requestAnimationFrame(s=>this.renderLoop(s))}tickWebCodecs(A,t,e){var i,I;const s=A.webcodecsPlayback;if(!s)return;const n=Math.max(s.duration,1e-9);if(!Number.isFinite(n))return;const B=(i=A.options.loop)!=null?i:1;let C=((I=A.wcPlaybackTime)!=null?I:0)+t;if(B===0){A.wcPlaybackTime=(C%n+n)%n,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B);return}for(;C>=n;)if(C-=n,A.loopCount++,A.loopCount>=B){A.wcPlaybackTime=n-1e-6,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B),this.onWebCodecsPlaybackComplete(A,e);return}A.wcPlaybackTime=C,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B)}wcDbgLogTickOnce(A,t,e,i){var I;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:t,wcPlaybackTime:e,loop:(I=A.options.loop)!=null?I:1,maxLoopsEffective:i,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,t){var e,i,I,s;if((e=A.onComplete)==null||e.call(A,t),A.flyTo){A.state="fly";const{sx:n,sy:B}=fs(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*n,A.flyTo.y*B,(i=A.scaleTo)!=null?i:.3,(I=A.flyDuration)!=null?I:600,(s=A.easing)!=null?s:xs,()=>{var C;A.state="finished",(C=A.onFlyComplete)==null||C.call(A,t)})}else A.state="finished"}tickSVGA(A,t,e,i){var I;const s=A.videoEntity,n=s.params.fps;if(n<=0)return!1;const B=1/n,C=A.currentFrame;for(A.accumulatedTime+=t;A.accumulatedTime>=B;)if(A.accumulatedTime-=B,A.currentFrame++,A.currentFrame>=s.params.frames){A.loopCount++;const a=(I=A.options.loop)!=null?I:1;if(a===0)A.currentFrame=0;else if(A.loopCount>=a){A.currentFrame=s.params.frames-1,this.onGiftPlayComplete(A,e,i);break}else A.currentFrame=0}return A.currentFrame=Math.max(0,Math.min(A.currentFrame,s.params.frames-1)),A.currentFrame!==C&&this.audioManager.tickFrame(A,A.currentFrame,e),A.currentFrame!==C}onGiftPlayComplete(A,t,e){var i,I,s,n;if((i=A.onComplete)==null||i.call(A,t),A.flyTo){A.state="fly";const{sx:B,sy:C}=fs(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*B,A.flyTo.y*C,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(n=A.easing)!=null?n:xs,()=>{var a;A.state="finished",(a=A.onFlyComplete)==null||a.call(A,t)})}else A.state="finished"}removeFinished(){const A=[];for(const[t,e]of this.slots)e.state==="finished"&&A.push(t);for(const t of A)this.removeSlot(t);return A.length>0}getRenderOrderedSlots(){const A=[];for(const t of this.slots.values())t.state!=="playing"&&t.state!=="fly"||A.push(t);return A.sort((t,e)=>{var i,I,s,n;const B=(i=t.zIndex)!=null?i:0,C=(I=e.zIndex)!=null?I:0;return B!==C?B-C:((s=t.renderOrder)!=null?s:0)-((n=e.renderOrder)!=null?n:0)}),A}getRenderLayers(){var A,t;const e=this.getRenderOrderedSlots();if(e.length===0)return[];const i=[];let I=[],s=(A=e[0].zIndex)!=null?A:0;for(const n of e){const B=(t=n.zIndex)!=null?t:0;I.length>0&&B!==s&&(i.push(I),I=[],s=B),I.push(n)}return I.length>0&&i.push(I),i}drawLayer(A){if(A.length===0)return;let t=A[0].type,e=this.getBatchKey(A[0]),i=[];for(const I of A){const s=this.getBatchKey(I);(I.type!==t||s!==e)&&i.length>0&&(this.drawSlotRun(t,i),i=[]),t=I.type,e=s,i.push(I)}i.length>0&&this.drawSlotRun(t,i)}drawSlotRun(A,t){if(t.length===0)return;const e=new Map;for(const i of t)e.set(i.id,i);switch(A){case"svga":this.svgaBatch.drawSlots(this.backend,t);break;case"vap":this.vapRenderer.draw(this.backend,e);break;case"alphaVideo":this.alphaVideoRenderer.draw(this.backend,e);break}}getBatchKey(A){var t,e,i,I,s,n,B;switch(A.type){case"svga":{const C=(i=(e=(t=A.videoEntity)==null?void 0:t.atlasTextureHandle)==null?void 0:e.id)!=null?i:-1,a=A.svgaSlotTextures&&A.svgaSlotTextures.size>0?1:0;return`svga:${C}:${a}`}case"vap":{const C=(s=(I=A.videoTextureHandle)==null?void 0:I.id)!=null?s:-1;return`vap:${A.vapMixState?"mixed":"video"}:${C}`}case"alphaVideo":return`alpha:${(B=(n=A.videoTextureHandle)==null?void 0:n.id)!=null?B:-1}`}}destroy(){this.stop();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.postAnimator.destroy(),this.audioManager.destroy(),this.backend.destroy()}}async function cC(g){if(typeof DecompressionStream!="undefined"){try{return await Un(g,"deflate")}catch(A){}try{return await Un(g.slice(2),"deflate-raw")}catch(A){}return await Un(g.slice(2,-4),"deflate-raw")}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function Un(g,A){const t=new DecompressionStream(A),e=t.writable.getWriter(),i=t.readable.getReader();e.write(new Uint8Array(g.buffer,g.byteOffset,g.byteLength)),e.close();const I=[];let s=0;for(;;){const{done:C,value:a}=await i.read();if(C)break;I.push(a),s+=a.length}const n=new Uint8Array(s);let B=0;for(const C of I)n.set(C,B),B+=C.length;return n}var Gr=Object.defineProperty,Sr=(g,A,t)=>A in g?Gr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,Mn=(g,A,t)=>Sr(g,typeof A!="symbol"?A+"":A,t);const Fr=0,Nr=1,Rr=2,xr=5;class nB{constructor(A,t=0,e){Mn(this,"view"),Mn(this,"pos"),Mn(this,"end"),this.view=new DataView(A.buffer,A.byteOffset,A.byteLength),this.pos=t,this.end=t+(e!=null?e:A.byteLength)}get remaining(){return this.end-this.pos}readVarint(){let A=0,t=0;for(;this.pos<this.end;){const e=this.view.getUint8(this.pos++);if(A|=(e&127)<<t,(e&128)===0)return A>>>0;t+=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(),t=this.view.byteOffset+this.pos;this.pos+=A;const e=this.view.buffer.slice(t,t+A);return new Uint8Array(e)}readString(){const A=this.readBytes();return new TextDecoder().decode(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 Fr:this.readVarint();break;case Nr:this.pos+=8;break;case Rr:this.pos+=this.readVarint();break;case xr:this.pos+=4;break}}sub(A){const t=new nB(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,t}}function Ur(g){const A={viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.viewBoxWidth=g.readFloat();break;case 2:A.viewBoxHeight=g.readFloat();break;case 3:A.fps=g.readSignedVarint();break;case 4:A.frames=g.readSignedVarint();break;default:g.skip(t.wire)}}return A}function Mr(g){const A={x:0,y:0,width:0,height:0};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.x=g.readFloat();break;case 2:A.y=g.readFloat();break;case 3:A.width=g.readFloat();break;case 4:A.height=g.readFloat();break;default:g.skip(t.wire)}}return A}function br(g){const A={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.a=g.readFloat();break;case 2:A.b=g.readFloat();break;case 3:A.c=g.readFloat();break;case 4:A.d=g.readFloat();break;case 5:A.tx=g.readFloat();break;case 6:A.ty=g.readFloat();break;default:g.skip(t.wire)}}return A}function kr(g){const A={alpha:0,layout:null,transform:null,clipPath:""};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.alpha=g.readFloat();break;case 2:{const e=g.readVarint();A.layout=Mr(g.sub(e));break}case 3:{const e=g.readVarint();A.transform=br(g.sub(e));break}case 4:A.clipPath=g.readString();break;default:g.skip(t.wire)}}return A}function Yr(g){const A={imageKey:"",frames:[]};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.imageKey=g.readString();break;case 2:{const e=g.readVarint();A.frames.push(kr(g.sub(e)));break}default:g.skip(t.wire)}}return A}function _r(g){const A={audioKey:"",startFrame:0,endFrame:0,startTime:0,totalTime:0};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.audioKey=g.readString();break;case 2:A.startFrame=g.readSignedVarint();break;case 3:A.endFrame=g.readSignedVarint();break;case 4:A.startTime=g.readSignedVarint();break;case 5:A.totalTime=g.readSignedVarint();break;default:g.skip(t.wire)}}return A}function Lr(g){let A="",t=new Uint8Array(0);for(;g.remaining>0;){const e=g.readTag();if(!e)break;switch(e.field){case 1:A=g.readString();break;case 2:t=g.readBytes();break;default:g.skip(e.wire)}}return{key:A,value:t}}function lC(g){const A=new nB(g),t={version:"",params:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},images:new Map,sprites:[],audios:[]};for(;A.remaining>0;){const e=A.readTag();if(!e)break;switch(e.field){case 1:t.version=A.readString();break;case 2:{const i=A.readVarint();t.params=Ur(A.sub(i));break}case 3:{const i=A.readVarint(),{key:I,value:s}=Lr(A.sub(i));t.images.set(I,s);break}case 4:{const i=A.readVarint();t.sprites.push(Yr(A.sub(i)));break}case 5:{const i=A.readVarint();t.audios.push(_r(A.sub(i)));break}default:A.skip(e.wire)}}return t}const dC=`async function QA(I) {
554
+ `,Y={svgaBatch:{vert:ya,frag:cB},svgaInstanced:{vert:ma,frag:cB},vap:{vert:Ga,frag:lB},vapInstanced:{vert:Ra,frag:lB},alphaVideo:{vert:Sa,frag:dB},alphaVideoInstanced:{vert:xa,frag:dB},rgbaTextured:{vert:Fa,frag:Na},clipMask:{vert:Ua,frag:Ma}},lA={svgaBatch:ba,svgaInstanced:va,vap:ka,vapInstanced:Ja,alphaVideo:Ya,alphaVideoInstanced:La,rgbaTextured:_a,clipMask:Ha};var Ka=Object.defineProperty,Ta=(g,A,t)=>A in g?Ka(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,G=(g,A,t)=>Ta(g,typeof A!="symbol"?A+"":A,t);const qa=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),Za=new Float32Array([0,0,1,1]),O=class q{constructor(A,t,e=!0){G(this,"type","webgpu"),G(this,"canvas"),G(this,"maxTextureSize"),G(this,"adapter"),G(this,"device"),G(this,"context"),G(this,"format"),G(this,"encoder",null),G(this,"passEncoder",null),G(this,"nextId",1),G(this,"buffers",new Map),G(this,"textures",new Map),G(this,"pipelines",new Map),G(this,"sampler"),G(this,"uniformBuffer"),G(this,"uniformSlotStride",256),G(this,"maxUniformSlots",8192),G(this,"uniformSlotIndex",0),G(this,"lastDrawPipeline",null),G(this,"lastStencilRef",-1),G(this,"lastVertexBufferId",-1),G(this,"lastIndexBufferId",-1),G(this,"uniformScratch144",new Float32Array(36)),G(this,"depthStencilTexture",null),G(this,"depthStencilView",null),G(this,"msaaColorTexture",null),G(this,"msaaColorView",null),G(this,"lastCanvasWidth",0),G(this,"lastCanvasHeight",0),G(this,"lastDepthStencilSampleCount",0),G(this,"msaaSampleCount",1),G(this,"wantAntialias"),G(this,"configuredCanvasWidth",0),G(this,"configuredCanvasHeight",0),G(this,"dummyTexture"),G(this,"dummyTextureView"),G(this,"videoUploadCanvas",null),G(this,"videoUploadCtx",null),G(this,"videoElementPreferCanvasBridge",!1),G(this,"videoFramePreferCanvasBridge",!1),G(this,"textureBindGroupCache",new Map),G(this,"instancedAlphaProjBuffer"),G(this,"instancedSvgaInstanceBuffer"),G(this,"instancedAlphaInstanceBuffer"),G(this,"instancedVapInstanceBuffer"),G(this,"storageBindOffsetAlign",256),G(this,"instancedSvgaSlotBytes"),G(this,"instancedAlphaSlotBytes"),G(this,"instancedVapSlotBytes"),G(this,"instancedSvgaRingOffset",0),G(this,"instancedAlphaRingOffset",0),G(this,"instancedVapRingOffset",0),G(this,"instancedProjectionCache",new Float32Array(16)),G(this,"instancedProjectionValid",!1),G(this,"lastInstancedTextureBindGroup",null),this.canvas=A,this.adapter=t,this.maxTextureSize=t.limits.maxTextureDimension2D,this.wantAntialias=e}async init(){this.device=await this.adapter.requestDevice(),this.device.onuncapturederror=t=>{console.error("[WebGPU Error]",t.error.message)},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;const A=this.storageBindOffsetAlign;this.instancedSvgaSlotBytes=Math.ceil(q.INSTANCED_SVGA_CHUNK_BYTES/A)*A,this.instancedAlphaSlotBytes=Math.ceil(q.INSTANCED_ALPHA_CHUNK_BYTES/A)*A,this.instancedVapSlotBytes=Math.ceil(q.INSTANCED_VAP_CHUNK_BYTES/A)*A,this.uniformBuffer=this.device.createBuffer({size:this.uniformSlotStride*this.maxUniformSlots,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedAlphaProjBuffer=this.device.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedSvgaInstanceBuffer=this.device.createBuffer({size:q.INSTANCED_STORAGE_RING_SLOTS*this.instancedSvgaSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.instancedAlphaInstanceBuffer=this.device.createBuffer({size:q.INSTANCED_STORAGE_RING_SLOTS*this.instancedAlphaSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.instancedVapInstanceBuffer=this.device.createBuffer({size:q.INSTANCED_STORAGE_RING_SLOTS*this.instancedVapSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),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}ensureDepthStencil(A,t){var e,i;this.depthStencilTexture&&this.lastCanvasWidth===A&&this.lastCanvasHeight===t&&this.lastDepthStencilSampleCount===this.msaaSampleCount||((e=this.depthStencilTexture)==null||e.destroy(),(i=this.msaaColorTexture)==null||i.destroy(),this.msaaColorTexture=null,this.msaaColorView=null,this.depthStencilTexture=this.device.createTexture({size:[A,t],format:"depth24plus-stencil8",sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.depthStencilView=this.depthStencilTexture.createView(),this.msaaSampleCount>1&&(this.msaaColorTexture=this.device.createTexture({size:[A,t],format:this.format,sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.msaaColorView=this.msaaColorTexture.createView()),this.lastCanvasWidth=A,this.lastCanvasHeight=t,this.lastDepthStencilSampleCount=this.msaaSampleCount)}initPipelines(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:144}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:64}}]});this.createTexturedPipeline("svga-batch:none",lA.svgaBatch,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"none"),this.createTexturedPipeline("svga-batch:test",lA.svgaBatch,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"test"),this.createClipMaskPipeline(t),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("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"),this.createInstancedSvgaPipeline(),this.createInstancedAlphaVideoPipeline(),this.createVapInstancedPipeline()}createInstancedSvgaPipeline(){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:q.SVGA_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:lA.svgaInstanced}),i={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"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),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("svga-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedSvgaInstanceBuffer,offset:0,size:q.INSTANCED_SVGA_CHUNK_BYTES}}]}),needsTexture:!0})}createVapInstancedPipeline(){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:q.VAP_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:lA.vapInstanced}),i={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"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,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("vap-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedVapInstanceBuffer,offset:0,size:q.INSTANCED_VAP_CHUNK_BYTES}}]}),needsTexture:!0})}createInstancedAlphaVideoPipeline(){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:q.ALPHA_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:lA.alphaVideoInstanced}),i={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"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,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("alpha-video-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedAlphaInstanceBuffer,offset:0,size:q.INSTANCED_ALPHA_CHUNK_BYTES}}]}),needsTexture:!0})}createTexturedPipeline(A,t,e,i,I,s){const n=this.device.createShaderModule({code:t}),B=s==="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}:{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"}},C=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[e]}),vertex:{module:n,entryPoint:"vs",buffers:[{arrayStride:I,attributes:i}]},fragment:{module:n,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:B,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:C,bindGroupLayout:e,needsTexture:!0})}createClipMaskPipeline(A){const t=this.device.createShaderModule({code:lA.clipMask}),e=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:t,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:t,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:e,bindGroupLayout:A,needsTexture:!1})}beginFrame(){const A=this.canvas.width,t=this.canvas.height;(A!==this.configuredCanvasWidth||t!==this.configuredCanvasHeight)&&this.configureCanvasContext(),this.ensureDepthStencil(A,t),this.encoder=this.device.createCommandEncoder();const e=this.context.getCurrentTexture().createView(),i=this.msaaSampleCount>1&&this.msaaColorView?{view:this.msaaColorView,resolveTarget:e,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"discard"}:{view:e,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"};this.uniformSlotIndex=0,this.instancedSvgaRingOffset=0,this.instancedAlphaRingOffset=0,this.instancedVapRingOffset=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,this.lastInstancedTextureBindGroup=null,this.passEncoder=this.encoder.beginRenderPass({colorAttachments:[i],depthStencilAttachment:{view:this.depthStencilView,stencilClearValue:0,stencilLoadOp:"clear",stencilStoreOp:"store",depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}})}endFrame(){this.passEncoder&&this.passEncoder.end(),this.encoder&&this.device.queue.submit([this.encoder.finish()]),this.passEncoder=null,this.encoder=null}ensureInstancedProjection(A){if(!(A.length<16)){if(this.instancedProjectionValid){let t=!0;for(let e=0;e<16;e++)if(this.instancedProjectionCache[e]!==A[e]){t=!1;break}if(t)return}this.instancedProjectionCache.set(A.subarray(0,16)),this.instancedProjectionValid=!0,this.device.queue.writeBuffer(this.instancedAlphaProjBuffer,0,A.buffer,A.byteOffset,64)}}createBuffer(A,t){let e=GPUBufferUsage.COPY_DST;t==="vertex"?e|=GPUBufferUsage.VERTEX:t==="index"?e|=GPUBufferUsage.INDEX:e|=GPUBufferUsage.UNIFORM;const i=(()=>{if(A instanceof ArrayBuffer)return new Uint8Array(A);if(typeof SharedArrayBuffer!="undefined"&&A instanceof SharedArrayBuffer){const a=new Uint8Array(A);return new Uint8Array(a)}const n=A,B=n.buffer,C=new Uint8Array(B,n.byteOffset,n.byteLength);return typeof SharedArrayBuffer!="undefined"&&B instanceof SharedArrayBuffer?new Uint8Array(C):C})(),I=this.device.createBuffer({size:Math.max(i.byteLength,4),usage:e,mappedAtCreation:!0});new Uint8Array(I.getMappedRange()).set(i),I.unmap();const s=this.nextId++;return this.buffers.set(s,{buffer:I,usage:t}),{id:s,usage:t}}updateBuffer(A,t,e=0){const i=this.buffers.get(A.id);if(!i)return;const I=(()=>{if(t instanceof ArrayBuffer)return new Uint8Array(t);if(typeof SharedArrayBuffer!="undefined"&&t instanceof SharedArrayBuffer){const Q=new Uint8Array(t);return new Uint8Array(Q)}const B=t,C=B.buffer,a=new Uint8Array(C,B.byteOffset,B.byteLength);return typeof SharedArrayBuffer!="undefined"&&C instanceof SharedArrayBuffer?new Uint8Array(a):a})(),s=I.byteLength;if(s>i.buffer.size){i.buffer.destroy();let B=GPUBufferUsage.COPY_DST;i.usage==="vertex"?B|=GPUBufferUsage.VERTEX:i.usage==="index"?B|=GPUBufferUsage.INDEX:B|=GPUBufferUsage.UNIFORM,i.buffer=this.device.createBuffer({size:s,usage:B})}const n=new Uint8Array(I.buffer,I.byteOffset,I.byteLength);this.device.queue.writeBuffer(i.buffer,0,n)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(t.buffer.destroy(),this.buffers.delete(A.id))}copyHtmlVideoToTextureDirect(A,t,e,i){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:i,flipY:!0},{texture:A},[t,e]),!0}catch(I){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video>) failed; using canvas bridge.",I),!1}}copyVideoFrameToTextureDirect(A,t,e,i){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:i,flipY:!0},{texture:A},[t,e]),!0}catch(I){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame) failed; using canvas bridge.",I),!1}}drawVideoLikeSourceToTexture(A,t,e,i){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const I=this.videoUploadCanvas,s=this.videoUploadCtx;s&&((I.width!==t||I.height!==e)&&(I.width=t,I.height=e),s.drawImage(i,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:I,flipY:!0},{texture:A},[t,e]))}copyImageSourceToTexture(A,t,e,i){if(typeof VideoFrame!="undefined"&&i instanceof VideoFrame){const I=i,s=I.displayWidth||I.codedWidth,n=I.displayHeight||I.codedHeight;if(!s||!n||!t||!e||this.copyVideoFrameToTextureDirect(A,t,e,I))return;this.drawVideoLikeSourceToTexture(A,t,e,I);return}if(i instanceof HTMLVideoElement){const I=i,s=I.videoWidth,n=I.videoHeight;if(I.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!s||!n||!t||!e)return;if(I.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTexture(A,t,e,I);return}if(this.copyHtmlVideoToTextureDirect(A,t,e,I))return;this.drawVideoLikeSourceToTexture(A,t,e,I);return}this.device.queue.copyExternalImageToTexture({source:i},{texture:A},[t,e])}createTexture(A,t){var e,i;const I=(e=t.width)!=null?e:1,s=(i=t.height)!=null?i:1,n=this.device.createTexture({size:[I,s],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});A instanceof ArrayBuffer?this.device.queue.writeTexture({texture:n},A,{bytesPerRow:I*4},[I,s]):this.copyImageSourceToTexture(n,I,s,A);const B=this.nextId++;return this.textures.set(B,{texture:n,view:n.createView(),width:I,height:s}),{id:B,width:I,height:s}}createEmptyTexture(A,t,e={}){const i=Math.max(1,Math.floor(A)),I=Math.max(1,Math.floor(t)),s=this.device.createTexture({size:[i,I],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),n=this.nextId++;return this.textures.set(n,{texture:s,view:s.createView(),width:i,height:I}),{id:n,width:i,height:I}}updateTexture(A,t){const e=this.textures.get(A.id);e&&this.copyImageSourceToTexture(e.texture,e.width,e.height,t)}updateTextureRegion(A,t,e,i,I,s){const n=this.textures.get(A.id);if(!n)return;const B={texture:n.texture,origin:{x:Math.floor(e),y:Math.floor(i)}};if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const o=t,r=o.displayWidth||o.codedWidth,E=o.displayHeight||o.codedHeight;if(!r||!E)return;const h=I!=null?I:r,c=s!=null?s:E;if(h!==r||c!==E){this.drawVideoLikeSourceToTextureRegion(n.texture,h,c,o,B.origin.x,B.origin.y);return}try{this.device.queue.copyExternalImageToTexture({source:o,flipY:!0},B,[r,E])}catch(f){this.drawVideoLikeSourceToTextureRegion(n.texture,r,E,o,B.origin.x,B.origin.y)}return}if(t instanceof HTMLVideoElement){const o=t,r=o.videoWidth,E=o.videoHeight;if(o.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!r||!E)return;const h=I!=null?I:r,c=s!=null?s:E;if(h!==r||c!==E){this.drawVideoLikeSourceToTextureRegion(n.texture,h,c,o,B.origin.x,B.origin.y);return}if(o.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(n.texture,r,E,o,B.origin.x,B.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(n.texture,r,E,o,B.origin.x,B.origin.y))return;this.drawVideoLikeSourceToTextureRegion(n.texture,r,E,o,B.origin.x,B.origin.y);return}const C=t,a=I!=null?I:C.width,Q=s!=null?s:C.height;if(a!==C.width||Q!==C.height){this.drawVideoLikeSourceToTextureRegion(n.texture,a,Q,C,B.origin.x,B.origin.y);return}this.device.queue.copyExternalImageToTexture({source:C},B,[C.width,C.height])}copyHtmlVideoToTextureRegionDirect(A,t,e,i,I,s){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:i,flipY:!0},{texture:A,origin:{x:I,y:s}},[t,e]),!0}catch(n){return!1}}drawVideoLikeSourceToTextureRegion(A,t,e,i,I,s){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const n=this.videoUploadCanvas,B=this.videoUploadCtx;B&&((n.width!==t||n.height!==e)&&(n.width=t,n.height=e),B.drawImage(i,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:n,flipY:!0},{texture:A,origin:{x:I,y:s}},[t,e]))}deleteTexture(A){const t=this.textures.get(A.id);if(!t)return;t.texture.destroy(),this.textures.delete(A.id);const e=`\0${A.id}`;for(const i of this.textureBindGroupCache.keys())i.endsWith(e)&&this.textureBindGroupCache.delete(i)}draw(A){var t,e,i;if(!this.passEncoder)return;if(A.shader==="svga-instanced"){this.drawInstancedSvga(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlpha(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVap(A);return}const I=(t=A.stencil)!=null?t:"none",s=A.shader==="clip-mask"||I==="clear"?"clip-mask:write":`${A.shader}:${I}`,n=this.pipelines.get(s);if(!n)return;const B=this.passEncoder,C=n.pipeline;this.lastDrawPipeline!==C&&(B.setPipeline(C),this.lastDrawPipeline=C,this.lastInstancedTextureBindGroup=null);let a=0;I==="clear"?a=0:(I==="write"||A.shader==="clip-mask"||I==="test")&&(a=1),this.lastStencilRef!==a&&(B.setStencilReference(a),this.lastStencilRef=a);const Q=this.uniformSlotIndex++;if(Q>=this.maxUniformSlots){console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots");return}const o=Q*this.uniformSlotStride,r=A.uniforms.u_projection;if(n.needsTexture){const d=A.uniforms.u_transform,u=d instanceof Float32Array&&d.length>=16?d:qa,p=A.uniforms.u_atlasRemap,w=p instanceof Float32Array&&p.length>=4?p:Za;if(r instanceof Float32Array&&r.length>=16){const y=this.uniformScratch144;y.set(r.subarray(0,16),0),y.set(u.subarray(0,16),16),y.set(w.subarray(0,4),32),this.device.queue.writeBuffer(this.uniformBuffer,o,y.buffer,y.byteOffset,144)}else this.device.queue.writeBuffer(this.uniformBuffer,o+64,u.buffer,u.byteOffset,64),this.device.queue.writeBuffer(this.uniformBuffer,o+128,w.buffer,w.byteOffset,16)}else r instanceof Float32Array&&r.length>=16&&this.device.queue.writeBuffer(this.uniformBuffer,o,r.buffer,r.byteOffset,64);if(n.needsTexture){const d=A.textures.length>0?A.textures[0]:null,u=d?this.textures.get(d.id):null,p=(e=u==null?void 0:u.view)!=null?e:this.dummyTextureView,w=(i=d==null?void 0:d.id)!=null?i:0,y=`${s}\0${w}`;let S=this.textureBindGroupCache.get(y);S||(S=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:144}},{binding:1,resource:p},{binding:2,resource:this.sampler}]}),this.textureBindGroupCache.set(y,S)),B.setBindGroup(0,S,[o])}else n.uniformOnlyBindGroup||(n.uniformOnlyBindGroup=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:64}}]})),B.setBindGroup(0,n.uniformOnlyBindGroup,[o]);const E=this.buffers.get(A.vertexBuffer.id),h=this.buffers.get(A.indexBuffer.id);if(!E||!h)return;const c=A.vertexBuffer.id,f=A.indexBuffer.id;this.lastVertexBufferId!==c&&(B.setVertexBuffer(0,E.buffer),this.lastVertexBufferId=c),this.lastIndexBufferId!==f&&(B.setIndexBuffer(h.buffer,"uint32"),this.lastIndexBufferId=f),B.drawIndexed(A.indexCount)}drawInstancedSvga(A){var t,e,i;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*13)return;if(s>q.SVGA_INSTANCED_MAX){console.warn("[WebGPU] svga-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("svga-instanced:none");if(!C)return;const a=C.pipeline;this.lastDrawPipeline!==a&&(I.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const Q=A.uniforms.u_projection;if(!(Q instanceof Float32Array)||Q.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),r=this.buffers.get(A.indexBuffer.id);if(!o||!r)return;this.ensureInstancedProjection(Q);const E=s*q.SVGA_INSTANCED_STRIDE,h=this.instancedSvgaRingOffset;if(h+this.instancedSvgaSlotBytes>this.instancedSvgaInstanceBuffer.size){console.warn("[WebGPU] instanced SVGA storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedSvgaRingOffset+=this.instancedSvgaSlotBytes,this.device.queue.writeBuffer(this.instancedSvgaInstanceBuffer,h,n.buffer,n.byteOffset,E);const c=A.textures[0],f=c?this.textures.get(c.id):null,d=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,p=`svga-instanced:none\0${(i=c==null?void 0:c.id)!=null?i:0}`;let w=this.textureBindGroupCache.get(p);w||(w=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:d},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(p,w)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==w&&(I.setBindGroup(1,w),this.lastInstancedTextureBindGroup=w);const y=A.vertexBuffer.id,S=A.indexBuffer.id;this.lastVertexBufferId!==y&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=y),this.lastIndexBufferId!==S&&(I.setIndexBuffer(r.buffer,"uint32"),this.lastIndexBufferId=S),I.drawIndexed(A.indexCount,s,0,0,0)}drawInstancedAlpha(A){var t,e,i;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*20)return;if(s>q.ALPHA_INSTANCED_MAX){console.warn("[WebGPU] alpha-video-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("alpha-video-instanced:none");if(!C)return;const a=C.pipeline;this.lastDrawPipeline!==a&&(I.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const Q=A.uniforms.u_projection;if(!(Q instanceof Float32Array)||Q.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),r=this.buffers.get(A.indexBuffer.id);if(!o||!r)return;this.ensureInstancedProjection(Q);const E=s*q.ALPHA_INSTANCED_STRIDE,h=this.instancedAlphaRingOffset;if(h+this.instancedAlphaSlotBytes>this.instancedAlphaInstanceBuffer.size){console.warn("[WebGPU] instanced alpha storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedAlphaRingOffset+=this.instancedAlphaSlotBytes,this.device.queue.writeBuffer(this.instancedAlphaInstanceBuffer,h,n.buffer,n.byteOffset,E);const c=A.textures[0],f=c?this.textures.get(c.id):null,d=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,p=`alpha-video-instanced:none\0${(i=c==null?void 0:c.id)!=null?i:0}`;let w=this.textureBindGroupCache.get(p);w||(w=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:d},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(p,w)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==w&&(I.setBindGroup(1,w),this.lastInstancedTextureBindGroup=w);const y=A.vertexBuffer.id,S=A.indexBuffer.id;this.lastVertexBufferId!==y&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=y),this.lastIndexBufferId!==S&&(I.setIndexBuffer(r.buffer,"uint32"),this.lastIndexBufferId=S),I.drawIndexed(A.indexCount,s,0,0,0)}drawInstancedVap(A){var t,e,i;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*28)return;if(s>q.VAP_INSTANCED_MAX){console.warn("[WebGPU] vap-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("vap-instanced:none");if(!C)return;const a=C.pipeline;this.lastDrawPipeline!==a&&(I.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const Q=A.uniforms.u_projection;if(!(Q instanceof Float32Array)||Q.length<16)return;const o=this.buffers.get(A.vertexBuffer.id),r=this.buffers.get(A.indexBuffer.id);if(!o||!r)return;this.ensureInstancedProjection(Q);const E=s*q.VAP_INSTANCED_STRIDE,h=this.instancedVapRingOffset;if(h+this.instancedVapSlotBytes>this.instancedVapInstanceBuffer.size){console.warn("[WebGPU] instanced VAP storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedVapRingOffset+=this.instancedVapSlotBytes,this.device.queue.writeBuffer(this.instancedVapInstanceBuffer,h,n.buffer,n.byteOffset,E);const c=A.textures[0],f=c?this.textures.get(c.id):null,d=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,p=`vap-instanced:none\0${(i=c==null?void 0:c.id)!=null?i:0}`;let w=this.textureBindGroupCache.get(p);w||(w=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:d},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(p,w)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==w&&(I.setBindGroup(1,w),this.lastInstancedTextureBindGroup=w);const y=A.vertexBuffer.id,S=A.indexBuffer.id;this.lastVertexBufferId!==y&&(I.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=y),this.lastIndexBufferId!==S&&(I.setIndexBuffer(r.buffer,"uint32"),this.lastIndexBufferId=S),I.drawIndexed(A.indexCount,s,0,0,0)}clearStencil(){}setScissor(A,t,e,i){if(!this.passEncoder)return;const I=this.canvas.width,s=this.canvas.height,n=Math.max(0,Math.min(I,Math.round(A))),B=Math.max(0,Math.min(s,Math.round(t))),C=Math.max(n,Math.min(I,Math.round(A+e))),a=Math.max(B,Math.min(s,Math.round(t+i)));this.passEncoder.setScissorRect(n,B,C-n,a-B)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,t,e,i,I,s,n,B,C;for(const[,a]of this.buffers)a.buffer.destroy();for(const[,a]of this.textures)a.texture.destroy();(A=this.uniformBuffer)==null||A.destroy(),(t=this.instancedAlphaProjBuffer)==null||t.destroy(),(e=this.instancedSvgaInstanceBuffer)==null||e.destroy(),(i=this.instancedAlphaInstanceBuffer)==null||i.destroy(),(I=this.instancedVapInstanceBuffer)==null||I.destroy(),(s=this.depthStencilTexture)==null||s.destroy(),(n=this.msaaColorTexture)==null||n.destroy(),(B=this.dummyTexture)==null||B.destroy(),(C=this.device)==null||C.destroy(),this.buffers.clear(),this.textures.clear(),this.textureBindGroupCache.clear(),this.pipelines.clear()}};G(O,"SVGA_INSTANCED_MAX",2048);G(O,"SVGA_INSTANCED_STRIDE",52);G(O,"ALPHA_INSTANCED_MAX",1024);G(O,"ALPHA_INSTANCED_STRIDE",80);G(O,"VAP_INSTANCED_MAX",1024);G(O,"VAP_INSTANCED_STRIDE",112);G(O,"INSTANCED_SVGA_CHUNK_BYTES",O.SVGA_INSTANCED_MAX*O.SVGA_INSTANCED_STRIDE);G(O,"INSTANCED_ALPHA_CHUNK_BYTES",O.ALPHA_INSTANCED_MAX*O.ALPHA_INSTANCED_STRIDE);G(O,"INSTANCED_VAP_CHUNK_BYTES",O.VAP_INSTANCED_MAX*O.VAP_INSTANCED_STRIDE);G(O,"INSTANCED_STORAGE_RING_SLOTS",512);let jB=O;function fB(g,A,t){const e=g.createShader(A);if(!e)throw new Error("Failed to create shader");if(g.shaderSource(e,t),g.compileShader(e),!g.getShaderParameter(e,g.COMPILE_STATUS)){const i=g.getShaderInfoLog(e);throw g.deleteShader(e),new Error(`Shader compile failed: ${i}`)}return e}function yA(g,A,t){const e=fB(g,g.VERTEX_SHADER,A),i=fB(g,g.FRAGMENT_SHADER,t),I=g.createProgram();if(!I)throw g.deleteShader(e),g.deleteShader(i),new Error("Failed to create program");if(g.attachShader(I,e),g.attachShader(I,i),g.linkProgram(I),!g.getProgramParameter(I,g.LINK_STATUS)){const s=g.getProgramInfoLog(I);throw g.deleteProgram(I),g.deleteShader(e),g.deleteShader(i),new Error(`Program link failed: ${s}`)}return g.deleteShader(e),g.deleteShader(i),I}function uB(g,A=g.LINEAR,t=g.CLAMP_TO_EDGE){const e=g.createTexture();if(!e)throw new Error("Failed to create texture");return g.bindTexture(g.TEXTURE_2D,e),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,A),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,A),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,t),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,t),e}var Va=Object.defineProperty,Wa=(g,A,t)=>A in g?Va(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,J=(g,A,t)=>Wa(g,typeof A!="symbol"?A+"":A,t);const EA=class bA{constructor(A,t=!0){J(this,"type","webgl2"),J(this,"canvas"),J(this,"maxTextureSize",4096),J(this,"antialias"),J(this,"gl"),J(this,"nextId",1),J(this,"buffers",new Map),J(this,"textures",new Map),J(this,"programs",new Map),J(this,"cachedDrawProgram",null),J(this,"cachedTex0Id",null),J(this,"cachedProjectionRef",null),J(this,"cachedProjectionShader",null),J(this,"videoUploadCanvas",null),J(this,"videoUploadCtx",null),J(this,"instancedSvgaInstanceGLBuffer",null),J(this,"instancedAlphaInstanceGLBuffer",null),J(this,"instancedVapInstanceGLBuffer",null),this.canvas=A,this.antialias=t}async init(){const A=this.canvas.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL2 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,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,t=yA(A,Y.svgaBatch.vert,Y.svgaBatch.frag);this.programs.set("svga-batch",{program:t,uniforms:this.getUniforms(t,["u_projection","u_atlas"]),vao:null});const e=yA(A,Y.svgaInstanced.vert,Y.svgaInstanced.frag);this.programs.set("svga-instanced",{program:e,uniforms:this.getUniforms(e,["u_projection","u_atlas"]),vao:null});const i=yA(A,Y.vap.vert,Y.vap.frag);this.programs.set("vap",{program:i,uniforms:this.getUniforms(i,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const I=yA(A,Y.alphaVideo.vert,Y.alphaVideo.frag);this.programs.set("alpha-video",{program:I,uniforms:this.getUniforms(I,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const s=yA(A,Y.rgbaTextured.vert,Y.rgbaTextured.frag);this.programs.set("rgba-textured",{program:s,uniforms:this.getUniforms(s,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const n=yA(A,Y.alphaVideoInstanced.vert,Y.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",{program:n,uniforms:this.getUniforms(n,["u_projection","u_video"]),vao:null});const B=yA(A,Y.vapInstanced.vert,Y.vapInstanced.frag);this.programs.set("vap-instanced",{program:B,uniforms:this.getUniforms(B,["u_projection","u_video"]),vao:null});const C=yA(A,Y.clipMask.vert,Y.clipMask.frag);this.programs.set("clip-mask",{program:C,uniforms:this.getUniforms(C,["u_projection"]),vao:null})}getUniforms(A,t){const e=new Map;for(const i of t){const I=this.gl.getUniformLocation(A,i);I&&e.set(i,I)}return e}beginFrame(){const A=this.gl;A.viewport(0,0,this.canvas.width,this.canvas.height),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.disable(A.STENCIL_TEST),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null}endFrame(){this.gl.flush()}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}createBuffer(A,t){const e=this.gl,i=e.createBuffer();if(!i)throw new Error("Failed to create buffer");const I=t==="index"?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER;e.bindBuffer(I,i),e.bufferData(I,A,e.DYNAMIC_DRAW);const s=this.nextId++;return this.buffers.set(s,{buffer:i,usage:t,byteLength:this.getBufferSourceByteLength(A)}),{id:s,usage:t}}updateBuffer(A,t,e=0){const i=this.buffers.get(A.id);if(!i)return;const I=this.gl,s=i.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(s,i.buffer);const n=this.getBufferSourceByteLength(t);e===0&&n<=i.byteLength?I.bufferSubData(s,0,t):(I.bufferData(s,t,I.DYNAMIC_DRAW),i.byteLength=n)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(this.gl.deleteBuffer(t.buffer),this.buffers.delete(A.id))}uploadVideoFrameToTexture(A,t){const e=this.gl,i=t.videoWidth,I=t.videoHeight;if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||i<=0||I<=0)return!1;this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const s=this.videoUploadCanvas,n=this.videoUploadCtx;return n?((s.width!==i||s.height!==I)&&(s.width=i,s.height=I),n.drawImage(t,0,0,i,I),e.bindTexture(e.TEXTURE_2D,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),!0):!1}createTexture(A,t){var e,i;const I=this.gl,s=t.filter==="nearest"?I.NEAREST:I.LINEAR,n=uB(I,s);let B=(e=t.width)!=null?e:1,C=(i=t.height)!=null?i:1;if(A instanceof ArrayBuffer)I.texImage2D(I.TEXTURE_2D,0,I.RGBA,B,C,0,I.RGBA,I.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame){const Q=A;I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,Q),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),B=Q.displayWidth||Q.codedWidth||B,C=Q.displayHeight||Q.codedHeight||C}else A instanceof HTMLVideoElement?(I.bindTexture(I.TEXTURE_2D,n),this.uploadVideoFrameToTexture(n,A),B=A.videoWidth||B,C=A.videoHeight||C):(I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(B=A.width,C=A.height));const a=this.nextId++;return this.textures.set(a,{texture:n,width:B,height:C}),{id:a,width:B,height:C}}createEmptyTexture(A,t,e={}){const i=this.gl,I=e.filter==="nearest"?i.NEAREST:i.LINEAR,s=uB(i,I),n=Math.max(1,Math.floor(A)),B=Math.max(1,Math.floor(t));i.bindTexture(i.TEXTURE_2D,s),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,n,B,0,i.RGBA,i.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:n,height:B}),{id:C,width:n,height:B}}updateTexture(A,t){const e=this.textures.get(A.id);if(!e)return;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const I=this.gl;I.bindTexture(I.TEXTURE_2D,e.texture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,t),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){this.uploadVideoFrameToTexture(e.texture,t);return}const i=this.gl;i.bindTexture(i.TEXTURE_2D,e.texture),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,t,e,i,I,s){const n=this.textures.get(A.id);if(!n)return;const B=this.gl;B.bindTexture(B.TEXTURE_2D,n.texture);let C,a;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame)C=t.displayWidth||t.codedWidth,a=t.displayHeight||t.codedHeight;else if(t instanceof HTMLVideoElement){if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;C=t.videoWidth,a=t.videoHeight}else{const r=t;C=r.width,a=r.height}if(!C||!a)return;const Q=I!=null?I:C,o=s!=null?s:a;if(Q!==C||o!==a){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const r=this.videoUploadCanvas,E=this.videoUploadCtx;if(!E)return;r.width=Q,r.height=o,E.drawImage(t,0,0,Q,o),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,r),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}deleteTexture(A){const t=this.textures.get(A.id);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var t;if(A.shader==="svga-instanced"){this.drawInstancedSvgaGL(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlphaGL(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVapGL(A);return}this.resetInstancedAuxVertexState();const e=this.gl,i=(t=A.stencil)!=null?t:"none",I=A.shader==="clip-mask"||i==="clear"?"clip-mask":A.shader,s=this.programs.get(I);if(!s)return;i==="clear"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,0,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):i==="write"||A.shader==="clip-mask"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):i==="test"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.stencilMask(0),e.colorMask(!0,!0,!0,!0)):(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==I&&(e.useProgram(s.program),this.cachedDrawProgram=I);for(let C=0;C<A.textures.length;C++){const a=A.textures[C].id;if(C===0&&this.cachedTex0Id===a)continue;const Q=this.textures.get(a);Q&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,Q.texture),C===0&&(this.cachedTex0Id=a))}for(const[C,a]of Object.entries(A.uniforms)){const Q=s.uniforms.get(C);if(Q)if(a instanceof Float32Array)if(a.length===16){if(C==="u_projection"&&this.cachedProjectionShader===I&&this.cachedProjectionRef===a)continue;C==="u_projection"&&(this.cachedProjectionShader=I,this.cachedProjectionRef=a),e.uniformMatrix4fv(Q,!1,a)}else a.length===4?e.uniform4fv(Q,a):a.length===2&&e.uniform2fv(Q,a);else e.uniform1i(Q,a)}const n=this.buffers.get(A.vertexBuffer.id),B=this.buffers.get(A.indexBuffer.id);!n||!B||(e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,B.buffer),this.setupAttributes(I),e.drawElements(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0),(i!=="none"||A.shader==="clip-mask")&&(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,t,e,i){const I=this.gl,s=this.canvas.width,n=this.canvas.height,B=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(n,Math.round(t))),a=Math.max(B,Math.min(s,Math.round(A+e))),Q=Math.max(C,Math.min(n,Math.round(t+i)));I.enable(I.SCISSOR_TEST),I.scissor(B,n-Q,a-B,Q-C)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const t=this.gl;if(A==="svga-batch")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,36,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,4,t.FLOAT,!1,36,12),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,36,28);else if(A==="vap")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,24,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,24,8),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,24,16);else if(A==="clip-mask")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,8,0),t.disableVertexAttribArray(1),t.disableVertexAttribArray(2);else{t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,16,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,16,8);for(let i=2;i<=8;i++)t.vertexAttribDivisor(i,0),t.disableVertexAttribArray(i)}}resetInstancedAuxVertexState(){const A=this.gl;for(let t=1;t<=8;t++)A.vertexAttribDivisor(t,0),A.disableVertexAttribArray(t)}ensureInstancedSvgaInstanceBuffer(){const A=this.gl;if(!this.instancedSvgaInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,bA.INST_SVGA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedSvgaInstanceGLBuffer=t}return this.instancedSvgaInstanceGLBuffer}drawInstancedSvgaGL(A){var t;const e=this.gl,i=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(i<1||!I||I.length<i*13)return;if(i>bA.INST_SVGA_GL_MAX){console.warn("[WebGL2] svga-instanced: instanceCount exceeds max",i);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="svga-instanced",n=this.programs.get(s);if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let o=0;o<A.textures.length;o++){const r=A.textures[o].id;if(o===0&&this.cachedTex0Id===r)continue;const E=this.textures.get(r);E&&(e.activeTexture(e.TEXTURE0+o),e.bindTexture(e.TEXTURE_2D,E.texture),o===0&&(this.cachedTex0Id=r))}for(const[o,r]of Object.entries(A.uniforms)){const E=n.uniforms.get(o);if(E)if(r instanceof Float32Array){if(r.length===16){if(o==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===r)continue;o==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=r),e.uniformMatrix4fv(E,!1,r)}}else e.uniform1i(E,r)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const a=this.ensureInstancedSvgaInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,i*13);const Q=52;e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,Q,0),e.vertexAttribDivisor(1,1),e.enableVertexAttribArray(2),e.vertexAttribPointer(2,4,e.FLOAT,!1,Q,8),e.vertexAttribDivisor(2,1),e.enableVertexAttribArray(3),e.vertexAttribPointer(3,3,e.FLOAT,!1,Q,24),e.vertexAttribDivisor(3,1),e.enableVertexAttribArray(4),e.vertexAttribPointer(4,4,e.FLOAT,!1,Q,36),e.vertexAttribDivisor(4,1),e.bindBuffer(e.ARRAY_BUFFER,B.buffer),e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,8,0),e.vertexAttribDivisor(0,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,i)}ensureInstancedAlphaInstanceBuffer(){const A=this.gl;if(!this.instancedAlphaInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,bA.INST_ALPHA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedAlphaInstanceGLBuffer=t}return this.instancedAlphaInstanceGLBuffer}drawInstancedAlphaGL(A){var t;const e=this.gl,i=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(i<1||!I||I.length<i*20)return;for(let r=7;r<=8;r++)e.vertexAttribDivisor(r,0),e.disableVertexAttribArray(r);if(i>bA.INST_ALPHA_GL_MAX){console.warn("[WebGL2] alpha-video-instanced: instanceCount exceeds max",i);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="alpha-video-instanced",n=this.programs.get("alpha-video-instanced");if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let r=0;r<A.textures.length;r++){const E=A.textures[r].id;if(r===0&&this.cachedTex0Id===E)continue;const h=this.textures.get(E);h&&(e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_2D,h.texture),r===0&&(this.cachedTex0Id=E))}for(const[r,E]of Object.entries(A.uniforms)){const h=n.uniforms.get(r);if(h)if(E instanceof Float32Array){if(E.length===16){if(r==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===E)continue;r==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=E),e.uniformMatrix4fv(h,!1,E)}}else e.uniform1i(h,E)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const a=this.ensureInstancedAlphaInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,i*20);const Q=80;for(let r=0;r<5;r++){const E=2+r;e.enableVertexAttribArray(E),e.vertexAttribPointer(E,4,e.FLOAT,!1,Q,r*16),e.vertexAttribDivisor(E,1)}e.bindBuffer(e.ARRAY_BUFFER,B.buffer);const o=16;e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,o,0),e.vertexAttribDivisor(0,0),e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,o,8),e.vertexAttribDivisor(1,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,i)}ensureInstancedVapInstanceBuffer(){const A=this.gl;if(!this.instancedVapInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,bA.INST_VAP_GL_BYTES,A.DYNAMIC_DRAW),this.instancedVapInstanceGLBuffer=t}return this.instancedVapInstanceGLBuffer}drawInstancedVapGL(A){var t;const e=this.gl,i=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(i<1||!I||I.length<i*28)return;if(i>bA.INST_VAP_GL_MAX){console.warn("[WebGL2] vap-instanced: instanceCount exceeds max",i);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="vap-instanced",n=this.programs.get("vap-instanced");if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let r=0;r<A.textures.length;r++){const E=A.textures[r].id;if(r===0&&this.cachedTex0Id===E)continue;const h=this.textures.get(E);h&&(e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_2D,h.texture),r===0&&(this.cachedTex0Id=E))}for(const[r,E]of Object.entries(A.uniforms)){const h=n.uniforms.get(r);if(h)if(E instanceof Float32Array){if(E.length===16){if(r==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===E)continue;r==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=E),e.uniformMatrix4fv(h,!1,E)}}else e.uniform1i(h,E)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const a=this.ensureInstancedVapInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,i*28);const Q=112;for(let r=0;r<7;r++){const E=2+r;e.enableVertexAttribArray(E),e.vertexAttribPointer(E,4,e.FLOAT,!1,Q,r*16),e.vertexAttribDivisor(E,1)}e.bindBuffer(e.ARRAY_BUFFER,B.buffer);const o=16;e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,o,0),e.vertexAttribDivisor(0,0),e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,o,8),e.vertexAttribDivisor(1,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,i)}destroy(){const A=this.gl;this.instancedSvgaInstanceGLBuffer&&(A.deleteBuffer(this.instancedSvgaInstanceGLBuffer),this.instancedSvgaInstanceGLBuffer=null),this.instancedAlphaInstanceGLBuffer&&(A.deleteBuffer(this.instancedAlphaInstanceGLBuffer),this.instancedAlphaInstanceGLBuffer=null),this.instancedVapInstanceGLBuffer&&(A.deleteBuffer(this.instancedVapInstanceGLBuffer),this.instancedVapInstanceGLBuffer=null);for(const[,e]of this.buffers)A.deleteBuffer(e.buffer);for(const[,e]of this.textures)A.deleteTexture(e.texture);for(const[,e]of this.programs)A.deleteProgram(e.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}};J(EA,"INST_SVGA_GL_MAX",2048);J(EA,"INST_SVGA_GL_BYTES",EA.INST_SVGA_GL_MAX*52);J(EA,"INST_ALPHA_GL_MAX",1024);J(EA,"INST_ALPHA_GL_BYTES",EA.INST_ALPHA_GL_MAX*80);J(EA,"INST_VAP_GL_MAX",1024);J(EA,"INST_VAP_GL_BYTES",EA.INST_VAP_GL_MAX*112);let XB=EA;var za=Object.defineProperty,ja=(g,A,t)=>A in g?za(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,$=(g,A,t)=>ja(g,typeof A!="symbol"?A+"":A,t);function Xa(g,A){let t=g.replace(/^#version\s+300\s+es\s*/m,"");return A==="vertex"?(t=t.replace(/layout\s*\(location\s*=\s*\d+\)\s*in\s+/g,"attribute "),t=t.replace(/\bout\s+/g,"varying ")):(t=t.replace(/\bin\s+/g,"varying "),t=t.replace(/out\s+vec4\s+fragColor\s*;\s*/g,""),t=t.replace(/\bfragColor\b/g,"gl_FragColor"),t=t.replace(/\btexture\s*\(/g,"texture2D(")),t}function wB(g,A,t,e){const i=g.createShader(A);if(!i)throw new Error("Failed to create shader");if(g.shaderSource(i,Xa(t,e)),g.compileShader(i),!g.getShaderParameter(i,g.COMPILE_STATUS)){const I=g.getShaderInfoLog(i);throw g.deleteShader(i),new Error(`Shader compile failed: ${I}`)}return i}function Cs(g,A,t,e){const i=wB(g,g.VERTEX_SHADER,A,"vertex"),I=wB(g,g.FRAGMENT_SHADER,t,"fragment"),s=g.createProgram();if(!s)throw g.deleteShader(i),g.deleteShader(I),new Error("Failed to create program");g.attachShader(s,i),g.attachShader(s,I);for(const[n,B]of Object.entries(e))g.bindAttribLocation(s,B,n);if(g.linkProgram(s),!g.getProgramParameter(s,g.LINK_STATUS)){const n=g.getProgramInfoLog(s);throw g.deleteProgram(s),g.deleteShader(i),g.deleteShader(I),new Error(`Program link failed: ${n}`)}return g.deleteShader(i),g.deleteShader(I),s}function DB(g,A=g.LINEAR,t=g.CLAMP_TO_EDGE){const e=g.createTexture();if(!e)throw new Error("Failed to create texture");return g.bindTexture(g.TEXTURE_2D,e),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,A),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,A),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,t),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,t),e}class Tn{constructor(A,t=!0){$(this,"type","webgl1"),$(this,"canvas"),$(this,"maxTextureSize",4096),$(this,"antialias"),$(this,"gl"),$(this,"nextId",1),$(this,"buffers",new Map),$(this,"textures",new Map),$(this,"programs",new Map),$(this,"cachedDrawProgram",null),$(this,"cachedTex0Id",null),$(this,"cachedProjectionRef",null),$(this,"cachedProjectionShader",null),$(this,"videoUploadCanvas",null),$(this,"videoUploadCtx",null),$(this,"supportsUintIndices",!1),this.canvas=A,this.antialias=t}async init(){const A=this.canvas.getContext("webgl",{alpha:!0,premultipliedAlpha:!1,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;this.programs.set("svga-batch",{program:Cs(A,Y.svgaBatch.vert,Y.svgaBatch.frag,{a_position:0,a_color:1,a_uv:2}),uniforms:new Map}),this.programs.get("svga-batch").uniforms=this.getUniforms(this.programs.get("svga-batch").program,["u_projection","u_atlas"]),this.programs.set("vap",{program:Cs(A,Y.vap.vert,Y.vap.frag,{a_position:0,a_rgbUV:1,a_alphaUV:2}),uniforms:new Map}),this.programs.get("vap").uniforms=this.getUniforms(this.programs.get("vap").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("alpha-video",{program:Cs(A,Y.alphaVideo.vert,Y.alphaVideo.frag,{a_position:0,a_uv:1}),uniforms:new Map}),this.programs.get("alpha-video").uniforms=this.getUniforms(this.programs.get("alpha-video").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("rgba-textured",{program:Cs(A,Y.rgbaTextured.vert,Y.rgbaTextured.frag,{a_position:0,a_uv:1}),uniforms:new Map}),this.programs.get("rgba-textured").uniforms=this.getUniforms(this.programs.get("rgba-textured").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("clip-mask",{program:Cs(A,Y.clipMask.vert,Y.clipMask.frag,{a_position:0}),uniforms:new Map}),this.programs.get("clip-mask").uniforms=this.getUniforms(this.programs.get("clip-mask").program,["u_projection"])}getUniforms(A,t){const e=new Map;for(const i of t){const I=this.gl.getUniformLocation(A,i);I&&e.set(i,I)}return e}beginFrame(){const A=this.gl;A.viewport(0,0,this.canvas.width,this.canvas.height),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.disable(A.STENCIL_TEST),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null}endFrame(){this.gl.flush()}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 t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return new Uint16Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength))}return new Uint16Array(A)}createBuffer(A,t){const e=this.gl,i=e.createBuffer();if(!i)throw new Error("Failed to create buffer");const I=t==="index"?this.normalizeIndexSource(A):A,s=t==="index"?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER;e.bindBuffer(s,i),e.bufferData(s,I,e.DYNAMIC_DRAW);const n=this.nextId++;return this.buffers.set(n,{buffer:i,usage:t,byteLength:this.getBufferSourceByteLength(I)}),{id:n,usage:t}}updateBuffer(A,t,e=0){const i=this.buffers.get(A.id);if(!i)return;const I=this.gl,s=i.usage==="index"?this.normalizeIndexSource(t):t,n=i.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(n,i.buffer);const B=this.getBufferSourceByteLength(s);e===0&&B<=i.byteLength?I.bufferSubData(n,0,s):(I.bufferData(n,s,I.DYNAMIC_DRAW),i.byteLength=B)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(this.gl.deleteBuffer(t.buffer),this.buffers.delete(A.id))}ensureVideoUploadCanvas(A,t){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!==t)&&(this.videoUploadCanvas.width=A,this.videoUploadCanvas.height=t),this.videoUploadCtx)}uploadVideoFrameToTexture(A,t){const e=this.gl,i=t.videoWidth,I=t.videoHeight;if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||i<=0||I<=0)return!1;const s=this.ensureVideoUploadCanvas(i,I);return!s||!this.videoUploadCanvas?!1:(s.drawImage(t,0,0,i,I),e.bindTexture(e.TEXTURE_2D,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.videoUploadCanvas),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),!0)}createTexture(A,t){var e,i;const I=this.gl,s=t.filter==="nearest"?I.NEAREST:I.LINEAR,n=DB(I,s);let B=(e=t.width)!=null?e:1,C=(i=t.height)!=null?i:1;A instanceof ArrayBuffer?I.texImage2D(I.TEXTURE_2D,0,I.RGBA,B,C,0,I.RGBA,I.UNSIGNED_BYTE,new Uint8Array(A)):typeof VideoFrame!="undefined"&&A instanceof VideoFrame?(I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),B=A.displayWidth||A.codedWidth||B,C=A.displayHeight||A.codedHeight||C):A instanceof HTMLVideoElement?(I.bindTexture(I.TEXTURE_2D,n),this.uploadVideoFrameToTexture(n,A),B=A.videoWidth||B,C=A.videoHeight||C):(I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(B=A.width,C=A.height));const a=this.nextId++;return this.textures.set(a,{texture:n,width:B,height:C}),{id:a,width:B,height:C}}createEmptyTexture(A,t,e={}){const i=this.gl,I=e.filter==="nearest"?i.NEAREST:i.LINEAR,s=DB(i,I),n=Math.max(1,Math.floor(A)),B=Math.max(1,Math.floor(t));i.bindTexture(i.TEXTURE_2D,s),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,n,B,0,i.RGBA,i.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:n,height:B}),{id:C,width:n,height:B}}updateTexture(A,t){const e=this.textures.get(A.id);if(!e)return;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const I=this.gl;I.bindTexture(I.TEXTURE_2D,e.texture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,t),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){this.uploadVideoFrameToTexture(e.texture,t);return}const i=this.gl;i.bindTexture(i.TEXTURE_2D,e.texture),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,t,e,i,I,s){const n=this.textures.get(A.id);if(!n)return;const B=this.gl;B.bindTexture(B.TEXTURE_2D,n.texture);let C,a;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame)C=t.displayWidth||t.codedWidth,a=t.displayHeight||t.codedHeight;else if(t instanceof HTMLVideoElement){if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;C=t.videoWidth,a=t.videoHeight}else{const r=t;C=r.width,a=r.height}if(!C||!a)return;const Q=I!=null?I:C,o=s!=null?s:a;if(Q!==C||o!==a){const r=this.ensureVideoUploadCanvas(Q,o);if(!r||!this.videoUploadCanvas)return;r.drawImage(t,0,0,Q,o),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),B.texSubImage2D(B.TEXTURE_2D,0,e,i,B.RGBA,B.UNSIGNED_BYTE,t)}deleteTexture(A){const t=this.textures.get(A.id);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var t;const e=this.gl,i=(t=A.stencil)!=null?t:"none",I=A.shader==="clip-mask"||i==="clear"?"clip-mask":A.shader;if(I==="svga-instanced"||I==="alpha-video-instanced"||I==="vap-instanced")throw new Error(`WebGL1 backend does not support instanced shader: ${I}`);const s=this.programs.get(I);if(!s)return;i==="clear"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,0,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):i==="write"||A.shader==="clip-mask"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):i==="test"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.stencilMask(0),e.colorMask(!0,!0,!0,!0)):(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==I&&(e.useProgram(s.program),this.cachedDrawProgram=I);for(let C=0;C<A.textures.length;C++){const a=A.textures[C].id;if(C===0&&this.cachedTex0Id===a)continue;const Q=this.textures.get(a);Q&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,Q.texture),C===0&&(this.cachedTex0Id=a))}for(const[C,a]of Object.entries(A.uniforms)){const Q=s.uniforms.get(C);if(Q)if(a instanceof Float32Array)if(a.length===16){if(C==="u_projection"&&this.cachedProjectionShader===I&&this.cachedProjectionRef===a)continue;C==="u_projection"&&(this.cachedProjectionShader=I,this.cachedProjectionRef=a),e.uniformMatrix4fv(Q,!1,a)}else a.length===4?e.uniform4fv(Q,a):a.length===2&&e.uniform2fv(Q,a);else e.uniform1i(Q,a)}const n=this.buffers.get(A.vertexBuffer.id),B=this.buffers.get(A.indexBuffer.id);!n||!B||(e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,B.buffer),this.setupAttributes(I),e.drawElements(e.TRIANGLES,A.indexCount,this.supportsUintIndices?e.UNSIGNED_INT:e.UNSIGNED_SHORT,0),(i!=="none"||A.shader==="clip-mask")&&(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,t,e,i){const I=this.gl,s=this.canvas.width,n=this.canvas.height,B=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(n,Math.round(t))),a=Math.max(B,Math.min(s,Math.round(A+e))),Q=Math.max(C,Math.min(n,Math.round(t+i)));I.enable(I.SCISSOR_TEST),I.scissor(B,n-Q,a-B,Q-C)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const t=this.gl;t.disableVertexAttribArray(0),t.disableVertexAttribArray(1),t.disableVertexAttribArray(2),A==="svga-batch"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,36,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,4,t.FLOAT,!1,36,12),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,36,28)):A==="vap"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,24,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,24,8),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,24,16)):A==="clip-mask"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,8,0)):(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,16,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,16,8))}destroy(){const A=this.gl;for(const[,e]of this.buffers)A.deleteBuffer(e.buffer);for(const[,e]of this.textures)A.deleteTexture(e.texture);for(const[,e]of this.programs)A.deleteProgram(e.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}}function OB(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function Oa(){return typeof navigator!="undefined"&&"gpu"in navigator&&OB()}function Pa(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(g){return!1}}function $a(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(g){return!1}}function AQ(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"}function tQ(){return typeof OffscreenCanvas!="undefined"}async function PB(g,A=!0,t=!0,e=!1){const i=t!=null?t:!1,I=t!=null?t:!0;if(e){const n=new Tn(g,I);return await n.init(),n}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&OB())try{const n=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(n){const B=new jB(g,n,i);return await B.init(),B}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(n){console.warn(`[GiftStage] WebGPU init failed: ${n instanceof Error?n.message:String(n)}, 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 n=new XB(g,I);return await n.init(),n}catch(n){console.warn(`[GiftStage] WebGL2 init failed: ${n instanceof Error?n.message:String(n)}, fallback to WebGL1.`)}const s=new Tn(g,I);return await s.init(),s}function eQ(g,A){const t=g.clientWidth||g.getBoundingClientRect().width||0,e=g.clientHeight||g.getBoundingClientRect().height||0,i=A>0&&Number.isFinite(A)?A:1,I=Math.max(1,Math.round(t*i)),s=Math.max(1,Math.round(e*i));(g.width!==I||g.height!==s)&&(g.width=I,g.height=s)}function us(g){const A=g.clientWidth||g.getBoundingClientRect().width||1,t=g.clientHeight||g.getBoundingClientRect().height||1;return{sx:g.width/Math.max(1,A),sy:g.height/Math.max(1,t)}}const SA=13,xA=9,zA=4,ws=6;function Zs(g,A,t){const e=Math.floor(g.length/SA),i=Math.floor(A.length/(zA*xA)),I=Math.floor(t.length/ws),s=Math.min(e,i,I);for(let n=0;n<s;n++){const B=n*SA,C=g[B],a=g[B+1],Q=g[B+2],o=g[B+3],r=g[B+4],E=g[B+5],h=g[B+6],c=g[B+7],f=g[B+8],d=g[B+9],u=g[B+10],p=g[B+11],w=g[B+12],y=h,S=c,N=Q*C+h,R=o*C+c,F=Q*C+r*a+h,M=o*C+E*a+c,z=r*a+h,v=E*a+c,_=n*zA*xA;A[_]=y,A[_+1]=S,A[_+2]=0,A[_+3]=1,A[_+4]=1,A[_+5]=1,A[_+6]=f,A[_+7]=d,A[_+8]=u;const K=_+xA;A[K]=N,A[K+1]=R,A[K+2]=0,A[K+3]=1,A[K+4]=1,A[K+5]=1,A[K+6]=f,A[K+7]=p,A[K+8]=u;const b=_+2*xA;A[b]=F,A[b+1]=M,A[b+2]=0,A[b+3]=1,A[b+4]=1,A[b+5]=1,A[b+6]=f,A[b+7]=p,A[b+8]=w;const j=_+3*xA;A[j]=z,A[j+1]=v,A[j+2]=0,A[j+3]=1,A[j+4]=1,A[j+5]=1,A[j+6]=f,A[j+7]=d,A[j+8]=w;const tA=n*ws,X=n*zA;t[tA]=X,t[tA+1]=X+1,t[tA+2]=X+2,t[tA+3]=X,t[tA+4]=X+2,t[tA+5]=X+3}return s}function iQ(g,A,t){const e=yB(g,k.__wbindgen_malloc),i=QA;var I=yB(A,k.__wbindgen_malloc),s=QA,n=BQ(t,k.__wbindgen_malloc),B=QA;return k.build_batch_vertices(e,i,I,s,A,n,B,t)>>>0}function gQ(g){const A=eC(g,k.__wbindgen_malloc),t=QA,e=k.decode_svga(A,t);if(e[2])throw qn(e[1]);return qn(e[0])}function IQ(g){const A=eC(g,k.__wbindgen_malloc),t=QA,e=k.inflate(A,t);if(e[3])throw qn(e[2]);var i=tC(e[0],e[1]).slice();return k.__wbindgen_free(e[0],e[1]*1,1),i}function $B(){k.init()}function AC(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,t){return Error(un(A,t))},__wbg_String_8564e559799eccda:function(A,t){const e=String(t),i=CQ(e,k.__wbindgen_malloc,k.__wbindgen_realloc),I=QA;pB().setInt32(A+4,I,!0),pB().setInt32(A+0,i,!0)},__wbg___wbindgen_copy_to_typed_array_a4db337751e0b328:function(A,t,e){new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(tC(A,t))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,t){throw new Error(un(A,t))},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_set_08463b1df38a7e29:function(A,t,e){return A.set(t,e)},__wbg_set_6be42768c690e380:function(A,t,e){A[t]=e},__wbg_set_6c60b2e8ad0e9383:function(A,t,e){A[t>>>0]=e},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,t){return un(A,t)},__wbindgen_init_externref_table:function(){const A=k.__wbindgen_externrefs,t=A.grow(4);A.set(0,void 0),A.set(t+0,void 0),A.set(t+1,null),A.set(t+2,!0),A.set(t+3,!1)}}}}function tC(g,A){return g=g>>>0,jA().subarray(g/1,g/1+A)}let kA=null;function pB(){return(kA===null||kA.buffer.detached===!0||kA.buffer.detached===void 0&&kA.buffer!==k.memory.buffer)&&(kA=new DataView(k.memory.buffer)),kA}let os=null;function sQ(){return(os===null||os.byteLength===0)&&(os=new Float32Array(k.memory.buffer)),os}function un(g,A){return g=g>>>0,QQ(g,A)}let Es=null;function nQ(){return(Es===null||Es.byteLength===0)&&(Es=new Uint32Array(k.memory.buffer)),Es}let hs=null;function jA(){return(hs===null||hs.byteLength===0)&&(hs=new Uint8Array(k.memory.buffer)),hs}function BQ(g,A){const t=A(g.length*4,4)>>>0;return nQ().set(g,t/4),QA=g.length,t}function eC(g,A){const t=A(g.length*1,1)>>>0;return jA().set(g,t/1),QA=g.length,t}function yB(g,A){const t=A(g.length*4,4)>>>0;return sQ().set(g,t/4),QA=g.length,t}function CQ(g,A,t){if(t===void 0){const n=Ds.encode(g),B=A(n.length,1)>>>0;return jA().subarray(B,B+n.length).set(n),QA=n.length,B}let e=g.length,i=A(e,1)>>>0;const I=jA();let s=0;for(;s<e;s++){const n=g.charCodeAt(s);if(n>127)break;I[i+s]=n}if(s!==e){s!==0&&(g=g.slice(s)),i=t(i,e,e=s+g.length*3,1)>>>0;const n=jA().subarray(i+s,i+e),B=Ds.encodeInto(g,n);s+=B.written,i=t(i,e,s,1)>>>0}return QA=s,i}function qn(g){const A=k.__wbindgen_externrefs.get(g);return k.__externref_table_dealloc(g),A}let Vs=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Vs.decode();const aQ=2146435072;let wn=0;function QQ(g,A){return wn+=A,wn>=aQ&&(Vs=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Vs.decode(),wn=A),Vs.decode(jA().subarray(g,g+A))}const Ds=new TextEncoder;"encodeInto"in Ds||(Ds.encodeInto=function(g,A){const t=Ds.encode(g);return A.set(t),{read:g.length,written:t.length}});let QA=0,k;function iC(g,A){return k=g.exports,kA=null,os=null,Es=null,hs=null,k.__wbindgen_start(),k}async function rQ(g,A){if(typeof Response=="function"&&g instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(g,A)}catch(i){if(g.ok&&t(g.type)&&g.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",i);else throw i}const e=await g.arrayBuffer();return await WebAssembly.instantiate(e,A)}else{const e=await WebAssembly.instantiate(g,A);return e instanceof WebAssembly.Instance?{instance:e,module:g}:e}function t(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}}function oQ(g){if(k!==void 0)return k;g!==void 0&&(Object.getPrototypeOf(g)===Object.prototype?{module:g}=g:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const A=AC();g instanceof WebAssembly.Module||(g=new WebAssembly.Module(g));const t=new WebAssembly.Instance(g,A);return iC(t)}async function gC(g){if(k!==void 0)return k;g!==void 0&&(Object.getPrototypeOf(g)===Object.prototype?{module_or_path:g}=g:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),g===void 0&&(g=new URL("data:application/wasm;base64,AGFzbQEAAAABlgIoYAJ/fwF/YAN/f38AYAJ/fwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAR/f39/AX9gBn9/f39/fwBgAABgAAFvYAV/f39/fwF/YAJ/fwFvYAZ/f39/f38Bf2AAAX9gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAAR/f39/YAADf39/YANvb28Bb2ADb39vAGADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2AIf39/f39/f38AYAJ/fwF+YAZ/f39+f38AYAZ/f399f38AYAZ/f398f38AYAJ/fwR/f39/YAJ/fwN/f39gCH9/f39vf39vAX9gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwK2Bg4XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzA4NDYzYjFkZjM4YTdlMjkAFRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAWFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABcXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAGBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfOTljYWJhZTUwMWMwYThhMAALFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld19mM2M5ZGY0ZjM4ZjNmNzk4AAsXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAA0XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19zdHJpbmdfYjI5YjVjNWE4MDY1YmExYQAZFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzNV9fd2JnX19fd2JpbmRnZW5f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AEG45sAANgIAQbjmwABBsObAADYCAEHM5sAAQcDmwAA2AgBBwObAAEG45sAANgIAQdTmwABByObAADYCAEHI5sAAQcDmwAA2AgBB3ObAAEHQ5sAANgIAQdDmwABByObAADYCAEHY5sAAQdDmwAA2AgBB5ObAAEHY5sAANgIAQeDmwABB2ObAADYCAEHs5sAAQeDmwAA2AgBB6ObAAEHg5sAANgIAQfTmwABB6ObAADYCAEHw5sAAQejmwAA2AgBB/ObAAEHw5sAANgIAQfjmwABB8ObAADYCAEGE58AAQfjmwAA2AgBBgOfAAEH45sAANgIAQYznwABBgOfAADYCAEGI58AAQYDnwAA2AgBBlOfAAEGI58AANgIAQZDnwABBiOfAADYCAEGc58AAQZDnwAA2AgBBpOfAAEGY58AANgIAQZjnwABBkOfAADYCAEGs58AAQaDnwAA2AgBBoOfAAEGY58AANgIAQbTnwABBqOfAADYCAEGo58AAQaDnwAA2AgBBvOfAAEGw58AANgIAQbDnwABBqOfAADYCAEHE58AAQbjnwAA2AgBBuOfAAEGw58AANgIAQcznwABBwOfAADYCAEHA58AAQbjnwAA2AgBB1OfAAEHI58AANgIAQcjnwABBwOfAADYCAEHc58AAQdDnwAA2AgBB0OfAAEHI58AANgIAQeTnwABB2OfAADYCAEHY58AAQdDnwAA2AgBB7OfAAEHg58AANgIAQeDnwABB2OfAADYCAEH058AAQejnwAA2AgBB6OfAAEHg58AANgIAQfznwABB8OfAADYCAEHw58AAQejnwAA2AgBBhOjAAEH458AANgIAQfjnwABB8OfAADYCAEGM6MAAQYDowAA2AgBBgOjAAEH458AANgIAQZTowABBiOjAADYCAEGI6MAAQYDowAA2AgBBrOjAACABQQ9qQXhxIgBBCGsiAjYCAEGQ6MAAQYjowAA2AgBBpOjAACAEQShrIgQgASAAa2pBCGoiADYCACACIABBAXI2AgQgASAEakEoNgIEQbjowABBgICAATYCAAwICyACIANJIAEgAk1yDQAgACgCDCIDQQFxDQAgA0EBdiAHRg0DC0G86MAAQbzowAAoAgAiACABIAAgAUkbNgIAIAEgBGohA0GA5sAAIQACQAJAA0AgAyAAKAIAIgZHBEAgACgCCCIADQEM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AgAiASAAKAIEIgAgCyACIAMQggENACABIAQgBSAAKAIMEQQAIQYLIAYLlAYBBX8gAEEIayIBIABBBGsoAgAiA0F4cSIAaiECAkACQCADQQFxDQAgA0ECcUUNASABKAIAIgMgAGohACABIANrIgFBqOjAACgCAEYEQCACKAIEQQNxQQNHDQFBoOjAACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADECYLAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkGs6MAAKAIARg0CIAJBqOjAACgCAEYNAyACIANBeHEiAhAmIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQajowAAoAgBHDQFBoOjAACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgALIABBgAJJDQIgASAAECdBACEBQcDowABBwOjAACgCAEEBayIANgIAIAANBEGI5sAAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQcDowABB/x8gASABQf8fTRs2AgAPC0Gs6MAAIAE2AgBBpOjAAEGk6MAAKAIAIABqIgA2AgAgASAAQQFyNgIEQajowAAoAgAgAUYEQEGg6MAAQQA2AgBBqOjAAEEANgIACyAAQbjowAAoAgAiA00NA0Gs6MAAKAIAIgJFDQNBACEAQaTowAAoAgAiBEEpSQ0CQYDmwAAhAQNAIAIgASgCACIFTwRAIAIgBSABKAIEakkNBAsgASgCCCEBDAALAAtBqOjAACABNgIAQaDowABBoOjAACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgAPCwJAQZjowAAoAgAiAkEBIABBA3Z0IgNxRQRAQZjowAAgAiADcjYCACAAQfgBcUGQ5sAAaiIAIQIMAQsgAEH4AXEiAEGQ5sAAaiECIABBmObAAGooAgAhAAsgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBiObAACgCACIBBEADQCAAQQFqIQAgASgCCCIBDQALC0HA6MAAQf8fIAAgAEH/H00bNgIAIAMgBE8NAEG46MAAQX82AgALC+8EAQh/IwBBIGsiAyQAIAAoAgQhAgJAAkACQAJAAkAgACgCDCIEQQFxRQRAIAEgAmoiASACSQ0BIAQoAhBBAUYNAiAD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RQRAQbirwABBMhDRAQALIAVBCGogASADIAQgAigCEBEDACAAIAUtAAgiATYCCCAAIAUoAgxBACABGzYCBCAAQQAgBS0ACSABGzYCACAFQRBqJAALWwEBfyMAQSBrIgUkACAFIAE2AgQgBSAANgIAIAUgAzYCDCAFIAI2AgggBSAFQQhqrUKAgICA4AyENwMYIAUgBa1CgICAgKAMhDcDEEGmhcAAIAVBEGogBBB/AAtgAQF/IwBBEGsiBCQAIAFFBEBBuKvAAEEyENEBAAsgBEEIaiABIAMgAigCEBEBACAAIAQtAAgiATYCCCAAIAQoAgxBACABGzYCBCAAQQAgBC0ACSABGzYCACAEQRBqJAALXgECfyMAQSBrIgYkACABRQRAQbirwABBMhDRAQALIAZBFGoiByABIAMgBCAFIAIoAhARBQAgBkEIaiAHEFYgBiAGKAIIIAYoAgwQvQEgACAGKQMANwIAIAZBIGokAAtbAQF/IAEoAgAiBEEBcQRAIAAgASAEIAQgAiADEEEPCyAEIAQoAggiAUEBajYCCCABQQBOBEAgACAENgIMIAAgAzYCCCAAIAI2AgQgAEHMrMAANgIADwsQyAEAC0kBAX8jAEEQayICJAAgASAAKAIAIgBBf3NBH3ZBAUEAIAAgAEEfdSIBcyABayACQQZqIgEQICIAIAFqQQogAGsQFSACQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQERAAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQEQUAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQEREAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQERIAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAG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IAEoAgAgASgCBCAAKAIMKAIAIgAoAgAgACgCBBAeCzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQAARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQQAC0UBAX9BGEEEEM4BIgJFBEBBBEEYENQBAAsgAiABNgIUIAIgADYCECACQoCAgICAgICAgH83AgggAkKAgICAwAA3AgAgAgs7AQF/IwBBEGsiASQAIAFBOjYCDCABQTo2AgQgASAANgIIIAEgAEEEajYCAEG0gcAAIAFByK3AABB/AAs2AQF/A0AgACgAACEDIAAgASgAADYAACABIAM2AAAgAEEEaiEAIAFBBGohASACQQFrIgINAAsL7QEBA38gASgCCCICQYCAgBBxRQRAIAJBgICAIHFFBEAgACABEHYPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQCO1UA6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGM1cAAQQIgAiADakEQakEAIAJrEBUgA0EQaiQADwtBACECIwBBEGsiAyQAIAAoAgAhAANAIAIgA2pBD2ogAEEPcS0A/NRAOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBjNXAAEECIAIgA2pBEGpBACACaxAVIANBEGokAAtVAQF/IwBBEGsiAyQAIAMgAjYCDCADIAE2AgggA0EIaiEBIANBDGohAgJAIAAoAgAiAEEBcQRAIAAgASgCACACKAIAEHQMAQsgABCRAQsgA0EQaiQAC1gBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADQQhqIQEgA0EMaiECAkAgACgCACIAQQFxBEAgAEF+cSABKAIAIAIoAgAQdAwBCyAAEJEBCyADQRBqJAALLgACQCADaUEBRyABQYCAgIB4IANrS3INACAAIAEgAyACELcBIgBFDQAgAA8LAAs5AQF/QQEhAgJAIAAgARArDQAgASgCAEGs5MAAQQIgASgCBCgCDBEEAA0AIABBBGogARArIQILIAIL0hECGH8EfiMAQRBrIhEkACARIAE2AgwgESAANgIIAn8gEUEIaiEAIwBBIGsiDSQAAkACfwJAQQBBqKrAACgCABEHACIPBEAgDygCAA0DIA9BfzYCACANQQhqIQ4gACgCACEQIAAoAgQhEiMA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dmFsaWQgdGFnIHZhbHVlOiAwDmJlZ2luIDw9IGVuZCAowAQgPD0gwBApIHdoZW4gc2xpY2luZyBgwAFgwAALYnl0ZSBpbmRleCDAFiBpcyBvdXQgb2YgYm91bmRzIG9mIGDAAWDAAAtieXRlIGluZGV4IMAmIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSDACCAoYnl0ZXMgwAYpIG9mIGDAAWDAACJhZHZhbmNlIG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IGFkdmFuY2luZyBieSDAABZzbGljZSBpbmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhlIGluZGV4IGlzIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAACFjYW5ub3QgYWR2YW5jZSBwYXN0IGByZW1haW5pbmdgOiDABCA8PSDAAEhjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiDAABNpbnZhbGlkIGtleSB2YWx1ZTogwAAZaW52YWxpZCB3aXJlIHR5cGUgdmFsdWU6IMAAElNlcmlhbGl6ZSBmYWlsZWQ6IMAAEEluZmxhdGUgZmFpbGVkOiDAABhQcm90b2J1ZiBkZWNvZGUgZmFpbGVkOiDAAMACOiDAAHNyY1x2ZXJ0ZXgucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGJ5dGVzX211dC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL2lvL2ltcGxzLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xieXRlcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3RocmVhZF9sb2NhbC9ub190aHJlYWRzLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcb3V0cHV0X2J1ZmZlci5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGZsYXRlMi0xLjEuOVxzcmNcYnVmcmVhZGVyLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L251bS5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXHN0cmVhbS5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcd2FzbS1iaW5kZ2VuLTAuMi4xMTdcc3JjXGV4dGVybnJlZi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXGNvcmUucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnVmXHRha2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHNlcmRlLXdhc20tYmluZGdlbi0wLjYuNVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xsaWIucnMAJmNvcHlfZnJvbV9zbGljZTogc291cmNlIHNsaWNlIGxlbmd0aCAowCspIGRvZXMgbm90IG1hdGNoIGRlc3RpbmF0aW9u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c3NlcnRpb24gZmFpbGVkOiBuIDw9IHNlbGYuYnVmLmluaXQgLSBzZWxmLmJ1Zi5maWxsZWQAWgYQAFMAAAAVAQAACQAAALkIEABJAAAAsgEAADEAAABoAxAASwAAADYBAAAYAAAAAQAAAAAAAABpbnZhbGlkIHN0cmluZyB2YWx1ZTogZGF0YSBpcyBub3QgVVRGLTggZW5jb2RlZAC0AxAAYAAAAMMCAAAJAAAAY29ycnVwdCBkZWZsYXRlIHN0cmVhbQAA6gQQAGQAAABiAAAAFQAAAGBsZW5gIGdyZWF0ZXIgdGhhbiByZW1haW5pbmfeBxAAYwAAAJgAAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogY250IDw9IHNlbGYubGltaXQA3gcQAGMAAACSAAAACQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWVpbnZhbGlkIHRhZyB2YWx1ZTogMGRlbGltaXRlZCBsZW5ndGggZXhjZWVkZWRidWZmZXIgdW5kZXJmbG93dW5leHBlY3RlZCBlbmQgZ3JvdXAgdGFncmVjdXJzaW9uIGxpbWl0IHJlYWNoZWRpbnZhbGlkIHZhcmludFJnYmFDb2xvcmdyYmFTaGFwZUFyZ3NkU2hhcGVTdHlsZW1pdGVyX2xpbWl0bGluZV9kYXNoX2lpaWZpbGxsaW5lX2NhcHN0cm9rZWxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9qb2luc3Ryb2tlX3dpZHRoRWxsaXBzZUFyZ3N4eXJhZGl1c194cmFkaXVzX3lSZWN0QXJnc3dpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RhdGEgdG9vIHNob3J0IGZvciB6bGliQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQVBBAAXgAAAGsAAAANAAAAYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50VmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0AAAABgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAthQQALwUEADIFBAA1xQQAOEUEADpFBAACAAAAH8JEABqAAAANQAAAA4AAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAFQQQAF4AAABrAAAADQAAAAoGEABPAAAA3wEAABkAAAAAAAAA//////////+gFRAAQbirwAALVWNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkZmFpbGVkIHRvIGRlY29kZSBQcm90b2J1ZiBtZXNzYWdlOiAAQZiswAALpQMBAAAAJgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAJwAAACgAAAApAAAAKgAAACsAAAC0AxAAYAAAADoFAAAyAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAAvAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAtAMQAGAAAABIBQAASQAAAExheW91dEVycm9yAOoJEABeAAAAqgAAAAUAAABhYm9ydAAAAOoJEABeAAAAbgAAAAkAAABvdmVyZmxvd7oCEABkAAAAqQIAABUAAAC6AhAAZAAAAL0CAAAdAAAAOwAAADwAAAA9AAAAPgAAAD8AAACuBhAAbAAAAHwAAAARAAAArgYQAGwAAACJAAAAEQAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXnTcnEjtIHIS91jtwZSgLmiQQAAAAwAAAAEAAAAQgAAAEEAAAAMAAAABAAAAEMAAABCAAAAhBcQAEQAAABFAAAARgAAAEQAAABHAEHIr8AAC2kCAAAAAAAAAAQAAAB0BBAAdQAAACAAAAAJAAAAdAQQAHUAAAAqAAAAEwAAABsHEABsAAAAXgYAACgAAAAbBxAAbAAAAGsGAAA2AAAAGwcQAGwAAABrBgAAGgAAABsHEABsAAAAcwcAAD4AQbywwAALqRsBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACGwcQAGwAAADZBwAATQAAAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYBAREgAIBwkGCgULBAwDDQIOAQ8AGwcQAGwAAAA8BgAALQAAABsHEABsAAAAPAYAABkAAAAbBxAAbAAAAIQGAAAgAAAAAQEBAAQAAAAbBxAAbAAAABECAAAoAAAAAAAAgABAAMAAIACgAGAA4AAQAJAAUADQADAAsABwAPAACACIAEgAyAAoAKgAaADoABgAmABYANgAOAC4AHgA+AAEAIQARADEACQApABkAOQAFACUAFQA1AA0ALQAdAD0AAwAjABMAMwALACsAGwA7AAcAJwAXADcADwAvAB8APwAAgCCAEIAwgAiAKIAYgDiABIAkgBSANIAMgCyAHIA8gAKAIoASgDKACoAqgBqAOoAGgCaAFoA2gA6ALoAegD6AAYAhgBGAMYAJgCmAGYA5gAWAJYAVgDWADYAtgB2APYADgCOAE4AzgAuAK4AbgDuAB4AngBeAN4APgC+AH4A/gABAIEAQQDBACEAoQBhAOEAEQCRAFEA0QAxALEAcQDxAAkAiQBJAMkAKQCpAGkA6QAZAJkAWQDZADkAuQB5APkABQCFAEUAxQAlAKUAZQDlABUAlQBVANUANQC1AHUA9QANAI0ATQDNAC0ArQBtAO0AHQCdAF0A3QA9AL0AfQD9AAMAgwBDAMMAIwCjAGMA4wATAJMAUwDTADMAswBzAPMACwCLAEsAywArAKsAawDrABsAmwBbANsAOwC7AHsA+wAHAIcARwDHACcApwBnAOcAFwCXAFcA1wA3ALcAdwD3AA8AjwBPAM8ALwCvAG8A7wAfAJ8AXwDfAD8AvwB/AP+AAICAgECAwIAggKCAYIDggBCAkIBQgNCAMICwgHCA8IAIgIiASIDIgCiAqIBogOiAGICYgFiA2IA4gLiAeID4gASAhIBEgMSAJICkgGSA5IAUgJSAVIDUgDSAtIB0gPSADICMgEyAzIAsgKyAbIDsgByAnIBcgNyAPIC8gHyA/IACgIKAQoDCgCKAooBigOKAEoCSgFKA0oAygLKAcoDygAqAioBKgMqAKoCqgGqA6oAagJqAWoDagDqAuoB6gPqABoCGgEaAxoAmgKaAZoDmgBaAloBWgNaANoC2gHaA9oAOgI6AToDOgC6AroBugO6AHoCegF6A3oA+gL6AfoD+gAGAgYBBgMGAIYChgGGA4YARgJGAUYDRgDGAsYBxgPGACYCJgEmAyYApgKmAaYDpgBmAmYBZgNmAOYC5gHmA+YAFgIWARYDFgCWApYBlgOWAFYCVgFWA1YA1gLWAdYD1gA2AjYBNgM2ALYCtgG2A7YAdgJ2AXYDdgD2AvYB9gP2AA4CDgEOAw4AjgKOAY4DjgBOAk4BTgNOAM4CzgHOA84ALgIuAS4DLgCuAq4BrgOuAG4CbgFuA24A7gLuAe4D7gAeAh4BHgMeAJ4CngGeA54AXgJeAV4DXgDeAt4B3gPeAD4CPgE+Az4AvgK+Ab4DvgB+An4BfgN+AP4C/gH+A/xsHEABsAAAAhgIAAB0AAAAbBxAAbAAAACIEAAAUAAAAGwcQAGwAAAAjBAAAEgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAzIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAANgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDMpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAADcEAAANAAAAGwcQAGwAAAA5BAAAIgAAABsHEABsAAAAOgQAACYAAAAbBxAAbAAAADsEAAAmAAAAGwcQAGwAAABEBAAAIwAAABsHEABsAAAARAQAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMSA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEYEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAxKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABHBAAADQAAABsHEABsAAAASAQAACIAAAAbBxAAbAAAAEgEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0X3BvcyArIDIgPCBvdXRfc2xpY2UubGVuKCkAGwcQAGwAAABMBAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IChzb3VyY2VfcG9zICsgMikgJiBvdXRfYnVmX3NpemVfbWFzayA8IG91dF9zbGljZS5sZW4oKRsHEABsAAAATQQAAA0AAAAbBxAAbAAAAE4EAAAiAAAAGwcQAGwAAABOBAAADQAAABsHEABsAAAATwQAACYAAAAbBxAAbAAAAE8EAAANAAAAGwcQAGwAAAAsBAAAFwAAAJsFEABuAAAAQgEAABwAAACbBRAAbgAAAHYBAAAwAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAAbV3L1ixQ62N4QaZXcRuLuZq47pFRFJZYz5YA6NKfEoplbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvcm9wZXJh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",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:fn&&fn.tagName.toUpperCase()==="SCRIPT"&&fn.src||new URL("gift-stage.cjs.js",document.baseURI).href));const A=AC();(typeof g=="string"||typeof Request=="function"&&g instanceof Request||typeof URL=="function"&&g instanceof URL)&&(g=fetch(g));const{instance:t,module:e}=await rQ(await g,A);return iC(t)}const EQ=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:iQ,decode_svga:gQ,default:gC,inflate:IQ,init:$B,initSync:oQ},Symbol.toStringTag,{value:"Module"})),hQ="data:application/wasm;base64,AGFzbQEAAAABlgIoYAJ/fwF/YAN/f38AYAJ/fwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAR/f39/AX9gBn9/f39/fwBgAABgAAFvYAV/f39/fwF/YAJ/fwFvYAZ/f39/f38Bf2AAAX9gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAAR/f39/YAADf39/YANvb28Bb2ADb39vAGADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2AIf39/f39/f38AYAJ/fwF+YAZ/f39+f38AYAZ/f399f38AYAZ/f398f38AYAJ/fwR/f39/YAJ/fwN/f39gCH9/f39vf39vAX9gBH9+f38AYAR/fX9/AGAEf3x/fwBgAXwBfwK2Bg4XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzA4NDYzYjFkZjM4YTdlMjkAFRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfNmM2MGIyZThhZDBlOTM4MwAWFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABcXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAGBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfOTljYWJhZTUwMWMwYThhMAALFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld19mM2M5ZGY0ZjM4ZjNmNzk4AAsXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAA0XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19zdHJpbmdfYjI5YjVjNWE4MDY1YmExYQAZFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzNV9fd2JnX19fd2JpbmRnZW5f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AEG45sAANgIAQbjmwABBsObAADYCAEHM5sAAQcDmwAA2AgBBwObAAEG45sAANgIAQdTmwABByObAADYCAEHI5sAAQcDmwAA2AgBB3ObAAEHQ5sAANgIAQdDmwABByObAADYCAEHY5sAAQdDmwAA2AgBB5ObAAEHY5sAANgIAQeDmwABB2ObAADYCAEHs5sAAQeDmwAA2AgBB6ObAAEHg5sAANgIAQfTmwABB6ObAADYCAEHw5sAAQejmwAA2AgBB/ObAAEHw5sAANgIAQfjmwABB8ObAADYCAEGE58AAQfjmwAA2AgBBgOfAAEH45sAANgIAQYznwABBgOfAADYCAEGI58AAQYDnwAA2AgBBlOfAAEGI58AANgIAQZDnwABBiOfAADYCAEGc58AAQZDnwAA2AgBBpOfAAEGY58AANgIAQZjnwABBkOfAADYCAEGs58AAQaDnwAA2AgBBoOfAAEGY58AANgIAQbTnwABBqOfAADYCAEGo58AAQaDnwAA2AgBBvOfAAEGw58AANgIAQbDnwABBqOfAADYCAEHE58AAQbjnwAA2AgBBuOfAAEGw58AANgIAQcznwABBwOfAADYCAEHA58AAQbjnwAA2AgBB1OfAAEHI58AANgIAQcjnwABBwOfAADYCAEHc58AAQdDnwAA2AgBB0OfAAEHI58AANgIAQeTnwABB2OfAADYCAEHY58AAQdDnwAA2AgBB7OfAAEHg58AANgIAQeDnwABB2OfAADYCAEH058AAQejnwAA2AgBB6OfAAEHg58AANgIAQfznwABB8OfAADYCAEHw58AAQejnwAA2AgBBhOjAAEH458AANgIAQfjnwABB8OfAADYCAEGM6MAAQYDowAA2AgBBgOjAAEH458AANgIAQZTowABBiOjAADYCAEGI6MAAQYDowAA2AgBBrOjAACABQQ9qQXhxIgBBCGsiAjYCAEGQ6MAAQYjowAA2AgBBpOjAACAEQShrIgQgASAAa2pBCGoiADYCACACIABBAXI2AgQgASAEakEoNgIEQbjowABBgICAATYCAAwICyACIANJIAEgAk1yDQAgACgCDCIDQQFxDQAgA0EBdiAHRg0DC0G86MAAQbzowAAoAgAiACABIAAgAUkbNgIAIAEgBGohA0GA5sAAIQACQAJAA0AgAyAAKAIAIgZHBEAgACgCCCIADQEM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AgAiASAAKAIEIgAgCyACIAMQggENACABIAQgBSAAKAIMEQQAIQYLIAYLlAYBBX8gAEEIayIBIABBBGsoAgAiA0F4cSIAaiECAkACQCADQQFxDQAgA0ECcUUNASABKAIAIgMgAGohACABIANrIgFBqOjAACgCAEYEQCACKAIEQQNxQQNHDQFBoOjAACAANgIAIAIgAigCBEF+cTYCBCABIABBAXI2AgQgAiAANgIADwsgASADECYLAkACQAJAAkACQCACKAIEIgNBAnFFBEAgAkGs6MAAKAIARg0CIAJBqOjAACgCAEYNAyACIANBeHEiAhAmIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQajowAAoAgBHDQFBoOjAACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgALIABBgAJJDQIgASAAECdBACEBQcDowABBwOjAACgCAEEBayIANgIAIAANBEGI5sAAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQcDowABB/x8gASABQf8fTRs2AgAPC0Gs6MAAIAE2AgBBpOjAAEGk6MAAKAIAIABqIgA2AgAgASAAQQFyNgIEQajowAAoAgAgAUYEQEGg6MAAQQA2AgBBqOjAAEEANgIACyAAQbjowAAoAgAiA00NA0Gs6MAAKAIAIgJFDQNBACEAQaTowAAoAgAiBEEpSQ0CQYDmwAAhAQNAIAIgASgCACIFTwRAIAIgBSABKAIEakkNBAsgASgCCCEBDAALAAtBqOjAACABNgIAQaDowABBoOjAACgCACAAaiIANgIAIAEgAEEBcjYCBCAAIAFqIAA2AgAPCwJAQZjowAAoAgAiAkEBIABBA3Z0IgNxRQRAQZjowAAgAiADcjYCACAAQfgBcUGQ5sAAaiIAIQIMAQsgAEH4AXEiAEGQ5sAAaiECIABBmObAAGooAgAhAAsgAiABNgIIIAAgATYCDCABIAI2AgwgASAANgIIDwtBiObAACgCACIBBEADQCAAQQFqIQAgASgCCCIBDQALC0HA6MAAQf8fIAAgAEH/H00bNgIAIAMgBE8NAEG46MAAQX82AgALC+8EAQh/IwBBIGsiAyQAIAAoAgQhAgJAAkACQAJAAkAgACgCDCIEQQFxRQRAIAEgAmoiASACSQ0BIAQoAhBBAUYNAiAD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RQRAQbirwABBMhDRAQALIAVBCGogASADIAQgAigCEBEDACAAIAUtAAgiATYCCCAAIAUoAgxBACABGzYCBCAAQQAgBS0ACSABGzYCACAFQRBqJAALWwEBfyMAQSBrIgUkACAFIAE2AgQgBSAANgIAIAUgAzYCDCAFIAI2AgggBSAFQQhqrUKAgICA4AyENwMYIAUgBa1CgICAgKAMhDcDEEGmhcAAIAVBEGogBBB/AAtgAQF/IwBBEGsiBCQAIAFFBEBBuKvAAEEyENEBAAsgBEEIaiABIAMgAigCEBEBACAAIAQtAAgiATYCCCAAIAQoAgxBACABGzYCBCAAQQAgBC0ACSABGzYCACAEQRBqJAALXgECfyMAQSBrIgYkACABRQRAQbirwABBMhDRAQALIAZBFGoiByABIAMgBCAFIAIoAhARBQAgBkEIaiAHEFYgBiAGKAIIIAYoAgwQvQEgACAGKQMANwIAIAZBIGokAAtbAQF/IAEoAgAiBEEBcQRAIAAgASAEIAQgAiADEEEPCyAEIAQoAggiAUEBajYCCCABQQBOBEAgACAENgIMIAAgAzYCCCAAIAI2AgQgAEHMrMAANgIADwsQyAEAC0kBAX8jAEEQayICJAAgASAAKAIAIgBBf3NBH3ZBAUEAIAAgAEEfdSIBcyABayACQQZqIgEQICIAIAFqQQogAGsQFSACQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQERAAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQEQUAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQEREAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAGQRBqJAALXAEBfyMAQRBrIgYkACABRQRAQbirwABBMhDRAQALIAZBCGogASADIAQgBSACKAIQERIAIAYoAgwhASAAIAYoAggiAjYCBCAAIAFBACACQQFxGzYCACAG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IAEoAgAgASgCBCAAKAIMKAIAIgAoAgAgACgCBBAeCzgAAkAgAkGAgMQARg0AIAAgAiABKAIQEQAARQ0AQQEPCyADRQRAQQAPCyAAIAMgBCABKAIMEQQAC0UBAX9BGEEEEM4BIgJFBEBBBEEYENQBAAsgAiABNgIUIAIgADYCECACQoCAgICAgICAgH83AgggAkKAgICAwAA3AgAgAgs7AQF/IwBBEGsiASQAIAFBOjYCDCABQTo2AgQgASAANgIIIAEgAEEEajYCAEG0gcAAIAFByK3AABB/AAs2AQF/A0AgACgAACEDIAAgASgAADYAACABIAM2AAAgAEEEaiEAIAFBBGohASACQQFrIgINAAsL7QEBA38gASgCCCICQYCAgBBxRQRAIAJBgICAIHFFBEAgACABEHYPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQCO1UA6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUGM1cAAQQIgAiADakEQakEAIAJrEBUgA0EQaiQADwtBACECIwBBEGsiAyQAIAAoAgAhAANAIAIgA2pBD2ogAEEPcS0A/NRAOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBjNXAAEECIAIgA2pBEGpBACACaxAVIANBEGokAAtVAQF/IwBBEGsiAyQAIAMgAjYCDCADIAE2AgggA0EIaiEBIANBDGohAgJAIAAoAgAiAEEBcQRAIAAgASgCACACKAIAEHQMAQsgABCRAQsgA0EQaiQAC1gBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADQQhqIQEgA0EMaiECAkAgACgCACIAQQFxBEAgAEF+cSABKAIAIAIoAgAQdAwBCyAAEJEBCyADQRBqJAALLgACQCADaUEBRyABQYCAgIB4IANrS3INACAAIAEgAyACELcBIgBFDQAgAA8LAAs5AQF/QQEhAgJAIAAgARArDQAgASgCAEGs5MAAQQIgASgCBCgCDBEEAA0AIABBBGogARArIQILIAIL0hECGH8EfiMAQRBrIhEkACARIAE2AgwgESAANgIIAn8gEUEIaiEAIwBBIGsiDSQAAkACfwJAQQBBqKrAACgCABEHACIPBEAgDygCAA0DIA9BfzYCACANQQhqIQ4gACgCACEQIAAoAgQhEiMA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dmFsaWQgdGFnIHZhbHVlOiAwDmJlZ2luIDw9IGVuZCAowAQgPD0gwBApIHdoZW4gc2xpY2luZyBgwAFgwAALYnl0ZSBpbmRleCDAFiBpcyBvdXQgb2YgYm91bmRzIG9mIGDAAWDAAAtieXRlIGluZGV4IMAmIGlzIG5vdCBhIGNoYXIgYm91bmRhcnk7IGl0IGlzIGluc2lkZSDACCAoYnl0ZXMgwAYpIG9mIGDAAWDAACJhZHZhbmNlIG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IGFkdmFuY2luZyBieSDAABZzbGljZSBpbmRleCBzdGFydHMgYXQgwA0gYnV0IGVuZHMgYXQgwAAgaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyDAEiBidXQgdGhlIGluZGV4IGlzIMAAEnJhbmdlIHN0YXJ0IGluZGV4IMAiIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIMAAEHJhbmdlIGVuZCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAACFjYW5ub3QgYWR2YW5jZSBwYXN0IGByZW1haW5pbmdgOiDABCA8PSDAAEhjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uOiDAABNpbnZhbGlkIGtleSB2YWx1ZTogwAAZaW52YWxpZCB3aXJlIHR5cGUgdmFsdWU6IMAAElNlcmlhbGl6ZSBmYWlsZWQ6IMAAEEluZmxhdGUgZmFpbGVkOiDAABhQcm90b2J1ZiBkZWNvZGUgZmFpbGVkOiDAAMACOiDAAHNyY1x2ZXJ0ZXgucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGJ5dGVzX211dC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL2lvL2ltcGxzLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xieXRlcy5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvc3lzL3RocmVhZF9sb2NhbC9ub190aHJlYWRzLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcbWluaXpfb3hpZGUtMC44Ljlcc3JjXGluZmxhdGVcb3V0cHV0X2J1ZmZlci5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGZsYXRlMi0xLjEuOVxzcmNcYnVmcmVhZGVyLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L251bS5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXHN0cmVhbS5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvaW8vYm9ycm93ZWRfYnVmLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Zcd2FzbS1iaW5kZ2VuLTAuMi4xMTdcc3JjXGV4dGVybnJlZi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXGNvcmUucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9jb3JlL3NyYy91bmljb2RlL3ByaW50YWJsZS5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnVmXHRha2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNi4xL3NyYy9yYXcvbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMvbW9kLnJzAC9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjExL3NyYy9kbG1hbGxvYy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHNlcmRlLXdhc20tYmluZGdlbi0wLjYuNVxzcmNcbGliLnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xsaWIucnMAJmNvcHlfZnJvbV9zbGljZTogc291cmNlIHNsaWNlIGxlbmd0aCAowCspIGRvZXMgbm90IG1hdGNoIGRlc3RpbmF0aW9u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c3NlcnRpb24gZmFpbGVkOiBuIDw9IHNlbGYuYnVmLmluaXQgLSBzZWxmLmJ1Zi5maWxsZWQAWgYQAFMAAAAVAQAACQAAALkIEABJAAAAsgEAADEAAABoAxAASwAAADYBAAAYAAAAAQAAAAAAAABpbnZhbGlkIHN0cmluZyB2YWx1ZTogZGF0YSBpcyBub3QgVVRGLTggZW5jb2RlZAC0AxAAYAAAAMMCAAAJAAAAY29ycnVwdCBkZWZsYXRlIHN0cmVhbQAA6gQQAGQAAABiAAAAFQAAAGBsZW5gIGdyZWF0ZXIgdGhhbiByZW1haW5pbmfeBxAAYwAAAJgAAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogY250IDw9IHNlbGYubGltaXQA3gcQAGMAAACSAAAACQAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWVpbnZhbGlkIHRhZyB2YWx1ZTogMGRlbGltaXRlZCBsZW5ndGggZXhjZWVkZWRidWZmZXIgdW5kZXJmbG93dW5leHBlY3RlZCBlbmQgZ3JvdXAgdGFncmVjdXJzaW9uIGxpbWl0IHJlYWNoZWRpbnZhbGlkIHZhcmludFJnYmFDb2xvcmdyYmFTaGFwZUFyZ3NkU2hhcGVTdHlsZW1pdGVyX2xpbWl0bGluZV9kYXNoX2lpaWZpbGxsaW5lX2NhcHN0cm9rZWxpbmVfZGFzaF9pbGluZV9kYXNoX2lpbGluZV9qb2luc3Ryb2tlX3dpZHRoRWxsaXBzZUFyZ3N4eXJhZGl1c194cmFkaXVzX3lSZWN0QXJnc3dpZHRoaGVpZ2h0Y29ybmVyX3JhZGl1c0RhdGEgdG9vIHNob3J0IGZvciB6bGliQXR0ZW1wdGVkIHRvIGluaXRpYWxpemUgdGhyZWFkLWxvY2FsIHdoaWxlIGl0IGlzIGJlaW5nIGRyb3BwZWQVBBAAXgAAAGsAAAANAAAAYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50VmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0AAAABgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAthQQALwUEADIFBAA1xQQAOEUEADpFBAACAAAAH8JEABqAAAANQAAAA4AAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAFQQQAF4AAABrAAAADQAAAAoGEABPAAAA3wEAABkAAAAAAAAA//////////+gFRAAQbirwAALVWNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkZmFpbGVkIHRvIGRlY29kZSBQcm90b2J1ZiBtZXNzYWdlOiAAQZiswAALpQMBAAAAJgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAJwAAACgAAAApAAAAKgAAACsAAAC0AxAAYAAAADoFAAAyAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAAvAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAtAMQAGAAAABIBQAASQAAAExheW91dEVycm9yAOoJEABeAAAAqgAAAAUAAABhYm9ydAAAAOoJEABeAAAAbgAAAAkAAABvdmVyZmxvd7oCEABkAAAAqQIAABUAAAC6AhAAZAAAAL0CAAAdAAAAOwAAADwAAAA9AAAAPgAAAD8AAACuBhAAbAAAAHwAAAARAAAArgYQAGwAAACJAAAAEQAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXnTcnEjtIHIS91jtwZSgLmiQQAAAAwAAAAEAAAAQgAAAEEAAAAMAAAABAAAAEMAAABCAAAAhBcQAEQAAABFAAAARgAAAEQAAABHAEHIr8AAC2kCAAAAAAAAAAQAAAB0BBAAdQAAACAAAAAJAAAAdAQQAHUAAAAqAAAAEwAAABsHEABsAAAAXgYAACgAAAAbBxAAbAAAAGsGAAA2AAAAGwcQAGwAAABrBgAAGgAAABsHEABsAAAAcwcAAD4AQbywwAALqRsBAQEBAgICAgMDAwMEBAQEBQUFBQAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAIAAgACGwcQAGwAAADZBwAATQAAAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYBAREgAIBwkGCgULBAwDDQIOAQ8AGwcQAGwAAAA8BgAALQAAABsHEABsAAAAPAYAABkAAAAbBxAAbAAAAIQGAAAgAAAAAQEBAAQAAAAbBxAAbAAAABECAAAoAAAAAAAAgABAAMAAIACgAGAA4AAQAJAAUADQADAAsABwAPAACACIAEgAyAAoAKgAaADoABgAmABYANgAOAC4AHgA+AAEAIQARADEACQApABkAOQAFACUAFQA1AA0ALQAdAD0AAwAjABMAMwALACsAGwA7AAcAJwAXADcADwAvAB8APwAAgCCAEIAwgAiAKIAYgDiABIAkgBSANIAMgCyAHIA8gAKAIoASgDKACoAqgBqAOoAGgCaAFoA2gA6ALoAegD6AAYAhgBGAMYAJgCmAGYA5gAWAJYAVgDWADYAtgB2APYADgCOAE4AzgAuAK4AbgDuAB4AngBeAN4APgC+AH4A/gABAIEAQQDBACEAoQBhAOEAEQCRAFEA0QAxALEAcQDxAAkAiQBJAMkAKQCpAGkA6QAZAJkAWQDZADkAuQB5APkABQCFAEUAxQAlAKUAZQDlABUAlQBVANUANQC1AHUA9QANAI0ATQDNAC0ArQBtAO0AHQCdAF0A3QA9AL0AfQD9AAMAgwBDAMMAIwCjAGMA4wATAJMAUwDTADMAswBzAPMACwCLAEsAywArAKsAawDrABsAmwBbANsAOwC7AHsA+wAHAIcARwDHACcApwBnAOcAFwCXAFcA1wA3ALcAdwD3AA8AjwBPAM8ALwCvAG8A7wAfAJ8AXwDfAD8AvwB/AP+AAICAgECAwIAggKCAYIDggBCAkIBQgNCAMICwgHCA8IAIgIiASIDIgCiAqIBogOiAGICYgFiA2IA4gLiAeID4gASAhIBEgMSAJICkgGSA5IAUgJSAVIDUgDSAtIB0gPSADICMgEyAzIAsgKyAbIDsgByAnIBcgNyAPIC8gHyA/IACgIKAQoDCgCKAooBigOKAEoCSgFKA0oAygLKAcoDygAqAioBKgMqAKoCqgGqA6oAagJqAWoDagDqAuoB6gPqABoCGgEaAxoAmgKaAZoDmgBaAloBWgNaANoC2gHaA9oAOgI6AToDOgC6AroBugO6AHoCegF6A3oA+gL6AfoD+gAGAgYBBgMGAIYChgGGA4YARgJGAUYDRgDGAsYBxgPGACYCJgEmAyYApgKmAaYDpgBmAmYBZgNmAOYC5gHmA+YAFgIWARYDFgCWApYBlgOWAFYCVgFWA1YA1gLWAdYD1gA2AjYBNgM2ALYCtgG2A7YAdgJ2AXYDdgD2AvYB9gP2AA4CDgEOAw4AjgKOAY4DjgBOAk4BTgNOAM4CzgHOA84ALgIuAS4DLgCuAq4BrgOuAG4CbgFuA24A7gLuAe4D7gAeAh4BHgMeAJ4CngGeA54AXgJeAV4DXgDeAt4B3gPeAD4CPgE+Az4AvgK+Ab4DvgB+An4BfgN+AP4C/gH+A/xsHEABsAAAAhgIAAB0AAAAbBxAAbAAAACIEAAAUAAAAGwcQAGwAAAAjBAAAEgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAzIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAANgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDMpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAADcEAAANAAAAGwcQAGwAAAA5BAAAIgAAABsHEABsAAAAOgQAACYAAAAbBxAAbAAAADsEAAAmAAAAGwcQAGwAAABEBAAAIwAAABsHEABsAAAARAQAAA4AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMSA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEYEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAxKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABHBAAADQAAABsHEABsAAAASAQAACIAAAAbBxAAbAAAAEgEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0X3BvcyArIDIgPCBvdXRfc2xpY2UubGVuKCkAGwcQAGwAAABMBAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IChzb3VyY2VfcG9zICsgMikgJiBvdXRfYnVmX3NpemVfbWFzayA8IG91dF9zbGljZS5sZW4oKRsHEABsAAAATQQAAA0AAAAbBxAAbAAAAE4EAAAiAAAAGwcQAGwAAABOBAAADQAAABsHEABsAAAATwQAACYAAAAbBxAAbAAAAE8EAAANAAAAGwcQAGwAAAAsBAAAFwAAAJsFEABuAAAAQgEAABwAAACbBRAAbgAAAHYBAAAwAAAAZGVzdCBpcyBvdXQgb2YgYm91bmRzAAAAbV3L1ixQ62N4QaZXcRuLuZq47pFRFJZYz5YA6NKfEoplbnRpdHkgbm90IGZvdW5kcGVybWlzc2lvbiBkZW5pZWRjb25uZWN0aW9uIHJlZnVzZWRjb25uZWN0aW9uIHJlc2V0aG9zdCB1bnJlYWNoYWJsZW5ldHdvcmsgdW5yZWFjaGFibGVjb25uZWN0aW9uIGFib3J0ZWRub3QgY29ubmVjdGVkYWRkcmVzcyBpbiB1c2VhZGRyZXNzIG5vdCBhdmFpbGFibGVuZXR3b3JrIGRvd25icm9rZW4gcGlwZWVudGl0eSBhbHJlYWR5IGV4aXN0c29wZXJhdGlvbiB3b3VsZCBibG9ja25vdCBhIGRpcmVjdG9yeWlzIGEgZGlyZWN0b3J5ZGlyZWN0b3J5IG5vdCBlbXB0eXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJpbnZhbGlkIGRhdGF0aW1lZCBvdXR3cml0ZSB6ZXJvbm8gc3RvcmFnZSBzcGFjZXNlZWsgb24gdW5zZWVrYWJsZSBmaWxlcXVvdGEgZXhjZWVkZWRmaWxlIHRvbyBsYXJnZXJlc291cmNlIGJ1c3lleGVjdXRhYmxlIGZpbGUgYnVzeWRlYWRsb2NrY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1ldG9vIG1hbnkgbGlua3NpbnZhbGlkIGZpbGVuYW1lYXJndW1lbnQgbGlzdCB0b28gbG9uZ29wZXJhdGlvbiBpbnRlcnJ1cHRlZHVuc3VwcG9ydGVkdW5leHBlY3RlZCBlbmQgb2YgZmlsZW91dCBvZiBtZW1vcnlpbiBwcm9ncmVzc290aGVyIGVycm9ydW5jYXRlZ29yaXplZCBlcnJvcm9wZXJh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";let uA=null,Js=null;function XA(){return uA!==null}async function IC(){return uA?!0:Js||(Js=(async()=>{try{return await gC({module_or_path:hQ}),$B(),uA=EQ,!0}catch(g){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",g),!1}})(),Js)}function cQ(g){if(!uA)return null;try{return uA.inflate(g)}catch(A){return null}}function lQ(g){if(!uA)return null;try{return dQ(uA.decode_svga(g))}catch(A){return null}}function Dn(g,A,t){if(!uA)return null;try{return uA.build_batch_vertices(g,A,t)}catch(e){return null}}function dQ(g){var A,t,e,i,I,s,n;const B=g.params,C=B?{viewBoxWidth:(A=B.view_box_width)!=null?A:0,viewBoxHeight:(t=B.view_box_height)!=null?t:0,fps:(e=B.fps)!=null?e:20,frames:(i=B.frames)!=null?i:0}:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},a=new Map,Q=g.images;if(Q instanceof Map)for(const[E,h]of Q)a.set(E,h instanceof Uint8Array?h:new Uint8Array(h));else if(Q&&typeof Q=="object")for(const[E,h]of Object.entries(Q))a.set(E,h instanceof Uint8Array?h:new Uint8Array(h));const o=((I=g.sprites)!=null?I:[]).map(E=>{var h,c;return{imageKey:(h=E.image_key)!=null?h:"",frames:((c=E.frames)!=null?c:[]).map(f=>{var d,u,p,w,y,S,N,R,F,M,z,v;return{alpha:(d=f.alpha)!=null?d:0,layout:f.layout?{x:(u=f.layout.x)!=null?u:0,y:(p=f.layout.y)!=null?p:0,width:(w=f.layout.width)!=null?w:0,height:(y=f.layout.height)!=null?y:0}:null,transform:f.transform?{a:(S=f.transform.a)!=null?S:1,b:(N=f.transform.b)!=null?N:0,c:(R=f.transform.c)!=null?R:0,d:(F=f.transform.d)!=null?F:1,tx:(M=f.transform.tx)!=null?M:0,ty:(z=f.transform.ty)!=null?z:0}:null,clipPath:(v=f.clip_path)!=null?v:""}})}}),r=((s=g.audios)!=null?s:[]).map(E=>{var h,c,f,d,u;return{audioKey:(h=E.audio_key)!=null?h:"",startFrame:(c=E.start_frame)!=null?c:0,endFrame:(f=E.end_frame)!=null?f:0,startTime:(d=E.start_time)!=null?d:0,totalTime:(u=E.total_time)!=null?u:0}});return{version:(n=g.version)!=null?n:"",params:C,images:a,sprites:o,audios:r}}var fQ=Object.defineProperty,uQ=(g,A,t)=>A in g?fQ(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,pn=(g,A,t)=>uQ(g,typeof A!="symbol"?A+"":A,t);class sC{constructor(){pn(this,"floatPoolA",null),pn(this,"floatPoolB",null),pn(this,"uint32Pool",null)}getFloat32(A){var t,e;if(!this.floatPoolA||this.floatPoolA.length<A){const i=Math.max(A,((e=(t=this.floatPoolA)==null?void 0:t.length)!=null?e:0)*2,1024);this.floatPoolA=new Float32Array(i)}return this.floatPoolA}getFloat32B(A){var t,e;if(!this.floatPoolB||this.floatPoolB.length<A){const i=Math.max(A,((e=(t=this.floatPoolB)==null?void 0:t.length)!=null?e:0)*2,1024);this.floatPoolB=new Float32Array(i)}return this.floatPoolB}getUint32(A){var t,e;if(!this.uint32Pool||this.uint32Pool.length<A){const i=Math.max(A,((e=(t=this.uint32Pool)==null?void 0:t.length)!=null?e:0)*2,1024);this.uint32Pool=new Uint32Array(i)}return this.uint32Pool}destroy(){this.floatPoolA=null,this.floatPoolB=null,this.uint32Pool=null}}function LA(g,A,t,e,i,I){const s=1/(g-A),n=1/(t-e),B=1/(i-I),C=new Float32Array(16);return C[0]=-2*s,C[5]=-2*n,C[10]=2*B,C[12]=(g+A)*s,C[13]=(e+t)*n,C[14]=(i+I)*B,C[15]=1,C}function Ws(g,A,t){return g+(A-g)*t}function Zn(g,A,t){return g<A?A:g>t?t:g}let wQ=0;function nC(){return`gift_${++wQ}_${Date.now().toString(36)}`}const nn=8;function DQ(g){if(!g||g.trim().length===0)return[];const A=[];let t=[],e=0,i=0,I=0,s=0,n=0,B=0;const C=pQ(g);let a=0;function Q(){return a<C.length?parseFloat(C[a++]):0}for(;a<C.length;)switch(C[a++]){case"M":for(t.length>0&&(A.push(t),t=[]),e=Q(),i=Q(),I=e,s=i,t.push({x:e,y:i});a<C.length&&!isNaN(parseFloat(C[a]));)e=Q(),i=Q(),t.push({x:e,y:i});break;case"m":for(t.length>0&&(A.push(t),t=[]),e+=Q(),i+=Q(),I=e,s=i,t.push({x:e,y:i});a<C.length&&!isNaN(parseFloat(C[a]));)e+=Q(),i+=Q(),t.push({x:e,y:i});break;case"L":for(;a<C.length&&!isNaN(parseFloat(C[a]));)e=Q(),i=Q(),t.push({x:e,y:i});break;case"l":for(;a<C.length&&!isNaN(parseFloat(C[a]));)e+=Q(),i+=Q(),t.push({x:e,y:i});break;case"H":for(;a<C.length&&!isNaN(parseFloat(C[a]));)e=Q(),t.push({x:e,y:i});break;case"h":for(;a<C.length&&!isNaN(parseFloat(C[a]));)e+=Q(),t.push({x:e,y:i});break;case"V":for(;a<C.length&&!isNaN(parseFloat(C[a]));)i=Q(),t.push({x:e,y:i});break;case"v":for(;a<C.length&&!isNaN(parseFloat(C[a]));)i+=Q(),t.push({x:e,y:i});break;case"C":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=Q(),E=Q(),h=Q(),c=Q(),f=Q(),d=Q();Hs(t,e,i,r,E,h,c,f,d),n=h,B=c,e=f,i=d}break}case"c":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=e+Q(),E=i+Q(),h=e+Q(),c=i+Q(),f=e+Q(),d=i+Q();Hs(t,e,i,r,E,h,c,f,d),n=h,B=c,e=f,i=d}break}case"S":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=2*e-n,E=2*i-B,h=Q(),c=Q(),f=Q(),d=Q();Hs(t,e,i,r,E,h,c,f,d),n=h,B=c,e=f,i=d}break}case"s":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=2*e-n,E=2*i-B,h=e+Q(),c=i+Q(),f=e+Q(),d=i+Q();Hs(t,e,i,r,E,h,c,f,d),n=h,B=c,e=f,i=d}break}case"Q":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=Q(),E=Q(),h=Q(),c=Q();mB(t,e,i,r,E,h,c),n=r,B=E,e=h,i=c}break}case"q":{for(;a<C.length&&!isNaN(parseFloat(C[a]));){const r=e+Q(),E=i+Q(),h=e+Q(),c=i+Q();mB(t,e,i,r,E,h,c),n=r,B=E,e=h,i=c}break}case"Z":case"z":e=I,i=s,t.length>0&&(A.push(t),t=[]);break}return t.length>0&&A.push(t),A}function pQ(g){return g.replace(/([A-Za-z])/g," $1 ").replace(/,/g," ").trim().split(/\s+/).filter(A=>A.length>0)}function Hs(g,A,t,e,i,I,s,n,B){for(let C=1;C<=nn;C++){const a=C/nn,Q=1-a,o=Q*Q,r=a*a;g.push({x:o*Q*A+3*o*a*e+3*Q*r*I+r*a*n,y:o*Q*t+3*o*a*i+3*Q*r*s+r*a*B})}}function mB(g,A,t,e,i,I,s){for(let n=1;n<=nn;n++){const B=n/nn,C=1-B;g.push({x:C*C*A+2*C*B*e+B*B*I,y:C*C*t+2*C*B*i+B*B*s})}}function yQ(g){const A=g.length;if(A<3)return[];if(A===3)return[0,1,2];const t=[],e=Array.from({length:A},(n,B)=>B),I=mQ(g)>0;let s=A*A;for(;e.length>3&&s-- >0;){let n=!1;const B=e.length;for(let C=0;C<B;C++){const a=e[(C-1+B)%B],Q=e[C],o=e[(C+1)%B],r=g[a],E=g[Q],h=g[o],c=(E.x-r.x)*(h.y-r.y)-(E.y-r.y)*(h.x-r.x);if(!(I?c>0:c<0))continue;let d=!1;for(let u=0;u<B;u++)if(!(u===(C-1+B)%B||u===C||u===(C+1)%B)&&GQ(g[e[u]],r,E,h)){d=!0;break}if(!d){I?t.push(a,Q,o):t.push(a,o,Q),e.splice(C,1),n=!0;break}}if(!n)break}if(e.length===3){const[n,B,C]=e;I?t.push(n,B,C):t.push(n,C,B)}return t}function mQ(g){let A=0;const t=g.length;for(let e=0;e<t;e++){const i=(e+1)%t;A+=g[e].x*g[i].y,A-=g[i].x*g[e].y}return A*.5}function GQ(g,A,t,e){const i=yn(g,A,t),I=yn(g,t,e),s=yn(g,e,A),n=i<0||I<0||s<0,B=i>0||I>0||s>0;return!(n&&B)}function yn(g,A,t){return(g.x-t.x)*(A.y-t.y)-(A.x-t.x)*(g.y-t.y)}function JA(g){var A;return(A=g.options.objectFit)!=null?A:"contain"}var SQ=Object.defineProperty,FQ=(g,A,t)=>A in g?SQ(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,L=(g,A,t)=>FQ(g,typeof A!="symbol"?A+"":A,t);const mn=2048,sB=class Vn{constructor(){L(this,"pool",new sC),L(this,"vertexBufHandles",[]),L(this,"indexBufHandles",[]),L(this,"clipVertBufHandles",[]),L(this,"clipIdxBufHandles",[]),L(this,"clipSpriteVertBufHandles",[]),L(this,"clipSpriteIdxBufHandles",[]),L(this,"batchDrawCursor",0),L(this,"clipMaskDrawCursor",0),L(this,"clipSpriteDrawCursor",0),L(this,"canvasWidth",0),L(this,"canvasHeight",0),L(this,"projCacheW",0),L(this,"projCacheH",0),L(this,"projCache",null),L(this,"clipMeshCache",new Map),L(this,"clipTransformedVertsScratch",null),L(this,"clipFrameDataScratch",new Float32Array(SA)),L(this,"instancedFrameDataScratch",new Float32Array(mn*SA)),L(this,"clipSpriteVertsScratch",null),L(this,"clipSpriteIndicesScratch",null),L(this,"instancedQuadVB",null),L(this,"instancedQuadIB",null)}beginFrame(A){this.batchDrawCursor=0,this.clipMaskDrawCursor=0,this.clipSpriteDrawCursor=0;const t=A.canvas.width,e=A.canvas.height;this.canvasWidth=t,this.canvasHeight=e}flush(A,t){this.beginFrame(A),this.drawSlots(A,t.values())}drawSlot(A,t){t.type!=="svga"||!this.hasAtlasTexture(t)||t.state!=="playing"&&t.state!=="fly"||this.flushGroup(A,[t])}drawSlots(A,t){const e=[];for(const i of t)i.type!=="svga"||!this.hasAtlasTexture(i)||i.state!=="playing"&&i.state!=="fly"||e.push(i);e.length!==0&&this.flushGroup(A,e)}flushGroup(A,t){if(t.length===0)return;const e=this.getProjection(),i=[];let I=null;for(const s of t){const n=s.videoEntity,B=n.params.viewBoxWidth,C=n.params.viewBoxHeight,a=s.width/B,Q=s.height/C,o=JA(s);let r,E,h,c;if(o==="fill")r=a*s.scale,E=Q*s.scale,h=B*r,c=C*E;else{r=E=Math.min(a,Q)*s.scale;const d=Math.min(a,Q);h=B*d*s.scale,c=C*d*s.scale}i.length>0&&(this.drawBatch(A,i,I,e),i.length=0,I=null),A.setScissor(s.x,s.y,Math.min(h,s.width),Math.min(c,s.height));for(const f of n.sprites){if(s.currentFrame<0||s.currentFrame>=f.frames.length)continue;const d=f.frames[s.currentFrame];if(d.alpha<.05)continue;const u=this.resolveSpriteTextureBinding(s,f.imageKey);if(!u)continue;const p={slot:s,sprite:f,frame:d,binding:u,sx:r,sy:E},w=d.clipPath,y=w&&w.length>0?this.getClipMesh(w):null,S=!u.override&&(!I||I.id===u.handle.id);y&&y.indices.length>0?(i.length>0&&(this.drawBatch(A,i,I,e),i.length=0,I=null),this.drawClippedSprite(A,p,y,e)):S?(i.push(p),I=u.handle,i.length>=mn&&(this.drawBatch(A,i,I,e),i.length=0,I=null)):(i.length>0&&(this.drawBatch(A,i,I,e),i.length=0,I=null),this.drawSingleSprite(A,p,e))}}i.length>0&&this.drawBatch(A,i,I,e),A.resetScissor()}getProjection(){return this.projCache&&this.projCacheW===this.canvasWidth&&this.projCacheH===this.canvasHeight?this.projCache:(this.projCacheW=this.canvasWidth,this.projCacheH=this.canvasHeight,this.projCache=LA(0,this.canvasWidth,this.canvasHeight,0,-1,1),this.projCache)}drawBatch(A,t,e,i){const I=Math.min(t.length,mn);if(I<1)return;if(A.type==="webgl2"||A.type==="webgpu"){this.drawBatchInstancedWebGL(A,t,I,e,i);return}const s=this.pool.getFloat32(I*SA);for(let f=0;f<I;f++){const{slot:d,frame:u,binding:p,sx:w,sy:y}=t[f];this.packFrameData(s,f,d,u,p,w,y)}const n=I*zA*xA,B=I*ws,C=this.pool.getFloat32B(n),a=this.pool.getUint32(B),Q=new Float32Array(s.buffer,0,I*SA),o=new Float32Array(C.buffer,0,n),r=new Uint32Array(a.buffer,0,B);(!XA()||Dn(Q,o,r)===null)&&Zs(Q,o,r);const E=this.batchDrawCursor++,h=this.ensureVertexBuffer(A,E,o),c=this.ensureIndexBuffer(A,E,r);A.draw({shader:"svga-batch",vertexBuffer:h,indexBuffer:c,indexCount:B,textures:[e],uniforms:{u_projection:i,u_atlas:0}})}drawBatchInstancedWebGL(A,t,e,i,I){this.ensureInstancedQuadBuffers(A);const s=this.instancedFrameDataScratch;for(let n=0;n<e;n++){const{slot:B,frame:C,binding:a,sx:Q,sy:o}=t[n];this.packFrameData(s,n,B,C,a,Q,o)}A.draw({shader:"svga-instanced",vertexBuffer:this.instancedQuadVB,indexBuffer:this.instancedQuadIB,indexCount:6,instanceCount:e,instanceData:s.subarray(0,e*SA),textures:[i],uniforms:{u_projection:I,u_atlas:0}})}drawClippedSprite(A,t,e,i){var I,s,n,B,C,a;const{slot:Q,frame:o,binding:r,sx:E,sy:h}=t,c=o.transform,f=((I=c==null?void 0:c.a)!=null?I:1)*E,d=((s=c==null?void 0:c.b)!=null?s:0)*h,u=((n=c==null?void 0:c.c)!=null?n:0)*E,p=((B=c==null?void 0:c.d)!=null?B:1)*h,w=((C=c==null?void 0:c.tx)!=null?C:0)*E+Q.x,y=((a=c==null?void 0:c.ty)!=null?a:0)*h+Q.y,S=e.vertices;(!this.clipTransformedVertsScratch||this.clipTransformedVertsScratch.length<S.length)&&(this.clipTransformedVertsScratch=new Float32Array(S.length));const N=this.clipTransformedVertsScratch;for(let DA=0;DA<S.length;DA+=2){const _s=S[DA],MA=S[DA+1];N[DA]=f*_s+u*MA+w,N[DA+1]=d*_s+p*MA+y}const R=this.clipMaskDrawCursor++,F=this.ensureClipVertexBuffer(A,R,N.subarray(0,S.length)),M=this.ensureClipIndexBuffer(A,R,e.indices),z={shader:"clip-mask",vertexBuffer:F,indexBuffer:M,indexCount:e.indices.length,textures:[],uniforms:{u_projection:i},stencil:"write"};A.draw(z);const v=this.clipFrameDataScratch;this.packFrameData(v,0,Q,o,r,E,h);const _=zA*xA,K=ws;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<_)&&(this.clipSpriteVertsScratch=new Float32Array(_)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<K)&&(this.clipSpriteIndicesScratch=new Uint32Array(K));const b=this.clipSpriteVertsScratch,j=this.clipSpriteIndicesScratch;(!XA()||Dn(v,b,j)===null)&&Zs(v,b,j);const tA=this.clipSpriteDrawCursor++,X=this.ensureClipSpriteVertexBuffer(A,tA,b.subarray(0,_)),ZA=this.ensureClipSpriteIndexBuffer(A,tA,j.subarray(0,K)),Bs={shader:"svga-batch",vertexBuffer:X,indexBuffer:ZA,indexCount:K,textures:[r.handle],uniforms:{u_projection:i,u_atlas:0},stencil:"test"};A.draw(Bs);const cA={shader:"clip-mask",vertexBuffer:F,indexBuffer:M,indexCount:e.indices.length,textures:[],uniforms:{u_projection:i},stencil:"clear"};A.draw(cA)}drawSingleSprite(A,t,e){const i=this.clipFrameDataScratch;this.packFrameData(i,0,t.slot,t.frame,t.binding,t.sx,t.sy);const I=zA*xA,s=ws;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<I)&&(this.clipSpriteVertsScratch=new Float32Array(I)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<s)&&(this.clipSpriteIndicesScratch=new Uint32Array(s));const n=this.clipSpriteVertsScratch,B=this.clipSpriteIndicesScratch;(!XA()||Dn(i,n,B)===null)&&Zs(i,n,B);const C=this.clipSpriteDrawCursor++,a=this.ensureClipSpriteVertexBuffer(A,C,n.subarray(0,I)),Q=this.ensureClipSpriteIndexBuffer(A,C,B.subarray(0,s));A.draw({shader:"svga-batch",vertexBuffer:a,indexBuffer:Q,indexCount:s,textures:[t.binding.handle],uniforms:{u_projection:e,u_atlas:0}})}packFrameData(A,t,e,i,I,s,n){var B,C,a,Q,o,r,E,h,c,f,d,u;const p=i.layout,w=i.transform,y=I.rect,S=I.handle.width,N=I.handle.height,R=.5/S,F=.5/N,M=I.override;let z=(C=(B=p==null?void 0:p.width)!=null?B:M==null?void 0:M.logicalWidth)!=null?C:0,v=(Q=(a=p==null?void 0:p.height)!=null?a:M==null?void 0:M.logicalHeight)!=null?Q:0,_=0,K=0;if((M==null?void 0:M.mode)==="dynamic"){const Bs=(o=p==null?void 0:p.width)!=null?o:M.logicalWidth,cA=(r=p==null?void 0:p.height)!=null?r:M.logicalHeight;z=M.logicalWidth,v=M.logicalHeight,_=Math.max(0,(Bs-z)*.5),K=Math.max(0,(cA-v)*.5)}const b=t*SA,j=((E=w==null?void 0:w.a)!=null?E:1)*s,tA=((h=w==null?void 0:w.b)!=null?h:0)*n,X=((c=w==null?void 0:w.c)!=null?c:0)*s,ZA=((f=w==null?void 0:w.d)!=null?f:1)*n;A[b]=z,A[b+1]=v,A[b+2]=j,A[b+3]=tA,A[b+4]=X,A[b+5]=ZA,A[b+6]=((d=w==null?void 0:w.tx)!=null?d:0)*s+j*_+X*K+e.x,A[b+7]=((u=w==null?void 0:w.ty)!=null?u:0)*n+tA*_+ZA*K+e.y,A[b+8]=i.alpha,A[b+9]=y.x+R,A[b+10]=y.y+F,A[b+11]=y.x+y.w-R,A[b+12]=y.y+y.h-F}resolveSpriteTextureBinding(A,t){var e,i,I,s,n;const B=(i=(e=A.svgaSlotTextures)==null?void 0:e.get(t))!=null?i:null;if(B)return{handle:B.texture,rect:{x:0,y:0,w:1,h:1},override:B};const C=A.videoEntity,a=C.atlasRects.get(t),Q=(I=a==null?void 0:a.textureIndex)!=null?I:0,o=(n=(s=C.atlasTextureHandles)==null?void 0:s[Q])!=null?n:C.atlasTextureHandle;return!a||!o?null:{handle:o,rect:a,override:null}}hasAtlasTexture(A){var t;const e=A.videoEntity;return e?!!e.atlasTextureHandle||!!((t=e.atlasTextureHandles)!=null&&t.length):!1}getClipMesh(A){var t;if(this.clipMeshCache.has(A))return(t=this.clipMeshCache.get(A))!=null?t:null;const e=DQ(A);if(e.length===0)return this.clipMeshCache.set(A,null),null;const i=[],I=[];for(const n of e){if(n.length<3)continue;const B=i.length/2;for(const a of n)i.push(a.x,a.y);const C=yQ(n);for(const a of C)I.push(a+B)}if(I.length===0)return this.clipMeshCache.set(A,null),null;const s={vertices:new Float32Array(i),indices:new Uint32Array(I)};return this.clipMeshCache.set(A,s),s}ensureVertexBuffer(A,t,e){const i=this.vertexBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"vertex");return this.vertexBufHandles[t]=I,I}}ensureIndexBuffer(A,t,e){const i=this.indexBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"index");return this.indexBufHandles[t]=I,I}}ensureClipVertexBuffer(A,t,e){const i=this.clipVertBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"vertex");return this.clipVertBufHandles[t]=I,I}}ensureClipIndexBuffer(A,t,e){const i=this.clipIdxBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"index");return this.clipIdxBufHandles[t]=I,I}}ensureClipSpriteVertexBuffer(A,t,e){const i=this.clipSpriteVertBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"vertex");return this.clipSpriteVertBufHandles[t]=I,I}}ensureClipSpriteIndexBuffer(A,t,e){const i=this.clipSpriteIdxBufHandles[t];if(i)return A.updateBuffer(i,e),i;{const I=A.createBuffer(e,"index");return this.clipSpriteIdxBufHandles[t]=I,I}}ensureInstancedQuadBuffers(A){this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(Vn.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(Vn.INSTANCED_QUAD_INDICES,"index"))}destroy(A){for(const t of this.vertexBufHandles)A.deleteBuffer(t);for(const t of this.indexBufHandles)A.deleteBuffer(t);for(const t of this.clipVertBufHandles)A.deleteBuffer(t);for(const t of this.clipIdxBufHandles)A.deleteBuffer(t);for(const t of this.clipSpriteVertBufHandles)A.deleteBuffer(t);for(const t of this.clipSpriteIdxBufHandles)A.deleteBuffer(t);this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.pool.destroy(),this.clipMeshCache.clear(),this.vertexBufHandles=[],this.indexBufHandles=[],this.clipVertBufHandles=[],this.clipIdxBufHandles=[],this.clipSpriteVertBufHandles=[],this.clipSpriteIdxBufHandles=[],this.instancedQuadVB=null,this.instancedQuadIB=null,this.projCache=null}};L(sB,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));L(sB,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let BC=sB;var NQ=Object.defineProperty,xQ=(g,A,t)=>A in g?NQ(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,aA=(g,A,t)=>xQ(g,typeof A!="symbol"?A+"":A,t);const RQ=4,UQ=128*1024*1024,MQ=2048*1024*1024,bQ="gift-stage-resource-cache",kQ=2,nA="resources",Gn="byUpdatedAt",YQ=3e4;class _Q{constructor(A){aA(this,"maxConcurrent"),aA(this,"active",0),aA(this,"queue",[]),this.maxConcurrent=Math.max(1,A)}setMaxConcurrent(A){this.maxConcurrent=Math.max(1,A),this.drain()}async run(A){this.active>=this.maxConcurrent&&await new Promise(t=>{this.queue.push(t)}),this.active++;try{return await A()}finally{this.active--,this.drain()}}drain(){for(;this.active<this.maxConcurrent&&this.queue.length>0;){const A=this.queue.shift();A==null||A()}}}function LQ(){return typeof indexedDB!="undefined"}function ps(g){return g.length*2}function JQ(g){let A=0;for(const t of Object.values(g.images))A+=t.byteLength;return A+=ps(JSON.stringify({version:g.version,params:g.params,sprites:g.sprites,audios:g.audios})),A}function Sn(g){return typeof g=="string"?ps(g):g.byteLength}class HQ{constructor(){aA(this,"limiter",new _Q(RQ)),aA(this,"pending",new Map),aA(this,"memory",new Map),aA(this,"memoryBytes",0),aA(this,"maxMemoryBytes",UQ),aA(this,"maxPersistentBytes",MQ),aA(this,"dbPromise",null),aA(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,t){const e=`ab:${A}`,i=this.getMemory(e,"arrayBuffer");if(i)return i.slice(0);const I=await this.getPersistent(e,"arrayBuffer");return I?(this.setMemory(e,"arrayBuffer",I,I.byteLength),I.slice(0)):this.getOrCreatePending(e,()=>this.limiter.run(async()=>{const s=await fetch(A,{mode:"cors",signal:t});if(!s.ok)throw new Error(`fetch failed ${s.status}`);const n=await s.arrayBuffer();return this.setMemory(e,"arrayBuffer",n,n.byteLength),this.setPersistent(e,"arrayBuffer",n.slice(0)),n.slice(0)}))}async fetchText(A,t){const e=`text:${A}`,i=this.getMemory(e,"text");if(i!=null)return i;const I=await this.getPersistent(e,"text");return I!=null?(this.setMemory(e,"text",I,ps(I)),I):this.getOrCreatePending(e,()=>this.limiter.run(async()=>{const s=await fetch(A,{mode:"cors",signal:t});if(!s.ok)throw new Error(`fetch failed ${s.status}`);const n=await s.text();return this.setMemory(e,"text",n,ps(n)),this.setPersistent(e,"text",n),n}))}async fetchJSON(A,t){const e=`json:${A}`,i=this.getMemory(e,"json");if(i!=null)return i;const I=await this.fetchText(A,t),s=JSON.parse(I);return this.setMemory(e,"json",s,ps(I)),s}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,t){this.setMemory(A,"svga-payload",t,JQ(t))}getMemoryValue(A,t){return this.getMemory(A,t)}setMemoryValue(A,t,e,i){this.setMemory(A,t,e,i)}getPersistedArrayBuffer(A){return this.getPersistent(A,"arrayBuffer")}setPersistedArrayBuffer(A,t){return this.setPersistent(A,"arrayBuffer",t)}deletePersistedValue(A){return this.deletePersistent(A)}getOrCreatePending(A,t){const e=this.pending.get(A);if(e)return e;const i=t().finally(()=>{this.pending.delete(A)});return this.pending.set(A,i),i}getMemory(A,t){const e=this.memory.get(A);return!e||e.kind!==t?null:(this.memory.delete(A),this.memory.set(A,e),e.value)}setMemory(A,t,e,i){const I=this.memory.get(A);I&&(this.memoryBytes-=I.size,this.memory.delete(A)),this.memory.set(A,{key:A,kind:t,size:Math.max(0,i),value:e}),this.memoryBytes+=Math.max(0,i),this.trimMemory()}trimMemory(){for(;this.memoryBytes>this.maxMemoryBytes&&this.memory.size>0;){const A=this.memory.keys().next().value;if(!A)break;const t=this.memory.get(A);if(!t)break;this.memoryBytes-=t.size,this.memory.delete(A)}}async openDb(){return LQ()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const t=indexedDB.open(bQ,kQ);t.onupgradeneeded=()=>{const e=t.result;let i;e.objectStoreNames.contains(nA)?i=t.transaction.objectStore(nA):i=e.createObjectStore(nA,{keyPath:"key"}),i.indexNames.contains(Gn)||i.createIndex(Gn,"updatedAt",{unique:!1})},t.onsuccess=()=>A(t.result),t.onerror=()=>A(null),t.onblocked=()=>A(null)}catch(t){A(null)}})),this.dbPromise):null}async getPersistent(A,t){const e=await this.openDb();return e?new Promise(i=>{try{const I=e.transaction(nA,"readonly");I.onerror=()=>i(null),I.onabort=()=>i(null);const n=I.objectStore(nA).get(A);n.onsuccess=()=>{const B=n.result;if(!B||B.kind!==t){i(null);return}const C=B.sizeBytes||Sn(B.value);if(Date.now()-B.updatedAt>=YQ&&this.touchPersistent({...B,sizeBytes:C,updatedAt:Date.now()}),t==="arrayBuffer"){i(B.value.slice(0));return}i(B.value)},n.onerror=()=>i(null)}catch(I){i(null)}}):null}async setPersistent(A,t,e){const i=await this.openDb();if(!i)return;const I=Sn(e);await new Promise(s=>{try{const n=i.transaction(nA,"readwrite");n.onerror=()=>s(),n.onabort=()=>s();const C=n.objectStore(nA).put({key:A,kind:t,value:e,sizeBytes:I,updatedAt:Date.now()});C.onsuccess=()=>s(),C.onerror=()=>s()}catch(n){s()}}),this.schedulePersistentTrim()}async touchPersistent(A){const t=await this.openDb();t&&await new Promise(e=>{try{const i=t.transaction(nA,"readwrite");i.onerror=()=>e(),i.onabort=()=>e();const s=i.objectStore(nA).put(A);s.onsuccess=()=>e(),s.onerror=()=>e()}catch(i){e()}})}schedulePersistentTrim(){this.persistentTrimPromise||(this.persistentTrimPromise=this.trimPersistent().finally(()=>{this.persistentTrimPromise=null}))}async trimPersistent(){const A=await this.openDb();A&&await new Promise(t=>{try{const e=A.transaction(nA,"readwrite");e.oncomplete=()=>t(),e.onerror=()=>t(),e.onabort=()=>t();const i=e.objectStore(nA),I=i.index(Gn),s=[];let n=0;const B=I.openCursor();B.onsuccess=()=>{const C=B.result;if(C){const Q=C.value,o=Q.sizeBytes||Sn(Q.value);n+=o,s.push({key:Q.key,sizeBytes:o}),C.continue();return}if(n<=this.maxPersistentBytes)return;let a=n;for(const Q of s){if(a<=this.maxPersistentBytes)break;i.delete(Q.key),a-=Q.sizeBytes}},B.onerror=()=>t()}catch(e){t()}})}async deletePersistent(A){const t=await this.openDb();t&&await new Promise(e=>{try{const i=t.transaction(nA,"readwrite");i.onerror=()=>e(),i.onabort=()=>e();const s=i.objectStore(nA).delete(A);s.onsuccess=()=>e(),s.onerror=()=>e()}catch(i){e()}})}}const rA=new HQ;function vQ(g){rA.configure(g)}function Wn(g){return rA.runLimited(g)}function Rs(g,A){return rA.fetchArrayBuffer(g,A)}function KQ(g,A){return rA.fetchJSON(g,A)}function nB(g){return rA.getSVGAWorkerPayload(g)}function GB(g,A){rA.setSVGAWorkerPayload(g,A)}function TQ(g,A){return rA.getMemoryValue(g,A)}function CC(g,A,t,e){rA.setMemoryValue(g,A,t,e)}function qQ(g){return rA.getPersistedArrayBuffer(g)}function ZQ(g,A){return rA.setPersistedArrayBuffer(g,A)}function VQ(g){return rA.deletePersistedValue(g)}async function zn(g){const A=typeof g=="string"?await KQ(g):g;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 OA(g){const[,,A,t]=g.rgbFrame,e=g.w>0?g.w:A,i=g.h>0?g.h:t;return e>0&&i>0?{w:e,h:i}:{w:g.videoW,h:g.videoH}}function vs(g,A,t){const[e,i,I,s]=g;return{left:e/A,right:(e+I)/A,top:(t-i)/t,bottom:(t-i-s)/t}}var WQ=Object.defineProperty,zQ=(g,A,t)=>A in g?WQ(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,BA=(g,A,t)=>zQ(g,typeof A!="symbol"?A+"":A,t);class aC{constructor(){BA(this,"frameInfo",new Map),BA(this,"pending",new Set),BA(this,"lastHandle",new Map),BA(this,"started",new Set),BA(this,"firstUploaded",new Set),BA(this,"forceTimeFallback",new Set),BA(this,"lastArmAt",new Map),BA(this,"lastCallbackAt",new Map),BA(this,"lastProgressAt",new Map),BA(this,"lastRecoveryAt",new Map),BA(this,"stallLogged",new Set),BA(this,"stagnationLogged",new Set),BA(this,"lastTimeFallback",new Map)}preUpload(A,t){const e=t.currentTime;if(typeof t.requestVideoFrameCallback!="function"||this.forceTimeFallback.has(A)){if(!this.firstUploaded.has(A))return this.firstUploaded.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),typeof t.requestVideoFrameCallback=="function"&&this.debugInfo(A,"initial upload using time fallback",t),!0;const a=this.consumeTimeAdvance(A,e);if(a)this.stagnationLogged.has(A)&&(this.stagnationLogged.delete(A),this.debugInfo(A,"time fallback progress resumed",t));else if(this.forceTimeFallback.has(A)&&!this.stagnationLogged.has(A)&&!t.paused&&!t.ended){const Q=this.lastProgressAt.get(A);Q!==void 0&&performance.now()-Q>1e3&&(this.stagnationLogged.add(A),this.debugWarn(A,"time fallback has no progress",t,{lastProgressAgeMs:Math.round(performance.now()-Q)}))}return a}this.ensureRvf(A,t);const i=performance.now(),I=this.lastCallbackAt.get(A),s=this.lastArmAt.get(A),n=I!=null?I:s,B=this.lastTimeFallback.get(A),C=B!==void 0&&Math.abs(e-B)>1e-4;return this.firstUploaded.has(A)&&n!==void 0&&i-n>500&&!t.paused&&!t.ended&&(this.stallLogged.has(A)||(this.stallLogged.add(A),this.debugWarn(A,"rVFC stalled for slot",t,{stallAgeMs:Math.round(i-n),lastCallbackAgeMs:I!==void 0?Math.round(i-I):null,lastArmAgeMs:s!==void 0?Math.round(i-s):null,timeAdvanced:C})),this.tryRecoverStalledPlayback(A,t,e,i),this.started.delete(A),this.ensureRvf(A,t),C)?(this.forceTimeFallback.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),this.debugWarn(A,"switching slot to time fallback",t,{stallAgeMs:Math.round(i-n)}),!0):this.firstUploaded.has(A)?this.pending.has(A)?(this.pending.delete(A),this.lastTimeFallback.set(A,e),this.markProgress(A),(this.stallLogged.delete(A)||this.forceTimeFallback.delete(A))&&(this.stagnationLogged.delete(A),this.debugInfo(A,"rVFC progress resumed",t)),!0):!1:(this.firstUploaded.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),!0)}getFrameInfo(A){return this.frameInfo.get(A)}ensureRvf(A,t){if(this.started.has(A))return;this.started.add(A);const e=(i,I)=>{this.frameInfo.set(A,I),this.lastCallbackAt.set(A,performance.now()),this.pending.add(A);try{this.lastArmAt.set(A,performance.now());const s=t.requestVideoFrameCallback(e);this.lastHandle.set(A,s)}catch(s){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback re-arm failed",t)}};try{this.lastArmAt.set(A,performance.now());const i=t.requestVideoFrameCallback(e);this.lastHandle.set(A,i)}catch(i){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback initial arm failed",t)}}consumeTimeAdvance(A,t){const e=this.lastTimeFallback.get(A);return e===void 0||Math.abs(t-e)>1e-4?(this.lastTimeFallback.set(A,t),this.markProgress(A),!0):!1}markProgress(A){this.lastProgressAt.set(A,performance.now())}tryRecoverStalledPlayback(A,t,e,i){if(t.paused||t.ended||t.seeking)return;const I=this.lastRecoveryAt.get(A);if(I!==void 0&&i-I<1500)return;this.lastRecoveryAt.set(A,i);const s=Number.isFinite(t.duration)?t.duration:NaN,n=Number.isFinite(s)&&s>0,B=n?Math.min(Math.max(0,s-.001),e+.001):e;try{n&&B>e&&(t.currentTime=B)}catch(C){}try{const C=t.play();C&&typeof C.catch=="function"&&C.catch(()=>{})}catch(C){}this.debugWarn(A,"attempting stalled video recovery",t,{currentTime:e,nudgedTime:B,readyState:t.readyState})}debugInfo(A,t,e,i){console.info("[GiftStage:VideoGate]",t,this.snapshot(A,e,i))}debugWarn(A,t,e,i){console.warn("[GiftStage:VideoGate]",t,this.snapshot(A,e,i))}snapshot(A,t,e){return{slotId:A,currentTime:Number(t.currentTime.toFixed(3)),readyState:t.readyState,networkState:t.networkState,paused:t.paused,ended:t.ended,seeking:t.seeking,playbackRate:t.playbackRate,forceTimeFallback:this.forceTimeFallback.has(A),pending:this.pending.has(A),...e}}release(A,t){if(!t){this.cleanup(A);return}const e=this.lastHandle.get(A);if(e!=null)try{t.cancelVideoFrameCallback(e)}catch(i){}this.cleanup(A)}cleanup(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)}}function Bn(g,A,t,e){const i=e!=null?e:new Float32Array(4);return!t||g<=0||A<=0?(i[0]=0,i[1]=0,i[2]=1,i[3]=1,i):(i[0]=t.x/g,i[1]=t.y/A,i[2]=t.w/g,i[3]=t.h/A,i)}const jQ=3;function XQ(){return typeof document!="undefined"&&typeof document.createElement=="function"}function ys(g,A){if(!XQ())throw new Error("Canvas rendering is unavailable in this environment");const t=document.createElement("canvas");return t.width=Math.max(1,Math.round(g)),t.height=Math.max(1,Math.round(A)),t}function ms(g){const A=g.getContext("2d");if(!A)throw new Error("Failed to acquire 2D canvas context");return A}function QC(g){return!!g&&typeof g=="object"&&typeof g.text=="string"}function OQ(g){return!!g&&typeof g=="object"&&"image"in g}function rC(g){return!!g&&typeof g=="object"&&"image"in g}function SB(g){return!g||typeof g!="object"?!1:typeof HTMLCanvasElement!="undefined"&&g instanceof HTMLCanvasElement||typeof HTMLImageElement!="undefined"&&g instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&g instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&g instanceof OffscreenCanvas||typeof HTMLVideoElement!="undefined"&&g instanceof HTMLVideoElement||typeof VideoFrame!="undefined"&&g instanceof VideoFrame||typeof ImageData!="undefined"&&g instanceof ImageData}function Cn(g){return new Promise((A,t)=>{const e=new Image;e.crossOrigin="anonymous",e.onload=()=>A(e),e.onerror=()=>t(new Error(`Failed to load image: ${g}`)),e.src=g})}function HA(g){if(typeof HTMLImageElement!="undefined"&&g instanceof HTMLImageElement)return{width:g.naturalWidth||g.width,height:g.naturalHeight||g.height};if(typeof HTMLCanvasElement!="undefined"&&g instanceof HTMLCanvasElement)return{width:g.width,height:g.height};if(typeof OffscreenCanvas!="undefined"&&g instanceof OffscreenCanvas)return{width:g.width,height:g.height};if(typeof ImageBitmap!="undefined"&&g instanceof ImageBitmap)return{width:g.width,height:g.height};if(g&&typeof g=="object"&&"videoWidth"in g&&typeof g.videoWidth=="number")return{width:g.videoWidth,height:g.videoHeight};if(g&&typeof g=="object"&&"displayWidth"in g&&typeof g.displayWidth=="number")return{width:g.displayWidth||g.codedWidth,height:g.displayHeight||g.codedHeight};const A=g;return typeof A.width=="number"&&typeof A.height=="number"?{width:A.width,height:A.height}:{width:0,height:0}}function jn(g){if(typeof ImageData!="undefined"&&g instanceof ImageData){const A=ys(g.width,g.height);return ms(A).putImageData(g,0,0),A}return g}function PQ(g){const A=/^\[(.+)\]$/.exec(g);return A?A[1]:g}function $Q(g,A,t){var e,i;return g?typeof g=="string"?{font:g,color:t}:{font:(e=g.font)!=null?e:A,color:(i=g.color)!=null?i:t}:{font:A,color:t}}function oC(g,A,t,e){var i;const I=Math.max(1,e.scale||1),s=Math.max(1,Math.round(g)),n=Math.max(1,Math.round(A)),B=ys(s*I,n*I),C=ms(B),a=(i=e.color)!=null?i:"#ffffff",Q=Math.max(1,t.length),o=Math.max(12,Math.min(s/Q,n-8)),r=`${e.style==="b"?"bold ":""}${o*I}px Arial`,E=$Q(e.fontStyle,r,a);return C.clearRect(0,0,B.width,B.height),C.textAlign="center",C.textBaseline="middle",C.font=E.font,C.fillStyle=E.color,C.fillText(t,B.width/2,B.height/2),{canvas:B,logicalWidth:s,logicalHeight:n}}function Ar(g,A){var t,e,i,I;const s=g.sprites.find(a=>a.imageKey===A);if(!s)return{width:1,height:1};let n=0,B=0;for(const a of s.frames)n=Math.max(n,(e=(t=a.layout)==null?void 0:t.width)!=null?e:0),B=Math.max(B,(I=(i=a.layout)==null?void 0:i.height)!=null?I:0);if(n>0&&B>0)return{width:n,height:B};const C=g.atlasRects.get(A);return C?{width:C.w,height:C.h}:{width:1,height:1}}async function tr(g,A,t){var e,i,I;if(QC(g)){const n=oC(A,t,g.text,{scale:(e=g.scale)!=null?e:jQ,color:g.color,style:g.style,fontStyle:g.fontStyle});return{source:n.canvas,mode:(i=g.mode)!=null?i:"dynamic",logicalWidth:n.logicalWidth,logicalHeight:n.logicalHeight}}if(OQ(g)){const n=typeof g.image=="string"?await Cn(g.image):g.image,B=HA(n);return{source:n,mode:(I=g.mode)!=null?I:"replace",logicalWidth:Math.max(1,B.width||A),logicalHeight:Math.max(1,B.height||t)}}if(typeof g=="string"){const n=await Cn(g),B=HA(n);return{source:n,mode:"replace",logicalWidth:Math.max(1,B.width||A),logicalHeight:Math.max(1,B.height||t)}}const s=HA(g);return{source:g,mode:"replace",logicalWidth:Math.max(1,s.width||A),logicalHeight:Math.max(1,s.height||t)}}async function er(g,A,t){const e=new Map;if(!t)return e;for(const[i,I]of Object.entries(t)){const s=Ar(A,i),n=await tr(I,s.width,s.height),B=g.createTexture(n.source,{width:HA(n.source).width||s.width,height:HA(n.source).height||s.height,filter:"linear"});e.set(i,{texture:B,mode:n.mode,logicalWidth:n.logicalWidth,logicalHeight:n.logicalHeight})}return e}function ir(g,A){var t,e;if(!A)return;const i=String(g.srcId),I=g.srcTag,s=PQ(g.srcTag);return(e=(t=A[I])!=null?t:A[s])!=null?e:A[i]}function gr(g,A){var t,e,i,I;const s=typeof A=="string"?A:A.text,n=g.w&&g.w>0?g.w:1,B=g.h&&g.h>0?g.h:1,C=oC(n,B,s,{scale:typeof A=="string"?1:(t=A.scale)!=null?t:1,color:typeof A=="string"?g.color:(e=A.color)!=null?e:g.color,style:typeof A=="string"?g.style:(i=A.style)!=null?i:g.style,fontStyle:typeof A=="string"?g.fontStyle:(I=A.fontStyle)!=null?I:g.fontStyle});return{source:C.canvas,width:C.canvas.width,height:C.canvas.height}}async function Ir(g){return typeof g=="string"?Cn(g):rC(g)?typeof g.image=="string"?Cn(g.image):jn(g.image):jn(g)}async function sr(g,A){const t=new Map;if(!g.src||g.src.length===0||!A)return t;for(const e of g.src){const i=ir(e,A);if(i==null)continue;if(e.srcType==="txt"){if(SB(i)){const C=jn(i),a=HA(C);t.set(String(e.srcId),{source:C,width:Math.max(1,a.width),height:Math.max(1,a.height)});continue}const B=gr(e,typeof i=="string"||QC(i)?i:String(i));t.set(String(e.srcId),B);continue}const I=SB(i)||typeof i=="string"||rC(i)?i:null;if(!I)continue;const s=await Ir(I),n=HA(s);t.set(String(e.srcId),{source:s,width:Math.max(1,n.width),height:Math.max(1,n.height)})}return t}function nr(g){var A;const t=new Map;for(const e of(A=g.frame)!=null?A:[]){const i=[...e.obj].sort((I,s)=>{var n,B;return((n=I.z)!=null?n:0)-((B=s.z)!=null?B:0)});t.set(e.i,i)}return t}function Br(g,A){const t=ys(g,A),e=ys(g,A),i=ys(1,1);return{compositeCanvas:t,compositeCtx:ms(t),rawCanvas:e,rawCtx:ms(e),scratchCanvas:i,scratchCtx:ms(i)}}function FB(g,A,t,e){var i;if(!g.compositeCanvas||!g.compositeCtx||!g.rawCanvas||!g.rawCtx||!g.scratchCanvas||!g.scratchCtx)throw new Error("VAP CPU compositor state is incomplete");const{info:I}=A,s=I.videoW||g.width,n=I.videoH||g.height,[B,C,a,Q]=I.rgbFrame,[o,r,E,h]=I.aFrame;(g.rawCanvas.width!==s||g.rawCanvas.height!==n)&&(g.rawCanvas.width=s,g.rawCanvas.height=n),g.rawCtx.clearRect(0,0,s,n),g.rawCtx.drawImage(t,0,0,s,n);const c=g.rawCtx.getImageData(0,0,s,n).data,f=g.compositeCtx.createImageData(g.width,g.height),d=f.data;for(let p=0;p<g.height;p++){const w=Math.min(n-1,Math.max(0,C+Math.floor(p/g.height*Q))),y=Math.min(n-1,Math.max(0,r+Math.floor(p/g.height*h)));for(let S=0;S<g.width;S++){const N=Math.min(s-1,Math.max(0,B+Math.floor(S/g.width*a))),R=Math.min(s-1,Math.max(0,o+Math.floor(S/g.width*E))),F=(w*s+N)*4,M=(y*s+R)*4,z=c[M]/255,v=(p*g.width+S)*4;d[v]=Math.round(c[F]*z),d[v+1]=Math.round(c[F+1]*z),d[v+2]=Math.round(c[F+2]*z),d[v+3]=Math.round(z*255)}}const u=(i=g.frameMap.get(e))!=null?i:[];for(const p of u){const w=g.resources.get(String(p.srcId));if(!w)continue;const[y,S,N,R]=p.frame,[F,M,z,v]=p.mFrame;if(N<=0||R<=0||z<=0||v<=0)continue;(g.scratchCanvas.width!==N||g.scratchCanvas.height!==R)&&(g.scratchCanvas.width=Math.max(1,Math.round(N)),g.scratchCanvas.height=Math.max(1,Math.round(R))),g.scratchCtx.clearRect(0,0,g.scratchCanvas.width,g.scratchCanvas.height),g.scratchCtx.drawImage(w.source,0,0,g.scratchCanvas.width,g.scratchCanvas.height);const _=g.scratchCtx.getImageData(0,0,g.scratchCanvas.width,g.scratchCanvas.height).data,K=Math.max(0,Math.floor(y)),b=Math.max(0,Math.floor(S)),j=Math.min(g.width,Math.ceil(y+N)),tA=Math.min(g.height,Math.ceil(S+R));for(let X=b;X<tA;X++){const ZA=Math.min(g.scratchCanvas.height-1,Math.max(0,Math.floor((X-S)/R*g.scratchCanvas.height))),Bs=Math.min(n-1,Math.max(0,M+Math.floor((X-S)/R*v)));for(let cA=K;cA<j;cA++){const DA=Math.min(g.scratchCanvas.width-1,Math.max(0,Math.floor((cA-y)/N*g.scratchCanvas.width))),_s=Math.min(s-1,Math.max(0,F+Math.floor((cA-y)/N*z))),MA=(ZA*g.scratchCanvas.width+DA)*4,la=(Bs*s+_s)*4,da=_[MA+3]/255,fa=c[la]/255,VA=da*fa;if(VA<=0)continue;const pA=(X*g.width+cA)*4,ua=_[MA]/255*VA,wa=_[MA+1]/255*VA,Da=_[MA+2]/255*VA,pa=d[pA+3]/255,Ls=1-VA;d[pA]=Math.round((ua+d[pA]/255*Ls)*255),d[pA+1]=Math.round((wa+d[pA+1]/255*Ls)*255),d[pA+2]=Math.round((Da+d[pA+2]/255*Ls)*255),d[pA+3]=Math.round((VA+pa*Ls)*255)}}}return g.compositeCtx.putImageData(f,0,0),g.compositeCanvas}var Cr=Object.defineProperty,ar=(g,A,t)=>A in g?Cr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,Z=(g,A,t)=>ar(g,typeof A!="symbol"?A+"":A,t);const Fn=1024,Nn=28,ks=class cs{constructor(){Z(this,"quadVB",null),Z(this,"quadIB",null),Z(this,"rgbaQuadVB",null),Z(this,"rgbaQuadIB",null),Z(this,"quadIndices",new Uint32Array([0,1,2,0,2,3])),Z(this,"wcDbgFirstDraw",new Set),Z(this,"wcDbgNullWarns",new Map),Z(this,"htmlGate",new aC),Z(this,"lastWcFrameRef",new Map),Z(this,"scratchAtlasRemap",new Float32Array(4)),Z(this,"instancePackScratch",new Float32Array(Fn*Nn)),Z(this,"scratchTransform",new Float32Array(16)),Z(this,"projCacheW",0),Z(this,"projCacheH",0),Z(this,"projCache",null)}syncVideoTextures(A,t){var e,i;let I=!1;const s=new Set;for(const n of t.values()){if(n.type!=="vap"||n.state!=="playing"&&n.state!=="fly"||!n.videoTextureHandle)continue;if(n.vapMixState){I=this.syncMixedTexture(A,n)||I;continue}const B=n.webcodecsPlayback;if(B){const C=(e=n.wcPlaybackTime)!=null?e:0,a=B.getFrameForTime(C);if(this.wcDbgFirstDraw.has(n.id)||(this.wcDbgFirstDraw.add(n.id),console.info("[GiftStage:WC] VAP first draw",{giftId:n.id,state:n.state,t:C,hasFrame:!!a,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),a){if(this.lastWcFrameRef.get(n.id)!==a){const o=n.wcAtlasRect;o?A.updateTextureRegion(n.videoTextureHandle,a,o.x,o.y,o.w,o.h):A.updateTexture(n.videoTextureHandle,a),this.lastWcFrameRef.set(n.id,a),I=!0}}else{const Q=((i=this.wcDbgNullWarns.get(n.id))!=null?i:0)+1;this.wcDbgNullWarns.set(n.id,Q),Q<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:n.id,t:C,n:Q})}}else if(n.videoElement){const C=this.getHtmlVideoGateId(n);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,n.videoElement)&&(A.updateTexture(n.videoTextureHandle,n.videoElement),I=!0)}}return I}draw(A,t){(A.type==="webgpu"||A.type==="webgl2")&&this.drawInstancedVapBatches(A,t);for(const e of t.values())if(e.type==="vap"&&!(e.state!=="playing"&&e.state!=="fly")&&!(!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle)){if(e.vapMixState){this.drawMixedGeometry(A,e);continue}A.type==="webgpu"||A.type==="webgl2"||this.drawGeometry(A,e)}}drawSlot(A,t){if(t.type==="vap"&&!(t.state!=="playing"&&t.state!=="fly")&&!(!t.videoElement&&!t.webcodecsPlayback||!t.videoTextureHandle)){if(t.vapMixState){this.drawMixedGeometry(A,t);return}this.drawGeometry(A,t)}}drawInstancedVapBatches(A,t){const e=[];for(const C of t.values())C.type!=="vap"||C.state!=="playing"&&C.state!=="fly"||C.vapMixState||!C.videoElement&&!C.webcodecsPlayback||!C.videoTextureHandle||!C.vapConfig||e.push(C);if(e.length===0)return;this.quadVB||(this.quadVB=A.createBuffer(cs.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(cs.QUAD_INDICES,"index"));const i=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===i&&this.projCacheH===I?s=this.projCache:(this.projCacheW=i,this.projCacheH=I,this.projCache=LA(0,i,I,0,-1,1),s=this.projCache);const n=new Map;for(const C of e){const a=C.videoTextureHandle.id;let Q=n.get(a);Q||(Q=[],n.set(a,Q)),Q.push(C)}const B=this.instancePackScratch;for(const C of n.values())for(let a=0;a<C.length;a+=Fn){const Q=Math.min(Fn,C.length-a);for(let r=0;r<Q;r++)this.fillVapInstanceData(C[a+r],B,r*Nn);const o=B.subarray(0,Q*Nn);A.draw({shader:"vap-instanced",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,instanceCount:Q,instanceData:o,textures:[C[a].videoTextureHandle],uniforms:{u_projection:s,u_video:0}})}}fillVapInstanceData(A,t,e){var i,I,s,n;const B=A.vapConfig,{info:C}=B,a=C.videoW>0?C.videoW:(I=(i=A.webcodecsPlayback)==null?void 0:i.videoWidth)!=null?I:1,Q=C.videoH>0?C.videoH:(n=(s=A.webcodecsPlayback)==null?void 0:s.videoHeight)!=null?n:1,o=this.scratchTransform,r=A.width*A.scale,E=A.height*A.scale;let h=r,c=E;if(JA(A)==="contain"){const{w:y,h:S}=OA(C);if(y>0&&S>0){const N=Math.min(r/y,E/S);h=y*N,c=S*N}}o[0]=h,o[5]=c,o[10]=1,o[12]=A.x,o[13]=A.y,o[15]=1,t.set(o,e);const f=vs(C.rgbFrame,a,Q),d=vs(C.aFrame,a,Q),u=A.videoTextureHandle,p=Bn(u.width,u.height,A.wcAtlasRect,this.scratchAtlasRemap);t.set(p,e+16);const w=e+20;t[w+0]=f.left,t[w+1]=f.right,t[w+2]=f.top,t[w+3]=f.bottom,t[w+4]=d.left,t[w+5]=d.right,t[w+6]=d.top,t[w+7]=d.bottom}syncMixedTexture(A,t){var e;const i=t.vapConfig,I=t.vapMixState;if(!i||!I||!t.videoTextureHandle)return!1;const s=this.getMixedFrameIndex(t,i),n=t.webcodecsPlayback;if(n){const C=(e=t.wcPlaybackTime)!=null?e:0,a=n.getFrameForTime(C);if(!a||I.lastSourceRef===a&&I.lastFrameIndex===s)return!1;const Q=I.composer?I.composer.render(a,s):FB(I,i,a,s);return A.updateTexture(t.videoTextureHandle,Q),I.lastSourceRef=a,I.lastFrameIndex=s,!0}if(!t.videoElement||!this.htmlGate.preUpload(t.id,t.videoElement)&&I.lastFrameIndex===s)return!1;const B=I.composer?I.composer.render(t.videoElement,s):FB(I,i,t.videoElement,s);return A.updateTexture(t.videoTextureHandle,B),I.lastSourceRef=t.videoElement,I.lastFrameIndex=s,!0}releaseHtmlVideo(A){var t;this.htmlGate.release(this.getHtmlVideoGateId(A),(t=A.videoElement)!=null?t:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A)}drawGeometry(A,t){var e,i,I,s;const n=A.canvas.width,B=A.canvas.height;let C;this.projCache&&this.projCacheW===n&&this.projCacheH===B?C=this.projCache:(this.projCacheW=n,this.projCacheH=B,this.projCache=LA(0,n,B,0,-1,1),C=this.projCache);const a=t.vapConfig;if(!a){console.warn("[GiftStage:WC] VAP vapConfig missing — draw skipped",{giftId:t.id});return}const{info:Q}=a,o=Q.videoW>0?Q.videoW:(i=(e=t.webcodecsPlayback)==null?void 0:e.videoWidth)!=null?i:1,r=Q.videoH>0?Q.videoH:(s=(I=t.webcodecsPlayback)==null?void 0:I.videoHeight)!=null?s:1,E=new Float32Array(16),h=t.width*t.scale,c=t.height*t.scale;let f=h,d=c;if(JA(t)==="contain"){const{w:R,h:F}=OA(Q);if(R>0&&F>0){const M=Math.min(h/R,c/F);f=R*M,d=F*M}}E[0]=f,E[5]=d,E[10]=1,E[12]=t.x,E[13]=t.y,E[15]=1;const u=vs(Q.rgbFrame,o,r),p=vs(Q.aFrame,o,r),w=t.videoTextureHandle,y=Bn(w.width,w.height,t.wcAtlasRect,this.scratchAtlasRemap),S=new Float32Array([0,0,u.left,u.top,p.left,p.top,1,0,u.right,u.top,p.right,p.top,1,1,u.right,u.bottom,p.right,p.bottom,0,1,u.left,u.bottom,p.left,p.bottom]);this.quadVB=this.ensureBuffer(A,this.quadVB,S,"vertex"),this.quadIB=this.ensureBuffer(A,this.quadIB,this.quadIndices,"index");const N={shader:"vap",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,textures:[t.videoTextureHandle],uniforms:{u_projection:C,u_transform:E,u_atlasRemap:y,u_video:0}};A.draw(N)}drawMixedGeometry(A,t){var e;const i=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===i&&this.projCacheH===I?s=this.projCache:(this.projCacheW=i,this.projCacheH=I,this.projCache=LA(0,i,I,0,-1,1),s=this.projCache);const n=t.vapConfig;if(!n||!t.vapMixState||!t.videoTextureHandle)return;const B=this.scratchTransform,C=t.width*t.scale,a=t.height*t.scale;let Q=C,o=a;if(JA(t)==="contain"){const{w:E,h}=OA(n.info);if(E>0&&h>0){const c=Math.min(C/E,a/h);Q=E*c,o=h*c}}B[0]=Q,B[5]=o,B[10]=1,B[12]=t.x,B[13]=t.y,B[15]=1;const r=(e=t.vapMixState)!=null&&e.composer||A.type==="webgpu"?cs.RGBA_QUAD_VERTS_WEBGPU:cs.RGBA_QUAD_VERTS_WEBGL;this.rgbaQuadVB=this.ensureBuffer(A,this.rgbaQuadVB,r,"vertex"),this.rgbaQuadIB=this.ensureBuffer(A,this.rgbaQuadIB,this.quadIndices,"index"),A.draw({shader:"rgba-textured",vertexBuffer:this.rgbaQuadVB,indexBuffer:this.rgbaQuadIB,indexCount:6,textures:[t.videoTextureHandle],uniforms:{u_projection:s,u_transform:B,u_atlasRemap:new Float32Array([0,0,1,1]),u_video:0}})}ensureBuffer(A,t,e,i){return t?(A.updateBuffer(t,e),t):A.createBuffer(e,i)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.rgbaQuadVB&&A.deleteBuffer(this.rgbaQuadVB),this.rgbaQuadIB&&A.deleteBuffer(this.rgbaQuadIB),this.quadVB=null,this.quadIB=null,this.rgbaQuadVB=null,this.rgbaQuadIB=null,this.lastWcFrameRef.clear(),this.projCache=null,this.projCacheW=0,this.projCacheH=0}getMixedFrameIndex(A,t){var e,i,I;if(A.webcodecsPlayback)return Math.max(0,Math.round(((e=A.wcPlaybackTime)!=null?e:0)*t.info.fps));const s=this.htmlGate.getFrameInfo(A.id),n=s==null?void 0:s.mediaTime;return typeof n=="number"&&Number.isFinite(n)&&n>=0?Math.max(0,Math.round(n*t.info.fps)):Math.max(0,Math.round(((I=(i=A.videoElement)==null?void 0:i.currentTime)!=null?I:0)*t.info.fps))}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}};Z(ks,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));Z(ks,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));Z(ks,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));Z(ks,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let EC=ks;var Qr=Object.defineProperty,rr=(g,A,t)=>A in g?Qr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,iA=(g,A,t)=>rr(g,typeof A!="symbol"?A+"":A,t);const xn=1024,Rn=20,BB=class YA{constructor(){iA(this,"quadVB",null),iA(this,"quadIB",null),iA(this,"instancePackScratch",new Float32Array(xn*Rn)),iA(this,"projCacheW",0),iA(this,"projCacheH",0),iA(this,"projCache",null),iA(this,"scratchTransform",new Float32Array(16)),iA(this,"wcDbgFirstDraw",new Set),iA(this,"wcDbgNullWarns",new Map),iA(this,"htmlGate",new aC),iA(this,"lastWcFrameRef",new Map),iA(this,"scratchAtlasRemap",new Float32Array(4))}static alphaVideoContentSize(A){if(A.webcodecsPlayback){const I=A.webcodecsPlayback.videoWidth,s=A.webcodecsPlayback.videoHeight;return{w:I>0?I*.5:0,h:s}}const t=A.videoElement,e=t.videoWidth,i=t.videoHeight;return{w:e>0?e*.5:0,h:i}}syncVideoTextures(A,t){var e,i;let I=!1;const s=new Set;for(const n of t.values()){if(n.type!=="alphaVideo"||n.state!=="playing"&&n.state!=="fly"||!n.videoTextureHandle)continue;const B=n.webcodecsPlayback;if(B){const C=(e=n.wcPlaybackTime)!=null?e:0,a=B.getFrameForTime(C);if(this.wcDbgFirstDraw.has(n.id)||(this.wcDbgFirstDraw.add(n.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:n.id,state:n.state,t:C,hasFrame:!!a,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),a){if(this.lastWcFrameRef.get(n.id)!==a){const o=n.wcAtlasRect;o?A.updateTextureRegion(n.videoTextureHandle,a,o.x,o.y,o.w,o.h):A.updateTexture(n.videoTextureHandle,a),this.lastWcFrameRef.set(n.id,a),I=!0}}else{const Q=((i=this.wcDbgNullWarns.get(n.id))!=null?i:0)+1;this.wcDbgNullWarns.set(n.id,Q),Q<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:n.id,t:C,n:Q})}}else if(n.videoElement){const C=this.getHtmlVideoGateId(n);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,n.videoElement)&&(A.updateTexture(n.videoTextureHandle,n.videoElement),I=!0)}}return I}draw(A,t){if(A.type==="webgpu"||A.type==="webgl2"){this.drawInstancedAlphaBatches(A,t);return}for(const e of t.values())e.type==="alphaVideo"&&(e.state!=="playing"&&e.state!=="fly"||!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle||this.drawGeometry(A,e))}drawSlot(A,t){t.type==="alphaVideo"&&(t.state!=="playing"&&t.state!=="fly"||!t.videoElement&&!t.webcodecsPlayback||!t.videoTextureHandle||this.drawGeometry(A,t))}drawInstancedAlphaBatches(A,t){const e=[];for(const C of t.values())C.type==="alphaVideo"&&(C.state!=="playing"&&C.state!=="fly"||!C.videoElement&&!C.webcodecsPlayback||!C.videoTextureHandle||e.push(C));if(e.length===0)return;this.quadVB||(this.quadVB=A.createBuffer(YA.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(YA.QUAD_INDICES,"index"));const i=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===i&&this.projCacheH===I?s=this.projCache:(this.projCacheW=i,this.projCacheH=I,this.projCache=LA(0,i,I,0,-1,1),s=this.projCache);const n=new Map;for(const C of e){const a=C.videoTextureHandle.id;let Q=n.get(a);Q||(Q=[],n.set(a,Q)),Q.push(C)}const B=this.instancePackScratch;for(const C of n.values())for(let a=0;a<C.length;a+=xn){const Q=Math.min(xn,C.length-a);for(let r=0;r<Q;r++)this.fillAlphaInstanceData(C[a+r],B,r*Rn);const o=B.subarray(0,Q*Rn);A.draw({shader:"alpha-video-instanced",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,instanceCount:Q,instanceData:o,textures:[C[a].videoTextureHandle],uniforms:{u_projection:s,u_video:0}})}}fillAlphaInstanceData(A,t,e){const i=this.scratchTransform,I=A.width*A.scale,s=A.height*A.scale;let n=I,B=s;if(JA(A)==="contain"){const{w:Q,h:o}=YA.alphaVideoContentSize(A);if(Q>0&&o>0){const r=Math.min(I/Q,s/o);n=Q*r,B=o*r}}i[0]=n,i[5]=B,i[10]=1,i[12]=A.x,i[13]=A.y,i[15]=1,t.set(i,e);const C=A.videoTextureHandle,a=Bn(C.width,C.height,A.wcAtlasRect,this.scratchAtlasRemap);t.set(a,e+16)}releaseHtmlVideo(A){var t;this.htmlGate.release(this.getHtmlVideoGateId(A),(t=A.videoElement)!=null?t:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A)}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}drawGeometry(A,t){const e=A.canvas.width,i=A.canvas.height;let I;this.projCache&&this.projCacheW===e&&this.projCacheH===i?I=this.projCache:(this.projCacheW=e,this.projCacheH=i,this.projCache=LA(0,e,i,0,-1,1),I=this.projCache);const s=this.scratchTransform,n=t.width*t.scale,B=t.height*t.scale;let C=n,a=B;if(JA(t)==="contain"){const{w:E,h}=YA.alphaVideoContentSize(t);if(E>0&&h>0){const c=Math.min(n/E,B/h);C=E*c,a=h*c}}s[0]=C,s[5]=a,s[10]=1,s[12]=t.x,s[13]=t.y,s[15]=1,this.quadVB||(this.quadVB=A.createBuffer(YA.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(YA.QUAD_INDICES,"index"));const Q=t.videoTextureHandle,o=Bn(Q.width,Q.height,t.wcAtlasRect,this.scratchAtlasRemap),r={shader:"alpha-video",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,textures:[Q],uniforms:{u_projection:I,u_transform:s,u_atlasRemap:o,u_video:0}};A.draw(r)}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()}};iA(BB,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));iA(BB,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let hC=BB;var or=Object.defineProperty,Er=(g,A,t)=>A in g?or(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,hr=(g,A,t)=>Er(g,A+"",t);class cC{constructor(){hr(this,"animations",[])}startFly(A,t,e,i,I,s,n){this.animations=this.animations.filter(B=>B.giftId!==A.id),this.animations.push({giftId:A.id,startX:A.x,startY:A.y,startScale:A.scale,targetX:t,targetY:e,targetScale:i,startTime:-1,duration:I,easing:s,onComplete:n})}update(A){var t;for(let e=this.animations.length-1;e>=0;e--){const i=this.animations[e];i.startTime<0&&(i.startTime=A),Zn((A-i.startTime)/i.duration,0,1)>=1&&((t=i.onComplete)==null||t.call(i),this.animations.splice(e,1))}}getAnimatedState(A,t){const e=this.animations.find(s=>s.giftId===A);if(!e)return null;e.startTime<0&&(e.startTime=t);const i=Zn((t-e.startTime)/e.duration,0,1),I=e.easing(i);return{x:Ws(e.startX,e.targetX,I),y:Ws(e.startY,e.targetY,I),scale:Ws(e.startScale,e.targetScale,I)}}hasAnimation(A){return this.animations.some(t=>t.giftId===A)}hasActiveAnimations(){return this.animations.length>0}cancelForGift(A){this.animations=this.animations.filter(t=>t.giftId!==A)}destroy(){this.animations=[]}}var cr=Object.defineProperty,lr=(g,A,t)=>A in g?cr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,as=(g,A,t)=>lr(g,typeof A!="symbol"?A+"":A,t);class lC{constructor(){as(this,"ctx",null),as(this,"decodedCache",new Map),as(this,"activeSources",[]),as(this,"globalMute",!1),as(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,t){if(this.decodedCache.has(A))return;const e=this.ensureContext();try{const i=await e.decodeAudioData(t.slice(0));this.decodedCache.set(A,i)}catch(i){}}tickFrame(A,t,e){if(A.videoEntity&&!A.options.mute){for(const i of A.videoEntity.audios)t===i.startFrame&&this.startAudio(A.id,i);for(let i=this.activeSources.length-1;i>=0;i--){const I=this.activeSources[i];if(I.giftId===A.id&&t>=I.endFrame){try{I.source.stop()}catch(s){}I.source.disconnect(),this.activeSources.splice(i,1)}}}}startAudio(A,t){var e;const i=this.decodedCache.get(t.audioKey);if(!i)return;const I=this.ensureContext(),s=I.createBufferSource();s.buffer=i,s.connect((e=this.gainNode)!=null?e:I.destination),s.start(0,t.startTime/1e3),s.onended=()=>{s.disconnect();const n=this.activeSources.findIndex(B=>B.source===s&&B.giftId===A);n>=0&&this.activeSources.splice(n,1)},this.activeSources.push({source:s,endFrame:t.endFrame,giftId:A})}stopAllForGift(A){for(let t=this.activeSources.length-1;t>=0;t--)if(this.activeSources[t].giftId===A){try{this.activeSources[t].source.stop()}catch(e){}this.activeSources[t].source.disconnect(),this.activeSources.splice(t,1)}}setMute(A){this.globalMute=A,this.gainNode&&(this.gainNode.gain.value=A?0:1)}destroy(){var A;for(const t of this.activeSources){try{t.source.stop()}catch(e){}t.source.disconnect()}this.activeSources=[],this.decodedCache.clear(),(A=this.ctx)==null||A.close().catch(()=>{}),this.ctx=null,this.gainNode=null}}function dr(g){return g}function fr(g){return g*g}function ur(g){return g*(2-g)}function wr(g){return g<.5?2*g*g:-1+(4-2*g)*g}function Us(g){const A=g-1;return A*A*A+1}function Dr(g){return g<.5?4*g*g*g:(g-1)*(2*g-2)*(2*g-2)+1}function pr(g){return 1+2.70158*Math.pow(g-1,3)+1.70158*Math.pow(g-1,2)}var yr=Object.defineProperty,mr=(g,A,t)=>A in g?yr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,WA=(g,A,t)=>mr(g,typeof A!="symbol"?A+"":A,t);class Gr{constructor(A,t){WA(this,"atlasW"),WA(this,"atlasH"),WA(this,"rowY",0),WA(this,"rowH",0),WA(this,"rowX",0),WA(this,"slots",new Map),this.atlasW=Math.max(64,Math.floor(A)),this.atlasH=Math.max(64,Math.floor(t))}get size(){return{w:this.atlasW,h:this.atlasH}}tryAllocate(A,t,e){const i=Math.max(1,Math.ceil(t)),I=Math.max(1,Math.ceil(e));if(i>this.atlasW||I>this.atlasH||(this.rowX+i>this.atlasW&&(this.rowY+=this.rowH,this.rowX=0,this.rowH=0),this.rowY+I>this.atlasH))return null;const s={x:this.rowX,y:this.rowY,w:i,h:I};return this.slots.set(A,s),this.rowX+=i,this.rowH=Math.max(this.rowH,I),s}release(A){this.slots.delete(A)}getRect(A){return this.slots.get(A)}}function Sr(g){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(g.trim());if(!A)return null;const t=Number(A[1]);return Number.isFinite(t)?t:null}function NB(g,A,t){if(typeof g=="number")return g;const e=Sr(g);if(e==null)throw new Error(`Invalid percentage coordinate: ${g}`);return A*e/100-t/2}function dC(g,A,t,e,i,I){return{x:NB(g,i,t),y:NB(A,I,e)}}var Fr=Object.defineProperty,Nr=(g,A,t)=>A in g?Fr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,eA=(g,A,t)=>Nr(g,typeof A!="symbol"?A+"":A,t);class fC{constructor(A){eA(this,"backend"),eA(this,"svgaBatch"),eA(this,"vapRenderer"),eA(this,"alphaVideoRenderer"),eA(this,"postAnimator"),eA(this,"audioManager"),eA(this,"slots"),eA(this,"handles"),eA(this,"rafId",null),eA(this,"lastTime",0),eA(this,"running",!1),eA(this,"forceNextDraw",!0),eA(this,"wcAtlas",null),eA(this,"wcDbgTickOnce",new Set),this.backend=A,this.svgaBatch=new BC,this.vapRenderer=new EC,this.alphaVideoRenderer=new hC,this.postAnimator=new cC,this.audioManager=new lC,this.slots=new Map,this.handles=new Map}addSlot(A,t){this.slots.set(A.id,A),this.handles.set(A.id,t),this.forceNextDraw=!0,this.running||this.start()}removeSlot(A){var t,e,i,I,s,n;const B=this.slots.get(A);if(B){if(B.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(B),this.vapRenderer.clearWebCodecsFrameRef(B.id),(e=(t=B.vapMixState)==null?void 0:t.composer)==null||e.destroy()),B.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(B),this.alphaVideoRenderer.clearWebCodecsFrameRef(B.id)),this.audioManager.stopAllForGift(A),this.postAnimator.cancelForGift(A),B.videoEntity&&!B.releaseSharedSVGAAsset&&this.deleteSVGAAtlasTextures(B.videoEntity),B.svgaSlotTextures){for(const C of B.svgaSlotTextures.values())this.backend.deleteTexture(C.texture);B.svgaSlotTextures.clear()}B.wcAtlasRect?this.releaseWebCodecsAtlasSlot(B.id):B.videoTextureHandle&&!B.releaseSharedVideoTexture&&this.backend.deleteTexture(B.videoTextureHandle),B.webcodecsPlayback&&(B.webcodecsPlayback.destroy(),B.webcodecsPlayback=null),B.videoElement&&!B.releaseSharedVideoPlayback&&(B.videoElement.pause(),B.videoElement.removeAttribute("src"),B.videoElement.load(),B.videoElement.remove()),(i=B.releaseSharedVideoPlayback)==null||i.call(B),B.releaseSharedVideoPlayback=null,(I=B.releaseSharedSVGAAsset)==null||I.call(B),B.releaseSharedSVGAAsset=null,(s=B.releaseSharedVideoTexture)==null||s.call(B),B.releaseSharedVideoTexture=null,(n=B.releaseMediaSource)==null||n.call(B),B.releaseMediaSource=null}this.slots.delete(A),this.handles.delete(A),this.forceNextDraw=!0,this.slots.size===0&&this.stop()}getSlot(A){return this.slots.get(A)}get activeCount(){return this.slots.size}getSlotIds(){return Array.from(this.slots.keys())}tryAllocateWebCodecsAtlas(A,t,e,i){if(!i||i.width<=0||i.height<=0)return null;if(this.wcAtlas&&(this.wcAtlas.cfg.width!==i.width||this.wcAtlas.cfg.height!==i.height)){if(this.wcAtlas.ref>0)return null;this.backend.deleteTexture(this.wcAtlas.handle),this.wcAtlas=null}this.wcAtlas||(this.wcAtlas={cfg:{width:i.width,height:i.height},handle:this.backend.createEmptyTexture(i.width,i.height,{filter:"linear"}),alloc:new Gr(i.width,i.height),ref:0});const I=this.wcAtlas.alloc.tryAllocate(A,t,e);return I?(this.wcAtlas.ref++,{handle:this.wcAtlas.handle,rect:I}):null}releaseWebCodecsAtlasSlot(A){const t=this.wcAtlas;t&&(t.alloc.release(A),t.ref=Math.max(0,t.ref-1),t.ref<=0&&(this.backend.deleteTexture(t.handle),this.wcAtlas=null))}syncSlotLayoutFromOptions(){const{sx:A,sy:t}=us(this.backend.canvas);this.forceNextDraw=!0;for(const e of this.slots.values()){if(this.postAnimator.hasAnimation(e.id))continue;const i=e.options,I=dC(i.x,i.y,i.width,i.height,this.backend.canvas.clientWidth,this.backend.canvas.clientHeight);e.x=I.x*A,e.y=I.y*t,e.width=i.width*A,e.height=i.height*t}}start(){this.running||(this.running=!0,this.lastTime=performance.now(),this.rafId=requestAnimationFrame(A=>this.renderLoop(A)))}stop(){this.running=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}pause(){this.stop()}resume(){this.slots.size>0&&!this.running&&this.start()}renderLoop(A){var t,e;if(!this.running)return;const i=(A-this.lastTime)/1e3;this.lastTime=A;let I=this.forceNextDraw;for(const[s,n]of this.slots){if(n.paused||n.state==="loading")continue;const B=this.handles.get(s),C=this.postAnimator.getAnimatedState(s,A);if(C&&(n.x=C.x,n.y=C.y,n.scale=C.scale,I=!0),n.type==="svga"&&n.videoEntity&&n.state==="playing"&&(I=this.tickSVGA(n,i,B,A)||I),(n.type==="vap"||n.type==="alphaVideo")&&n.webcodecsPlayback&&n.state==="playing"){this.tickWebCodecs(n,i,B);const a=n.webcodecsPlayback;(e=a.ensureDecodedThrough)==null||e.call(a,(t=n.wcPlaybackTime)!=null?t:0)}}if(I=this.postAnimator.hasActiveAnimations()||I,this.postAnimator.update(A),I=this.removeFinished()||I,I=this.vapRenderer.syncVideoTextures(this.backend,this.slots)||I,I=this.alphaVideoRenderer.syncVideoTextures(this.backend,this.slots)||I,I){this.forceNextDraw=!1,this.backend.beginFrame(),this.svgaBatch.beginFrame(this.backend);for(const s of this.getRenderLayers())this.drawLayer(s);this.backend.endFrame()}this.rafId=requestAnimationFrame(s=>this.renderLoop(s))}tickWebCodecs(A,t,e){var i,I;const s=A.webcodecsPlayback;if(!s)return;const n=Math.max(s.duration,1e-9);if(!Number.isFinite(n))return;const B=(i=A.options.loop)!=null?i:1;let C=((I=A.wcPlaybackTime)!=null?I:0)+t;if(B===0){A.wcPlaybackTime=(C%n+n)%n,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B);return}for(;C>=n;)if(C-=n,A.loopCount++,A.loopCount>=B){A.wcPlaybackTime=n-1e-6,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B),this.onWebCodecsPlaybackComplete(A,e);return}A.wcPlaybackTime=C,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B)}wcDbgLogTickOnce(A,t,e,i){var I;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:t,wcPlaybackTime:e,loop:(I=A.options.loop)!=null?I:1,maxLoopsEffective:i,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,t){var e,i,I,s;if((e=A.onComplete)==null||e.call(A,t),A.flyTo){A.state="fly";const{sx:n,sy:B}=us(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*n,A.flyTo.y*B,(i=A.scaleTo)!=null?i:.3,(I=A.flyDuration)!=null?I:600,(s=A.easing)!=null?s:Us,()=>{var C;A.state="finished",(C=A.onFlyComplete)==null||C.call(A,t)})}else A.state="finished"}tickSVGA(A,t,e,i){var I;const s=A.videoEntity,n=s.params.fps;if(n<=0)return!1;const B=1/n,C=A.currentFrame;for(A.accumulatedTime+=t;A.accumulatedTime>=B;)if(A.accumulatedTime-=B,A.currentFrame++,A.currentFrame>=s.params.frames){A.loopCount++;const a=(I=A.options.loop)!=null?I:1;if(a===0)A.currentFrame=0;else if(A.loopCount>=a){A.currentFrame=s.params.frames-1,this.onGiftPlayComplete(A,e,i);break}else A.currentFrame=0}return A.currentFrame=Math.max(0,Math.min(A.currentFrame,s.params.frames-1)),A.currentFrame!==C&&this.audioManager.tickFrame(A,A.currentFrame,e),A.currentFrame!==C}onGiftPlayComplete(A,t,e){var i,I,s,n;if((i=A.onComplete)==null||i.call(A,t),A.flyTo){A.state="fly";const{sx:B,sy:C}=us(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*B,A.flyTo.y*C,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(n=A.easing)!=null?n:Us,()=>{var a;A.state="finished",(a=A.onFlyComplete)==null||a.call(A,t)})}else A.state="finished"}removeFinished(){const A=[];for(const[t,e]of this.slots)e.state==="finished"&&A.push(t);for(const t of A)this.removeSlot(t);return A.length>0}getRenderOrderedSlots(){const A=[];for(const t of this.slots.values())t.state!=="playing"&&t.state!=="fly"||A.push(t);return A.sort((t,e)=>{var i,I,s,n;const B=(i=t.zIndex)!=null?i:0,C=(I=e.zIndex)!=null?I:0;return B!==C?B-C:((s=t.renderOrder)!=null?s:0)-((n=e.renderOrder)!=null?n:0)}),A}getRenderLayers(){var A,t;const e=this.getRenderOrderedSlots();if(e.length===0)return[];const i=[];let I=[],s=(A=e[0].zIndex)!=null?A:0;for(const n of e){const B=(t=n.zIndex)!=null?t:0;I.length>0&&B!==s&&(i.push(I),I=[],s=B),I.push(n)}return I.length>0&&i.push(I),i}drawLayer(A){if(A.length===0)return;let t=A[0].type,e=this.getBatchKey(A[0]),i=[];for(const I of A){const s=this.getBatchKey(I);(I.type!==t||s!==e)&&i.length>0&&(this.drawSlotRun(t,i),i=[]),t=I.type,e=s,i.push(I)}i.length>0&&this.drawSlotRun(t,i)}drawSlotRun(A,t){if(t.length===0)return;const e=new Map;for(const i of t)e.set(i.id,i);switch(A){case"svga":this.svgaBatch.drawSlots(this.backend,t);break;case"vap":this.vapRenderer.draw(this.backend,e);break;case"alphaVideo":this.alphaVideoRenderer.draw(this.backend,e);break}}getBatchKey(A){var t,e,i,I,s,n,B;switch(A.type){case"svga":{const C=((e=(t=A.videoEntity)==null?void 0:t.atlasTextureHandles)!=null&&e.length?A.videoEntity.atlasTextureHandles:(i=A.videoEntity)!=null&&i.atlasTextureHandle?[A.videoEntity.atlasTextureHandle]:[]).map(Q=>Q.id).join(","),a=A.svgaSlotTextures&&A.svgaSlotTextures.size>0?1:0;return`svga:${C}:${a}`}case"vap":{const C=(s=(I=A.videoTextureHandle)==null?void 0:I.id)!=null?s:-1;return`vap:${A.vapMixState?"mixed":"video"}:${C}`}case"alphaVideo":return`alpha:${(B=(n=A.videoTextureHandle)==null?void 0:n.id)!=null?B:-1}`}}deleteSVGAAtlasTextures(A){var t;const e=(t=A.atlasTextureHandles)!=null&&t.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],i=new Set;for(const I of e)i.has(I.id)||(i.add(I.id),this.backend.deleteTexture(I))}destroy(){this.stop();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.postAnimator.destroy(),this.audioManager.destroy(),this.backend.destroy()}}async function uC(g){if(typeof DecompressionStream!="undefined"){try{return await Un(g,"deflate")}catch(A){}try{return await Un(g.slice(2),"deflate-raw")}catch(A){}return await Un(g.slice(2,-4),"deflate-raw")}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function Un(g,A){const t=new DecompressionStream(A),e=t.writable.getWriter(),i=t.readable.getReader();e.write(new Uint8Array(g.buffer,g.byteOffset,g.byteLength)),e.close();const I=[];let s=0;for(;;){const{done:C,value:a}=await i.read();if(C)break;I.push(a),s+=a.length}const n=new Uint8Array(s);let B=0;for(const C of I)n.set(C,B),B+=C.length;return n}var xr=Object.defineProperty,Rr=(g,A,t)=>A in g?xr(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,Mn=(g,A,t)=>Rr(g,typeof A!="symbol"?A+"":A,t);const Ur=0,Mr=1,br=2,kr=5;class CB{constructor(A,t=0,e){Mn(this,"view"),Mn(this,"pos"),Mn(this,"end"),this.view=new DataView(A.buffer,A.byteOffset,A.byteLength),this.pos=t,this.end=t+(e!=null?e:A.byteLength)}get remaining(){return this.end-this.pos}readVarint(){let A=0,t=0;for(;this.pos<this.end;){const e=this.view.getUint8(this.pos++);if(A|=(e&127)<<t,(e&128)===0)return A>>>0;t+=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(),t=this.view.byteOffset+this.pos;this.pos+=A;const e=this.view.buffer.slice(t,t+A);return new Uint8Array(e)}readString(){const A=this.readBytes();return new TextDecoder().decode(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 Ur:this.readVarint();break;case Mr:this.pos+=8;break;case br:this.pos+=this.readVarint();break;case kr:this.pos+=4;break}}sub(A){const t=new CB(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,t}}function Yr(g){const A={viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.viewBoxWidth=g.readFloat();break;case 2:A.viewBoxHeight=g.readFloat();break;case 3:A.fps=g.readSignedVarint();break;case 4:A.frames=g.readSignedVarint();break;default:g.skip(t.wire)}}return A}function _r(g){const A={x:0,y:0,width:0,height:0};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.x=g.readFloat();break;case 2:A.y=g.readFloat();break;case 3:A.width=g.readFloat();break;case 4:A.height=g.readFloat();break;default:g.skip(t.wire)}}return A}function Lr(g){const A={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.a=g.readFloat();break;case 2:A.b=g.readFloat();break;case 3:A.c=g.readFloat();break;case 4:A.d=g.readFloat();break;case 5:A.tx=g.readFloat();break;case 6:A.ty=g.readFloat();break;default:g.skip(t.wire)}}return A}function Jr(g){const A={alpha:0,layout:null,transform:null,clipPath:""};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.alpha=g.readFloat();break;case 2:{const e=g.readVarint();A.layout=_r(g.sub(e));break}case 3:{const e=g.readVarint();A.transform=Lr(g.sub(e));break}case 4:A.clipPath=g.readString();break;default:g.skip(t.wire)}}return A}function Hr(g){const A={imageKey:"",frames:[]};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.imageKey=g.readString();break;case 2:{const e=g.readVarint();A.frames.push(Jr(g.sub(e)));break}default:g.skip(t.wire)}}return A}function vr(g){const A={audioKey:"",startFrame:0,endFrame:0,startTime:0,totalTime:0};for(;g.remaining>0;){const t=g.readTag();if(!t)break;switch(t.field){case 1:A.audioKey=g.readString();break;case 2:A.startFrame=g.readSignedVarint();break;case 3:A.endFrame=g.readSignedVarint();break;case 4:A.startTime=g.readSignedVarint();break;case 5:A.totalTime=g.readSignedVarint();break;default:g.skip(t.wire)}}return A}function Kr(g){let A="",t=new Uint8Array(0);for(;g.remaining>0;){const e=g.readTag();if(!e)break;switch(e.field){case 1:A=g.readString();break;case 2:t=g.readBytes();break;default:g.skip(e.wire)}}return{key:A,value:t}}function wC(g){const A=new CB(g),t={version:"",params:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},images:new Map,sprites:[],audios:[]};for(;A.remaining>0;){const e=A.readTag();if(!e)break;switch(e.field){case 1:t.version=A.readString();break;case 2:{const i=A.readVarint();t.params=Yr(A.sub(i));break}case 3:{const i=A.readVarint(),{key:I,value:s}=Kr(A.sub(i));t.images.set(I,s);break}case 4:{const i=A.readVarint();t.sprites.push(Hr(A.sub(i)));break}case 5:{const i=A.readVarint();t.audios.push(vr(A.sub(i)));break}default:A.skip(e.wire)}}return t}const DC=`async function QA(I) {
555
555
  if (typeof DecompressionStream != "undefined") {
556
556
  try {
557
557
  return await q(I, "deflate");
@@ -1189,7 +1189,7 @@ l.onmessage = async (I) => {
1189
1189
  }
1190
1190
  };
1191
1191
  //# sourceMappingURL=parser-worker-fjF2ld6E.js.map
1192
- `,FB=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",dC],{type:"text/javascript;charset=utf-8"});function Jr(g){let A;try{if(A=FB&&(self.URL||self.webkitURL).createObjectURL(FB),!A)throw"";const t=new Worker(A,{type:"module",name:g==null?void 0:g.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(dC),{type:"module",name:g==null?void 0:g.name})}}let Qs=null,Hr=1;const ls=new Map;function vr(){return Qs||(Qs=new Jr,Qs.addEventListener("message",g=>{const A=g.data;if(!A||A.type!=="parse-svga-result"||A.id==null)return;const t=ls.get(A.id);t&&(ls.delete(A.id),A.error?t.reject(new Error(A.error)):A.result?t.resolve(A.result):t.reject(new Error("SVGA worker: empty result")))}),Qs.addEventListener("error",g=>{const A=g.message||"SVGA parser worker error";for(const[,t]of ls)t.reject(new Error(A));ls.clear()})),Qs}function Kr(g){const A=vr(),t=Hr++,e=g.slice(0);return new Promise((i,I)=>{ls.set(t,{resolve:i,reject:I}),A.postMessage({type:"parse-svga",id:t,data:e},[e])})}function Tr(g){const A=new Map;for(const[t,e]of Object.entries(g.images))A.set(t,new Uint8Array(e));return{version:g.version,params:g.params,sprites:g.sprites,audios:g.audios,images:A}}const bn=[73,68,51],kn=2,Hs=new Map,Vs=new WeakMap,Yn=new WeakMap;async function qr(){await new Promise(g=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>g());return}setTimeout(g,0)})}function Zr(g,A){return!!(g.startsWith("audio")||A.length>=3&&A[0]===bn[0]&&A[1]===bn[1]&&A[2]===bn[2])}async function Vr(g){const A=new Map,t=new Map,e=[];for(const[i,I]of g.images){if(Zr(i,I)){const s=I.buffer;t.set(i,s.slice(I.byteOffset,I.byteOffset+I.byteLength));continue}I.length!==0&&e.push([i,I])}for(let i=0;i<e.length;i+=kn){const I=e.slice(i,i+kn);await Promise.all(I.map(async([s,n])=>{try{const B=await createImageBitmap(new Blob([new Uint8Array(n)]),{premultiplyAlpha:"none"});A.set(s,B)}catch(B){}})),i+kn<e.length&&await qr()}return{movie:g,imageBitmaps:A,audioBlobs:t}}async function NB(g){return Vr(Tr(g))}function Wr(g){const A={};for(const[t,e]of g.images)A[t]=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return{version:g.version,params:g.params,sprites:g.sprites,audios:g.audios,images:A}}async function fC(g,A,t,e){if(!A){const I=Vs.get(g);if(I)return I;const s=Yn.get(g);if(s)return s}if(A){const I=IB(A);if(I)return I;const s=Hs.get(A);if(s)return s}const i=Vn(async()=>{if(e)try{const B=new Uint8Array(t).slice().buffer,C=await Kr(B);return A?yB(A,C):Vs.set(g,C),C}catch(B){console.warn("[GiftStage:SVGA] worker parse failed, using main thread",B)}const I=XA()&&rQ(t)||await cC(t),s=XA()&&oQ(I)||lC(I),n=Wr(s);return A?yB(A,n):Vs.set(g,n),n});if(!A){const I=i.finally(()=>{Yn.delete(g)});return Yn.set(g,I),I}return Hs.set(A,i.finally(()=>{Hs.delete(A)})),Hs.get(A)}async function zr(g,A){let t;const e=typeof g=="string"?`svga-payload:${g}`:null;if(typeof g=="string"){if(t=new Uint8Array(await Rs(g)),e){const s=IB(e);if(s)return s.params}}else{t=new Uint8Array(g);const s=Vs.get(g);if(s)return s.params}const i=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";return(await fC(g,e,t,i)).params}async function jn(g,A){let t;const e=typeof g=="string"?`svga-payload:${g}`:null;if(typeof g=="string"){if(t=new Uint8Array(await Rs(g)),e){const s=IB(e);if(s)return Vn(async()=>NB(s))}}else t=new Uint8Array(g);const i=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined",I=await fC(g,e,t,i);return Vn(async()=>NB(I))}const _n=24;async function jr(){await new Promise(g=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>g());return}setTimeout(g,0)})}function Xr(g,A,t){const e=Array.from(g.entries()).map(([o,r])=>({key:o,w:r.width,h:r.height}));e.sort((o,r)=>r.h-o.h);let i=256,I=256,s=0;for(const o of e)s+=(o.w+A)*(o.h+A);for(;i*I<s*1.3&&i<t;)i<=I?i*=2:I*=2;i=Math.min(i,t),I=Math.min(I,t);const n=[];let B=0,C=0,a=0;for(const o of e){const r=o.w+A,E=o.h+A;a+r>i&&(B+=C,C=0,a=0),B+E>I&&I<t&&(I=Math.min(I*2,t)),n.push({key:o.key,x:a,y:B,w:o.w,h:o.h}),a+=r,C=Math.max(C,E)}const Q=B+C;return I=Or(Q),I=Math.min(I,t),{rects:n,atlasW:i,atlasH:I}}function Or(g){return g--,g|=g>>1,g|=g>>2,g|=g>>4,g|=g>>8,g|=g>>16,g+1}function Pr(g,A){if(Oa())return new OffscreenCanvas(g,A);if(typeof document=="undefined")throw new Error("Atlas compose needs OffscreenCanvas or DOM (document)");const t=document.createElement("canvas");return t.width=g,t.height=A,t}async function $r(g){if(typeof OffscreenCanvas!="undefined"&&g instanceof OffscreenCanvas){if(typeof g.convertToBlob=="function")try{return await(await g.convertToBlob({type:"image/png"})).arrayBuffer()}catch(t){return null}return null}const A=g;return new Promise(t=>{try{A.toBlob(e=>{if(!e){t(null);return}e.arrayBuffer().then(t).catch(()=>t(null))},"image/png")}catch(e){t(null)}})}async function Xn(g,A,t=4096,e=2,i){if(g.size===0)throw new Error("No images to build atlas from");const{rects:I,atlasW:s,atlasH:n}=Xr(g,e,t),B=Pr(s,n),C=B.getContext("2d");if(!C)throw new Error("Atlas: 2d context unavailable");C.clearRect(0,0,s,n);for(let E=0;E<I.length;E+=_n){const h=I.slice(E,E+_n);for(const c of h){const f=g.get(c.key);C.drawImage(f,c.x,c.y)}E+_n<I.length&&await jr()}const a=(i==null?void 0:i.captureEncodedPng)===!0?$r(B):void 0,Q=await createImageBitmap(B,{premultiplyAlpha:"none"}),o=A.createTexture(Q,{width:s,height:n,filter:"linear"});Q.close();const r=new Map;for(const E of I)r.set(E.key,{x:E.x/s,y:E.y/n,w:E.w/s,h:E.h/n});return{textureHandle:o,rects:r,atlasWidth:s,atlasHeight:n,encodedPngBytesPromise:a}}var Ao=Object.defineProperty,uC=(g,A)=>{for(var t in A)Ao(g,t,{get:A[t],enumerable:!0})},Ln=Math.pow(2,32),V=Math.pow(2,32)-1,to=1,eo=2,io=4,Ws=1,zs=2,js=8,Xs=16,Os=32,RB=131072,ms=1,Ps=4,Gs=256,Ss=512,Fs=1024,Ns=2048,wC=-1,mA=0,CA=1,FA=class DC extends ArrayBuffer{constructor(A){super(A),this.fileStart=0,this.usedBytes=0}static fromArrayBuffer(A,t){const e=new DC(A.byteLength);return new Uint8Array(e).set(new Uint8Array(A)),e.fileStart=t,e}},Us,On,R,gA=(R=class{constructor(A,t,e){ln(this,Us);this._byteLength=0,this.failurePosition=0,this._dynamicSize=1,this._byteOffset=t||0,A instanceof ArrayBuffer?this.buffer=FA.fromArrayBuffer(A,0):A instanceof DataView?(this.dataView=A,t&&(this._byteOffset+=t)):this.buffer=new FA(A||0),this.position=0,this.endianness=e||1}getPosition(){return this.position}_realloc(A){if(!this._dynamicSize)return;const t=this._byteOffset+this.position+A;let e=this._buffer.byteLength;if(t<=e){t>this._byteLength&&(this._byteLength=t);return}for(e<1&&(e=1);t>e;)e*=2;const i=new FA(e),I=new Uint8Array(this._buffer);new Uint8Array(i,0,I.length).set(I),this.buffer=i,this._byteLength=t}_trimAlloc(){if(this._byteLength===this._buffer.byteLength)return;const A=new FA(this._byteLength),t=new Uint8Array(A),e=new Uint8Array(this._buffer,0,t.length);t.set(e),this.buffer=A}get byteLength(){return this._byteLength-this._byteOffset}get buffer(){return this._trimAlloc(),this._buffer}set buffer(A){this._buffer=A,this._dataView=new DataView(A,this._byteOffset),this._byteLength=A.byteLength}get byteOffset(){return this._byteOffset}set byteOffset(A){this._byteOffset=A,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}get dataView(){return this._dataView}set dataView(A){this._byteOffset=A.byteOffset,this._buffer=FA.fromArrayBuffer(A.buffer,0),this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+A.byteLength}seek(A){const t=Math.max(0,Math.min(this.byteLength,A));this.position=isNaN(t)||!isFinite(t)?0:t}isEof(){return this.position>=this._byteLength}mapUint8Array(A){this._realloc(A*1);const t=new Uint8Array(this._buffer,this.byteOffset+this.position,A);return this.position+=A*1,t}readInt32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Int32Array(A);return R.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),R.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt16Array(A,t){A=A===void 0?this.byteLength-this.position/2:A;const e=new Int16Array(A);return R.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),R.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt8Array(A){A=A===void 0?this.byteLength-this.position:A;const t=new Int8Array(A);return R.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,A*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t}readUint32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Uint32Array(A);return R.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),R.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readUint16Array(A,t){A=A===void 0?this.byteLength-this.position/2:A;const e=new Uint16Array(A);return R.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),R.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readUint8Array(A){A=A===void 0?this.byteLength-this.position:A;const t=new Uint8Array(A);return R.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,A*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t}readFloat64Array(A,t){A=A===void 0?this.byteLength-this.position/8:A;const e=new Float64Array(A);return R.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),R.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readFloat32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Float32Array(A);return R.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),R.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt32(A){const t=this._dataView.getInt32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readInt16(A){const t=this._dataView.getInt16(this.position,(A!=null?A:this.endianness)===2);return this.position+=2,t}readInt8(){const A=this._dataView.getInt8(this.position);return this.position+=1,A}readUint32(A){const t=this._dataView.getUint32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readUint16(A){const t=this._dataView.getUint16(this.position,(A!=null?A:this.endianness)===2);return this.position+=2,t}readUint8(){const A=this._dataView.getUint8(this.position);return this.position+=1,A}readFloat32(A){const t=this._dataView.getFloat32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readFloat64(A){const t=this._dataView.getFloat64(this.position,(A!=null?A:this.endianness)===2);return this.position+=8,t}static memcpy(A,t,e,i,I){const s=new Uint8Array(A,t,I),n=new Uint8Array(e,i,I);s.set(n)}static arrayToNative(A,t){return t===R.ENDIANNESS?A:this.flipArrayEndianness(A)}static nativeToEndian(A,t){return t&&R.ENDIANNESS===2?A:this.flipArrayEndianness(A)}static flipArrayEndianness(A){const t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);for(let e=0;e<A.byteLength;e+=A.BYTES_PER_ELEMENT)for(let i=e+A.BYTES_PER_ELEMENT-1,I=e;i>I;i--,I++){const s=t[I];t[I]=t[i],t[i]=s}return A}readString(A,t){return t===void 0||t==="ASCII"?xB(this.mapUint8Array(A===void 0?this.byteLength-this.position:A)):new TextDecoder(t).decode(this.mapUint8Array(A))}readCString(A){let t=0;const e=this.byteLength-this.position,i=new Uint8Array(this._buffer,this._byteOffset+this.position),I=A!==void 0?Math.min(A,e):e;for(;t<I&&i[t]!==0;t++);const s=xB(this.mapUint8Array(t));return A!==void 0?this.position+=I-t:t!==e&&(this.position+=1),s}readInt64(){return this.readInt32()*Ln+this.readUint32()}readUint64(){return this.readUint32()*Ln+this.readUint32()}readUint24(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()}save(A){const t=new Blob([this.buffer]);if(typeof window!="undefined"&&typeof document!="undefined")if(window.URL&&URL.createObjectURL){const e=window.URL.createObjectURL(t),i=document.createElement("a");document.body.appendChild(i),i.setAttribute("href",e),i.setAttribute("download",A),i.setAttribute("target","_self"),i.click(),window.URL.revokeObjectURL(e),document.body.removeChild(i)}else throw new Error("DataStream.save: Can't create object URL.");return t}get dynamicSize(){return this._dynamicSize}set dynamicSize(A){A||this._trimAlloc(),this._dynamicSize=A}shift(A){const t=new FA(this._byteLength-A),e=new Uint8Array(t),i=new Uint8Array(this._buffer,A,e.length);e.set(i),this.buffer=t,this.position-=A}writeInt32Array(A,t){if(this._realloc(A.length*4),A instanceof Int32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)R.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeInt32(A[e],t)}writeInt16Array(A,t){if(this._realloc(A.length*2),A instanceof Int16Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)R.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt16Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeInt16(A[e],t)}writeInt8Array(A){if(this._realloc(A.length*1),A instanceof Int8Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)R.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt8Array(A.length);else for(let t=0;t<A.length;t++)this.writeInt8(A[t])}writeUint32Array(A,t){if(this._realloc(A.length*4),A instanceof Uint32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)R.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeUint32(A[e],t)}writeUint16Array(A,t){if(this._realloc(A.length*2),A instanceof Uint16Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)R.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint16Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeUint16(A[e],t)}writeUint8Array(A){if(this._realloc(A.length*1),A instanceof Uint8Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)R.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint8Array(A.length);else for(let t=0;t<A.length;t++)this.writeUint8(A[t])}writeFloat64Array(A,t){if(this._realloc(A.length*8),A instanceof Float64Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)R.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapFloat64Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeFloat64(A[e],t)}writeFloat32Array(A,t){if(this._realloc(A.length*4),A instanceof Float32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)R.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapFloat32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeFloat32(A[e],t)}writeInt64(A,t){this._realloc(8),this._dataView.setBigInt64(this.position,BigInt(A),(t!=null?t:this.endianness)===2),this.position+=8}writeInt32(A,t){this._realloc(4),this._dataView.setInt32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeInt16(A,t){this._realloc(2),this._dataView.setInt16(this.position,A,(t!=null?t:this.endianness)===2),this.position+=2}writeInt8(A){this._realloc(1),this._dataView.setInt8(this.position,A),this.position+=1}writeUint32(A,t){this._realloc(4),this._dataView.setUint32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeUint16(A,t){this._realloc(2),this._dataView.setUint16(this.position,A,(t!=null?t:this.endianness)===2),this.position+=2}writeUint8(A){this._realloc(1),this._dataView.setUint8(this.position,A),this.position+=1}writeFloat32(A,t){this._realloc(4),this._dataView.setFloat32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeFloat64(A,t){this._realloc(8),this._dataView.setFloat64(this.position,A,(t!=null?t:this.endianness)===2),this.position+=8}writeUCS2String(A,t,e){e===void 0&&(e=A.length);let i;for(i=0;i<A.length&&i<e;i++)this.writeUint16(A.charCodeAt(i),t);for(;i<e;i++)this.writeUint16(0)}writeString(A,t,e){let i=0;if(t===void 0||t==="ASCII")if(e!==void 0){const I=Math.min(A.length,e);for(i=0;i<I;i++)this.writeUint8(A.charCodeAt(i));for(;i<e;i++)this.writeUint8(0)}else for(i=0;i<A.length;i++)this.writeUint8(A.charCodeAt(i));else this.writeUint8Array(new TextEncoder(t).encode(A.substring(0,e)))}writeCString(A,t){let e=0;if(t!==void 0){const i=Math.min(A.length,t);for(e=0;e<i;e++)this.writeUint8(A.charCodeAt(e));for(;e<t;e++)this.writeUint8(0)}else{for(e=0;e<A.length;e++)this.writeUint8(A.charCodeAt(e));this.writeUint8(0)}}writeStruct(A,t){for(let e=0;e<A.length;e++){const[i,I]=A[e],s=t[i];this.writeType(I,s,t)}}writeType(A,t,e){if(typeof A=="function")return A(this,t);if(typeof A=="object"&&!(A instanceof Array))return A.set(this,t,e);let i,I="ASCII";const s=this.position;let n=A;if(typeof A=="string"&&/:/.test(A)){const B=A.split(":");n=B[0],i=parseInt(B[1])}if(typeof n=="string"&&/,/.test(n)){const B=n.split(",");n=B[0],I=B[1]}switch(n){case"uint8":this.writeUint8(t);break;case"int8":this.writeInt8(t);break;case"uint16":this.writeUint16(t,this.endianness);break;case"int16":this.writeInt16(t,this.endianness);break;case"uint32":this.writeUint32(t,this.endianness);break;case"int32":this.writeInt32(t,this.endianness);break;case"float32":this.writeFloat32(t,this.endianness);break;case"float64":this.writeFloat64(t,this.endianness);break;case"uint16be":this.writeUint16(t,1);break;case"int16be":this.writeInt16(t,1);break;case"uint32be":this.writeUint32(t,1);break;case"int32be":this.writeInt32(t,1);break;case"float32be":this.writeFloat32(t,1);break;case"float64be":this.writeFloat64(t,1);break;case"uint16le":this.writeUint16(t,2);break;case"int16le":this.writeInt16(t,2);break;case"uint32le":this.writeUint32(t,2);break;case"int32le":this.writeInt32(t,2);break;case"float32le":this.writeFloat32(t,2);break;case"float64le":this.writeFloat64(t,2);break;case"cstring":this.writeCString(t,i);break;case"string":this.writeString(t,I,i);break;case"u16string":this.writeUCS2String(t,this.endianness,i);break;case"u16stringle":this.writeUCS2String(t,2,i);break;case"u16stringbe":this.writeUCS2String(t,1,i);break;default:if(dn(this,Us,On).call(this,n)){const[,B]=n;for(let C=0;C<t.length;C++)this.writeType(B,t[C]);break}else{this.writeStruct(n,t);break}}i&&(this.position=s,this._realloc(i),this.position=s+i)}writeUint64(A){const t=Math.floor(A/Ln);this.writeUint32(t),this.writeUint32(A&4294967295)}writeUint24(A){this.writeUint8((A&16711680)>>16),this.writeUint8((A&65280)>>8),this.writeUint8(A&255)}adjustUint32(A,t){const e=this.position;this.seek(A),this.writeUint32(t),this.seek(e)}readStruct(A){const t={},e=this.position;for(let i=0;i<A.length;i+=1){const I=A[i][1],s=this.readType(I,t);if(!s){this.failurePosition===0&&(this.failurePosition=this.position),this.position=e;return}t[A[i][0]]=s}return t}readUCS2String(A,t){return String.fromCharCode.apply(void 0,this.readUint16Array(A,t))}readType(A,t){if(typeof A=="function")return A(this,t);if(typeof A=="object"&&!(A instanceof Array))return A.get(this,t);if(A instanceof Array&&A.length!==3)return this.readStruct(A);let e,i,I="ASCII";const s=this.position;let n=A;if(typeof n=="string"&&/:/.test(n)){const B=n.split(":");n=B[0],i=parseInt(B[1])}if(typeof n=="string"&&/,/.test(n)){const B=n.split(",");n=B[0],I=B[1]}switch(n){case"uint8":e=this.readUint8();break;case"int8":e=this.readInt8();break;case"uint16":e=this.readUint16(this.endianness);break;case"int16":e=this.readInt16(this.endianness);break;case"uint32":e=this.readUint32(this.endianness);break;case"int32":e=this.readInt32(this.endianness);break;case"float32":e=this.readFloat32(this.endianness);break;case"float64":e=this.readFloat64(this.endianness);break;case"uint16be":e=this.readUint16(1);break;case"int16be":e=this.readInt16(1);break;case"uint32be":e=this.readUint32(1);break;case"int32be":e=this.readInt32(1);break;case"float32be":e=this.readFloat32(1);break;case"float64be":e=this.readFloat64(1);break;case"uint16le":e=this.readUint16(2);break;case"int16le":e=this.readInt16(2);break;case"uint32le":e=this.readUint32(2);break;case"int32le":e=this.readInt32(2);break;case"float32le":e=this.readFloat32(2);break;case"float64le":e=this.readFloat64(2);break;case"cstring":e=this.readCString(i);break;case"string":e=this.readString(i,I);break;case"u16string":e=this.readUCS2String(i,this.endianness);break;case"u16stringle":e=this.readUCS2String(i,2);break;case"u16stringbe":e=this.readUCS2String(i,1);break;default:if(dn(this,Us,On).call(this,n)){const[,B,C]=n,a=typeof C=="function"?C(t,this,n):typeof C=="string"&&t[C]!==void 0?parseInt(t[C]):typeof C=="number"?C:C==="*"?void 0:parseInt(C);if(typeof B=="string"){const Q=B.replace(/(le|be)$/,"");let o;switch(/le$/.test(B)?o=2:/be$/.test(B)&&(o=1),Q){case"uint8":e=this.readUint8Array(a);break;case"uint16":e=this.readUint16Array(a,o);break;case"uint32":e=this.readUint32Array(a,o);break;case"int8":e=this.readInt8Array(a);break;case"int16":e=this.readInt16Array(a,o);break;case"int32":e=this.readInt32Array(a,o);break;case"float32":e=this.readFloat32Array(a,o);break;case"float64":e=this.readFloat64Array(a,o);break;case"cstring":case"utf16string":case"string":if(a){e=new Array(a);for(let r=0;r<a;r++)e[r]=this.readType(B,t)}else for(e=[];!this.isEof();){const r=this.readType(B,t);if(!r)break;e.push(r)}break}}else if(a){e=new Array(a);for(let Q=0;Q<a;Q++){const o=this.readType(B,t);if(!o)return;e[Q]=o}}else for(e=[];;){const Q=this.position;try{const o=this.readType(B,t);if(!o){this.position=Q;break}e.push(o)}catch(o){this.position=Q;break}}break}}return i&&(this.position=s+i),e}mapInt32Array(A,t){this._realloc(A*4);const e=new Int32Array(this._buffer,this.byteOffset+this.position,A);return R.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}mapInt16Array(A,t){this._realloc(A*2);const e=new Int16Array(this._buffer,this.byteOffset+this.position,A);return R.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*2,e}mapInt8Array(A,t){this._realloc(A*1);const e=new Int8Array(this._buffer,this.byteOffset+this.position,A);return this.position+=A*1,e}mapUint32Array(A,t){this._realloc(A*4);const e=new Uint32Array(this._buffer,this.byteOffset+this.position,A);return R.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}mapUint16Array(A,t){this._realloc(A*2);const e=new Uint16Array(this._buffer,this.byteOffset+this.position,A);return R.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*2,e}mapFloat64Array(A,t){this._realloc(A*8);const e=new Float64Array(this._buffer,this.byteOffset+this.position,A);return R.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*8,e}mapFloat32Array(A,t){this._realloc(A*4);const e=new Float32Array(this._buffer,this.byteOffset+this.position,A);return R.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}},Us=new WeakSet,On=function(A){return Array.isArray(A)&&A.length===3&&A[0]==="[]"},R.ENDIANNESS=new Int8Array(new Int16Array([1]).buffer)[0]>0?2:1,R);function xB(g){const A=[];for(let t=0;t<g.length;t++)A[t]=g[t];return String.fromCharCode.apply(void 0,A)}var vs=new Date,$s=4,UB=3,MB=2,bB=1,dA=$s,l={setLogLevel(g){g===this.debug?dA=bB:g===this.info?dA=MB:g===this.warn?dA=UB:(this.error,dA=$s)},debug(g,A){console.debug===void 0&&(console.debug=console.log),bB>=dA&&console.debug("["+l.getDurationString(new Date().getTime()-vs.getTime(),1e3)+"]","["+g+"]",A)},log(g,A){this.debug(g.msg)},info(g,A){MB>=dA&&console.info("["+l.getDurationString(new Date().getTime()-vs.getTime(),1e3)+"]","["+g+"]",A)},warn(g,A){UB>=dA&&console.warn("["+l.getDurationString(new Date().getTime()-vs.getTime(),1e3)+"]","["+g+"]",A)},error(g,A,t){t!=null&&t.onError?t.onError(g,A):$s>=dA&&console.error("["+l.getDurationString(new Date().getTime()-vs.getTime(),1e3)+"]","["+g+"]",A)},getDurationString(g,A){let t;function e(C,a){const o=(""+C).split(".");for(;o[0].length<a;)o[0]="0"+o[0];return o.join(".")}g<0?(t=!0,g=-g):t=!1;let I=g/(A||1);const s=Math.floor(I/3600);I-=s*3600;const n=Math.floor(I/60);I-=n*60;let B=I*1e3;return I=Math.floor(I),B-=I*1e3,B=Math.floor(B),(t?"-":"")+s+":"+e(n,2)+":"+e(I,2)+"."+e(B,3)},printRanges(g){const A=g.length;if(A>0){let t="";for(let e=0;e<A;e++)e>0&&(t+=","),t+="["+l.getDurationString(g.start(e))+","+l.getDurationString(g.end(e))+"]";return t}else return"(empty)"}};function go(g,A){l.debug("ArrayBuffer","Trying to create a new buffer of size: "+(g.byteLength+A.byteLength));const t=new Uint8Array(g.byteLength+A.byteLength);return t.set(new Uint8Array(g),0),t.set(new Uint8Array(A),g.byteLength),t.buffer}var An=class extends gA{constructor(g){super(new ArrayBuffer,0),this.buffers=[],this.bufferIndex=-1,g&&(this.insertBuffer(g),this.bufferIndex=0)}initialized(){if(this.bufferIndex>-1)return!0;if(this.buffers.length>0){const g=this.buffers[0];return g.fileStart===0?(this.buffer=g,this.bufferIndex=0,l.debug("MultiBufferStream","Stream ready for parsing"),!0):(l.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)}else return l.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1}reduceBuffer(g,A,t){const e=new Uint8Array(t);return e.set(new Uint8Array(g,A,t)),e.buffer.fileStart=g.fileStart+A,e.buffer.usedBytes=0,e.buffer}insertBuffer(g){let A=!0,t=0;for(;t<this.buffers.length;t++){const e=this.buffers[t];if(g.fileStart<=e.fileStart){if(g.fileStart===e.fileStart)if(g.byteLength>e.byteLength){this.buffers.splice(t,1),t--;continue}else l.warn("MultiBufferStream","Buffer (fileStart: "+g.fileStart+" - Length: "+g.byteLength+") already appended, ignoring");else g.fileStart+g.byteLength<=e.fileStart||(g=this.reduceBuffer(g,0,e.fileStart-g.fileStart)),l.debug("MultiBufferStream","Appending new buffer (fileStart: "+g.fileStart+" - Length: "+g.byteLength+")"),this.buffers.splice(t,0,g),t===0&&(this.buffer=g);A=!1;break}else if(g.fileStart<e.fileStart+e.byteLength){const i=e.fileStart+e.byteLength-g.fileStart,I=g.byteLength-i;if(I>0)g=this.reduceBuffer(g,i,I);else{A=!1;break}}}A&&(l.debug("MultiBufferStream","Appending new buffer (fileStart: "+g.fileStart+" - Length: "+g.byteLength+")"),this.buffers.push(g),t===0&&(this.buffer=g))}logBufferLevel(g){const A=[];let t="",e,i=0,I=0;for(let n=0;n<this.buffers.length;n++){const B=this.buffers[n];n===0?(e={start:B.fileStart,end:B.fileStart+B.byteLength},A.push(e),t+="["+e.start+"-"):e.end===B.fileStart?e.end=B.fileStart+B.byteLength:(e={start:B.fileStart,end:B.fileStart+B.byteLength},t+=A[A.length-1].end-1+"], ["+e.start+"-",A.push(e)),i+=B.usedBytes,I+=B.byteLength}A.length>0&&(t+=e.end-1+"]");const s=g?l.info:l.debug;this.buffers.length===0?s("MultiBufferStream","No more buffer in memory"):s("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+i+"/"+I+" bytes), continuous ranges: "+t)}cleanBuffers(){for(let g=0;g<this.buffers.length;g++){const A=this.buffers[g];A.usedBytes===A.byteLength&&(l.debug("MultiBufferStream","Removing buffer #"+g),this.buffers.splice(g,1),g--)}}mergeNextBuffer(){if(this.bufferIndex+1<this.buffers.length){const g=this.buffers[this.bufferIndex+1];if(g.fileStart===this.buffer.fileStart+this.buffer.byteLength){const A=this.buffer.byteLength,t=this.buffer.usedBytes,e=this.buffer.fileStart;return this.buffers[this.bufferIndex]=go(this.buffer,g),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=t,this.buffer.fileStart=e,l.debug("ISOFile","Concatenating buffer for box parsing (length: "+A+"->"+this.buffer.byteLength+")"),!0}else return!1}else return!1}findPosition(g,A,t){let e=-1,i=g===!0?0:this.bufferIndex;for(;i<this.buffers.length;){const s=this.buffers[i];if(s&&s.fileStart<=A)e=i,t&&(s.fileStart+s.byteLength<=A?s.usedBytes=s.byteLength:s.usedBytes=A-s.fileStart,this.logBufferLevel());else break;i++}if(e===-1)return-1;const I=this.buffers[e];return I.fileStart+I.byteLength>=A?(l.debug("MultiBufferStream","Found position in existing buffer #"+e),e):-1}findEndContiguousBuf(g){const A=g!==void 0?g:this.bufferIndex;let t=this.buffers[A];if(this.buffers.length>A+1)for(let e=A+1;e<this.buffers.length;e++){const i=this.buffers[e];if(i.fileStart===t.fileStart+t.byteLength)t=i;else break}return t.fileStart+t.byteLength}getEndFilePositionAfter(g){const A=this.findPosition(!0,g,!1);return A!==-1?this.findEndContiguousBuf(A):g}addUsedBytes(g){this.buffer.usedBytes+=g,this.logBufferLevel()}setAllUsedBytes(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()}seek(g,A,t){const e=this.findPosition(A,g,t);return e!==-1?(this.buffer=this.buffers[e],this.bufferIndex=e,this.position=g-this.buffer.fileStart,l.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(l.debug("MultiBufferStream","Position "+g+" not found in buffered data"),!1)}getPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.position}getLength(){return this.byteLength}getEndPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.byteLength}getAbsoluteEndPosition(){if(this.buffers.length===0)return 0;const g=this.buffers[this.buffers.length-1];return g.fileStart+g.byteLength}},Ms,$A,m=($A=class{constructor(A=0){ln(this,Ms);this.size=A}get type(){var A;return(A=this.constructor.fourcc)!=null?A:rB(this,Ms)}set type(A){oB(this,Ms,A)}addBox(A){return this.boxes||(this.boxes=[]),this.boxes.push(A),this[A.type+"s"]?this[A.type+"s"].push(A):this[A.type]=A,A}set(A,t){return this[A]=t,this}addEntry(A,t){const e=t||"entries";return this[e]||(this[e]=[]),this[e].push(A),this}writeHeader(A,t){if(this.size+=8,(this.size>V||this.original_size===1)&&(this.size+=8),this.type==="uuid"&&(this.size+=16),l.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+A.getPosition()+(t||"")),this.original_size===0?A.writeUint32(0):this.size>V||this.original_size===1?A.writeUint32(1):(this.sizePosition=A.getPosition(),A.writeUint32(this.size)),A.writeString(this.type,void 0,4),this.type==="uuid"){const e=new Uint8Array(16);for(let i=0;i<16;i++)e[i]=parseInt(this.uuid.substring(i*2,i*2+2),16);A.writeUint8Array(e)}(this.size>V||this.original_size===1)&&(this.sizePosition=A.getPosition(),A.writeUint64(this.size))}write(A){if(this.type==="mdat"){const t=this;if(t.stream){this.size=t.stream.getAbsoluteEndPosition(),this.writeHeader(A);for(const e of t.stream.buffers){const i=new Uint8Array(e);A.writeUint8Array(i)}}else t.data&&(this.size=t.data.length,this.writeHeader(A),A.writeUint8Array(t.data))}else this.size=this.data?this.data.length:0,this.writeHeader(A),this.data&&A.writeUint8Array(this.data)}printHeader(A){this.size+=8,this.size>V&&(this.size+=8),this.type==="uuid"&&(this.size+=16),A.log(A.indent+"size:"+this.size),A.log(A.indent+"type:"+this.type)}print(A){this.printHeader(A)}parse(A){this.type!=="mdat"?this.data=A.readUint8Array(this.size-this.hdr_size):this.size===0?A.seek(A.getEndPosition()):A.seek(this.start+this.size)}parseDataAndRewind(A){this.data=A.readUint8Array(this.size-this.hdr_size),A.seek(this.start+this.hdr_size)}parseLanguage(A){this.language=A.readUint16();const t=[];t[0]=this.language>>10&31,t[1]=this.language>>5&31,t[2]=this.language&31,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)}computeSize(A){const t=A||new An;this.write(t)}isEndOfBox(A){const t=A.getPosition(),e=this.start+this.size;return t===e}},Ms=new WeakMap,$A.registryId=Symbol.for("BoxIdentifier"),$A),w=class extends m{constructor(){super(...arguments),this.flags=0,this.version=0}writeHeader(g){this.size+=4,super.writeHeader(g," v="+this.version+" f="+this.flags),g.writeUint8(this.version),g.writeUint24(this.flags)}printHeader(g){this.size+=4,super.printHeader(g),g.log(g.indent+"version:"+this.version),g.log(g.indent+"flags:"+this.flags)}parseDataAndRewind(g){this.parseFullHeader(g),this.data=g.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,g.seek(this.start+this.hdr_size)}parseFullHeader(g){this.version=g.readUint8(),this.flags=g.readUint24(),this.hdr_size+=4}parse(g){this.parseFullHeader(g),this.data=g.readUint8Array(this.size-this.hdr_size)}},At,T=(At=class{constructor(A){this.grouping_type=A}write(A){A.writeUint8Array(this.data)}parse(A){l.warn("BoxParser",`Unknown sample group type: '${this.grouping_type}'`),this.data=A.readUint8Array(this.description_length)}},At.registryId=Symbol.for("SampleGroupEntryIdentifier"),At),Io=class extends w{parse(g){this.parseFullHeader(g),this.track_group_id=g.readUint32()}},so=class extends m{constructor(g,A,t,e,i){super(A),this.box_name=t,this.hdr_size=e,this.start=i,this.type=g}parse(g){this.from_item_ID=g.readUint16();const A=g.readUint16();this.references=[];for(let t=0;t<A;t++)this.references[t]={to_item_ID:g.readUint16()}}},no=class extends m{constructor(g,A,t,e,i){super(A),this.box_name=t,this.hdr_size=e,this.start=i,this.type=g}parse(g){this.from_item_ID=g.readUint32();const A=g.readUint16();this.references=[];for(let t=0;t<A;t++)this.references[t]={to_item_ID:g.readUint32()}}},Bo=class extends m{constructor(g,A,t,e){super(A),this.hdr_size=t,this.start=e,this.type=g}parse(g){this.track_ids=g.readUint32Array((this.size-this.hdr_size)/4)}write(g){this.size=this.track_ids.length*4,this.writeHeader(g),g.writeUint32Array(this.track_ids)}},Pn=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],Co=["compatible_brands","matrix","opcolor","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"];function ao(g,A){if(g&&!A)return!1;let t;for(t in g)if(!Pn.find(e=>e===t)){if(g[t]instanceof m||A[t]instanceof m)continue;if(typeof g[t]=="undefined"||typeof A[t]=="undefined")continue;if(typeof g[t]=="function"||typeof A[t]=="function")continue;if("subBoxNames"in g&&g.subBoxNames.indexOf(t.slice(0,4))>-1||"subBoxNames"in A&&A.subBoxNames.indexOf(t.slice(0,4))>-1)continue;if(t==="data"||t==="start"||t==="size"||t==="creation_time"||t==="modification_time")continue;if(Co.find(e=>e===t))continue;if(g[t]!==A[t])return!1}return!0}function pC(g,A){if(!ao(g,A))return!1;for(let t=0;t<Pn.length;t++){const e=Pn[t];if(g[e]&&A[e]&&!pC(g[e],A[e]))return!1}return!0}function BB(g){let A=g;for(;A;){if("registryId"in A)return A.registryId;A=Object.getPrototypeOf(A)}}var Qo=g=>{const A=Symbol.for("SampleGroupEntryIdentifier");return BB(g)===A},ro=g=>{const A=Symbol.for("SampleEntryIdentifier");return BB(g)===A},oo=g=>{const A=Symbol.for("BoxIdentifier");return BB(g)===A},IA={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};function Eo(g){const A={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};for(const[t,e]of Object.entries(g)){if(Qo(e)){const i="grouping_type"in e?e.grouping_type:void 0;if(!i)throw new Error(`SampleGroupEntry class ${t} does not have a valid static grouping_type. Please ensure it is defined correctly.`);if(i in A.sampleGroupEntry)throw new Error(`SampleGroupEntry class ${t} has a grouping_type that is already registered. Please ensure it is unique.`);A.sampleGroupEntry[i]=e;continue}if(ro(e)){const i="fourcc"in e?e.fourcc:void 0;if(!i)throw new Error(`SampleEntry class ${t} does not have a valid static fourcc. Please ensure it is defined correctly.`);if(i in A.sampleEntry)throw new Error(`SampleEntry class ${t} has a fourcc that is already registered. Please ensure it is unique.`);A.sampleEntry[i]=e;continue}if(oo(e)){const i="fourcc"in e?e.fourcc:void 0,I="uuid"in e?e.uuid:void 0;if(i==="uuid"){if(!I)throw new Error(`Box class ${t} has a fourcc of 'uuid' but does not have a valid uuid. Please ensure it is defined correctly.`);if(I in A.uuid)throw new Error(`Box class ${t} has a uuid that is already registered. Please ensure it is unique.`);A.uuid[I]=e;continue}A.box[i]=e;continue}throw new Error(`Box class ${t} does not have a valid static fourcc, uuid, or grouping_type. Please ensure it is defined correctly.`)}return IA.uuid={...A.uuid},IA.sampleEntry={...A.sampleEntry},IA.sampleGroupEntry={...A.sampleGroupEntry},IA.box={...A.box},IA}var Cn={};function ho(g){return Object.entries(g).forEach(([A,t])=>Cn[A]=t),Cn}function co(g){return KA(g)}function KA(g){let A="";for(let t=0;t<16;t++){const e=g.readUint8().toString(16);A+=e.length===1?"0"+e:e}return A}function hA(g,A,t){let e,i;const I=g.getPosition();let s=0,n;if(g.getEndPosition()-I<8)return l.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:mA};if(t&&t<8)return l.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:mA};let B=g.readUint32();const C=g.readString(4);if(C.length!==4||!/^[\x20-\x7E]{4}$/.test(C))return l.error("BoxParser",`Invalid box type: '${C}'`),{code:wC,start:I,type:C};let a=C;if(l.debug("BoxParser","Found box of type '"+C+"' and size "+B+" at position "+I),s=8,C==="uuid"){if(g.getEndPosition()-g.getPosition()<16||t-s<16)return g.seek(I),l.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:mA};n=co(g),s+=16,a=n}if(B===1){if(g.getEndPosition()-g.getPosition()<8||t&&t-s<8)return g.seek(I),l.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+C+'" box'),{code:mA};i=B,B=g.readUint64(),s+=8}else if(B===0){if(t)B=t;else if(C!=="mdat")return l.error("BoxParser","Unlimited box size not supported for type: '"+C+"'"),e=new m(B),e.type=C,{code:CA,box:e,size:e.size}}if(B!==0&&B<s)return l.error("BoxParser","Box of type "+C+" has an invalid size "+B+" (too small to be a box)"),{code:mA,type:C,size:B,hdr_size:s,start:I};if(B!==0&&t&&B>t)return l.error("BoxParser","Box of type '"+C+"' has a size "+B+" greater than its container size "+t),{code:mA,type:C,size:B,hdr_size:s,start:I};if(B!==0&&I+B>g.getEndPosition())return g.seek(I),l.info("BoxParser","Not enough data in stream to parse the entire '"+C+"' box"),{code:mA,type:C,size:B,hdr_size:s,start:I,original_size:i};if(A)return{code:CA,type:C,size:B,hdr_size:s,start:I};C in IA.box?e=new IA.box[C](B):C!=="uuid"?(l.warn("BoxParser",`Unknown box type: '${C}'`),e=new m(B),e.type=C,e.has_unparsed_data=!0):n in IA.uuid?e=new IA.uuid[n](B):(l.warn("BoxParser",`Unknown UUID box type: '${n}'`),e=new m(B),e.type=C,e.uuid=n,e.has_unparsed_data=!0),e.original_size=i,e.hdr_size=s,e.start=I,e.write===m.prototype.write&&e.type!=="mdat"&&(l.info("BoxParser","'"+a+"' box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(g)),e.parse(g);const Q=g.getPosition()-(e.start+e.size);return Q<0?(l.warn("BoxParser","Parsing of box '"+a+"' did not read the entire indicated box data size (missing "+-Q+" bytes), seeking forward"),g.seek(e.start+e.size)):Q>0&&e.size!==0&&(l.error("BoxParser","Parsing of box '"+a+"' read "+Q+" more bytes than the indicated box data size, seeking backwards"),g.seek(e.start+e.size)),{code:CA,box:e,size:e.size}}var U=class extends m{write(g){if(this.size=0,this.writeHeader(g),this.boxes)for(let A=0;A<this.boxes.length;A++)this.boxes[A]&&(this.boxes[A].write(g),this.size+=this.boxes[A].size);l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),g.adjustUint32(this.sizePosition,this.size)}print(g){this.printHeader(g);for(let A=0;A<this.boxes.length;A++)if(this.boxes[A]){const t=g.indent;g.indent+=" ",this.boxes[A].print(g),g.indent=t}}parse(g){let A;for(;g.getPosition()<this.start+this.size;)if(A=hA(g,!1,this.size-(g.getPosition()-this.start)),A.code===CA){const t=A.box;if(this.boxes||(this.boxes=[]),this.boxes.push(t),this.subBoxNames&&this.subBoxNames.indexOf(t.type)!==-1){const e=this.subBoxNames[this.subBoxNames.indexOf(t.type)]+"s";this[e]||(this[e]=[]),this[e].push(t)}else{const e=t.type!=="uuid"?t.type:t.uuid;this[e]?l.warn("ContainerBox",`Box of type ${e} already exists in container box ${this.type}.`):this[e]=t}}else return}},tt,wA=(tt=class extends U{constructor(A,t,e){super(A),this.hdr_size=t,this.start=e}isVideo(){return!1}isAudio(){return!1}isSubtitle(){return!1}isMetadata(){return!1}isHint(){return!1}getCodec(){return this.type.replace(".","")}getWidth(){return""}getHeight(){return""}getChannelCount(){return""}getSampleRate(){return""}getSampleSize(){return""}parseHeader(A){A.readUint8Array(6),this.data_reference_index=A.readUint16(),this.hdr_size+=8}parse(A){this.parseHeader(A),this.data=A.readUint8Array(this.size-this.hdr_size)}parseDataAndRewind(A){this.parseHeader(A),this.data=A.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,A.seek(this.start+this.hdr_size)}parseFooter(A){super.parse(A)}writeHeader(A){this.size=8,super.writeHeader(A),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint16(this.data_reference_index)}writeFooter(A){if(this.boxes)for(let t=0;t<this.boxes.length;t++)this.boxes[t].write(A),this.size+=this.boxes[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}write(A){this.writeHeader(A),A.writeUint8Array(this.data),this.size+=this.data.length,l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},tt.registryId=Symbol.for("SampleEntryIdentifier"),tt),kB=class extends wA{},ss=class extends wA{isMetadata(){return!0}},TA=class extends wA{isSubtitle(){return!0}},lo=class extends wA{},H=class extends wA{parse(g){this.parseHeader(g),g.readUint16(),g.readUint16(),g.readUint32Array(3),this.width=g.readUint16(),this.height=g.readUint16(),this.horizresolution=g.readUint32(),this.vertresolution=g.readUint32(),g.readUint32(),this.frame_count=g.readUint16();const A=Math.min(31,g.readUint8());this.compressorname=g.readString(A),A<31&&g.readString(31-A),this.depth=g.readUint16(),g.readUint16(),this.parseFooter(g)}isVideo(){return!0}getWidth(){return this.width}getHeight(){return this.height}write(g){this.writeHeader(g),this.size+=70,g.writeUint16(0),g.writeUint16(0),g.writeUint32(0),g.writeUint32(0),g.writeUint32(0),g.writeUint16(this.width),g.writeUint16(this.height),g.writeUint32(this.horizresolution),g.writeUint32(this.vertresolution),g.writeUint32(0),g.writeUint16(this.frame_count),g.writeUint8(Math.min(31,this.compressorname.length)),g.writeString(this.compressorname,void 0,31),g.writeUint16(this.depth),g.writeInt16(-1),this.writeFooter(g)}},sA=class extends wA{parse(g){var t,e;this.parseHeader(g),this.version=g.readUint16(),g.readUint16(),g.readUint32(),this.channel_count=g.readUint16(),this.samplesize=g.readUint16(),g.readUint16(),g.readUint16(),this.samplerate=g.readUint32()/65536,((e=(t=g.isofile)==null?void 0:t.ftyp)==null?void 0:e.major_brand.includes("qt"))&&(this.version===1?this.extensions=g.readUint8Array(16):this.version===2&&(this.extensions=g.readUint8Array(36))),this.parseFooter(g)}isAudio(){return!0}getChannelCount(){return this.channel_count}getSampleRate(){return this.samplerate}getSampleSize(){return this.samplesize}write(g){this.writeHeader(g),this.size+=20,g.writeUint32(0),g.writeUint32(0),g.writeUint16(this.channel_count),g.writeUint16(this.samplesize),g.writeUint16(0),g.writeUint16(0),g.writeUint32(this.samplerate<<16),this.writeFooter(g)}},CB=class extends wA{parse(g){this.parseHeader(g),this.parseFooter(g)}write(g){this.writeHeader(g),this.writeFooter(g)}},YB=class extends Array{toString(){let g="<table class='inner-table'>";g+="<thead><tr><th>length</th><th>nalu_data</th></tr></thead>",g+="<tbody>";for(let A=0;A<this.length;A++){const t=this[A];g+="<tr>",g+="<td>"+t.length+"</td>",g+="<td>",g+=t.data.reduce(function(e,i){return e+i.toString(16).padStart(2,"0")},"0x"),g+="</td></tr>"}return g+="</tbody></table>",g}},et,yC=(et=class extends m{constructor(){super(...arguments),this.box_name="AVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8(),this.AVCProfileIndication=A.readUint8(),this.profile_compatibility=A.readUint8(),this.AVCLevelIndication=A.readUint8(),this.lengthSizeMinusOne=A.readUint8()&3,this.nb_SPS_nalus=A.readUint8()&31;let t=this.size-this.hdr_size-6;this.SPS=new YB;for(let e=0;e<this.nb_SPS_nalus;e++){const i=A.readUint16();this.SPS.push({length:i,data:A.readUint8Array(i)}),t-=2+i}this.nb_PPS_nalus=A.readUint8(),t--,this.PPS=new YB;for(let e=0;e<this.nb_PPS_nalus;e++){const i=A.readUint16();this.PPS.push({length:i,data:A.readUint8Array(i)}),t-=2+i}t>0&&(this.ext=A.readUint8Array(t))}write(A){this.size=7;for(let t=0;t<this.SPS.length;t++)this.size+=2+this.SPS[t].length;for(let t=0;t<this.PPS.length;t++)this.size+=2+this.PPS[t].length;this.ext&&(this.size+=this.ext.length),this.writeHeader(A),A.writeUint8(this.configurationVersion),A.writeUint8(this.AVCProfileIndication),A.writeUint8(this.profile_compatibility),A.writeUint8(this.AVCLevelIndication),A.writeUint8(this.lengthSizeMinusOne+252),A.writeUint8(this.SPS.length+224);for(let t=0;t<this.SPS.length;t++)A.writeUint16(this.SPS[t].length),A.writeUint8Array(this.SPS[t].data);A.writeUint8(this.PPS.length);for(let t=0;t<this.PPS.length;t++)A.writeUint16(this.PPS[t].length),A.writeUint8Array(this.PPS[t].data);this.ext&&A.writeUint8Array(this.ext)}},et.fourcc="avcC",et),it,tn=(it=class extends m{constructor(){super(...arguments),this.box_name="MediaDataBox"}},it.fourcc="mdat",it),gt,fo=(gt=class extends m{constructor(){super(...arguments),this.box_name="ItemDataBox"}},gt.fourcc="idat",gt),It,uo=(It=class extends m{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},It.fourcc="free",It),st,wo=(st=class extends m{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},st.fourcc="skip",st),nt,mC=(nt=class extends w{constructor(){super(...arguments),this.box_name="HintMediaHeaderBox"}},nt.fourcc="hmhd",nt),Bt,en=(Bt=class extends w{constructor(){super(...arguments),this.box_name="NullMediaHeaderBox"}},Bt.fourcc="nmhd",Bt),Ct,Do=(Ct=class extends w{constructor(){super(...arguments),this.box_name="ObjectDescriptorBox"}},Ct.fourcc="iods",Ct),at,po=(at=class extends w{constructor(){super(...arguments),this.box_name="XMLBox"}},at.fourcc="xml ",at),Qt,yo=(Qt=class extends w{constructor(){super(...arguments),this.box_name="BinaryXMLBox"}},Qt.fourcc="bxml",Qt),rt,mo=(rt=class extends w{constructor(){super(...arguments),this.box_name="ItemProtectionBox",this.sinfs=[]}get protections(){return this.sinfs}},rt.fourcc="ipro",rt),ot,$n=(ot=class extends U{constructor(){super(...arguments),this.box_name="MovieBox",this.traks=[],this.psshs=[],this.subBoxNames=["trak","pssh"]}},ot.fourcc="moov",ot),Et,GC=(Et=class extends U{constructor(){super(...arguments),this.box_name="TrackBox",this.samples=[]}},Et.fourcc="trak",Et),ht,Go=(ht=class extends U{constructor(){super(...arguments),this.box_name="EditBox"}},ht.fourcc="edts",ht),ct,SC=(ct=class extends U{constructor(){super(...arguments),this.box_name="MediaBox"}},ct.fourcc="mdia",ct),lt,FC=(lt=class extends U{constructor(){super(...arguments),this.box_name="MediaInformationBox"}},lt.fourcc="minf",lt),dt,NC=(dt=class extends U{constructor(){super(...arguments),this.box_name="DataInformationBox"}},dt.fourcc="dinf",dt),ft,RC=(ft=class extends U{constructor(){super(...arguments),this.box_name="SampleTableBox",this.sgpds=[],this.sbgps=[],this.subBoxNames=["sgpd","sbgp"]}},ft.fourcc="stbl",ft),ut,AB=(ut=class extends U{constructor(){super(...arguments),this.box_name="MovieExtendsBox",this.trexs=[],this.subBoxNames=["trex"]}},ut.fourcc="mvex",ut),wt,xC=(wt=class extends U{constructor(){super(...arguments),this.box_name="MovieFragmentBox",this.trafs=[],this.subBoxNames=["traf"]}},wt.fourcc="moof",wt),Dt,UC=(Dt=class extends U{constructor(){super(...arguments),this.box_name="TrackFragmentBox",this.truns=[],this.sgpds=[],this.sbgps=[],this.subBoxNames=["trun","sgpd","sbgp"]}},Dt.fourcc="traf",Dt),pt,So=(pt=class extends U{constructor(){super(...arguments),this.box_name="VTTCueBox"}},pt.fourcc="vttc",pt),yt,Fo=(yt=class extends U{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessBox",this.tfras=[],this.subBoxNames=["tfra"]}},yt.fourcc="mfra",yt),mt,No=(mt=class extends U{constructor(){super(...arguments),this.box_name="AdditionalMetadataContainerBox"}},mt.fourcc="meco",mt),Gt,Ro=(Gt=class extends U{constructor(){super(...arguments),this.box_name="trackhintinformation",this.subBoxNames=["sdp ","rtp "]}},Gt.fourcc="hnti",Gt),St,xo=(St=class extends U{constructor(){super(...arguments),this.box_name="hintstatisticsbox",this.maxrs=[],this.subBoxNames=["maxr"]}},St.fourcc="hinf",St),Ft,Uo=(Ft=class extends U{constructor(){super(...arguments),this.box_name="SubTrackBox"}},Ft.fourcc="strk",Ft),Nt,Mo=(Nt=class extends U{constructor(){super(...arguments),this.box_name="SubTrackDefinitionBox"}},Nt.fourcc="strd",Nt),Rt,bo=(Rt=class extends U{constructor(){super(...arguments),this.box_name="ProtectionSchemeInfoBox"}},Rt.fourcc="sinf",Rt),xt,ko=(xt=class extends U{constructor(){super(...arguments),this.box_name="RestrictedSchemeInfoBox"}},xt.fourcc="rinf",xt),Ut,Yo=(Ut=class extends U{constructor(){super(...arguments),this.box_name="SchemeInformationBox"}},Ut.fourcc="schi",Ut),Mt,_o=(Mt=class extends U{constructor(){super(...arguments),this.box_name="TrackGroupBox"}},Mt.fourcc="trgr",Mt),bt,Lo=(bt=class extends U{constructor(){super(...arguments),this.box_name="UserDataBox",this.kinds=[],this.strks=[],this.subBoxNames=["kind","strk"]}},bt.fourcc="udta",bt),kt,Jo=(kt=class extends U{constructor(){super(...arguments),this.box_name="ItemPropertiesBox",this.ipmas=[],this.subBoxNames=["ipma"]}},kt.fourcc="iprp",kt),Yt,Ho=(Yt=class extends U{constructor(){super(...arguments),this.box_name="ItemPropertyContainerBox",this.hvcCs=[],this.ispes=[],this.claps=[],this.irots=[],this.subBoxNames=["hvcC","ispe","clap","irot"]}},Yt.fourcc="ipco",Yt),_t,vo=(_t=class extends U{constructor(){super(...arguments),this.box_name="GroupsListBox"}},_t.fourcc="grpl",_t),Lt,Ko=(Lt=class extends U{constructor(){super(...arguments),this.box_name="J2KHeaderInfoBox"}},Lt.fourcc="j2kH",Lt),Jt,To=(Jt=class extends U{constructor(){super(...arguments),this.box_name="ExtendedTypeBox",this.tycos=[],this.subBoxNames=["tyco"]}},Jt.fourcc="etyp",Jt),Ht,qo=(Ht=class extends U{constructor(){super(...arguments),this.box_name="ProjectedOmniVideoBox",this.subBoxNames=["prfr"]}},Ht.fourcc="povd",Ht),vt,MC=(vt=class extends w{constructor(){super(...arguments),this.box_name="DataReferenceBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){const i=hA(A,!1,this.size-(A.getPosition()-this.start));if(i.code===CA){const I=i.box;this.entries.push(I)}else return}}write(A){this.version=0,this.flags=0,this.size=4,this.writeHeader(A),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++)this.entries[t].write(A),this.size+=this.entries[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},vt.fourcc="dref",vt),Kt,bC=(Kt=class extends w{constructor(){super(...arguments),this.box_name="ExtendedLanguageBox"}parse(A){this.parseFullHeader(A),this.extended_language=A.readString(this.size-this.hdr_size)}write(A){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(A),A.writeString(this.extended_language)}},Kt.fourcc="elng",Kt),Tt,kC=(Tt=class extends m{constructor(){super(...arguments),this.box_name="FileTypeBox"}parse(A){let t=this.size-this.hdr_size;this.major_brand=A.readString(4),this.minor_version=A.readUint32(),t-=8,this.compatible_brands=[];let e=0;for(;t>=4;)this.compatible_brands[e]=A.readString(4),t-=4,e++}write(A){this.size=8+4*this.compatible_brands.length,this.writeHeader(A),A.writeString(this.major_brand,void 0,4),A.writeUint32(this.minor_version);for(let t=0;t<this.compatible_brands.length;t++)A.writeString(this.compatible_brands[t],void 0,4)}},Tt.fourcc="ftyp",Tt),qt,YC=(qt=class extends w{constructor(){super(...arguments),this.box_name="HandlerBox"}parse(A){if(this.parseFullHeader(A),this.version===0&&(A.readUint32(),this.handler=A.readString(4),A.readUint32Array(3),!this.isEndOfBox(A))){const t=this.start+this.size-A.getPosition();this.name=A.readCString();const e=this.start+this.size-1;A.seek(e),A.readUint8()!==0&&t>1&&(l.info("BoxParser","Warning: hdlr name is not null-terminated, possibly length-prefixed string. Trimming first byte."),this.name=this.name.slice(1))}}write(A){this.size=20+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(A),A.writeUint32(0),A.writeString(this.handler,void 0,4),A.writeUint32Array([0,0,0]),A.writeCString(this.name)}},qt.fourcc="hdlr",qt),Zt,_C=(Zt=class extends m{constructor(){super(...arguments),this.box_name="HEVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8();let t=A.readUint8();this.general_profile_space=t>>6,this.general_tier_flag=(t&32)>>5,this.general_profile_idc=t&31,this.general_profile_compatibility=A.readUint32(),this.general_constraint_indicator=A.readUint8Array(6),this.general_level_idc=A.readUint8(),this.min_spatial_segmentation_idc=A.readUint16()&4095,this.parallelismType=A.readUint8()&3,this.chroma_format_idc=A.readUint8()&3,this.bit_depth_luma_minus8=A.readUint8()&7,this.bit_depth_chroma_minus8=A.readUint8()&7,this.avgFrameRate=A.readUint16(),t=A.readUint8(),this.constantFrameRate=t>>6,this.numTemporalLayers=(t&13)>>3,this.temporalIdNested=(t&4)>>2,this.lengthSizeMinusOne=t&3,this.nalu_arrays=[];const e=A.readUint8();for(let i=0;i<e;i++){const I=[];this.nalu_arrays.push(I),t=A.readUint8(),I.completeness=(t&128)>>7,I.nalu_type=t&63;const s=A.readUint16();for(let n=0;n<s;n++){const B=A.readUint16();I.push({data:A.readUint8Array(B)})}}}write(A){this.size=23;for(let t=0;t<this.nalu_arrays.length;t++){this.size+=3;for(let e=0;e<this.nalu_arrays[t].length;e++)this.size+=2+this.nalu_arrays[t][e].data.length}this.writeHeader(A),A.writeUint8(this.configurationVersion),A.writeUint8((this.general_profile_space<<6)+(this.general_tier_flag<<5)+this.general_profile_idc),A.writeUint32(this.general_profile_compatibility),A.writeUint8Array(this.general_constraint_indicator),A.writeUint8(this.general_level_idc),A.writeUint16(this.min_spatial_segmentation_idc+(15<<24)),A.writeUint8(this.parallelismType+252),A.writeUint8(this.chroma_format_idc+252),A.writeUint8(this.bit_depth_luma_minus8+248),A.writeUint8(this.bit_depth_chroma_minus8+248),A.writeUint16(this.avgFrameRate),A.writeUint8((this.constantFrameRate<<6)+(this.numTemporalLayers<<3)+(this.temporalIdNested<<2)+this.lengthSizeMinusOne),A.writeUint8(this.nalu_arrays.length);for(let t=0;t<this.nalu_arrays.length;t++){A.writeUint8((this.nalu_arrays[t].completeness<<7)+this.nalu_arrays[t].nalu_type),A.writeUint16(this.nalu_arrays[t].length);for(let e=0;e<this.nalu_arrays[t].length;e++)A.writeUint16(this.nalu_arrays[t][e].data.length),A.writeUint8Array(this.nalu_arrays[t][e].data)}}},Zt.fourcc="hvcC",Zt),Vt,LC=(Vt=class extends w{constructor(){super(...arguments),this.box_name="MediaHeaderBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.timescale=A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.timescale=A.readUint32(),this.duration=A.readUint32()),this.parseLanguage(A),A.readUint16()}write(A){const t=this.modification_time>V||this.creation_time>V||this.duration>V||this.version===1;this.version=t?1:0,this.size=20,this.size+=t?12:0,this.flags=0,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.timescale),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.timescale),A.writeUint32(this.duration)),A.writeUint16(this.language),A.writeUint16(0)}},Vt.fourcc="mdhd",Vt),Wt,JC=(Wt=class extends w{constructor(){super(...arguments),this.box_name="MovieExtendsHeaderBox"}parse(A){this.parseFullHeader(A),this.flags&1&&(l.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),this.version===1?this.fragment_duration=A.readUint64():this.fragment_duration=A.readUint32()}write(A){const t=this.fragment_duration>V||this.version===1;this.version=t?1:0,this.size=4,this.size+=t?4:0,this.flags=0,this.writeHeader(A),t?A.writeUint64(this.fragment_duration):A.writeUint32(this.fragment_duration)}},Wt.fourcc="mehd",Wt),zt,Zo=(zt=class extends w{constructor(){super(...arguments),this.box_name="ItemInfoEntry"}parse(A){if(this.parseFullHeader(A),(this.version===0||this.version===1)&&(this.item_ID=A.readUint16(),this.item_protection_index=A.readUint16(),this.item_name=A.readCString(),this.content_type=A.readCString(),this.isEndOfBox(A)||(this.content_encoding=A.readCString())),this.version===1){this.extension_type=A.readString(4),l.warn("BoxParser","Cannot parse extension type"),A.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=A.readUint16():this.version===3&&(this.item_ID=A.readUint32()),this.item_protection_index=A.readUint16(),this.item_type=A.readString(4),this.item_name=A.readCString(),this.item_type==="mime"?(this.content_type=A.readCString(),this.content_encoding=A.readCString()):this.item_type==="uri "&&(this.item_uri_type=A.readCString()))}},zt.fourcc="infe",zt),jt,Vo=(jt=class extends w{constructor(){super(...arguments),this.box_name="ItemInfoBox"}parse(A){this.parseFullHeader(A),this.version===0?this.entry_count=A.readUint16():this.entry_count=A.readUint32(),this.item_infos=[];for(let t=0;t<this.entry_count;t++){const e=hA(A,!1,this.size-(A.getPosition()-this.start));if(e.code===CA){const i=e.box;i.type==="infe"?this.item_infos[t]=i:l.error("BoxParser","Expected 'infe' box, got "+e.box.type,A.isofile)}else return}}},jt.fourcc="iinf",jt),Xt,Wo=(Xt=class extends w{constructor(){super(...arguments),this.box_name="ItemLocationBox"}parse(A){this.parseFullHeader(A);let t;t=A.readUint8(),this.offset_size=t>>4&15,this.length_size=t&15,t=A.readUint8(),this.base_offset_size=t>>4&15,this.version===1||this.version===2?this.index_size=t&15:this.index_size=0,this.items=[];let e=0;if(this.version<2)e=A.readUint16();else if(this.version===2)e=A.readUint32();else throw new Error("version of iloc box not supported");for(let i=0;i<e;i++){let I=0,s=0,n=0;if(this.version<2)I=A.readUint16();else if(this.version===2)I=A.readUint32();else throw new Error("version of iloc box not supported");this.version===1||this.version===2?s=A.readUint16()&15:s=0;const B=A.readUint16();switch(this.base_offset_size){case 0:n=0;break;case 4:n=A.readUint32();break;case 8:n=A.readUint64();break;default:throw new Error("Error reading base offset size")}const C=[],a=A.readUint16();for(let Q=0;Q<a;Q++){let o=0,r=0,E=0;if(this.version===1||this.version===2)switch(this.index_size){case 0:o=0;break;case 4:o=A.readUint32();break;case 8:o=A.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.offset_size){case 0:r=0;break;case 4:r=A.readUint32();break;case 8:r=A.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.length_size){case 0:E=0;break;case 4:E=A.readUint32();break;case 8:E=A.readUint64();break;default:throw new Error("Error reading extent index")}C.push({extent_index:o,extent_length:E,extent_offset:r})}this.items.push({base_offset:n,construction_method:s,item_ID:I,data_reference_index:B,extents:C})}}},Xt.fourcc="iloc",Xt),zo={auxl:"Auxiliary image item",base:"Pre-derived image item base",cdsc:"Item describes referenced item",dimg:"Derived image item",dpnd:"Item coding dependency",eroi:"Region",evir:"EVC slice",exbl:"Scalable image item","fdl ":"File delivery",font:"Font item",iloc:"Item data location",mask:"Region mask",mint:"Data integrity",pred:"Predictively coded item",prem:"Pre-multiplied item",tbas:"HEVC tile track base item",text:"Text item",thmb:"Thumbnail image item"},xA,jo=(xA=class extends w{constructor(){super(...arguments),this.box_name="ItemReferenceBox",this.references=[]}parse(A){for(this.parseFullHeader(A),this.references=[];A.getPosition()<this.start+this.size;){const t=hA(A,!0,this.size-(A.getPosition()-this.start));if(t.code===CA){let e="Unknown item reference";xA.allowed_types.includes(t.type)?e=zo[t.type]:l.warn("BoxParser",`Unknown item reference type: '${t.type}'`);const i=this.version===0?new so(t.type,t.size,e,t.hdr_size,t.start):new no(t.type,t.size,e,t.hdr_size,t.start);i.write===m.prototype.write&&i.type!=="mdat"&&(l.warn("BoxParser",i.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(A)),i.parse(A),this.references.push(i)}else return}}},xA.fourcc="iref",xA.allowed_types=["auxl","base","cdsc","dimg","dpnd","eroi","evir","exbl","fdl ","font","iloc","mask","mint","pred","prem","tbas","text","thmb"],xA),Ot,Xo=(Ot=class extends w{constructor(){super(...arguments),this.box_name="PrimaryItemBox"}parse(A){this.parseFullHeader(A),this.version===0?this.item_id=A.readUint16():this.item_id=A.readUint32()}},Ot.fourcc="pitm",Ot),Pt,Oo=(Pt=class extends w{constructor(){super(...arguments),this.box_name="MetaBox",this.isQT=!1}parse(A){const t=A.getPosition();if(this.size>8){switch(A.readUint32(),A.readString(4)){case"hdlr":case"mhdr":case"keys":case"ilst":case"ctry":case"lang":this.isQT=!0;break}A.seek(t)}this.isQT||this.parseFullHeader(A),U.prototype.parse.call(this,A)}},Pt.fourcc="meta",Pt),$t,HC=($t=class extends w{constructor(){super(...arguments),this.box_name="MovieFragmentHeaderBox"}parse(A){this.parseFullHeader(A),this.sequence_number=A.readUint32()}write(A){this.version=0,this.flags=0,this.size=4,this.writeHeader(A),A.writeUint32(this.sequence_number)}},$t.fourcc="mfhd",$t),Ae,vC=(Ae=class extends w{constructor(){super(...arguments),this.box_name="MovieHeaderBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.timescale=A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.timescale=A.readUint32(),this.duration=A.readUint32()),this.rate=A.readUint32(),this.volume=A.readUint16()>>8,A.readUint16(),A.readUint32Array(2),this.matrix=A.readInt32Array(9),A.readUint32Array(6),this.next_track_id=A.readUint32()}write(A){const t=this.modification_time>V||this.creation_time>V||this.duration>V||this.version===1;this.version=t?1:0,this.size=96,this.size+=t?12:0,this.flags=0,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.timescale),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.timescale),A.writeUint32(this.duration)),A.writeUint32(this.rate),A.writeUint16(this.volume<<8),A.writeUint16(0),A.writeUint32(0),A.writeUint32(0),A.writeInt32Array(this.matrix),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(this.next_track_id)}print(A){super.printHeader(A),A.log(A.indent+"creation_time: "+this.creation_time),A.log(A.indent+"modification_time: "+this.modification_time),A.log(A.indent+"timescale: "+this.timescale),A.log(A.indent+"duration: "+this.duration),A.log(A.indent+"rate: "+this.rate),A.log(A.indent+"volume: "+(this.volume>>8)),A.log(A.indent+"matrix: "+this.matrix.join(", ")),A.log(A.indent+"next_track_id: "+this.next_track_id)}},Ae.fourcc="mvhd",Ae),te,Po=(te=class extends ss{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},te.fourcc="mett",te),ee,$o=(ee=class extends ss{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.parseFooter(A)}},ee.fourcc="metx",ee),ie,AE=(ie=class extends m{constructor(){super(...arguments),this.box_name="AV1CodecConfigurationBox"}parse(A){let t=A.readUint8();if((t>>7&1)!==1){l.error("BoxParser","av1C marker problem",A.isofile);return}if(this.version=t&127,this.version!==1){l.error("BoxParser","av1C version "+this.version+" not supported",A.isofile);return}if(t=A.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=t&31,t=A.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=t&3,t=A.readUint8(),this.reserved_1=t>>5&7,this.reserved_1!==0){l.error("BoxParser","av1C reserved_1 parsing problem",A.isofile);return}if(this.initial_presentation_delay_present=t>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=t&15;else if(this.reserved_2=t&15,this.reserved_2!==0){l.error("BoxParser","av1C reserved_2 parsing problem",A.isofile);return}const e=this.size-this.hdr_size-4;this.configOBUs=A.readUint8Array(e)}},ie.fourcc="av1C",ie),ge,tE=(ge=class extends w{constructor(){super(...arguments),this.box_name="ElementaryStreamDescriptorBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8Array(this.size-this.hdr_size);if("MPEG4DescriptorParser"in Cn){const e=new Cn.MPEG4DescriptorParser;this.esd=e.parseOneDescriptor(new gA(t.buffer,0))}}},ge.fourcc="esds",ge),Ie,eE=(Ie=class extends w{constructor(){super(...arguments),this.box_name="VPCodecConfigurationRecord"}parse(A){if(this.parseFullHeader(A),this.version===1){this.profile=A.readUint8(),this.level=A.readUint8();const t=A.readUint8();this.bitDepth=t>>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=t&1,this.colourPrimaries=A.readUint8(),this.transferCharacteristics=A.readUint8(),this.matrixCoefficients=A.readUint8(),this.codecIntializationDataSize=A.readUint16(),this.codecIntializationData=A.readUint8Array(this.codecIntializationDataSize)}else{this.profile=A.readUint8(),this.level=A.readUint8();let t=A.readUint8();this.bitDepth=t>>4&15,this.colorSpace=t&15,t=A.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=t&1,this.codecIntializationDataSize=A.readUint16(),this.codecIntializationData=A.readUint8Array(this.codecIntializationDataSize)}}},Ie.fourcc="vpcC",Ie),se,iE=(se=class extends w{constructor(){super(...arguments),this.box_name="VvcConfigurationBox"}parse(A){this.parseFullHeader(A);const t={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(s){this.held_bits=s.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(s){this.held_bits=s.readUint16(),this.num_held_bits=16},extract_bits:function(s){const n=this.held_bits>>this.num_held_bits-s&(1<<s)-1;return this.num_held_bits-=s,n}};if(t.stream_read_1_bytes(A),t.extract_bits(5),this.lengthSizeMinusOne=t.extract_bits(2),this.ptl_present_flag=t.extract_bits(1),this.ptl_present_flag){t.stream_read_2_bytes(A),this.ols_idx=t.extract_bits(9),this.num_sublayers=t.extract_bits(3),this.constant_frame_rate=t.extract_bits(2),this.chroma_format_idc=t.extract_bits(2),t.stream_read_1_bytes(A),this.bit_depth_minus8=t.extract_bits(3),t.extract_bits(5);{if(t.stream_read_2_bytes(A),t.extract_bits(2),this.num_bytes_constraint_info=t.extract_bits(6),this.general_profile_idc=t.extract_bits(7),this.general_tier_flag=t.extract_bits(1),this.general_level_idc=A.readUint8(),t.stream_read_1_bytes(A),this.ptl_frame_only_constraint_flag=t.extract_bits(1),this.ptl_multilayer_enabled_flag=t.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(let s=0;s<this.num_bytes_constraint_info-1;s++){const n=t.extract_bits(6);t.stream_read_1_bytes(A);const B=t.extract_bits(2);this.general_constraint_info[s]=n<<2|B}this.general_constraint_info[this.num_bytes_constraint_info-1]=t.extract_bits(6)}else t.extract_bits(6);if(this.num_sublayers>1){t.stream_read_1_bytes(A),this.ptl_sublayer_present_mask=0;for(let s=this.num_sublayers-2;s>=0;--s){const n=t.extract_bits(1);this.ptl_sublayer_present_mask|=n<<s}for(let s=this.num_sublayers;s<=8&&this.num_sublayers>1;++s)t.extract_bits(1);this.sublayer_level_idc=[];for(let s=this.num_sublayers-2;s>=0;--s)this.ptl_sublayer_present_mask&1<<s&&(this.sublayer_level_idc[s]=A.readUint8())}if(this.ptl_num_sub_profiles=A.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(let s=0;s<this.ptl_num_sub_profiles;s++)this.general_sub_profile_idc.push(A.readUint32())}this.max_picture_width=A.readUint16(),this.max_picture_height=A.readUint16(),this.avg_frame_rate=A.readUint16()}const e=12,i=13;this.nalu_arrays=[];const I=A.readUint8();for(let s=0;s<I;s++){const n=[];this.nalu_arrays.push(n),t.stream_read_1_bytes(A),n.completeness=t.extract_bits(1),t.extract_bits(2),n.nalu_type=t.extract_bits(5);let B=1;n.nalu_type!==i&&n.nalu_type!==e&&(B=A.readUint16());for(let C=0;C<B;C++){const a=A.readUint16();n.push({data:A.readUint8Array(a),length:a})}}}},se.fourcc="vvcC",se),ne,gE=(ne=class extends m{constructor(){super(...arguments),this.box_name="ColourInformationBox"}parse(A){if(this.colour_type=A.readString(4),this.colour_type==="nclx"){this.colour_primaries=A.readUint16(),this.transfer_characteristics=A.readUint16(),this.matrix_coefficients=A.readUint16();const t=A.readUint8();this.full_range_flag=t>>7}else this.colour_type==="rICC"?this.ICC_profile=A.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=A.readUint8Array(this.size-4))}},ne.fourcc="colr",ne);function PA(g,A){let t=Number(g).toString(16);for(A=typeof A=="undefined"?2:A;t.length<A;)t="0"+t;return t}var on=class extends H{getCodec(){const g=super.getCodec();return this.avcC?`${g}.${PA(this.avcC.AVCProfileIndication)}${PA(this.avcC.profile_compatibility)}${PA(this.avcC.AVCLevelIndication)}`:g}},Be,IE=(Be=class extends on{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},Be.fourcc="avc1",Be),Ce,sE=(Ce=class extends on{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},Ce.fourcc="avc2",Ce),ae,nE=(ae=class extends on{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},ae.fourcc="avc3",ae),Qe,BE=(Qe=class extends on{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},Qe.fourcc="avc4",Qe),re,CE=(re=class extends H{constructor(){super(...arguments),this.box_name="AV1SampleEntry"}getCodec(){const A=super.getCodec(),t=this.av1C.seq_level_idx_0,e=t<10?"0"+t:t;let i;return this.av1C.seq_profile===2&&this.av1C.high_bitdepth===1?i=this.av1C.twelve_bit===1?"12":"10":this.av1C.seq_profile<=2&&(i=this.av1C.high_bitdepth===1?"10":"08"),A+"."+this.av1C.seq_profile+"."+e+(this.av1C.seq_tier_0?"H":"M")+"."+i}},re.fourcc="av01",re),oe,aE=(oe=class extends H{},oe.fourcc="dav1",oe),En=class extends H{getCodec(){let g=super.getCodec();if(this.hvcC){switch(g+=".",this.hvcC.general_profile_space){case 0:g+="";break;case 1:g+="A";break;case 2:g+="B";break;case 3:g+="C";break}g+=this.hvcC.general_profile_idc,g+=".";let A=this.hvcC.general_profile_compatibility,t=0;for(let I=0;I<32&&(t|=A&1,I!==31);I++)t<<=1,A>>=1;g+=PA(t,0),g+=".",this.hvcC.general_tier_flag===0?g+="L":g+="H",g+=this.hvcC.general_level_idc;let e=!1,i="";for(let I=5;I>=0;I--)(this.hvcC.general_constraint_indicator[I]||e)&&(i="."+PA(this.hvcC.general_constraint_indicator[I],0)+i,e=!0);g+=i}return g}},Ee,QE=(Ee=class extends En{constructor(){super(...arguments),this.box_name="HEVCSampleEntry"}},Ee.fourcc="hvc1",Ee),he,rE=(he=class extends En{},he.fourcc="hvc2",he),ce,oE=(ce=class extends En{constructor(){super(...arguments),this.box_name="HEVCSampleEntry",this.colrs=[],this.subBoxNames=["colr"]}},ce.fourcc="hev1",ce),le,EE=(le=class extends En{},le.fourcc="hev2",le),de,hE=(de=class extends H{constructor(){super(...arguments),this.box_name="HEVCTileSampleSampleEntry"}},de.fourcc="hvt1",de),fe,cE=(fe=class extends H{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},fe.fourcc="lhe1",fe),ue,lE=(ue=class extends H{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},ue.fourcc="lhv1",ue),we,dE=(we=class extends H{},we.fourcc="dvh1",we),De,fE=(De=class extends H{},De.fourcc="dvhe",De),KC=class extends H{getCodec(){let g=super.getCodec();if(this.vvcC){g+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?g+=".H":g+=".L",g+=this.vvcC.general_level_idc;let A="";if(this.vvcC.general_constraint_info){const t=[];let e=0;e|=this.vvcC.ptl_frame_only_constraint_flag<<7,e|=this.vvcC.ptl_multilayer_enabled_flag<<6;let i;for(let I=0;I<this.vvcC.general_constraint_info.length;++I)e|=this.vvcC.general_constraint_info[I]>>2&63,t.push(e),e&&(i=I),e=this.vvcC.general_constraint_info[I]>>2&3;if(i===void 0)A=".CA";else{A=".C";const I="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let s=0,n=0;for(let B=0;B<=i;++B)for(s=s<<8|t[B],n+=8;n>=5;){const C=s>>n-5&31;A+=I[C],n-=5,s&=(1<<n)-1}n&&(s<<=5-n,A+=I[s&31])}}g+=A}return g}},pe,uE=(pe=class extends KC{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},pe.fourcc="vvc1",pe),ye,wE=(ye=class extends KC{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},ye.fourcc="vvi1",ye),me,DE=(me=class extends H{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},me.fourcc="vvs1",me),Ge,pE=(Ge=class extends H{constructor(){super(...arguments),this.box_name="VvcNonVCLSampleEntry"}},Ge.fourcc="vvcN",Ge),TC=class extends H{getCodec(){const g=super.getCodec();let A=this.vpcC.level;A===0&&(A="00");let t=this.vpcC.bitDepth;return t===8&&(t="08"),`${g}.0${this.vpcC.profile}.${A}.${t}`}},Se,yE=(Se=class extends TC{},Se.fourcc="vp08",Se),Fe,mE=(Fe=class extends TC{},Fe.fourcc="vp09",Fe),Ne,GE=(Ne=class extends H{},Ne.fourcc="avs3",Ne),Re,SE=(Re=class extends H{constructor(){super(...arguments),this.box_name="J2KSampleEntry"}},Re.fourcc="j2ki",Re),xe,FE=(xe=class extends H{},xe.fourcc="mjp2",xe),Ue,NE=(Ue=class extends H{},Ue.fourcc="mjpg",Ue),Me,RE=(Me=class extends H{constructor(){super(...arguments),this.box_name="UncompressedVideoSampleEntry"}},Me.fourcc="uncv",Me),be,xE=(be=class extends H{constructor(){super(...arguments),this.box_name="MP4VisualSampleEntry"}},be.fourcc="mp4v",be),ke,UE=(ke=class extends sA{constructor(){super(...arguments),this.box_name="MP4AudioSampleEntry"}getCodec(){const A=super.getCodec();if(this.esds&&this.esds.esd){const t=this.esds.esd.getOTI(),e=this.esds.esd.getAudioConfig();return A+"."+PA(t)+(e?"."+e:"")}else return A}},ke.fourcc="mp4a",ke),Ye,ME=(Ye=class extends sA{},Ye.fourcc="m4ae",Ye),_e,bE=(_e=class extends sA{},_e.fourcc="ac-3",_e),Le,kE=(Le=class extends sA{},Le.fourcc="ac-4",Le),Je,YE=(Je=class extends sA{},Je.fourcc="ec-3",Je),He,_E=(He=class extends sA{},He.fourcc="Opus",He),ve,LE=(ve=class extends sA{},ve.fourcc="mha1",ve),Ke,JE=(Ke=class extends sA{},Ke.fourcc="mha2",Ke),Te,HE=(Te=class extends sA{},Te.fourcc="mhm1",Te),qe,vE=(qe=class extends sA{},qe.fourcc="mhm2",qe),Ze,KE=(Ze=class extends sA{},Ze.fourcc="fLaC",Ze),Ve,TE=(Ve=class extends H{},Ve.fourcc="encv",Ve),We,qE=(We=class extends sA{},We.fourcc="enca",We),ze,ZE=(ze=class extends TA{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ze.fourcc="encu",ze),je,VE=(je=class extends CB{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},je.fourcc="encs",je),Xe,WE=(Xe=class extends CB{},Xe.fourcc="mp4s",Xe),Oe,zE=(Oe=class extends lo{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Oe.fourcc="enct",Oe),Pe,jE=(Pe=class extends ss{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Pe.fourcc="encm",Pe),$e,XE=($e=class extends H{constructor(){super(...arguments),this.box_name="RestrictedVideoSampleEntry"}},$e.fourcc="resv",$e),Ai,OE=(Ai=class extends TA{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},Ai.fourcc="sbtt",Ai),ti,qC=(ti=class extends TA{parse(A){this.parseHeader(A),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.auxiliary_mime_types=A.readCString(),this.parseFooter(A)}write(A){this.writeHeader(A),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,A.writeCString(this.namespace),A.writeCString(this.schema_location),A.writeCString(this.auxiliary_mime_types),this.writeFooter(A)}},ti.fourcc="stpp",ti),ei,PE=(ei=class extends TA{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}getCodec(){const A=super.getCodec();return this.mime_format?A+"."+this.mime_format:A}},ei.fourcc="stxt",ei),ii,$E=(ii=class extends TA{parse(A){this.parseHeader(A),this.displayFlags=A.readUint32(),this.horizontal_justification=A.readInt8(),this.vertical_justification=A.readInt8(),this.bg_color_rgba=A.readUint8Array(4),this.box_record=A.readInt16Array(4),this.style_record=A.readUint8Array(12),this.parseFooter(A)}},ii.fourcc="tx3g",ii),gi,Ah=(gi=class extends ss{parse(A){this.parseHeader(A),this.parseFooter(A)}},gi.fourcc="wvtt",gi),Ii,th=(Ii=class extends w{constructor(){super(...arguments),this.box_name="SampleToGroupBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readString(4),this.version===1?this.grouping_type_parameter=A.readUint32():this.grouping_type_parameter=0,this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++)this.entries.push({sample_count:A.readInt32(),group_description_index:A.readInt32()})}write(A){this.grouping_type_parameter?this.version=1:this.version=0,this.flags=0,this.size=8+8*this.entries.length+(this.version===1?4:0),this.writeHeader(A),A.writeString(this.grouping_type,void 0,4),this.version===1&&A.writeUint32(this.grouping_type_parameter),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const e=this.entries[t];A.writeInt32(e.sample_count),A.writeInt32(e.group_description_index)}}},Ii.fourcc="sbgp",Ii),si,eh=(si=class extends w{constructor(){super(...arguments),this.box_name="SampleDependencyTypeBox"}parse(A){this.parseFullHeader(A);const t=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(let e=0;e<t;e++){const i=A.readUint8();this.is_leading[e]=i>>6,this.sample_depends_on[e]=i>>4&3,this.sample_is_depended_on[e]=i>>2&3,this.sample_has_redundancy[e]=i&3}}},si.fourcc="sdtp",si),ni,ih=(ni=class extends w{constructor(){super(...arguments),this.box_name="SampleGroupDescriptionBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readString(4),l.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=A.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=A.readUint32()),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){let i;this.grouping_type in IA.sampleGroupEntry?i=new IA.sampleGroupEntry[this.grouping_type](this.grouping_type):i=new T(this.grouping_type),this.entries.push(i),this.version===1?this.default_length===0?i.description_length=A.readUint32():i.description_length=this.default_length:i.description_length=this.default_length,i.write===T.prototype.write&&(l.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),i.data=A.readUint8Array(i.description_length),A.seek(A.getPosition()-i.description_length)),i.parse(A)}}write(A){this.flags=0,this.size=12;for(let t=0;t<this.entries.length;t++){const e=this.entries[t];this.version===1&&(this.default_length===0&&(this.size+=4),this.size+=e.data.length)}this.writeHeader(A),A.writeString(this.grouping_type,void 0,4),this.version===1&&A.writeUint32(this.default_length),this.version>=2&&A.writeUint32(this.default_sample_description_index),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const e=this.entries[t];this.version===1&&this.default_length===0&&A.writeUint32(e.description_length),e.write(A)}}},ni.fourcc="sgpd",ni),Bi,gh=(Bi=class extends w{constructor(){super(...arguments),this.box_name="CompressedSegmentIndexBox"}parse(A){this.parseFullHeader(A),this.reference_ID=A.readUint32(),this.timescale=A.readUint32(),this.version===0?(this.earliest_presentation_time=A.readUint32(),this.first_offset=A.readUint32()):(this.earliest_presentation_time=A.readUint64(),this.first_offset=A.readUint64()),A.readUint16(),this.references=[];const t=A.readUint16();for(let e=0;e<t;e++){const i=A.readUint32(),I=A.readUint32(),s=A.readUint32();this.references.push({reference_type:i>>31&1,referenced_size:i&2147483647,subsegment_duration:I,starts_with_SAP:s>>31&1,SAP_type:s>>28&7,SAP_delta_time:s&268435455})}}write(A){const t=this.earliest_presentation_time>V||this.first_offset>V||this.version===1;this.version=t?1:0,this.size=12+12*this.references.length,this.size+=t?16:8,this.flags=0,this.writeHeader(A),A.writeUint32(this.reference_ID),A.writeUint32(this.timescale),t?(A.writeUint64(this.earliest_presentation_time),A.writeUint64(this.first_offset)):(A.writeUint32(this.earliest_presentation_time),A.writeUint32(this.first_offset)),A.writeUint16(0),A.writeUint16(this.references.length);for(let e=0;e<this.references.length;e++){const i=this.references[e];A.writeUint32(i.reference_type<<31|i.referenced_size),A.writeUint32(i.subsegment_duration),A.writeUint32(i.starts_with_SAP<<31|i.SAP_type<<28|i.SAP_delta_time)}}},Bi.fourcc="sidx",Bi),Ci,ZC=(Ci=class extends w{constructor(){super(...arguments),this.box_name="SoundMediaHeaderBox"}parse(A){this.parseFullHeader(A),this.balance=A.readUint16(),A.readUint16()}write(A){this.version=0,this.size=4,this.writeHeader(A),A.writeUint16(this.balance),A.writeUint16(0)}},Ci.fourcc="smhd",Ci),ai,VC=(ai=class extends w{constructor(){super(...arguments),this.box_name="ChunkOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.chunk_offsets=[],this.version===0)for(let e=0;e<t;e++)this.chunk_offsets.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(A),A.writeUint32(this.chunk_offsets.length),A.writeUint32Array(this.chunk_offsets)}unpack(A){for(let t=0;t<this.chunk_offsets.length;t++)A[t].offset=this.chunk_offsets[t]}},ai.fourcc="stco",ai),Qi,WC=(Qi=class extends w{constructor(){super(...arguments),this.box_name="SubtitleMediaHeaderBox"}},Qi.fourcc="sthd",Qi),ri,zC=(ri=class extends w{constructor(){super(...arguments),this.box_name="SampleToChunkBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],this.version===0)for(let e=0;e<t;e++)this.first_chunk.push(A.readUint32()),this.samples_per_chunk.push(A.readUint32()),this.sample_description_index.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(A),A.writeUint32(this.first_chunk.length);for(let t=0;t<this.first_chunk.length;t++)A.writeUint32(this.first_chunk[t]),A.writeUint32(this.samples_per_chunk[t]),A.writeUint32(this.sample_description_index[t])}unpack(A){let t=0,e=0;for(let i=0;i<this.first_chunk.length;i++)for(let I=0;I<(i+1<this.first_chunk.length?this.first_chunk[i+1]:1/0);I++){e++;for(let s=0;s<this.samples_per_chunk[i];s++){if(A[t])A[t].description_index=this.sample_description_index[i],A[t].chunk_index=e;else return;t++}}}},ri.fourcc="stsc",ri),oi,jC=(oi=class extends w{constructor(){super(...arguments),this.box_name="SampleDescriptionBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=1;e<=t;e++){const i=hA(A,!0,this.size-(A.getPosition()-this.start));if(i.code===CA){let I;i.type in IA.sampleEntry?(I=new IA.sampleEntry[i.type](i.size),I.hdr_size=i.hdr_size,I.start=i.start):(l.warn("BoxParser",`Unknown sample entry type: '${i.type}'`),I=new wA(i.size,i.hdr_size,i.start),I.type=i.type),I.write===wA.prototype.write&&(l.info("BoxParser","SampleEntry "+I.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),I.parseDataAndRewind(A)),I.parse(A),this.entries.push(I)}else return}}write(A){this.version=0,this.flags=0,this.size=0,this.writeHeader(A),A.writeUint32(this.entries.length),this.size+=4;for(let t=0;t<this.entries.length;t++)this.entries[t].write(A),this.size+=this.entries[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},oi.fourcc="stsd",oi),Ei,XC=(Ei=class extends w{constructor(){super(...arguments),this.box_name="SampleSizeBox"}parse(A){if(this.parseFullHeader(A),this.sample_sizes=[],this.version===0){this.sample_size=A.readUint32(),this.sample_count=A.readUint32();for(let t=0;t<this.sample_count;t++)this.sample_size===0?this.sample_sizes.push(A.readUint32()):this.sample_sizes[t]=this.sample_size}}write(A){let t=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0){let e=0;for(;e+1<this.sample_sizes.length;)if(this.sample_sizes[e+1]!==this.sample_sizes[0]){t=!1;break}else e++}else t=!1;this.size=8,t||(this.size+=4*this.sample_sizes.length),this.writeHeader(A),t?A.writeUint32(this.sample_sizes[0]):A.writeUint32(0),A.writeUint32(this.sample_sizes.length),t||A.writeUint32Array(this.sample_sizes)}unpack(A){for(let t=0;t<this.sample_sizes.length;t++)A[t].size=this.sample_sizes[t]}},Ei.fourcc="stsz",Ei),hi,OC=(hi=class extends w{constructor(){super(...arguments),this.box_name="TimeToSampleBox",this.sample_counts=[],this.sample_deltas=[]}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.sample_counts.length=0,this.sample_deltas.length=0,this.version===0)for(let e=0;e<t;e++){this.sample_counts.push(A.readUint32());let i=A.readInt32();i<0&&(l.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),i=1),this.sample_deltas.push(i)}}write(A){this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(A),A.writeUint32(this.sample_counts.length);for(let t=0;t<this.sample_counts.length;t++)A.writeUint32(this.sample_counts[t]),A.writeUint32(this.sample_deltas[t])}unpack(A){let t=0;for(let e=0;e<this.sample_counts.length;e++)for(let i=0;i<this.sample_counts[e];i++)t===0?A[t].dts=0:A[t].dts=A[t-1].dts+this.sample_deltas[e],t++}},hi.fourcc="stts",hi),ci,PC=(ci=class extends w{constructor(){super(...arguments),this.box_name="TrackFragmentBaseMediaDecodeTimeBox"}parse(A){this.parseFullHeader(A),this.version===1?this.baseMediaDecodeTime=A.readUint64():this.baseMediaDecodeTime=A.readUint32()}write(A){const t=this.baseMediaDecodeTime>V||this.version===1;this.version=t?1:0,this.size=4,this.size+=t?4:0,this.flags=0,this.writeHeader(A),t?A.writeUint64(this.baseMediaDecodeTime):A.writeUint32(this.baseMediaDecodeTime)}},ci.fourcc="tfdt",ci),li,$C=(li=class extends w{constructor(){super(...arguments),this.box_name="TrackFragmentHeaderBox"}parse(A){this.parseFullHeader(A);let t=0;this.track_id=A.readUint32(),this.size-this.hdr_size>t&&this.flags&Ws?(this.base_data_offset=A.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&zs?(this.default_sample_description_index=A.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&js?(this.default_sample_duration=A.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&Xs?(this.default_sample_size=A.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&Os?(this.default_sample_flags=A.readUint32(),t+=4):this.default_sample_flags=0}write(A){this.version=0,this.size=4,this.flags&Ws&&(this.size+=8),this.flags&zs&&(this.size+=4),this.flags&js&&(this.size+=4),this.flags&Xs&&(this.size+=4),this.flags&Os&&(this.size+=4),this.writeHeader(A),A.writeUint32(this.track_id),this.flags&Ws&&A.writeUint64(this.base_data_offset),this.flags&zs&&A.writeUint32(this.default_sample_description_index),this.flags&js&&A.writeUint32(this.default_sample_duration),this.flags&Xs&&A.writeUint32(this.default_sample_size),this.flags&Os&&A.writeUint32(this.default_sample_flags)}},li.fourcc="tfhd",li),di,Aa=(di=class extends w{constructor(){super(...arguments),this.box_name="TrackHeaderBox",this.layer=0,this.alternate_group=0}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.track_id=A.readUint32(),A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.track_id=A.readUint32(),A.readUint32(),this.duration=A.readUint32()),A.readUint32Array(2),this.layer=A.readInt16(),this.alternate_group=A.readInt16(),this.volume=A.readInt16()>>8,A.readUint16(),this.matrix=A.readInt32Array(9),this.width=A.readUint32(),this.height=A.readUint32()}write(A){var e;const t=this.modification_time>V||this.creation_time>V||this.duration>V||this.version===1;this.version=t?1:0,this.size=80,this.size+=t?12:0,this.flags=(e=this.flags)!=null?e:3,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.track_id),A.writeUint32(0),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.track_id),A.writeUint32(0),A.writeUint32(this.duration)),A.writeUint32Array([0,0]),A.writeInt16(this.layer),A.writeInt16(this.alternate_group),A.writeInt16(this.volume<<8),A.writeInt16(0),A.writeInt32Array(this.matrix),A.writeUint32(this.width),A.writeUint32(this.height)}print(A){super.printHeader(A),A.log(A.indent+"creation_time: "+this.creation_time),A.log(A.indent+"modification_time: "+this.modification_time),A.log(A.indent+"track_id: "+this.track_id),A.log(A.indent+"duration: "+this.duration),A.log(A.indent+"volume: "+(this.volume>>8)),A.log(A.indent+"matrix: "+this.matrix.join(", ")),A.log(A.indent+"layer: "+this.layer),A.log(A.indent+"alternate_group: "+this.alternate_group),A.log(A.indent+"width: "+this.width),A.log(A.indent+"height: "+this.height)}},di.fourcc="tkhd",di),fi,tB=(fi=class extends w{constructor(){super(...arguments),this.box_name="TrackExtendsBox"}parse(A){this.parseFullHeader(A),this.track_id=A.readUint32(),this.default_sample_description_index=A.readUint32(),this.default_sample_duration=A.readUint32(),this.default_sample_size=A.readUint32(),this.default_sample_flags=A.readUint32()}write(A){this.version=0,this.flags=0,this.size=20,this.writeHeader(A),A.writeUint32(this.track_id),A.writeUint32(this.default_sample_description_index),A.writeUint32(this.default_sample_duration),A.writeUint32(this.default_sample_size),A.writeUint32(this.default_sample_flags)}},fi.fourcc="trex",fi),ui,ta=(ui=class extends w{constructor(){super(...arguments),this.box_name="TrackRunBox",this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[]}parse(A){this.parseFullHeader(A);let t=0;if(this.sample_count=A.readUint32(),t+=4,this.size-this.hdr_size>t&&this.flags&ms?(this.data_offset=A.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&Ps?(this.first_sample_flags=A.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(let e=0;e<this.sample_count;e++)this.flags&Gs&&(this.sample_duration[e]=A.readUint32()),this.flags&Ss&&(this.sample_size[e]=A.readUint32()),this.flags&Fs&&(this.sample_flags[e]=A.readUint32()),this.flags&Ns&&(this.version===0?this.sample_composition_time_offset[e]=A.readUint32():this.sample_composition_time_offset[e]=A.readInt32())}write(A){this.size=4,this.flags&ms&&(this.size+=4),this.flags&Ps&&(this.size+=4),this.flags&Gs&&(this.size+=4*this.sample_duration.length),this.flags&Ss&&(this.size+=4*this.sample_size.length),this.flags&Fs&&(this.size+=4*this.sample_flags.length),this.flags&Ns&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(A),A.writeUint32(this.sample_count),this.flags&ms&&(this.data_offset_position=A.getPosition(),A.writeInt32(this.data_offset)),this.flags&Ps&&A.writeUint32(this.first_sample_flags);for(let t=0;t<this.sample_count;t++)this.flags&Gs&&A.writeUint32(this.sample_duration[t]),this.flags&Ss&&A.writeUint32(this.sample_size[t]),this.flags&Fs&&A.writeUint32(this.sample_flags[t]),this.flags&Ns&&(this.version===0?A.writeUint32(this.sample_composition_time_offset[t]):A.writeInt32(this.sample_composition_time_offset[t]))}},ui.fourcc="trun",ui),wi,ea=(wi=class extends w{constructor(){super(...arguments),this.box_name="DataEntryUrlBox"}parse(A){this.parseFullHeader(A),this.flags!==1&&(this.location=A.readCString())}write(A){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(A),this.location&&A.writeCString(this.location)}},wi.fourcc="url ",wi),Di,ia=(Di=class extends w{constructor(){super(...arguments),this.box_name="VideoMediaHeaderBox"}parse(A){this.parseFullHeader(A),this.graphicsmode=A.readUint16(),this.opcolor=A.readUint16Array(3)}write(A){this.version=0,this.size=8,this.writeHeader(A),A.writeUint16(this.graphicsmode),A.writeUint16Array(this.opcolor)}},Di.fourcc="vmhd",Di),Jn=class{constructor(g,A,t){this.grouping_type=g,this.grouping_type_parameter=A,this.sbgp=t,this.last_sample_in_run=-1,this.entry_index=-1}},Ih=class GA{constructor(A,t=!0){this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.moovStartSent=!1,this.readySent=!1,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.sidxSent=!1,this.items=[],this.entity_groups=[],this.itemsDataSize=0,this.lastMoofIndex=0,this.samplesDataSize=0,this.lastBoxStartPosition=0,this.nextParsePosition=0,this.discardMdatData=!0,this.discardMdatData=t,A?(this.stream=A,this.parse()):this.stream=new An,this.stream.isofile=this}setSegmentOptions(A,t,e){var C,a,Q;const{sizePerSegment:i=Number.MAX_SAFE_INTEGER,rapAlignement:I=!0}=e;let s=(a=(C=e.nbSamples)!=null?C:e.nbSamplesPerFragment)!=null?a:1e3;const n=(Q=e.nbSamplesPerFragment)!=null?Q:s;if(s<=0||n<=0||i<=0){l.error("ISOFile",`Invalid segment options: nbSamples=${s}, nbSamplesPerFragment=${n}, sizePerSegment=${i}`);return}if(s<n&&(l.warn("ISOFile",`nbSamples (${s}) is less than nbSamplesPerFragment (${n}), setting nbSamples to nbSamplesPerFragment`),s=n),this.fragmentedTracks.some(o=>o.nb_samples!==s)){l.error("ISOFile",`Cannot set segment options for track ${A}: nbSamples (${s}) does not match existing tracks`);return}const B=this.getTrackById(A);if(B){const o={id:A,user:t,trak:B,segmentStream:void 0,nb_samples:s,nb_samples_per_fragment:n,size_per_segment:i,rapAlignement:I,state:{lastFragmentSampleNumber:0,lastSegmentSampleNumber:0,accumulatedSize:0}};this.fragmentedTracks.push(o),B.nextSample=0}this.discardMdatData&&l.warn("ISOFile","Segmentation options set but discardMdatData is true, samples will not be segmented")}unsetSegmentOptions(A){let t=-1;for(let e=0;e<this.fragmentedTracks.length;e++)this.fragmentedTracks[e].id===A&&(t=e);t>-1&&this.fragmentedTracks.splice(t,1)}setExtractionOptions(A,t,{nbSamples:e=1e3}={}){const i=this.getTrackById(A);i&&(this.extractedTracks.push({id:A,user:t,trak:i,nb_samples:e,samples:[]}),i.nextSample=0),this.discardMdatData&&l.warn("ISOFile","Extraction options set but discardMdatData is true, samples will not be extracted")}unsetExtractionOptions(A){let t=-1;for(let e=0;e<this.extractedTracks.length;e++)this.extractedTracks[e].id===A&&(t=e);t>-1&&this.extractedTracks.splice(t,1)}parse(){if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else{this.saveParsePosition&&this.saveParsePosition();const t=hA(this.stream,!1);if(t.code===mA)if(this.processIncompleteBox){if(this.processIncompleteBox(t))continue;return}else return;else if(t.code===CA){const e=t.box;if(this.boxes.push(e),e.type==="uuid")this[e.uuid]!==void 0&&l.warn("ISOFile","Duplicate Box of uuid: "+e.uuid+", overriding previous occurrence"),this[e.uuid]=e;else switch(e.type){case"mdat":this.mdats.push(e),this.transferMdatData(e);break;case"moof":this.moofs.push(e);break;case"free":case"skip":break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[e.type]!==void 0?Array.isArray(this[e.type+"s"])?(l.info("ISOFile",`Found multiple boxes of type ${e.type} in ISOFile, adding to array`),this[e.type+"s"].push(e)):(l.warn("ISOFile",`Found multiple boxes of type ${e.type} but no array exists. Creating array dynamically.`),this[e.type+"s"]=[this[e.type],e]):(this[e.type]=e,Array.isArray(this[e.type+"s"])&&this[e.type+"s"].push(e));break}this.updateUsedBytes&&this.updateUsedBytes(e,t)}else if(t.code===wC){l.error("ISOFile",`Invalid data found while parsing box of type '${t.type}' at position ${t.start}. Aborting parsing.`,this);break}}}checkBuffer(A){if(!A)throw new Error("Buffer must be defined and non empty");return A.byteLength===0?(l.warn("ISOFile","Ignoring empty buffer (fileStart: "+A.fileStart+")"),this.stream.logBufferLevel(),!1):(l.info("ISOFile","Processing buffer (fileStart: "+A.fileStart+")"),A.usedBytes=0,this.stream.insertBuffer(A),this.stream.logBufferLevel(),this.stream.initialized()?!0:(l.warn("ISOFile","Not ready to start parsing"),!1))}appendBuffer(A,t){let e;if(this.checkBuffer(A))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(e=this.nextSeekPosition,this.nextSeekPosition=void 0):e=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(e=this.stream.getEndFilePositionAfter(e))):this.nextParsePosition?e=this.nextParsePosition:e=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(l.info("ISOFile","Done processing buffer (fileStart: "+A.fileStart+") - next buffer to fetch should have a fileStart position of "+e),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),l.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),e}getFragmentDuration(){const A=this.getBox("mvex");if(!A)return;if(A.mehd)return{num:A.mehd.fragment_duration,den:this.moov.mvhd.timescale};const t=this.getBoxes("trak",!1);let e={num:0,den:1};for(const i of t){const I=i.samples_duration,s=i.mdia.mdhd.timescale;I&&s&&I/s>e.num/e.den&&(e={num:I,den:s})}return e}getInfo(){if(!this.moov)return{hasMoov:!1,mime:""};const A=new Date("1904-01-01T00:00:00Z").getTime(),t=this.getBox("mvex")!==void 0,e={hasMoov:!0,duration:this.moov.mvhd.duration,timescale:this.moov.mvhd.timescale,isFragmented:t,fragment_duration:this.getFragmentDuration(),isProgressive:this.isProgressive,hasIOD:this.moov.iods!==void 0,brands:[this.ftyp.major_brand].concat(this.ftyp.compatible_brands),created:new Date(A+this.moov.mvhd.creation_time*1e3),modified:new Date(A+this.moov.mvhd.modification_time*1e3),tracks:[],audioTracks:[],videoTracks:[],subtitleTracks:[],metadataTracks:[],hintTracks:[],otherTracks:[],mime:""};for(let i=0;i<this.moov.traks.length;i++){const I=this.moov.traks[i],s=I.mdia.minf.stbl.stsd.entries[0],n=I.samples_size,B=I.mdia.mdhd.timescale,C=I.samples_duration,a=n*8*B/C,Q={samples_duration:C,bitrate:a,size:n,timescale:B,alternate_group:I.tkhd.alternate_group,codec:s.getCodec(),created:new Date(A+I.tkhd.creation_time*1e3),cts_shift:I.mdia.minf.stbl.cslg,duration:I.mdia.mdhd.duration,id:I.tkhd.track_id,kind:I.udta&&I.udta.kinds.length?I.udta.kinds[0]:{schemeURI:"",value:""},language:I.mdia.elng?I.mdia.elng.extended_language:I.mdia.mdhd.languageString,layer:I.tkhd.layer,matrix:I.tkhd.matrix,modified:new Date(A+I.tkhd.modification_time*1e3),movie_duration:I.tkhd.duration,movie_timescale:e.timescale,name:I.mdia.hdlr.name,nb_samples:I.samples.length,references:[],track_height:I.tkhd.height/65536,track_width:I.tkhd.width/65536,volume:I.tkhd.volume};if(e.tracks.push(Q),I.tref)for(let o=0;o<I.tref.references.length;o++)Q.references.push({type:I.tref.references[o].type,track_ids:I.tref.references[o].track_ids});I.edts!==void 0&&I.edts.elst!==void 0&&(Q.edits=I.edts.elst.entries),s instanceof sA?(Q.type="audio",e.audioTracks.push(Q),Q.audio={sample_rate:s.getSampleRate(),channel_count:s.getChannelCount(),sample_size:s.getSampleSize()}):s instanceof H?(Q.type="video",e.videoTracks.push(Q),Q.video={width:s.getWidth(),height:s.getHeight()}):s instanceof TA?(Q.type="subtitles",e.subtitleTracks.push(Q)):s instanceof kB?(Q.type="metadata",e.hintTracks.push(Q)):s instanceof ss?(Q.type="metadata",e.metadataTracks.push(Q)):(Q.type="metadata",e.otherTracks.push(Q))}e.videoTracks&&e.videoTracks.length>0?e.mime+='video/mp4; codecs="':e.audioTracks&&e.audioTracks.length>0?e.mime+='audio/mp4; codecs="':e.mime+='application/mp4; codecs="';for(let i=0;i<e.tracks.length;i++)i!==0&&(e.mime+=","),e.mime+=e.tracks[i].codec;return e.mime+='"; profiles="',e.mime+=this.ftyp.compatible_brands.join(),e.mime+='"',e}setNextSeekPositionFromSample(A){A&&(this.nextSeekPosition?this.nextSeekPosition=Math.min(A.offset+A.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=A.offset+A.alreadyRead)}processSamples(A){if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&this.onSegment!==void 0){const t=new Set;for(;t.size<this.fragmentedTracks.length&&this.fragmentedTracks.some(e=>e.trak.nextSample<e.trak.samples.length)&&this.sampleProcessingStarted;)for(const e of this.fragmentedTracks){const i=e.trak;if(!t.has(e.id)){const I=i.nextSample<i.samples.length?this.getSample(i,i.nextSample):void 0;if(!I){this.setNextSeekPositionFromSample(i.samples[i.nextSample]),t.add(e.id);continue}e.state.accumulatedSize+=I.size;const s=i.nextSample+1,n=s-e.state.lastFragmentSampleNumber>e.nb_samples_per_fragment,B=s-e.state.lastSegmentSampleNumber>e.nb_samples;let C=n||s%e.nb_samples_per_fragment===0,a=B||s%e.nb_samples===0,Q=e.state.accumulatedSize>=e.size_per_segment;const o=!e.rapAlignement||I.is_sync,r=A||i.nextSample+1>=i.samples.length;if(r&&!o&&l.warn("ISOFile","Flushing track #"+e.id+" at sample #"+i.nextSample+" which is not a RAP, this may lead to playback issues"),C=C&&o,a=a&&o,Q=Q&&o,C||Q||r){n?l.warn("ISOFile","Fragment on track #"+e.id+" is overdue, creating it with samples ["+e.state.lastFragmentSampleNumber+", "+i.nextSample+"]"):l.debug("ISOFile","Creating media fragment on track #"+e.id+" for samples ["+e.state.lastFragmentSampleNumber+", "+i.nextSample+"]");const E=this.createFragment(e.id,e.state.lastFragmentSampleNumber,i.nextSample,e.segmentStream);if(E)e.segmentStream=E,e.state.lastFragmentSampleNumber=i.nextSample+1;else{t.add(e.id);continue}}(a||Q||r)&&(B?l.warn("ISOFile","Segment on track #"+e.id+" is overdue, sending it with samples ["+Math.max(0,i.nextSample-e.nb_samples)+", "+(i.nextSample-1)+"]"):l.info("ISOFile","Sending fragmented data on track #"+e.id+" for samples ["+Math.max(0,i.nextSample-e.nb_samples)+", "+(i.nextSample-1)+"]"),l.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(e.id,e.user,e.segmentStream.buffer,i.nextSample+1,A||i.nextSample+1>=i.samples.length),e.segmentStream=void 0,e.state.accumulatedSize=0,e.state.lastSegmentSampleNumber=i.nextSample+1),i.nextSample++}}}if(this.onSamples!==void 0)for(let t=0;t<this.extractedTracks.length;t++){const e=this.extractedTracks[t],i=e.trak;for(;i.nextSample<i.samples.length&&this.sampleProcessingStarted;){l.debug("ISOFile","Exporting on track #"+e.id+" sample #"+i.nextSample);const I=this.getSample(i,i.nextSample);if(I)i.nextSample++,e.samples.push(I);else{this.setNextSeekPositionFromSample(i.samples[i.nextSample]);break}if((i.nextSample%e.nb_samples===0||i.nextSample>=i.samples.length)&&(l.debug("ISOFile","Sending samples on track #"+e.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(e.id,e.user,e.samples),e.samples=[],e!==this.extractedTracks[t]))break}}}}getBox(A){const t=this.getBoxes(A,!0);return t.length?t[0]:void 0}getBoxes(A,t){const e=[],i=I=>{I instanceof m&&I.type&&I.type===A&&e.push(I);const s=[];I.boxes&&s.push(...I.boxes),I.entries&&s.push(...I.entries),I.item_infos&&s.push(...I.item_infos),I.references&&s.push(...I.references);for(const n of s){if(e.length&&t)return;i(n)}};return i(this),e}getTrackSamplesInfo(A){const t=this.getTrackById(A);if(t)return t.samples}getTrackSample(A,t){const e=this.getTrackById(A);return this.getSample(e,t)}releaseUsedSamples(A,t){let e=0;const i=this.getTrackById(A);i.lastValidSample||(i.lastValidSample=0);for(let I=i.lastValidSample;I<t;I++)e+=this.releaseSample(i,I);l.info("ISOFile","Track #"+A+" released samples up to "+t+" (released size: "+e+", remaining: "+this.samplesDataSize+")"),i.lastValidSample=t}start(){this.sampleProcessingStarted=!0,this.processSamples(!1)}stop(){this.sampleProcessingStarted=!1}flush(){l.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)}seekTrack(A,t,e){let i=0,I=0,s;if(e.samples.length===0)return l.info("ISOFile","No sample in track, cannot seek! Using time "+l.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(let B=0;B<e.samples.length;B++){const C=e.samples[B];if(B===0)I=0,s=C.timescale;else if(C.cts>A*C.timescale){I=B-1;break}t&&C.is_sync&&(i=B)}for(t&&(I=i),A=e.samples[I].cts,e.nextSample=I;e.samples[I].alreadyRead===e.samples[I].size&&e.samples[I+1];)I++;const n=e.samples[I].offset+e.samples[I].alreadyRead;return l.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+e.nextSample+" on track "+e.tkhd.track_id+", time "+l.getDurationString(A,s)+" and offset: "+n),{offset:n,time:A/s}}getTrackDuration(A){if(!A.samples)return 1/0;const t=A.samples[A.samples.length-1];return(t.cts+t.duration)/t.timescale}seek(A,t){const e=this.moov;let i={offset:1/0,time:1/0};if(this.moov){for(let I=0;I<e.traks.length;I++){const s=e.traks[I];if(A>this.getTrackDuration(s))continue;const n=this.seekTrack(A,t,s);n.offset<i.offset&&(i.offset=n.offset),n.time<i.time&&(i.time=n.time)}return l.info("ISOFile","Seeking at time "+l.getDurationString(i.time,1)+" needs a buffer with a fileStart position of "+i.offset),i.offset===1/0?i={offset:this.nextParsePosition,time:0}:i.offset=this.stream.getEndFilePositionAfter(i.offset),l.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+i.offset),i}else throw new Error("Cannot seek: moov not received!")}equal(A){let t=0;for(;t<this.boxes.length&&t<A.boxes.length;){const e=this.boxes[t],i=A.boxes[t];if(!pC(e,i))return!1;t++}return!0}write(A){for(let t=0;t<this.boxes.length;t++)this.boxes[t].write(A)}createFragment(A,t,e,i){const I=[];for(let a=t;a<=e;a++){const Q=this.getTrackById(A),o=this.getSample(Q,a);if(!o){this.setNextSeekPositionFromSample(Q.samples[a]);return}I.push(o)}const s=i||new gA,n=this.createMoof(I);n.write(s),n.trafs[0].truns[0].data_offset=n.size+8,l.debug("MP4Box","Adjusting data_offset with new value "+n.trafs[0].truns[0].data_offset),s.adjustUint32(n.trafs[0].truns[0].data_offset_position,n.trafs[0].truns[0].data_offset);const B=new tn;B.stream=new An;let C=0;for(const a of I)if(a.data){const Q=FA.fromArrayBuffer(a.data.buffer,C);B.stream.insertBuffer(Q),C+=a.data.byteLength}return B.write(s),s}static writeInitializationSegment(A,t,e){var s,n;l.debug("ISOFile","Generating initialization segment");const i=new gA;A.write(i);const I=t.addBox(new AB);if(e){const B=I.addBox(new JC);B.fragment_duration=e}for(let B=0;B<t.traks.length;B++){const C=I.addBox(new tB);C.track_id=t.traks[B].tkhd.track_id,C.default_sample_description_index=1,C.default_sample_duration=(n=(s=t.traks[B].samples[0])==null?void 0:s.duration)!=null?n:0,C.default_sample_size=0,C.default_sample_flags=65536}return t.write(i),i.buffer}save(A){const t=new gA;return t.isofile=this,this.write(t),t.save(A)}getBuffer(){const A=new gA;return A.isofile=this,this.write(A),A}initializeSegmentation(){var t,e;this.onSegment||l.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.resetTables());const A=new $n;A.addBox(this.moov.mvhd);for(let i=0;i<this.fragmentedTracks.length;i++){const I=this.getTrackById(this.fragmentedTracks[i].id);if(!I){l.warn("ISOFile",`Track with id ${this.fragmentedTracks[i].id} not found, skipping fragmentation initialization`);continue}A.addBox(I)}return{tracks:A.traks.map((i,I)=>({id:i.tkhd.track_id,user:this.fragmentedTracks[I].user})),buffer:GA.writeInitializationSegment(this.ftyp,A,(e=(t=this.moov)==null?void 0:t.mvex)==null?void 0:e.mehd.fragment_duration)}}resetTables(){this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0;for(let A=0;A<this.moov.traks.length;A++){const t=this.moov.traks[A];t.tkhd.duration=0,t.mdia.mdhd.duration=0;const e=t.mdia.minf.stbl.stco||t.mdia.minf.stbl.co64;e.chunk_offsets=[];const i=t.mdia.minf.stbl.stsc;i.first_chunk=[],i.samples_per_chunk=[],i.sample_description_index=[];const I=t.mdia.minf.stbl.stsz||t.mdia.minf.stbl.stz2;I.sample_sizes=[];const s=t.mdia.minf.stbl.stts;s.sample_counts=[],s.sample_deltas=[];const n=t.mdia.minf.stbl.ctts;n&&(n.sample_counts=[],n.sample_offsets=[]);const B=t.mdia.minf.stbl.stss,C=t.mdia.minf.stbl.boxes.indexOf(B);C!==-1&&(t.mdia.minf.stbl.boxes[C]=void 0)}}static initSampleGroups(A,t,e,i,I){t&&(t.sample_groups_info=[]),A.sample_groups_info||(A.sample_groups_info=[]);for(let s=0;s<e.length;s++){const n=e[s].grouping_type+"/"+e[s].grouping_type_parameter,B=new Jn(e[s].grouping_type,e[s].grouping_type_parameter,e[s]);t&&(t.sample_groups_info[n]=B),A.sample_groups_info[n]||(A.sample_groups_info[n]=B);for(let C=0;C<i.length;C++)i[C].grouping_type===e[s].grouping_type&&(B.description=i[C],B.description.used=!0);if(I)for(let C=0;C<I.length;C++)I[C].grouping_type===e[s].grouping_type&&(B.fragment_description=I[C],B.fragment_description.used=!0,B.is_fragment=!0)}if(t){if(I){for(let s=0;s<I.length;s++)if(!I[s].used&&I[s].version>=2){const n=I[s].grouping_type+"/0",B=new Jn(I[s].grouping_type,0);B.is_fragment=!0,t.sample_groups_info[n]||(t.sample_groups_info[n]=B)}}}else for(let s=0;s<i.length;s++)if(!i[s].used&&i[s].version>=2){const n=i[s].grouping_type+"/0",B=new Jn(i[s].grouping_type,0);A.sample_groups_info[n]||(A.sample_groups_info[n]=B)}}static setSampleGroupProperties(A,t,e,i){t.sample_groups=[];for(const I in i)if(t.sample_groups[I]={grouping_type:i[I].grouping_type,grouping_type_parameter:i[I].grouping_type_parameter},e>=i[I].last_sample_in_run&&(i[I].last_sample_in_run<0&&(i[I].last_sample_in_run=0),i[I].entry_index++,i[I].entry_index<=i[I].sbgp.entries.length-1&&(i[I].last_sample_in_run+=i[I].sbgp.entries[i[I].entry_index].sample_count)),i[I].entry_index<=i[I].sbgp.entries.length-1?t.sample_groups[I].group_description_index=i[I].sbgp.entries[i[I].entry_index].group_description_index:t.sample_groups[I].group_description_index=-1,t.sample_groups[I].group_description_index!==0){let s;if(i[I].fragment_description?s=i[I].fragment_description:s=i[I].description,t.sample_groups[I].group_description_index>0){let n;t.sample_groups[I].group_description_index>65535?n=(t.sample_groups[I].group_description_index>>16)-1:n=t.sample_groups[I].group_description_index-1,s&&n>=0&&(t.sample_groups[I].description=s.entries[n])}else s&&s.version>=2&&s.default_group_description_index>0&&(t.sample_groups[I].description=s.entries[s.default_group_description_index-1])}}static process_sdtp(A,t,e){t&&(A?(t.is_leading=A.is_leading[e],t.depends_on=A.sample_depends_on[e],t.is_depended_on=A.sample_is_depended_on[e],t.has_redundancy=A.sample_has_redundancy[e]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))}buildSampleLists(){for(let A=0;A<this.moov.traks.length;A++)this.buildTrakSampleLists(this.moov.traks[A])}buildTrakSampleLists(A){let t,e,i,I,s,n;A.samples=[],A.samples_duration=0,A.samples_size=0;const B=A.mdia.minf.stbl.stco||A.mdia.minf.stbl.co64,C=A.mdia.minf.stbl.stsc,a=A.mdia.minf.stbl.stsz||A.mdia.minf.stbl.stz2,Q=A.mdia.minf.stbl.stts,o=A.mdia.minf.stbl.ctts,r=A.mdia.minf.stbl.stss,E=A.mdia.minf.stbl.stsd,h=A.mdia.minf.stbl.subs,c=A.mdia.minf.stbl.stdp,f=A.mdia.minf.stbl.sbgps,d=A.mdia.minf.stbl.sgpds;let u=-1,p=-1,D=-1,y=-1,S=0,N=0,x=0;if(GA.initSampleGroups(A,void 0,f,d),typeof a!="undefined"){for(t=0;t<a.sample_sizes.length;t++){const F={number:t,track_id:A.tkhd.track_id,timescale:A.mdia.mdhd.timescale,alreadyRead:0,size:a.sample_sizes[t]};A.samples[t]=F,A.samples_size+=F.size,t===0?(i=1,e=0,F.chunk_index=i,F.chunk_run_index=e,n=C.samples_per_chunk[e],s=0,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0):t<n?(F.chunk_index=i,F.chunk_run_index=e):(i++,F.chunk_index=i,s=0,i<=I||(e++,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0),F.chunk_run_index=e,n+=C.samples_per_chunk[e]),F.description_index=C.sample_description_index[F.chunk_run_index]-1,F.description=E.entries[F.description_index],F.offset=B.chunk_offsets[F.chunk_index-1]+s,s+=F.size,t>u&&(p++,u<0&&(u=0),u+=Q.sample_counts[p]),t>0?(A.samples[t-1].duration=Q.sample_deltas[p],A.samples_duration+=A.samples[t-1].duration,F.dts=A.samples[t-1].dts+A.samples[t-1].duration):F.dts=0,o?(t>=D&&(y++,D<0&&(D=0),D+=o.sample_counts[y]),F.cts=A.samples[t].dts+o.sample_offsets[y]):F.cts=F.dts,r?(t===r.sample_numbers[S]-1?(F.is_sync=!0,S++):(F.is_sync=!1,F.degradation_priority=0),h&&h.entries[N].sample_delta+x===t+1&&(F.subsamples=h.entries[N].subsamples,x+=h.entries[N].sample_delta,N++)):F.is_sync=!0,GA.process_sdtp(A.mdia.minf.stbl.sdtp,F,F.number),c?F.degradation_priority=c.priority[t]:F.degradation_priority=0,h&&h.entries[N].sample_delta+x===t&&(F.subsamples=h.entries[N].subsamples,x+=h.entries[N].sample_delta),(f.length>0||d.length>0)&&GA.setSampleGroupProperties(A,F,t,A.sample_groups_info)}t>0&&(A.samples[t-1].duration=Math.max(A.mdia.mdhd.duration-A.samples[t-1].dts,0),A.samples_duration+=A.samples[t-1].duration)}}updateSampleLists(){let A,t,e,i,I;if(this.moov!==void 0)for(;this.lastMoofIndex<this.moofs.length;){const s=this.moofs[this.lastMoofIndex];if(this.lastMoofIndex++,s.type==="moof"){const n=s;for(let B=0;B<n.trafs.length;B++){const C=n.trafs[B],a=this.getTrackById(C.tfhd.track_id),Q=this.getTrexById(C.tfhd.track_id);C.tfhd.flags&zs?A=C.tfhd.default_sample_description_index:A=Q?Q.default_sample_description_index:1,C.tfhd.flags&js?t=C.tfhd.default_sample_duration:t=Q?Q.default_sample_duration:0,C.tfhd.flags&Xs?e=C.tfhd.default_sample_size:e=Q?Q.default_sample_size:0,C.tfhd.flags&Os?i=C.tfhd.default_sample_flags:i=Q?Q.default_sample_flags:0,C.sample_number=0,C.sbgps.length>0&&GA.initSampleGroups(a,C,C.sbgps,a.mdia.minf.stbl.sgpds,C.sgpds);for(let o=0;o<C.truns.length;o++){const r=C.truns[o];for(let E=0;E<r.sample_count;E++){const h=A-1;let c=i;r.flags&Fs?c=r.sample_flags[E]:E===0&&r.flags&Ps&&(c=r.first_sample_flags);let f=e;r.flags&Ss&&(f=r.sample_size[E]),a.samples_size+=f;let d=t;r.flags&Gs&&(d=r.sample_duration[E]),a.samples_duration+=d;let u;a.first_traf_merged||E>0?u=a.samples[a.samples.length-1].dts+a.samples[a.samples.length-1].duration:(C.tfdt?u=C.tfdt.baseMediaDecodeTime:u=0,a.first_traf_merged=!0);let p=u;r.flags&Ns&&(p=u+r.sample_composition_time_offset[E]);const D=!!(C.tfhd.flags&Ws),y=!!(C.tfhd.flags&RB),S=!!(r.flags&ms);let N=0;D?N=C.tfhd.base_data_offset:y||o===0?N=n.start:N=I;let x;o===0&&E===0?S?x=N+r.data_offset:x=N:x=I,I=x+f;const F=C.sample_number;C.sample_number++;const M={cts:p,description_index:h,description:a.mdia.minf.stbl.stsd.entries[h],dts:u,duration:d,moof_number:this.lastMoofIndex,number_in_traf:F,number:a.samples.length,offset:x,size:f,timescale:a.mdia.mdhd.timescale,track_id:a.tkhd.track_id,is_sync:!(c>>16&1),is_leading:c>>26&3,depends_on:c>>24&3,is_depended_on:c>>22&3,has_redundancy:c>>20&3,degradation_priority:c&65535};C.first_sample_index=a.samples.length,a.samples.push(M),(C.sbgps.length>0||C.sgpds.length>0||a.mdia.minf.stbl.sbgps.length>0||a.mdia.minf.stbl.sgpds.length>0)&&GA.setSampleGroupProperties(a,M,M.number_in_traf,C.sample_groups_info)}}if(C.subs){a.has_fragment_subsamples=!0;let o=C.first_sample_index;for(let r=0;r<C.subs.entries.length;r++){o+=C.subs.entries[r].sample_delta;const E=a.samples[o-1];E.subsamples=C.subs.entries[r].subsamples}}}}}}getSample(A,t){const e=A.samples[t];if(this.moov){if(!e.data)e.data=new Uint8Array(e.size),e.alreadyRead=0,this.samplesDataSize+=e.size,l.debug("ISOFile","Allocating sample #"+t+" on track #"+A.tkhd.track_id+" of size "+e.size+" (total: "+this.samplesDataSize+")");else if(e.alreadyRead===e.size)return e;for(;;){let i=this.stream,I=i.findPosition(!0,e.offset+e.alreadyRead,!1),s,n;if(I>-1)s=i.buffers[I],n=s.fileStart;else for(const B of this.mdats){if(!B.stream){l.debug("ISOFile","mdat stream not yet fully read for #"+this.mdats.indexOf(B)+" mdat");continue}if(I=B.stream.findPosition(!0,e.offset+e.alreadyRead-B.start-B.hdr_size,!1),I>-1){i=B.stream,s=B.stream.buffers[I],n=B.start+B.hdr_size+s.fileStart;break}}if(s){const B=s.byteLength-(e.offset+e.alreadyRead-n);if(e.size-e.alreadyRead<=B)return l.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-n)+" read size: "+(e.size-e.alreadyRead)+" full size: "+e.size+")"),gA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-n,e.size-e.alreadyRead),s.usedBytes+=e.size-e.alreadyRead,i.logBufferLevel(),e.alreadyRead=e.size,e;if(B===0)return;l.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-n)+" read size: "+B+" full size: "+e.size+")"),gA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-n,B),e.alreadyRead+=B,s.usedBytes+=B,i.logBufferLevel()}else return}}}releaseSample(A,t){const e=A.samples[t];return e.data?(this.samplesDataSize-=e.size,e.data=void 0,e.alreadyRead=0,e.size):0}getAllocatedSampleDataSize(){return this.samplesDataSize}getCodecs(){let A="";for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];t>0&&(A+=","),A+=e.mdia.minf.stbl.stsd.entries[0].getCodec()}return A}getTrexById(A){if(!(!this.moov||!this.moov.mvex))for(let t=0;t<this.moov.mvex.trexs.length;t++){const e=this.moov.mvex.trexs[t];if(e.track_id===A)return e}}getTrackById(A){if(this.moov)for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];if(e.tkhd.track_id===A)return e}}flattenItemInfo(){var i;const A=this.items,t=this.entity_groups,e=this.meta;if(!(!e||!e.hdlr||!e.iinf)){for(let I=0;I<e.iinf.item_infos.length;I++){const s=e.iinf.item_infos[I].item_ID;A[s]={id:s,name:e.iinf.item_infos[I].item_name,ref_to:[],content_type:e.iinf.item_infos[I].content_type,content_encoding:e.iinf.item_infos[I].content_encoding,item_uri_type:e.iinf.item_infos[I].item_uri_type,type:e.iinf.item_infos[I].item_type?e.iinf.item_infos[I].item_type:"mime",protection:e.iinf.item_infos[I].item_protection_index>0?e.ipro.protections[e.iinf.item_infos[I].item_protection_index-1]:void 0}}if(e.grpl)for(let I=0;I<e.grpl.boxes.length;I++){const s=e.grpl.boxes[I];t[s.group_id]={id:s.group_id,entity_ids:s.entity_ids,type:s.type}}if(e.iloc)for(let I=0;I<e.iloc.items.length;I++){const s=e.iloc.items[I],n=A[s.item_ID];s.data_reference_index!==0&&(l.warn("Item storage with reference to other files: not supported"),n.source=e.dinf.boxes[s.data_reference_index-1]),n.extents=[],n.size=0;for(let B=0;B<s.extents.length;B++)n.extents[B]={offset:s.extents[B].extent_offset+s.base_offset,length:s.extents[B].extent_length,alreadyRead:0},s.construction_method===1&&(n.extents[B].offset+=e.idat.start+e.idat.hdr_size),n.size+=n.extents[B].length}if(e.pitm&&(A[e.pitm.item_id].primary=!0),e.iref)for(let I=0;I<e.iref.references.length;I++){const s=e.iref.references[I];for(let n=0;n<s.references.length;n++)A[s.from_item_ID].ref_to.push({type:s.type,id:s.references[n]})}if(e.iprp)for(let I=0;I<e.iprp.ipmas.length;I++){const s=e.iprp.ipmas[I];for(let n=0;n<s.associations.length;n++){const B=s.associations[n],C=(i=A[B.id])!=null?i:t[B.id];if(C){C.properties===void 0&&(C.properties={boxes:[]});for(let a=0;a<B.props.length;a++){const Q=B.props[a];if(Q.property_index>0&&Q.property_index-1<e.iprp.ipco.boxes.length){const o=e.iprp.ipco.boxes[Q.property_index-1];C.properties[o.type]=o,C.properties.boxes.push(o)}}}}}}}getItem(A){if(!this.meta)return;const t=this.items[A];if(!t.data&&t.size)t.data=new Uint8Array(t.size),t.alreadyRead=0,this.itemsDataSize+=t.size,l.debug("ISOFile","Allocating item #"+A+" of size "+t.size+" (total: "+this.itemsDataSize+")");else if(t.alreadyRead===t.size)return t;for(let e=0;e<t.extents.length;e++){const i=t.extents[e];if(i.alreadyRead!==i.length){const I=this.stream.findPosition(!0,i.offset+i.alreadyRead,!1);if(I>-1){const s=this.stream.buffers[I],n=s.byteLength-(i.offset+i.alreadyRead-s.fileStart);if(i.length-i.alreadyRead<=n)l.debug("ISOFile","Getting item #"+A+" extent #"+e+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-s.fileStart)+" read size: "+(i.length-i.alreadyRead)+" full extent size: "+i.length+" full item size: "+t.size+")"),gA.memcpy(t.data.buffer,t.alreadyRead,s,i.offset+i.alreadyRead-s.fileStart,i.length-i.alreadyRead),(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=i.length-i.alreadyRead),this.stream.logBufferLevel(),t.alreadyRead+=i.length-i.alreadyRead,i.alreadyRead=i.length;else{l.debug("ISOFile","Getting item #"+A+" extent #"+e+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-s.fileStart)+" read size: "+n+" full extent size: "+i.length+" full item size: "+t.size+")"),gA.memcpy(t.data.buffer,t.alreadyRead,s,i.offset+i.alreadyRead-s.fileStart,n),i.alreadyRead+=n,t.alreadyRead+=n,(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=n),this.stream.logBufferLevel();return}}else return}}if(t.alreadyRead===t.size)return t}releaseItem(A){const t=this.items[A];if(t.data){this.itemsDataSize-=t.size,t.data=void 0,t.alreadyRead=0;for(let e=0;e<t.extents.length;e++){const i=t.extents[e];i.alreadyRead=0}return t.size}else return 0}processItems(A){for(const t in this.items){const e=this.items[t];this.getItem(e.id),A&&!e.sent&&(A(e),e.sent=!0,e.data=void 0)}}hasItem(A){for(const t in this.items){const e=this.items[t];if(e.name===A)return e.id}return-1}getMetaHandler(){if(this.meta)return this.meta.hdlr.handler}getPrimaryItem(){if(this.meta&&this.meta.pitm)return this.getItem(this.meta.pitm.item_id)}itemToFragmentedTrackFile({itemId:A}={}){let t;if(A?t=this.getItem(A):t=this.getPrimaryItem(),!t)return;const e=new GA;e.discardMdatData=!1;const i={type:t.type,description_boxes:t.properties.boxes};t.properties.ispe&&(i.width=t.properties.ispe.image_width,i.height=t.properties.ispe.image_height);const I=e.addTrack(i);if(I)return e.addSample(I,t.data),e}processIncompleteBox(A){if(A.type==="mdat"){const t=new tn(A.size);return this.parsingMdat=t,this.boxes.push(t),this.mdats.push(t),t.start=A.start,t.hdr_size=A.hdr_size,t.original_size=A.original_size,this.stream.addUsedBytes(t.hdr_size),this.lastBoxStartPosition=t.start+t.size,this.stream.seek(t.start+t.size,!1,this.discardMdatData)?(this.transferMdatData(),this.parsingMdat=void 0,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=t.start+t.size,!1)}else return A.type==="moov"&&(this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0)),(this.stream.mergeNextBuffer?this.stream.mergeNextBuffer():!1)?(this.nextParsePosition=this.stream.getEndPosition(),!0):(A.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+A.size:this.nextParsePosition=this.stream.getEndPosition(),!1)}hasIncompleteMdat(){return this.parsingMdat!==void 0}transferMdatData(A){const t=A!=null?A:this.parsingMdat;if(this.discardMdatData){l.debug("ISOFile","Discarding 'mdat' data, not transferring it to the mdat box stream");return}if(!t){l.warn("ISOFile","Cannot transfer 'mdat' data, no mdat box is being parsed");return}const e=this.stream.findPosition(!0,t.start+t.hdr_size,!1),i=this.stream.findPosition(!0,t.start+t.size,!1);if(e===-1||i===-1){l.warn("ISOFile","Cannot transfer 'mdat' data, start or end buffer not found");return}t.stream=new An;for(let I=e;I<=i;I++){const s=this.stream.buffers[I],n=I===e?t.start+t.hdr_size-s.fileStart:0,B=I===i?t.start+t.size-s.fileStart:s.byteLength;if(B>n){l.debug("ISOFile","Transferring 'mdat' data from buffer #"+I+" ("+n+" to "+B+")");const C=B-n,a=new FA(C),Q=t.stream.getAbsoluteEndPosition();gA.memcpy(a,0,s,n,C),a.fileStart=Q,t.stream.insertBuffer(a),s.usedBytes+=C}}}processIncompleteMdat(){const A=this.parsingMdat;return this.stream.seek(A.start+A.size,!1,this.discardMdatData)?(l.debug("ISOFile","Found 'mdat' end in buffered data"),this.transferMdatData(),this.parsingMdat=void 0,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)}restoreParsePosition(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)}saveParsePosition(){this.lastBoxStartPosition=this.stream.getPosition()}updateUsedBytes(A,t){this.stream.addUsedBytes&&(A.type==="mdat"?(this.stream.addUsedBytes(A.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(A.size-A.hdr_size)):this.stream.addUsedBytes(A.size))}addBox(A){return m.prototype.addBox.call(this,A)}init(A={}){const t=this.addBox(new kC);t.major_brand=A.brands&&A.brands[0]||"iso4",t.minor_version=0,t.compatible_brands=A.brands||["iso4"];const e=this.addBox(new $n);e.addBox(new AB);const i=e.addBox(new vC);return i.timescale=A.timescale||600,i.rate=A.rate||65536,i.creation_time=0,i.modification_time=0,i.duration=A.duration||0,i.volume=A.width?0:256,i.matrix=[65536,0,0,0,65536,0,0,0,1073741824],i.next_track_id=1,this}addTrack(A={}){this.moov||this.init(A);const t=A||{};t.width=t.width||320,t.height=t.height||320,t.id=t.id||this.moov.mvhd.next_track_id,t.type=t.type||"avc1";const e=this.moov.addBox(new GC);this.moov.mvhd.next_track_id=t.id+1;const i=e.addBox(new Aa);i.flags=to|eo|io,i.creation_time=0,i.modification_time=0,i.track_id=t.id,i.duration=t.duration||0,i.layer=t.layer||0,i.alternate_group=0,i.volume=1,i.matrix=[65536,0,0,0,65536,0,0,0,1073741824],i.width=t.width<<16,i.height=t.height<<16;const I=e.addBox(new SC),s=I.addBox(new LC);s.creation_time=0,s.modification_time=0,s.timescale=t.timescale||1,s.duration=t.media_duration||0,s.language=t.language||"und";const n=I.addBox(new YC);n.handler=t.hdlr||"vide",n.name=t.name||"Track created with MP4Box.js";const B=I.addBox(new bC);B.extended_language=t.language||"fr-FR";const C=I.addBox(new FC),a=IA.sampleEntry[t.type];if(!a)return;const Q=new a;if(Q.data_reference_index=1,Q instanceof H){const y=Q,S=C.addBox(new ia);S.graphicsmode=0,S.opcolor=[0,0,0],y.width=t.width,y.height=t.height,y.horizresolution=72<<16,y.vertresolution=72<<16,y.frame_count=1,y.compressorname=t.type+" Compressor",y.depth=24,t.avcDecoderConfigRecord?y.addBox(new yC(t.avcDecoderConfigRecord.byteLength)).parse(new gA(t.avcDecoderConfigRecord)):t.hevcDecoderConfigRecord&&y.addBox(new _C(t.hevcDecoderConfigRecord.byteLength)).parse(new gA(t.hevcDecoderConfigRecord))}else if(Q instanceof sA){const y=Q,S=C.addBox(new ZC);S.balance=t.balance||0,y.channel_count=t.channel_count||2,y.samplesize=t.samplesize||16,y.samplerate=t.samplerate||65536}else Q instanceof kB?C.addBox(new mC):Q instanceof TA?(C.addBox(new WC),Q instanceof qC&&(Q.namespace=t.namespace||"nonamespace",Q.schema_location=t.schema_location||"",Q.auxiliary_mime_types=t.auxiliary_mime_types||"")):Q instanceof ss?C.addBox(new en):Q instanceof CB?C.addBox(new en):C.addBox(new en);t.description&&Q.addBox.call(Q,t.description),t.description_boxes&&t.description_boxes.forEach(function(y){Q.addBox.call(Q,y)});const r=C.addBox(new NC).addBox(new MC),E=new ea;E.flags=1,r.addEntry(E);const h=C.addBox(new RC);h.addBox(new jC).addEntry(Q);const f=h.addBox(new OC);f.sample_counts=[],f.sample_deltas=[];const d=h.addBox(new zC);d.first_chunk=[],d.samples_per_chunk=[],d.sample_description_index=[];const u=h.addBox(new VC);u.chunk_offsets=[];const p=h.addBox(new XC);p.sample_sizes=[];const D=this.moov.mvex.addBox(new tB);return D.track_id=t.id,D.default_sample_description_index=t.default_sample_description_index||1,D.default_sample_duration=t.default_sample_duration||0,D.default_sample_size=t.default_sample_size||0,D.default_sample_flags=t.default_sample_flags||0,this.buildTrakSampleLists(e),t.id}addSample(A,t,{sample_description_index:e,duration:i=1,cts:I=0,dts:s=0,is_sync:n=!1,is_leading:B=0,depends_on:C=0,is_depended_on:a=0,has_redundancy:Q=0,degradation_priority:o=0,subsamples:r,offset:E=0}={}){const h=this.getTrackById(A);if(h===void 0)return;const c=e?e-1:0,f={number:h.samples.length,track_id:h.tkhd.track_id,timescale:h.mdia.mdhd.timescale,description_index:c,description:h.mdia.minf.stbl.stsd.entries[c],data:t,size:t.byteLength,alreadyRead:t.byteLength,duration:i,cts:I,dts:s,is_sync:n,is_leading:B,depends_on:C,is_depended_on:a,has_redundancy:Q,degradation_priority:o,offset:E,subsamples:r};h.samples.push(f),h.samples_size+=f.size,h.samples_duration+=f.duration,h.first_dts===void 0&&(h.first_dts=s),this.processSamples();const d=this.addBox(this.createMoof([f]));d.computeSize(),d.trafs[0].truns[0].data_offset=d.size+8;const u=this.addBox(new tn);return u.data=new Uint8Array(t),f}createMoof(A){if(A.length===0)return;if(A.some(a=>a.track_id!==A[0].track_id))throw new Error("Cannot create moof for samples from different tracks: "+A.map(a=>a.track_id).join(", "));const t=A[0].track_id,e=this.getTrackById(t);if(!e)throw new Error("Cannot create moof for non-existing track: "+t);const i=new xC,I=i.addBox(new HC);I.sequence_number=++this.nextMoofNumber;const s=i.addBox(new UC),n=s.addBox(new $C);n.track_id=t,n.flags=RB;const B=s.addBox(new PC);B.baseMediaDecodeTime=A[0].dts-(e.first_dts||0);const C=s.addBox(new ta);C.flags=ms|Gs|Ss|Fs|Ns,C.data_offset=0,C.first_sample_flags=0,C.sample_count=A.length;for(const a of A){let Q=0;a.is_sync?Q=1<<25:Q=65536,C.sample_duration.push(a.duration),C.sample_size.push(a.size),C.sample_flags.push(Q),C.sample_composition_time_offset.push(a.cts-a.dts)}return i}print(A){A.indent="";for(let t=0;t<this.boxes.length;t++)this.boxes[t]&&this.boxes[t].print(A)}};function sh(g=!1,A){return new Ih(A,!g)}var ga={};uC(ga,{Descriptor:()=>qA,ES_Descriptor:()=>Ba,MPEG4DescriptorParser:()=>Qh});var Ia=3,an=4,aB=5,sa=6,qA=class na{constructor(A,t){this.tag=A,this.size=t,this.descs=[]}parse(A){this.data=A.readUint8Array(this.size)}findDescriptor(A){for(let t=0;t<this.descs.length;t++)if(this.descs[t].tag===A)return this.descs[t]}parseOneDescriptor(A){let t=0;const e=A.readUint8();let i=A.readUint8();for(;i&128;)t=(t<<7)+(i&127),i=A.readUint8();t=(t<<7)+(i&127),l.debug("Descriptor","Found "+(gn[e]||"Descriptor "+e)+", size "+t+" at position "+A.getPosition());const I=gn[e]?new ah[gn[e]](t):new na(t);return I.parse(A),I}parseRemainingDescriptors(A){var e;const t=A.getPosition();for(;A.getPosition()<t+this.size;){const i=(e=this.parseOneDescriptor)==null?void 0:e.call(this,A);this.descs.push(i)}}},Ba=class extends qA{constructor(g){super(Ia,g)}parse(g){if(this.ES_ID=g.readUint16(),this.flags=g.readUint8(),this.size-=3,this.flags&128?(this.dependsOn_ES_ID=g.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,this.flags&64){const A=g.readUint8();this.URL=g.readString(A),this.size-=A+1}else this.URL="";this.flags&32?(this.OCR_ES_ID=g.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(g)}getOTI(){const g=this.findDescriptor(an);return g?g.oti:0}getAudioConfig(){const g=this.findDescriptor(an);if(!g)return;const A=g.findDescriptor(aB);if(A&&A.data){let t=(A.data[0]&248)>>3;return t===31&&A.data.length>=2&&(t=32+((A.data[0]&7)<<3)+((A.data[1]&224)>>5)),t}}},nh=class extends qA{constructor(g){super(an,g)}parse(g){this.oti=g.readUint8(),this.streamType=g.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=g.readUint24(),this.maxBitrate=g.readUint32(),this.avgBitrate=g.readUint32(),this.size-=13,this.parseRemainingDescriptors(g)}},Bh=class extends qA{constructor(g){super(aB,g)}},Ch=class extends qA{constructor(g){super(sa,g)}},ah={Descriptor:qA,ES_Descriptor:Ba,DecoderConfigDescriptor:nh,DecoderSpecificInfo:Bh,SLConfigDescriptor:Ch},gn={[Ia]:"ES_Descriptor",[an]:"DecoderConfigDescriptor",[aB]:"DecoderSpecificInfo",[sa]:"SLConfigDescriptor"},Qh=class{constructor(){this.parseOneDescriptor=qA.prototype.parseOneDescriptor}getDescriptorName(g){return gn[g]}},Ca={};uC(Ca,{CoLLBox:()=>yh,ItemContentIDPropertyBox:()=>$l,OpusSampleEntry:()=>_E,SmDmBox:()=>Xc,a1lxBox:()=>rh,a1opBox:()=>oh,ac_3SampleEntry:()=>bE,ac_4SampleEntry:()=>kE,aebrBox:()=>Kh,afbrBox:()=>Th,albcBox:()=>qh,alstSampleGroupEntry:()=>Fl,altrBox:()=>Zh,auxCBox:()=>Eh,av01SampleEntry:()=>CE,av1CBox:()=>AE,avc1SampleEntry:()=>IE,avc2SampleEntry:()=>sE,avc3SampleEntry:()=>nE,avc4SampleEntry:()=>BE,avcCBox:()=>yC,avllSampleGroupEntry:()=>Nl,avs3SampleEntry:()=>GE,avssSampleGroupEntry:()=>Rl,brstBox:()=>Vh,btrtBox:()=>hh,bxmlBox:()=>yo,ccstBox:()=>ch,cdefBox:()=>lh,clapBox:()=>dh,clefBox:()=>bc,clliBox:()=>fh,cmexBox:()=>uh,cminBox:()=>wh,cmpdBox:()=>Dh,co64Box:()=>ph,colrBox:()=>gE,coviBox:()=>Sh,cprtBox:()=>Fh,cschBox:()=>Nh,cslgBox:()=>Rh,cttsBox:()=>xh,dOpsBox:()=>Lh,dac3Box:()=>Uh,dataBox:()=>ds,dav1SampleEntry:()=>aE,dec3Box:()=>Mh,dfLaBox:()=>bh,dimmBox:()=>kh,dinfBox:()=>NC,dmax:()=>Yh,dmedBox:()=>_h,dobrBox:()=>Wh,drefBox:()=>MC,drepBox:()=>Jh,dtrtSampleGroupEntry:()=>xl,dvh1SampleEntry:()=>dE,dvheSampleEntry:()=>fE,ec_3SampleEntry:()=>YE,edtsBox:()=>Go,elngBox:()=>bC,elstBox:()=>Hh,emsgBox:()=>vh,encaSampleEntry:()=>qE,encmSampleEntry:()=>jE,encsSampleEntry:()=>VE,enctSampleEntry:()=>zE,encuSampleEntry:()=>ZE,encvSampleEntry:()=>TE,enofBox:()=>Yc,eqivBox:()=>zh,esdsBox:()=>tE,etypBox:()=>To,fLaCSampleEntry:()=>KE,favcBox:()=>jh,fielBox:()=>Ic,fobrBox:()=>Xh,freeBox:()=>uo,frmaBox:()=>sc,ftypBox:()=>kC,grplBox:()=>vo,hdlrBox:()=>YC,hev1SampleEntry:()=>oE,hev2SampleEntry:()=>EE,hinfBox:()=>xo,hmhdBox:()=>mC,hntiBox:()=>Ro,hvc1SampleEntry:()=>QE,hvc2SampleEntry:()=>rE,hvcCBox:()=>_C,hvt1SampleEntry:()=>hE,iaugBox:()=>Oh,idatBox:()=>fo,iinfBox:()=>Vo,ilocBox:()=>Wo,ilstBox:()=>_c,imirBox:()=>nc,infeBox:()=>Zo,iodsBox:()=>Do,ipcoBox:()=>Ho,ipmaBox:()=>Bc,iproBox:()=>mo,iprpBox:()=>Jo,irefBox:()=>jo,irotBox:()=>Cc,ispeBox:()=>ac,itaiBox:()=>Qc,j2kHBox:()=>Ko,j2kiSampleEntry:()=>SE,keysBox:()=>Lc,kindBox:()=>rc,levaBox:()=>oc,lhe1SampleEntry:()=>cE,lhv1SampleEntry:()=>lE,lhvCBox:()=>Ec,lselBox:()=>hc,m4aeSampleEntry:()=>ME,maxrBox:()=>cc,mdatBox:()=>tn,mdcvBox:()=>lc,mdhdBox:()=>LC,mdiaBox:()=>SC,mecoBox:()=>No,mehdBox:()=>JC,metaBox:()=>Oo,mettSampleEntry:()=>Po,metxSampleEntry:()=>$o,mfhdBox:()=>HC,mfraBox:()=>Fo,mfroBox:()=>dc,mha1SampleEntry:()=>LE,mha2SampleEntry:()=>JE,mhm1SampleEntry:()=>HE,mhm2SampleEntry:()=>vE,minfBox:()=>FC,mjp2SampleEntry:()=>FE,mjpgSampleEntry:()=>NE,moofBox:()=>xC,moovBox:()=>$n,mp4aSampleEntry:()=>UE,mp4sSampleEntry:()=>WE,mp4vSampleEntry:()=>xE,mskCBox:()=>fc,msrcTrackGroupTypeBox:()=>cl,mvexBox:()=>AB,mvhdBox:()=>vC,mvifSampleGroupEntry:()=>Ul,nmhdBox:()=>en,npckBox:()=>uc,numpBox:()=>wc,padbBox:()=>pc,panoBox:()=>Ph,paspBox:()=>yc,paylBox:()=>mc,paytBox:()=>Gc,pdinBox:()=>Sc,piffLsmBox:()=>Wl,piffPsshBox:()=>zl,piffSencBox:()=>jl,piffTencBox:()=>Xl,piffTfrfBox:()=>Ol,piffTfxdBox:()=>Pl,pitmBox:()=>Xo,pixiBox:()=>Fc,pmaxBox:()=>Nc,povdBox:()=>qo,prdiBox:()=>Rc,prfrBox:()=>xc,prftBox:()=>Uc,prgrBox:()=>ic,profBox:()=>Jc,prolSampleGroupEntry:()=>Ml,psshBox:()=>Mc,pymdBox:()=>gc,rapSampleGroupEntry:()=>bl,rashSampleGroupEntry:()=>kl,resvSampleEntry:()=>XE,rinfBox:()=>ko,rollSampleGroupEntry:()=>Yl,rtp_Box:()=>Kc,saioBox:()=>Tc,saizBox:()=>qc,sbgpBox:()=>th,sbpmBox:()=>Vc,sbttSampleEntry:()=>OE,schiBox:()=>Yo,schmBox:()=>Wc,scifSampleGroupEntry:()=>_l,scnmSampleGroupEntry:()=>Ll,sdp_Box:()=>zc,sdtpBox:()=>eh,seigSampleGroupEntry:()=>Jl,sencBox:()=>jc,sgpdBox:()=>ih,sidxBox:()=>gh,sinfBox:()=>bo,skipBox:()=>wo,slidBox:()=>$h,smhdBox:()=>ZC,sratBox:()=>Oc,ssixBox:()=>Pc,stblBox:()=>RC,stcoBox:()=>VC,stdpBox:()=>$c,sterBox:()=>Ac,sthdBox:()=>WC,stppSampleEntry:()=>qC,strdBox:()=>Mo,striBox:()=>Al,strkBox:()=>Uo,stsaSampleGroupEntry:()=>Hl,stscBox:()=>zC,stsdBox:()=>jC,stsgBox:()=>tl,stshBox:()=>el,stssBox:()=>il,stszBox:()=>XC,sttsBox:()=>OC,stviBox:()=>gl,stxtSampleEntry:()=>PE,stypBox:()=>Il,stz2Box:()=>sl,subsBox:()=>nl,syncSampleGroupEntry:()=>vl,taicBox:()=>Bl,taptBox:()=>Hc,teleSampleGroupEntry:()=>Kl,tencBox:()=>Cl,tfdtBox:()=>PC,tfhdBox:()=>$C,tfraBox:()=>al,tkhdBox:()=>Aa,tmaxBox:()=>Ql,tminBox:()=>rl,totlBox:()=>ol,tpayBox:()=>El,tpylBox:()=>hl,trafBox:()=>UC,trakBox:()=>GC,trefBox:()=>ll,trepBox:()=>dl,trexBox:()=>tB,trgrBox:()=>_o,trpyBox:()=>fl,trunBox:()=>ta,tsasSampleGroupEntry:()=>Tl,tsclSampleGroupEntry:()=>ql,tselBox:()=>ul,tsynBox:()=>tc,tx3gSampleEntry:()=>$E,txtcBox:()=>wl,tycoBox:()=>Dl,udesBox:()=>pl,udtaBox:()=>Lo,uncCBox:()=>yl,uncvSampleEntry:()=>RE,urlBox:()=>ea,urnBox:()=>ml,viprSampleGroupEntry:()=>Zl,vmhdBox:()=>ia,vp08SampleEntry:()=>yE,vp09SampleEntry:()=>mE,vpcCBox:()=>eE,vttCBox:()=>Gl,vttcBox:()=>So,vvc1SampleEntry:()=>uE,vvcCBox:()=>iE,vvcNSampleEntry:()=>pE,vvi1SampleEntry:()=>wE,vvnCBox:()=>Sl,vvs1SampleEntry:()=>DE,waveBox:()=>vc,wbbrBox:()=>ec,wvttSampleEntry:()=>Ah,xmlBox:()=>po});var pi,rh=(pi=class extends m{constructor(){super(...arguments),this.box_name="AV1LayeredImageIndexingProperty"}parse(A){const e=((A.readUint8()&1&1)+1)*16;this.layer_size=[];for(let i=0;i<3;i++)e===16?this.layer_size[i]=A.readUint16():this.layer_size[i]=A.readUint32()}},pi.fourcc="a1lx",pi),yi,oh=(yi=class extends m{constructor(){super(...arguments),this.box_name="OperatingPointSelectorProperty"}parse(A){this.op_index=A.readUint8()}},yi.fourcc="a1op",yi),mi,Eh=(mi=class extends w{constructor(){super(...arguments),this.box_name="AuxiliaryTypeProperty"}parse(A){this.parseFullHeader(A),this.aux_type=A.readCString();const t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=A.readUint8Array(t)}},mi.fourcc="auxC",mi),Gi,hh=(Gi=class extends m{constructor(){super(...arguments),this.box_name="BitRateBox"}parse(A){this.bufferSizeDB=A.readUint32(),this.maxBitrate=A.readUint32(),this.avgBitrate=A.readUint32()}},Gi.fourcc="btrt",Gi),Si,ch=(Si=class extends w{constructor(){super(...arguments),this.box_name="CodingConstraintsBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.all_ref_pics_intra=(t&128)===128,this.intra_pred_used=(t&64)===64,this.max_ref_per_pic=(t&63)>>2,A.readUint24()}},Si.fourcc="ccst",Si),Fi,lh=(Fi=class extends m{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(A){this.channel_count=A.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[];for(let t=0;t<this.channel_count;t++)this.channel_indexes.push(A.readUint16()),this.channel_types.push(A.readUint16()),this.channel_associations.push(A.readUint16())}},Fi.fourcc="cdef",Fi),Ni,dh=(Ni=class extends m{constructor(){super(...arguments),this.box_name="CleanApertureBox"}parse(A){this.cleanApertureWidthN=A.readUint32(),this.cleanApertureWidthD=A.readUint32(),this.cleanApertureHeightN=A.readUint32(),this.cleanApertureHeightD=A.readUint32(),this.horizOffN=A.readUint32(),this.horizOffD=A.readUint32(),this.vertOffN=A.readUint32(),this.vertOffD=A.readUint32()}},Ni.fourcc="clap",Ni),Ri,fh=(Ri=class extends m{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.max_content_light_level=A.readUint16(),this.max_pic_average_light_level=A.readUint16()}},Ri.fourcc="clli",Ri),xi,uh=(xi=class extends m{constructor(){super(...arguments),this.box_name="CameraExtrinsicMatrixProperty"}parse(A){this.flags&1&&(this.pos_x=A.readInt32()),this.flags&2&&(this.pos_y=A.readInt32()),this.flags&4&&(this.pos_z=A.readInt32()),this.flags&8&&(this.version===0?this.flags&16?(this.quat_x=A.readInt32(),this.quat_y=A.readInt32(),this.quat_z=A.readInt32()):(this.quat_x=A.readInt16(),this.quat_y=A.readInt16(),this.quat_z=A.readInt16()):this.version),this.flags&32&&(this.id=A.readUint32())}},xi.fourcc="cmex",xi),Ui,wh=(Ui=class extends m{constructor(){super(...arguments),this.box_name="CameraIntrinsicMatrixProperty"}parse(A){this.focal_length_x=A.readInt32(),this.principal_point_x=A.readInt32(),this.principal_point_y=A.readInt32(),this.flags&1&&(this.focal_length_y=A.readInt32(),this.skew_factor=A.readInt32())}},Ui.fourcc="cmin",Ui),Mi,Dh=(Mi=class extends m{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(A){this.component_count=A.readUint32(),this.component_types=[],this.component_type_urls=[];for(let t=0;t<this.component_count;t++){const e=A.readUint16();this.component_types.push(e),e>=32768&&this.component_type_urls.push(A.readCString())}}},Mi.fourcc="cmpd",Mi),bi,ph=(bi=class extends w{constructor(){super(...arguments),this.box_name="ChunkLargeOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.chunk_offsets=[],this.version===0)for(let e=0;e<t;e++)this.chunk_offsets.push(A.readUint64())}write(A){this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(A),A.writeUint32(this.chunk_offsets.length);for(let t=0;t<this.chunk_offsets.length;t++)A.writeUint64(this.chunk_offsets[t])}},bi.fourcc="co64",bi),ki,yh=(ki=class extends w{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.parseFullHeader(A),this.maxCLL=A.readUint16(),this.maxFALL=A.readUint16()}},ki.fourcc="CoLL",ki),mh=class{toString(){let g="centre_azimuth: ";return g+=this.centre_azimuth,g+=" (",g+=this.centre_azimuth*2**-16,g+="°), centre_elevation: ",g+=this.centre_elevation,g+=" (",g+=this.centre_elevation*2**-16,g+="°), centre_tilt: ",g+=this.centre_tilt,g+=" (",g+=this.centre_tilt*2**-16,g+="°)",this.range_included_flag&&(g+=", azimuth_range: ",g+=this.azimuth_range,g+=" (",g+=this.azimuth_range*2**-16,g+="°), elevation_range: ",g+=this.elevation_range,g+=" (",g+=this.elevation_range*2**-16,g+="°)"),this.interpolate_included_flag&&(g+=", interpolate: ",g+=this.interpolate),g}},Gh=class{toString(){let g="";return this.view_idc&&(g+="view_idc: ",g+=this.view_idc,g+=", "),g+="sphere_region: {",g+=this.sphere_region,g+="}",g}},Yi,Sh=(Yi=class extends w{constructor(){super(...arguments),this.box_name="CoverageInformationBox"}parse(A){this.parseFullHeader(A),this.coverage_shape_type=A.readUint8();const t=A.readUint8(),e=A.readInt8(),i=e&128;i&&(this.default_view_idc=(e&96)>>5),this.coverage_regions=new Array;for(let I=0;I<t;I++){const s=new Gh;i&&(s.view_idc=A.readUint8()>>6),s.sphere_region=this.parseSphereRegion(A,!0,!0),this.coverage_regions.push(s)}}parseSphereRegion(A,t,e){const i=new mh;return i.centre_azimuth=A.readInt32(),i.centre_elevation=A.readInt32(),i.centre_tilt=A.readInt32(),i.range_included_flag=t,t&&(i.azimuth_range=A.readUint32(),i.elevation_range=A.readUint32()),i.interpolate_included_flag=e,e&&(i.interpolate=(A.readUint8()&128)===128),i}},Yi.fourcc="covi",Yi),_i,Fh=(_i=class extends w{constructor(){super(...arguments),this.box_name="CopyrightBox"}parse(A){this.parseFullHeader(A),this.parseLanguage(A),this.notice=A.readCString()}},_i.fourcc="cprt",_i),Li,Nh=(Li=class extends w{constructor(){super(...arguments),this.box_name="CompatibleSchemeTypeBox"}parse(A){this.parseFullHeader(A),this.scheme_type=A.readString(4),this.scheme_version=A.readUint32(),this.flags&1&&(this.scheme_uri=A.readCString())}},Li.fourcc="csch",Li),rs=2147483647,Ji,Rh=(Ji=class extends w{constructor(){super(...arguments),this.box_name="CompositionToDecodeBox"}parse(A){this.parseFullHeader(A),this.version===0?(this.compositionToDTSShift=A.readInt32(),this.leastDecodeToDisplayDelta=A.readInt32(),this.greatestDecodeToDisplayDelta=A.readInt32(),this.compositionStartTime=A.readInt32(),this.compositionEndTime=A.readInt32()):this.version===1&&(this.compositionToDTSShift=A.readInt64(),this.leastDecodeToDisplayDelta=A.readInt64(),this.greatestDecodeToDisplayDelta=A.readInt64(),this.compositionStartTime=A.readInt64(),this.compositionEndTime=A.readInt64())}write(A){this.version=0,(this.compositionToDTSShift>rs||this.leastDecodeToDisplayDelta>rs||this.greatestDecodeToDisplayDelta>rs||this.compositionStartTime>rs||this.compositionEndTime>rs)&&(this.version=1),this.flags=0,this.version===0?(this.size=20,this.writeHeader(A),A.writeInt32(this.compositionToDTSShift),A.writeInt32(this.leastDecodeToDisplayDelta),A.writeInt32(this.greatestDecodeToDisplayDelta),A.writeInt32(this.compositionStartTime),A.writeInt32(this.compositionEndTime)):this.version===1&&(this.size=40,this.writeHeader(A),A.writeInt64(this.compositionToDTSShift),A.writeInt64(this.leastDecodeToDisplayDelta),A.writeInt64(this.greatestDecodeToDisplayDelta),A.writeInt64(this.compositionStartTime),A.writeInt64(this.compositionEndTime))}},Ji.fourcc="cslg",Ji),Hi,xh=(Hi=class extends w{constructor(){super(...arguments),this.box_name="CompositionOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.sample_counts=[],this.sample_offsets=[],this.version===0)for(let e=0;e<t;e++){this.sample_counts.push(A.readUint32());const i=A.readInt32();i<0&&l.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(i)}else if(this.version===1)for(let e=0;e<t;e++)this.sample_counts.push(A.readUint32()),this.sample_offsets.push(A.readInt32())}write(A){this.version=this.sample_offsets.some(t=>t<0)?1:0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(A),A.writeUint32(this.sample_counts.length);for(let t=0;t<this.sample_counts.length;t++)A.writeUint32(this.sample_counts[t]),this.version===1?A.writeInt32(this.sample_offsets[t]):A.writeUint32(this.sample_offsets[t])}unpack(A){let t=0;for(let e=0;e<this.sample_counts.length;e++)for(let i=0;i<this.sample_counts[e];i++)A[t].pts=A[t].dts+this.sample_offsets[e],t++}},Hi.fourcc="ctts",Hi),vi,Uh=(vi=class extends m{constructor(){super(...arguments),this.box_name="AC3SpecificBox"}parse(A){const t=A.readUint8(),e=A.readUint8(),i=A.readUint8();this.fscod=t>>6,this.bsid=t>>1&31,this.bsmod=(t&1)<<2|e>>6&3,this.acmod=e>>3&7,this.lfeon=e>>2&1,this.bit_rate_code=e&3|i>>5&7}},vi.fourcc="dac3",vi),Ki,Mh=(Ki=class extends m{constructor(){super(...arguments),this.box_name="EC3SpecificBox"}parse(A){const t=A.readUint16();this.data_rate=t>>3,this.num_ind_sub=t&7,this.ind_subs=[];for(let e=0;e<this.num_ind_sub+1;e++){const i=A.readUint8(),I=A.readUint8(),s=A.readUint8(),n={fscod:i>>6,bsid:i>>1&31,bsmod:(i&1)<<4|I>>4&15,acmod:I>>1&7,lfeon:I&1,num_dep_sub:s>>1&15};this.ind_subs.push(n),n.num_dep_sub>0&&(n.chan_loc=(s&1)<<8|A.readUint8())}}},Ki.fourcc="dec3",Ki),Ti,bh=(Ti=class extends w{constructor(){super(...arguments),this.box_name="FLACSpecificBox"}parse(A){this.parseFullHeader(A);const t=127,e=128,i=[],I=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];let s;do{s=A.readUint8();const n=Math.min(s&t,I.length-1);n?A.readUint8Array(A.readUint24()):(A.readUint8Array(13),this.samplerate=A.readUint32()>>12,A.readUint8Array(20)),i.push(I[n])}while(s&e);this.numMetadataBlocks=i.length+" ("+i.join(", ")+")"}},Ti.fourcc="dfLa",Ti),qi,kh=(qi=class extends m{constructor(){super(...arguments),this.box_name="hintimmediateBytesSent"}parse(A){this.bytessent=A.readUint64()}},qi.fourcc="dimm",qi),Zi,Yh=(Zi=class extends m{constructor(){super(...arguments),this.box_name="hintlongestpacket"}parse(A){this.time=A.readUint32()}},Zi.fourcc="dmax",Zi),Vi,_h=(Vi=class extends m{constructor(){super(...arguments),this.box_name="hintmediaBytesSent"}parse(A){this.bytessent=A.readUint64()}},Vi.fourcc="dmed",Vi),Wi,Lh=(Wi=class extends m{constructor(){super(...arguments),this.box_name="OpusSpecificBox"}parse(A){if(this.Version=A.readUint8(),this.OutputChannelCount=A.readUint8(),this.PreSkip=A.readUint16(),this.InputSampleRate=A.readUint32(),this.OutputGain=A.readInt16(),this.ChannelMappingFamily=A.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=A.readUint8(),this.CoupledCount=A.readUint8(),this.ChannelMapping=[];for(let t=0;t<this.OutputChannelCount;t++)this.ChannelMapping[t]=A.readUint8()}}write(A){if(this.size=11,this.ChannelMappingFamily!==0&&(this.size+=2+this.OutputChannelCount),this.writeHeader(A),A.writeUint8(this.Version),A.writeUint8(this.OutputChannelCount),A.writeUint16(this.PreSkip),A.writeUint32(this.InputSampleRate),A.writeInt16(this.OutputGain),A.writeUint8(this.ChannelMappingFamily),this.ChannelMappingFamily!==0){A.writeUint8(this.StreamCount),A.writeUint8(this.CoupledCount);for(let t=0;t<this.OutputChannelCount;t++)A.writeUint8(this.ChannelMapping[t])}}},Wi.fourcc="dOps",Wi),zi,Jh=(zi=class extends m{constructor(){super(...arguments),this.box_name="hintrepeatedBytesSent"}parse(A){this.bytessent=A.readUint64()}},zi.fourcc="drep",zi),ji,Hh=(ji=class extends w{constructor(){super(...arguments),this.box_name="EditListBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){const i={segment_duration:this.version===1?A.readUint64():A.readUint32(),media_time:this.version===1?A.readInt64():A.readInt32(),media_rate_integer:A.readInt16(),media_rate_fraction:A.readInt16()};this.entries.push(i)}}write(A){const t=this.entries.some(e=>e.segment_duration>V||e.media_time>V)||this.version===1;this.version=t?1:0,this.size=4+12*this.entries.length,this.size+=t?8*this.entries.length:0,this.writeHeader(A),A.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++){const i=this.entries[e];t?(A.writeUint64(i.segment_duration),A.writeInt64(i.media_time)):(A.writeUint32(i.segment_duration),A.writeInt32(i.media_time)),A.writeInt16(i.media_rate_integer),A.writeInt16(i.media_rate_fraction)}}},ji.fourcc="elst",ji),Xi,vh=(Xi=class extends w{constructor(){super(...arguments),this.box_name="EventMessageBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.timescale=A.readUint32(),this.presentation_time=A.readUint64(),this.event_duration=A.readUint32(),this.id=A.readUint32(),this.scheme_id_uri=A.readCString(),this.value=A.readCString()):(this.scheme_id_uri=A.readCString(),this.value=A.readCString(),this.timescale=A.readUint32(),this.presentation_time_delta=A.readUint32(),this.event_duration=A.readUint32(),this.id=A.readUint32());let t=this.size-this.hdr_size-(16+(this.scheme_id_uri.length+1)+(this.value.length+1));this.version===1&&(t-=4),this.message_data=A.readUint8Array(t)}write(A){this.version=0,this.flags=0,this.size=16+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(A),A.writeCString(this.scheme_id_uri),A.writeCString(this.value),A.writeUint32(this.timescale),A.writeUint32(this.presentation_time_delta),A.writeUint32(this.event_duration),A.writeUint32(this.id),A.writeUint8Array(this.message_data)}},Xi.fourcc="emsg",Xi),P=class extends w{parse(g){this.parseFullHeader(g),this.group_id=g.readUint32(),this.num_entities_in_group=g.readUint32(),this.entity_ids=[];for(let A=0;A<this.num_entities_in_group;A++){const t=g.readUint32();this.entity_ids.push(t)}}},Oi,Kh=(Oi=class extends P{constructor(){super(...arguments),this.box_name="Auto exposure bracketing"}},Oi.fourcc="aebr",Oi),Pi,Th=(Pi=class extends P{constructor(){super(...arguments),this.box_name="Flash exposure information"}},Pi.fourcc="afbr",Pi),$i,qh=($i=class extends P{constructor(){super(...arguments),this.box_name="Album collection"}},$i.fourcc="albc",$i),Ag,Zh=(Ag=class extends P{constructor(){super(...arguments),this.box_name="Alternative entity"}},Ag.fourcc="altr",Ag),tg,Vh=(tg=class extends P{constructor(){super(...arguments),this.box_name="Burst image"}},tg.fourcc="brst",tg),eg,Wh=(eg=class extends P{constructor(){super(...arguments),this.box_name="Depth of field bracketing"}},eg.fourcc="dobr",eg),ig,zh=(ig=class extends P{constructor(){super(...arguments),this.box_name="Equivalent entity"}},ig.fourcc="eqiv",ig),gg,jh=(gg=class extends P{constructor(){super(...arguments),this.box_name="Favorites collection"}},gg.fourcc="favc",gg),Ig,Xh=(Ig=class extends P{constructor(){super(...arguments),this.box_name="Focus bracketing"}},Ig.fourcc="fobr",Ig),sg,Oh=(sg=class extends P{constructor(){super(...arguments),this.box_name="Image item with an audio track"}},sg.fourcc="iaug",sg),ng,Ph=(ng=class extends P{constructor(){super(...arguments),this.box_name="Panorama"}},ng.fourcc="pano",ng),Bg,$h=(Bg=class extends P{constructor(){super(...arguments),this.box_name="Slideshow"}},Bg.fourcc="slid",Bg),Cg,Ac=(Cg=class extends P{constructor(){super(...arguments),this.box_name="Stereo"}},Cg.fourcc="ster",Cg),ag,tc=(ag=class extends P{constructor(){super(...arguments),this.box_name="Time-synchronized capture"}},ag.fourcc="tsyn",ag),Qg,ec=(Qg=class extends P{constructor(){super(...arguments),this.box_name="White balance bracketing"}},Qg.fourcc="wbbr",Qg),rg,ic=(rg=class extends P{constructor(){super(...arguments),this.box_name="Progressive rendering"}},rg.fourcc="prgr",rg),og,gc=(og=class extends P{constructor(){super(...arguments),this.box_name="Image pyramid"}parse(A){this.parseFullHeader(A),this.group_id=A.readUint32(),this.num_entities_in_group=A.readUint32(),this.entity_ids=[];for(let t=0;t<this.num_entities_in_group;t++){const e=A.readUint32();this.entity_ids.push(e)}this.tile_size_x=A.readUint16(),this.tile_size_y=A.readUint16(),this.layer_binning=[],this.tiles_in_layer_column_minus1=[],this.tiles_in_layer_row_minus1=[];for(let t=0;t<this.num_entities_in_group;t++)this.layer_binning[t]=A.readUint16(),this.tiles_in_layer_row_minus1[t]=A.readUint16(),this.tiles_in_layer_column_minus1[t]=A.readUint16()}},og.fourcc="pymd",og),Eg,Ic=(Eg=class extends m{constructor(){super(...arguments),this.box_name="FieldHandlingBox"}parse(A){this.fieldCount=A.readUint8(),this.fieldOrdering=A.readUint8()}},Eg.fourcc="fiel",Eg),hg,sc=(hg=class extends m{constructor(){super(...arguments),this.box_name="OriginalFormatBox"}parse(A){this.data_format=A.readString(4)}},hg.fourcc="frma",hg),cg,nc=(cg=class extends m{constructor(){super(...arguments),this.box_name="ImageMirror"}parse(A){const t=A.readUint8();this.reserved=t>>7,this.axis=t&1}},cg.fourcc="imir",cg),lg,Bc=(lg=class extends w{constructor(){super(...arguments),this.box_name="ItemPropertyAssociationBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.associations=[];for(let e=0;e<t;e++){const i=this.version<1?A.readUint16():A.readUint32(),I=[],s=A.readUint8();for(let n=0;n<s;n++){const B=A.readUint8();I.push({essential:(B&128)>>7===1,property_index:this.flags&1?(B&127)<<8|A.readUint8():B&127})}this.associations.push({id:i,props:I})}}},lg.fourcc="ipma",lg),dg,Cc=(dg=class extends m{constructor(){super(...arguments),this.box_name="ImageRotation"}parse(A){this.angle=A.readUint8()&3}},dg.fourcc="irot",dg),fg,ac=(fg=class extends w{constructor(){super(...arguments),this.box_name="ImageSpatialExtentsProperty"}parse(A){this.parseFullHeader(A),this.image_width=A.readUint32(),this.image_height=A.readUint32()}},fg.fourcc="ispe",fg),ug,Qc=(ug=class extends w{constructor(){super(...arguments),this.box_name="TAITimestampBox"}parse(A){this.TAI_timestamp=A.readUint64();const t=A.readUint8();this.sychronization_state=t>>7&1,this.timestamp_generation_failure=t>>6&1,this.timestamp_is_modified=t>>5&1}},ug.fourcc="itai",ug),wg,rc=(wg=class extends w{constructor(){super(...arguments),this.box_name="KindBox"}parse(A){this.parseFullHeader(A),this.schemeURI=A.readCString(),this.isEndOfBox(A)||(this.value=A.readCString())}write(A){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value?this.value.length+1:0),this.writeHeader(A),A.writeCString(this.schemeURI),this.value&&A.writeCString(this.value)}},wg.fourcc="kind",wg),Dg,oc=(Dg=class extends w{constructor(){super(...arguments),this.box_name="LevelAssignmentBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.levels=[];for(let e=0;e<t;e++){const i={};this.levels[e]=i,i.track_ID=A.readUint32();const I=A.readUint8();switch(i.padding_flag=I>>7,i.assignment_type=I&127,i.assignment_type){case 0:i.grouping_type=A.readString(4);break;case 1:i.grouping_type=A.readString(4),i.grouping_type_parameter=A.readUint32();break;case 2:break;case 3:break;case 4:i.sub_track_id=A.readUint32();break;default:l.warn("BoxParser",`Unknown level assignment type: ${i.assignment_type}`)}}}},Dg.fourcc="leva",Dg),pg,Ec=(pg=class extends m{constructor(){super(...arguments),this.box_name="LHEVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8(),this.min_spatial_segmentation_idc=A.readUint16()&4095,this.parallelismType=A.readUint8()&3;let t=A.readUint8();this.numTemporalLayers=(t&13)>>3,this.temporalIdNested=(t&4)>>2,this.lengthSizeMinusOne=t&3,this.nalu_arrays=[];const e=A.readUint8();for(let i=0;i<e;i++){const I=[];this.nalu_arrays.push(I),t=A.readUint8(),I.completeness=(t&128)>>7,I.nalu_type=t&63;const s=A.readUint16();for(let n=0;n<s;n++){const B=A.readUint16();I.push({data:A.readUint8Array(B)})}}}},pg.fourcc="lhvC",pg),yg,hc=(yg=class extends m{constructor(){super(...arguments),this.box_name="LayerSelectorProperty"}parse(A){this.layer_id=A.readUint16()}},yg.fourcc="lsel",yg),mg,cc=(mg=class extends m{constructor(){super(...arguments),this.box_name="hintmaxrate"}parse(A){this.period=A.readUint32(),this.bytes=A.readUint32()}},mg.fourcc="maxr",mg),Ks=class{constructor(g,A){this.x=g,this.y=A}toString(){return"("+this.x+","+this.y+")"}},Gg,lc=(Gg=class extends m{constructor(){super(...arguments),this.box_name="MasteringDisplayColourVolumeBox"}parse(A){this.display_primaries=[],this.display_primaries[0]=new Ks(A.readUint16(),A.readUint16()),this.display_primaries[1]=new Ks(A.readUint16(),A.readUint16()),this.display_primaries[2]=new Ks(A.readUint16(),A.readUint16()),this.white_point=new Ks(A.readUint16(),A.readUint16()),this.max_display_mastering_luminance=A.readUint32(),this.min_display_mastering_luminance=A.readUint32()}},Gg.fourcc="mdcv",Gg),Sg,dc=(Sg=class extends w{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessOffsetBox"}parse(A){this.parseFullHeader(A),this._size=A.readUint32()}},Sg.fourcc="mfro",Sg),Fg,fc=(Fg=class extends w{constructor(){super(...arguments),this.box_name="MaskConfigurationProperty"}parse(A){this.parseFullHeader(A),this.bits_per_pixel=A.readUint8()}},Fg.fourcc="mskC",Fg),Ng,uc=(Ng=class extends m{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint32()}},Ng.fourcc="npck",Ng),Rg,wc=(Rg=class extends m{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint64()}},Rg.fourcc="nump",Rg),Dc=class{constructor(g,A){this.pad1=g,this.pad2=A}},xg,pc=(xg=class extends w{constructor(){super(...arguments),this.box_name="PaddingBitsBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.padbits=[];for(let e=0;e<Math.floor((t+1)/2);e++){const i=A.readUint8(),I=(i&112)>>4,s=i&7;this.padbits.push(new Dc(I,s))}}},xg.fourcc="padb",xg),Ug,yc=(Ug=class extends m{constructor(){super(...arguments),this.box_name="PixelAspectRatioBox"}parse(A){this.hSpacing=A.readUint32(),this.vSpacing=A.readUint32()}},Ug.fourcc="pasp",Ug),Mg,mc=(Mg=class extends m{constructor(){super(...arguments),this.box_name="CuePayloadBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},Mg.fourcc="payl",Mg),bg,Gc=(bg=class extends m{constructor(){super(...arguments),this.box_name="hintpayloadID"}parse(A){this.payloadID=A.readUint32();const t=A.readUint8();this.rtpmap_string=A.readString(t)}},bg.fourcc="payt",bg),kg,Sc=(kg=class extends w{constructor(){super(...arguments),this.box_name="ProgressiveDownloadInfoBox",this.rate=[],this.initial_delay=[]}parse(A){this.parseFullHeader(A);const t=(this.size-this.hdr_size)/8;for(let e=0;e<t;e++)this.rate[e]=A.readUint32(),this.initial_delay[e]=A.readUint32()}},kg.fourcc="pdin",kg),Yg,Fc=(Yg=class extends w{constructor(){super(...arguments),this.box_name="PixelInformationProperty"}parse(A){this.parseFullHeader(A),this.num_channels=A.readUint8(),this.bits_per_channels=[];for(let t=0;t<this.num_channels;t++)this.bits_per_channels[t]=A.readUint8()}},Yg.fourcc="pixi",Yg),_g,Nc=(_g=class extends m{constructor(){super(...arguments),this.box_name="hintlargestpacket"}parse(A){this.bytes=A.readUint32()}},_g.fourcc="pmax",_g),Lg,Rc=(Lg=class extends w{constructor(){super(...arguments),this.box_name="ProgressiveDerivedImageItemInformationProperty"}parse(A){if(this.parseFullHeader(A),this.step_count=A.readUint16(),this.item_count=[],this.flags&2)for(let t=0;t<this.step_count;t++)this.item_count[t]=A.readUint16()}},Lg.fourcc="prdi",Lg),Jg,xc=(Jg=class extends w{constructor(){super(...arguments),this.box_name="ProjectionFormatBox"}parse(A){this.parseFullHeader(A),this.projection_type=A.readUint8()&31}},Jg.fourcc="prfr",Jg),Hg,Uc=(Hg=class extends w{constructor(){super(...arguments),this.box_name="ProducerReferenceTimeBox"}parse(A){this.parseFullHeader(A),this.ref_track_id=A.readUint32(),this.ntp_timestamp=A.readUint64(),this.version===0?this.media_time=A.readUint32():this.media_time=A.readUint64()}},Hg.fourcc="prft",Hg),vg,Mc=(vg=class extends w{constructor(){super(...arguments),this.box_name="ProtectionSystemSpecificHeaderBox"}parse(A){if(this.parseFullHeader(A),this.system_id=KA(A),this.kid=[],this.version>0){const e=A.readUint32();for(let i=0;i<e;i++)this.kid[i]=KA(A)}const t=A.readUint32();t>0&&(this.protection_data=A.readUint8Array(t))}},vg.fourcc="pssh",vg),Kg,bc=(Kg=class extends w{constructor(){super(...arguments),this.box_name="TrackCleanApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Kg.fourcc="clef",Kg);function kc(g,A){if(g===ds.Types.UTF8)return new TextDecoder("utf-8").decode(A);const t=new DataView(A.buffer);if(g===ds.Types.BE_UNSIGNED_INT){if(A.length===1)return t.getUint8(0);if(A.length===2)return t.getUint16(0,!1);if(A.length===4)return t.getUint32(0,!1);if(A.length===8)return t.getBigUint64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_UNSIGNED_INT length "+A.length)}else if(g===ds.Types.BE_SIGNED_INT){if(A.length===1)return t.getInt8(0);if(A.length===2)return t.getInt16(0,!1);if(A.length===4)return t.getInt32(0,!1);if(A.length===8)return t.getBigInt64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_SIGNED_INT length "+A.length)}else if(g===ds.Types.BE_FLOAT32)return t.getFloat32(0,!1);l.warn("DataBox","Unsupported or unimplemented itif data type: "+g)}var vA,ds=(vA=class extends m{constructor(){super(...arguments),this.box_name="DataBox"}parse(A){this.valueType=A.readUint32(),this.country=A.readUint16(),this.country>255&&(A.seek(A.getPosition()-2),this.countryString=A.readString(2)),this.language=A.readUint16(),this.language>255&&(A.seek(A.getPosition()-2),this.parseLanguage(A)),this.raw=A.readUint8Array(this.size-this.hdr_size-8),this.value=kc(this.valueType,this.raw)}},vA.fourcc="data",vA.Types={RESERVED:0,UTF8:1,UTF16:2,SJIS:3,UTF8_SORT:4,UTF16_SORT:5,JPEG:13,PNG:14,BE_SIGNED_INT:21,BE_UNSIGNED_INT:22,BE_FLOAT32:23,BE_FLOAT64:24,BMP:27,QT_ATOM:28,BE_SIGNED_INT8:65,BE_SIGNED_INT16:66,BE_SIGNED_INT32:67,BE_FLOAT32_POINT:70,BE_FLOAT32_DIMENSIONS:71,BE_FLOAT32_RECT:72,BE_SIGNED_INT64:74,BE_UNSIGNED_INT8:75,BE_UNSIGNED_INT16:76,BE_UNSIGNED_INT32:77,BE_UNSIGNED_INT64:78,BE_FLOAT64_AFFINE_TRANSFORM:79},vA),Tg,Yc=(Tg=class extends w{constructor(){super(...arguments),this.box_name="TrackEncodedPixelsDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Tg.fourcc="enof",Tg),qg,_c=(qg=class extends m{constructor(){super(...arguments),this.box_name="IlstBox"}parse(A){this.list={};let t=this.size-this.hdr_size;for(;t>0;){const e=A.readUint32(),i=A.readUint32(),I=hA(A,!1,e-8);I.code===CA&&(this.list[i]=I.box),t-=e}}},qg.fourcc="ilst",qg),Zg,Lc=(Zg=class extends w{constructor(){super(...arguments),this.box_name="KeysBox"}parse(A){this.parseFullHeader(A),this.count=A.readUint32(),this.keys={};for(let t=0;t<this.count;t++){const e=A.readUint32();this.keys[t+1]=A.readString(e-4)}}},Zg.fourcc="keys",Zg),Vg,Jc=(Vg=class extends w{constructor(){super(...arguments),this.box_name="TrackProductionApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Vg.fourcc="prof",Vg),Wg,Hc=(Wg=class extends U{constructor(){super(...arguments),this.box_name="TrackApertureModeDimensionsBox",this.clefs=[],this.profs=[],this.enofs=[],this.subBoxNames=["clef","prof","enof"]}},Wg.fourcc="tapt",Wg),zg,vc=(zg=class extends U{constructor(){super(...arguments),this.box_name="siDecompressionParamBox"}},zg.fourcc="wave",zg),jg,Kc=(jg=class extends m{constructor(){super(...arguments),this.box_name="rtpmoviehintinformation"}parse(A){this.descriptionformat=A.readString(4),this.sdptext=A.readString(this.size-this.hdr_size-4)}},jg.fourcc="rtp ",jg),Xg,Tc=(Xg=class extends w{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationOffsetsBox"}parse(A){this.parseFullHeader(A),this.flags&1&&(this.aux_info_type=A.readString(4),this.aux_info_type_parameter=A.readUint32());const t=A.readUint32();this.offset=[];for(let e=0;e<t;e++)this.version===0?this.offset[e]=A.readUint32():this.offset[e]=A.readUint64()}},Xg.fourcc="saio",Xg),Og,qc=(Og=class extends w{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationSizesBox"}parse(A){if(this.parseFullHeader(A),this.flags&1&&(this.aux_info_type=A.readString(4),this.aux_info_type_parameter=A.readUint32()),this.default_sample_info_size=A.readUint8(),this.sample_count=A.readUint32(),this.sample_info_size=[],this.default_sample_info_size===0)for(let t=0;t<this.sample_count;t++)this.sample_info_size[t]=A.readUint8()}},Og.fourcc="saiz",Og),Zc=class{constructor(g,A){this.bad_pixel_row=g,this.bad_pixel_column=A}toString(){return"[row: "+this.bad_pixel_row+", column: "+this.bad_pixel_column+"]"}},Pg,Vc=(Pg=class extends w{constructor(){super(...arguments),this.box_name="SensorBadPixelsMapBox"}parse(A){this.parseFullHeader(A),this.component_count=A.readUint16(),this.component_index=[];for(let e=0;e<this.component_count;e++)this.component_index.push(A.readUint16());const t=A.readUint8();this.correction_applied=(t&128)===128,this.num_bad_rows=A.readUint32(),this.num_bad_cols=A.readUint32(),this.num_bad_pixels=A.readUint32(),this.bad_rows=[],this.bad_columns=[],this.bad_pixels=[];for(let e=0;e<this.num_bad_rows;e++)this.bad_rows.push(A.readUint32());for(let e=0;e<this.num_bad_cols;e++)this.bad_columns.push(A.readUint32());for(let e=0;e<this.num_bad_pixels;e++){const i=A.readUint32(),I=A.readUint32();this.bad_pixels.push(new Zc(i,I))}}},Pg.fourcc="sbpm",Pg),$g,Wc=($g=class extends w{constructor(){super(...arguments),this.box_name="SchemeTypeBox"}parse(A){this.parseFullHeader(A),this.scheme_type=A.readString(4),this.scheme_version=A.readUint32(),this.flags&1&&(this.scheme_uri=A.readString(this.size-this.hdr_size-8))}},$g.fourcc="schm",$g),AI,zc=(AI=class extends m{constructor(){super(...arguments),this.box_name="rtptracksdphintinformation"}parse(A){this.sdptext=A.readString(this.size-this.hdr_size)}},AI.fourcc="sdp ",AI),tI,jc=(tI=class extends w{constructor(){super(...arguments),this.box_name="SampleEncryptionBox"}},tI.fourcc="senc",tI),eI,Xc=(eI=class extends w{constructor(){super(...arguments),this.box_name="SMPTE2086MasteringDisplayMetadataBox"}parse(A){this.parseFullHeader(A),this.primaryRChromaticity_x=A.readUint16(),this.primaryRChromaticity_y=A.readUint16(),this.primaryGChromaticity_x=A.readUint16(),this.primaryGChromaticity_y=A.readUint16(),this.primaryBChromaticity_x=A.readUint16(),this.primaryBChromaticity_y=A.readUint16(),this.whitePointChromaticity_x=A.readUint16(),this.whitePointChromaticity_y=A.readUint16(),this.luminanceMax=A.readUint32(),this.luminanceMin=A.readUint32()}},eI.fourcc="SmDm",eI),iI,Oc=(iI=class extends w{constructor(){super(...arguments),this.box_name="SamplingRateBox"}parse(A){this.parseFullHeader(A),this.sampling_rate=A.readUint32()}},iI.fourcc="srat",iI),gI,Pc=(gI=class extends w{constructor(){super(...arguments),this.box_name="CompressedSubsegmentIndexBox"}parse(A){this.parseFullHeader(A),this.subsegments=[];const t=A.readUint32();for(let e=0;e<t;e++){const i={};this.subsegments.push(i),i.ranges=[];const I=A.readUint32();for(let s=0;s<I;s++){const n={};i.ranges.push(n),n.level=A.readUint8(),n.range_size=A.readUint24()}}}},gI.fourcc="ssix",gI),II,$c=(II=class extends w{constructor(){super(...arguments),this.box_name="DegradationPriorityBox"}parse(A){this.parseFullHeader(A);const t=(this.size-this.hdr_size)/2;this.priority=[];for(let e=0;e<t;e++)this.priority[e]=A.readUint16()}},II.fourcc="stpd",II),sI,Al=(sI=class extends w{constructor(){super(...arguments),this.box_name="SubTrackInformationBox"}parse(A){this.parseFullHeader(A),this.switch_group=A.readUint16(),this.alternate_group=A.readUint16(),this.sub_track_id=A.readUint32();const t=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(let e=0;e<t;e++)this.attribute_list[e]=A.readUint32()}},sI.fourcc="stri",sI),nI,tl=(nI=class extends w{constructor(){super(...arguments),this.box_name="SubTrackSampleGroupBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readUint32();const t=A.readUint16();this.group_description_index=[];for(let e=0;e<t;e++)this.group_description_index[e]=A.readUint32()}},nI.fourcc="stsg",nI),BI,el=(BI=class extends w{constructor(){super(...arguments),this.box_name="ShadowSyncSampleBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],this.version===0)for(let e=0;e<t;e++)this.shadowed_sample_numbers.push(A.readUint32()),this.sync_sample_numbers.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(A),A.writeUint32(this.shadowed_sample_numbers.length);for(let t=0;t<this.shadowed_sample_numbers.length;t++)A.writeUint32(this.shadowed_sample_numbers[t]),A.writeUint32(this.sync_sample_numbers[t])}},BI.fourcc="stsh",BI),CI,il=(CI=class extends w{constructor(){super(...arguments),this.box_name="SyncSampleBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.version===0){this.sample_numbers=[];for(let e=0;e<t;e++)this.sample_numbers.push(A.readUint32())}}write(A){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(A),A.writeUint32(this.sample_numbers.length),A.writeUint32Array(this.sample_numbers)}},CI.fourcc="stss",CI),aI,gl=(aI=class extends w{constructor(){super(...arguments),this.box_name="StereoVideoBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.single_view_allowed=t&3,this.stereo_scheme=A.readUint32();const e=A.readUint32();for(this.stereo_indication_type=A.readString(e),this.boxes=[];A.getPosition()<this.start+this.size;){const i=hA(A,!1,this.size-(A.getPosition()-this.start));if(i.code===CA){const I=i.box;this.boxes.push(I),this[I.type]=I}else return}}},aI.fourcc="stvi",aI),QI,Il=(QI=class extends m{constructor(){super(...arguments),this.box_name="SegmentTypeBox"}parse(A){let t=this.size-this.hdr_size;this.major_brand=A.readString(4),this.minor_version=A.readUint32(),t-=8,this.compatible_brands=[];let e=0;for(;t>=4;)this.compatible_brands[e]=A.readString(4),t-=4,e++}write(A){this.size=8+4*this.compatible_brands.length,this.writeHeader(A),A.writeString(this.major_brand,void 0,4),A.writeUint32(this.minor_version);for(let t=0;t<this.compatible_brands.length;t++)A.writeString(this.compatible_brands[t],void 0,4)}},QI.fourcc="styp",QI),rI,sl=(rI=class extends w{constructor(){super(...arguments),this.box_name="CompactSampleSizeBox"}parse(A){if(this.parseFullHeader(A),this.sample_sizes=[],this.version===0){this.reserved=A.readUint24(),this.field_size=A.readUint8();const t=A.readUint32();if(this.field_size===4)for(let e=0;e<t;e+=2){const i=A.readUint8();this.sample_sizes[e]=i>>4&15,this.sample_sizes[e+1]=i&15}else if(this.field_size===8)for(let e=0;e<t;e++)this.sample_sizes[e]=A.readUint8();else if(this.field_size===16)for(let e=0;e<t;e++)this.sample_sizes[e]=A.readUint16();else l.error("BoxParser","Error in length field in stz2 box",A.isofile)}}},rI.fourcc="stz2",rI),oI,nl=(oI=class extends w{constructor(){super(...arguments),this.box_name="SubSampleInformationBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.entries=[];let e;for(let i=0;i<t;i++){const I={};if(this.entries[i]=I,I.sample_delta=A.readUint32(),I.subsamples=[],e=A.readUint16(),e>0)for(let s=0;s<e;s++){const n={};I.subsamples.push(n),this.version===1?n.size=A.readUint32():n.size=A.readUint16(),n.priority=A.readUint8(),n.discardable=A.readUint8(),n.codec_specific_parameters=A.readUint32()}}}},oI.fourcc="subs",oI),EI,Bl=(EI=class extends w{constructor(){super(...arguments),this.box_name="TAIClockInfoBox"}parse(A){this.time_uncertainty=A.readUint64(),this.clock_resolution=A.readUint32(),this.clock_drift_rate=A.readInt32();const t=A.readUint8();this.clock_type=(t&192)>>6}},EI.fourcc="taic",EI),hI,Cl=(hI=class extends w{constructor(){super(...arguments),this.box_name="TrackEncryptionBox"}parse(A){if(this.parseFullHeader(A),A.readUint8(),this.version===0)A.readUint8();else{const t=A.readUint8();this.default_crypt_byte_block=t>>4&15,this.default_skip_byte_block=t&15}this.default_isProtected=A.readUint8(),this.default_Per_Sample_IV_Size=A.readUint8(),this.default_KID=KA(A),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=A.readUint8(),this.default_constant_IV=A.readUint8Array(this.default_constant_IV_size))}},hI.fourcc="tenc",hI),cI,al=(cI=class extends w{constructor(){super(...arguments),this.box_name="TrackFragmentRandomAccessBox"}parse(A){this.parseFullHeader(A),this.track_ID=A.readUint32(),A.readUint24();const t=A.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=t&3,this.entries=[];const e=A.readUint32();for(let i=0;i<e;i++)this.version===1?(this.time=A.readUint64(),this.moof_offset=A.readUint64()):(this.time=A.readUint32(),this.moof_offset=A.readUint32()),this.traf_number=A["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=A["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=A["readUint"+8*(this.length_size_of_sample_num+1)]()}},cI.fourcc="tfra",cI),lI,Ql=(lI=class extends m{constructor(){super(...arguments),this.box_name="hintmaxrelativetime"}parse(A){this.time=A.readUint32()}},lI.fourcc="tmax",lI),dI,rl=(dI=class extends m{constructor(){super(...arguments),this.box_name="hintminrelativetime"}parse(A){this.time=A.readUint32()}},dI.fourcc="tmin",dI),fI,ol=(fI=class extends m{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},fI.fourcc="totl",fI),uI,El=(uI=class extends m{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},uI.fourcc="tpay",uI),wI,hl=(wI=class extends m{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},wI.fourcc="tpyl",wI),DI,cl=(DI=class extends Io{},DI.fourcc="msrc",DI),UA,ll=(UA=class extends m{constructor(){super(...arguments),this.box_name="TrackReferenceBox",this.references=[]}parse(A){for(;A.getPosition()<this.start+this.size;){const t=hA(A,!0,this.size-(A.getPosition()-this.start));if(t.code===CA){UA.allowed_types.includes(t.type)||l.warn("BoxParser",`Unknown track reference type: '${t.type}'`);const e=new Bo(t.type,t.size,t.hdr_size,t.start);e.write===m.prototype.write&&e.type!=="mdat"&&(l.info("BoxParser","TrackReference "+e.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(A)),e.parse(A),this.references.push(e)}else return}}},UA.fourcc="tref",UA.allowed_types=["hint","cdsc","font","hind","vdep","vplx","subt","thmb","auxl","cdtg","shsc","aest"],UA),pI,dl=(pI=class extends w{constructor(){super(...arguments),this.box_name="TrackExtensionPropertiesBox"}parse(A){for(this.parseFullHeader(A),this.track_ID=A.readUint32(),this.boxes=[];A.getPosition()<this.start+this.size;){const t=hA(A,!1,this.size-(A.getPosition()-this.start));if(t.code===CA){const e=t.box;this.boxes.push(e)}else return}}},pI.fourcc="trep",pI),yI,fl=(yI=class extends m{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},yI.fourcc="trpy",yI),mI,ul=(mI=class extends w{constructor(){super(...arguments),this.box_name="TrackSelectionBox"}parse(A){this.parseFullHeader(A),this.switch_group=A.readUint32();const t=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(let e=0;e<t;e++)this.attribute_list[e]=A.readUint32()}},mI.fourcc="tsel",mI),GI,wl=(GI=class extends w{constructor(){super(...arguments),this.box_name="TextConfigBox"}parse(A){this.parseFullHeader(A),this.config=A.readCString()}},GI.fourcc="txtc",GI),SI,Dl=(SI=class extends m{constructor(){super(...arguments),this.box_name="TypeCombinationBox"}parse(A){const t=(this.size-this.hdr_size)/4;this.compatible_brands=[];for(let e=0;e<t;e++)this.compatible_brands[e]=A.readString(4)}},SI.fourcc="tyco",SI),FI,pl=(FI=class extends w{constructor(){super(...arguments),this.box_name="UserDescriptionProperty"}parse(A){this.parseFullHeader(A),this.lang=A.readCString(),this.name=A.readCString(),this.description=A.readCString(),this.tags=A.readCString()}},FI.fourcc="udes",FI),NI,yl=(NI=class extends w{constructor(){super(...arguments),this.box_name="UncompressedFrameConfigBox"}parse(A){if(this.parseFullHeader(A),this.profile=A.readString(4),this.version!==1){if(this.version===0){this.component_count=A.readUint32(),this.component_index=[],this.component_bit_depth_minus_one=[],this.component_format=[],this.component_align_size=[];for(let e=0;e<this.component_count;e++)this.component_index.push(A.readUint16()),this.component_bit_depth_minus_one.push(A.readUint8()),this.component_format.push(A.readUint8()),this.component_align_size.push(A.readUint8());this.sampling_type=A.readUint8(),this.interleave_type=A.readUint8(),this.block_size=A.readUint8();const t=A.readUint8();this.component_little_endian=t>>7&1,this.block_pad_lsb=t>>6&1,this.block_little_endian=t>>5&1,this.block_reversed=t>>4&1,this.pad_unknown=t>>3&1,this.pixel_size=A.readUint32(),this.row_align_size=A.readUint32(),this.tile_align_size=A.readUint32(),this.num_tile_cols_minus_one=A.readUint32(),this.num_tile_rows_minus_one=A.readUint32()}}}},NI.fourcc="uncC",NI),RI,ml=(RI=class extends w{constructor(){super(...arguments),this.box_name="DataEntryUrnBox"}parse(A){this.parseFullHeader(A),this.name=A.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=A.readCString())}write(A){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(A),A.writeCString(this.name),this.location&&A.writeCString(this.location)}},RI.fourcc="urn ",RI),xI,Gl=(xI=class extends m{constructor(){super(...arguments),this.box_name="WebVTTConfigurationBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},xI.fourcc="vttC",xI),UI,Sl=(UI=class extends w{constructor(){super(...arguments),this.box_name="VvcNALUConfigBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.lengthSizeMinusOne=t&3}},UI.fourcc="vvnC",UI),MI,Fl=(MI=class extends T{parse(A){const t=A.readUint16();this.first_output_sample=A.readUint16(),this.sample_offset=[];for(let i=0;i<t;i++)this.sample_offset[i]=A.readUint32();const e=this.description_length-4-4*t;this.num_output_samples=[],this.num_total_samples=[];for(let i=0;i<e/4;i++)this.num_output_samples[i]=A.readUint16(),this.num_total_samples[i]=A.readUint16()}},MI.grouping_type="alst",MI),bI,Nl=(bI=class extends T{parse(A){this.layerNumber=A.readUint8(),this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()}},bI.grouping_type="avll",bI),kI,Rl=(kI=class extends T{parse(A){this.subSequenceIdentifier=A.readUint16(),this.layerNumber=A.readUint8();const t=A.readUint8();this.durationFlag=t>>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=A.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()),this.dependency=[];const e=A.readUint8();for(let i=0;i<e;i++)this.dependency.push({subSeqDirectionFlag:A.readUint8(),layerNumber:A.readUint8(),subSequenceIdentifier:A.readUint16()})}},kI.grouping_type="avss",kI),YI,xl=(YI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},YI.grouping_type="dtrt",YI),_I,Ul=(_I=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},_I.grouping_type="mvif",_I),LI,Ml=(LI=class extends T{parse(A){this.roll_distance=A.readInt16()}},LI.grouping_type="prol",LI),JI,bl=(JI=class extends T{parse(A){const t=A.readUint8();this.num_leading_samples_known=t>>7,this.num_leading_samples=t&127}},JI.grouping_type="rap ",JI),HI,kl=(HI=class extends T{parse(A){if(this.operation_point_count=A.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)l.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=A.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=A.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(let t=0;t<this.operation_point_count;t++)this.available_bitrate[t]=A.readUint32(),this.target_rate_share[t]=A.readUint16()}this.maximum_bitrate=A.readUint32(),this.minimum_bitrate=A.readUint32(),this.discard_priority=A.readUint8()}}},HI.grouping_type="rash",HI),vI,Yl=(vI=class extends T{parse(A){this.roll_distance=A.readInt16()}},vI.grouping_type="roll",vI),KI,_l=(KI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},KI.grouping_type="scif",KI),TI,Ll=(TI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},TI.grouping_type="scnm",TI),qI,Jl=(qI=class extends T{parse(A){this.reserved=A.readUint8();const t=A.readUint8();this.crypt_byte_block=t>>4,this.skip_byte_block=t&15,this.isProtected=A.readUint8(),this.Per_Sample_IV_Size=A.readUint8(),this.KID=KA(A),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=A.readUint8(),this.constant_IV=A.readUint8Array(this.constant_IV_size))}},qI.grouping_type="seig",qI),ZI,Hl=(ZI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},ZI.grouping_type="stsa",ZI),VI,vl=(VI=class extends T{parse(A){const t=A.readUint8();this.NAL_unit_type=t&63}},VI.grouping_type="sync",VI),WI,Kl=(WI=class extends T{parse(A){const t=A.readUint8();this.level_independently_decodable=t>>7}},WI.grouping_type="tele",WI),zI,Tl=(zI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},zI.grouping_type="tsas",zI),jI,ql=(jI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},jI.grouping_type="tscl",jI),XI,Zl=(XI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},XI.grouping_type="vipr",XI),OI,Vl=(OI=class extends m{},OI.fourcc="uuid",OI),PI,ns=(PI=class extends w{},PI.fourcc="uuid",PI),$I,Wl=($I=class extends ns{constructor(){super(...arguments),this.box_name="LiveServerManifestBox"}parse(A){this.parseFullHeader(A),this.LiveServerManifest=A.readString(this.size-this.hdr_size).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}},$I.uuid="a5d40b30e81411ddba2f0800200c9a66",$I),As,zl=(As=class extends ns{constructor(){super(...arguments),this.box_name="PiffProtectionSystemSpecificHeaderBox"}parse(A){this.parseFullHeader(A),this.system_id=KA(A);const t=A.readUint32();t>0&&(this.data=A.readUint8Array(t))}},As.uuid="d08a4f1810f34a82b6c832d8aba183d3",As),ts,jl=(ts=class extends ns{constructor(){super(...arguments),this.box_name="PiffSampleEncryptionBox"}},ts.uuid="a2394f525a9b4f14a2446c427c648df4",ts),es,Xl=(es=class extends ns{constructor(){super(...arguments),this.box_name="PiffTrackEncryptionBox"}parse(A){this.parseFullHeader(A),this.default_AlgorithmID=A.readUint24(),this.default_IV_size=A.readUint8(),this.default_KID=KA(A)}},es.uuid="8974dbce7be74c5184f97148f9882554",es),is,Ol=(is=class extends ns{constructor(){super(...arguments),this.box_name="TfrfBox"}parse(A){this.parseFullHeader(A),this.fragment_count=A.readUint8(),this.entries=[];for(let t=0;t<this.fragment_count;t++){let e=0,i=0;this.version===1?(e=A.readUint64(),i=A.readUint64()):(e=A.readUint32(),i=A.readUint32()),this.entries.push({absolute_time:e,absolute_duration:i})}}},is.uuid="d4807ef2ca3946958e5426cb9e46a79f",is),gs,Pl=(gs=class extends ns{constructor(){super(...arguments),this.box_name="TfxdBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.absolute_time=A.readUint64(),this.duration=A.readUint64()):(this.absolute_time=A.readUint32(),this.duration=A.readUint32())}},gs.uuid="6d1d9b0542d544e680e2141daff757b2",gs),Is,$l=(Is=class extends Vl{constructor(){super(...arguments),this.box_name="ItemContentIDProperty"}parse(A){this.content_id=A.readCString()}},Is.uuid="261ef3741d975bbaacbd9d2c8ea73522",Is);Eo(Ca);ho(ga);const Ad=800;function td(g){return g.startsWith("avc1")||g.startsWith("avc3")}function ed(g){const A=new Uint8Array(g);if(A.byteLength<8)return g;const t=A[4],e=A[5],i=A[6],I=A[7];return t===97&&e===118&&i===99&&I===67?g.slice(8):g}function id(g){const A=g.avcC;if(!A)return;const t=new gA;A.write(t);const e=t.byteLength;if(e<=0)return;const i=t.buffer.slice(0,e);return ed(i)}function gd(g){return new Promise((A,t)=>{const e=sh(),i=g.slice(0);i.fileStart=0,e.onError=I=>{t(new Error(`mp4box: ${I}`))},e.onReady=I=>{var s,n,B,C,a,Q,o;const r=(s=I.videoTracks)==null?void 0:s[0];if(!r){t(new Error("mp4box: no video track"));return}if(!td(r.codec)){t(new Error(`mp4box: unsupported video codec ${r.codec}`));return}if(r.nb_samples>Ad){t(new Error(`mp4box: too many samples (${r.nb_samples})`));return}const E=[];e.onSamples=(c,f,d)=>{E.push(...d)},e.setExtractionOptions(r.id,null,{nbSamples:Math.max(r.nb_samples,1)}),e.start();const h=r.timescale>0?r.duration/r.timescale:I.duration/(I.timescale||1);if(E.length===0){t(new Error("mp4box: extraction produced no samples"));return}A({codec:r.codec,timescale:r.timescale,durationSec:Number.isFinite(h)?h:0,videoWidth:(C=(B=(n=r.video)==null?void 0:n.width)!=null?B:r.track_width)!=null?C:0,videoHeight:(o=(Q=(a=r.video)==null?void 0:a.height)!=null?Q:r.track_height)!=null?o:0,samples:E})},e.appendBuffer(i),e.flush()})}const _B=25e3;async function Id(g,A,t){const e=performance.now();let i=0;for(;g.decodeQueueSize>0;)if(await new Promise(I=>queueMicrotask(I)),i++,i%120===0&&await new Promise(I=>setTimeout(I,0)),performance.now()-e>t){console.warn("[GiftStage:WC] decodeQueue drain gave up",{label:A,decodeQueueSize:g.decodeQueueSize,spins:i});break}}async function sd(g,A){console.info("[GiftStage:WC] VideoDecoder.flush…",A);try{await Promise.race([g.flush(),new Promise((t,e)=>{setTimeout(()=>e(new Error(`VideoDecoder.flush() timed out after ${_B}ms (${JSON.stringify(A)})`)),_B)})])}catch(t){try{g.close()}catch(e){}throw t}}async function nd(g,A,t,e){var i,I;if(t.length===0)return{frames:[],timesSec:new Float64Array(0)};const s=[...t].sort((E,h)=>{var c,f,d,u;const p=((f=(c=E.dts)!=null?c:E.cts)!=null?f:0)-((u=(d=h.dts)!=null?d:h.cts)!=null?u:0);return p!==0?p:0}),n=[],B=new VideoDecoder({output:E=>{n.push(E)},error:E=>{throw E}}),C=await Cd(g,A);B.configure(C);let a=0;for(const E of s){const h=E.data;if(!h||h.byteLength===0)continue;const c=(I=(i=E.cts)!=null?i:E.dts)!=null?I:0,f=Math.round(c/e*1e6),d=E.duration&&e>0?Math.round(E.duration/e*1e6):void 0,u=new Uint8Array(h.byteLength);u.set(h);const p=new EncodedVideoChunk({type:E.is_sync?"key":"delta",timestamp:f,duration:d,data:u});try{B.decode(p)}catch(D){console.error("[GiftStage:WC] decoder.decode failed",{chunkIndex:a,err:D});try{B.close()}catch(y){}throw D}a++,await new Promise(D=>queueMicrotask(D))}await Id(B,"after last decode",1e4);const Q=B.decodeQueueSize,o=n.length;await sd(B,{chunksDecoded:a,outputsBeforeFlush:o,queueBeforeFlush:Q}),B.close(),n.sort((E,h)=>E.timestamp-h.timestamp);const r=Float64Array.from(n.map(E=>E.timestamp/1e6));if(n.length===0)throw new Error("WebCodecs: decoder produced no frames");return{frames:n,timesSec:r}}function Hn(g,A,t){if(g.length===0)return 0;const e=g.length;if(t<=g[0])return 0;const i=g[e-1];if(t>=A||t>=i)return e-1;for(let I=1;I<e;I++)if(t<g[I])return I-1;return e-1}function Bd(g,A,t){if(t.length===0)return 1e-6;const e=t.length-1,i=t[e],I=A.length>e?A[e]:0;let s=0;i.duration!=null&&Number.isFinite(i.duration)&&i.duration>0?s=i.duration/1e6:A.length>=2?s=A[e]-A[e-1]:s=1/30;const n=I+s;let B=g>0?g:n;if(!(B>0)&&A.length>=2){const C=(A[A.length-1]-A[0])/(A.length-1);B=A[A.length-1]+(C>0?C:1/30)}return B>0||(B=Math.max(n,1/30)),B}async function Cd(g,A){var t;const e={codec:g,hardwareAcceleration:"prefer-software",...A&&A.byteLength>0?{description:A}:{}};let i=await VideoDecoder.isConfigSupported(e),I=e;if(!i.supported){const s={codec:g,...A&&A.byteLength>0?{description:A}:{}};if(i=await VideoDecoder.isConfigSupported(s),!i.supported)throw new Error(`WebCodecs: unsupported config ${g}`);I=s}return(t=i.config)!=null?t:I}const aa=`var Xn = (r) => {
1192
+ `,xB=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",DC],{type:"text/javascript;charset=utf-8"});function Tr(g){let A;try{if(A=xB&&(self.URL||self.webkitURL).createObjectURL(xB),!A)throw"";const t=new Worker(A,{type:"module",name:g==null?void 0:g.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(DC),{type:"module",name:g==null?void 0:g.name})}}let Qs=null,qr=1;const ls=new Map;function Zr(){return Qs||(Qs=new Tr,Qs.addEventListener("message",g=>{const A=g.data;if(!A||A.type!=="parse-svga-result"||A.id==null)return;const t=ls.get(A.id);t&&(ls.delete(A.id),A.error?t.reject(new Error(A.error)):A.result?t.resolve(A.result):t.reject(new Error("SVGA worker: empty result")))}),Qs.addEventListener("error",g=>{const A=g.message||"SVGA parser worker error";for(const[,t]of ls)t.reject(new Error(A));ls.clear()})),Qs}function Vr(g){const A=Zr(),t=qr++,e=g.slice(0);return new Promise((i,I)=>{ls.set(t,{resolve:i,reject:I}),A.postMessage({type:"parse-svga",id:t,data:e},[e])})}function Wr(g){const A=new Map;for(const[t,e]of Object.entries(g.images))A.set(t,new Uint8Array(e));return{version:g.version,params:g.params,sprites:g.sprites,audios:g.audios,images:A}}const bn=[73,68,51],kn=2,Ks=new Map,zs=new WeakMap,Yn=new WeakMap;async function zr(){await new Promise(g=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>g());return}setTimeout(g,0)})}function jr(g,A){return!!(g.startsWith("audio")||A.length>=3&&A[0]===bn[0]&&A[1]===bn[1]&&A[2]===bn[2])}async function Xr(g){const A=new Map,t=new Map,e=[];for(const[i,I]of g.images){if(jr(i,I)){const s=I.buffer;t.set(i,s.slice(I.byteOffset,I.byteOffset+I.byteLength));continue}I.length!==0&&e.push([i,I])}for(let i=0;i<e.length;i+=kn){const I=e.slice(i,i+kn);await Promise.all(I.map(async([s,n])=>{try{const B=await createImageBitmap(new Blob([new Uint8Array(n)]),{premultiplyAlpha:"none"});A.set(s,B)}catch(B){}})),i+kn<e.length&&await zr()}return{movie:g,imageBitmaps:A,audioBlobs:t}}async function RB(g){return Xr(Wr(g))}function Or(g){const A={};for(const[t,e]of g.images)A[t]=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return{version:g.version,params:g.params,sprites:g.sprites,audios:g.audios,images:A}}async function pC(g,A,t,e){if(!A){const I=zs.get(g);if(I)return I;const s=Yn.get(g);if(s)return s}if(A){const I=nB(A);if(I)return I;const s=Ks.get(A);if(s)return s}const i=Wn(async()=>{if(e)try{const B=new Uint8Array(t).slice().buffer,C=await Vr(B);return A?GB(A,C):zs.set(g,C),C}catch(B){console.warn("[GiftStage:SVGA] worker parse failed, using main thread",B)}const I=XA()&&cQ(t)||await uC(t),s=XA()&&lQ(I)||wC(I),n=Or(s);return A?GB(A,n):zs.set(g,n),n});if(!A){const I=i.finally(()=>{Yn.delete(g)});return Yn.set(g,I),I}return Ks.set(A,i.finally(()=>{Ks.delete(A)})),Ks.get(A)}async function Pr(g,A){let t;const e=typeof g=="string"?`svga-payload:${g}`:null;if(typeof g=="string"){if(t=new Uint8Array(await Rs(g)),e){const s=nB(e);if(s)return s.params}}else{t=new Uint8Array(g);const s=zs.get(g);if(s)return s.params}const i=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";return(await pC(g,e,t,i)).params}async function Xn(g,A){let t;const e=typeof g=="string"?`svga-payload:${g}`:null;if(typeof g=="string"){if(t=new Uint8Array(await Rs(g)),e){const s=nB(e);if(s)return Wn(async()=>RB(s))}}else t=new Uint8Array(g);const i=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined",I=await pC(g,e,t,i);return Wn(async()=>RB(I))}const _n=24;async function $r(){await new Promise(g=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>g());return}setTimeout(g,0)})}function Ao(){return{rects:[],cursorX:0,shelfY:0,shelfH:0,usedW:0,usedH:0}}function to(g,A,t,e,i){const I=Math.max(1,e-t),s=Math.min(1,i,I/Math.max(A.width,A.height));return{key:g,width:A.width,height:A.height,packedWidth:Math.max(1,Math.floor(A.width*s)),packedHeight:Math.max(1,Math.floor(A.height*s)),scale:s}}function On(g,A,t,e,i){const I=A.packedWidth+e,s=A.packedHeight+e;if(g.cursorX+I<=i&&g.shelfY+Math.max(g.shelfH,s)<=i)return g.rects.push({key:A.key,pageIndex:t,x:g.cursorX,y:g.shelfY,w:A.packedWidth,h:A.packedHeight}),g.cursorX+=I,g.shelfH=Math.max(g.shelfH,s),g.usedW=Math.max(g.usedW,g.cursorX),g.usedH=Math.max(g.usedH,g.shelfY+g.shelfH),!0;const n=g.shelfY+g.shelfH;return n+s>i?!1:(g.shelfY=n,g.shelfH=0,g.cursorX=0,On(g,A,t,e,i))}function Ln(g,A,t,e){const i=Array.from(g.entries()).map(([s,n])=>to(s,n,A,t,e));i.sort((s,n)=>n.packedHeight-s.packedHeight||n.packedWidth-s.packedWidth);const I=[];for(const s of i){let n=!1;for(let a=0;a<I.length;a++)if(On(I[a],s,a,A,t)){n=!0;break}if(n)continue;const B=Ao(),C=I.length;if(!On(B,s,C,A,t))throw new Error(`SVGA atlas image too large: ${s.key} ${s.width}x${s.height}, max texture size ${t}`);I.push(B)}return I}function UB(g,A){return g.map(t=>({rects:t.rects,atlasW:Math.min(A,MB(Math.max(1,t.usedW))),atlasH:Math.min(A,MB(Math.max(1,t.usedH)))}))}function eo(g,A){let t=1;for(const e of g.values())t=Math.max(t,e.width,e.height);return Math.max(1/Math.max(t,A),1e-4)}function io(g,A,t,e){const i=Math.max(1,Math.floor(e)),I=Ln(g,A,t,1);if(I.length<=i)return UB(I,t);let s=eo(g,t),n=1,B=Ln(g,A,t,s);if(B.length>i)throw new Error(`SVGA atlas needs ${B.length} pages even at minimum scale, max pages ${i}`);for(let C=0;C<16;C++){const a=(s+n)*.5,Q=Ln(g,A,t,a);Q.length<=i?(B=Q,s=a):n=a}return UB(B,t)}function MB(g){return g--,g|=g>>1,g|=g>>2,g|=g>>4,g|=g>>8,g|=g>>16,g+1}function go(g,A){if(tQ())return new OffscreenCanvas(g,A);if(typeof document=="undefined")throw new Error("Atlas compose needs OffscreenCanvas or DOM (document)");const t=document.createElement("canvas");return t.width=g,t.height=A,t}async function Io(g){if(typeof OffscreenCanvas!="undefined"&&g instanceof OffscreenCanvas){if(typeof g.convertToBlob=="function")try{return await(await g.convertToBlob({type:"image/png"})).arrayBuffer()}catch(t){return null}return null}const A=g;return new Promise(t=>{try{A.toBlob(e=>{if(!e){t(null);return}e.arrayBuffer().then(t).catch(()=>t(null))},"image/png")}catch(e){t(null)}})}async function Pn(g,A,t=4096,e=2,i){var I,s;if(g.size===0)throw new Error("No images to build atlas from");const n=Math.max(64,Math.min(t,(I=A.maxTextureSize)!=null?I:t)),B=io(g,e,n,(s=i==null?void 0:i.maxPages)!=null?s:4);if(B.length===0)throw new Error("No atlas pages built");const C=new Map,a=[];for(let E=0;E<B.length;E++){const h=B[E],c=go(h.atlasW,h.atlasH),f=c.getContext("2d");if(!f)throw new Error("Atlas: 2d context unavailable");f.clearRect(0,0,h.atlasW,h.atlasH);for(let w=0;w<h.rects.length;w+=_n){const y=h.rects.slice(w,w+_n);for(const S of y){const N=g.get(S.key);f.drawImage(N,S.x,S.y,S.w,S.h)}w+_n<h.rects.length&&await $r()}const d=(i==null?void 0:i.captureEncodedPng)===!0?Io(c):void 0,u=await createImageBitmap(c,{premultiplyAlpha:"none"}),p=A.createTexture(u,{width:h.atlasW,height:h.atlasH,filter:"linear"});u.close();for(const w of h.rects)C.set(w.key,{x:w.x/h.atlasW,y:w.y/h.atlasH,w:w.w/h.atlasW,h:w.h/h.atlasH,textureIndex:E});a.push({textureHandle:p,atlasWidth:h.atlasW,atlasHeight:h.atlasH,encodedPngBytesPromise:d})}const Q=a.map(E=>E.textureHandle),o=a.map(E=>E.encodedPngBytesPromise).filter(E=>!!E),r=a[0];return{textureHandle:r.textureHandle,textureHandles:Q,pages:a,rects:C,atlasWidth:r.atlasWidth,atlasHeight:r.atlasHeight,encodedPngBytesPromise:r.encodedPngBytesPromise,encodedPngBytesPromises:o.length>0?o:void 0}}var so=Object.defineProperty,yC=(g,A)=>{for(var t in A)so(g,t,{get:A[t],enumerable:!0})},Jn=Math.pow(2,32),W=Math.pow(2,32)-1,no=1,Bo=2,Co=4,js=1,Xs=2,Os=8,Ps=16,$s=32,bB=131072,Gs=1,An=4,Ss=256,Fs=512,Ns=1024,xs=2048,mC=-1,mA=0,CA=1,FA=class GC extends ArrayBuffer{constructor(A){super(A),this.fileStart=0,this.usedBytes=0}static fromArrayBuffer(A,t){const e=new GC(A.byteLength);return new Uint8Array(e).set(new Uint8Array(A)),e.fileStart=t,e}},Ms,$n,x,gA=(x=class{constructor(A,t,e){ln(this,Ms);this._byteLength=0,this.failurePosition=0,this._dynamicSize=1,this._byteOffset=t||0,A instanceof ArrayBuffer?this.buffer=FA.fromArrayBuffer(A,0):A instanceof DataView?(this.dataView=A,t&&(this._byteOffset+=t)):this.buffer=new FA(A||0),this.position=0,this.endianness=e||1}getPosition(){return this.position}_realloc(A){if(!this._dynamicSize)return;const t=this._byteOffset+this.position+A;let e=this._buffer.byteLength;if(t<=e){t>this._byteLength&&(this._byteLength=t);return}for(e<1&&(e=1);t>e;)e*=2;const i=new FA(e),I=new Uint8Array(this._buffer);new Uint8Array(i,0,I.length).set(I),this.buffer=i,this._byteLength=t}_trimAlloc(){if(this._byteLength===this._buffer.byteLength)return;const A=new FA(this._byteLength),t=new Uint8Array(A),e=new Uint8Array(this._buffer,0,t.length);t.set(e),this.buffer=A}get byteLength(){return this._byteLength-this._byteOffset}get buffer(){return this._trimAlloc(),this._buffer}set buffer(A){this._buffer=A,this._dataView=new DataView(A,this._byteOffset),this._byteLength=A.byteLength}get byteOffset(){return this._byteOffset}set byteOffset(A){this._byteOffset=A,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}get dataView(){return this._dataView}set dataView(A){this._byteOffset=A.byteOffset,this._buffer=FA.fromArrayBuffer(A.buffer,0),this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+A.byteLength}seek(A){const t=Math.max(0,Math.min(this.byteLength,A));this.position=isNaN(t)||!isFinite(t)?0:t}isEof(){return this.position>=this._byteLength}mapUint8Array(A){this._realloc(A*1);const t=new Uint8Array(this._buffer,this.byteOffset+this.position,A);return this.position+=A*1,t}readInt32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Int32Array(A);return x.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),x.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt16Array(A,t){A=A===void 0?this.byteLength-this.position/2:A;const e=new Int16Array(A);return x.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),x.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt8Array(A){A=A===void 0?this.byteLength-this.position:A;const t=new Int8Array(A);return x.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,A*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t}readUint32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Uint32Array(A);return x.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),x.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readUint16Array(A,t){A=A===void 0?this.byteLength-this.position/2:A;const e=new Uint16Array(A);return x.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),x.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readUint8Array(A){A=A===void 0?this.byteLength-this.position:A;const t=new Uint8Array(A);return x.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,A*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t}readFloat64Array(A,t){A=A===void 0?this.byteLength-this.position/8:A;const e=new Float64Array(A);return x.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),x.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readFloat32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Float32Array(A);return x.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),x.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt32(A){const t=this._dataView.getInt32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readInt16(A){const t=this._dataView.getInt16(this.position,(A!=null?A:this.endianness)===2);return this.position+=2,t}readInt8(){const A=this._dataView.getInt8(this.position);return this.position+=1,A}readUint32(A){const t=this._dataView.getUint32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readUint16(A){const t=this._dataView.getUint16(this.position,(A!=null?A:this.endianness)===2);return this.position+=2,t}readUint8(){const A=this._dataView.getUint8(this.position);return this.position+=1,A}readFloat32(A){const t=this._dataView.getFloat32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readFloat64(A){const t=this._dataView.getFloat64(this.position,(A!=null?A:this.endianness)===2);return this.position+=8,t}static memcpy(A,t,e,i,I){const s=new Uint8Array(A,t,I),n=new Uint8Array(e,i,I);s.set(n)}static arrayToNative(A,t){return t===x.ENDIANNESS?A:this.flipArrayEndianness(A)}static nativeToEndian(A,t){return t&&x.ENDIANNESS===2?A:this.flipArrayEndianness(A)}static flipArrayEndianness(A){const t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);for(let e=0;e<A.byteLength;e+=A.BYTES_PER_ELEMENT)for(let i=e+A.BYTES_PER_ELEMENT-1,I=e;i>I;i--,I++){const s=t[I];t[I]=t[i],t[i]=s}return A}readString(A,t){return t===void 0||t==="ASCII"?kB(this.mapUint8Array(A===void 0?this.byteLength-this.position:A)):new TextDecoder(t).decode(this.mapUint8Array(A))}readCString(A){let t=0;const e=this.byteLength-this.position,i=new Uint8Array(this._buffer,this._byteOffset+this.position),I=A!==void 0?Math.min(A,e):e;for(;t<I&&i[t]!==0;t++);const s=kB(this.mapUint8Array(t));return A!==void 0?this.position+=I-t:t!==e&&(this.position+=1),s}readInt64(){return this.readInt32()*Jn+this.readUint32()}readUint64(){return this.readUint32()*Jn+this.readUint32()}readUint24(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()}save(A){const t=new Blob([this.buffer]);if(typeof window!="undefined"&&typeof document!="undefined")if(window.URL&&URL.createObjectURL){const e=window.URL.createObjectURL(t),i=document.createElement("a");document.body.appendChild(i),i.setAttribute("href",e),i.setAttribute("download",A),i.setAttribute("target","_self"),i.click(),window.URL.revokeObjectURL(e),document.body.removeChild(i)}else throw new Error("DataStream.save: Can't create object URL.");return t}get dynamicSize(){return this._dynamicSize}set dynamicSize(A){A||this._trimAlloc(),this._dynamicSize=A}shift(A){const t=new FA(this._byteLength-A),e=new Uint8Array(t),i=new Uint8Array(this._buffer,A,e.length);e.set(i),this.buffer=t,this.position-=A}writeInt32Array(A,t){if(this._realloc(A.length*4),A instanceof Int32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)x.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeInt32(A[e],t)}writeInt16Array(A,t){if(this._realloc(A.length*2),A instanceof Int16Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)x.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt16Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeInt16(A[e],t)}writeInt8Array(A){if(this._realloc(A.length*1),A instanceof Int8Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)x.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt8Array(A.length);else for(let t=0;t<A.length;t++)this.writeInt8(A[t])}writeUint32Array(A,t){if(this._realloc(A.length*4),A instanceof Uint32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)x.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeUint32(A[e],t)}writeUint16Array(A,t){if(this._realloc(A.length*2),A instanceof Uint16Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)x.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint16Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeUint16(A[e],t)}writeUint8Array(A){if(this._realloc(A.length*1),A instanceof Uint8Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)x.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint8Array(A.length);else for(let t=0;t<A.length;t++)this.writeUint8(A[t])}writeFloat64Array(A,t){if(this._realloc(A.length*8),A instanceof Float64Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)x.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapFloat64Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeFloat64(A[e],t)}writeFloat32Array(A,t){if(this._realloc(A.length*4),A instanceof Float32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)x.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapFloat32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeFloat32(A[e],t)}writeInt64(A,t){this._realloc(8),this._dataView.setBigInt64(this.position,BigInt(A),(t!=null?t:this.endianness)===2),this.position+=8}writeInt32(A,t){this._realloc(4),this._dataView.setInt32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeInt16(A,t){this._realloc(2),this._dataView.setInt16(this.position,A,(t!=null?t:this.endianness)===2),this.position+=2}writeInt8(A){this._realloc(1),this._dataView.setInt8(this.position,A),this.position+=1}writeUint32(A,t){this._realloc(4),this._dataView.setUint32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeUint16(A,t){this._realloc(2),this._dataView.setUint16(this.position,A,(t!=null?t:this.endianness)===2),this.position+=2}writeUint8(A){this._realloc(1),this._dataView.setUint8(this.position,A),this.position+=1}writeFloat32(A,t){this._realloc(4),this._dataView.setFloat32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeFloat64(A,t){this._realloc(8),this._dataView.setFloat64(this.position,A,(t!=null?t:this.endianness)===2),this.position+=8}writeUCS2String(A,t,e){e===void 0&&(e=A.length);let i;for(i=0;i<A.length&&i<e;i++)this.writeUint16(A.charCodeAt(i),t);for(;i<e;i++)this.writeUint16(0)}writeString(A,t,e){let i=0;if(t===void 0||t==="ASCII")if(e!==void 0){const I=Math.min(A.length,e);for(i=0;i<I;i++)this.writeUint8(A.charCodeAt(i));for(;i<e;i++)this.writeUint8(0)}else for(i=0;i<A.length;i++)this.writeUint8(A.charCodeAt(i));else this.writeUint8Array(new TextEncoder(t).encode(A.substring(0,e)))}writeCString(A,t){let e=0;if(t!==void 0){const i=Math.min(A.length,t);for(e=0;e<i;e++)this.writeUint8(A.charCodeAt(e));for(;e<t;e++)this.writeUint8(0)}else{for(e=0;e<A.length;e++)this.writeUint8(A.charCodeAt(e));this.writeUint8(0)}}writeStruct(A,t){for(let e=0;e<A.length;e++){const[i,I]=A[e],s=t[i];this.writeType(I,s,t)}}writeType(A,t,e){if(typeof A=="function")return A(this,t);if(typeof A=="object"&&!(A instanceof Array))return A.set(this,t,e);let i,I="ASCII";const s=this.position;let n=A;if(typeof A=="string"&&/:/.test(A)){const B=A.split(":");n=B[0],i=parseInt(B[1])}if(typeof n=="string"&&/,/.test(n)){const B=n.split(",");n=B[0],I=B[1]}switch(n){case"uint8":this.writeUint8(t);break;case"int8":this.writeInt8(t);break;case"uint16":this.writeUint16(t,this.endianness);break;case"int16":this.writeInt16(t,this.endianness);break;case"uint32":this.writeUint32(t,this.endianness);break;case"int32":this.writeInt32(t,this.endianness);break;case"float32":this.writeFloat32(t,this.endianness);break;case"float64":this.writeFloat64(t,this.endianness);break;case"uint16be":this.writeUint16(t,1);break;case"int16be":this.writeInt16(t,1);break;case"uint32be":this.writeUint32(t,1);break;case"int32be":this.writeInt32(t,1);break;case"float32be":this.writeFloat32(t,1);break;case"float64be":this.writeFloat64(t,1);break;case"uint16le":this.writeUint16(t,2);break;case"int16le":this.writeInt16(t,2);break;case"uint32le":this.writeUint32(t,2);break;case"int32le":this.writeInt32(t,2);break;case"float32le":this.writeFloat32(t,2);break;case"float64le":this.writeFloat64(t,2);break;case"cstring":this.writeCString(t,i);break;case"string":this.writeString(t,I,i);break;case"u16string":this.writeUCS2String(t,this.endianness,i);break;case"u16stringle":this.writeUCS2String(t,2,i);break;case"u16stringbe":this.writeUCS2String(t,1,i);break;default:if(dn(this,Ms,$n).call(this,n)){const[,B]=n;for(let C=0;C<t.length;C++)this.writeType(B,t[C]);break}else{this.writeStruct(n,t);break}}i&&(this.position=s,this._realloc(i),this.position=s+i)}writeUint64(A){const t=Math.floor(A/Jn);this.writeUint32(t),this.writeUint32(A&4294967295)}writeUint24(A){this.writeUint8((A&16711680)>>16),this.writeUint8((A&65280)>>8),this.writeUint8(A&255)}adjustUint32(A,t){const e=this.position;this.seek(A),this.writeUint32(t),this.seek(e)}readStruct(A){const t={},e=this.position;for(let i=0;i<A.length;i+=1){const I=A[i][1],s=this.readType(I,t);if(!s){this.failurePosition===0&&(this.failurePosition=this.position),this.position=e;return}t[A[i][0]]=s}return t}readUCS2String(A,t){return String.fromCharCode.apply(void 0,this.readUint16Array(A,t))}readType(A,t){if(typeof A=="function")return A(this,t);if(typeof A=="object"&&!(A instanceof Array))return A.get(this,t);if(A instanceof Array&&A.length!==3)return this.readStruct(A);let e,i,I="ASCII";const s=this.position;let n=A;if(typeof n=="string"&&/:/.test(n)){const B=n.split(":");n=B[0],i=parseInt(B[1])}if(typeof n=="string"&&/,/.test(n)){const B=n.split(",");n=B[0],I=B[1]}switch(n){case"uint8":e=this.readUint8();break;case"int8":e=this.readInt8();break;case"uint16":e=this.readUint16(this.endianness);break;case"int16":e=this.readInt16(this.endianness);break;case"uint32":e=this.readUint32(this.endianness);break;case"int32":e=this.readInt32(this.endianness);break;case"float32":e=this.readFloat32(this.endianness);break;case"float64":e=this.readFloat64(this.endianness);break;case"uint16be":e=this.readUint16(1);break;case"int16be":e=this.readInt16(1);break;case"uint32be":e=this.readUint32(1);break;case"int32be":e=this.readInt32(1);break;case"float32be":e=this.readFloat32(1);break;case"float64be":e=this.readFloat64(1);break;case"uint16le":e=this.readUint16(2);break;case"int16le":e=this.readInt16(2);break;case"uint32le":e=this.readUint32(2);break;case"int32le":e=this.readInt32(2);break;case"float32le":e=this.readFloat32(2);break;case"float64le":e=this.readFloat64(2);break;case"cstring":e=this.readCString(i);break;case"string":e=this.readString(i,I);break;case"u16string":e=this.readUCS2String(i,this.endianness);break;case"u16stringle":e=this.readUCS2String(i,2);break;case"u16stringbe":e=this.readUCS2String(i,1);break;default:if(dn(this,Ms,$n).call(this,n)){const[,B,C]=n,a=typeof C=="function"?C(t,this,n):typeof C=="string"&&t[C]!==void 0?parseInt(t[C]):typeof C=="number"?C:C==="*"?void 0:parseInt(C);if(typeof B=="string"){const Q=B.replace(/(le|be)$/,"");let o;switch(/le$/.test(B)?o=2:/be$/.test(B)&&(o=1),Q){case"uint8":e=this.readUint8Array(a);break;case"uint16":e=this.readUint16Array(a,o);break;case"uint32":e=this.readUint32Array(a,o);break;case"int8":e=this.readInt8Array(a);break;case"int16":e=this.readInt16Array(a,o);break;case"int32":e=this.readInt32Array(a,o);break;case"float32":e=this.readFloat32Array(a,o);break;case"float64":e=this.readFloat64Array(a,o);break;case"cstring":case"utf16string":case"string":if(a){e=new Array(a);for(let r=0;r<a;r++)e[r]=this.readType(B,t)}else for(e=[];!this.isEof();){const r=this.readType(B,t);if(!r)break;e.push(r)}break}}else if(a){e=new Array(a);for(let Q=0;Q<a;Q++){const o=this.readType(B,t);if(!o)return;e[Q]=o}}else for(e=[];;){const Q=this.position;try{const o=this.readType(B,t);if(!o){this.position=Q;break}e.push(o)}catch(o){this.position=Q;break}}break}}return i&&(this.position=s+i),e}mapInt32Array(A,t){this._realloc(A*4);const e=new Int32Array(this._buffer,this.byteOffset+this.position,A);return x.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}mapInt16Array(A,t){this._realloc(A*2);const e=new Int16Array(this._buffer,this.byteOffset+this.position,A);return x.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*2,e}mapInt8Array(A,t){this._realloc(A*1);const e=new Int8Array(this._buffer,this.byteOffset+this.position,A);return this.position+=A*1,e}mapUint32Array(A,t){this._realloc(A*4);const e=new Uint32Array(this._buffer,this.byteOffset+this.position,A);return x.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}mapUint16Array(A,t){this._realloc(A*2);const e=new Uint16Array(this._buffer,this.byteOffset+this.position,A);return x.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*2,e}mapFloat64Array(A,t){this._realloc(A*8);const e=new Float64Array(this._buffer,this.byteOffset+this.position,A);return x.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*8,e}mapFloat32Array(A,t){this._realloc(A*4);const e=new Float32Array(this._buffer,this.byteOffset+this.position,A);return x.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}},Ms=new WeakSet,$n=function(A){return Array.isArray(A)&&A.length===3&&A[0]==="[]"},x.ENDIANNESS=new Int8Array(new Int16Array([1]).buffer)[0]>0?2:1,x);function kB(g){const A=[];for(let t=0;t<g.length;t++)A[t]=g[t];return String.fromCharCode.apply(void 0,A)}var Ts=new Date,tn=4,YB=3,_B=2,LB=1,dA=tn,l={setLogLevel(g){g===this.debug?dA=LB:g===this.info?dA=_B:g===this.warn?dA=YB:(this.error,dA=tn)},debug(g,A){console.debug===void 0&&(console.debug=console.log),LB>=dA&&console.debug("["+l.getDurationString(new Date().getTime()-Ts.getTime(),1e3)+"]","["+g+"]",A)},log(g,A){this.debug(g.msg)},info(g,A){_B>=dA&&console.info("["+l.getDurationString(new Date().getTime()-Ts.getTime(),1e3)+"]","["+g+"]",A)},warn(g,A){YB>=dA&&console.warn("["+l.getDurationString(new Date().getTime()-Ts.getTime(),1e3)+"]","["+g+"]",A)},error(g,A,t){t!=null&&t.onError?t.onError(g,A):tn>=dA&&console.error("["+l.getDurationString(new Date().getTime()-Ts.getTime(),1e3)+"]","["+g+"]",A)},getDurationString(g,A){let t;function e(C,a){const o=(""+C).split(".");for(;o[0].length<a;)o[0]="0"+o[0];return o.join(".")}g<0?(t=!0,g=-g):t=!1;let I=g/(A||1);const s=Math.floor(I/3600);I-=s*3600;const n=Math.floor(I/60);I-=n*60;let B=I*1e3;return I=Math.floor(I),B-=I*1e3,B=Math.floor(B),(t?"-":"")+s+":"+e(n,2)+":"+e(I,2)+"."+e(B,3)},printRanges(g){const A=g.length;if(A>0){let t="";for(let e=0;e<A;e++)e>0&&(t+=","),t+="["+l.getDurationString(g.start(e))+","+l.getDurationString(g.end(e))+"]";return t}else return"(empty)"}};function ao(g,A){l.debug("ArrayBuffer","Trying to create a new buffer of size: "+(g.byteLength+A.byteLength));const t=new Uint8Array(g.byteLength+A.byteLength);return t.set(new Uint8Array(g),0),t.set(new Uint8Array(A),g.byteLength),t.buffer}var en=class extends gA{constructor(g){super(new ArrayBuffer,0),this.buffers=[],this.bufferIndex=-1,g&&(this.insertBuffer(g),this.bufferIndex=0)}initialized(){if(this.bufferIndex>-1)return!0;if(this.buffers.length>0){const g=this.buffers[0];return g.fileStart===0?(this.buffer=g,this.bufferIndex=0,l.debug("MultiBufferStream","Stream ready for parsing"),!0):(l.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)}else return l.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1}reduceBuffer(g,A,t){const e=new Uint8Array(t);return e.set(new Uint8Array(g,A,t)),e.buffer.fileStart=g.fileStart+A,e.buffer.usedBytes=0,e.buffer}insertBuffer(g){let A=!0,t=0;for(;t<this.buffers.length;t++){const e=this.buffers[t];if(g.fileStart<=e.fileStart){if(g.fileStart===e.fileStart)if(g.byteLength>e.byteLength){this.buffers.splice(t,1),t--;continue}else l.warn("MultiBufferStream","Buffer (fileStart: "+g.fileStart+" - Length: "+g.byteLength+") already appended, ignoring");else g.fileStart+g.byteLength<=e.fileStart||(g=this.reduceBuffer(g,0,e.fileStart-g.fileStart)),l.debug("MultiBufferStream","Appending new buffer (fileStart: "+g.fileStart+" - Length: "+g.byteLength+")"),this.buffers.splice(t,0,g),t===0&&(this.buffer=g);A=!1;break}else if(g.fileStart<e.fileStart+e.byteLength){const i=e.fileStart+e.byteLength-g.fileStart,I=g.byteLength-i;if(I>0)g=this.reduceBuffer(g,i,I);else{A=!1;break}}}A&&(l.debug("MultiBufferStream","Appending new buffer (fileStart: "+g.fileStart+" - Length: "+g.byteLength+")"),this.buffers.push(g),t===0&&(this.buffer=g))}logBufferLevel(g){const A=[];let t="",e,i=0,I=0;for(let n=0;n<this.buffers.length;n++){const B=this.buffers[n];n===0?(e={start:B.fileStart,end:B.fileStart+B.byteLength},A.push(e),t+="["+e.start+"-"):e.end===B.fileStart?e.end=B.fileStart+B.byteLength:(e={start:B.fileStart,end:B.fileStart+B.byteLength},t+=A[A.length-1].end-1+"], ["+e.start+"-",A.push(e)),i+=B.usedBytes,I+=B.byteLength}A.length>0&&(t+=e.end-1+"]");const s=g?l.info:l.debug;this.buffers.length===0?s("MultiBufferStream","No more buffer in memory"):s("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+i+"/"+I+" bytes), continuous ranges: "+t)}cleanBuffers(){for(let g=0;g<this.buffers.length;g++){const A=this.buffers[g];A.usedBytes===A.byteLength&&(l.debug("MultiBufferStream","Removing buffer #"+g),this.buffers.splice(g,1),g--)}}mergeNextBuffer(){if(this.bufferIndex+1<this.buffers.length){const g=this.buffers[this.bufferIndex+1];if(g.fileStart===this.buffer.fileStart+this.buffer.byteLength){const A=this.buffer.byteLength,t=this.buffer.usedBytes,e=this.buffer.fileStart;return this.buffers[this.bufferIndex]=ao(this.buffer,g),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=t,this.buffer.fileStart=e,l.debug("ISOFile","Concatenating buffer for box parsing (length: "+A+"->"+this.buffer.byteLength+")"),!0}else return!1}else return!1}findPosition(g,A,t){let e=-1,i=g===!0?0:this.bufferIndex;for(;i<this.buffers.length;){const s=this.buffers[i];if(s&&s.fileStart<=A)e=i,t&&(s.fileStart+s.byteLength<=A?s.usedBytes=s.byteLength:s.usedBytes=A-s.fileStart,this.logBufferLevel());else break;i++}if(e===-1)return-1;const I=this.buffers[e];return I.fileStart+I.byteLength>=A?(l.debug("MultiBufferStream","Found position in existing buffer #"+e),e):-1}findEndContiguousBuf(g){const A=g!==void 0?g:this.bufferIndex;let t=this.buffers[A];if(this.buffers.length>A+1)for(let e=A+1;e<this.buffers.length;e++){const i=this.buffers[e];if(i.fileStart===t.fileStart+t.byteLength)t=i;else break}return t.fileStart+t.byteLength}getEndFilePositionAfter(g){const A=this.findPosition(!0,g,!1);return A!==-1?this.findEndContiguousBuf(A):g}addUsedBytes(g){this.buffer.usedBytes+=g,this.logBufferLevel()}setAllUsedBytes(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()}seek(g,A,t){const e=this.findPosition(A,g,t);return e!==-1?(this.buffer=this.buffers[e],this.bufferIndex=e,this.position=g-this.buffer.fileStart,l.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(l.debug("MultiBufferStream","Position "+g+" not found in buffered data"),!1)}getPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.position}getLength(){return this.byteLength}getEndPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.byteLength}getAbsoluteEndPosition(){if(this.buffers.length===0)return 0;const g=this.buffers[this.buffers.length-1];return g.fileStart+g.byteLength}},bs,$A,m=($A=class{constructor(A=0){ln(this,bs);this.size=A}get type(){var A;return(A=this.constructor.fourcc)!=null?A:EB(this,bs)}set type(A){hB(this,bs,A)}addBox(A){return this.boxes||(this.boxes=[]),this.boxes.push(A),this[A.type+"s"]?this[A.type+"s"].push(A):this[A.type]=A,A}set(A,t){return this[A]=t,this}addEntry(A,t){const e=t||"entries";return this[e]||(this[e]=[]),this[e].push(A),this}writeHeader(A,t){if(this.size+=8,(this.size>W||this.original_size===1)&&(this.size+=8),this.type==="uuid"&&(this.size+=16),l.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+A.getPosition()+(t||"")),this.original_size===0?A.writeUint32(0):this.size>W||this.original_size===1?A.writeUint32(1):(this.sizePosition=A.getPosition(),A.writeUint32(this.size)),A.writeString(this.type,void 0,4),this.type==="uuid"){const e=new Uint8Array(16);for(let i=0;i<16;i++)e[i]=parseInt(this.uuid.substring(i*2,i*2+2),16);A.writeUint8Array(e)}(this.size>W||this.original_size===1)&&(this.sizePosition=A.getPosition(),A.writeUint64(this.size))}write(A){if(this.type==="mdat"){const t=this;if(t.stream){this.size=t.stream.getAbsoluteEndPosition(),this.writeHeader(A);for(const e of t.stream.buffers){const i=new Uint8Array(e);A.writeUint8Array(i)}}else t.data&&(this.size=t.data.length,this.writeHeader(A),A.writeUint8Array(t.data))}else this.size=this.data?this.data.length:0,this.writeHeader(A),this.data&&A.writeUint8Array(this.data)}printHeader(A){this.size+=8,this.size>W&&(this.size+=8),this.type==="uuid"&&(this.size+=16),A.log(A.indent+"size:"+this.size),A.log(A.indent+"type:"+this.type)}print(A){this.printHeader(A)}parse(A){this.type!=="mdat"?this.data=A.readUint8Array(this.size-this.hdr_size):this.size===0?A.seek(A.getEndPosition()):A.seek(this.start+this.size)}parseDataAndRewind(A){this.data=A.readUint8Array(this.size-this.hdr_size),A.seek(this.start+this.hdr_size)}parseLanguage(A){this.language=A.readUint16();const t=[];t[0]=this.language>>10&31,t[1]=this.language>>5&31,t[2]=this.language&31,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)}computeSize(A){const t=A||new en;this.write(t)}isEndOfBox(A){const t=A.getPosition(),e=this.start+this.size;return t===e}},bs=new WeakMap,$A.registryId=Symbol.for("BoxIdentifier"),$A),D=class extends m{constructor(){super(...arguments),this.flags=0,this.version=0}writeHeader(g){this.size+=4,super.writeHeader(g," v="+this.version+" f="+this.flags),g.writeUint8(this.version),g.writeUint24(this.flags)}printHeader(g){this.size+=4,super.printHeader(g),g.log(g.indent+"version:"+this.version),g.log(g.indent+"flags:"+this.flags)}parseDataAndRewind(g){this.parseFullHeader(g),this.data=g.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,g.seek(this.start+this.hdr_size)}parseFullHeader(g){this.version=g.readUint8(),this.flags=g.readUint24(),this.hdr_size+=4}parse(g){this.parseFullHeader(g),this.data=g.readUint8Array(this.size-this.hdr_size)}},At,T=(At=class{constructor(A){this.grouping_type=A}write(A){A.writeUint8Array(this.data)}parse(A){l.warn("BoxParser",`Unknown sample group type: '${this.grouping_type}'`),this.data=A.readUint8Array(this.description_length)}},At.registryId=Symbol.for("SampleGroupEntryIdentifier"),At),Qo=class extends D{parse(g){this.parseFullHeader(g),this.track_group_id=g.readUint32()}},ro=class extends m{constructor(g,A,t,e,i){super(A),this.box_name=t,this.hdr_size=e,this.start=i,this.type=g}parse(g){this.from_item_ID=g.readUint16();const A=g.readUint16();this.references=[];for(let t=0;t<A;t++)this.references[t]={to_item_ID:g.readUint16()}}},oo=class extends m{constructor(g,A,t,e,i){super(A),this.box_name=t,this.hdr_size=e,this.start=i,this.type=g}parse(g){this.from_item_ID=g.readUint32();const A=g.readUint16();this.references=[];for(let t=0;t<A;t++)this.references[t]={to_item_ID:g.readUint32()}}},Eo=class extends m{constructor(g,A,t,e){super(A),this.hdr_size=t,this.start=e,this.type=g}parse(g){this.track_ids=g.readUint32Array((this.size-this.hdr_size)/4)}write(g){this.size=this.track_ids.length*4,this.writeHeader(g),g.writeUint32Array(this.track_ids)}},AB=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],ho=["compatible_brands","matrix","opcolor","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"];function co(g,A){if(g&&!A)return!1;let t;for(t in g)if(!AB.find(e=>e===t)){if(g[t]instanceof m||A[t]instanceof m)continue;if(typeof g[t]=="undefined"||typeof A[t]=="undefined")continue;if(typeof g[t]=="function"||typeof A[t]=="function")continue;if("subBoxNames"in g&&g.subBoxNames.indexOf(t.slice(0,4))>-1||"subBoxNames"in A&&A.subBoxNames.indexOf(t.slice(0,4))>-1)continue;if(t==="data"||t==="start"||t==="size"||t==="creation_time"||t==="modification_time")continue;if(ho.find(e=>e===t))continue;if(g[t]!==A[t])return!1}return!0}function SC(g,A){if(!co(g,A))return!1;for(let t=0;t<AB.length;t++){const e=AB[t];if(g[e]&&A[e]&&!SC(g[e],A[e]))return!1}return!0}function aB(g){let A=g;for(;A;){if("registryId"in A)return A.registryId;A=Object.getPrototypeOf(A)}}var lo=g=>{const A=Symbol.for("SampleGroupEntryIdentifier");return aB(g)===A},fo=g=>{const A=Symbol.for("SampleEntryIdentifier");return aB(g)===A},uo=g=>{const A=Symbol.for("BoxIdentifier");return aB(g)===A},IA={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};function wo(g){const A={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};for(const[t,e]of Object.entries(g)){if(lo(e)){const i="grouping_type"in e?e.grouping_type:void 0;if(!i)throw new Error(`SampleGroupEntry class ${t} does not have a valid static grouping_type. Please ensure it is defined correctly.`);if(i in A.sampleGroupEntry)throw new Error(`SampleGroupEntry class ${t} has a grouping_type that is already registered. Please ensure it is unique.`);A.sampleGroupEntry[i]=e;continue}if(fo(e)){const i="fourcc"in e?e.fourcc:void 0;if(!i)throw new Error(`SampleEntry class ${t} does not have a valid static fourcc. Please ensure it is defined correctly.`);if(i in A.sampleEntry)throw new Error(`SampleEntry class ${t} has a fourcc that is already registered. Please ensure it is unique.`);A.sampleEntry[i]=e;continue}if(uo(e)){const i="fourcc"in e?e.fourcc:void 0,I="uuid"in e?e.uuid:void 0;if(i==="uuid"){if(!I)throw new Error(`Box class ${t} has a fourcc of 'uuid' but does not have a valid uuid. Please ensure it is defined correctly.`);if(I in A.uuid)throw new Error(`Box class ${t} has a uuid that is already registered. Please ensure it is unique.`);A.uuid[I]=e;continue}A.box[i]=e;continue}throw new Error(`Box class ${t} does not have a valid static fourcc, uuid, or grouping_type. Please ensure it is defined correctly.`)}return IA.uuid={...A.uuid},IA.sampleEntry={...A.sampleEntry},IA.sampleGroupEntry={...A.sampleGroupEntry},IA.box={...A.box},IA}var an={};function Do(g){return Object.entries(g).forEach(([A,t])=>an[A]=t),an}function po(g){return KA(g)}function KA(g){let A="";for(let t=0;t<16;t++){const e=g.readUint8().toString(16);A+=e.length===1?"0"+e:e}return A}function hA(g,A,t){let e,i;const I=g.getPosition();let s=0,n;if(g.getEndPosition()-I<8)return l.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:mA};if(t&&t<8)return l.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:mA};let B=g.readUint32();const C=g.readString(4);if(C.length!==4||!/^[\x20-\x7E]{4}$/.test(C))return l.error("BoxParser",`Invalid box type: '${C}'`),{code:mC,start:I,type:C};let a=C;if(l.debug("BoxParser","Found box of type '"+C+"' and size "+B+" at position "+I),s=8,C==="uuid"){if(g.getEndPosition()-g.getPosition()<16||t-s<16)return g.seek(I),l.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:mA};n=po(g),s+=16,a=n}if(B===1){if(g.getEndPosition()-g.getPosition()<8||t&&t-s<8)return g.seek(I),l.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+C+'" box'),{code:mA};i=B,B=g.readUint64(),s+=8}else if(B===0){if(t)B=t;else if(C!=="mdat")return l.error("BoxParser","Unlimited box size not supported for type: '"+C+"'"),e=new m(B),e.type=C,{code:CA,box:e,size:e.size}}if(B!==0&&B<s)return l.error("BoxParser","Box of type "+C+" has an invalid size "+B+" (too small to be a box)"),{code:mA,type:C,size:B,hdr_size:s,start:I};if(B!==0&&t&&B>t)return l.error("BoxParser","Box of type '"+C+"' has a size "+B+" greater than its container size "+t),{code:mA,type:C,size:B,hdr_size:s,start:I};if(B!==0&&I+B>g.getEndPosition())return g.seek(I),l.info("BoxParser","Not enough data in stream to parse the entire '"+C+"' box"),{code:mA,type:C,size:B,hdr_size:s,start:I,original_size:i};if(A)return{code:CA,type:C,size:B,hdr_size:s,start:I};C in IA.box?e=new IA.box[C](B):C!=="uuid"?(l.warn("BoxParser",`Unknown box type: '${C}'`),e=new m(B),e.type=C,e.has_unparsed_data=!0):n in IA.uuid?e=new IA.uuid[n](B):(l.warn("BoxParser",`Unknown UUID box type: '${n}'`),e=new m(B),e.type=C,e.uuid=n,e.has_unparsed_data=!0),e.original_size=i,e.hdr_size=s,e.start=I,e.write===m.prototype.write&&e.type!=="mdat"&&(l.info("BoxParser","'"+a+"' box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(g)),e.parse(g);const Q=g.getPosition()-(e.start+e.size);return Q<0?(l.warn("BoxParser","Parsing of box '"+a+"' did not read the entire indicated box data size (missing "+-Q+" bytes), seeking forward"),g.seek(e.start+e.size)):Q>0&&e.size!==0&&(l.error("BoxParser","Parsing of box '"+a+"' read "+Q+" more bytes than the indicated box data size, seeking backwards"),g.seek(e.start+e.size)),{code:CA,box:e,size:e.size}}var U=class extends m{write(g){if(this.size=0,this.writeHeader(g),this.boxes)for(let A=0;A<this.boxes.length;A++)this.boxes[A]&&(this.boxes[A].write(g),this.size+=this.boxes[A].size);l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),g.adjustUint32(this.sizePosition,this.size)}print(g){this.printHeader(g);for(let A=0;A<this.boxes.length;A++)if(this.boxes[A]){const t=g.indent;g.indent+=" ",this.boxes[A].print(g),g.indent=t}}parse(g){let A;for(;g.getPosition()<this.start+this.size;)if(A=hA(g,!1,this.size-(g.getPosition()-this.start)),A.code===CA){const t=A.box;if(this.boxes||(this.boxes=[]),this.boxes.push(t),this.subBoxNames&&this.subBoxNames.indexOf(t.type)!==-1){const e=this.subBoxNames[this.subBoxNames.indexOf(t.type)]+"s";this[e]||(this[e]=[]),this[e].push(t)}else{const e=t.type!=="uuid"?t.type:t.uuid;this[e]?l.warn("ContainerBox",`Box of type ${e} already exists in container box ${this.type}.`):this[e]=t}}else return}},tt,wA=(tt=class extends U{constructor(A,t,e){super(A),this.hdr_size=t,this.start=e}isVideo(){return!1}isAudio(){return!1}isSubtitle(){return!1}isMetadata(){return!1}isHint(){return!1}getCodec(){return this.type.replace(".","")}getWidth(){return""}getHeight(){return""}getChannelCount(){return""}getSampleRate(){return""}getSampleSize(){return""}parseHeader(A){A.readUint8Array(6),this.data_reference_index=A.readUint16(),this.hdr_size+=8}parse(A){this.parseHeader(A),this.data=A.readUint8Array(this.size-this.hdr_size)}parseDataAndRewind(A){this.parseHeader(A),this.data=A.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,A.seek(this.start+this.hdr_size)}parseFooter(A){super.parse(A)}writeHeader(A){this.size=8,super.writeHeader(A),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint16(this.data_reference_index)}writeFooter(A){if(this.boxes)for(let t=0;t<this.boxes.length;t++)this.boxes[t].write(A),this.size+=this.boxes[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}write(A){this.writeHeader(A),A.writeUint8Array(this.data),this.size+=this.data.length,l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},tt.registryId=Symbol.for("SampleEntryIdentifier"),tt),JB=class extends wA{},ss=class extends wA{isMetadata(){return!0}},TA=class extends wA{isSubtitle(){return!0}},yo=class extends wA{},H=class extends wA{parse(g){this.parseHeader(g),g.readUint16(),g.readUint16(),g.readUint32Array(3),this.width=g.readUint16(),this.height=g.readUint16(),this.horizresolution=g.readUint32(),this.vertresolution=g.readUint32(),g.readUint32(),this.frame_count=g.readUint16();const A=Math.min(31,g.readUint8());this.compressorname=g.readString(A),A<31&&g.readString(31-A),this.depth=g.readUint16(),g.readUint16(),this.parseFooter(g)}isVideo(){return!0}getWidth(){return this.width}getHeight(){return this.height}write(g){this.writeHeader(g),this.size+=70,g.writeUint16(0),g.writeUint16(0),g.writeUint32(0),g.writeUint32(0),g.writeUint32(0),g.writeUint16(this.width),g.writeUint16(this.height),g.writeUint32(this.horizresolution),g.writeUint32(this.vertresolution),g.writeUint32(0),g.writeUint16(this.frame_count),g.writeUint8(Math.min(31,this.compressorname.length)),g.writeString(this.compressorname,void 0,31),g.writeUint16(this.depth),g.writeInt16(-1),this.writeFooter(g)}},sA=class extends wA{parse(g){var t,e;this.parseHeader(g),this.version=g.readUint16(),g.readUint16(),g.readUint32(),this.channel_count=g.readUint16(),this.samplesize=g.readUint16(),g.readUint16(),g.readUint16(),this.samplerate=g.readUint32()/65536,((e=(t=g.isofile)==null?void 0:t.ftyp)==null?void 0:e.major_brand.includes("qt"))&&(this.version===1?this.extensions=g.readUint8Array(16):this.version===2&&(this.extensions=g.readUint8Array(36))),this.parseFooter(g)}isAudio(){return!0}getChannelCount(){return this.channel_count}getSampleRate(){return this.samplerate}getSampleSize(){return this.samplesize}write(g){this.writeHeader(g),this.size+=20,g.writeUint32(0),g.writeUint32(0),g.writeUint16(this.channel_count),g.writeUint16(this.samplesize),g.writeUint16(0),g.writeUint16(0),g.writeUint32(this.samplerate<<16),this.writeFooter(g)}},QB=class extends wA{parse(g){this.parseHeader(g),this.parseFooter(g)}write(g){this.writeHeader(g),this.writeFooter(g)}},HB=class extends Array{toString(){let g="<table class='inner-table'>";g+="<thead><tr><th>length</th><th>nalu_data</th></tr></thead>",g+="<tbody>";for(let A=0;A<this.length;A++){const t=this[A];g+="<tr>",g+="<td>"+t.length+"</td>",g+="<td>",g+=t.data.reduce(function(e,i){return e+i.toString(16).padStart(2,"0")},"0x"),g+="</td></tr>"}return g+="</tbody></table>",g}},et,FC=(et=class extends m{constructor(){super(...arguments),this.box_name="AVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8(),this.AVCProfileIndication=A.readUint8(),this.profile_compatibility=A.readUint8(),this.AVCLevelIndication=A.readUint8(),this.lengthSizeMinusOne=A.readUint8()&3,this.nb_SPS_nalus=A.readUint8()&31;let t=this.size-this.hdr_size-6;this.SPS=new HB;for(let e=0;e<this.nb_SPS_nalus;e++){const i=A.readUint16();this.SPS.push({length:i,data:A.readUint8Array(i)}),t-=2+i}this.nb_PPS_nalus=A.readUint8(),t--,this.PPS=new HB;for(let e=0;e<this.nb_PPS_nalus;e++){const i=A.readUint16();this.PPS.push({length:i,data:A.readUint8Array(i)}),t-=2+i}t>0&&(this.ext=A.readUint8Array(t))}write(A){this.size=7;for(let t=0;t<this.SPS.length;t++)this.size+=2+this.SPS[t].length;for(let t=0;t<this.PPS.length;t++)this.size+=2+this.PPS[t].length;this.ext&&(this.size+=this.ext.length),this.writeHeader(A),A.writeUint8(this.configurationVersion),A.writeUint8(this.AVCProfileIndication),A.writeUint8(this.profile_compatibility),A.writeUint8(this.AVCLevelIndication),A.writeUint8(this.lengthSizeMinusOne+252),A.writeUint8(this.SPS.length+224);for(let t=0;t<this.SPS.length;t++)A.writeUint16(this.SPS[t].length),A.writeUint8Array(this.SPS[t].data);A.writeUint8(this.PPS.length);for(let t=0;t<this.PPS.length;t++)A.writeUint16(this.PPS[t].length),A.writeUint8Array(this.PPS[t].data);this.ext&&A.writeUint8Array(this.ext)}},et.fourcc="avcC",et),it,gn=(it=class extends m{constructor(){super(...arguments),this.box_name="MediaDataBox"}},it.fourcc="mdat",it),gt,mo=(gt=class extends m{constructor(){super(...arguments),this.box_name="ItemDataBox"}},gt.fourcc="idat",gt),It,Go=(It=class extends m{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},It.fourcc="free",It),st,So=(st=class extends m{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},st.fourcc="skip",st),nt,NC=(nt=class extends D{constructor(){super(...arguments),this.box_name="HintMediaHeaderBox"}},nt.fourcc="hmhd",nt),Bt,In=(Bt=class extends D{constructor(){super(...arguments),this.box_name="NullMediaHeaderBox"}},Bt.fourcc="nmhd",Bt),Ct,Fo=(Ct=class extends D{constructor(){super(...arguments),this.box_name="ObjectDescriptorBox"}},Ct.fourcc="iods",Ct),at,No=(at=class extends D{constructor(){super(...arguments),this.box_name="XMLBox"}},at.fourcc="xml ",at),Qt,xo=(Qt=class extends D{constructor(){super(...arguments),this.box_name="BinaryXMLBox"}},Qt.fourcc="bxml",Qt),rt,Ro=(rt=class extends D{constructor(){super(...arguments),this.box_name="ItemProtectionBox",this.sinfs=[]}get protections(){return this.sinfs}},rt.fourcc="ipro",rt),ot,tB=(ot=class extends U{constructor(){super(...arguments),this.box_name="MovieBox",this.traks=[],this.psshs=[],this.subBoxNames=["trak","pssh"]}},ot.fourcc="moov",ot),Et,xC=(Et=class extends U{constructor(){super(...arguments),this.box_name="TrackBox",this.samples=[]}},Et.fourcc="trak",Et),ht,Uo=(ht=class extends U{constructor(){super(...arguments),this.box_name="EditBox"}},ht.fourcc="edts",ht),ct,RC=(ct=class extends U{constructor(){super(...arguments),this.box_name="MediaBox"}},ct.fourcc="mdia",ct),lt,UC=(lt=class extends U{constructor(){super(...arguments),this.box_name="MediaInformationBox"}},lt.fourcc="minf",lt),dt,MC=(dt=class extends U{constructor(){super(...arguments),this.box_name="DataInformationBox"}},dt.fourcc="dinf",dt),ft,bC=(ft=class extends U{constructor(){super(...arguments),this.box_name="SampleTableBox",this.sgpds=[],this.sbgps=[],this.subBoxNames=["sgpd","sbgp"]}},ft.fourcc="stbl",ft),ut,eB=(ut=class extends U{constructor(){super(...arguments),this.box_name="MovieExtendsBox",this.trexs=[],this.subBoxNames=["trex"]}},ut.fourcc="mvex",ut),wt,kC=(wt=class extends U{constructor(){super(...arguments),this.box_name="MovieFragmentBox",this.trafs=[],this.subBoxNames=["traf"]}},wt.fourcc="moof",wt),Dt,YC=(Dt=class extends U{constructor(){super(...arguments),this.box_name="TrackFragmentBox",this.truns=[],this.sgpds=[],this.sbgps=[],this.subBoxNames=["trun","sgpd","sbgp"]}},Dt.fourcc="traf",Dt),pt,Mo=(pt=class extends U{constructor(){super(...arguments),this.box_name="VTTCueBox"}},pt.fourcc="vttc",pt),yt,bo=(yt=class extends U{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessBox",this.tfras=[],this.subBoxNames=["tfra"]}},yt.fourcc="mfra",yt),mt,ko=(mt=class extends U{constructor(){super(...arguments),this.box_name="AdditionalMetadataContainerBox"}},mt.fourcc="meco",mt),Gt,Yo=(Gt=class extends U{constructor(){super(...arguments),this.box_name="trackhintinformation",this.subBoxNames=["sdp ","rtp "]}},Gt.fourcc="hnti",Gt),St,_o=(St=class extends U{constructor(){super(...arguments),this.box_name="hintstatisticsbox",this.maxrs=[],this.subBoxNames=["maxr"]}},St.fourcc="hinf",St),Ft,Lo=(Ft=class extends U{constructor(){super(...arguments),this.box_name="SubTrackBox"}},Ft.fourcc="strk",Ft),Nt,Jo=(Nt=class extends U{constructor(){super(...arguments),this.box_name="SubTrackDefinitionBox"}},Nt.fourcc="strd",Nt),xt,Ho=(xt=class extends U{constructor(){super(...arguments),this.box_name="ProtectionSchemeInfoBox"}},xt.fourcc="sinf",xt),Rt,vo=(Rt=class extends U{constructor(){super(...arguments),this.box_name="RestrictedSchemeInfoBox"}},Rt.fourcc="rinf",Rt),Ut,Ko=(Ut=class extends U{constructor(){super(...arguments),this.box_name="SchemeInformationBox"}},Ut.fourcc="schi",Ut),Mt,To=(Mt=class extends U{constructor(){super(...arguments),this.box_name="TrackGroupBox"}},Mt.fourcc="trgr",Mt),bt,qo=(bt=class extends U{constructor(){super(...arguments),this.box_name="UserDataBox",this.kinds=[],this.strks=[],this.subBoxNames=["kind","strk"]}},bt.fourcc="udta",bt),kt,Zo=(kt=class extends U{constructor(){super(...arguments),this.box_name="ItemPropertiesBox",this.ipmas=[],this.subBoxNames=["ipma"]}},kt.fourcc="iprp",kt),Yt,Vo=(Yt=class extends U{constructor(){super(...arguments),this.box_name="ItemPropertyContainerBox",this.hvcCs=[],this.ispes=[],this.claps=[],this.irots=[],this.subBoxNames=["hvcC","ispe","clap","irot"]}},Yt.fourcc="ipco",Yt),_t,Wo=(_t=class extends U{constructor(){super(...arguments),this.box_name="GroupsListBox"}},_t.fourcc="grpl",_t),Lt,zo=(Lt=class extends U{constructor(){super(...arguments),this.box_name="J2KHeaderInfoBox"}},Lt.fourcc="j2kH",Lt),Jt,jo=(Jt=class extends U{constructor(){super(...arguments),this.box_name="ExtendedTypeBox",this.tycos=[],this.subBoxNames=["tyco"]}},Jt.fourcc="etyp",Jt),Ht,Xo=(Ht=class extends U{constructor(){super(...arguments),this.box_name="ProjectedOmniVideoBox",this.subBoxNames=["prfr"]}},Ht.fourcc="povd",Ht),vt,_C=(vt=class extends D{constructor(){super(...arguments),this.box_name="DataReferenceBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){const i=hA(A,!1,this.size-(A.getPosition()-this.start));if(i.code===CA){const I=i.box;this.entries.push(I)}else return}}write(A){this.version=0,this.flags=0,this.size=4,this.writeHeader(A),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++)this.entries[t].write(A),this.size+=this.entries[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},vt.fourcc="dref",vt),Kt,LC=(Kt=class extends D{constructor(){super(...arguments),this.box_name="ExtendedLanguageBox"}parse(A){this.parseFullHeader(A),this.extended_language=A.readString(this.size-this.hdr_size)}write(A){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(A),A.writeString(this.extended_language)}},Kt.fourcc="elng",Kt),Tt,JC=(Tt=class extends m{constructor(){super(...arguments),this.box_name="FileTypeBox"}parse(A){let t=this.size-this.hdr_size;this.major_brand=A.readString(4),this.minor_version=A.readUint32(),t-=8,this.compatible_brands=[];let e=0;for(;t>=4;)this.compatible_brands[e]=A.readString(4),t-=4,e++}write(A){this.size=8+4*this.compatible_brands.length,this.writeHeader(A),A.writeString(this.major_brand,void 0,4),A.writeUint32(this.minor_version);for(let t=0;t<this.compatible_brands.length;t++)A.writeString(this.compatible_brands[t],void 0,4)}},Tt.fourcc="ftyp",Tt),qt,HC=(qt=class extends D{constructor(){super(...arguments),this.box_name="HandlerBox"}parse(A){if(this.parseFullHeader(A),this.version===0&&(A.readUint32(),this.handler=A.readString(4),A.readUint32Array(3),!this.isEndOfBox(A))){const t=this.start+this.size-A.getPosition();this.name=A.readCString();const e=this.start+this.size-1;A.seek(e),A.readUint8()!==0&&t>1&&(l.info("BoxParser","Warning: hdlr name is not null-terminated, possibly length-prefixed string. Trimming first byte."),this.name=this.name.slice(1))}}write(A){this.size=20+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(A),A.writeUint32(0),A.writeString(this.handler,void 0,4),A.writeUint32Array([0,0,0]),A.writeCString(this.name)}},qt.fourcc="hdlr",qt),Zt,vC=(Zt=class extends m{constructor(){super(...arguments),this.box_name="HEVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8();let t=A.readUint8();this.general_profile_space=t>>6,this.general_tier_flag=(t&32)>>5,this.general_profile_idc=t&31,this.general_profile_compatibility=A.readUint32(),this.general_constraint_indicator=A.readUint8Array(6),this.general_level_idc=A.readUint8(),this.min_spatial_segmentation_idc=A.readUint16()&4095,this.parallelismType=A.readUint8()&3,this.chroma_format_idc=A.readUint8()&3,this.bit_depth_luma_minus8=A.readUint8()&7,this.bit_depth_chroma_minus8=A.readUint8()&7,this.avgFrameRate=A.readUint16(),t=A.readUint8(),this.constantFrameRate=t>>6,this.numTemporalLayers=(t&13)>>3,this.temporalIdNested=(t&4)>>2,this.lengthSizeMinusOne=t&3,this.nalu_arrays=[];const e=A.readUint8();for(let i=0;i<e;i++){const I=[];this.nalu_arrays.push(I),t=A.readUint8(),I.completeness=(t&128)>>7,I.nalu_type=t&63;const s=A.readUint16();for(let n=0;n<s;n++){const B=A.readUint16();I.push({data:A.readUint8Array(B)})}}}write(A){this.size=23;for(let t=0;t<this.nalu_arrays.length;t++){this.size+=3;for(let e=0;e<this.nalu_arrays[t].length;e++)this.size+=2+this.nalu_arrays[t][e].data.length}this.writeHeader(A),A.writeUint8(this.configurationVersion),A.writeUint8((this.general_profile_space<<6)+(this.general_tier_flag<<5)+this.general_profile_idc),A.writeUint32(this.general_profile_compatibility),A.writeUint8Array(this.general_constraint_indicator),A.writeUint8(this.general_level_idc),A.writeUint16(this.min_spatial_segmentation_idc+(15<<24)),A.writeUint8(this.parallelismType+252),A.writeUint8(this.chroma_format_idc+252),A.writeUint8(this.bit_depth_luma_minus8+248),A.writeUint8(this.bit_depth_chroma_minus8+248),A.writeUint16(this.avgFrameRate),A.writeUint8((this.constantFrameRate<<6)+(this.numTemporalLayers<<3)+(this.temporalIdNested<<2)+this.lengthSizeMinusOne),A.writeUint8(this.nalu_arrays.length);for(let t=0;t<this.nalu_arrays.length;t++){A.writeUint8((this.nalu_arrays[t].completeness<<7)+this.nalu_arrays[t].nalu_type),A.writeUint16(this.nalu_arrays[t].length);for(let e=0;e<this.nalu_arrays[t].length;e++)A.writeUint16(this.nalu_arrays[t][e].data.length),A.writeUint8Array(this.nalu_arrays[t][e].data)}}},Zt.fourcc="hvcC",Zt),Vt,KC=(Vt=class extends D{constructor(){super(...arguments),this.box_name="MediaHeaderBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.timescale=A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.timescale=A.readUint32(),this.duration=A.readUint32()),this.parseLanguage(A),A.readUint16()}write(A){const t=this.modification_time>W||this.creation_time>W||this.duration>W||this.version===1;this.version=t?1:0,this.size=20,this.size+=t?12:0,this.flags=0,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.timescale),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.timescale),A.writeUint32(this.duration)),A.writeUint16(this.language),A.writeUint16(0)}},Vt.fourcc="mdhd",Vt),Wt,TC=(Wt=class extends D{constructor(){super(...arguments),this.box_name="MovieExtendsHeaderBox"}parse(A){this.parseFullHeader(A),this.flags&1&&(l.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),this.version===1?this.fragment_duration=A.readUint64():this.fragment_duration=A.readUint32()}write(A){const t=this.fragment_duration>W||this.version===1;this.version=t?1:0,this.size=4,this.size+=t?4:0,this.flags=0,this.writeHeader(A),t?A.writeUint64(this.fragment_duration):A.writeUint32(this.fragment_duration)}},Wt.fourcc="mehd",Wt),zt,Oo=(zt=class extends D{constructor(){super(...arguments),this.box_name="ItemInfoEntry"}parse(A){if(this.parseFullHeader(A),(this.version===0||this.version===1)&&(this.item_ID=A.readUint16(),this.item_protection_index=A.readUint16(),this.item_name=A.readCString(),this.content_type=A.readCString(),this.isEndOfBox(A)||(this.content_encoding=A.readCString())),this.version===1){this.extension_type=A.readString(4),l.warn("BoxParser","Cannot parse extension type"),A.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=A.readUint16():this.version===3&&(this.item_ID=A.readUint32()),this.item_protection_index=A.readUint16(),this.item_type=A.readString(4),this.item_name=A.readCString(),this.item_type==="mime"?(this.content_type=A.readCString(),this.content_encoding=A.readCString()):this.item_type==="uri "&&(this.item_uri_type=A.readCString()))}},zt.fourcc="infe",zt),jt,Po=(jt=class extends D{constructor(){super(...arguments),this.box_name="ItemInfoBox"}parse(A){this.parseFullHeader(A),this.version===0?this.entry_count=A.readUint16():this.entry_count=A.readUint32(),this.item_infos=[];for(let t=0;t<this.entry_count;t++){const e=hA(A,!1,this.size-(A.getPosition()-this.start));if(e.code===CA){const i=e.box;i.type==="infe"?this.item_infos[t]=i:l.error("BoxParser","Expected 'infe' box, got "+e.box.type,A.isofile)}else return}}},jt.fourcc="iinf",jt),Xt,$o=(Xt=class extends D{constructor(){super(...arguments),this.box_name="ItemLocationBox"}parse(A){this.parseFullHeader(A);let t;t=A.readUint8(),this.offset_size=t>>4&15,this.length_size=t&15,t=A.readUint8(),this.base_offset_size=t>>4&15,this.version===1||this.version===2?this.index_size=t&15:this.index_size=0,this.items=[];let e=0;if(this.version<2)e=A.readUint16();else if(this.version===2)e=A.readUint32();else throw new Error("version of iloc box not supported");for(let i=0;i<e;i++){let I=0,s=0,n=0;if(this.version<2)I=A.readUint16();else if(this.version===2)I=A.readUint32();else throw new Error("version of iloc box not supported");this.version===1||this.version===2?s=A.readUint16()&15:s=0;const B=A.readUint16();switch(this.base_offset_size){case 0:n=0;break;case 4:n=A.readUint32();break;case 8:n=A.readUint64();break;default:throw new Error("Error reading base offset size")}const C=[],a=A.readUint16();for(let Q=0;Q<a;Q++){let o=0,r=0,E=0;if(this.version===1||this.version===2)switch(this.index_size){case 0:o=0;break;case 4:o=A.readUint32();break;case 8:o=A.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.offset_size){case 0:r=0;break;case 4:r=A.readUint32();break;case 8:r=A.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.length_size){case 0:E=0;break;case 4:E=A.readUint32();break;case 8:E=A.readUint64();break;default:throw new Error("Error reading extent index")}C.push({extent_index:o,extent_length:E,extent_offset:r})}this.items.push({base_offset:n,construction_method:s,item_ID:I,data_reference_index:B,extents:C})}}},Xt.fourcc="iloc",Xt),AE={auxl:"Auxiliary image item",base:"Pre-derived image item base",cdsc:"Item describes referenced item",dimg:"Derived image item",dpnd:"Item coding dependency",eroi:"Region",evir:"EVC slice",exbl:"Scalable image item","fdl ":"File delivery",font:"Font item",iloc:"Item data location",mask:"Region mask",mint:"Data integrity",pred:"Predictively coded item",prem:"Pre-multiplied item",tbas:"HEVC tile track base item",text:"Text item",thmb:"Thumbnail image item"},RA,tE=(RA=class extends D{constructor(){super(...arguments),this.box_name="ItemReferenceBox",this.references=[]}parse(A){for(this.parseFullHeader(A),this.references=[];A.getPosition()<this.start+this.size;){const t=hA(A,!0,this.size-(A.getPosition()-this.start));if(t.code===CA){let e="Unknown item reference";RA.allowed_types.includes(t.type)?e=AE[t.type]:l.warn("BoxParser",`Unknown item reference type: '${t.type}'`);const i=this.version===0?new ro(t.type,t.size,e,t.hdr_size,t.start):new oo(t.type,t.size,e,t.hdr_size,t.start);i.write===m.prototype.write&&i.type!=="mdat"&&(l.warn("BoxParser",i.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(A)),i.parse(A),this.references.push(i)}else return}}},RA.fourcc="iref",RA.allowed_types=["auxl","base","cdsc","dimg","dpnd","eroi","evir","exbl","fdl ","font","iloc","mask","mint","pred","prem","tbas","text","thmb"],RA),Ot,eE=(Ot=class extends D{constructor(){super(...arguments),this.box_name="PrimaryItemBox"}parse(A){this.parseFullHeader(A),this.version===0?this.item_id=A.readUint16():this.item_id=A.readUint32()}},Ot.fourcc="pitm",Ot),Pt,iE=(Pt=class extends D{constructor(){super(...arguments),this.box_name="MetaBox",this.isQT=!1}parse(A){const t=A.getPosition();if(this.size>8){switch(A.readUint32(),A.readString(4)){case"hdlr":case"mhdr":case"keys":case"ilst":case"ctry":case"lang":this.isQT=!0;break}A.seek(t)}this.isQT||this.parseFullHeader(A),U.prototype.parse.call(this,A)}},Pt.fourcc="meta",Pt),$t,qC=($t=class extends D{constructor(){super(...arguments),this.box_name="MovieFragmentHeaderBox"}parse(A){this.parseFullHeader(A),this.sequence_number=A.readUint32()}write(A){this.version=0,this.flags=0,this.size=4,this.writeHeader(A),A.writeUint32(this.sequence_number)}},$t.fourcc="mfhd",$t),Ae,ZC=(Ae=class extends D{constructor(){super(...arguments),this.box_name="MovieHeaderBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.timescale=A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.timescale=A.readUint32(),this.duration=A.readUint32()),this.rate=A.readUint32(),this.volume=A.readUint16()>>8,A.readUint16(),A.readUint32Array(2),this.matrix=A.readInt32Array(9),A.readUint32Array(6),this.next_track_id=A.readUint32()}write(A){const t=this.modification_time>W||this.creation_time>W||this.duration>W||this.version===1;this.version=t?1:0,this.size=96,this.size+=t?12:0,this.flags=0,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.timescale),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.timescale),A.writeUint32(this.duration)),A.writeUint32(this.rate),A.writeUint16(this.volume<<8),A.writeUint16(0),A.writeUint32(0),A.writeUint32(0),A.writeInt32Array(this.matrix),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(this.next_track_id)}print(A){super.printHeader(A),A.log(A.indent+"creation_time: "+this.creation_time),A.log(A.indent+"modification_time: "+this.modification_time),A.log(A.indent+"timescale: "+this.timescale),A.log(A.indent+"duration: "+this.duration),A.log(A.indent+"rate: "+this.rate),A.log(A.indent+"volume: "+(this.volume>>8)),A.log(A.indent+"matrix: "+this.matrix.join(", ")),A.log(A.indent+"next_track_id: "+this.next_track_id)}},Ae.fourcc="mvhd",Ae),te,gE=(te=class extends ss{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},te.fourcc="mett",te),ee,IE=(ee=class extends ss{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.parseFooter(A)}},ee.fourcc="metx",ee),ie,sE=(ie=class extends m{constructor(){super(...arguments),this.box_name="AV1CodecConfigurationBox"}parse(A){let t=A.readUint8();if((t>>7&1)!==1){l.error("BoxParser","av1C marker problem",A.isofile);return}if(this.version=t&127,this.version!==1){l.error("BoxParser","av1C version "+this.version+" not supported",A.isofile);return}if(t=A.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=t&31,t=A.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=t&3,t=A.readUint8(),this.reserved_1=t>>5&7,this.reserved_1!==0){l.error("BoxParser","av1C reserved_1 parsing problem",A.isofile);return}if(this.initial_presentation_delay_present=t>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=t&15;else if(this.reserved_2=t&15,this.reserved_2!==0){l.error("BoxParser","av1C reserved_2 parsing problem",A.isofile);return}const e=this.size-this.hdr_size-4;this.configOBUs=A.readUint8Array(e)}},ie.fourcc="av1C",ie),ge,nE=(ge=class extends D{constructor(){super(...arguments),this.box_name="ElementaryStreamDescriptorBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8Array(this.size-this.hdr_size);if("MPEG4DescriptorParser"in an){const e=new an.MPEG4DescriptorParser;this.esd=e.parseOneDescriptor(new gA(t.buffer,0))}}},ge.fourcc="esds",ge),Ie,BE=(Ie=class extends D{constructor(){super(...arguments),this.box_name="VPCodecConfigurationRecord"}parse(A){if(this.parseFullHeader(A),this.version===1){this.profile=A.readUint8(),this.level=A.readUint8();const t=A.readUint8();this.bitDepth=t>>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=t&1,this.colourPrimaries=A.readUint8(),this.transferCharacteristics=A.readUint8(),this.matrixCoefficients=A.readUint8(),this.codecIntializationDataSize=A.readUint16(),this.codecIntializationData=A.readUint8Array(this.codecIntializationDataSize)}else{this.profile=A.readUint8(),this.level=A.readUint8();let t=A.readUint8();this.bitDepth=t>>4&15,this.colorSpace=t&15,t=A.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=t&1,this.codecIntializationDataSize=A.readUint16(),this.codecIntializationData=A.readUint8Array(this.codecIntializationDataSize)}}},Ie.fourcc="vpcC",Ie),se,CE=(se=class extends D{constructor(){super(...arguments),this.box_name="VvcConfigurationBox"}parse(A){this.parseFullHeader(A);const t={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(s){this.held_bits=s.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(s){this.held_bits=s.readUint16(),this.num_held_bits=16},extract_bits:function(s){const n=this.held_bits>>this.num_held_bits-s&(1<<s)-1;return this.num_held_bits-=s,n}};if(t.stream_read_1_bytes(A),t.extract_bits(5),this.lengthSizeMinusOne=t.extract_bits(2),this.ptl_present_flag=t.extract_bits(1),this.ptl_present_flag){t.stream_read_2_bytes(A),this.ols_idx=t.extract_bits(9),this.num_sublayers=t.extract_bits(3),this.constant_frame_rate=t.extract_bits(2),this.chroma_format_idc=t.extract_bits(2),t.stream_read_1_bytes(A),this.bit_depth_minus8=t.extract_bits(3),t.extract_bits(5);{if(t.stream_read_2_bytes(A),t.extract_bits(2),this.num_bytes_constraint_info=t.extract_bits(6),this.general_profile_idc=t.extract_bits(7),this.general_tier_flag=t.extract_bits(1),this.general_level_idc=A.readUint8(),t.stream_read_1_bytes(A),this.ptl_frame_only_constraint_flag=t.extract_bits(1),this.ptl_multilayer_enabled_flag=t.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(let s=0;s<this.num_bytes_constraint_info-1;s++){const n=t.extract_bits(6);t.stream_read_1_bytes(A);const B=t.extract_bits(2);this.general_constraint_info[s]=n<<2|B}this.general_constraint_info[this.num_bytes_constraint_info-1]=t.extract_bits(6)}else t.extract_bits(6);if(this.num_sublayers>1){t.stream_read_1_bytes(A),this.ptl_sublayer_present_mask=0;for(let s=this.num_sublayers-2;s>=0;--s){const n=t.extract_bits(1);this.ptl_sublayer_present_mask|=n<<s}for(let s=this.num_sublayers;s<=8&&this.num_sublayers>1;++s)t.extract_bits(1);this.sublayer_level_idc=[];for(let s=this.num_sublayers-2;s>=0;--s)this.ptl_sublayer_present_mask&1<<s&&(this.sublayer_level_idc[s]=A.readUint8())}if(this.ptl_num_sub_profiles=A.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(let s=0;s<this.ptl_num_sub_profiles;s++)this.general_sub_profile_idc.push(A.readUint32())}this.max_picture_width=A.readUint16(),this.max_picture_height=A.readUint16(),this.avg_frame_rate=A.readUint16()}const e=12,i=13;this.nalu_arrays=[];const I=A.readUint8();for(let s=0;s<I;s++){const n=[];this.nalu_arrays.push(n),t.stream_read_1_bytes(A),n.completeness=t.extract_bits(1),t.extract_bits(2),n.nalu_type=t.extract_bits(5);let B=1;n.nalu_type!==i&&n.nalu_type!==e&&(B=A.readUint16());for(let C=0;C<B;C++){const a=A.readUint16();n.push({data:A.readUint8Array(a),length:a})}}}},se.fourcc="vvcC",se),ne,aE=(ne=class extends m{constructor(){super(...arguments),this.box_name="ColourInformationBox"}parse(A){if(this.colour_type=A.readString(4),this.colour_type==="nclx"){this.colour_primaries=A.readUint16(),this.transfer_characteristics=A.readUint16(),this.matrix_coefficients=A.readUint16();const t=A.readUint8();this.full_range_flag=t>>7}else this.colour_type==="rICC"?this.ICC_profile=A.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=A.readUint8Array(this.size-4))}},ne.fourcc="colr",ne);function PA(g,A){let t=Number(g).toString(16);for(A=typeof A=="undefined"?2:A;t.length<A;)t="0"+t;return t}var En=class extends H{getCodec(){const g=super.getCodec();return this.avcC?`${g}.${PA(this.avcC.AVCProfileIndication)}${PA(this.avcC.profile_compatibility)}${PA(this.avcC.AVCLevelIndication)}`:g}},Be,QE=(Be=class extends En{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},Be.fourcc="avc1",Be),Ce,rE=(Ce=class extends En{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},Ce.fourcc="avc2",Ce),ae,oE=(ae=class extends En{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},ae.fourcc="avc3",ae),Qe,EE=(Qe=class extends En{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},Qe.fourcc="avc4",Qe),re,hE=(re=class extends H{constructor(){super(...arguments),this.box_name="AV1SampleEntry"}getCodec(){const A=super.getCodec(),t=this.av1C.seq_level_idx_0,e=t<10?"0"+t:t;let i;return this.av1C.seq_profile===2&&this.av1C.high_bitdepth===1?i=this.av1C.twelve_bit===1?"12":"10":this.av1C.seq_profile<=2&&(i=this.av1C.high_bitdepth===1?"10":"08"),A+"."+this.av1C.seq_profile+"."+e+(this.av1C.seq_tier_0?"H":"M")+"."+i}},re.fourcc="av01",re),oe,cE=(oe=class extends H{},oe.fourcc="dav1",oe),hn=class extends H{getCodec(){let g=super.getCodec();if(this.hvcC){switch(g+=".",this.hvcC.general_profile_space){case 0:g+="";break;case 1:g+="A";break;case 2:g+="B";break;case 3:g+="C";break}g+=this.hvcC.general_profile_idc,g+=".";let A=this.hvcC.general_profile_compatibility,t=0;for(let I=0;I<32&&(t|=A&1,I!==31);I++)t<<=1,A>>=1;g+=PA(t,0),g+=".",this.hvcC.general_tier_flag===0?g+="L":g+="H",g+=this.hvcC.general_level_idc;let e=!1,i="";for(let I=5;I>=0;I--)(this.hvcC.general_constraint_indicator[I]||e)&&(i="."+PA(this.hvcC.general_constraint_indicator[I],0)+i,e=!0);g+=i}return g}},Ee,lE=(Ee=class extends hn{constructor(){super(...arguments),this.box_name="HEVCSampleEntry"}},Ee.fourcc="hvc1",Ee),he,dE=(he=class extends hn{},he.fourcc="hvc2",he),ce,fE=(ce=class extends hn{constructor(){super(...arguments),this.box_name="HEVCSampleEntry",this.colrs=[],this.subBoxNames=["colr"]}},ce.fourcc="hev1",ce),le,uE=(le=class extends hn{},le.fourcc="hev2",le),de,wE=(de=class extends H{constructor(){super(...arguments),this.box_name="HEVCTileSampleSampleEntry"}},de.fourcc="hvt1",de),fe,DE=(fe=class extends H{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},fe.fourcc="lhe1",fe),ue,pE=(ue=class extends H{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},ue.fourcc="lhv1",ue),we,yE=(we=class extends H{},we.fourcc="dvh1",we),De,mE=(De=class extends H{},De.fourcc="dvhe",De),VC=class extends H{getCodec(){let g=super.getCodec();if(this.vvcC){g+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?g+=".H":g+=".L",g+=this.vvcC.general_level_idc;let A="";if(this.vvcC.general_constraint_info){const t=[];let e=0;e|=this.vvcC.ptl_frame_only_constraint_flag<<7,e|=this.vvcC.ptl_multilayer_enabled_flag<<6;let i;for(let I=0;I<this.vvcC.general_constraint_info.length;++I)e|=this.vvcC.general_constraint_info[I]>>2&63,t.push(e),e&&(i=I),e=this.vvcC.general_constraint_info[I]>>2&3;if(i===void 0)A=".CA";else{A=".C";const I="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let s=0,n=0;for(let B=0;B<=i;++B)for(s=s<<8|t[B],n+=8;n>=5;){const C=s>>n-5&31;A+=I[C],n-=5,s&=(1<<n)-1}n&&(s<<=5-n,A+=I[s&31])}}g+=A}return g}},pe,GE=(pe=class extends VC{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},pe.fourcc="vvc1",pe),ye,SE=(ye=class extends VC{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},ye.fourcc="vvi1",ye),me,FE=(me=class extends H{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},me.fourcc="vvs1",me),Ge,NE=(Ge=class extends H{constructor(){super(...arguments),this.box_name="VvcNonVCLSampleEntry"}},Ge.fourcc="vvcN",Ge),WC=class extends H{getCodec(){const g=super.getCodec();let A=this.vpcC.level;A===0&&(A="00");let t=this.vpcC.bitDepth;return t===8&&(t="08"),`${g}.0${this.vpcC.profile}.${A}.${t}`}},Se,xE=(Se=class extends WC{},Se.fourcc="vp08",Se),Fe,RE=(Fe=class extends WC{},Fe.fourcc="vp09",Fe),Ne,UE=(Ne=class extends H{},Ne.fourcc="avs3",Ne),xe,ME=(xe=class extends H{constructor(){super(...arguments),this.box_name="J2KSampleEntry"}},xe.fourcc="j2ki",xe),Re,bE=(Re=class extends H{},Re.fourcc="mjp2",Re),Ue,kE=(Ue=class extends H{},Ue.fourcc="mjpg",Ue),Me,YE=(Me=class extends H{constructor(){super(...arguments),this.box_name="UncompressedVideoSampleEntry"}},Me.fourcc="uncv",Me),be,_E=(be=class extends H{constructor(){super(...arguments),this.box_name="MP4VisualSampleEntry"}},be.fourcc="mp4v",be),ke,LE=(ke=class extends sA{constructor(){super(...arguments),this.box_name="MP4AudioSampleEntry"}getCodec(){const A=super.getCodec();if(this.esds&&this.esds.esd){const t=this.esds.esd.getOTI(),e=this.esds.esd.getAudioConfig();return A+"."+PA(t)+(e?"."+e:"")}else return A}},ke.fourcc="mp4a",ke),Ye,JE=(Ye=class extends sA{},Ye.fourcc="m4ae",Ye),_e,HE=(_e=class extends sA{},_e.fourcc="ac-3",_e),Le,vE=(Le=class extends sA{},Le.fourcc="ac-4",Le),Je,KE=(Je=class extends sA{},Je.fourcc="ec-3",Je),He,TE=(He=class extends sA{},He.fourcc="Opus",He),ve,qE=(ve=class extends sA{},ve.fourcc="mha1",ve),Ke,ZE=(Ke=class extends sA{},Ke.fourcc="mha2",Ke),Te,VE=(Te=class extends sA{},Te.fourcc="mhm1",Te),qe,WE=(qe=class extends sA{},qe.fourcc="mhm2",qe),Ze,zE=(Ze=class extends sA{},Ze.fourcc="fLaC",Ze),Ve,jE=(Ve=class extends H{},Ve.fourcc="encv",Ve),We,XE=(We=class extends sA{},We.fourcc="enca",We),ze,OE=(ze=class extends TA{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ze.fourcc="encu",ze),je,PE=(je=class extends QB{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},je.fourcc="encs",je),Xe,$E=(Xe=class extends QB{},Xe.fourcc="mp4s",Xe),Oe,Ah=(Oe=class extends yo{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Oe.fourcc="enct",Oe),Pe,th=(Pe=class extends ss{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Pe.fourcc="encm",Pe),$e,eh=($e=class extends H{constructor(){super(...arguments),this.box_name="RestrictedVideoSampleEntry"}},$e.fourcc="resv",$e),Ai,ih=(Ai=class extends TA{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},Ai.fourcc="sbtt",Ai),ti,zC=(ti=class extends TA{parse(A){this.parseHeader(A),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.auxiliary_mime_types=A.readCString(),this.parseFooter(A)}write(A){this.writeHeader(A),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,A.writeCString(this.namespace),A.writeCString(this.schema_location),A.writeCString(this.auxiliary_mime_types),this.writeFooter(A)}},ti.fourcc="stpp",ti),ei,gh=(ei=class extends TA{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}getCodec(){const A=super.getCodec();return this.mime_format?A+"."+this.mime_format:A}},ei.fourcc="stxt",ei),ii,Ih=(ii=class extends TA{parse(A){this.parseHeader(A),this.displayFlags=A.readUint32(),this.horizontal_justification=A.readInt8(),this.vertical_justification=A.readInt8(),this.bg_color_rgba=A.readUint8Array(4),this.box_record=A.readInt16Array(4),this.style_record=A.readUint8Array(12),this.parseFooter(A)}},ii.fourcc="tx3g",ii),gi,sh=(gi=class extends ss{parse(A){this.parseHeader(A),this.parseFooter(A)}},gi.fourcc="wvtt",gi),Ii,nh=(Ii=class extends D{constructor(){super(...arguments),this.box_name="SampleToGroupBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readString(4),this.version===1?this.grouping_type_parameter=A.readUint32():this.grouping_type_parameter=0,this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++)this.entries.push({sample_count:A.readInt32(),group_description_index:A.readInt32()})}write(A){this.grouping_type_parameter?this.version=1:this.version=0,this.flags=0,this.size=8+8*this.entries.length+(this.version===1?4:0),this.writeHeader(A),A.writeString(this.grouping_type,void 0,4),this.version===1&&A.writeUint32(this.grouping_type_parameter),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const e=this.entries[t];A.writeInt32(e.sample_count),A.writeInt32(e.group_description_index)}}},Ii.fourcc="sbgp",Ii),si,Bh=(si=class extends D{constructor(){super(...arguments),this.box_name="SampleDependencyTypeBox"}parse(A){this.parseFullHeader(A);const t=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(let e=0;e<t;e++){const i=A.readUint8();this.is_leading[e]=i>>6,this.sample_depends_on[e]=i>>4&3,this.sample_is_depended_on[e]=i>>2&3,this.sample_has_redundancy[e]=i&3}}},si.fourcc="sdtp",si),ni,Ch=(ni=class extends D{constructor(){super(...arguments),this.box_name="SampleGroupDescriptionBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readString(4),l.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=A.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=A.readUint32()),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){let i;this.grouping_type in IA.sampleGroupEntry?i=new IA.sampleGroupEntry[this.grouping_type](this.grouping_type):i=new T(this.grouping_type),this.entries.push(i),this.version===1?this.default_length===0?i.description_length=A.readUint32():i.description_length=this.default_length:i.description_length=this.default_length,i.write===T.prototype.write&&(l.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),i.data=A.readUint8Array(i.description_length),A.seek(A.getPosition()-i.description_length)),i.parse(A)}}write(A){this.flags=0,this.size=12;for(let t=0;t<this.entries.length;t++){const e=this.entries[t];this.version===1&&(this.default_length===0&&(this.size+=4),this.size+=e.data.length)}this.writeHeader(A),A.writeString(this.grouping_type,void 0,4),this.version===1&&A.writeUint32(this.default_length),this.version>=2&&A.writeUint32(this.default_sample_description_index),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const e=this.entries[t];this.version===1&&this.default_length===0&&A.writeUint32(e.description_length),e.write(A)}}},ni.fourcc="sgpd",ni),Bi,ah=(Bi=class extends D{constructor(){super(...arguments),this.box_name="CompressedSegmentIndexBox"}parse(A){this.parseFullHeader(A),this.reference_ID=A.readUint32(),this.timescale=A.readUint32(),this.version===0?(this.earliest_presentation_time=A.readUint32(),this.first_offset=A.readUint32()):(this.earliest_presentation_time=A.readUint64(),this.first_offset=A.readUint64()),A.readUint16(),this.references=[];const t=A.readUint16();for(let e=0;e<t;e++){const i=A.readUint32(),I=A.readUint32(),s=A.readUint32();this.references.push({reference_type:i>>31&1,referenced_size:i&2147483647,subsegment_duration:I,starts_with_SAP:s>>31&1,SAP_type:s>>28&7,SAP_delta_time:s&268435455})}}write(A){const t=this.earliest_presentation_time>W||this.first_offset>W||this.version===1;this.version=t?1:0,this.size=12+12*this.references.length,this.size+=t?16:8,this.flags=0,this.writeHeader(A),A.writeUint32(this.reference_ID),A.writeUint32(this.timescale),t?(A.writeUint64(this.earliest_presentation_time),A.writeUint64(this.first_offset)):(A.writeUint32(this.earliest_presentation_time),A.writeUint32(this.first_offset)),A.writeUint16(0),A.writeUint16(this.references.length);for(let e=0;e<this.references.length;e++){const i=this.references[e];A.writeUint32(i.reference_type<<31|i.referenced_size),A.writeUint32(i.subsegment_duration),A.writeUint32(i.starts_with_SAP<<31|i.SAP_type<<28|i.SAP_delta_time)}}},Bi.fourcc="sidx",Bi),Ci,jC=(Ci=class extends D{constructor(){super(...arguments),this.box_name="SoundMediaHeaderBox"}parse(A){this.parseFullHeader(A),this.balance=A.readUint16(),A.readUint16()}write(A){this.version=0,this.size=4,this.writeHeader(A),A.writeUint16(this.balance),A.writeUint16(0)}},Ci.fourcc="smhd",Ci),ai,XC=(ai=class extends D{constructor(){super(...arguments),this.box_name="ChunkOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.chunk_offsets=[],this.version===0)for(let e=0;e<t;e++)this.chunk_offsets.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(A),A.writeUint32(this.chunk_offsets.length),A.writeUint32Array(this.chunk_offsets)}unpack(A){for(let t=0;t<this.chunk_offsets.length;t++)A[t].offset=this.chunk_offsets[t]}},ai.fourcc="stco",ai),Qi,OC=(Qi=class extends D{constructor(){super(...arguments),this.box_name="SubtitleMediaHeaderBox"}},Qi.fourcc="sthd",Qi),ri,PC=(ri=class extends D{constructor(){super(...arguments),this.box_name="SampleToChunkBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],this.version===0)for(let e=0;e<t;e++)this.first_chunk.push(A.readUint32()),this.samples_per_chunk.push(A.readUint32()),this.sample_description_index.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(A),A.writeUint32(this.first_chunk.length);for(let t=0;t<this.first_chunk.length;t++)A.writeUint32(this.first_chunk[t]),A.writeUint32(this.samples_per_chunk[t]),A.writeUint32(this.sample_description_index[t])}unpack(A){let t=0,e=0;for(let i=0;i<this.first_chunk.length;i++)for(let I=0;I<(i+1<this.first_chunk.length?this.first_chunk[i+1]:1/0);I++){e++;for(let s=0;s<this.samples_per_chunk[i];s++){if(A[t])A[t].description_index=this.sample_description_index[i],A[t].chunk_index=e;else return;t++}}}},ri.fourcc="stsc",ri),oi,$C=(oi=class extends D{constructor(){super(...arguments),this.box_name="SampleDescriptionBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=1;e<=t;e++){const i=hA(A,!0,this.size-(A.getPosition()-this.start));if(i.code===CA){let I;i.type in IA.sampleEntry?(I=new IA.sampleEntry[i.type](i.size),I.hdr_size=i.hdr_size,I.start=i.start):(l.warn("BoxParser",`Unknown sample entry type: '${i.type}'`),I=new wA(i.size,i.hdr_size,i.start),I.type=i.type),I.write===wA.prototype.write&&(l.info("BoxParser","SampleEntry "+I.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),I.parseDataAndRewind(A)),I.parse(A),this.entries.push(I)}else return}}write(A){this.version=0,this.flags=0,this.size=0,this.writeHeader(A),A.writeUint32(this.entries.length),this.size+=4;for(let t=0;t<this.entries.length;t++)this.entries[t].write(A),this.size+=this.entries[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},oi.fourcc="stsd",oi),Ei,Aa=(Ei=class extends D{constructor(){super(...arguments),this.box_name="SampleSizeBox"}parse(A){if(this.parseFullHeader(A),this.sample_sizes=[],this.version===0){this.sample_size=A.readUint32(),this.sample_count=A.readUint32();for(let t=0;t<this.sample_count;t++)this.sample_size===0?this.sample_sizes.push(A.readUint32()):this.sample_sizes[t]=this.sample_size}}write(A){let t=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0){let e=0;for(;e+1<this.sample_sizes.length;)if(this.sample_sizes[e+1]!==this.sample_sizes[0]){t=!1;break}else e++}else t=!1;this.size=8,t||(this.size+=4*this.sample_sizes.length),this.writeHeader(A),t?A.writeUint32(this.sample_sizes[0]):A.writeUint32(0),A.writeUint32(this.sample_sizes.length),t||A.writeUint32Array(this.sample_sizes)}unpack(A){for(let t=0;t<this.sample_sizes.length;t++)A[t].size=this.sample_sizes[t]}},Ei.fourcc="stsz",Ei),hi,ta=(hi=class extends D{constructor(){super(...arguments),this.box_name="TimeToSampleBox",this.sample_counts=[],this.sample_deltas=[]}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.sample_counts.length=0,this.sample_deltas.length=0,this.version===0)for(let e=0;e<t;e++){this.sample_counts.push(A.readUint32());let i=A.readInt32();i<0&&(l.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),i=1),this.sample_deltas.push(i)}}write(A){this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(A),A.writeUint32(this.sample_counts.length);for(let t=0;t<this.sample_counts.length;t++)A.writeUint32(this.sample_counts[t]),A.writeUint32(this.sample_deltas[t])}unpack(A){let t=0;for(let e=0;e<this.sample_counts.length;e++)for(let i=0;i<this.sample_counts[e];i++)t===0?A[t].dts=0:A[t].dts=A[t-1].dts+this.sample_deltas[e],t++}},hi.fourcc="stts",hi),ci,ea=(ci=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentBaseMediaDecodeTimeBox"}parse(A){this.parseFullHeader(A),this.version===1?this.baseMediaDecodeTime=A.readUint64():this.baseMediaDecodeTime=A.readUint32()}write(A){const t=this.baseMediaDecodeTime>W||this.version===1;this.version=t?1:0,this.size=4,this.size+=t?4:0,this.flags=0,this.writeHeader(A),t?A.writeUint64(this.baseMediaDecodeTime):A.writeUint32(this.baseMediaDecodeTime)}},ci.fourcc="tfdt",ci),li,ia=(li=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentHeaderBox"}parse(A){this.parseFullHeader(A);let t=0;this.track_id=A.readUint32(),this.size-this.hdr_size>t&&this.flags&js?(this.base_data_offset=A.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&Xs?(this.default_sample_description_index=A.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&Os?(this.default_sample_duration=A.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&Ps?(this.default_sample_size=A.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&$s?(this.default_sample_flags=A.readUint32(),t+=4):this.default_sample_flags=0}write(A){this.version=0,this.size=4,this.flags&js&&(this.size+=8),this.flags&Xs&&(this.size+=4),this.flags&Os&&(this.size+=4),this.flags&Ps&&(this.size+=4),this.flags&$s&&(this.size+=4),this.writeHeader(A),A.writeUint32(this.track_id),this.flags&js&&A.writeUint64(this.base_data_offset),this.flags&Xs&&A.writeUint32(this.default_sample_description_index),this.flags&Os&&A.writeUint32(this.default_sample_duration),this.flags&Ps&&A.writeUint32(this.default_sample_size),this.flags&$s&&A.writeUint32(this.default_sample_flags)}},li.fourcc="tfhd",li),di,ga=(di=class extends D{constructor(){super(...arguments),this.box_name="TrackHeaderBox",this.layer=0,this.alternate_group=0}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.track_id=A.readUint32(),A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.track_id=A.readUint32(),A.readUint32(),this.duration=A.readUint32()),A.readUint32Array(2),this.layer=A.readInt16(),this.alternate_group=A.readInt16(),this.volume=A.readInt16()>>8,A.readUint16(),this.matrix=A.readInt32Array(9),this.width=A.readUint32(),this.height=A.readUint32()}write(A){var e;const t=this.modification_time>W||this.creation_time>W||this.duration>W||this.version===1;this.version=t?1:0,this.size=80,this.size+=t?12:0,this.flags=(e=this.flags)!=null?e:3,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.track_id),A.writeUint32(0),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.track_id),A.writeUint32(0),A.writeUint32(this.duration)),A.writeUint32Array([0,0]),A.writeInt16(this.layer),A.writeInt16(this.alternate_group),A.writeInt16(this.volume<<8),A.writeInt16(0),A.writeInt32Array(this.matrix),A.writeUint32(this.width),A.writeUint32(this.height)}print(A){super.printHeader(A),A.log(A.indent+"creation_time: "+this.creation_time),A.log(A.indent+"modification_time: "+this.modification_time),A.log(A.indent+"track_id: "+this.track_id),A.log(A.indent+"duration: "+this.duration),A.log(A.indent+"volume: "+(this.volume>>8)),A.log(A.indent+"matrix: "+this.matrix.join(", ")),A.log(A.indent+"layer: "+this.layer),A.log(A.indent+"alternate_group: "+this.alternate_group),A.log(A.indent+"width: "+this.width),A.log(A.indent+"height: "+this.height)}},di.fourcc="tkhd",di),fi,iB=(fi=class extends D{constructor(){super(...arguments),this.box_name="TrackExtendsBox"}parse(A){this.parseFullHeader(A),this.track_id=A.readUint32(),this.default_sample_description_index=A.readUint32(),this.default_sample_duration=A.readUint32(),this.default_sample_size=A.readUint32(),this.default_sample_flags=A.readUint32()}write(A){this.version=0,this.flags=0,this.size=20,this.writeHeader(A),A.writeUint32(this.track_id),A.writeUint32(this.default_sample_description_index),A.writeUint32(this.default_sample_duration),A.writeUint32(this.default_sample_size),A.writeUint32(this.default_sample_flags)}},fi.fourcc="trex",fi),ui,Ia=(ui=class extends D{constructor(){super(...arguments),this.box_name="TrackRunBox",this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[]}parse(A){this.parseFullHeader(A);let t=0;if(this.sample_count=A.readUint32(),t+=4,this.size-this.hdr_size>t&&this.flags&Gs?(this.data_offset=A.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&An?(this.first_sample_flags=A.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(let e=0;e<this.sample_count;e++)this.flags&Ss&&(this.sample_duration[e]=A.readUint32()),this.flags&Fs&&(this.sample_size[e]=A.readUint32()),this.flags&Ns&&(this.sample_flags[e]=A.readUint32()),this.flags&xs&&(this.version===0?this.sample_composition_time_offset[e]=A.readUint32():this.sample_composition_time_offset[e]=A.readInt32())}write(A){this.size=4,this.flags&Gs&&(this.size+=4),this.flags&An&&(this.size+=4),this.flags&Ss&&(this.size+=4*this.sample_duration.length),this.flags&Fs&&(this.size+=4*this.sample_size.length),this.flags&Ns&&(this.size+=4*this.sample_flags.length),this.flags&xs&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(A),A.writeUint32(this.sample_count),this.flags&Gs&&(this.data_offset_position=A.getPosition(),A.writeInt32(this.data_offset)),this.flags&An&&A.writeUint32(this.first_sample_flags);for(let t=0;t<this.sample_count;t++)this.flags&Ss&&A.writeUint32(this.sample_duration[t]),this.flags&Fs&&A.writeUint32(this.sample_size[t]),this.flags&Ns&&A.writeUint32(this.sample_flags[t]),this.flags&xs&&(this.version===0?A.writeUint32(this.sample_composition_time_offset[t]):A.writeInt32(this.sample_composition_time_offset[t]))}},ui.fourcc="trun",ui),wi,sa=(wi=class extends D{constructor(){super(...arguments),this.box_name="DataEntryUrlBox"}parse(A){this.parseFullHeader(A),this.flags!==1&&(this.location=A.readCString())}write(A){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(A),this.location&&A.writeCString(this.location)}},wi.fourcc="url ",wi),Di,na=(Di=class extends D{constructor(){super(...arguments),this.box_name="VideoMediaHeaderBox"}parse(A){this.parseFullHeader(A),this.graphicsmode=A.readUint16(),this.opcolor=A.readUint16Array(3)}write(A){this.version=0,this.size=8,this.writeHeader(A),A.writeUint16(this.graphicsmode),A.writeUint16Array(this.opcolor)}},Di.fourcc="vmhd",Di),Hn=class{constructor(g,A,t){this.grouping_type=g,this.grouping_type_parameter=A,this.sbgp=t,this.last_sample_in_run=-1,this.entry_index=-1}},Qh=class GA{constructor(A,t=!0){this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.moovStartSent=!1,this.readySent=!1,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.sidxSent=!1,this.items=[],this.entity_groups=[],this.itemsDataSize=0,this.lastMoofIndex=0,this.samplesDataSize=0,this.lastBoxStartPosition=0,this.nextParsePosition=0,this.discardMdatData=!0,this.discardMdatData=t,A?(this.stream=A,this.parse()):this.stream=new en,this.stream.isofile=this}setSegmentOptions(A,t,e){var C,a,Q;const{sizePerSegment:i=Number.MAX_SAFE_INTEGER,rapAlignement:I=!0}=e;let s=(a=(C=e.nbSamples)!=null?C:e.nbSamplesPerFragment)!=null?a:1e3;const n=(Q=e.nbSamplesPerFragment)!=null?Q:s;if(s<=0||n<=0||i<=0){l.error("ISOFile",`Invalid segment options: nbSamples=${s}, nbSamplesPerFragment=${n}, sizePerSegment=${i}`);return}if(s<n&&(l.warn("ISOFile",`nbSamples (${s}) is less than nbSamplesPerFragment (${n}), setting nbSamples to nbSamplesPerFragment`),s=n),this.fragmentedTracks.some(o=>o.nb_samples!==s)){l.error("ISOFile",`Cannot set segment options for track ${A}: nbSamples (${s}) does not match existing tracks`);return}const B=this.getTrackById(A);if(B){const o={id:A,user:t,trak:B,segmentStream:void 0,nb_samples:s,nb_samples_per_fragment:n,size_per_segment:i,rapAlignement:I,state:{lastFragmentSampleNumber:0,lastSegmentSampleNumber:0,accumulatedSize:0}};this.fragmentedTracks.push(o),B.nextSample=0}this.discardMdatData&&l.warn("ISOFile","Segmentation options set but discardMdatData is true, samples will not be segmented")}unsetSegmentOptions(A){let t=-1;for(let e=0;e<this.fragmentedTracks.length;e++)this.fragmentedTracks[e].id===A&&(t=e);t>-1&&this.fragmentedTracks.splice(t,1)}setExtractionOptions(A,t,{nbSamples:e=1e3}={}){const i=this.getTrackById(A);i&&(this.extractedTracks.push({id:A,user:t,trak:i,nb_samples:e,samples:[]}),i.nextSample=0),this.discardMdatData&&l.warn("ISOFile","Extraction options set but discardMdatData is true, samples will not be extracted")}unsetExtractionOptions(A){let t=-1;for(let e=0;e<this.extractedTracks.length;e++)this.extractedTracks[e].id===A&&(t=e);t>-1&&this.extractedTracks.splice(t,1)}parse(){if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else{this.saveParsePosition&&this.saveParsePosition();const t=hA(this.stream,!1);if(t.code===mA)if(this.processIncompleteBox){if(this.processIncompleteBox(t))continue;return}else return;else if(t.code===CA){const e=t.box;if(this.boxes.push(e),e.type==="uuid")this[e.uuid]!==void 0&&l.warn("ISOFile","Duplicate Box of uuid: "+e.uuid+", overriding previous occurrence"),this[e.uuid]=e;else switch(e.type){case"mdat":this.mdats.push(e),this.transferMdatData(e);break;case"moof":this.moofs.push(e);break;case"free":case"skip":break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[e.type]!==void 0?Array.isArray(this[e.type+"s"])?(l.info("ISOFile",`Found multiple boxes of type ${e.type} in ISOFile, adding to array`),this[e.type+"s"].push(e)):(l.warn("ISOFile",`Found multiple boxes of type ${e.type} but no array exists. Creating array dynamically.`),this[e.type+"s"]=[this[e.type],e]):(this[e.type]=e,Array.isArray(this[e.type+"s"])&&this[e.type+"s"].push(e));break}this.updateUsedBytes&&this.updateUsedBytes(e,t)}else if(t.code===mC){l.error("ISOFile",`Invalid data found while parsing box of type '${t.type}' at position ${t.start}. Aborting parsing.`,this);break}}}checkBuffer(A){if(!A)throw new Error("Buffer must be defined and non empty");return A.byteLength===0?(l.warn("ISOFile","Ignoring empty buffer (fileStart: "+A.fileStart+")"),this.stream.logBufferLevel(),!1):(l.info("ISOFile","Processing buffer (fileStart: "+A.fileStart+")"),A.usedBytes=0,this.stream.insertBuffer(A),this.stream.logBufferLevel(),this.stream.initialized()?!0:(l.warn("ISOFile","Not ready to start parsing"),!1))}appendBuffer(A,t){let e;if(this.checkBuffer(A))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(e=this.nextSeekPosition,this.nextSeekPosition=void 0):e=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(e=this.stream.getEndFilePositionAfter(e))):this.nextParsePosition?e=this.nextParsePosition:e=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(l.info("ISOFile","Done processing buffer (fileStart: "+A.fileStart+") - next buffer to fetch should have a fileStart position of "+e),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),l.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),e}getFragmentDuration(){const A=this.getBox("mvex");if(!A)return;if(A.mehd)return{num:A.mehd.fragment_duration,den:this.moov.mvhd.timescale};const t=this.getBoxes("trak",!1);let e={num:0,den:1};for(const i of t){const I=i.samples_duration,s=i.mdia.mdhd.timescale;I&&s&&I/s>e.num/e.den&&(e={num:I,den:s})}return e}getInfo(){if(!this.moov)return{hasMoov:!1,mime:""};const A=new Date("1904-01-01T00:00:00Z").getTime(),t=this.getBox("mvex")!==void 0,e={hasMoov:!0,duration:this.moov.mvhd.duration,timescale:this.moov.mvhd.timescale,isFragmented:t,fragment_duration:this.getFragmentDuration(),isProgressive:this.isProgressive,hasIOD:this.moov.iods!==void 0,brands:[this.ftyp.major_brand].concat(this.ftyp.compatible_brands),created:new Date(A+this.moov.mvhd.creation_time*1e3),modified:new Date(A+this.moov.mvhd.modification_time*1e3),tracks:[],audioTracks:[],videoTracks:[],subtitleTracks:[],metadataTracks:[],hintTracks:[],otherTracks:[],mime:""};for(let i=0;i<this.moov.traks.length;i++){const I=this.moov.traks[i],s=I.mdia.minf.stbl.stsd.entries[0],n=I.samples_size,B=I.mdia.mdhd.timescale,C=I.samples_duration,a=n*8*B/C,Q={samples_duration:C,bitrate:a,size:n,timescale:B,alternate_group:I.tkhd.alternate_group,codec:s.getCodec(),created:new Date(A+I.tkhd.creation_time*1e3),cts_shift:I.mdia.minf.stbl.cslg,duration:I.mdia.mdhd.duration,id:I.tkhd.track_id,kind:I.udta&&I.udta.kinds.length?I.udta.kinds[0]:{schemeURI:"",value:""},language:I.mdia.elng?I.mdia.elng.extended_language:I.mdia.mdhd.languageString,layer:I.tkhd.layer,matrix:I.tkhd.matrix,modified:new Date(A+I.tkhd.modification_time*1e3),movie_duration:I.tkhd.duration,movie_timescale:e.timescale,name:I.mdia.hdlr.name,nb_samples:I.samples.length,references:[],track_height:I.tkhd.height/65536,track_width:I.tkhd.width/65536,volume:I.tkhd.volume};if(e.tracks.push(Q),I.tref)for(let o=0;o<I.tref.references.length;o++)Q.references.push({type:I.tref.references[o].type,track_ids:I.tref.references[o].track_ids});I.edts!==void 0&&I.edts.elst!==void 0&&(Q.edits=I.edts.elst.entries),s instanceof sA?(Q.type="audio",e.audioTracks.push(Q),Q.audio={sample_rate:s.getSampleRate(),channel_count:s.getChannelCount(),sample_size:s.getSampleSize()}):s instanceof H?(Q.type="video",e.videoTracks.push(Q),Q.video={width:s.getWidth(),height:s.getHeight()}):s instanceof TA?(Q.type="subtitles",e.subtitleTracks.push(Q)):s instanceof JB?(Q.type="metadata",e.hintTracks.push(Q)):s instanceof ss?(Q.type="metadata",e.metadataTracks.push(Q)):(Q.type="metadata",e.otherTracks.push(Q))}e.videoTracks&&e.videoTracks.length>0?e.mime+='video/mp4; codecs="':e.audioTracks&&e.audioTracks.length>0?e.mime+='audio/mp4; codecs="':e.mime+='application/mp4; codecs="';for(let i=0;i<e.tracks.length;i++)i!==0&&(e.mime+=","),e.mime+=e.tracks[i].codec;return e.mime+='"; profiles="',e.mime+=this.ftyp.compatible_brands.join(),e.mime+='"',e}setNextSeekPositionFromSample(A){A&&(this.nextSeekPosition?this.nextSeekPosition=Math.min(A.offset+A.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=A.offset+A.alreadyRead)}processSamples(A){if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&this.onSegment!==void 0){const t=new Set;for(;t.size<this.fragmentedTracks.length&&this.fragmentedTracks.some(e=>e.trak.nextSample<e.trak.samples.length)&&this.sampleProcessingStarted;)for(const e of this.fragmentedTracks){const i=e.trak;if(!t.has(e.id)){const I=i.nextSample<i.samples.length?this.getSample(i,i.nextSample):void 0;if(!I){this.setNextSeekPositionFromSample(i.samples[i.nextSample]),t.add(e.id);continue}e.state.accumulatedSize+=I.size;const s=i.nextSample+1,n=s-e.state.lastFragmentSampleNumber>e.nb_samples_per_fragment,B=s-e.state.lastSegmentSampleNumber>e.nb_samples;let C=n||s%e.nb_samples_per_fragment===0,a=B||s%e.nb_samples===0,Q=e.state.accumulatedSize>=e.size_per_segment;const o=!e.rapAlignement||I.is_sync,r=A||i.nextSample+1>=i.samples.length;if(r&&!o&&l.warn("ISOFile","Flushing track #"+e.id+" at sample #"+i.nextSample+" which is not a RAP, this may lead to playback issues"),C=C&&o,a=a&&o,Q=Q&&o,C||Q||r){n?l.warn("ISOFile","Fragment on track #"+e.id+" is overdue, creating it with samples ["+e.state.lastFragmentSampleNumber+", "+i.nextSample+"]"):l.debug("ISOFile","Creating media fragment on track #"+e.id+" for samples ["+e.state.lastFragmentSampleNumber+", "+i.nextSample+"]");const E=this.createFragment(e.id,e.state.lastFragmentSampleNumber,i.nextSample,e.segmentStream);if(E)e.segmentStream=E,e.state.lastFragmentSampleNumber=i.nextSample+1;else{t.add(e.id);continue}}(a||Q||r)&&(B?l.warn("ISOFile","Segment on track #"+e.id+" is overdue, sending it with samples ["+Math.max(0,i.nextSample-e.nb_samples)+", "+(i.nextSample-1)+"]"):l.info("ISOFile","Sending fragmented data on track #"+e.id+" for samples ["+Math.max(0,i.nextSample-e.nb_samples)+", "+(i.nextSample-1)+"]"),l.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(e.id,e.user,e.segmentStream.buffer,i.nextSample+1,A||i.nextSample+1>=i.samples.length),e.segmentStream=void 0,e.state.accumulatedSize=0,e.state.lastSegmentSampleNumber=i.nextSample+1),i.nextSample++}}}if(this.onSamples!==void 0)for(let t=0;t<this.extractedTracks.length;t++){const e=this.extractedTracks[t],i=e.trak;for(;i.nextSample<i.samples.length&&this.sampleProcessingStarted;){l.debug("ISOFile","Exporting on track #"+e.id+" sample #"+i.nextSample);const I=this.getSample(i,i.nextSample);if(I)i.nextSample++,e.samples.push(I);else{this.setNextSeekPositionFromSample(i.samples[i.nextSample]);break}if((i.nextSample%e.nb_samples===0||i.nextSample>=i.samples.length)&&(l.debug("ISOFile","Sending samples on track #"+e.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(e.id,e.user,e.samples),e.samples=[],e!==this.extractedTracks[t]))break}}}}getBox(A){const t=this.getBoxes(A,!0);return t.length?t[0]:void 0}getBoxes(A,t){const e=[],i=I=>{I instanceof m&&I.type&&I.type===A&&e.push(I);const s=[];I.boxes&&s.push(...I.boxes),I.entries&&s.push(...I.entries),I.item_infos&&s.push(...I.item_infos),I.references&&s.push(...I.references);for(const n of s){if(e.length&&t)return;i(n)}};return i(this),e}getTrackSamplesInfo(A){const t=this.getTrackById(A);if(t)return t.samples}getTrackSample(A,t){const e=this.getTrackById(A);return this.getSample(e,t)}releaseUsedSamples(A,t){let e=0;const i=this.getTrackById(A);i.lastValidSample||(i.lastValidSample=0);for(let I=i.lastValidSample;I<t;I++)e+=this.releaseSample(i,I);l.info("ISOFile","Track #"+A+" released samples up to "+t+" (released size: "+e+", remaining: "+this.samplesDataSize+")"),i.lastValidSample=t}start(){this.sampleProcessingStarted=!0,this.processSamples(!1)}stop(){this.sampleProcessingStarted=!1}flush(){l.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)}seekTrack(A,t,e){let i=0,I=0,s;if(e.samples.length===0)return l.info("ISOFile","No sample in track, cannot seek! Using time "+l.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(let B=0;B<e.samples.length;B++){const C=e.samples[B];if(B===0)I=0,s=C.timescale;else if(C.cts>A*C.timescale){I=B-1;break}t&&C.is_sync&&(i=B)}for(t&&(I=i),A=e.samples[I].cts,e.nextSample=I;e.samples[I].alreadyRead===e.samples[I].size&&e.samples[I+1];)I++;const n=e.samples[I].offset+e.samples[I].alreadyRead;return l.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+e.nextSample+" on track "+e.tkhd.track_id+", time "+l.getDurationString(A,s)+" and offset: "+n),{offset:n,time:A/s}}getTrackDuration(A){if(!A.samples)return 1/0;const t=A.samples[A.samples.length-1];return(t.cts+t.duration)/t.timescale}seek(A,t){const e=this.moov;let i={offset:1/0,time:1/0};if(this.moov){for(let I=0;I<e.traks.length;I++){const s=e.traks[I];if(A>this.getTrackDuration(s))continue;const n=this.seekTrack(A,t,s);n.offset<i.offset&&(i.offset=n.offset),n.time<i.time&&(i.time=n.time)}return l.info("ISOFile","Seeking at time "+l.getDurationString(i.time,1)+" needs a buffer with a fileStart position of "+i.offset),i.offset===1/0?i={offset:this.nextParsePosition,time:0}:i.offset=this.stream.getEndFilePositionAfter(i.offset),l.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+i.offset),i}else throw new Error("Cannot seek: moov not received!")}equal(A){let t=0;for(;t<this.boxes.length&&t<A.boxes.length;){const e=this.boxes[t],i=A.boxes[t];if(!SC(e,i))return!1;t++}return!0}write(A){for(let t=0;t<this.boxes.length;t++)this.boxes[t].write(A)}createFragment(A,t,e,i){const I=[];for(let a=t;a<=e;a++){const Q=this.getTrackById(A),o=this.getSample(Q,a);if(!o){this.setNextSeekPositionFromSample(Q.samples[a]);return}I.push(o)}const s=i||new gA,n=this.createMoof(I);n.write(s),n.trafs[0].truns[0].data_offset=n.size+8,l.debug("MP4Box","Adjusting data_offset with new value "+n.trafs[0].truns[0].data_offset),s.adjustUint32(n.trafs[0].truns[0].data_offset_position,n.trafs[0].truns[0].data_offset);const B=new gn;B.stream=new en;let C=0;for(const a of I)if(a.data){const Q=FA.fromArrayBuffer(a.data.buffer,C);B.stream.insertBuffer(Q),C+=a.data.byteLength}return B.write(s),s}static writeInitializationSegment(A,t,e){var s,n;l.debug("ISOFile","Generating initialization segment");const i=new gA;A.write(i);const I=t.addBox(new eB);if(e){const B=I.addBox(new TC);B.fragment_duration=e}for(let B=0;B<t.traks.length;B++){const C=I.addBox(new iB);C.track_id=t.traks[B].tkhd.track_id,C.default_sample_description_index=1,C.default_sample_duration=(n=(s=t.traks[B].samples[0])==null?void 0:s.duration)!=null?n:0,C.default_sample_size=0,C.default_sample_flags=65536}return t.write(i),i.buffer}save(A){const t=new gA;return t.isofile=this,this.write(t),t.save(A)}getBuffer(){const A=new gA;return A.isofile=this,this.write(A),A}initializeSegmentation(){var t,e;this.onSegment||l.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.resetTables());const A=new tB;A.addBox(this.moov.mvhd);for(let i=0;i<this.fragmentedTracks.length;i++){const I=this.getTrackById(this.fragmentedTracks[i].id);if(!I){l.warn("ISOFile",`Track with id ${this.fragmentedTracks[i].id} not found, skipping fragmentation initialization`);continue}A.addBox(I)}return{tracks:A.traks.map((i,I)=>({id:i.tkhd.track_id,user:this.fragmentedTracks[I].user})),buffer:GA.writeInitializationSegment(this.ftyp,A,(e=(t=this.moov)==null?void 0:t.mvex)==null?void 0:e.mehd.fragment_duration)}}resetTables(){this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0;for(let A=0;A<this.moov.traks.length;A++){const t=this.moov.traks[A];t.tkhd.duration=0,t.mdia.mdhd.duration=0;const e=t.mdia.minf.stbl.stco||t.mdia.minf.stbl.co64;e.chunk_offsets=[];const i=t.mdia.minf.stbl.stsc;i.first_chunk=[],i.samples_per_chunk=[],i.sample_description_index=[];const I=t.mdia.minf.stbl.stsz||t.mdia.minf.stbl.stz2;I.sample_sizes=[];const s=t.mdia.minf.stbl.stts;s.sample_counts=[],s.sample_deltas=[];const n=t.mdia.minf.stbl.ctts;n&&(n.sample_counts=[],n.sample_offsets=[]);const B=t.mdia.minf.stbl.stss,C=t.mdia.minf.stbl.boxes.indexOf(B);C!==-1&&(t.mdia.minf.stbl.boxes[C]=void 0)}}static initSampleGroups(A,t,e,i,I){t&&(t.sample_groups_info=[]),A.sample_groups_info||(A.sample_groups_info=[]);for(let s=0;s<e.length;s++){const n=e[s].grouping_type+"/"+e[s].grouping_type_parameter,B=new Hn(e[s].grouping_type,e[s].grouping_type_parameter,e[s]);t&&(t.sample_groups_info[n]=B),A.sample_groups_info[n]||(A.sample_groups_info[n]=B);for(let C=0;C<i.length;C++)i[C].grouping_type===e[s].grouping_type&&(B.description=i[C],B.description.used=!0);if(I)for(let C=0;C<I.length;C++)I[C].grouping_type===e[s].grouping_type&&(B.fragment_description=I[C],B.fragment_description.used=!0,B.is_fragment=!0)}if(t){if(I){for(let s=0;s<I.length;s++)if(!I[s].used&&I[s].version>=2){const n=I[s].grouping_type+"/0",B=new Hn(I[s].grouping_type,0);B.is_fragment=!0,t.sample_groups_info[n]||(t.sample_groups_info[n]=B)}}}else for(let s=0;s<i.length;s++)if(!i[s].used&&i[s].version>=2){const n=i[s].grouping_type+"/0",B=new Hn(i[s].grouping_type,0);A.sample_groups_info[n]||(A.sample_groups_info[n]=B)}}static setSampleGroupProperties(A,t,e,i){t.sample_groups=[];for(const I in i)if(t.sample_groups[I]={grouping_type:i[I].grouping_type,grouping_type_parameter:i[I].grouping_type_parameter},e>=i[I].last_sample_in_run&&(i[I].last_sample_in_run<0&&(i[I].last_sample_in_run=0),i[I].entry_index++,i[I].entry_index<=i[I].sbgp.entries.length-1&&(i[I].last_sample_in_run+=i[I].sbgp.entries[i[I].entry_index].sample_count)),i[I].entry_index<=i[I].sbgp.entries.length-1?t.sample_groups[I].group_description_index=i[I].sbgp.entries[i[I].entry_index].group_description_index:t.sample_groups[I].group_description_index=-1,t.sample_groups[I].group_description_index!==0){let s;if(i[I].fragment_description?s=i[I].fragment_description:s=i[I].description,t.sample_groups[I].group_description_index>0){let n;t.sample_groups[I].group_description_index>65535?n=(t.sample_groups[I].group_description_index>>16)-1:n=t.sample_groups[I].group_description_index-1,s&&n>=0&&(t.sample_groups[I].description=s.entries[n])}else s&&s.version>=2&&s.default_group_description_index>0&&(t.sample_groups[I].description=s.entries[s.default_group_description_index-1])}}static process_sdtp(A,t,e){t&&(A?(t.is_leading=A.is_leading[e],t.depends_on=A.sample_depends_on[e],t.is_depended_on=A.sample_is_depended_on[e],t.has_redundancy=A.sample_has_redundancy[e]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))}buildSampleLists(){for(let A=0;A<this.moov.traks.length;A++)this.buildTrakSampleLists(this.moov.traks[A])}buildTrakSampleLists(A){let t,e,i,I,s,n;A.samples=[],A.samples_duration=0,A.samples_size=0;const B=A.mdia.minf.stbl.stco||A.mdia.minf.stbl.co64,C=A.mdia.minf.stbl.stsc,a=A.mdia.minf.stbl.stsz||A.mdia.minf.stbl.stz2,Q=A.mdia.minf.stbl.stts,o=A.mdia.minf.stbl.ctts,r=A.mdia.minf.stbl.stss,E=A.mdia.minf.stbl.stsd,h=A.mdia.minf.stbl.subs,c=A.mdia.minf.stbl.stdp,f=A.mdia.minf.stbl.sbgps,d=A.mdia.minf.stbl.sgpds;let u=-1,p=-1,w=-1,y=-1,S=0,N=0,R=0;if(GA.initSampleGroups(A,void 0,f,d),typeof a!="undefined"){for(t=0;t<a.sample_sizes.length;t++){const F={number:t,track_id:A.tkhd.track_id,timescale:A.mdia.mdhd.timescale,alreadyRead:0,size:a.sample_sizes[t]};A.samples[t]=F,A.samples_size+=F.size,t===0?(i=1,e=0,F.chunk_index=i,F.chunk_run_index=e,n=C.samples_per_chunk[e],s=0,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0):t<n?(F.chunk_index=i,F.chunk_run_index=e):(i++,F.chunk_index=i,s=0,i<=I||(e++,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0),F.chunk_run_index=e,n+=C.samples_per_chunk[e]),F.description_index=C.sample_description_index[F.chunk_run_index]-1,F.description=E.entries[F.description_index],F.offset=B.chunk_offsets[F.chunk_index-1]+s,s+=F.size,t>u&&(p++,u<0&&(u=0),u+=Q.sample_counts[p]),t>0?(A.samples[t-1].duration=Q.sample_deltas[p],A.samples_duration+=A.samples[t-1].duration,F.dts=A.samples[t-1].dts+A.samples[t-1].duration):F.dts=0,o?(t>=w&&(y++,w<0&&(w=0),w+=o.sample_counts[y]),F.cts=A.samples[t].dts+o.sample_offsets[y]):F.cts=F.dts,r?(t===r.sample_numbers[S]-1?(F.is_sync=!0,S++):(F.is_sync=!1,F.degradation_priority=0),h&&h.entries[N].sample_delta+R===t+1&&(F.subsamples=h.entries[N].subsamples,R+=h.entries[N].sample_delta,N++)):F.is_sync=!0,GA.process_sdtp(A.mdia.minf.stbl.sdtp,F,F.number),c?F.degradation_priority=c.priority[t]:F.degradation_priority=0,h&&h.entries[N].sample_delta+R===t&&(F.subsamples=h.entries[N].subsamples,R+=h.entries[N].sample_delta),(f.length>0||d.length>0)&&GA.setSampleGroupProperties(A,F,t,A.sample_groups_info)}t>0&&(A.samples[t-1].duration=Math.max(A.mdia.mdhd.duration-A.samples[t-1].dts,0),A.samples_duration+=A.samples[t-1].duration)}}updateSampleLists(){let A,t,e,i,I;if(this.moov!==void 0)for(;this.lastMoofIndex<this.moofs.length;){const s=this.moofs[this.lastMoofIndex];if(this.lastMoofIndex++,s.type==="moof"){const n=s;for(let B=0;B<n.trafs.length;B++){const C=n.trafs[B],a=this.getTrackById(C.tfhd.track_id),Q=this.getTrexById(C.tfhd.track_id);C.tfhd.flags&Xs?A=C.tfhd.default_sample_description_index:A=Q?Q.default_sample_description_index:1,C.tfhd.flags&Os?t=C.tfhd.default_sample_duration:t=Q?Q.default_sample_duration:0,C.tfhd.flags&Ps?e=C.tfhd.default_sample_size:e=Q?Q.default_sample_size:0,C.tfhd.flags&$s?i=C.tfhd.default_sample_flags:i=Q?Q.default_sample_flags:0,C.sample_number=0,C.sbgps.length>0&&GA.initSampleGroups(a,C,C.sbgps,a.mdia.minf.stbl.sgpds,C.sgpds);for(let o=0;o<C.truns.length;o++){const r=C.truns[o];for(let E=0;E<r.sample_count;E++){const h=A-1;let c=i;r.flags&Ns?c=r.sample_flags[E]:E===0&&r.flags&An&&(c=r.first_sample_flags);let f=e;r.flags&Fs&&(f=r.sample_size[E]),a.samples_size+=f;let d=t;r.flags&Ss&&(d=r.sample_duration[E]),a.samples_duration+=d;let u;a.first_traf_merged||E>0?u=a.samples[a.samples.length-1].dts+a.samples[a.samples.length-1].duration:(C.tfdt?u=C.tfdt.baseMediaDecodeTime:u=0,a.first_traf_merged=!0);let p=u;r.flags&xs&&(p=u+r.sample_composition_time_offset[E]);const w=!!(C.tfhd.flags&js),y=!!(C.tfhd.flags&bB),S=!!(r.flags&Gs);let N=0;w?N=C.tfhd.base_data_offset:y||o===0?N=n.start:N=I;let R;o===0&&E===0?S?R=N+r.data_offset:R=N:R=I,I=R+f;const F=C.sample_number;C.sample_number++;const M={cts:p,description_index:h,description:a.mdia.minf.stbl.stsd.entries[h],dts:u,duration:d,moof_number:this.lastMoofIndex,number_in_traf:F,number:a.samples.length,offset:R,size:f,timescale:a.mdia.mdhd.timescale,track_id:a.tkhd.track_id,is_sync:!(c>>16&1),is_leading:c>>26&3,depends_on:c>>24&3,is_depended_on:c>>22&3,has_redundancy:c>>20&3,degradation_priority:c&65535};C.first_sample_index=a.samples.length,a.samples.push(M),(C.sbgps.length>0||C.sgpds.length>0||a.mdia.minf.stbl.sbgps.length>0||a.mdia.minf.stbl.sgpds.length>0)&&GA.setSampleGroupProperties(a,M,M.number_in_traf,C.sample_groups_info)}}if(C.subs){a.has_fragment_subsamples=!0;let o=C.first_sample_index;for(let r=0;r<C.subs.entries.length;r++){o+=C.subs.entries[r].sample_delta;const E=a.samples[o-1];E.subsamples=C.subs.entries[r].subsamples}}}}}}getSample(A,t){const e=A.samples[t];if(this.moov){if(!e.data)e.data=new Uint8Array(e.size),e.alreadyRead=0,this.samplesDataSize+=e.size,l.debug("ISOFile","Allocating sample #"+t+" on track #"+A.tkhd.track_id+" of size "+e.size+" (total: "+this.samplesDataSize+")");else if(e.alreadyRead===e.size)return e;for(;;){let i=this.stream,I=i.findPosition(!0,e.offset+e.alreadyRead,!1),s,n;if(I>-1)s=i.buffers[I],n=s.fileStart;else for(const B of this.mdats){if(!B.stream){l.debug("ISOFile","mdat stream not yet fully read for #"+this.mdats.indexOf(B)+" mdat");continue}if(I=B.stream.findPosition(!0,e.offset+e.alreadyRead-B.start-B.hdr_size,!1),I>-1){i=B.stream,s=B.stream.buffers[I],n=B.start+B.hdr_size+s.fileStart;break}}if(s){const B=s.byteLength-(e.offset+e.alreadyRead-n);if(e.size-e.alreadyRead<=B)return l.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-n)+" read size: "+(e.size-e.alreadyRead)+" full size: "+e.size+")"),gA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-n,e.size-e.alreadyRead),s.usedBytes+=e.size-e.alreadyRead,i.logBufferLevel(),e.alreadyRead=e.size,e;if(B===0)return;l.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-n)+" read size: "+B+" full size: "+e.size+")"),gA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-n,B),e.alreadyRead+=B,s.usedBytes+=B,i.logBufferLevel()}else return}}}releaseSample(A,t){const e=A.samples[t];return e.data?(this.samplesDataSize-=e.size,e.data=void 0,e.alreadyRead=0,e.size):0}getAllocatedSampleDataSize(){return this.samplesDataSize}getCodecs(){let A="";for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];t>0&&(A+=","),A+=e.mdia.minf.stbl.stsd.entries[0].getCodec()}return A}getTrexById(A){if(!(!this.moov||!this.moov.mvex))for(let t=0;t<this.moov.mvex.trexs.length;t++){const e=this.moov.mvex.trexs[t];if(e.track_id===A)return e}}getTrackById(A){if(this.moov)for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];if(e.tkhd.track_id===A)return e}}flattenItemInfo(){var i;const A=this.items,t=this.entity_groups,e=this.meta;if(!(!e||!e.hdlr||!e.iinf)){for(let I=0;I<e.iinf.item_infos.length;I++){const s=e.iinf.item_infos[I].item_ID;A[s]={id:s,name:e.iinf.item_infos[I].item_name,ref_to:[],content_type:e.iinf.item_infos[I].content_type,content_encoding:e.iinf.item_infos[I].content_encoding,item_uri_type:e.iinf.item_infos[I].item_uri_type,type:e.iinf.item_infos[I].item_type?e.iinf.item_infos[I].item_type:"mime",protection:e.iinf.item_infos[I].item_protection_index>0?e.ipro.protections[e.iinf.item_infos[I].item_protection_index-1]:void 0}}if(e.grpl)for(let I=0;I<e.grpl.boxes.length;I++){const s=e.grpl.boxes[I];t[s.group_id]={id:s.group_id,entity_ids:s.entity_ids,type:s.type}}if(e.iloc)for(let I=0;I<e.iloc.items.length;I++){const s=e.iloc.items[I],n=A[s.item_ID];s.data_reference_index!==0&&(l.warn("Item storage with reference to other files: not supported"),n.source=e.dinf.boxes[s.data_reference_index-1]),n.extents=[],n.size=0;for(let B=0;B<s.extents.length;B++)n.extents[B]={offset:s.extents[B].extent_offset+s.base_offset,length:s.extents[B].extent_length,alreadyRead:0},s.construction_method===1&&(n.extents[B].offset+=e.idat.start+e.idat.hdr_size),n.size+=n.extents[B].length}if(e.pitm&&(A[e.pitm.item_id].primary=!0),e.iref)for(let I=0;I<e.iref.references.length;I++){const s=e.iref.references[I];for(let n=0;n<s.references.length;n++)A[s.from_item_ID].ref_to.push({type:s.type,id:s.references[n]})}if(e.iprp)for(let I=0;I<e.iprp.ipmas.length;I++){const s=e.iprp.ipmas[I];for(let n=0;n<s.associations.length;n++){const B=s.associations[n],C=(i=A[B.id])!=null?i:t[B.id];if(C){C.properties===void 0&&(C.properties={boxes:[]});for(let a=0;a<B.props.length;a++){const Q=B.props[a];if(Q.property_index>0&&Q.property_index-1<e.iprp.ipco.boxes.length){const o=e.iprp.ipco.boxes[Q.property_index-1];C.properties[o.type]=o,C.properties.boxes.push(o)}}}}}}}getItem(A){if(!this.meta)return;const t=this.items[A];if(!t.data&&t.size)t.data=new Uint8Array(t.size),t.alreadyRead=0,this.itemsDataSize+=t.size,l.debug("ISOFile","Allocating item #"+A+" of size "+t.size+" (total: "+this.itemsDataSize+")");else if(t.alreadyRead===t.size)return t;for(let e=0;e<t.extents.length;e++){const i=t.extents[e];if(i.alreadyRead!==i.length){const I=this.stream.findPosition(!0,i.offset+i.alreadyRead,!1);if(I>-1){const s=this.stream.buffers[I],n=s.byteLength-(i.offset+i.alreadyRead-s.fileStart);if(i.length-i.alreadyRead<=n)l.debug("ISOFile","Getting item #"+A+" extent #"+e+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-s.fileStart)+" read size: "+(i.length-i.alreadyRead)+" full extent size: "+i.length+" full item size: "+t.size+")"),gA.memcpy(t.data.buffer,t.alreadyRead,s,i.offset+i.alreadyRead-s.fileStart,i.length-i.alreadyRead),(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=i.length-i.alreadyRead),this.stream.logBufferLevel(),t.alreadyRead+=i.length-i.alreadyRead,i.alreadyRead=i.length;else{l.debug("ISOFile","Getting item #"+A+" extent #"+e+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-s.fileStart)+" read size: "+n+" full extent size: "+i.length+" full item size: "+t.size+")"),gA.memcpy(t.data.buffer,t.alreadyRead,s,i.offset+i.alreadyRead-s.fileStart,n),i.alreadyRead+=n,t.alreadyRead+=n,(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=n),this.stream.logBufferLevel();return}}else return}}if(t.alreadyRead===t.size)return t}releaseItem(A){const t=this.items[A];if(t.data){this.itemsDataSize-=t.size,t.data=void 0,t.alreadyRead=0;for(let e=0;e<t.extents.length;e++){const i=t.extents[e];i.alreadyRead=0}return t.size}else return 0}processItems(A){for(const t in this.items){const e=this.items[t];this.getItem(e.id),A&&!e.sent&&(A(e),e.sent=!0,e.data=void 0)}}hasItem(A){for(const t in this.items){const e=this.items[t];if(e.name===A)return e.id}return-1}getMetaHandler(){if(this.meta)return this.meta.hdlr.handler}getPrimaryItem(){if(this.meta&&this.meta.pitm)return this.getItem(this.meta.pitm.item_id)}itemToFragmentedTrackFile({itemId:A}={}){let t;if(A?t=this.getItem(A):t=this.getPrimaryItem(),!t)return;const e=new GA;e.discardMdatData=!1;const i={type:t.type,description_boxes:t.properties.boxes};t.properties.ispe&&(i.width=t.properties.ispe.image_width,i.height=t.properties.ispe.image_height);const I=e.addTrack(i);if(I)return e.addSample(I,t.data),e}processIncompleteBox(A){if(A.type==="mdat"){const t=new gn(A.size);return this.parsingMdat=t,this.boxes.push(t),this.mdats.push(t),t.start=A.start,t.hdr_size=A.hdr_size,t.original_size=A.original_size,this.stream.addUsedBytes(t.hdr_size),this.lastBoxStartPosition=t.start+t.size,this.stream.seek(t.start+t.size,!1,this.discardMdatData)?(this.transferMdatData(),this.parsingMdat=void 0,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=t.start+t.size,!1)}else return A.type==="moov"&&(this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0)),(this.stream.mergeNextBuffer?this.stream.mergeNextBuffer():!1)?(this.nextParsePosition=this.stream.getEndPosition(),!0):(A.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+A.size:this.nextParsePosition=this.stream.getEndPosition(),!1)}hasIncompleteMdat(){return this.parsingMdat!==void 0}transferMdatData(A){const t=A!=null?A:this.parsingMdat;if(this.discardMdatData){l.debug("ISOFile","Discarding 'mdat' data, not transferring it to the mdat box stream");return}if(!t){l.warn("ISOFile","Cannot transfer 'mdat' data, no mdat box is being parsed");return}const e=this.stream.findPosition(!0,t.start+t.hdr_size,!1),i=this.stream.findPosition(!0,t.start+t.size,!1);if(e===-1||i===-1){l.warn("ISOFile","Cannot transfer 'mdat' data, start or end buffer not found");return}t.stream=new en;for(let I=e;I<=i;I++){const s=this.stream.buffers[I],n=I===e?t.start+t.hdr_size-s.fileStart:0,B=I===i?t.start+t.size-s.fileStart:s.byteLength;if(B>n){l.debug("ISOFile","Transferring 'mdat' data from buffer #"+I+" ("+n+" to "+B+")");const C=B-n,a=new FA(C),Q=t.stream.getAbsoluteEndPosition();gA.memcpy(a,0,s,n,C),a.fileStart=Q,t.stream.insertBuffer(a),s.usedBytes+=C}}}processIncompleteMdat(){const A=this.parsingMdat;return this.stream.seek(A.start+A.size,!1,this.discardMdatData)?(l.debug("ISOFile","Found 'mdat' end in buffered data"),this.transferMdatData(),this.parsingMdat=void 0,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)}restoreParsePosition(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)}saveParsePosition(){this.lastBoxStartPosition=this.stream.getPosition()}updateUsedBytes(A,t){this.stream.addUsedBytes&&(A.type==="mdat"?(this.stream.addUsedBytes(A.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(A.size-A.hdr_size)):this.stream.addUsedBytes(A.size))}addBox(A){return m.prototype.addBox.call(this,A)}init(A={}){const t=this.addBox(new JC);t.major_brand=A.brands&&A.brands[0]||"iso4",t.minor_version=0,t.compatible_brands=A.brands||["iso4"];const e=this.addBox(new tB);e.addBox(new eB);const i=e.addBox(new ZC);return i.timescale=A.timescale||600,i.rate=A.rate||65536,i.creation_time=0,i.modification_time=0,i.duration=A.duration||0,i.volume=A.width?0:256,i.matrix=[65536,0,0,0,65536,0,0,0,1073741824],i.next_track_id=1,this}addTrack(A={}){this.moov||this.init(A);const t=A||{};t.width=t.width||320,t.height=t.height||320,t.id=t.id||this.moov.mvhd.next_track_id,t.type=t.type||"avc1";const e=this.moov.addBox(new xC);this.moov.mvhd.next_track_id=t.id+1;const i=e.addBox(new ga);i.flags=no|Bo|Co,i.creation_time=0,i.modification_time=0,i.track_id=t.id,i.duration=t.duration||0,i.layer=t.layer||0,i.alternate_group=0,i.volume=1,i.matrix=[65536,0,0,0,65536,0,0,0,1073741824],i.width=t.width<<16,i.height=t.height<<16;const I=e.addBox(new RC),s=I.addBox(new KC);s.creation_time=0,s.modification_time=0,s.timescale=t.timescale||1,s.duration=t.media_duration||0,s.language=t.language||"und";const n=I.addBox(new HC);n.handler=t.hdlr||"vide",n.name=t.name||"Track created with MP4Box.js";const B=I.addBox(new LC);B.extended_language=t.language||"fr-FR";const C=I.addBox(new UC),a=IA.sampleEntry[t.type];if(!a)return;const Q=new a;if(Q.data_reference_index=1,Q instanceof H){const y=Q,S=C.addBox(new na);S.graphicsmode=0,S.opcolor=[0,0,0],y.width=t.width,y.height=t.height,y.horizresolution=72<<16,y.vertresolution=72<<16,y.frame_count=1,y.compressorname=t.type+" Compressor",y.depth=24,t.avcDecoderConfigRecord?y.addBox(new FC(t.avcDecoderConfigRecord.byteLength)).parse(new gA(t.avcDecoderConfigRecord)):t.hevcDecoderConfigRecord&&y.addBox(new vC(t.hevcDecoderConfigRecord.byteLength)).parse(new gA(t.hevcDecoderConfigRecord))}else if(Q instanceof sA){const y=Q,S=C.addBox(new jC);S.balance=t.balance||0,y.channel_count=t.channel_count||2,y.samplesize=t.samplesize||16,y.samplerate=t.samplerate||65536}else Q instanceof JB?C.addBox(new NC):Q instanceof TA?(C.addBox(new OC),Q instanceof zC&&(Q.namespace=t.namespace||"nonamespace",Q.schema_location=t.schema_location||"",Q.auxiliary_mime_types=t.auxiliary_mime_types||"")):Q instanceof ss?C.addBox(new In):Q instanceof QB?C.addBox(new In):C.addBox(new In);t.description&&Q.addBox.call(Q,t.description),t.description_boxes&&t.description_boxes.forEach(function(y){Q.addBox.call(Q,y)});const r=C.addBox(new MC).addBox(new _C),E=new sa;E.flags=1,r.addEntry(E);const h=C.addBox(new bC);h.addBox(new $C).addEntry(Q);const f=h.addBox(new ta);f.sample_counts=[],f.sample_deltas=[];const d=h.addBox(new PC);d.first_chunk=[],d.samples_per_chunk=[],d.sample_description_index=[];const u=h.addBox(new XC);u.chunk_offsets=[];const p=h.addBox(new Aa);p.sample_sizes=[];const w=this.moov.mvex.addBox(new iB);return w.track_id=t.id,w.default_sample_description_index=t.default_sample_description_index||1,w.default_sample_duration=t.default_sample_duration||0,w.default_sample_size=t.default_sample_size||0,w.default_sample_flags=t.default_sample_flags||0,this.buildTrakSampleLists(e),t.id}addSample(A,t,{sample_description_index:e,duration:i=1,cts:I=0,dts:s=0,is_sync:n=!1,is_leading:B=0,depends_on:C=0,is_depended_on:a=0,has_redundancy:Q=0,degradation_priority:o=0,subsamples:r,offset:E=0}={}){const h=this.getTrackById(A);if(h===void 0)return;const c=e?e-1:0,f={number:h.samples.length,track_id:h.tkhd.track_id,timescale:h.mdia.mdhd.timescale,description_index:c,description:h.mdia.minf.stbl.stsd.entries[c],data:t,size:t.byteLength,alreadyRead:t.byteLength,duration:i,cts:I,dts:s,is_sync:n,is_leading:B,depends_on:C,is_depended_on:a,has_redundancy:Q,degradation_priority:o,offset:E,subsamples:r};h.samples.push(f),h.samples_size+=f.size,h.samples_duration+=f.duration,h.first_dts===void 0&&(h.first_dts=s),this.processSamples();const d=this.addBox(this.createMoof([f]));d.computeSize(),d.trafs[0].truns[0].data_offset=d.size+8;const u=this.addBox(new gn);return u.data=new Uint8Array(t),f}createMoof(A){if(A.length===0)return;if(A.some(a=>a.track_id!==A[0].track_id))throw new Error("Cannot create moof for samples from different tracks: "+A.map(a=>a.track_id).join(", "));const t=A[0].track_id,e=this.getTrackById(t);if(!e)throw new Error("Cannot create moof for non-existing track: "+t);const i=new kC,I=i.addBox(new qC);I.sequence_number=++this.nextMoofNumber;const s=i.addBox(new YC),n=s.addBox(new ia);n.track_id=t,n.flags=bB;const B=s.addBox(new ea);B.baseMediaDecodeTime=A[0].dts-(e.first_dts||0);const C=s.addBox(new Ia);C.flags=Gs|Ss|Fs|Ns|xs,C.data_offset=0,C.first_sample_flags=0,C.sample_count=A.length;for(const a of A){let Q=0;a.is_sync?Q=1<<25:Q=65536,C.sample_duration.push(a.duration),C.sample_size.push(a.size),C.sample_flags.push(Q),C.sample_composition_time_offset.push(a.cts-a.dts)}return i}print(A){A.indent="";for(let t=0;t<this.boxes.length;t++)this.boxes[t]&&this.boxes[t].print(A)}};function rh(g=!1,A){return new Qh(A,!g)}var Ba={};yC(Ba,{Descriptor:()=>qA,ES_Descriptor:()=>ra,MPEG4DescriptorParser:()=>lh});var Ca=3,Qn=4,rB=5,aa=6,qA=class Qa{constructor(A,t){this.tag=A,this.size=t,this.descs=[]}parse(A){this.data=A.readUint8Array(this.size)}findDescriptor(A){for(let t=0;t<this.descs.length;t++)if(this.descs[t].tag===A)return this.descs[t]}parseOneDescriptor(A){let t=0;const e=A.readUint8();let i=A.readUint8();for(;i&128;)t=(t<<7)+(i&127),i=A.readUint8();t=(t<<7)+(i&127),l.debug("Descriptor","Found "+(sn[e]||"Descriptor "+e)+", size "+t+" at position "+A.getPosition());const I=sn[e]?new ch[sn[e]](t):new Qa(t);return I.parse(A),I}parseRemainingDescriptors(A){var e;const t=A.getPosition();for(;A.getPosition()<t+this.size;){const i=(e=this.parseOneDescriptor)==null?void 0:e.call(this,A);this.descs.push(i)}}},ra=class extends qA{constructor(g){super(Ca,g)}parse(g){if(this.ES_ID=g.readUint16(),this.flags=g.readUint8(),this.size-=3,this.flags&128?(this.dependsOn_ES_ID=g.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,this.flags&64){const A=g.readUint8();this.URL=g.readString(A),this.size-=A+1}else this.URL="";this.flags&32?(this.OCR_ES_ID=g.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(g)}getOTI(){const g=this.findDescriptor(Qn);return g?g.oti:0}getAudioConfig(){const g=this.findDescriptor(Qn);if(!g)return;const A=g.findDescriptor(rB);if(A&&A.data){let t=(A.data[0]&248)>>3;return t===31&&A.data.length>=2&&(t=32+((A.data[0]&7)<<3)+((A.data[1]&224)>>5)),t}}},oh=class extends qA{constructor(g){super(Qn,g)}parse(g){this.oti=g.readUint8(),this.streamType=g.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=g.readUint24(),this.maxBitrate=g.readUint32(),this.avgBitrate=g.readUint32(),this.size-=13,this.parseRemainingDescriptors(g)}},Eh=class extends qA{constructor(g){super(rB,g)}},hh=class extends qA{constructor(g){super(aa,g)}},ch={Descriptor:qA,ES_Descriptor:ra,DecoderConfigDescriptor:oh,DecoderSpecificInfo:Eh,SLConfigDescriptor:hh},sn={[Ca]:"ES_Descriptor",[Qn]:"DecoderConfigDescriptor",[rB]:"DecoderSpecificInfo",[aa]:"SLConfigDescriptor"},lh=class{constructor(){this.parseOneDescriptor=qA.prototype.parseOneDescriptor}getDescriptorName(g){return sn[g]}},oa={};yC(oa,{CoLLBox:()=>xh,ItemContentIDPropertyBox:()=>Id,OpusSampleEntry:()=>TE,SmDmBox:()=>el,a1lxBox:()=>dh,a1opBox:()=>fh,ac_3SampleEntry:()=>HE,ac_4SampleEntry:()=>vE,aebrBox:()=>zh,afbrBox:()=>jh,albcBox:()=>Xh,alstSampleGroupEntry:()=>bl,altrBox:()=>Oh,auxCBox:()=>uh,av01SampleEntry:()=>hE,av1CBox:()=>sE,avc1SampleEntry:()=>QE,avc2SampleEntry:()=>rE,avc3SampleEntry:()=>oE,avc4SampleEntry:()=>EE,avcCBox:()=>FC,avllSampleGroupEntry:()=>kl,avs3SampleEntry:()=>UE,avssSampleGroupEntry:()=>Yl,brstBox:()=>Ph,btrtBox:()=>wh,bxmlBox:()=>xo,ccstBox:()=>Dh,cdefBox:()=>ph,clapBox:()=>yh,clefBox:()=>Hc,clliBox:()=>mh,cmexBox:()=>Gh,cminBox:()=>Sh,cmpdBox:()=>Fh,co64Box:()=>Nh,colrBox:()=>aE,coviBox:()=>Mh,cprtBox:()=>bh,cschBox:()=>kh,cslgBox:()=>Yh,cttsBox:()=>_h,dOpsBox:()=>qh,dac3Box:()=>Lh,dataBox:()=>ds,dav1SampleEntry:()=>cE,dec3Box:()=>Jh,dfLaBox:()=>Hh,dimmBox:()=>vh,dinfBox:()=>MC,dmax:()=>Kh,dmedBox:()=>Th,dobrBox:()=>$h,drefBox:()=>_C,drepBox:()=>Zh,dtrtSampleGroupEntry:()=>_l,dvh1SampleEntry:()=>yE,dvheSampleEntry:()=>mE,ec_3SampleEntry:()=>KE,edtsBox:()=>Uo,elngBox:()=>LC,elstBox:()=>Vh,emsgBox:()=>Wh,encaSampleEntry:()=>XE,encmSampleEntry:()=>th,encsSampleEntry:()=>PE,enctSampleEntry:()=>Ah,encuSampleEntry:()=>OE,encvSampleEntry:()=>jE,enofBox:()=>Kc,eqivBox:()=>Ac,esdsBox:()=>nE,etypBox:()=>jo,fLaCSampleEntry:()=>zE,favcBox:()=>tc,fielBox:()=>Qc,fobrBox:()=>ec,freeBox:()=>Go,frmaBox:()=>rc,ftypBox:()=>JC,grplBox:()=>Wo,hdlrBox:()=>HC,hev1SampleEntry:()=>fE,hev2SampleEntry:()=>uE,hinfBox:()=>_o,hmhdBox:()=>NC,hntiBox:()=>Yo,hvc1SampleEntry:()=>lE,hvc2SampleEntry:()=>dE,hvcCBox:()=>vC,hvt1SampleEntry:()=>wE,iaugBox:()=>ic,idatBox:()=>mo,iinfBox:()=>Po,ilocBox:()=>$o,ilstBox:()=>Tc,imirBox:()=>oc,infeBox:()=>Oo,iodsBox:()=>Fo,ipcoBox:()=>Vo,ipmaBox:()=>Ec,iproBox:()=>Ro,iprpBox:()=>Zo,irefBox:()=>tE,irotBox:()=>hc,ispeBox:()=>cc,itaiBox:()=>lc,j2kHBox:()=>zo,j2kiSampleEntry:()=>ME,keysBox:()=>qc,kindBox:()=>dc,levaBox:()=>fc,lhe1SampleEntry:()=>DE,lhv1SampleEntry:()=>pE,lhvCBox:()=>uc,lselBox:()=>wc,m4aeSampleEntry:()=>JE,maxrBox:()=>Dc,mdatBox:()=>gn,mdcvBox:()=>pc,mdhdBox:()=>KC,mdiaBox:()=>RC,mecoBox:()=>ko,mehdBox:()=>TC,metaBox:()=>iE,mettSampleEntry:()=>gE,metxSampleEntry:()=>IE,mfhdBox:()=>qC,mfraBox:()=>bo,mfroBox:()=>yc,mha1SampleEntry:()=>qE,mha2SampleEntry:()=>ZE,mhm1SampleEntry:()=>VE,mhm2SampleEntry:()=>WE,minfBox:()=>UC,mjp2SampleEntry:()=>bE,mjpgSampleEntry:()=>kE,moofBox:()=>kC,moovBox:()=>tB,mp4aSampleEntry:()=>LE,mp4sSampleEntry:()=>$E,mp4vSampleEntry:()=>_E,mskCBox:()=>mc,msrcTrackGroupTypeBox:()=>Dl,mvexBox:()=>eB,mvhdBox:()=>ZC,mvifSampleGroupEntry:()=>Ll,nmhdBox:()=>In,npckBox:()=>Gc,numpBox:()=>Sc,padbBox:()=>Nc,panoBox:()=>gc,paspBox:()=>xc,paylBox:()=>Rc,paytBox:()=>Uc,pdinBox:()=>Mc,piffLsmBox:()=>$l,piffPsshBox:()=>Ad,piffSencBox:()=>td,piffTencBox:()=>ed,piffTfrfBox:()=>id,piffTfxdBox:()=>gd,pitmBox:()=>eE,pixiBox:()=>bc,pmaxBox:()=>kc,povdBox:()=>Xo,prdiBox:()=>Yc,prfrBox:()=>_c,prftBox:()=>Lc,prgrBox:()=>Cc,profBox:()=>Zc,prolSampleGroupEntry:()=>Jl,psshBox:()=>Jc,pymdBox:()=>ac,rapSampleGroupEntry:()=>Hl,rashSampleGroupEntry:()=>vl,resvSampleEntry:()=>eh,rinfBox:()=>vo,rollSampleGroupEntry:()=>Kl,rtp_Box:()=>zc,saioBox:()=>jc,saizBox:()=>Xc,sbgpBox:()=>nh,sbpmBox:()=>Pc,sbttSampleEntry:()=>ih,schiBox:()=>Ko,schmBox:()=>$c,scifSampleGroupEntry:()=>Tl,scnmSampleGroupEntry:()=>ql,sdp_Box:()=>Al,sdtpBox:()=>Bh,seigSampleGroupEntry:()=>Zl,sencBox:()=>tl,sgpdBox:()=>Ch,sidxBox:()=>ah,sinfBox:()=>Ho,skipBox:()=>So,slidBox:()=>Ic,smhdBox:()=>jC,sratBox:()=>il,ssixBox:()=>gl,stblBox:()=>bC,stcoBox:()=>XC,stdpBox:()=>Il,sterBox:()=>sc,sthdBox:()=>OC,stppSampleEntry:()=>zC,strdBox:()=>Jo,striBox:()=>sl,strkBox:()=>Lo,stsaSampleGroupEntry:()=>Vl,stscBox:()=>PC,stsdBox:()=>$C,stsgBox:()=>nl,stshBox:()=>Bl,stssBox:()=>Cl,stszBox:()=>Aa,sttsBox:()=>ta,stviBox:()=>al,stxtSampleEntry:()=>gh,stypBox:()=>Ql,stz2Box:()=>rl,subsBox:()=>ol,syncSampleGroupEntry:()=>Wl,taicBox:()=>El,taptBox:()=>Vc,teleSampleGroupEntry:()=>zl,tencBox:()=>hl,tfdtBox:()=>ea,tfhdBox:()=>ia,tfraBox:()=>cl,tkhdBox:()=>ga,tmaxBox:()=>ll,tminBox:()=>dl,totlBox:()=>fl,tpayBox:()=>ul,tpylBox:()=>wl,trafBox:()=>YC,trakBox:()=>xC,trefBox:()=>pl,trepBox:()=>yl,trexBox:()=>iB,trgrBox:()=>To,trpyBox:()=>ml,trunBox:()=>Ia,tsasSampleGroupEntry:()=>jl,tsclSampleGroupEntry:()=>Xl,tselBox:()=>Gl,tsynBox:()=>nc,tx3gSampleEntry:()=>Ih,txtcBox:()=>Sl,tycoBox:()=>Fl,udesBox:()=>Nl,udtaBox:()=>qo,uncCBox:()=>xl,uncvSampleEntry:()=>YE,urlBox:()=>sa,urnBox:()=>Rl,viprSampleGroupEntry:()=>Ol,vmhdBox:()=>na,vp08SampleEntry:()=>xE,vp09SampleEntry:()=>RE,vpcCBox:()=>BE,vttCBox:()=>Ul,vttcBox:()=>Mo,vvc1SampleEntry:()=>GE,vvcCBox:()=>CE,vvcNSampleEntry:()=>NE,vvi1SampleEntry:()=>SE,vvnCBox:()=>Ml,vvs1SampleEntry:()=>FE,waveBox:()=>Wc,wbbrBox:()=>Bc,wvttSampleEntry:()=>sh,xmlBox:()=>No});var pi,dh=(pi=class extends m{constructor(){super(...arguments),this.box_name="AV1LayeredImageIndexingProperty"}parse(A){const e=((A.readUint8()&1&1)+1)*16;this.layer_size=[];for(let i=0;i<3;i++)e===16?this.layer_size[i]=A.readUint16():this.layer_size[i]=A.readUint32()}},pi.fourcc="a1lx",pi),yi,fh=(yi=class extends m{constructor(){super(...arguments),this.box_name="OperatingPointSelectorProperty"}parse(A){this.op_index=A.readUint8()}},yi.fourcc="a1op",yi),mi,uh=(mi=class extends D{constructor(){super(...arguments),this.box_name="AuxiliaryTypeProperty"}parse(A){this.parseFullHeader(A),this.aux_type=A.readCString();const t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=A.readUint8Array(t)}},mi.fourcc="auxC",mi),Gi,wh=(Gi=class extends m{constructor(){super(...arguments),this.box_name="BitRateBox"}parse(A){this.bufferSizeDB=A.readUint32(),this.maxBitrate=A.readUint32(),this.avgBitrate=A.readUint32()}},Gi.fourcc="btrt",Gi),Si,Dh=(Si=class extends D{constructor(){super(...arguments),this.box_name="CodingConstraintsBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.all_ref_pics_intra=(t&128)===128,this.intra_pred_used=(t&64)===64,this.max_ref_per_pic=(t&63)>>2,A.readUint24()}},Si.fourcc="ccst",Si),Fi,ph=(Fi=class extends m{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(A){this.channel_count=A.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[];for(let t=0;t<this.channel_count;t++)this.channel_indexes.push(A.readUint16()),this.channel_types.push(A.readUint16()),this.channel_associations.push(A.readUint16())}},Fi.fourcc="cdef",Fi),Ni,yh=(Ni=class extends m{constructor(){super(...arguments),this.box_name="CleanApertureBox"}parse(A){this.cleanApertureWidthN=A.readUint32(),this.cleanApertureWidthD=A.readUint32(),this.cleanApertureHeightN=A.readUint32(),this.cleanApertureHeightD=A.readUint32(),this.horizOffN=A.readUint32(),this.horizOffD=A.readUint32(),this.vertOffN=A.readUint32(),this.vertOffD=A.readUint32()}},Ni.fourcc="clap",Ni),xi,mh=(xi=class extends m{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.max_content_light_level=A.readUint16(),this.max_pic_average_light_level=A.readUint16()}},xi.fourcc="clli",xi),Ri,Gh=(Ri=class extends m{constructor(){super(...arguments),this.box_name="CameraExtrinsicMatrixProperty"}parse(A){this.flags&1&&(this.pos_x=A.readInt32()),this.flags&2&&(this.pos_y=A.readInt32()),this.flags&4&&(this.pos_z=A.readInt32()),this.flags&8&&(this.version===0?this.flags&16?(this.quat_x=A.readInt32(),this.quat_y=A.readInt32(),this.quat_z=A.readInt32()):(this.quat_x=A.readInt16(),this.quat_y=A.readInt16(),this.quat_z=A.readInt16()):this.version),this.flags&32&&(this.id=A.readUint32())}},Ri.fourcc="cmex",Ri),Ui,Sh=(Ui=class extends m{constructor(){super(...arguments),this.box_name="CameraIntrinsicMatrixProperty"}parse(A){this.focal_length_x=A.readInt32(),this.principal_point_x=A.readInt32(),this.principal_point_y=A.readInt32(),this.flags&1&&(this.focal_length_y=A.readInt32(),this.skew_factor=A.readInt32())}},Ui.fourcc="cmin",Ui),Mi,Fh=(Mi=class extends m{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(A){this.component_count=A.readUint32(),this.component_types=[],this.component_type_urls=[];for(let t=0;t<this.component_count;t++){const e=A.readUint16();this.component_types.push(e),e>=32768&&this.component_type_urls.push(A.readCString())}}},Mi.fourcc="cmpd",Mi),bi,Nh=(bi=class extends D{constructor(){super(...arguments),this.box_name="ChunkLargeOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.chunk_offsets=[],this.version===0)for(let e=0;e<t;e++)this.chunk_offsets.push(A.readUint64())}write(A){this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(A),A.writeUint32(this.chunk_offsets.length);for(let t=0;t<this.chunk_offsets.length;t++)A.writeUint64(this.chunk_offsets[t])}},bi.fourcc="co64",bi),ki,xh=(ki=class extends D{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.parseFullHeader(A),this.maxCLL=A.readUint16(),this.maxFALL=A.readUint16()}},ki.fourcc="CoLL",ki),Rh=class{toString(){let g="centre_azimuth: ";return g+=this.centre_azimuth,g+=" (",g+=this.centre_azimuth*2**-16,g+="°), centre_elevation: ",g+=this.centre_elevation,g+=" (",g+=this.centre_elevation*2**-16,g+="°), centre_tilt: ",g+=this.centre_tilt,g+=" (",g+=this.centre_tilt*2**-16,g+="°)",this.range_included_flag&&(g+=", azimuth_range: ",g+=this.azimuth_range,g+=" (",g+=this.azimuth_range*2**-16,g+="°), elevation_range: ",g+=this.elevation_range,g+=" (",g+=this.elevation_range*2**-16,g+="°)"),this.interpolate_included_flag&&(g+=", interpolate: ",g+=this.interpolate),g}},Uh=class{toString(){let g="";return this.view_idc&&(g+="view_idc: ",g+=this.view_idc,g+=", "),g+="sphere_region: {",g+=this.sphere_region,g+="}",g}},Yi,Mh=(Yi=class extends D{constructor(){super(...arguments),this.box_name="CoverageInformationBox"}parse(A){this.parseFullHeader(A),this.coverage_shape_type=A.readUint8();const t=A.readUint8(),e=A.readInt8(),i=e&128;i&&(this.default_view_idc=(e&96)>>5),this.coverage_regions=new Array;for(let I=0;I<t;I++){const s=new Uh;i&&(s.view_idc=A.readUint8()>>6),s.sphere_region=this.parseSphereRegion(A,!0,!0),this.coverage_regions.push(s)}}parseSphereRegion(A,t,e){const i=new Rh;return i.centre_azimuth=A.readInt32(),i.centre_elevation=A.readInt32(),i.centre_tilt=A.readInt32(),i.range_included_flag=t,t&&(i.azimuth_range=A.readUint32(),i.elevation_range=A.readUint32()),i.interpolate_included_flag=e,e&&(i.interpolate=(A.readUint8()&128)===128),i}},Yi.fourcc="covi",Yi),_i,bh=(_i=class extends D{constructor(){super(...arguments),this.box_name="CopyrightBox"}parse(A){this.parseFullHeader(A),this.parseLanguage(A),this.notice=A.readCString()}},_i.fourcc="cprt",_i),Li,kh=(Li=class extends D{constructor(){super(...arguments),this.box_name="CompatibleSchemeTypeBox"}parse(A){this.parseFullHeader(A),this.scheme_type=A.readString(4),this.scheme_version=A.readUint32(),this.flags&1&&(this.scheme_uri=A.readCString())}},Li.fourcc="csch",Li),rs=2147483647,Ji,Yh=(Ji=class extends D{constructor(){super(...arguments),this.box_name="CompositionToDecodeBox"}parse(A){this.parseFullHeader(A),this.version===0?(this.compositionToDTSShift=A.readInt32(),this.leastDecodeToDisplayDelta=A.readInt32(),this.greatestDecodeToDisplayDelta=A.readInt32(),this.compositionStartTime=A.readInt32(),this.compositionEndTime=A.readInt32()):this.version===1&&(this.compositionToDTSShift=A.readInt64(),this.leastDecodeToDisplayDelta=A.readInt64(),this.greatestDecodeToDisplayDelta=A.readInt64(),this.compositionStartTime=A.readInt64(),this.compositionEndTime=A.readInt64())}write(A){this.version=0,(this.compositionToDTSShift>rs||this.leastDecodeToDisplayDelta>rs||this.greatestDecodeToDisplayDelta>rs||this.compositionStartTime>rs||this.compositionEndTime>rs)&&(this.version=1),this.flags=0,this.version===0?(this.size=20,this.writeHeader(A),A.writeInt32(this.compositionToDTSShift),A.writeInt32(this.leastDecodeToDisplayDelta),A.writeInt32(this.greatestDecodeToDisplayDelta),A.writeInt32(this.compositionStartTime),A.writeInt32(this.compositionEndTime)):this.version===1&&(this.size=40,this.writeHeader(A),A.writeInt64(this.compositionToDTSShift),A.writeInt64(this.leastDecodeToDisplayDelta),A.writeInt64(this.greatestDecodeToDisplayDelta),A.writeInt64(this.compositionStartTime),A.writeInt64(this.compositionEndTime))}},Ji.fourcc="cslg",Ji),Hi,_h=(Hi=class extends D{constructor(){super(...arguments),this.box_name="CompositionOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.sample_counts=[],this.sample_offsets=[],this.version===0)for(let e=0;e<t;e++){this.sample_counts.push(A.readUint32());const i=A.readInt32();i<0&&l.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(i)}else if(this.version===1)for(let e=0;e<t;e++)this.sample_counts.push(A.readUint32()),this.sample_offsets.push(A.readInt32())}write(A){this.version=this.sample_offsets.some(t=>t<0)?1:0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(A),A.writeUint32(this.sample_counts.length);for(let t=0;t<this.sample_counts.length;t++)A.writeUint32(this.sample_counts[t]),this.version===1?A.writeInt32(this.sample_offsets[t]):A.writeUint32(this.sample_offsets[t])}unpack(A){let t=0;for(let e=0;e<this.sample_counts.length;e++)for(let i=0;i<this.sample_counts[e];i++)A[t].pts=A[t].dts+this.sample_offsets[e],t++}},Hi.fourcc="ctts",Hi),vi,Lh=(vi=class extends m{constructor(){super(...arguments),this.box_name="AC3SpecificBox"}parse(A){const t=A.readUint8(),e=A.readUint8(),i=A.readUint8();this.fscod=t>>6,this.bsid=t>>1&31,this.bsmod=(t&1)<<2|e>>6&3,this.acmod=e>>3&7,this.lfeon=e>>2&1,this.bit_rate_code=e&3|i>>5&7}},vi.fourcc="dac3",vi),Ki,Jh=(Ki=class extends m{constructor(){super(...arguments),this.box_name="EC3SpecificBox"}parse(A){const t=A.readUint16();this.data_rate=t>>3,this.num_ind_sub=t&7,this.ind_subs=[];for(let e=0;e<this.num_ind_sub+1;e++){const i=A.readUint8(),I=A.readUint8(),s=A.readUint8(),n={fscod:i>>6,bsid:i>>1&31,bsmod:(i&1)<<4|I>>4&15,acmod:I>>1&7,lfeon:I&1,num_dep_sub:s>>1&15};this.ind_subs.push(n),n.num_dep_sub>0&&(n.chan_loc=(s&1)<<8|A.readUint8())}}},Ki.fourcc="dec3",Ki),Ti,Hh=(Ti=class extends D{constructor(){super(...arguments),this.box_name="FLACSpecificBox"}parse(A){this.parseFullHeader(A);const t=127,e=128,i=[],I=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];let s;do{s=A.readUint8();const n=Math.min(s&t,I.length-1);n?A.readUint8Array(A.readUint24()):(A.readUint8Array(13),this.samplerate=A.readUint32()>>12,A.readUint8Array(20)),i.push(I[n])}while(s&e);this.numMetadataBlocks=i.length+" ("+i.join(", ")+")"}},Ti.fourcc="dfLa",Ti),qi,vh=(qi=class extends m{constructor(){super(...arguments),this.box_name="hintimmediateBytesSent"}parse(A){this.bytessent=A.readUint64()}},qi.fourcc="dimm",qi),Zi,Kh=(Zi=class extends m{constructor(){super(...arguments),this.box_name="hintlongestpacket"}parse(A){this.time=A.readUint32()}},Zi.fourcc="dmax",Zi),Vi,Th=(Vi=class extends m{constructor(){super(...arguments),this.box_name="hintmediaBytesSent"}parse(A){this.bytessent=A.readUint64()}},Vi.fourcc="dmed",Vi),Wi,qh=(Wi=class extends m{constructor(){super(...arguments),this.box_name="OpusSpecificBox"}parse(A){if(this.Version=A.readUint8(),this.OutputChannelCount=A.readUint8(),this.PreSkip=A.readUint16(),this.InputSampleRate=A.readUint32(),this.OutputGain=A.readInt16(),this.ChannelMappingFamily=A.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=A.readUint8(),this.CoupledCount=A.readUint8(),this.ChannelMapping=[];for(let t=0;t<this.OutputChannelCount;t++)this.ChannelMapping[t]=A.readUint8()}}write(A){if(this.size=11,this.ChannelMappingFamily!==0&&(this.size+=2+this.OutputChannelCount),this.writeHeader(A),A.writeUint8(this.Version),A.writeUint8(this.OutputChannelCount),A.writeUint16(this.PreSkip),A.writeUint32(this.InputSampleRate),A.writeInt16(this.OutputGain),A.writeUint8(this.ChannelMappingFamily),this.ChannelMappingFamily!==0){A.writeUint8(this.StreamCount),A.writeUint8(this.CoupledCount);for(let t=0;t<this.OutputChannelCount;t++)A.writeUint8(this.ChannelMapping[t])}}},Wi.fourcc="dOps",Wi),zi,Zh=(zi=class extends m{constructor(){super(...arguments),this.box_name="hintrepeatedBytesSent"}parse(A){this.bytessent=A.readUint64()}},zi.fourcc="drep",zi),ji,Vh=(ji=class extends D{constructor(){super(...arguments),this.box_name="EditListBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){const i={segment_duration:this.version===1?A.readUint64():A.readUint32(),media_time:this.version===1?A.readInt64():A.readInt32(),media_rate_integer:A.readInt16(),media_rate_fraction:A.readInt16()};this.entries.push(i)}}write(A){const t=this.entries.some(e=>e.segment_duration>W||e.media_time>W)||this.version===1;this.version=t?1:0,this.size=4+12*this.entries.length,this.size+=t?8*this.entries.length:0,this.writeHeader(A),A.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++){const i=this.entries[e];t?(A.writeUint64(i.segment_duration),A.writeInt64(i.media_time)):(A.writeUint32(i.segment_duration),A.writeInt32(i.media_time)),A.writeInt16(i.media_rate_integer),A.writeInt16(i.media_rate_fraction)}}},ji.fourcc="elst",ji),Xi,Wh=(Xi=class extends D{constructor(){super(...arguments),this.box_name="EventMessageBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.timescale=A.readUint32(),this.presentation_time=A.readUint64(),this.event_duration=A.readUint32(),this.id=A.readUint32(),this.scheme_id_uri=A.readCString(),this.value=A.readCString()):(this.scheme_id_uri=A.readCString(),this.value=A.readCString(),this.timescale=A.readUint32(),this.presentation_time_delta=A.readUint32(),this.event_duration=A.readUint32(),this.id=A.readUint32());let t=this.size-this.hdr_size-(16+(this.scheme_id_uri.length+1)+(this.value.length+1));this.version===1&&(t-=4),this.message_data=A.readUint8Array(t)}write(A){this.version=0,this.flags=0,this.size=16+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(A),A.writeCString(this.scheme_id_uri),A.writeCString(this.value),A.writeUint32(this.timescale),A.writeUint32(this.presentation_time_delta),A.writeUint32(this.event_duration),A.writeUint32(this.id),A.writeUint8Array(this.message_data)}},Xi.fourcc="emsg",Xi),P=class extends D{parse(g){this.parseFullHeader(g),this.group_id=g.readUint32(),this.num_entities_in_group=g.readUint32(),this.entity_ids=[];for(let A=0;A<this.num_entities_in_group;A++){const t=g.readUint32();this.entity_ids.push(t)}}},Oi,zh=(Oi=class extends P{constructor(){super(...arguments),this.box_name="Auto exposure bracketing"}},Oi.fourcc="aebr",Oi),Pi,jh=(Pi=class extends P{constructor(){super(...arguments),this.box_name="Flash exposure information"}},Pi.fourcc="afbr",Pi),$i,Xh=($i=class extends P{constructor(){super(...arguments),this.box_name="Album collection"}},$i.fourcc="albc",$i),Ag,Oh=(Ag=class extends P{constructor(){super(...arguments),this.box_name="Alternative entity"}},Ag.fourcc="altr",Ag),tg,Ph=(tg=class extends P{constructor(){super(...arguments),this.box_name="Burst image"}},tg.fourcc="brst",tg),eg,$h=(eg=class extends P{constructor(){super(...arguments),this.box_name="Depth of field bracketing"}},eg.fourcc="dobr",eg),ig,Ac=(ig=class extends P{constructor(){super(...arguments),this.box_name="Equivalent entity"}},ig.fourcc="eqiv",ig),gg,tc=(gg=class extends P{constructor(){super(...arguments),this.box_name="Favorites collection"}},gg.fourcc="favc",gg),Ig,ec=(Ig=class extends P{constructor(){super(...arguments),this.box_name="Focus bracketing"}},Ig.fourcc="fobr",Ig),sg,ic=(sg=class extends P{constructor(){super(...arguments),this.box_name="Image item with an audio track"}},sg.fourcc="iaug",sg),ng,gc=(ng=class extends P{constructor(){super(...arguments),this.box_name="Panorama"}},ng.fourcc="pano",ng),Bg,Ic=(Bg=class extends P{constructor(){super(...arguments),this.box_name="Slideshow"}},Bg.fourcc="slid",Bg),Cg,sc=(Cg=class extends P{constructor(){super(...arguments),this.box_name="Stereo"}},Cg.fourcc="ster",Cg),ag,nc=(ag=class extends P{constructor(){super(...arguments),this.box_name="Time-synchronized capture"}},ag.fourcc="tsyn",ag),Qg,Bc=(Qg=class extends P{constructor(){super(...arguments),this.box_name="White balance bracketing"}},Qg.fourcc="wbbr",Qg),rg,Cc=(rg=class extends P{constructor(){super(...arguments),this.box_name="Progressive rendering"}},rg.fourcc="prgr",rg),og,ac=(og=class extends P{constructor(){super(...arguments),this.box_name="Image pyramid"}parse(A){this.parseFullHeader(A),this.group_id=A.readUint32(),this.num_entities_in_group=A.readUint32(),this.entity_ids=[];for(let t=0;t<this.num_entities_in_group;t++){const e=A.readUint32();this.entity_ids.push(e)}this.tile_size_x=A.readUint16(),this.tile_size_y=A.readUint16(),this.layer_binning=[],this.tiles_in_layer_column_minus1=[],this.tiles_in_layer_row_minus1=[];for(let t=0;t<this.num_entities_in_group;t++)this.layer_binning[t]=A.readUint16(),this.tiles_in_layer_row_minus1[t]=A.readUint16(),this.tiles_in_layer_column_minus1[t]=A.readUint16()}},og.fourcc="pymd",og),Eg,Qc=(Eg=class extends m{constructor(){super(...arguments),this.box_name="FieldHandlingBox"}parse(A){this.fieldCount=A.readUint8(),this.fieldOrdering=A.readUint8()}},Eg.fourcc="fiel",Eg),hg,rc=(hg=class extends m{constructor(){super(...arguments),this.box_name="OriginalFormatBox"}parse(A){this.data_format=A.readString(4)}},hg.fourcc="frma",hg),cg,oc=(cg=class extends m{constructor(){super(...arguments),this.box_name="ImageMirror"}parse(A){const t=A.readUint8();this.reserved=t>>7,this.axis=t&1}},cg.fourcc="imir",cg),lg,Ec=(lg=class extends D{constructor(){super(...arguments),this.box_name="ItemPropertyAssociationBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.associations=[];for(let e=0;e<t;e++){const i=this.version<1?A.readUint16():A.readUint32(),I=[],s=A.readUint8();for(let n=0;n<s;n++){const B=A.readUint8();I.push({essential:(B&128)>>7===1,property_index:this.flags&1?(B&127)<<8|A.readUint8():B&127})}this.associations.push({id:i,props:I})}}},lg.fourcc="ipma",lg),dg,hc=(dg=class extends m{constructor(){super(...arguments),this.box_name="ImageRotation"}parse(A){this.angle=A.readUint8()&3}},dg.fourcc="irot",dg),fg,cc=(fg=class extends D{constructor(){super(...arguments),this.box_name="ImageSpatialExtentsProperty"}parse(A){this.parseFullHeader(A),this.image_width=A.readUint32(),this.image_height=A.readUint32()}},fg.fourcc="ispe",fg),ug,lc=(ug=class extends D{constructor(){super(...arguments),this.box_name="TAITimestampBox"}parse(A){this.TAI_timestamp=A.readUint64();const t=A.readUint8();this.sychronization_state=t>>7&1,this.timestamp_generation_failure=t>>6&1,this.timestamp_is_modified=t>>5&1}},ug.fourcc="itai",ug),wg,dc=(wg=class extends D{constructor(){super(...arguments),this.box_name="KindBox"}parse(A){this.parseFullHeader(A),this.schemeURI=A.readCString(),this.isEndOfBox(A)||(this.value=A.readCString())}write(A){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value?this.value.length+1:0),this.writeHeader(A),A.writeCString(this.schemeURI),this.value&&A.writeCString(this.value)}},wg.fourcc="kind",wg),Dg,fc=(Dg=class extends D{constructor(){super(...arguments),this.box_name="LevelAssignmentBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.levels=[];for(let e=0;e<t;e++){const i={};this.levels[e]=i,i.track_ID=A.readUint32();const I=A.readUint8();switch(i.padding_flag=I>>7,i.assignment_type=I&127,i.assignment_type){case 0:i.grouping_type=A.readString(4);break;case 1:i.grouping_type=A.readString(4),i.grouping_type_parameter=A.readUint32();break;case 2:break;case 3:break;case 4:i.sub_track_id=A.readUint32();break;default:l.warn("BoxParser",`Unknown level assignment type: ${i.assignment_type}`)}}}},Dg.fourcc="leva",Dg),pg,uc=(pg=class extends m{constructor(){super(...arguments),this.box_name="LHEVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8(),this.min_spatial_segmentation_idc=A.readUint16()&4095,this.parallelismType=A.readUint8()&3;let t=A.readUint8();this.numTemporalLayers=(t&13)>>3,this.temporalIdNested=(t&4)>>2,this.lengthSizeMinusOne=t&3,this.nalu_arrays=[];const e=A.readUint8();for(let i=0;i<e;i++){const I=[];this.nalu_arrays.push(I),t=A.readUint8(),I.completeness=(t&128)>>7,I.nalu_type=t&63;const s=A.readUint16();for(let n=0;n<s;n++){const B=A.readUint16();I.push({data:A.readUint8Array(B)})}}}},pg.fourcc="lhvC",pg),yg,wc=(yg=class extends m{constructor(){super(...arguments),this.box_name="LayerSelectorProperty"}parse(A){this.layer_id=A.readUint16()}},yg.fourcc="lsel",yg),mg,Dc=(mg=class extends m{constructor(){super(...arguments),this.box_name="hintmaxrate"}parse(A){this.period=A.readUint32(),this.bytes=A.readUint32()}},mg.fourcc="maxr",mg),qs=class{constructor(g,A){this.x=g,this.y=A}toString(){return"("+this.x+","+this.y+")"}},Gg,pc=(Gg=class extends m{constructor(){super(...arguments),this.box_name="MasteringDisplayColourVolumeBox"}parse(A){this.display_primaries=[],this.display_primaries[0]=new qs(A.readUint16(),A.readUint16()),this.display_primaries[1]=new qs(A.readUint16(),A.readUint16()),this.display_primaries[2]=new qs(A.readUint16(),A.readUint16()),this.white_point=new qs(A.readUint16(),A.readUint16()),this.max_display_mastering_luminance=A.readUint32(),this.min_display_mastering_luminance=A.readUint32()}},Gg.fourcc="mdcv",Gg),Sg,yc=(Sg=class extends D{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessOffsetBox"}parse(A){this.parseFullHeader(A),this._size=A.readUint32()}},Sg.fourcc="mfro",Sg),Fg,mc=(Fg=class extends D{constructor(){super(...arguments),this.box_name="MaskConfigurationProperty"}parse(A){this.parseFullHeader(A),this.bits_per_pixel=A.readUint8()}},Fg.fourcc="mskC",Fg),Ng,Gc=(Ng=class extends m{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint32()}},Ng.fourcc="npck",Ng),xg,Sc=(xg=class extends m{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint64()}},xg.fourcc="nump",xg),Fc=class{constructor(g,A){this.pad1=g,this.pad2=A}},Rg,Nc=(Rg=class extends D{constructor(){super(...arguments),this.box_name="PaddingBitsBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.padbits=[];for(let e=0;e<Math.floor((t+1)/2);e++){const i=A.readUint8(),I=(i&112)>>4,s=i&7;this.padbits.push(new Fc(I,s))}}},Rg.fourcc="padb",Rg),Ug,xc=(Ug=class extends m{constructor(){super(...arguments),this.box_name="PixelAspectRatioBox"}parse(A){this.hSpacing=A.readUint32(),this.vSpacing=A.readUint32()}},Ug.fourcc="pasp",Ug),Mg,Rc=(Mg=class extends m{constructor(){super(...arguments),this.box_name="CuePayloadBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},Mg.fourcc="payl",Mg),bg,Uc=(bg=class extends m{constructor(){super(...arguments),this.box_name="hintpayloadID"}parse(A){this.payloadID=A.readUint32();const t=A.readUint8();this.rtpmap_string=A.readString(t)}},bg.fourcc="payt",bg),kg,Mc=(kg=class extends D{constructor(){super(...arguments),this.box_name="ProgressiveDownloadInfoBox",this.rate=[],this.initial_delay=[]}parse(A){this.parseFullHeader(A);const t=(this.size-this.hdr_size)/8;for(let e=0;e<t;e++)this.rate[e]=A.readUint32(),this.initial_delay[e]=A.readUint32()}},kg.fourcc="pdin",kg),Yg,bc=(Yg=class extends D{constructor(){super(...arguments),this.box_name="PixelInformationProperty"}parse(A){this.parseFullHeader(A),this.num_channels=A.readUint8(),this.bits_per_channels=[];for(let t=0;t<this.num_channels;t++)this.bits_per_channels[t]=A.readUint8()}},Yg.fourcc="pixi",Yg),_g,kc=(_g=class extends m{constructor(){super(...arguments),this.box_name="hintlargestpacket"}parse(A){this.bytes=A.readUint32()}},_g.fourcc="pmax",_g),Lg,Yc=(Lg=class extends D{constructor(){super(...arguments),this.box_name="ProgressiveDerivedImageItemInformationProperty"}parse(A){if(this.parseFullHeader(A),this.step_count=A.readUint16(),this.item_count=[],this.flags&2)for(let t=0;t<this.step_count;t++)this.item_count[t]=A.readUint16()}},Lg.fourcc="prdi",Lg),Jg,_c=(Jg=class extends D{constructor(){super(...arguments),this.box_name="ProjectionFormatBox"}parse(A){this.parseFullHeader(A),this.projection_type=A.readUint8()&31}},Jg.fourcc="prfr",Jg),Hg,Lc=(Hg=class extends D{constructor(){super(...arguments),this.box_name="ProducerReferenceTimeBox"}parse(A){this.parseFullHeader(A),this.ref_track_id=A.readUint32(),this.ntp_timestamp=A.readUint64(),this.version===0?this.media_time=A.readUint32():this.media_time=A.readUint64()}},Hg.fourcc="prft",Hg),vg,Jc=(vg=class extends D{constructor(){super(...arguments),this.box_name="ProtectionSystemSpecificHeaderBox"}parse(A){if(this.parseFullHeader(A),this.system_id=KA(A),this.kid=[],this.version>0){const e=A.readUint32();for(let i=0;i<e;i++)this.kid[i]=KA(A)}const t=A.readUint32();t>0&&(this.protection_data=A.readUint8Array(t))}},vg.fourcc="pssh",vg),Kg,Hc=(Kg=class extends D{constructor(){super(...arguments),this.box_name="TrackCleanApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Kg.fourcc="clef",Kg);function vc(g,A){if(g===ds.Types.UTF8)return new TextDecoder("utf-8").decode(A);const t=new DataView(A.buffer);if(g===ds.Types.BE_UNSIGNED_INT){if(A.length===1)return t.getUint8(0);if(A.length===2)return t.getUint16(0,!1);if(A.length===4)return t.getUint32(0,!1);if(A.length===8)return t.getBigUint64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_UNSIGNED_INT length "+A.length)}else if(g===ds.Types.BE_SIGNED_INT){if(A.length===1)return t.getInt8(0);if(A.length===2)return t.getInt16(0,!1);if(A.length===4)return t.getInt32(0,!1);if(A.length===8)return t.getBigInt64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_SIGNED_INT length "+A.length)}else if(g===ds.Types.BE_FLOAT32)return t.getFloat32(0,!1);l.warn("DataBox","Unsupported or unimplemented itif data type: "+g)}var vA,ds=(vA=class extends m{constructor(){super(...arguments),this.box_name="DataBox"}parse(A){this.valueType=A.readUint32(),this.country=A.readUint16(),this.country>255&&(A.seek(A.getPosition()-2),this.countryString=A.readString(2)),this.language=A.readUint16(),this.language>255&&(A.seek(A.getPosition()-2),this.parseLanguage(A)),this.raw=A.readUint8Array(this.size-this.hdr_size-8),this.value=vc(this.valueType,this.raw)}},vA.fourcc="data",vA.Types={RESERVED:0,UTF8:1,UTF16:2,SJIS:3,UTF8_SORT:4,UTF16_SORT:5,JPEG:13,PNG:14,BE_SIGNED_INT:21,BE_UNSIGNED_INT:22,BE_FLOAT32:23,BE_FLOAT64:24,BMP:27,QT_ATOM:28,BE_SIGNED_INT8:65,BE_SIGNED_INT16:66,BE_SIGNED_INT32:67,BE_FLOAT32_POINT:70,BE_FLOAT32_DIMENSIONS:71,BE_FLOAT32_RECT:72,BE_SIGNED_INT64:74,BE_UNSIGNED_INT8:75,BE_UNSIGNED_INT16:76,BE_UNSIGNED_INT32:77,BE_UNSIGNED_INT64:78,BE_FLOAT64_AFFINE_TRANSFORM:79},vA),Tg,Kc=(Tg=class extends D{constructor(){super(...arguments),this.box_name="TrackEncodedPixelsDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Tg.fourcc="enof",Tg),qg,Tc=(qg=class extends m{constructor(){super(...arguments),this.box_name="IlstBox"}parse(A){this.list={};let t=this.size-this.hdr_size;for(;t>0;){const e=A.readUint32(),i=A.readUint32(),I=hA(A,!1,e-8);I.code===CA&&(this.list[i]=I.box),t-=e}}},qg.fourcc="ilst",qg),Zg,qc=(Zg=class extends D{constructor(){super(...arguments),this.box_name="KeysBox"}parse(A){this.parseFullHeader(A),this.count=A.readUint32(),this.keys={};for(let t=0;t<this.count;t++){const e=A.readUint32();this.keys[t+1]=A.readString(e-4)}}},Zg.fourcc="keys",Zg),Vg,Zc=(Vg=class extends D{constructor(){super(...arguments),this.box_name="TrackProductionApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Vg.fourcc="prof",Vg),Wg,Vc=(Wg=class extends U{constructor(){super(...arguments),this.box_name="TrackApertureModeDimensionsBox",this.clefs=[],this.profs=[],this.enofs=[],this.subBoxNames=["clef","prof","enof"]}},Wg.fourcc="tapt",Wg),zg,Wc=(zg=class extends U{constructor(){super(...arguments),this.box_name="siDecompressionParamBox"}},zg.fourcc="wave",zg),jg,zc=(jg=class extends m{constructor(){super(...arguments),this.box_name="rtpmoviehintinformation"}parse(A){this.descriptionformat=A.readString(4),this.sdptext=A.readString(this.size-this.hdr_size-4)}},jg.fourcc="rtp ",jg),Xg,jc=(Xg=class extends D{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationOffsetsBox"}parse(A){this.parseFullHeader(A),this.flags&1&&(this.aux_info_type=A.readString(4),this.aux_info_type_parameter=A.readUint32());const t=A.readUint32();this.offset=[];for(let e=0;e<t;e++)this.version===0?this.offset[e]=A.readUint32():this.offset[e]=A.readUint64()}},Xg.fourcc="saio",Xg),Og,Xc=(Og=class extends D{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationSizesBox"}parse(A){if(this.parseFullHeader(A),this.flags&1&&(this.aux_info_type=A.readString(4),this.aux_info_type_parameter=A.readUint32()),this.default_sample_info_size=A.readUint8(),this.sample_count=A.readUint32(),this.sample_info_size=[],this.default_sample_info_size===0)for(let t=0;t<this.sample_count;t++)this.sample_info_size[t]=A.readUint8()}},Og.fourcc="saiz",Og),Oc=class{constructor(g,A){this.bad_pixel_row=g,this.bad_pixel_column=A}toString(){return"[row: "+this.bad_pixel_row+", column: "+this.bad_pixel_column+"]"}},Pg,Pc=(Pg=class extends D{constructor(){super(...arguments),this.box_name="SensorBadPixelsMapBox"}parse(A){this.parseFullHeader(A),this.component_count=A.readUint16(),this.component_index=[];for(let e=0;e<this.component_count;e++)this.component_index.push(A.readUint16());const t=A.readUint8();this.correction_applied=(t&128)===128,this.num_bad_rows=A.readUint32(),this.num_bad_cols=A.readUint32(),this.num_bad_pixels=A.readUint32(),this.bad_rows=[],this.bad_columns=[],this.bad_pixels=[];for(let e=0;e<this.num_bad_rows;e++)this.bad_rows.push(A.readUint32());for(let e=0;e<this.num_bad_cols;e++)this.bad_columns.push(A.readUint32());for(let e=0;e<this.num_bad_pixels;e++){const i=A.readUint32(),I=A.readUint32();this.bad_pixels.push(new Oc(i,I))}}},Pg.fourcc="sbpm",Pg),$g,$c=($g=class extends D{constructor(){super(...arguments),this.box_name="SchemeTypeBox"}parse(A){this.parseFullHeader(A),this.scheme_type=A.readString(4),this.scheme_version=A.readUint32(),this.flags&1&&(this.scheme_uri=A.readString(this.size-this.hdr_size-8))}},$g.fourcc="schm",$g),AI,Al=(AI=class extends m{constructor(){super(...arguments),this.box_name="rtptracksdphintinformation"}parse(A){this.sdptext=A.readString(this.size-this.hdr_size)}},AI.fourcc="sdp ",AI),tI,tl=(tI=class extends D{constructor(){super(...arguments),this.box_name="SampleEncryptionBox"}},tI.fourcc="senc",tI),eI,el=(eI=class extends D{constructor(){super(...arguments),this.box_name="SMPTE2086MasteringDisplayMetadataBox"}parse(A){this.parseFullHeader(A),this.primaryRChromaticity_x=A.readUint16(),this.primaryRChromaticity_y=A.readUint16(),this.primaryGChromaticity_x=A.readUint16(),this.primaryGChromaticity_y=A.readUint16(),this.primaryBChromaticity_x=A.readUint16(),this.primaryBChromaticity_y=A.readUint16(),this.whitePointChromaticity_x=A.readUint16(),this.whitePointChromaticity_y=A.readUint16(),this.luminanceMax=A.readUint32(),this.luminanceMin=A.readUint32()}},eI.fourcc="SmDm",eI),iI,il=(iI=class extends D{constructor(){super(...arguments),this.box_name="SamplingRateBox"}parse(A){this.parseFullHeader(A),this.sampling_rate=A.readUint32()}},iI.fourcc="srat",iI),gI,gl=(gI=class extends D{constructor(){super(...arguments),this.box_name="CompressedSubsegmentIndexBox"}parse(A){this.parseFullHeader(A),this.subsegments=[];const t=A.readUint32();for(let e=0;e<t;e++){const i={};this.subsegments.push(i),i.ranges=[];const I=A.readUint32();for(let s=0;s<I;s++){const n={};i.ranges.push(n),n.level=A.readUint8(),n.range_size=A.readUint24()}}}},gI.fourcc="ssix",gI),II,Il=(II=class extends D{constructor(){super(...arguments),this.box_name="DegradationPriorityBox"}parse(A){this.parseFullHeader(A);const t=(this.size-this.hdr_size)/2;this.priority=[];for(let e=0;e<t;e++)this.priority[e]=A.readUint16()}},II.fourcc="stpd",II),sI,sl=(sI=class extends D{constructor(){super(...arguments),this.box_name="SubTrackInformationBox"}parse(A){this.parseFullHeader(A),this.switch_group=A.readUint16(),this.alternate_group=A.readUint16(),this.sub_track_id=A.readUint32();const t=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(let e=0;e<t;e++)this.attribute_list[e]=A.readUint32()}},sI.fourcc="stri",sI),nI,nl=(nI=class extends D{constructor(){super(...arguments),this.box_name="SubTrackSampleGroupBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readUint32();const t=A.readUint16();this.group_description_index=[];for(let e=0;e<t;e++)this.group_description_index[e]=A.readUint32()}},nI.fourcc="stsg",nI),BI,Bl=(BI=class extends D{constructor(){super(...arguments),this.box_name="ShadowSyncSampleBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],this.version===0)for(let e=0;e<t;e++)this.shadowed_sample_numbers.push(A.readUint32()),this.sync_sample_numbers.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(A),A.writeUint32(this.shadowed_sample_numbers.length);for(let t=0;t<this.shadowed_sample_numbers.length;t++)A.writeUint32(this.shadowed_sample_numbers[t]),A.writeUint32(this.sync_sample_numbers[t])}},BI.fourcc="stsh",BI),CI,Cl=(CI=class extends D{constructor(){super(...arguments),this.box_name="SyncSampleBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.version===0){this.sample_numbers=[];for(let e=0;e<t;e++)this.sample_numbers.push(A.readUint32())}}write(A){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(A),A.writeUint32(this.sample_numbers.length),A.writeUint32Array(this.sample_numbers)}},CI.fourcc="stss",CI),aI,al=(aI=class extends D{constructor(){super(...arguments),this.box_name="StereoVideoBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.single_view_allowed=t&3,this.stereo_scheme=A.readUint32();const e=A.readUint32();for(this.stereo_indication_type=A.readString(e),this.boxes=[];A.getPosition()<this.start+this.size;){const i=hA(A,!1,this.size-(A.getPosition()-this.start));if(i.code===CA){const I=i.box;this.boxes.push(I),this[I.type]=I}else return}}},aI.fourcc="stvi",aI),QI,Ql=(QI=class extends m{constructor(){super(...arguments),this.box_name="SegmentTypeBox"}parse(A){let t=this.size-this.hdr_size;this.major_brand=A.readString(4),this.minor_version=A.readUint32(),t-=8,this.compatible_brands=[];let e=0;for(;t>=4;)this.compatible_brands[e]=A.readString(4),t-=4,e++}write(A){this.size=8+4*this.compatible_brands.length,this.writeHeader(A),A.writeString(this.major_brand,void 0,4),A.writeUint32(this.minor_version);for(let t=0;t<this.compatible_brands.length;t++)A.writeString(this.compatible_brands[t],void 0,4)}},QI.fourcc="styp",QI),rI,rl=(rI=class extends D{constructor(){super(...arguments),this.box_name="CompactSampleSizeBox"}parse(A){if(this.parseFullHeader(A),this.sample_sizes=[],this.version===0){this.reserved=A.readUint24(),this.field_size=A.readUint8();const t=A.readUint32();if(this.field_size===4)for(let e=0;e<t;e+=2){const i=A.readUint8();this.sample_sizes[e]=i>>4&15,this.sample_sizes[e+1]=i&15}else if(this.field_size===8)for(let e=0;e<t;e++)this.sample_sizes[e]=A.readUint8();else if(this.field_size===16)for(let e=0;e<t;e++)this.sample_sizes[e]=A.readUint16();else l.error("BoxParser","Error in length field in stz2 box",A.isofile)}}},rI.fourcc="stz2",rI),oI,ol=(oI=class extends D{constructor(){super(...arguments),this.box_name="SubSampleInformationBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.entries=[];let e;for(let i=0;i<t;i++){const I={};if(this.entries[i]=I,I.sample_delta=A.readUint32(),I.subsamples=[],e=A.readUint16(),e>0)for(let s=0;s<e;s++){const n={};I.subsamples.push(n),this.version===1?n.size=A.readUint32():n.size=A.readUint16(),n.priority=A.readUint8(),n.discardable=A.readUint8(),n.codec_specific_parameters=A.readUint32()}}}},oI.fourcc="subs",oI),EI,El=(EI=class extends D{constructor(){super(...arguments),this.box_name="TAIClockInfoBox"}parse(A){this.time_uncertainty=A.readUint64(),this.clock_resolution=A.readUint32(),this.clock_drift_rate=A.readInt32();const t=A.readUint8();this.clock_type=(t&192)>>6}},EI.fourcc="taic",EI),hI,hl=(hI=class extends D{constructor(){super(...arguments),this.box_name="TrackEncryptionBox"}parse(A){if(this.parseFullHeader(A),A.readUint8(),this.version===0)A.readUint8();else{const t=A.readUint8();this.default_crypt_byte_block=t>>4&15,this.default_skip_byte_block=t&15}this.default_isProtected=A.readUint8(),this.default_Per_Sample_IV_Size=A.readUint8(),this.default_KID=KA(A),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=A.readUint8(),this.default_constant_IV=A.readUint8Array(this.default_constant_IV_size))}},hI.fourcc="tenc",hI),cI,cl=(cI=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentRandomAccessBox"}parse(A){this.parseFullHeader(A),this.track_ID=A.readUint32(),A.readUint24();const t=A.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=t&3,this.entries=[];const e=A.readUint32();for(let i=0;i<e;i++)this.version===1?(this.time=A.readUint64(),this.moof_offset=A.readUint64()):(this.time=A.readUint32(),this.moof_offset=A.readUint32()),this.traf_number=A["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=A["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=A["readUint"+8*(this.length_size_of_sample_num+1)]()}},cI.fourcc="tfra",cI),lI,ll=(lI=class extends m{constructor(){super(...arguments),this.box_name="hintmaxrelativetime"}parse(A){this.time=A.readUint32()}},lI.fourcc="tmax",lI),dI,dl=(dI=class extends m{constructor(){super(...arguments),this.box_name="hintminrelativetime"}parse(A){this.time=A.readUint32()}},dI.fourcc="tmin",dI),fI,fl=(fI=class extends m{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},fI.fourcc="totl",fI),uI,ul=(uI=class extends m{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},uI.fourcc="tpay",uI),wI,wl=(wI=class extends m{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},wI.fourcc="tpyl",wI),DI,Dl=(DI=class extends Qo{},DI.fourcc="msrc",DI),UA,pl=(UA=class extends m{constructor(){super(...arguments),this.box_name="TrackReferenceBox",this.references=[]}parse(A){for(;A.getPosition()<this.start+this.size;){const t=hA(A,!0,this.size-(A.getPosition()-this.start));if(t.code===CA){UA.allowed_types.includes(t.type)||l.warn("BoxParser",`Unknown track reference type: '${t.type}'`);const e=new Eo(t.type,t.size,t.hdr_size,t.start);e.write===m.prototype.write&&e.type!=="mdat"&&(l.info("BoxParser","TrackReference "+e.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(A)),e.parse(A),this.references.push(e)}else return}}},UA.fourcc="tref",UA.allowed_types=["hint","cdsc","font","hind","vdep","vplx","subt","thmb","auxl","cdtg","shsc","aest"],UA),pI,yl=(pI=class extends D{constructor(){super(...arguments),this.box_name="TrackExtensionPropertiesBox"}parse(A){for(this.parseFullHeader(A),this.track_ID=A.readUint32(),this.boxes=[];A.getPosition()<this.start+this.size;){const t=hA(A,!1,this.size-(A.getPosition()-this.start));if(t.code===CA){const e=t.box;this.boxes.push(e)}else return}}},pI.fourcc="trep",pI),yI,ml=(yI=class extends m{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},yI.fourcc="trpy",yI),mI,Gl=(mI=class extends D{constructor(){super(...arguments),this.box_name="TrackSelectionBox"}parse(A){this.parseFullHeader(A),this.switch_group=A.readUint32();const t=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(let e=0;e<t;e++)this.attribute_list[e]=A.readUint32()}},mI.fourcc="tsel",mI),GI,Sl=(GI=class extends D{constructor(){super(...arguments),this.box_name="TextConfigBox"}parse(A){this.parseFullHeader(A),this.config=A.readCString()}},GI.fourcc="txtc",GI),SI,Fl=(SI=class extends m{constructor(){super(...arguments),this.box_name="TypeCombinationBox"}parse(A){const t=(this.size-this.hdr_size)/4;this.compatible_brands=[];for(let e=0;e<t;e++)this.compatible_brands[e]=A.readString(4)}},SI.fourcc="tyco",SI),FI,Nl=(FI=class extends D{constructor(){super(...arguments),this.box_name="UserDescriptionProperty"}parse(A){this.parseFullHeader(A),this.lang=A.readCString(),this.name=A.readCString(),this.description=A.readCString(),this.tags=A.readCString()}},FI.fourcc="udes",FI),NI,xl=(NI=class extends D{constructor(){super(...arguments),this.box_name="UncompressedFrameConfigBox"}parse(A){if(this.parseFullHeader(A),this.profile=A.readString(4),this.version!==1){if(this.version===0){this.component_count=A.readUint32(),this.component_index=[],this.component_bit_depth_minus_one=[],this.component_format=[],this.component_align_size=[];for(let e=0;e<this.component_count;e++)this.component_index.push(A.readUint16()),this.component_bit_depth_minus_one.push(A.readUint8()),this.component_format.push(A.readUint8()),this.component_align_size.push(A.readUint8());this.sampling_type=A.readUint8(),this.interleave_type=A.readUint8(),this.block_size=A.readUint8();const t=A.readUint8();this.component_little_endian=t>>7&1,this.block_pad_lsb=t>>6&1,this.block_little_endian=t>>5&1,this.block_reversed=t>>4&1,this.pad_unknown=t>>3&1,this.pixel_size=A.readUint32(),this.row_align_size=A.readUint32(),this.tile_align_size=A.readUint32(),this.num_tile_cols_minus_one=A.readUint32(),this.num_tile_rows_minus_one=A.readUint32()}}}},NI.fourcc="uncC",NI),xI,Rl=(xI=class extends D{constructor(){super(...arguments),this.box_name="DataEntryUrnBox"}parse(A){this.parseFullHeader(A),this.name=A.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=A.readCString())}write(A){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(A),A.writeCString(this.name),this.location&&A.writeCString(this.location)}},xI.fourcc="urn ",xI),RI,Ul=(RI=class extends m{constructor(){super(...arguments),this.box_name="WebVTTConfigurationBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},RI.fourcc="vttC",RI),UI,Ml=(UI=class extends D{constructor(){super(...arguments),this.box_name="VvcNALUConfigBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.lengthSizeMinusOne=t&3}},UI.fourcc="vvnC",UI),MI,bl=(MI=class extends T{parse(A){const t=A.readUint16();this.first_output_sample=A.readUint16(),this.sample_offset=[];for(let i=0;i<t;i++)this.sample_offset[i]=A.readUint32();const e=this.description_length-4-4*t;this.num_output_samples=[],this.num_total_samples=[];for(let i=0;i<e/4;i++)this.num_output_samples[i]=A.readUint16(),this.num_total_samples[i]=A.readUint16()}},MI.grouping_type="alst",MI),bI,kl=(bI=class extends T{parse(A){this.layerNumber=A.readUint8(),this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()}},bI.grouping_type="avll",bI),kI,Yl=(kI=class extends T{parse(A){this.subSequenceIdentifier=A.readUint16(),this.layerNumber=A.readUint8();const t=A.readUint8();this.durationFlag=t>>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=A.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()),this.dependency=[];const e=A.readUint8();for(let i=0;i<e;i++)this.dependency.push({subSeqDirectionFlag:A.readUint8(),layerNumber:A.readUint8(),subSequenceIdentifier:A.readUint16()})}},kI.grouping_type="avss",kI),YI,_l=(YI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},YI.grouping_type="dtrt",YI),_I,Ll=(_I=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},_I.grouping_type="mvif",_I),LI,Jl=(LI=class extends T{parse(A){this.roll_distance=A.readInt16()}},LI.grouping_type="prol",LI),JI,Hl=(JI=class extends T{parse(A){const t=A.readUint8();this.num_leading_samples_known=t>>7,this.num_leading_samples=t&127}},JI.grouping_type="rap ",JI),HI,vl=(HI=class extends T{parse(A){if(this.operation_point_count=A.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)l.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=A.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=A.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(let t=0;t<this.operation_point_count;t++)this.available_bitrate[t]=A.readUint32(),this.target_rate_share[t]=A.readUint16()}this.maximum_bitrate=A.readUint32(),this.minimum_bitrate=A.readUint32(),this.discard_priority=A.readUint8()}}},HI.grouping_type="rash",HI),vI,Kl=(vI=class extends T{parse(A){this.roll_distance=A.readInt16()}},vI.grouping_type="roll",vI),KI,Tl=(KI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},KI.grouping_type="scif",KI),TI,ql=(TI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},TI.grouping_type="scnm",TI),qI,Zl=(qI=class extends T{parse(A){this.reserved=A.readUint8();const t=A.readUint8();this.crypt_byte_block=t>>4,this.skip_byte_block=t&15,this.isProtected=A.readUint8(),this.Per_Sample_IV_Size=A.readUint8(),this.KID=KA(A),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=A.readUint8(),this.constant_IV=A.readUint8Array(this.constant_IV_size))}},qI.grouping_type="seig",qI),ZI,Vl=(ZI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},ZI.grouping_type="stsa",ZI),VI,Wl=(VI=class extends T{parse(A){const t=A.readUint8();this.NAL_unit_type=t&63}},VI.grouping_type="sync",VI),WI,zl=(WI=class extends T{parse(A){const t=A.readUint8();this.level_independently_decodable=t>>7}},WI.grouping_type="tele",WI),zI,jl=(zI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},zI.grouping_type="tsas",zI),jI,Xl=(jI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},jI.grouping_type="tscl",jI),XI,Ol=(XI=class extends T{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},XI.grouping_type="vipr",XI),OI,Pl=(OI=class extends m{},OI.fourcc="uuid",OI),PI,ns=(PI=class extends D{},PI.fourcc="uuid",PI),$I,$l=($I=class extends ns{constructor(){super(...arguments),this.box_name="LiveServerManifestBox"}parse(A){this.parseFullHeader(A),this.LiveServerManifest=A.readString(this.size-this.hdr_size).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}},$I.uuid="a5d40b30e81411ddba2f0800200c9a66",$I),As,Ad=(As=class extends ns{constructor(){super(...arguments),this.box_name="PiffProtectionSystemSpecificHeaderBox"}parse(A){this.parseFullHeader(A),this.system_id=KA(A);const t=A.readUint32();t>0&&(this.data=A.readUint8Array(t))}},As.uuid="d08a4f1810f34a82b6c832d8aba183d3",As),ts,td=(ts=class extends ns{constructor(){super(...arguments),this.box_name="PiffSampleEncryptionBox"}},ts.uuid="a2394f525a9b4f14a2446c427c648df4",ts),es,ed=(es=class extends ns{constructor(){super(...arguments),this.box_name="PiffTrackEncryptionBox"}parse(A){this.parseFullHeader(A),this.default_AlgorithmID=A.readUint24(),this.default_IV_size=A.readUint8(),this.default_KID=KA(A)}},es.uuid="8974dbce7be74c5184f97148f9882554",es),is,id=(is=class extends ns{constructor(){super(...arguments),this.box_name="TfrfBox"}parse(A){this.parseFullHeader(A),this.fragment_count=A.readUint8(),this.entries=[];for(let t=0;t<this.fragment_count;t++){let e=0,i=0;this.version===1?(e=A.readUint64(),i=A.readUint64()):(e=A.readUint32(),i=A.readUint32()),this.entries.push({absolute_time:e,absolute_duration:i})}}},is.uuid="d4807ef2ca3946958e5426cb9e46a79f",is),gs,gd=(gs=class extends ns{constructor(){super(...arguments),this.box_name="TfxdBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.absolute_time=A.readUint64(),this.duration=A.readUint64()):(this.absolute_time=A.readUint32(),this.duration=A.readUint32())}},gs.uuid="6d1d9b0542d544e680e2141daff757b2",gs),Is,Id=(Is=class extends Pl{constructor(){super(...arguments),this.box_name="ItemContentIDProperty"}parse(A){this.content_id=A.readCString()}},Is.uuid="261ef3741d975bbaacbd9d2c8ea73522",Is);wo(oa);Do(Ba);const sd=800;function nd(g){return g.startsWith("avc1")||g.startsWith("avc3")}function Bd(g){const A=new Uint8Array(g);if(A.byteLength<8)return g;const t=A[4],e=A[5],i=A[6],I=A[7];return t===97&&e===118&&i===99&&I===67?g.slice(8):g}function Cd(g){const A=g.avcC;if(!A)return;const t=new gA;A.write(t);const e=t.byteLength;if(e<=0)return;const i=t.buffer.slice(0,e);return Bd(i)}function ad(g){return new Promise((A,t)=>{const e=rh(),i=g.slice(0);i.fileStart=0,e.onError=I=>{t(new Error(`mp4box: ${I}`))},e.onReady=I=>{var s,n,B,C,a,Q,o;const r=(s=I.videoTracks)==null?void 0:s[0];if(!r){t(new Error("mp4box: no video track"));return}if(!nd(r.codec)){t(new Error(`mp4box: unsupported video codec ${r.codec}`));return}if(r.nb_samples>sd){t(new Error(`mp4box: too many samples (${r.nb_samples})`));return}const E=[];e.onSamples=(c,f,d)=>{E.push(...d)},e.setExtractionOptions(r.id,null,{nbSamples:Math.max(r.nb_samples,1)}),e.start();const h=r.timescale>0?r.duration/r.timescale:I.duration/(I.timescale||1);if(E.length===0){t(new Error("mp4box: extraction produced no samples"));return}A({codec:r.codec,timescale:r.timescale,durationSec:Number.isFinite(h)?h:0,videoWidth:(C=(B=(n=r.video)==null?void 0:n.width)!=null?B:r.track_width)!=null?C:0,videoHeight:(o=(Q=(a=r.video)==null?void 0:a.height)!=null?Q:r.track_height)!=null?o:0,samples:E})},e.appendBuffer(i),e.flush()})}const vB=25e3;async function Qd(g,A,t){const e=performance.now();let i=0;for(;g.decodeQueueSize>0;)if(await new Promise(I=>queueMicrotask(I)),i++,i%120===0&&await new Promise(I=>setTimeout(I,0)),performance.now()-e>t){console.warn("[GiftStage:WC] decodeQueue drain gave up",{label:A,decodeQueueSize:g.decodeQueueSize,spins:i});break}}async function rd(g,A){console.info("[GiftStage:WC] VideoDecoder.flush…",A);try{await Promise.race([g.flush(),new Promise((t,e)=>{setTimeout(()=>e(new Error(`VideoDecoder.flush() timed out after ${vB}ms (${JSON.stringify(A)})`)),vB)})])}catch(t){try{g.close()}catch(e){}throw t}}async function od(g,A,t,e){var i,I;if(t.length===0)return{frames:[],timesSec:new Float64Array(0)};const s=[...t].sort((E,h)=>{var c,f,d,u;const p=((f=(c=E.dts)!=null?c:E.cts)!=null?f:0)-((u=(d=h.dts)!=null?d:h.cts)!=null?u:0);return p!==0?p:0}),n=[],B=new VideoDecoder({output:E=>{n.push(E)},error:E=>{throw E}}),C=await hd(g,A);B.configure(C);let a=0;for(const E of s){const h=E.data;if(!h||h.byteLength===0)continue;const c=(I=(i=E.cts)!=null?i:E.dts)!=null?I:0,f=Math.round(c/e*1e6),d=E.duration&&e>0?Math.round(E.duration/e*1e6):void 0,u=new Uint8Array(h.byteLength);u.set(h);const p=new EncodedVideoChunk({type:E.is_sync?"key":"delta",timestamp:f,duration:d,data:u});try{B.decode(p)}catch(w){console.error("[GiftStage:WC] decoder.decode failed",{chunkIndex:a,err:w});try{B.close()}catch(y){}throw w}a++,await new Promise(w=>queueMicrotask(w))}await Qd(B,"after last decode",1e4);const Q=B.decodeQueueSize,o=n.length;await rd(B,{chunksDecoded:a,outputsBeforeFlush:o,queueBeforeFlush:Q}),B.close(),n.sort((E,h)=>E.timestamp-h.timestamp);const r=Float64Array.from(n.map(E=>E.timestamp/1e6));if(n.length===0)throw new Error("WebCodecs: decoder produced no frames");return{frames:n,timesSec:r}}function vn(g,A,t){if(g.length===0)return 0;const e=g.length;if(t<=g[0])return 0;const i=g[e-1];if(t>=A||t>=i)return e-1;for(let I=1;I<e;I++)if(t<g[I])return I-1;return e-1}function Ed(g,A,t){if(t.length===0)return 1e-6;const e=t.length-1,i=t[e],I=A.length>e?A[e]:0;let s=0;i.duration!=null&&Number.isFinite(i.duration)&&i.duration>0?s=i.duration/1e6:A.length>=2?s=A[e]-A[e-1]:s=1/30;const n=I+s;let B=g>0?g:n;if(!(B>0)&&A.length>=2){const C=(A[A.length-1]-A[0])/(A.length-1);B=A[A.length-1]+(C>0?C:1/30)}return B>0||(B=Math.max(n,1/30)),B}async function hd(g,A){var t;const e={codec:g,hardwareAcceleration:"prefer-software",...A&&A.byteLength>0?{description:A}:{}};let i=await VideoDecoder.isConfigSupported(e),I=e;if(!i.supported){const s={codec:g,...A&&A.byteLength>0?{description:A}:{}};if(i=await VideoDecoder.isConfigSupported(s),!i.supported)throw new Error(`WebCodecs: unsupported config ${g}`);I=s}return(t=i.config)!=null?t:I}const Ea=`var Xn = (r) => {
1193
1193
  throw TypeError(r);
1194
1194
  };
1195
1195
  var Hn = (r, t, e) => t.has(r) || Xn("Cannot " + e);
@@ -8248,7 +8248,7 @@ async function xu(r) {
8248
8248
  }
8249
8249
  }
8250
8250
  //# sourceMappingURL=webcodecs-mp4.worker-M2-SB0h_.js.map
8251
- `,LB=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",aa],{type:"text/javascript;charset=utf-8"});function ad(g){let A;try{if(A=LB&&(self.URL||self.webkitURL).createObjectURL(LB),!A)throw"";const t=new Worker(A,{type:"module",name:g==null?void 0:g.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(aa),{type:"module",name:g==null?void 0:g.name})}}var Qd=Object.defineProperty,rd=(g,A,t)=>A in g?Qd(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,$=(g,A,t)=>rd(g,typeof A!="symbol"?A+"":A,t);const od=28,Ed=8;class hd{constructor(A){$(this,"maxSize"),$(this,"map",new Map),$(this,"playbackHint",0),this.maxSize=Math.max(4,A)}setPlaybackHint(A){Number.isFinite(A)&&A>=0&&(this.playbackHint=A)}minKey(){let A;for(const t of this.map.keys())(A===void 0||t<A)&&(A=t);return A}set(A,t){this.map.set(A,t),this.evictDownToCapacity()}evictDownToCapacity(){const A=Math.max(4,Math.floor(this.maxSize*.35)),t=Math.max(4,this.maxSize-A-2);for(;this.map.size>this.maxSize;){const e=[...this.map.keys()].sort((C,a)=>C-a),i=this.playbackHint,I=e.filter(C=>C<i-A);if(I.length){this.closeKey(I[0]);continue}const s=e.filter(C=>C>i+t);if(s.length){this.closeKey(s[s.length-1]);continue}let n=e[0],B=0;for(const C of e){const a=Math.abs(C-i);a>=B&&(B=a,n=C)}this.closeKey(n)}}closeKey(A){const t=this.map.get(A);this.map.delete(A);try{t==null||t.close()}catch(e){}}bestAtOrBefore(A){let t=-1;for(const e of this.map.keys())e<=A&&e>t&&(t=e);return t<0?null:this.map.get(t)}frameForDisplay(A){const t=this.bestAtOrBefore(A);if(t)return t;const e=[...this.map.keys()].sort((I,s)=>I-s);if(e.length===0)return null;const i=e.find(I=>I>=A);return i!==void 0?this.map.get(i):this.map.get(e[e.length-1])}clear(){for(const A of this.map.values())try{A.close()}catch(t){}this.map.clear()}get size(){return this.map.size}}function JB(g,A,t){return new Promise((e,i)=>{const I=performance.now(),s=()=>{try{if(g()){e();return}if(performance.now()-I>A){i(new Error(`WebCodecs: timeout waiting for ${t}`));return}setTimeout(s,0)}catch(n){i(n instanceof Error?n:new Error(String(n)))}};setTimeout(s,0)})}let cd=1;class _A{constructor(A,t,e,i,I,s,n,B,C,a,Q){$(this,"duration"),$(this,"videoWidth"),$(this,"videoHeight"),$(this,"timesSec"),$(this,"worker"),$(this,"workerMsgId"),$(this,"streaming"),$(this,"ring"),$(this,"frames"),$(this,"maxDecodedFrames"),$(this,"decodeAheadFrames"),$(this,"lastWrapped",-1),$(this,"destroyed",!1),this.duration=A,this.videoWidth=t,this.videoHeight=e,this.timesSec=i,this.worker=I,this.workerMsgId=s,this.streaming=n,this.ring=B,this.frames=C,this.maxDecodedFrames=a,this.decodeAheadFrames=Q}static async create(A,t,e){var i,I;if(typeof VideoDecoder=="undefined")throw new Error("WebCodecs VideoDecoder not available");const s=(e==null?void 0:e.useWorker)!==!1,n=(i=e==null?void 0:e.maxDecodedFrames)!=null?i:od,B=(I=e==null?void 0:e.decodeAheadFrames)!=null?I:Ed;let C;if(typeof A=="string"?C=await ld(A,t):C=A,s&&typeof Worker!="undefined"){const a=C.slice(0);try{return await _A.createViaWorker(a,n,B)}catch(Q){console.warn("[GiftStage:WC] Worker decode failed, falling back to main thread",Q)}}return _A.createOnMainThread(C,n,B)}static async createViaWorker(A,t,e){const i=new ad,I=cd++,s=new hd(t);let n=0,B=0,C=0,a=new Float64Array(0),Q=!1,o=null;const r=d=>{const u=d.data;if(!(!u||u.id!==I)){if(u.type==="meta"){n=u.duration,B=u.videoWidth,C=u.videoHeight;const p=u.timesSec;a=Float64Array.from(p),Q=!0;return}if(u.type==="frame"){s.set(u.index,u.frame);return}u.type!=="eos"&&u.type==="error"&&(o=new Error(u.message))}},E=d=>{o=new Error(d.message||"Worker error")};i.addEventListener("message",r),i.addEventListener("error",E);const h=A;i.postMessage({type:"init",id:I,buffer:h,maxDecodedFrames:t,decodeAheadFrames:e},[h]);try{if(await JB(()=>Q||o!=null,6e4,"meta"),o)throw o;const d=n>0?n:1e-6,u=Hn(a,d,0);if(await JB(()=>o!=null||s.bestAtOrBefore(u)!=null,6e4,"first frame"),o)throw o}catch(d){throw i.removeEventListener("message",r),i.removeEventListener("error",E),i.terminate(),s.clear(),d instanceof Error?d:new Error(String(d))}const c=a.length>0?a[0]:0,f=a.length>0?a[a.length-1]:0;return console.info(`[GiftStage:WC] worker streaming ready frames=${a.length} duration=${n.toFixed(4)}s size=${B}x${C} times=[${c.toFixed(4)} … ${f.toFixed(4)}] ring=${t}`),new _A(n,B,C,a,i,I,!0,s,null,t,e)}static async createOnMainThread(A,t,e){console.info("[GiftStage:WC] mp4box demux (main thread)…");const i=await gd(A);if(i.samples.length===0)throw new Error("mp4box: no samples");const s=i.samples[0].description,n=s?id(s):void 0;console.info("[GiftStage:WC] VideoDecoder decode (main thread)…");const{frames:B,timesSec:C}=await nd(i.codec,n,i.samples,i.timescale),a=B[B.length-1],Q=Bd(i.durationSec,C,B),o=i.videoWidth||a.displayWidth||a.codedWidth||0,r=i.videoHeight||a.displayHeight||a.codedHeight||0,E=C.length>0?C[0]:0,h=C.length>0?C[C.length-1]:0;return console.info(`[GiftStage:WC] main decode ok frames=${B.length} duration=${Q.toFixed(4)}s size=${o}x${r} times=[${E.toFixed(4)} … ${h.toFixed(4)}]`),new _A(Q,o,r,C,null,0,!1,null,B,t,e)}ensureDecodedThrough(A){var t,e,i,I,s;if(this.destroyed||!this.streaming||!this.worker)return;const n=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(n))return;const B=(A%n+n)%n;if(this.lastWrapped>=0&&B<this.lastWrapped-.001&&this.lastWrapped>n*.1&&((t=this.ring)==null||t.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId})),this.lastWrapped=B,this.timesSec.length===0)return;const C=Hn(this.timesSec,n,B);(e=this.ring)==null||e.setPlaybackHint(C);const a=(i=this.ring)==null?void 0:i.minKey(),Q=Math.max(4,this.decodeAheadFrames);this.ring&&a!==void 0&&a>C+Q&&(this.ring.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId}));const o=Math.min(this.timesSec.length-1,Math.max(0,C+Math.max(0,this.decodeAheadFrames))),r=Math.max(0,this.maxDecodedFrames-((s=(I=this.ring)==null?void 0:I.size)!=null?s:0));this.worker.postMessage({type:"ensure",id:this.workerMsgId,needIdx:o,freeSlots:r})}getFrameForTime(A){var t,e,i;if(this.timesSec.length===0)return null;const I=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(I))return console.warn("[GiftStage:WC] getFrameForTime bad input",{tSec:A,clip:I,frames:this.timesSec.length}),this.streaming&&this.ring?this.ring.frameForDisplay(0):(e=(t=this.frames)==null?void 0:t[0])!=null?e:null;const s=(A%I+I)%I,n=Hn(this.timesSec,I,s);if(this.streaming&&this.ring){this.ring.setPlaybackHint(n);const C=this.ring.frameForDisplay(n);return C||console.warn("[GiftStage:WC] getFrameForTime no frame in ring",{idx:n,wrapped:s,clip:I}),C}const B=(i=this.frames)==null?void 0:i[n];return B||console.warn("[GiftStage:WC] getFrameForTime missing frame at index",{idx:n,wrapped:s,clip:I}),B!=null?B:null}destroy(){var A;if(!this.destroyed){if(this.destroyed=!0,this.worker){try{this.worker.postMessage({type:"destroy",id:this.workerMsgId})}catch(t){}try{this.worker.terminate()}catch(t){}}if((A=this.ring)==null||A.clear(),this.frames){for(const t of this.frames)try{t==null||t.close()}catch(e){}this.frames.length=0}}}}async function ld(g,A){return Rs(g,A)}function HB(g,A,t,e,i){const I=Math.max(1,Math.floor(A)),s=Math.max(1,Math.floor(t)),n=Math.max(1,g.width*g.scale),B=Math.max(1,g.height*g.scale);let C;if(JA(g)==="contain"){let a,Q;if(e==="alphaVideo")a=I*.5,Q=s;else{if(!i)return C=Math.min(1,n/I,B/s),vn(I,s,C);({w:a,h:Q}=OA(i.info))}if(!(a>0)||!(Q>0))return C=Math.min(1,n/I,B/s),vn(I,s,C);const o=Math.min(n/a,B/Q);C=Math.min(1,o)}else C=Math.min(1,n/I,B/s);return vn(I,s,C)}function vn(g,A,t){const e=Math.max(1,Math.min(g,Math.ceil(g*t))),i=Math.max(1,Math.min(A,Math.ceil(A*t)));return{w:e,h:i}}var dd=Object.defineProperty,fd=(g,A,t)=>A in g?dd(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,oA=(g,A,t)=>fd(g,typeof A!="symbol"?A+"":A,t);const Qn=9;function ud(g,A){if(typeof document=="undefined"||typeof document.createElement!="function")throw new Error("VAP mixed rendering requires DOM canvas support");const t=document.createElement("canvas");return t.width=Math.max(1,Math.round(g)),t.height=Math.max(1,Math.round(A)),t}function rn(g,A,t,e,i,I){return[g/i,(g+t)/i,(I-A-e)/I,(I-A)/I]}function vB(g,A,t){const e=g.createShader(A);if(!e)throw new Error("Failed to create VAP mix shader");if(g.shaderSource(e,t),g.compileShader(e),!g.getShaderParameter(e,g.COMPILE_STATUS)){const i=g.getShaderInfoLog(e)||"unknown shader compile error";throw g.deleteShader(e),new Error(`Failed to compile VAP mix shader: ${i}`)}return e}function wd(g,A,t){const e=vB(g,g.VERTEX_SHADER,A),i=vB(g,g.FRAGMENT_SHADER,t),I=g.createProgram();if(!I)throw g.deleteShader(e),g.deleteShader(i),new Error("Failed to create VAP mix program");if(g.attachShader(I,e),g.attachShader(I,i),g.linkProgram(I),!g.getProgramParameter(I,g.LINK_STATUS)){const s=g.getProgramInfoLog(I)||"unknown program link error";throw g.deleteProgram(I),g.deleteShader(e),g.deleteShader(i),new Error(`Failed to link VAP mix program: ${s}`)}return g.useProgram(I),{program:I,vertexShader:e,fragmentShader:i}}function KB(g,A,t,e=!1){const i=g.createTexture();if(!i)throw new Error("Failed to create VAP mix texture");return g.activeTexture(g.TEXTURE0+A),g.bindTexture(g.TEXTURE_2D,i),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.LINEAR),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.LINEAR),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),t?(g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,e?1:0),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,t),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0)):g.texImage2D(g.TEXTURE_2D,0,g.RGBA,1,1,0,g.RGBA,g.UNSIGNED_BYTE,null),i}function Dd(g){const[A,t,e,i]=g.rgbFrame,[I,s,n,B]=g.aFrame,C=rn(A,t,e,i,g.videoW,g.videoH),a=rn(I,s,n,B,g.videoW,g.videoH);return new Float32Array([-1,1,C[0],C[3],a[0],a[3],1,1,C[1],C[3],a[1],a[3],-1,-1,C[0],C[2],a[0],a[2],1,-1,C[1],C[2],a[1],a[2]])}function pd(g){const A=g*Qn,t=[],e=[];for(let i=0;i<g;i++)t.push(`uniform sampler2D u_image${i+1};`),e.push(`if (ndx == ${i+1}) { color = texture2D(u_image${i+1}, uv); }`);return`
8251
+ `,KB=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",Ea],{type:"text/javascript;charset=utf-8"});function cd(g){let A;try{if(A=KB&&(self.URL||self.webkitURL).createObjectURL(KB),!A)throw"";const t=new Worker(A,{type:"module",name:g==null?void 0:g.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Ea),{type:"module",name:g==null?void 0:g.name})}}var ld=Object.defineProperty,dd=(g,A,t)=>A in g?ld(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,AA=(g,A,t)=>dd(g,typeof A!="symbol"?A+"":A,t);const fd=28,ud=8;class wd{constructor(A){AA(this,"maxSize"),AA(this,"map",new Map),AA(this,"playbackHint",0),this.maxSize=Math.max(4,A)}setPlaybackHint(A){Number.isFinite(A)&&A>=0&&(this.playbackHint=A)}minKey(){let A;for(const t of this.map.keys())(A===void 0||t<A)&&(A=t);return A}set(A,t){this.map.set(A,t),this.evictDownToCapacity()}evictDownToCapacity(){const A=Math.max(4,Math.floor(this.maxSize*.35)),t=Math.max(4,this.maxSize-A-2);for(;this.map.size>this.maxSize;){const e=[...this.map.keys()].sort((C,a)=>C-a),i=this.playbackHint,I=e.filter(C=>C<i-A);if(I.length){this.closeKey(I[0]);continue}const s=e.filter(C=>C>i+t);if(s.length){this.closeKey(s[s.length-1]);continue}let n=e[0],B=0;for(const C of e){const a=Math.abs(C-i);a>=B&&(B=a,n=C)}this.closeKey(n)}}closeKey(A){const t=this.map.get(A);this.map.delete(A);try{t==null||t.close()}catch(e){}}bestAtOrBefore(A){let t=-1;for(const e of this.map.keys())e<=A&&e>t&&(t=e);return t<0?null:this.map.get(t)}frameForDisplay(A){const t=this.bestAtOrBefore(A);if(t)return t;const e=[...this.map.keys()].sort((I,s)=>I-s);if(e.length===0)return null;const i=e.find(I=>I>=A);return i!==void 0?this.map.get(i):this.map.get(e[e.length-1])}clear(){for(const A of this.map.values())try{A.close()}catch(t){}this.map.clear()}get size(){return this.map.size}}function TB(g,A,t){return new Promise((e,i)=>{const I=performance.now(),s=()=>{try{if(g()){e();return}if(performance.now()-I>A){i(new Error(`WebCodecs: timeout waiting for ${t}`));return}setTimeout(s,0)}catch(n){i(n instanceof Error?n:new Error(String(n)))}};setTimeout(s,0)})}let Dd=1;class _A{constructor(A,t,e,i,I,s,n,B,C,a,Q){AA(this,"duration"),AA(this,"videoWidth"),AA(this,"videoHeight"),AA(this,"timesSec"),AA(this,"worker"),AA(this,"workerMsgId"),AA(this,"streaming"),AA(this,"ring"),AA(this,"frames"),AA(this,"maxDecodedFrames"),AA(this,"decodeAheadFrames"),AA(this,"lastWrapped",-1),AA(this,"destroyed",!1),this.duration=A,this.videoWidth=t,this.videoHeight=e,this.timesSec=i,this.worker=I,this.workerMsgId=s,this.streaming=n,this.ring=B,this.frames=C,this.maxDecodedFrames=a,this.decodeAheadFrames=Q}static async create(A,t,e){var i,I;if(typeof VideoDecoder=="undefined")throw new Error("WebCodecs VideoDecoder not available");const s=(e==null?void 0:e.useWorker)!==!1,n=(i=e==null?void 0:e.maxDecodedFrames)!=null?i:fd,B=(I=e==null?void 0:e.decodeAheadFrames)!=null?I:ud;let C;if(typeof A=="string"?C=await pd(A,t):C=A,s&&typeof Worker!="undefined"){const a=C.slice(0);try{return await _A.createViaWorker(a,n,B)}catch(Q){console.warn("[GiftStage:WC] Worker decode failed, falling back to main thread",Q)}}return _A.createOnMainThread(C,n,B)}static async createViaWorker(A,t,e){const i=new cd,I=Dd++,s=new wd(t);let n=0,B=0,C=0,a=new Float64Array(0),Q=!1,o=null;const r=d=>{const u=d.data;if(!(!u||u.id!==I)){if(u.type==="meta"){n=u.duration,B=u.videoWidth,C=u.videoHeight;const p=u.timesSec;a=Float64Array.from(p),Q=!0;return}if(u.type==="frame"){s.set(u.index,u.frame);return}u.type!=="eos"&&u.type==="error"&&(o=new Error(u.message))}},E=d=>{o=new Error(d.message||"Worker error")};i.addEventListener("message",r),i.addEventListener("error",E);const h=A;i.postMessage({type:"init",id:I,buffer:h,maxDecodedFrames:t,decodeAheadFrames:e},[h]);try{if(await TB(()=>Q||o!=null,6e4,"meta"),o)throw o;const d=n>0?n:1e-6,u=vn(a,d,0);if(await TB(()=>o!=null||s.bestAtOrBefore(u)!=null,6e4,"first frame"),o)throw o}catch(d){throw i.removeEventListener("message",r),i.removeEventListener("error",E),i.terminate(),s.clear(),d instanceof Error?d:new Error(String(d))}const c=a.length>0?a[0]:0,f=a.length>0?a[a.length-1]:0;return console.info(`[GiftStage:WC] worker streaming ready frames=${a.length} duration=${n.toFixed(4)}s size=${B}x${C} times=[${c.toFixed(4)} … ${f.toFixed(4)}] ring=${t}`),new _A(n,B,C,a,i,I,!0,s,null,t,e)}static async createOnMainThread(A,t,e){console.info("[GiftStage:WC] mp4box demux (main thread)…");const i=await ad(A);if(i.samples.length===0)throw new Error("mp4box: no samples");const s=i.samples[0].description,n=s?Cd(s):void 0;console.info("[GiftStage:WC] VideoDecoder decode (main thread)…");const{frames:B,timesSec:C}=await od(i.codec,n,i.samples,i.timescale),a=B[B.length-1],Q=Ed(i.durationSec,C,B),o=i.videoWidth||a.displayWidth||a.codedWidth||0,r=i.videoHeight||a.displayHeight||a.codedHeight||0,E=C.length>0?C[0]:0,h=C.length>0?C[C.length-1]:0;return console.info(`[GiftStage:WC] main decode ok frames=${B.length} duration=${Q.toFixed(4)}s size=${o}x${r} times=[${E.toFixed(4)} … ${h.toFixed(4)}]`),new _A(Q,o,r,C,null,0,!1,null,B,t,e)}ensureDecodedThrough(A){var t,e,i,I,s;if(this.destroyed||!this.streaming||!this.worker)return;const n=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(n))return;const B=(A%n+n)%n;if(this.lastWrapped>=0&&B<this.lastWrapped-.001&&this.lastWrapped>n*.1&&((t=this.ring)==null||t.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId})),this.lastWrapped=B,this.timesSec.length===0)return;const C=vn(this.timesSec,n,B);(e=this.ring)==null||e.setPlaybackHint(C);const a=(i=this.ring)==null?void 0:i.minKey(),Q=Math.max(4,this.decodeAheadFrames);this.ring&&a!==void 0&&a>C+Q&&(this.ring.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId}));const o=Math.min(this.timesSec.length-1,Math.max(0,C+Math.max(0,this.decodeAheadFrames))),r=Math.max(0,this.maxDecodedFrames-((s=(I=this.ring)==null?void 0:I.size)!=null?s:0));this.worker.postMessage({type:"ensure",id:this.workerMsgId,needIdx:o,freeSlots:r})}getFrameForTime(A){var t,e,i;if(this.timesSec.length===0)return null;const I=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(I))return console.warn("[GiftStage:WC] getFrameForTime bad input",{tSec:A,clip:I,frames:this.timesSec.length}),this.streaming&&this.ring?this.ring.frameForDisplay(0):(e=(t=this.frames)==null?void 0:t[0])!=null?e:null;const s=(A%I+I)%I,n=vn(this.timesSec,I,s);if(this.streaming&&this.ring){this.ring.setPlaybackHint(n);const C=this.ring.frameForDisplay(n);return C||console.warn("[GiftStage:WC] getFrameForTime no frame in ring",{idx:n,wrapped:s,clip:I}),C}const B=(i=this.frames)==null?void 0:i[n];return B||console.warn("[GiftStage:WC] getFrameForTime missing frame at index",{idx:n,wrapped:s,clip:I}),B!=null?B:null}destroy(){var A;if(!this.destroyed){if(this.destroyed=!0,this.worker){try{this.worker.postMessage({type:"destroy",id:this.workerMsgId})}catch(t){}try{this.worker.terminate()}catch(t){}}if((A=this.ring)==null||A.clear(),this.frames){for(const t of this.frames)try{t==null||t.close()}catch(e){}this.frames.length=0}}}}async function pd(g,A){return Rs(g,A)}function qB(g,A,t,e,i){const I=Math.max(1,Math.floor(A)),s=Math.max(1,Math.floor(t)),n=Math.max(1,g.width*g.scale),B=Math.max(1,g.height*g.scale);let C;if(JA(g)==="contain"){let a,Q;if(e==="alphaVideo")a=I*.5,Q=s;else{if(!i)return C=Math.min(1,n/I,B/s),Kn(I,s,C);({w:a,h:Q}=OA(i.info))}if(!(a>0)||!(Q>0))return C=Math.min(1,n/I,B/s),Kn(I,s,C);const o=Math.min(n/a,B/Q);C=Math.min(1,o)}else C=Math.min(1,n/I,B/s);return Kn(I,s,C)}function Kn(g,A,t){const e=Math.max(1,Math.min(g,Math.ceil(g*t))),i=Math.max(1,Math.min(A,Math.ceil(A*t)));return{w:e,h:i}}var yd=Object.defineProperty,md=(g,A,t)=>A in g?yd(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,oA=(g,A,t)=>md(g,typeof A!="symbol"?A+"":A,t);const rn=9;function Gd(g,A){if(typeof document=="undefined"||typeof document.createElement!="function")throw new Error("VAP mixed rendering requires DOM canvas support");const t=document.createElement("canvas");return t.width=Math.max(1,Math.round(g)),t.height=Math.max(1,Math.round(A)),t}function on(g,A,t,e,i,I){return[g/i,(g+t)/i,(I-A-e)/I,(I-A)/I]}function ZB(g,A,t){const e=g.createShader(A);if(!e)throw new Error("Failed to create VAP mix shader");if(g.shaderSource(e,t),g.compileShader(e),!g.getShaderParameter(e,g.COMPILE_STATUS)){const i=g.getShaderInfoLog(e)||"unknown shader compile error";throw g.deleteShader(e),new Error(`Failed to compile VAP mix shader: ${i}`)}return e}function Sd(g,A,t){const e=ZB(g,g.VERTEX_SHADER,A),i=ZB(g,g.FRAGMENT_SHADER,t),I=g.createProgram();if(!I)throw g.deleteShader(e),g.deleteShader(i),new Error("Failed to create VAP mix program");if(g.attachShader(I,e),g.attachShader(I,i),g.linkProgram(I),!g.getProgramParameter(I,g.LINK_STATUS)){const s=g.getProgramInfoLog(I)||"unknown program link error";throw g.deleteProgram(I),g.deleteShader(e),g.deleteShader(i),new Error(`Failed to link VAP mix program: ${s}`)}return g.useProgram(I),{program:I,vertexShader:e,fragmentShader:i}}function VB(g,A,t,e=!1){const i=g.createTexture();if(!i)throw new Error("Failed to create VAP mix texture");return g.activeTexture(g.TEXTURE0+A),g.bindTexture(g.TEXTURE_2D,i),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MIN_FILTER,g.LINEAR),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_MAG_FILTER,g.LINEAR),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_S,g.CLAMP_TO_EDGE),g.texParameteri(g.TEXTURE_2D,g.TEXTURE_WRAP_T,g.CLAMP_TO_EDGE),t?(g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,e?1:0),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,t),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0)):g.texImage2D(g.TEXTURE_2D,0,g.RGBA,1,1,0,g.RGBA,g.UNSIGNED_BYTE,null),i}function Fd(g){const[A,t,e,i]=g.rgbFrame,[I,s,n,B]=g.aFrame,C=on(A,t,e,i,g.videoW,g.videoH),a=on(I,s,n,B,g.videoW,g.videoH);return new Float32Array([-1,1,C[0],C[3],a[0],a[3],1,1,C[1],C[3],a[1],a[3],-1,-1,C[0],C[2],a[0],a[2],1,-1,C[1],C[2],a[1],a[2]])}function Nd(g){const A=g*rn,t=[],e=[];for(let i=0;i<g;i++)t.push(`uniform sampler2D u_image${i+1};`),e.push(`if (ndx == ${i+1}) { color = texture2D(u_image${i+1}, uv); }`);return`
8252
8252
  precision lowp float;
8253
8253
  varying vec2 v_texcoord;
8254
8254
  varying vec2 v_alpha_texCoord;
@@ -8282,7 +8282,7 @@ async function xu(r) {
8282
8282
  float my1;
8283
8283
  float my2;
8284
8284
 
8285
- for (int i = 0; i < ${A}; i += ${Qn}) {
8285
+ for (int i = 0; i < ${A}; i += ${rn}) {
8286
8286
  if (int(image_pos[i]) > 0) {
8287
8287
  srcIndex = int(image_pos[i]);
8288
8288
  x1 = image_pos[i + 1];
@@ -8307,7 +8307,7 @@ async function xu(r) {
8307
8307
 
8308
8308
  gl_FragColor = bgColor;
8309
8309
  }
8310
- `}const yd=`
8310
+ `}const xd=`
8311
8311
  attribute vec2 a_position;
8312
8312
  attribute vec2 a_texCoord;
8313
8313
  attribute vec2 a_alpha_texCoord;
@@ -8319,5 +8319,5 @@ async function xu(r) {
8319
8319
  v_texcoord = a_texCoord;
8320
8320
  v_alpha_texCoord = a_alpha_texCoord;
8321
8321
  }
8322
- `;function md(g,A,t,e){const i=new Float32Array(t.size*Qn),I=A.get(e);if(!I||I.length===0)return i;const[s,n]=g.info.rgbFrame;let B=0;for(const C of I){const a=t.get(String(C.srcId));if(!a)continue;if(B+Qn>i.length)break;const[Q,o,r,E]=C.frame,[h,c,f,d]=C.mFrame,u=rn(Q+s,o+n,r,E,g.info.videoW,g.info.videoH),p=rn(h,c,f,d,g.info.videoW,g.info.videoH);i[B++]=a,i[B++]=u[0],i[B++]=u[1],i[B++]=u[2],i[B++]=u[3],i[B++]=p[0],i[B++]=p[1],i[B++]=p[2],i[B++]=p[3]}return i}class Gd{constructor(A,t,e,i,I){this.config=A,this.frameMap=t,oA(this,"canvas"),oA(this,"gl"),oA(this,"program"),oA(this,"vertexShader"),oA(this,"fragmentShader"),oA(this,"vertexBuffer"),oA(this,"videoTexture"),oA(this,"imagePosLoc"),oA(this,"resourceEntries"),oA(this,"textureUnitBySrcId",new Map);var s;if(e.size===0)throw new Error("VAP mix composer requires at least one slot resource");this.canvas=ud(i,I);const n=this.canvas.getContext("webgl2",{alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1})||this.canvas.getContext("webgl",{alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1})||this.canvas.getContext("experimental-webgl");if(!n)throw new Error("VAP mixed rendering requires WebGL support");this.gl=n;const B=Math.max(1,n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),C=Math.max(0,B-1),a=[];let Q=1;for(const u of(s=A.src)!=null?s:[]){const p=e.get(String(u.srcId));if(!p)continue;if(Q>C){console.warn("[GiftStage] VAP mixed resources exceed texture unit limit, skipping",{srcId:u.srcId,srcTag:u.srcTag,maxUnits:B});continue}const D=KB(n,Q,p.source,!0),y={srcId:String(u.srcId),unit:Q,texture:D};a.push(y),this.textureUnitBySrcId.set(y.srcId,y.unit),Q++}if(a.length===0)throw new Error("VAP mixed rendering could not bind any slot resources");this.resourceEntries=a;const o=wd(n,yd,pd(this.resourceEntries.length));this.program=o.program,this.vertexShader=o.vertexShader,this.fragmentShader=o.fragmentShader,this.imagePosLoc=n.getUniformLocation(this.program,"image_pos"),this.videoTexture=KB(n,0);const r=n.getUniformLocation(this.program,"u_image_video");r!==null&&n.uniform1i(r,0);for(const u of this.resourceEntries){const p=n.getUniformLocation(this.program,`u_image${u.unit}`);p!==null&&n.uniform1i(p,u.unit)}const E=n.createBuffer();if(!E)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=E,n.bindBuffer(n.ARRAY_BUFFER,this.vertexBuffer),n.bufferData(n.ARRAY_BUFFER,Dd(A.info),n.STATIC_DRAW);const h=6*Float32Array.BYTES_PER_ELEMENT,c=n.getAttribLocation(this.program,"a_position"),f=n.getAttribLocation(this.program,"a_texCoord"),d=n.getAttribLocation(this.program,"a_alpha_texCoord");n.enableVertexAttribArray(c),n.vertexAttribPointer(c,2,n.FLOAT,!1,h,0),n.enableVertexAttribArray(f),n.vertexAttribPointer(f,2,n.FLOAT,!1,h,2*Float32Array.BYTES_PER_ELEMENT),n.enableVertexAttribArray(d),n.vertexAttribPointer(d,2,n.FLOAT,!1,h,4*Float32Array.BYTES_PER_ELEMENT),n.viewport(0,0,this.canvas.width,this.canvas.height),n.disable(n.BLEND),n.disable(n.DEPTH_TEST),n.clearColor(0,0,0,0),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE)}render(A,t){const e=this.gl;e.useProgram(this.program),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.videoTexture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);const i=md(this.config,this.frameMap,this.textureUnitBySrcId,t);return this.imagePosLoc!==null&&e.uniform1fv(this.imagePosLoc,i),e.clear(e.COLOR_BUFFER_BIT),e.drawArrays(e.TRIANGLE_STRIP,0,4),this.canvas}destroy(){const A=this.gl;for(const e of this.resourceEntries)A.deleteTexture(e.texture);A.deleteTexture(this.videoTexture),A.deleteBuffer(this.vertexBuffer),A.deleteProgram(this.program),A.deleteShader(this.vertexShader),A.deleteShader(this.fragmentShader);const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}}var Sd=Object.defineProperty,Fd=(g,A,t)=>A in g?Sd(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,fA=(g,A,t)=>Fd(g,typeof A!="symbol"?A+"":A,t);const Qa=1397178947,ra=2,Nd=8;class Rd{constructor(A=1024){fA(this,"buffer"),fA(this,"view"),fA(this,"bytes"),fA(this,"offset",0),fA(this,"encoder",new TextEncoder),this.buffer=new ArrayBuffer(A),this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}ensure(A){const t=this.offset+A;if(t<=this.buffer.byteLength)return;let e=this.buffer.byteLength;for(;e<t;)e*=2;const i=new ArrayBuffer(e);new Uint8Array(i).set(this.bytes.subarray(0,this.offset)),this.buffer=i,this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}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}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}string(A){this.bytesValue(this.encoder.encode(A))}finish(){return this.buffer.slice(0,this.offset)}}class xd{constructor(A){fA(this,"view"),fA(this,"bytes"),fA(this,"offset",0),fA(this,"decoder",new TextDecoder),this.view=new DataView(A),this.bytes=new Uint8Array(A)}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}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),t=this.bytes.slice(this.offset,this.offset+A);return this.offset+=A,t}string(){return this.decoder.decode(this.bytesValue())}}function Ud(g){let A=g.atlasImageBytes.byteLength;for(const[t,e]of g.audioBlobs)A+=t.length*2+e.byteLength;for(const[t]of g.atlasRects)A+=t.length*2+16;for(const t of g.sprites){A+=t.imageKey.length*2+t.frames.length*64;for(const e of t.frames)A+=e.clipPath.length*2}return A}function TB(g){const A=new Uint8Array(g.byteLength);return A.set(g),A.buffer}function Md(g){const A=new Rd(Nd+g.atlasImageBytes.byteLength+g.sprites.length*64+g.audioBlobs.size*32+g.atlasRects.size*32);A.u32(Qa),A.u16(ra),A.u16(0),A.f32(g.params.viewBoxWidth),A.f32(g.params.viewBoxHeight),A.f32(g.params.fps),A.u32(g.params.frames),A.u32(g.atlasWidth),A.u32(g.atlasHeight),A.bytesValue(new Uint8Array(g.atlasImageBytes)),A.u32(g.atlasRects.size);for(const[t,e]of g.atlasRects)A.string(t),A.f32(e.x),A.f32(e.y),A.f32(e.w),A.f32(e.h);A.u32(g.audios.length);for(const t of g.audios)A.string(t.audioKey),A.u32(t.startFrame),A.u32(t.endFrame),A.f32(t.startTime),A.f32(t.totalTime);A.u32(g.audioBlobs.size);for(const[t,e]of g.audioBlobs)A.string(t),A.bytesValue(new Uint8Array(e));A.u32(g.sprites.length);for(const t of g.sprites){A.string(t.imageKey),A.u32(t.frames.length);for(const e of t.frames){let i=0;e.layout&&(i|=1),e.transform&&(i|=2),e.clipPath&&(i|=4),A.u8(i),A.f32(e.alpha),e.layout&&(A.f32(e.layout.x),A.f32(e.layout.y),A.f32(e.layout.width),A.f32(e.layout.height)),e.transform&&(A.f32(e.transform.a),A.f32(e.transform.b),A.f32(e.transform.c),A.f32(e.transform.d),A.f32(e.transform.tx),A.f32(e.transform.ty)),e.clipPath&&A.string(e.clipPath)}}return A.finish()}function bd(g){const A=new xd(g);if(A.u32()!==Qa)throw new Error("Invalid SVGA cache binary magic");if(A.u16()!==ra)throw new Error("Unsupported SVGA cache binary version");A.u16();const t={viewBoxWidth:A.f32(),viewBoxHeight:A.f32(),fps:A.f32(),frames:A.u32()},e=A.u32(),i=A.u32(),I=TB(A.bytesValue()),s=A.u32(),n=new Map;for(let E=0;E<s;E++){const h=A.string();n.set(h,{x:A.f32(),y:A.f32(),w:A.f32(),h:A.f32()})}const B=A.u32(),C=[];for(let E=0;E<B;E++)C.push({audioKey:A.string(),startFrame:A.u32(),endFrame:A.u32(),startTime:A.f32(),totalTime:A.f32()});const a=A.u32(),Q=new Map;for(let E=0;E<a;E++){const h=A.string();Q.set(h,TB(A.bytesValue()))}const o=A.u32(),r=[];for(let E=0;E<o;E++){const h=A.string(),c=A.u32(),f=[];for(let d=0;d<c;d++){const u=A.u8(),p=A.f32(),D=u&1?{x:A.f32(),y:A.f32(),width:A.f32(),height:A.f32()}:null,y=u&2?{a:A.f32(),b:A.f32(),c:A.f32(),d:A.f32(),tx:A.f32(),ty:A.f32()}:null,S=u&4?A.string():"";f.push({alpha:p,layout:D,transform:y,clipPath:S})}r.push({imageKey:h,frames:f})}return{params:t,sprites:r,audios:C,audioBlobs:Q,atlasRects:n,atlasWidth:e,atlasHeight:i,atlasImageBytes:I}}function eB(g){return`svga-asset:${g}`}function iB(g){return`svga-asset-bin:${g}`}async function kd(g){const A=JQ(eB(g),"svga-asset");if(A)return A;const t=await HQ(iB(g));if(!t)return null;try{const e=bd(t);return IC(eB(g),"svga-asset",e,t.byteLength),e}catch(e){return KQ(iB(g)),null}}async function qB(g,A){const t=Md(A);IC(eB(g),"svga-asset",A,Math.max(t.byteLength,Ud(A))),await vQ(iB(g),t)}function NA(g){return typeof g=="number"&&Number.isFinite(g)&&g>0}function Yd(g,A){const t=NA(g)?g*.5:0,e=NA(A)?A:0;return{width:t,height:e}}function _d(g,A,t,e){const i=NA(A.width)?A.width:void 0,I=NA(A.height)?A.height:void 0,s=NA(g.width)?g.width:void 0,n=NA(g.height)?g.height:void 0,B=g.useOriginalSize===!0;if(s&&n)return{width:s,height:n};if(s)return i&&I?{width:s,height:s*I/i}:{width:s,height:s};if(n)return i&&I?{width:n*i/I,height:n}:{width:n,height:n};let C=i!=null?i:0,a=I!=null?I:0;if(C>0&&a>0&&NA(t)&&NA(e)&&(!B||C>t||a>e)){const Q=Math.min(t/C,e/a);C*=Q,a*=Q}return{width:C,height:a}}var Ld=Object.defineProperty,Jd=(g,A,t)=>A in g?Ld(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,j=(g,A,t)=>Jd(g,typeof A!="symbol"?A+"":A,t);const hn=class In{constructor(A){j(this,"sharedSVGAEntities",new Map),j(this,"pendingSharedSVGAEntities",new Map),j(this,"sharedVideoSources",new Map),j(this,"sharedHtmlVideos",new Map),j(this,"sharedVideoTextures",new Map),j(this,"pendingSharedHtmlVideos",new Map),j(this,"canvas"),j(this,"backend",null),j(this,"manager",null),j(this,"options"),j(this,"ready"),j(this,"destroyed",!1),j(this,"resizeObserver",null),j(this,"nextRenderOrder",0),j(this,"onWindowLayout",()=>{this.destroyed||this.syncCanvasSize()}),this.options=A,this.canvas=document.createElement("canvas"),this.canvas.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:9999;",A.container.appendChild(this.canvas),this.ready=this.init()}backingStoreDpr(){const A=this.options.resolution;return A!=null&&A>0&&Number.isFinite(A)?A:typeof window!="undefined"&&window.devicePixelRatio>0?window.devicePixelRatio:1}syncCanvasSize(){var A;Pa(this.canvas,this.backingStoreDpr()),(A=this.manager)==null||A.syncSlotLayoutFromOptions()}resourcePipelineConcurrency(){if(this.options.maxConcurrentParse!=null)return Math.max(1,Math.max(4,this.options.maxConcurrentParse));const A=typeof navigator!="undefined"&&typeof navigator.hardwareConcurrency=="number"?navigator.hardwareConcurrency/2:4;return Math.max(1,Math.max(4,A))}async init(){var A;this.syncCanvasSize(),await new Promise(I=>requestAnimationFrame(()=>I())),this.syncCanvasSize(),_Q({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:In.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:In.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES});const t=(A=this.options.preferWebGPU)!=null?A:!0,e=this.options.antialias,[i]=await Promise.all([zB(this.canvas,t,e,this.options.forceWebGL1===!0),tC()]);this.backend=i,this.manager=new hC(this.backend),this.resizeObserver=new ResizeObserver(()=>{this.destroyed||this.syncCanvasSize()}),this.resizeObserver.observe(this.canvas),window.addEventListener("resize",this.onWindowLayout),window.addEventListener("orientationchange",this.onWindowLayout)}currentCanvasCssSize(){const A=this.canvas.clientWidth||this.options.container.clientWidth||window.innerWidth||0,t=this.canvas.clientHeight||this.options.container.clientHeight||window.innerHeight||0;return{width:A,height:t}}async resolveGiftIntrinsicSize(A){switch(A.type){case"svga":{const t=await zr(A.source,{useWorker:this.options.svgaParseInWorker!==!1});return{width:t.viewBoxWidth,height:t.viewBoxHeight}}case"vap":{if(!A.config)throw new Error("VAP requires config");const t=await Wn(A.config),e=OA(t.info);return{width:e.w,height:e.h}}case"alphaVideo":return this.probeVideoNaturalSize(A.source,"alphaVideo")}}async normalizeAddGiftOptions(A){if(A.width!=null&&A.height!=null)return A;const t=await this.resolveGiftIntrinsicSize(A),e=this.currentCanvasCssSize(),i=_d({width:A.width,height:A.height,useOriginalSize:A.useOriginalSize},t,e.width,e.height);return{...A,width:i.width,height:i.height}}async addGift(A){var t,e,i,I;if(console.info("[GiftStage] addGift await ready…",A.type),await this.ready,console.info("[GiftStage] addGift ready, loading…",A.type),this.destroyed)throw new Error("GiftStage is destroyed");const s=await this.normalizeAddGiftOptions(A),n=iC(),{sx:B,sy:C}=fs(this.canvas),a=EC(s.x,s.y,s.width,s.height,this.canvas.clientWidth,this.canvas.clientHeight),Q={id:n,type:s.type,state:"loading",options:s,zIndex:(t=s.zIndex)!=null?t:0,renderOrder:this.nextRenderOrder++,x:a.x*B,y:a.y*C,width:s.width*B,height:s.height*C,scale:1,paused:!1,currentFrame:0,accumulatedTime:0,lastTickTime:0,loopCount:0,videoEntity:null,svgaSlotTextures:void 0,videoElement:null,releaseMediaSource:null,releaseSharedSVGAAsset:null,releaseSharedVideoPlayback:null,releaseSharedVideoTexture:null,webcodecsPlayback:null,wcPlaybackTime:0,videoTextureHandle:null,vapMixState:null,onComplete:s.onComplete,flyTo:s.flyTo,scaleTo:s.scaleTo,flyDuration:s.flyDuration,easing:(e=s.easing)!=null?e:xs,onFlyComplete:s.onFlyComplete},o={id:n,type:s.type,pause:()=>{Q.paused=!0},resume:()=>{Q.paused=!1},destroy:()=>{this.removeGift(n)}};this.manager.addSlot(Q,o);try{switch(s.type){case"svga":await this.loadSVGA(Q);break;case"vap":await this.loadVAP(Q,s);break;case"alphaVideo":await this.loadAlphaVideo(Q,s);break}Q.state="playing",Q.webcodecsPlayback&&console.info("[GiftStage:WC] gift playing",{giftId:Q.id,type:Q.type,layoutBufPx:{x:Q.x,y:Q.y,w:Q.width,h:Q.height}})}catch(r){Q.state="finished",(I=(i=this.options).onError)==null||I.call(i,r instanceof Error?r:new Error(String(r)))}return o}async loadSVGA(A){const t=typeof A.options.source=="string"?A.options.source:null;if(t){const B=await this.acquireSharedSVGAEntity(t);if(A.state==="finished"){B.release();return}A.releaseSharedSVGAAsset=B.release,await this.finishLoadSVGA(A,B.entity,B.audioBlobs);return}const{movie:e,imageBitmaps:i,audioBlobs:I}=await jn(A.options.source,{useWorker:this.options.svgaParseInWorker!==!1});if(A.state==="finished")return;const s=await Xn(i,this.backend,4096,2,{captureEncodedPng:!!t});if(A.state==="finished"){for(const B of i.values())B.close();return}const n={params:e.params,sprites:e.sprites,audios:e.audios,atlasTextureHandle:s.textureHandle,atlasRects:s.rects,audioBuffers:new Map};await this.finishLoadSVGA(A,n,I),t&&s.encodedPngBytesPromise&&s.encodedPngBytesPromise.then(B=>{B&&qB(t,{params:e.params,sprites:e.sprites,audios:e.audios,audioBlobs:I,atlasRects:s.rects,atlasWidth:s.atlasWidth,atlasHeight:s.atlasHeight,atlasImageBytes:B})});for(const B of i.values())B.close()}async acquireSharedSVGAEntity(A){const t=A,e=this.sharedSVGAEntities.get(t);if(e)return e.refs++,{entity:e.entity,audioBlobs:e.audioBlobs,release:()=>this.releaseSharedSVGAEntity(t)};let i=this.pendingSharedSVGAEntities.get(t);i||(i=this.buildSharedSVGAEntity(A),this.pendingSharedSVGAEntities.set(t,i));let I;try{I=await i}catch(n){throw this.pendingSharedSVGAEntities.delete(t),n}let s=this.sharedSVGAEntities.get(t);return s?s.refs++:(s={refs:1,entity:I.entity,audioBlobs:I.audioBlobs},this.sharedSVGAEntities.set(t,s)),this.pendingSharedSVGAEntities.delete(t),{entity:s.entity,audioBlobs:s.audioBlobs,release:()=>this.releaseSharedSVGAEntity(t)}}async buildSharedSVGAEntity(A){const t=await kd(A);if(t){const s=await createImageBitmap(new Blob([t.atlasImageBytes],{type:"image/png"}),{premultiplyAlpha:"none"}),n=this.backend.createTexture(s,{width:t.atlasWidth,height:t.atlasHeight,filter:"linear"});return s.close(),{entity:{params:t.params,sprites:t.sprites,audios:t.audios,atlasTextureHandle:n,atlasRects:t.atlasRects,audioBuffers:new Map},audioBlobs:t.audioBlobs}}const{movie:e,imageBitmaps:i,audioBlobs:I}=await jn(A,{useWorker:this.options.svgaParseInWorker!==!1});try{const s=await Xn(i,this.backend,4096,2,{captureEncodedPng:!0});return s.encodedPngBytesPromise&&s.encodedPngBytesPromise.then(n=>{n&&qB(A,{params:e.params,sprites:e.sprites,audios:e.audios,audioBlobs:I,atlasRects:s.rects,atlasWidth:s.atlasWidth,atlasHeight:s.atlasHeight,atlasImageBytes:n})}),{entity:{params:e.params,sprites:e.sprites,audios:e.audios,atlasTextureHandle:s.textureHandle,atlasRects:s.rects,audioBuffers:new Map},audioBlobs:I}}finally{for(const s of i.values())s.close()}}releaseSharedSVGAEntity(A){var t;const e=this.sharedSVGAEntities.get(A);e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0)&&(e.entity.atlasTextureHandle&&((t=this.backend)==null||t.deleteTexture(e.entity.atlasTextureHandle)),this.sharedSVGAEntities.delete(A)))}async finishLoadSVGA(A,t,e){let i=0;for(const[I,s]of e)await this.manager.audioManager.decodeAudio(I,s),i++,i<e.size&&await new Promise(n=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>n());return}setTimeout(n,0)});A.videoEntity=t,A.options.svgaSlots&&(A.svgaSlotTextures=await PQ(this.backend,A.videoEntity,A.options.svgaSlots))}shouldTryWebCodecs(){return this.options.preferWebCodecs===!0&&typeof VideoDecoder!="undefined"}logPlaybackBackend(A,t,e){const i=t==="webcodecs"?"WebCodecs (mp4box decode)":"HTMLVideoElement",I=e?` — ${e}`:"";console.info(`[GiftStage] ${A.type} [${A.id}]: ${i}${I}`)}async tryWebCodecsPlayback(A){if(!this.shouldTryWebCodecs())return null;try{const t=typeof A=="string"?await Rs(A):A;return await _A.create(t,void 0,{useWorker:this.options.webCodecsDecodeInWorker!==!1,maxDecodedFrames:this.options.webCodecsMaxDecodedFrames,decodeAheadFrames:this.options.webCodecsDecodeAheadFrames})}catch(t){const e=t instanceof Error?t.message:String(t);return console.warn(`[GiftStage] WebCodecs path failed, falling back to <video>: ${e}`),null}}async loadVAP(A,t){var e;if(!t.config)throw new Error("VAP requires config");const i=await Wn(t.config);A.vapConfig=i;const I=await er(i,t.vapSlots);if(I.size>0){const a=OA(i.info),Q=ir(i);let o=null,r=null;try{o=new Gd(i,Q,I,a.w,a.h)}catch(E){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",E),r=gr(a.w,a.h)}A.vapMixState={texture:this.backend.createEmptyTexture(a.w,a.h,{filter:"linear"}),width:a.w,height:a.h,composer:o,frameMap:Q,resources:I,lastFrameIndex:-1,lastSourceRef:null,...r!=null?r:{}},A.videoTextureHandle=A.vapMixState.texture}console.info("[GiftStage:WC] loadVAP: try WebCodecs / video…");const n=await this.tryWebCodecsPlayback(t.source);if(n){A.webcodecsPlayback=n,A.wcPlaybackTime=0;const a=n.getFrameForTime(0);if(!a)throw n.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");if(!A.vapMixState){const o=a.displayWidth||a.codedWidth,r=a.displayHeight||a.codedHeight,{w:E,h}=HB(A,o,r,"vap",i),c=this.manager.tryAllocateWebCodecsAtlas(A.id,E,h,this.options.webCodecsVideoAtlas);if(c)A.videoTextureHandle=c.handle,A.wcAtlasRect=c.rect,this.backend.updateTextureRegion(c.handle,a,c.rect.x,c.rect.y,E,h);else{const f=this.backend.createTexture(a,{width:o,height:r,filter:"linear"});A.videoTextureHandle=f}}A.videoElement=null;const Q=A.videoTextureHandle;console.info("[GiftStage:WC] VAP texture",{giftId:A.id,atlas:!!A.wcAtlasRect&&!A.vapMixState,mixed:!!A.vapMixState,tex:`${Q.width}x${Q.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 B=await this.tryAcquireSharedHtmlVideo(A,t);if(B)A.videoElement=B.video,A.releaseSharedVideoPlayback=B.release;else{const a=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=a.release)!=null?e:null;const Q=this.createVideo(a.src,t.loop===0);A.videoElement=Q}const C=A.videoElement;if(B){await B.ready;const a=this.acquireSharedVideoTexture(B.cacheKey,C);A.videoTextureHandle=a.texture,A.releaseSharedVideoTexture=a.release}else await this.waitVideoReady(C),A.vapMixState||(A.videoTextureHandle=this.backend.createTexture(C,{width:C.videoWidth,height:C.videoHeight,filter:"linear"}));A.releaseSharedVideoPlayback||this.bindVideoLoopOnEnded(A,C),this.logPlaybackBackend(A,"video",this.shouldTryWebCodecs()?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}async loadAlphaVideo(A,t){var e;console.info("[GiftStage:WC] loadAlphaVideo: try WebCodecs / video…");const i=await this.tryWebCodecsPlayback(t.source);if(i){A.webcodecsPlayback=i,A.wcPlaybackTime=0;const n=i.getFrameForTime(0);if(!n)throw i.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");const B=n.displayWidth||n.codedWidth,C=n.displayHeight||n.codedHeight,{w:a,h:Q}=HB(A,B,C,"alphaVideo",void 0),o=this.manager.tryAllocateWebCodecsAtlas(A.id,a,Q,this.options.webCodecsVideoAtlas);if(o)A.videoTextureHandle=o.handle,A.wcAtlasRect=o.rect,this.backend.updateTextureRegion(o.handle,n,o.rect.x,o.rect.y,a,Q);else{const E=this.backend.createTexture(n,{width:B,height:C,filter:"linear"});A.videoTextureHandle=E}A.videoElement=null;const r=A.videoTextureHandle;console.info("[GiftStage:WC] alphaVideo texture",{giftId:A.id,atlas:!!A.wcAtlasRect,tex:`${r.width}x${r.height}`,frame0:`${n.displayWidth}x${n.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const I=await this.tryAcquireSharedHtmlVideo(A,t);if(I)A.videoElement=I.video,A.releaseSharedVideoPlayback=I.release;else{const n=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=n.release)!=null?e:null;const B=this.createVideo(n.src,t.loop===0);A.videoElement=B}const s=A.videoElement;if(I){await I.ready;const n=this.acquireSharedVideoTexture(I.cacheKey,s);A.videoTextureHandle=n.texture,A.releaseSharedVideoTexture=n.release}else await this.waitVideoReady(s),A.videoTextureHandle=this.backend.createTexture(s,{width:s.videoWidth,height:s.videoHeight,filter:"linear"});A.releaseSharedVideoPlayback||this.bindVideoLoopOnEnded(A,s),this.logPlaybackBackend(A,"video",this.shouldTryWebCodecs()?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}bindVideoLoopOnEnded(A,t){t.addEventListener("ended",()=>{var e,i,I,s,n;if(A.state!=="playing")return;const B=(e=A.options.loop)!=null?e:1;if(B===0){t.currentTime=0,t.play();return}if(A.loopCount++,A.loopCount>=B){const C={id:A.id,type:A.type,pause:()=>{},resume:()=>{},destroy:()=>this.removeGift(A.id)};if((i=A.onComplete)==null||i.call(A,C),A.flyTo){A.state="fly";const a=fs(this.canvas);this.manager.postAnimator.startFly(A,A.flyTo.x*a.sx,A.flyTo.y*a.sy,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(n=A.easing)!=null?n:xs,()=>{var Q;A.state="finished",(Q=A.onFlyComplete)==null||Q.call(A,C)})}else A.state="finished";return}t.currentTime=0,t.play()})}createVideo(A,t){const e=document.createElement("video");return e.crossOrigin="anonymous",e.autoplay=!0,e.preload="auto",e.muted=!0,e.playsInline=!0,e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline","true"),e.loop=t,e.style.cssText="display:none;",e.src=A,document.body.appendChild(e),e.load(),e}waitVideoMetadata(A){return new Promise((t,e)=>{const i=()=>{A.removeEventListener("loadedmetadata",I),A.removeEventListener("error",s)},I=()=>{i(),t()},s=()=>{i(),e(new Error("Video metadata load failed"))};A.addEventListener("loadedmetadata",I),A.addEventListener("error",s),A.readyState>=HTMLMediaElement.HAVE_METADATA&&(i(),t())})}async probeVideoNaturalSize(A,t="video"){var e;const i=await this.acquireVideoPlaybackSource(A),I=document.createElement("video");I.crossOrigin="anonymous",I.preload="metadata",I.muted=!0,I.playsInline=!0,I.setAttribute("playsinline",""),I.setAttribute("webkit-playsinline","true"),I.style.cssText="display:none;",I.src=i.src,document.body.appendChild(I),I.load();try{return await this.waitVideoMetadata(I),t==="alphaVideo"?Yd(I.videoWidth,I.videoHeight):{width:I.videoWidth,height:I.videoHeight}}finally{try{I.pause(),I.removeAttribute("src"),I.load(),I.remove()}catch(s){}(e=i.release)==null||e.call(i)}}async acquireVideoPlaybackSource(A){if(typeof A!="string"){const i=URL.createObjectURL(new Blob([A]));return{src:i,release:()=>URL.revokeObjectURL(i)}}const t=this.normalizeSharedVideoSourceKey(A);if(!t)return{src:A};let e=this.sharedVideoSources.get(t);e||(e={refs:0,objectUrl:null,promise:this.fetchSharedVideoSource(t)},this.sharedVideoSources.set(t,e)),e.refs++;try{return{src:await e.promise,release:()=>this.releaseSharedVideoSource(t)}}catch(i){return this.releaseSharedVideoSource(t),console.warn("[GiftStage] shared video prefetch failed, using original url",i),{src:A}}}normalizeSharedVideoSourceKey(A){try{const t=new URL(A,window.location.href);return t.protocol==="blob:"||t.protocol==="data:"?null:t.href}catch(t){return null}}async fetchSharedVideoSource(A){const t=new Blob([await Rs(A)]),e=this.sharedVideoSources.get(A),i=URL.createObjectURL(t);return e&&(e.objectUrl=i,e.refs===0&&(URL.revokeObjectURL(i),this.sharedVideoSources.delete(A))),i}releaseSharedVideoSource(A){const t=this.sharedVideoSources.get(A);t&&(t.refs=Math.max(0,t.refs-1),t.refs===0&&t.objectUrl&&(URL.revokeObjectURL(t.objectUrl),this.sharedVideoSources.delete(A)))}async tryAcquireSharedHtmlVideo(A,t){var e,i;if(this.options.shareIdenticalVideoPlayback===!1||t.loop!==0||typeof t.source!="string"||A.type==="vap"&&A.vapMixState)return null;const I=this.normalizeSharedVideoSourceKey(t.source);if(!I)return null;const s=(e=this.options.sharedVideoPlaybackWindowMs)!=null?e:In.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,n=Math.max(0,s)/1e3,B=this.sharedHtmlVideos.get(I);if(B)return B.video.currentTime>n?null:(B.refs++,{cacheKey:I,video:B.video,ready:B.ready,release:()=>this.releaseSharedHtmlVideo(I)});let C=this.pendingSharedHtmlVideos.get(I);C||(C=(async()=>{var o;const r=await this.acquireVideoPlaybackSource(t.source),E=this.createVideo(r.src,!0),h=this.waitVideoReady(E);return{video:E,ready:h,releaseSource:(o=r.release)!=null?o:null}})(),this.pendingSharedHtmlVideos.set(I,C));let a;try{a=await C}catch(o){throw this.pendingSharedHtmlVideos.delete(I),o}let Q=this.sharedHtmlVideos.get(I);return Q?Q.refs++:(Q={refs:1,video:a.video,ready:a.ready,releaseSource:(i=a.releaseSource)!=null?i:null},this.sharedHtmlVideos.set(I,Q)),this.pendingSharedHtmlVideos.delete(I),{cacheKey:I,video:Q.video,ready:Q.ready,release:()=>this.releaseSharedHtmlVideo(I)}}acquireSharedVideoTexture(A,t){const e=this.sharedVideoTextures.get(A);if(e)return e.refs++,{texture:e.texture,release:()=>this.releaseSharedVideoTexture(A)};const i=this.backend.createTexture(t,{width:t.videoWidth,height:t.videoHeight,filter:"linear"});return this.sharedVideoTextures.set(A,{refs:1,texture:i}),{texture:i,release:()=>this.releaseSharedVideoTexture(A)}}releaseSharedVideoTexture(A){var t;const e=this.sharedVideoTextures.get(A);e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0)&&((t=this.backend)==null||t.deleteTexture(e.texture),this.sharedVideoTextures.delete(A)))}releaseSharedHtmlVideo(A){var t;const e=this.sharedHtmlVideos.get(A);if(e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0))){try{e.video.pause(),e.video.removeAttribute("src"),e.video.load(),e.video.remove()}catch(i){}(t=e.releaseSource)==null||t.call(e),this.sharedHtmlVideos.delete(A)}}waitForFirstVideoFrame(A){return new Promise(t=>{typeof A.requestVideoFrameCallback=="function"?A.requestVideoFrameCallback(()=>t()):requestAnimationFrame(()=>t())})}waitVideoReady(A){return new Promise((t,e)=>{const i=()=>{A.removeEventListener("canplay",s),A.removeEventListener("error",n)},I=async()=>{try{await A.play(),await this.waitForFirstVideoFrame(A),t()}catch(B){e(B)}},s=()=>{i(),I()},n=()=>{i(),e(new Error("Video load failed"))};A.addEventListener("canplay",s),A.addEventListener("error",n),A.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&(i(),I())})}removeGift(A){var t;(t=this.manager)==null||t.removeSlot(A)}removeAll(){if(this.manager)for(const A of this.manager.getSlotIds())this.manager.removeSlot(A)}pause(){var A;(A=this.manager)==null||A.pause()}resume(){var A;(A=this.manager)==null||A.resume()}get activeCount(){var A,t;return(t=(A=this.manager)==null?void 0:A.activeCount)!=null?t:0}get backendType(){var A,t;return(t=(A=this.backend)==null?void 0:A.type)!=null?t:"webgl2"}destroy(){var A,t;this.destroyed=!0,(A=this.resizeObserver)==null||A.disconnect(),this.resizeObserver=null,window.removeEventListener("resize",this.onWindowLayout),window.removeEventListener("orientationchange",this.onWindowLayout),(t=this.manager)==null||t.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,i]of this.sharedVideoSources)i.objectUrl&&URL.revokeObjectURL(i.objectUrl),this.sharedVideoSources.delete(e);this.canvas.remove(),this.backend=null,this.manager=null}};j(hn,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);j(hn,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);j(hn,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let Hd=hn;exports.AlphaVideoRenderer=QC;exports.AudioManager=oC;exports.BufferPool=eC;exports.GiftStage=Hd;exports.PostAnimator=rC;exports.RenderManager=hC;exports.SVGABatchRenderer=gC;exports.VAPRenderer=aC;exports.WebCodecsMp4Playback=_A;exports.WebGL1Backend=Kn;exports.WebGL2Backend=VB;exports.WebGPUBackend=ZB;exports.buildAtlas=Xn;exports.buildBatchVerticesJS=Ts;exports.canSharedArrayBuffer=Xa;exports.canWebGL1=ja;exports.canWebGL2=za;exports.canWebGPU=Wa;exports.clamp=qn;exports.createBackend=zB;exports.decodeSVGAProto=lC;exports.easeInOutCubic=dr;exports.easeInOutQuad=lr;exports.easeInQuad=hr;exports.easeOutBack=fr;exports.easeOutCubic=xs;exports.easeOutQuad=cr;exports.generateId=iC;exports.inflateJS=cC;exports.initWasm=tC;exports.isWasmReady=XA;exports.lerp=Zs;exports.linear=Er;exports.ortho=LA;exports.parseSVGA=jn;exports.parseVAPConfig=Wn;
8322
+ `;function Rd(g,A,t,e){const i=new Float32Array(t.size*rn),I=A.get(e);if(!I||I.length===0)return i;const[s,n]=g.info.rgbFrame;let B=0;for(const C of I){const a=t.get(String(C.srcId));if(!a)continue;if(B+rn>i.length)break;const[Q,o,r,E]=C.frame,[h,c,f,d]=C.mFrame,u=on(Q+s,o+n,r,E,g.info.videoW,g.info.videoH),p=on(h,c,f,d,g.info.videoW,g.info.videoH);i[B++]=a,i[B++]=u[0],i[B++]=u[1],i[B++]=u[2],i[B++]=u[3],i[B++]=p[0],i[B++]=p[1],i[B++]=p[2],i[B++]=p[3]}return i}class Ud{constructor(A,t,e,i,I){this.config=A,this.frameMap=t,oA(this,"canvas"),oA(this,"gl"),oA(this,"program"),oA(this,"vertexShader"),oA(this,"fragmentShader"),oA(this,"vertexBuffer"),oA(this,"videoTexture"),oA(this,"imagePosLoc"),oA(this,"resourceEntries"),oA(this,"textureUnitBySrcId",new Map);var s;if(e.size===0)throw new Error("VAP mix composer requires at least one slot resource");this.canvas=Gd(i,I);const n=this.canvas.getContext("webgl2",{alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1})||this.canvas.getContext("webgl",{alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1})||this.canvas.getContext("experimental-webgl");if(!n)throw new Error("VAP mixed rendering requires WebGL support");this.gl=n;const B=Math.max(1,n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),C=Math.max(0,B-1),a=[];let Q=1;for(const u of(s=A.src)!=null?s:[]){const p=e.get(String(u.srcId));if(!p)continue;if(Q>C){console.warn("[GiftStage] VAP mixed resources exceed texture unit limit, skipping",{srcId:u.srcId,srcTag:u.srcTag,maxUnits:B});continue}const w=VB(n,Q,p.source,!0),y={srcId:String(u.srcId),unit:Q,texture:w};a.push(y),this.textureUnitBySrcId.set(y.srcId,y.unit),Q++}if(a.length===0)throw new Error("VAP mixed rendering could not bind any slot resources");this.resourceEntries=a;const o=Sd(n,xd,Nd(this.resourceEntries.length));this.program=o.program,this.vertexShader=o.vertexShader,this.fragmentShader=o.fragmentShader,this.imagePosLoc=n.getUniformLocation(this.program,"image_pos"),this.videoTexture=VB(n,0);const r=n.getUniformLocation(this.program,"u_image_video");r!==null&&n.uniform1i(r,0);for(const u of this.resourceEntries){const p=n.getUniformLocation(this.program,`u_image${u.unit}`);p!==null&&n.uniform1i(p,u.unit)}const E=n.createBuffer();if(!E)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=E,n.bindBuffer(n.ARRAY_BUFFER,this.vertexBuffer),n.bufferData(n.ARRAY_BUFFER,Fd(A.info),n.STATIC_DRAW);const h=6*Float32Array.BYTES_PER_ELEMENT,c=n.getAttribLocation(this.program,"a_position"),f=n.getAttribLocation(this.program,"a_texCoord"),d=n.getAttribLocation(this.program,"a_alpha_texCoord");n.enableVertexAttribArray(c),n.vertexAttribPointer(c,2,n.FLOAT,!1,h,0),n.enableVertexAttribArray(f),n.vertexAttribPointer(f,2,n.FLOAT,!1,h,2*Float32Array.BYTES_PER_ELEMENT),n.enableVertexAttribArray(d),n.vertexAttribPointer(d,2,n.FLOAT,!1,h,4*Float32Array.BYTES_PER_ELEMENT),n.viewport(0,0,this.canvas.width,this.canvas.height),n.disable(n.BLEND),n.disable(n.DEPTH_TEST),n.clearColor(0,0,0,0),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE)}render(A,t){const e=this.gl;e.useProgram(this.program),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.videoTexture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);const i=Rd(this.config,this.frameMap,this.textureUnitBySrcId,t);return this.imagePosLoc!==null&&e.uniform1fv(this.imagePosLoc,i),e.clear(e.COLOR_BUFFER_BIT),e.drawArrays(e.TRIANGLE_STRIP,0,4),this.canvas}destroy(){const A=this.gl;for(const e of this.resourceEntries)A.deleteTexture(e.texture);A.deleteTexture(this.videoTexture),A.deleteBuffer(this.vertexBuffer),A.deleteProgram(this.program),A.deleteShader(this.vertexShader),A.deleteShader(this.fragmentShader);const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}}var Md=Object.defineProperty,bd=(g,A,t)=>A in g?Md(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,fA=(g,A,t)=>bd(g,typeof A!="symbol"?A+"":A,t);const ha=1397178947,ca=5,kd=8;class Yd{constructor(A=1024){fA(this,"buffer"),fA(this,"view"),fA(this,"bytes"),fA(this,"offset",0),fA(this,"encoder",new TextEncoder),this.buffer=new ArrayBuffer(A),this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}ensure(A){const t=this.offset+A;if(t<=this.buffer.byteLength)return;let e=this.buffer.byteLength;for(;e<t;)e*=2;const i=new ArrayBuffer(e);new Uint8Array(i).set(this.bytes.subarray(0,this.offset)),this.buffer=i,this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}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}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}string(A){this.bytesValue(this.encoder.encode(A))}finish(){return this.buffer.slice(0,this.offset)}}class _d{constructor(A){fA(this,"view"),fA(this,"bytes"),fA(this,"offset",0),fA(this,"decoder",new TextDecoder),this.view=new DataView(A),this.bytes=new Uint8Array(A)}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}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),t=this.bytes.slice(this.offset,this.offset+A);return this.offset+=A,t}string(){return this.decoder.decode(this.bytesValue())}}function Ld(g){let A=0;for(const t of g.atlasPages)A+=t.imageBytes.byteLength;for(const[t,e]of g.audioBlobs)A+=t.length*2+e.byteLength;for(const[t]of g.atlasRects)A+=t.length*2+20;for(const t of g.sprites){A+=t.imageKey.length*2+t.frames.length*64;for(const e of t.frames)A+=e.clipPath.length*2}return A}function WB(g){const A=new Uint8Array(g.byteLength);return A.set(g),A.buffer}function Jd(g){var A;const t=new Yd(kd+g.atlasPages.reduce((e,i)=>e+i.imageBytes.byteLength+12,0)+g.sprites.length*64+g.audioBlobs.size*32+g.atlasRects.size*32);t.u32(ha),t.u16(ca),t.u16(0),t.f32(g.params.viewBoxWidth),t.f32(g.params.viewBoxHeight),t.f32(g.params.fps),t.u32(g.params.frames),t.u32(g.atlasPages.length);for(const e of g.atlasPages)t.u32(e.width),t.u32(e.height),t.bytesValue(new Uint8Array(e.imageBytes));t.u32(g.atlasRects.size);for(const[e,i]of g.atlasRects)t.string(e),t.u32((A=i.textureIndex)!=null?A:0),t.f32(i.x),t.f32(i.y),t.f32(i.w),t.f32(i.h);t.u32(g.audios.length);for(const e of g.audios)t.string(e.audioKey),t.u32(e.startFrame),t.u32(e.endFrame),t.f32(e.startTime),t.f32(e.totalTime);t.u32(g.audioBlobs.size);for(const[e,i]of g.audioBlobs)t.string(e),t.bytesValue(new Uint8Array(i));t.u32(g.sprites.length);for(const e of g.sprites){t.string(e.imageKey),t.u32(e.frames.length);for(const i of e.frames){let I=0;i.layout&&(I|=1),i.transform&&(I|=2),i.clipPath&&(I|=4),t.u8(I),t.f32(i.alpha),i.layout&&(t.f32(i.layout.x),t.f32(i.layout.y),t.f32(i.layout.width),t.f32(i.layout.height)),i.transform&&(t.f32(i.transform.a),t.f32(i.transform.b),t.f32(i.transform.c),t.f32(i.transform.d),t.f32(i.transform.tx),t.f32(i.transform.ty)),i.clipPath&&t.string(i.clipPath)}}return t.finish()}function Hd(g){const A=new _d(g);if(A.u32()!==ha)throw new Error("Invalid SVGA cache binary magic");if(A.u16()!==ca)throw new Error("Unsupported SVGA cache binary version");A.u16();const t={viewBoxWidth:A.f32(),viewBoxHeight:A.f32(),fps:A.f32(),frames:A.u32()},e=A.u32(),i=[];for(let r=0;r<e;r++)i.push({width:A.u32(),height:A.u32(),imageBytes:WB(A.bytesValue())});const I=A.u32(),s=new Map;for(let r=0;r<I;r++){const E=A.string(),h=A.u32();s.set(E,{textureIndex:h,x:A.f32(),y:A.f32(),w:A.f32(),h:A.f32()})}const n=A.u32(),B=[];for(let r=0;r<n;r++)B.push({audioKey:A.string(),startFrame:A.u32(),endFrame:A.u32(),startTime:A.f32(),totalTime:A.f32()});const C=A.u32(),a=new Map;for(let r=0;r<C;r++){const E=A.string();a.set(E,WB(A.bytesValue()))}const Q=A.u32(),o=[];for(let r=0;r<Q;r++){const E=A.string(),h=A.u32(),c=[];for(let f=0;f<h;f++){const d=A.u8(),u=A.f32(),p=d&1?{x:A.f32(),y:A.f32(),width:A.f32(),height:A.f32()}:null,w=d&2?{a:A.f32(),b:A.f32(),c:A.f32(),d:A.f32(),tx:A.f32(),ty:A.f32()}:null,y=d&4?A.string():"";c.push({alpha:u,layout:p,transform:w,clipPath:y})}o.push({imageKey:E,frames:c})}return{params:t,sprites:o,audios:B,audioBlobs:a,atlasRects:s,atlasPages:i}}function gB(g){return`svga-asset:${g}`}function IB(g){return`svga-asset-bin:${g}`}async function vd(g){const A=TQ(gB(g),"svga-asset");if(A)return A;const t=await qQ(IB(g));if(!t)return null;try{const e=Hd(t);return CC(gB(g),"svga-asset",e,t.byteLength),e}catch(e){return VQ(IB(g)),null}}async function zB(g,A){const t=Jd(A);CC(gB(g),"svga-asset",A,Math.max(t.byteLength,Ld(A))),await ZQ(IB(g),t)}function NA(g){return typeof g=="number"&&Number.isFinite(g)&&g>0}function Kd(g,A){const t=NA(g)?g*.5:0,e=NA(A)?A:0;return{width:t,height:e}}function Td(g,A,t,e){const i=NA(A.width)?A.width:void 0,I=NA(A.height)?A.height:void 0,s=NA(g.width)?g.width:void 0,n=NA(g.height)?g.height:void 0,B=g.useOriginalSize===!0;if(s&&n)return{width:s,height:n};if(s)return i&&I?{width:s,height:s*I/i}:{width:s,height:s};if(n)return i&&I?{width:n*i/I,height:n}:{width:n,height:n};let C=i!=null?i:0,a=I!=null?I:0;if(C>0&&a>0&&NA(t)&&NA(e)&&(!B||C>t||a>e)){const Q=Math.min(t/C,e/a);C*=Q,a*=Q}return{width:C,height:a}}var qd=Object.defineProperty,Zd=(g,A,t)=>A in g?qd(g,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):g[A]=t,V=(g,A,t)=>Zd(g,typeof A!="symbol"?A+"":A,t);const Ys=class fs{constructor(A){V(this,"sharedSVGAEntities",new Map),V(this,"pendingSharedSVGAEntities",new Map),V(this,"sharedVideoSources",new Map),V(this,"sharedHtmlVideos",new Map),V(this,"sharedVideoTextures",new Map),V(this,"pendingSharedHtmlVideos",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,"onWindowLayout",()=>{this.destroyed||this.syncCanvasSize()}),this.options=A,this.canvas=document.createElement("canvas"),this.canvas.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:9999;",A.container.appendChild(this.canvas),this.ready=this.init()}backingStoreDpr(){const A=this.options.resolution;return A!=null&&A>0&&Number.isFinite(A)?A:typeof window!="undefined"&&window.devicePixelRatio>0?window.devicePixelRatio:1}syncCanvasSize(){var A;eQ(this.canvas,this.backingStoreDpr()),(A=this.manager)==null||A.syncSlotLayoutFromOptions()}resourcePipelineConcurrency(){if(this.options.maxConcurrentParse!=null)return Math.max(1,Math.max(4,this.options.maxConcurrentParse));const A=typeof navigator!="undefined"&&typeof navigator.hardwareConcurrency=="number"?navigator.hardwareConcurrency/2:4;return Math.max(1,Math.max(4,A))}async init(){var A;this.syncCanvasSize(),await new Promise(I=>requestAnimationFrame(()=>I())),this.syncCanvasSize(),vQ({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:fs.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:fs.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES});const t=(A=this.options.preferWebGPU)!=null?A:!0,e=this.options.antialias,[i]=await Promise.all([PB(this.canvas,t,e,this.options.forceWebGL1===!0),IC()]);this.backend=i,this.manager=new fC(this.backend),this.resizeObserver=new ResizeObserver(()=>{this.destroyed||this.syncCanvasSize()}),this.resizeObserver.observe(this.canvas),window.addEventListener("resize",this.onWindowLayout),window.addEventListener("orientationchange",this.onWindowLayout)}currentCanvasCssSize(){const A=this.canvas.clientWidth||this.options.container.clientWidth||window.innerWidth||0,t=this.canvas.clientHeight||this.options.container.clientHeight||window.innerHeight||0;return{width:A,height:t}}async resolveGiftIntrinsicSize(A){switch(A.type){case"svga":{const t=await Pr(A.source,{useWorker:this.options.svgaParseInWorker!==!1});return{width:t.viewBoxWidth,height:t.viewBoxHeight}}case"vap":{if(!A.config)throw new Error("VAP requires config");const t=await zn(A.config),e=OA(t.info);return{width:e.w,height:e.h}}case"alphaVideo":return this.probeVideoNaturalSize(A.source,"alphaVideo")}}async normalizeAddGiftOptions(A){if(A.width!=null&&A.height!=null)return A;const t=await this.resolveGiftIntrinsicSize(A),e=this.currentCanvasCssSize(),i=Td({width:A.width,height:A.height,useOriginalSize:A.useOriginalSize},t,e.width,e.height);return{...A,width:i.width,height:i.height}}async addGift(A){var t,e,i,I;if(console.info("[GiftStage] addGift await ready…",A.type),await this.ready,console.info("[GiftStage] addGift ready, loading…",A.type),this.destroyed)throw new Error("GiftStage is destroyed");const s=await this.normalizeAddGiftOptions(A),n=nC(),{sx:B,sy:C}=us(this.canvas),a=dC(s.x,s.y,s.width,s.height,this.canvas.clientWidth,this.canvas.clientHeight),Q={id:n,type:s.type,state:"loading",options:s,zIndex:(t=s.zIndex)!=null?t:0,renderOrder:this.nextRenderOrder++,x:a.x*B,y:a.y*C,width:s.width*B,height:s.height*C,scale:1,paused:!1,currentFrame:0,accumulatedTime:0,lastTickTime:0,loopCount:0,videoEntity:null,svgaSlotTextures:void 0,videoElement:null,releaseMediaSource:null,releaseSharedSVGAAsset:null,releaseSharedVideoPlayback:null,releaseSharedVideoTexture:null,webcodecsPlayback:null,wcPlaybackTime:0,videoTextureHandle:null,vapMixState:null,onComplete:s.onComplete,flyTo:s.flyTo,scaleTo:s.scaleTo,flyDuration:s.flyDuration,easing:(e=s.easing)!=null?e:Us,onFlyComplete:s.onFlyComplete},o={id:n,type:s.type,pause:()=>{Q.paused=!0},resume:()=>{Q.paused=!1},destroy:()=>{this.removeGift(n)}};this.manager.addSlot(Q,o);try{switch(s.type){case"svga":await this.loadSVGA(Q);break;case"vap":await this.loadVAP(Q,s);break;case"alphaVideo":await this.loadAlphaVideo(Q,s);break}Q.state="playing",Q.webcodecsPlayback&&console.info("[GiftStage:WC] gift playing",{giftId:Q.id,type:Q.type,layoutBufPx:{x:Q.x,y:Q.y,w:Q.width,h:Q.height}})}catch(r){Q.state="finished",(I=(i=this.options).onError)==null||I.call(i,r instanceof Error?r:new Error(String(r)))}return o}async loadSVGA(A){const t=typeof A.options.source=="string"?A.options.source:null;if(t){const B=await this.acquireSharedSVGAEntity(t);if(A.state==="finished"){B.release();return}A.releaseSharedSVGAAsset=B.release,await this.finishLoadSVGA(A,B.entity,B.audioBlobs);return}const{movie:e,imageBitmaps:i,audioBlobs:I}=await Xn(A.options.source,{useWorker:this.options.svgaParseInWorker!==!1});if(A.state==="finished")return;const s=await Pn(i,this.backend,this.svgaAtlasMaxSize(),2,{captureEncodedPng:!!t,maxPages:this.svgaAtlasMaxPages()});if(A.state==="finished"){for(const B of i.values())B.close();return}const n={params:e.params,sprites:e.sprites,audios:e.audios,atlasTextureHandle:s.textureHandle,atlasTextureHandles:s.textureHandles,atlasRects:s.rects,audioBuffers:new Map};await this.finishLoadSVGA(A,n,I),t&&s.encodedPngBytesPromises&&Promise.all(s.encodedPngBytesPromises).then(B=>{B.some(C=>!C)||zB(t,{params:e.params,sprites:e.sprites,audios:e.audios,audioBlobs:I,atlasRects:s.rects,atlasPages:s.pages.map((C,a)=>({width:C.atlasWidth,height:C.atlasHeight,imageBytes:B[a]}))})});for(const B of i.values())B.close()}async acquireSharedSVGAEntity(A){const t=A,e=this.sharedSVGAEntities.get(t);if(e)return e.refs++,{entity:e.entity,audioBlobs:e.audioBlobs,release:()=>this.releaseSharedSVGAEntity(t)};let i=this.pendingSharedSVGAEntities.get(t);i||(i=this.buildSharedSVGAEntity(A),this.pendingSharedSVGAEntities.set(t,i));let I;try{I=await i}catch(n){throw this.pendingSharedSVGAEntities.delete(t),n}let s=this.sharedSVGAEntities.get(t);return s?s.refs++:(s={refs:1,entity:I.entity,audioBlobs:I.audioBlobs},this.sharedSVGAEntities.set(t,s)),this.pendingSharedSVGAEntities.delete(t),{entity:s.entity,audioBlobs:s.audioBlobs,release:()=>this.releaseSharedSVGAEntity(t)}}async buildSharedSVGAEntity(A){var t;const e=await vd(A);if(e){const n=await this.createCachedSVGAAtlasTextures(e.atlasPages);return{entity:{params:e.params,sprites:e.sprites,audios:e.audios,atlasTextureHandle:(t=n[0])!=null?t:null,atlasTextureHandles:n,atlasRects:e.atlasRects,audioBuffers:new Map},audioBlobs:e.audioBlobs}}const{movie:i,imageBitmaps:I,audioBlobs:s}=await Xn(A,{useWorker:this.options.svgaParseInWorker!==!1});try{const n=await Pn(I,this.backend,this.svgaAtlasMaxSize(),2,{captureEncodedPng:!0,maxPages:this.svgaAtlasMaxPages()});return n.encodedPngBytesPromises&&Promise.all(n.encodedPngBytesPromises).then(B=>{B.some(C=>!C)||zB(A,{params:i.params,sprites:i.sprites,audios:i.audios,audioBlobs:s,atlasRects:n.rects,atlasPages:n.pages.map((C,a)=>({width:C.atlasWidth,height:C.atlasHeight,imageBytes:B[a]}))})}),{entity:{params:i.params,sprites:i.sprites,audios:i.audios,atlasTextureHandle:n.textureHandle,atlasTextureHandles:n.textureHandles,atlasRects:n.rects,audioBuffers:new Map},audioBlobs:s}}finally{for(const n of I.values())n.close()}}releaseSharedSVGAEntity(A){const t=this.sharedSVGAEntities.get(A);t&&(t.refs=Math.max(0,t.refs-1),!(t.refs>0)&&(this.deleteSVGAAtlasTextures(t.entity),this.sharedSVGAEntities.delete(A)))}async createCachedSVGAAtlasTextures(A){const t=[];for(const e of A){const i=await createImageBitmap(new Blob([e.imageBytes],{type:"image/png"}),{premultiplyAlpha:"none"}),I=this.backend.createTexture(i,{width:e.width,height:e.height,filter:"linear"});i.close(),t.push(I)}return t}deleteSVGAAtlasTextures(A){var t,e;const i=(t=A.atlasTextureHandles)!=null&&t.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],I=new Set;for(const s of i)I.has(s.id)||(I.add(s.id),(e=this.backend)==null||e.deleteTexture(s))}async finishLoadSVGA(A,t,e){let i=0;for(const[I,s]of e)await this.manager.audioManager.decodeAudio(I,s),i++,i<e.size&&await new Promise(n=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>n());return}setTimeout(n,0)});A.videoEntity=t,A.options.svgaSlots&&(A.svgaSlotTextures=await er(this.backend,A.videoEntity,A.options.svgaSlots))}svgaAtlasMaxSize(){var A,t,e;const i=(A=this.options.svgaAtlasMaxSize)!=null?A:fs.SVGA_ATLAS_MAX_SIZE,I=(e=(t=this.backend)==null?void 0:t.maxTextureSize)!=null?e:i;return Math.max(64,Math.min(I,i))}svgaAtlasMaxPages(){var A;return Math.max(1,Math.floor((A=this.options.svgaAtlasMaxPages)!=null?A:4))}shouldTryWebCodecs(){return this.options.preferWebCodecs===!0&&typeof VideoDecoder!="undefined"}logPlaybackBackend(A,t,e){const i=t==="webcodecs"?"WebCodecs (mp4box decode)":"HTMLVideoElement",I=e?` — ${e}`:"";console.info(`[GiftStage] ${A.type} [${A.id}]: ${i}${I}`)}async tryWebCodecsPlayback(A){if(!this.shouldTryWebCodecs())return null;try{const t=typeof A=="string"?await Rs(A):A;return await _A.create(t,void 0,{useWorker:this.options.webCodecsDecodeInWorker!==!1,maxDecodedFrames:this.options.webCodecsMaxDecodedFrames,decodeAheadFrames:this.options.webCodecsDecodeAheadFrames})}catch(t){const e=t instanceof Error?t.message:String(t);return console.warn(`[GiftStage] WebCodecs path failed, falling back to <video>: ${e}`),null}}async loadVAP(A,t){var e;if(!t.config)throw new Error("VAP requires config");const i=await zn(t.config);A.vapConfig=i;const I=await sr(i,t.vapSlots);if(I.size>0){const a=OA(i.info),Q=nr(i);let o=null,r=null;try{o=new Ud(i,Q,I,a.w,a.h)}catch(E){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",E),r=Br(a.w,a.h)}A.vapMixState={texture:this.backend.createEmptyTexture(a.w,a.h,{filter:"linear"}),width:a.w,height:a.h,composer:o,frameMap:Q,resources:I,lastFrameIndex:-1,lastSourceRef:null,...r!=null?r:{}},A.videoTextureHandle=A.vapMixState.texture}console.info("[GiftStage:WC] loadVAP: try WebCodecs / video…");const n=await this.tryWebCodecsPlayback(t.source);if(n){A.webcodecsPlayback=n,A.wcPlaybackTime=0;const a=n.getFrameForTime(0);if(!a)throw n.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");if(!A.vapMixState){const o=a.displayWidth||a.codedWidth,r=a.displayHeight||a.codedHeight,{w:E,h}=qB(A,o,r,"vap",i),c=this.manager.tryAllocateWebCodecsAtlas(A.id,E,h,this.options.webCodecsVideoAtlas);if(c)A.videoTextureHandle=c.handle,A.wcAtlasRect=c.rect,this.backend.updateTextureRegion(c.handle,a,c.rect.x,c.rect.y,E,h);else{const f=this.backend.createTexture(a,{width:o,height:r,filter:"linear"});A.videoTextureHandle=f}}A.videoElement=null;const Q=A.videoTextureHandle;console.info("[GiftStage:WC] VAP texture",{giftId:A.id,atlas:!!A.wcAtlasRect&&!A.vapMixState,mixed:!!A.vapMixState,tex:`${Q.width}x${Q.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 B=await this.tryAcquireSharedHtmlVideo(A,t);if(B)A.videoElement=B.video,A.releaseSharedVideoPlayback=B.release;else{const a=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=a.release)!=null?e:null;const Q=this.createVideo(a.src,t.loop===0);A.videoElement=Q}const C=A.videoElement;if(B){await B.ready;const a=this.acquireSharedVideoTexture(B.cacheKey,C);A.videoTextureHandle=a.texture,A.releaseSharedVideoTexture=a.release}else await this.waitVideoReady(C),A.vapMixState||(A.videoTextureHandle=this.backend.createTexture(C,{width:C.videoWidth,height:C.videoHeight,filter:"linear"}));A.releaseSharedVideoPlayback||this.bindVideoLoopOnEnded(A,C),this.logPlaybackBackend(A,"video",this.shouldTryWebCodecs()?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}async loadAlphaVideo(A,t){var e;console.info("[GiftStage:WC] loadAlphaVideo: try WebCodecs / video…");const i=await this.tryWebCodecsPlayback(t.source);if(i){A.webcodecsPlayback=i,A.wcPlaybackTime=0;const n=i.getFrameForTime(0);if(!n)throw i.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");const B=n.displayWidth||n.codedWidth,C=n.displayHeight||n.codedHeight,{w:a,h:Q}=qB(A,B,C,"alphaVideo",void 0),o=this.manager.tryAllocateWebCodecsAtlas(A.id,a,Q,this.options.webCodecsVideoAtlas);if(o)A.videoTextureHandle=o.handle,A.wcAtlasRect=o.rect,this.backend.updateTextureRegion(o.handle,n,o.rect.x,o.rect.y,a,Q);else{const E=this.backend.createTexture(n,{width:B,height:C,filter:"linear"});A.videoTextureHandle=E}A.videoElement=null;const r=A.videoTextureHandle;console.info("[GiftStage:WC] alphaVideo texture",{giftId:A.id,atlas:!!A.wcAtlasRect,tex:`${r.width}x${r.height}`,frame0:`${n.displayWidth}x${n.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const I=await this.tryAcquireSharedHtmlVideo(A,t);if(I)A.videoElement=I.video,A.releaseSharedVideoPlayback=I.release;else{const n=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=n.release)!=null?e:null;const B=this.createVideo(n.src,t.loop===0);A.videoElement=B}const s=A.videoElement;if(I){await I.ready;const n=this.acquireSharedVideoTexture(I.cacheKey,s);A.videoTextureHandle=n.texture,A.releaseSharedVideoTexture=n.release}else await this.waitVideoReady(s),A.videoTextureHandle=this.backend.createTexture(s,{width:s.videoWidth,height:s.videoHeight,filter:"linear"});A.releaseSharedVideoPlayback||this.bindVideoLoopOnEnded(A,s),this.logPlaybackBackend(A,"video",this.shouldTryWebCodecs()?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}bindVideoLoopOnEnded(A,t){t.addEventListener("ended",()=>{var e,i,I,s,n;if(A.state!=="playing")return;const B=(e=A.options.loop)!=null?e:1;if(B===0){t.currentTime=0,t.play();return}if(A.loopCount++,A.loopCount>=B){const C={id:A.id,type:A.type,pause:()=>{},resume:()=>{},destroy:()=>this.removeGift(A.id)};if((i=A.onComplete)==null||i.call(A,C),A.flyTo){A.state="fly";const a=us(this.canvas);this.manager.postAnimator.startFly(A,A.flyTo.x*a.sx,A.flyTo.y*a.sy,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(n=A.easing)!=null?n:Us,()=>{var Q;A.state="finished",(Q=A.onFlyComplete)==null||Q.call(A,C)})}else A.state="finished";return}t.currentTime=0,t.play()})}createVideo(A,t){const e=document.createElement("video");return e.crossOrigin="anonymous",e.autoplay=!0,e.preload="auto",e.muted=!0,e.playsInline=!0,e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline","true"),e.loop=t,e.style.cssText="display:none;",e.src=A,document.body.appendChild(e),e.load(),e}waitVideoMetadata(A){return new Promise((t,e)=>{const i=()=>{A.removeEventListener("loadedmetadata",I),A.removeEventListener("error",s)},I=()=>{i(),t()},s=()=>{i(),e(new Error("Video metadata load failed"))};A.addEventListener("loadedmetadata",I),A.addEventListener("error",s),A.readyState>=HTMLMediaElement.HAVE_METADATA&&(i(),t())})}async probeVideoNaturalSize(A,t="video"){var e;const i=await this.acquireVideoPlaybackSource(A),I=document.createElement("video");I.crossOrigin="anonymous",I.preload="metadata",I.muted=!0,I.playsInline=!0,I.setAttribute("playsinline",""),I.setAttribute("webkit-playsinline","true"),I.style.cssText="display:none;",I.src=i.src,document.body.appendChild(I),I.load();try{return await this.waitVideoMetadata(I),t==="alphaVideo"?Kd(I.videoWidth,I.videoHeight):{width:I.videoWidth,height:I.videoHeight}}finally{try{I.pause(),I.removeAttribute("src"),I.load(),I.remove()}catch(s){}(e=i.release)==null||e.call(i)}}async acquireVideoPlaybackSource(A){if(typeof A!="string"){const i=URL.createObjectURL(new Blob([A]));return{src:i,release:()=>URL.revokeObjectURL(i)}}const t=this.normalizeSharedVideoSourceKey(A);if(!t)return{src:A};let e=this.sharedVideoSources.get(t);e||(e={refs:0,objectUrl:null,promise:this.fetchSharedVideoSource(t)},this.sharedVideoSources.set(t,e)),e.refs++;try{return{src:await e.promise,release:()=>this.releaseSharedVideoSource(t)}}catch(i){return this.releaseSharedVideoSource(t),console.warn("[GiftStage] shared video prefetch failed, using original url",i),{src:A}}}normalizeSharedVideoSourceKey(A){try{const t=new URL(A,window.location.href);return t.protocol==="blob:"||t.protocol==="data:"?null:t.href}catch(t){return null}}async fetchSharedVideoSource(A){const t=new Blob([await Rs(A)]),e=this.sharedVideoSources.get(A),i=URL.createObjectURL(t);return e&&(e.objectUrl=i,e.refs===0&&(URL.revokeObjectURL(i),this.sharedVideoSources.delete(A))),i}releaseSharedVideoSource(A){const t=this.sharedVideoSources.get(A);t&&(t.refs=Math.max(0,t.refs-1),t.refs===0&&t.objectUrl&&(URL.revokeObjectURL(t.objectUrl),this.sharedVideoSources.delete(A)))}async tryAcquireSharedHtmlVideo(A,t){var e,i;if(this.options.shareIdenticalVideoPlayback===!1||t.loop!==0||typeof t.source!="string"||A.type==="vap"&&A.vapMixState)return null;const I=this.normalizeSharedVideoSourceKey(t.source);if(!I)return null;const s=(e=this.options.sharedVideoPlaybackWindowMs)!=null?e:fs.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,n=Math.max(0,s)/1e3,B=this.sharedHtmlVideos.get(I);if(B)return B.video.currentTime>n?null:(B.refs++,{cacheKey:I,video:B.video,ready:B.ready,release:()=>this.releaseSharedHtmlVideo(I)});let C=this.pendingSharedHtmlVideos.get(I);C||(C=(async()=>{var o;const r=await this.acquireVideoPlaybackSource(t.source),E=this.createVideo(r.src,!0),h=this.waitVideoReady(E);return{video:E,ready:h,releaseSource:(o=r.release)!=null?o:null}})(),this.pendingSharedHtmlVideos.set(I,C));let a;try{a=await C}catch(o){throw this.pendingSharedHtmlVideos.delete(I),o}let Q=this.sharedHtmlVideos.get(I);return Q?Q.refs++:(Q={refs:1,video:a.video,ready:a.ready,releaseSource:(i=a.releaseSource)!=null?i:null},this.sharedHtmlVideos.set(I,Q)),this.pendingSharedHtmlVideos.delete(I),{cacheKey:I,video:Q.video,ready:Q.ready,release:()=>this.releaseSharedHtmlVideo(I)}}acquireSharedVideoTexture(A,t){const e=this.sharedVideoTextures.get(A);if(e)return e.refs++,{texture:e.texture,release:()=>this.releaseSharedVideoTexture(A)};const i=this.backend.createTexture(t,{width:t.videoWidth,height:t.videoHeight,filter:"linear"});return this.sharedVideoTextures.set(A,{refs:1,texture:i}),{texture:i,release:()=>this.releaseSharedVideoTexture(A)}}releaseSharedVideoTexture(A){var t;const e=this.sharedVideoTextures.get(A);e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0)&&((t=this.backend)==null||t.deleteTexture(e.texture),this.sharedVideoTextures.delete(A)))}releaseSharedHtmlVideo(A){var t;const e=this.sharedHtmlVideos.get(A);if(e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0))){try{e.video.pause(),e.video.removeAttribute("src"),e.video.load(),e.video.remove()}catch(i){}(t=e.releaseSource)==null||t.call(e),this.sharedHtmlVideos.delete(A)}}waitForFirstVideoFrame(A){return new Promise(t=>{typeof A.requestVideoFrameCallback=="function"?A.requestVideoFrameCallback(()=>t()):requestAnimationFrame(()=>t())})}waitVideoReady(A){return new Promise((t,e)=>{const i=()=>{A.removeEventListener("canplay",s),A.removeEventListener("error",n)},I=async()=>{try{await A.play(),await this.waitForFirstVideoFrame(A),t()}catch(B){e(B)}},s=()=>{i(),I()},n=()=>{i(),e(new Error("Video load failed"))};A.addEventListener("canplay",s),A.addEventListener("error",n),A.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&(i(),I())})}removeGift(A){var t;(t=this.manager)==null||t.removeSlot(A)}removeAll(){if(this.manager)for(const A of this.manager.getSlotIds())this.manager.removeSlot(A)}pause(){var A;(A=this.manager)==null||A.pause()}resume(){var A;(A=this.manager)==null||A.resume()}get activeCount(){var A,t;return(t=(A=this.manager)==null?void 0:A.activeCount)!=null?t:0}get backendType(){var A,t;return(t=(A=this.backend)==null?void 0:A.type)!=null?t:"webgl2"}destroy(){var A,t;this.destroyed=!0,(A=this.resizeObserver)==null||A.disconnect(),this.resizeObserver=null,window.removeEventListener("resize",this.onWindowLayout),window.removeEventListener("orientationchange",this.onWindowLayout),(t=this.manager)==null||t.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,i]of this.sharedVideoSources)i.objectUrl&&URL.revokeObjectURL(i.objectUrl),this.sharedVideoSources.delete(e);this.canvas.remove(),this.backend=null,this.manager=null}};V(Ys,"SVGA_ATLAS_MAX_SIZE",2048);V(Ys,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);V(Ys,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);V(Ys,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let Vd=Ys;exports.AlphaVideoRenderer=hC;exports.AudioManager=lC;exports.BufferPool=sC;exports.GiftStage=Vd;exports.PostAnimator=cC;exports.RenderManager=fC;exports.SVGABatchRenderer=BC;exports.VAPRenderer=EC;exports.WebCodecsMp4Playback=_A;exports.WebGL1Backend=Tn;exports.WebGL2Backend=XB;exports.WebGPUBackend=jB;exports.buildAtlas=Pn;exports.buildBatchVerticesJS=Zs;exports.canSharedArrayBuffer=AQ;exports.canWebGL1=$a;exports.canWebGL2=Pa;exports.canWebGPU=Oa;exports.clamp=Zn;exports.createBackend=PB;exports.decodeSVGAProto=wC;exports.easeInOutCubic=Dr;exports.easeInOutQuad=wr;exports.easeInQuad=fr;exports.easeOutBack=pr;exports.easeOutCubic=Us;exports.easeOutQuad=ur;exports.generateId=nC;exports.inflateJS=uC;exports.initWasm=IC;exports.isWasmReady=XA;exports.lerp=Ws;exports.linear=dr;exports.ortho=LA;exports.parseSVGA=Xn;exports.parseVAPConfig=zn;
8323
8323
  //# sourceMappingURL=gift-stage.cjs.js.map