From 32a594dd8a1d7227412ca21ff44bbccc9d2cd3a0 Mon Sep 17 00:00:00 2001 From: YeomaiPC Date: Sun, 13 Sep 2026 00:34:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=AE=E5=8A=A9=E8=AF=B4=E6=98=8E=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{index-CyjCNKhS.js => index-9ofazf7F.js} | 36 +++++++++--------- .../{index-Btg_SCRJ.js => index-Cz2cACyM.js} | 2 +- .../{index-De2_H8wT.js => index-D13mN481.js} | 2 +- dist/assets/index-DCezqRpu.css | 1 + dist/assets/index-DIRGlEhR.css | 1 - .../SpineParticleConnector-macos-arm64.zip | Bin 118639 -> 0 bytes ...SpineParticleConnector-macos-universal.zip | Bin 0 -> 261630 bytes dist/index.html | 28 +++++++------- .../SpineParticleConnector-macos-arm64.zip | Bin 118639 -> 0 bytes ...SpineParticleConnector-macos-universal.zip | Bin 0 -> 261630 bytes .../Spine粒子连接器.app/Contents/Info.plist | 14 ------- .../Contents/MacOS/SpineParticleConnector | Bin 347800 -> 0 bytes release/connector/macos-arm64/使用说明.md | 21 ---------- release/connector/连接器.zip | Bin 120435 -> 0 bytes src/views/HelpDialog.vue | 2 +- 15 files changed, 36 insertions(+), 71 deletions(-) rename dist/assets/{index-CyjCNKhS.js => index-9ofazf7F.js} (68%) rename dist/assets/{index-Btg_SCRJ.js => index-Cz2cACyM.js} (99%) rename dist/assets/{index-De2_H8wT.js => index-D13mN481.js} (99%) create mode 100644 dist/assets/index-DCezqRpu.css delete mode 100644 dist/assets/index-DIRGlEhR.css delete mode 100644 dist/downloads/connector/SpineParticleConnector-macos-arm64.zip create mode 100644 dist/downloads/connector/SpineParticleConnector-macos-universal.zip delete mode 100644 public/downloads/connector/SpineParticleConnector-macos-arm64.zip create mode 100644 public/downloads/connector/SpineParticleConnector-macos-universal.zip delete mode 100644 release/connector/macos-arm64/Spine粒子连接器.app/Contents/Info.plist delete mode 100755 release/connector/macos-arm64/Spine粒子连接器.app/Contents/MacOS/SpineParticleConnector delete mode 100644 release/connector/macos-arm64/使用说明.md delete mode 100644 release/connector/连接器.zip diff --git a/dist/assets/index-CyjCNKhS.js b/dist/assets/index-9ofazf7F.js similarity index 68% rename from dist/assets/index-CyjCNKhS.js rename to dist/assets/index-9ofazf7F.js index bb7b9fc..1733fd6 100644 --- a/dist/assets/index-CyjCNKhS.js +++ b/dist/assets/index-9ofazf7F.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-De2_H8wT.js","assets/index-Btg_SCRJ.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-D13mN481.js","assets/index-Cz2cACyM.js"])))=>i.map(i=>d[i]); var yS=Object.defineProperty;var xS=(s,e,t)=>e in s?yS(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var w=(s,e,t)=>xS(s,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(n){if(n.ep)return;n.ep=!0;const r=t(n);fetch(n.href,r)}})();/** * @vue/shared v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -438,7 +438,7 @@ void main(void) vTextureCoord = aTextureCoord; vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy; } -`;class QC extends Ui{constructor(e,t,i){let n=null;typeof e!="string"&&t===void 0&&i===void 0&&(n=e,e=void 0,t=void 0,i=void 0),super(e||JC,t||ZC,i),this.maskSprite=n,this.maskMatrix=new Bt}get maskSprite(){return this._maskSprite}set maskSprite(e){this._maskSprite=e,this._maskSprite&&(this._maskSprite.renderable=!1)}apply(e,t,i,n){const r=this._maskSprite,o=r._texture;o.valid&&(o.uvMatrix||(o.uvMatrix=new Qm(o,0)),o.uvMatrix.update(),this.uniforms.npmAlpha=o.baseTexture.alphaMode?0:1,this.uniforms.mask=o,this.uniforms.otherMatrix=e.calculateSpriteMatrix(this.maskMatrix,r).prepend(o.uvMatrix.mapCoord),this.uniforms.alpha=r.worldAlpha,this.uniforms.maskClamp=o.uvMatrix.uClampFrame,e.applyFilter(this,t,i,n))}}class eA{constructor(e=null){this.type=oi.NONE,this.autoDetect=!0,this.maskObject=e||null,this.pooled=!1,this.isMaskData=!0,this.resolution=null,this.multisample=Ui.defaultMultisample,this.enabled=!0,this.colorMask=15,this._filters=null,this._stencilCounter=0,this._scissorCounter=0,this._scissorRect=null,this._scissorRectLocal=null,this._colorMask=15,this._target=null}get filter(){return this._filters?this._filters[0]:null}set filter(e){e?this._filters?this._filters[0]=e:this._filters=[e]:this._filters=null}reset(){this.pooled&&(this.maskObject=null,this.type=oi.NONE,this.autoDetect=!0),this._target=null,this._scissorRectLocal=null}copyCountersOrReset(e){e?(this._stencilCounter=e._stencilCounter,this._scissorCounter=e._scissorCounter,this._scissorRect=e._scissorRect):(this._stencilCounter=0,this._scissorCounter=0,this._scissorRect=null)}}class e1{constructor(e){this.renderer=e,this.enableScissor=!0,this.alphaMaskPool=[],this.maskDataPool=[],this.maskStack=[],this.alphaMaskIndex=0}setMaskStack(e){this.maskStack=e,this.renderer.scissor.setMaskStack(e),this.renderer.stencil.setMaskStack(e)}push(e,t){let i=t;if(!i.isMaskData){const r=this.maskDataPool.pop()||new eA;r.pooled=!0,r.maskObject=t,i=r}const n=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null;if(i.copyCountersOrReset(n),i._colorMask=n?n._colorMask:15,i.autoDetect&&this.detect(i),i._target=e,i.type!==oi.SPRITE&&this.maskStack.push(i),i.enabled)switch(i.type){case oi.SCISSOR:this.renderer.scissor.push(i);break;case oi.STENCIL:this.renderer.stencil.push(i);break;case oi.SPRITE:i.copyCountersOrReset(null),this.pushSpriteMask(i);break;case oi.COLOR:this.pushColorMask(i);break}i.type===oi.SPRITE&&this.maskStack.push(i)}pop(e){const t=this.maskStack.pop();if(!(!t||t._target!==e)){if(t.enabled)switch(t.type){case oi.SCISSOR:this.renderer.scissor.pop(t);break;case oi.STENCIL:this.renderer.stencil.pop(t.maskObject);break;case oi.SPRITE:this.popSpriteMask(t);break;case oi.COLOR:this.popColorMask(t);break}if(t.reset(),t.pooled&&this.maskDataPool.push(t),this.maskStack.length!==0){const i=this.maskStack[this.maskStack.length-1];i.type===oi.SPRITE&&i._filters&&(i._filters[0].maskSprite=i.maskObject)}}}detect(e){const t=e.maskObject;t?t.isSprite?e.type=oi.SPRITE:this.enableScissor&&this.renderer.scissor.testScissor(e)?e.type=oi.SCISSOR:e.type=oi.STENCIL:e.type=oi.COLOR}pushSpriteMask(e){const{maskObject:t}=e,i=e._target;let n=e._filters;n||(n=this.alphaMaskPool[this.alphaMaskIndex],n||(n=this.alphaMaskPool[this.alphaMaskIndex]=[new QC])),n[0].resolution=e.resolution,n[0].multisample=e.multisample,n[0].maskSprite=t;const r=i.filterArea;i.filterArea=t.getBounds(!0),this.renderer.filter.push(i,n),i.filterArea=r,e._filters||this.alphaMaskIndex++}popSpriteMask(e){this.renderer.filter.pop(),e._filters?e._filters[0].maskSprite=null:(this.alphaMaskIndex--,this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite=null)}pushColorMask(e){const t=e._colorMask,i=e._colorMask=t&e.colorMask;i!==t&&this.renderer.gl.colorMask((i&1)!==0,(i&2)!==0,(i&4)!==0,(i&8)!==0)}popColorMask(e){const t=e._colorMask,i=this.maskStack.length>0?this.maskStack[this.maskStack.length-1]._colorMask:15;i!==t&&this.renderer.gl.colorMask((i&1)!==0,(i&2)!==0,(i&4)!==0,(i&8)!==0)}destroy(){this.renderer=null}}e1.extension={type:Pe.RendererSystem,name:"mask"};Ne.add(e1);class t1{constructor(e){this.renderer=e,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(e){const{gl:t}=this.renderer,i=this.getStackLength();this.maskStack=e;const n=this.getStackLength();n!==i&&(n===0?t.disable(this.glConst):(t.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const $0=new Bt,X0=[],i1=class xc extends t1{constructor(e){super(e),this.glConst=ke.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0}calcScissorRect(e){if(e._scissorRectLocal)return;const t=e._scissorRect,{maskObject:i}=e,{renderer:n}=this,r=n.renderTexture,o=i.getBounds(!0,X0.pop()??new nt);this.roundFrameToPixels(o,r.current?r.current.resolution:n.resolution,r.sourceFrame,r.destinationFrame,n.projection.transform),t&&o.fit(t),e._scissorRectLocal=o}static isMatrixRotated(e){if(!e)return!1;const{a:t,b:i,c:n,d:r}=e;return(Math.abs(i)>1e-4||Math.abs(n)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(r)>1e-4)}testScissor(e){const{maskObject:t}=e;if(!t.isFastRect||!t.isFastRect()||xc.isMatrixRotated(t.worldTransform)||xc.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);const i=e._scissorRectLocal;return i.width>0&&i.height>0}roundFrameToPixels(e,t,i,n,r){xc.isMatrixRotated(r)||(r=r?$0.copyFrom(r):$0.identity(),r.translate(-i.x,-i.y).scale(n.width/i.width,n.height/i.height).translate(n.x,n.y),this.renderer.filter.transformAABB(r,e),e.fit(n),e.x=Math.round(e.x*t),e.y=Math.round(e.y*t),e.width=Math.round(e.width*t),e.height=Math.round(e.height*t))}push(e){e._scissorRectLocal||this.calcScissorRect(e);const{gl:t}=this.renderer;e._scissorRect||t.enable(t.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()}pop(e){const{gl:t}=this.renderer;e&&X0.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const e=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=e.y:t=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,t,e.width,e.height)}};i1.extension={type:Pe.RendererSystem,name:"scissor"};let tA=i1;Ne.add(tA);class s1 extends t1{constructor(e){super(e),this.glConst=ke.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0}push(e){const t=e.maskObject,{gl:i}=this.renderer,n=e._stencilCounter;n===0&&(this.renderer.framebuffer.forceStencil(),i.clearStencil(0),i.clear(i.STENCIL_BUFFER_BIT),i.enable(i.STENCIL_TEST)),e._stencilCounter++;const r=e._colorMask;r!==0&&(e._colorMask=0,i.colorMask(!1,!1,!1,!1)),i.stencilFunc(i.EQUAL,n,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.INCR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,r!==0&&(e._colorMask=r,i.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}pop(e){const t=this.renderer.gl;if(this.getStackLength()===0)t.disable(t.STENCIL_TEST);else{const i=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,n=i?i._colorMask:15;n!==0&&(i._colorMask=0,t.colorMask(!1,!1,!1,!1)),t.stencilOp(t.KEEP,t.KEEP,t.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,n!==0&&(i._colorMask=n,t.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}}_useCurrent(){const e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)}}s1.extension={type:Pe.RendererSystem,name:"stencil"};Ne.add(s1);class n1{constructor(e){this.renderer=e,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return ct("7.0.0","renderer.plugins.extract has moved to renderer.extract"),e.extract}},prepare:{enumerable:!1,get(){return ct("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),e.prepare}},interaction:{enumerable:!1,get(){return ct("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),e.events}}})}init(){const e=this.rendererPlugins;for(const t in e)this.plugins[t]=new e[t](this.renderer)}destroy(){for(const e in this.plugins)this.plugins[e].destroy(),this.plugins[e]=null}}n1.extension={type:[Pe.RendererSystem,Pe.CanvasRendererSystem],name:"_plugin"};Ne.add(n1);class r1{constructor(e){this.renderer=e,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new Bt,this.transform=null}update(e,t,i,n){this.destinationFrame=e||this.destinationFrame||this.defaultFrame,this.sourceFrame=t||this.sourceFrame||e,this.calculateProjection(this.destinationFrame,this.sourceFrame,i,n),this.transform&&this.projectionMatrix.append(this.transform);const r=this.renderer;r.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,r.globalUniforms.update(),r.shader.shader&&r.shader.syncUniformGroup(r.shader.shader.uniforms.globals)}calculateProjection(e,t,i,n){const r=this.projectionMatrix,o=n?-1:1;r.identity(),r.a=1/t.width*2,r.d=o*(1/t.height*2),r.tx=-1-t.x*r.a,r.ty=-o-t.y*r.d}setTransform(e){}destroy(){this.renderer=null}}r1.extension={type:Pe.RendererSystem,name:"projection"};Ne.add(r1);const iA=new Zm,V0=new nt;class o1{constructor(e){this.renderer=e,this._tempMatrix=new Bt}generateTexture(e,t){const{region:i,...n}=t||{},r=(i==null?void 0:i.copyTo(V0))||e.getLocalBounds(V0,!0),o=n.resolution||this.renderer.resolution;r.width=Math.max(r.width,1/o),r.height=Math.max(r.height,1/o),n.width=r.width,n.height=r.height,n.resolution=o,n.multisample??(n.multisample=this.renderer.multisample);const a=oo.create(n);this._tempMatrix.tx=-r.x,this._tempMatrix.ty=-r.y;const c=e.transform;return e.transform=iA,this.renderer.render(e,{renderTexture:a,transform:this._tempMatrix,skipUpdateTransform:!!e.parent,blit:!0}),e.transform=c,a}destroy(){}}o1.extension={type:[Pe.RendererSystem,Pe.CanvasRendererSystem],name:"textureGenerator"};Ne.add(o1);const Er=new nt,wa=new nt;class a1{constructor(e){this.renderer=e,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new nt,this.destinationFrame=new nt,this.viewportFrame=new nt}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(e=null,t,i){const n=this.renderer;this.current=e;let r,o,a;e?(r=e.baseTexture,a=r.resolution,t||(Er.width=e.frame.width,Er.height=e.frame.height,t=Er),i||(wa.x=e.frame.x,wa.y=e.frame.y,wa.width=t.width,wa.height=t.height,i=wa),o=r.framebuffer):(a=n.resolution,t||(Er.width=n._view.screen.width,Er.height=n._view.screen.height,t=Er),i||(i=Er,i.width=t.width,i.height=t.height));const c=this.viewportFrame;c.x=i.x*a,c.y=i.y*a,c.width=i.width*a,c.height=i.height*a,e||(c.y=n.view.height-(c.y+c.height)),c.ceil(),this.renderer.framebuffer.bind(o,c),this.renderer.projection.update(i,t,a,!o),e?this.renderer.mask.setMaskStack(r.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(t),this.destinationFrame.copyFrom(i)}clear(e,t){const i=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,n=St.shared.setValue(e||i);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&n.premultiply(n.alpha);const r=this.destinationFrame,o=this.current?this.current.baseTexture:this.renderer._view.screen,a=r.width!==o.width||r.height!==o.height;if(a){let{x:c,y:l,width:h,height:u}=this.viewportFrame;c=Math.round(c),l=Math.round(l),h=Math.round(h),u=Math.round(u),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(c,l,h,u)}this.renderer.framebuffer.clear(n.red,n.green,n.blue,n.alpha,t),a&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}a1.extension={type:Pe.RendererSystem,name:"renderTexture"};Ne.add(a1);class sA{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function nA(s,e){const t={},i=e.getProgramParameter(s,e.ACTIVE_ATTRIBUTES);for(let n=0;nl>h?1:-1);for(let l=0;l0?this.maskStack[this.maskStack.length-1]._colorMask:15;i!==t&&this.renderer.gl.colorMask((i&1)!==0,(i&2)!==0,(i&4)!==0,(i&8)!==0)}destroy(){this.renderer=null}}eb.extension={type:Pe.RendererSystem,name:"mask"};Ne.add(eb);class tb{constructor(e){this.renderer=e,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(e){const{gl:t}=this.renderer,i=this.getStackLength();this.maskStack=e;const n=this.getStackLength();n!==i&&(n===0?t.disable(this.glConst):(t.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const $0=new Bt,X0=[],ib=class xc extends tb{constructor(e){super(e),this.glConst=ke.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0}calcScissorRect(e){if(e._scissorRectLocal)return;const t=e._scissorRect,{maskObject:i}=e,{renderer:n}=this,r=n.renderTexture,o=i.getBounds(!0,X0.pop()??new nt);this.roundFrameToPixels(o,r.current?r.current.resolution:n.resolution,r.sourceFrame,r.destinationFrame,n.projection.transform),t&&o.fit(t),e._scissorRectLocal=o}static isMatrixRotated(e){if(!e)return!1;const{a:t,b:i,c:n,d:r}=e;return(Math.abs(i)>1e-4||Math.abs(n)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(r)>1e-4)}testScissor(e){const{maskObject:t}=e;if(!t.isFastRect||!t.isFastRect()||xc.isMatrixRotated(t.worldTransform)||xc.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);const i=e._scissorRectLocal;return i.width>0&&i.height>0}roundFrameToPixels(e,t,i,n,r){xc.isMatrixRotated(r)||(r=r?$0.copyFrom(r):$0.identity(),r.translate(-i.x,-i.y).scale(n.width/i.width,n.height/i.height).translate(n.x,n.y),this.renderer.filter.transformAABB(r,e),e.fit(n),e.x=Math.round(e.x*t),e.y=Math.round(e.y*t),e.width=Math.round(e.width*t),e.height=Math.round(e.height*t))}push(e){e._scissorRectLocal||this.calcScissorRect(e);const{gl:t}=this.renderer;e._scissorRect||t.enable(t.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()}pop(e){const{gl:t}=this.renderer;e&&X0.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const e=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=e.y:t=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,t,e.width,e.height)}};ib.extension={type:Pe.RendererSystem,name:"scissor"};let tA=ib;Ne.add(tA);class sb extends tb{constructor(e){super(e),this.glConst=ke.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0}push(e){const t=e.maskObject,{gl:i}=this.renderer,n=e._stencilCounter;n===0&&(this.renderer.framebuffer.forceStencil(),i.clearStencil(0),i.clear(i.STENCIL_BUFFER_BIT),i.enable(i.STENCIL_TEST)),e._stencilCounter++;const r=e._colorMask;r!==0&&(e._colorMask=0,i.colorMask(!1,!1,!1,!1)),i.stencilFunc(i.EQUAL,n,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.INCR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,r!==0&&(e._colorMask=r,i.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}pop(e){const t=this.renderer.gl;if(this.getStackLength()===0)t.disable(t.STENCIL_TEST);else{const i=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,n=i?i._colorMask:15;n!==0&&(i._colorMask=0,t.colorMask(!1,!1,!1,!1)),t.stencilOp(t.KEEP,t.KEEP,t.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,n!==0&&(i._colorMask=n,t.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}}_useCurrent(){const e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)}}sb.extension={type:Pe.RendererSystem,name:"stencil"};Ne.add(sb);class nb{constructor(e){this.renderer=e,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return ct("7.0.0","renderer.plugins.extract has moved to renderer.extract"),e.extract}},prepare:{enumerable:!1,get(){return ct("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),e.prepare}},interaction:{enumerable:!1,get(){return ct("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),e.events}}})}init(){const e=this.rendererPlugins;for(const t in e)this.plugins[t]=new e[t](this.renderer)}destroy(){for(const e in this.plugins)this.plugins[e].destroy(),this.plugins[e]=null}}nb.extension={type:[Pe.RendererSystem,Pe.CanvasRendererSystem],name:"_plugin"};Ne.add(nb);class rb{constructor(e){this.renderer=e,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new Bt,this.transform=null}update(e,t,i,n){this.destinationFrame=e||this.destinationFrame||this.defaultFrame,this.sourceFrame=t||this.sourceFrame||e,this.calculateProjection(this.destinationFrame,this.sourceFrame,i,n),this.transform&&this.projectionMatrix.append(this.transform);const r=this.renderer;r.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,r.globalUniforms.update(),r.shader.shader&&r.shader.syncUniformGroup(r.shader.shader.uniforms.globals)}calculateProjection(e,t,i,n){const r=this.projectionMatrix,o=n?-1:1;r.identity(),r.a=1/t.width*2,r.d=o*(1/t.height*2),r.tx=-1-t.x*r.a,r.ty=-o-t.y*r.d}setTransform(e){}destroy(){this.renderer=null}}rb.extension={type:Pe.RendererSystem,name:"projection"};Ne.add(rb);const iA=new Zm,V0=new nt;class ob{constructor(e){this.renderer=e,this._tempMatrix=new Bt}generateTexture(e,t){const{region:i,...n}=t||{},r=(i==null?void 0:i.copyTo(V0))||e.getLocalBounds(V0,!0),o=n.resolution||this.renderer.resolution;r.width=Math.max(r.width,1/o),r.height=Math.max(r.height,1/o),n.width=r.width,n.height=r.height,n.resolution=o,n.multisample??(n.multisample=this.renderer.multisample);const a=oo.create(n);this._tempMatrix.tx=-r.x,this._tempMatrix.ty=-r.y;const c=e.transform;return e.transform=iA,this.renderer.render(e,{renderTexture:a,transform:this._tempMatrix,skipUpdateTransform:!!e.parent,blit:!0}),e.transform=c,a}destroy(){}}ob.extension={type:[Pe.RendererSystem,Pe.CanvasRendererSystem],name:"textureGenerator"};Ne.add(ob);const Er=new nt,wa=new nt;class ab{constructor(e){this.renderer=e,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new nt,this.destinationFrame=new nt,this.viewportFrame=new nt}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(e=null,t,i){const n=this.renderer;this.current=e;let r,o,a;e?(r=e.baseTexture,a=r.resolution,t||(Er.width=e.frame.width,Er.height=e.frame.height,t=Er),i||(wa.x=e.frame.x,wa.y=e.frame.y,wa.width=t.width,wa.height=t.height,i=wa),o=r.framebuffer):(a=n.resolution,t||(Er.width=n._view.screen.width,Er.height=n._view.screen.height,t=Er),i||(i=Er,i.width=t.width,i.height=t.height));const c=this.viewportFrame;c.x=i.x*a,c.y=i.y*a,c.width=i.width*a,c.height=i.height*a,e||(c.y=n.view.height-(c.y+c.height)),c.ceil(),this.renderer.framebuffer.bind(o,c),this.renderer.projection.update(i,t,a,!o),e?this.renderer.mask.setMaskStack(r.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(t),this.destinationFrame.copyFrom(i)}clear(e,t){const i=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,n=St.shared.setValue(e||i);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&n.premultiply(n.alpha);const r=this.destinationFrame,o=this.current?this.current.baseTexture:this.renderer._view.screen,a=r.width!==o.width||r.height!==o.height;if(a){let{x:c,y:l,width:h,height:u}=this.viewportFrame;c=Math.round(c),l=Math.round(l),h=Math.round(h),u=Math.round(u),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(c,l,h,u)}this.renderer.framebuffer.clear(n.red,n.green,n.blue,n.alpha,t),a&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}ab.extension={type:Pe.RendererSystem,name:"renderTexture"};Ne.add(ab);class sA{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function nA(s,e){const t={},i=e.getProgramParameter(s,e.ACTIVE_ATTRIBUTES);for(let n=0;nl>h?1:-1);for(let l=0;l({data:r,offset:0,dataLen:0,dirty:0}));let t=0,i=0,n=0;for(let r=0;r1&&(t=Math.max(t,16)*o.data.size),o.dataLen=t,i%t!==0&&i<16){const a=i%t%16;i+=a,n+=a}i+t>16?(n=Math.ceil(n/16)*16,o.offset=n,n+=t,i=t):(o.offset=n,i+=t,n+=t)}return n=Math.ceil(n/16)*16,{uboElements:e,size:n}}function hA(s,e){const t=[];for(const i in s)e[i]&&t.push(e[i]);return t.sort((i,n)=>i.index-n.index),t}function uA(s,e){if(!s.autoManage)return{size:0,syncFunc:aA};const t=hA(s.uniforms,e),{uboElements:i,size:n}=cA(t),r=[` + `},lb={float:4,vec2:8,vec3:12,vec4:16,int:4,ivec2:8,ivec3:12,ivec4:16,uint:4,uvec2:8,uvec3:12,uvec4:16,bool:4,bvec2:8,bvec3:12,bvec4:16,mat2:32,mat3:48,mat4:64};function cA(s){const e=s.map(r=>({data:r,offset:0,dataLen:0,dirty:0}));let t=0,i=0,n=0;for(let r=0;r1&&(t=Math.max(t,16)*o.data.size),o.dataLen=t,i%t!==0&&i<16){const a=i%t%16;i+=a,n+=a}i+t>16?(n=Math.ceil(n/16)*16,o.offset=n,n+=t,i=t):(o.offset=n,i+=t,n+=t)}return n=Math.ceil(n/16)*16,{uboElements:e,size:n}}function hA(s,e){const t=[];for(const i in s)e[i]&&t.push(e[i]);return t.sort((i,n)=>i.index-n.index),t}function uA(s,e){if(!s.autoManage)return{size:0,syncFunc:aA};const t=hA(s.uniforms,e),{uboElements:i,size:n}=cA(t),r=[` var v = null; var v2 = null; var cv = null; @@ -484,7 +484,7 @@ void main(void) var gl = renderer.gl var index = 0; var data = buffer.data; - `];for(let o=0;o1){const u=Yx(a.data.type),d=Math.max(l1[a.data.type]/16,1),f=u/d,p=(4-f%4)%4;r.push(` + `];for(let o=0;o1){const u=Yx(a.data.type),d=Math.max(lb[a.data.type]/16,1),f=u/d,p=(4-f%4)%4;r.push(` cv = ud.${l}.value; v = uv.${l}; offset = ${a.offset/4}; @@ -508,7 +508,7 @@ void main(void) `)}}return r.push(` renderer.buffer.update(buffer); `),{size:n,syncFunc:new Function("ud","uv","renderer","syncData","buffer",r.join(` -`))}}let dA=0;const jl={textureCount:0,uboCount:0};class c1{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=dA++}systemCheck(){if(!NC())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,t){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;const i=e.program,n=i.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==i&&(this.program=i,this.gl.useProgram(n.program)),t||(jl.textureCount=0,jl.uboCount=0,this.syncUniformGroup(e.uniformGroup,jl)),n}setUniforms(e){const t=this.shader.program,i=t.glPrograms[this.renderer.CONTEXT_UID];t.syncUniforms(i.uniformData,e,this.renderer)}syncUniformGroup(e,t){const i=this.getGlProgram();(!e.static||e.dirtyId!==i.uniformDirtyGroups[e.id])&&(i.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,i,t))}syncUniforms(e,t,i){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(t.uniformData,e.uniforms,this.renderer,i)}createSyncGroups(e){const t=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[t]||(this.cache[t]=FC(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[t],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,t){const i=this.getGlProgram();if(!e.static||e.dirtyId!==0||!i.uniformGroups[e.id]){e.dirtyId=0;const n=i.uniformGroups[e.id]||this.createSyncBufferGroup(e,i,t);e.buffer.update(),n(i.uniformData,e.uniforms,this.renderer,jl,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,i.uniformBufferBindings[t])}createSyncBufferGroup(e,t,i){const{gl:n}=this.renderer;this.renderer.buffer.bind(e.buffer);const r=this.gl.getUniformBlockIndex(t.program,i);t.uniformBufferBindings[i]=this.shader.uniformBindCount,n.uniformBlockBinding(t.program,r,this.shader.uniformBindCount),this.shader.uniformBindCount++;const o=this.getSignature(e,this.shader.program.uniformData,"ubo");let a=this._uboCache[o];if(a||(a=this._uboCache[o]=uA(e,this.shader.program.uniformData)),e.autoManage){const c=new Float32Array(a.size/4);e.buffer.update(c)}return t.uniformGroups[e.id]=a.syncFunc,t.uniformGroups[e.id]}getSignature(e,t,i){const n=e.uniforms,r=[`${i}-`];for(const o in n)r.push(o),t[o]&&r.push(t[o].type);return r.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){const t=this.gl,i=e.program,n=oA(t,i);return i.glPrograms[this.renderer.CONTEXT_UID]=n,n}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}c1.extension={type:Pe.RendererSystem,name:"shader"};Ne.add(c1);class Kc{constructor(e){this.renderer=e}run(e){const{renderer:t}=this;t.runners.init.emit(t.options),e.hello&&console.log(`PixiJS 7.4.3 - ${t.rendererLogId} - https://pixijs.com`),t.resize(t.screen.width,t.screen.height)}destroy(){}}Kc.defaultOptions={hello:!1},Kc.extension={type:[Pe.RendererSystem,Pe.CanvasRendererSystem],name:"startup"};Ne.add(Kc);function fA(s,e=[]){return e[je.NORMAL]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.ADD]=[s.ONE,s.ONE],e[je.MULTIPLY]=[s.DST_COLOR,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.SCREEN]=[s.ONE,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.OVERLAY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.DARKEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.LIGHTEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.COLOR_DODGE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.COLOR_BURN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.HARD_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.SOFT_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.DIFFERENCE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.EXCLUSION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.HUE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.SATURATION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.COLOR]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.LUMINOSITY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.NONE]=[0,0],e[je.NORMAL_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.ADD_NPM]=[s.SRC_ALPHA,s.ONE,s.ONE,s.ONE],e[je.SCREEN_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.SRC_IN]=[s.DST_ALPHA,s.ZERO],e[je.SRC_OUT]=[s.ONE_MINUS_DST_ALPHA,s.ZERO],e[je.SRC_ATOP]=[s.DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[je.DST_OVER]=[s.ONE_MINUS_DST_ALPHA,s.ONE],e[je.DST_IN]=[s.ZERO,s.SRC_ALPHA],e[je.DST_OUT]=[s.ZERO,s.ONE_MINUS_SRC_ALPHA],e[je.DST_ATOP]=[s.ONE_MINUS_DST_ALPHA,s.SRC_ALPHA],e[je.XOR]=[s.ONE_MINUS_DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[je.SUBTRACT]=[s.ONE,s.ONE,s.ONE,s.ONE,s.FUNC_REVERSE_SUBTRACT,s.FUNC_ADD],e}const mA=0,pA=1,gA=2,vA=3,yA=4,xA=5,h1=class Of{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=je.NONE,this._blendEq=!1,this.map=[],this.map[mA]=this.setBlend,this.map[pA]=this.setOffset,this.map[gA]=this.setCullFace,this.map[vA]=this.setDepthTest,this.map[yA]=this.setFrontFace,this.map[xA]=this.setDepthMask,this.checks=[],this.defaultState=new ln,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=fA(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let t=this.stateId^e.data,i=0;for(;t;)t&1&&this.map[i].call(this,!!(e.data&1<>1,i++;this.stateId=e.data}for(let t=0;te.systems[n]),i=[...t,...Object.keys(e.systems).filter(n=>!t.includes(n))];for(const n of i)this.addSystem(e.systems[n],n)}addRunners(...e){e.forEach(t=>{this.runners[t]=new Rs(t)})}addSystem(e,t){const i=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=i,this._systemsHash[t]=i;for(const n in this.runners)this.runners[n].add(i);return this}emitWithCustomOptions(e,t){const i=Object.keys(this._systemsHash);e.items.forEach(n=>{const r=i.find(o=>this._systemsHash[o]===n);n[e.name](t[r])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}}const Pa=class bc{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=bc.defaultMaxIdle,this.checkCountMax=bc.defaultCheckCountMax,this.mode=bc.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==Wm.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const e=this.renderer.texture,t=e.managedTextures;let i=!1;for(let n=0;nthis.maxIdle&&(e.destroyTexture(r,!0),t[n]=null,i=!0)}if(i){let n=0;for(let r=0;r=0;n--)this.unload(e.children[n])}destroy(){this.renderer=null}};Pa.defaultMode=Wm.AUTO,Pa.defaultMaxIdle=3600,Pa.defaultCheckCountMax=600,Pa.extension={type:Pe.RendererSystem,name:"textureGC"};let Lr=Pa;Ne.add(Lr);class Od{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=De.UNSIGNED_BYTE,this.internalFormat=Se.RGBA,this.samplerType=0}}function SA(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[s.RGB]:Oe.FLOAT,[s.RGBA]:Oe.FLOAT,[s.ALPHA]:Oe.FLOAT,[s.LUMINANCE]:Oe.FLOAT,[s.LUMINANCE_ALPHA]:Oe.FLOAT,[s.R8]:Oe.FLOAT,[s.R8_SNORM]:Oe.FLOAT,[s.RG8]:Oe.FLOAT,[s.RG8_SNORM]:Oe.FLOAT,[s.RGB8]:Oe.FLOAT,[s.RGB8_SNORM]:Oe.FLOAT,[s.RGB565]:Oe.FLOAT,[s.RGBA4]:Oe.FLOAT,[s.RGB5_A1]:Oe.FLOAT,[s.RGBA8]:Oe.FLOAT,[s.RGBA8_SNORM]:Oe.FLOAT,[s.RGB10_A2]:Oe.FLOAT,[s.RGB10_A2UI]:Oe.FLOAT,[s.SRGB8]:Oe.FLOAT,[s.SRGB8_ALPHA8]:Oe.FLOAT,[s.R16F]:Oe.FLOAT,[s.RG16F]:Oe.FLOAT,[s.RGB16F]:Oe.FLOAT,[s.RGBA16F]:Oe.FLOAT,[s.R32F]:Oe.FLOAT,[s.RG32F]:Oe.FLOAT,[s.RGB32F]:Oe.FLOAT,[s.RGBA32F]:Oe.FLOAT,[s.R11F_G11F_B10F]:Oe.FLOAT,[s.RGB9_E5]:Oe.FLOAT,[s.R8I]:Oe.INT,[s.R8UI]:Oe.UINT,[s.R16I]:Oe.INT,[s.R16UI]:Oe.UINT,[s.R32I]:Oe.INT,[s.R32UI]:Oe.UINT,[s.RG8I]:Oe.INT,[s.RG8UI]:Oe.UINT,[s.RG16I]:Oe.INT,[s.RG16UI]:Oe.UINT,[s.RG32I]:Oe.INT,[s.RG32UI]:Oe.UINT,[s.RGB8I]:Oe.INT,[s.RGB8UI]:Oe.UINT,[s.RGB16I]:Oe.INT,[s.RGB16UI]:Oe.UINT,[s.RGB32I]:Oe.INT,[s.RGB32UI]:Oe.UINT,[s.RGBA8I]:Oe.INT,[s.RGBA8UI]:Oe.UINT,[s.RGBA16I]:Oe.INT,[s.RGBA16UI]:Oe.UINT,[s.RGBA32I]:Oe.INT,[s.RGBA32UI]:Oe.UINT,[s.DEPTH_COMPONENT16]:Oe.FLOAT,[s.DEPTH_COMPONENT24]:Oe.FLOAT,[s.DEPTH_COMPONENT32F]:Oe.FLOAT,[s.DEPTH_STENCIL]:Oe.FLOAT,[s.DEPTH24_STENCIL8]:Oe.FLOAT,[s.DEPTH32F_STENCIL8]:Oe.FLOAT}:e={[s.RGB]:Oe.FLOAT,[s.RGBA]:Oe.FLOAT,[s.ALPHA]:Oe.FLOAT,[s.LUMINANCE]:Oe.FLOAT,[s.LUMINANCE_ALPHA]:Oe.FLOAT,[s.DEPTH_STENCIL]:Oe.FLOAT},e}function _A(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[De.UNSIGNED_BYTE]:{[Se.RGBA]:s.RGBA8,[Se.RGB]:s.RGB8,[Se.RG]:s.RG8,[Se.RED]:s.R8,[Se.RGBA_INTEGER]:s.RGBA8UI,[Se.RGB_INTEGER]:s.RGB8UI,[Se.RG_INTEGER]:s.RG8UI,[Se.RED_INTEGER]:s.R8UI,[Se.ALPHA]:s.ALPHA,[Se.LUMINANCE]:s.LUMINANCE,[Se.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[De.BYTE]:{[Se.RGBA]:s.RGBA8_SNORM,[Se.RGB]:s.RGB8_SNORM,[Se.RG]:s.RG8_SNORM,[Se.RED]:s.R8_SNORM,[Se.RGBA_INTEGER]:s.RGBA8I,[Se.RGB_INTEGER]:s.RGB8I,[Se.RG_INTEGER]:s.RG8I,[Se.RED_INTEGER]:s.R8I},[De.UNSIGNED_SHORT]:{[Se.RGBA_INTEGER]:s.RGBA16UI,[Se.RGB_INTEGER]:s.RGB16UI,[Se.RG_INTEGER]:s.RG16UI,[Se.RED_INTEGER]:s.R16UI,[Se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT16},[De.SHORT]:{[Se.RGBA_INTEGER]:s.RGBA16I,[Se.RGB_INTEGER]:s.RGB16I,[Se.RG_INTEGER]:s.RG16I,[Se.RED_INTEGER]:s.R16I},[De.UNSIGNED_INT]:{[Se.RGBA_INTEGER]:s.RGBA32UI,[Se.RGB_INTEGER]:s.RGB32UI,[Se.RG_INTEGER]:s.RG32UI,[Se.RED_INTEGER]:s.R32UI,[Se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT24},[De.INT]:{[Se.RGBA_INTEGER]:s.RGBA32I,[Se.RGB_INTEGER]:s.RGB32I,[Se.RG_INTEGER]:s.RG32I,[Se.RED_INTEGER]:s.R32I},[De.FLOAT]:{[Se.RGBA]:s.RGBA32F,[Se.RGB]:s.RGB32F,[Se.RG]:s.RG32F,[Se.RED]:s.R32F,[Se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT32F},[De.HALF_FLOAT]:{[Se.RGBA]:s.RGBA16F,[Se.RGB]:s.RGB16F,[Se.RG]:s.RG16F,[Se.RED]:s.R16F},[De.UNSIGNED_SHORT_5_6_5]:{[Se.RGB]:s.RGB565},[De.UNSIGNED_SHORT_4_4_4_4]:{[Se.RGBA]:s.RGBA4},[De.UNSIGNED_SHORT_5_5_5_1]:{[Se.RGBA]:s.RGB5_A1},[De.UNSIGNED_INT_2_10_10_10_REV]:{[Se.RGBA]:s.RGB10_A2,[Se.RGBA_INTEGER]:s.RGB10_A2UI},[De.UNSIGNED_INT_10F_11F_11F_REV]:{[Se.RGB]:s.R11F_G11F_B10F},[De.UNSIGNED_INT_5_9_9_9_REV]:{[Se.RGB]:s.RGB9_E5},[De.UNSIGNED_INT_24_8]:{[Se.DEPTH_STENCIL]:s.DEPTH24_STENCIL8},[De.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[Se.DEPTH_STENCIL]:s.DEPTH32F_STENCIL8}}:e={[De.UNSIGNED_BYTE]:{[Se.RGBA]:s.RGBA,[Se.RGB]:s.RGB,[Se.ALPHA]:s.ALPHA,[Se.LUMINANCE]:s.LUMINANCE,[Se.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[De.UNSIGNED_SHORT_5_6_5]:{[Se.RGB]:s.RGB},[De.UNSIGNED_SHORT_4_4_4_4]:{[Se.RGBA]:s.RGBA},[De.UNSIGNED_SHORT_5_5_5_1]:{[Se.RGBA]:s.RGBA}},e}class u1{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new Je,this.hasIntegerTextures=!1}contextChange(){const e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=_A(e),this.samplerTypes=SA(e);const t=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=t;for(let n=0;n=0;--r){const o=t[r];o&&o._glTextures[n].samplerType!==Oe.FLOAT&&this.renderer.texture.unbind(o)}}initTexture(e){const t=new Od(this.gl.createTexture());return t.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=t,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),t}initTextureType(e,t){var i;t.internalFormat=((i=this.internalFormats[e.type])==null?void 0:i[e.format])??e.format,t.samplerType=this.samplerTypes[t.internalFormat]??Oe.FLOAT,this.webGLVersion===2&&e.type===De.HALF_FLOAT?t.type=this.gl.HALF_FLOAT:t.type=e.type}updateTexture(e){var n;const t=e._glTextures[this.CONTEXT_UID];if(!t)return;const i=this.renderer;if(this.initTextureType(e,t),(n=e.resource)==null?void 0:n.upload(i,e,t))t.samplerType!==Oe.FLOAT&&(this.hasIntegerTextures=!0);else{const r=e.realWidth,o=e.realHeight,a=i.gl;(t.width!==r||t.height!==o||t.dirtyId<0)&&(t.width=r,t.height=o,a.texImage2D(e.target,0,t.internalFormat,r,o,0,e.format,t.type,null))}e.dirtyStyleId!==t.dirtyStyleId&&this.updateTextureStyle(e),t.dirtyId=e.dirtyId}destroyTexture(e,t){const{gl:i}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),i.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!t)){const n=this.managedTextures.indexOf(e);n!==-1&&Xo(this.managedTextures,n,1)}}updateTextureStyle(e){var i;const t=e._glTextures[this.CONTEXT_UID];t&&((e.mipmap===gs.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?t.mipmap=!1:t.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?t.wrapMode=Is.CLAMP:t.wrapMode=e.wrapMode,(i=e.resource)!=null&&i.style(this.renderer,e,t)||this.setStyle(e,t),t.dirtyStyleId=e.dirtyStyleId)}setStyle(e,t){const i=this.gl;if(t.mipmap&&e.mipmap!==gs.ON_MANUAL&&i.generateMipmap(e.target),i.texParameteri(e.target,i.TEXTURE_WRAP_S,t.wrapMode),i.texParameteri(e.target,i.TEXTURE_WRAP_T,t.wrapMode),t.mipmap){i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===Cs.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);const n=this.renderer.context.extensions.anisotropicFiltering;if(n&&e.anisotropicLevel>0&&e.scaleMode===Cs.LINEAR){const r=Math.min(e.anisotropicLevel,i.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(e.target,n.TEXTURE_MAX_ANISOTROPY_EXT,r)}}else i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===Cs.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(e.target,i.TEXTURE_MAG_FILTER,e.scaleMode===Cs.LINEAR?i.LINEAR:i.NEAREST)}destroy(){this.renderer=null}}u1.extension={type:Pe.RendererSystem,name:"texture"};Ne.add(u1);class d1{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glTransformFeedbacks[i]||this.createGLTransformFeedback(e);t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,n)}unbind(){const{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,t){const{gl:i,renderer:n}=this;t&&n.shader.bind(t),i.beginTransformFeedback(e)}endTransformFeedback(){const{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){const{gl:t,renderer:i,CONTEXT_UID:n}=this,r=t.createTransformFeedback();e._glTransformFeedbacks[n]=r,t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,r);for(let o=0;o(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(to||{});class Bd{constructor(e,t=null,i=0,n=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=t,this.priority=i,this.once=n}match(e,t=null){return this.fn===e&&this.context===t}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));const t=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const f1=class Ji{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new Bd(null,null,1/0),this.deltaMS=1/Ji.targetFPMS,this.elapsedMS=1/Ji.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,i=to.NORMAL){return this._addListener(new Bd(e,t,i))}addOnce(e,t,i=to.NORMAL){return this._addListener(new Bd(e,t,i,!0))}_addListener(e){let t=this._head.next,i=this._head;if(!t)e.connect(i);else{for(;t;){if(e.priority>t.priority){e.connect(i);break}i=t,t=t.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,t){let i=this._head.next;for(;i;)i.match(e,t)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const r=e-this._lastFrame|0;if(r{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?$i.shared:new $i,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}m1.extension=Pe.Application;Ne.add(m1);const p1=[];Ne.handleByList(Pe.Renderer,p1);function TA(s){for(const e of p1)if(e.test(s))return new e(s);throw new Error("Unable to auto-detect a suitable renderer.")}var MA=`attribute vec2 aVertexPosition; +`))}}let dA=0;const jl={textureCount:0,uboCount:0};class cb{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=dA++}systemCheck(){if(!NC())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,t){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;const i=e.program,n=i.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==i&&(this.program=i,this.gl.useProgram(n.program)),t||(jl.textureCount=0,jl.uboCount=0,this.syncUniformGroup(e.uniformGroup,jl)),n}setUniforms(e){const t=this.shader.program,i=t.glPrograms[this.renderer.CONTEXT_UID];t.syncUniforms(i.uniformData,e,this.renderer)}syncUniformGroup(e,t){const i=this.getGlProgram();(!e.static||e.dirtyId!==i.uniformDirtyGroups[e.id])&&(i.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,i,t))}syncUniforms(e,t,i){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(t.uniformData,e.uniforms,this.renderer,i)}createSyncGroups(e){const t=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[t]||(this.cache[t]=FC(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[t],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,t){const i=this.getGlProgram();if(!e.static||e.dirtyId!==0||!i.uniformGroups[e.id]){e.dirtyId=0;const n=i.uniformGroups[e.id]||this.createSyncBufferGroup(e,i,t);e.buffer.update(),n(i.uniformData,e.uniforms,this.renderer,jl,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,i.uniformBufferBindings[t])}createSyncBufferGroup(e,t,i){const{gl:n}=this.renderer;this.renderer.buffer.bind(e.buffer);const r=this.gl.getUniformBlockIndex(t.program,i);t.uniformBufferBindings[i]=this.shader.uniformBindCount,n.uniformBlockBinding(t.program,r,this.shader.uniformBindCount),this.shader.uniformBindCount++;const o=this.getSignature(e,this.shader.program.uniformData,"ubo");let a=this._uboCache[o];if(a||(a=this._uboCache[o]=uA(e,this.shader.program.uniformData)),e.autoManage){const c=new Float32Array(a.size/4);e.buffer.update(c)}return t.uniformGroups[e.id]=a.syncFunc,t.uniformGroups[e.id]}getSignature(e,t,i){const n=e.uniforms,r=[`${i}-`];for(const o in n)r.push(o),t[o]&&r.push(t[o].type);return r.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){const t=this.gl,i=e.program,n=oA(t,i);return i.glPrograms[this.renderer.CONTEXT_UID]=n,n}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}cb.extension={type:Pe.RendererSystem,name:"shader"};Ne.add(cb);class Kc{constructor(e){this.renderer=e}run(e){const{renderer:t}=this;t.runners.init.emit(t.options),e.hello&&console.log(`PixiJS 7.4.3 - ${t.rendererLogId} - https://pixijs.com`),t.resize(t.screen.width,t.screen.height)}destroy(){}}Kc.defaultOptions={hello:!1},Kc.extension={type:[Pe.RendererSystem,Pe.CanvasRendererSystem],name:"startup"};Ne.add(Kc);function fA(s,e=[]){return e[je.NORMAL]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.ADD]=[s.ONE,s.ONE],e[je.MULTIPLY]=[s.DST_COLOR,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.SCREEN]=[s.ONE,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.OVERLAY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.DARKEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.LIGHTEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.COLOR_DODGE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.COLOR_BURN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.HARD_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.SOFT_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.DIFFERENCE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.EXCLUSION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.HUE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.SATURATION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.COLOR]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.LUMINOSITY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.NONE]=[0,0],e[je.NORMAL_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.ADD_NPM]=[s.SRC_ALPHA,s.ONE,s.ONE,s.ONE],e[je.SCREEN_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[je.SRC_IN]=[s.DST_ALPHA,s.ZERO],e[je.SRC_OUT]=[s.ONE_MINUS_DST_ALPHA,s.ZERO],e[je.SRC_ATOP]=[s.DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[je.DST_OVER]=[s.ONE_MINUS_DST_ALPHA,s.ONE],e[je.DST_IN]=[s.ZERO,s.SRC_ALPHA],e[je.DST_OUT]=[s.ZERO,s.ONE_MINUS_SRC_ALPHA],e[je.DST_ATOP]=[s.ONE_MINUS_DST_ALPHA,s.SRC_ALPHA],e[je.XOR]=[s.ONE_MINUS_DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[je.SUBTRACT]=[s.ONE,s.ONE,s.ONE,s.ONE,s.FUNC_REVERSE_SUBTRACT,s.FUNC_ADD],e}const mA=0,pA=1,gA=2,vA=3,yA=4,xA=5,hb=class Of{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=je.NONE,this._blendEq=!1,this.map=[],this.map[mA]=this.setBlend,this.map[pA]=this.setOffset,this.map[gA]=this.setCullFace,this.map[vA]=this.setDepthTest,this.map[yA]=this.setFrontFace,this.map[xA]=this.setDepthMask,this.checks=[],this.defaultState=new ln,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=fA(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let t=this.stateId^e.data,i=0;for(;t;)t&1&&this.map[i].call(this,!!(e.data&1<>1,i++;this.stateId=e.data}for(let t=0;te.systems[n]),i=[...t,...Object.keys(e.systems).filter(n=>!t.includes(n))];for(const n of i)this.addSystem(e.systems[n],n)}addRunners(...e){e.forEach(t=>{this.runners[t]=new Rs(t)})}addSystem(e,t){const i=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=i,this._systemsHash[t]=i;for(const n in this.runners)this.runners[n].add(i);return this}emitWithCustomOptions(e,t){const i=Object.keys(this._systemsHash);e.items.forEach(n=>{const r=i.find(o=>this._systemsHash[o]===n);n[e.name](t[r])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}}const Pa=class bc{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=bc.defaultMaxIdle,this.checkCountMax=bc.defaultCheckCountMax,this.mode=bc.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==Wm.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const e=this.renderer.texture,t=e.managedTextures;let i=!1;for(let n=0;nthis.maxIdle&&(e.destroyTexture(r,!0),t[n]=null,i=!0)}if(i){let n=0;for(let r=0;r=0;n--)this.unload(e.children[n])}destroy(){this.renderer=null}};Pa.defaultMode=Wm.AUTO,Pa.defaultMaxIdle=3600,Pa.defaultCheckCountMax=600,Pa.extension={type:Pe.RendererSystem,name:"textureGC"};let Lr=Pa;Ne.add(Lr);class Od{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=De.UNSIGNED_BYTE,this.internalFormat=Se.RGBA,this.samplerType=0}}function SA(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[s.RGB]:Oe.FLOAT,[s.RGBA]:Oe.FLOAT,[s.ALPHA]:Oe.FLOAT,[s.LUMINANCE]:Oe.FLOAT,[s.LUMINANCE_ALPHA]:Oe.FLOAT,[s.R8]:Oe.FLOAT,[s.R8_SNORM]:Oe.FLOAT,[s.RG8]:Oe.FLOAT,[s.RG8_SNORM]:Oe.FLOAT,[s.RGB8]:Oe.FLOAT,[s.RGB8_SNORM]:Oe.FLOAT,[s.RGB565]:Oe.FLOAT,[s.RGBA4]:Oe.FLOAT,[s.RGB5_A1]:Oe.FLOAT,[s.RGBA8]:Oe.FLOAT,[s.RGBA8_SNORM]:Oe.FLOAT,[s.RGB10_A2]:Oe.FLOAT,[s.RGB10_A2UI]:Oe.FLOAT,[s.SRGB8]:Oe.FLOAT,[s.SRGB8_ALPHA8]:Oe.FLOAT,[s.R16F]:Oe.FLOAT,[s.RG16F]:Oe.FLOAT,[s.RGB16F]:Oe.FLOAT,[s.RGBA16F]:Oe.FLOAT,[s.R32F]:Oe.FLOAT,[s.RG32F]:Oe.FLOAT,[s.RGB32F]:Oe.FLOAT,[s.RGBA32F]:Oe.FLOAT,[s.R11F_G11F_B10F]:Oe.FLOAT,[s.RGB9_E5]:Oe.FLOAT,[s.R8I]:Oe.INT,[s.R8UI]:Oe.UINT,[s.R16I]:Oe.INT,[s.R16UI]:Oe.UINT,[s.R32I]:Oe.INT,[s.R32UI]:Oe.UINT,[s.RG8I]:Oe.INT,[s.RG8UI]:Oe.UINT,[s.RG16I]:Oe.INT,[s.RG16UI]:Oe.UINT,[s.RG32I]:Oe.INT,[s.RG32UI]:Oe.UINT,[s.RGB8I]:Oe.INT,[s.RGB8UI]:Oe.UINT,[s.RGB16I]:Oe.INT,[s.RGB16UI]:Oe.UINT,[s.RGB32I]:Oe.INT,[s.RGB32UI]:Oe.UINT,[s.RGBA8I]:Oe.INT,[s.RGBA8UI]:Oe.UINT,[s.RGBA16I]:Oe.INT,[s.RGBA16UI]:Oe.UINT,[s.RGBA32I]:Oe.INT,[s.RGBA32UI]:Oe.UINT,[s.DEPTH_COMPONENT16]:Oe.FLOAT,[s.DEPTH_COMPONENT24]:Oe.FLOAT,[s.DEPTH_COMPONENT32F]:Oe.FLOAT,[s.DEPTH_STENCIL]:Oe.FLOAT,[s.DEPTH24_STENCIL8]:Oe.FLOAT,[s.DEPTH32F_STENCIL8]:Oe.FLOAT}:e={[s.RGB]:Oe.FLOAT,[s.RGBA]:Oe.FLOAT,[s.ALPHA]:Oe.FLOAT,[s.LUMINANCE]:Oe.FLOAT,[s.LUMINANCE_ALPHA]:Oe.FLOAT,[s.DEPTH_STENCIL]:Oe.FLOAT},e}function _A(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[De.UNSIGNED_BYTE]:{[Se.RGBA]:s.RGBA8,[Se.RGB]:s.RGB8,[Se.RG]:s.RG8,[Se.RED]:s.R8,[Se.RGBA_INTEGER]:s.RGBA8UI,[Se.RGB_INTEGER]:s.RGB8UI,[Se.RG_INTEGER]:s.RG8UI,[Se.RED_INTEGER]:s.R8UI,[Se.ALPHA]:s.ALPHA,[Se.LUMINANCE]:s.LUMINANCE,[Se.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[De.BYTE]:{[Se.RGBA]:s.RGBA8_SNORM,[Se.RGB]:s.RGB8_SNORM,[Se.RG]:s.RG8_SNORM,[Se.RED]:s.R8_SNORM,[Se.RGBA_INTEGER]:s.RGBA8I,[Se.RGB_INTEGER]:s.RGB8I,[Se.RG_INTEGER]:s.RG8I,[Se.RED_INTEGER]:s.R8I},[De.UNSIGNED_SHORT]:{[Se.RGBA_INTEGER]:s.RGBA16UI,[Se.RGB_INTEGER]:s.RGB16UI,[Se.RG_INTEGER]:s.RG16UI,[Se.RED_INTEGER]:s.R16UI,[Se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT16},[De.SHORT]:{[Se.RGBA_INTEGER]:s.RGBA16I,[Se.RGB_INTEGER]:s.RGB16I,[Se.RG_INTEGER]:s.RG16I,[Se.RED_INTEGER]:s.R16I},[De.UNSIGNED_INT]:{[Se.RGBA_INTEGER]:s.RGBA32UI,[Se.RGB_INTEGER]:s.RGB32UI,[Se.RG_INTEGER]:s.RG32UI,[Se.RED_INTEGER]:s.R32UI,[Se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT24},[De.INT]:{[Se.RGBA_INTEGER]:s.RGBA32I,[Se.RGB_INTEGER]:s.RGB32I,[Se.RG_INTEGER]:s.RG32I,[Se.RED_INTEGER]:s.R32I},[De.FLOAT]:{[Se.RGBA]:s.RGBA32F,[Se.RGB]:s.RGB32F,[Se.RG]:s.RG32F,[Se.RED]:s.R32F,[Se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT32F},[De.HALF_FLOAT]:{[Se.RGBA]:s.RGBA16F,[Se.RGB]:s.RGB16F,[Se.RG]:s.RG16F,[Se.RED]:s.R16F},[De.UNSIGNED_SHORT_5_6_5]:{[Se.RGB]:s.RGB565},[De.UNSIGNED_SHORT_4_4_4_4]:{[Se.RGBA]:s.RGBA4},[De.UNSIGNED_SHORT_5_5_5_1]:{[Se.RGBA]:s.RGB5_A1},[De.UNSIGNED_INT_2_10_10_10_REV]:{[Se.RGBA]:s.RGB10_A2,[Se.RGBA_INTEGER]:s.RGB10_A2UI},[De.UNSIGNED_INT_10F_11F_11F_REV]:{[Se.RGB]:s.R11F_G11F_B10F},[De.UNSIGNED_INT_5_9_9_9_REV]:{[Se.RGB]:s.RGB9_E5},[De.UNSIGNED_INT_24_8]:{[Se.DEPTH_STENCIL]:s.DEPTH24_STENCIL8},[De.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[Se.DEPTH_STENCIL]:s.DEPTH32F_STENCIL8}}:e={[De.UNSIGNED_BYTE]:{[Se.RGBA]:s.RGBA,[Se.RGB]:s.RGB,[Se.ALPHA]:s.ALPHA,[Se.LUMINANCE]:s.LUMINANCE,[Se.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[De.UNSIGNED_SHORT_5_6_5]:{[Se.RGB]:s.RGB},[De.UNSIGNED_SHORT_4_4_4_4]:{[Se.RGBA]:s.RGBA},[De.UNSIGNED_SHORT_5_5_5_1]:{[Se.RGBA]:s.RGBA}},e}class ub{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new Je,this.hasIntegerTextures=!1}contextChange(){const e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=_A(e),this.samplerTypes=SA(e);const t=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=t;for(let n=0;n=0;--r){const o=t[r];o&&o._glTextures[n].samplerType!==Oe.FLOAT&&this.renderer.texture.unbind(o)}}initTexture(e){const t=new Od(this.gl.createTexture());return t.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=t,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),t}initTextureType(e,t){var i;t.internalFormat=((i=this.internalFormats[e.type])==null?void 0:i[e.format])??e.format,t.samplerType=this.samplerTypes[t.internalFormat]??Oe.FLOAT,this.webGLVersion===2&&e.type===De.HALF_FLOAT?t.type=this.gl.HALF_FLOAT:t.type=e.type}updateTexture(e){var n;const t=e._glTextures[this.CONTEXT_UID];if(!t)return;const i=this.renderer;if(this.initTextureType(e,t),(n=e.resource)==null?void 0:n.upload(i,e,t))t.samplerType!==Oe.FLOAT&&(this.hasIntegerTextures=!0);else{const r=e.realWidth,o=e.realHeight,a=i.gl;(t.width!==r||t.height!==o||t.dirtyId<0)&&(t.width=r,t.height=o,a.texImage2D(e.target,0,t.internalFormat,r,o,0,e.format,t.type,null))}e.dirtyStyleId!==t.dirtyStyleId&&this.updateTextureStyle(e),t.dirtyId=e.dirtyId}destroyTexture(e,t){const{gl:i}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),i.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!t)){const n=this.managedTextures.indexOf(e);n!==-1&&Xo(this.managedTextures,n,1)}}updateTextureStyle(e){var i;const t=e._glTextures[this.CONTEXT_UID];t&&((e.mipmap===gs.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?t.mipmap=!1:t.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?t.wrapMode=Is.CLAMP:t.wrapMode=e.wrapMode,(i=e.resource)!=null&&i.style(this.renderer,e,t)||this.setStyle(e,t),t.dirtyStyleId=e.dirtyStyleId)}setStyle(e,t){const i=this.gl;if(t.mipmap&&e.mipmap!==gs.ON_MANUAL&&i.generateMipmap(e.target),i.texParameteri(e.target,i.TEXTURE_WRAP_S,t.wrapMode),i.texParameteri(e.target,i.TEXTURE_WRAP_T,t.wrapMode),t.mipmap){i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===Cs.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);const n=this.renderer.context.extensions.anisotropicFiltering;if(n&&e.anisotropicLevel>0&&e.scaleMode===Cs.LINEAR){const r=Math.min(e.anisotropicLevel,i.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(e.target,n.TEXTURE_MAX_ANISOTROPY_EXT,r)}}else i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===Cs.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(e.target,i.TEXTURE_MAG_FILTER,e.scaleMode===Cs.LINEAR?i.LINEAR:i.NEAREST)}destroy(){this.renderer=null}}ub.extension={type:Pe.RendererSystem,name:"texture"};Ne.add(ub);class db{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glTransformFeedbacks[i]||this.createGLTransformFeedback(e);t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,n)}unbind(){const{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,t){const{gl:i,renderer:n}=this;t&&n.shader.bind(t),i.beginTransformFeedback(e)}endTransformFeedback(){const{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){const{gl:t,renderer:i,CONTEXT_UID:n}=this,r=t.createTransformFeedback();e._glTransformFeedbacks[n]=r,t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,r);for(let o=0;o(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(to||{});class Bd{constructor(e,t=null,i=0,n=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=t,this.priority=i,this.once=n}match(e,t=null){return this.fn===e&&this.context===t}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));const t=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const fb=class Ji{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new Bd(null,null,1/0),this.deltaMS=1/Ji.targetFPMS,this.elapsedMS=1/Ji.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,i=to.NORMAL){return this._addListener(new Bd(e,t,i))}addOnce(e,t,i=to.NORMAL){return this._addListener(new Bd(e,t,i,!0))}_addListener(e){let t=this._head.next,i=this._head;if(!t)e.connect(i);else{for(;t;){if(e.priority>t.priority){e.connect(i);break}i=t,t=t.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,t){let i=this._head.next;for(;i;)i.match(e,t)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const r=e-this._lastFrame|0;if(r{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?$i.shared:new $i,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}mb.extension=Pe.Application;Ne.add(mb);const pb=[];Ne.handleByList(Pe.Renderer,pb);function TA(s){for(const e of pb)if(e.test(s))return new e(s);throw new Error("Unable to auto-detect a suitable renderer.")}var MA=`attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; uniform mat3 projectionMatrix; @@ -545,7 +545,7 @@ void main(void) gl_Position = filterVertexPosition(); vTextureCoord = filterTextureCoord(); } -`;const AA=MA,g1=CA;class v1{constructor(e){this.renderer=e}contextChange(e){let t;if(this.renderer.context.webGLVersion===1){const i=e.getParameter(e.FRAMEBUFFER_BINDING);e.bindFramebuffer(e.FRAMEBUFFER,null),t=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.FRAMEBUFFER,i)}else{const i=e.getParameter(e.DRAW_FRAMEBUFFER_BINDING);e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),t=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,i)}t>=ni.HIGH?this.multisample=ni.HIGH:t>=ni.MEDIUM?this.multisample=ni.MEDIUM:t>=ni.LOW?this.multisample=ni.LOW:this.multisample=ni.NONE}destroy(){}}v1.extension={type:Pe.RendererSystem,name:"_multisample"};Ne.add(v1);class EA{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class y1{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glBuffers[i]||this.createGLBuffer(e);t.bindBuffer(e.type,n.buffer)}unbind(e){const{gl:t}=this;t.bindBuffer(e,null)}bindBufferBase(e,t){const{gl:i,CONTEXT_UID:n}=this;if(this.boundBufferBases[t]!==e){const r=e._glBuffers[n]||this.createGLBuffer(e);this.boundBufferBases[t]=e,i.bindBufferBase(i.UNIFORM_BUFFER,t,r.buffer)}}bindBufferRange(e,t,i){const{gl:n,CONTEXT_UID:r}=this;i=i||0;const o=e._glBuffers[r]||this.createGLBuffer(e);n.bindBufferRange(n.UNIFORM_BUFFER,t||0,o.buffer,i*256,256)}update(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glBuffers[i]||this.createGLBuffer(e);if(e._updateID!==n.updateID)if(n.updateID=e._updateID,t.bindBuffer(e.type,n.buffer),n.byteLength>=e.data.byteLength)t.bufferSubData(e.type,0,e.data);else{const r=e.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;n.byteLength=e.data.byteLength,t.bufferData(e.type,e.data,r)}}dispose(e,t){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];const i=e._glBuffers[this.CONTEXT_UID],n=this.gl;e.disposeRunner.remove(this),i&&(t||n.deleteBuffer(i.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){const t=Object.keys(this.managedBuffers);for(let i=0;it.resource).filter(t=>t).map(t=>t.load());return this._load=Promise.all(e).then(()=>{const{realWidth:t,realHeight:i}=this.items[0];return this.resize(t,i),this.update(),Promise.resolve(this)}),this._load}}class IA extends b1{constructor(e,t){const{width:i,height:n}=t||{};let r,o;Array.isArray(e)?(r=e,o=e.length):o=e,super(o,{width:i,height:n}),r&&this.initFromArray(r,t)}addBaseTextureAt(e,t){if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=$o.TEXTURE_2D_ARRAY}upload(e,t,i){const{length:n,itemDirtyIds:r,items:o}=this,{gl:a}=e;i.dirtyId<0&&a.texImage3D(a.TEXTURE_2D_ARRAY,0,i.internalFormat,this._width,this._height,n,0,t.format,i.type,null);for(let c=0;c0)if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=$o.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.parentTextureArray=this.baseTexture,this.items[t]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[t]=e,this}upload(e,t,i){const n=this.itemDirtyIds;for(let r=0;r{if(this.url===null){e(this);return}try{const i=await ke.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const n=await i.blob();if(this.destroyed)return;const r=await createImageBitmap(n,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===mi.UNPACK?"premultiply":"none"});if(this.destroyed){r.close();return}this.source=r,this.update(),e(this)}catch(i){if(this.destroyed)return;t(i),this.onError.emit(i)}}),this._load)}upload(e,t,i){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),super.upload(e,t,i)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return Po._EMPTY=Po._EMPTY??ke.ADAPTER.createCanvas(0,0),Po._EMPTY}}const Lf=class Sc extends Nn{constructor(e,t){t=t||{},super(ke.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},Sc.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const e=new Image;Nn.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=t=>{this._resolve&&(e.onerror=null,this.onError.emit(t))},e.onload=()=>{if(!this._resolve)return;const t=e.width,i=e.height;if(!t||!i)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let n=t*this.scale,r=i*this.scale;(this._overrideWidth||this._overrideHeight)&&(n=this._overrideWidth||this._overrideHeight/i*t,r=this._overrideHeight||this._overrideWidth/t*i),n=Math.round(n),r=Math.round(r);const o=this.source;o.width=n,o.height=r,o._pixiId=`canvas_${eo()}`,o.getContext("2d").drawImage(e,0,0,t,i,0,0,n,r),this._resolve(),this._resolve=null}}static getSize(e){const t=Sc.SVG_SIZE.exec(e),i={};return t&&(i[t[1]]=Math.round(parseFloat(t[3])),i[t[5]]=Math.round(parseFloat(t[7]))),i}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,t){return t==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&Sc.SVG_XML.test(e)}};Lf.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;let Df=Lf;class kA extends Nn{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}}const Nf=class Uf extends Nn{constructor(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){const i=document.createElement("video");t.autoLoad!==!1&&i.setAttribute("preload","auto"),t.playsinline!==!1&&(i.setAttribute("webkit-playsinline",""),i.setAttribute("playsinline","")),t.muted===!0&&(i.setAttribute("muted",""),i.muted=!0),t.loop===!0&&i.setAttribute("loop",""),t.autoPlay!==!1&&i.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);const n=e[0].src||e[0];Nn.crossOrigin(i,n,t.crossorigin);for(let r=0;r{this.valid?t(this):(this._resolve=t,this._reject=i,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!t&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&($i.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||($i.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&($i.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,t){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||Uf.TYPES.includes(t)}};Nf.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],Nf.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let S1=Nf;Mf.push(Po,zx,RA,S1,kA,Df,Kh,PA,IA);class al{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(e){return this.minX>this.maxX||this.minY>this.maxY?nt.EMPTY:(e=e||new nt(0,0,1,1),e.x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)}addPoint(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)}addPointMatrix(e,t){const{a:i,b:n,c:r,d:o,tx:a,ty:c}=e,l=i*t.x+r*t.y+a,h=n*t.x+o*t.y+c;this.minX=Math.min(this.minX,l),this.maxX=Math.max(this.maxX,l),this.minY=Math.min(this.minY,h),this.maxY=Math.max(this.maxY,h)}addQuad(e){let t=this.minX,i=this.minY,n=this.maxX,r=this.maxY,o=e[0],a=e[1];t=on?o:n,r=a>r?a:r,o=e[2],a=e[3],t=on?o:n,r=a>r?a:r,o=e[4],a=e[5],t=on?o:n,r=a>r?a:r,o=e[6],a=e[7],t=on?o:n,r=a>r?a:r,this.minX=t,this.minY=i,this.maxX=n,this.maxY=r}addFrame(e,t,i,n,r){this.addFrameMatrix(e.worldTransform,t,i,n,r)}addFrameMatrix(e,t,i,n,r){const o=e.a,a=e.b,c=e.c,l=e.d,h=e.tx,u=e.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=o*t+c*i+h,v=a*t+l*i+u;d=gp?g:p,m=v>m?v:m,g=o*n+c*i+h,v=a*n+l*i+u,d=gp?g:p,m=v>m?v:m,g=o*t+c*r+h,v=a*t+l*r+u,d=gp?g:p,m=v>m?v:m,g=o*n+c*r+h,v=a*n+l*r+u,d=gp?g:p,m=v>m?v:m,this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addVertexData(e,t,i){let n=this.minX,r=this.minY,o=this.maxX,a=this.maxY;for(let c=t;co?l:o,a=h>a?h:a}this.minX=n,this.minY=r,this.maxX=o,this.maxY=a}addVertices(e,t,i,n){this.addVerticesMatrix(e.worldTransform,t,i,n)}addVerticesMatrix(e,t,i,n,r=0,o=r){const a=e.a,c=e.b,l=e.c,h=e.d,u=e.tx,d=e.ty;let f=this.minX,p=this.minY,m=this.maxX,g=this.maxY;for(let v=i;vn?e.maxX:n,this.maxY=e.maxY>r?e.maxY:r}addBoundsMask(e,t){const i=e.minX>t.minX?e.minX:t.minX,n=e.minY>t.minY?e.minY:t.minY,r=e.maxXl?r:l,this.maxY=o>h?o:h}}addBoundsMatrix(e,t){this.addFrameMatrix(t,e.minX,e.minY,e.maxX,e.maxY)}addBoundsArea(e,t){const i=e.minX>t.x?e.minX:t.x,n=e.minY>t.y?e.minY:t.y,r=e.maxXl?r:l,this.maxY=o>h?o:h}}pad(e=0,t=e){this.isEmpty()||(this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t)}addFramePad(e,t,i,n,r,o){e-=r,t-=o,i+=r,n+=o,this.minX=this.minXi?this.maxX:i,this.minY=this.minYn?this.maxY:n}}class Wt extends yl{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new Zm,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new al,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(e){const t=Object.keys(e);for(let i=0;i1)for(let t=0;tthis.children.length)throw new Error(`${e}addChildAt: The index ${t} supplied is out of bounds ${this.children.length}`);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e}swapChildren(e,t){if(e===t)return;const i=this.getChildIndex(e),n=this.getChildIndex(t);this.children[i]=t,this.children[n]=e,this.onChildrenChange(i=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);const i=this.getChildIndex(e);Xo(this.children,i,1),this.children.splice(t,0,e),this.onChildrenChange(t)}getChildAt(e){if(e<0||e>=this.children.length)throw new Error(`getChildAt: Index (${e}) does not exist.`);return this.children[e]}removeChild(...e){if(e.length>1)for(let t=0;t0&&r<=n){o=this.children.splice(i,r);for(let a=0;a1&&this.children.sort(BA),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let e=0,t=this.children.length;e0&&t.height>0))return;let i,n;this.cullArea?(i=this.cullArea,n=this.worldTransform):this._render!==$f.prototype._render&&(i=this.getBounds(!0));const r=e.projection.transform;if(r&&(n?(n=OA.copyFrom(n),n.prepend(r)):n=r),i&&t.intersects(i,n))this._render(e);else if(this.cullArea)return;for(let o=0,a=this.children.length;o=n&&Sa.x=r&&Sa.y=ni.HIGH?this.multisample=ni.HIGH:t>=ni.MEDIUM?this.multisample=ni.MEDIUM:t>=ni.LOW?this.multisample=ni.LOW:this.multisample=ni.NONE}destroy(){}}vb.extension={type:Pe.RendererSystem,name:"_multisample"};Ne.add(vb);class EA{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class yb{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glBuffers[i]||this.createGLBuffer(e);t.bindBuffer(e.type,n.buffer)}unbind(e){const{gl:t}=this;t.bindBuffer(e,null)}bindBufferBase(e,t){const{gl:i,CONTEXT_UID:n}=this;if(this.boundBufferBases[t]!==e){const r=e._glBuffers[n]||this.createGLBuffer(e);this.boundBufferBases[t]=e,i.bindBufferBase(i.UNIFORM_BUFFER,t,r.buffer)}}bindBufferRange(e,t,i){const{gl:n,CONTEXT_UID:r}=this;i=i||0;const o=e._glBuffers[r]||this.createGLBuffer(e);n.bindBufferRange(n.UNIFORM_BUFFER,t||0,o.buffer,i*256,256)}update(e){const{gl:t,CONTEXT_UID:i}=this,n=e._glBuffers[i]||this.createGLBuffer(e);if(e._updateID!==n.updateID)if(n.updateID=e._updateID,t.bindBuffer(e.type,n.buffer),n.byteLength>=e.data.byteLength)t.bufferSubData(e.type,0,e.data);else{const r=e.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;n.byteLength=e.data.byteLength,t.bufferData(e.type,e.data,r)}}dispose(e,t){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];const i=e._glBuffers[this.CONTEXT_UID],n=this.gl;e.disposeRunner.remove(this),i&&(t||n.deleteBuffer(i.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){const t=Object.keys(this.managedBuffers);for(let i=0;it.resource).filter(t=>t).map(t=>t.load());return this._load=Promise.all(e).then(()=>{const{realWidth:t,realHeight:i}=this.items[0];return this.resize(t,i),this.update(),Promise.resolve(this)}),this._load}}class IA extends bb{constructor(e,t){const{width:i,height:n}=t||{};let r,o;Array.isArray(e)?(r=e,o=e.length):o=e,super(o,{width:i,height:n}),r&&this.initFromArray(r,t)}addBaseTextureAt(e,t){if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=$o.TEXTURE_2D_ARRAY}upload(e,t,i){const{length:n,itemDirtyIds:r,items:o}=this,{gl:a}=e;i.dirtyId<0&&a.texImage3D(a.TEXTURE_2D_ARRAY,0,i.internalFormat,this._width,this._height,n,0,t.format,i.type,null);for(let c=0;c0)if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=$o.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.parentTextureArray=this.baseTexture,this.items[t]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[t]=e,this}upload(e,t,i){const n=this.itemDirtyIds;for(let r=0;r{if(this.url===null){e(this);return}try{const i=await ke.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const n=await i.blob();if(this.destroyed)return;const r=await createImageBitmap(n,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===mi.UNPACK?"premultiply":"none"});if(this.destroyed){r.close();return}this.source=r,this.update(),e(this)}catch(i){if(this.destroyed)return;t(i),this.onError.emit(i)}}),this._load)}upload(e,t,i){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),super.upload(e,t,i)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return Po._EMPTY=Po._EMPTY??ke.ADAPTER.createCanvas(0,0),Po._EMPTY}}const Lf=class Sc extends Nn{constructor(e,t){t=t||{},super(ke.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},Sc.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const e=new Image;Nn.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=t=>{this._resolve&&(e.onerror=null,this.onError.emit(t))},e.onload=()=>{if(!this._resolve)return;const t=e.width,i=e.height;if(!t||!i)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let n=t*this.scale,r=i*this.scale;(this._overrideWidth||this._overrideHeight)&&(n=this._overrideWidth||this._overrideHeight/i*t,r=this._overrideHeight||this._overrideWidth/t*i),n=Math.round(n),r=Math.round(r);const o=this.source;o.width=n,o.height=r,o._pixiId=`canvas_${eo()}`,o.getContext("2d").drawImage(e,0,0,t,i,0,0,n,r),this._resolve(),this._resolve=null}}static getSize(e){const t=Sc.SVG_SIZE.exec(e),i={};return t&&(i[t[1]]=Math.round(parseFloat(t[3])),i[t[5]]=Math.round(parseFloat(t[7]))),i}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,t){return t==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&Sc.SVG_XML.test(e)}};Lf.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;let Df=Lf;class kA extends Nn{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}}const Nf=class Uf extends Nn{constructor(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){const i=document.createElement("video");t.autoLoad!==!1&&i.setAttribute("preload","auto"),t.playsinline!==!1&&(i.setAttribute("webkit-playsinline",""),i.setAttribute("playsinline","")),t.muted===!0&&(i.setAttribute("muted",""),i.muted=!0),t.loop===!0&&i.setAttribute("loop",""),t.autoPlay!==!1&&i.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);const n=e[0].src||e[0];Nn.crossOrigin(i,n,t.crossorigin);for(let r=0;r{this.valid?t(this):(this._resolve=t,this._reject=i,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!t&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&($i.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||($i.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&($i.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,t){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||Uf.TYPES.includes(t)}};Nf.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],Nf.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Sb=Nf;Mf.push(Po,zx,RA,Sb,kA,Df,Kh,PA,IA);class al{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(e){return this.minX>this.maxX||this.minY>this.maxY?nt.EMPTY:(e=e||new nt(0,0,1,1),e.x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)}addPoint(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)}addPointMatrix(e,t){const{a:i,b:n,c:r,d:o,tx:a,ty:c}=e,l=i*t.x+r*t.y+a,h=n*t.x+o*t.y+c;this.minX=Math.min(this.minX,l),this.maxX=Math.max(this.maxX,l),this.minY=Math.min(this.minY,h),this.maxY=Math.max(this.maxY,h)}addQuad(e){let t=this.minX,i=this.minY,n=this.maxX,r=this.maxY,o=e[0],a=e[1];t=on?o:n,r=a>r?a:r,o=e[2],a=e[3],t=on?o:n,r=a>r?a:r,o=e[4],a=e[5],t=on?o:n,r=a>r?a:r,o=e[6],a=e[7],t=on?o:n,r=a>r?a:r,this.minX=t,this.minY=i,this.maxX=n,this.maxY=r}addFrame(e,t,i,n,r){this.addFrameMatrix(e.worldTransform,t,i,n,r)}addFrameMatrix(e,t,i,n,r){const o=e.a,a=e.b,c=e.c,l=e.d,h=e.tx,u=e.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=o*t+c*i+h,v=a*t+l*i+u;d=gp?g:p,m=v>m?v:m,g=o*n+c*i+h,v=a*n+l*i+u,d=gp?g:p,m=v>m?v:m,g=o*t+c*r+h,v=a*t+l*r+u,d=gp?g:p,m=v>m?v:m,g=o*n+c*r+h,v=a*n+l*r+u,d=gp?g:p,m=v>m?v:m,this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addVertexData(e,t,i){let n=this.minX,r=this.minY,o=this.maxX,a=this.maxY;for(let c=t;co?l:o,a=h>a?h:a}this.minX=n,this.minY=r,this.maxX=o,this.maxY=a}addVertices(e,t,i,n){this.addVerticesMatrix(e.worldTransform,t,i,n)}addVerticesMatrix(e,t,i,n,r=0,o=r){const a=e.a,c=e.b,l=e.c,h=e.d,u=e.tx,d=e.ty;let f=this.minX,p=this.minY,m=this.maxX,g=this.maxY;for(let v=i;vn?e.maxX:n,this.maxY=e.maxY>r?e.maxY:r}addBoundsMask(e,t){const i=e.minX>t.minX?e.minX:t.minX,n=e.minY>t.minY?e.minY:t.minY,r=e.maxXl?r:l,this.maxY=o>h?o:h}}addBoundsMatrix(e,t){this.addFrameMatrix(t,e.minX,e.minY,e.maxX,e.maxY)}addBoundsArea(e,t){const i=e.minX>t.x?e.minX:t.x,n=e.minY>t.y?e.minY:t.y,r=e.maxXl?r:l,this.maxY=o>h?o:h}}pad(e=0,t=e){this.isEmpty()||(this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t)}addFramePad(e,t,i,n,r,o){e-=r,t-=o,i+=r,n+=o,this.minX=this.minXi?this.maxX:i,this.minY=this.minYn?this.maxY:n}}class Wt extends yl{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new Zm,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new al,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(e){const t=Object.keys(e);for(let i=0;i1)for(let t=0;tthis.children.length)throw new Error(`${e}addChildAt: The index ${t} supplied is out of bounds ${this.children.length}`);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e}swapChildren(e,t){if(e===t)return;const i=this.getChildIndex(e),n=this.getChildIndex(t);this.children[i]=t,this.children[n]=e,this.onChildrenChange(i=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);const i=this.getChildIndex(e);Xo(this.children,i,1),this.children.splice(t,0,e),this.onChildrenChange(t)}getChildAt(e){if(e<0||e>=this.children.length)throw new Error(`getChildAt: Index (${e}) does not exist.`);return this.children[e]}removeChild(...e){if(e.length>1)for(let t=0;t0&&r<=n){o=this.children.splice(i,r);for(let a=0;a1&&this.children.sort(BA),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let e=0,t=this.children.length;e0&&t.height>0))return;let i,n;this.cullArea?(i=this.cullArea,n=this.worldTransform):this._render!==$f.prototype._render&&(i=this.getBounds(!0));const r=e.projection.transform;if(r&&(n?(n=OA.copyFrom(n),n.prepend(r)):n=r),i&&t.intersects(i,n))this._render(e);else if(this.cullArea)return;for(let o=0,a=this.children.length;o=n&&Sa.x=r&&Sa.y{Object.defineProperty(Y0,s,{get(){return ct("7.1.0",`filters.${s} has moved to ${s}`),e}})});class tE{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this.tickerAdded||!this.domElement||($i.system.add(this.tickerUpdate,this,to.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&($i.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events.rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY}))}tickerUpdate(e){this._deltaTime+=e,!(this._deltaTimei.priority-n.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,n=t.length;i=0;n--)if(e.currentTarget=i[n],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const n=Array.isArray(t)?t:[t];for(let r=i.length-1;r>=0;r--)n.forEach(o=>{e.currentTarget=i[r],this.notifyTarget(e,o)})}propagationPath(e){const t=[e];for(let i=0;i=0;u--){const d=h[u],f=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,i,n,r,o||r(e,i));if(f){if(f.length>0&&!f[f.length-1].parent)continue;const p=e.isInteractive();(f.length>0||p)&&(p&&this._allInteractiveElements.push(e),f.push(e)),this._hitElements.length===0&&(this._hitElements=f),a=!0}}}const c=this._isInteractive(t),l=e.isInteractive();return c&&l&&this._allInteractiveElements.push(e),o||this._hitElements.length>0?null:a?this._hitElements:c&&!r(e,i)&&n(e,i)?l?[e]:[]:null}hitTestRecursive(e,t,i,n,r){if(this._interactivePrune(e)||r(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(tr.pauseUpdate=!1),e.interactiveChildren&&e.children){const c=e.children;for(let l=c.length-1;l>=0;l--){const h=c[l],u=this.hitTestRecursive(h,this._isInteractive(t)?t:h.eventMode,i,n,r);if(u){if(u.length>0&&!u[u.length-1].parent)continue;const d=e.isInteractive();return(u.length>0||d)&&u.push(e),u}}}const o=this._isInteractive(t),a=e.isInteractive();return o&&n(e,i)?a?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!!(!e||e.isMask||!e.visible||!e.renderable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren||e.isMask)}hitPruneFn(e,t){var i;if(e.hitArea&&(e.worldTransform.applyInverse(t,Ld),!e.hitArea.contains(Ld.x,Ld.y)))return!0;if(e._mask){const n=e._mask.isMaskData?e._mask.maskObject:e._mask;if(n&&!((i=n.containsPoint)!=null&&i.call(n,t)))return!0}return!1}hitTestFn(e,t){return e.eventMode==="passive"?!1:e.hitArea?!0:e.containsPoint?e.containsPoint(t):!1}notifyTarget(e,t){var r,o;t=t??e.type;const i=`on${t}`;(o=(r=e.currentTarget)[i])==null||o.call(r,e);const n=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this.notifyListeners(e,n),e.eventPhase===e.AT_TARGET&&this.notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const n=t.button===2;this.dispatchEvent(t,n?"rightdown":"mousedown")}const i=this.trackingData(e.pointerId);i.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){var c,l;if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const i=t.pointerType==="mouse"||t.pointerType==="pen",n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.overTargets);if(((c=n.overTargets)==null?void 0:c.length)>0&&r!==t.target){const h=e.type==="mousemove"?"mouseout":"pointerout",u=this.createPointerEvent(e,h,r);if(this.dispatchEvent(u,"pointerout"),i&&this.dispatchEvent(u,"mouseout"),!t.composedPath().includes(r)){const d=this.createPointerEvent(e,"pointerleave",r);for(d.eventPhase=d.AT_TARGET;d.target&&!t.composedPath().includes(d.target);)d.currentTarget=d.target,this.notifyTarget(d),i&&this.notifyTarget(d,"mouseleave"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(u)}if(r!==t.target){const h=e.type==="mousemove"?"mouseover":"pointerover",u=this.clonePointerEvent(t,h);this.dispatchEvent(u,"pointerover"),i&&this.dispatchEvent(u,"mouseover");let d=r==null?void 0:r.parent;for(;d&&d!==this.rootTarget.parent&&d!==t.target;)d=d.parent;if(!d||d===this.rootTarget.parent){const f=this.clonePointerEvent(t,"pointerenter");for(f.eventPhase=f.AT_TARGET;f.target&&f.target!==r&&f.target!==this.rootTarget.parent;)f.currentTarget=f.target,this.notifyTarget(f),i&&this.notifyTarget(f,"mouseenter"),f.target=f.target.parent;this.freeEvent(f)}this.freeEvent(u)}const o=[],a=this.enableGlobalMoveEvents??!0;this.moveOnAll?o.push("pointermove"):this.dispatchEvent(t,"pointermove"),a&&o.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?o.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),a&&o.push("globaltouchmove")),i&&(this.moveOnAll?o.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),a&&o.push("globalmousemove"),this.cursor=(l=t.target)==null?void 0:l.cursor),o.length>0&&this.all(t,o),this._allInteractiveElements.length=0,this._hitElements.length=0,n.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var o;if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),n=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),n&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=(o=i.target)==null?void 0:o.cursor);const r=this.clonePointerEvent(i,"pointerenter");for(r.eventPhase=r.AT_TARGET;r.target&&r.target!==this.rootTarget.parent;)r.currentTarget=r.target,this.notifyTarget(r),n&&this.notifyTarget(r,"mouseenter"),r.target=r.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(r)}mapPointerOut(e){if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",n=this.findMountedTarget(t.overTargets),r=this.createPointerEvent(e,"pointerout",n);this.dispatchEvent(r),i&&this.dispatchEvent(r,"mouseout");const o=this.createPointerEvent(e,"pointerleave",n);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),i&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;t.overTargets=null,this.freeEvent(r),this.freeEvent(o)}this.cursor=null}mapPointerUp(e){if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const a=i.button===2;this.dispatchEvent(i,a?"rightup":"mouseup")}const n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.pressTargetsByButton[e.button]);let o=r;if(r&&!i.composedPath().includes(r)){let a=r;for(;a&&!i.composedPath().includes(a);){if(i.currentTarget=a,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const c=i.button===2;this.notifyTarget(i,c?"rightupoutside":"mouseupoutside")}a=a.parent}delete n.pressTargetsByButton[e.button],o=a}if(o){const a=this.clonePointerEvent(i,"click");a.target=o,a.path=null,n.clicksByButton[e.button]||(n.clicksByButton[e.button]={clickCount:0,target:a.target,timeStamp:t});const c=n.clicksByButton[e.button];if(c.target===a.target&&t-c.timeStamp<200?++c.clickCount:c.clickCount=1,c.target=a.target,c.timeStamp=t,a.detail=c.clickCount,a.pointerType==="mouse"){const l=a.button===2;this.dispatchEvent(a,l?"rightclick":"click")}else a.pointerType==="touch"&&this.dispatchEvent(a,"tap");this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),n=this.createPointerEvent(e);if(i){let r=i;for(;r;)n.currentTarget=r,this.notifyTarget(n,"pointerupoutside"),n.pointerType==="touch"?this.notifyTarget(n,"touchendoutside"):(n.pointerType==="mouse"||n.pointerType==="pen")&&this.notifyTarget(n,n.button===2?"rightupoutside":"mouseupoutside"),r=r.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(n)}mapWheel(e){if(!(e instanceof Yo)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=n),t[i]=n,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{view:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,Gf._defaultEventMode=e.eventMode??"auto",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this.currentCursor===e)return;this.currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this.rootPointerEvent}onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this.normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,n=t.length;i0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",n=this.normalizeToPointerData(e);for(let r=0,o=n.length;r"u"&&(r.button=0),typeof r.buttons>"u"&&(r.buttons=1),typeof r.isPrimary>"u"&&(r.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof r.width>"u"&&(r.width=r.radiusX||1),typeof r.height>"u"&&(r.height=r.radiusY||1),typeof r.tiltX>"u"&&(r.tiltX=0),typeof r.tiltY>"u"&&(r.tiltY=0),typeof r.pointerType>"u"&&(r.pointerType="touch"),typeof r.pointerId>"u"&&(r.pointerId=r.identifier||0),typeof r.pressure>"u"&&(r.pressure=r.force||.5),typeof r.twist>"u"&&(r.twist=0),typeof r.tangentialPressure>"u"&&(r.tangentialPressure=0),typeof r.layerX>"u"&&(r.layerX=r.offsetX=r.clientX),typeof r.layerY>"u"&&(r.layerY=r.offsetY=r.clientY),r.isNormalized=!0,r.type=e.type,t.push(r)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=rE),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this.rootWheelEvent;return this.transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this.transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=oE[e.type]||e.type),e}transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};Yf.extension={name:"events",type:[Pe.RendererSystem,Pe.CanvasRendererSystem]},Yf.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let Hf=Yf;Ne.add(Hf);function G0(s){return s==="dynamic"||s==="static"}const aE={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??G0(Hf.defaultEventMode)},set interactive(s){ct("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=s,this.eventMode=s?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??Hf.defaultEventMode},set eventMode(s){this._internalInteractive=G0(s),this._internalEventMode=s},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof t=="object"?t.signal:void 0,r=typeof t=="object"?t.once===!0:!1,o=typeof e=="function"?void 0:e;s=i?`${s}capture`:s;const a=typeof e=="function"?e:e.handleEvent,c=this;n&&n.addEventListener("abort",()=>{c.off(s,a,o)}),r?c.once(s,a,o):c.on(s,a,o)},removeEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof e=="function"?void 0:e;s=i?`${s}capture`:s,e=typeof e=="function"?e:e.handleEvent,this.off(s,e,n)},dispatchEvent(s){if(!(s instanceof xl))throw new Error("DisplayObject cannot propagate events outside of the Federated Events API");return s.defaultPrevented=!1,s.path=null,s.target=this,s.manager.dispatchEvent(s),!s.defaultPrevented}};Wt.mixin(aE);const lE={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};Wt.mixin(lE);const cE=9,Wl=100,hE=0,uE=0,H0=2,j0=1,dE=-1e3,fE=-1e3,mE=2;class M1{constructor(e){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(Tn.tablet||Tn.phone)&&this.createTouchHook();const t=document.createElement("div");t.style.width=`${Wl}px`,t.style.height=`${Wl}px`,t.style.position="absolute",t.style.top=`${hE}px`,t.style.left=`${uE}px`,t.style.zIndex=H0.toString(),this.div=t,this.renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){const e=document.createElement("button");e.style.width=`${j0}px`,e.style.height=`${j0}px`,e.style.position="absolute",e.style.top=`${dE}px`,e.style.left=`${fE}px`,e.style.zIndex=mE.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){var e;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),(e=this.renderer.view.parentNode)==null||e.appendChild(this.div))}deactivate(){var e;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),(e=this.div.parentNode)==null||e.removeChild(this.div))}updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this.addChild(e),e.renderId=this.renderId);const t=e.children;if(t)for(let i=0;i title : ${e.title}
tabIndex: ${e.tabIndex}`}capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this.renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}addChild(e){let t=this.pool.pop();t||(t=document.createElement("button"),t.style.width=`${Wl}px`,t.style.height=`${Wl}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=H0.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`displayObject ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this.updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.displayObject=e,this.children.push(e),this.div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{displayObject:i}=e.target,n=this.renderer.events.rootBoundary,r=Object.assign(new xl(n),{target:i});n.rootTarget=this.renderer.lastObjectRendered,t.forEach(o=>n.dispatchEvent(r,o))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===cE&&this.activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}M1.extension={name:"accessibility",type:[Pe.RendererPlugin,Pe.CanvasRendererPlugin]};Ne.add(M1);const C1=class jf{constructor(e){this.stage=new Si,e=Object.assign({forceCanvas:!1},e),this.renderer=TA(e),jf._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render(this.stage)}get view(){var e;return(e=this.renderer)==null?void 0:e.view}get screen(){var e;return(e=this.renderer)==null?void 0:e.screen}destroy(e,t){const i=jf._plugins.slice(0);i.reverse(),i.forEach(n=>{n.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};C1._plugins=[];let A1=C1;Ne.handleByList(Pe.Application,A1._plugins);class E1{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let t,i;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,i=globalThis.innerHeight;else{const{clientWidth:n,clientHeight:r}=this._resizeTo;t=n,i=r}this.renderer.resize(t,i),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}E1.extension=Pe.Application;Ne.add(E1);const W0={loader:Pe.LoadParser,resolver:Pe.ResolveParser,cache:Pe.CacheParser,detection:Pe.DetectionParser};Ne.handle(Pe.Asset,s=>{const e=s.ref;Object.entries(W0).filter(([t])=>!!e[t]).forEach(([t,i])=>Ne.add(Object.assign(e[t],{extension:e[t].extension??i})))},s=>{const e=s.ref;Object.keys(W0).filter(t=>!!e[t]).forEach(t=>Ne.remove(e[t]))});class pE{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;i(Array.isArray(s)||(s=[s]),e?s.map(i=>typeof i=="string"||t?e(i):i):s),Qc=(s,e)=>{const t=e.split("?")[1];return t&&(s+=`?${t}`),s};function I1(s,e,t,i,n){const r=e[t];for(let o=0;o{const o=r.substring(1,r.length-1).split(",");n.push(o)}),I1(s,n,0,t,i)}else i.push(s);return i}const eh=s=>!Array.isArray(s);class vE{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||console.warn(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const i=Ts(e);let n;for(let a=0;a{n[a]=t}));const r=Object.keys(n),o={cacheKeys:r,keys:i};if(i.forEach(a=>{this._cacheMap.set(a,o)}),r.forEach(a=>{const c=n?n[a]:t;this._cache.has(a)&&this._cache.get(a)!==c&&console.warn("[Cache] already has key:",a),this._cache.set(a,n[a])}),t instanceof ze){const a=t;i.forEach(c=>{a.baseTexture!==ze.EMPTY.baseTexture&&Je.addToCache(a.baseTexture,c),ze.addToCache(a,c)})}}remove(e){if(!this._cacheMap.has(e)){console.warn(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(i=>{this._cache.delete(i)}),t.keys.forEach(i=>{this._cacheMap.delete(i)})}get parsers(){return this._parsers}}const Nr=new vE;class yE{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,i)=>(this._parsersValidated=!1,e[t]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const i={promise:null,parser:null};return i.promise=(async()=>{var o,a;let n=null,r=null;if(t.loadParser&&(r=this._parserHash[t.loadParser],r||console.warn(`[Assets] specified load parser "${t.loadParser}" not found while loading ${e}`)),!r){for(let c=0;c({alias:[l],src:l})),a=o.length,c=o.map(async l=>{const h=Zt.toAbsolute(l.src);if(!n[l.src])try{this.promiseCache[h]||(this.promiseCache[h]=this._getLoadPromiseAndParser(h,l)),n[l.src]=await this.promiseCache[h].promise,t&&t(++i/a)}catch(u){throw delete this.promiseCache[h],delete n[l.src],new Error(`[Loader.load] Failed to load ${h}. +`;class eE extends Ui{constructor(e=.5,t=Math.random()){super(gb,QA,{uNoise:0,uSeed:0}),this.noise=e,this.seed=t}get noise(){return this.uniforms.uNoise}set noise(e){this.uniforms.uNoise=e}get seed(){return this.uniforms.uSeed}set seed(e){this.uniforms.uSeed=e}}const Y0={AlphaFilter:UA,BlurFilter:HA,BlurFilterPass:Xf,ColorMatrixFilter:Vf,DisplacementFilter:qA,FXAAFilter:JA,NoiseFilter:eE};Object.entries(Y0).forEach(([s,e])=>{Object.defineProperty(Y0,s,{get(){return ct("7.1.0",`filters.${s} has moved to ${s}`),e}})});class tE{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this.tickerAdded||!this.domElement||($i.system.add(this.tickerUpdate,this,to.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&($i.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events.rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY}))}tickerUpdate(e){this._deltaTime+=e,!(this._deltaTimei.priority-n.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,n=t.length;i=0;n--)if(e.currentTarget=i[n],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const n=Array.isArray(t)?t:[t];for(let r=i.length-1;r>=0;r--)n.forEach(o=>{e.currentTarget=i[r],this.notifyTarget(e,o)})}propagationPath(e){const t=[e];for(let i=0;i=0;u--){const d=h[u],f=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,i,n,r,o||r(e,i));if(f){if(f.length>0&&!f[f.length-1].parent)continue;const p=e.isInteractive();(f.length>0||p)&&(p&&this._allInteractiveElements.push(e),f.push(e)),this._hitElements.length===0&&(this._hitElements=f),a=!0}}}const c=this._isInteractive(t),l=e.isInteractive();return c&&l&&this._allInteractiveElements.push(e),o||this._hitElements.length>0?null:a?this._hitElements:c&&!r(e,i)&&n(e,i)?l?[e]:[]:null}hitTestRecursive(e,t,i,n,r){if(this._interactivePrune(e)||r(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(tr.pauseUpdate=!1),e.interactiveChildren&&e.children){const c=e.children;for(let l=c.length-1;l>=0;l--){const h=c[l],u=this.hitTestRecursive(h,this._isInteractive(t)?t:h.eventMode,i,n,r);if(u){if(u.length>0&&!u[u.length-1].parent)continue;const d=e.isInteractive();return(u.length>0||d)&&u.push(e),u}}}const o=this._isInteractive(t),a=e.isInteractive();return o&&n(e,i)?a?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!!(!e||e.isMask||!e.visible||!e.renderable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren||e.isMask)}hitPruneFn(e,t){var i;if(e.hitArea&&(e.worldTransform.applyInverse(t,Ld),!e.hitArea.contains(Ld.x,Ld.y)))return!0;if(e._mask){const n=e._mask.isMaskData?e._mask.maskObject:e._mask;if(n&&!((i=n.containsPoint)!=null&&i.call(n,t)))return!0}return!1}hitTestFn(e,t){return e.eventMode==="passive"?!1:e.hitArea?!0:e.containsPoint?e.containsPoint(t):!1}notifyTarget(e,t){var r,o;t=t??e.type;const i=`on${t}`;(o=(r=e.currentTarget)[i])==null||o.call(r,e);const n=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this.notifyListeners(e,n),e.eventPhase===e.AT_TARGET&&this.notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const n=t.button===2;this.dispatchEvent(t,n?"rightdown":"mousedown")}const i=this.trackingData(e.pointerId);i.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){var c,l;if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const i=t.pointerType==="mouse"||t.pointerType==="pen",n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.overTargets);if(((c=n.overTargets)==null?void 0:c.length)>0&&r!==t.target){const h=e.type==="mousemove"?"mouseout":"pointerout",u=this.createPointerEvent(e,h,r);if(this.dispatchEvent(u,"pointerout"),i&&this.dispatchEvent(u,"mouseout"),!t.composedPath().includes(r)){const d=this.createPointerEvent(e,"pointerleave",r);for(d.eventPhase=d.AT_TARGET;d.target&&!t.composedPath().includes(d.target);)d.currentTarget=d.target,this.notifyTarget(d),i&&this.notifyTarget(d,"mouseleave"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(u)}if(r!==t.target){const h=e.type==="mousemove"?"mouseover":"pointerover",u=this.clonePointerEvent(t,h);this.dispatchEvent(u,"pointerover"),i&&this.dispatchEvent(u,"mouseover");let d=r==null?void 0:r.parent;for(;d&&d!==this.rootTarget.parent&&d!==t.target;)d=d.parent;if(!d||d===this.rootTarget.parent){const f=this.clonePointerEvent(t,"pointerenter");for(f.eventPhase=f.AT_TARGET;f.target&&f.target!==r&&f.target!==this.rootTarget.parent;)f.currentTarget=f.target,this.notifyTarget(f),i&&this.notifyTarget(f,"mouseenter"),f.target=f.target.parent;this.freeEvent(f)}this.freeEvent(u)}const o=[],a=this.enableGlobalMoveEvents??!0;this.moveOnAll?o.push("pointermove"):this.dispatchEvent(t,"pointermove"),a&&o.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?o.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),a&&o.push("globaltouchmove")),i&&(this.moveOnAll?o.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),a&&o.push("globalmousemove"),this.cursor=(l=t.target)==null?void 0:l.cursor),o.length>0&&this.all(t,o),this._allInteractiveElements.length=0,this._hitElements.length=0,n.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var o;if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),n=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),n&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=(o=i.target)==null?void 0:o.cursor);const r=this.clonePointerEvent(i,"pointerenter");for(r.eventPhase=r.AT_TARGET;r.target&&r.target!==this.rootTarget.parent;)r.currentTarget=r.target,this.notifyTarget(r),n&&this.notifyTarget(r,"mouseenter"),r.target=r.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(r)}mapPointerOut(e){if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",n=this.findMountedTarget(t.overTargets),r=this.createPointerEvent(e,"pointerout",n);this.dispatchEvent(r),i&&this.dispatchEvent(r,"mouseout");const o=this.createPointerEvent(e,"pointerleave",n);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),i&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;t.overTargets=null,this.freeEvent(r),this.freeEvent(o)}this.cursor=null}mapPointerUp(e){if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const a=i.button===2;this.dispatchEvent(i,a?"rightup":"mouseup")}const n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.pressTargetsByButton[e.button]);let o=r;if(r&&!i.composedPath().includes(r)){let a=r;for(;a&&!i.composedPath().includes(a);){if(i.currentTarget=a,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const c=i.button===2;this.notifyTarget(i,c?"rightupoutside":"mouseupoutside")}a=a.parent}delete n.pressTargetsByButton[e.button],o=a}if(o){const a=this.clonePointerEvent(i,"click");a.target=o,a.path=null,n.clicksByButton[e.button]||(n.clicksByButton[e.button]={clickCount:0,target:a.target,timeStamp:t});const c=n.clicksByButton[e.button];if(c.target===a.target&&t-c.timeStamp<200?++c.clickCount:c.clickCount=1,c.target=a.target,c.timeStamp=t,a.detail=c.clickCount,a.pointerType==="mouse"){const l=a.button===2;this.dispatchEvent(a,l?"rightclick":"click")}else a.pointerType==="touch"&&this.dispatchEvent(a,"tap");this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof Ss)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),n=this.createPointerEvent(e);if(i){let r=i;for(;r;)n.currentTarget=r,this.notifyTarget(n,"pointerupoutside"),n.pointerType==="touch"?this.notifyTarget(n,"touchendoutside"):(n.pointerType==="mouse"||n.pointerType==="pen")&&this.notifyTarget(n,n.button===2?"rightupoutside":"mouseupoutside"),r=r.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(n)}mapWheel(e){if(!(e instanceof Yo)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=n),t[i]=n,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{view:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,Gf._defaultEventMode=e.eventMode??"auto",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this.currentCursor===e)return;this.currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this.rootPointerEvent}onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this.normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,n=t.length;i0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",n=this.normalizeToPointerData(e);for(let r=0,o=n.length;r"u"&&(r.button=0),typeof r.buttons>"u"&&(r.buttons=1),typeof r.isPrimary>"u"&&(r.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof r.width>"u"&&(r.width=r.radiusX||1),typeof r.height>"u"&&(r.height=r.radiusY||1),typeof r.tiltX>"u"&&(r.tiltX=0),typeof r.tiltY>"u"&&(r.tiltY=0),typeof r.pointerType>"u"&&(r.pointerType="touch"),typeof r.pointerId>"u"&&(r.pointerId=r.identifier||0),typeof r.pressure>"u"&&(r.pressure=r.force||.5),typeof r.twist>"u"&&(r.twist=0),typeof r.tangentialPressure>"u"&&(r.tangentialPressure=0),typeof r.layerX>"u"&&(r.layerX=r.offsetX=r.clientX),typeof r.layerY>"u"&&(r.layerY=r.offsetY=r.clientY),r.isNormalized=!0,r.type=e.type,t.push(r)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=rE),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this.rootWheelEvent;return this.transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this.transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=oE[e.type]||e.type),e}transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};Yf.extension={name:"events",type:[Pe.RendererSystem,Pe.CanvasRendererSystem]},Yf.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let Hf=Yf;Ne.add(Hf);function G0(s){return s==="dynamic"||s==="static"}const aE={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??G0(Hf.defaultEventMode)},set interactive(s){ct("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=s,this.eventMode=s?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??Hf.defaultEventMode},set eventMode(s){this._internalInteractive=G0(s),this._internalEventMode=s},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof t=="object"?t.signal:void 0,r=typeof t=="object"?t.once===!0:!1,o=typeof e=="function"?void 0:e;s=i?`${s}capture`:s;const a=typeof e=="function"?e:e.handleEvent,c=this;n&&n.addEventListener("abort",()=>{c.off(s,a,o)}),r?c.once(s,a,o):c.on(s,a,o)},removeEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof e=="function"?void 0:e;s=i?`${s}capture`:s,e=typeof e=="function"?e:e.handleEvent,this.off(s,e,n)},dispatchEvent(s){if(!(s instanceof xl))throw new Error("DisplayObject cannot propagate events outside of the Federated Events API");return s.defaultPrevented=!1,s.path=null,s.target=this,s.manager.dispatchEvent(s),!s.defaultPrevented}};Wt.mixin(aE);const lE={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};Wt.mixin(lE);const cE=9,Wl=100,hE=0,uE=0,H0=2,j0=1,dE=-1e3,fE=-1e3,mE=2;class Mb{constructor(e){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(Tn.tablet||Tn.phone)&&this.createTouchHook();const t=document.createElement("div");t.style.width=`${Wl}px`,t.style.height=`${Wl}px`,t.style.position="absolute",t.style.top=`${hE}px`,t.style.left=`${uE}px`,t.style.zIndex=H0.toString(),this.div=t,this.renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){const e=document.createElement("button");e.style.width=`${j0}px`,e.style.height=`${j0}px`,e.style.position="absolute",e.style.top=`${dE}px`,e.style.left=`${fE}px`,e.style.zIndex=mE.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){var e;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),(e=this.renderer.view.parentNode)==null||e.appendChild(this.div))}deactivate(){var e;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),(e=this.div.parentNode)==null||e.removeChild(this.div))}updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this.addChild(e),e.renderId=this.renderId);const t=e.children;if(t)for(let i=0;i title : ${e.title}
tabIndex: ${e.tabIndex}`}capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this.renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}addChild(e){let t=this.pool.pop();t||(t=document.createElement("button"),t.style.width=`${Wl}px`,t.style.height=`${Wl}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=H0.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`displayObject ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this.updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.displayObject=e,this.children.push(e),this.div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{displayObject:i}=e.target,n=this.renderer.events.rootBoundary,r=Object.assign(new xl(n),{target:i});n.rootTarget=this.renderer.lastObjectRendered,t.forEach(o=>n.dispatchEvent(r,o))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===cE&&this.activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Mb.extension={name:"accessibility",type:[Pe.RendererPlugin,Pe.CanvasRendererPlugin]};Ne.add(Mb);const Cb=class jf{constructor(e){this.stage=new Si,e=Object.assign({forceCanvas:!1},e),this.renderer=TA(e),jf._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render(this.stage)}get view(){var e;return(e=this.renderer)==null?void 0:e.view}get screen(){var e;return(e=this.renderer)==null?void 0:e.screen}destroy(e,t){const i=jf._plugins.slice(0);i.reverse(),i.forEach(n=>{n.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};Cb._plugins=[];let Ab=Cb;Ne.handleByList(Pe.Application,Ab._plugins);class Eb{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let t,i;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,i=globalThis.innerHeight;else{const{clientWidth:n,clientHeight:r}=this._resizeTo;t=n,i=r}this.renderer.resize(t,i),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Eb.extension=Pe.Application;Ne.add(Eb);const W0={loader:Pe.LoadParser,resolver:Pe.ResolveParser,cache:Pe.CacheParser,detection:Pe.DetectionParser};Ne.handle(Pe.Asset,s=>{const e=s.ref;Object.entries(W0).filter(([t])=>!!e[t]).forEach(([t,i])=>Ne.add(Object.assign(e[t],{extension:e[t].extension??i})))},s=>{const e=s.ref;Object.keys(W0).filter(t=>!!e[t]).forEach(t=>Ne.remove(e[t]))});class pE{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;i(Array.isArray(s)||(s=[s]),e?s.map(i=>typeof i=="string"||t?e(i):i):s),Qc=(s,e)=>{const t=e.split("?")[1];return t&&(s+=`?${t}`),s};function Ib(s,e,t,i,n){const r=e[t];for(let o=0;o{const o=r.substring(1,r.length-1).split(",");n.push(o)}),Ib(s,n,0,t,i)}else i.push(s);return i}const eh=s=>!Array.isArray(s);class vE{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||console.warn(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const i=Ts(e);let n;for(let a=0;a{n[a]=t}));const r=Object.keys(n),o={cacheKeys:r,keys:i};if(i.forEach(a=>{this._cacheMap.set(a,o)}),r.forEach(a=>{const c=n?n[a]:t;this._cache.has(a)&&this._cache.get(a)!==c&&console.warn("[Cache] already has key:",a),this._cache.set(a,n[a])}),t instanceof ze){const a=t;i.forEach(c=>{a.baseTexture!==ze.EMPTY.baseTexture&&Je.addToCache(a.baseTexture,c),ze.addToCache(a,c)})}}remove(e){if(!this._cacheMap.has(e)){console.warn(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(i=>{this._cache.delete(i)}),t.keys.forEach(i=>{this._cacheMap.delete(i)})}get parsers(){return this._parsers}}const Nr=new vE;class yE{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,i)=>(this._parsersValidated=!1,e[t]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const i={promise:null,parser:null};return i.promise=(async()=>{var o,a;let n=null,r=null;if(t.loadParser&&(r=this._parserHash[t.loadParser],r||console.warn(`[Assets] specified load parser "${t.loadParser}" not found while loading ${e}`)),!r){for(let c=0;c({alias:[l],src:l})),a=o.length,c=o.map(async l=>{const h=Zt.toAbsolute(l.src);if(!n[l.src])try{this.promiseCache[h]||(this.promiseCache[h]=this._getLoadPromiseAndParser(h,l)),n[l.src]=await this.promiseCache[h].promise,t&&t(++i/a)}catch(u){throw delete this.promiseCache[h],delete n[l.src],new Error(`[Loader.load] Failed to load ${h}. ${u}`)}});return await Promise.all(c),r?n[o[0].src]:n}async unload(e){const t=Ts(e,i=>({alias:[i],src:i})).map(async i=>{var o,a;const n=Zt.toAbsolute(i.src),r=this.promiseCache[n];if(r){const c=await r.promise;delete this.promiseCache[n],(a=(o=r.parser)==null?void 0:o.unload)==null||a.call(o,c,i,this)}});await Promise.all(t)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(e=>e.name).reduce((e,t)=>(e[t.name]&&console.warn(`[Assets] loadParser name conflict "${t.name}"`),{...e,[t.name]:t}),{})}}var ns=(s=>(s[s.Low=0]="Low",s[s.Normal=1]="Normal",s[s.High=2]="High",s))(ns||{});const xE=".json",bE="application/json",wE={extension:{type:Pe.LoadParser,priority:ns.Low},name:"loadJson",test(s){return aa(s,bE)||Ki(s,xE)},async load(s){return await(await ke.ADAPTER.fetch(s)).json()}};Ne.add(wE);const SE=".txt",_E="text/plain",TE={name:"loadTxt",extension:{type:Pe.LoadParser,priority:ns.Low},test(s){return aa(s,_E)||Ki(s,SE)},async load(s){return await(await ke.ADAPTER.fetch(s)).text()}};Ne.add(TE);const ME=["normal","bold","100","200","300","400","500","600","700","800","900"],CE=[".ttf",".otf",".woff",".woff2"],AE=["font/ttf","font/otf","font/woff","font/woff2"],EE=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function IE(s){const e=Zt.extname(s),t=Zt.basename(s,e).replace(/(-|_)/g," ").toLowerCase().split(" ").map(r=>r.charAt(0).toUpperCase()+r.slice(1));let i=t.length>0;for(const r of t)if(!r.match(EE)){i=!1;break}let n=t.join(" ");return i||(n=`"${n.replace(/[\\"]/g,"\\$&")}"`),n}const RE=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function PE(s){return RE.test(s)?s:encodeURI(s)}const kE={extension:{type:Pe.LoadParser,priority:ns.Low},name:"loadWebFont",test(s){return aa(s,AE)||Ki(s,CE)},async load(s,e){var i,n,r;const t=ke.ADAPTER.getFontFaceSet();if(t){const o=[],a=((i=e.data)==null?void 0:i.family)??IE(s),c=((r=(n=e.data)==null?void 0:n.weights)==null?void 0:r.filter(h=>ME.includes(h)))??["normal"],l=e.data??{};for(let h=0;hke.ADAPTER.getFontFaceSet().delete(e))}};Ne.add(kE);const FE=`(function() { "use strict"; const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII="; @@ -929,8 +929,8 @@ ${u}`)}});return await Promise.all(c),r?n[o[0].src]:n}async unload(e){const t=Ts } }; })(); -`;let Ho=null;class R1{constructor(){Ho||(Ho=URL.createObjectURL(new Blob([OE],{type:"application/javascript"}))),this.worker=new Worker(Ho)}}R1.revokeObjectURL=function(){Ho&&(URL.revokeObjectURL(Ho),Ho=null)};let z0=0,Dd;class BE{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(e=>{const{worker:t}=new Wf;t.addEventListener("message",i=>{t.terminate(),Wf.revokeObjectURL(),e(i.data)})}),this._isImageBitmapSupported)}loadImageBitmap(e){return this._run("loadImageBitmap",[e])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){Dd===void 0&&(Dd=navigator.hardwareConcurrency||4);let e=this.workerPool.pop();return!e&&this._createdWorkers{this.complete(t.data),this.returnWorker(t.target),this.next()})),e}returnWorker(e){this.workerPool.push(e)}complete(e){e.error!==void 0?this.resolveHash[e.uuid].reject(e.error):this.resolveHash[e.uuid].resolve(e.data),this.resolveHash[e.uuid]=null}async _run(e,t){await this._initWorkers();const i=new Promise((n,r)=>{this.queue.push({id:e,arguments:t,resolve:n,reject:r})});return this.next(),i}next(){if(!this.queue.length)return;const e=this.getWorker();if(!e)return;const t=this.queue.pop(),i=t.id;this.resolveHash[z0]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:z0++,id:i})}}const q0=new BE;function bl(s,e,t){s.resource.internal=!0;const i=new ze(s),n=()=>{delete e.promiseCache[t],Nr.has(t)&&Nr.remove(t)};return i.baseTexture.once("destroyed",()=>{t in e.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),n())}),i.once("destroyed",()=>{s.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),n())}),i}const LE=[".jpeg",".jpg",".png",".webp",".avif"],DE=["image/jpeg","image/png","image/webp","image/avif"];async function NE(s){const e=await ke.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${s}: ${e.status} ${e.statusText}`);const t=await e.blob();return await createImageBitmap(t)}const tu={name:"loadTextures",extension:{type:Pe.LoadParser,priority:ns.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(s){return aa(s,DE)||Ki(s,LE)},async load(s,e,t){var a;const i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap;let n;i?this.config.preferWorkers&&await q0.isImageBitmapSupported()?n=await q0.loadImageBitmap(s):n=await NE(s):n=await new Promise((c,l)=>{const h=new Image;h.crossOrigin=this.config.crossOrigin,h.src=s,h.complete?c(h):(h.onload=()=>c(h),h.onerror=u=>l(u))});const r={...e.data};r.resolution??(r.resolution=Dn(s)),i&&((a=r.resourceOptions)==null?void 0:a.ownsImageBitmap)===void 0&&(r.resourceOptions={...r.resourceOptions},r.resourceOptions.ownsImageBitmap=!0);const o=new Je(n,r);return o.resource.src=s,bl(o,t,s)},unload(s){s.destroy(!0)}};Ne.add(tu);const UE=".svg",$E="image/svg+xml",XE={extension:{type:Pe.LoadParser,priority:ns.High},name:"loadSVG",test(s){return aa(s,$E)||Ki(s,UE)},async testParse(s){return Df.test(s)},async parse(s,e,t){var r;const i=new Df(s,(r=e==null?void 0:e.data)==null?void 0:r.resourceOptions);await i.load();const n=new Je(i,{resolution:Dn(s),...e==null?void 0:e.data});return n.resource.src=e.src,bl(n,t,e.src)},async load(s,e){return(await ke.ADAPTER.fetch(s)).text()},unload:tu.unload};Ne.add(XE);const VE=[".mp4",".m4v",".webm",".ogv"],YE=["video/mp4","video/webm","video/ogg"],GE={name:"loadVideo",extension:{type:Pe.LoadParser,priority:ns.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(s){return aa(s,YE)||Ki(s,VE)},async load(s,e,t){var o;let i;const n=await(await ke.ADAPTER.fetch(s)).blob(),r=URL.createObjectURL(n);try{const a={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...(o=e==null?void 0:e.data)==null?void 0:o.resourceOptions,autoLoad:!0},c=new S1(r,a);await c.load();const l=new Je(c,{alphaMode:await ZM(),resolution:Dn(s),...e==null?void 0:e.data});l.resource.src=s,i=bl(l,t,s),i.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(r)})}catch(a){throw URL.revokeObjectURL(r),a}return i},unload(s){s.destroy(!0)}};Ne.add(GE);class HE{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(t[i])}`).join("&")}}getAlias(e){const{alias:t,name:i,src:n,srcs:r}=e;return Ts(t||i||n||r,o=>typeof o=="string"?o:Array.isArray(o)?o.map(a=>(a==null?void 0:a.src)??(a==null?void 0:a.srcs)??a):o!=null&&o.src||o!=null&&o.srcs?o.src??o.srcs:o,!0)}addManifest(e){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const i=[];Array.isArray(t)?t.forEach(n=>{const r=n.src??n.srcs,o=n.alias??n.name;let a;if(typeof o=="string"){const c=this._createBundleAssetId(e,o);i.push(c),a=[o,c]}else{const c=o.map(l=>this._createBundleAssetId(e,l));i.push(...c),a=[...o,...c]}this.add({...n,alias:a,src:r})}):Object.keys(t).forEach(n=>{const r=[n,this._createBundleAssetId(e,n)];if(typeof t[n]=="string")this.add({alias:r,src:t[n]});else if(Array.isArray(t[n]))this.add({alias:r,src:t[n]});else{const o=t[n],a=o.src??o.srcs;this.add({...o,alias:r,src:Array.isArray(a)?a:[a]})}i.push(...r)}),this._bundles[e]=i}add(e,t,i,n,r){const o=[];typeof e=="string"||Array.isArray(e)&&typeof e[0]=="string"?(ct("7.2.0",`Assets.add now uses an object instead of individual parameters. -Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),o.push({alias:e,src:t,data:i,format:n,loadParser:r})):Array.isArray(e)?o.push(...e):o.push(e);let a;a=c=>{this.hasKey(c)&&console.warn(`[Resolver] already has key: ${c} overwriting`)},Ts(o).forEach(c=>{const{src:l,srcs:h}=c;let{data:u,format:d,loadParser:f}=c;const p=Ts(l||h).map(v=>typeof v=="string"?gE(v):Array.isArray(v)?v:[v]),m=this.getAlias(c);Array.isArray(m)?m.forEach(a):a(m);const g=[];p.forEach(v=>{v.forEach(x=>{let y={};if(typeof x!="object"){y.src=x;for(let _=0;_{this._assetMap[v]=g})})}resolveBundle(e){const t=eh(e);e=Ts(e);const i={};return e.forEach(n=>{const r=this._bundles[n];if(r){const o=this.resolve(r),a={};for(const c in o){const l=o[c];a[this._extractAssetIdFromBundle(n,c)]=l}i[n]=a}}),t?i[e[0]]:i}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const i={};for(const n in t)i[n]=t[n].src;return i}return t.src}resolve(e){const t=eh(e);e=Ts(e);const i={};return e.forEach(n=>{if(!this._resolverHash[n])if(this._assetMap[n]){let r=this._assetMap[n];const o=r[0],a=this._getPreferredOrder(r);a==null||a.priority.forEach(c=>{a.params[c].forEach(l=>{const h=r.filter(u=>u[c]?u[c]===l:!1);h.length&&(r=h)})}),this._resolverHash[n]=r[0]??o}else this._resolverHash[n]=this.buildResolvedAsset({alias:[n],src:n},{});i[n]=this._resolverHash[n]}),t?i[e[0]]:i}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;tr.params.format.includes(i.format));if(n)return n}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}buildResolvedAsset(e,t){const{aliases:i,data:n,loadParser:r,format:o}=t;return(this._basePath||this._rootPath)&&(e.src=Zt.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=i??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...n||{},...e.data},e.loadParser=r??e.loadParser,e.format=o??e.format??Zt.extname(e.src).slice(1),e.srcs=e.src,e.name=e.alias,e}}class jE{constructor(){this._detections=[],this._initialized=!1,this.resolver=new HE,this.loader=new yE,this.cache=Nr,this._backgroundLoader=new pE(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){var r,o;if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let a=e.manifest;typeof a=="string"&&(a=await this.load(a)),this.resolver.addManifest(a)}const t=((r=e.texturePreference)==null?void 0:r.resolution)??1,i=typeof t=="number"?[t]:t,n=await this._detectFormats({preferredFormats:(o=e.texturePreference)==null?void 0:o.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:n,resolution:i}}),e.preferences&&this.setPreferences(e.preferences)}add(e,t,i,n,r){this.resolver.add(e,t,i,n,r)}async load(e,t){this._initialized||await this.init();const i=eh(e),n=Ts(e).map(a=>{if(typeof a!="string"){const c=this.resolver.getAlias(a);return c.some(l=>!this.resolver.hasKey(l))&&this.add(a),Array.isArray(c)?c[0]:c}return this.resolver.hasKey(a)||this.add({alias:a,src:a}),a}),r=this.resolver.resolve(n),o=await this._mapLoadToResolve(r,t);return i?o[n[0]]:o}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let i=!1;typeof e=="string"&&(i=!0,e=[e]);const n=this.resolver.resolveBundle(e),r={},o=Object.keys(n);let a=0,c=0;const l=()=>{t==null||t(++a/c)},h=o.map(u=>{const d=n[u];return c+=Object.keys(d).length,this._mapLoadToResolve(d,l).then(f=>{r[u]=f})});return await Promise.all(h),i?r[e[0]]:r}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return Nr.get(e);const t={};for(let i=0;i{const l=r[a.src],h=[a.src];a.alias&&h.push(...a.alias),o[n[c]]=l,Nr.set(h,l)}),o}async unload(e){this._initialized||await this.init();const t=Ts(e).map(n=>typeof n!="string"?n.src:n),i=this.resolver.resolve(t);await this._unloadFromResolved(i)}async unloadBundle(e){this._initialized||await this.init(),e=Ts(e);const t=this.resolver.resolveBundle(e),i=Object.keys(t).map(n=>this._unloadFromResolved(t[n]));await Promise.all(i)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(i=>{Nr.remove(i.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const i of e.detections)e.skipDetections||await i.test()?t=await i.add(t):e.skipDetections||(t=await i.remove(t));return t=t.filter((i,n)=>t.indexOf(i)===n),t}get detections(){return this._detections}get preferWorkers(){return tu.config.preferWorkers}set preferWorkers(e){ct("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:e})}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(i=>i in e).forEach(i=>{t.config[i]=e[i]})})}}const tn=new jE;Ne.handleByList(Pe.LoadParser,tn.loader.parsers).handleByList(Pe.ResolveParser,tn.resolver.parsers).handleByList(Pe.CacheParser,tn.cache.parsers).handleByList(Pe.DetectionParser,tn.detections);const WE={extension:Pe.CacheParser,test:s=>Array.isArray(s)&&s.every(e=>e instanceof ze),getCacheableAssets:(s,e)=>{const t={};return s.forEach(i=>{e.forEach((n,r)=>{t[i+(r===0?"":r+1)]=n})}),t}};Ne.add(WE);async function P1(s){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=s});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(s)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const zE={extension:{type:Pe.DetectionParser,priority:1},test:async()=>P1("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async s=>[...s,"avif"],remove:async s=>s.filter(e=>e!=="avif")};Ne.add(zE);const qE={extension:{type:Pe.DetectionParser,priority:0},test:async()=>P1("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async s=>[...s,"webp"],remove:async s=>s.filter(e=>e!=="webp")};Ne.add(qE);const K0=["png","jpg","jpeg"],KE={extension:{type:Pe.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async s=>[...s,...K0],remove:async s=>s.filter(e=>!K0.includes(e))};Ne.add(KE);const ZE="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function tp(s){return ZE?!1:document.createElement("video").canPlayType(s)!==""}const JE={extension:{type:Pe.DetectionParser,priority:0},test:async()=>tp("video/webm"),add:async s=>[...s,"webm"],remove:async s=>s.filter(e=>e!=="webm")};Ne.add(JE);const QE={extension:{type:Pe.DetectionParser,priority:0},test:async()=>tp("video/mp4"),add:async s=>[...s,"mp4","m4v"],remove:async s=>s.filter(e=>e!=="mp4"&&e!=="m4v")};Ne.add(QE);const e2={extension:{type:Pe.DetectionParser,priority:0},test:async()=>tp("video/ogg"),add:async s=>[...s,"ogv"],remove:async s=>s.filter(e=>e!=="ogv")};Ne.add(e2);const t2={extension:Pe.ResolveParser,test:tu.test,parse:s=>{var e;return{resolution:parseFloat(((e=ke.RETINA_PREFIX.exec(s))==null?void 0:e[1])??"1"),format:Zt.extname(s).slice(1),src:s}}};Ne.add(t2);var gi=(s=>(s[s.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",s[s.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",s[s.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",s[s.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",s[s.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",s[s.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",s[s.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",s[s.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",s[s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",s[s.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",s[s.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",s[s.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",s[s.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",s[s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",s[s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",s[s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",s))(gi||{});const th={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};let Ns,Eo;function Z0(){Eo={bptc:Ns.getExtension("EXT_texture_compression_bptc"),astc:Ns.getExtension("WEBGL_compressed_texture_astc"),etc:Ns.getExtension("WEBGL_compressed_texture_etc"),s3tc:Ns.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:Ns.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:Ns.getExtension("WEBGL_compressed_texture_pvrtc")||Ns.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:Ns.getExtension("WEBGL_compressed_texture_etc1"),atc:Ns.getExtension("WEBGL_compressed_texture_atc")}}const i2={extension:{type:Pe.DetectionParser,priority:2},test:async()=>{const s=ke.ADAPTER.createCanvas().getContext("webgl");return s?(Ns=s,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async s=>{Eo||Z0();const e=[];for(const t in Eo)Eo[t]&&e.push(t);return[...e,...s]},remove:async s=>(Eo||Z0(),s.filter(e=>!(e in Eo)))};Ne.add(i2);class s2 extends Kh{constructor(e,t={width:1,height:1,autoLoad:!0}){let i,n;typeof e=="string"?(i=e,n=new Uint8Array):(i=null,n=e),super(n,t),this.origin=i,this.buffer=n?new Tf(n):null,this._load=null,this.loaded=!1,this.origin!==null&&t.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(e){}load(){return this._load?this._load:(this._load=fetch(this.origin).then(e=>e.blob()).then(e=>e.arrayBuffer()).then(e=>(this.data=new Uint32Array(e),this.buffer=new Tf(e),this.loaded=!0,this.onBlobLoaded(e),this.update(),this)),this._load)}}class Kr extends s2{constructor(e,t){super(e,t),this.format=t.format,this.levels=t.levels||1,this._width=t.width,this._height=t.height,this._extension=Kr._formatToExtension(this.format),(t.levelBuffers||this.buffer)&&(this._levelBuffers=t.levelBuffers||Kr._createLevelBuffers(e instanceof Uint8Array?e:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(e,t,i){const n=e.gl;if(!e.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;n.pixelStorei(n.UNPACK_ALIGNMENT,4);for(let r=0,o=this.levels;r=33776&&e<=33779)return"s3tc";if(e>=35916&&e<=35919)return"s3tc_sRGB";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e===36196)return"etc1";if(e===35986||e===35987||e===34798)return"atc";if(e>=36492&&e<=36495)return"bptc";if(e===37808)return"astc";throw new Error(`Invalid (compressed) texture format given: ${e}`)}static _createLevelBuffers(e,t,i,n,r,o,a){const c=new Array(i);let l=e.byteOffset,h=o,u=a,d=h+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*th[t];for(let m=0;m1?h:d,levelHeight:i>1?u:f,levelBuffer:new Uint8Array(e.buffer,l,p)},l+=p,h=h>>1||1,u=u>>1||1,d=h+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*th[t];return c}}const Nd=4,zl=124,n2=32,J0=20,r2=542327876,ql={HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},o2={FOURCC:2},Kl={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3},a2=1,l2=2,c2=4,h2=64,u2=512,d2=131072,f2=827611204,m2=861165636,p2=894720068,g2=808540228,v2=4,y2={[f2]:gi.COMPRESSED_RGBA_S3TC_DXT1_EXT,[m2]:gi.COMPRESSED_RGBA_S3TC_DXT3_EXT,[p2]:gi.COMPRESSED_RGBA_S3TC_DXT5_EXT},x2={70:gi.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:gi.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:gi.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:gi.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:gi.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:gi.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:gi.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:gi.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:gi.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:gi.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:gi.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:gi.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:gi.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function b2(s){const e=new Uint32Array(s);if(e[0]!==r2)throw new Error("Invalid DDS file magic word");const t=new Uint32Array(s,0,zl/Uint32Array.BYTES_PER_ELEMENT),i=t[ql.HEIGHT],n=t[ql.WIDTH],r=t[ql.MIPMAP_COUNT],o=new Uint32Array(s,ql.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,n2/Uint32Array.BYTES_PER_ELEMENT),a=o[a2];if(a&c2){const c=o[o2.FOURCC];if(c!==g2){const x=y2[c],y=Nd+zl,_=new Uint8Array(s,y);return[new Kr(_,{format:x,width:n,height:i,levels:r})]}const l=Nd+zl,h=new Uint32Array(e.buffer,l,J0/Uint32Array.BYTES_PER_ELEMENT),u=h[Kl.DXGI_FORMAT],d=h[Kl.RESOURCE_DIMENSION],f=h[Kl.MISC_FLAG],p=h[Kl.ARRAY_SIZE],m=x2[u];if(m===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${u}`);if(f===v2)throw new Error("DDSParser does not support cubemap textures");if(d===6)throw new Error("DDSParser does not supported 3D texture data");const g=new Array,v=Nd+zl+J0;if(p===1)g.push(new Uint8Array(s,v));else{const x=th[m];let y=0,_=n,C=i;for(let b=0;b>>1,C=C>>>1}let S=v;for(let b=0;bnew Kr(x,{format:m,width:n,height:i,levels:r}))}throw a&h2?new Error("DDSParser does not support uncompressed texture data."):a&u2?new Error("DDSParser does not supported YUV uncompressed texture data."):a&d2?new Error("DDSParser does not support single-channel (lumninance) texture data!"):a&l2?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const Q0=[171,75,84,88,32,49,49,187,13,10,26,10],w2=67305985,xs={ENDIANNESS:12,GL_TYPE:16,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},zf=64,ev={[De.UNSIGNED_BYTE]:1,[De.UNSIGNED_SHORT]:2,[De.INT]:4,[De.UNSIGNED_INT]:4,[De.FLOAT]:4,[De.HALF_FLOAT]:8},S2={[Se.RGBA]:4,[Se.RGB]:3,[Se.RG]:2,[Se.RED]:1,[Se.LUMINANCE]:1,[Se.LUMINANCE_ALPHA]:2,[Se.ALPHA]:1},_2={[De.UNSIGNED_SHORT_4_4_4_4]:2,[De.UNSIGNED_SHORT_5_5_5_1]:2,[De.UNSIGNED_SHORT_5_6_5]:2};function T2(s,e,t=!1){const i=new DataView(e);if(!M2(s,i))return null;const n=i.getUint32(xs.ENDIANNESS,!0)===w2,r=i.getUint32(xs.GL_TYPE,n),o=i.getUint32(xs.GL_FORMAT,n),a=i.getUint32(xs.GL_INTERNAL_FORMAT,n),c=i.getUint32(xs.PIXEL_WIDTH,n),l=i.getUint32(xs.PIXEL_HEIGHT,n)||1,h=i.getUint32(xs.PIXEL_DEPTH,n)||1,u=i.getUint32(xs.NUMBER_OF_ARRAY_ELEMENTS,n)||1,d=i.getUint32(xs.NUMBER_OF_FACES,n),f=i.getUint32(xs.NUMBER_OF_MIPMAP_LEVELS,n),p=i.getUint32(xs.BYTES_OF_KEY_VALUE_DATA,n);if(l===0||h!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(u!==1)throw new Error("WebGL does not support array textures");const m=4,g=4,v=c+3&-4,x=l+3&-4,y=new Array(u);let _=c*l;r===0&&(_=v*x);let C;if(r!==0?ev[r]?C=ev[r]*S2[o]:C=_2[r]:C=th[a],C===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const S=t?A2(i,p,n):null;let b=_*C,M=c,I=l,F=v,E=x,k=zf+p;for(let O=0;O1||r!==0?M:F,levelHeight:f>1||r!==0?I:E,levelBuffer:new Uint8Array(e,$,b)},$+=b}k+=D+4,k=k%4!==0?k+4-k%4:k,M=M>>1||1,I=I>>1||1,F=M+m-1&-4,E=I+g-1&-4,b=F*E*C}return r!==0?{uncompressed:y.map(O=>{let D=O[0].levelBuffer,$=!1;return r===De.FLOAT?D=new Float32Array(O[0].levelBuffer.buffer,O[0].levelBuffer.byteOffset,O[0].levelBuffer.byteLength/4):r===De.UNSIGNED_INT?($=!0,D=new Uint32Array(O[0].levelBuffer.buffer,O[0].levelBuffer.byteOffset,O[0].levelBuffer.byteLength/4)):r===De.INT&&($=!0,D=new Int32Array(O[0].levelBuffer.buffer,O[0].levelBuffer.byteOffset,O[0].levelBuffer.byteLength/4)),{resource:new Kh(D,{width:O[0].levelWidth,height:O[0].levelHeight}),type:r,format:$?C2(o):o}}),kvData:S}:{compressed:y.map(O=>new Kr(null,{format:a,width:c,height:l,levels:f,levelBuffers:O})),kvData:S}}function M2(s,e){for(let t=0;te-n){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let c=0;for(;c{const o=new Je(r,{mipmap:gs.OFF,alphaMode:mi.NO_PREMULTIPLIED_ALPHA,resolution:Dn(s),...e.data});return bl(o,t,s)});return n.length===1?n[0]:n},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};Ne.add(E2);const I2={extension:{type:Pe.LoadParser,priority:ns.High},name:"loadKTX",test(s){return Ki(s,".ktx")},async load(s,e,t){const i=await(await ke.ADAPTER.fetch(s)).arrayBuffer(),{compressed:n,uncompressed:r,kvData:o}=T2(s,i),a=n??r,c={mipmap:gs.OFF,alphaMode:mi.NO_PREMULTIPLIED_ALPHA,resolution:Dn(s),...e.data},l=a.map(h=>{a===r&&Object.assign(c,{type:h.type,format:h.format});const u=h.resource??h,d=new Je(u,c);return d.ktxKeyValueData=o,bl(d,t,s)});return l.length===1?l[0]:l},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};Ne.add(I2);const R2=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],P2={extension:Pe.ResolveParser,test:s=>{const e=Zt.extname(s).slice(1);return["basis","ktx","dds"].includes(e)},parse:s=>{var i,n;const e=s.split("."),t=e.pop();if(["ktx","dds"].includes(t)){const r=e.pop();if(R2.includes(r))return{resolution:parseFloat(((i=ke.RETINA_PREFIX.exec(s))==null?void 0:i[1])??"1"),format:r,src:s}}return{resolution:parseFloat(((n=ke.RETINA_PREFIX.exec(s))==null?void 0:n[1])??"1"),format:t,src:s}}};Ne.add(P2);const Zl=new nt,k2=4,k1=class Fa{constructor(e){this.renderer=e,this._rendererPremultipliedAlpha=!1}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}async image(e,t,i,n){const r=new Image;return r.src=await this.base64(e,t,i,n),r}async base64(e,t,i,n){const r=this.canvas(e,n);if(r.toBlob!==void 0)return new Promise((o,a)=>{r.toBlob(c=>{if(!c){a(new Error("ICanvas.toBlob failed!"));return}const l=new FileReader;l.onload=()=>o(l.result),l.onerror=a,l.readAsDataURL(c)},t,i)});if(r.toDataURL!==void 0)return r.toDataURL(t,i);if(r.convertToBlob!==void 0){const o=await r.convertToBlob({type:t,quality:i});return new Promise((a,c)=>{const l=new FileReader;l.onload=()=>a(l.result),l.onerror=c,l.readAsDataURL(o)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e,t){const{pixels:i,width:n,height:r,flipY:o,premultipliedAlpha:a}=this._rawPixels(e,t);o&&Fa._flipY(i,n,r),a&&Fa._unpremultiplyAlpha(i);const c=new fC(n,r,1),l=new ImageData(new Uint8ClampedArray(i.buffer),n,r);return c.context.putImageData(l,0,0),c.canvas}pixels(e,t){const{pixels:i,width:n,height:r,flipY:o,premultipliedAlpha:a}=this._rawPixels(e,t);return o&&Fa._flipY(i,n,r),a&&Fa._unpremultiplyAlpha(i),i}_rawPixels(e,t){const i=this.renderer;if(!i)throw new Error("The Extract has already been destroyed");let n,r=!1,o=!1,a,c=!1;e&&(e instanceof oo?a=e:(a=i.generateTexture(e,{region:t,resolution:i.resolution,multisample:i.multisample}),c=!0,t&&(Zl.width=t.width,Zl.height=t.height,t=Zl)));const l=i.gl;if(a){if(n=a.baseTexture.resolution,t=t??a.frame,r=!1,o=a.baseTexture.alphaMode>0&&a.baseTexture.format===Se.RGBA,!c){i.renderTexture.bind(a);const f=a.framebuffer.glFramebuffers[i.CONTEXT_UID];f.blitFramebuffer&&i.framebuffer.bind(f.blitFramebuffer)}}else n=i.resolution,t||(t=Zl,t.width=i.width/n,t.height=i.height/n),r=!0,o=this._rendererPremultipliedAlpha,i.renderTexture.bind();const h=Math.max(Math.round(t.width*n),1),u=Math.max(Math.round(t.height*n),1),d=new Uint8Array(k2*h*u);return l.readPixels(Math.round(t.x*n),Math.round(t.y*n),h,u,l.RGBA,l.UNSIGNED_BYTE,d),c&&(a==null||a.destroy(!0)),{pixels:d,width:h,height:u,flipY:r,premultipliedAlpha:o}}destroy(){this.renderer=null}static _flipY(e,t,i){const n=t<<2,r=i>>1,o=new Uint8Array(n);for(let a=0;a=0&&a>=0&&n>=0&&r>=0)){e.length=0;return}const c=Math.ceil(2.3*Math.sqrt(o+a)),l=c*8+(n?4:0)+(r?4:0);if(e.length=l,l===0)return;if(c===0){e.length=8,e[0]=e[6]=t+n,e[1]=e[3]=i+r,e[2]=e[4]=t-n,e[5]=e[7]=i-r;return}let h=0,u=c*4+(n?2:0)+2,d=u,f=l;{const p=n+o,m=r,g=t+p,v=t-p,x=i+m;if(e[h++]=g,e[h++]=x,e[--u]=x,e[--u]=v,r){const y=i-m;e[d++]=v,e[d++]=y,e[--f]=y,e[--f]=g}}for(let p=1;p0||e&&i<=0){const n=t/2;for(let r=n+n%2;r=6){tv(t,!1);const o=[];for(let l=0;l=0&&r>=0&&o.push(t,i,t+n,i,t+n,i+r,t,i+r)},triangulate(s,e){const t=s.points,i=e.points;if(t.length===0)return;const n=i.length/2;i.push(t[0],t[1],t[2],t[3],t[6],t[7],t[4],t[5]),e.indices.push(n,n+1,n+2,n+1,n+2,n+3)}},B2={build(s){ih.build(s)},triangulate(s,e){ih.triangulate(s,e)}};var cs=(s=>(s.MITER="miter",s.BEVEL="bevel",s.ROUND="round",s))(cs||{}),or=(s=>(s.BUTT="butt",s.ROUND="round",s.SQUARE="square",s))(or||{});const Jo={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(s,e=20){if(!this.adaptive||!s||isNaN(s))return e;let t=Math.ceil(s/this.maxLength);return tthis.maxSegments&&(t=this.maxSegments),t}};class iv{static curveTo(e,t,i,n,r,o){const a=o[o.length-2],c=o[o.length-1]-t,l=a-e,h=n-t,u=i-e,d=Math.abs(c*u-l*h);if(d<1e-8||r===0)return(o[o.length-2]!==e||o[o.length-1]!==t)&&o.push(e,t),null;const f=c*c+l*l,p=h*h+u*u,m=c*h+l*u,g=r*Math.sqrt(f)/d,v=r*Math.sqrt(p)/d,x=g*m/f,y=v*m/p,_=g*u+v*l,C=g*h+v*c,S=l*(v+x),b=c*(v+x),M=u*(g+y),I=h*(g+y),F=Math.atan2(b-C,S-_),E=Math.atan2(I-C,M-_);return{cx:_+e,cy:C+t,radius:r,startAngle:F,endAngle:E,anticlockwise:l*h>u*c}}static arc(e,t,i,n,r,o,a,c,l){const h=a-o,u=Jo._segmentsCount(Math.abs(h)*r,Math.ceil(Math.abs(h)/Wc)*40),d=h/(u*2),f=d*2,p=Math.cos(d),m=Math.sin(d),g=u-1,v=g%1/g;for(let x=0;x<=g;++x){const y=x+v*x,_=d+o+f*y,C=Math.cos(_),S=-Math.sin(_);l.push((p*C+m*S)*r+i,(p*-S+m*C)*r+n)}}}class L2{constructor(){this.reset()}begin(e,t,i){this.reset(),this.style=e,this.start=t,this.attribStart=i}end(e,t){this.attribSize=t-this.attribStart,this.size=e-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class ip{static curveLength(e,t,i,n,r,o,a,c){let l=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,v=0,x=0,y=0,_=e,C=t;for(let S=1;S<=10;++S)h=S/10,u=h*h,d=u*h,f=1-h,p=f*f,m=p*f,g=m*e+3*p*h*i+3*f*u*r+d*a,v=m*t+3*p*h*n+3*f*u*o+d*c,x=_-g,y=C-v,_=g,C=v,l+=Math.sqrt(x*x+y*y);return l}static curveTo(e,t,i,n,r,o,a){const c=a[a.length-2],l=a[a.length-1];a.length-=2;const h=Jo._segmentsCount(ip.curveLength(c,l,e,t,i,n,r,o));let u=0,d=0,f=0,p=0,m=0;a.push(c,l);for(let g=1,v=0;g<=h;++g)v=g/h,u=1-v,d=u*u,f=d*u,p=v*v,m=p*v,a.push(f*c+3*d*v*e+3*u*p*i+m*r,f*l+3*d*v*t+3*u*p*n+m*o)}}function sv(s,e,t,i,n,r,o,a){const c=s-t*n,l=e-i*n,h=s+t*r,u=e+i*r;let d,f;o?(d=i,f=-t):(d=-i,f=t);const p=c+d,m=l+f,g=h+d,v=u+f;return a.push(p,m,g,v),2}function Ir(s,e,t,i,n,r,o,a){const c=t-s,l=i-e;let h=Math.atan2(c,l),u=Math.atan2(n-s,r-e);a&&hu&&(u+=Math.PI*2);let d=h;const f=u-h,p=Math.abs(f),m=Math.sqrt(c*c+l*l),g=(15*p*Math.sqrt(m)/Math.PI>>0)+1,v=f/g;if(d+=v,a){o.push(s,e,t,i);for(let x=1,y=d;x=0&&(r.join===cs.ROUND?d+=Ir(y,_,y-b*O,_-M*O,y-I*O,_-F*O,h,!1)+4:d+=2,h.push(y-I*D,_-F*D,y+I*O,_+F*O));continue}const W=(-b+v)*(-M+_)-(-b+y)*(-M+x),ne=(-I+C)*(-F+_)-(-I+y)*(-F+S),re=(A*ne-L*W)/V,le=(B*W-P*ne)/V,ue=(re-y)*(re-y)+(le-_)*(le-_),ae=y+(re-y)*O,xe=_+(le-_)*O,Y=y-(re-y)*D,j=_-(le-_)*D,H=Math.min(A*A+P*P,L*L+B*B),G=q?O:D,z=H+G*G*m,ie=ue<=z;let fe=r.join;if(fe===cs.MITER&&ue/m>g&&(fe=cs.BEVEL),ie)switch(fe){case cs.MITER:{h.push(ae,xe,Y,j);break}case cs.BEVEL:{q?h.push(ae,xe,y+b*D,_+M*D,ae,xe,y+I*D,_+F*D):h.push(y-b*O,_-M*O,Y,j,y-I*O,_-F*O,Y,j),d+=2;break}case cs.ROUND:{q?(h.push(ae,xe,y+b*D,_+M*D),d+=Ir(y,_,y+b*D,_+M*D,y+I*D,_+F*D,h,!0)+4,h.push(ae,xe,y+I*D,_+F*D)):(h.push(y-b*O,_-M*O,Y,j),d+=Ir(y,_,y-b*O,_-M*O,y-I*O,_-F*O,h,!1)+4,h.push(y-I*O,_-F*O,Y,j));break}}else{switch(h.push(y-b*O,_-M*O,y+b*D,_+M*D),fe){case cs.MITER:{q?h.push(Y,j,Y,j):h.push(ae,xe,ae,xe),d+=2;break}case cs.ROUND:{q?d+=Ir(y,_,y+b*D,_+M*D,y+I*D,_+F*D,h,!0)+2:d+=Ir(y,_,y-b*O,_-M*O,y-I*O,_-F*O,h,!1)+2;break}}h.push(y-I*O,_-F*O,y+I*D,_+F*D),d+=2}}v=i[(u-2)*2],x=i[(u-2)*2+1],y=i[(u-1)*2],_=i[(u-1)*2+1],b=-(x-_),M=v-y,E=Math.sqrt(b*b+M*M),b/=E,M/=E,b*=p,M*=p,h.push(y-b*O,_-M*O,y+b*D,_+M*D),c||(r.cap===or.ROUND?d+=Ir(y-b*(O-D)*.5,_-M*(O-D)*.5,y-b*O,_-M*O,y+b*D,_+M*D,h,!1)+2:r.cap===or.SQUARE&&(d+=sv(y,_,b,M,O,D,!1,h)));const $=e.indices,N=Jo.epsilon*Jo.epsilon;for(let U=f;U0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(e,t=null,i=null,n=null){const r=new sh(e,t,i,n);return this.graphicsData.push(r),this.dirty++,this}drawHole(e,t=null){if(!this.graphicsData.length)return null;const i=new sh(e,null,null,t),n=this.graphicsData[this.graphicsData.length-1];return i.lineStyle=n.lineStyle,n.holes.push(i),this.dirty++,this}destroy(){super.destroy();for(let e=0;e0&&(i=this.batches[this.batches.length-1],n=i.style);for(let c=this.shapeIndex;c65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&a===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=a?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(e,t){return!(!e||!t||e.texture.baseTexture!==t.texture.baseTexture||e.color+e.alpha!==t.color+t.alpha||!!e.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let e=0,t=this.graphicsData.length;e65535*2)return!1;const e=this.batches;for(let t=0;t0&&(n=Jl.pop(),n||(n=new Af,n.texArray=new Pf),this.drawCalls.push(n)),n.start=h,n.size=0,n.texArray.count=0,n.type=l),m.touched=1,m._batchEnabled=e,m._batchLocation=r,m.wrapMode=Is.REPEAT,n.texArray.elements[n.texArray.count++]=m,r++)),n.size+=d.size,h+=d.size,a=m._batchLocation,this.addColors(t,p.color,p.alpha,d.attribSize,d.attribStart),this.addTextureIds(i,a,d.attribSize,d.attribStart)}Je._globalBatch=e,this.packAttributes()}packAttributes(){const e=this.points,t=this.uvs,i=this.colors,n=this.textureIds,r=new ArrayBuffer(e.length*3*4),o=new Float32Array(r),a=new Uint32Array(r);let c=0;for(let l=0;l0&&e.alpha>0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:i},e)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const e=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new qr,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[t-2],e[t-1]))}else this.currentPath=new qr,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(e,t){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=t,this}lineTo(e,t){this.currentPath||this.moveTo(0,0);const i=this.currentPath.points,n=i[i.length-2],r=i[i.length-1];return(n!==e||r!==t)&&i.push(e,t),this}_initCurve(e=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,t]):this.moveTo(e,t)}quadraticCurveTo(e,t,i,n){this._initCurve();const r=this.currentPath.points;return r.length===0&&this.moveTo(0,0),sp.curveTo(e,t,i,n,r),this}bezierCurveTo(e,t,i,n,r,o){return this._initCurve(),ip.curveTo(e,t,i,n,r,o,this.currentPath.points),this}arcTo(e,t,i,n,r){this._initCurve(e,t);const o=this.currentPath.points,a=iv.curveTo(e,t,i,n,r,o);if(a){const{cx:c,cy:l,radius:h,startAngle:u,endAngle:d,anticlockwise:f}=a;this.arc(c,l,h,u,d,f)}return this}arc(e,t,i,n,r,o=!1){if(n===r)return this;if(!o&&r<=n?r+=Wc:o&&n<=r&&(n+=Wc),r-n===0)return this;const a=e+Math.cos(n)*i,c=t+Math.sin(n)*i,l=this._geometry.closePointEps;let h=this.currentPath?this.currentPath.points:null;if(h){const u=Math.abs(h[h.length-2]-a),d=Math.abs(h[h.length-1]-c);u0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:i},e)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(e,t,i,n){return this.drawShape(new nt(e,t,i,n))}drawRoundedRect(e,t,i,n,r){return this.drawShape(new Qh(e,t,i,n,r))}drawCircle(e,t,i){return this.drawShape(new Zh(e,t,i))}drawEllipse(e,t,i,n){return this.drawShape(new Jh(e,t,i,n))}drawPolygon(...e){let t,i=!0;const n=e[0];n.points?(i=n.closeStroke,t=n.points):Array.isArray(e[0])?t=e[0]:t=e;const r=new qr(t);return r.closeStroke=i,this.drawShape(r),this}drawShape(e){return this._holeMode?this._geometry.drawHole(e,this._matrix):this._geometry.drawShape(e,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const e=this._geometry.graphicsData;return e.length===1&&e[0].shape.type===wi.RECT&&!e[0].matrix&&!e[0].holes.length&&!(e[0].lineStyle.visible&&e[0].lineStyle.width)}_render(e){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(e)):(e.batch.flush(),this._renderDirect(e))}_populateBatches(){const e=this._geometry,t=this.blendMode,i=e.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=e.batchDirty,this.batches.length=i,this.vertexData=new Float32Array(e.points);for(let n=0;n{const{worker:t}=new Wf;t.addEventListener("message",i=>{t.terminate(),Wf.revokeObjectURL(),e(i.data)})}),this._isImageBitmapSupported)}loadImageBitmap(e){return this._run("loadImageBitmap",[e])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){Dd===void 0&&(Dd=navigator.hardwareConcurrency||4);let e=this.workerPool.pop();return!e&&this._createdWorkers{this.complete(t.data),this.returnWorker(t.target),this.next()})),e}returnWorker(e){this.workerPool.push(e)}complete(e){e.error!==void 0?this.resolveHash[e.uuid].reject(e.error):this.resolveHash[e.uuid].resolve(e.data),this.resolveHash[e.uuid]=null}async _run(e,t){await this._initWorkers();const i=new Promise((n,r)=>{this.queue.push({id:e,arguments:t,resolve:n,reject:r})});return this.next(),i}next(){if(!this.queue.length)return;const e=this.getWorker();if(!e)return;const t=this.queue.pop(),i=t.id;this.resolveHash[z0]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:z0++,id:i})}}const q0=new BE;function bl(s,e,t){s.resource.internal=!0;const i=new ze(s),n=()=>{delete e.promiseCache[t],Nr.has(t)&&Nr.remove(t)};return i.baseTexture.once("destroyed",()=>{t in e.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),n())}),i.once("destroyed",()=>{s.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),n())}),i}const LE=[".jpeg",".jpg",".png",".webp",".avif"],DE=["image/jpeg","image/png","image/webp","image/avif"];async function NE(s){const e=await ke.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${s}: ${e.status} ${e.statusText}`);const t=await e.blob();return await createImageBitmap(t)}const tu={name:"loadTextures",extension:{type:Pe.LoadParser,priority:ns.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(s){return aa(s,DE)||Ki(s,LE)},async load(s,e,t){var a;const i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap;let n;i?this.config.preferWorkers&&await q0.isImageBitmapSupported()?n=await q0.loadImageBitmap(s):n=await NE(s):n=await new Promise((c,l)=>{const h=new Image;h.crossOrigin=this.config.crossOrigin,h.src=s,h.complete?c(h):(h.onload=()=>c(h),h.onerror=u=>l(u))});const r={...e.data};r.resolution??(r.resolution=Dn(s)),i&&((a=r.resourceOptions)==null?void 0:a.ownsImageBitmap)===void 0&&(r.resourceOptions={...r.resourceOptions},r.resourceOptions.ownsImageBitmap=!0);const o=new Je(n,r);return o.resource.src=s,bl(o,t,s)},unload(s){s.destroy(!0)}};Ne.add(tu);const UE=".svg",$E="image/svg+xml",XE={extension:{type:Pe.LoadParser,priority:ns.High},name:"loadSVG",test(s){return aa(s,$E)||Ki(s,UE)},async testParse(s){return Df.test(s)},async parse(s,e,t){var r;const i=new Df(s,(r=e==null?void 0:e.data)==null?void 0:r.resourceOptions);await i.load();const n=new Je(i,{resolution:Dn(s),...e==null?void 0:e.data});return n.resource.src=e.src,bl(n,t,e.src)},async load(s,e){return(await ke.ADAPTER.fetch(s)).text()},unload:tu.unload};Ne.add(XE);const VE=[".mp4",".m4v",".webm",".ogv"],YE=["video/mp4","video/webm","video/ogg"],GE={name:"loadVideo",extension:{type:Pe.LoadParser,priority:ns.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(s){return aa(s,YE)||Ki(s,VE)},async load(s,e,t){var o;let i;const n=await(await ke.ADAPTER.fetch(s)).blob(),r=URL.createObjectURL(n);try{const a={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...(o=e==null?void 0:e.data)==null?void 0:o.resourceOptions,autoLoad:!0},c=new Sb(r,a);await c.load();const l=new Je(c,{alphaMode:await ZM(),resolution:Dn(s),...e==null?void 0:e.data});l.resource.src=s,i=bl(l,t,s),i.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(r)})}catch(a){throw URL.revokeObjectURL(r),a}return i},unload(s){s.destroy(!0)}};Ne.add(GE);class HE{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(t[i])}`).join("&")}}getAlias(e){const{alias:t,name:i,src:n,srcs:r}=e;return Ts(t||i||n||r,o=>typeof o=="string"?o:Array.isArray(o)?o.map(a=>(a==null?void 0:a.src)??(a==null?void 0:a.srcs)??a):o!=null&&o.src||o!=null&&o.srcs?o.src??o.srcs:o,!0)}addManifest(e){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const i=[];Array.isArray(t)?t.forEach(n=>{const r=n.src??n.srcs,o=n.alias??n.name;let a;if(typeof o=="string"){const c=this._createBundleAssetId(e,o);i.push(c),a=[o,c]}else{const c=o.map(l=>this._createBundleAssetId(e,l));i.push(...c),a=[...o,...c]}this.add({...n,alias:a,src:r})}):Object.keys(t).forEach(n=>{const r=[n,this._createBundleAssetId(e,n)];if(typeof t[n]=="string")this.add({alias:r,src:t[n]});else if(Array.isArray(t[n]))this.add({alias:r,src:t[n]});else{const o=t[n],a=o.src??o.srcs;this.add({...o,alias:r,src:Array.isArray(a)?a:[a]})}i.push(...r)}),this._bundles[e]=i}add(e,t,i,n,r){const o=[];typeof e=="string"||Array.isArray(e)&&typeof e[0]=="string"?(ct("7.2.0",`Assets.add now uses an object instead of individual parameters. +Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),o.push({alias:e,src:t,data:i,format:n,loadParser:r})):Array.isArray(e)?o.push(...e):o.push(e);let a;a=c=>{this.hasKey(c)&&console.warn(`[Resolver] already has key: ${c} overwriting`)},Ts(o).forEach(c=>{const{src:l,srcs:h}=c;let{data:u,format:d,loadParser:f}=c;const p=Ts(l||h).map(v=>typeof v=="string"?gE(v):Array.isArray(v)?v:[v]),m=this.getAlias(c);Array.isArray(m)?m.forEach(a):a(m);const g=[];p.forEach(v=>{v.forEach(x=>{let y={};if(typeof x!="object"){y.src=x;for(let _=0;_{this._assetMap[v]=g})})}resolveBundle(e){const t=eh(e);e=Ts(e);const i={};return e.forEach(n=>{const r=this._bundles[n];if(r){const o=this.resolve(r),a={};for(const c in o){const l=o[c];a[this._extractAssetIdFromBundle(n,c)]=l}i[n]=a}}),t?i[e[0]]:i}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const i={};for(const n in t)i[n]=t[n].src;return i}return t.src}resolve(e){const t=eh(e);e=Ts(e);const i={};return e.forEach(n=>{if(!this._resolverHash[n])if(this._assetMap[n]){let r=this._assetMap[n];const o=r[0],a=this._getPreferredOrder(r);a==null||a.priority.forEach(c=>{a.params[c].forEach(l=>{const h=r.filter(u=>u[c]?u[c]===l:!1);h.length&&(r=h)})}),this._resolverHash[n]=r[0]??o}else this._resolverHash[n]=this.buildResolvedAsset({alias:[n],src:n},{});i[n]=this._resolverHash[n]}),t?i[e[0]]:i}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;tr.params.format.includes(i.format));if(n)return n}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}buildResolvedAsset(e,t){const{aliases:i,data:n,loadParser:r,format:o}=t;return(this._basePath||this._rootPath)&&(e.src=Zt.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=i??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...n||{},...e.data},e.loadParser=r??e.loadParser,e.format=o??e.format??Zt.extname(e.src).slice(1),e.srcs=e.src,e.name=e.alias,e}}class jE{constructor(){this._detections=[],this._initialized=!1,this.resolver=new HE,this.loader=new yE,this.cache=Nr,this._backgroundLoader=new pE(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){var r,o;if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let a=e.manifest;typeof a=="string"&&(a=await this.load(a)),this.resolver.addManifest(a)}const t=((r=e.texturePreference)==null?void 0:r.resolution)??1,i=typeof t=="number"?[t]:t,n=await this._detectFormats({preferredFormats:(o=e.texturePreference)==null?void 0:o.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:n,resolution:i}}),e.preferences&&this.setPreferences(e.preferences)}add(e,t,i,n,r){this.resolver.add(e,t,i,n,r)}async load(e,t){this._initialized||await this.init();const i=eh(e),n=Ts(e).map(a=>{if(typeof a!="string"){const c=this.resolver.getAlias(a);return c.some(l=>!this.resolver.hasKey(l))&&this.add(a),Array.isArray(c)?c[0]:c}return this.resolver.hasKey(a)||this.add({alias:a,src:a}),a}),r=this.resolver.resolve(n),o=await this._mapLoadToResolve(r,t);return i?o[n[0]]:o}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let i=!1;typeof e=="string"&&(i=!0,e=[e]);const n=this.resolver.resolveBundle(e),r={},o=Object.keys(n);let a=0,c=0;const l=()=>{t==null||t(++a/c)},h=o.map(u=>{const d=n[u];return c+=Object.keys(d).length,this._mapLoadToResolve(d,l).then(f=>{r[u]=f})});return await Promise.all(h),i?r[e[0]]:r}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return Nr.get(e);const t={};for(let i=0;i{const l=r[a.src],h=[a.src];a.alias&&h.push(...a.alias),o[n[c]]=l,Nr.set(h,l)}),o}async unload(e){this._initialized||await this.init();const t=Ts(e).map(n=>typeof n!="string"?n.src:n),i=this.resolver.resolve(t);await this._unloadFromResolved(i)}async unloadBundle(e){this._initialized||await this.init(),e=Ts(e);const t=this.resolver.resolveBundle(e),i=Object.keys(t).map(n=>this._unloadFromResolved(t[n]));await Promise.all(i)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(i=>{Nr.remove(i.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const i of e.detections)e.skipDetections||await i.test()?t=await i.add(t):e.skipDetections||(t=await i.remove(t));return t=t.filter((i,n)=>t.indexOf(i)===n),t}get detections(){return this._detections}get preferWorkers(){return tu.config.preferWorkers}set preferWorkers(e){ct("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:e})}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(i=>i in e).forEach(i=>{t.config[i]=e[i]})})}}const tn=new jE;Ne.handleByList(Pe.LoadParser,tn.loader.parsers).handleByList(Pe.ResolveParser,tn.resolver.parsers).handleByList(Pe.CacheParser,tn.cache.parsers).handleByList(Pe.DetectionParser,tn.detections);const WE={extension:Pe.CacheParser,test:s=>Array.isArray(s)&&s.every(e=>e instanceof ze),getCacheableAssets:(s,e)=>{const t={};return s.forEach(i=>{e.forEach((n,r)=>{t[i+(r===0?"":r+1)]=n})}),t}};Ne.add(WE);async function Pb(s){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=s});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(s)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const zE={extension:{type:Pe.DetectionParser,priority:1},test:async()=>Pb("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async s=>[...s,"avif"],remove:async s=>s.filter(e=>e!=="avif")};Ne.add(zE);const qE={extension:{type:Pe.DetectionParser,priority:0},test:async()=>Pb("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async s=>[...s,"webp"],remove:async s=>s.filter(e=>e!=="webp")};Ne.add(qE);const K0=["png","jpg","jpeg"],KE={extension:{type:Pe.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async s=>[...s,...K0],remove:async s=>s.filter(e=>!K0.includes(e))};Ne.add(KE);const ZE="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function tp(s){return ZE?!1:document.createElement("video").canPlayType(s)!==""}const JE={extension:{type:Pe.DetectionParser,priority:0},test:async()=>tp("video/webm"),add:async s=>[...s,"webm"],remove:async s=>s.filter(e=>e!=="webm")};Ne.add(JE);const QE={extension:{type:Pe.DetectionParser,priority:0},test:async()=>tp("video/mp4"),add:async s=>[...s,"mp4","m4v"],remove:async s=>s.filter(e=>e!=="mp4"&&e!=="m4v")};Ne.add(QE);const e2={extension:{type:Pe.DetectionParser,priority:0},test:async()=>tp("video/ogg"),add:async s=>[...s,"ogv"],remove:async s=>s.filter(e=>e!=="ogv")};Ne.add(e2);const t2={extension:Pe.ResolveParser,test:tu.test,parse:s=>{var e;return{resolution:parseFloat(((e=ke.RETINA_PREFIX.exec(s))==null?void 0:e[1])??"1"),format:Zt.extname(s).slice(1),src:s}}};Ne.add(t2);var gi=(s=>(s[s.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",s[s.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",s[s.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",s[s.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",s[s.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",s[s.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",s[s.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",s[s.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",s[s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",s[s.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",s[s.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",s[s.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",s[s.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",s[s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",s[s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",s[s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",s))(gi||{});const th={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};let Ns,Eo;function Z0(){Eo={bptc:Ns.getExtension("EXT_texture_compression_bptc"),astc:Ns.getExtension("WEBGL_compressed_texture_astc"),etc:Ns.getExtension("WEBGL_compressed_texture_etc"),s3tc:Ns.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:Ns.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:Ns.getExtension("WEBGL_compressed_texture_pvrtc")||Ns.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:Ns.getExtension("WEBGL_compressed_texture_etc1"),atc:Ns.getExtension("WEBGL_compressed_texture_atc")}}const i2={extension:{type:Pe.DetectionParser,priority:2},test:async()=>{const s=ke.ADAPTER.createCanvas().getContext("webgl");return s?(Ns=s,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async s=>{Eo||Z0();const e=[];for(const t in Eo)Eo[t]&&e.push(t);return[...e,...s]},remove:async s=>(Eo||Z0(),s.filter(e=>!(e in Eo)))};Ne.add(i2);class s2 extends Kh{constructor(e,t={width:1,height:1,autoLoad:!0}){let i,n;typeof e=="string"?(i=e,n=new Uint8Array):(i=null,n=e),super(n,t),this.origin=i,this.buffer=n?new Tf(n):null,this._load=null,this.loaded=!1,this.origin!==null&&t.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(e){}load(){return this._load?this._load:(this._load=fetch(this.origin).then(e=>e.blob()).then(e=>e.arrayBuffer()).then(e=>(this.data=new Uint32Array(e),this.buffer=new Tf(e),this.loaded=!0,this.onBlobLoaded(e),this.update(),this)),this._load)}}class Kr extends s2{constructor(e,t){super(e,t),this.format=t.format,this.levels=t.levels||1,this._width=t.width,this._height=t.height,this._extension=Kr._formatToExtension(this.format),(t.levelBuffers||this.buffer)&&(this._levelBuffers=t.levelBuffers||Kr._createLevelBuffers(e instanceof Uint8Array?e:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(e,t,i){const n=e.gl;if(!e.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;n.pixelStorei(n.UNPACK_ALIGNMENT,4);for(let r=0,o=this.levels;r=33776&&e<=33779)return"s3tc";if(e>=35916&&e<=35919)return"s3tc_sRGB";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e===36196)return"etc1";if(e===35986||e===35987||e===34798)return"atc";if(e>=36492&&e<=36495)return"bptc";if(e===37808)return"astc";throw new Error(`Invalid (compressed) texture format given: ${e}`)}static _createLevelBuffers(e,t,i,n,r,o,a){const c=new Array(i);let l=e.byteOffset,h=o,u=a,d=h+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*th[t];for(let m=0;m1?h:d,levelHeight:i>1?u:f,levelBuffer:new Uint8Array(e.buffer,l,p)},l+=p,h=h>>1||1,u=u>>1||1,d=h+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*th[t];return c}}const Nd=4,zl=124,n2=32,J0=20,r2=542327876,ql={HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},o2={FOURCC:2},Kl={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3},a2=1,l2=2,c2=4,h2=64,u2=512,d2=131072,f2=827611204,m2=861165636,p2=894720068,g2=808540228,v2=4,y2={[f2]:gi.COMPRESSED_RGBA_S3TC_DXT1_EXT,[m2]:gi.COMPRESSED_RGBA_S3TC_DXT3_EXT,[p2]:gi.COMPRESSED_RGBA_S3TC_DXT5_EXT},x2={70:gi.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:gi.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:gi.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:gi.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:gi.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:gi.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:gi.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:gi.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:gi.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:gi.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:gi.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:gi.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:gi.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function b2(s){const e=new Uint32Array(s);if(e[0]!==r2)throw new Error("Invalid DDS file magic word");const t=new Uint32Array(s,0,zl/Uint32Array.BYTES_PER_ELEMENT),i=t[ql.HEIGHT],n=t[ql.WIDTH],r=t[ql.MIPMAP_COUNT],o=new Uint32Array(s,ql.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,n2/Uint32Array.BYTES_PER_ELEMENT),a=o[a2];if(a&c2){const c=o[o2.FOURCC];if(c!==g2){const x=y2[c],y=Nd+zl,_=new Uint8Array(s,y);return[new Kr(_,{format:x,width:n,height:i,levels:r})]}const l=Nd+zl,h=new Uint32Array(e.buffer,l,J0/Uint32Array.BYTES_PER_ELEMENT),u=h[Kl.DXGI_FORMAT],d=h[Kl.RESOURCE_DIMENSION],f=h[Kl.MISC_FLAG],p=h[Kl.ARRAY_SIZE],m=x2[u];if(m===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${u}`);if(f===v2)throw new Error("DDSParser does not support cubemap textures");if(d===6)throw new Error("DDSParser does not supported 3D texture data");const g=new Array,v=Nd+zl+J0;if(p===1)g.push(new Uint8Array(s,v));else{const x=th[m];let y=0,_=n,C=i;for(let b=0;b>>1,C=C>>>1}let S=v;for(let b=0;bnew Kr(x,{format:m,width:n,height:i,levels:r}))}throw a&h2?new Error("DDSParser does not support uncompressed texture data."):a&u2?new Error("DDSParser does not supported YUV uncompressed texture data."):a&d2?new Error("DDSParser does not support single-channel (lumninance) texture data!"):a&l2?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const Q0=[171,75,84,88,32,49,49,187,13,10,26,10],w2=67305985,xs={ENDIANNESS:12,GL_TYPE:16,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},zf=64,ev={[De.UNSIGNED_BYTE]:1,[De.UNSIGNED_SHORT]:2,[De.INT]:4,[De.UNSIGNED_INT]:4,[De.FLOAT]:4,[De.HALF_FLOAT]:8},S2={[Se.RGBA]:4,[Se.RGB]:3,[Se.RG]:2,[Se.RED]:1,[Se.LUMINANCE]:1,[Se.LUMINANCE_ALPHA]:2,[Se.ALPHA]:1},_2={[De.UNSIGNED_SHORT_4_4_4_4]:2,[De.UNSIGNED_SHORT_5_5_5_1]:2,[De.UNSIGNED_SHORT_5_6_5]:2};function T2(s,e,t=!1){const i=new DataView(e);if(!M2(s,i))return null;const n=i.getUint32(xs.ENDIANNESS,!0)===w2,r=i.getUint32(xs.GL_TYPE,n),o=i.getUint32(xs.GL_FORMAT,n),a=i.getUint32(xs.GL_INTERNAL_FORMAT,n),c=i.getUint32(xs.PIXEL_WIDTH,n),l=i.getUint32(xs.PIXEL_HEIGHT,n)||1,h=i.getUint32(xs.PIXEL_DEPTH,n)||1,u=i.getUint32(xs.NUMBER_OF_ARRAY_ELEMENTS,n)||1,d=i.getUint32(xs.NUMBER_OF_FACES,n),f=i.getUint32(xs.NUMBER_OF_MIPMAP_LEVELS,n),p=i.getUint32(xs.BYTES_OF_KEY_VALUE_DATA,n);if(l===0||h!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(u!==1)throw new Error("WebGL does not support array textures");const m=4,g=4,v=c+3&-4,x=l+3&-4,y=new Array(u);let _=c*l;r===0&&(_=v*x);let C;if(r!==0?ev[r]?C=ev[r]*S2[o]:C=_2[r]:C=th[a],C===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const S=t?A2(i,p,n):null;let b=_*C,M=c,I=l,F=v,E=x,k=zf+p;for(let O=0;O1||r!==0?M:F,levelHeight:f>1||r!==0?I:E,levelBuffer:new Uint8Array(e,$,b)},$+=b}k+=D+4,k=k%4!==0?k+4-k%4:k,M=M>>1||1,I=I>>1||1,F=M+m-1&-4,E=I+g-1&-4,b=F*E*C}return r!==0?{uncompressed:y.map(O=>{let D=O[0].levelBuffer,$=!1;return r===De.FLOAT?D=new Float32Array(O[0].levelBuffer.buffer,O[0].levelBuffer.byteOffset,O[0].levelBuffer.byteLength/4):r===De.UNSIGNED_INT?($=!0,D=new Uint32Array(O[0].levelBuffer.buffer,O[0].levelBuffer.byteOffset,O[0].levelBuffer.byteLength/4)):r===De.INT&&($=!0,D=new Int32Array(O[0].levelBuffer.buffer,O[0].levelBuffer.byteOffset,O[0].levelBuffer.byteLength/4)),{resource:new Kh(D,{width:O[0].levelWidth,height:O[0].levelHeight}),type:r,format:$?C2(o):o}}),kvData:S}:{compressed:y.map(O=>new Kr(null,{format:a,width:c,height:l,levels:f,levelBuffers:O})),kvData:S}}function M2(s,e){for(let t=0;te-n){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let c=0;for(;c{const o=new Je(r,{mipmap:gs.OFF,alphaMode:mi.NO_PREMULTIPLIED_ALPHA,resolution:Dn(s),...e.data});return bl(o,t,s)});return n.length===1?n[0]:n},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};Ne.add(E2);const I2={extension:{type:Pe.LoadParser,priority:ns.High},name:"loadKTX",test(s){return Ki(s,".ktx")},async load(s,e,t){const i=await(await ke.ADAPTER.fetch(s)).arrayBuffer(),{compressed:n,uncompressed:r,kvData:o}=T2(s,i),a=n??r,c={mipmap:gs.OFF,alphaMode:mi.NO_PREMULTIPLIED_ALPHA,resolution:Dn(s),...e.data},l=a.map(h=>{a===r&&Object.assign(c,{type:h.type,format:h.format});const u=h.resource??h,d=new Je(u,c);return d.ktxKeyValueData=o,bl(d,t,s)});return l.length===1?l[0]:l},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};Ne.add(I2);const R2=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],P2={extension:Pe.ResolveParser,test:s=>{const e=Zt.extname(s).slice(1);return["basis","ktx","dds"].includes(e)},parse:s=>{var i,n;const e=s.split("."),t=e.pop();if(["ktx","dds"].includes(t)){const r=e.pop();if(R2.includes(r))return{resolution:parseFloat(((i=ke.RETINA_PREFIX.exec(s))==null?void 0:i[1])??"1"),format:r,src:s}}return{resolution:parseFloat(((n=ke.RETINA_PREFIX.exec(s))==null?void 0:n[1])??"1"),format:t,src:s}}};Ne.add(P2);const Zl=new nt,k2=4,kb=class Fa{constructor(e){this.renderer=e,this._rendererPremultipliedAlpha=!1}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}async image(e,t,i,n){const r=new Image;return r.src=await this.base64(e,t,i,n),r}async base64(e,t,i,n){const r=this.canvas(e,n);if(r.toBlob!==void 0)return new Promise((o,a)=>{r.toBlob(c=>{if(!c){a(new Error("ICanvas.toBlob failed!"));return}const l=new FileReader;l.onload=()=>o(l.result),l.onerror=a,l.readAsDataURL(c)},t,i)});if(r.toDataURL!==void 0)return r.toDataURL(t,i);if(r.convertToBlob!==void 0){const o=await r.convertToBlob({type:t,quality:i});return new Promise((a,c)=>{const l=new FileReader;l.onload=()=>a(l.result),l.onerror=c,l.readAsDataURL(o)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e,t){const{pixels:i,width:n,height:r,flipY:o,premultipliedAlpha:a}=this._rawPixels(e,t);o&&Fa._flipY(i,n,r),a&&Fa._unpremultiplyAlpha(i);const c=new fC(n,r,1),l=new ImageData(new Uint8ClampedArray(i.buffer),n,r);return c.context.putImageData(l,0,0),c.canvas}pixels(e,t){const{pixels:i,width:n,height:r,flipY:o,premultipliedAlpha:a}=this._rawPixels(e,t);return o&&Fa._flipY(i,n,r),a&&Fa._unpremultiplyAlpha(i),i}_rawPixels(e,t){const i=this.renderer;if(!i)throw new Error("The Extract has already been destroyed");let n,r=!1,o=!1,a,c=!1;e&&(e instanceof oo?a=e:(a=i.generateTexture(e,{region:t,resolution:i.resolution,multisample:i.multisample}),c=!0,t&&(Zl.width=t.width,Zl.height=t.height,t=Zl)));const l=i.gl;if(a){if(n=a.baseTexture.resolution,t=t??a.frame,r=!1,o=a.baseTexture.alphaMode>0&&a.baseTexture.format===Se.RGBA,!c){i.renderTexture.bind(a);const f=a.framebuffer.glFramebuffers[i.CONTEXT_UID];f.blitFramebuffer&&i.framebuffer.bind(f.blitFramebuffer)}}else n=i.resolution,t||(t=Zl,t.width=i.width/n,t.height=i.height/n),r=!0,o=this._rendererPremultipliedAlpha,i.renderTexture.bind();const h=Math.max(Math.round(t.width*n),1),u=Math.max(Math.round(t.height*n),1),d=new Uint8Array(k2*h*u);return l.readPixels(Math.round(t.x*n),Math.round(t.y*n),h,u,l.RGBA,l.UNSIGNED_BYTE,d),c&&(a==null||a.destroy(!0)),{pixels:d,width:h,height:u,flipY:r,premultipliedAlpha:o}}destroy(){this.renderer=null}static _flipY(e,t,i){const n=t<<2,r=i>>1,o=new Uint8Array(n);for(let a=0;a=0&&a>=0&&n>=0&&r>=0)){e.length=0;return}const c=Math.ceil(2.3*Math.sqrt(o+a)),l=c*8+(n?4:0)+(r?4:0);if(e.length=l,l===0)return;if(c===0){e.length=8,e[0]=e[6]=t+n,e[1]=e[3]=i+r,e[2]=e[4]=t-n,e[5]=e[7]=i-r;return}let h=0,u=c*4+(n?2:0)+2,d=u,f=l;{const p=n+o,m=r,g=t+p,v=t-p,x=i+m;if(e[h++]=g,e[h++]=x,e[--u]=x,e[--u]=v,r){const y=i-m;e[d++]=v,e[d++]=y,e[--f]=y,e[--f]=g}}for(let p=1;p0||e&&i<=0){const n=t/2;for(let r=n+n%2;r=6){tv(t,!1);const o=[];for(let l=0;l=0&&r>=0&&o.push(t,i,t+n,i,t+n,i+r,t,i+r)},triangulate(s,e){const t=s.points,i=e.points;if(t.length===0)return;const n=i.length/2;i.push(t[0],t[1],t[2],t[3],t[6],t[7],t[4],t[5]),e.indices.push(n,n+1,n+2,n+1,n+2,n+3)}},B2={build(s){ih.build(s)},triangulate(s,e){ih.triangulate(s,e)}};var cs=(s=>(s.MITER="miter",s.BEVEL="bevel",s.ROUND="round",s))(cs||{}),or=(s=>(s.BUTT="butt",s.ROUND="round",s.SQUARE="square",s))(or||{});const Jo={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(s,e=20){if(!this.adaptive||!s||isNaN(s))return e;let t=Math.ceil(s/this.maxLength);return tthis.maxSegments&&(t=this.maxSegments),t}};class iv{static curveTo(e,t,i,n,r,o){const a=o[o.length-2],c=o[o.length-1]-t,l=a-e,h=n-t,u=i-e,d=Math.abs(c*u-l*h);if(d<1e-8||r===0)return(o[o.length-2]!==e||o[o.length-1]!==t)&&o.push(e,t),null;const f=c*c+l*l,p=h*h+u*u,m=c*h+l*u,g=r*Math.sqrt(f)/d,v=r*Math.sqrt(p)/d,x=g*m/f,y=v*m/p,_=g*u+v*l,C=g*h+v*c,S=l*(v+x),b=c*(v+x),M=u*(g+y),I=h*(g+y),F=Math.atan2(b-C,S-_),E=Math.atan2(I-C,M-_);return{cx:_+e,cy:C+t,radius:r,startAngle:F,endAngle:E,anticlockwise:l*h>u*c}}static arc(e,t,i,n,r,o,a,c,l){const h=a-o,u=Jo._segmentsCount(Math.abs(h)*r,Math.ceil(Math.abs(h)/Wc)*40),d=h/(u*2),f=d*2,p=Math.cos(d),m=Math.sin(d),g=u-1,v=g%1/g;for(let x=0;x<=g;++x){const y=x+v*x,_=d+o+f*y,C=Math.cos(_),S=-Math.sin(_);l.push((p*C+m*S)*r+i,(p*-S+m*C)*r+n)}}}class L2{constructor(){this.reset()}begin(e,t,i){this.reset(),this.style=e,this.start=t,this.attribStart=i}end(e,t){this.attribSize=t-this.attribStart,this.size=e-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class ip{static curveLength(e,t,i,n,r,o,a,c){let l=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,v=0,x=0,y=0,_=e,C=t;for(let S=1;S<=10;++S)h=S/10,u=h*h,d=u*h,f=1-h,p=f*f,m=p*f,g=m*e+3*p*h*i+3*f*u*r+d*a,v=m*t+3*p*h*n+3*f*u*o+d*c,x=_-g,y=C-v,_=g,C=v,l+=Math.sqrt(x*x+y*y);return l}static curveTo(e,t,i,n,r,o,a){const c=a[a.length-2],l=a[a.length-1];a.length-=2;const h=Jo._segmentsCount(ip.curveLength(c,l,e,t,i,n,r,o));let u=0,d=0,f=0,p=0,m=0;a.push(c,l);for(let g=1,v=0;g<=h;++g)v=g/h,u=1-v,d=u*u,f=d*u,p=v*v,m=p*v,a.push(f*c+3*d*v*e+3*u*p*i+m*r,f*l+3*d*v*t+3*u*p*n+m*o)}}function sv(s,e,t,i,n,r,o,a){const c=s-t*n,l=e-i*n,h=s+t*r,u=e+i*r;let d,f;o?(d=i,f=-t):(d=-i,f=t);const p=c+d,m=l+f,g=h+d,v=u+f;return a.push(p,m,g,v),2}function Ir(s,e,t,i,n,r,o,a){const c=t-s,l=i-e;let h=Math.atan2(c,l),u=Math.atan2(n-s,r-e);a&&hu&&(u+=Math.PI*2);let d=h;const f=u-h,p=Math.abs(f),m=Math.sqrt(c*c+l*l),g=(15*p*Math.sqrt(m)/Math.PI>>0)+1,v=f/g;if(d+=v,a){o.push(s,e,t,i);for(let x=1,y=d;x=0&&(r.join===cs.ROUND?d+=Ir(y,_,y-b*O,_-M*O,y-I*O,_-F*O,h,!1)+4:d+=2,h.push(y-I*D,_-F*D,y+I*O,_+F*O));continue}const W=(-b+v)*(-M+_)-(-b+y)*(-M+x),ne=(-I+C)*(-F+_)-(-I+y)*(-F+S),re=(A*ne-L*W)/V,le=(B*W-P*ne)/V,ue=(re-y)*(re-y)+(le-_)*(le-_),ae=y+(re-y)*O,xe=_+(le-_)*O,Y=y-(re-y)*D,j=_-(le-_)*D,H=Math.min(A*A+P*P,L*L+B*B),G=q?O:D,z=H+G*G*m,ie=ue<=z;let fe=r.join;if(fe===cs.MITER&&ue/m>g&&(fe=cs.BEVEL),ie)switch(fe){case cs.MITER:{h.push(ae,xe,Y,j);break}case cs.BEVEL:{q?h.push(ae,xe,y+b*D,_+M*D,ae,xe,y+I*D,_+F*D):h.push(y-b*O,_-M*O,Y,j,y-I*O,_-F*O,Y,j),d+=2;break}case cs.ROUND:{q?(h.push(ae,xe,y+b*D,_+M*D),d+=Ir(y,_,y+b*D,_+M*D,y+I*D,_+F*D,h,!0)+4,h.push(ae,xe,y+I*D,_+F*D)):(h.push(y-b*O,_-M*O,Y,j),d+=Ir(y,_,y-b*O,_-M*O,y-I*O,_-F*O,h,!1)+4,h.push(y-I*O,_-F*O,Y,j));break}}else{switch(h.push(y-b*O,_-M*O,y+b*D,_+M*D),fe){case cs.MITER:{q?h.push(Y,j,Y,j):h.push(ae,xe,ae,xe),d+=2;break}case cs.ROUND:{q?d+=Ir(y,_,y+b*D,_+M*D,y+I*D,_+F*D,h,!0)+2:d+=Ir(y,_,y-b*O,_-M*O,y-I*O,_-F*O,h,!1)+2;break}}h.push(y-I*O,_-F*O,y+I*D,_+F*D),d+=2}}v=i[(u-2)*2],x=i[(u-2)*2+1],y=i[(u-1)*2],_=i[(u-1)*2+1],b=-(x-_),M=v-y,E=Math.sqrt(b*b+M*M),b/=E,M/=E,b*=p,M*=p,h.push(y-b*O,_-M*O,y+b*D,_+M*D),c||(r.cap===or.ROUND?d+=Ir(y-b*(O-D)*.5,_-M*(O-D)*.5,y-b*O,_-M*O,y+b*D,_+M*D,h,!1)+2:r.cap===or.SQUARE&&(d+=sv(y,_,b,M,O,D,!1,h)));const $=e.indices,N=Jo.epsilon*Jo.epsilon;for(let U=f;U0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(e,t=null,i=null,n=null){const r=new sh(e,t,i,n);return this.graphicsData.push(r),this.dirty++,this}drawHole(e,t=null){if(!this.graphicsData.length)return null;const i=new sh(e,null,null,t),n=this.graphicsData[this.graphicsData.length-1];return i.lineStyle=n.lineStyle,n.holes.push(i),this.dirty++,this}destroy(){super.destroy();for(let e=0;e0&&(i=this.batches[this.batches.length-1],n=i.style);for(let c=this.shapeIndex;c65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&a===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=a?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(e,t){return!(!e||!t||e.texture.baseTexture!==t.texture.baseTexture||e.color+e.alpha!==t.color+t.alpha||!!e.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let e=0,t=this.graphicsData.length;e65535*2)return!1;const e=this.batches;for(let t=0;t0&&(n=Jl.pop(),n||(n=new Af,n.texArray=new Pf),this.drawCalls.push(n)),n.start=h,n.size=0,n.texArray.count=0,n.type=l),m.touched=1,m._batchEnabled=e,m._batchLocation=r,m.wrapMode=Is.REPEAT,n.texArray.elements[n.texArray.count++]=m,r++)),n.size+=d.size,h+=d.size,a=m._batchLocation,this.addColors(t,p.color,p.alpha,d.attribSize,d.attribStart),this.addTextureIds(i,a,d.attribSize,d.attribStart)}Je._globalBatch=e,this.packAttributes()}packAttributes(){const e=this.points,t=this.uvs,i=this.colors,n=this.textureIds,r=new ArrayBuffer(e.length*3*4),o=new Float32Array(r),a=new Uint32Array(r);let c=0;for(let l=0;l0&&e.alpha>0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:i},e)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const e=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new qr,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[t-2],e[t-1]))}else this.currentPath=new qr,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(e,t){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=t,this}lineTo(e,t){this.currentPath||this.moveTo(0,0);const i=this.currentPath.points,n=i[i.length-2],r=i[i.length-1];return(n!==e||r!==t)&&i.push(e,t),this}_initCurve(e=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,t]):this.moveTo(e,t)}quadraticCurveTo(e,t,i,n){this._initCurve();const r=this.currentPath.points;return r.length===0&&this.moveTo(0,0),sp.curveTo(e,t,i,n,r),this}bezierCurveTo(e,t,i,n,r,o){return this._initCurve(),ip.curveTo(e,t,i,n,r,o,this.currentPath.points),this}arcTo(e,t,i,n,r){this._initCurve(e,t);const o=this.currentPath.points,a=iv.curveTo(e,t,i,n,r,o);if(a){const{cx:c,cy:l,radius:h,startAngle:u,endAngle:d,anticlockwise:f}=a;this.arc(c,l,h,u,d,f)}return this}arc(e,t,i,n,r,o=!1){if(n===r)return this;if(!o&&r<=n?r+=Wc:o&&n<=r&&(n+=Wc),r-n===0)return this;const a=e+Math.cos(n)*i,c=t+Math.sin(n)*i,l=this._geometry.closePointEps;let h=this.currentPath?this.currentPath.points:null;if(h){const u=Math.abs(h[h.length-2]-a),d=Math.abs(h[h.length-1]-c);u0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:i},e)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(e,t,i,n){return this.drawShape(new nt(e,t,i,n))}drawRoundedRect(e,t,i,n,r){return this.drawShape(new Qh(e,t,i,n,r))}drawCircle(e,t,i){return this.drawShape(new Zh(e,t,i))}drawEllipse(e,t,i,n){return this.drawShape(new Jh(e,t,i,n))}drawPolygon(...e){let t,i=!0;const n=e[0];n.points?(i=n.closeStroke,t=n.points):Array.isArray(e[0])?t=e[0]:t=e;const r=new qr(t);return r.closeStroke=i,this.drawShape(r),this}drawShape(e){return this._holeMode?this._geometry.drawHole(e,this._matrix):this._geometry.drawShape(e,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const e=this._geometry.graphicsData;return e.length===1&&e[0].shape.type===wi.RECT&&!e[0].matrix&&!e[0].holes.length&&!(e[0].lineStyle.visible&&e[0].lineStyle.width)}_render(e){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(e)):(e.batch.flush(),this._renderDirect(e))}_populateBatches(){const e=this._geometry,t=this.blendMode,i=e.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=e.batchDirty,this.batches.length=i,this.vertexData=new Float32Array(e.points);for(let n=0;ni&&!e.autoResize&&(o=i);let a=e._buffers;a||(a=e._buffers=this.generateBuffers(e));const c=t[0]._texture.baseTexture,l=c.alphaMode>0;this.state.blendMode=Lx(e.blendMode,l),r.state.set(this.state);const h=r.gl,u=e.worldTransform.copyTo(this.tempMatrix);u.prepend(r.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=St.shared.setValue(e.tintRgb).premultiply(e.worldAlpha,l).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=c,this.renderer.shader.bind(this.shader);let d=!1;for(let f=0,p=0;fn&&(m=n),p>=a.length&&a.push(this._generateOneMoreBuffer(e));const g=a[p];g.uploadDynamic(t,f,m);const v=e._bufferUpdateIDs[p]||0;d=d||g._updateID0);n[o]=l,n[o+r]=l,n[o+r*2]=l,n[o+r*3]=l,o+=r*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}N1.extension={name:"particle",type:Pe.RendererPlugin};Ne.add(N1);var su=(s=>(s[s.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",s[s.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",s))(su||{});const Ql={willReadFrequently:!0},Us=class Ve{static get experimentalLetterSpacingSupported(){let e=Ve._experimentalLetterSpacingSupported;if(e!==void 0){const t=ke.ADAPTER.getCanvasRenderingContext2D().prototype;e=Ve._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,i,n,r,o,a,c,l){this.text=e,this.style=t,this.width=i,this.height=n,this.lines=r,this.lineWidths=o,this.lineHeight=a,this.maxLineWidth=c,this.fontProperties=l}static measureText(e,t,i,n=Ve._canvas){i=i??t.wordWrap;const r=t.toFontString(),o=Ve.measureFont(r);o.fontSize===0&&(o.fontSize=t.fontSize,o.ascent=t.fontSize);const a=n.getContext("2d",Ql);a.font=r;const c=(i?Ve.wordWrap(e,t,n):e).split(/(?:\r\n|\r|\n)/),l=new Array(c.length);let h=0;for(let p=0;p0&&(n?r-=t:r+=(Ve.graphemeSegmenter(e).length-1)*t),r}static wordWrap(e,t,i=Ve._canvas){const n=i.getContext("2d",Ql);let r=0,o="",a="";const c=Object.create(null),{letterSpacing:l,whiteSpace:h}=t,u=Ve.collapseSpaces(h),d=Ve.collapseNewlines(h);let f=!u;const p=t.wordWrapWidth+l,m=Ve.tokenize(e);for(let g=0;gp)if(o!==""&&(a+=Ve.addLine(o),o="",r=0),Ve.canBreakWords(v,t.breakWords)){const y=Ve.wordWrapSplit(v);for(let _=0;_p&&(a+=Ve.addLine(o),f=!1,o="",r=0),o+=C,r+=M}}else{o.length>0&&(a+=Ve.addLine(o),o="",r=0);const y=g===m.length-1;a+=Ve.addLine(v,!y),f=!1,o="",r=0}else x+r>p&&(f=!1,a+=Ve.addLine(o),o="",r=0),(o.length>0||!Ve.isBreakingSpace(v)||f)&&(o+=v,r+=x)}return a+=Ve.addLine(o,!1),a}static addLine(e,t=!0){return e=Ve.trimRight(e),e=t?`${e} -`:e,e}static getFromCache(e,t,i,n){let r=i[e];return typeof r!="number"&&(r=Ve._measureText(e,t,n)+t,i[e]=r),r}static collapseSpaces(e){return e==="normal"||e==="pre-line"}static collapseNewlines(e){return e==="normal"}static trimRight(e){if(typeof e!="string")return"";for(let t=e.length-1;t>=0;t--){const i=e[t];if(!Ve.isBreakingSpace(i))break;e=e.slice(0,-1)}return e}static isNewline(e){return typeof e!="string"?!1:Ve._newlines.includes(e.charCodeAt(0))}static isBreakingSpace(e,t){return typeof e!="string"?!1:Ve._breakingSpaces.includes(e.charCodeAt(0))}static tokenize(e){const t=[];let i="";if(typeof e!="string")return t;for(let n=0;na;--d){for(let m=0;m{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const s=new Intl.Segmenter;return e=>[...s.segment(e)].map(t=>t.segment)}return s=>[...s]})(),Us.experimentalLetterSpacing=!1,Us._fonts={},Us._newlines=[10,13],Us._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];let Zn=Us;const j2=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],U1=class Oa{constructor(e){this.styleID=0,this.reset(),Yd(this,e,e)}clone(){const e={};return Yd(e,this,Oa.defaultStyle),new Oa(e)}reset(){Yd(this,Oa.defaultStyle,Oa.defaultStyle)}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(e){this._dropShadow!==e&&(this._dropShadow=e,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(e){this._dropShadowAlpha!==e&&(this._dropShadowAlpha=e,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(e){this._dropShadowAngle!==e&&(this._dropShadowAngle=e,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(e){this._dropShadowBlur!==e&&(this._dropShadowBlur=e,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(e){const t=Vd(e);this._dropShadowColor!==t&&(this._dropShadowColor=t,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(e){this._dropShadowDistance!==e&&(this._dropShadowDistance=e,this.styleID++)}get fill(){return this._fill}set fill(e){const t=Vd(e);this._fill!==t&&(this._fill=t,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType(e){this._fillGradientType!==e&&(this._fillGradientType=e,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops(e){W2(this._fillGradientStops,e)||(this._fillGradientStops=e,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily(e){this.fontFamily!==e&&(this._fontFamily=e,this.styleID++)}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize!==e&&(this._fontSize=e,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant!==e&&(this._fontVariant=e,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.styleID++)}get leading(){return this._leading}set leading(e){this._leading!==e&&(this._leading=e,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin(e){this._lineJoin!==e&&(this._lineJoin=e,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit(e){this._miterLimit!==e&&(this._miterLimit=e,this.styleID++)}get padding(){return this._padding}set padding(e){this._padding!==e&&(this._padding=e,this.styleID++)}get stroke(){return this._stroke}set stroke(e){const t=Vd(e);this._stroke!==t&&(this._stroke=t,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness(e){this._strokeThickness!==e&&(this._strokeThickness=e,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline!==e&&(this._textBaseline=e,this.styleID++)}get trim(){return this._trim}set trim(e){this._trim!==e&&(this._trim=e,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace!==e&&(this._whiteSpace=e,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap!==e&&(this._wordWrap=e,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth!==e&&(this._wordWrapWidth=e,this.styleID++)}toFontString(){const e=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize;let t=this.fontFamily;Array.isArray(this.fontFamily)||(t=this.fontFamily.split(","));for(let i=t.length-1;i>=0;i--){let n=t[i].trim();!/([\"\'])[^\'\"]+\1/.test(n)&&!j2.includes(n)&&(n=`"${n}"`),t[i]=n}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${e} ${t.join(",")}`}};U1.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:su.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let mr=U1;function Vd(s){const e=St.shared,t=i=>{const n=e.setValue(i);return n.alpha===1?n.toHex():n.toRgbaString()};return Array.isArray(s)?s.map(t):t(s)}function W2(s,e){if(!Array.isArray(s)||!Array.isArray(e)||s.length!==e.length)return!1;for(let t=0;t0&&p>m&&(g=(m+p)/2);const v=m+d,x=i.lineHeight*(f+1);let y=v;f+10}}function K2(s,e){var i;let t=!1;if((i=s==null?void 0:s._textures)!=null&&i.length){for(let n=0;n{this.queue&&this.prepareItems()},this.registerFindHook(tI),this.registerFindHook(iI),this.registerFindHook(K2),this.registerFindHook(Z2),this.registerFindHook(J2),this.registerUploadHook(Q2),this.registerUploadHook(eI)}upload(e){return new Promise(t=>{e&&this.add(e),this.queue.length?(this.completes.push(t),this.ticking||(this.ticking=!0,$i.system.addOnce(this.tick,this,to.UTILITY))):t()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){const e=this.queue[0];let t=!1;if(e&&!e._destroyed){for(let i=0,n=this.uploadHooks.length;i=0;t--)this.add(e.children[t]);return this}destroy(){this.ticking&&$i.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};X1.uploadsPerFrame=4;let Zf=X1;Object.defineProperties(ke,{UPLOADS_PER_FRAME:{get(){return Zf.uploadsPerFrame},set(s){ct("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),Zf.uploadsPerFrame=s}}});function Y1(s,e){return e instanceof Je?(e._glTextures[s.CONTEXT_UID]||s.texture.bind(e),!0):!1}function sI(s,e){if(!(e instanceof zi))return!1;const{geometry:t}=e;e.finishPoly(),t.updateBatches();const{batches:i}=t;for(let n=0;ni&&!e.autoResize&&(o=i);let a=e._buffers;a||(a=e._buffers=this.generateBuffers(e));const c=t[0]._texture.baseTexture,l=c.alphaMode>0;this.state.blendMode=Lx(e.blendMode,l),r.state.set(this.state);const h=r.gl,u=e.worldTransform.copyTo(this.tempMatrix);u.prepend(r.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=St.shared.setValue(e.tintRgb).premultiply(e.worldAlpha,l).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=c,this.renderer.shader.bind(this.shader);let d=!1;for(let f=0,p=0;fn&&(m=n),p>=a.length&&a.push(this._generateOneMoreBuffer(e));const g=a[p];g.uploadDynamic(t,f,m);const v=e._bufferUpdateIDs[p]||0;d=d||g._updateID0);n[o]=l,n[o+r]=l,n[o+r*2]=l,n[o+r*3]=l,o+=r*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}Nb.extension={name:"particle",type:Pe.RendererPlugin};Ne.add(Nb);var su=(s=>(s[s.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",s[s.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",s))(su||{});const Ql={willReadFrequently:!0},Us=class Ve{static get experimentalLetterSpacingSupported(){let e=Ve._experimentalLetterSpacingSupported;if(e!==void 0){const t=ke.ADAPTER.getCanvasRenderingContext2D().prototype;e=Ve._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,i,n,r,o,a,c,l){this.text=e,this.style=t,this.width=i,this.height=n,this.lines=r,this.lineWidths=o,this.lineHeight=a,this.maxLineWidth=c,this.fontProperties=l}static measureText(e,t,i,n=Ve._canvas){i=i??t.wordWrap;const r=t.toFontString(),o=Ve.measureFont(r);o.fontSize===0&&(o.fontSize=t.fontSize,o.ascent=t.fontSize);const a=n.getContext("2d",Ql);a.font=r;const c=(i?Ve.wordWrap(e,t,n):e).split(/(?:\r\n|\r|\n)/),l=new Array(c.length);let h=0;for(let p=0;p0&&(n?r-=t:r+=(Ve.graphemeSegmenter(e).length-1)*t),r}static wordWrap(e,t,i=Ve._canvas){const n=i.getContext("2d",Ql);let r=0,o="",a="";const c=Object.create(null),{letterSpacing:l,whiteSpace:h}=t,u=Ve.collapseSpaces(h),d=Ve.collapseNewlines(h);let f=!u;const p=t.wordWrapWidth+l,m=Ve.tokenize(e);for(let g=0;gp)if(o!==""&&(a+=Ve.addLine(o),o="",r=0),Ve.canBreakWords(v,t.breakWords)){const y=Ve.wordWrapSplit(v);for(let _=0;_p&&(a+=Ve.addLine(o),f=!1,o="",r=0),o+=C,r+=M}}else{o.length>0&&(a+=Ve.addLine(o),o="",r=0);const y=g===m.length-1;a+=Ve.addLine(v,!y),f=!1,o="",r=0}else x+r>p&&(f=!1,a+=Ve.addLine(o),o="",r=0),(o.length>0||!Ve.isBreakingSpace(v)||f)&&(o+=v,r+=x)}return a+=Ve.addLine(o,!1),a}static addLine(e,t=!0){return e=Ve.trimRight(e),e=t?`${e} +`:e,e}static getFromCache(e,t,i,n){let r=i[e];return typeof r!="number"&&(r=Ve._measureText(e,t,n)+t,i[e]=r),r}static collapseSpaces(e){return e==="normal"||e==="pre-line"}static collapseNewlines(e){return e==="normal"}static trimRight(e){if(typeof e!="string")return"";for(let t=e.length-1;t>=0;t--){const i=e[t];if(!Ve.isBreakingSpace(i))break;e=e.slice(0,-1)}return e}static isNewline(e){return typeof e!="string"?!1:Ve._newlines.includes(e.charCodeAt(0))}static isBreakingSpace(e,t){return typeof e!="string"?!1:Ve._breakingSpaces.includes(e.charCodeAt(0))}static tokenize(e){const t=[];let i="";if(typeof e!="string")return t;for(let n=0;na;--d){for(let m=0;m{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const s=new Intl.Segmenter;return e=>[...s.segment(e)].map(t=>t.segment)}return s=>[...s]})(),Us.experimentalLetterSpacing=!1,Us._fonts={},Us._newlines=[10,13],Us._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];let Zn=Us;const j2=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],Ub=class Oa{constructor(e){this.styleID=0,this.reset(),Yd(this,e,e)}clone(){const e={};return Yd(e,this,Oa.defaultStyle),new Oa(e)}reset(){Yd(this,Oa.defaultStyle,Oa.defaultStyle)}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(e){this._dropShadow!==e&&(this._dropShadow=e,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(e){this._dropShadowAlpha!==e&&(this._dropShadowAlpha=e,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(e){this._dropShadowAngle!==e&&(this._dropShadowAngle=e,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(e){this._dropShadowBlur!==e&&(this._dropShadowBlur=e,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(e){const t=Vd(e);this._dropShadowColor!==t&&(this._dropShadowColor=t,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(e){this._dropShadowDistance!==e&&(this._dropShadowDistance=e,this.styleID++)}get fill(){return this._fill}set fill(e){const t=Vd(e);this._fill!==t&&(this._fill=t,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType(e){this._fillGradientType!==e&&(this._fillGradientType=e,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops(e){W2(this._fillGradientStops,e)||(this._fillGradientStops=e,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily(e){this.fontFamily!==e&&(this._fontFamily=e,this.styleID++)}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize!==e&&(this._fontSize=e,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant!==e&&(this._fontVariant=e,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.styleID++)}get leading(){return this._leading}set leading(e){this._leading!==e&&(this._leading=e,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin(e){this._lineJoin!==e&&(this._lineJoin=e,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit(e){this._miterLimit!==e&&(this._miterLimit=e,this.styleID++)}get padding(){return this._padding}set padding(e){this._padding!==e&&(this._padding=e,this.styleID++)}get stroke(){return this._stroke}set stroke(e){const t=Vd(e);this._stroke!==t&&(this._stroke=t,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness(e){this._strokeThickness!==e&&(this._strokeThickness=e,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline!==e&&(this._textBaseline=e,this.styleID++)}get trim(){return this._trim}set trim(e){this._trim!==e&&(this._trim=e,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace!==e&&(this._whiteSpace=e,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap!==e&&(this._wordWrap=e,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth!==e&&(this._wordWrapWidth=e,this.styleID++)}toFontString(){const e=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize;let t=this.fontFamily;Array.isArray(this.fontFamily)||(t=this.fontFamily.split(","));for(let i=t.length-1;i>=0;i--){let n=t[i].trim();!/([\"\'])[^\'\"]+\1/.test(n)&&!j2.includes(n)&&(n=`"${n}"`),t[i]=n}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${e} ${t.join(",")}`}};Ub.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:su.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let mr=Ub;function Vd(s){const e=St.shared,t=i=>{const n=e.setValue(i);return n.alpha===1?n.toHex():n.toRgbaString()};return Array.isArray(s)?s.map(t):t(s)}function W2(s,e){if(!Array.isArray(s)||!Array.isArray(e)||s.length!==e.length)return!1;for(let t=0;t0&&p>m&&(g=(m+p)/2);const v=m+d,x=i.lineHeight*(f+1);let y=v;f+10}}function K2(s,e){var i;let t=!1;if((i=s==null?void 0:s._textures)!=null&&i.length){for(let n=0;n{this.queue&&this.prepareItems()},this.registerFindHook(tI),this.registerFindHook(iI),this.registerFindHook(K2),this.registerFindHook(Z2),this.registerFindHook(J2),this.registerUploadHook(Q2),this.registerUploadHook(eI)}upload(e){return new Promise(t=>{e&&this.add(e),this.queue.length?(this.completes.push(t),this.ticking||(this.ticking=!0,$i.system.addOnce(this.tick,this,to.UTILITY))):t()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){const e=this.queue[0];let t=!1;if(e&&!e._destroyed){for(let i=0,n=this.uploadHooks.length;i=0;t--)this.add(e.children[t]);return this}destroy(){this.ticking&&$i.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};Xb.uploadsPerFrame=4;let Zf=Xb;Object.defineProperties(ke,{UPLOADS_PER_FRAME:{get(){return Zf.uploadsPerFrame},set(s){ct("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),Zf.uploadsPerFrame=s}}});function Yb(s,e){return e instanceof Je?(e._glTextures[s.CONTEXT_UID]||s.texture.bind(e),!0):!1}function sI(s,e){if(!(e instanceof zi))return!1;const{geometry:t}=e;e.finishPoly(),t.updateBatches();const{batches:i}=t;for(let n=0;n1?ks.from(oI,rI,t):ks.from(lv,aI,t)}render(e){const t=this.renderer,i=this.quad;let n=i.vertices;n[0]=n[6]=e._width*-e.anchor.x,n[1]=n[3]=e._height*-e.anchor.y,n[2]=n[4]=e._width*(1-e.anchor.x),n[5]=n[7]=e._height*(1-e.anchor.y);const r=e.uvRespectAnchor?e.anchor.x:0,o=e.uvRespectAnchor?e.anchor.y:0;n=i.uvs,n[0]=n[6]=-r,n[1]=n[3]=-o,n[2]=n[4]=1-r,n[5]=n[7]=1-o,i.invalidate();const a=e._texture,c=a.baseTexture,l=c.alphaMode>0,h=e.tileTransform.localTransform,u=e.uvMatrix;let d=c.isPowerOfTwo&&a.frame.width===c.width&&a.frame.height===c.height;d&&(c._glTextures[t.CONTEXT_UID]?d=c.wrapMode!==Is.CLAMP:c.wrapMode===Is.CLAMP&&(c.wrapMode=Is.REPEAT));const f=d?this.simpleShader:this.shader,p=a.width,m=a.height,g=e._width,v=e._height;ec.set(h.a*p/g,h.b*p/v,h.c*m/g,h.d*m/v,h.tx/g,h.ty/v),ec.invert(),d?ec.prepend(u.mapCoord):(f.uniforms.uMapCoord=u.mapCoord.toArray(!0),f.uniforms.uClampFrame=u.uClampFrame,f.uniforms.uClampOffset=u.uClampOffset),f.uniforms.uTransform=ec.toArray(!0),f.uniforms.uColor=St.shared.setValue(e.tint).premultiply(e.worldAlpha,l).toArray(f.uniforms.uColor),f.uniforms.translationMatrix=e.transform.worldTransform.toArray(!0),f.uniforms.uSampler=a,t.shader.bind(f),t.geometry.bind(i),this.state.blendMode=Lx(e.blendMode,l),t.state.set(this.state),t.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}H1.extension={name:"tilingSprite",type:Pe.RendererPlugin};Ne.add(H1);const j1=class Ba{constructor(e,t,i){this.linkedSheets=[],(e instanceof Je||e instanceof ze)&&(e={texture:e,data:t,resolutionFilename:i});const{texture:n,data:r,resolutionFilename:o=null,cachePrefix:a=""}=e;this.cachePrefix=a,this._texture=n instanceof ze?n:null,this.baseTexture=n instanceof Je?n:this._texture.baseTexture,this.textures={},this.animations={},this.data=r;const c=this.baseTexture.resource;this.resolution=this._updateResolution(o||(c?c.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let i=Dn(e,null);return i===null&&(i=typeof t=="number"?t:parseFloat(t??"1")),i!==1&&this.baseTexture.setResolution(i),i}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=Ba.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const i=Ba.BATCH_SIZE;for(;t-e{this._batchIndex*Ba.BATCH_SIZE{i[n]=e}),Object.keys(e.textures).forEach(n=>{i[`${e.cachePrefix}${n}`]=e.textures[n]}),!t){const n=Zt.dirname(s[0]);e.linkedSheets.forEach((r,o)=>{Object.assign(i,W1([`${n}/${e.data.meta.related_multi_packs[o]}`],r,!0))})}return i}const hI={extension:Pe.Asset,cache:{test:s=>s instanceof cv,getCacheableAssets:(s,e)=>W1(s,e,!1)},resolver:{test:s=>{const e=s.split("?")[0].split("."),t=e.pop(),i=e.pop();return t==="json"&&cI.includes(i)},parse:s=>{var t;const e=s.split(".");return{resolution:parseFloat(((t=ke.RETINA_PREFIX.exec(s))==null?void 0:t[1])??"1"),format:e[e.length-2],src:s}}},loader:{name:"spritesheetLoader",extension:{type:Pe.LoadParser,priority:ns.Normal},async testParse(s,e){return Zt.extname(e.src).toLowerCase()===".json"&&!!s.frames},async parse(s,e,t){var h,u;const{texture:i,imageFilename:n,cachePrefix:r}=(e==null?void 0:e.data)??{};let o=Zt.dirname(e.src);o&&o.lastIndexOf("/")!==o.length-1&&(o+="/");let a;if(i&&i.baseTexture)a=i;else{const d=Qc(o+(n??s.meta.image),e.src);a=(await t.load([d]))[d]}const c=new cv({texture:a.baseTexture,data:s,resolutionFilename:e.src,cachePrefix:r});await c.parse();const l=(h=s==null?void 0:s.meta)==null?void 0:h.related_multi_packs;if(Array.isArray(l)){const d=[];for(const p of l){if(typeof p!="string")continue;let m=o+p;(u=e.data)!=null&&u.ignoreMultiPack||(m=Qc(m,e.src),d.push(t.load({src:m,data:{ignoreMultiPack:!0}})))}const f=await Promise.all(d);c.linkedSheets=f,f.forEach(p=>{p.linkedSheets=[c].concat(c.linkedSheets.filter(m=>m!==p))})}return c},unload(s){s.destroy(!0)}}};Ne.add(hI);class rh{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class Tc{static test(e){return typeof e=="string"&&e.startsWith("info face=")}static parse(e){const t=e.match(/^[a-z]+\s+.+$/gm),i={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const r in t){const o=t[r].match(/^[a-z]+/gm)[0],a=t[r].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),c={};for(const l in a){const h=a[l].split("="),u=h[0],d=h[1].replace(/"/gm,""),f=parseFloat(d),p=isNaN(f)?d:f;c[u]=p}i[o].push(c)}const n=new rh;return i.info.forEach(r=>n.info.push({face:r.face,size:parseInt(r.size,10)})),i.common.forEach(r=>n.common.push({lineHeight:parseInt(r.lineHeight,10)})),i.page.forEach(r=>n.page.push({id:parseInt(r.id,10),file:r.file})),i.char.forEach(r=>n.char.push({id:parseInt(r.id,10),page:parseInt(r.page,10),x:parseInt(r.x,10),y:parseInt(r.y,10),width:parseInt(r.width,10),height:parseInt(r.height,10),xoffset:parseInt(r.xoffset,10),yoffset:parseInt(r.yoffset,10),xadvance:parseInt(r.xadvance,10)})),i.kerning.forEach(r=>n.kerning.push({first:parseInt(r.first,10),second:parseInt(r.second,10),amount:parseInt(r.amount,10)})),i.distanceField.forEach(r=>n.distanceField.push({distanceRange:parseInt(r.distanceRange,10),fieldType:r.fieldType})),n}}class Jf{static test(e){const t=e;return typeof e!="string"&&"getElementsByTagName"in e&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(e){const t=new rh,i=e.getElementsByTagName("info"),n=e.getElementsByTagName("common"),r=e.getElementsByTagName("page"),o=e.getElementsByTagName("char"),a=e.getElementsByTagName("kerning"),c=e.getElementsByTagName("distanceField");for(let l=0;l")?Jf.test(ke.ADAPTER.parseXML(e)):!1}static parse(e){return Jf.parse(ke.ADAPTER.parseXML(e))}}const Gd=[Tc,Jf,Qf];function uI(s){for(let e=0;e=c-F*o){if(m===0)throw new Error(`[BitmapFont] textureHeight ${c}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${b}')`);--S,g=null,v=null,x=null,m=0,p=0,y=0;continue}if(y=Math.max(F+M.fontProperties.descent,y),E*o+p>=d){if(p===0)throw new Error(`[BitmapFont] textureWidth ${a}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${b}')`);--S,m+=y*o,m=Math.ceil(m),p=0,y=0;continue}fI(g,v,M,p,m,o,u);const k=Mc(M.text);f.char.push({id:k,page:_.length-1,x:p/o,y:m/o,width:E,height:F,xoffset:0,yoffset:0,xadvance:I-(u.dropShadow?u.dropShadowDistance:0)-(u.stroke?u.strokeThickness:0)}),p+=(E+2*r)*o,p=Math.ceil(p)}if(!(i!=null&&i.skipKerning))for(let S=0,b=h.length;S1?ks.from(oI,rI,t):ks.from(lv,aI,t)}render(e){const t=this.renderer,i=this.quad;let n=i.vertices;n[0]=n[6]=e._width*-e.anchor.x,n[1]=n[3]=e._height*-e.anchor.y,n[2]=n[4]=e._width*(1-e.anchor.x),n[5]=n[7]=e._height*(1-e.anchor.y);const r=e.uvRespectAnchor?e.anchor.x:0,o=e.uvRespectAnchor?e.anchor.y:0;n=i.uvs,n[0]=n[6]=-r,n[1]=n[3]=-o,n[2]=n[4]=1-r,n[5]=n[7]=1-o,i.invalidate();const a=e._texture,c=a.baseTexture,l=c.alphaMode>0,h=e.tileTransform.localTransform,u=e.uvMatrix;let d=c.isPowerOfTwo&&a.frame.width===c.width&&a.frame.height===c.height;d&&(c._glTextures[t.CONTEXT_UID]?d=c.wrapMode!==Is.CLAMP:c.wrapMode===Is.CLAMP&&(c.wrapMode=Is.REPEAT));const f=d?this.simpleShader:this.shader,p=a.width,m=a.height,g=e._width,v=e._height;ec.set(h.a*p/g,h.b*p/v,h.c*m/g,h.d*m/v,h.tx/g,h.ty/v),ec.invert(),d?ec.prepend(u.mapCoord):(f.uniforms.uMapCoord=u.mapCoord.toArray(!0),f.uniforms.uClampFrame=u.uClampFrame,f.uniforms.uClampOffset=u.uClampOffset),f.uniforms.uTransform=ec.toArray(!0),f.uniforms.uColor=St.shared.setValue(e.tint).premultiply(e.worldAlpha,l).toArray(f.uniforms.uColor),f.uniforms.translationMatrix=e.transform.worldTransform.toArray(!0),f.uniforms.uSampler=a,t.shader.bind(f),t.geometry.bind(i),this.state.blendMode=Lx(e.blendMode,l),t.state.set(this.state),t.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}Hb.extension={name:"tilingSprite",type:Pe.RendererPlugin};Ne.add(Hb);const jb=class Ba{constructor(e,t,i){this.linkedSheets=[],(e instanceof Je||e instanceof ze)&&(e={texture:e,data:t,resolutionFilename:i});const{texture:n,data:r,resolutionFilename:o=null,cachePrefix:a=""}=e;this.cachePrefix=a,this._texture=n instanceof ze?n:null,this.baseTexture=n instanceof Je?n:this._texture.baseTexture,this.textures={},this.animations={},this.data=r;const c=this.baseTexture.resource;this.resolution=this._updateResolution(o||(c?c.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let i=Dn(e,null);return i===null&&(i=typeof t=="number"?t:parseFloat(t??"1")),i!==1&&this.baseTexture.setResolution(i),i}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=Ba.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const i=Ba.BATCH_SIZE;for(;t-e{this._batchIndex*Ba.BATCH_SIZE{i[n]=e}),Object.keys(e.textures).forEach(n=>{i[`${e.cachePrefix}${n}`]=e.textures[n]}),!t){const n=Zt.dirname(s[0]);e.linkedSheets.forEach((r,o)=>{Object.assign(i,Wb([`${n}/${e.data.meta.related_multi_packs[o]}`],r,!0))})}return i}const hI={extension:Pe.Asset,cache:{test:s=>s instanceof cv,getCacheableAssets:(s,e)=>Wb(s,e,!1)},resolver:{test:s=>{const e=s.split("?")[0].split("."),t=e.pop(),i=e.pop();return t==="json"&&cI.includes(i)},parse:s=>{var t;const e=s.split(".");return{resolution:parseFloat(((t=ke.RETINA_PREFIX.exec(s))==null?void 0:t[1])??"1"),format:e[e.length-2],src:s}}},loader:{name:"spritesheetLoader",extension:{type:Pe.LoadParser,priority:ns.Normal},async testParse(s,e){return Zt.extname(e.src).toLowerCase()===".json"&&!!s.frames},async parse(s,e,t){var h,u;const{texture:i,imageFilename:n,cachePrefix:r}=(e==null?void 0:e.data)??{};let o=Zt.dirname(e.src);o&&o.lastIndexOf("/")!==o.length-1&&(o+="/");let a;if(i&&i.baseTexture)a=i;else{const d=Qc(o+(n??s.meta.image),e.src);a=(await t.load([d]))[d]}const c=new cv({texture:a.baseTexture,data:s,resolutionFilename:e.src,cachePrefix:r});await c.parse();const l=(h=s==null?void 0:s.meta)==null?void 0:h.related_multi_packs;if(Array.isArray(l)){const d=[];for(const p of l){if(typeof p!="string")continue;let m=o+p;(u=e.data)!=null&&u.ignoreMultiPack||(m=Qc(m,e.src),d.push(t.load({src:m,data:{ignoreMultiPack:!0}})))}const f=await Promise.all(d);c.linkedSheets=f,f.forEach(p=>{p.linkedSheets=[c].concat(c.linkedSheets.filter(m=>m!==p))})}return c},unload(s){s.destroy(!0)}}};Ne.add(hI);class rh{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class Tc{static test(e){return typeof e=="string"&&e.startsWith("info face=")}static parse(e){const t=e.match(/^[a-z]+\s+.+$/gm),i={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const r in t){const o=t[r].match(/^[a-z]+/gm)[0],a=t[r].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),c={};for(const l in a){const h=a[l].split("="),u=h[0],d=h[1].replace(/"/gm,""),f=parseFloat(d),p=isNaN(f)?d:f;c[u]=p}i[o].push(c)}const n=new rh;return i.info.forEach(r=>n.info.push({face:r.face,size:parseInt(r.size,10)})),i.common.forEach(r=>n.common.push({lineHeight:parseInt(r.lineHeight,10)})),i.page.forEach(r=>n.page.push({id:parseInt(r.id,10),file:r.file})),i.char.forEach(r=>n.char.push({id:parseInt(r.id,10),page:parseInt(r.page,10),x:parseInt(r.x,10),y:parseInt(r.y,10),width:parseInt(r.width,10),height:parseInt(r.height,10),xoffset:parseInt(r.xoffset,10),yoffset:parseInt(r.yoffset,10),xadvance:parseInt(r.xadvance,10)})),i.kerning.forEach(r=>n.kerning.push({first:parseInt(r.first,10),second:parseInt(r.second,10),amount:parseInt(r.amount,10)})),i.distanceField.forEach(r=>n.distanceField.push({distanceRange:parseInt(r.distanceRange,10),fieldType:r.fieldType})),n}}class Jf{static test(e){const t=e;return typeof e!="string"&&"getElementsByTagName"in e&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(e){const t=new rh,i=e.getElementsByTagName("info"),n=e.getElementsByTagName("common"),r=e.getElementsByTagName("page"),o=e.getElementsByTagName("char"),a=e.getElementsByTagName("kerning"),c=e.getElementsByTagName("distanceField");for(let l=0;l")?Jf.test(ke.ADAPTER.parseXML(e)):!1}static parse(e){return Jf.parse(ke.ADAPTER.parseXML(e))}}const Gd=[Tc,Jf,Qf];function uI(s){for(let e=0;e=c-F*o){if(m===0)throw new Error(`[BitmapFont] textureHeight ${c}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${b}')`);--S,g=null,v=null,x=null,m=0,p=0,y=0;continue}if(y=Math.max(F+M.fontProperties.descent,y),E*o+p>=d){if(p===0)throw new Error(`[BitmapFont] textureWidth ${a}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${b}')`);--S,m+=y*o,m=Math.ceil(m),p=0,y=0;continue}fI(g,v,M,p,m,o,u);const k=Mc(M.text);f.char.push({id:k,page:_.length-1,x:p/o,y:m/o,width:E,height:F,xoffset:0,yoffset:0,xadvance:I-(u.dropShadow?u.dropShadowDistance:0)-(u.stroke?u.strokeThickness:0)}),p+=(E+2*r)*o,p=Math.ceil(p)}if(!(i!=null&&i.skipKerning))for(let S=0,b=h.length;S{this.dirty=!0},this,0,0),this._roundPixels=ke.ROUND_PIXELS,this.dirty=!0,this._resolution=ke.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var E;const e=zn.available[this._fontName],t=this.fontSize,i=t/e.size,n=new pt,r=[],o=[],a=[],c=this._text.replace(/(?:\r\n|\r)/g,` -`)||" ",l=z1(c),h=this._maxWidth*e.size/t,u=e.distanceFieldType==="none"?hv:uv;let d=null,f=0,p=0,m=0,g=-1,v=0,x=0,y=0,_=0;for(let k=0;k{this.dirty=!0},this,0,0),this._roundPixels=ke.ROUND_PIXELS,this.dirty=!0,this._resolution=ke.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var E;const e=zn.available[this._fontName],t=this.fontSize,i=t/e.size,n=new pt,r=[],o=[],a=[],c=this._text.replace(/(?:\r\n|\r)/g,` +`)||" ",l=zb(c),h=this._maxWidth*e.size/t,u=e.distanceFieldType==="none"?hv:uv;let d=null,f=0,p=0,m=0,g=-1,v=0,x=0,y=0,_=0;for(let k=0;k0&&n.x>h&&(++x,Xo(r,1+g-x,1+k-g),k=g,g=-1,o.push(v),a.push(r.length>0?r[r.length-1].prevSpaces:0),p=Math.max(p,v),m++,n.x=0,n.y+=e.lineHeight,d=null,_=0)}const C=l[l.length-1];C!=="\r"&&C!==` `&&(/(?:\s)/.test(C)&&(f=v),o.push(f),p=Math.max(p,f),a.push(-1));const S=[];for(let k=0;k<=m;k++){let O=0;this._align==="right"?O=p-o[k]:this._align==="center"?O=(p-o[k])/2:this._align==="justify"&&(O=a[k]<0?0:(p-o[k])/a[k]),S.push(O)}const b=r.length,M={},I=[],F=this._activePagesMeshData;u.push(...F);for(let k=0;k6*D)||O.vertices.lengtht[n.mesh.texture.baseTexture.uid]).forEach(n=>{n.mesh.texture=ze.EMPTY});for(const n in t)t[n].destroy(),delete t[n];this._font=null,this._tintColor=null,this._textureCache=null,super.destroy(e)}};vI.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};const yI=[".xml",".fnt"],xI={extension:{type:Pe.LoadParser,priority:ns.Normal},name:"loadBitmapFont",test(s){return yI.includes(Zt.extname(s).toLowerCase())},async testParse(s){return Tc.test(s)||Qf.test(s)},async parse(s,e,t){const i=Tc.test(s)?Tc.parse(s):Qf.parse(s),{src:n}=e,{page:r}=i,o=[];for(let l=0;la[l]);return zn.install(i,c,!0)},async load(s,e){return(await ke.ADAPTER.fetch(s)).text()},unload(s){s.destroy()}};Ne.add(xI);const em=class Io extends mr{constructor(){super(...arguments),this._fonts=[],this._overrides=[],this._stylesheet="",this.fontsDirty=!1}static from(e){return new Io(Object.keys(Io.defaultOptions).reduce((t,i)=>({...t,[i]:e[i]}),{}))}cleanFonts(){this._fonts.length>0&&(this._fonts.forEach(e=>{URL.revokeObjectURL(e.src),e.refs--,e.refs===0&&(e.fontFace&&document.fonts.delete(e.fontFace),delete Io.availableFonts[e.originalUrl])}),this.fontFamily="Arial",this._fonts.length=0,this.styleID++,this.fontsDirty=!0)}loadFont(e,t={}){const{availableFonts:i}=Io;if(i[e]){const n=i[e];return this._fonts.push(n),n.refs++,this.styleID++,this.fontsDirty=!0,Promise.resolve()}return ke.ADAPTER.fetch(e).then(n=>n.blob()).then(async n=>new Promise((r,o)=>{const a=URL.createObjectURL(n),c=new FileReader;c.onload=()=>r([a,c.result]),c.onerror=o,c.readAsDataURL(n)})).then(async([n,r])=>{const o=Object.assign({family:Zt.basename(e,Zt.extname(e)),weight:"normal",style:"normal",display:"auto",src:n,dataSrc:r,refs:1,originalUrl:e,fontFace:null},t);i[e]=o,this._fonts.push(o),this.styleID++;const a=new FontFace(o.family,`url(${o.src})`,{weight:o.weight,style:o.style,display:o.display});o.fontFace=a,await a.load(),document.fonts.add(a),await document.fonts.ready,this.styleID++,this.fontsDirty=!0})}addOverride(...e){const t=e.filter(i=>!this._overrides.includes(i));t.length>0&&(this._overrides.push(...t),this.styleID++)}removeOverride(...e){const t=e.filter(i=>this._overrides.includes(i));t.length>0&&(this._overrides=this._overrides.filter(i=>!t.includes(i)),this.styleID++)}toCSS(e){return[`transform: scale(${e})`,"transform-origin: top left","display: inline-block",`color: ${this.normalizeColor(this.fill)}`,`font-size: ${this.fontSize}px`,`font-family: ${this.fontFamily}`,`font-weight: ${this.fontWeight}`,`font-style: ${this.fontStyle}`,`font-variant: ${this.fontVariant}`,`letter-spacing: ${this.letterSpacing}px`,`text-align: ${this.align}`,`padding: ${this.padding}px`,`white-space: ${this.whiteSpace}`,...this.lineHeight?[`line-height: ${this.lineHeight}px`]:[],...this.wordWrap?[`word-wrap: ${this.breakWords?"break-all":"break-word"}`,`max-width: ${this.wordWrapWidth}px`]:[],...this.strokeThickness?[`-webkit-text-stroke-width: ${this.strokeThickness}px`,`-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,`text-stroke-width: ${this.strokeThickness}px`,`text-stroke-color: ${this.normalizeColor(this.stroke)}`,"paint-order: stroke"]:[],...this.dropShadow?[this.dropShadowToCSS()]:[],...this._overrides].join(";")}toGlobalCSS(){return this._fonts.reduce((e,t)=>`${e} @font-face { @@ -1166,7 +1166,7 @@ void main(void)\r font-weight: ${t.weight}; font-style: ${t.style}; font-display: ${t.display}; - }`,this._stylesheet)}get stylesheet(){return this._stylesheet}set stylesheet(e){this._stylesheet!==e&&(this._stylesheet=e,this.styleID++)}normalizeColor(e){return Array.isArray(e)&&(e=cC(e)),typeof e=="number"?lC(e):e}dropShadowToCSS(){let e=this.normalizeColor(this.dropShadowColor);const t=this.dropShadowAlpha,i=Math.round(Math.cos(this.dropShadowAngle)*this.dropShadowDistance),n=Math.round(Math.sin(this.dropShadowAngle)*this.dropShadowDistance);e.startsWith("#")&&t<1&&(e+=(t*255|0).toString(16).padStart(2,"0"));const r=`${i}px ${n}px`;return this.dropShadowBlur>0?`text-shadow: ${r} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${r} ${e}`}reset(){Object.assign(this,Io.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=ke.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};em.availableFonts={},em.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};let Hd=em;const tc=class Ro extends yr{constructor(e="",t={}){super(ze.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;const i=new Image,n=ze.from(i,{scaleMode:ke.SCALE_MODE,resourceOptions:{autoLoad:!1}});n.orig=new nt,n.trim=new nt,this.texture=n;const r="http://www.w3.org/2000/svg",o="http://www.w3.org/1999/xhtml",a=document.createElementNS(r,"svg"),c=document.createElementNS(r,"foreignObject"),l=document.createElementNS(o,"div"),h=document.createElementNS(o,"style");c.setAttribute("width","10000"),c.setAttribute("height","10000"),c.style.overflow="hidden",a.appendChild(c),this.maxWidth=Ro.defaultMaxWidth,this.maxHeight=Ro.defaultMaxHeight,this._domElement=l,this._styleElement=h,this._svgRoot=a,this._foreignObject=c,this._foreignObject.appendChild(h),this._foreignObject.appendChild(l),this._image=i,this._loadImage=new Image,this._autoResolution=Ro.defaultAutoResolution,this._resolution=Ro.defaultResolution??ke.RESOLUTION,this.text=e,this.style=t}measureText(e){var h,u;const{text:t,style:i,resolution:n}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:i.toCSS(n)}),this._styleElement.textContent=i.toGlobalCSS(),document.body.appendChild(this._svgRoot);const r=this._domElement.getBoundingClientRect();this._svgRoot.remove();const{width:o,height:a}=r;(o>this.maxWidth||a>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");const c=Math.min(this.maxWidth,Math.ceil(o)),l=Math.min(this.maxHeight,Math.ceil(a));return this._svgRoot.setAttribute("width",c.toString()),this._svgRoot.setAttribute("height",l.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),i!==this._style&&(Object.assign(this._domElement,{style:(h=this._style)==null?void 0:h.toCSS(n)}),this._styleElement.textContent=(u=this._style)==null?void 0:u.toGlobalCSS()),{width:c+i.padding*2,height:l+i.padding*2}}async updateText(e=!0){const{style:t,_image:i,_loadImage:n}=this;if(this.localStyleID!==t.styleID&&(this.dirty=!0,this.localStyleID=t.styleID),!this.dirty&&e)return;const{width:r,height:o}=this.measureText();i.width=n.width=Math.ceil(Math.max(1,r)),i.height=n.height=Math.ceil(Math.max(1,o)),this._updateID++;const a=this._updateID;await new Promise(c=>{n.onload=async()=>{if(a/gi,"

").replace(/
/gi,"
").replace(/ /gi," ")}};tc.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},tc.defaultMaxWidth=2024,tc.defaultMaxHeight=2024,tc.defaultAutoResolution=!0;function oh(s,e){const t=Math.max(0,Number(s)||0),i=Math.max(0,Number(e)||0);return{inner:Math.min(t,i),outer:Math.max(t,i)}}function K1(s){const e=Math.max(0,Number(s.outerRectW)||0),t=Math.max(0,Number(s.outerRectH)||0);return{innerW:Math.min(e,Math.max(0,Number(s.innerRectW)||0)),innerH:Math.min(t,Math.max(0,Number(s.innerRectH)||0)),outerW:e,outerH:t}}function bI(s,e,t,i,n){if(s==="random")return n();const r=Math.max(1,Math.round(t)),o=Math.max(0,Math.round(e))%r;return i?o/r:r<=1?.5:o/(r-1)}function fv(s,e,t,i){const n=Math.sqrt(s*s+i()*(e*e-s*s));return{x:Math.cos(t)*n,y:-Math.sin(t)*n,radialAngle:-t*180/Math.PI}}function wI(s,e){const{innerW:t,innerH:i,outerW:n,outerH:r}=K1(s),o=Math.max(0,(n-t)/2),a=Math.max(0,(r-i)/2),c=o*r,l=t*a,h=c*2+l*2;if(h<=0){const p=n*2+r*2;if(p<=0)return{x:0,y:0,radialAngle:0};let m=e()*p,g,v;return m{const F=M/o,E=I/a,k=Math.max(1e-4,Math.hypot(F,E)),O=F/k,D=E/k,$=n*O-r*D,N=r*O+n*D;return{x:s.x+n*S*o-r*b*a+$*.05,y:s.y+r*S*o+n*b*a+N*.05,nx:$,ny:N}};if(s.shape==="circle"){const S=Math.max(.001,s.radius),b=Math.hypot(h,u);if(b>=S)return null;const M=b>1e-4?h/b:1,I=b>1e-4?u/b:0;return d(M*S,I*S,M,I)}if(s.shape==="ellipse"){const S=Math.max(.001,s.radiusX),b=Math.max(.001,s.radiusY),M=Math.hypot(h/S,u/b);if(M>=1)return null;const I=M>1e-4?1/M:1,F=M>1e-4?h*I:S,E=M>1e-4?u*I:0,k=Math.max(1e-4,Math.hypot(F/(S*S),E/(b*b)));return d(F,E,F/(S*S)/k,E/(b*b)/k)}if(s.shape==="rect"){const S=Math.max(.001,s.width*.5),b=Math.max(.001,s.height*.5);if(Math.abs(h)>=S||Math.abs(u)>=b)return null;const M=S-Math.abs(h),I=b-Math.abs(u);if(M=0?1:-1;return d(E*S,u,E,0)}const F=u>=0?1:-1;return d(h,F*b,0,F)}const f=Math.max(3,Math.min(16,Math.round(s.sides||(s.shape==="custom"?5:6)))),p=Math.max(.001,s.width*.5),m=Math.max(.001,s.height*.5),g=Array.from({length:f},(S,b)=>{const M=Math.PI*.5+b/f*Math.PI*2;return{x:Math.cos(M)*p,y:Math.sin(M)*m}});let v=!1;for(let S=0,b=g.length-1;Su!=I.y>u&&h<(I.x-M.x)*(u-M.y)/(I.y-M.y)+M.x&&(v=!v)}if(!v)return null;let x=g[0].x,y=g[0].y,_=1/0;for(let S=0;S>>0^Math.imul(e+1,2654435761)^t)>>>0;return i^=i>>>16,i=Math.imul(i,2146121005),i^=i>>>15,i=Math.imul(i,2221713035),i^=i>>>16,(i>>>0)/4294967296}function bo(s,e,t,i,n){return s==="fixed"?e:s==="curve"?yi(e,t,Zs(i,n)):yi(e,t,n)}function jd(s,e,t,i,n,r){return s==="curve"?yi(e,t,Zs(i,n)):s==="random"?r:e}function pv(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function Zs(s,e,t="线性"){if(!Array.isArray(s)||s.length===0)return 1;const i=[...s].sort((n,r)=>n.x-r.x);if(e<=i[0].x)return i[0].y;if(e>=i[i.length-1].x)return i[i.length-1].y;for(let n=0;n=i[n].x&&e<=i[n+1].x){const r=i[n],o=i[n+1],a=o.x-r.x||1;if(t!=="贝塞尔")return yi(r.y,o.y,(e-r.x)/a);const c=r.x+(r.outX??a/3),l=r.y+(r.outY??(o.y-r.y)/3),h=o.x+(o.inX??-a/3),u=o.y+(o.inY??-(o.y-r.y)/3);let d=0,f=1;for(let p=0;p<14;p++){const m=(d+f)/2;pv(r.x,c,h,o.x,m)>>0;return function(){e|=0,e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function jo(s){let e=s.replace("#","");return e.length===3&&(e=e.split("").map(t=>t+t).join("")),parseInt(e,16)}function II(s,e,t){const i=gv(s),n=gv(e),r=Math.round(i[0]+(n[0]-i[0])*t),o=Math.round(i[1]+(n[1]-i[1])*t),a=Math.round(i[2]+(n[2]-i[2])*t);return r<<16|o<<8|a}function tm(s,e){if(!Array.isArray(s)||s.length===0)return 16777215;const t=[...s].sort((i,n)=>i.position-n.position);if(e<=t[0].position)return jo(t[0].color);if(e>=t[t.length-1].position)return jo(t[t.length-1].color);for(let i=0;ir.position)continue;const o=(e-n.position)/Math.max(1e-4,r.position-n.position);return II(n.color,r.color,o)}return jo(t[t.length-1].color)}function gv(s){let e=s.replace("#","");e.length===3&&(e=e.split("").map(i=>i+i).join(""));const t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255]}function RI(){return{sprite:null,boneName:"",mesh:null,meshSignature:"",history:[],bones:[],skinWeights:[],currentWidth:0,currentAlpha:0,currentColor:16777215,resourceId:1,enabled:!1,sampledLength:100,sampledWidth:100}}function Cc(s){s.history.length=0,s.bones.length=0,s.mesh&&(s.mesh.visible=!1)}class PI{constructor(e){w(this,"container");this.container=e}ensureMesh(e,t,i){const n=t.trailResources.find(g=>g.id===e.resourceId)||t.trailResources[0],r=(n==null?void 0:n.texture)||ze.EMPTY,o=Number(n==null?void 0:n.rotation)||0,a=Math.max(2,Math.min(16,Math.round(t.trailGridRows))),c=Math.max(2,Math.min(32,Math.round(t.trailGridCols))),l=Math.max(2,Math.min(16,Math.round((n==null?void 0:n.boneCount)??3))),h=`${a}:${c}:${l}:${(n==null?void 0:n.id)??0}:${o}`;if(e.mesh&&e.meshSignature===h)return e.mesh.texture!==r&&(e.mesh.texture=r),e.mesh;e.mesh&&(this.container.removeChild(e.mesh),e.mesh.destroy()),e.meshSignature&&e.meshSignature!==h&&(e.history.length=0,e.bones.length=0);const u=new Float32Array(a*c*2),d=new Float32Array(a*c*2),f=[],p=[];for(let g=0;g.05?e.history.unshift({x:t,y:i}):(r.x=t,r.y=i);const o=Math.max(1,n)*1.5;let a=0,c=e.history.length;for(let l=1;l=o||l>=239){c=l+1;break}e.history.length>c&&(e.history.length=c)}sampleBones(e,t,i){const n=Math.max(2,Math.min(16,Math.round(i))),r=e.history,o=[];if(!r.length)return o;let a=0;for(let l=1;l=h&&g>1e-4){const v=(h-u)/g;d={x:yi(p.x,m.x,v),y:yi(p.y,m.y,v)};break}u+=g}o.push({boneName:`${e.boneName}_trail_${l}`,x:d.x,y:d.y,rotation:0})}for(let l=0;l1){const l=o[0].rotation,u=(o[o.length-1].rotation-l+540)%360-180;for(let d=0;dh.id===i.resourceId)||t.trailResources[0];if(!(r!=null&&r.texture)||i.bones.length<2){n.visible=!1;return}e.resourceId=r.id,n.texture!==r.texture&&(n.texture=r.texture);const o=Math.max(2,Math.min(16,Math.round(t.trailGridRows))),a=Math.max(2,Math.min(32,Math.round(t.trailGridCols))),c=n.vertices,l=[];for(let h=0;h.5&&i.alpha>0}update(e,t,i,n,r,o,a){if(e.sprite=a,e.boneName=i,!t.trail||!e.enabled||e.sampledLength<=0||e.sampledWidth<=0){Cc(e);return}this.ensureMesh(e,t,a);const c=t.trailResources.find(f=>f.id===e.resourceId)||t.trailResources[0];this.appendPoint(e,n,r,e.sampledLength);const l=c!=null&&c.lifeLengthEnabled?Math.max(0,Zs(c.lifeLengthCurve,o)):1,h=Math.max(0,e.sampledLength)*l;e.bones=this.sampleBones(e,h,(c==null?void 0:c.boneCount)??3),e.bones[0]&&(e.bones[0].x=n,e.bones[0].y=r);const u=(c==null?void 0:c.widthMode)==="particle"?(Math.abs(a.scale.x)+Math.abs(a.scale.y))*.5:1;e.currentWidth=Math.max(0,e.sampledWidth)*u,e.currentAlpha=(c==null?void 0:c.alphaMode)==="particle"?a.alpha:(c==null?void 0:c.alphaMode)==="curve"?Zs(c.alphaCurve,o):(c==null?void 0:c.alpha)??1,e.currentColor=(c==null?void 0:c.colorMode)==="particle"?a.tint:(c==null?void 0:c.colorMode)==="curve"?tm(c.colorGradient,o):jo((c==null?void 0:c.color)||"#ffffff");const d={bones:e.bones.map(f=>({...f})),activeBoneCount:e.bones.length,width:e.currentWidth,alpha:Math.min(1,Math.max(0,e.currentAlpha)),colorHex:e.currentColor,resourceId:e.resourceId};return this.skinMesh(e,t,d),d}applyState(e,t,i,n){var r;e.sprite=i,e.resourceId=n.resourceId??((r=t.trailResources[0])==null?void 0:r.id)??1,e.bones=n.bones.map(o=>({...o})),e.currentWidth=n.width,e.currentAlpha=n.alpha,this.skinMesh(e,t,n)}drawDebug(e,t,i,n){if(e.clear(),!t||!i.trail)return;const r=Math.max(2,Math.min(16,Math.round(i.trailGridRows))),o=Math.max(2,Math.min(32,Math.round(i.trailGridCols)));e.lineStyle(1,3790847,.72);for(const a of n){const c=a.mesh;if(!(c!=null&&c.visible))continue;const l=c.vertices,h=(u,d)=>{const f=(u*r+d)*2;return{x:l[f],y:l[f+1]}};for(let u=0;ur.texture||r.sequenceFrames.some(o=>o.texture));if(!t.length)return kI(s.texture);const i=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(i<=0)return t[Math.floor(e()*t.length)];let n=e()*i;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}function BI(s,e){const t=s.trailResources.filter(r=>r.texture);if(!t.length)return s.trailResources[0]||FI();const i=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(i<=0)return t[Math.min(t.length-1,Math.floor(e*t.length))];let n=e*i;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}function vv(s,e){if(s.imageMode!=="sequence"||s.sequenceFrames.length<=1)return{index:0,visible:!0};const t=Math.min(120,Math.max(1,Number(s.sequenceFps)||30)),i=Math.max(0,Math.floor(Math.max(0,e)*t)),n=s.sequenceFrames.length-1;return s.sequencePlayback==="once-hide"?{index:Math.min(n,i),visible:i<=n}:s.sequencePlayback==="once-hold"?{index:Math.min(n,i),visible:!0}:s.sequencePlayback==="loop-reverse"?{index:n-i%s.sequenceFrames.length,visible:!0}:{index:i%s.sequenceFrames.length,visible:!0}}function zd(s,e,t){var i;return s.imageMode==="sequence"&&s.sequenceFrames.length?((i=s.sequenceFrames[Math.max(0,Math.min(s.sequenceFrames.length-1,t))])==null?void 0:i.texture)||s.texture||e:s.texture||e}function cl(){return{texture:null,imageResources:[{id:1,texture:null,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}]}],imageWeightVersion:1,name:"ParticleSystem1",mode:"stream",rate:20,streamBehavior:"normal",loopDurationFrames:30,generateLoopStartAnimation:!1,loopStartUseCustomDuration:!1,loopStartDurationFrames:30,generateLoopEndAnimation:!1,loopEndUseCustomDuration:!1,loopEndDurationFrames:30,burstCount:50,burstLoop:!1,delay:0,duration:1,shape:"point",shapeRangeVersion:1,innerRadius:0,outerRadius:30,innerRectW:0,innerRectH:0,outerRectW:60,outerRectH:40,spawnPathId:0,spawnPathDistribution:"fixed",radius:30,rectW:60,rectH:40,centerX:0,centerY:0,rootRotation:0,rootScaleX:1,rootScaleY:1,emissionAngleMode:"random",direction:0,spread:360,coneDirection:90,coneAngle:60,lifeMin:.6,lifeMax:1.8,lifeMode:"random",lifeCurve:[{x:0,y:0},{x:1,y:1}],speedMin:30,speedMax:140,speedMode:"random",speedCurve:[{x:0,y:0},{x:1,y:1}],scaleMin:.3,scaleMax:.8,scaleMode:"random",scaleAxisMode:"uniform",scaleYMin:.3,scaleYMax:.8,scaleCurve:[{x:0,y:0},{x:1,y:1}],scaleYCurve:[{x:0,y:0},{x:1,y:1}],scaleEndRatio:.3,initialRotationMode:"random",initialRotationMin:0,initialRotationMax:360,initialRotationCurve:[{x:0,y:0},{x:1,y:1}],alpha:.9,alphaEnd:0,rotationSpeedMin:-180,rotationSpeedMax:180,speedOverLifeEnabled:!1,speedOverLifeMode:"fixed",speedOverLifeMin:1,speedOverLifeMax:1,speedOverLifeCurve:[{x:0,y:1},{x:1,y:1}],scaleOverLifeEnabled:!1,scaleOverLifeMode:"curve",scaleOverLifeAxisMode:"uniform",scaleOverLifeMin:0,scaleOverLifeMax:1,scaleYOverLifeMin:0,scaleYOverLifeMax:1,scaleOverLifeCurve:[{x:0,y:1},{x:1,y:1}],scaleYOverLifeCurve:[{x:0,y:1},{x:1,y:1}],rotationOverLifeEnabled:!1,rotationOverLifeMode:"random",rotationOverLifeCurve:[{x:0,y:0},{x:1,y:1}],gravity:980,gravityMode:"fixed",gravityMin:980,gravityMax:980,gravityDirection:-90,gravityCurve:[{x:0,y:1},{x:1,y:1}],damping:0,seed:0,colorStart:"#ffffff",colorEnd:"#ff4d4d",colorOverLife:!1,blend:"add",alphaMode:"curve",curveMode:"线性",alphaCurve:[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],textureName:"star",textureFolder:"",alphaScale:1,anchorX:.5,anchorY:.5,independentAlpha:"off",offsetX:0,offsetY:0,noise:!1,noiseAmt:30,noiseRange:100,noiseSpeed:1,useGravity:!1,wind:!1,windX:0,windY:0,windMode:"fixed",windMin:100,windMax:100,windDirection:0,windCurve:[{x:0,y:1},{x:1,y:1}],forceField:!1,forceStrength:10,forceRadius:100,forceCenterX:0,forceCenterY:0,forceFalloff:"linear",attraction:!1,attractionCenterX:200,attractionCenterY:0,attractionRadius:20,attractionDuration:.5,attractionDelay:.1,attractionDelayMode:"particle",attractionPath:"curve",trail:!1,trailConfigVersion:3,trailResources:[{id:1,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:[{x:0,y:1},{x:1,y:1}],boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:[{x:0,y:1},{x:1,y:1}],shapeEnabled:!1,shapeCurve:[{x:0,y:1},{x:1,y:1}]}],trailResourceVersion:6,trailTexture:null,trailTextureName:"trail",trailPreviewUrl:"/images/trail.png",trailColorMode:"particle",trailColor:"#ffffff",trailColorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],trailAlphaMode:"particle",trailAlpha:1,trailAlphaCurve:[{x:0,y:1},{x:1,y:1}],trailBoneCount:3,trailLength:100,trailWidth:100,trailWidthMode:"particle",trailLifeLengthEnabled:!1,trailLifeLengthCurve:[{x:0,y:1},{x:1,y:1}],trailShapeEnabled:!1,trailShapeCurve:[{x:0,y:1},{x:1,y:1}],trailGridRows:4,trailGridCols:4,collision:!1,collisionColliderIds:[],pathFollow:!1,emitterFollow:!1,emitterFollowMode:"none",emitterFollowPathId:0,emitterFollowSpineId:0,emitterFollowBoneName:"",emitterFollowBoneOffsetX:0,emitterFollowBoneOffsetY:0,emitterFollowBoneRotation:0,emitterFollowBoneScaleX:1,emitterFollowBoneScaleY:1,emitterAngleMode:"fixed",emitterFollowCurve:[{x:0,y:0},{x:1,y:1}],emitterFollowDuration:2,emitterFollowSpace:"world",emitterFollowDirection:"forward",emitterFollowOffset:0}}function pr(s){var F;const e=cl(),t=s,i=t.shapeRangeVersion!==1,n=Number(t.radius),r=Number(t.rectW),o=Number(t.rectH),a=Number(t.direction),c=Number(t.spread),l=t.shape,h=t.imageWeightVersion!==1,u=t.loopDurationFrames==null,d=t.gravityMode==null,f=Number(t.gravity),p=t.windMode==null,m=Number(t.windX),g=Number(t.windY),v=t.forceFalloff==null,x=Number(t.forceStrength),y=t.trailConfigVersion!==3,_=!Array.isArray(t.trailResources),C=t.trailResourceVersion!==6,S=t.trailTexture,b=String(t.trailTextureName||"trail"),M=String(t.trailPreviewUrl||"/images/trail.png").replace("/trails/trail.png","/images/trail.png");for(const[E,k]of Object.entries(e))t[E]!==void 0&&t[E]!==null||(t[E]=Array.isArray(k)?k.map(O=>typeof O=="object"&&O!==null?{...O}:O):k);i&&(s.innerRadius=0,s.outerRadius=Math.max(0,Number.isFinite(n)?n:e.outerRadius),s.innerRectW=0,s.innerRectH=0,s.outerRectW=Math.max(0,Number.isFinite(r)?r:e.outerRectW),s.outerRectH=Math.max(0,Number.isFinite(o)?o:e.outerRectH),s.coneDirection=Number.isFinite(a)?a:90,s.emissionAngleMode=Number.isFinite(c)&&c>0?"random":"fixed",l==="cone"&&(s.spread=Math.max(0,Number(s.coneAngle)||0)),s.shapeRangeVersion=1),s.shape==="orbit"&&(s.shape="path"),["fixed","random","radial","path-normal","path-tangent"].includes(s.emissionAngleMode)||(s.emissionAngleMode="fixed"),!["circle","rect","cone"].includes(s.shape)&&s.emissionAngleMode==="radial"&&(s.emissionAngleMode="fixed"),s.shape!=="path"&&(s.emissionAngleMode==="path-normal"||s.emissionAngleMode==="path-tangent")&&(s.emissionAngleMode="fixed"),s.spawnPathId=Math.max(0,Math.round(Number(s.spawnPathId)||0)),s.spawnPathDistribution!=="fixed"&&s.spawnPathDistribution!=="random"&&(s.spawnPathDistribution="fixed"),s.innerRadius=Math.max(0,Number(s.innerRadius)||0),s.outerRadius=Math.max(s.innerRadius,Number(s.outerRadius)||0),s.innerRectW=Math.max(0,Number(s.innerRectW)||0),s.innerRectH=Math.max(0,Number(s.innerRectH)||0),s.outerRectW=Math.max(s.innerRectW,Number(s.outerRectW)||0),s.outerRectH=Math.max(s.innerRectH,Number(s.outerRectH)||0);const I=Array.from(new Set((Array.isArray(s.collisionColliderIds)?s.collisionColliderIds:[]).map(E=>Math.round(Number(E))).filter(E=>Number.isFinite(E)&&E>0)));(I.length!==s.collisionColliderIds.length||I.some((E,k)=>E!==s.collisionColliderIds[k]))&&(s.collisionColliderIds=I),s.streamBehavior!=="normal"&&s.streamBehavior!=="loop"&&(s.streamBehavior="normal"),(u||!Number.isFinite(s.loopDurationFrames))&&(s.loopDurationFrames=Math.ceil(Math.max(1/30,Number(s.duration)||1)*30)),s.loopDurationFrames=Math.min(1800,Math.max(1,Math.ceil(s.loopDurationFrames))),typeof s.generateLoopStartAnimation!="boolean"&&(s.generateLoopStartAnimation=!1),typeof s.generateLoopEndAnimation!="boolean"&&(s.generateLoopEndAnimation=!1),typeof s.loopStartUseCustomDuration!="boolean"&&(s.loopStartUseCustomDuration=!1),typeof s.loopEndUseCustomDuration!="boolean"&&(s.loopEndUseCustomDuration=!1),s.loopStartDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(s.loopStartDurationFrames)||30))),s.loopEndDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(s.loopEndDurationFrames)||30))),(!Array.isArray(s.imageResources)||s.imageResources.length===0)&&(s.imageResources=cl().imageResources);for(const E of s.imageResources){!E.texture&&s.texture&&(E.texture=s.texture),E.textureName||(E.textureName="star"),E.previewUrl==="/particles/star.png"&&(E.previewUrl="/images/star.png"),E.previewUrl||(E.previewUrl=E.textureName==="star"?"/images/star.png":""),E.imageMode!=="fixed"&&E.imageMode!=="sequence"&&(E.imageMode="fixed"),E.sequencePlayback==="once"?E.sequencePlayback="once-hold":E.sequencePlayback==="loop"?E.sequencePlayback="loop-forward":["once-hide","once-hold","loop-forward","loop-reverse"].includes(E.sequencePlayback)||(E.sequencePlayback="loop-forward"),Number.isFinite(E.sequenceFps)||(E.sequenceFps=30),E.sequenceFps=Math.min(120,Math.max(1,Number(E.sequenceFps)||30)),Array.isArray(E.sequenceFrames)||(E.sequenceFrames=[]);for(const k of E.sequenceFrames)typeof k.name!="string"&&(k.name=""),typeof k.previewUrl!="string"&&(k.previewUrl=""),k.texture===void 0&&(k.texture=null);Number.isFinite(E.weight)||(E.weight=100),typeof E.locked!="boolean"&&(E.locked=!1),Number.isFinite(E.scale)||(E.scale=1),Number.isFinite(E.anchorX)||(E.anchorX=.5),Number.isFinite(E.anchorY)||(E.anchorY=.5),E.colorMode!=="fixed"&&E.colorMode!=="random"&&E.colorMode!=="lifetime"&&(E.colorMode=s.colorOverLife?"lifetime":"fixed"),E.colorStart||(E.colorStart=s.colorStart||"#ffffff"),E.colorEnd||(E.colorEnd=s.colorEnd||E.colorStart),(!Array.isArray(E.colorGradient)||E.colorGradient.length<2)&&(E.colorGradient=[{position:0,color:E.colorStart},{position:1,color:E.colorEnd}]),Object.prototype.hasOwnProperty.call(ar,E.blend)||(E.blend=s.blend||"normal"),["off","fixed","curve"].includes(E.independentAlpha)||(E.independentAlpha=s.independentAlpha||"off"),Number.isFinite(E.alpha)||(E.alpha=Number.isFinite(s.alphaScale)?s.alphaScale:1),["跟随导出","线性","贝塞尔"].includes(E.alphaCurveMode)||(E.alphaCurveMode=s.curveMode||"跟随导出"),(!Array.isArray(E.alphaCurve)||E.alphaCurve.length<2)&&(E.alphaCurve=(s.alphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})))}if(s.imageResources.length===1)s.imageResources[0].weight=100,s.imageResources[0].locked=!1;else if(h){const E=100/s.imageResources.length;s.imageResources.forEach((k,O)=>{k.weight=O===s.imageResources.length-1?100-E*(s.imageResources.length-1):E,k.locked=!1})}if(s.imageWeightVersion=1,d){const E=Number.isFinite(f)&&f!==0?f:980;s.gravity=E,s.gravityMin=E,s.gravityMax=E}if(p){const E=Number.isFinite(m)&&Number.isFinite(g)&&(m!==0||g!==0);s.windMin=E?Math.hypot(m,g):100,s.windMax=s.windMin,s.windDirection=E?Math.atan2(-g,m)*180/Math.PI:0}v&&(s.forceStrength=Number.isFinite(x)&&x!==0?x:10),y&&(s.trailConfigVersion=3,s.trailAlphaCurve=[{x:0,y:1},{x:1,y:1}],s.trailLifeLengthCurve=[{x:0,y:1},{x:1,y:1}],s.trailShapeCurve=[{x:0,y:1},{x:1,y:1}],s.trailGridRows=4,s.trailGridCols=4),(_||!s.trailResources.length)&&(s.trailResources=[{id:1,texture:S||null,textureName:b,previewUrl:M,weight:100,locked:!1,rotation:0,colorMode:s.trailColorMode,color:s.trailColor,colorGradient:s.trailColorGradient.map(E=>({...E})),blend:"normal",alphaMode:s.trailAlphaMode,alpha:s.trailAlpha,alphaCurve:s.trailAlphaCurve.map(E=>({...E})),boneCount:s.trailBoneCount,trailRatio:100,lengthMode:"fixed",length:s.trailLength,lengthMin:s.trailLength,lengthMax:s.trailLength,widthSizeMode:"fixed",width:s.trailWidth,widthMin:s.trailWidth,widthMax:s.trailWidth,widthMode:s.trailWidthMode,lifeLengthEnabled:s.trailLifeLengthEnabled,lifeLengthCurve:s.trailLifeLengthCurve.map(E=>({...E})),shapeEnabled:s.trailShapeEnabled,shapeCurve:s.trailShapeCurve.map(E=>({...E}))}]);for(const E of s.trailResources)E.textureName||(E.textureName="trail"),E.previewUrl==="/trails/trail.png"&&(E.previewUrl="/images/trail.png"),E.previewUrl||(E.previewUrl="/images/trail.png"),Number.isFinite(E.weight)||(E.weight=100),typeof E.locked!="boolean"&&(E.locked=!1),Number.isFinite(E.rotation)||(E.rotation=0),["particle","fixed","curve"].includes(E.colorMode)||(E.colorMode=s.trailColorMode||"particle"),E.color||(E.color=s.trailColor||"#ffffff"),(!Array.isArray(E.colorGradient)||E.colorGradient.length<2)&&(E.colorGradient=(s.trailColorGradient||[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}]).map(k=>({...k}))),Object.prototype.hasOwnProperty.call(ar,E.blend)||(E.blend="normal"),["particle","fixed","curve"].includes(E.alphaMode)||(E.alphaMode=s.trailAlphaMode||"particle"),Number.isFinite(E.alpha)||(E.alpha=Number.isFinite(s.trailAlpha)?s.trailAlpha:1),(!Array.isArray(E.alphaCurve)||E.alphaCurve.length<2)&&(E.alphaCurve=(s.trailAlphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),Number.isFinite(E.boneCount)||(E.boneCount=Number.isFinite(s.trailBoneCount)?s.trailBoneCount:3),Number.isFinite(E.trailRatio)||(E.trailRatio=100),E.trailRatio=Math.min(100,Math.max(0,E.trailRatio)),["fixed","random"].includes(E.lengthMode)||(E.lengthMode="fixed"),Number.isFinite(E.length)||(E.length=Number.isFinite(s.trailLength)?s.trailLength:100),Number.isFinite(E.lengthMin)||(E.lengthMin=E.length),Number.isFinite(E.lengthMax)||(E.lengthMax=E.length),["fixed","random"].includes(E.widthSizeMode)||(E.widthSizeMode="fixed"),Number.isFinite(E.width)||(E.width=Number.isFinite(s.trailWidth)?s.trailWidth:100),Number.isFinite(E.widthMin)||(E.widthMin=E.width),Number.isFinite(E.widthMax)||(E.widthMax=E.width),["particle","fixed"].includes(E.widthMode)||(E.widthMode=s.trailWidthMode||"particle"),typeof E.lifeLengthEnabled!="boolean"&&(E.lifeLengthEnabled=!!s.trailLifeLengthEnabled),(!Array.isArray(E.lifeLengthCurve)||E.lifeLengthCurve.length<2)&&(E.lifeLengthCurve=(s.trailLifeLengthCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),typeof E.shapeEnabled!="boolean"&&(E.shapeEnabled=!!s.trailShapeEnabled),(!Array.isArray(E.shapeCurve)||E.shapeCurve.length<2)&&(E.shapeCurve=(s.trailShapeCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})));if(s.trailResources.length===1&&(s.trailResources[0].weight=100,s.trailResources[0].locked=!1),C)for(const E of s.trailResources)E.alphaCurve=((F=E.alphaCurve)==null?void 0:F.length)>=2?E.alphaCurve:[{x:0,y:1},{x:1,y:1}];return s.trailResourceVersion=6,s}class LI extends Si{constructor(t,i=TI){super();w(this,"pool",[]);w(this,"cfg");w(this,"accumulator",0);w(this,"burstTimer",0);w(this,"_spawnSerial",0);w(this,"_elapsed",0);w(this,"_attractionEnabledAt",0);w(this,"_attractionWasEnabled",!1);w(this,"states",[]);w(this,"rng",Math.random);w(this,"_lastSeed",-1);w(this,"trailDebugGfx",new zi);w(this,"trail");w(this,"colliders",[]);w(this,"followSpawnX",0);w(this,"followSpawnY",0);w(this,"followSpawnAngle",0);w(this,"spawnPathSampler",null);w(this,"spawnPathClosed",!1);w(this,"followExportCurveMode","线性");w(this,"simulationTransform",null);this.cfg=pr(t),this.trail=new PI(this),this._ensurePool(i),this.addChild(this.trailDebugGfx)}setFollowExportCurveMode(t){this.followExportCurveMode=t}resolveCurveMode(t){return t==="跟随导出"?this.followExportCurveMode:t}reseed(){const t=this.cfg.seed;t!==this._lastSeed&&(this._lastSeed=t,this.rng=Wd(t>>>0))}_ensurePool(t){for(;this.pool.length=n.delay),o=i==="force"||i==="normal"&&(n.mode==="burst"||this._elapsed=1;)this.accumulator-=1,this.spawnOne();else this.burstTimer+=t,n.burstLoop?this.burstTimer>=1&&(this.burstTimer=0,this.emitBurst()):t>0&&this.burstTimer<=t&&this.emitBurst();const a=[];for(let p=0;p0){const A=Math.max(1e-4,Math.abs(n.rootScaleX)),P=Math.max(1e-4,Math.abs(n.rootScaleY)),L=-(((c=this.simulationTransform)==null?void 0:c.rotation)??n.rootRotation)*Math.PI/180,B=Math.cos(L),X=Math.sin(L),V=((l=this.simulationTransform)==null?void 0:l.centerX)??n.centerX,q=((h=this.simulationTransform)==null?void 0:h.centerY)??n.centerY,W=V+B*A*m.x-X*P*m.y,ne=-q+X*A*m.x+B*P*m.y,re=W,le=-ne,ue=n.forceCenterX-re,ae=n.forceCenterY-le,xe=Math.hypot(ue,ae);if(xe>1e-4&&xe<=n.forceRadius){let Y=1;n.forceFalloff==="linear"?Y=1-xe/n.forceRadius:n.forceFalloff==="inverse"&&(Y=Math.min(10,n.forceRadius/Math.max(xe,n.forceRadius*.1)));const j=n.forceStrength*Y*10,H=ue/xe*j,G=ae/xe*j,z=H,ie=-G;m.vx+=(B*z+X*ie)/A*t,m.vy+=(-X*z+B*ie)/P*t}}if(!m.collisionPaused&&n.damping>0){const A=Math.max(0,1-n.damping*t);m.vx*=A,m.vy*=A}if(m.collisionPaused)m.vx=0,m.vy=0;else if(m.x+=m.vx*t,m.y+=m.vy*t,this.applyColliders(m,p))continue;if(n.attraction&&!m.collisionPaused){const A=m.maxLife-m.life;if(n.attractionDelayMode==="particle"?A>=Math.max(0,n.attractionDelay):this._elapsed-this._attractionEnabledAt>=Math.max(0,n.attractionDelay)){const L=xo(n,m.x,m.y,this.simulationTransform),B=n.attractionCenterX,X=n.attractionCenterY,V=Math.max(0,n.attractionRadius);if(!m.attractionActive){if(Math.hypot(B-L.x,X-L.y)<=V){this.kill(p);continue}m.attractionActive=!0,m.attractionElapsed=0,m.attractionStartWorldX=L.x,m.attractionStartWorldY=L.y}m.attractionElapsed+=t;const q=Math.max(1e-4,n.attractionDuration),W=Math.min(1,m.attractionElapsed/q);let ne=yi(m.attractionStartWorldX,B,W),re=yi(m.attractionStartWorldY,X,W);if(n.attractionPath==="curve"){const ae=B-m.attractionStartWorldX,xe=X-m.attractionStartWorldY,Y=Math.hypot(ae,xe);if(Y>1e-4){const j=Y*.25*m.attractionCurveSide,H=(m.attractionStartWorldX+B)*.5-xe/Y*j,G=(m.attractionStartWorldY+X)*.5+ae/Y*j,z=1-W;ne=z*z*m.attractionStartWorldX+2*z*W*H+W*W*B,re=z*z*m.attractionStartWorldY+2*z*W*G+W*W*X}}const le=Math.hypot(B-ne,X-re);if(W>=1||le<=V){this.kill(p);continue}const ue=mv(n,ne,re,this.simulationTransform);m.x=ue.x,m.y=ue.y,m.vx=0,m.vy=0}}const v=g,x=m.sprite,y=n.imageResources.find(A=>A.id===m.resourceId);if(y){const A=vv(y,m.maxLife-m.life);m.imageFrameIndex=A.index,x.texture=zd(y,n.texture,m.imageFrameIndex),x.visible=A.visible}if(n.speedOverLifeEnabled){const A=ic(jd(n.speedOverLifeMode,n.speedOverLifeMin,n.speedOverLifeMax,n.speedOverLifeCurve,v,m.speedScaleTarget),1),P=m.speedScale===0?A:A/m.speedScale;m.vx*=P,m.vy*=P,m.speedScale=A}let _=m.rotationSpeed;n.rotationOverLifeEnabled&&n.rotationOverLifeMode==="curve"&&(_=yi(n.rotationSpeedMin,n.rotationSpeedMax,Zs(n.rotationOverLifeCurve,v))),m.rotation+=_*t;let C=m.x,S=m.y;if(n.noise&&n.noiseAmt>0&&n.noiseRange>0&&n.noiseSpeed>0){const A=m.maxLife-m.life,P=Math.max(0,n.noiseRange)*Math.min(1,Math.max(0,n.noiseAmt)/100)*.5,L=A*Math.max(0,n.noiseSpeed)*Math.PI*2;C+=(Math.sin(m.noisePhaseX+L)-Math.sin(m.noisePhaseX))*P,S+=(Math.sin(m.noisePhaseY+L*.83)-Math.sin(m.noisePhaseY))*P}x.x=C,x.y=S,x.rotation=-m.rotation*Math.PI/180;let b=1,M=1;n.scaleOverLifeEnabled&&(b=jd(n.scaleOverLifeMode,n.scaleOverLifeMin,n.scaleOverLifeMax,n.scaleOverLifeCurve,v,m.scaleOverLifeX),M=n.scaleOverLifeAxisMode==="separate"?jd(n.scaleOverLifeMode,n.scaleYOverLifeMin,n.scaleYOverLifeMax,n.scaleYOverLifeCurve,v,m.scaleOverLifeY):b),x.scale.set(ic(m.scaleStartX*b,1),ic(m.scaleStartY*M,1));const I=n.alphaMode==="curve"?Zs(n.alphaCurve,v,this.resolveCurveMode(n.curveMode))*n.alphaScale:n.alpha*n.alphaScale;x.alpha=ic((y==null?void 0:y.independentAlpha)==="fixed"?y.alpha:(y==null?void 0:y.independentAlpha)==="curve"?Zs(y.alphaCurve,v,this.resolveCurveMode(y.alphaCurveMode)):I,1);const F=(y==null?void 0:y.colorStart)||"#ffffff",E=(y==null?void 0:y.colorMode)==="lifetime"?tm(y.colorGradient,v):(y==null?void 0:y.colorMode)==="random"?m.colorSample:jo(F);x.tint=E,x.blendMode=ar[(y==null?void 0:y.blend)||"normal"];const k=this.trail.update(m.trail,n,m.boneName,C,S,v,x),O=xo(n,C,S,this.simulationTransform),D=((u=this.simulationTransform)==null?void 0:u.rotation)??n.rootRotation,$=Math.abs(((d=this.simulationTransform)==null?void 0:d.scaleX)??n.rootScaleX),N=Math.abs(((f=this.simulationTransform)==null?void 0:f.scaleY)??n.rootScaleY),U=k?{...k,bones:k.bones.map(A=>{const P=xo(n,A.x,A.y,this.simulationTransform);return{...A,worldX:P.x,worldY:P.y,worldRotation:D-A.rotation}})}:void 0;a.push({boneName:m.boneName,spawnId:m.spawnId,x:C,y:S,rotation:m.rotation,scaleX:x.scale.x,scaleY:x.scale.y,worldX:O.x,worldY:O.y,worldRotation:D+m.rotation,worldScaleX:x.scale.x*$,worldScaleY:x.scale.y*N,alpha:x.alpha,colorHex:E,resourceId:m.resourceId,imageFrameIndex:m.imageFrameIndex,imageVisible:x.visible,trailState:U,active:!0})}return this.states=a,a}drawTrailMeshDebug(t){this.trail.drawDebug(this.trailDebugGfx,t,this.cfg,this.pool.map(i=>i.trail))}emitBurst(){for(let t=0;t0&&this.spawnPathSampler){const a=this.estimatedEmissionCount(),c=bI(t.spawnPathDistribution,this._spawnSerial,a,this.spawnPathClosed,this.rng),l=this.spawnPathSampler(c);if(l)return{...this.applyFollowToOrigin(l.x+i,l.y+n),radialAngle:0,pathAngle:l.angle}}const r=SI(t,this.rng);return{...this.applyFollowToOrigin(i+r.x,n+r.y),radialAngle:r.radialAngle}}estimatedEmissionCount(){const t=this.cfg;return t.mode==="burst"?Math.max(1,Math.round(t.burstCount)):Math.max(1,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration))))}applyFollowToOrigin(t,i){const n=this.followSpawnAngle*Math.PI/180,r=Math.cos(n),o=Math.sin(n);return{x:this.followSpawnX+r*t-o*i,y:this.followSpawnY+o*t+r*i}}spawnOne(){const t=this.cfg;let i=this.pool.findIndex(_=>!_.active);if(i===-1)return;const n=this.spawnOrigin(),{x:r,y:o}=n,a=bo(t.lifeMode,t.lifeMin,t.lifeMax,t.lifeCurve,this.rng()),c=bo(t.speedMode,t.speedMin,t.speedMax,t.speedCurve,this.rng()),l=_I(t,n,this.followSpawnAngle,this.rng),h=this.pool[i],u=OI(t,this.rng),d=this._spawnSerial++;h.spawnId=d;const f=BI(t,Rr(t.seed,d,1540483477));h.noisePhaseX=Rr(t.seed,d,1757159915)*Math.PI*2,h.noisePhaseY=Rr(t.seed,d,48610963)*Math.PI*2,h.gravityStrength=t.useGravity&&t.gravityMode==="random"?yi(t.gravityMin,t.gravityMax,this.rng()):t.gravityMin,h.windStrength=t.wind&&t.windMode==="random"?yi(t.windMin,t.windMax,this.rng()):t.windMin,h.attractionActive=!1,h.attractionElapsed=0,h.collisionPaused=!1,h.attractionCurveSide=Rr(t.seed,d,2738958700)<.5?-1:1,h.trail.history.length=0,h.trail.bones.length=0,h.trail.currentWidth=0,h.trail.currentAlpha=0,h.trail.currentColor=16777215,h.trail.resourceId=f.id;const p=Math.min(100,Math.max(0,Number(f.trailRatio)||0)),m=t.mode==="burst"?Math.max(0,Math.round(t.burstCount)):Math.max(0,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration)))),g=p>0&&m===1&&d===0,v=Rr(t.seed,d,668265261)*100,x=(_,C,S,b,M)=>{if(_!=="random")return Math.max(0,Number(C)||0);const I=Math.max(0,Math.min(Number(S)||0,Number(b)||0)),F=Math.max(0,Math.max(Number(S)||0,Number(b)||0));return yi(I,F,Rr(t.seed,d,M))};h.trail.sampledLength=x(f.lengthMode,f.length,f.lengthMin,f.lengthMax,374761393),h.trail.sampledWidth=x(f.widthSizeMode,f.width,f.widthMin,f.widthMax,3550635116),h.trail.enabled=t.trail&&(g||v0&&h.trail.sampledWidth>0,h.trail.mesh&&(h.trail.mesh.visible=!1),h.active=!0,h.life=a,h.maxLife=a,h.x=r,h.y=o,h.trail.enabled&&h.trail.history.push({x:r,y:o}),h.vx=Math.cos(l)*c,h.vy=Math.sin(l)*c,h.scaleStartX=bo(t.scaleMode,t.scaleMin,t.scaleMax,t.scaleCurve,this.rng())*u.scale,h.scaleStartY=t.scaleAxisMode==="separate"?bo(t.scaleMode,t.scaleYMin,t.scaleYMax,t.scaleYCurve,this.rng())*u.scale:h.scaleStartX,h.alphaStart=t.alpha,h.alphaEnd=t.alphaEnd,h.rotation=t.initialRotationMode==="direction"?-Math.atan2(h.vy,h.vx)*180/Math.PI+t.initialRotationMin:bo(t.initialRotationMode,t.initialRotationMin,t.initialRotationMax,t.initialRotationCurve,this.rng()),h.rotationSpeed=t.rotationOverLifeEnabled?bo(t.rotationOverLifeMode,t.rotationSpeedMin,t.rotationSpeedMax,t.rotationOverLifeCurve,this.rng()):0,h.speedScale=1,h.speedScaleTarget=t.speedOverLifeMode==="random"?yi(t.speedOverLifeMin,t.speedOverLifeMax,this.rng()):t.speedOverLifeMin,h.scaleOverLifeX=t.scaleOverLifeMode==="random"?yi(t.scaleOverLifeMin,t.scaleOverLifeMax,this.rng()):t.scaleOverLifeMin,h.scaleOverLifeY=t.scaleOverLifeMode==="random"?yi(t.scaleYOverLifeMin,t.scaleYOverLifeMax,this.rng()):t.scaleYOverLifeMin,h.resourceId=u.id,h.colorSample=u.colorMode==="random"?tm(u.colorGradient,Rr(t.seed,d,2654435769)):jo(u.colorStart);const y=vv(u,0);h.imageFrameIndex=y.index,h.sprite.texture=zd(u,t.texture,y.index),h.sprite.anchor.set(u.anchorX,u.anchorY),h.sprite.blendMode=ar[u.blend],h.sprite.tint=h.colorSample,h.sprite.visible=!0}kill(t){const i=this.pool[t];i.active=!1,i.sprite.visible=!1,Cc(i.trail)}clear(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,Cc(t.trail)}get activeCount(){let t=0;for(const i of this.pool)i.active&&t++;return t}capture(){const t=[];for(const i of this.pool)i.active&&t.push({boneName:i.boneName,spawnId:i.spawnId,x:i.sprite.x,y:i.sprite.y,rotation:i.rotation,scaleX:i.sprite.scale.x,scaleY:i.sprite.scale.y,...this.captureWorldTransform(i),alpha:i.sprite.alpha,colorHex:i.sprite.tint,resourceId:i.resourceId,imageFrameIndex:i.imageFrameIndex,imageVisible:i.sprite.visible,active:!0,trailState:this.cfg.trail&&i.trail.bones.length?{bones:i.trail.bones.map(n=>{var o;const r=xo(this.cfg,n.x,n.y,this.simulationTransform);return{...n,worldX:r.x,worldY:r.y,worldRotation:(((o=this.simulationTransform)==null?void 0:o.rotation)??this.cfg.rootRotation)-n.rotation}}),activeBoneCount:i.trail.bones.length,width:i.trail.currentWidth,alpha:i.trail.currentAlpha,colorHex:i.trail.currentColor,resourceId:i.trail.resourceId}:void 0});return t}captureWorldTransform(t){var r,o,a;const i=xo(this.cfg,t.sprite.x,t.sprite.y,this.simulationTransform),n=((r=this.simulationTransform)==null?void 0:r.rotation)??this.cfg.rootRotation;return{worldX:i.x,worldY:i.y,worldRotation:n+t.rotation,worldScaleX:t.sprite.scale.x*Math.abs(((o=this.simulationTransform)==null?void 0:o.scaleX)??this.cfg.rootScaleX),worldScaleY:t.sprite.scale.y*Math.abs(((a=this.simulationTransform)==null?void 0:a.scaleY)??this.cfg.rootScaleY)}}apply(t){const i=new Map;for(const n of t)i.set(n.boneName,n);for(const n of this.pool){const r=i.get(n.boneName);if(!r){n.active=!1,n.sprite.visible=!1,n.trail.mesh&&(n.trail.mesh.visible=!1);continue}n.active=r.active;const o=n.sprite;if(o.visible=r.active&&r.imageVisible!==!1,o.x=r.x,o.y=r.y,o.rotation=-r.rotation*Math.PI/180,o.scale.set(r.scaleX,r.scaleY),o.alpha=r.alpha,o.tint=r.colorHex,r.resourceId!=null){const a=this.cfg.imageResources.find(c=>c.id===r.resourceId);a&&(n.imageFrameIndex=r.imageFrameIndex??0,o.texture=zd(a,this.cfg.texture,n.imageFrameIndex),o.anchor.set(a.anchorX,a.anchorY),o.blendMode=ar[a.blend])}this.cfg.trail&&r.trailState?this.trail.applyState(n.trail,this.cfg,n.sprite,r.trailState):n.trail.mesh&&(n.trail.mesh.visible=!1)}}reset(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,Cc(t.trail);this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=!1,this._lastSeed=this.cfg.seed,this.rng=Wd(this.cfg.seed>>>0)}restartEmissionCycle(){this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=this.cfg.attraction,this._lastSeed=this.cfg.seed,this.rng=Wd(this.cfg.seed>>>0)}}const io=new Map,Zr=new Map;function DI(s){return[...io.values()].some(e=>e===s)}function Z1(s){if(!(DI(s)||(Zr.get(s)||0)>0)){Zr.delete(s);for(const e of s.textures)e.destroy(!0)}}function NI(s){const e=Zr.get(s)||0;e>1?Zr.set(s,e-1):Zr.delete(s),Z1(s)}function UI(s){return io.get(s)||null}function nu(s,e){wl(s),io.set(s,e)}function $I(s){const e=io.get(s);return e?(Zr.set(e,(Zr.get(e)||0)+1),e):null}function XI(s,e){const t=io.get(s);return t?(nu(e,t),!0):!1}function wl(s){const e=io.get(s);e&&(io.delete(s),Z1(e))}function Nt(s){if(Array.isArray(s))return s.map(e=>Nt(e));if(s&&typeof s=="object"){const e=Object.getPrototypeOf(s);if(e===Object.prototype||e===null){const t={};for(const[i,n]of Object.entries(s))t[i]=Nt(n);return t}}return s}const J1=["3.8","4.0","4.1","4.2","4.3"];function ah(s){const e=String(s||"").trim();return J1.find(t=>e===t||e.startsWith(`${t}.`))||null}function im(){return J1.join(" / ")}function VI(s){return s==="4.3"?"4.3":"4.2"}function ap(){return{imagesPath:"./images/",spineVersion:"4.2",keyframeCurve:"linear",fps:30,omitFps:!1,integerFrameAlignment:!0,bonePool:!0,excludeEmptyAnimations:!1,fileName:"SpineParticle.json"}}function Q1(s){const e=Object.assign(ap(),s||{});return e.imagesPath=String(e.imagesPath||"./images/"),e.spineVersion=ah(e.spineVersion)||"4.2",e.keyframeCurve=e.keyframeCurve==="bezier"?"bezier":"linear",e.fps=Math.min(240,Math.max(1,Math.round(Number(e.fps)||30))),e.omitFps=e.omitFps===!0,e.integerFrameAlignment=e.integerFrameAlignment!==!1,e.bonePool=e.bonePool!==!1,e.excludeEmptyAnimations=e.excludeEmptyAnimations===!0,e.fileName=String(e.fileName||"SpineParticle.json"),e}const sm=30;function Ac(s,e=1){return Math.min(1800,Math.max(1,Math.ceil(Number(s)||e)))}function eb(s,e=30){const t=Math.max(0,Number(s.lifeMin)||0),i=Math.max(0,Number(s.lifeMax)||0),n=s.lifeMode==="fixed"?t:Math.max(t,i);return Ac(Math.ceil(n*Math.max(1,e)),sm)}function lr(s,e=30){const t=Ac(s.loopDurationFrames),i=eb(s,e),n=s.generateLoopStartAnimation?s.loopStartUseCustomDuration?Ac(s.loopStartDurationFrames,sm):i:0,r=s.generateLoopEndAnimation?s.loopEndUseCustomDuration?Ac(s.loopEndDurationFrames,sm):i:0;return{start:n,loop:t,end:r,total:n+t+r}}function tb(s,e){const t=lr(s,e),n=Math.max(0,Math.ceil(Math.max(0,Number(s.delay)||0)*Math.max(1,e)))+t.start;return{start:n,end:n+t.loop}}function Ec(s,e,t){const i=Math.max(1,Math.floor(t)-1),n=Math.min(i-1,Math.max(0,Math.floor(Number(s)||0))),r=Math.min(i,Math.max(n+1,Math.floor(Number(e)||i)));return{start:n,end:r}}function YI(s,e,t){const i=Math.max(1,e-1),n=Math.max(1,t-1),r=s.end>=i?n:s.end;return Ec(s.start,r,t)}let sc=1,nc=1,rc=1,oc=1;function ac(s,e){const t=new Set(e),i=`${s} Copy`;if(!t.has(i))return i;let n=2;for(;t.has(`${i} ${n}`);)n++;return`${i} ${n}`}const ao=nM("particle",{state:()=>({editor:{viewScale:1,viewX:0,viewY:0},systems:[],colliders:[],paths:[],spines:[],activeId:0,activeObjectType:"particle",activeObjectId:0,timeline:{playing:!0,loop:!0,frame:0,totalFrames:60,playbackStart:0,playbackEnd:59,fps:30,recorded:!1,animation:"animation",animations:["animation"]},settings:{parameterPanelOnRight:!0,tickEnabled:!1,axisFontSize:12,tickWidth:1,showAxisLabels:!0,axisColor:"#7a86ad",undoLimit:20,backgroundX:0,backgroundY:0,backgroundOpacity:1,backgroundImageName:"",backgroundImageData:"",showEmitter:!0,showBones:!1,bonePointDrawSize:1,boneAxisDrawSize:2,showSkinMesh:!1,showGrid:!0,exportSettings:ap()}}),getters:{activeSystemCount:s=>s.systems.length},actions:{syncSceneSequences(){sc=Math.max(sc,...this.systems.map(s=>s.id+1),1),nc=Math.max(nc,...this.colliders.map(s=>s.id+1),1),rc=Math.max(rc,...this.paths.map(s=>s.id+1),1),oc=Math.max(oc,...this.spines.map(s=>s.id+1),1)},addSystem(s){const e=cl();s!=null&&s.config&&Object.assign(e,s.config);const t=new Set(this.systems.map(r=>r.config.name));if(t.has(e.name)){let r=0;for(const a of this.systems){const c=/^ParticleSystem(\d+)$/.exec(a.config.name);c&&(r=Math.max(r,parseInt(c[1],10)))}e.name=`ParticleSystem${r+1}`;let o=2;for(;t.has(e.name);)e.name=`ParticleSystem${r+o}`,o++}const i=this.timeline.animations.includes(this.timeline.animation)?this.timeline.animation:this.timeline.animations[0]||"animation",n={id:sc++,visible:!0,animation:i,config:e};return this.systems.push(n),this.activeId=n.id,this.activeObjectType="particle",this.activeObjectId=n.id,n},removeSystem(s){var i;const e=this.systems.findIndex(n=>n.id===s);e>=0&&this.systems.splice(e,1),this.activeId===s&&(this.activeId=((i=this.systems[0])==null?void 0:i.id)??0);const t=this.systems.find(n=>n.id===this.activeId);if(t&&(this.timeline.animation=t.animation),this.activeObjectType==="particle"&&this.activeObjectId===s){const n=this.systems[0];this.activeObjectId=(n==null?void 0:n.id)??0}},selectSystem(s){this.activeId=s,this.activeObjectType="particle",this.activeObjectId=s;const e=this.systems.find(t=>t.id===s);e&&(this.timeline.animation=e.animation)},setSystemAnimation(s,e){if(!this.timeline.animations.includes(e))return;const t=this.systems.find(i=>i.id===s);t&&(t.animation=e,this.timeline.animation=e)},addAnimation(){const s=new Set(this.timeline.animations);let e=2,t=`animation${e}`;for(;s.has(t);)t=`animation${++e}`;this.timeline.animations.push(t),this.timeline.animation=t;const i=this.systems.find(n=>n.id===this.activeId);return i&&(i.animation=t),t},renameAnimation(s,e){const t=e.trim(),i=this.timeline.animations.indexOf(s);if(i<0||!t||t!==s&&this.timeline.animations.includes(t))return!1;this.timeline.animations[i]=t;for(const n of this.systems)n.animation===s&&(n.animation=t);return this.timeline.animation===s&&(this.timeline.animation=t),!0},removeAnimation(s){if(this.timeline.animations.length<=1)return!1;const e=this.timeline.animations.indexOf(s);if(e<0)return!1;this.timeline.animations.splice(e,1);const t=this.timeline.animations[Math.min(e,this.timeline.animations.length-1)];for(const i of this.systems)i.animation===s&&(i.animation=t);return this.timeline.animation===s&&(this.timeline.animation=t),!0},addCollider(){const s=nc++,e={id:s,name:`Collider${s}`,visible:!0,shape:"circle",enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,radius:50,radiusX:70,radiusY:45,width:120,height:80,sides:6,response:"physics",elasticity:.8,friction:.3,followPath:!1,followPathId:0,followDuration:2,followPathRotation:!1,followCurveMode:"跟随导出",followCurve:[{x:0,y:0},{x:1,y:1}]};return this.colliders.push(e),this.activeObjectType="collision",this.activeObjectId=e.id,e},addPath(){const s=rc++,e={id:s,name:`Path${s}`,visible:!0,enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,closed:!1,color:"#ff933e",preset:"",points:[]};return this.paths.push(e),this.activeObjectType="path",this.activeObjectId=e.id,e},addSpine(){const s=oc++,e={id:s,name:`SpineSkeleton${s}`,enabled:!0,visible:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,timeOffset:0,skeletonFileName:"",atlasFileName:"",textureFileNames:[],dataVersion:"",sourceBundle:null,selectedAnimation:"",selectedBone:"",animations:[],bones:[],assetVersion:0,status:"empty",error:""};return this.spines.push(e),this.activeObjectType="spine",this.activeObjectId=e.id,e},duplicateSelectedObject(){const s=this.activeObjectId;if(!s)return null;if(this.activeObjectType==="particle"){const i=this.systems.find(r=>r.id===s);if(!i)return null;const n=Nt(i);return n.id=sc++,n.config.name=ac(i.config.name,this.systems.map(r=>r.config.name)),n.frames=void 0,this.systems.push(n),this.activeId=n.id,this.activeObjectId=n.id,this.timeline.animation=n.animation,n}if(this.activeObjectType==="collision"){const i=this.colliders.find(r=>r.id===s);if(!i)return null;const n=Nt(i);return n.id=nc++,n.name=ac(i.name,this.colliders.map(r=>r.name)),this.colliders.push(n),this.activeObjectId=n.id,n}if(this.activeObjectType==="path"){const i=this.paths.find(r=>r.id===s);if(!i)return null;const n=Nt(i);return n.id=rc++,n.name=ac(i.name,this.paths.map(r=>r.name)),this.paths.push(n),this.activeObjectId=n.id,n}const e=this.spines.find(i=>i.id===s);if(!e)return null;const t=Nt(e);return t.id=oc++,t.name=ac(e.name,this.spines.map(i=>i.name)),t.selectedBone="",XI(e.id,t.id),this.spines.push(t),this.activeObjectId=t.id,t},selectSceneObject(s,e){if(this.activeObjectType=s,this.activeObjectId=e,s==="particle"){this.activeId=e;const t=this.systems.find(i=>i.id===e);t&&(this.timeline.animation=t.animation)}},removeCollider(s){var t;const e=this.colliders.findIndex(i=>i.id===s);e>=0&&this.colliders.splice(e,1);for(const i of this.systems){const n=pr(i.config);n.collisionColliderIds=n.collisionColliderIds.filter(r=>r!==s)}if(this.activeObjectType==="collision"&&this.activeObjectId===s){const i=this.systems[0];this.activeObjectType=i?"particle":"collision",this.activeObjectId=(i==null?void 0:i.id)??((t=this.colliders[0])==null?void 0:t.id)??0}},removePath(s){var t;const e=this.paths.findIndex(i=>i.id===s);if(e>=0&&this.paths.splice(e,1),this.activeObjectType==="path"&&this.activeObjectId===s){const i=this.systems[0];this.activeObjectType=i?"particle":"path",this.activeObjectId=(i==null?void 0:i.id)??((t=this.paths[0])==null?void 0:t.id)??0}},removeSpine(s){wl(s);const e=this.spines.findIndex(t=>t.id===s);if(e>=0&&this.spines.splice(e,1),this.activeObjectType==="spine"&&this.activeObjectId===s){const t=this.systems[0],i=this.colliders[0],n=this.paths[0],r=this.spines[0];t?(this.activeObjectType="particle",this.activeObjectId=t.id,this.activeId=t.id):i?(this.activeObjectType="collision",this.activeObjectId=i.id):n?(this.activeObjectType="path",this.activeObjectId=n.id):(this.activeObjectType="spine",this.activeObjectId=(r==null?void 0:r.id)??0)}this.recalcTotalFrames()},play(){const s=Ec(this.timeline.playbackStart,this.timeline.playbackEnd,this.timeline.totalFrames);(this.timeline.frame=s.end)&&(this.timeline.frame=s.start),this.timeline.playing=!0},pause(){this.timeline.playing=!1},togglePlay(){this.timeline.playing?this.pause():this.play()},toStart(){this.timeline.frame=this.timeline.playbackStart},previousFrame(){this.timeline.playing=!1,this.timeline.frame=Math.max(this.timeline.playbackStart,this.timeline.frame-1)},nextFrame(){this.timeline.playing=!1,this.timeline.frame=Math.min(this.timeline.playbackEnd,this.timeline.frame+1)},toEnd(){this.timeline.playing=!1,this.timeline.frame=this.timeline.playbackEnd},toggleLoop(){this.timeline.loop=!this.timeline.loop},setFrame(s){this.timeline.frame=Math.max(0,Math.min(s,this.timeline.totalFrames-1))},setPlaybackStart(s){const e=Ec(s,this.timeline.playbackEnd,this.timeline.totalFrames);this.timeline.playbackStart=e.start,this.timeline.playbackEnd=e.end,this.timeline.framee.end&&(this.timeline.frame=e.end)},recalcTotalFrames(){const s=this.timeline.fps||30;let e=0;for(const r of this.systems){const o=r.config,a=Math.max(0,Number(o.lifeMin)||0),c=Math.max(0,Number(o.lifeMax)||0),l=o.lifeMode==="fixed"?a:Math.max(a,c),h=o.mode==="stream"?o.streamBehavior==="loop"?Math.max(1/s,Math.ceil(Math.max(1,Number(o.loopDurationFrames)||1))/s):Math.max(1/s,Number(o.duration)||0):0;let u=Math.max(0,Number(o.delay)||0)+h+l;o.mode==="stream"&&o.streamBehavior==="loop"&&(u=Math.max(0,Number(o.delay)||0)+lr(o,s).total/s),u>e&&(e=u)}for(const r of this.spines){const o=r.animations.find(c=>c.name===r.selectedAnimation);if(!o)continue;const a=Math.max(0,Number(r.timeOffset)||0)+Math.max(0,o.duration||0);a>e&&(e=a)}for(const r of this.colliders){if(!r.followPath||!r.followPathId)continue;const o=Math.max(0,Number(r.followDuration)||0);o>e&&(e=o)}const t=this.timeline.totalFrames,i=Math.max(2,Math.ceil(e*s)+1);this.timeline.totalFrames=i;const n=YI({start:this.timeline.playbackStart,end:this.timeline.playbackEnd},t,i);return this.timeline.playbackStart=n.start,this.timeline.playbackEnd=n.end,this.timeline.frame>=i&&(this.timeline.frame=i-1),i}}}),ib="SpineParticle.SystemSettings",sb=1,qd="SpineParticle.SystemSettings.v1";function _a(s,e,t,i){const n=Number(s);return Math.min(t,Math.max(e,Number.isFinite(n)?n:i))}function GI(s){return{parameterPanelOnRight:s.parameterPanelOnRight,undoLimit:s.undoLimit,showEmitter:s.showEmitter,showBones:s.showBones,bonePointDrawSize:s.bonePointDrawSize,boneAxisDrawSize:s.boneAxisDrawSize,showSkinMesh:s.showSkinMesh,tickEnabled:s.tickEnabled,axisFontSize:s.axisFontSize,tickWidth:s.tickWidth,showAxisLabels:s.showAxisLabels,axisColor:s.axisColor}}function HI(s,e){const t=n=>s[n]==null?!!e[n]:s[n]===!0,i=typeof s.axisColor=="string"&&/^#[0-9a-f]{6}$/i.test(s.axisColor)?s.axisColor:e.axisColor;return{parameterPanelOnRight:t("parameterPanelOnRight"),undoLimit:Math.round(_a(s.undoLimit,1,200,e.undoLimit)),showEmitter:t("showEmitter"),showBones:t("showBones"),bonePointDrawSize:_a(s.bonePointDrawSize,.1,10,e.bonePointDrawSize),boneAxisDrawSize:_a(s.boneAxisDrawSize,.1,10,e.boneAxisDrawSize),showSkinMesh:t("showSkinMesh"),tickEnabled:t("tickEnabled"),axisFontSize:Math.round(_a(s.axisFontSize,8,40,e.axisFontSize)),tickWidth:_a(s.tickWidth,1,5,e.tickWidth),showAxisLabels:t("showAxisLabels"),axisColor:i}}function jI(s){let e;try{e=JSON.parse(s)}catch{throw new Error("系统设置缓存不是有效的 JSON")}const t=e;if(t.format!==ib)throw new Error("不是 Spine粒子编辑器系统设置缓存");if(t.version!==sb)throw new Error(`暂不支持系统配置版本:${t.version??"未知"}`);if(!t.settings||typeof t.settings!="object")throw new Error("系统设置缓存缺少 settings");return t}function WI(s,e){Object.assign(s.settings,HI(e,s.settings))}let lc=null;function zI(s){lc==null||lc();try{const e=localStorage.getItem(qd);e&&WI(s,jI(e).settings)}catch{try{localStorage.removeItem(qd)}catch{}}lc=Xi(()=>GI(s.settings),e=>{const t={format:ib,version:sb,savedAt:new Date().toISOString(),settings:e};try{localStorage.setItem(qd,JSON.stringify(t))}catch{}},{deep:!0})}function qI(s,e=0){if(s<=0)return 1;const t=Math.pow(10,Math.floor(Math.log10(s))),i=[1,2,5,10,20,50,100];let n=1;for(const r of i)if(r*t>=s){n=r*t;break}return Math.max(n,e)}function KI(s,e,t,i,n){if(!t)return;const r=t;r.clear();const o=s.settings;if(!o.tickEnabled){for(const b of n)b.visible=!1;return}const a=0,c=0,l=e.screen.width/s.editor.viewScale,h=e.screen.height/s.editor.viewScale,u=+("0x"+o.axisColor.replace("#",""));r.lineStyle(1.5,u,.35),r.moveTo(-l,c),r.lineTo(l,c),r.moveTo(a,-h),r.lineTo(a,h);const d=s.editor.viewScale,f=qI(50/d),p=l,m=h,g=Math.max(1,o.tickWidth);if(o.tickEnabled){for(let b=0;b<=l;b+=f){const M=Math.round(b/f)*f;M!==0&&(r.lineStyle(g,u,.25),r.moveTo(M,c-4),r.lineTo(M,c+4),r.moveTo(-M,c-4),r.lineTo(-M,c+4))}for(let b=0;b<=h;b+=f)Math.round(b/f)*f!==0&&(r.lineStyle(g,u,.25),r.moveTo(a-4,b),r.lineTo(a+4,b),r.moveTo(a-4,-b),r.lineTo(a+4,-b))}const v=e.screen.width/2+s.editor.viewX,x=e.screen.height*.5+s.editor.viewY,y=o.axisFontSize,_=+("0x"+o.axisColor.replace("#",""));for(;n.length<64;){const b=new op("",{fontFamily:"monospace",fontSize:y,fill:_});b.anchor.set(.5,.5),i.addChild(b),n.push(b)}let C=0;const S=o.showAxisLabels&&o.tickEnabled;for(let b=0;b<=l;b+=f){const M=Math.round(b/f)*f;if(M===0||!S||M>p)continue;const I=n[C++];if(!I)break;I.style.fontSize=y,I.text=String(M),I.position.set(v+M*d,x+9),I.visible=!0;const F=n[C++];if(!F)break;F.style.fontSize=y,F.text=String(-M),F.position.set(v-M*d,x+9),F.visible=!0}for(let b=0;b<=h;b+=f){const M=Math.round(b/f)*f;if(M===0||!S||M>m)continue;const I=n[C++];if(!I)break;I.style.fontSize=y,I.text=String(M),I.position.set(v+8,x-b*d),I.visible=!0;const F=n[C++];if(!F)break;F.style.fontSize=y,F.text=String(-M),F.position.set(v+8,x+b*d),F.visible=!0}for(;Cx.id===s.activeId);if(!n||n.visible===!1)return;const r=n.config,o=e.get(n.id),a=(o==null?void 0:o.x)??r.centerX??0,c=-((o==null?void 0:o.y)??r.centerY??0),l=r.shape;if(l==="point"||l==="path")return;const h=r.rootScaleX??1,u=r.rootScaleY??1,d=-((o==null?void 0:o.rotation)??r.rootRotation??0)*Math.PI/180,f=Math.cos(d),p=Math.sin(d),m=r.offsetX??0,g=r.offsetY??0,v=(x,y)=>{const _=x+m,C=-y-g,S=_*h,b=C*u;return[a+S*f-b*p,c+(S*p+b*f)]};if(l==="circle"){const x=oh(r.innerRadius,r.outerRadius);i.lineStyle(2,3991658,.7);const y=48;for(const _ of[x.outer,x.inner])if(!(_<=0))for(let C=0;C<=y;C++){const S=C/y*Math.PI*2,[b,M]=v(Math.cos(S)*_,Math.sin(S)*_);C===0?i.moveTo(b,M):i.lineTo(b,M)}}else if(l==="rect"){const x=K1(r);i.lineStyle(2,4885759,.7);for(const[y,_]of[[x.outerW,x.outerH],[x.innerW,x.innerH]]){if(y<=0||_<=0)continue;const C=y/2,S=_/2,b=v(-C,-S),M=v(C,-S),I=v(C,S),F=v(-C,S);i.moveTo(b[0],b[1]),i.lineTo(M[0],M[1]),i.lineTo(I[0],I[1]),i.lineTo(F[0],F[1]),i.lineTo(b[0],b[1])}}else if(l==="cone"){const x=oh(r.innerRadius,r.outerRadius),y=r.coneAngle/2*Math.PI/180,_=r.coneDirection*Math.PI/180,C=v(Math.cos(_-y)*x.inner,Math.sin(_-y)*x.inner),S=v(Math.cos(_+y)*x.inner,Math.sin(_+y)*x.inner),b=v(Math.cos(_-y)*x.outer,Math.sin(_-y)*x.outer),M=v(Math.cos(_+y)*x.outer,Math.sin(_+y)*x.outer);i.lineStyle(2,3991658,.7),i.moveTo(C[0],C[1]),i.lineTo(b[0],b[1]),i.moveTo(S[0],S[1]),i.lineTo(M[0],M[1]),i.lineStyle(1,3991658,.5);const I=24;for(const F of[x.outer,x.inner])if(!(F<=0))for(let E=0;E<=I;E++){const k=_-y+2*y*E/I,[O,D]=v(Math.cos(k)*F,Math.sin(k)*F);E===0?i.moveTo(O,D):i.lineTo(O,D)}}}function QI(s,e){if(!e)return;const t=e;t.clear();const i=s.systems.find(c=>c.id===s.activeId);if((i==null?void 0:i.visible)===!1)return;const n=i==null?void 0:i.config;if(!(n!=null&&n.forceField)||n.forceRadius<=0)return;const r=n.forceCenterX,o=-n.forceCenterY,a=n.forceStrength>=0?5818367:16739194;t.lineStyle(2,a,.85),t.beginFill(a,.08),t.drawCircle(r,o,n.forceRadius),t.endFill(),t.lineStyle(1,a,.7),t.moveTo(r-9,o),t.lineTo(r+9,o),t.moveTo(r,o-9),t.lineTo(r,o+9),t.beginFill(a,.95),t.drawCircle(r,o,4),t.endFill()}function eR(s,e){if(!e)return;const t=e;t.clear();const i=s.systems.find(l=>l.id===s.activeId);if((i==null?void 0:i.visible)===!1)return;const n=i==null?void 0:i.config;if(!(n!=null&&n.attraction))return;const r=n.attractionCenterX,o=-n.attractionCenterY,a=Math.max(0,n.attractionRadius),c=16731487;a>0&&(t.lineStyle(2,c,.95),t.beginFill(c,.09),t.drawCircle(r,o,a),t.endFill()),t.lineStyle(1,c,.85),t.moveTo(r-10,o),t.lineTo(r+10,o),t.moveTo(r,o-10),t.lineTo(r,o+10),t.beginFill(c,1),t.drawCircle(r,o,a>0?4:6),t.endFill()}function tR(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),o=Math.max(1e-4,Math.abs(s.scaleX??1)),a=Math.max(1e-4,Math.abs(s.scaleY??1));return{x:s.x+n*e*o-r*t*a,y:s.y+r*e*o+n*t*a}}function wo(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),o=Math.max(1e-4,Math.abs(s.scaleX??1)),a=Math.max(1e-4,Math.abs(s.scaleY??1)),c=e-s.x,l=t-s.y;return{x:(n*c+r*l)/o,y:(-r*c+n*l)/a}}function nb(s,e,t="linear"){if(!s.length)return e;const i=[...s].sort((n,r)=>n.x-r.x);if(e<=i[0].x)return i[0].y;for(let n=1;nl.id===a.emitterFollowSpineId);!c||c.visible===!1||n.set(`${a.emitterFollowSpineId}:${a.emitterFollowBoneName}`,{spineId:a.emitterFollowSpineId,boneName:a.emitterFollowBoneName})}for(const o of n.values()){const a=e==null?void 0:e.getBoneWorldTransform(o.spineId,o.boneName);if(!a)continue;const c=a.x,l=-a.y;i.lineStyle(2,12881151,.95),i.beginFill(12881151,.2),i.drawCircle(c,l,8),i.endFill(),i.beginFill(15919103,1),i.drawCircle(c,l,3.5),i.endFill()}}function sR(s,e,t){if(!t)return;const i=t;if(i.clear(),!s.value)return;const n=e();if(!n)return;const r=n.x,o=-n.y,a=n.scaleX,c=n.scaleY,l=-n.rotation*Math.PI/180,h=Math.cos(l),u=Math.sin(l),d=(m,g)=>{const v=m*a,x=-g*c;return[r+v*h-x*u,o+(v*u+x*h)]},f=(m,g,v,x)=>{const y=d(m,g),_=d(v,x);i.moveTo(y[0],y[1]),i.lineTo(_[0],_[1])},p=26;if(i.lineStyle(2,3526911,.9),i.beginFill(3526911,.25),i.drawCircle(r,o,6),i.endFill(),s.value==="translate")i.lineStyle(2,3526911,.9),f(-p,0,p,0),f(0,-p,0,p),f(p-6,-4,p,0),f(p,0,p-6,4),f(-20,-4,-p,0),f(-p,0,-20,4),f(-4,p-6,0,p),f(0,p,4,p-6),f(-4,-20,0,-p),f(0,-p,4,-20);else if(s.value==="rotate"){i.lineStyle(2,3526911,.8);const m=48;for(let x=0;x<=m;x++){const y=x/m*Math.PI*2,[_,C]=d(Math.cos(y)*p,Math.sin(y)*p);x===0?i.moveTo(_,C):i.lineTo(_,C)}const[g,v]=d(0,p);i.beginFill(3526911,.95),i.drawCircle(g,v,4),i.endFill()}else if(s.value==="scale"){i.lineStyle(2,3526911,.9);const g=[[-p,-p],[p,-p],[p,p],[-p,p]].map(([v,x])=>d(v,x));i.moveTo(g[0][0],g[0][1]),i.lineTo(g[1][0],g[1][1]),i.lineTo(g[2][0],g[2][1]),i.lineTo(g[3][0],g[3][1]),i.lineTo(g[0][0],g[0][1]),i.beginFill(3526911,.9);for(const v of g)i.drawRect(v[0]-3,v[1]-3,6,6);i.endFill()}}function nR(s,e=16777215){const t=Number.parseInt(s.replace("#",""),16);return Number.isFinite(t)?t:e}function rR(s,e,t){if(!t)return;const i=t;i.clear();for(const n of e){if(n.visible===!1)continue;const r=s.activeObjectType==="collision"&&s.activeObjectId===n.id,o=n.enabled?r?16735858:13911899:5792116,a=n.rotation*Math.PI/180,c=Math.cos(a),l=Math.sin(a),h=Math.max(1e-4,Math.abs(n.scaleX??1)),u=Math.max(1e-4,Math.abs(n.scaleY??1)),d=(m,g)=>({x:n.x+c*m*h-l*g*u,y:-(n.y+l*m*h+c*g*u)});let f=[];if(n.shape==="circle"||n.shape==="ellipse"){const m=n.shape==="circle"?n.radius:n.radiusX,g=n.shape==="circle"?n.radius:n.radiusY;f=Array.from({length:49},(v,x)=>{const y=x/48*Math.PI*2;return d(Math.cos(y)*m,Math.sin(y)*g)})}else if(n.shape==="rect"){const m=n.width*.5,g=n.height*.5;f=[d(-m,-g),d(m,-g),d(m,g),d(-m,g),d(-m,-g)]}else{const m=Math.max(3,Math.min(16,Math.round(n.sides)));f=Array.from({length:m+1},(g,v)=>{const x=Math.PI*.5+v%m/m*Math.PI*2;return d(Math.cos(x)*n.width*.5,Math.sin(x)*n.height*.5)})}if(!f.length)continue;i.lineStyle(r?2.5:1.5,o,n.enabled?.95:.45),i.beginFill(o,r?.12:.055),i.moveTo(f[0].x,f[0].y);for(let m=1;m{const f=tR(n,u,d);return{x:f.x,y:-f.y}},c=n.points[0],l=a(c.x,c.y);i.lineStyle(r?2.5:1.8,o,r?1:.75),i.moveTo(l.x,l.y);const h=n.closed?n.points.length:n.points.length-1;for(let u=0;u{const f=a(u.x,u.y),p=a(u.x+u.inX,u.y+u.inY),m=a(u.x+u.outX,u.y+u.outY),g=Math.hypot(u.inX,u.inY)>.01,v=Math.hypot(u.outX,u.outY)>.01;i.lineStyle(1,11121867,.65),g&&(i.moveTo(f.x,f.y),i.lineTo(p.x,p.y)),v&&(i.moveTo(f.x,f.y),i.lineTo(m.x,m.y)),g&&(i.beginFill(14015724,.95),i.drawCircle(p.x,p.y,3),i.endFill()),v&&(i.beginFill(14015724,.95),i.drawCircle(m.x,m.y,3),i.endFill()),i.beginFill(e.has(d)?16777215:o,1),i.lineStyle(1.5,e.has(d)?6126847:16777215,.95),i.drawCircle(f.x,f.y,e.has(d)?5:4),i.endFill()})}}function aR(s,e,t,i){var o;const n=Number.isFinite(e.worldX)&&Number.isFinite(e.worldY),r=Number.isFinite(e.worldRotation);s.push({boneName:e.boneName,x:n?e.worldX:e.x,y:n?-e.worldY:e.y,rotation:r?-e.worldRotation:-e.rotation,parentX:t,parentY:i}),(o=e.trailState)!=null&&o.bones.length&&e.trailState.bones.forEach(a=>{const c=Number.isFinite(a.worldX)&&Number.isFinite(a.worldY),l=Number.isFinite(a.worldRotation);s.push({boneName:a.boneName,x:c?a.worldX:a.x,y:c?-a.worldY:a.y,rotation:l?-a.worldRotation:a.rotation,parentX:t,parentY:i,trail:!0})})}function xv(s,e,t,i,n,r,o,a){const c=r*.62,l=e+i*r,h=t+n*r,u=Math.max(2.5,r*.32),d=Math.max(1.7,r*.22),f=l-i*u,p=h-n*u,m=-n,g=i;s.lineStyle(o,a,.95),s.moveTo(e-i*c,t-n*c),s.lineTo(f,p),s.lineStyle(0),s.beginFill(a,.95),s.drawPolygon([l,h,f+m*d,p+g*d,f-m*d,p-g*d]),s.endFill()}function lR(s,e,t){if(!t)return;const i=t;if(i.clear(),!e.settings.showBones)return;const n=0,r=0,o=Math.max(.25,Math.abs(e.editor.viewScale)||1),a=Math.min(10,Math.max(.1,Number(e.settings.bonePointDrawSize)||1)),c=Math.min(10,Math.max(.1,Number(e.settings.boneAxisDrawSize)||2)),l=2.5*a/o,h=4.5*c/o,u=Math.max(.65,c*.625)/o;for(const d of s){const f=d.trail?16731533:16747610;i.lineStyle(1,f,d.trail?.65:.35),i.moveTo(d.parentX??n,d.parentY??r),i.lineTo(d.x,d.y);const p=d.rotation*Math.PI/180,m=Math.cos(p),g=Math.sin(p);xv(i,d.x,d.y,m,g,h,u,15684432),xv(i,d.x,d.y,g,-m,h,u,5622123),i.beginFill(f,.9),i.drawCircle(d.x,d.y,l),i.endFill()}}function Ai(s){return s.map(e=>({...e,trailState:e.trailState?{...e.trailState,bones:e.trailState.bones.map(t=>({...t}))}:void 0}))}function cR(s){const e=new Map;for(const i of s)for(const n of i)e.has(n.boneName)||e.set(n.boneName,Ai([n])[0]);const t=[...e.keys()].sort((i,n)=>{const r=Number(i.replace(/^p_/,"")),o=Number(n.replace(/^p_/,""));return Number.isFinite(r)&&Number.isFinite(o)?r-o:i.localeCompare(n)});for(let i=0;i[r.boneName,r]));s[i]=t.map(r=>{const o=n.get(r);return o||{...Ai([e.get(r)])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}})}}function hR(s){s.length<2||(s[s.length-1]=Ai(s[0]))}function uR(s,e){const t=Math.max(0,s.length-1),i=[];for(let n=0;n<=e;n++){const r=Math.min(t,Math.round(n/e*t));i.push(Ai(s[r]||[]))}return i}function Kd(s){return`${s.boneName}:${s.spawnId??"legacy"}`}function bv(s){return{...Ai([s])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}}function dR(s,e,t,i){const n=Math.min(s.length,i+1),r=s.slice(Math.max(0,s.length-n)),o=new Map;for(const l of e){if(l.imageVisible===!1||l.alpha<=0)continue;const h=Kd(l),u=new Map;let d=!1;for(let f=r.length-1;f>=0;f--){const p=r[f].find(m=>Kd(m)===h);if(p)d=!0,u.set(f,p);else if(d)break}o.set(h,u)}const a=Math.max(0,r.length-1),c=[];for(let l=0;l<=t;l++){const h=Math.min(a,Math.round(l/t*a));c.push(e.map(u=>{var f;if(u.imageVisible===!1||u.alpha<=0)return Ai([u])[0];const d=(f=o.get(Kd(u)))==null?void 0:f.get(h);return d?Ai([d])[0]:bv(u)}))}return c[0]=c[0].map(bv),c[c.length-1]=Ai(e),c}function wv(s,e){const t=s.length?1:0;for(let i=t;i{const y=x?[[]]:[];e.reset();for(let _=0;_0&&e.restartEmissionCycle();for(let C=0;C0;_++)e.update(r,"off"),x.push(e.capture());(v=x[x.length-1])!=null&&v.length&&x.push([]),wv(u,uR(x,a.end))}const g=Ai(u[u.length-1]||[]);for(u.length>i&&(u.length=i);u.lengtha.id===r)||(this.container.removeChild(o.root),o.root.destroy({children:!0}),this.entries.delete(r));for(const r of e){const o=UI(r.id);let a=this.entries.get(r.id);if(a&&a.assetVersion!==r.assetVersion&&!o&&(this.container.removeChild(a.root),a.root.destroy({children:!0}),this.entries.delete(r.id),a=void 0),(!a||a.assetVersion!==r.assetVersion)&&o){a&&(this.container.removeChild(a.root),a.root.destroy({children:!0}));const d=new Si,f=new o.SpineClass({skeletonData:o.skeletonData,autoUpdate:!1,darkTint:!1});o.skeletonData.defaultSkin&&f.skeleton.setSkin(o.skeletonData.defaultSkin),o.runtimeVersion==="4.3"?f.skeleton.setupPoseSlots():f.skeleton.setSlotsToSetupPose(),d.addChild(f),this.container.addChild(d),a={root:d,spine:f,runtimeVersion:o.runtimeVersion,assetVersion:r.assetVersion,animation:""},this.entries.set(r.id,a)}if(!a)continue;const c=a.root,l=a.spine,h=r.visible!==!1&&r.enabled;c.visible=h,c.renderable=h,c.position.set(r.x,-r.y),c.rotation=-r.rotation*Math.PI/180,c.scale.set(r.scaleX,r.scaleY),a.animation!==r.selectedAnimation&&(a.animation=r.selectedAnimation,a.runtimeVersion==="4.3"?l.skeleton.setupPose():l.skeleton.setToSetupPose(),l.state.clearTracks(),a.animation&&l.state.setAnimation(0,a.animation,!1));const u=a.runtimeVersion==="4.3"?l.state.getTrack(0):l.state.getCurrent(0);if(u){const d=((n=r.animations.find(p=>p.name===r.selectedAnimation))==null?void 0:n.duration)||0,f=Math.max(0,t/Math.max(1,i)-r.timeOffset);u.trackTime=d>0?Math.min(f,d):f}l.update(0)}}getBoneWorldTransform(e,t){const i=this.entries.get(e),n=i==null?void 0:i.spine.skeleton.findBone(t);if(!i||!n||!n.active)return null;const r=i.runtimeVersion==="4.3"?n.appliedPose:n,o=i.root,a=Math.cos(o.rotation),c=Math.sin(o.rotation),l=a*o.scale.x,h=-c*o.scale.y,u=c*o.scale.x,d=a*o.scale.y,f=l*r.a+h*r.c,p=l*r.b+h*r.d,m=u*r.a+d*r.c,g=u*r.b+d*r.d,v=o.position.x+l*r.worldX+h*r.worldY,x=o.position.y+u*r.worldX+d*r.worldY;return{x:v,y:-x,rotation:-Math.atan2(m,f)*180/Math.PI,scaleX:Math.max(1e-4,Math.hypot(f,m)),scaleY:Math.max(1e-4,Math.hypot(p,g))}}destroy(){for(const e of this.entries.values())e.root.removeFromParent(),e.root.destroy({children:!0});this.entries.clear(),this.container.removeFromParent(),this.container.destroy({children:!0})}}let rb=class{constructor(){w(this,"entries",{});w(this,"size",0)}add(e){let t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){let t=this.size;for(var i=0,n=e.length;i1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>("0"+(t*255).toString(16)).slice(-2);return+("0x"+e(this.r)+e(this.g)+e(this.b))}static fromString(e,t=new Ci){return t.setFromString(e)}},w(Ci,"WHITE",new Ci(1,1,1,1)),w(Ci,"RED",new Ci(1,0,0,1)),w(Ci,"GREEN",new Ci(0,1,0,1)),w(Ci,"BLUE",new Ci(0,0,1,1)),w(Ci,"MAGENTA",new Ci(1,0,1,1)),Ci);var Kt;let Ie=(Kt=class{static clamp(e,t,i){return ei?i:e}static cosDeg(e){return Math.cos(e*Kt.degRad)}static sinDeg(e){return Math.sin(e*Kt.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*Kt.degRad}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){let t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return Kt.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,i){let n=Math.random(),r=t-e;return n<=(i-e)/r?e+Math.sqrt(n*r*(i-e)):t-Math.sqrt((1-n)*r*(t-i))}static isPowerOfTwo(e){return e&&(e&e-1)===0}},w(Kt,"PI",3.1415927),w(Kt,"PI2",Kt.PI*2),w(Kt,"invPI2",1/Kt.PI2),w(Kt,"radiansToDegrees",180/Kt.PI),w(Kt,"radDeg",Kt.radiansToDegrees),w(Kt,"degreesToRadians",Kt.PI/180),w(Kt,"degRad",Kt.degreesToRadians),Kt);var Ms;let Re=(Ms=class{static arrayCopy(e,t,i,n,r){for(let o=t,a=n;o=t?e:Ms.setArraySize(e,t,i)}static newArray(e,t){let i=new Array(e);for(let n=0;n0?this.items.pop():this.instantiator()}free(e){e.reset&&e.reset(),this.items.push(e)}freeAll(e){for(let t=0;t>1)*a;let c=t.bone.skeleton,l=t.deform,h=this.vertices,u=this.bones;if(!u){l.length>0&&(h=l);let m=t.bone,g=m.worldX,v=m.worldY,x=m.a,y=m.b,_=m.c,C=m.d;for(let S=i,b=o;b=this.regions.length&&(i=this.regions.length-1);let n=this.regions[i];t.region!=n&&(t.region=n,t.updateRegion())}getPath(e,t){let i=e,n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)i+="0";return i+=n,i}static nextID(){return In._nextID++}},w(In,"_nextID",0),In);var xi;(function(s){s[s.hold=0]="hold",s[s.once=1]="once",s[s.loop=2]="loop",s[s.pingpong=3]="pingpong",s[s.onceReverse=4]="onceReverse",s[s.loopReverse=5]="loopReverse",s[s.pingpongReverse=6]="pingpongReverse"})(xi||(xi={}));const lb=[xi.hold,xi.once,xi.loop,xi.pingpong,xi.onceReverse,xi.loopReverse,xi.pingpongReverse];let lp=class{constructor(e,t,i){w(this,"name");w(this,"timelines",[]);w(this,"timelineIds",new rb);w(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.setTimelines(t),this.duration=i}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e,this.timelineIds.clear();for(var t=0;t0&&(t%=this.duration));let l=this.timelines;for(let h=0,u=l.length;ht)return n-1;return i-1}static search(e,t,i){let n=e.length;for(let r=i;rt)return r-i;return n-i}},cn=class extends Ut{constructor(t,i,n){super(t,n);w(this,"curves");this.curves=Re.newFloatArray(t+i*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){let i=this.getFrameCount()+t*18;if(this.curves.length>i){let n=Re.newFloatArray(i);Re.arrayCopy(this.curves,0,n,0,i),this.curves=n}}setBezier(t,i,n,r,o,a,c,l,h,u,d){let f=this.curves,p=this.getFrameCount()+t*18;n==0&&(f[i]=2+p);let m=(r-a*2+l)*.03,g=(o-c*2+h)*.03,v=((a-l)*3-r+u)*.006,x=((c-h)*3-o+d)*.006,y=m*2+v,_=g*2+x,C=(a-r)*.3+m+v*.16666667,S=(c-o)*.3+g+x*.16666667,b=r+C,M=o+S;for(let I=p+18;pt){let h=this.frames[i],u=this.frames[i+n];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}let a=r+18;for(r+=2;r=t){let h=o[r-2],u=o[r-1];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}i+=this.getFrameEntries();let c=o[a-2],l=o[a-1];return l+(t-c)/(this.frames[i]-c)*(this.frames[i+n]-l)}},Os=class extends cn{constructor(e,t,i){super(e,t,[i])}getFrameEntries(){return 2}setFrame(e,t,i){e<<=1,this.frames[e]=t,this.frames[e+1]=i}getCurveValue(e){let t=this.frames,i=t.length-2;for(let r=2;r<=i;r+=2)if(t[r]>e){i=r-2;break}let n=this.curves[i>>1];switch(n){case 0:let r=t[i],o=t[i+1];return o+(e-r)/(t[i+2]-r)*(t[i+2+1]-o);case 1:return t[i+1]}return this.getBezierValue(e,i,1,n-2)}getRelativeValue(e,t,i,n,r){if(e>2];switch(g){case 0:let v=h[m];d=h[m+1],f=h[m+2],p=h[m+3];let x=(n-v)/(h[m+4]-v);d+=(h[m+4+1]-d)*x,f+=(h[m+4+2]-f)*x,p+=(h[m+4+3]-p)*x;break;case 1:d=h[m+1],f=h[m+2],p=h[m+3];break;default:d=this.getBezierValue(n,m,1,g-2),f=this.getBezierValue(n,m,2,g+18-2),p=this.getBezierValue(n,m,3,g+36-2)}if(o==1)u.r=d,u.g=f,u.b=p;else{if(a==ge.setup){let v=l.data.color;u.r=v.r,u.g=v.g,u.b=v.b}u.r+=(d-u.r)*o,u.g+=(f-u.g)*o,u.b+=(p-u.b)*o}}},wb=class extends Os{constructor(t,i,n){super(t,i,rt.alpha+"|"+n);w(this,"slotIndex",0);this.slotIndex=n}apply(t,i,n,r,o,a,c){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let h=l.color;if(n>3];switch(C){case 0:let S=h[_];f=h[_+1],p=h[_+2],m=h[_+3],g=h[_+4],v=h[_+5],x=h[_+6],y=h[_+7];let b=(n-S)/(h[_+8]-S);f+=(h[_+8+1]-f)*b,p+=(h[_+8+2]-p)*b,m+=(h[_+8+3]-m)*b,g+=(h[_+8+4]-g)*b,v+=(h[_+8+5]-v)*b,x+=(h[_+8+6]-x)*b,y+=(h[_+8+7]-y)*b;break;case 1:f=h[_+1],p=h[_+2],m=h[_+3],g=h[_+4],v=h[_+5],x=h[_+6],y=h[_+7];break;default:f=this.getBezierValue(n,_,1,C-2),p=this.getBezierValue(n,_,2,C+18-2),m=this.getBezierValue(n,_,3,C+36-2),g=this.getBezierValue(n,_,4,C+54-2),v=this.getBezierValue(n,_,5,C+72-2),x=this.getBezierValue(n,_,6,C+90-2),y=this.getBezierValue(n,_,7,C+108-2)}if(o==1)u.set(f,p,m,g),d.r=v,d.g=x,d.b=y;else{if(a==ge.setup){u.setFromColor(l.data.color);let S=l.data.darkColor;d.r=S.r,d.g=S.g,d.b=S.b}u.add((f-u.r)*o,(p-u.g)*o,(m-u.b)*o,(g-u.a)*o),d.r+=(v-d.r)*o,d.g+=(x-d.g)*o,d.b+=(y-d.b)*o}}},_b=class extends cn{constructor(t,i,n){super(t,i,[rt.rgb+"|"+n,rt.rgb2+"|"+n]);w(this,"slotIndex",0);this.slotIndex=n}getFrameEntries(){return 7}setFrame(t,i,n,r,o,a,c,l){t*=7,this.frames[t]=i,this.frames[t+1]=n,this.frames[t+2]=r,this.frames[t+3]=o,this.frames[t+4]=a,this.frames[t+5]=c,this.frames[t+6]=l}apply(t,i,n,r,o,a,c){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let h=this.frames,u=l.color,d=l.darkColor;if(nt){let l=this.frames[i];return n[r+1]*(t-l)/(n[r]-l)}let o=r+18;for(r+=2;r=t){let l=n[r-2],h=n[r-1];return h+(t-l)/(n[r]-l)*(n[r+1]-h)}let a=n[o-2],c=n[o-1];return c+(1-c)*(t-a)/(this.frames[i+this.getFrameEntries()]-a)}apply(t,i,n,r,o,a,c){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let h=l.getAttachment();if(!h||!(h instanceof Un)||h.timelineAttachment!=this.attachment)return;let u=l.deform;u.length==0&&(a=ge.setup);let d=this.vertices,f=d[0].length,p=this.frames;if(n=p[p.length-1]){let _=d[p.length-1];if(o==1)if(a==ge.add){let C=h;if(C.bones)for(let S=0;Sn)this.apply(t,i,Number.MAX_VALUE,r,o,a,c),i=-1;else if(i>=l[h-1])return;if(n0&&l[u-1]==d;)u--}for(;u=l[u];u++)r.push(this.events[u])}},w(Yr,"propertyIds",[""+rt.event]),Yr);var Gr;let Va=(Gr=class extends Ut{constructor(t){super(t,Gr.propertyIds);w(this,"drawOrders");this.drawOrders=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.drawOrders[t]=n}apply(t,i,n,r,o,a,c){if(c==Ri.mixOut){a==ge.setup&&Re.arrayCopy(t.slots,0,t.drawOrder,0,t.slots.length);return}if(n>2];switch(m){case 0:let g=h[p];u=h[p+1],d=h[p+2],f=h[p+3];let v=(n-g)/(h[p+4]-g);u+=(h[p+4+1]-u)*v,d+=(h[p+4+2]-d)*v,f+=(h[p+4+3]-f)*v;break;case 1:u=h[p+1],d=h[p+2],f=h[p+3];break;default:u=this.getBezierValue(n,p,1,m-2),d=this.getBezierValue(n,p,2,m+18-2),f=this.getBezierValue(n,p,3,m+36-2)}if(a==ge.setup){let g=l.data;l.mixRotate=g.mixRotate+(u-g.mixRotate)*o,l.mixX=g.mixX+(d-g.mixX)*o,l.mixY=g.mixY+(f-g.mixY)*o}else l.mixRotate+=(u-l.mixRotate)*o,l.mixX+=(d-l.mixX)*o,l.mixY+=(f-l.mixY)*o}},lo=class extends Os{constructor(t,i,n,r){super(t,i,r+"|"+n);w(this,"constraintIndex",0);this.constraintIndex=n}apply(t,i,n,r,o,a,c){let l;if(this.constraintIndex==-1){const h=n>=this.frames[0]?this.getCurveValue(n):0;for(const u of t.physicsConstraints)u.active&&this.global(u.data)&&this.set(u,this.getAbsoluteValue2(n,o,a,this.get(u),this.setup(u),h))}else l=t.physicsConstraints[this.constraintIndex],l.active&&this.set(l,this.getAbsoluteValue(n,o,a,this.get(l),this.setup(l)))}},Rb=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintInertia)}setup(e){return e.data.inertia}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}},Pb=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintStrength)}setup(e){return e.data.strength}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}},kb=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintDamping)}setup(e){return e.data.damping}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}},Fb=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintMass)}setup(e){return 1/e.data.massInverse}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}},Ob=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintWind)}setup(e){return e.data.wind}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}},Bb=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintGravity)}setup(e){return e.data.gravity}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}},Lb=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintMix)}setup(e){return e.data.mix}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}};var Hr;let Db=(Hr=class extends Ut{constructor(t,i){super(t,Hr.propertyIds);w(this,"constraintIndex");this.constraintIndex=i}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i}apply(t,i,n,r,o,a,c){let l;if(this.constraintIndex!=-1&&(l=t.physicsConstraints[this.constraintIndex],!l.active))return;const h=this.frames;if(i>n)this.apply(t,i,Number.MAX_VALUE,[],o,a,c),i=-1;else if(i>=h[h.length-1])return;if(!(n=h[Ut.search1(h,i)+1]))if(l!=null)l.reset();else for(const u of t.physicsConstraints)u.active&&u.reset()}},w(Hr,"propertyIds",[rt.physicsConstraintReset.toString()]),Hr);var Bi;let Nb=(Bi=class extends Ut{constructor(t,i,n){super(t,[rt.sequence+"|"+i+"|"+n.sequence.id]);w(this,"slotIndex");w(this,"attachment");this.slotIndex=i,this.attachment=n}getFrameEntries(){return Bi.ENTRIES}getSlotIndex(){return this.slotIndex}getAttachment(){return this.attachment}setFrame(t,i,n,r,o){let a=this.frames;t*=Bi.ENTRIES,a[t]=i,a[t+Bi.MODE]=n|r<<4,a[t+Bi.DELAY]=o}apply(t,i,n,r,o,a,c){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let h=l.attachment,u=this.attachment;if(h!=u&&(!(h instanceof Un)||h.timelineAttachment!=u))return;if(c==Ri.mixOut){a==ge.setup&&(l.sequenceIndex=-1);return}let d=this.frames;if(n>4,x=this.attachment.sequence.regions.length,y=lb[m&15];if(y!=xi.hold)switch(v+=(n-p)/g+1e-5|0,y){case xi.once:v=Math.min(x-1,v);break;case xi.loop:v%=x;break;case xi.pingpong:{let _=(x<<1)-2;v=_==0?0:v%_,v>=x&&(v=_-v);break}case xi.onceReverse:v=Math.max(x-1-v,0);break;case xi.loopReverse:v=x-1-v%x;break;case xi.pingpongReverse:{let _=(x<<1)-2;v=_==0?0:(v+x-1)%_,v>=x&&(v=_-v)}}l.sequenceIndex=v}},w(Bi,"ENTRIES",3),w(Bi,"MODE",1),w(Bi,"DELAY",2),Bi);var Rn;let pR=(Rn=class{constructor(e){w(this,"data");w(this,"tracks",new Array);w(this,"timeScale",1);w(this,"unkeyedState",0);w(this,"events",new Array);w(this,"listeners",new Array);w(this,"queue",new vR(this));w(this,"propertyIDs",new rb);w(this,"animationsChanged",!1);w(this,"trackEntryPool",new lh(()=>new gR));this.data=e}static emptyAnimation(){return Rn._emptyAnimation}update(e){e*=this.timeScale;let t=this.tracks;for(let i=0,n=t.length;i0){if(r.delay-=o,r.delay>0)continue;o=-r.delay,r.delay=0}let a=r.next;if(a){let c=r.trackLast-a.delay;if(c>=0){for(a.delay=0,a.trackTime+=r.timeScale==0?0:(c/r.timeScale+e)*a.timeScale,r.trackTime+=o,this.setCurrent(i,a,!0);a.mixingFrom;)a.mixTime+=e,a=a.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[i]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let c=r.mixingFrom;for(r.mixingFrom=null,c&&(c.mixingTo=null);c;)this.queue.end(c),c=c.mixingFrom}r.trackTime+=o}this.queue.drain()}updateMixingFrom(e,t){let i=e.mixingFrom;if(!i)return!0;let n=this.updateMixingFrom(i,t);return i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast,e.nextTrackLast!=-1&&e.mixTime>=e.mixDuration?((i.totalAlpha==0||e.mixDuration==0)&&(e.mixingFrom=i.mixingFrom,i.mixingFrom!=null&&(i.mixingFrom.mixingTo=e),e.interruptAlpha=i.interruptAlpha,this.queue.end(i)),n):(i.trackTime+=t*i.timeScale,e.mixTime+=t,!1)}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();let t=this.events,i=this.tracks,n=!1;for(let d=0,f=i.length;d0)continue;n=!0;let m=d==0?ge.first:p.mixBlend,g=p.alpha;p.mixingFrom?g*=this.applyMixingFrom(p,e,m):p.trackTime>=p.trackEnd&&!p.next&&(g=0);let v=g>=p.alphaAttachmentThreshold,x=p.animationLast,y=p.getAnimationTime(),_=y,C=t;p.reverse&&(_=p.animation.duration-_,C=null);let S=p.animation.timelines,b=S.length;if(d==0&&g==1||m==ge.add){d==0&&(v=!0);for(let M=0;M1&&(r=1),i!=ge.first&&(i=n.mixBlend));let o=r=n.alphaAttachmentThreshold):(a&&C instanceof Va&&b==ge.setup&&(S=Ri.mixIn),C.apply(t,d,p,m,M,b,S))}}return e.mixDuration>0&&this.queueEvents(n,f),this.events.length=0,n.nextAnimationLast=f,n.nextTrackLast=n.trackTime,r}applyAttachmentTimeline(e,t,i,n,r){var o=t.slots[e.slotIndex];o.bone.active&&(i=0,y=m>=0;Math.abs(g)<=90&&Ie.signum(g)!=Ie.signum(p)&&(Math.abs(m-v)>180?(f+=360*Ie.signum(m),y=x):v!=0?f-=360*Ie.signum(m):y=x),y!=x&&(f+=360*Ie.signum(m)),o[a]=f}o[a+1]=p,l.rotation=u+f*n}queueEvents(e,t){let i=e.animationStart,n=e.animationEnd,r=n-i,o=e.trackLast%r,a=this.events,c=0,l=a.length;for(;cn||this.queue.event(e,u)}let h=!1;if(e.loop)if(r==0)h=!0;else{const u=Math.floor(e.trackTime/r);h=u>0&&u>Math.floor(e.trackLast/r)}else h=t>=n&&e.animationLast=this.tracks.length)return;let t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let i=t;for(;;){let n=i.mixingFrom;if(!n)break;this.queue.end(n),i.mixingFrom=null,i.mixingTo=null,i=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setCurrent(e,t,i){let n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(i&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.mixingFrom&&n.mixDuration>0&&(t.interruptAlpha*=Math.min(1,n.mixTime/n.mixDuration)),n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,i=!1){let n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error("Animation not found: "+t);return this.setAnimationWith(e,n,i)}setAnimationWith(e,t,i=!1){if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast==-1?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));let o=this.trackEntry(e,t,i,r);return this.setCurrent(e,o,n),this.queue.drain(),o}addAnimation(e,t,i=!1,n=0){let r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error("Animation not found: "+t);return this.addAnimationWith(e,r,i,n)}addAnimationWith(e,t,i=!1,n=0){if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;let o=this.trackEntry(e,t,i,r);return r?(r.next=o,o.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-o.mixDuration,0))):(this.setCurrent(e,o,!0),this.queue.drain(),n<0&&(n=0)),o.delay=n,o}setEmptyAnimation(e,t=0){let i=this.setAnimationWith(e,Rn.emptyAnimation(),!1);return i.mixDuration=t,i.trackEnd=t,i}addEmptyAnimation(e,t=0,i=0){let n=this.addAnimationWith(e,Rn.emptyAnimation(),!1,i);return i<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){let t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let i=0,n=this.tracks.length;i0){r[c]=yR,o[c]=u;continue e}break}r[c]=Jd}}}getCurrent(e){return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}},w(Rn,"_emptyAnimation",new lp("",[],0)),Rn),gR=class{constructor(){w(this,"animation",null);w(this,"previous",null);w(this,"next",null);w(this,"mixingFrom",null);w(this,"mixingTo",null);w(this,"listener",null);w(this,"trackIndex",0);w(this,"loop",!1);w(this,"holdPrevious",!1);w(this,"reverse",!1);w(this,"shortestRotation",!1);w(this,"eventThreshold",0);w(this,"mixAttachmentThreshold",0);w(this,"alphaAttachmentThreshold",0);w(this,"mixDrawOrderThreshold",0);w(this,"animationStart",0);w(this,"animationEnd",0);w(this,"animationLast",0);w(this,"nextAnimationLast",0);w(this,"delay",0);w(this,"trackTime",0);w(this,"trackLast",0);w(this,"nextTrackLast",0);w(this,"trackEnd",0);w(this,"timeScale",0);w(this,"alpha",0);w(this,"mixTime",0);w(this,"_mixDuration",0);w(this,"interruptAlpha",0);w(this,"totalAlpha",0);w(this,"mixBlend",ge.replace);w(this,"timelineMode",new Array);w(this,"timelineHoldMix",new Array);w(this,"timelinesRotation",new Array)}get mixDuration(){return this._mixDuration}set mixDuration(e){this._mixDuration=e}setMixDurationWithDelay(e,t){this._mixDuration=e,t<=0&&(this.previous!=null?t=Math.max(t+this.previous.getTrackComplete()-e,0):t=0),this.delay=t}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(this.loop){let e=this.animationEnd-this.animationStart;return e==0?this.animationStart:this.trackTime%e+this.animationStart}return Math.min(this.trackTime+this.animationStart,this.animationEnd)}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){let e=this.animationEnd-this.animationStart;if(e!=0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}},vR=class{constructor(e){w(this,"objects",[]);w(this,"drainDisabled",!1);w(this,"animState");this.animState=e}start(e){this.objects.push(Hi.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(Hi.interrupt),this.objects.push(e)}end(e){this.objects.push(Hi.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(Hi.dispose),this.objects.push(e)}complete(e){this.objects.push(Hi.complete),this.objects.push(e)}event(e,t){this.objects.push(Hi.event),this.objects.push(e),this.objects.push(t)}drain(){if(this.drainDisabled)return;this.drainDisabled=!0;let e=this.objects;for(let t=0;t{h.width=parseInt(i[1]),h.height=parseInt(i[2])},n.format=()=>{},n.filter=h=>{h.minFilter=Re.enumValue(ui,i[1]),h.magFilter=Re.enumValue(ui,i[2])},n.repeat=h=>{i[1].indexOf("x")!=-1&&(h.uWrap=Fn.Repeat),i[1].indexOf("y")!=-1&&(h.vWrap=Fn.Repeat)},n.pma=h=>{h.pma=i[1]=="true"};var r={};r.xy=h=>{h.x=parseInt(i[1]),h.y=parseInt(i[2])},r.size=h=>{h.width=parseInt(i[1]),h.height=parseInt(i[2])},r.bounds=h=>{h.x=parseInt(i[1]),h.y=parseInt(i[2]),h.width=parseInt(i[3]),h.height=parseInt(i[4])},r.offset=h=>{h.offsetX=parseInt(i[1]),h.offsetY=parseInt(i[2])},r.orig=h=>{h.originalWidth=parseInt(i[1]),h.originalHeight=parseInt(i[2])},r.offsets=h=>{h.offsetX=parseInt(i[1]),h.offsetY=parseInt(i[2]),h.originalWidth=parseInt(i[3]),h.originalHeight=parseInt(i[4])},r.rotate=h=>{let u=i[1];u=="true"?h.degrees=90:u!="false"&&(h.degrees=parseInt(u))},r.index=h=>{h.index=parseInt(i[1])};let o=t.readLine();for(;o&&o.trim().length==0;)o=t.readLine();for(;!(!o||o.trim().length==0||t.readEntry(i,o)==0);)o=t.readLine();let a=null,c=null,l=null;for(;o!==null;)if(o.trim().length==0)a=null,o=t.readLine();else if(a){let h=new Yb(a,o);for(;;){let u=t.readEntry(i,o=t.readLine());if(u==0)break;let d=r[i[0]];if(d)d(h);else{c||(c=[]),l||(l=[]),c.push(i[0]);let f=[];for(let p=0;p0&&l&&l.length>0&&(h.names=c,h.values=l,c=null,l=null),h.u=h.x/a.width,h.v=h.y/a.height,h.degrees==90?(h.u2=(h.x+h.height)/a.width,h.v2=(h.y+h.width)/a.height):(h.u2=(h.x+h.width)/a.width,h.v2=(h.y+h.height)/a.height),this.regions.push(h)}else{for(a=new TR(o.trim());t.readEntry(i,o=t.readLine())!=0;){let h=n[i[0]];h&&h(a)}this.pages.push(a)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length==0))return 0;let i=t.indexOf(":");if(i==-1)return 0;e[0]=t.substr(0,i).trim();for(let n=1,r=i+1;;n++){let o=t.indexOf(",",r);if(o==-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,o-r).trim(),r=o+1,n==4)return 4}}},TR=class{constructor(e){w(this,"name");w(this,"minFilter",ui.Nearest);w(this,"magFilter",ui.Nearest);w(this,"uWrap",Fn.ClampToEdge);w(this,"vWrap",Fn.ClampToEdge);w(this,"texture",null);w(this,"width",0);w(this,"height",0);w(this,"pma",!1);w(this,"regions",new Array);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(let t of this.regions)t.texture=e}},Yb=class extends SR{constructor(t,i){super();w(this,"page");w(this,"name");w(this,"x",0);w(this,"y",0);w(this,"offsetX",0);w(this,"offsetY",0);w(this,"originalWidth",0);w(this,"originalHeight",0);w(this,"index",0);w(this,"degrees",0);w(this,"names",null);w(this,"values",null);this.page=t,this.name=i,t.regions.push(this)}},Sl=class nm extends Un{constructor(t,i){super(t);w(this,"region",null);w(this,"path");w(this,"regionUVs",[]);w(this,"uvs",[]);w(this,"triangles",[]);w(this,"color",new st(1,1,1,1));w(this,"width",0);w(this,"height",0);w(this,"hullLength",0);w(this,"edges",[]);w(this,"parentMesh",null);w(this,"sequence",null);w(this,"tempColor",new st(0,0,0,0));this.path=i}updateRegion(){if(!this.region)throw new Error("Region not set.");let t=this.regionUVs;(!this.uvs||this.uvs.length!=t.length)&&(this.uvs=Re.newFloatArray(t.length));let i=this.uvs,n=this.uvs.length,r=this.region.u,o=this.region.v,a=0,c=0;if(this.region instanceof Yb){let l=this.region,h=l.page,u=h.width,d=h.height;switch(l.degrees){case 90:r-=(l.originalHeight-l.offsetY-l.height)/u,o-=(l.originalWidth-l.offsetX-l.width)/d,a=l.originalHeight/u,c=l.originalWidth/d;for(let f=0;f= 0.");if(!t)throw new Error("name cannot be null.");this.index=e,this.name=t,this.parent=i}};var Gt;(function(s){s[s.Normal=0]="Normal",s[s.OnlyTranslation=1]="OnlyTranslation",s[s.NoRotationOrReflection=2]="NoRotationOrReflection",s[s.NoScale=3]="NoScale",s[s.NoScaleOrReflection=4]="NoScaleOrReflection"})(Gt||(Gt={}));let Mv=class{constructor(e,t,i){w(this,"data");w(this,"skeleton");w(this,"parent",null);w(this,"children",new Array);w(this,"x",0);w(this,"y",0);w(this,"rotation",0);w(this,"scaleX",0);w(this,"scaleY",0);w(this,"shearX",0);w(this,"shearY",0);w(this,"ax",0);w(this,"ay",0);w(this,"arotation",0);w(this,"ascaleX",0);w(this,"ascaleY",0);w(this,"ashearX",0);w(this,"ashearY",0);w(this,"a",0);w(this,"b",0);w(this,"c",0);w(this,"d",0);w(this,"worldY",0);w(this,"worldX",0);w(this,"inherit",Gt.Normal);w(this,"sorted",!1);w(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.skeleton=t,this.parent=i,this.setToSetupPose()}isActive(){return this.active}update(e){this.updateWorldTransformWith(this.ax,this.ay,this.arotation,this.ascaleX,this.ascaleY,this.ashearX,this.ashearY)}updateWorldTransform(){this.updateWorldTransformWith(this.x,this.y,this.rotation,this.scaleX,this.scaleY,this.shearX,this.shearY)}updateWorldTransformWith(e,t,i,n,r,o,a){this.ax=e,this.ay=t,this.arotation=i,this.ascaleX=n,this.ascaleY=r,this.ashearX=o,this.ashearY=a;let c=this.parent;if(!c){let f=this.skeleton;const p=f.scaleX,m=f.scaleY,g=(i+o)*Ie.degRad,v=(i+90+a)*Ie.degRad;this.a=Math.cos(g)*n*p,this.b=Math.cos(v)*r*p,this.c=Math.sin(g)*n*m,this.d=Math.sin(v)*r*m,this.worldX=e*p+f.x,this.worldY=t*m+f.y;return}let l=c.a,h=c.b,u=c.c,d=c.d;switch(this.worldX=l*e+h*t+c.worldX,this.worldY=u*e+d*t+c.worldY,this.inherit){case Gt.Normal:{const f=(i+o)*Ie.degRad,p=(i+90+a)*Ie.degRad,m=Math.cos(f)*n,g=Math.cos(p)*r,v=Math.sin(f)*n,x=Math.sin(p)*r;this.a=l*m+h*v,this.b=l*g+h*x,this.c=u*m+d*v,this.d=u*g+d*x;return}case Gt.OnlyTranslation:{const f=(i+o)*Ie.degRad,p=(i+90+a)*Ie.degRad;this.a=Math.cos(f)*n,this.b=Math.cos(p)*r,this.c=Math.sin(f)*n,this.d=Math.sin(p)*r;break}case Gt.NoRotationOrReflection:{let f=1/this.skeleton.scaleX,p=1/this.skeleton.scaleY;l*=f,u*=p;let m=l*l+u*u,g=0;m>1e-4?(m=Math.abs(l*d*p-h*f*u)/m,h=u*m,d=l*m,g=Math.atan2(u,l)*Ie.radDeg):(l=0,u=0,g=90-Math.atan2(d,h)*Ie.radDeg);const v=(i+o-g)*Ie.degRad,x=(i+a-g+90)*Ie.degRad,y=Math.cos(v)*n,_=Math.cos(x)*r,C=Math.sin(v)*n,S=Math.sin(x)*r;this.a=l*y-h*C,this.b=l*_-h*S,this.c=u*y+d*C,this.d=u*_+d*S;break}case Gt.NoScale:case Gt.NoScaleOrReflection:{i*=Ie.degRad;const f=Math.cos(i),p=Math.sin(i);let m=(l*f+h*p)/this.skeleton.scaleX,g=(u*f+d*p)/this.skeleton.scaleY,v=Math.sqrt(m*m+g*g);v>1e-5&&(v=1/v),m*=v,g*=v,v=Math.sqrt(m*m+g*g),this.inherit==Gt.NoScale&&l*d-h*u<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(v=-v),i=Math.PI/2+Math.atan2(g,m);const x=Math.cos(i)*v,y=Math.sin(i)*v;o*=Ie.degRad,a=(90+a)*Ie.degRad;const _=Math.cos(o)*n,C=Math.cos(a)*r,S=Math.sin(o)*n,b=Math.sin(a)*r;this.a=m*_+x*S,this.b=m*C+x*b,this.c=g*_+y*S,this.d=g*C+y*b;break}}this.a*=this.skeleton.scaleX,this.b*=this.skeleton.scaleX,this.c*=this.skeleton.scaleY,this.d*=this.skeleton.scaleY}setToSetupPose(){let e=this.data;this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}updateAppliedTransform(){let e=this.parent;if(!e){this.ax=this.worldX-this.skeleton.x,this.ay=this.worldY-this.skeleton.y,this.arotation=Math.atan2(this.c,this.a)*Ie.radDeg,this.ascaleX=Math.sqrt(this.a*this.a+this.c*this.c),this.ascaleY=Math.sqrt(this.b*this.b+this.d*this.d),this.ashearX=0,this.ashearY=Math.atan2(this.a*this.b+this.c*this.d,this.a*this.d-this.b*this.c)*Ie.radDeg;return}let t=e.a,i=e.b,n=e.c,r=e.d,o=1/(t*r-i*n),a=r*o,c=i*o,l=n*o,h=t*o,u=this.worldX-e.worldX,d=this.worldY-e.worldY;this.ax=u*a-d*c,this.ay=d*h-u*l;let f,p,m,g;if(this.inherit==Gt.OnlyTranslation)f=this.a,p=this.b,m=this.c,g=this.d;else{switch(this.inherit){case Gt.NoRotationOrReflection:{let C=Math.abs(t*r-i*n)/(t*t+n*n);i=-n*this.skeleton.scaleX*C/this.skeleton.scaleY,r=t*this.skeleton.scaleY*C/this.skeleton.scaleX,o=1/(t*r-i*n),a=r*o,c=i*o;break}case Gt.NoScale:case Gt.NoScaleOrReflection:let v=Ie.cosDeg(this.rotation),x=Ie.sinDeg(this.rotation);t=(t*v+i*x)/this.skeleton.scaleX,n=(n*v+r*x)/this.skeleton.scaleY;let y=Math.sqrt(t*t+n*n);y>1e-5&&(y=1/y),t*=y,n*=y,y=Math.sqrt(t*t+n*n),this.inherit==Gt.NoScale&&o<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(y=-y);let _=Ie.PI/2+Math.atan2(n,t);i=Math.cos(_)*y,r=Math.sin(_)*y,o=1/(t*r-i*n),a=r*o,c=i*o,l=n*o,h=t*o}f=a*this.a-c*this.c,p=a*this.b-c*this.d,m=h*this.c-l*this.a,g=h*this.d-l*this.b}if(this.ashearX=0,this.ascaleX=Math.sqrt(f*f+m*m),this.ascaleX>1e-4){let v=f*g-p*m;this.ascaleY=v/this.ascaleX,this.ashearY=-Math.atan2(f*p+m*g,v)*Ie.radDeg,this.arotation=Math.atan2(m,f)*Ie.radDeg}else this.ascaleX=0,this.ascaleY=Math.sqrt(p*p+g*g),this.ashearY=0,this.arotation=90-Math.atan2(g,p)*Ie.radDeg}getWorldRotationX(){return Math.atan2(this.c,this.a)*Ie.radDeg}getWorldRotationY(){return Math.atan2(this.d,this.b)*Ie.radDeg}getWorldScaleX(){return Math.sqrt(this.a*this.a+this.c*this.c)}getWorldScaleY(){return Math.sqrt(this.b*this.b+this.d*this.d)}worldToLocal(e){let t=1/(this.a*this.d-this.b*this.c),i=e.x-this.worldX,n=e.y-this.worldY;return e.x=i*this.d*t-n*this.b*t,e.y=n*this.a*t-i*this.c*t,e}localToWorld(e){let t=e.x,i=e.y;return e.x=t*this.a+i*this.b+this.worldX,e.y=t*this.c+i*this.d+this.worldY,e}worldToParent(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.worldToLocal(e)}parentToWorld(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.localToWorld(e)}worldToLocalRotation(e){let t=Ie.sinDeg(e),i=Ie.cosDeg(e);return Math.atan2(this.a*t-this.c*i,this.d*i-this.b*t)*Ie.radDeg+this.rotation-this.shearX}localToWorldRotation(e){e-=this.rotation-this.shearX;let t=Ie.sinDeg(e),i=Ie.cosDeg(e);return Math.atan2(i*this.c+t*this.d,i*this.a+t*this.b)*Ie.radDeg}rotateWorld(e){e*=Ie.degRad;const t=Math.sin(e),i=Math.cos(e),n=this.a,r=this.b;this.a=i*n-t*this.c,this.b=i*r-t*this.d,this.c=t*n+i*this.c,this.d=t*r+i*this.d}},ou=class{constructor(e,t,i){w(this,"name");w(this,"order");w(this,"skinRequired");this.name=e,this.order=t,this.skinRequired=i}},zb=class{constructor(e,t){w(this,"data");w(this,"intValue",0);w(this,"floatValue",0);w(this,"stringValue",null);w(this,"time",0);w(this,"volume",0);w(this,"balance",0);if(!t)throw new Error("data cannot be null.");this.time=e,this.data=t}},qb=class{constructor(e){w(this,"name");w(this,"intValue",0);w(this,"floatValue",0);w(this,"stringValue",null);w(this,"audioPath",null);w(this,"volume",0);w(this,"balance",0);this.name=e}},MR=class{constructor(e,t){w(this,"data");w(this,"bones");w(this,"target");w(this,"bendDirection",0);w(this,"compress",!1);w(this,"stretch",!1);w(this,"mix",1);w(this,"softness",0);w(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n180?f-=360:f<-180&&(f+=360);let g=e.ascaleX,v=e.ascaleY;if(n||r){switch(e.inherit){case Gt.NoScale:case Gt.NoScaleOrReflection:p=t-e.worldX,m=i-e.worldY}const x=e.data.length*g;if(x>1e-4){const y=p*p+m*m;if(n&&yx*x){const _=(Math.sqrt(y)/x-1)*a+1;g*=_,o&&(v*=_)}}}e.updateWorldTransformWith(e.ax,e.ay,e.arotation+f*a,g,v,e.ashearX,e.ashearY)}apply2(e,t,i,n,r,o,a,c,l){if(e.inherit!=Gt.Normal||t.inherit!=Gt.Normal)return;let h=e.ax,u=e.ay,d=e.ascaleX,f=e.ascaleY,p=d,m=f,g=t.ascaleX,v=0,x=0,y=0;d<0?(d=-d,v=180,y=-1):(v=0,y=1),f<0&&(f=-f,y=-y),g<0?(g=-g,x=180):x=0;let _=t.ax,C=0,S=0,b=0,M=e.a,I=e.b,F=e.c,E=e.d,k=Math.abs(d-f)<=1e-4;!k||o?(C=0,S=M*_+e.worldX,b=F*_+e.worldY):(C=t.ay,S=M*_+I*C+e.worldX,b=F*_+E*C+e.worldY);let O=e.parent;if(!O)throw new Error("IK parent must itself have a parent.");M=O.a,I=O.b,F=O.c,E=O.d;let D=M*E-I*F,$=S-O.worldX,N=b-O.worldY;D=Math.abs(D)<=1e-4?0:1/D;let U=($*E-N*I)*D-h,A=(N*M-$*F)*D-u,P=Math.sqrt(U*U+A*A),L=t.data.length*g,B,X;if(P<1e-4){this.apply1(e,i,n,!1,o,!1,l),t.updateWorldTransformWith(_,C,0,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY);return}$=i-O.worldX,N=n-O.worldY;let V=($*E-N*I)*D-h,q=(N*M-$*F)*D-u,W=V*V+q*q;if(c!=0){c*=d*(g+1)*.5;let le=Math.sqrt(W),ue=le-P-L*d+c;if(ue>0){let ae=Math.min(1,ue/(c*2))-1;ae=(ue-c*(1-ae*ae))/le,V-=ae*V,q-=ae*q,W=V*V+q*q}}e:if(k){L*=d;let le=(W-P*P-L*L)/(2*P*L);le<-1?(le=-1,X=Math.PI*r):le>1?(le=1,X=0,o&&(M=(Math.sqrt(W)/(P+L)-1)*l+1,p*=M,a&&(m*=M))):X=Math.acos(le)*r,M=P+L*le,I=L*Math.sin(X),B=Math.atan2(q*M-V*I,V*M+q*I)}else{M=d*L,I=f*L;let le=M*M,ue=I*I,ae=Math.atan2(q,V);F=ue*P*P+le*W-le*ue;let xe=-2*ue*P,Y=ue-le;if(E=xe*xe-4*Y*F,E>=0){let ce=Math.sqrt(E);xe<0&&(ce=-ce),ce=-(xe+ce)*.5;let Ce=ce/Y,ye=F/ce,we=Math.abs(Ce)=0){N=Math.sqrt(Ce)*r,B=ae-Math.atan2(N,we),X=Math.atan2(N/f,(we-P)/d);break e}}let j=Ie.PI,H=P-M,G=H*H,z=0,ie=0,fe=P+M,te=fe*fe,oe=0;F=-M*P/(le-ue),F>=-1&&F<=1&&(F=Math.acos(F),$=M*Math.cos(F)+P,N=I*Math.sin(F),E=$*$+N*N,Ete&&(ie=F,te=E,fe=$,oe=N)),W<=(G+te)*.5?(B=ae-Math.atan2(z*r,H),X=j*r):(B=ae-Math.atan2(oe*r,fe),X=ie*r)}let ne=Math.atan2(C,_)*y,re=e.arotation;B=(B-ne)*Ie.radDeg+v-re,B>180?B-=360:B<-180&&(B+=360),e.updateWorldTransformWith(h,u,re+B*l,p,m,0,0),re=t.arotation,X=((X+ne)*Ie.radDeg-t.ashearX)*y+x-re,X>180?X-=360:X<-180&&(X+=360),t.updateWorldTransformWith(_,C,re+X*l,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY)}},Kb=class extends ou{constructor(t){super(t,0,!1);w(this,"bones",new Array);w(this,"_target",null);w(this,"bendDirection",0);w(this,"compress",!1);w(this,"stretch",!1);w(this,"uniform",!1);w(this,"mix",0);w(this,"softness",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},Zb=class extends ou{constructor(t){super(t,0,!1);w(this,"bones",new Array);w(this,"_target",null);w(this,"positionMode",rn.Fixed);w(this,"spacingMode",li.Fixed);w(this,"rotateMode",Jr.Chain);w(this,"offsetRotation",0);w(this,"position",0);w(this,"spacing",0);w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("SlotData not set.")}};var rn;(function(s){s[s.Fixed=0]="Fixed",s[s.Percent=1]="Percent"})(rn||(rn={}));var li;(function(s){s[s.Length=0]="Length",s[s.Fixed=1]="Fixed",s[s.Percent=2]="Percent",s[s.Proportional=3]="Proportional"})(li||(li={}));var Jr;(function(s){s[s.Tangent=0]="Tangent",s[s.Chain=1]="Chain",s[s.ChainScale=2]="ChainScale"})(Jr||(Jr={}));var Ei;let CR=(Ei=class{constructor(e,t){w(this,"data");w(this,"bones");w(this,"target");w(this,"position",0);w(this,"spacing",0);w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0);w(this,"spaces",new Array);w(this,"positions",new Array);w(this,"world",new Array);w(this,"curves",new Array);w(this,"lengths",new Array);w(this,"segments",new Array);w(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0,r=e.bones.length;n0){_=u/_*p;for(let S=1;S0?Ie.degRad:-.01745329277777778}for(let _=0,C=3;_0){let E=S.a,k=S.b,O=S.c,D=S.d,$=0,N=0,U=0;if(a?$=m[C-1]:d[_+1]==0?$=m[C+2]:$=Math.atan2(F,I),$-=Math.atan2(O,E),y){N=Math.cos($),U=Math.sin($);let A=S.data.length;g+=(A*(N*E-U*O)-I)*i,v+=(A*(U*E+N*O)-F)*i}else $+=x;$>Ie.PI?$-=Ie.PI2:$<-3.1415927&&($+=Ie.PI2),$*=i,N=Math.cos($),U=Math.sin($),S.a=N*E-U*O,S.b=N*k-U*D,S.c=U*E+N*O,S.d=U*k+N*D}S.updateAppliedTransform()}}computeWorldPositions(e,t,i){let n=this.target,r=this.position,o=this.spaces,a=Re.setArraySize(this.positions,t*3+2),c=this.world,l=e.closed,h=e.worldVerticesLength,u=h/6,d=Ei.NONE;if(!e.constantSpeed){let A=e.lengths;u-=l?1:2;let P=A[u];this.data.positionMode==rn.Percent&&(r*=P);let L;switch(this.data.spacingMode){case li.Percent:L=P;break;case li.Proportional:L=P/t;break;default:L=1}c=Re.setArraySize(this.world,8);for(let B=0,X=0,V=0;BP){d!=Ei.AFTER&&(d=Ei.AFTER,e.computeWorldVertices(n,h-6,4,c,0,2)),this.addAfterPosition(W-P,c,0,a,X);continue}for(;;V++){let ne=A[V];if(!(W>ne)){if(V==0)W/=ne;else{let re=A[V-1];W=(W-re)/(ne-re)}break}}V!=d&&(d=V,l&&V==u?(e.computeWorldVertices(n,h-4,4,c,0,2),e.computeWorldVertices(n,0,4,c,4,2)):e.computeWorldVertices(n,V*6+2,8,c,0,2)),this.addCurvePosition(W,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],a,X,i||B>0&&q==0)}return a}l?(h+=2,c=Re.setArraySize(this.world,h),e.computeWorldVertices(n,2,h-4,c,0,2),e.computeWorldVertices(n,0,2,c,h-4,2),c[h-2]=c[0],c[h-1]=c[1]):(u--,h-=4,c=Re.setArraySize(this.world,h),e.computeWorldVertices(n,2,h,c,0,2));let f=Re.setArraySize(this.curves,u),p=0,m=c[0],g=c[1],v=0,x=0,y=0,_=0,C=0,S=0,b=0,M=0,I=0,F=0,E=0,k=0,O=0,D=0;for(let A=0,P=2;Ap){this.addAfterPosition(V-p,c,h-4,a,P);continue}for(;;L++){let q=f[L];if(!(V>q)){if(L==0)V/=q;else{let W=f[L-1];V=(V-W)/(q-W)}break}}if(L!=d){d=L;let q=L*6;for(m=c[q],g=c[q+1],v=c[q+2],x=c[q+3],y=c[q+4],_=c[q+5],C=c[q+6],S=c[q+7],b=(m-v*2+y)*.03,M=(g-x*2+_)*.03,I=((v-y)*3-m+C)*.006,F=((x-_)*3-g+S)*.006,E=b*2+I,k=M*2+F,O=(v-m)*.3+b+I*.16666667,D=(x-g)*.3+M+F*.16666667,U=Math.sqrt(O*O+D*D),N[0]=U,q=1;q<8;q++)O+=E,D+=k,E+=I,k+=F,U+=Math.sqrt(O*O+D*D),N[q]=U;O+=E,D+=k,U+=Math.sqrt(O*O+D*D),N[8]=U,O+=E+I,D+=k+F,U+=Math.sqrt(O*O+D*D),N[9]=U,B=0}for(V*=U;;B++){let q=N[B];if(!(V>q)){if(B==0)V/=q;else{let W=N[B-1];V=B+(V-W)/(q-W)}break}}this.addCurvePosition(V*.1,m,g,v,x,y,_,C,S,a,P,i||A>0&&X==0)}return a}addBeforePosition(e,t,i,n,r){let o=t[i],a=t[i+1],c=t[i+2]-o,l=t[i+3]-a,h=Math.atan2(l,c);n[r]=o+e*Math.cos(h),n[r+1]=a+e*Math.sin(h),n[r+2]=h}addAfterPosition(e,t,i,n,r){let o=t[i+2],a=t[i+3],c=o-t[i],l=a-t[i+1],h=Math.atan2(l,c);n[r]=o+e*Math.cos(h),n[r+1]=a+e*Math.sin(h),n[r+2]=h}addCurvePosition(e,t,i,n,r,o,a,c,l,h,u,d){if(e==0||isNaN(e)){h[u]=t,h[u+1]=i,h[u+2]=Math.atan2(r-i,n-t);return}let f=e*e,p=f*e,m=1-e,g=m*m,v=g*m,x=m*e,y=x*3,_=m*y,C=y*e,S=t*v+n*_+o*C+c*p,b=i*v+r*_+a*C+l*p;h[u]=S,h[u+1]=b,d&&(e<.001?h[u+2]=Math.atan2(r-i,n-t):h[u+2]=Math.atan2(b-(i*g+r*x*2+a*f),S-(t*g+n*x*2+o*f)))}},w(Ei,"NONE",-1),w(Ei,"BEFORE",-2),w(Ei,"AFTER",-3),w(Ei,"epsilon",1e-5),Ei),AR=class{constructor(e,t){w(this,"data");w(this,"_bone",null);w(this,"inertia",0);w(this,"strength",0);w(this,"damping",0);w(this,"massInverse",0);w(this,"wind",0);w(this,"gravity",0);w(this,"mix",0);w(this,"_reset",!0);w(this,"ux",0);w(this,"uy",0);w(this,"cx",0);w(this,"cy",0);w(this,"tx",0);w(this,"ty",0);w(this,"xOffset",0);w(this,"xVelocity",0);w(this,"yOffset",0);w(this,"yVelocity",0);w(this,"rotateOffset",0);w(this,"rotateVelocity",0);w(this,"scaleOffset",0);w(this,"scaleVelocity",0);w(this,"active",!1);w(this,"skeleton");w(this,"remaining",0);w(this,"lastTime",0);this.data=e,this.skeleton=t,this.bone=t.bones[e.bone.index],this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}set bone(e){this._bone=e}get bone(){if(this._bone)return this._bone;throw new Error("Bone not set.")}reset(){this.remaining=0,this.lastTime=this.skeleton.time,this._reset=!0,this.xOffset=0,this.xVelocity=0,this.yOffset=0,this.yVelocity=0,this.rotateOffset=0,this.rotateVelocity=0,this.scaleOffset=0,this.scaleVelocity=0}setToSetupPose(){const e=this.data;this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}isActive(){return this.active}update(e){const t=this.mix;if(t==0)return;const i=this.data.x>0,n=this.data.y>0,r=this.data.rotate>0||this.data.shearX>0,o=this.data.scaleX>0,a=this.bone,c=a.data.length;switch(e){case ir.none:return;case ir.reset:this.reset();case ir.update:const l=this.skeleton,h=Math.max(this.skeleton.time-this.lastTime,0);this.remaining+=h,this.lastTime=l.time;const u=a.worldX,d=a.worldY;if(this._reset)this._reset=!1,this.ux=u,this.uy=d;else{let f=this.remaining,p=this.inertia,m=this.data.step,g=this.skeleton.data.referenceScale,v=-1,x=this.data.limit*h,y=x*Math.abs(l.scaleY);if(x*=Math.abs(l.scaleX),i||n){if(i){const _=(this.ux-u)*p;this.xOffset+=_>x?x:_<-x?-x:_,this.ux=u}if(n){const _=(this.uy-d)*p;this.yOffset+=_>y?y:_<-y?-y:_,this.uy=d}if(f>=m){v=Math.pow(this.damping,60*m);const _=this.massInverse*m,C=this.strength,S=this.wind*g*l.scaleX,b=this.gravity*g*l.scaleY;do i&&(this.xVelocity+=(S-this.xOffset*C)*_,this.xOffset+=this.xVelocity*m,this.xVelocity*=v),n&&(this.yVelocity-=(b+this.yOffset*C)*_,this.yOffset+=this.yVelocity*m,this.yVelocity*=v),f-=m;while(f>=m)}i&&(a.worldX+=this.xOffset*t*this.data.x),n&&(a.worldY+=this.yOffset*t*this.data.y)}if(r||o){let _=Math.atan2(a.c,a.a),C=0,S=0,b=0,M=this.cx-a.worldX,I=this.cy-a.worldY;if(M>x?M=x:M<-x&&(M=-x),I>y?I=y:I<-y&&(I=-y),r){b=(this.data.rotate+this.data.shearX)*t;let F=Math.atan2(I+this.ty,M+this.tx)-_-this.rotateOffset*b;this.rotateOffset+=(F-Math.ceil(F*Ie.invPI2-.5)*Ie.PI2)*p,F=this.rotateOffset*b+_,C=Math.cos(F),S=Math.sin(F),o&&(F=c*a.getWorldScaleX(),F>0&&(this.scaleOffset+=(M*C+I*S)*p/F))}else{C=Math.cos(_),S=Math.sin(_);const F=c*a.getWorldScaleX();F>0&&(this.scaleOffset+=(M*C+I*S)*p/F)}if(f=this.remaining,f>=m){v==-1&&(v=Math.pow(this.damping,60*m));const F=this.massInverse*m,E=this.strength,k=this.wind,O=up.yDown?-this.gravity:this.gravity,D=c/g;for(;;)if(f-=m,o&&(this.scaleVelocity+=(k*C-O*S-this.scaleOffset*E)*F,this.scaleOffset+=this.scaleVelocity*m,this.scaleVelocity*=v),r){if(this.rotateVelocity-=((k*S+O*C)*D+this.rotateOffset*E)*F,this.rotateOffset+=this.rotateVelocity*m,this.rotateVelocity*=v,f0){let f=0;this.data.rotate>0&&(f=l*this.data.rotate,h=Math.sin(f),u=Math.cos(f),d=a.b,a.b=u*d-h*a.d,a.d=h*d+u*a.d),f+=l*this.data.shearX,h=Math.sin(f),u=Math.cos(f),d=a.a,a.a=u*d-h*a.c,a.c=h*d+u*a.c}else l*=this.data.rotate,h=Math.sin(l),u=Math.cos(l),d=a.a,a.a=u*d-h*a.c,a.c=h*d+u*a.c,d=a.b,a.b=u*d-h*a.d,a.d=h*d+u*a.d}if(o){const l=1+this.scaleOffset*t*this.data.scaleX;a.a*=l,a.c*=l}e!=ir.pose&&(this.tx=c*a.a,this.ty=c*a.c),a.updateAppliedTransform()}translate(e,t){this.ux-=e,this.uy-=t,this.cx-=e,this.cy-=t}rotate(e,t,i){const n=i*Ie.degRad,r=Math.cos(n),o=Math.sin(n),a=this.cx-e,c=this.cy-t;this.translate(a*r-c*o-a,a*o+c*r-c)}},ER=class{constructor(e,t){w(this,"data");w(this,"bone");w(this,"color");w(this,"darkColor",null);w(this,"attachment",null);w(this,"attachmentState",0);w(this,"sequenceIndex",-1);w(this,"deform",new Array);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("bone cannot be null.");this.data=e,this.bone=t,this.color=new st,this.darkColor=e.darkColor?new st:null,this.setToSetupPose()}getSkeleton(){return this.bone.skeleton}getAttachment(){return this.attachment}setAttachment(e){this.attachment!=e&&((!(e instanceof Un)||!(this.attachment instanceof Un)||e.timelineAttachment!=this.attachment.timelineAttachment)&&(this.deform.length=0),this.attachment=e,this.sequenceIndex=-1)}setToSetupPose(){this.color.setFromColor(this.data.color),this.darkColor&&this.darkColor.setFromColor(this.data.darkColor),this.data.attachmentName?(this.attachment=null,this.setAttachment(this.bone.skeleton.getAttachment(this.data.index,this.data.attachmentName))):this.attachment=null}},IR=class{constructor(e,t){w(this,"data");w(this,"bones");w(this,"target");w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0);w(this,"mixScaleX",0);w(this,"mixScaleY",0);w(this,"mixShearY",0);w(this,"temp",new ch);w(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n0?Ie.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,x=g.length;vIe.PI?M-=Ie.PI2:M<-3.1415927&&(M+=Ie.PI2),M*=e;let I=Math.cos(M),F=Math.sin(M);y.a=I*_-F*S,y.b=I*C-F*b,y.c=F*_+I*S,y.d=F*C+I*b}if(a){let _=this.temp;c.localToWorld(_.set(this.data.offsetX,this.data.offsetY)),y.worldX+=(_.x-y.worldX)*t,y.worldY+=(_.y-y.worldY)*i}if(n!=0){let _=Math.sqrt(y.a*y.a+y.c*y.c);_!=0&&(_=(_+(Math.sqrt(l*l+u*u)-_+this.data.offsetScaleX)*n)/_),y.a*=_,y.c*=_}if(r!=0){let _=Math.sqrt(y.b*y.b+y.d*y.d);_!=0&&(_=(_+(Math.sqrt(h*h+d*d)-_+this.data.offsetScaleY)*r)/_),y.b*=_,y.d*=_}if(o>0){let _=y.b,C=y.d,S=Math.atan2(C,_),b=Math.atan2(d,h)-Math.atan2(u,l)-(S-Math.atan2(y.c,y.a));b>Ie.PI?b-=Ie.PI2:b<-3.1415927&&(b+=Ie.PI2),b=S+(b+m)*o;let M=Math.sqrt(_*_+C*C);y.b=Math.cos(b)*M,y.d=Math.sin(b)*M}y.updateAppliedTransform()}}applyRelativeWorld(){let e=this.mixRotate,t=this.mixX,i=this.mixY,n=this.mixScaleX,r=this.mixScaleY,o=this.mixShearY,a=t!=0||i!=0,c=this.target,l=c.a,h=c.b,u=c.c,d=c.d,f=l*d-h*u>0?Ie.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,x=g.length;vIe.PI?M-=Ie.PI2:M<-3.1415927&&(M+=Ie.PI2),M*=e;let I=Math.cos(M),F=Math.sin(M);y.a=I*_-F*S,y.b=I*C-F*b,y.c=F*_+I*S,y.d=F*C+I*b}if(a){let _=this.temp;c.localToWorld(_.set(this.data.offsetX,this.data.offsetY)),y.worldX+=_.x*t,y.worldY+=_.y*i}if(n!=0){let _=(Math.sqrt(l*l+u*u)-1+this.data.offsetScaleX)*n+1;y.a*=_,y.c*=_}if(r!=0){let _=(Math.sqrt(h*h+d*d)-1+this.data.offsetScaleY)*r+1;y.b*=_,y.d*=_}if(o>0){let _=Math.atan2(d,h)-Math.atan2(u,l);_>Ie.PI?_-=Ie.PI2:_<-3.1415927&&(_+=Ie.PI2);let C=y.b,S=y.d;_=Math.atan2(S,C)+(_-Ie.PI/2+m)*o;let b=Math.sqrt(C*C+S*S);y.b=Math.cos(_)*b,y.d=Math.sin(_)*b}y.updateAppliedTransform()}}applyAbsoluteLocal(){let e=this.mixRotate,t=this.mixX,i=this.mixY,n=this.mixScaleX,r=this.mixScaleY,o=this.mixShearY,a=this.target,c=this.bones;for(let l=0,h=c.length;lt.data.name==e)??null}findTransformConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.transformConstraints.find(t=>t.data.name==e)??null}findPathConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.pathConstraints.find(t=>t.data.name==e)??null}findPhysicsConstraint(e){if(e==null)throw new Error("constraintName cannot be null.");return this.physicsConstraints.find(t=>t.data.name==e)??null}getBoundsRect(e){let t=new ch,i=new ch;return this.getBounds(t,i,void 0,e),{x:t.x,y:t.y,width:i.x,height:i.y}}getBounds(e,t,i=new Array(2),n=null){if(!e)throw new Error("offset cannot be null.");if(!t)throw new Error("size cannot be null.");let r=this.drawOrder,o=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;for(let h=0,u=r.length;h=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=i}addSkin(e){for(let n=0;n= 0.");if(!t)throw new Error("name cannot be null.");if(!i)throw new Error("boneData cannot be null.");this.index=e,this.name=t,this.boneData=i}};var cr;(function(s){s[s.Normal=0]="Normal",s[s.Additive=1]="Additive",s[s.Multiply=2]="Multiply",s[s.Screen=3]="Screen"})(cr||(cr={}));let ew=class extends ou{constructor(t){super(t,0,!1);w(this,"bones",new Array);w(this,"_target",null);w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0);w(this,"mixScaleX",0);w(this,"mixScaleY",0);w(this,"mixShearY",0);w(this,"offsetRotation",0);w(this,"offsetX",0);w(this,"offsetY",0);w(this,"offsetScaleX",0);w(this,"offsetScaleY",0);w(this,"offsetShearY",0);w(this,"relative",!1);w(this,"local",!1)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},am=class{constructor(e){w(this,"scale",1);w(this,"attachmentLoader");w(this,"linkedMeshes",new Array);this.attachmentLoader=e}readSkeletonData(e){let t=this.scale,i=new uh;i.name="";let n=new RR(e),r=n.readInt32(),o=n.readInt32();i.hash=o==0&&r==0?null:o.toString(16)+r.toString(16),i.version=n.readString(),i.x=n.readFloat(),i.y=n.readFloat(),i.width=n.readFloat(),i.height=n.readFloat(),i.referenceScale=n.readFloat()*t;let a=n.readBoolean();a&&(i.fps=n.readFloat(),i.imagesPath=n.readString(),i.audioPath=n.readString());let c=0;c=n.readInt(!0);for(let h=0;h>1&3,f.rotateMode=p>>3&3,(p&128)!=0&&(f.offsetRotation=n.readFloat()),f.position=n.readFloat(),f.positionMode==rn.Fixed&&(f.position*=t),f.spacing=n.readFloat(),(f.spacingMode==li.Length||f.spacingMode==li.Fixed)&&(f.spacing*=t),f.mixRotate=n.readFloat(),f.mixX=n.readFloat(),f.mixY=n.readFloat(),i.pathConstraints.push(f)}c=n.readInt(!0);for(let h=0,u;h>4,e.readFloat())}n.push(S);break}}}}}let o=e.readInt(!0);if(o>0){let l=new Va(o),h=i.slots.length;for(let u=0;u=0;x--)p[x]=-1;let m=Re.newArray(h-f,0),g=0,v=0;for(let x=0;x=0;x--)p[x]==-1&&(p[x]=m[--v]);l.setFrame(u,d,p)}n.push(l)}let a=e.readInt(!0);if(a>0){let l=new hp(a);for(let h=0;h>>1^-(i&1)}readStringRef(){let e=this.readInt(!0);return e==0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let i=0;i>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),i+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),i+=3;break;default:t+=String.fromCharCode(n),i++}}return t}readFloat(){let e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!=0}},PR=class{constructor(e,t,i,n,r){w(this,"parent");w(this,"skinIndex");w(this,"slotIndex");w(this,"mesh");w(this,"inheritTimeline");this.mesh=e,this.skinIndex=t,this.slotIndex=i,this.parent=n,this.inheritTimeline=r}},kR=class{constructor(e=null,t=null,i=0){w(this,"bones");w(this,"vertices");w(this,"length");this.bones=e,this.vertices=t,this.length=i}};var gn;(function(s){s[s.Region=0]="Region",s[s.BoundingBox=1]="BoundingBox",s[s.Mesh=2]="Mesh",s[s.LinkedMesh=3]="LinkedMesh",s[s.Path=4]="Path",s[s.Point=5]="Point",s[s.Clipping=6]="Clipping"})(gn||(gn={}));function Mi(s,e,t){let i=s.readFloat(),n=s.readFloat()*t;for(let r=0,o=0,a=e.getFrameCount()-1;e.setFrame(r,i,n),r!=a;r++){let c=s.readFloat(),l=s.readFloat()*t;switch(s.readByte()){case Vs:e.setStepped(r);break;case Ys:ht(s,e,o++,r,0,i,c,n,l,t)}i=c,n=l}return e}function Qd(s,e,t){let i=s.readFloat(),n=s.readFloat()*t,r=s.readFloat()*t;for(let o=0,a=0,c=e.getFrameCount()-1;e.setFrame(o,i,n,r),o!=c;o++){let l=s.readFloat(),h=s.readFloat()*t,u=s.readFloat()*t;switch(s.readByte()){case Vs:e.setStepped(o);break;case Ys:ht(s,e,a++,o,0,i,l,n,h,t),ht(s,e,a++,o,1,i,l,r,u,t)}i=l,n=h,r=u}return e}function ht(s,e,t,i,n,r,o,a,c,l){e.setBezier(t,i,n,r,a,s.readFloat(),s.readFloat()*l,s.readFloat(),s.readFloat()*l,o,c)}const FR=0,OR=1,BR=2,LR=3,DR=4,NR=5,UR=6,$R=7,XR=8,VR=9,YR=10,GR=0,HR=1,jR=2,WR=3,zR=4,qR=5,KR=0,ZR=1,JR=0,QR=1,eP=2,tP=0,iP=1,sP=2,nP=4,rP=5,oP=6,aP=7,lP=8,Vs=1,Ys=2;class ji{constructor(){w(this,"convexPolygons",new Array);w(this,"convexPolygonsIndices",new Array);w(this,"indicesArray",new Array);w(this,"isConcaveArray",new Array);w(this,"triangles",new Array);w(this,"polygonPool",new lh(()=>new Array));w(this,"polygonIndicesPool",new lh(()=>new Array))}triangulate(e){let t=e,i=e.length>>1,n=this.indicesArray;n.length=0;for(let a=0;a3;){let a=i-1,c=0,l=1;for(;;){e:if(!r[c]){let d=n[a]<<1,f=n[c]<<1,p=n[l]<<1,m=t[d],g=t[d+1],v=t[f],x=t[f+1],y=t[p],_=t[p+1];for(let C=(l+1)%i;C!=a;C=(C+1)%i){if(!r[C])continue;let S=n[C]<<1,b=t[S],M=t[S+1];if(ji.positiveArea(y,_,m,g,b,M)&&ji.positiveArea(m,g,v,x,b,M)&&ji.positiveArea(v,x,y,_,b,M))break e}break}if(l==0){do{if(!r[c])break;c--}while(c>0);break}a=c,c=l,l=(l+1)%i}o.push(n[(i+c-1)%i]),o.push(n[c]),o.push(n[(c+1)%i]),n.splice(c,1),r.splice(c,1),i--;let h=(i+c-1)%i,u=c==i?0:c;r[h]=ji.isConcave(h,i,t,n),r[u]=ji.isConcave(u,i,t,n)}return i==3&&(o.push(n[2]),o.push(n[0]),o.push(n[1])),o}decompose(e,t){let i=e,n=this.convexPolygons;this.polygonPool.freeAll(n),n.length=0;let r=this.convexPolygonsIndices;this.polygonIndicesPool.freeAll(r),r.length=0;let o=this.polygonIndicesPool.obtain();o.length=0;let a=this.polygonPool.obtain();a.length=0;let c=-1,l=0;for(let h=0,u=t.length;h0?(n.push(a),r.push(o)):(this.polygonPool.free(a),this.polygonIndicesPool.free(o)),a=this.polygonPool.obtain(),a.length=0,a.push(m),a.push(g),a.push(v),a.push(x),a.push(y),a.push(_),o=this.polygonIndicesPool.obtain(),o.length=0,o.push(d),o.push(f),o.push(p),l=ji.winding(m,g,v,x,y,_),c=d)}a.length>0&&(n.push(a),r.push(o));for(let h=0,u=n.length;h=0;h--)a=n[h],a.length==0&&(n.splice(h,1),this.polygonPool.free(a),o=r[h],r.splice(h,1),this.polygonIndicesPool.free(o));return n}static isConcave(e,t,i,n){let r=n[(t+e-1)%t]<<1,o=n[e]<<1,a=n[(e+1)%t]<<1;return!this.positiveArea(i[r],i[r+1],i[o],i[o+1],i[a],i[a+1])}static positiveArea(e,t,i,n,r,o){return e*(o-n)+i*(t-o)+r*(n-t)>=0}static winding(e,t,i,n,r,o){let a=i-e,c=n-t;return r*c-o*a+a*t-e*c>=0?1:-1}}class dh{constructor(){w(this,"triangulator",new ji);w(this,"clippingPolygon",new Array);w(this,"clipOutput",new Array);w(this,"clippedVertices",new Array);w(this,"clippedUVs",new Array);w(this,"clippedTriangles",new Array);w(this,"scratch",new Array);w(this,"clipAttachment",null);w(this,"clippingPolygons",null)}clipStart(e,t){if(this.clipAttachment)return 0;this.clipAttachment=t;let i=t.worldVerticesLength,n=Re.setArraySize(this.clippingPolygon,i);t.computeWorldVertices(e,0,i,n,0,2);let r=this.clippingPolygon;dh.makeClockwise(r);let o=this.clippingPolygons=this.triangulator.decompose(r,this.triangulator.triangulate(r));for(let a=0,c=o.length;a>1,S=this.clipOutput,b=Re.setArraySize(r,y+C*2);for(let I=0;I<_;I+=2,y+=2){let F=S[I],E=S[I+1];b[y]=F,b[y+1]=E}y=o.length;let M=Re.setArraySize(o,y+3*(C-2));C--;for(let I=1;I>1,X=this.clipOutput,V=Re.setArraySize(l,D+B*f);for(let W=0;W<$;W+=2,D+=f){let ne=X[W],re=X[W+1];V[D]=ne,V[D+1]=re,V[D+2]=r.r,V[D+3]=r.g,V[D+4]=r.b,V[D+5]=r.a;let le=ne-I,ue=re-F,ae=(N*le+U*ue)*L,xe=(P*le+A*ue)*L,Y=1-ae-xe;V[D+6]=y*ae+b*xe+E*Y,V[D+7]=_*ae+M*xe+k*Y,a&&(V[D+8]=o.r,V[D+9]=o.g,V[D+10]=o.b,V[D+11]=o.a)}D=h.length;let q=Re.setArraySize(h,D+3*(B-2));B--;for(let W=1;W>1,P=this.clipOutput,L=Re.setArraySize(o,E+A*2),B=Re.setArraySize(a,E+A*2);for(let V=0;V=2?(u=c,c=this.scratch):u=this.scratch,u.length=0,u.push(e),u.push(t),u.push(i),u.push(n),u.push(r),u.push(o),u.push(e),u.push(t),c.length=0;let d=a.length-4,f=a;for(let p=0;;p+=2){let m=f[p],g=f[p+1],v=m-f[p+2],x=g-f[p+3],y=c.length,_=u;for(let S=0,b=u.length-2;Sv*(g-E),O=x*(m-M)-v*(g-I);if(O>0){if(k){c.push(F),c.push(E);continue}let D=F-M,$=E-I,N=O/(D*x-$*v);if(N>=0&&N<=1)c.push(M+D*N),c.push(I+$*N);else{c.push(F),c.push(E);continue}}else if(k){let D=F-M,$=E-I,N=O/(D*x-$*v);if(N>=0&&N<=1)c.push(M+D*N),c.push(I+$*N),c.push(F),c.push(E);else{c.push(F),c.push(E);continue}}h=!0}if(y==c.length)return l.length=0,!0;if(c.push(c[0]),c.push(c[1]),p==d)break;let C=c;c=u,c.length=0,u=C}if(l!=c){l.length=0;for(let p=0,m=c.length-2;p>1;l0){let h=i.findPhysicsConstraint(a);if(!h)throw new Error("Physics constraint not found: "+a);l=i.physicsConstraints.indexOf(h)}for(let h in c){let u=c[h],d=u[0];if(!d)continue;let f=u.length;if(h=="reset"){const m=new Db(f,l);for(let g=0;d!=null;d=u[g+1],g++)m.setFrame(g,J(d,"time",0));r.push(m);continue}let p;if(h=="inertia")p=new Rb(f,f,l);else if(h=="strength")p=new Pb(f,f,l);else if(h=="damping")p=new kb(f,f,l);else if(h=="mass")p=new Fb(f,f,l);else if(h=="wind")p=new Ob(f,f,l);else if(h=="gravity")p=new Bb(f,f,l);else if(h=="mix")p=new Lb(f,f,l);else continue;r.push(bs(u,p,0,1))}}if(e.attachments)for(let a in e.attachments){let c=e.attachments[a],l=i.findSkin(a);if(!l)throw new Error("Skin not found: "+a);for(let h in c){let u=c[h],d=i.findSlot(h);if(!d)throw new Error("Slot not found: "+h);let f=d.index;for(let p in u){let m=u[p],g=l.getAttachment(f,p);for(let v in m){let x=m[v],y=x[0];if(y){if(v=="deform"){let _=g.bones,C=g.vertices,S=_?C.length/3*2:C.length,b=new Tb(x.length,x.length,f,g),M=J(y,"time",0);for(let I=0,F=0;;I++){let E,k=J(y,"vertices",null);if(!k)E=_?Re.newFloatArray(S):C;else{E=Re.newFloatArray(S);let N=J(y,"offset",0);if(Re.arrayCopy(k,0,E,N,k.length),n!=1)for(let U=N,A=U+k.length;U=0;v--)d[v]==-1&&(d[v]=p[--g])}a.setFrame(l,J(u,"time",0),d)}r.push(a)}if(e.events){let a=new hp(e.events.length),c=0;for(let l=0;l"u"&&(Math.fround=(function(s){return function(e){return s[0]=e,s[0]}})(new Float32Array(1)));if(typeof window<"u"&&window.PIXI){let s=window.require;window.require=e=>{if(s)return s(e);if(e.startsWith("@pixi/"))return window.PIXI}}const yn=class yn extends wR{constructor(t){super(t.resource.source);w(this,"texture");this.texture=ze.from(t)}static from(t){return yn.textureMap.has(t)?yn.textureMap.get(t):new yn(t)}setFilters(t,i){this.texture.baseTexture.scaleMode=yn.toPixiTextureFilter(t),this.texture.baseTexture.mipmap=yn.toPixiMipMap(t)}setWraps(t,i){this.texture.baseTexture.wrapMode=yn.toPixiTextureWrap(t)}dispose(){this.texture.destroy()}static toPixiTextureFilter(t){switch(t){case ui.Nearest:case ui.MipMapNearestLinear:case ui.MipMapNearestNearest:return Cs.NEAREST;case ui.Linear:case ui.MipMapLinearLinear:case ui.MipMapLinearNearest:return Cs.LINEAR;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiMipMap(t){switch(t){case ui.Nearest:case ui.Linear:return gs.OFF;case ui.MipMapNearestLinear:case ui.MipMapNearestNearest:case ui.MipMapLinearLinear:case ui.MipMapLinearNearest:return gs.ON;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiTextureWrap(t){switch(t){case Fn.ClampToEdge:return Is.CLAMP;case Fn.MirroredRepeat:return Is.MIRRORED_REPEAT;case Fn.Repeat:return Is.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(t)}`)}}static toPixiBlending(t){switch(t){case cr.Normal:return je.NORMAL;case cr.Additive:return je.ADD;case cr.Multiply:return je.MULTIPLY;case cr.Screen:return je.SCREEN;default:throw new Error(`Unknown blendMode: ${String(t)}`)}}};w(yn,"textureMap",new Map);let so=yn;const xn=class xn extends ll{constructor(){const t=new rp;t.getBuffer("aVertexPosition").static=!1,t.getBuffer("aTextureCoord").static=!1;const i=new nh(ze.EMPTY);super(t,i);w(this,"name","");w(this,"warnedTwoTint",!1)}updateFromSpineData(t,i,n,r,o,a,c,l){var v,x;this.texture=t.texture;const h=o/(l?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((v=u.data)==null?void 0:v.length)!==h&&(u.data=new Float32Array(h));const d=this.geometry.getBuffer("aVertexPosition");((x=d.data)==null?void 0:x.length)!==h&&(d.data=new Float32Array(h));let f=0,p=u.data,m=d.data;for(let y=0;y0?`text-shadow: ${r} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${r} ${e}`}reset(){Object.assign(this,Io.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=ke.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};em.availableFonts={},em.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};let Hd=em;const tc=class Ro extends yr{constructor(e="",t={}){super(ze.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;const i=new Image,n=ze.from(i,{scaleMode:ke.SCALE_MODE,resourceOptions:{autoLoad:!1}});n.orig=new nt,n.trim=new nt,this.texture=n;const r="http://www.w3.org/2000/svg",o="http://www.w3.org/1999/xhtml",a=document.createElementNS(r,"svg"),c=document.createElementNS(r,"foreignObject"),l=document.createElementNS(o,"div"),h=document.createElementNS(o,"style");c.setAttribute("width","10000"),c.setAttribute("height","10000"),c.style.overflow="hidden",a.appendChild(c),this.maxWidth=Ro.defaultMaxWidth,this.maxHeight=Ro.defaultMaxHeight,this._domElement=l,this._styleElement=h,this._svgRoot=a,this._foreignObject=c,this._foreignObject.appendChild(h),this._foreignObject.appendChild(l),this._image=i,this._loadImage=new Image,this._autoResolution=Ro.defaultAutoResolution,this._resolution=Ro.defaultResolution??ke.RESOLUTION,this.text=e,this.style=t}measureText(e){var h,u;const{text:t,style:i,resolution:n}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:i.toCSS(n)}),this._styleElement.textContent=i.toGlobalCSS(),document.body.appendChild(this._svgRoot);const r=this._domElement.getBoundingClientRect();this._svgRoot.remove();const{width:o,height:a}=r;(o>this.maxWidth||a>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");const c=Math.min(this.maxWidth,Math.ceil(o)),l=Math.min(this.maxHeight,Math.ceil(a));return this._svgRoot.setAttribute("width",c.toString()),this._svgRoot.setAttribute("height",l.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),i!==this._style&&(Object.assign(this._domElement,{style:(h=this._style)==null?void 0:h.toCSS(n)}),this._styleElement.textContent=(u=this._style)==null?void 0:u.toGlobalCSS()),{width:c+i.padding*2,height:l+i.padding*2}}async updateText(e=!0){const{style:t,_image:i,_loadImage:n}=this;if(this.localStyleID!==t.styleID&&(this.dirty=!0,this.localStyleID=t.styleID),!this.dirty&&e)return;const{width:r,height:o}=this.measureText();i.width=n.width=Math.ceil(Math.max(1,r)),i.height=n.height=Math.ceil(Math.max(1,o)),this._updateID++;const a=this._updateID;await new Promise(c=>{n.onload=async()=>{if(a/gi,"
").replace(/
/gi,"
").replace(/ /gi," ")}};tc.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},tc.defaultMaxWidth=2024,tc.defaultMaxHeight=2024,tc.defaultAutoResolution=!0;function oh(s,e){const t=Math.max(0,Number(s)||0),i=Math.max(0,Number(e)||0);return{inner:Math.min(t,i),outer:Math.max(t,i)}}function Kb(s){const e=Math.max(0,Number(s.outerRectW)||0),t=Math.max(0,Number(s.outerRectH)||0);return{innerW:Math.min(e,Math.max(0,Number(s.innerRectW)||0)),innerH:Math.min(t,Math.max(0,Number(s.innerRectH)||0)),outerW:e,outerH:t}}function bI(s,e,t,i,n){if(s==="random")return n();const r=Math.max(1,Math.round(t)),o=Math.max(0,Math.round(e))%r;return i?o/r:r<=1?.5:o/(r-1)}function fv(s,e,t,i){const n=Math.sqrt(s*s+i()*(e*e-s*s));return{x:Math.cos(t)*n,y:-Math.sin(t)*n,radialAngle:-t*180/Math.PI}}function wI(s,e){const{innerW:t,innerH:i,outerW:n,outerH:r}=Kb(s),o=Math.max(0,(n-t)/2),a=Math.max(0,(r-i)/2),c=o*r,l=t*a,h=c*2+l*2;if(h<=0){const p=n*2+r*2;if(p<=0)return{x:0,y:0,radialAngle:0};let m=e()*p,g,v;return m{const F=M/o,E=I/a,k=Math.max(1e-4,Math.hypot(F,E)),O=F/k,D=E/k,$=n*O-r*D,N=r*O+n*D;return{x:s.x+n*S*o-r*b*a+$*.05,y:s.y+r*S*o+n*b*a+N*.05,nx:$,ny:N}};if(s.shape==="circle"){const S=Math.max(.001,s.radius),b=Math.hypot(h,u);if(b>=S)return null;const M=b>1e-4?h/b:1,I=b>1e-4?u/b:0;return d(M*S,I*S,M,I)}if(s.shape==="ellipse"){const S=Math.max(.001,s.radiusX),b=Math.max(.001,s.radiusY),M=Math.hypot(h/S,u/b);if(M>=1)return null;const I=M>1e-4?1/M:1,F=M>1e-4?h*I:S,E=M>1e-4?u*I:0,k=Math.max(1e-4,Math.hypot(F/(S*S),E/(b*b)));return d(F,E,F/(S*S)/k,E/(b*b)/k)}if(s.shape==="rect"){const S=Math.max(.001,s.width*.5),b=Math.max(.001,s.height*.5);if(Math.abs(h)>=S||Math.abs(u)>=b)return null;const M=S-Math.abs(h),I=b-Math.abs(u);if(M=0?1:-1;return d(E*S,u,E,0)}const F=u>=0?1:-1;return d(h,F*b,0,F)}const f=Math.max(3,Math.min(16,Math.round(s.sides||(s.shape==="custom"?5:6)))),p=Math.max(.001,s.width*.5),m=Math.max(.001,s.height*.5),g=Array.from({length:f},(S,b)=>{const M=Math.PI*.5+b/f*Math.PI*2;return{x:Math.cos(M)*p,y:Math.sin(M)*m}});let v=!1;for(let S=0,b=g.length-1;Su!=I.y>u&&h<(I.x-M.x)*(u-M.y)/(I.y-M.y)+M.x&&(v=!v)}if(!v)return null;let x=g[0].x,y=g[0].y,_=1/0;for(let S=0;S>>0^Math.imul(e+1,2654435761)^t)>>>0;return i^=i>>>16,i=Math.imul(i,2146121005),i^=i>>>15,i=Math.imul(i,2221713035),i^=i>>>16,(i>>>0)/4294967296}function bo(s,e,t,i,n){return s==="fixed"?e:s==="curve"?yi(e,t,Zs(i,n)):yi(e,t,n)}function jd(s,e,t,i,n,r){return s==="curve"?yi(e,t,Zs(i,n)):s==="random"?r:e}function pv(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function Zs(s,e,t="线性"){if(!Array.isArray(s)||s.length===0)return 1;const i=[...s].sort((n,r)=>n.x-r.x);if(e<=i[0].x)return i[0].y;if(e>=i[i.length-1].x)return i[i.length-1].y;for(let n=0;n=i[n].x&&e<=i[n+1].x){const r=i[n],o=i[n+1],a=o.x-r.x||1;if(t!=="贝塞尔")return yi(r.y,o.y,(e-r.x)/a);const c=r.x+(r.outX??a/3),l=r.y+(r.outY??(o.y-r.y)/3),h=o.x+(o.inX??-a/3),u=o.y+(o.inY??-(o.y-r.y)/3);let d=0,f=1;for(let p=0;p<14;p++){const m=(d+f)/2;pv(r.x,c,h,o.x,m)>>0;return function(){e|=0,e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function jo(s){let e=s.replace("#","");return e.length===3&&(e=e.split("").map(t=>t+t).join("")),parseInt(e,16)}function II(s,e,t){const i=gv(s),n=gv(e),r=Math.round(i[0]+(n[0]-i[0])*t),o=Math.round(i[1]+(n[1]-i[1])*t),a=Math.round(i[2]+(n[2]-i[2])*t);return r<<16|o<<8|a}function tm(s,e){if(!Array.isArray(s)||s.length===0)return 16777215;const t=[...s].sort((i,n)=>i.position-n.position);if(e<=t[0].position)return jo(t[0].color);if(e>=t[t.length-1].position)return jo(t[t.length-1].color);for(let i=0;ir.position)continue;const o=(e-n.position)/Math.max(1e-4,r.position-n.position);return II(n.color,r.color,o)}return jo(t[t.length-1].color)}function gv(s){let e=s.replace("#","");e.length===3&&(e=e.split("").map(i=>i+i).join(""));const t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255]}function RI(){return{sprite:null,boneName:"",mesh:null,meshSignature:"",history:[],bones:[],skinWeights:[],currentWidth:0,currentAlpha:0,currentColor:16777215,resourceId:1,enabled:!1,sampledLength:100,sampledWidth:100}}function Cc(s){s.history.length=0,s.bones.length=0,s.mesh&&(s.mesh.visible=!1)}class PI{constructor(e){w(this,"container");this.container=e}ensureMesh(e,t,i){const n=t.trailResources.find(g=>g.id===e.resourceId)||t.trailResources[0],r=(n==null?void 0:n.texture)||ze.EMPTY,o=Number(n==null?void 0:n.rotation)||0,a=Math.max(2,Math.min(16,Math.round(t.trailGridRows))),c=Math.max(2,Math.min(32,Math.round(t.trailGridCols))),l=Math.max(2,Math.min(16,Math.round((n==null?void 0:n.boneCount)??3))),h=`${a}:${c}:${l}:${(n==null?void 0:n.id)??0}:${o}`;if(e.mesh&&e.meshSignature===h)return e.mesh.texture!==r&&(e.mesh.texture=r),e.mesh;e.mesh&&(this.container.removeChild(e.mesh),e.mesh.destroy()),e.meshSignature&&e.meshSignature!==h&&(e.history.length=0,e.bones.length=0);const u=new Float32Array(a*c*2),d=new Float32Array(a*c*2),f=[],p=[];for(let g=0;g.05?e.history.unshift({x:t,y:i}):(r.x=t,r.y=i);const o=Math.max(1,n)*1.5;let a=0,c=e.history.length;for(let l=1;l=o||l>=239){c=l+1;break}e.history.length>c&&(e.history.length=c)}sampleBones(e,t,i){const n=Math.max(2,Math.min(16,Math.round(i))),r=e.history,o=[];if(!r.length)return o;let a=0;for(let l=1;l=h&&g>1e-4){const v=(h-u)/g;d={x:yi(p.x,m.x,v),y:yi(p.y,m.y,v)};break}u+=g}o.push({boneName:`${e.boneName}_trail_${l}`,x:d.x,y:d.y,rotation:0})}for(let l=0;l1){const l=o[0].rotation,u=(o[o.length-1].rotation-l+540)%360-180;for(let d=0;dh.id===i.resourceId)||t.trailResources[0];if(!(r!=null&&r.texture)||i.bones.length<2){n.visible=!1;return}e.resourceId=r.id,n.texture!==r.texture&&(n.texture=r.texture);const o=Math.max(2,Math.min(16,Math.round(t.trailGridRows))),a=Math.max(2,Math.min(32,Math.round(t.trailGridCols))),c=n.vertices,l=[];for(let h=0;h.5&&i.alpha>0}update(e,t,i,n,r,o,a){if(e.sprite=a,e.boneName=i,!t.trail||!e.enabled||e.sampledLength<=0||e.sampledWidth<=0){Cc(e);return}this.ensureMesh(e,t,a);const c=t.trailResources.find(f=>f.id===e.resourceId)||t.trailResources[0];this.appendPoint(e,n,r,e.sampledLength);const l=c!=null&&c.lifeLengthEnabled?Math.max(0,Zs(c.lifeLengthCurve,o)):1,h=Math.max(0,e.sampledLength)*l;e.bones=this.sampleBones(e,h,(c==null?void 0:c.boneCount)??3),e.bones[0]&&(e.bones[0].x=n,e.bones[0].y=r);const u=(c==null?void 0:c.widthMode)==="particle"?(Math.abs(a.scale.x)+Math.abs(a.scale.y))*.5:1;e.currentWidth=Math.max(0,e.sampledWidth)*u,e.currentAlpha=(c==null?void 0:c.alphaMode)==="particle"?a.alpha:(c==null?void 0:c.alphaMode)==="curve"?Zs(c.alphaCurve,o):(c==null?void 0:c.alpha)??1,e.currentColor=(c==null?void 0:c.colorMode)==="particle"?a.tint:(c==null?void 0:c.colorMode)==="curve"?tm(c.colorGradient,o):jo((c==null?void 0:c.color)||"#ffffff");const d={bones:e.bones.map(f=>({...f})),activeBoneCount:e.bones.length,width:e.currentWidth,alpha:Math.min(1,Math.max(0,e.currentAlpha)),colorHex:e.currentColor,resourceId:e.resourceId};return this.skinMesh(e,t,d),d}applyState(e,t,i,n){var r;e.sprite=i,e.resourceId=n.resourceId??((r=t.trailResources[0])==null?void 0:r.id)??1,e.bones=n.bones.map(o=>({...o})),e.currentWidth=n.width,e.currentAlpha=n.alpha,this.skinMesh(e,t,n)}drawDebug(e,t,i,n){if(e.clear(),!t||!i.trail)return;const r=Math.max(2,Math.min(16,Math.round(i.trailGridRows))),o=Math.max(2,Math.min(32,Math.round(i.trailGridCols)));e.lineStyle(1,3790847,.72);for(const a of n){const c=a.mesh;if(!(c!=null&&c.visible))continue;const l=c.vertices,h=(u,d)=>{const f=(u*r+d)*2;return{x:l[f],y:l[f+1]}};for(let u=0;ur.texture||r.sequenceFrames.some(o=>o.texture));if(!t.length)return kI(s.texture);const i=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(i<=0)return t[Math.floor(e()*t.length)];let n=e()*i;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}function BI(s,e){const t=s.trailResources.filter(r=>r.texture);if(!t.length)return s.trailResources[0]||FI();const i=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(i<=0)return t[Math.min(t.length-1,Math.floor(e*t.length))];let n=e*i;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}function vv(s,e){if(s.imageMode!=="sequence"||s.sequenceFrames.length<=1)return{index:0,visible:!0};const t=Math.min(120,Math.max(1,Number(s.sequenceFps)||30)),i=Math.max(0,Math.floor(Math.max(0,e)*t)),n=s.sequenceFrames.length-1;return s.sequencePlayback==="once-hide"?{index:Math.min(n,i),visible:i<=n}:s.sequencePlayback==="once-hold"?{index:Math.min(n,i),visible:!0}:s.sequencePlayback==="loop-reverse"?{index:n-i%s.sequenceFrames.length,visible:!0}:{index:i%s.sequenceFrames.length,visible:!0}}function zd(s,e,t){var i;return s.imageMode==="sequence"&&s.sequenceFrames.length?((i=s.sequenceFrames[Math.max(0,Math.min(s.sequenceFrames.length-1,t))])==null?void 0:i.texture)||s.texture||e:s.texture||e}function cl(){return{texture:null,imageResources:[{id:1,texture:null,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}]}],imageWeightVersion:1,name:"ParticleSystem1",mode:"stream",rate:20,streamBehavior:"normal",loopDurationFrames:30,generateLoopStartAnimation:!1,loopStartUseCustomDuration:!1,loopStartDurationFrames:30,generateLoopEndAnimation:!1,loopEndUseCustomDuration:!1,loopEndDurationFrames:30,burstCount:50,burstLoop:!1,delay:0,duration:1,shape:"point",shapeRangeVersion:1,innerRadius:0,outerRadius:30,innerRectW:0,innerRectH:0,outerRectW:60,outerRectH:40,spawnPathId:0,spawnPathDistribution:"fixed",radius:30,rectW:60,rectH:40,centerX:0,centerY:0,rootRotation:0,rootScaleX:1,rootScaleY:1,emissionAngleMode:"random",direction:0,spread:360,coneDirection:90,coneAngle:60,lifeMin:.6,lifeMax:1.8,lifeMode:"random",lifeCurve:[{x:0,y:0},{x:1,y:1}],speedMin:30,speedMax:140,speedMode:"random",speedCurve:[{x:0,y:0},{x:1,y:1}],scaleMin:.3,scaleMax:.8,scaleMode:"random",scaleAxisMode:"uniform",scaleYMin:.3,scaleYMax:.8,scaleCurve:[{x:0,y:0},{x:1,y:1}],scaleYCurve:[{x:0,y:0},{x:1,y:1}],scaleEndRatio:.3,initialRotationMode:"random",initialRotationMin:0,initialRotationMax:360,initialRotationCurve:[{x:0,y:0},{x:1,y:1}],alpha:.9,alphaEnd:0,rotationSpeedMin:-180,rotationSpeedMax:180,speedOverLifeEnabled:!1,speedOverLifeMode:"fixed",speedOverLifeMin:1,speedOverLifeMax:1,speedOverLifeCurve:[{x:0,y:1},{x:1,y:1}],scaleOverLifeEnabled:!1,scaleOverLifeMode:"curve",scaleOverLifeAxisMode:"uniform",scaleOverLifeMin:0,scaleOverLifeMax:1,scaleYOverLifeMin:0,scaleYOverLifeMax:1,scaleOverLifeCurve:[{x:0,y:1},{x:1,y:1}],scaleYOverLifeCurve:[{x:0,y:1},{x:1,y:1}],rotationOverLifeEnabled:!1,rotationOverLifeMode:"random",rotationOverLifeCurve:[{x:0,y:0},{x:1,y:1}],gravity:980,gravityMode:"fixed",gravityMin:980,gravityMax:980,gravityDirection:-90,gravityCurve:[{x:0,y:1},{x:1,y:1}],damping:0,seed:0,colorStart:"#ffffff",colorEnd:"#ff4d4d",colorOverLife:!1,blend:"add",alphaMode:"curve",curveMode:"线性",alphaCurve:[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],textureName:"star",textureFolder:"",alphaScale:1,anchorX:.5,anchorY:.5,independentAlpha:"off",offsetX:0,offsetY:0,noise:!1,noiseAmt:30,noiseRange:100,noiseSpeed:1,useGravity:!1,wind:!1,windX:0,windY:0,windMode:"fixed",windMin:100,windMax:100,windDirection:0,windCurve:[{x:0,y:1},{x:1,y:1}],forceField:!1,forceStrength:10,forceRadius:100,forceCenterX:0,forceCenterY:0,forceFalloff:"linear",attraction:!1,attractionCenterX:200,attractionCenterY:0,attractionRadius:20,attractionDuration:.5,attractionDelay:.1,attractionDelayMode:"particle",attractionPath:"curve",trail:!1,trailConfigVersion:3,trailResources:[{id:1,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:[{x:0,y:1},{x:1,y:1}],boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:[{x:0,y:1},{x:1,y:1}],shapeEnabled:!1,shapeCurve:[{x:0,y:1},{x:1,y:1}]}],trailResourceVersion:6,trailTexture:null,trailTextureName:"trail",trailPreviewUrl:"/images/trail.png",trailColorMode:"particle",trailColor:"#ffffff",trailColorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],trailAlphaMode:"particle",trailAlpha:1,trailAlphaCurve:[{x:0,y:1},{x:1,y:1}],trailBoneCount:3,trailLength:100,trailWidth:100,trailWidthMode:"particle",trailLifeLengthEnabled:!1,trailLifeLengthCurve:[{x:0,y:1},{x:1,y:1}],trailShapeEnabled:!1,trailShapeCurve:[{x:0,y:1},{x:1,y:1}],trailGridRows:4,trailGridCols:4,collision:!1,collisionColliderIds:[],pathFollow:!1,emitterFollow:!1,emitterFollowMode:"none",emitterFollowPathId:0,emitterFollowSpineId:0,emitterFollowBoneName:"",emitterFollowBoneOffsetX:0,emitterFollowBoneOffsetY:0,emitterFollowBoneRotation:0,emitterFollowBoneScaleX:1,emitterFollowBoneScaleY:1,emitterAngleMode:"fixed",emitterFollowCurve:[{x:0,y:0},{x:1,y:1}],emitterFollowDuration:2,emitterFollowSpace:"world",emitterFollowDirection:"forward",emitterFollowOffset:0}}function pr(s){var F;const e=cl(),t=s,i=t.shapeRangeVersion!==1,n=Number(t.radius),r=Number(t.rectW),o=Number(t.rectH),a=Number(t.direction),c=Number(t.spread),l=t.shape,h=t.imageWeightVersion!==1,u=t.loopDurationFrames==null,d=t.gravityMode==null,f=Number(t.gravity),p=t.windMode==null,m=Number(t.windX),g=Number(t.windY),v=t.forceFalloff==null,x=Number(t.forceStrength),y=t.trailConfigVersion!==3,_=!Array.isArray(t.trailResources),C=t.trailResourceVersion!==6,S=t.trailTexture,b=String(t.trailTextureName||"trail"),M=String(t.trailPreviewUrl||"/images/trail.png").replace("/trails/trail.png","/images/trail.png");for(const[E,k]of Object.entries(e))t[E]!==void 0&&t[E]!==null||(t[E]=Array.isArray(k)?k.map(O=>typeof O=="object"&&O!==null?{...O}:O):k);i&&(s.innerRadius=0,s.outerRadius=Math.max(0,Number.isFinite(n)?n:e.outerRadius),s.innerRectW=0,s.innerRectH=0,s.outerRectW=Math.max(0,Number.isFinite(r)?r:e.outerRectW),s.outerRectH=Math.max(0,Number.isFinite(o)?o:e.outerRectH),s.coneDirection=Number.isFinite(a)?a:90,s.emissionAngleMode=Number.isFinite(c)&&c>0?"random":"fixed",l==="cone"&&(s.spread=Math.max(0,Number(s.coneAngle)||0)),s.shapeRangeVersion=1),s.shape==="orbit"&&(s.shape="path"),["fixed","random","radial","path-normal","path-tangent"].includes(s.emissionAngleMode)||(s.emissionAngleMode="fixed"),!["circle","rect","cone"].includes(s.shape)&&s.emissionAngleMode==="radial"&&(s.emissionAngleMode="fixed"),s.shape!=="path"&&(s.emissionAngleMode==="path-normal"||s.emissionAngleMode==="path-tangent")&&(s.emissionAngleMode="fixed"),s.spawnPathId=Math.max(0,Math.round(Number(s.spawnPathId)||0)),s.spawnPathDistribution!=="fixed"&&s.spawnPathDistribution!=="random"&&(s.spawnPathDistribution="fixed"),s.innerRadius=Math.max(0,Number(s.innerRadius)||0),s.outerRadius=Math.max(s.innerRadius,Number(s.outerRadius)||0),s.innerRectW=Math.max(0,Number(s.innerRectW)||0),s.innerRectH=Math.max(0,Number(s.innerRectH)||0),s.outerRectW=Math.max(s.innerRectW,Number(s.outerRectW)||0),s.outerRectH=Math.max(s.innerRectH,Number(s.outerRectH)||0);const I=Array.from(new Set((Array.isArray(s.collisionColliderIds)?s.collisionColliderIds:[]).map(E=>Math.round(Number(E))).filter(E=>Number.isFinite(E)&&E>0)));(I.length!==s.collisionColliderIds.length||I.some((E,k)=>E!==s.collisionColliderIds[k]))&&(s.collisionColliderIds=I),s.streamBehavior!=="normal"&&s.streamBehavior!=="loop"&&(s.streamBehavior="normal"),(u||!Number.isFinite(s.loopDurationFrames))&&(s.loopDurationFrames=Math.ceil(Math.max(1/30,Number(s.duration)||1)*30)),s.loopDurationFrames=Math.min(1800,Math.max(1,Math.ceil(s.loopDurationFrames))),typeof s.generateLoopStartAnimation!="boolean"&&(s.generateLoopStartAnimation=!1),typeof s.generateLoopEndAnimation!="boolean"&&(s.generateLoopEndAnimation=!1),typeof s.loopStartUseCustomDuration!="boolean"&&(s.loopStartUseCustomDuration=!1),typeof s.loopEndUseCustomDuration!="boolean"&&(s.loopEndUseCustomDuration=!1),s.loopStartDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(s.loopStartDurationFrames)||30))),s.loopEndDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(s.loopEndDurationFrames)||30))),(!Array.isArray(s.imageResources)||s.imageResources.length===0)&&(s.imageResources=cl().imageResources);for(const E of s.imageResources){!E.texture&&s.texture&&(E.texture=s.texture),E.textureName||(E.textureName="star"),E.previewUrl==="/particles/star.png"&&(E.previewUrl="/images/star.png"),E.previewUrl||(E.previewUrl=E.textureName==="star"?"/images/star.png":""),E.imageMode!=="fixed"&&E.imageMode!=="sequence"&&(E.imageMode="fixed"),E.sequencePlayback==="once"?E.sequencePlayback="once-hold":E.sequencePlayback==="loop"?E.sequencePlayback="loop-forward":["once-hide","once-hold","loop-forward","loop-reverse"].includes(E.sequencePlayback)||(E.sequencePlayback="loop-forward"),Number.isFinite(E.sequenceFps)||(E.sequenceFps=30),E.sequenceFps=Math.min(120,Math.max(1,Number(E.sequenceFps)||30)),Array.isArray(E.sequenceFrames)||(E.sequenceFrames=[]);for(const k of E.sequenceFrames)typeof k.name!="string"&&(k.name=""),typeof k.previewUrl!="string"&&(k.previewUrl=""),k.texture===void 0&&(k.texture=null);Number.isFinite(E.weight)||(E.weight=100),typeof E.locked!="boolean"&&(E.locked=!1),Number.isFinite(E.scale)||(E.scale=1),Number.isFinite(E.anchorX)||(E.anchorX=.5),Number.isFinite(E.anchorY)||(E.anchorY=.5),E.colorMode!=="fixed"&&E.colorMode!=="random"&&E.colorMode!=="lifetime"&&(E.colorMode=s.colorOverLife?"lifetime":"fixed"),E.colorStart||(E.colorStart=s.colorStart||"#ffffff"),E.colorEnd||(E.colorEnd=s.colorEnd||E.colorStart),(!Array.isArray(E.colorGradient)||E.colorGradient.length<2)&&(E.colorGradient=[{position:0,color:E.colorStart},{position:1,color:E.colorEnd}]),Object.prototype.hasOwnProperty.call(ar,E.blend)||(E.blend=s.blend||"normal"),["off","fixed","curve"].includes(E.independentAlpha)||(E.independentAlpha=s.independentAlpha||"off"),Number.isFinite(E.alpha)||(E.alpha=Number.isFinite(s.alphaScale)?s.alphaScale:1),["跟随导出","线性","贝塞尔"].includes(E.alphaCurveMode)||(E.alphaCurveMode=s.curveMode||"跟随导出"),(!Array.isArray(E.alphaCurve)||E.alphaCurve.length<2)&&(E.alphaCurve=(s.alphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})))}if(s.imageResources.length===1)s.imageResources[0].weight=100,s.imageResources[0].locked=!1;else if(h){const E=100/s.imageResources.length;s.imageResources.forEach((k,O)=>{k.weight=O===s.imageResources.length-1?100-E*(s.imageResources.length-1):E,k.locked=!1})}if(s.imageWeightVersion=1,d){const E=Number.isFinite(f)&&f!==0?f:980;s.gravity=E,s.gravityMin=E,s.gravityMax=E}if(p){const E=Number.isFinite(m)&&Number.isFinite(g)&&(m!==0||g!==0);s.windMin=E?Math.hypot(m,g):100,s.windMax=s.windMin,s.windDirection=E?Math.atan2(-g,m)*180/Math.PI:0}v&&(s.forceStrength=Number.isFinite(x)&&x!==0?x:10),y&&(s.trailConfigVersion=3,s.trailAlphaCurve=[{x:0,y:1},{x:1,y:1}],s.trailLifeLengthCurve=[{x:0,y:1},{x:1,y:1}],s.trailShapeCurve=[{x:0,y:1},{x:1,y:1}],s.trailGridRows=4,s.trailGridCols=4),(_||!s.trailResources.length)&&(s.trailResources=[{id:1,texture:S||null,textureName:b,previewUrl:M,weight:100,locked:!1,rotation:0,colorMode:s.trailColorMode,color:s.trailColor,colorGradient:s.trailColorGradient.map(E=>({...E})),blend:"normal",alphaMode:s.trailAlphaMode,alpha:s.trailAlpha,alphaCurve:s.trailAlphaCurve.map(E=>({...E})),boneCount:s.trailBoneCount,trailRatio:100,lengthMode:"fixed",length:s.trailLength,lengthMin:s.trailLength,lengthMax:s.trailLength,widthSizeMode:"fixed",width:s.trailWidth,widthMin:s.trailWidth,widthMax:s.trailWidth,widthMode:s.trailWidthMode,lifeLengthEnabled:s.trailLifeLengthEnabled,lifeLengthCurve:s.trailLifeLengthCurve.map(E=>({...E})),shapeEnabled:s.trailShapeEnabled,shapeCurve:s.trailShapeCurve.map(E=>({...E}))}]);for(const E of s.trailResources)E.textureName||(E.textureName="trail"),E.previewUrl==="/trails/trail.png"&&(E.previewUrl="/images/trail.png"),E.previewUrl||(E.previewUrl="/images/trail.png"),Number.isFinite(E.weight)||(E.weight=100),typeof E.locked!="boolean"&&(E.locked=!1),Number.isFinite(E.rotation)||(E.rotation=0),["particle","fixed","curve"].includes(E.colorMode)||(E.colorMode=s.trailColorMode||"particle"),E.color||(E.color=s.trailColor||"#ffffff"),(!Array.isArray(E.colorGradient)||E.colorGradient.length<2)&&(E.colorGradient=(s.trailColorGradient||[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}]).map(k=>({...k}))),Object.prototype.hasOwnProperty.call(ar,E.blend)||(E.blend="normal"),["particle","fixed","curve"].includes(E.alphaMode)||(E.alphaMode=s.trailAlphaMode||"particle"),Number.isFinite(E.alpha)||(E.alpha=Number.isFinite(s.trailAlpha)?s.trailAlpha:1),(!Array.isArray(E.alphaCurve)||E.alphaCurve.length<2)&&(E.alphaCurve=(s.trailAlphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),Number.isFinite(E.boneCount)||(E.boneCount=Number.isFinite(s.trailBoneCount)?s.trailBoneCount:3),Number.isFinite(E.trailRatio)||(E.trailRatio=100),E.trailRatio=Math.min(100,Math.max(0,E.trailRatio)),["fixed","random"].includes(E.lengthMode)||(E.lengthMode="fixed"),Number.isFinite(E.length)||(E.length=Number.isFinite(s.trailLength)?s.trailLength:100),Number.isFinite(E.lengthMin)||(E.lengthMin=E.length),Number.isFinite(E.lengthMax)||(E.lengthMax=E.length),["fixed","random"].includes(E.widthSizeMode)||(E.widthSizeMode="fixed"),Number.isFinite(E.width)||(E.width=Number.isFinite(s.trailWidth)?s.trailWidth:100),Number.isFinite(E.widthMin)||(E.widthMin=E.width),Number.isFinite(E.widthMax)||(E.widthMax=E.width),["particle","fixed"].includes(E.widthMode)||(E.widthMode=s.trailWidthMode||"particle"),typeof E.lifeLengthEnabled!="boolean"&&(E.lifeLengthEnabled=!!s.trailLifeLengthEnabled),(!Array.isArray(E.lifeLengthCurve)||E.lifeLengthCurve.length<2)&&(E.lifeLengthCurve=(s.trailLifeLengthCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),typeof E.shapeEnabled!="boolean"&&(E.shapeEnabled=!!s.trailShapeEnabled),(!Array.isArray(E.shapeCurve)||E.shapeCurve.length<2)&&(E.shapeCurve=(s.trailShapeCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})));if(s.trailResources.length===1&&(s.trailResources[0].weight=100,s.trailResources[0].locked=!1),C)for(const E of s.trailResources)E.alphaCurve=((F=E.alphaCurve)==null?void 0:F.length)>=2?E.alphaCurve:[{x:0,y:1},{x:1,y:1}];return s.trailResourceVersion=6,s}class LI extends Si{constructor(t,i=TI){super();w(this,"pool",[]);w(this,"cfg");w(this,"accumulator",0);w(this,"burstTimer",0);w(this,"_spawnSerial",0);w(this,"_elapsed",0);w(this,"_attractionEnabledAt",0);w(this,"_attractionWasEnabled",!1);w(this,"states",[]);w(this,"rng",Math.random);w(this,"_lastSeed",-1);w(this,"trailDebugGfx",new zi);w(this,"trail");w(this,"colliders",[]);w(this,"followSpawnX",0);w(this,"followSpawnY",0);w(this,"followSpawnAngle",0);w(this,"spawnPathSampler",null);w(this,"spawnPathClosed",!1);w(this,"followExportCurveMode","线性");w(this,"simulationTransform",null);this.cfg=pr(t),this.trail=new PI(this),this._ensurePool(i),this.addChild(this.trailDebugGfx)}setFollowExportCurveMode(t){this.followExportCurveMode=t}resolveCurveMode(t){return t==="跟随导出"?this.followExportCurveMode:t}reseed(){const t=this.cfg.seed;t!==this._lastSeed&&(this._lastSeed=t,this.rng=Wd(t>>>0))}_ensurePool(t){for(;this.pool.length=n.delay),o=i==="force"||i==="normal"&&(n.mode==="burst"||this._elapsed=1;)this.accumulator-=1,this.spawnOne();else this.burstTimer+=t,n.burstLoop?this.burstTimer>=1&&(this.burstTimer=0,this.emitBurst()):t>0&&this.burstTimer<=t&&this.emitBurst();const a=[];for(let p=0;p0){const A=Math.max(1e-4,Math.abs(n.rootScaleX)),P=Math.max(1e-4,Math.abs(n.rootScaleY)),L=-(((c=this.simulationTransform)==null?void 0:c.rotation)??n.rootRotation)*Math.PI/180,B=Math.cos(L),X=Math.sin(L),V=((l=this.simulationTransform)==null?void 0:l.centerX)??n.centerX,q=((h=this.simulationTransform)==null?void 0:h.centerY)??n.centerY,W=V+B*A*m.x-X*P*m.y,ne=-q+X*A*m.x+B*P*m.y,re=W,le=-ne,ue=n.forceCenterX-re,ae=n.forceCenterY-le,xe=Math.hypot(ue,ae);if(xe>1e-4&&xe<=n.forceRadius){let Y=1;n.forceFalloff==="linear"?Y=1-xe/n.forceRadius:n.forceFalloff==="inverse"&&(Y=Math.min(10,n.forceRadius/Math.max(xe,n.forceRadius*.1)));const j=n.forceStrength*Y*10,H=ue/xe*j,G=ae/xe*j,z=H,ie=-G;m.vx+=(B*z+X*ie)/A*t,m.vy+=(-X*z+B*ie)/P*t}}if(!m.collisionPaused&&n.damping>0){const A=Math.max(0,1-n.damping*t);m.vx*=A,m.vy*=A}if(m.collisionPaused)m.vx=0,m.vy=0;else if(m.x+=m.vx*t,m.y+=m.vy*t,this.applyColliders(m,p))continue;if(n.attraction&&!m.collisionPaused){const A=m.maxLife-m.life;if(n.attractionDelayMode==="particle"?A>=Math.max(0,n.attractionDelay):this._elapsed-this._attractionEnabledAt>=Math.max(0,n.attractionDelay)){const L=xo(n,m.x,m.y,this.simulationTransform),B=n.attractionCenterX,X=n.attractionCenterY,V=Math.max(0,n.attractionRadius);if(!m.attractionActive){if(Math.hypot(B-L.x,X-L.y)<=V){this.kill(p);continue}m.attractionActive=!0,m.attractionElapsed=0,m.attractionStartWorldX=L.x,m.attractionStartWorldY=L.y}m.attractionElapsed+=t;const q=Math.max(1e-4,n.attractionDuration),W=Math.min(1,m.attractionElapsed/q);let ne=yi(m.attractionStartWorldX,B,W),re=yi(m.attractionStartWorldY,X,W);if(n.attractionPath==="curve"){const ae=B-m.attractionStartWorldX,xe=X-m.attractionStartWorldY,Y=Math.hypot(ae,xe);if(Y>1e-4){const j=Y*.25*m.attractionCurveSide,H=(m.attractionStartWorldX+B)*.5-xe/Y*j,G=(m.attractionStartWorldY+X)*.5+ae/Y*j,z=1-W;ne=z*z*m.attractionStartWorldX+2*z*W*H+W*W*B,re=z*z*m.attractionStartWorldY+2*z*W*G+W*W*X}}const le=Math.hypot(B-ne,X-re);if(W>=1||le<=V){this.kill(p);continue}const ue=mv(n,ne,re,this.simulationTransform);m.x=ue.x,m.y=ue.y,m.vx=0,m.vy=0}}const v=g,x=m.sprite,y=n.imageResources.find(A=>A.id===m.resourceId);if(y){const A=vv(y,m.maxLife-m.life);m.imageFrameIndex=A.index,x.texture=zd(y,n.texture,m.imageFrameIndex),x.visible=A.visible}if(n.speedOverLifeEnabled){const A=ic(jd(n.speedOverLifeMode,n.speedOverLifeMin,n.speedOverLifeMax,n.speedOverLifeCurve,v,m.speedScaleTarget),1),P=m.speedScale===0?A:A/m.speedScale;m.vx*=P,m.vy*=P,m.speedScale=A}let _=m.rotationSpeed;n.rotationOverLifeEnabled&&n.rotationOverLifeMode==="curve"&&(_=yi(n.rotationSpeedMin,n.rotationSpeedMax,Zs(n.rotationOverLifeCurve,v))),m.rotation+=_*t;let C=m.x,S=m.y;if(n.noise&&n.noiseAmt>0&&n.noiseRange>0&&n.noiseSpeed>0){const A=m.maxLife-m.life,P=Math.max(0,n.noiseRange)*Math.min(1,Math.max(0,n.noiseAmt)/100)*.5,L=A*Math.max(0,n.noiseSpeed)*Math.PI*2;C+=(Math.sin(m.noisePhaseX+L)-Math.sin(m.noisePhaseX))*P,S+=(Math.sin(m.noisePhaseY+L*.83)-Math.sin(m.noisePhaseY))*P}x.x=C,x.y=S,x.rotation=-m.rotation*Math.PI/180;let b=1,M=1;n.scaleOverLifeEnabled&&(b=jd(n.scaleOverLifeMode,n.scaleOverLifeMin,n.scaleOverLifeMax,n.scaleOverLifeCurve,v,m.scaleOverLifeX),M=n.scaleOverLifeAxisMode==="separate"?jd(n.scaleOverLifeMode,n.scaleYOverLifeMin,n.scaleYOverLifeMax,n.scaleYOverLifeCurve,v,m.scaleOverLifeY):b),x.scale.set(ic(m.scaleStartX*b,1),ic(m.scaleStartY*M,1));const I=n.alphaMode==="curve"?Zs(n.alphaCurve,v,this.resolveCurveMode(n.curveMode))*n.alphaScale:n.alpha*n.alphaScale;x.alpha=ic((y==null?void 0:y.independentAlpha)==="fixed"?y.alpha:(y==null?void 0:y.independentAlpha)==="curve"?Zs(y.alphaCurve,v,this.resolveCurveMode(y.alphaCurveMode)):I,1);const F=(y==null?void 0:y.colorStart)||"#ffffff",E=(y==null?void 0:y.colorMode)==="lifetime"?tm(y.colorGradient,v):(y==null?void 0:y.colorMode)==="random"?m.colorSample:jo(F);x.tint=E,x.blendMode=ar[(y==null?void 0:y.blend)||"normal"];const k=this.trail.update(m.trail,n,m.boneName,C,S,v,x),O=xo(n,C,S,this.simulationTransform),D=((u=this.simulationTransform)==null?void 0:u.rotation)??n.rootRotation,$=Math.abs(((d=this.simulationTransform)==null?void 0:d.scaleX)??n.rootScaleX),N=Math.abs(((f=this.simulationTransform)==null?void 0:f.scaleY)??n.rootScaleY),U=k?{...k,bones:k.bones.map(A=>{const P=xo(n,A.x,A.y,this.simulationTransform);return{...A,worldX:P.x,worldY:P.y,worldRotation:D-A.rotation}})}:void 0;a.push({boneName:m.boneName,spawnId:m.spawnId,x:C,y:S,rotation:m.rotation,scaleX:x.scale.x,scaleY:x.scale.y,worldX:O.x,worldY:O.y,worldRotation:D+m.rotation,worldScaleX:x.scale.x*$,worldScaleY:x.scale.y*N,alpha:x.alpha,colorHex:E,resourceId:m.resourceId,imageFrameIndex:m.imageFrameIndex,imageVisible:x.visible,trailState:U,active:!0})}return this.states=a,a}drawTrailMeshDebug(t){this.trail.drawDebug(this.trailDebugGfx,t,this.cfg,this.pool.map(i=>i.trail))}emitBurst(){for(let t=0;t0&&this.spawnPathSampler){const a=this.estimatedEmissionCount(),c=bI(t.spawnPathDistribution,this._spawnSerial,a,this.spawnPathClosed,this.rng),l=this.spawnPathSampler(c);if(l)return{...this.applyFollowToOrigin(l.x+i,l.y+n),radialAngle:0,pathAngle:l.angle}}const r=SI(t,this.rng);return{...this.applyFollowToOrigin(i+r.x,n+r.y),radialAngle:r.radialAngle}}estimatedEmissionCount(){const t=this.cfg;return t.mode==="burst"?Math.max(1,Math.round(t.burstCount)):Math.max(1,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration))))}applyFollowToOrigin(t,i){const n=this.followSpawnAngle*Math.PI/180,r=Math.cos(n),o=Math.sin(n);return{x:this.followSpawnX+r*t-o*i,y:this.followSpawnY+o*t+r*i}}spawnOne(){const t=this.cfg;let i=this.pool.findIndex(_=>!_.active);if(i===-1)return;const n=this.spawnOrigin(),{x:r,y:o}=n,a=bo(t.lifeMode,t.lifeMin,t.lifeMax,t.lifeCurve,this.rng()),c=bo(t.speedMode,t.speedMin,t.speedMax,t.speedCurve,this.rng()),l=_I(t,n,this.followSpawnAngle,this.rng),h=this.pool[i],u=OI(t,this.rng),d=this._spawnSerial++;h.spawnId=d;const f=BI(t,Rr(t.seed,d,1540483477));h.noisePhaseX=Rr(t.seed,d,1757159915)*Math.PI*2,h.noisePhaseY=Rr(t.seed,d,48610963)*Math.PI*2,h.gravityStrength=t.useGravity&&t.gravityMode==="random"?yi(t.gravityMin,t.gravityMax,this.rng()):t.gravityMin,h.windStrength=t.wind&&t.windMode==="random"?yi(t.windMin,t.windMax,this.rng()):t.windMin,h.attractionActive=!1,h.attractionElapsed=0,h.collisionPaused=!1,h.attractionCurveSide=Rr(t.seed,d,2738958700)<.5?-1:1,h.trail.history.length=0,h.trail.bones.length=0,h.trail.currentWidth=0,h.trail.currentAlpha=0,h.trail.currentColor=16777215,h.trail.resourceId=f.id;const p=Math.min(100,Math.max(0,Number(f.trailRatio)||0)),m=t.mode==="burst"?Math.max(0,Math.round(t.burstCount)):Math.max(0,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration)))),g=p>0&&m===1&&d===0,v=Rr(t.seed,d,668265261)*100,x=(_,C,S,b,M)=>{if(_!=="random")return Math.max(0,Number(C)||0);const I=Math.max(0,Math.min(Number(S)||0,Number(b)||0)),F=Math.max(0,Math.max(Number(S)||0,Number(b)||0));return yi(I,F,Rr(t.seed,d,M))};h.trail.sampledLength=x(f.lengthMode,f.length,f.lengthMin,f.lengthMax,374761393),h.trail.sampledWidth=x(f.widthSizeMode,f.width,f.widthMin,f.widthMax,3550635116),h.trail.enabled=t.trail&&(g||v0&&h.trail.sampledWidth>0,h.trail.mesh&&(h.trail.mesh.visible=!1),h.active=!0,h.life=a,h.maxLife=a,h.x=r,h.y=o,h.trail.enabled&&h.trail.history.push({x:r,y:o}),h.vx=Math.cos(l)*c,h.vy=Math.sin(l)*c,h.scaleStartX=bo(t.scaleMode,t.scaleMin,t.scaleMax,t.scaleCurve,this.rng())*u.scale,h.scaleStartY=t.scaleAxisMode==="separate"?bo(t.scaleMode,t.scaleYMin,t.scaleYMax,t.scaleYCurve,this.rng())*u.scale:h.scaleStartX,h.alphaStart=t.alpha,h.alphaEnd=t.alphaEnd,h.rotation=t.initialRotationMode==="direction"?-Math.atan2(h.vy,h.vx)*180/Math.PI+t.initialRotationMin:bo(t.initialRotationMode,t.initialRotationMin,t.initialRotationMax,t.initialRotationCurve,this.rng()),h.rotationSpeed=t.rotationOverLifeEnabled?bo(t.rotationOverLifeMode,t.rotationSpeedMin,t.rotationSpeedMax,t.rotationOverLifeCurve,this.rng()):0,h.speedScale=1,h.speedScaleTarget=t.speedOverLifeMode==="random"?yi(t.speedOverLifeMin,t.speedOverLifeMax,this.rng()):t.speedOverLifeMin,h.scaleOverLifeX=t.scaleOverLifeMode==="random"?yi(t.scaleOverLifeMin,t.scaleOverLifeMax,this.rng()):t.scaleOverLifeMin,h.scaleOverLifeY=t.scaleOverLifeMode==="random"?yi(t.scaleYOverLifeMin,t.scaleYOverLifeMax,this.rng()):t.scaleYOverLifeMin,h.resourceId=u.id,h.colorSample=u.colorMode==="random"?tm(u.colorGradient,Rr(t.seed,d,2654435769)):jo(u.colorStart);const y=vv(u,0);h.imageFrameIndex=y.index,h.sprite.texture=zd(u,t.texture,y.index),h.sprite.anchor.set(u.anchorX,u.anchorY),h.sprite.blendMode=ar[u.blend],h.sprite.tint=h.colorSample,h.sprite.visible=!0}kill(t){const i=this.pool[t];i.active=!1,i.sprite.visible=!1,Cc(i.trail)}clear(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,Cc(t.trail)}get activeCount(){let t=0;for(const i of this.pool)i.active&&t++;return t}capture(){const t=[];for(const i of this.pool)i.active&&t.push({boneName:i.boneName,spawnId:i.spawnId,x:i.sprite.x,y:i.sprite.y,rotation:i.rotation,scaleX:i.sprite.scale.x,scaleY:i.sprite.scale.y,...this.captureWorldTransform(i),alpha:i.sprite.alpha,colorHex:i.sprite.tint,resourceId:i.resourceId,imageFrameIndex:i.imageFrameIndex,imageVisible:i.sprite.visible,active:!0,trailState:this.cfg.trail&&i.trail.bones.length?{bones:i.trail.bones.map(n=>{var o;const r=xo(this.cfg,n.x,n.y,this.simulationTransform);return{...n,worldX:r.x,worldY:r.y,worldRotation:(((o=this.simulationTransform)==null?void 0:o.rotation)??this.cfg.rootRotation)-n.rotation}}),activeBoneCount:i.trail.bones.length,width:i.trail.currentWidth,alpha:i.trail.currentAlpha,colorHex:i.trail.currentColor,resourceId:i.trail.resourceId}:void 0});return t}captureWorldTransform(t){var r,o,a;const i=xo(this.cfg,t.sprite.x,t.sprite.y,this.simulationTransform),n=((r=this.simulationTransform)==null?void 0:r.rotation)??this.cfg.rootRotation;return{worldX:i.x,worldY:i.y,worldRotation:n+t.rotation,worldScaleX:t.sprite.scale.x*Math.abs(((o=this.simulationTransform)==null?void 0:o.scaleX)??this.cfg.rootScaleX),worldScaleY:t.sprite.scale.y*Math.abs(((a=this.simulationTransform)==null?void 0:a.scaleY)??this.cfg.rootScaleY)}}apply(t){const i=new Map;for(const n of t)i.set(n.boneName,n);for(const n of this.pool){const r=i.get(n.boneName);if(!r){n.active=!1,n.sprite.visible=!1,n.trail.mesh&&(n.trail.mesh.visible=!1);continue}n.active=r.active;const o=n.sprite;if(o.visible=r.active&&r.imageVisible!==!1,o.x=r.x,o.y=r.y,o.rotation=-r.rotation*Math.PI/180,o.scale.set(r.scaleX,r.scaleY),o.alpha=r.alpha,o.tint=r.colorHex,r.resourceId!=null){const a=this.cfg.imageResources.find(c=>c.id===r.resourceId);a&&(n.imageFrameIndex=r.imageFrameIndex??0,o.texture=zd(a,this.cfg.texture,n.imageFrameIndex),o.anchor.set(a.anchorX,a.anchorY),o.blendMode=ar[a.blend])}this.cfg.trail&&r.trailState?this.trail.applyState(n.trail,this.cfg,n.sprite,r.trailState):n.trail.mesh&&(n.trail.mesh.visible=!1)}}reset(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,Cc(t.trail);this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=!1,this._lastSeed=this.cfg.seed,this.rng=Wd(this.cfg.seed>>>0)}restartEmissionCycle(){this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=this.cfg.attraction,this._lastSeed=this.cfg.seed,this.rng=Wd(this.cfg.seed>>>0)}}const io=new Map,Zr=new Map;function DI(s){return[...io.values()].some(e=>e===s)}function Zb(s){if(!(DI(s)||(Zr.get(s)||0)>0)){Zr.delete(s);for(const e of s.textures)e.destroy(!0)}}function NI(s){const e=Zr.get(s)||0;e>1?Zr.set(s,e-1):Zr.delete(s),Zb(s)}function UI(s){return io.get(s)||null}function nu(s,e){wl(s),io.set(s,e)}function $I(s){const e=io.get(s);return e?(Zr.set(e,(Zr.get(e)||0)+1),e):null}function XI(s,e){const t=io.get(s);return t?(nu(e,t),!0):!1}function wl(s){const e=io.get(s);e&&(io.delete(s),Zb(e))}function Nt(s){if(Array.isArray(s))return s.map(e=>Nt(e));if(s&&typeof s=="object"){const e=Object.getPrototypeOf(s);if(e===Object.prototype||e===null){const t={};for(const[i,n]of Object.entries(s))t[i]=Nt(n);return t}}return s}const Jb=["3.8","4.0","4.1","4.2","4.3"];function ah(s){const e=String(s||"").trim();return Jb.find(t=>e===t||e.startsWith(`${t}.`))||null}function im(){return Jb.join(" / ")}function VI(s){return s==="4.3"?"4.3":"4.2"}function ap(){return{imagesPath:"./images/",spineVersion:"4.2",keyframeCurve:"linear",fps:30,omitFps:!1,integerFrameAlignment:!0,bonePool:!0,excludeEmptyAnimations:!1,fileName:"SpineParticle.json"}}function Qb(s){const e=Object.assign(ap(),s||{});return e.imagesPath=String(e.imagesPath||"./images/"),e.spineVersion=ah(e.spineVersion)||"4.2",e.keyframeCurve=e.keyframeCurve==="bezier"?"bezier":"linear",e.fps=Math.min(240,Math.max(1,Math.round(Number(e.fps)||30))),e.omitFps=e.omitFps===!0,e.integerFrameAlignment=e.integerFrameAlignment!==!1,e.bonePool=e.bonePool!==!1,e.excludeEmptyAnimations=e.excludeEmptyAnimations===!0,e.fileName=String(e.fileName||"SpineParticle.json"),e}const sm=30;function Ac(s,e=1){return Math.min(1800,Math.max(1,Math.ceil(Number(s)||e)))}function e1(s,e=30){const t=Math.max(0,Number(s.lifeMin)||0),i=Math.max(0,Number(s.lifeMax)||0),n=s.lifeMode==="fixed"?t:Math.max(t,i);return Ac(Math.ceil(n*Math.max(1,e)),sm)}function lr(s,e=30){const t=Ac(s.loopDurationFrames),i=e1(s,e),n=s.generateLoopStartAnimation?s.loopStartUseCustomDuration?Ac(s.loopStartDurationFrames,sm):i:0,r=s.generateLoopEndAnimation?s.loopEndUseCustomDuration?Ac(s.loopEndDurationFrames,sm):i:0;return{start:n,loop:t,end:r,total:n+t+r}}function t1(s,e){const t=lr(s,e),n=Math.max(0,Math.ceil(Math.max(0,Number(s.delay)||0)*Math.max(1,e)))+t.start;return{start:n,end:n+t.loop}}function Ec(s,e,t){const i=Math.max(1,Math.floor(t)-1),n=Math.min(i-1,Math.max(0,Math.floor(Number(s)||0))),r=Math.min(i,Math.max(n+1,Math.floor(Number(e)||i)));return{start:n,end:r}}function YI(s,e,t){const i=Math.max(1,e-1),n=Math.max(1,t-1),r=s.end>=i?n:s.end;return Ec(s.start,r,t)}let sc=1,nc=1,rc=1,oc=1;function ac(s,e){const t=new Set(e),i=`${s} Copy`;if(!t.has(i))return i;let n=2;for(;t.has(`${i} ${n}`);)n++;return`${i} ${n}`}const ao=nM("particle",{state:()=>({editor:{viewScale:1,viewX:0,viewY:0},systems:[],colliders:[],paths:[],spines:[],activeId:0,activeObjectType:"particle",activeObjectId:0,timeline:{playing:!0,loop:!0,frame:0,totalFrames:60,playbackStart:0,playbackEnd:59,fps:30,recorded:!1,animation:"animation",animations:["animation"]},settings:{parameterPanelOnRight:!0,tickEnabled:!1,axisFontSize:12,tickWidth:1,showAxisLabels:!0,axisColor:"#7a86ad",undoLimit:20,backgroundX:0,backgroundY:0,backgroundOpacity:1,backgroundImageName:"",backgroundImageData:"",showEmitter:!0,showBones:!1,bonePointDrawSize:1,boneAxisDrawSize:2,showSkinMesh:!1,showGrid:!0,exportSettings:ap()}}),getters:{activeSystemCount:s=>s.systems.length},actions:{syncSceneSequences(){sc=Math.max(sc,...this.systems.map(s=>s.id+1),1),nc=Math.max(nc,...this.colliders.map(s=>s.id+1),1),rc=Math.max(rc,...this.paths.map(s=>s.id+1),1),oc=Math.max(oc,...this.spines.map(s=>s.id+1),1)},addSystem(s){const e=cl();s!=null&&s.config&&Object.assign(e,s.config);const t=new Set(this.systems.map(r=>r.config.name));if(t.has(e.name)){let r=0;for(const a of this.systems){const c=/^ParticleSystem(\d+)$/.exec(a.config.name);c&&(r=Math.max(r,parseInt(c[1],10)))}e.name=`ParticleSystem${r+1}`;let o=2;for(;t.has(e.name);)e.name=`ParticleSystem${r+o}`,o++}const i=this.timeline.animations.includes(this.timeline.animation)?this.timeline.animation:this.timeline.animations[0]||"animation",n={id:sc++,visible:!0,animation:i,config:e};return this.systems.push(n),this.activeId=n.id,this.activeObjectType="particle",this.activeObjectId=n.id,n},removeSystem(s){var i;const e=this.systems.findIndex(n=>n.id===s);e>=0&&this.systems.splice(e,1),this.activeId===s&&(this.activeId=((i=this.systems[0])==null?void 0:i.id)??0);const t=this.systems.find(n=>n.id===this.activeId);if(t&&(this.timeline.animation=t.animation),this.activeObjectType==="particle"&&this.activeObjectId===s){const n=this.systems[0];this.activeObjectId=(n==null?void 0:n.id)??0}},selectSystem(s){this.activeId=s,this.activeObjectType="particle",this.activeObjectId=s;const e=this.systems.find(t=>t.id===s);e&&(this.timeline.animation=e.animation)},setSystemAnimation(s,e){if(!this.timeline.animations.includes(e))return;const t=this.systems.find(i=>i.id===s);t&&(t.animation=e,this.timeline.animation=e)},addAnimation(){const s=new Set(this.timeline.animations);let e=2,t=`animation${e}`;for(;s.has(t);)t=`animation${++e}`;this.timeline.animations.push(t),this.timeline.animation=t;const i=this.systems.find(n=>n.id===this.activeId);return i&&(i.animation=t),t},renameAnimation(s,e){const t=e.trim(),i=this.timeline.animations.indexOf(s);if(i<0||!t||t!==s&&this.timeline.animations.includes(t))return!1;this.timeline.animations[i]=t;for(const n of this.systems)n.animation===s&&(n.animation=t);return this.timeline.animation===s&&(this.timeline.animation=t),!0},removeAnimation(s){if(this.timeline.animations.length<=1)return!1;const e=this.timeline.animations.indexOf(s);if(e<0)return!1;this.timeline.animations.splice(e,1);const t=this.timeline.animations[Math.min(e,this.timeline.animations.length-1)];for(const i of this.systems)i.animation===s&&(i.animation=t);return this.timeline.animation===s&&(this.timeline.animation=t),!0},addCollider(){const s=nc++,e={id:s,name:`Collider${s}`,visible:!0,shape:"circle",enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,radius:50,radiusX:70,radiusY:45,width:120,height:80,sides:6,response:"physics",elasticity:.8,friction:.3,followPath:!1,followPathId:0,followDuration:2,followPathRotation:!1,followCurveMode:"跟随导出",followCurve:[{x:0,y:0},{x:1,y:1}]};return this.colliders.push(e),this.activeObjectType="collision",this.activeObjectId=e.id,e},addPath(){const s=rc++,e={id:s,name:`Path${s}`,visible:!0,enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,closed:!1,color:"#ff933e",preset:"",points:[]};return this.paths.push(e),this.activeObjectType="path",this.activeObjectId=e.id,e},addSpine(){const s=oc++,e={id:s,name:`SpineSkeleton${s}`,enabled:!0,visible:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,timeOffset:0,skeletonFileName:"",atlasFileName:"",textureFileNames:[],dataVersion:"",sourceBundle:null,selectedAnimation:"",selectedBone:"",animations:[],bones:[],assetVersion:0,status:"empty",error:""};return this.spines.push(e),this.activeObjectType="spine",this.activeObjectId=e.id,e},duplicateSelectedObject(){const s=this.activeObjectId;if(!s)return null;if(this.activeObjectType==="particle"){const i=this.systems.find(r=>r.id===s);if(!i)return null;const n=Nt(i);return n.id=sc++,n.config.name=ac(i.config.name,this.systems.map(r=>r.config.name)),n.frames=void 0,this.systems.push(n),this.activeId=n.id,this.activeObjectId=n.id,this.timeline.animation=n.animation,n}if(this.activeObjectType==="collision"){const i=this.colliders.find(r=>r.id===s);if(!i)return null;const n=Nt(i);return n.id=nc++,n.name=ac(i.name,this.colliders.map(r=>r.name)),this.colliders.push(n),this.activeObjectId=n.id,n}if(this.activeObjectType==="path"){const i=this.paths.find(r=>r.id===s);if(!i)return null;const n=Nt(i);return n.id=rc++,n.name=ac(i.name,this.paths.map(r=>r.name)),this.paths.push(n),this.activeObjectId=n.id,n}const e=this.spines.find(i=>i.id===s);if(!e)return null;const t=Nt(e);return t.id=oc++,t.name=ac(e.name,this.spines.map(i=>i.name)),t.selectedBone="",XI(e.id,t.id),this.spines.push(t),this.activeObjectId=t.id,t},selectSceneObject(s,e){if(this.activeObjectType=s,this.activeObjectId=e,s==="particle"){this.activeId=e;const t=this.systems.find(i=>i.id===e);t&&(this.timeline.animation=t.animation)}},removeCollider(s){var t;const e=this.colliders.findIndex(i=>i.id===s);e>=0&&this.colliders.splice(e,1);for(const i of this.systems){const n=pr(i.config);n.collisionColliderIds=n.collisionColliderIds.filter(r=>r!==s)}if(this.activeObjectType==="collision"&&this.activeObjectId===s){const i=this.systems[0];this.activeObjectType=i?"particle":"collision",this.activeObjectId=(i==null?void 0:i.id)??((t=this.colliders[0])==null?void 0:t.id)??0}},removePath(s){var t;const e=this.paths.findIndex(i=>i.id===s);if(e>=0&&this.paths.splice(e,1),this.activeObjectType==="path"&&this.activeObjectId===s){const i=this.systems[0];this.activeObjectType=i?"particle":"path",this.activeObjectId=(i==null?void 0:i.id)??((t=this.paths[0])==null?void 0:t.id)??0}},removeSpine(s){wl(s);const e=this.spines.findIndex(t=>t.id===s);if(e>=0&&this.spines.splice(e,1),this.activeObjectType==="spine"&&this.activeObjectId===s){const t=this.systems[0],i=this.colliders[0],n=this.paths[0],r=this.spines[0];t?(this.activeObjectType="particle",this.activeObjectId=t.id,this.activeId=t.id):i?(this.activeObjectType="collision",this.activeObjectId=i.id):n?(this.activeObjectType="path",this.activeObjectId=n.id):(this.activeObjectType="spine",this.activeObjectId=(r==null?void 0:r.id)??0)}this.recalcTotalFrames()},play(){const s=Ec(this.timeline.playbackStart,this.timeline.playbackEnd,this.timeline.totalFrames);(this.timeline.frame=s.end)&&(this.timeline.frame=s.start),this.timeline.playing=!0},pause(){this.timeline.playing=!1},togglePlay(){this.timeline.playing?this.pause():this.play()},toStart(){this.timeline.frame=this.timeline.playbackStart},previousFrame(){this.timeline.playing=!1,this.timeline.frame=Math.max(this.timeline.playbackStart,this.timeline.frame-1)},nextFrame(){this.timeline.playing=!1,this.timeline.frame=Math.min(this.timeline.playbackEnd,this.timeline.frame+1)},toEnd(){this.timeline.playing=!1,this.timeline.frame=this.timeline.playbackEnd},toggleLoop(){this.timeline.loop=!this.timeline.loop},setFrame(s){this.timeline.frame=Math.max(0,Math.min(s,this.timeline.totalFrames-1))},setPlaybackStart(s){const e=Ec(s,this.timeline.playbackEnd,this.timeline.totalFrames);this.timeline.playbackStart=e.start,this.timeline.playbackEnd=e.end,this.timeline.framee.end&&(this.timeline.frame=e.end)},recalcTotalFrames(){const s=this.timeline.fps||30;let e=0;for(const r of this.systems){const o=r.config,a=Math.max(0,Number(o.lifeMin)||0),c=Math.max(0,Number(o.lifeMax)||0),l=o.lifeMode==="fixed"?a:Math.max(a,c),h=o.mode==="stream"?o.streamBehavior==="loop"?Math.max(1/s,Math.ceil(Math.max(1,Number(o.loopDurationFrames)||1))/s):Math.max(1/s,Number(o.duration)||0):0;let u=Math.max(0,Number(o.delay)||0)+h+l;o.mode==="stream"&&o.streamBehavior==="loop"&&(u=Math.max(0,Number(o.delay)||0)+lr(o,s).total/s),u>e&&(e=u)}for(const r of this.spines){const o=r.animations.find(c=>c.name===r.selectedAnimation);if(!o)continue;const a=Math.max(0,Number(r.timeOffset)||0)+Math.max(0,o.duration||0);a>e&&(e=a)}for(const r of this.colliders){if(!r.followPath||!r.followPathId)continue;const o=Math.max(0,Number(r.followDuration)||0);o>e&&(e=o)}const t=this.timeline.totalFrames,i=Math.max(2,Math.ceil(e*s)+1);this.timeline.totalFrames=i;const n=YI({start:this.timeline.playbackStart,end:this.timeline.playbackEnd},t,i);return this.timeline.playbackStart=n.start,this.timeline.playbackEnd=n.end,this.timeline.frame>=i&&(this.timeline.frame=i-1),i}}}),i1="SpineParticle.SystemSettings",s1=1,qd="SpineParticle.SystemSettings.v1";function _a(s,e,t,i){const n=Number(s);return Math.min(t,Math.max(e,Number.isFinite(n)?n:i))}function GI(s){return{parameterPanelOnRight:s.parameterPanelOnRight,undoLimit:s.undoLimit,showEmitter:s.showEmitter,showBones:s.showBones,bonePointDrawSize:s.bonePointDrawSize,boneAxisDrawSize:s.boneAxisDrawSize,showSkinMesh:s.showSkinMesh,tickEnabled:s.tickEnabled,axisFontSize:s.axisFontSize,tickWidth:s.tickWidth,showAxisLabels:s.showAxisLabels,axisColor:s.axisColor}}function HI(s,e){const t=n=>s[n]==null?!!e[n]:s[n]===!0,i=typeof s.axisColor=="string"&&/^#[0-9a-f]{6}$/i.test(s.axisColor)?s.axisColor:e.axisColor;return{parameterPanelOnRight:t("parameterPanelOnRight"),undoLimit:Math.round(_a(s.undoLimit,1,200,e.undoLimit)),showEmitter:t("showEmitter"),showBones:t("showBones"),bonePointDrawSize:_a(s.bonePointDrawSize,.1,10,e.bonePointDrawSize),boneAxisDrawSize:_a(s.boneAxisDrawSize,.1,10,e.boneAxisDrawSize),showSkinMesh:t("showSkinMesh"),tickEnabled:t("tickEnabled"),axisFontSize:Math.round(_a(s.axisFontSize,8,40,e.axisFontSize)),tickWidth:_a(s.tickWidth,1,5,e.tickWidth),showAxisLabels:t("showAxisLabels"),axisColor:i}}function jI(s){let e;try{e=JSON.parse(s)}catch{throw new Error("系统设置缓存不是有效的 JSON")}const t=e;if(t.format!==i1)throw new Error("不是 Spine粒子编辑器系统设置缓存");if(t.version!==s1)throw new Error(`暂不支持系统配置版本:${t.version??"未知"}`);if(!t.settings||typeof t.settings!="object")throw new Error("系统设置缓存缺少 settings");return t}function WI(s,e){Object.assign(s.settings,HI(e,s.settings))}let lc=null;function zI(s){lc==null||lc();try{const e=localStorage.getItem(qd);e&&WI(s,jI(e).settings)}catch{try{localStorage.removeItem(qd)}catch{}}lc=Xi(()=>GI(s.settings),e=>{const t={format:i1,version:s1,savedAt:new Date().toISOString(),settings:e};try{localStorage.setItem(qd,JSON.stringify(t))}catch{}},{deep:!0})}function qI(s,e=0){if(s<=0)return 1;const t=Math.pow(10,Math.floor(Math.log10(s))),i=[1,2,5,10,20,50,100];let n=1;for(const r of i)if(r*t>=s){n=r*t;break}return Math.max(n,e)}function KI(s,e,t,i,n){if(!t)return;const r=t;r.clear();const o=s.settings;if(!o.tickEnabled){for(const b of n)b.visible=!1;return}const a=0,c=0,l=e.screen.width/s.editor.viewScale,h=e.screen.height/s.editor.viewScale,u=+("0x"+o.axisColor.replace("#",""));r.lineStyle(1.5,u,.35),r.moveTo(-l,c),r.lineTo(l,c),r.moveTo(a,-h),r.lineTo(a,h);const d=s.editor.viewScale,f=qI(50/d),p=l,m=h,g=Math.max(1,o.tickWidth);if(o.tickEnabled){for(let b=0;b<=l;b+=f){const M=Math.round(b/f)*f;M!==0&&(r.lineStyle(g,u,.25),r.moveTo(M,c-4),r.lineTo(M,c+4),r.moveTo(-M,c-4),r.lineTo(-M,c+4))}for(let b=0;b<=h;b+=f)Math.round(b/f)*f!==0&&(r.lineStyle(g,u,.25),r.moveTo(a-4,b),r.lineTo(a+4,b),r.moveTo(a-4,-b),r.lineTo(a+4,-b))}const v=e.screen.width/2+s.editor.viewX,x=e.screen.height*.5+s.editor.viewY,y=o.axisFontSize,_=+("0x"+o.axisColor.replace("#",""));for(;n.length<64;){const b=new op("",{fontFamily:"monospace",fontSize:y,fill:_});b.anchor.set(.5,.5),i.addChild(b),n.push(b)}let C=0;const S=o.showAxisLabels&&o.tickEnabled;for(let b=0;b<=l;b+=f){const M=Math.round(b/f)*f;if(M===0||!S||M>p)continue;const I=n[C++];if(!I)break;I.style.fontSize=y,I.text=String(M),I.position.set(v+M*d,x+9),I.visible=!0;const F=n[C++];if(!F)break;F.style.fontSize=y,F.text=String(-M),F.position.set(v-M*d,x+9),F.visible=!0}for(let b=0;b<=h;b+=f){const M=Math.round(b/f)*f;if(M===0||!S||M>m)continue;const I=n[C++];if(!I)break;I.style.fontSize=y,I.text=String(M),I.position.set(v+8,x-b*d),I.visible=!0;const F=n[C++];if(!F)break;F.style.fontSize=y,F.text=String(-M),F.position.set(v+8,x+b*d),F.visible=!0}for(;Cx.id===s.activeId);if(!n||n.visible===!1)return;const r=n.config,o=e.get(n.id),a=(o==null?void 0:o.x)??r.centerX??0,c=-((o==null?void 0:o.y)??r.centerY??0),l=r.shape;if(l==="point"||l==="path")return;const h=r.rootScaleX??1,u=r.rootScaleY??1,d=-((o==null?void 0:o.rotation)??r.rootRotation??0)*Math.PI/180,f=Math.cos(d),p=Math.sin(d),m=r.offsetX??0,g=r.offsetY??0,v=(x,y)=>{const _=x+m,C=-y-g,S=_*h,b=C*u;return[a+S*f-b*p,c+(S*p+b*f)]};if(l==="circle"){const x=oh(r.innerRadius,r.outerRadius);i.lineStyle(2,3991658,.7);const y=48;for(const _ of[x.outer,x.inner])if(!(_<=0))for(let C=0;C<=y;C++){const S=C/y*Math.PI*2,[b,M]=v(Math.cos(S)*_,Math.sin(S)*_);C===0?i.moveTo(b,M):i.lineTo(b,M)}}else if(l==="rect"){const x=Kb(r);i.lineStyle(2,4885759,.7);for(const[y,_]of[[x.outerW,x.outerH],[x.innerW,x.innerH]]){if(y<=0||_<=0)continue;const C=y/2,S=_/2,b=v(-C,-S),M=v(C,-S),I=v(C,S),F=v(-C,S);i.moveTo(b[0],b[1]),i.lineTo(M[0],M[1]),i.lineTo(I[0],I[1]),i.lineTo(F[0],F[1]),i.lineTo(b[0],b[1])}}else if(l==="cone"){const x=oh(r.innerRadius,r.outerRadius),y=r.coneAngle/2*Math.PI/180,_=r.coneDirection*Math.PI/180,C=v(Math.cos(_-y)*x.inner,Math.sin(_-y)*x.inner),S=v(Math.cos(_+y)*x.inner,Math.sin(_+y)*x.inner),b=v(Math.cos(_-y)*x.outer,Math.sin(_-y)*x.outer),M=v(Math.cos(_+y)*x.outer,Math.sin(_+y)*x.outer);i.lineStyle(2,3991658,.7),i.moveTo(C[0],C[1]),i.lineTo(b[0],b[1]),i.moveTo(S[0],S[1]),i.lineTo(M[0],M[1]),i.lineStyle(1,3991658,.5);const I=24;for(const F of[x.outer,x.inner])if(!(F<=0))for(let E=0;E<=I;E++){const k=_-y+2*y*E/I,[O,D]=v(Math.cos(k)*F,Math.sin(k)*F);E===0?i.moveTo(O,D):i.lineTo(O,D)}}}function QI(s,e){if(!e)return;const t=e;t.clear();const i=s.systems.find(c=>c.id===s.activeId);if((i==null?void 0:i.visible)===!1)return;const n=i==null?void 0:i.config;if(!(n!=null&&n.forceField)||n.forceRadius<=0)return;const r=n.forceCenterX,o=-n.forceCenterY,a=n.forceStrength>=0?5818367:16739194;t.lineStyle(2,a,.85),t.beginFill(a,.08),t.drawCircle(r,o,n.forceRadius),t.endFill(),t.lineStyle(1,a,.7),t.moveTo(r-9,o),t.lineTo(r+9,o),t.moveTo(r,o-9),t.lineTo(r,o+9),t.beginFill(a,.95),t.drawCircle(r,o,4),t.endFill()}function eR(s,e){if(!e)return;const t=e;t.clear();const i=s.systems.find(l=>l.id===s.activeId);if((i==null?void 0:i.visible)===!1)return;const n=i==null?void 0:i.config;if(!(n!=null&&n.attraction))return;const r=n.attractionCenterX,o=-n.attractionCenterY,a=Math.max(0,n.attractionRadius),c=16731487;a>0&&(t.lineStyle(2,c,.95),t.beginFill(c,.09),t.drawCircle(r,o,a),t.endFill()),t.lineStyle(1,c,.85),t.moveTo(r-10,o),t.lineTo(r+10,o),t.moveTo(r,o-10),t.lineTo(r,o+10),t.beginFill(c,1),t.drawCircle(r,o,a>0?4:6),t.endFill()}function tR(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),o=Math.max(1e-4,Math.abs(s.scaleX??1)),a=Math.max(1e-4,Math.abs(s.scaleY??1));return{x:s.x+n*e*o-r*t*a,y:s.y+r*e*o+n*t*a}}function wo(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),o=Math.max(1e-4,Math.abs(s.scaleX??1)),a=Math.max(1e-4,Math.abs(s.scaleY??1)),c=e-s.x,l=t-s.y;return{x:(n*c+r*l)/o,y:(-r*c+n*l)/a}}function n1(s,e,t="linear"){if(!s.length)return e;const i=[...s].sort((n,r)=>n.x-r.x);if(e<=i[0].x)return i[0].y;for(let n=1;nl.id===a.emitterFollowSpineId);!c||c.visible===!1||n.set(`${a.emitterFollowSpineId}:${a.emitterFollowBoneName}`,{spineId:a.emitterFollowSpineId,boneName:a.emitterFollowBoneName})}for(const o of n.values()){const a=e==null?void 0:e.getBoneWorldTransform(o.spineId,o.boneName);if(!a)continue;const c=a.x,l=-a.y;i.lineStyle(2,12881151,.95),i.beginFill(12881151,.2),i.drawCircle(c,l,8),i.endFill(),i.beginFill(15919103,1),i.drawCircle(c,l,3.5),i.endFill()}}function sR(s,e,t){if(!t)return;const i=t;if(i.clear(),!s.value)return;const n=e();if(!n)return;const r=n.x,o=-n.y,a=n.scaleX,c=n.scaleY,l=-n.rotation*Math.PI/180,h=Math.cos(l),u=Math.sin(l),d=(m,g)=>{const v=m*a,x=-g*c;return[r+v*h-x*u,o+(v*u+x*h)]},f=(m,g,v,x)=>{const y=d(m,g),_=d(v,x);i.moveTo(y[0],y[1]),i.lineTo(_[0],_[1])},p=26;if(i.lineStyle(2,3526911,.9),i.beginFill(3526911,.25),i.drawCircle(r,o,6),i.endFill(),s.value==="translate")i.lineStyle(2,3526911,.9),f(-p,0,p,0),f(0,-p,0,p),f(p-6,-4,p,0),f(p,0,p-6,4),f(-20,-4,-p,0),f(-p,0,-20,4),f(-4,p-6,0,p),f(0,p,4,p-6),f(-4,-20,0,-p),f(0,-p,4,-20);else if(s.value==="rotate"){i.lineStyle(2,3526911,.8);const m=48;for(let x=0;x<=m;x++){const y=x/m*Math.PI*2,[_,C]=d(Math.cos(y)*p,Math.sin(y)*p);x===0?i.moveTo(_,C):i.lineTo(_,C)}const[g,v]=d(0,p);i.beginFill(3526911,.95),i.drawCircle(g,v,4),i.endFill()}else if(s.value==="scale"){i.lineStyle(2,3526911,.9);const g=[[-p,-p],[p,-p],[p,p],[-p,p]].map(([v,x])=>d(v,x));i.moveTo(g[0][0],g[0][1]),i.lineTo(g[1][0],g[1][1]),i.lineTo(g[2][0],g[2][1]),i.lineTo(g[3][0],g[3][1]),i.lineTo(g[0][0],g[0][1]),i.beginFill(3526911,.9);for(const v of g)i.drawRect(v[0]-3,v[1]-3,6,6);i.endFill()}}function nR(s,e=16777215){const t=Number.parseInt(s.replace("#",""),16);return Number.isFinite(t)?t:e}function rR(s,e,t){if(!t)return;const i=t;i.clear();for(const n of e){if(n.visible===!1)continue;const r=s.activeObjectType==="collision"&&s.activeObjectId===n.id,o=n.enabled?r?16735858:13911899:5792116,a=n.rotation*Math.PI/180,c=Math.cos(a),l=Math.sin(a),h=Math.max(1e-4,Math.abs(n.scaleX??1)),u=Math.max(1e-4,Math.abs(n.scaleY??1)),d=(m,g)=>({x:n.x+c*m*h-l*g*u,y:-(n.y+l*m*h+c*g*u)});let f=[];if(n.shape==="circle"||n.shape==="ellipse"){const m=n.shape==="circle"?n.radius:n.radiusX,g=n.shape==="circle"?n.radius:n.radiusY;f=Array.from({length:49},(v,x)=>{const y=x/48*Math.PI*2;return d(Math.cos(y)*m,Math.sin(y)*g)})}else if(n.shape==="rect"){const m=n.width*.5,g=n.height*.5;f=[d(-m,-g),d(m,-g),d(m,g),d(-m,g),d(-m,-g)]}else{const m=Math.max(3,Math.min(16,Math.round(n.sides)));f=Array.from({length:m+1},(g,v)=>{const x=Math.PI*.5+v%m/m*Math.PI*2;return d(Math.cos(x)*n.width*.5,Math.sin(x)*n.height*.5)})}if(!f.length)continue;i.lineStyle(r?2.5:1.5,o,n.enabled?.95:.45),i.beginFill(o,r?.12:.055),i.moveTo(f[0].x,f[0].y);for(let m=1;m{const f=tR(n,u,d);return{x:f.x,y:-f.y}},c=n.points[0],l=a(c.x,c.y);i.lineStyle(r?2.5:1.8,o,r?1:.75),i.moveTo(l.x,l.y);const h=n.closed?n.points.length:n.points.length-1;for(let u=0;u{const f=a(u.x,u.y),p=a(u.x+u.inX,u.y+u.inY),m=a(u.x+u.outX,u.y+u.outY),g=Math.hypot(u.inX,u.inY)>.01,v=Math.hypot(u.outX,u.outY)>.01;i.lineStyle(1,11121867,.65),g&&(i.moveTo(f.x,f.y),i.lineTo(p.x,p.y)),v&&(i.moveTo(f.x,f.y),i.lineTo(m.x,m.y)),g&&(i.beginFill(14015724,.95),i.drawCircle(p.x,p.y,3),i.endFill()),v&&(i.beginFill(14015724,.95),i.drawCircle(m.x,m.y,3),i.endFill()),i.beginFill(e.has(d)?16777215:o,1),i.lineStyle(1.5,e.has(d)?6126847:16777215,.95),i.drawCircle(f.x,f.y,e.has(d)?5:4),i.endFill()})}}function aR(s,e,t,i){var o;const n=Number.isFinite(e.worldX)&&Number.isFinite(e.worldY),r=Number.isFinite(e.worldRotation);s.push({boneName:e.boneName,x:n?e.worldX:e.x,y:n?-e.worldY:e.y,rotation:r?-e.worldRotation:-e.rotation,parentX:t,parentY:i}),(o=e.trailState)!=null&&o.bones.length&&e.trailState.bones.forEach(a=>{const c=Number.isFinite(a.worldX)&&Number.isFinite(a.worldY),l=Number.isFinite(a.worldRotation);s.push({boneName:a.boneName,x:c?a.worldX:a.x,y:c?-a.worldY:a.y,rotation:l?-a.worldRotation:a.rotation,parentX:t,parentY:i,trail:!0})})}function xv(s,e,t,i,n,r,o,a){const c=r*.62,l=e+i*r,h=t+n*r,u=Math.max(2.5,r*.32),d=Math.max(1.7,r*.22),f=l-i*u,p=h-n*u,m=-n,g=i;s.lineStyle(o,a,.95),s.moveTo(e-i*c,t-n*c),s.lineTo(f,p),s.lineStyle(0),s.beginFill(a,.95),s.drawPolygon([l,h,f+m*d,p+g*d,f-m*d,p-g*d]),s.endFill()}function lR(s,e,t){if(!t)return;const i=t;if(i.clear(),!e.settings.showBones)return;const n=0,r=0,o=Math.max(.25,Math.abs(e.editor.viewScale)||1),a=Math.min(10,Math.max(.1,Number(e.settings.bonePointDrawSize)||1)),c=Math.min(10,Math.max(.1,Number(e.settings.boneAxisDrawSize)||2)),l=2.5*a/o,h=4.5*c/o,u=Math.max(.65,c*.625)/o;for(const d of s){const f=d.trail?16731533:16747610;i.lineStyle(1,f,d.trail?.65:.35),i.moveTo(d.parentX??n,d.parentY??r),i.lineTo(d.x,d.y);const p=d.rotation*Math.PI/180,m=Math.cos(p),g=Math.sin(p);xv(i,d.x,d.y,m,g,h,u,15684432),xv(i,d.x,d.y,g,-m,h,u,5622123),i.beginFill(f,.9),i.drawCircle(d.x,d.y,l),i.endFill()}}function Ai(s){return s.map(e=>({...e,trailState:e.trailState?{...e.trailState,bones:e.trailState.bones.map(t=>({...t}))}:void 0}))}function cR(s){const e=new Map;for(const i of s)for(const n of i)e.has(n.boneName)||e.set(n.boneName,Ai([n])[0]);const t=[...e.keys()].sort((i,n)=>{const r=Number(i.replace(/^p_/,"")),o=Number(n.replace(/^p_/,""));return Number.isFinite(r)&&Number.isFinite(o)?r-o:i.localeCompare(n)});for(let i=0;i[r.boneName,r]));s[i]=t.map(r=>{const o=n.get(r);return o||{...Ai([e.get(r)])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}})}}function hR(s){s.length<2||(s[s.length-1]=Ai(s[0]))}function uR(s,e){const t=Math.max(0,s.length-1),i=[];for(let n=0;n<=e;n++){const r=Math.min(t,Math.round(n/e*t));i.push(Ai(s[r]||[]))}return i}function Kd(s){return`${s.boneName}:${s.spawnId??"legacy"}`}function bv(s){return{...Ai([s])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}}function dR(s,e,t,i){const n=Math.min(s.length,i+1),r=s.slice(Math.max(0,s.length-n)),o=new Map;for(const l of e){if(l.imageVisible===!1||l.alpha<=0)continue;const h=Kd(l),u=new Map;let d=!1;for(let f=r.length-1;f>=0;f--){const p=r[f].find(m=>Kd(m)===h);if(p)d=!0,u.set(f,p);else if(d)break}o.set(h,u)}const a=Math.max(0,r.length-1),c=[];for(let l=0;l<=t;l++){const h=Math.min(a,Math.round(l/t*a));c.push(e.map(u=>{var f;if(u.imageVisible===!1||u.alpha<=0)return Ai([u])[0];const d=(f=o.get(Kd(u)))==null?void 0:f.get(h);return d?Ai([d])[0]:bv(u)}))}return c[0]=c[0].map(bv),c[c.length-1]=Ai(e),c}function wv(s,e){const t=s.length?1:0;for(let i=t;i{const y=x?[[]]:[];e.reset();for(let _=0;_0&&e.restartEmissionCycle();for(let C=0;C0;_++)e.update(r,"off"),x.push(e.capture());(v=x[x.length-1])!=null&&v.length&&x.push([]),wv(u,uR(x,a.end))}const g=Ai(u[u.length-1]||[]);for(u.length>i&&(u.length=i);u.lengtha.id===r)||(this.container.removeChild(o.root),o.root.destroy({children:!0}),this.entries.delete(r));for(const r of e){const o=UI(r.id);let a=this.entries.get(r.id);if(a&&a.assetVersion!==r.assetVersion&&!o&&(this.container.removeChild(a.root),a.root.destroy({children:!0}),this.entries.delete(r.id),a=void 0),(!a||a.assetVersion!==r.assetVersion)&&o){a&&(this.container.removeChild(a.root),a.root.destroy({children:!0}));const d=new Si,f=new o.SpineClass({skeletonData:o.skeletonData,autoUpdate:!1,darkTint:!1});o.skeletonData.defaultSkin&&f.skeleton.setSkin(o.skeletonData.defaultSkin),o.runtimeVersion==="4.3"?f.skeleton.setupPoseSlots():f.skeleton.setSlotsToSetupPose(),d.addChild(f),this.container.addChild(d),a={root:d,spine:f,runtimeVersion:o.runtimeVersion,assetVersion:r.assetVersion,animation:""},this.entries.set(r.id,a)}if(!a)continue;const c=a.root,l=a.spine,h=r.visible!==!1&&r.enabled;c.visible=h,c.renderable=h,c.position.set(r.x,-r.y),c.rotation=-r.rotation*Math.PI/180,c.scale.set(r.scaleX,r.scaleY),a.animation!==r.selectedAnimation&&(a.animation=r.selectedAnimation,a.runtimeVersion==="4.3"?l.skeleton.setupPose():l.skeleton.setToSetupPose(),l.state.clearTracks(),a.animation&&l.state.setAnimation(0,a.animation,!1));const u=a.runtimeVersion==="4.3"?l.state.getTrack(0):l.state.getCurrent(0);if(u){const d=((n=r.animations.find(p=>p.name===r.selectedAnimation))==null?void 0:n.duration)||0,f=Math.max(0,t/Math.max(1,i)-r.timeOffset);u.trackTime=d>0?Math.min(f,d):f}l.update(0)}}getBoneWorldTransform(e,t){const i=this.entries.get(e),n=i==null?void 0:i.spine.skeleton.findBone(t);if(!i||!n||!n.active)return null;const r=i.runtimeVersion==="4.3"?n.appliedPose:n,o=i.root,a=Math.cos(o.rotation),c=Math.sin(o.rotation),l=a*o.scale.x,h=-c*o.scale.y,u=c*o.scale.x,d=a*o.scale.y,f=l*r.a+h*r.c,p=l*r.b+h*r.d,m=u*r.a+d*r.c,g=u*r.b+d*r.d,v=o.position.x+l*r.worldX+h*r.worldY,x=o.position.y+u*r.worldX+d*r.worldY;return{x:v,y:-x,rotation:-Math.atan2(m,f)*180/Math.PI,scaleX:Math.max(1e-4,Math.hypot(f,m)),scaleY:Math.max(1e-4,Math.hypot(p,g))}}destroy(){for(const e of this.entries.values())e.root.removeFromParent(),e.root.destroy({children:!0});this.entries.clear(),this.container.removeFromParent(),this.container.destroy({children:!0})}}let r1=class{constructor(){w(this,"entries",{});w(this,"size",0)}add(e){let t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){let t=this.size;for(var i=0,n=e.length;i1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>("0"+(t*255).toString(16)).slice(-2);return+("0x"+e(this.r)+e(this.g)+e(this.b))}static fromString(e,t=new Ci){return t.setFromString(e)}},w(Ci,"WHITE",new Ci(1,1,1,1)),w(Ci,"RED",new Ci(1,0,0,1)),w(Ci,"GREEN",new Ci(0,1,0,1)),w(Ci,"BLUE",new Ci(0,0,1,1)),w(Ci,"MAGENTA",new Ci(1,0,1,1)),Ci);var Kt;let Ie=(Kt=class{static clamp(e,t,i){return ei?i:e}static cosDeg(e){return Math.cos(e*Kt.degRad)}static sinDeg(e){return Math.sin(e*Kt.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*Kt.degRad}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){let t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return Kt.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,i){let n=Math.random(),r=t-e;return n<=(i-e)/r?e+Math.sqrt(n*r*(i-e)):t-Math.sqrt((1-n)*r*(t-i))}static isPowerOfTwo(e){return e&&(e&e-1)===0}},w(Kt,"PI",3.1415927),w(Kt,"PI2",Kt.PI*2),w(Kt,"invPI2",1/Kt.PI2),w(Kt,"radiansToDegrees",180/Kt.PI),w(Kt,"radDeg",Kt.radiansToDegrees),w(Kt,"degreesToRadians",Kt.PI/180),w(Kt,"degRad",Kt.degreesToRadians),Kt);var Ms;let Re=(Ms=class{static arrayCopy(e,t,i,n,r){for(let o=t,a=n;o=t?e:Ms.setArraySize(e,t,i)}static newArray(e,t){let i=new Array(e);for(let n=0;n0?this.items.pop():this.instantiator()}free(e){e.reset&&e.reset(),this.items.push(e)}freeAll(e){for(let t=0;t>1)*a;let c=t.bone.skeleton,l=t.deform,h=this.vertices,u=this.bones;if(!u){l.length>0&&(h=l);let m=t.bone,g=m.worldX,v=m.worldY,x=m.a,y=m.b,_=m.c,C=m.d;for(let S=i,b=o;b=this.regions.length&&(i=this.regions.length-1);let n=this.regions[i];t.region!=n&&(t.region=n,t.updateRegion())}getPath(e,t){let i=e,n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)i+="0";return i+=n,i}static nextID(){return In._nextID++}},w(In,"_nextID",0),In);var xi;(function(s){s[s.hold=0]="hold",s[s.once=1]="once",s[s.loop=2]="loop",s[s.pingpong=3]="pingpong",s[s.onceReverse=4]="onceReverse",s[s.loopReverse=5]="loopReverse",s[s.pingpongReverse=6]="pingpongReverse"})(xi||(xi={}));const l1=[xi.hold,xi.once,xi.loop,xi.pingpong,xi.onceReverse,xi.loopReverse,xi.pingpongReverse];let lp=class{constructor(e,t,i){w(this,"name");w(this,"timelines",[]);w(this,"timelineIds",new r1);w(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.setTimelines(t),this.duration=i}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e,this.timelineIds.clear();for(var t=0;t0&&(t%=this.duration));let l=this.timelines;for(let h=0,u=l.length;ht)return n-1;return i-1}static search(e,t,i){let n=e.length;for(let r=i;rt)return r-i;return n-i}},cn=class extends Ut{constructor(t,i,n){super(t,n);w(this,"curves");this.curves=Re.newFloatArray(t+i*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){let i=this.getFrameCount()+t*18;if(this.curves.length>i){let n=Re.newFloatArray(i);Re.arrayCopy(this.curves,0,n,0,i),this.curves=n}}setBezier(t,i,n,r,o,a,c,l,h,u,d){let f=this.curves,p=this.getFrameCount()+t*18;n==0&&(f[i]=2+p);let m=(r-a*2+l)*.03,g=(o-c*2+h)*.03,v=((a-l)*3-r+u)*.006,x=((c-h)*3-o+d)*.006,y=m*2+v,_=g*2+x,C=(a-r)*.3+m+v*.16666667,S=(c-o)*.3+g+x*.16666667,b=r+C,M=o+S;for(let I=p+18;pt){let h=this.frames[i],u=this.frames[i+n];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}let a=r+18;for(r+=2;r=t){let h=o[r-2],u=o[r-1];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}i+=this.getFrameEntries();let c=o[a-2],l=o[a-1];return l+(t-c)/(this.frames[i]-c)*(this.frames[i+n]-l)}},Os=class extends cn{constructor(e,t,i){super(e,t,[i])}getFrameEntries(){return 2}setFrame(e,t,i){e<<=1,this.frames[e]=t,this.frames[e+1]=i}getCurveValue(e){let t=this.frames,i=t.length-2;for(let r=2;r<=i;r+=2)if(t[r]>e){i=r-2;break}let n=this.curves[i>>1];switch(n){case 0:let r=t[i],o=t[i+1];return o+(e-r)/(t[i+2]-r)*(t[i+2+1]-o);case 1:return t[i+1]}return this.getBezierValue(e,i,1,n-2)}getRelativeValue(e,t,i,n,r){if(e>2];switch(g){case 0:let v=h[m];d=h[m+1],f=h[m+2],p=h[m+3];let x=(n-v)/(h[m+4]-v);d+=(h[m+4+1]-d)*x,f+=(h[m+4+2]-f)*x,p+=(h[m+4+3]-p)*x;break;case 1:d=h[m+1],f=h[m+2],p=h[m+3];break;default:d=this.getBezierValue(n,m,1,g-2),f=this.getBezierValue(n,m,2,g+18-2),p=this.getBezierValue(n,m,3,g+36-2)}if(o==1)u.r=d,u.g=f,u.b=p;else{if(a==ge.setup){let v=l.data.color;u.r=v.r,u.g=v.g,u.b=v.b}u.r+=(d-u.r)*o,u.g+=(f-u.g)*o,u.b+=(p-u.b)*o}}},w1=class extends Os{constructor(t,i,n){super(t,i,rt.alpha+"|"+n);w(this,"slotIndex",0);this.slotIndex=n}apply(t,i,n,r,o,a,c){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let h=l.color;if(n>3];switch(C){case 0:let S=h[_];f=h[_+1],p=h[_+2],m=h[_+3],g=h[_+4],v=h[_+5],x=h[_+6],y=h[_+7];let b=(n-S)/(h[_+8]-S);f+=(h[_+8+1]-f)*b,p+=(h[_+8+2]-p)*b,m+=(h[_+8+3]-m)*b,g+=(h[_+8+4]-g)*b,v+=(h[_+8+5]-v)*b,x+=(h[_+8+6]-x)*b,y+=(h[_+8+7]-y)*b;break;case 1:f=h[_+1],p=h[_+2],m=h[_+3],g=h[_+4],v=h[_+5],x=h[_+6],y=h[_+7];break;default:f=this.getBezierValue(n,_,1,C-2),p=this.getBezierValue(n,_,2,C+18-2),m=this.getBezierValue(n,_,3,C+36-2),g=this.getBezierValue(n,_,4,C+54-2),v=this.getBezierValue(n,_,5,C+72-2),x=this.getBezierValue(n,_,6,C+90-2),y=this.getBezierValue(n,_,7,C+108-2)}if(o==1)u.set(f,p,m,g),d.r=v,d.g=x,d.b=y;else{if(a==ge.setup){u.setFromColor(l.data.color);let S=l.data.darkColor;d.r=S.r,d.g=S.g,d.b=S.b}u.add((f-u.r)*o,(p-u.g)*o,(m-u.b)*o,(g-u.a)*o),d.r+=(v-d.r)*o,d.g+=(x-d.g)*o,d.b+=(y-d.b)*o}}},_1=class extends cn{constructor(t,i,n){super(t,i,[rt.rgb+"|"+n,rt.rgb2+"|"+n]);w(this,"slotIndex",0);this.slotIndex=n}getFrameEntries(){return 7}setFrame(t,i,n,r,o,a,c,l){t*=7,this.frames[t]=i,this.frames[t+1]=n,this.frames[t+2]=r,this.frames[t+3]=o,this.frames[t+4]=a,this.frames[t+5]=c,this.frames[t+6]=l}apply(t,i,n,r,o,a,c){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let h=this.frames,u=l.color,d=l.darkColor;if(nt){let l=this.frames[i];return n[r+1]*(t-l)/(n[r]-l)}let o=r+18;for(r+=2;r=t){let l=n[r-2],h=n[r-1];return h+(t-l)/(n[r]-l)*(n[r+1]-h)}let a=n[o-2],c=n[o-1];return c+(1-c)*(t-a)/(this.frames[i+this.getFrameEntries()]-a)}apply(t,i,n,r,o,a,c){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let h=l.getAttachment();if(!h||!(h instanceof Un)||h.timelineAttachment!=this.attachment)return;let u=l.deform;u.length==0&&(a=ge.setup);let d=this.vertices,f=d[0].length,p=this.frames;if(n=p[p.length-1]){let _=d[p.length-1];if(o==1)if(a==ge.add){let C=h;if(C.bones)for(let S=0;Sn)this.apply(t,i,Number.MAX_VALUE,r,o,a,c),i=-1;else if(i>=l[h-1])return;if(n0&&l[u-1]==d;)u--}for(;u=l[u];u++)r.push(this.events[u])}},w(Yr,"propertyIds",[""+rt.event]),Yr);var Gr;let Va=(Gr=class extends Ut{constructor(t){super(t,Gr.propertyIds);w(this,"drawOrders");this.drawOrders=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.drawOrders[t]=n}apply(t,i,n,r,o,a,c){if(c==Ri.mixOut){a==ge.setup&&Re.arrayCopy(t.slots,0,t.drawOrder,0,t.slots.length);return}if(n>2];switch(m){case 0:let g=h[p];u=h[p+1],d=h[p+2],f=h[p+3];let v=(n-g)/(h[p+4]-g);u+=(h[p+4+1]-u)*v,d+=(h[p+4+2]-d)*v,f+=(h[p+4+3]-f)*v;break;case 1:u=h[p+1],d=h[p+2],f=h[p+3];break;default:u=this.getBezierValue(n,p,1,m-2),d=this.getBezierValue(n,p,2,m+18-2),f=this.getBezierValue(n,p,3,m+36-2)}if(a==ge.setup){let g=l.data;l.mixRotate=g.mixRotate+(u-g.mixRotate)*o,l.mixX=g.mixX+(d-g.mixX)*o,l.mixY=g.mixY+(f-g.mixY)*o}else l.mixRotate+=(u-l.mixRotate)*o,l.mixX+=(d-l.mixX)*o,l.mixY+=(f-l.mixY)*o}},lo=class extends Os{constructor(t,i,n,r){super(t,i,r+"|"+n);w(this,"constraintIndex",0);this.constraintIndex=n}apply(t,i,n,r,o,a,c){let l;if(this.constraintIndex==-1){const h=n>=this.frames[0]?this.getCurveValue(n):0;for(const u of t.physicsConstraints)u.active&&this.global(u.data)&&this.set(u,this.getAbsoluteValue2(n,o,a,this.get(u),this.setup(u),h))}else l=t.physicsConstraints[this.constraintIndex],l.active&&this.set(l,this.getAbsoluteValue(n,o,a,this.get(l),this.setup(l)))}},R1=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintInertia)}setup(e){return e.data.inertia}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}},P1=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintStrength)}setup(e){return e.data.strength}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}},k1=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintDamping)}setup(e){return e.data.damping}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}},F1=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintMass)}setup(e){return 1/e.data.massInverse}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}},O1=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintWind)}setup(e){return e.data.wind}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}},B1=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintGravity)}setup(e){return e.data.gravity}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}},L1=class extends lo{constructor(e,t,i){super(e,t,i,rt.physicsConstraintMix)}setup(e){return e.data.mix}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}};var Hr;let D1=(Hr=class extends Ut{constructor(t,i){super(t,Hr.propertyIds);w(this,"constraintIndex");this.constraintIndex=i}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i}apply(t,i,n,r,o,a,c){let l;if(this.constraintIndex!=-1&&(l=t.physicsConstraints[this.constraintIndex],!l.active))return;const h=this.frames;if(i>n)this.apply(t,i,Number.MAX_VALUE,[],o,a,c),i=-1;else if(i>=h[h.length-1])return;if(!(n=h[Ut.search1(h,i)+1]))if(l!=null)l.reset();else for(const u of t.physicsConstraints)u.active&&u.reset()}},w(Hr,"propertyIds",[rt.physicsConstraintReset.toString()]),Hr);var Bi;let N1=(Bi=class extends Ut{constructor(t,i,n){super(t,[rt.sequence+"|"+i+"|"+n.sequence.id]);w(this,"slotIndex");w(this,"attachment");this.slotIndex=i,this.attachment=n}getFrameEntries(){return Bi.ENTRIES}getSlotIndex(){return this.slotIndex}getAttachment(){return this.attachment}setFrame(t,i,n,r,o){let a=this.frames;t*=Bi.ENTRIES,a[t]=i,a[t+Bi.MODE]=n|r<<4,a[t+Bi.DELAY]=o}apply(t,i,n,r,o,a,c){let l=t.slots[this.slotIndex];if(!l.bone.active)return;let h=l.attachment,u=this.attachment;if(h!=u&&(!(h instanceof Un)||h.timelineAttachment!=u))return;if(c==Ri.mixOut){a==ge.setup&&(l.sequenceIndex=-1);return}let d=this.frames;if(n>4,x=this.attachment.sequence.regions.length,y=l1[m&15];if(y!=xi.hold)switch(v+=(n-p)/g+1e-5|0,y){case xi.once:v=Math.min(x-1,v);break;case xi.loop:v%=x;break;case xi.pingpong:{let _=(x<<1)-2;v=_==0?0:v%_,v>=x&&(v=_-v);break}case xi.onceReverse:v=Math.max(x-1-v,0);break;case xi.loopReverse:v=x-1-v%x;break;case xi.pingpongReverse:{let _=(x<<1)-2;v=_==0?0:(v+x-1)%_,v>=x&&(v=_-v)}}l.sequenceIndex=v}},w(Bi,"ENTRIES",3),w(Bi,"MODE",1),w(Bi,"DELAY",2),Bi);var Rn;let pR=(Rn=class{constructor(e){w(this,"data");w(this,"tracks",new Array);w(this,"timeScale",1);w(this,"unkeyedState",0);w(this,"events",new Array);w(this,"listeners",new Array);w(this,"queue",new vR(this));w(this,"propertyIDs",new r1);w(this,"animationsChanged",!1);w(this,"trackEntryPool",new lh(()=>new gR));this.data=e}static emptyAnimation(){return Rn._emptyAnimation}update(e){e*=this.timeScale;let t=this.tracks;for(let i=0,n=t.length;i0){if(r.delay-=o,r.delay>0)continue;o=-r.delay,r.delay=0}let a=r.next;if(a){let c=r.trackLast-a.delay;if(c>=0){for(a.delay=0,a.trackTime+=r.timeScale==0?0:(c/r.timeScale+e)*a.timeScale,r.trackTime+=o,this.setCurrent(i,a,!0);a.mixingFrom;)a.mixTime+=e,a=a.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[i]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let c=r.mixingFrom;for(r.mixingFrom=null,c&&(c.mixingTo=null);c;)this.queue.end(c),c=c.mixingFrom}r.trackTime+=o}this.queue.drain()}updateMixingFrom(e,t){let i=e.mixingFrom;if(!i)return!0;let n=this.updateMixingFrom(i,t);return i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast,e.nextTrackLast!=-1&&e.mixTime>=e.mixDuration?((i.totalAlpha==0||e.mixDuration==0)&&(e.mixingFrom=i.mixingFrom,i.mixingFrom!=null&&(i.mixingFrom.mixingTo=e),e.interruptAlpha=i.interruptAlpha,this.queue.end(i)),n):(i.trackTime+=t*i.timeScale,e.mixTime+=t,!1)}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();let t=this.events,i=this.tracks,n=!1;for(let d=0,f=i.length;d0)continue;n=!0;let m=d==0?ge.first:p.mixBlend,g=p.alpha;p.mixingFrom?g*=this.applyMixingFrom(p,e,m):p.trackTime>=p.trackEnd&&!p.next&&(g=0);let v=g>=p.alphaAttachmentThreshold,x=p.animationLast,y=p.getAnimationTime(),_=y,C=t;p.reverse&&(_=p.animation.duration-_,C=null);let S=p.animation.timelines,b=S.length;if(d==0&&g==1||m==ge.add){d==0&&(v=!0);for(let M=0;M1&&(r=1),i!=ge.first&&(i=n.mixBlend));let o=r=n.alphaAttachmentThreshold):(a&&C instanceof Va&&b==ge.setup&&(S=Ri.mixIn),C.apply(t,d,p,m,M,b,S))}}return e.mixDuration>0&&this.queueEvents(n,f),this.events.length=0,n.nextAnimationLast=f,n.nextTrackLast=n.trackTime,r}applyAttachmentTimeline(e,t,i,n,r){var o=t.slots[e.slotIndex];o.bone.active&&(i=0,y=m>=0;Math.abs(g)<=90&&Ie.signum(g)!=Ie.signum(p)&&(Math.abs(m-v)>180?(f+=360*Ie.signum(m),y=x):v!=0?f-=360*Ie.signum(m):y=x),y!=x&&(f+=360*Ie.signum(m)),o[a]=f}o[a+1]=p,l.rotation=u+f*n}queueEvents(e,t){let i=e.animationStart,n=e.animationEnd,r=n-i,o=e.trackLast%r,a=this.events,c=0,l=a.length;for(;cn||this.queue.event(e,u)}let h=!1;if(e.loop)if(r==0)h=!0;else{const u=Math.floor(e.trackTime/r);h=u>0&&u>Math.floor(e.trackLast/r)}else h=t>=n&&e.animationLast=this.tracks.length)return;let t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let i=t;for(;;){let n=i.mixingFrom;if(!n)break;this.queue.end(n),i.mixingFrom=null,i.mixingTo=null,i=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setCurrent(e,t,i){let n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(i&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.mixingFrom&&n.mixDuration>0&&(t.interruptAlpha*=Math.min(1,n.mixTime/n.mixDuration)),n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,i=!1){let n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error("Animation not found: "+t);return this.setAnimationWith(e,n,i)}setAnimationWith(e,t,i=!1){if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast==-1?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));let o=this.trackEntry(e,t,i,r);return this.setCurrent(e,o,n),this.queue.drain(),o}addAnimation(e,t,i=!1,n=0){let r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error("Animation not found: "+t);return this.addAnimationWith(e,r,i,n)}addAnimationWith(e,t,i=!1,n=0){if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;let o=this.trackEntry(e,t,i,r);return r?(r.next=o,o.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-o.mixDuration,0))):(this.setCurrent(e,o,!0),this.queue.drain(),n<0&&(n=0)),o.delay=n,o}setEmptyAnimation(e,t=0){let i=this.setAnimationWith(e,Rn.emptyAnimation(),!1);return i.mixDuration=t,i.trackEnd=t,i}addEmptyAnimation(e,t=0,i=0){let n=this.addAnimationWith(e,Rn.emptyAnimation(),!1,i);return i<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){let t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let i=0,n=this.tracks.length;i0){r[c]=yR,o[c]=u;continue e}break}r[c]=Jd}}}getCurrent(e){return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}},w(Rn,"_emptyAnimation",new lp("",[],0)),Rn),gR=class{constructor(){w(this,"animation",null);w(this,"previous",null);w(this,"next",null);w(this,"mixingFrom",null);w(this,"mixingTo",null);w(this,"listener",null);w(this,"trackIndex",0);w(this,"loop",!1);w(this,"holdPrevious",!1);w(this,"reverse",!1);w(this,"shortestRotation",!1);w(this,"eventThreshold",0);w(this,"mixAttachmentThreshold",0);w(this,"alphaAttachmentThreshold",0);w(this,"mixDrawOrderThreshold",0);w(this,"animationStart",0);w(this,"animationEnd",0);w(this,"animationLast",0);w(this,"nextAnimationLast",0);w(this,"delay",0);w(this,"trackTime",0);w(this,"trackLast",0);w(this,"nextTrackLast",0);w(this,"trackEnd",0);w(this,"timeScale",0);w(this,"alpha",0);w(this,"mixTime",0);w(this,"_mixDuration",0);w(this,"interruptAlpha",0);w(this,"totalAlpha",0);w(this,"mixBlend",ge.replace);w(this,"timelineMode",new Array);w(this,"timelineHoldMix",new Array);w(this,"timelinesRotation",new Array)}get mixDuration(){return this._mixDuration}set mixDuration(e){this._mixDuration=e}setMixDurationWithDelay(e,t){this._mixDuration=e,t<=0&&(this.previous!=null?t=Math.max(t+this.previous.getTrackComplete()-e,0):t=0),this.delay=t}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(this.loop){let e=this.animationEnd-this.animationStart;return e==0?this.animationStart:this.trackTime%e+this.animationStart}return Math.min(this.trackTime+this.animationStart,this.animationEnd)}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){let e=this.animationEnd-this.animationStart;if(e!=0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}},vR=class{constructor(e){w(this,"objects",[]);w(this,"drainDisabled",!1);w(this,"animState");this.animState=e}start(e){this.objects.push(Hi.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(Hi.interrupt),this.objects.push(e)}end(e){this.objects.push(Hi.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(Hi.dispose),this.objects.push(e)}complete(e){this.objects.push(Hi.complete),this.objects.push(e)}event(e,t){this.objects.push(Hi.event),this.objects.push(e),this.objects.push(t)}drain(){if(this.drainDisabled)return;this.drainDisabled=!0;let e=this.objects;for(let t=0;t{h.width=parseInt(i[1]),h.height=parseInt(i[2])},n.format=()=>{},n.filter=h=>{h.minFilter=Re.enumValue(ui,i[1]),h.magFilter=Re.enumValue(ui,i[2])},n.repeat=h=>{i[1].indexOf("x")!=-1&&(h.uWrap=Fn.Repeat),i[1].indexOf("y")!=-1&&(h.vWrap=Fn.Repeat)},n.pma=h=>{h.pma=i[1]=="true"};var r={};r.xy=h=>{h.x=parseInt(i[1]),h.y=parseInt(i[2])},r.size=h=>{h.width=parseInt(i[1]),h.height=parseInt(i[2])},r.bounds=h=>{h.x=parseInt(i[1]),h.y=parseInt(i[2]),h.width=parseInt(i[3]),h.height=parseInt(i[4])},r.offset=h=>{h.offsetX=parseInt(i[1]),h.offsetY=parseInt(i[2])},r.orig=h=>{h.originalWidth=parseInt(i[1]),h.originalHeight=parseInt(i[2])},r.offsets=h=>{h.offsetX=parseInt(i[1]),h.offsetY=parseInt(i[2]),h.originalWidth=parseInt(i[3]),h.originalHeight=parseInt(i[4])},r.rotate=h=>{let u=i[1];u=="true"?h.degrees=90:u!="false"&&(h.degrees=parseInt(u))},r.index=h=>{h.index=parseInt(i[1])};let o=t.readLine();for(;o&&o.trim().length==0;)o=t.readLine();for(;!(!o||o.trim().length==0||t.readEntry(i,o)==0);)o=t.readLine();let a=null,c=null,l=null;for(;o!==null;)if(o.trim().length==0)a=null,o=t.readLine();else if(a){let h=new Y1(a,o);for(;;){let u=t.readEntry(i,o=t.readLine());if(u==0)break;let d=r[i[0]];if(d)d(h);else{c||(c=[]),l||(l=[]),c.push(i[0]);let f=[];for(let p=0;p0&&l&&l.length>0&&(h.names=c,h.values=l,c=null,l=null),h.u=h.x/a.width,h.v=h.y/a.height,h.degrees==90?(h.u2=(h.x+h.height)/a.width,h.v2=(h.y+h.width)/a.height):(h.u2=(h.x+h.width)/a.width,h.v2=(h.y+h.height)/a.height),this.regions.push(h)}else{for(a=new TR(o.trim());t.readEntry(i,o=t.readLine())!=0;){let h=n[i[0]];h&&h(a)}this.pages.push(a)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length==0))return 0;let i=t.indexOf(":");if(i==-1)return 0;e[0]=t.substr(0,i).trim();for(let n=1,r=i+1;;n++){let o=t.indexOf(",",r);if(o==-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,o-r).trim(),r=o+1,n==4)return 4}}},TR=class{constructor(e){w(this,"name");w(this,"minFilter",ui.Nearest);w(this,"magFilter",ui.Nearest);w(this,"uWrap",Fn.ClampToEdge);w(this,"vWrap",Fn.ClampToEdge);w(this,"texture",null);w(this,"width",0);w(this,"height",0);w(this,"pma",!1);w(this,"regions",new Array);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(let t of this.regions)t.texture=e}},Y1=class extends SR{constructor(t,i){super();w(this,"page");w(this,"name");w(this,"x",0);w(this,"y",0);w(this,"offsetX",0);w(this,"offsetY",0);w(this,"originalWidth",0);w(this,"originalHeight",0);w(this,"index",0);w(this,"degrees",0);w(this,"names",null);w(this,"values",null);this.page=t,this.name=i,t.regions.push(this)}},Sl=class nm extends Un{constructor(t,i){super(t);w(this,"region",null);w(this,"path");w(this,"regionUVs",[]);w(this,"uvs",[]);w(this,"triangles",[]);w(this,"color",new st(1,1,1,1));w(this,"width",0);w(this,"height",0);w(this,"hullLength",0);w(this,"edges",[]);w(this,"parentMesh",null);w(this,"sequence",null);w(this,"tempColor",new st(0,0,0,0));this.path=i}updateRegion(){if(!this.region)throw new Error("Region not set.");let t=this.regionUVs;(!this.uvs||this.uvs.length!=t.length)&&(this.uvs=Re.newFloatArray(t.length));let i=this.uvs,n=this.uvs.length,r=this.region.u,o=this.region.v,a=0,c=0;if(this.region instanceof Y1){let l=this.region,h=l.page,u=h.width,d=h.height;switch(l.degrees){case 90:r-=(l.originalHeight-l.offsetY-l.height)/u,o-=(l.originalWidth-l.offsetX-l.width)/d,a=l.originalHeight/u,c=l.originalWidth/d;for(let f=0;f= 0.");if(!t)throw new Error("name cannot be null.");this.index=e,this.name=t,this.parent=i}};var Gt;(function(s){s[s.Normal=0]="Normal",s[s.OnlyTranslation=1]="OnlyTranslation",s[s.NoRotationOrReflection=2]="NoRotationOrReflection",s[s.NoScale=3]="NoScale",s[s.NoScaleOrReflection=4]="NoScaleOrReflection"})(Gt||(Gt={}));let Mv=class{constructor(e,t,i){w(this,"data");w(this,"skeleton");w(this,"parent",null);w(this,"children",new Array);w(this,"x",0);w(this,"y",0);w(this,"rotation",0);w(this,"scaleX",0);w(this,"scaleY",0);w(this,"shearX",0);w(this,"shearY",0);w(this,"ax",0);w(this,"ay",0);w(this,"arotation",0);w(this,"ascaleX",0);w(this,"ascaleY",0);w(this,"ashearX",0);w(this,"ashearY",0);w(this,"a",0);w(this,"b",0);w(this,"c",0);w(this,"d",0);w(this,"worldY",0);w(this,"worldX",0);w(this,"inherit",Gt.Normal);w(this,"sorted",!1);w(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.skeleton=t,this.parent=i,this.setToSetupPose()}isActive(){return this.active}update(e){this.updateWorldTransformWith(this.ax,this.ay,this.arotation,this.ascaleX,this.ascaleY,this.ashearX,this.ashearY)}updateWorldTransform(){this.updateWorldTransformWith(this.x,this.y,this.rotation,this.scaleX,this.scaleY,this.shearX,this.shearY)}updateWorldTransformWith(e,t,i,n,r,o,a){this.ax=e,this.ay=t,this.arotation=i,this.ascaleX=n,this.ascaleY=r,this.ashearX=o,this.ashearY=a;let c=this.parent;if(!c){let f=this.skeleton;const p=f.scaleX,m=f.scaleY,g=(i+o)*Ie.degRad,v=(i+90+a)*Ie.degRad;this.a=Math.cos(g)*n*p,this.b=Math.cos(v)*r*p,this.c=Math.sin(g)*n*m,this.d=Math.sin(v)*r*m,this.worldX=e*p+f.x,this.worldY=t*m+f.y;return}let l=c.a,h=c.b,u=c.c,d=c.d;switch(this.worldX=l*e+h*t+c.worldX,this.worldY=u*e+d*t+c.worldY,this.inherit){case Gt.Normal:{const f=(i+o)*Ie.degRad,p=(i+90+a)*Ie.degRad,m=Math.cos(f)*n,g=Math.cos(p)*r,v=Math.sin(f)*n,x=Math.sin(p)*r;this.a=l*m+h*v,this.b=l*g+h*x,this.c=u*m+d*v,this.d=u*g+d*x;return}case Gt.OnlyTranslation:{const f=(i+o)*Ie.degRad,p=(i+90+a)*Ie.degRad;this.a=Math.cos(f)*n,this.b=Math.cos(p)*r,this.c=Math.sin(f)*n,this.d=Math.sin(p)*r;break}case Gt.NoRotationOrReflection:{let f=1/this.skeleton.scaleX,p=1/this.skeleton.scaleY;l*=f,u*=p;let m=l*l+u*u,g=0;m>1e-4?(m=Math.abs(l*d*p-h*f*u)/m,h=u*m,d=l*m,g=Math.atan2(u,l)*Ie.radDeg):(l=0,u=0,g=90-Math.atan2(d,h)*Ie.radDeg);const v=(i+o-g)*Ie.degRad,x=(i+a-g+90)*Ie.degRad,y=Math.cos(v)*n,_=Math.cos(x)*r,C=Math.sin(v)*n,S=Math.sin(x)*r;this.a=l*y-h*C,this.b=l*_-h*S,this.c=u*y+d*C,this.d=u*_+d*S;break}case Gt.NoScale:case Gt.NoScaleOrReflection:{i*=Ie.degRad;const f=Math.cos(i),p=Math.sin(i);let m=(l*f+h*p)/this.skeleton.scaleX,g=(u*f+d*p)/this.skeleton.scaleY,v=Math.sqrt(m*m+g*g);v>1e-5&&(v=1/v),m*=v,g*=v,v=Math.sqrt(m*m+g*g),this.inherit==Gt.NoScale&&l*d-h*u<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(v=-v),i=Math.PI/2+Math.atan2(g,m);const x=Math.cos(i)*v,y=Math.sin(i)*v;o*=Ie.degRad,a=(90+a)*Ie.degRad;const _=Math.cos(o)*n,C=Math.cos(a)*r,S=Math.sin(o)*n,b=Math.sin(a)*r;this.a=m*_+x*S,this.b=m*C+x*b,this.c=g*_+y*S,this.d=g*C+y*b;break}}this.a*=this.skeleton.scaleX,this.b*=this.skeleton.scaleX,this.c*=this.skeleton.scaleY,this.d*=this.skeleton.scaleY}setToSetupPose(){let e=this.data;this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}updateAppliedTransform(){let e=this.parent;if(!e){this.ax=this.worldX-this.skeleton.x,this.ay=this.worldY-this.skeleton.y,this.arotation=Math.atan2(this.c,this.a)*Ie.radDeg,this.ascaleX=Math.sqrt(this.a*this.a+this.c*this.c),this.ascaleY=Math.sqrt(this.b*this.b+this.d*this.d),this.ashearX=0,this.ashearY=Math.atan2(this.a*this.b+this.c*this.d,this.a*this.d-this.b*this.c)*Ie.radDeg;return}let t=e.a,i=e.b,n=e.c,r=e.d,o=1/(t*r-i*n),a=r*o,c=i*o,l=n*o,h=t*o,u=this.worldX-e.worldX,d=this.worldY-e.worldY;this.ax=u*a-d*c,this.ay=d*h-u*l;let f,p,m,g;if(this.inherit==Gt.OnlyTranslation)f=this.a,p=this.b,m=this.c,g=this.d;else{switch(this.inherit){case Gt.NoRotationOrReflection:{let C=Math.abs(t*r-i*n)/(t*t+n*n);i=-n*this.skeleton.scaleX*C/this.skeleton.scaleY,r=t*this.skeleton.scaleY*C/this.skeleton.scaleX,o=1/(t*r-i*n),a=r*o,c=i*o;break}case Gt.NoScale:case Gt.NoScaleOrReflection:let v=Ie.cosDeg(this.rotation),x=Ie.sinDeg(this.rotation);t=(t*v+i*x)/this.skeleton.scaleX,n=(n*v+r*x)/this.skeleton.scaleY;let y=Math.sqrt(t*t+n*n);y>1e-5&&(y=1/y),t*=y,n*=y,y=Math.sqrt(t*t+n*n),this.inherit==Gt.NoScale&&o<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(y=-y);let _=Ie.PI/2+Math.atan2(n,t);i=Math.cos(_)*y,r=Math.sin(_)*y,o=1/(t*r-i*n),a=r*o,c=i*o,l=n*o,h=t*o}f=a*this.a-c*this.c,p=a*this.b-c*this.d,m=h*this.c-l*this.a,g=h*this.d-l*this.b}if(this.ashearX=0,this.ascaleX=Math.sqrt(f*f+m*m),this.ascaleX>1e-4){let v=f*g-p*m;this.ascaleY=v/this.ascaleX,this.ashearY=-Math.atan2(f*p+m*g,v)*Ie.radDeg,this.arotation=Math.atan2(m,f)*Ie.radDeg}else this.ascaleX=0,this.ascaleY=Math.sqrt(p*p+g*g),this.ashearY=0,this.arotation=90-Math.atan2(g,p)*Ie.radDeg}getWorldRotationX(){return Math.atan2(this.c,this.a)*Ie.radDeg}getWorldRotationY(){return Math.atan2(this.d,this.b)*Ie.radDeg}getWorldScaleX(){return Math.sqrt(this.a*this.a+this.c*this.c)}getWorldScaleY(){return Math.sqrt(this.b*this.b+this.d*this.d)}worldToLocal(e){let t=1/(this.a*this.d-this.b*this.c),i=e.x-this.worldX,n=e.y-this.worldY;return e.x=i*this.d*t-n*this.b*t,e.y=n*this.a*t-i*this.c*t,e}localToWorld(e){let t=e.x,i=e.y;return e.x=t*this.a+i*this.b+this.worldX,e.y=t*this.c+i*this.d+this.worldY,e}worldToParent(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.worldToLocal(e)}parentToWorld(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.localToWorld(e)}worldToLocalRotation(e){let t=Ie.sinDeg(e),i=Ie.cosDeg(e);return Math.atan2(this.a*t-this.c*i,this.d*i-this.b*t)*Ie.radDeg+this.rotation-this.shearX}localToWorldRotation(e){e-=this.rotation-this.shearX;let t=Ie.sinDeg(e),i=Ie.cosDeg(e);return Math.atan2(i*this.c+t*this.d,i*this.a+t*this.b)*Ie.radDeg}rotateWorld(e){e*=Ie.degRad;const t=Math.sin(e),i=Math.cos(e),n=this.a,r=this.b;this.a=i*n-t*this.c,this.b=i*r-t*this.d,this.c=t*n+i*this.c,this.d=t*r+i*this.d}},ou=class{constructor(e,t,i){w(this,"name");w(this,"order");w(this,"skinRequired");this.name=e,this.order=t,this.skinRequired=i}},z1=class{constructor(e,t){w(this,"data");w(this,"intValue",0);w(this,"floatValue",0);w(this,"stringValue",null);w(this,"time",0);w(this,"volume",0);w(this,"balance",0);if(!t)throw new Error("data cannot be null.");this.time=e,this.data=t}},q1=class{constructor(e){w(this,"name");w(this,"intValue",0);w(this,"floatValue",0);w(this,"stringValue",null);w(this,"audioPath",null);w(this,"volume",0);w(this,"balance",0);this.name=e}},MR=class{constructor(e,t){w(this,"data");w(this,"bones");w(this,"target");w(this,"bendDirection",0);w(this,"compress",!1);w(this,"stretch",!1);w(this,"mix",1);w(this,"softness",0);w(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n180?f-=360:f<-180&&(f+=360);let g=e.ascaleX,v=e.ascaleY;if(n||r){switch(e.inherit){case Gt.NoScale:case Gt.NoScaleOrReflection:p=t-e.worldX,m=i-e.worldY}const x=e.data.length*g;if(x>1e-4){const y=p*p+m*m;if(n&&yx*x){const _=(Math.sqrt(y)/x-1)*a+1;g*=_,o&&(v*=_)}}}e.updateWorldTransformWith(e.ax,e.ay,e.arotation+f*a,g,v,e.ashearX,e.ashearY)}apply2(e,t,i,n,r,o,a,c,l){if(e.inherit!=Gt.Normal||t.inherit!=Gt.Normal)return;let h=e.ax,u=e.ay,d=e.ascaleX,f=e.ascaleY,p=d,m=f,g=t.ascaleX,v=0,x=0,y=0;d<0?(d=-d,v=180,y=-1):(v=0,y=1),f<0&&(f=-f,y=-y),g<0?(g=-g,x=180):x=0;let _=t.ax,C=0,S=0,b=0,M=e.a,I=e.b,F=e.c,E=e.d,k=Math.abs(d-f)<=1e-4;!k||o?(C=0,S=M*_+e.worldX,b=F*_+e.worldY):(C=t.ay,S=M*_+I*C+e.worldX,b=F*_+E*C+e.worldY);let O=e.parent;if(!O)throw new Error("IK parent must itself have a parent.");M=O.a,I=O.b,F=O.c,E=O.d;let D=M*E-I*F,$=S-O.worldX,N=b-O.worldY;D=Math.abs(D)<=1e-4?0:1/D;let U=($*E-N*I)*D-h,A=(N*M-$*F)*D-u,P=Math.sqrt(U*U+A*A),L=t.data.length*g,B,X;if(P<1e-4){this.apply1(e,i,n,!1,o,!1,l),t.updateWorldTransformWith(_,C,0,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY);return}$=i-O.worldX,N=n-O.worldY;let V=($*E-N*I)*D-h,q=(N*M-$*F)*D-u,W=V*V+q*q;if(c!=0){c*=d*(g+1)*.5;let le=Math.sqrt(W),ue=le-P-L*d+c;if(ue>0){let ae=Math.min(1,ue/(c*2))-1;ae=(ue-c*(1-ae*ae))/le,V-=ae*V,q-=ae*q,W=V*V+q*q}}e:if(k){L*=d;let le=(W-P*P-L*L)/(2*P*L);le<-1?(le=-1,X=Math.PI*r):le>1?(le=1,X=0,o&&(M=(Math.sqrt(W)/(P+L)-1)*l+1,p*=M,a&&(m*=M))):X=Math.acos(le)*r,M=P+L*le,I=L*Math.sin(X),B=Math.atan2(q*M-V*I,V*M+q*I)}else{M=d*L,I=f*L;let le=M*M,ue=I*I,ae=Math.atan2(q,V);F=ue*P*P+le*W-le*ue;let xe=-2*ue*P,Y=ue-le;if(E=xe*xe-4*Y*F,E>=0){let ce=Math.sqrt(E);xe<0&&(ce=-ce),ce=-(xe+ce)*.5;let Ce=ce/Y,ye=F/ce,we=Math.abs(Ce)=0){N=Math.sqrt(Ce)*r,B=ae-Math.atan2(N,we),X=Math.atan2(N/f,(we-P)/d);break e}}let j=Ie.PI,H=P-M,G=H*H,z=0,ie=0,fe=P+M,te=fe*fe,oe=0;F=-M*P/(le-ue),F>=-1&&F<=1&&(F=Math.acos(F),$=M*Math.cos(F)+P,N=I*Math.sin(F),E=$*$+N*N,Ete&&(ie=F,te=E,fe=$,oe=N)),W<=(G+te)*.5?(B=ae-Math.atan2(z*r,H),X=j*r):(B=ae-Math.atan2(oe*r,fe),X=ie*r)}let ne=Math.atan2(C,_)*y,re=e.arotation;B=(B-ne)*Ie.radDeg+v-re,B>180?B-=360:B<-180&&(B+=360),e.updateWorldTransformWith(h,u,re+B*l,p,m,0,0),re=t.arotation,X=((X+ne)*Ie.radDeg-t.ashearX)*y+x-re,X>180?X-=360:X<-180&&(X+=360),t.updateWorldTransformWith(_,C,re+X*l,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY)}},K1=class extends ou{constructor(t){super(t,0,!1);w(this,"bones",new Array);w(this,"_target",null);w(this,"bendDirection",0);w(this,"compress",!1);w(this,"stretch",!1);w(this,"uniform",!1);w(this,"mix",0);w(this,"softness",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},Z1=class extends ou{constructor(t){super(t,0,!1);w(this,"bones",new Array);w(this,"_target",null);w(this,"positionMode",rn.Fixed);w(this,"spacingMode",li.Fixed);w(this,"rotateMode",Jr.Chain);w(this,"offsetRotation",0);w(this,"position",0);w(this,"spacing",0);w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("SlotData not set.")}};var rn;(function(s){s[s.Fixed=0]="Fixed",s[s.Percent=1]="Percent"})(rn||(rn={}));var li;(function(s){s[s.Length=0]="Length",s[s.Fixed=1]="Fixed",s[s.Percent=2]="Percent",s[s.Proportional=3]="Proportional"})(li||(li={}));var Jr;(function(s){s[s.Tangent=0]="Tangent",s[s.Chain=1]="Chain",s[s.ChainScale=2]="ChainScale"})(Jr||(Jr={}));var Ei;let CR=(Ei=class{constructor(e,t){w(this,"data");w(this,"bones");w(this,"target");w(this,"position",0);w(this,"spacing",0);w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0);w(this,"spaces",new Array);w(this,"positions",new Array);w(this,"world",new Array);w(this,"curves",new Array);w(this,"lengths",new Array);w(this,"segments",new Array);w(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0,r=e.bones.length;n0){_=u/_*p;for(let S=1;S0?Ie.degRad:-.01745329277777778}for(let _=0,C=3;_0){let E=S.a,k=S.b,O=S.c,D=S.d,$=0,N=0,U=0;if(a?$=m[C-1]:d[_+1]==0?$=m[C+2]:$=Math.atan2(F,I),$-=Math.atan2(O,E),y){N=Math.cos($),U=Math.sin($);let A=S.data.length;g+=(A*(N*E-U*O)-I)*i,v+=(A*(U*E+N*O)-F)*i}else $+=x;$>Ie.PI?$-=Ie.PI2:$<-3.1415927&&($+=Ie.PI2),$*=i,N=Math.cos($),U=Math.sin($),S.a=N*E-U*O,S.b=N*k-U*D,S.c=U*E+N*O,S.d=U*k+N*D}S.updateAppliedTransform()}}computeWorldPositions(e,t,i){let n=this.target,r=this.position,o=this.spaces,a=Re.setArraySize(this.positions,t*3+2),c=this.world,l=e.closed,h=e.worldVerticesLength,u=h/6,d=Ei.NONE;if(!e.constantSpeed){let A=e.lengths;u-=l?1:2;let P=A[u];this.data.positionMode==rn.Percent&&(r*=P);let L;switch(this.data.spacingMode){case li.Percent:L=P;break;case li.Proportional:L=P/t;break;default:L=1}c=Re.setArraySize(this.world,8);for(let B=0,X=0,V=0;BP){d!=Ei.AFTER&&(d=Ei.AFTER,e.computeWorldVertices(n,h-6,4,c,0,2)),this.addAfterPosition(W-P,c,0,a,X);continue}for(;;V++){let ne=A[V];if(!(W>ne)){if(V==0)W/=ne;else{let re=A[V-1];W=(W-re)/(ne-re)}break}}V!=d&&(d=V,l&&V==u?(e.computeWorldVertices(n,h-4,4,c,0,2),e.computeWorldVertices(n,0,4,c,4,2)):e.computeWorldVertices(n,V*6+2,8,c,0,2)),this.addCurvePosition(W,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],a,X,i||B>0&&q==0)}return a}l?(h+=2,c=Re.setArraySize(this.world,h),e.computeWorldVertices(n,2,h-4,c,0,2),e.computeWorldVertices(n,0,2,c,h-4,2),c[h-2]=c[0],c[h-1]=c[1]):(u--,h-=4,c=Re.setArraySize(this.world,h),e.computeWorldVertices(n,2,h,c,0,2));let f=Re.setArraySize(this.curves,u),p=0,m=c[0],g=c[1],v=0,x=0,y=0,_=0,C=0,S=0,b=0,M=0,I=0,F=0,E=0,k=0,O=0,D=0;for(let A=0,P=2;Ap){this.addAfterPosition(V-p,c,h-4,a,P);continue}for(;;L++){let q=f[L];if(!(V>q)){if(L==0)V/=q;else{let W=f[L-1];V=(V-W)/(q-W)}break}}if(L!=d){d=L;let q=L*6;for(m=c[q],g=c[q+1],v=c[q+2],x=c[q+3],y=c[q+4],_=c[q+5],C=c[q+6],S=c[q+7],b=(m-v*2+y)*.03,M=(g-x*2+_)*.03,I=((v-y)*3-m+C)*.006,F=((x-_)*3-g+S)*.006,E=b*2+I,k=M*2+F,O=(v-m)*.3+b+I*.16666667,D=(x-g)*.3+M+F*.16666667,U=Math.sqrt(O*O+D*D),N[0]=U,q=1;q<8;q++)O+=E,D+=k,E+=I,k+=F,U+=Math.sqrt(O*O+D*D),N[q]=U;O+=E,D+=k,U+=Math.sqrt(O*O+D*D),N[8]=U,O+=E+I,D+=k+F,U+=Math.sqrt(O*O+D*D),N[9]=U,B=0}for(V*=U;;B++){let q=N[B];if(!(V>q)){if(B==0)V/=q;else{let W=N[B-1];V=B+(V-W)/(q-W)}break}}this.addCurvePosition(V*.1,m,g,v,x,y,_,C,S,a,P,i||A>0&&X==0)}return a}addBeforePosition(e,t,i,n,r){let o=t[i],a=t[i+1],c=t[i+2]-o,l=t[i+3]-a,h=Math.atan2(l,c);n[r]=o+e*Math.cos(h),n[r+1]=a+e*Math.sin(h),n[r+2]=h}addAfterPosition(e,t,i,n,r){let o=t[i+2],a=t[i+3],c=o-t[i],l=a-t[i+1],h=Math.atan2(l,c);n[r]=o+e*Math.cos(h),n[r+1]=a+e*Math.sin(h),n[r+2]=h}addCurvePosition(e,t,i,n,r,o,a,c,l,h,u,d){if(e==0||isNaN(e)){h[u]=t,h[u+1]=i,h[u+2]=Math.atan2(r-i,n-t);return}let f=e*e,p=f*e,m=1-e,g=m*m,v=g*m,x=m*e,y=x*3,_=m*y,C=y*e,S=t*v+n*_+o*C+c*p,b=i*v+r*_+a*C+l*p;h[u]=S,h[u+1]=b,d&&(e<.001?h[u+2]=Math.atan2(r-i,n-t):h[u+2]=Math.atan2(b-(i*g+r*x*2+a*f),S-(t*g+n*x*2+o*f)))}},w(Ei,"NONE",-1),w(Ei,"BEFORE",-2),w(Ei,"AFTER",-3),w(Ei,"epsilon",1e-5),Ei),AR=class{constructor(e,t){w(this,"data");w(this,"_bone",null);w(this,"inertia",0);w(this,"strength",0);w(this,"damping",0);w(this,"massInverse",0);w(this,"wind",0);w(this,"gravity",0);w(this,"mix",0);w(this,"_reset",!0);w(this,"ux",0);w(this,"uy",0);w(this,"cx",0);w(this,"cy",0);w(this,"tx",0);w(this,"ty",0);w(this,"xOffset",0);w(this,"xVelocity",0);w(this,"yOffset",0);w(this,"yVelocity",0);w(this,"rotateOffset",0);w(this,"rotateVelocity",0);w(this,"scaleOffset",0);w(this,"scaleVelocity",0);w(this,"active",!1);w(this,"skeleton");w(this,"remaining",0);w(this,"lastTime",0);this.data=e,this.skeleton=t,this.bone=t.bones[e.bone.index],this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}set bone(e){this._bone=e}get bone(){if(this._bone)return this._bone;throw new Error("Bone not set.")}reset(){this.remaining=0,this.lastTime=this.skeleton.time,this._reset=!0,this.xOffset=0,this.xVelocity=0,this.yOffset=0,this.yVelocity=0,this.rotateOffset=0,this.rotateVelocity=0,this.scaleOffset=0,this.scaleVelocity=0}setToSetupPose(){const e=this.data;this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}isActive(){return this.active}update(e){const t=this.mix;if(t==0)return;const i=this.data.x>0,n=this.data.y>0,r=this.data.rotate>0||this.data.shearX>0,o=this.data.scaleX>0,a=this.bone,c=a.data.length;switch(e){case ir.none:return;case ir.reset:this.reset();case ir.update:const l=this.skeleton,h=Math.max(this.skeleton.time-this.lastTime,0);this.remaining+=h,this.lastTime=l.time;const u=a.worldX,d=a.worldY;if(this._reset)this._reset=!1,this.ux=u,this.uy=d;else{let f=this.remaining,p=this.inertia,m=this.data.step,g=this.skeleton.data.referenceScale,v=-1,x=this.data.limit*h,y=x*Math.abs(l.scaleY);if(x*=Math.abs(l.scaleX),i||n){if(i){const _=(this.ux-u)*p;this.xOffset+=_>x?x:_<-x?-x:_,this.ux=u}if(n){const _=(this.uy-d)*p;this.yOffset+=_>y?y:_<-y?-y:_,this.uy=d}if(f>=m){v=Math.pow(this.damping,60*m);const _=this.massInverse*m,C=this.strength,S=this.wind*g*l.scaleX,b=this.gravity*g*l.scaleY;do i&&(this.xVelocity+=(S-this.xOffset*C)*_,this.xOffset+=this.xVelocity*m,this.xVelocity*=v),n&&(this.yVelocity-=(b+this.yOffset*C)*_,this.yOffset+=this.yVelocity*m,this.yVelocity*=v),f-=m;while(f>=m)}i&&(a.worldX+=this.xOffset*t*this.data.x),n&&(a.worldY+=this.yOffset*t*this.data.y)}if(r||o){let _=Math.atan2(a.c,a.a),C=0,S=0,b=0,M=this.cx-a.worldX,I=this.cy-a.worldY;if(M>x?M=x:M<-x&&(M=-x),I>y?I=y:I<-y&&(I=-y),r){b=(this.data.rotate+this.data.shearX)*t;let F=Math.atan2(I+this.ty,M+this.tx)-_-this.rotateOffset*b;this.rotateOffset+=(F-Math.ceil(F*Ie.invPI2-.5)*Ie.PI2)*p,F=this.rotateOffset*b+_,C=Math.cos(F),S=Math.sin(F),o&&(F=c*a.getWorldScaleX(),F>0&&(this.scaleOffset+=(M*C+I*S)*p/F))}else{C=Math.cos(_),S=Math.sin(_);const F=c*a.getWorldScaleX();F>0&&(this.scaleOffset+=(M*C+I*S)*p/F)}if(f=this.remaining,f>=m){v==-1&&(v=Math.pow(this.damping,60*m));const F=this.massInverse*m,E=this.strength,k=this.wind,O=up.yDown?-this.gravity:this.gravity,D=c/g;for(;;)if(f-=m,o&&(this.scaleVelocity+=(k*C-O*S-this.scaleOffset*E)*F,this.scaleOffset+=this.scaleVelocity*m,this.scaleVelocity*=v),r){if(this.rotateVelocity-=((k*S+O*C)*D+this.rotateOffset*E)*F,this.rotateOffset+=this.rotateVelocity*m,this.rotateVelocity*=v,f0){let f=0;this.data.rotate>0&&(f=l*this.data.rotate,h=Math.sin(f),u=Math.cos(f),d=a.b,a.b=u*d-h*a.d,a.d=h*d+u*a.d),f+=l*this.data.shearX,h=Math.sin(f),u=Math.cos(f),d=a.a,a.a=u*d-h*a.c,a.c=h*d+u*a.c}else l*=this.data.rotate,h=Math.sin(l),u=Math.cos(l),d=a.a,a.a=u*d-h*a.c,a.c=h*d+u*a.c,d=a.b,a.b=u*d-h*a.d,a.d=h*d+u*a.d}if(o){const l=1+this.scaleOffset*t*this.data.scaleX;a.a*=l,a.c*=l}e!=ir.pose&&(this.tx=c*a.a,this.ty=c*a.c),a.updateAppliedTransform()}translate(e,t){this.ux-=e,this.uy-=t,this.cx-=e,this.cy-=t}rotate(e,t,i){const n=i*Ie.degRad,r=Math.cos(n),o=Math.sin(n),a=this.cx-e,c=this.cy-t;this.translate(a*r-c*o-a,a*o+c*r-c)}},ER=class{constructor(e,t){w(this,"data");w(this,"bone");w(this,"color");w(this,"darkColor",null);w(this,"attachment",null);w(this,"attachmentState",0);w(this,"sequenceIndex",-1);w(this,"deform",new Array);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("bone cannot be null.");this.data=e,this.bone=t,this.color=new st,this.darkColor=e.darkColor?new st:null,this.setToSetupPose()}getSkeleton(){return this.bone.skeleton}getAttachment(){return this.attachment}setAttachment(e){this.attachment!=e&&((!(e instanceof Un)||!(this.attachment instanceof Un)||e.timelineAttachment!=this.attachment.timelineAttachment)&&(this.deform.length=0),this.attachment=e,this.sequenceIndex=-1)}setToSetupPose(){this.color.setFromColor(this.data.color),this.darkColor&&this.darkColor.setFromColor(this.data.darkColor),this.data.attachmentName?(this.attachment=null,this.setAttachment(this.bone.skeleton.getAttachment(this.data.index,this.data.attachmentName))):this.attachment=null}},IR=class{constructor(e,t){w(this,"data");w(this,"bones");w(this,"target");w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0);w(this,"mixScaleX",0);w(this,"mixScaleY",0);w(this,"mixShearY",0);w(this,"temp",new ch);w(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n0?Ie.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,x=g.length;vIe.PI?M-=Ie.PI2:M<-3.1415927&&(M+=Ie.PI2),M*=e;let I=Math.cos(M),F=Math.sin(M);y.a=I*_-F*S,y.b=I*C-F*b,y.c=F*_+I*S,y.d=F*C+I*b}if(a){let _=this.temp;c.localToWorld(_.set(this.data.offsetX,this.data.offsetY)),y.worldX+=(_.x-y.worldX)*t,y.worldY+=(_.y-y.worldY)*i}if(n!=0){let _=Math.sqrt(y.a*y.a+y.c*y.c);_!=0&&(_=(_+(Math.sqrt(l*l+u*u)-_+this.data.offsetScaleX)*n)/_),y.a*=_,y.c*=_}if(r!=0){let _=Math.sqrt(y.b*y.b+y.d*y.d);_!=0&&(_=(_+(Math.sqrt(h*h+d*d)-_+this.data.offsetScaleY)*r)/_),y.b*=_,y.d*=_}if(o>0){let _=y.b,C=y.d,S=Math.atan2(C,_),b=Math.atan2(d,h)-Math.atan2(u,l)-(S-Math.atan2(y.c,y.a));b>Ie.PI?b-=Ie.PI2:b<-3.1415927&&(b+=Ie.PI2),b=S+(b+m)*o;let M=Math.sqrt(_*_+C*C);y.b=Math.cos(b)*M,y.d=Math.sin(b)*M}y.updateAppliedTransform()}}applyRelativeWorld(){let e=this.mixRotate,t=this.mixX,i=this.mixY,n=this.mixScaleX,r=this.mixScaleY,o=this.mixShearY,a=t!=0||i!=0,c=this.target,l=c.a,h=c.b,u=c.c,d=c.d,f=l*d-h*u>0?Ie.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,x=g.length;vIe.PI?M-=Ie.PI2:M<-3.1415927&&(M+=Ie.PI2),M*=e;let I=Math.cos(M),F=Math.sin(M);y.a=I*_-F*S,y.b=I*C-F*b,y.c=F*_+I*S,y.d=F*C+I*b}if(a){let _=this.temp;c.localToWorld(_.set(this.data.offsetX,this.data.offsetY)),y.worldX+=_.x*t,y.worldY+=_.y*i}if(n!=0){let _=(Math.sqrt(l*l+u*u)-1+this.data.offsetScaleX)*n+1;y.a*=_,y.c*=_}if(r!=0){let _=(Math.sqrt(h*h+d*d)-1+this.data.offsetScaleY)*r+1;y.b*=_,y.d*=_}if(o>0){let _=Math.atan2(d,h)-Math.atan2(u,l);_>Ie.PI?_-=Ie.PI2:_<-3.1415927&&(_+=Ie.PI2);let C=y.b,S=y.d;_=Math.atan2(S,C)+(_-Ie.PI/2+m)*o;let b=Math.sqrt(C*C+S*S);y.b=Math.cos(_)*b,y.d=Math.sin(_)*b}y.updateAppliedTransform()}}applyAbsoluteLocal(){let e=this.mixRotate,t=this.mixX,i=this.mixY,n=this.mixScaleX,r=this.mixScaleY,o=this.mixShearY,a=this.target,c=this.bones;for(let l=0,h=c.length;lt.data.name==e)??null}findTransformConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.transformConstraints.find(t=>t.data.name==e)??null}findPathConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.pathConstraints.find(t=>t.data.name==e)??null}findPhysicsConstraint(e){if(e==null)throw new Error("constraintName cannot be null.");return this.physicsConstraints.find(t=>t.data.name==e)??null}getBoundsRect(e){let t=new ch,i=new ch;return this.getBounds(t,i,void 0,e),{x:t.x,y:t.y,width:i.x,height:i.y}}getBounds(e,t,i=new Array(2),n=null){if(!e)throw new Error("offset cannot be null.");if(!t)throw new Error("size cannot be null.");let r=this.drawOrder,o=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;for(let h=0,u=r.length;h=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=i}addSkin(e){for(let n=0;n= 0.");if(!t)throw new Error("name cannot be null.");if(!i)throw new Error("boneData cannot be null.");this.index=e,this.name=t,this.boneData=i}};var cr;(function(s){s[s.Normal=0]="Normal",s[s.Additive=1]="Additive",s[s.Multiply=2]="Multiply",s[s.Screen=3]="Screen"})(cr||(cr={}));let ew=class extends ou{constructor(t){super(t,0,!1);w(this,"bones",new Array);w(this,"_target",null);w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0);w(this,"mixScaleX",0);w(this,"mixScaleY",0);w(this,"mixShearY",0);w(this,"offsetRotation",0);w(this,"offsetX",0);w(this,"offsetY",0);w(this,"offsetScaleX",0);w(this,"offsetScaleY",0);w(this,"offsetShearY",0);w(this,"relative",!1);w(this,"local",!1)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},am=class{constructor(e){w(this,"scale",1);w(this,"attachmentLoader");w(this,"linkedMeshes",new Array);this.attachmentLoader=e}readSkeletonData(e){let t=this.scale,i=new uh;i.name="";let n=new RR(e),r=n.readInt32(),o=n.readInt32();i.hash=o==0&&r==0?null:o.toString(16)+r.toString(16),i.version=n.readString(),i.x=n.readFloat(),i.y=n.readFloat(),i.width=n.readFloat(),i.height=n.readFloat(),i.referenceScale=n.readFloat()*t;let a=n.readBoolean();a&&(i.fps=n.readFloat(),i.imagesPath=n.readString(),i.audioPath=n.readString());let c=0;c=n.readInt(!0);for(let h=0;h>1&3,f.rotateMode=p>>3&3,(p&128)!=0&&(f.offsetRotation=n.readFloat()),f.position=n.readFloat(),f.positionMode==rn.Fixed&&(f.position*=t),f.spacing=n.readFloat(),(f.spacingMode==li.Length||f.spacingMode==li.Fixed)&&(f.spacing*=t),f.mixRotate=n.readFloat(),f.mixX=n.readFloat(),f.mixY=n.readFloat(),i.pathConstraints.push(f)}c=n.readInt(!0);for(let h=0,u;h>4,e.readFloat())}n.push(S);break}}}}}let o=e.readInt(!0);if(o>0){let l=new Va(o),h=i.slots.length;for(let u=0;u=0;x--)p[x]=-1;let m=Re.newArray(h-f,0),g=0,v=0;for(let x=0;x=0;x--)p[x]==-1&&(p[x]=m[--v]);l.setFrame(u,d,p)}n.push(l)}let a=e.readInt(!0);if(a>0){let l=new hp(a);for(let h=0;h>>1^-(i&1)}readStringRef(){let e=this.readInt(!0);return e==0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let i=0;i>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),i+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),i+=3;break;default:t+=String.fromCharCode(n),i++}}return t}readFloat(){let e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!=0}},PR=class{constructor(e,t,i,n,r){w(this,"parent");w(this,"skinIndex");w(this,"slotIndex");w(this,"mesh");w(this,"inheritTimeline");this.mesh=e,this.skinIndex=t,this.slotIndex=i,this.parent=n,this.inheritTimeline=r}},kR=class{constructor(e=null,t=null,i=0){w(this,"bones");w(this,"vertices");w(this,"length");this.bones=e,this.vertices=t,this.length=i}};var gn;(function(s){s[s.Region=0]="Region",s[s.BoundingBox=1]="BoundingBox",s[s.Mesh=2]="Mesh",s[s.LinkedMesh=3]="LinkedMesh",s[s.Path=4]="Path",s[s.Point=5]="Point",s[s.Clipping=6]="Clipping"})(gn||(gn={}));function Mi(s,e,t){let i=s.readFloat(),n=s.readFloat()*t;for(let r=0,o=0,a=e.getFrameCount()-1;e.setFrame(r,i,n),r!=a;r++){let c=s.readFloat(),l=s.readFloat()*t;switch(s.readByte()){case Vs:e.setStepped(r);break;case Ys:ht(s,e,o++,r,0,i,c,n,l,t)}i=c,n=l}return e}function Qd(s,e,t){let i=s.readFloat(),n=s.readFloat()*t,r=s.readFloat()*t;for(let o=0,a=0,c=e.getFrameCount()-1;e.setFrame(o,i,n,r),o!=c;o++){let l=s.readFloat(),h=s.readFloat()*t,u=s.readFloat()*t;switch(s.readByte()){case Vs:e.setStepped(o);break;case Ys:ht(s,e,a++,o,0,i,l,n,h,t),ht(s,e,a++,o,1,i,l,r,u,t)}i=l,n=h,r=u}return e}function ht(s,e,t,i,n,r,o,a,c,l){e.setBezier(t,i,n,r,a,s.readFloat(),s.readFloat()*l,s.readFloat(),s.readFloat()*l,o,c)}const FR=0,OR=1,BR=2,LR=3,DR=4,NR=5,UR=6,$R=7,XR=8,VR=9,YR=10,GR=0,HR=1,jR=2,WR=3,zR=4,qR=5,KR=0,ZR=1,JR=0,QR=1,eP=2,tP=0,iP=1,sP=2,nP=4,rP=5,oP=6,aP=7,lP=8,Vs=1,Ys=2;class ji{constructor(){w(this,"convexPolygons",new Array);w(this,"convexPolygonsIndices",new Array);w(this,"indicesArray",new Array);w(this,"isConcaveArray",new Array);w(this,"triangles",new Array);w(this,"polygonPool",new lh(()=>new Array));w(this,"polygonIndicesPool",new lh(()=>new Array))}triangulate(e){let t=e,i=e.length>>1,n=this.indicesArray;n.length=0;for(let a=0;a3;){let a=i-1,c=0,l=1;for(;;){e:if(!r[c]){let d=n[a]<<1,f=n[c]<<1,p=n[l]<<1,m=t[d],g=t[d+1],v=t[f],x=t[f+1],y=t[p],_=t[p+1];for(let C=(l+1)%i;C!=a;C=(C+1)%i){if(!r[C])continue;let S=n[C]<<1,b=t[S],M=t[S+1];if(ji.positiveArea(y,_,m,g,b,M)&&ji.positiveArea(m,g,v,x,b,M)&&ji.positiveArea(v,x,y,_,b,M))break e}break}if(l==0){do{if(!r[c])break;c--}while(c>0);break}a=c,c=l,l=(l+1)%i}o.push(n[(i+c-1)%i]),o.push(n[c]),o.push(n[(c+1)%i]),n.splice(c,1),r.splice(c,1),i--;let h=(i+c-1)%i,u=c==i?0:c;r[h]=ji.isConcave(h,i,t,n),r[u]=ji.isConcave(u,i,t,n)}return i==3&&(o.push(n[2]),o.push(n[0]),o.push(n[1])),o}decompose(e,t){let i=e,n=this.convexPolygons;this.polygonPool.freeAll(n),n.length=0;let r=this.convexPolygonsIndices;this.polygonIndicesPool.freeAll(r),r.length=0;let o=this.polygonIndicesPool.obtain();o.length=0;let a=this.polygonPool.obtain();a.length=0;let c=-1,l=0;for(let h=0,u=t.length;h0?(n.push(a),r.push(o)):(this.polygonPool.free(a),this.polygonIndicesPool.free(o)),a=this.polygonPool.obtain(),a.length=0,a.push(m),a.push(g),a.push(v),a.push(x),a.push(y),a.push(_),o=this.polygonIndicesPool.obtain(),o.length=0,o.push(d),o.push(f),o.push(p),l=ji.winding(m,g,v,x,y,_),c=d)}a.length>0&&(n.push(a),r.push(o));for(let h=0,u=n.length;h=0;h--)a=n[h],a.length==0&&(n.splice(h,1),this.polygonPool.free(a),o=r[h],r.splice(h,1),this.polygonIndicesPool.free(o));return n}static isConcave(e,t,i,n){let r=n[(t+e-1)%t]<<1,o=n[e]<<1,a=n[(e+1)%t]<<1;return!this.positiveArea(i[r],i[r+1],i[o],i[o+1],i[a],i[a+1])}static positiveArea(e,t,i,n,r,o){return e*(o-n)+i*(t-o)+r*(n-t)>=0}static winding(e,t,i,n,r,o){let a=i-e,c=n-t;return r*c-o*a+a*t-e*c>=0?1:-1}}class dh{constructor(){w(this,"triangulator",new ji);w(this,"clippingPolygon",new Array);w(this,"clipOutput",new Array);w(this,"clippedVertices",new Array);w(this,"clippedUVs",new Array);w(this,"clippedTriangles",new Array);w(this,"scratch",new Array);w(this,"clipAttachment",null);w(this,"clippingPolygons",null)}clipStart(e,t){if(this.clipAttachment)return 0;this.clipAttachment=t;let i=t.worldVerticesLength,n=Re.setArraySize(this.clippingPolygon,i);t.computeWorldVertices(e,0,i,n,0,2);let r=this.clippingPolygon;dh.makeClockwise(r);let o=this.clippingPolygons=this.triangulator.decompose(r,this.triangulator.triangulate(r));for(let a=0,c=o.length;a>1,S=this.clipOutput,b=Re.setArraySize(r,y+C*2);for(let I=0;I<_;I+=2,y+=2){let F=S[I],E=S[I+1];b[y]=F,b[y+1]=E}y=o.length;let M=Re.setArraySize(o,y+3*(C-2));C--;for(let I=1;I>1,X=this.clipOutput,V=Re.setArraySize(l,D+B*f);for(let W=0;W<$;W+=2,D+=f){let ne=X[W],re=X[W+1];V[D]=ne,V[D+1]=re,V[D+2]=r.r,V[D+3]=r.g,V[D+4]=r.b,V[D+5]=r.a;let le=ne-I,ue=re-F,ae=(N*le+U*ue)*L,xe=(P*le+A*ue)*L,Y=1-ae-xe;V[D+6]=y*ae+b*xe+E*Y,V[D+7]=_*ae+M*xe+k*Y,a&&(V[D+8]=o.r,V[D+9]=o.g,V[D+10]=o.b,V[D+11]=o.a)}D=h.length;let q=Re.setArraySize(h,D+3*(B-2));B--;for(let W=1;W>1,P=this.clipOutput,L=Re.setArraySize(o,E+A*2),B=Re.setArraySize(a,E+A*2);for(let V=0;V=2?(u=c,c=this.scratch):u=this.scratch,u.length=0,u.push(e),u.push(t),u.push(i),u.push(n),u.push(r),u.push(o),u.push(e),u.push(t),c.length=0;let d=a.length-4,f=a;for(let p=0;;p+=2){let m=f[p],g=f[p+1],v=m-f[p+2],x=g-f[p+3],y=c.length,_=u;for(let S=0,b=u.length-2;Sv*(g-E),O=x*(m-M)-v*(g-I);if(O>0){if(k){c.push(F),c.push(E);continue}let D=F-M,$=E-I,N=O/(D*x-$*v);if(N>=0&&N<=1)c.push(M+D*N),c.push(I+$*N);else{c.push(F),c.push(E);continue}}else if(k){let D=F-M,$=E-I,N=O/(D*x-$*v);if(N>=0&&N<=1)c.push(M+D*N),c.push(I+$*N),c.push(F),c.push(E);else{c.push(F),c.push(E);continue}}h=!0}if(y==c.length)return l.length=0,!0;if(c.push(c[0]),c.push(c[1]),p==d)break;let C=c;c=u,c.length=0,u=C}if(l!=c){l.length=0;for(let p=0,m=c.length-2;p>1;l0){let h=i.findPhysicsConstraint(a);if(!h)throw new Error("Physics constraint not found: "+a);l=i.physicsConstraints.indexOf(h)}for(let h in c){let u=c[h],d=u[0];if(!d)continue;let f=u.length;if(h=="reset"){const m=new D1(f,l);for(let g=0;d!=null;d=u[g+1],g++)m.setFrame(g,J(d,"time",0));r.push(m);continue}let p;if(h=="inertia")p=new R1(f,f,l);else if(h=="strength")p=new P1(f,f,l);else if(h=="damping")p=new k1(f,f,l);else if(h=="mass")p=new F1(f,f,l);else if(h=="wind")p=new O1(f,f,l);else if(h=="gravity")p=new B1(f,f,l);else if(h=="mix")p=new L1(f,f,l);else continue;r.push(bs(u,p,0,1))}}if(e.attachments)for(let a in e.attachments){let c=e.attachments[a],l=i.findSkin(a);if(!l)throw new Error("Skin not found: "+a);for(let h in c){let u=c[h],d=i.findSlot(h);if(!d)throw new Error("Slot not found: "+h);let f=d.index;for(let p in u){let m=u[p],g=l.getAttachment(f,p);for(let v in m){let x=m[v],y=x[0];if(y){if(v=="deform"){let _=g.bones,C=g.vertices,S=_?C.length/3*2:C.length,b=new T1(x.length,x.length,f,g),M=J(y,"time",0);for(let I=0,F=0;;I++){let E,k=J(y,"vertices",null);if(!k)E=_?Re.newFloatArray(S):C;else{E=Re.newFloatArray(S);let N=J(y,"offset",0);if(Re.arrayCopy(k,0,E,N,k.length),n!=1)for(let U=N,A=U+k.length;U=0;v--)d[v]==-1&&(d[v]=p[--g])}a.setFrame(l,J(u,"time",0),d)}r.push(a)}if(e.events){let a=new hp(e.events.length),c=0;for(let l=0;l"u"&&(Math.fround=(function(s){return function(e){return s[0]=e,s[0]}})(new Float32Array(1)));if(typeof window<"u"&&window.PIXI){let s=window.require;window.require=e=>{if(s)return s(e);if(e.startsWith("@pixi/"))return window.PIXI}}const yn=class yn extends wR{constructor(t){super(t.resource.source);w(this,"texture");this.texture=ze.from(t)}static from(t){return yn.textureMap.has(t)?yn.textureMap.get(t):new yn(t)}setFilters(t,i){this.texture.baseTexture.scaleMode=yn.toPixiTextureFilter(t),this.texture.baseTexture.mipmap=yn.toPixiMipMap(t)}setWraps(t,i){this.texture.baseTexture.wrapMode=yn.toPixiTextureWrap(t)}dispose(){this.texture.destroy()}static toPixiTextureFilter(t){switch(t){case ui.Nearest:case ui.MipMapNearestLinear:case ui.MipMapNearestNearest:return Cs.NEAREST;case ui.Linear:case ui.MipMapLinearLinear:case ui.MipMapLinearNearest:return Cs.LINEAR;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiMipMap(t){switch(t){case ui.Nearest:case ui.Linear:return gs.OFF;case ui.MipMapNearestLinear:case ui.MipMapNearestNearest:case ui.MipMapLinearLinear:case ui.MipMapLinearNearest:return gs.ON;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiTextureWrap(t){switch(t){case Fn.ClampToEdge:return Is.CLAMP;case Fn.MirroredRepeat:return Is.MIRRORED_REPEAT;case Fn.Repeat:return Is.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(t)}`)}}static toPixiBlending(t){switch(t){case cr.Normal:return je.NORMAL;case cr.Additive:return je.ADD;case cr.Multiply:return je.MULTIPLY;case cr.Screen:return je.SCREEN;default:throw new Error(`Unknown blendMode: ${String(t)}`)}}};w(yn,"textureMap",new Map);let so=yn;const xn=class xn extends ll{constructor(){const t=new rp;t.getBuffer("aVertexPosition").static=!1,t.getBuffer("aTextureCoord").static=!1;const i=new nh(ze.EMPTY);super(t,i);w(this,"name","");w(this,"warnedTwoTint",!1)}updateFromSpineData(t,i,n,r,o,a,c,l){var v,x;this.texture=t.texture;const h=o/(l?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((v=u.data)==null?void 0:v.length)!==h&&(u.data=new Float32Array(h));const d=this.geometry.getBuffer("aVertexPosition");((x=d.data)==null?void 0:x.length)!==h&&(d.data=new Float32Array(h));let f=0,p=u.data,m=d.data;for(let y=0;ynew lm);w(this,"beforeUpdateWorldTransforms",()=>{});w(this,"afterUpdateWorldTransforms",()=>{});w(this,"_autoUpdate",!1);w(this,"_ticker",$i.shared);w(this,"meshesCache",new Map);w(this,"lightColor",new st);w(this,"darkColor",new st);w(this,"_boundsProvider");w(this,"_boundsPoint",new pt);w(this,"_boundsSpineID",-1);w(this,"_boundsSpineDirty",!0);w(this,"slotsObject",new Map);w(this,"verticesCache",Re.newFloatArray(1024));w(this,"clippingSlotToPixiMasks",{});w(this,"currentClippingSlot");const n=t instanceof uh?t:t.skeletonData;this.skeleton=new up(n);const r=new bR(n);this.state=new pR(r),(t==null?void 0:t.darkTint)!==void 0||(i==null?void 0:i.slotMeshFactory)===void 0?(this.darkTint=(t==null?void 0:t.darkTint)===void 0?this.skeleton.slots.some(o=>!!o.data.darkColor):t==null?void 0:t.darkTint,this.darkTint&&(this.slotMeshFactory=()=>new Ya)):this.initializeMeshFactory(i==null?void 0:i.slotMeshFactory),t!=null&&t.ticker&&(this._ticker=t.ticker),this.autoUpdate=(t==null?void 0:t.autoUpdate)??!0,this.boundsProvider=t.boundsProvider}get debug(){return this._debug}set debug(t){this._debug&&this._debug.unregisterSpine(this),t&&t.registerSpine(this),this._debug=t}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t&&!this._autoUpdate?this._ticker.add(this.internalUpdate,this):!t&&this._autoUpdate&&this._ticker.remove(this.internalUpdate,this),this._autoUpdate=t}get ticker(){return this._ticker}set ticker(t){t=t??$i.shared,this._ticker!==t&&(this._autoUpdate&&(this._ticker.remove(this.internalUpdate,this),t.add(this.internalUpdate,this)),this._ticker=t)}get boundsProvider(){return this._boundsProvider}set boundsProvider(t){this._boundsProvider=t,t?(this._boundsSpineID=-1,this._boundsSpineDirty=!0,this.interactiveChildren=!1):(this.interactiveChildren=!0,this.hitArea=null),this.hasNeverUpdated||this.calculateBounds()}initializeMeshFactory(t){if(t){this.slotMeshFactory=t;const i=this.slotMeshFactory();i instanceof Ya&&(this.darkTint=!0),i.destroy()}else for(let i=0;inew Ya,this.darkTint=!0;break}}update(t){this.internalUpdate(0,t)}internalUpdate(t,i){this.hasNeverUpdated=!1;const n=i??this._ticker.deltaMS/1e3;this.state.update(n),this.state.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(n),this.skeleton.updateWorldTransform(ir.update),this.afterUpdateWorldTransforms(this)}updateTransform(){var t;this.renderMeshes(),this.sortChildren(),(t=this.debug)==null||t.renderDebug(this),super.updateTransform()}destroy(t){var i;this.autoUpdate&&(this.autoUpdate=!1),this._ticker=null;for(const[,n]of this.meshesCache)n==null||n.destroy();this.state.clearListeners(),this.debug=void 0,this.meshesCache.clear(),this.slotsObject.clear();for(let n in this.clippingSlotToPixiMasks)(i=this.clippingSlotToPixiMasks[n].mask)==null||i.destroy(),delete this.clippingSlotToPixiMasks[n];super.destroy(t)}resetMeshes(){for(const[,t]of this.meshesCache)t.zIndex=-1,t.visible=!1}_calculateBounds(){this.hasNeverUpdated&&(this.internalUpdate(0,0),this.renderMeshes())}hasMeshForSlot(t){return this.meshesCache.has(t)}getMeshForSlot(t){if(this.hasMeshForSlot(t)){let i=this.meshesCache.get(t);return i.visible=!0,i}else{let i=this.slotMeshFactory();return this.addChild(i),this.meshesCache.set(t,i),i}}getSlotFromRef(t){let i;if(typeof t=="number"?i=this.skeleton.slots[t]:typeof t=="string"?i=this.skeleton.findSlot(t):i=t,!i)throw new Error(`No slot found with the given slot reference: ${t}`);return i}addSlotObject(t,i,n){var a;let r=this.getSlotFromRef(t);const o=(a=this.slotsObject.get(r))==null?void 0:a.container;if(!(o&&o===i)){for(const[c,{container:l}]of this.slotsObject)if(c!==r&&l===i){this.removeSlotObject(c,i);break}o&&this.removeChild(o),this.slotsObject.set(r,{container:i,followAttachmentTimeline:(n==null?void 0:n.followAttachmentTimeline)||!1,followSlotColor:(n==null?void 0:n.followSlotColor)||!1}),this.addChild(i)}}getSlotObject(t){const i=this.slotsObject.get(this.getSlotFromRef(t));return i?i.container:void 0}removeSlotObject(t,i){var o;let n=this.getSlotFromRef(t),r=(o=this.slotsObject.get(n))==null?void 0:o.container;r&&(i&&i!==r||(this.removeChild(r),this.slotsObject.delete(n)))}removeSlotObjects(){for(const[,t]of this.slotsObject)t.container.removeFromParent();this.slotsObject.clear()}updateSlotObject(t,i,n){const{container:r,followAttachmentTimeline:o}=t,a=o?!!i.attachment:!0;if(r.visible=this.skeleton.drawOrder.includes(i)&&a,r.visible){let c=i.bone;const l=r.localTransform;l.a=c.a,l.b=c.c,l.c=-c.b,l.d=-c.d,l.tx=c.worldX,l.ty=c.worldY,r.transform.setFromMatrix(l),r.zIndex=n,r.alpha=this.skeleton.color.a*i.color.a,t.followSlotColor&&this.setSlotObjectTint(r,255*this.skeleton.color.r*i.color.r<<16|255*this.skeleton.color.g*i.color.g<<8|255*this.skeleton.color.b*i.color.b)}}setSlotObjectTint(t,i){const n=t;"tint"in n&&(n.tint=i);for(const r of n.children??[])this.setSlotObjectTint(r,i)}updateAndSetPixiMask(t,i){var a,c;const n=t.attachment;if(n&&n instanceof Wo){const l=(a=this.clippingSlotToPixiMasks)[c=t.data.name]||(a[c]={slot:t,vertices:new Array});l.maskComputed=!1,this.currentClippingSlot=l;return}let r=this.currentClippingSlot;const o=this.slotsObject.get(t);if(r&&o){let l=r.mask;if(l||(l=Av.obtain(),r.mask=l,this.addChild(l)),!r.maskComputed){let h=r.slot,u=h.attachment;r.maskComputed=!0;const d=u.worldVerticesLength,f=r.vertices;u.computeWorldVertices(h,0,d,f,0,2),l.clear().lineStyle(0).beginFill(0).drawPolygon(f).endFill()}o.container.mask=l}else o!=null&&o.container.mask&&(o.container.mask=null);if(r&&r.slot.attachment.endSlot==t.data&&(this.currentClippingSlot=void 0),i){for(const l in this.clippingSlotToPixiMasks){const h=this.clippingSlotToPixiMasks[l];(!(h.slot.attachment instanceof Wo)||!h.maskComputed)&&h.mask&&(this.removeChild(h.mask),Av.free(h.mask),h.mask=void 0)}this.currentClippingSlot=void 0}}renderMeshes(){var r,o;this.resetMeshes();let t=null,i=null;const n=this.skeleton.drawOrder;for(let a=0,c=n.length,l=0;a>1)*p,x>this.verticesCache.length&&(this.verticesCache=Re.newFloatArray(x)),y.computeWorldVertices(h,0,y.worldVerticesLength,this.verticesCache,0,p),t=y.triangles,i=y.uvs,v=(o=y.region)==null?void 0:o.texture}else if(m instanceof Wo){vt.clipper.clipStart(h,m);continue}else{this.hasMeshForSlot(h)&&(this.getMeshForSlot(h).visible=!1),vt.clipper.clipEndWithSlot(h);continue}if(v!=null){const _=h.bone.skeleton.color,C=h.color,S=_.a*C.a*g.a;this.lightColor.set(_.r*C.r*g.r,_.g*C.g*g.g,_.b*C.b*g.b,S),h.darkColor!=null?this.darkColor.set(h.darkColor.r,h.darkColor.g,h.darkColor.b,1):this.darkColor.set(0,0,0,1);let b,M,I,F;if(vt.clipper.isClipping())vt.clipper.clipTriangles(this.verticesCache,t,t.length,i,this.lightColor,this.darkColor,f),b=vt.clipper.clippedVertices,M=b.length,I=vt.clipper.clippedTriangles,F=I.length;else{const k=this.verticesCache;for(let O=2,D=0,$=x;O<$;O+=p,D+=2){let N=O;k[N++]=this.lightColor.r,k[N++]=this.lightColor.g,k[N++]=this.lightColor.b,k[N++]=this.lightColor.a,k[N++]=i[D],k[N++]=i[D+1],f&&(k[N++]=this.darkColor.r,k[N++]=this.darkColor.g,k[N++]=this.darkColor.b,k[N++]=this.darkColor.a)}b=this.verticesCache,M=x,I=t,F=t.length}if(M==0||F==0){vt.clipper.clipEndWithSlot(h);continue}const E=this.getMeshForSlot(h);E.renderable=!0,E.zIndex=d,E.updateFromSpineData(v,h.data.blendMode,h.data.name,b,M,I,F,f)}vt.clipper.clipEndWithSlot(h)}vt.clipper.clipEnd()}calculateBounds(){if(!this._boundsProvider){super.calculateBounds();return}const t=this.transform;if(this._boundsSpineID===t._worldID)return;this.updateBounds();const i=this._localBounds,n=this._boundsPoint;n.set(i.minX,i.minY),t.worldTransform.apply(n,n),this._bounds.minX=n.x,this._bounds.minY=n.y,n.set(i.maxX,i.maxY),t.worldTransform.apply(n,n),this._bounds.maxX=n.x,this._bounds.maxY=n.y}updateBounds(){if(!this._boundsProvider||!this._boundsSpineDirty)return;this._boundsSpineDirty=!1,this._localBounds||(this._localBounds=new al);const t=this._boundsProvider.calculateBounds(this),i=this._localBounds;i.clear(),i.minX=t.x,i.minY=t.y,i.maxX=t.x+t.width,i.maxY=t.y+t.height,this.hitArea=this._localBounds.getRectangle()}setBonePosition(t,i){const n=t;if(typeof t=="string"&&(t=this.skeleton.findBone(t)),!t)throw Error(`Cannot set bone position, bone ${String(n)} not found`);if(vt.vectorAux.set(i.x,i.y),t.parent){const r=t.parent.worldToLocal(vt.vectorAux);t.x=r.x,t.y=r.y}else t.x=vt.vectorAux.x,t.y=vt.vectorAux.y}getBonePosition(t,i){const n=t;return typeof t=="string"&&(t=this.skeleton.findBone(t)),t?(i||(i={x:0,y:0}),i.x=t.worldX,i.y=t.worldY,i):(console.error(`Cannot get bone position! Bone ${String(n)} not found`),i)}skeletonToPixiWorldCoordinates(t){this.worldTransform.apply(t,t)}pixiWorldCoordinatesToSkeleton(t){this.worldTransform.applyInverse(t,t)}pixiWorldCoordinatesToBone(t,i){this.pixiWorldCoordinatesToSkeleton(t),i.parent?i.parent.worldToLocal(t):i.worldToLocal(t)}static from(t,i,n){if(typeof t=="string")return vt.oldFrom(t,i,n);const{skeleton:r,atlas:o,scale:a=1,darkTint:c,autoUpdate:l,boundsProvider:h,ticker:u}=t,d=`${r}-${o}-${a}`;let f=vt.skeletonCache[d];if(!f){const p=tn.get(r),m=tn.get(o),g=new rm(m);let v=p instanceof Uint8Array?new am(g):new fh(g);v.scale=a,f=v.readSkeletonData(p),vt.skeletonCache[d]=f}return new vt({skeletonData:f,darkTint:c,autoUpdate:l,boundsProvider:h,ticker:u})}static oldFrom(t,i,n){const r=`${t}-${i}-${(n==null?void 0:n.scale)??1}`;let o=vt.skeletonCache[r];if(o)return new vt(o,n);const a=tn.get(t),c=tn.get(i),l=new rm(c);let h=a instanceof Uint8Array?new am(l):new fh(l);return h.scale=(n==null?void 0:n.scale)??1,o=h.readSkeletonData(a),vt.skeletonCache[r]=o,new this(o,n)}get tint(){return this.skeleton.color.toRgb888()}set tint(t){st.rgb888ToColor(this.skeleton.color,t)}};w(vt,"vectorAux",new ch),w(vt,"clipper",new dh),w(vt,"QUAD_TRIANGLES",[0,1,2,2,3,0]),w(vt,"VERTEX_SIZE",8),w(vt,"DARK_VERTEX_SIZE",12),w(vt,"skeletonCache",Object.create(null));let mh=vt;const Av=new lh(()=>new zi);up.yDown=!0;const cc="spineTextureAtlasLoader",pP={extension:Pe.Asset,resolver:{test:s=>Ki(s,".atlas"),parse:s=>{var t,i;const e=s.split(".");return{resolution:parseFloat(((i=(t=ke.RETINA_PREFIX)==null?void 0:t.exec(s))==null?void 0:i[1])??"1"),format:e[e.length-2],src:s}}},loader:{name:cc,extension:{type:Pe.LoadParser,priority:ns.Normal,name:cc},test(s){return Ki(s,".atlas")},async load(s){const e=await ke.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[${cc}] Failed to fetch ${s}: ${e.status} ${e.statusText}`);return await e.text()},testParse(s,e){const t=Ki(e.src,".atlas"),i=typeof s=="string",n=e.loadParser===cc;return Promise.resolve((t||n)&&i)},unload(s){s.dispose()},async parse(s,e,t){var c;const i=e.data||{};let n=Zt.dirname(e.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");const r=new Vb(s);if(i.images instanceof Je||typeof i.images=="string"){const l=i.images;i.images={},i.images[r.pages[0].name]=l}const o=[];let a=!0;for(const l of t.parsers)if(l.name=="loadTextures"){a=(c=l.config)==null?void 0:c.preferCreateImageBitmap;break}tn.setPreferences({preferCreateImageBitmap:!1});for(const l of r.pages){const h=l.name,u=i!=null&&i.images?i.images[h]:void 0;if(u instanceof Je)l.setTexture(so.from(u));else{const d=u??Zt.normalize([...n.split(Zt.sep),h].join(Zt.sep)),f={src:Qc(d,e.src),data:{...i.imageMetadata,alphaMode:l.pma?mi.PMA:mi.UNPACK}},p=t.load(f).then(m=>{l.setTexture(so.from(m.baseTexture))});o.push(p)}}return await Promise.all(o),tn.setPreferences({preferCreateImageBitmap:a}),r}}};Ne.add(pP);const hc="spineSkeletonLoader";function gP(s){return s.hasOwnProperty("bones")}function vP(s){return s instanceof Uint8Array}const yP={extension:Pe.Asset,loader:{name:hc,extension:{type:Pe.LoadParser,priority:ns.Normal,name:hc},test(s){return Ki(s,".skel")},async load(s){const e=await ke.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[${hc}] Failed to fetch ${s}: ${e.status} ${e.statusText}`);return new Uint8Array(await e.arrayBuffer())},testParse(s,e){const t=Ki(e.src,".json")&&gP(s),i=Ki(e.src,".skel")&&vP(s),n=e.loadParser===hc;return Promise.resolve(t||i||n)}}};Ne.add(yP);class xP extends an{constructor(t=!1){super();w(this,"_buffer");w(this,"_indexBuffer");this._buffer=new Ot(void 0,t,!1),this._indexBuffer=new Ot(void 0,t,!0),this.addAttribute("aVertexPosition",this._buffer,2,!1,De.FLOAT).addAttribute("aTextureCoord",this._buffer,2,!1,De.FLOAT).addAttribute("aColor",this._buffer,4,!0,De.UNSIGNED_BYTE).addAttribute("aDarkColor",this._buffer,4,!0,De.UNSIGNED_BYTE).addAttribute("aTextureId",this._buffer,1,!0,De.FLOAT).addIndex(this._indexBuffer)}}const bP=` +`;class fP extends ks{constructor(t){const i={uSampler:t??ze.EMPTY,alpha:1,uTextureMatrix:Bt.IDENTITY,uColor:new Float32Array([1,1,1,1]),uDarkColor:new Float32Array([0,0,0,0])},n={tint:16777215,darkTint:0,alpha:1,pluginName:"darkTintBatch"};super(en.from(uP,dP),i);w(this,"uvMatrix");w(this,"batchable");w(this,"pluginName");w(this,"_tintRGB");w(this,"_darkTintRGB");w(this,"_colorDirty");w(this,"_alpha");w(this,"_tintColor");w(this,"_darkTintColor");this._colorDirty=!1,this.uvMatrix=new Qm(i.uSampler),this.batchable=!0,this.pluginName=n.pluginName,this._tintColor=new St(n.tint),this._darkTintColor=new St(n.darkTint),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._darkTintRGB=this._darkTintColor.toLittleEndianNumber(),this._alpha=n.alpha,this._colorDirty=!0}get texture(){return this.uniforms.uSampler}set texture(t){this.uniforms.uSampler!==t&&(!this.uniforms.uSampler.baseTexture.alphaMode!=!t.baseTexture.alphaMode&&(this._colorDirty=!0),this.uniforms.uSampler=t,this.uvMatrix.texture=t)}set alpha(t){t!==this._alpha&&(this._alpha=t,this._colorDirty=!0)}get alpha(){return this._alpha}set tint(t){t!==this.tint&&(this._tintColor.setValue(t),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0)}get tint(){return this._tintColor.value}set darkTint(t){t!==this.darkTint&&(this._darkTintColor.setValue(t),this._darkTintRGB=this._darkTintColor.toLittleEndianNumber(),this._colorDirty=!0)}get darkTint(){return this._darkTintColor.value}get tintValue(){return this._tintColor.toNumber()}get darkTintValue(){return this._darkTintColor.toNumber()}update(){this._colorDirty&&(this._colorDirty=!1,St.shared.setValue(this._tintColor).premultiply(this._alpha,!0).toArray(this.uniforms.uColor),St.shared.setValue(this._darkTintColor).premultiply(this._alpha,!0).premultiply(1,!1).toArray(this.uniforms.uDarkColor)),this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)}}class mP extends ll{constructor(t){super(new hP,new fP(t),void 0,void 0);w(this,"_darkTintRGB",0)}get darkTint(){return"darkTint"in this.shader?this.shader.darkTint:null}set darkTint(t){this.shader.darkTint=t}get darkTintValue(){return this.shader.darkTintValue}_renderToBatch(t){const i=this.geometry,n=this.shader;n.uvMatrix&&(n.uvMatrix.update(),this.calculateUvs()),this.calculateVertices(),this.indices=i.indexBuffer.data,this._tintRGB=n._tintRGB,this._darkTintRGB=n._darkTintRGB,this._texture=n.texture;const r=this.material.pluginName;t.batch.setObjectRenderer(t.plugins[r]),t.plugins[r].render(this)}}const ri=class ri extends mP{constructor(){super();w(this,"name","")}updateFromSpineData(t,i,n,r,o,a,c,l){var v,x;this.texture=t.texture;const h=o/(l?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((v=u.data)==null?void 0:v.length)!==h&&(u.data=new Float32Array(h));const d=this.geometry.getBuffer("aVertexPosition");((x=d.data)==null?void 0:x.length)!==h&&(d.data=new Float32Array(h));let f=0,p=u.data,m=d.data;for(let y=0;ynew lm);w(this,"beforeUpdateWorldTransforms",()=>{});w(this,"afterUpdateWorldTransforms",()=>{});w(this,"_autoUpdate",!1);w(this,"_ticker",$i.shared);w(this,"meshesCache",new Map);w(this,"lightColor",new st);w(this,"darkColor",new st);w(this,"_boundsProvider");w(this,"_boundsPoint",new pt);w(this,"_boundsSpineID",-1);w(this,"_boundsSpineDirty",!0);w(this,"slotsObject",new Map);w(this,"verticesCache",Re.newFloatArray(1024));w(this,"clippingSlotToPixiMasks",{});w(this,"currentClippingSlot");const n=t instanceof uh?t:t.skeletonData;this.skeleton=new up(n);const r=new bR(n);this.state=new pR(r),(t==null?void 0:t.darkTint)!==void 0||(i==null?void 0:i.slotMeshFactory)===void 0?(this.darkTint=(t==null?void 0:t.darkTint)===void 0?this.skeleton.slots.some(o=>!!o.data.darkColor):t==null?void 0:t.darkTint,this.darkTint&&(this.slotMeshFactory=()=>new Ya)):this.initializeMeshFactory(i==null?void 0:i.slotMeshFactory),t!=null&&t.ticker&&(this._ticker=t.ticker),this.autoUpdate=(t==null?void 0:t.autoUpdate)??!0,this.boundsProvider=t.boundsProvider}get debug(){return this._debug}set debug(t){this._debug&&this._debug.unregisterSpine(this),t&&t.registerSpine(this),this._debug=t}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t&&!this._autoUpdate?this._ticker.add(this.internalUpdate,this):!t&&this._autoUpdate&&this._ticker.remove(this.internalUpdate,this),this._autoUpdate=t}get ticker(){return this._ticker}set ticker(t){t=t??$i.shared,this._ticker!==t&&(this._autoUpdate&&(this._ticker.remove(this.internalUpdate,this),t.add(this.internalUpdate,this)),this._ticker=t)}get boundsProvider(){return this._boundsProvider}set boundsProvider(t){this._boundsProvider=t,t?(this._boundsSpineID=-1,this._boundsSpineDirty=!0,this.interactiveChildren=!1):(this.interactiveChildren=!0,this.hitArea=null),this.hasNeverUpdated||this.calculateBounds()}initializeMeshFactory(t){if(t){this.slotMeshFactory=t;const i=this.slotMeshFactory();i instanceof Ya&&(this.darkTint=!0),i.destroy()}else for(let i=0;inew Ya,this.darkTint=!0;break}}update(t){this.internalUpdate(0,t)}internalUpdate(t,i){this.hasNeverUpdated=!1;const n=i??this._ticker.deltaMS/1e3;this.state.update(n),this.state.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(n),this.skeleton.updateWorldTransform(ir.update),this.afterUpdateWorldTransforms(this)}updateTransform(){var t;this.renderMeshes(),this.sortChildren(),(t=this.debug)==null||t.renderDebug(this),super.updateTransform()}destroy(t){var i;this.autoUpdate&&(this.autoUpdate=!1),this._ticker=null;for(const[,n]of this.meshesCache)n==null||n.destroy();this.state.clearListeners(),this.debug=void 0,this.meshesCache.clear(),this.slotsObject.clear();for(let n in this.clippingSlotToPixiMasks)(i=this.clippingSlotToPixiMasks[n].mask)==null||i.destroy(),delete this.clippingSlotToPixiMasks[n];super.destroy(t)}resetMeshes(){for(const[,t]of this.meshesCache)t.zIndex=-1,t.visible=!1}_calculateBounds(){this.hasNeverUpdated&&(this.internalUpdate(0,0),this.renderMeshes())}hasMeshForSlot(t){return this.meshesCache.has(t)}getMeshForSlot(t){if(this.hasMeshForSlot(t)){let i=this.meshesCache.get(t);return i.visible=!0,i}else{let i=this.slotMeshFactory();return this.addChild(i),this.meshesCache.set(t,i),i}}getSlotFromRef(t){let i;if(typeof t=="number"?i=this.skeleton.slots[t]:typeof t=="string"?i=this.skeleton.findSlot(t):i=t,!i)throw new Error(`No slot found with the given slot reference: ${t}`);return i}addSlotObject(t,i,n){var a;let r=this.getSlotFromRef(t);const o=(a=this.slotsObject.get(r))==null?void 0:a.container;if(!(o&&o===i)){for(const[c,{container:l}]of this.slotsObject)if(c!==r&&l===i){this.removeSlotObject(c,i);break}o&&this.removeChild(o),this.slotsObject.set(r,{container:i,followAttachmentTimeline:(n==null?void 0:n.followAttachmentTimeline)||!1,followSlotColor:(n==null?void 0:n.followSlotColor)||!1}),this.addChild(i)}}getSlotObject(t){const i=this.slotsObject.get(this.getSlotFromRef(t));return i?i.container:void 0}removeSlotObject(t,i){var o;let n=this.getSlotFromRef(t),r=(o=this.slotsObject.get(n))==null?void 0:o.container;r&&(i&&i!==r||(this.removeChild(r),this.slotsObject.delete(n)))}removeSlotObjects(){for(const[,t]of this.slotsObject)t.container.removeFromParent();this.slotsObject.clear()}updateSlotObject(t,i,n){const{container:r,followAttachmentTimeline:o}=t,a=o?!!i.attachment:!0;if(r.visible=this.skeleton.drawOrder.includes(i)&&a,r.visible){let c=i.bone;const l=r.localTransform;l.a=c.a,l.b=c.c,l.c=-c.b,l.d=-c.d,l.tx=c.worldX,l.ty=c.worldY,r.transform.setFromMatrix(l),r.zIndex=n,r.alpha=this.skeleton.color.a*i.color.a,t.followSlotColor&&this.setSlotObjectTint(r,255*this.skeleton.color.r*i.color.r<<16|255*this.skeleton.color.g*i.color.g<<8|255*this.skeleton.color.b*i.color.b)}}setSlotObjectTint(t,i){const n=t;"tint"in n&&(n.tint=i);for(const r of n.children??[])this.setSlotObjectTint(r,i)}updateAndSetPixiMask(t,i){var a,c;const n=t.attachment;if(n&&n instanceof Wo){const l=(a=this.clippingSlotToPixiMasks)[c=t.data.name]||(a[c]={slot:t,vertices:new Array});l.maskComputed=!1,this.currentClippingSlot=l;return}let r=this.currentClippingSlot;const o=this.slotsObject.get(t);if(r&&o){let l=r.mask;if(l||(l=Av.obtain(),r.mask=l,this.addChild(l)),!r.maskComputed){let h=r.slot,u=h.attachment;r.maskComputed=!0;const d=u.worldVerticesLength,f=r.vertices;u.computeWorldVertices(h,0,d,f,0,2),l.clear().lineStyle(0).beginFill(0).drawPolygon(f).endFill()}o.container.mask=l}else o!=null&&o.container.mask&&(o.container.mask=null);if(r&&r.slot.attachment.endSlot==t.data&&(this.currentClippingSlot=void 0),i){for(const l in this.clippingSlotToPixiMasks){const h=this.clippingSlotToPixiMasks[l];(!(h.slot.attachment instanceof Wo)||!h.maskComputed)&&h.mask&&(this.removeChild(h.mask),Av.free(h.mask),h.mask=void 0)}this.currentClippingSlot=void 0}}renderMeshes(){var r,o;this.resetMeshes();let t=null,i=null;const n=this.skeleton.drawOrder;for(let a=0,c=n.length,l=0;a>1)*p,x>this.verticesCache.length&&(this.verticesCache=Re.newFloatArray(x)),y.computeWorldVertices(h,0,y.worldVerticesLength,this.verticesCache,0,p),t=y.triangles,i=y.uvs,v=(o=y.region)==null?void 0:o.texture}else if(m instanceof Wo){vt.clipper.clipStart(h,m);continue}else{this.hasMeshForSlot(h)&&(this.getMeshForSlot(h).visible=!1),vt.clipper.clipEndWithSlot(h);continue}if(v!=null){const _=h.bone.skeleton.color,C=h.color,S=_.a*C.a*g.a;this.lightColor.set(_.r*C.r*g.r,_.g*C.g*g.g,_.b*C.b*g.b,S),h.darkColor!=null?this.darkColor.set(h.darkColor.r,h.darkColor.g,h.darkColor.b,1):this.darkColor.set(0,0,0,1);let b,M,I,F;if(vt.clipper.isClipping())vt.clipper.clipTriangles(this.verticesCache,t,t.length,i,this.lightColor,this.darkColor,f),b=vt.clipper.clippedVertices,M=b.length,I=vt.clipper.clippedTriangles,F=I.length;else{const k=this.verticesCache;for(let O=2,D=0,$=x;O<$;O+=p,D+=2){let N=O;k[N++]=this.lightColor.r,k[N++]=this.lightColor.g,k[N++]=this.lightColor.b,k[N++]=this.lightColor.a,k[N++]=i[D],k[N++]=i[D+1],f&&(k[N++]=this.darkColor.r,k[N++]=this.darkColor.g,k[N++]=this.darkColor.b,k[N++]=this.darkColor.a)}b=this.verticesCache,M=x,I=t,F=t.length}if(M==0||F==0){vt.clipper.clipEndWithSlot(h);continue}const E=this.getMeshForSlot(h);E.renderable=!0,E.zIndex=d,E.updateFromSpineData(v,h.data.blendMode,h.data.name,b,M,I,F,f)}vt.clipper.clipEndWithSlot(h)}vt.clipper.clipEnd()}calculateBounds(){if(!this._boundsProvider){super.calculateBounds();return}const t=this.transform;if(this._boundsSpineID===t._worldID)return;this.updateBounds();const i=this._localBounds,n=this._boundsPoint;n.set(i.minX,i.minY),t.worldTransform.apply(n,n),this._bounds.minX=n.x,this._bounds.minY=n.y,n.set(i.maxX,i.maxY),t.worldTransform.apply(n,n),this._bounds.maxX=n.x,this._bounds.maxY=n.y}updateBounds(){if(!this._boundsProvider||!this._boundsSpineDirty)return;this._boundsSpineDirty=!1,this._localBounds||(this._localBounds=new al);const t=this._boundsProvider.calculateBounds(this),i=this._localBounds;i.clear(),i.minX=t.x,i.minY=t.y,i.maxX=t.x+t.width,i.maxY=t.y+t.height,this.hitArea=this._localBounds.getRectangle()}setBonePosition(t,i){const n=t;if(typeof t=="string"&&(t=this.skeleton.findBone(t)),!t)throw Error(`Cannot set bone position, bone ${String(n)} not found`);if(vt.vectorAux.set(i.x,i.y),t.parent){const r=t.parent.worldToLocal(vt.vectorAux);t.x=r.x,t.y=r.y}else t.x=vt.vectorAux.x,t.y=vt.vectorAux.y}getBonePosition(t,i){const n=t;return typeof t=="string"&&(t=this.skeleton.findBone(t)),t?(i||(i={x:0,y:0}),i.x=t.worldX,i.y=t.worldY,i):(console.error(`Cannot get bone position! Bone ${String(n)} not found`),i)}skeletonToPixiWorldCoordinates(t){this.worldTransform.apply(t,t)}pixiWorldCoordinatesToSkeleton(t){this.worldTransform.applyInverse(t,t)}pixiWorldCoordinatesToBone(t,i){this.pixiWorldCoordinatesToSkeleton(t),i.parent?i.parent.worldToLocal(t):i.worldToLocal(t)}static from(t,i,n){if(typeof t=="string")return vt.oldFrom(t,i,n);const{skeleton:r,atlas:o,scale:a=1,darkTint:c,autoUpdate:l,boundsProvider:h,ticker:u}=t,d=`${r}-${o}-${a}`;let f=vt.skeletonCache[d];if(!f){const p=tn.get(r),m=tn.get(o),g=new rm(m);let v=p instanceof Uint8Array?new am(g):new fh(g);v.scale=a,f=v.readSkeletonData(p),vt.skeletonCache[d]=f}return new vt({skeletonData:f,darkTint:c,autoUpdate:l,boundsProvider:h,ticker:u})}static oldFrom(t,i,n){const r=`${t}-${i}-${(n==null?void 0:n.scale)??1}`;let o=vt.skeletonCache[r];if(o)return new vt(o,n);const a=tn.get(t),c=tn.get(i),l=new rm(c);let h=a instanceof Uint8Array?new am(l):new fh(l);return h.scale=(n==null?void 0:n.scale)??1,o=h.readSkeletonData(a),vt.skeletonCache[r]=o,new this(o,n)}get tint(){return this.skeleton.color.toRgb888()}set tint(t){st.rgb888ToColor(this.skeleton.color,t)}};w(vt,"vectorAux",new ch),w(vt,"clipper",new dh),w(vt,"QUAD_TRIANGLES",[0,1,2,2,3,0]),w(vt,"VERTEX_SIZE",8),w(vt,"DARK_VERTEX_SIZE",12),w(vt,"skeletonCache",Object.create(null));let mh=vt;const Av=new lh(()=>new zi);up.yDown=!0;const cc="spineTextureAtlasLoader",pP={extension:Pe.Asset,resolver:{test:s=>Ki(s,".atlas"),parse:s=>{var t,i;const e=s.split(".");return{resolution:parseFloat(((i=(t=ke.RETINA_PREFIX)==null?void 0:t.exec(s))==null?void 0:i[1])??"1"),format:e[e.length-2],src:s}}},loader:{name:cc,extension:{type:Pe.LoadParser,priority:ns.Normal,name:cc},test(s){return Ki(s,".atlas")},async load(s){const e=await ke.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[${cc}] Failed to fetch ${s}: ${e.status} ${e.statusText}`);return await e.text()},testParse(s,e){const t=Ki(e.src,".atlas"),i=typeof s=="string",n=e.loadParser===cc;return Promise.resolve((t||n)&&i)},unload(s){s.dispose()},async parse(s,e,t){var c;const i=e.data||{};let n=Zt.dirname(e.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");const r=new V1(s);if(i.images instanceof Je||typeof i.images=="string"){const l=i.images;i.images={},i.images[r.pages[0].name]=l}const o=[];let a=!0;for(const l of t.parsers)if(l.name=="loadTextures"){a=(c=l.config)==null?void 0:c.preferCreateImageBitmap;break}tn.setPreferences({preferCreateImageBitmap:!1});for(const l of r.pages){const h=l.name,u=i!=null&&i.images?i.images[h]:void 0;if(u instanceof Je)l.setTexture(so.from(u));else{const d=u??Zt.normalize([...n.split(Zt.sep),h].join(Zt.sep)),f={src:Qc(d,e.src),data:{...i.imageMetadata,alphaMode:l.pma?mi.PMA:mi.UNPACK}},p=t.load(f).then(m=>{l.setTexture(so.from(m.baseTexture))});o.push(p)}}return await Promise.all(o),tn.setPreferences({preferCreateImageBitmap:a}),r}}};Ne.add(pP);const hc="spineSkeletonLoader";function gP(s){return s.hasOwnProperty("bones")}function vP(s){return s instanceof Uint8Array}const yP={extension:Pe.Asset,loader:{name:hc,extension:{type:Pe.LoadParser,priority:ns.Normal,name:hc},test(s){return Ki(s,".skel")},async load(s){const e=await ke.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[${hc}] Failed to fetch ${s}: ${e.status} ${e.statusText}`);return new Uint8Array(await e.arrayBuffer())},testParse(s,e){const t=Ki(e.src,".json")&&gP(s),i=Ki(e.src,".skel")&&vP(s),n=e.loadParser===hc;return Promise.resolve(t||i||n)}}};Ne.add(yP);class xP extends an{constructor(t=!1){super();w(this,"_buffer");w(this,"_indexBuffer");this._buffer=new Ot(void 0,t,!1),this._indexBuffer=new Ot(void 0,t,!0),this.addAttribute("aVertexPosition",this._buffer,2,!1,De.FLOAT).addAttribute("aTextureCoord",this._buffer,2,!1,De.FLOAT).addAttribute("aColor",this._buffer,4,!0,De.UNSIGNED_BYTE).addAttribute("aDarkColor",this._buffer,4,!0,De.UNSIGNED_BYTE).addAttribute("aTextureId",this._buffer,1,!0,De.FLOAT).addIndex(this._indexBuffer)}}const bP=` precision highp float; attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; @@ -1236,4 +1236,4 @@ void main(void){ gl_FragColor.a = color.a * vColor.a; gl_FragColor.rgb = ((color.a - 1.0) * vDarkColor.a + 1.0 - color.rgb) * vDarkColor.rgb + color.rgb * vColor.rgb; } -`;class tw extends Kn{constructor(e){super(e),this.shaderGenerator=new Hx(bP,wP),this.geometryClass=xP,this.vertexSize=7}packInterleavedGeometry(e,t,i,n,r){const{uint32View:o,float32View:a}=t,c=n/this.vertexSize,l=e.uvs,h=e.indices,u=e.vertexData,d=e._texture.baseTexture._batchLocation,f=Math.min(e.worldAlpha,1),p=St.shared.setValue(e._tintRGB).toPremultiplied(f,!0),m=St.shared.setValue(e._darkTintRGB).premultiply(f,!0).toPremultiplied(1,!1);for(let g=0;g0){let o=function(l){return Promise.all(l.map(h=>Promise.resolve(h).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));n=o(t.map(l=>{if(l=CP(l),l in Ev)return;Ev[l]=!0;const h=l.endsWith(".css"),u=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const d=document.createElement("link");if(d.rel=h?"stylesheet":MP,h||(d.as="script"),d.crossOrigin="",d.href=l,c&&d.setAttribute("nonce",c),document.head.appendChild(d),h)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return n.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return e().catch(r)})};async function sw(){const[s,e]=await Promise.all([Iv(()=>import("./index-Btg_SCRJ.js"),[]),Iv(()=>import("./index-De2_H8wT.js"),__vite__mapDeps([0,1]))]);return{core:s,pixi:e}}async function AP(s,e,t){const{core:i,pixi:n}=await sw(),r=new i.TextureAtlas(e);return dp(r,t,n.SpineTexture),{skeletonData:new i.SkeletonJson(new i.AtlasAttachmentLoader(r)).readSkeletonData(s),SpineClass:n.Spine}}async function EP(s,e,t){const{core:i,pixi:n}=await sw(),r=new i.TextureAtlas(e);return dp(r,t,n.SpineTexture),{skeletonData:new i.SkeletonBinary(new i.AtlasAttachmentLoader(r)).readSkeletonData(s),SpineClass:n.Spine}}function sr(s,e,t){const i=Number(s[e]);return Number.isFinite(i)?i:t}function qi(s,e,t,i){s[e]==null&&(s[e]=sr(s,t,i))}function fp(s,e,t){if(typeof s.curve!="number")return;const i=sr(s,"time",0),r=sr(e,"time",0)-i,o=s.curve,a=sr(s,"c2",0),c=sr(s,"c3",1),l=sr(s,"c4",1);s.curve=t.flatMap(([h,u])=>[i+r*o,h+(u-h)*a,i+r*c,h+(u-h)*l]),delete s.c2,delete s.c3,delete s.c4}function hr(s,e){if(Array.isArray(s))for(let t=0;t[sr(i,r,o),sr(n,r,o)]))}}function IP(s){if(Array.isArray(s))for(let e=0;eNumber.parseInt(i.slice(r,r+2),16)/255);return e?n:n.slice(0,3)}function Rv(s,e){if(Array.isArray(s))for(let t=0;t[a,o[c]]))}}function RP(s){for(const e of s.bones||[])e.inherit==null&&e.transform!=null&&(e.inherit=e.transform);for(const e of s.transform||[])qi(e,"mixRotate","rotateMix",1),qi(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX),qi(e,"mixScaleX","scaleMix",1),e.mixScaleY==null&&(e.mixScaleY=e.mixScaleX),qi(e,"mixShearY","shearMix",1);for(const e of s.path||[])qi(e,"mixRotate","rotateMix",1),qi(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX)}function PP(s){for(const e of s.skins||[])for(const t of Object.values(e.attachments||{}))for(const i of Object.values(t||{}))i.parent!=null&&i.timelines==null&&i.deform!=null&&(i.timelines=i.deform)}function kP(s){for(const e of Object.values(s.slots||{}))e.color&&!e.rgba&&(e.rgba=e.color,delete e.color),e.twoColor&&!e.rgba2&&(e.rgba2=e.twoColor,delete e.twoColor),Rv(e.rgba,!1),Rv(e.rgba2,!0)}function FP(s){for(const e of Object.values(s.bones||{})){for(const t of e.rotate||[])qi(t,"value","angle",0);hr(e.rotate,[{key:"value",fallback:0}]),hr(e.translate,[{key:"x",fallback:0},{key:"y",fallback:0}]),hr(e.scale,[{key:"x",fallback:1},{key:"y",fallback:1}]),hr(e.shear,[{key:"x",fallback:0},{key:"y",fallback:0}])}}function OP(s){for(const e of Object.values(s.ik||{}))hr(e,[{key:"mix",fallback:1},{key:"softness",fallback:0}])}function BP(s){for(const e of Object.values(s.transform||{})){for(const t of e)qi(t,"mixRotate","rotateMix",1),qi(t,"mixX","translateMix",1),t.mixY==null&&(t.mixY=t.mixX),qi(t,"mixScaleX","scaleMix",1),t.mixScaleY==null&&(t.mixScaleY=t.mixScaleX),qi(t,"mixShearY","shearMix",1);hr(e,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1},{key:"mixScaleX",fallback:1},{key:"mixScaleY",fallback:1},{key:"mixShearY",fallback:1}])}}function LP(s){for(const e of Object.values(s.path||{})){for(const i of["position","spacing"]){const n=e[i];for(const r of n||[])qi(r,"value",i,0);hr(n,[{key:"value",fallback:0}])}const t=e.mix;for(const i of t||[])qi(i,"mixRotate","rotateMix",1),qi(i,"mixX","translateMix",1),i.mixY==null&&(i.mixY=i.mixX);hr(t,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1}])}}function DP(s){if(!s.deform)return;const e=s.attachments||(s.attachments={});for(const[t,i]of Object.entries(s.deform)){const n=e[t]||(e[t]={});for(const[r,o]of Object.entries(i)){const a=n[r]||(n[r]={});for(const[c,l]of Object.entries(o)){const h=a[c]||(a[c]={});h.deform=l,IP(l)}}}delete s.deform}function nw(s){RP(s),PP(s);for(const e of Object.values(s.animations||{}))kP(e),FP(e),OP(e),BP(e),LP(e),DP(e),!e.drawOrder&&e.draworder&&(e.drawOrder=e.draworder);return s}function NP(s){return s.replace(/\\/g,"/").split("/").pop()||s}async function UP(s){const e=await Promise.all(s.map(async t=>{const i=URL.createObjectURL(t);try{return[NP(t.name).toLowerCase(),await ze.fromURL(i)]}finally{URL.revokeObjectURL(i)}}));return new Map(e)}function $P(s){const e=new Map;return s.bones.map(t=>{var r;const i=((r=t.parent)==null?void 0:r.name)||null,n=i?(e.get(i)||0)+1:0;return e.set(t.name,n),{name:t.name,parent:i,depth:n}})}async function rw(s,e,t){var o;if(!/\.(json|skel)$/i.test(s.name))throw new Error("Spine 数据仅支持 .json 或 .skel");if(!/\.atlas$/i.test(e.name))throw new Error("图集文件仅支持 .atlas");if(!t.length)throw new Error("请至少选择一张纹理图片");const i=await e.text(),n=await UP(t),r=[...n.values()];try{let a,c,l=null,h;if(/\.skel$/i.test(s.name)){const u=await s.arrayBuffer();try{({skeletonData:a,SpineClass:c}=await EP(u,i,n)),h="4.3"}catch(d){try{({skeletonData:a,SpineClass:c}=TP(u,i,n)),h="4.2"}catch(f){const p=d instanceof Error?d.message:String(d),m=f instanceof Error?f.message:String(f);throw new Error(`Spine 二进制解析失败(4.3:${p};旧版:${m})`)}}l=ah(a.version)}else{let u;try{u=JSON.parse(await s.text())}catch{throw new Error("Spine JSON 文件格式无效")}if(l=ah((o=u==null?void 0:u.skeleton)==null?void 0:o.spine),!l)throw new Error(`Spine JSON 版本不受支持,仅支持 ${im()}`);h=VI(l),l==="3.8"&&nw(u);const d=h==="4.3"?await AP(u,i,n):_P(u,i,n);a=d.skeletonData,c=d.SpineClass}if(!l)throw new Error(`Spine 数据版本不受支持,仅支持 ${im()}`);return{skeletonData:a,textures:r,runtimeVersion:h,SpineClass:c,dataVersion:l,animations:a.animations.map(u=>({name:u.name,duration:u.duration})),bones:$P(a)}}catch(a){for(const c of r)c.destroy(!0);throw a}}function Ic(s){return new Promise((e,t)=>{const i=new FileReader;i.onload=()=>e(String(i.result||"")),i.onerror=()=>t(i.error),i.readAsDataURL(s)})}async function XP(s,e,t){return{skeleton:{name:s.name,dataUrl:await Ic(s)},atlas:{name:e.name,dataUrl:await Ic(e)},textures:await Promise.all(t.map(async i=>({name:i.name,dataUrl:await Ic(i)})))}}async function tf(s){const e=await fetch(s.dataUrl);if(!e.ok)throw new Error(`无法读取内嵌 Spine 文件:${s.name}`);return new File([await e.blob()],s.name)}async function VP(s){return{skeleton:await tf(s.skeleton),atlas:await tf(s.atlas),textures:await Promise.all(s.textures.map(tf))}}const ow="SpineParticle.EditorConfig",aw=1;function lw(s){return{backgroundX:s.backgroundX,backgroundY:s.backgroundY,backgroundOpacity:s.backgroundOpacity,backgroundImageName:s.backgroundImageName,backgroundImageData:s.backgroundImageData,showGrid:s.showGrid,exportSettings:Nt(s.exportSettings)}}function YP(s){return JSON.parse(JSON.stringify(s,(e,t)=>{if(!(e==="texture"||e==="trailTexture"||e==="frames"))return t}))}function cw(s){const e=Nt(s);return delete e.tags,delete e.selectedTag,e}function GP(s){const e=lw(s.settings);return YP({format:ow,version:aw,savedAt:new Date().toISOString(),editor:Nt(s.editor),settings:e,timeline:{fps:s.timeline.fps,loop:s.timeline.loop,playbackStart:s.timeline.playbackStart,playbackEnd:s.timeline.playbackEnd,animations:[...s.timeline.animations]},selection:{type:s.activeObjectType,id:s.activeObjectId},scene:{systems:s.systems.map(t=>({...Nt(t),frames:void 0})),colliders:s.colliders.map(cw),paths:Nt(s.paths),spines:Nt(s.spines)}})}function HP(){return`SpineParticle-${new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","-")}.json`}function hw(s){const e=GP(s),t=new Blob([JSON.stringify(e,null,2)],{type:"application/json;charset=utf-8"}),i=URL.createObjectURL(t),n=document.createElement("a");return n.href=i,n.download=HP(),document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),0),e}function uw(s){let e;try{e=JSON.parse(s)}catch{throw new Error("配置文件不是有效的 JSON")}const t=e;if(t.format!==ow)throw new Error("不是 SpineParticle 编辑器配置文件");if(t.version!==aw)throw new Error(`暂不支持配置版本:${t.version??"未知"}`);if(!t.scene||!Array.isArray(t.scene.systems)||!Array.isArray(t.scene.colliders)||!Array.isArray(t.scene.paths)||!Array.isArray(t.scene.spines))throw new Error("配置文件缺少完整场景数据");return t}async function jP(s){const e=new Map,t=n=>{const r=n==="/particles/star.png"?"/images/star.png":n==="/trails/trail.png"?"/images/trail.png":n||"/images/star.png";let o=e.get(r);return o||(o=ze.fromURL(r).then(a=>nr(a)),e.set(r,o)),o},i=await t("/images/star.png");await Promise.all(s.map(async n=>{var o;const r=pr(n.config);r.texture=i,await Promise.all(r.imageResources.map(async a=>{a.texture=await t(a.previewUrl||"/images/star.png"),await Promise.all(a.sequenceFrames.map(async c=>{c.texture=await t(c.previewUrl||a.previewUrl||"/images/star.png")}))})),await Promise.all(r.trailResources.map(async a=>{a.texture=await t(a.previewUrl||"/images/trail.png")})),r.trailTexture=((o=r.trailResources[0])==null?void 0:o.texture)||null,n.frames=[]}))}async function WP(s){const e=new Map;try{for(const t of s){if(!t.sourceBundle)continue;const i=await VP(t.sourceBundle);e.set(t.id,await rw(i.skeleton,i.atlas,i.textures))}return e}catch(t){for(const i of e.values())for(const n of i.textures)n.destroy(!0);throw t}}function zP(s,e){const t=(e==null?void 0:e.type)||"particle",i=Number(e==null?void 0:e.id)||0;(t==="particle"?s.systems.some(r=>r.id===i):t==="collision"?s.colliders.some(r=>r.id===i):t==="path"?s.paths.some(r=>r.id===i):s.spines.some(r=>r.id===i))?s.selectSceneObject(t,i):s.systems[0]?s.selectSceneObject("particle",s.systems[0].id):s.colliders[0]?s.selectSceneObject("collision",s.colliders[0].id):s.paths[0]?s.selectSceneObject("path",s.paths[0].id):s.spines[0]?s.selectSceneObject("spine",s.spines[0].id):(s.activeObjectType="particle",s.activeObjectId=0,s.activeId=0)}async function qP(s,e){var h,u,d,f,p,m,g;const t=uw(JSON.stringify(e)),i=Nt(t.scene.systems),n=t.scene.colliders.map(cw),r=Nt(t.scene.paths),o=Nt(t.scene.spines);for(const v of o)v.sourceBundle==null&&(v.sourceBundle=null),v.dataVersion==null&&(v.dataVersion="");await jP(i);const a=await WP(o),c=new Map(s.spines.map(v=>[v.id,v.assetVersion]));for(const v of s.spines)wl(v.id);s.systems=i,s.colliders=n,s.paths=r,s.spines=o,Object.assign(s.editor,Nt(t.editor||{}));const l=t.settings;if(l)for(const v of["backgroundX","backgroundY","backgroundOpacity","backgroundImageName","backgroundImageData","showGrid"])Object.prototype.hasOwnProperty.call(l,v)&&(s.settings[v]=l[v]);s.settings.exportSettings=Q1((h=t.settings)==null?void 0:h.exportSettings),s.settings.undoLimit=Math.min(200,Math.max(1,Math.round(Number(s.settings.undoLimit)||20))),s.timeline.fps=Math.max(1,Math.round(Number((u=t.timeline)==null?void 0:u.fps)||30)),s.timeline.loop=((d=t.timeline)==null?void 0:d.loop)!==!1,s.timeline.animations=Array.isArray((f=t.timeline)==null?void 0:f.animations)&&t.timeline.animations.length?[...new Set(t.timeline.animations.filter(v=>typeof v=="string"&&v.trim()).map(v=>v.trim()))]:["animation"];for(const v of s.spines){const x=a.get(v.id);if(v.assetVersion=Math.max(Number(v.assetVersion)||0,c.get(v.id)||0)+1,!x){v.status="empty",v.error=v.skeletonFileName?"配置未包含可复用的 Spine 原始资源":"",v.animations=[],v.bones=[],v.selectedAnimation="";continue}nu(v.id,x),v.dataVersion=x.dataVersion,v.animations=x.animations,v.bones=x.bones,x.animations.some(y=>y.name===v.selectedAnimation)||(v.selectedAnimation=((p=x.animations[0])==null?void 0:p.name)||""),v.status="ready",v.error=""}s.syncSceneSequences(),zP(s,t.selection),s.timeline.playbackStart=Math.max(0,Math.floor(Number((m=t.timeline)==null?void 0:m.playbackStart)||0)),s.timeline.playbackEnd=Math.max(1,Math.floor(Number((g=t.timeline)==null?void 0:g.playbackEnd)||Number.MAX_SAFE_INTEGER)),s.timeline.frame=0,s.timeline.recorded=!1,s.timeline.playing=!0;for(const v of s.systems)s.timeline.animations.includes(v.animation)||(v.animation=s.timeline.animations[0]);return s.recalcTotalFrames(),s.timeline.frame=s.timeline.playbackStart,t}async function dw(s,e){return qP(s,uw(e))}async function KP(s,e){if(!/\.json$/i.test(e.name))throw new Error("请选择 .json 配置文件");return dw(s,await e.text())}const au=no({undoCount:0});let ph=null,Cn=null,ur=[],Ta=null,An=null,gh=!1;function mp(s){return{systems:s.systems.map(t=>{const i=Nt(t);return i.frames=void 0,i}),colliders:Nt(s.colliders),paths:Nt(s.paths),spines:Nt(s.spines),animations:[...s.timeline.animations],settings:lw(s.settings)}}function pp(s){return JSON.stringify(s,(e,t)=>e==="texture"||e==="trailTexture"?null:typeof t=="string"&&t.startsWith("data:")&&t.length>256?`${t.length}:${t.slice(0,96)}:${t.slice(-48)}`:t)}function fw(s,e=mp(s),t=pp(e)){const i=new Map;for(const n of e.spines){const r=$I(n.id);r&&i.set(n.id,r)}return{data:e,signature:t,spineAssets:i}}function vh(s){if(s){for(const e of s.spineAssets.values())NI(e);s.spineAssets.clear()}}function mw(s){for(;ur.length>s;)vh(ur.shift()||null);au.undoCount=ur.length}function pw(){const s=ph;if(!s||!Cn||gh)return;const e=mp(s),t=pp(e);t!==Cn.signature&&(ur.push(Cn),Cn=fw(s,e,t),mw(s.settings.undoLimit))}function ZP(){gh||(An&&clearTimeout(An),An=setTimeout(()=>{An=null,pw()},250))}function JP(s){const e=s.activeObjectId;return s.activeObjectType==="particle"?s.systems.some(t=>t.id===e):s.activeObjectType==="collision"?s.colliders.some(t=>t.id===e):s.activeObjectType==="path"?s.paths.some(t=>t.id===e):s.spines.some(t=>t.id===e)}function QP(s){var t,i;if(!JP(s)){const n=s.systems[0],r=s.colliders[0],o=s.paths[0],a=s.spines[0];n?(s.activeObjectType="particle",s.activeObjectId=n.id):r?(s.activeObjectType="collision",s.activeObjectId=r.id):o?(s.activeObjectType="path",s.activeObjectId=o.id):(s.activeObjectType="spine",s.activeObjectId=(a==null?void 0:a.id)||0)}const e=s.activeObjectType==="particle"?s.systems.find(n=>n.id===s.activeObjectId):s.systems.find(n=>n.id===s.activeId);s.activeId=(e==null?void 0:e.id)||((t=s.systems[0])==null?void 0:t.id)||0,s.timeline.animation=(e==null?void 0:e.animation)||((i=s.systems[0])==null?void 0:i.animation)||s.timeline.animations[0]||"animation"}function ek(s,e){const t=Cn;gh=!0;try{for(const i of s.spines)wl(i.id);s.systems=Nt(e.data.systems),s.colliders=Nt(e.data.colliders),s.paths=Nt(e.data.paths),s.spines=Nt(e.data.spines),s.timeline.animations=[...e.data.animations],Object.assign(s.settings,Nt(e.data.settings));for(const[i,n]of e.spineAssets)nu(i,n);for(const i of s.systems)i.frames=[];s.timeline.recorded=!1,s.timeline.playing=!1,QP(s),s.recalcTotalFrames(),Cn=e}finally{gh=!1,vh(t)}}function tk(s){if(!(ph===s&&Ta)){Ta==null||Ta(),An&&clearTimeout(An),vh(Cn);for(const e of ur)vh(e);ur=[],ph=s,Cn=fw(s),au.undoCount=0,Ta=Xi(()=>pp(mp(s)),ZP,{flush:"post"})}}function ik(s,e){const t=Math.min(200,Math.max(1,Math.round(Number(e)||20)));s.settings.undoLimit=t,mw(t)}function gw(){const s=ph;if(!s||!Cn)return!1;An&&(clearTimeout(An),An=null),pw();const e=ur.pop();return e?(ek(s,e),au.undoCount=ur.length,!0):!1}function sk(s){const e=s instanceof HTMLElement?s:null;return!!(e!=null&&e.closest('input, textarea, select, [contenteditable="true"]'))}function nk(s){function e(i){var r;const n=i.target instanceof Node?i.target:null;s.canvasFocused.value=!!n&&!!((r=s.canvasElement.value)!=null&&r.contains(n))}function t(i){const n=i.key.toLowerCase();if((i.ctrlKey||i.metaKey)&&!i.altKey&&n==="s"){i.preventDefault(),i.stopPropagation(),s.save();return}if((i.ctrlKey||i.metaKey)&&!i.altKey&&n==="z"){i.preventDefault(),i.stopPropagation(),s.undo();return}if(i.ctrlKey||i.metaKey||i.altKey||sk(i.target))return;if(n==="d"){i.preventDefault(),s.togglePlay();return}if(n==="s"){i.preventDefault(),s.toStart();return}if(!s.canvasFocused.value)return;const r={q:"",w:"translate",e:"rotate",r:"scale"};n in r&&(i.preventDefault(),s.setTool(r[n]))}Vn(()=>{document.addEventListener("pointerdown",e,!0),window.addEventListener("keydown",t,!0)}),gl(()=>{document.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t,!0)})}const rk={class:"help-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"help-title"},ok={class:"help-body"},ak=["aria-expanded"],lk={class:"caret"},ck={class:"help-module-body"},hk=["aria-expanded"],uk={class:"caret"},dk={class:"help-module-body"},fk=["aria-expanded"],mk={class:"caret"},pk={class:"help-module-body"},gk=["aria-expanded"],vk={class:"caret"},yk={class:"help-module-body"},xk=["aria-expanded"],bk={class:"caret"},wk={class:"help-module-body"},Sk=["aria-expanded"],_k={class:"caret"},Tk={class:"help-module-body"},Mk=["aria-expanded"],Ck={class:"caret"},Ak={class:"help-module-body"},Ek=["aria-expanded"],Ik={class:"caret"},Rk={class:"help-module-body"},Pk=["aria-expanded"],kk={class:"caret"},Fk={class:"help-module-body"},Ok=Jt({__name:"HelpDialog",props:{show:{type:Boolean}},emits:["close"],setup(s,{emit:e}){const t=e,i=Ge(Array.from({length:9},()=>!1));function n(){t("close")}function r(o){o.key==="Escape"&&n()}return Vn(()=>window.addEventListener("keydown",r)),pl(()=>window.removeEventListener("keydown",r)),(o,a)=>s.show?(K(),Q("div",{key:0,class:"help-overlay",role:"presentation",onClick:et(n,["self"])},[T("section",rk,[T("header",{class:"help-head"},[a[9]||(a[9]=T("div",null,[T("h2",{id:"help-title"},"使用说明"),T("p",null,"从创建粒子到保存、导出的快速入门")],-1)),T("button",{class:"help-close","aria-label":"关闭使用说明",title:"关闭 (Esc)",onClick:n},"✕")]),T("div",ok,[a[37]||(a[37]=es('

快速开始

  1. 创建对象:在左侧“场景对象”中用 +粒子 / +碰撞 / +路径 / +Spine 添加场景对象。
  2. 编辑粒子:选中某个粒子系统,依次调整“发射模式 → 发射器形状 → 粒子属性 → 外观与资源 → 修改器”。
  3. 查看效果:底部时间轴可播放、暂停、逐帧或拖动;修改任意参数后会自动重新计算。
  4. 保存与导出:用“保存配置”保留工程;“导出 Spine Json / images 包 / .spine 包”输出成品。

每个模块组标题右侧的“重置”可把该组参数恢复默认;系统设置会自动保存在当前浏览器。

常用操作

小眼睛
单独显示/隐藏对象;隐藏的粒子系统不会被导出。
+Copy
完整复制当前选中对象,方便对比不同参数。
背景图
上传参考图并调整位置和透明度,只用于画布预览。
系统设置
管理界面布局、辅助显示、刻度等,自动存入浏览器。
撤销/重做
Ctrl+Z 撤回一步;可达成的步数在系统设置中调整。
Spine 骨骼
在层级树搜索并选择骨骼,可用于粒子发射器跟随。

快捷键

Ctrl/⌘+Z撤回上一步
Ctrl/⌘+S保存配置
Q拖动画布
W位移工具
E旋转工具
R缩放工具
D播放 / 暂停
S回到第一帧

Q / W / E / R 需先点击画布;光标位于输入框时,单键快捷键不会触发。

功能模块详解
',3)),T("section",{class:Le(["help-section help-module",{open:i.value[0]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[0]?"true":"false",onClick:a[0]||(a[0]=c=>i.value[0]=!i.value[0])},[a[10]||(a[10]=T("span",{class:"mnum"},"1",-1)),a[11]||(a[11]=T("span",{class:"mtitle"},"配置管理",-1)),T("span",lk,_e(i.value[0]?"▾":"▸"),1)],8,ak),de(T("div",ck,[...a[12]||(a[12]=[es('
保存配置
把当前全部场景对象和参数保存为工程 JSON 文件(也支持 Ctrl+S)。
加载配置
选择本地配置文件,恢复完整工程。
预设
从下拉中选择已保存的预设快速套用;点击下拉即可刷新列表。
范围
配置只含对象与参数,不含“系统设置”;系统设置单独存于浏览器。
',1)])],512),[[vi,i.value[0]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[1]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[1]?"true":"false",onClick:a[1]||(a[1]=c=>i.value[1]=!i.value[1])},[a[13]||(a[13]=T("span",{class:"mnum"},"2",-1)),a[14]||(a[14]=T("span",{class:"mtitle"},"场景对象",-1)),T("span",uk,_e(i.value[1]?"▾":"▸"),1)],8,hk),de(T("div",dk,[...a[15]||(a[15]=[es('
粒子
核心对象。可设名称、位置 X/Y、偏移、旋转、缩放 X/Y,以及“随机种子”——相同种子可精确复现同一次效果。
碰撞
圆形/椭圆/矩形/多边形/自定义;启用开关、碰撞响应(物理弹跳/暂停/销毁)、弹性与摩擦,还可沿某条路径移动并带进度曲线。
路径
贝塞尔路径,可双击新建/删除锚点、拖手柄调曲线;内置圆/方/多边形/星形预设,支持闭合与颜色。
Spine
加载 .json+.atlas+.png 预览骨骼动画,可查看/搜索骨骼层级树,用于粒子“发射器跟随”。
通用
每个对象都有小眼睛显隐;“+Copy”可以复制当前对象;隐藏的粒子系统不会进入导出。
',1)])],512),[[vi,i.value[1]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[2]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[2]?"true":"false",onClick:a[2]||(a[2]=c=>i.value[2]=!i.value[2])},[a[16]||(a[16]=T("span",{class:"mnum"},"3",-1)),a[17]||(a[17]=T("span",{class:"mtitle"},"发射模式",-1)),T("span",mk,_e(i.value[2]?"▾":"▸"),1)],8,fk),de(T("div",pk,[...a[18]||(a[18]=[es('
持续
按“每秒发射数量”持续喷射;再分“常规持续”(发射时长)与“循环持续”(三段式:开始循环 / 纯循环 / 结束循环,可自动或自定义帧长,做到无缝衔接)。
爆发
一次性发射“单次数量”颗粒子。
延迟时间
粒子条左端位置,表示发射开始前的等待时间。
注意
循环持续模式不支持骨骼跟随和路径跟随;开关时会把跟随设置恢复默认。
',1)])],512),[[vi,i.value[2]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[3]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[3]?"true":"false",onClick:a[3]||(a[3]=c=>i.value[3]=!i.value[3])},[a[19]||(a[19]=T("span",{class:"mnum"},"4",-1)),a[20]||(a[20]=T("span",{class:"mtitle"},"发射器形状",-1)),T("span",vk,_e(i.value[3]?"▾":"▸"),1)],8,gk),de(T("div",yk,[...a[21]||(a[21]=[es('
形状
点 / 圆形 / 矩形 / 锥形 / 路径。
圆·锥
内半径与外半径,形成环形或锥形发射区;锥形额外有“锥形朝向”和“开口角度”。
矩形
“外框 − 内框”形成环带,可分别设置内外宽高。
路径
选一条场景路径作为出生线;出生分布可选等距固定或随机。
发射角度
固定 / 随机(基准角度 + 随机范围)/ 径向(圆、矩、锥中心向外)/ 垂直于路径 / 沿路径方向。
',1)])],512),[[vi,i.value[3]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[4]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[4]?"true":"false",onClick:a[4]||(a[4]=c=>i.value[4]=!i.value[4])},[a[22]||(a[22]=T("span",{class:"mnum"},"5",-1)),a[23]||(a[23]=T("span",{class:"mtitle"},"粒子属性",-1)),T("span",bk,_e(i.value[4]?"▾":"▸"),1)],8,xk),de(T("div",wk,[...a[24]||(a[24]=[T("dl",{class:"help-list"},[T("div",null,[T("dt",null,"初始参数"),T("dd",null,"生命周期、速度、缩放(统一或 X/Y 分离)、初始旋转(可跟随发射方向)。每个属性支持固定 / 随机 / 曲线三种取值。")]),T("div",null,[T("dt",null,"生命周期变化"),T("dd",null,"速度倍率、缩放倍率(统一/分离)、旋转速度,均可用“生命周期 → 倍率”曲线控制。")]),T("div",null,[T("dt",null,"曲线含义"),T("dd",null,"横轴为粒子生命周期 0→1,纵轴为倍率或对应数值。")])],-1)])],512),[[vi,i.value[4]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[5]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[5]?"true":"false",onClick:a[5]||(a[5]=c=>i.value[5]=!i.value[5])},[a[25]||(a[25]=T("span",{class:"mnum"},"6",-1)),a[26]||(a[26]=T("span",{class:"mtitle"},"外观与资源",-1)),T("span",_k,_e(i.value[5]?"▾":"▸"),1)],8,Sk),de(T("div",Tk,[...a[27]||(a[27]=[T("dl",{class:"help-list"},[T("div",null,[T("dt",null,"透明度"),T("dd",null,"曲线或固定;曲线模式可选“跟随导出 / 线性 / 贝塞尔”。")]),T("div",null,[T("dt",null,"图片资源"),T("dd",null,"“+”新增,可上传单图或序列帧;多张图片按权重随机。每张可调缩放、轴心、颜色(固定/随机/生命周期渐变)、混合模式(正常/相加/相乘/滤色)、独立透明度(关/固定/曲线)。")]),T("div",null,[T("dt",null,"序列帧"),T("dd",null,"播放方式:单次隐藏 / 单次定格 / 正向循环 / 反向循环,可设每秒帧数。")])],-1)])],512),[[vi,i.value[5]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[6]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[6]?"true":"false",onClick:a[6]||(a[6]=c=>i.value[6]=!i.value[6])},[a[28]||(a[28]=T("span",{class:"mnum"},"7",-1)),a[29]||(a[29]=T("span",{class:"mtitle"},"修改器",-1)),T("span",Ck,_e(i.value[6]?"▾":"▸"),1)],8,Mk),de(T("div",Ak,[...a[30]||(a[30]=[es('
移动噪声
强度、波动范围、时间流速,让粒子轨迹产生抖动。
重力 / 风力
固定或随机强度、方向,以及生命周期内强度曲线。
力场
中心 X/Y、强度(正吸负斥)、半径、衰减(恒定/线性/反比)。
吸附
延迟后把粒子吸到指定点,到达范围即死亡;可直线或曲线。
拖尾
独立拖尾图片(多资源按权重)、旋转、拖尾骨骼数、拖尾比例;长度/宽度可固定或随机并支持放大;可加生命周期长度曲线与形状曲线;颜色/透明度可跟随粒子、固定或曲线。
发射器跟随
跟随某条路径(局部/世界、正/反向、进度曲线),或跟随 Spine 骨骼(选中的骨骼 + 偏移)。
碰撞 + 阻尼
选择场景中已启用的碰撞对象参与,并设置速度阻尼。
',1)])],512),[[vi,i.value[6]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[7]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[7]?"true":"false",onClick:a[7]||(a[7]=c=>i.value[7]=!i.value[7])},[a[31]||(a[31]=T("span",{class:"mnum"},"8",-1)),a[32]||(a[32]=T("span",{class:"mtitle"},"导出设置",-1)),T("span",Ik,_e(i.value[7]?"▾":"▸"),1)],8,Ek),de(T("div",Rk,[...a[33]||(a[33]=[es('
图片路径
写入 Spine 的 images 路径,例如 ./images/。
Spine 版本
3.8 / 4.0 / 4.1 / 4.2 / 4.3。
关键帧曲线
线性或平滑贝塞尔;出生、死亡、突变仍使用阶跃关键帧。
导出 FPS
修改 FPS 会保持动画实际秒数不变;“不写 fps”只省略元数据。
其它
整数帧对齐、骨骼对象池、排除无内容动画。
导出按钮
“导出 Spine Json”生成骨骼动画文件;“导出 images 包”单独下载图片 ZIP;“导出 .spine 包”需要连接器。
',1)])],512),[[vi,i.value[7]]])],2),T("section",{class:Le(["help-section help-module help-connector",{open:i.value[8]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[8]?"true":"false",onClick:a[8]||(a[8]=c=>i.value[8]=!i.value[8])},[a[34]||(a[34]=T("span",{class:"mnum"},"9",-1)),a[35]||(a[35]=T("span",{class:"mtitle"},"连接器(Spine 连接器)使用说明",-1)),T("span",kk,_e(i.value[8]?"▾":"▸"),1)],8,Pk),de(T("div",Fk,[...a[36]||(a[36]=[es('

连接器用于把网页生成的 JSON 和图片,调用你电脑上已安装并激活的 Spine,转换成可编辑的 .spine 工程。

前置
电脑已安装并激活 Spine;并已启动桌面版连接器APP。
网页端
导出区状态显示“连接器可用 · Spine 已就绪”后,点击“导出 .spine 包”。
首次授权
生产网站首次连接会显示“授权当前网站”;点击后在本机确认页核对完整来源(协议 + 域名 + 端口),再点“允许此网站”。授权一次后本机会保存白名单。本地 127.0.0.1:5173 默认允许。
路径设置
连接器自动检测 Spine 安装位置;检测不到时可在桌面窗口手动指定:Windows 选 Spine.com,macOS 选 Spine.app/Contents/MacOS/Spine。
下载结果
得到 ZIP 包,内含 .spine 工程和图片目录(如 images/star.png)。
版本
连接器按请求与 JSON 内的版本自动匹配 3.8~4.3,使用最新可用补丁。
安全
仅监听本机 127.0.0.1:27843;授权与白名单保存在连接器里;文件在临时目录转换后清理,并有大小限制。
',2)])],512),[[vi,i.value[8]]])],2),a[38]||(a[38]=T("section",{class:"help-section help-export"},[T("h3",null,"配置与导出有什么区别?"),T("p",null,[T("b",null,"保存配置"),At("会保存编辑器中的全部对象和参数,之后可以继续修改;"),T("b",null,"导出 Spine Json"),At("只导出显示中的粒子系统,并把跟随、碰撞和拖尾结果烘焙为独立动画数据。")])],-1))])])])):Te("",!0)}}),Qt=(s,e)=>{const t=s.__vccOpts||s;for(const[i,n]of e)t[i]=n;return t},Bk=Qt(Ok,[["__scopeId","data-v-12773018"]]);function zo(s){const e=()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",e),window.removeEventListener("pointercancel",e)};window.addEventListener("pointermove",s),window.addEventListener("pointerup",e),window.addEventListener("pointercancel",e)}function us(s,e,t){const i=s.holder.value,n=s.app(),r=i.getBoundingClientRect(),o=Math.max(1e-4,s.store.editor.viewScale),a=e-r.left,c=t-r.top;return{x:(a-n.screen.width/2-s.store.editor.viewX)/o,y:-(c-n.screen.height*.5-s.store.editor.viewY)/o}}function Lk(s,e){const t=s.holder.value,i=s.app(),n=s.store,r=t.getBoundingClientRect(),o=e.clientX-r.left,a=e.clientY-r.top,c=e.deltaY<0?1.12:1/1.12,l=n.editor.viewScale,h=Math.max(.01,l*c),u=i.screen.width/2,d=i.screen.height*.5,f=n.editor.viewX,p=n.editor.viewY,m=(o-u-f)/l,g=(a-d-p)/l;n.editor.viewX=o-u-m*h,n.editor.viewY=a-d-g*h,n.editor.viewScale=h}function Dk(s,e,t){const i=s.store,n=i.editor.viewX,r=i.editor.viewY;zo(o=>{i.editor.viewX=n+(o.clientX-e),i.editor.viewY=r+(o.clientY-t)})}function vw(s,e){const t=Math.max(.01,s.store.editor.viewScale*e);s.store.editor.viewScale=t}function Nk(s){vw(s,1.2)}function Uk(s){vw(s,1/1.2)}function $k(s){s.store.editor.viewScale=1,s.store.editor.viewX=0,s.store.editor.viewY=0}function Xk(s){s.store.editor.viewScale=1,s.store.editor.viewX=0,s.store.editor.viewY=0}function Vk(s){s.store.settings.showGrid=!s.store.settings.showGrid}const Yk={class:"topbar"},Gk=["disabled"],Hk={class:"tool-group"},jk={class:"tool-group"},Wk={key:0,class:"background-panel"},zk=["disabled"],qk=["title"],Kk={class:"background-position-row"},Zk={class:"background-opacity-row"},Jk={class:"zoom-pct"},Qk=Jt({__name:"StageToolbar",props:{ctx:{},activeTool:{},showSettings:{type:Boolean},showHelp:{type:Boolean}},emits:["update:activeTool","update:showSettings","update:showHelp","clear-background","background-file"],setup(s,{emit:e}){const t=s,i=e,n=ao(),r=Ge(!1),o=Ge(null),a=qe(()=>n.settings.backgroundImageName);function c(m){i("update:activeTool",t.activeTool===m?"":m)}function l(){r.value=!r.value,r.value&&i("update:showSettings",!1)}function h(){const m=!t.showSettings;i("update:showSettings",m),m&&(r.value=!1)}function u(){i("update:showHelp",!0),r.value=!1,i("update:showSettings",!1)}function d(m){i("background-file",m)}function f(m=!0){o.value&&(o.value.value=""),i("clear-background",m)}function p(){gw()}return(m,g)=>(K(),Q("div",Yk,[T("button",{class:"settings-btn",onClick:h,title:"系统设置"},"系统设置"),T("button",{class:"undo-btn",disabled:R(au).undoCount===0,onClick:p,title:"撤回上一步 (Ctrl+Z)"},"↶",8,Gk),T("div",Hk,[T("button",{class:Le(["tool-btn",{on:s.activeTool===""}]),onClick:g[0]||(g[0]=v=>c("")),title:"拖动画布 (Q)"},"✋",2),T("button",{class:Le(["tool-btn",{on:s.activeTool==="translate"}]),onClick:g[1]||(g[1]=v=>c("translate")),title:"位移 (W)"},"✥",2),T("button",{class:Le(["tool-btn",{on:s.activeTool==="rotate"}]),onClick:g[2]||(g[2]=v=>c("rotate")),title:"旋转 (E)"},"⟳",2),T("button",{class:Le(["tool-btn",{on:s.activeTool==="scale"}]),onClick:g[3]||(g[3]=v=>c("scale")),title:"缩放 (R)"},"⤢",2)]),T("div",jk,[T("button",{class:"tool-btn",onClick:g[4]||(g[4]=v=>R(Nk)(s.ctx)),title:"放大"},"+"),T("button",{class:"tool-btn",onClick:g[5]||(g[5]=v=>R(Uk)(s.ctx)),title:"缩小"},"-"),T("button",{class:"tool-btn",onClick:g[6]||(g[6]=v=>R($k)(s.ctx)),title:"适配画布"},"⤢"),T("button",{class:Le(["tool-btn",{on:R(n).settings.showGrid}]),onClick:g[7]||(g[7]=v=>R(Vk)(s.ctx)),title:"切换网格"},"▦",2),T("button",{class:"tool-btn",onClick:g[8]||(g[8]=v=>R(Xk)(s.ctx)),title:"重置视图"},"⟳")]),T("div",{class:"background-menu",onClick:g[14]||(g[14]=et(()=>{},["stop"]))},[T("button",{class:Le(["background-btn",{on:r.value}]),title:"背景图显示设置",onClick:l},"背景图",2),r.value?(K(),Q("div",Wk,[T("button",{class:"background-upload",onClick:g[9]||(g[9]=v=>{var x;return(x=o.value)==null?void 0:x.click()})},_e(a.value?"更换图像":"上传图像"),1),T("button",{class:"background-clear",disabled:!a.value,onClick:g[10]||(g[10]=v=>f())},"清除背景",8,zk),T("input",{ref_key:"backgroundFileInput",ref:o,class:"background-file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:d},null,544),T("div",{class:"background-file-name",title:a.value},_e(a.value||"未上传图像"),9,qk),T("div",Kk,[T("label",null,[g[15]||(g[15]=T("span",null,"X",-1)),de(T("input",{"onUpdate:modelValue":g[11]||(g[11]=v=>R(n).settings.backgroundX=v),type:"number",step:"1","aria-label":"背景图 X 偏移"},null,512),[[He,R(n).settings.backgroundX,void 0,{number:!0}]])]),T("label",null,[g[16]||(g[16]=T("span",null,"Y",-1)),de(T("input",{"onUpdate:modelValue":g[12]||(g[12]=v=>R(n).settings.backgroundY=v),type:"number",step:"1","aria-label":"背景图 Y 偏移"},null,512),[[He,R(n).settings.backgroundY,void 0,{number:!0}]])])]),T("label",Zk,[g[17]||(g[17]=T("span",null,"透明度",-1)),de(T("input",{"onUpdate:modelValue":g[13]||(g[13]=v=>R(n).settings.backgroundOpacity=v),type:"range",min:"0",max:"1",step:"0.01","aria-label":"背景图透明度"},null,512),[[He,R(n).settings.backgroundOpacity,void 0,{number:!0}]]),T("b",null,_e(Math.round(R(n).settings.backgroundOpacity*100))+"%",1)])])):Te("",!0)]),T("button",{class:Le(["help-btn",{on:s.showHelp}]),title:"查看使用说明",onClick:u},"使用说明",2),T("span",Jk,_e(Math.round(R(n).editor.viewScale*100))+"%",1)]))}}),eF=Qt(Qk,[["__scopeId","data-v-4749834a"]]),tF={key:0,class:"settings-panel"},iF={class:"sp-head"},sF={class:"sp-switch-row"},nF={class:"sp-switch-control"},rF={class:"sp-row"},oF={class:"sp-chk"},aF={class:"sp-chk"},lF={class:"sp-row"},cF={class:"sp-row"},hF={class:"sp-chk"},uF={class:"sp-chk"},dF={class:"sp-row"},fF={class:"sp-row"},mF={class:"sp-row"},pF={class:"sp-hex"},gF={class:"sp-chk"},vF=Jt({__name:"StageSettingsPanel",props:{show:{type:Boolean}},emits:["close"],setup(s,{emit:e}){const t=e,i=ao();function n(o){ik(i,Number(o.target.value))}function r(){i.settings.bonePointDrawSize=Math.min(10,Math.max(.1,Number(i.settings.bonePointDrawSize)||1)),i.settings.boneAxisDrawSize=Math.min(10,Math.max(.1,Number(i.settings.boneAxisDrawSize)||2))}return(o,a)=>s.show?(K(),Q("div",tF,[T("div",iF,[a[15]||(a[15]=At("系统设置 ",-1)),T("button",{class:"sp-close",onClick:a[0]||(a[0]=c=>t("close"))},"✕")]),a[29]||(a[29]=T("div",{class:"sp-section-title"},"界面布局",-1)),T("label",sF,[a[17]||(a[17]=T("span",null,"参数面板位置",-1)),T("span",nF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[1]||(a[1]=c=>R(i).settings.parameterPanelOnRight=c),"aria-label":"参数面板显示在右侧"},null,512),[[Et,R(i).settings.parameterPanelOnRight]]),a[16]||(a[16]=T("span",{class:"sp-switch-ui","aria-hidden":"true"},null,-1)),T("b",null,_e(R(i).settings.parameterPanelOnRight?"右侧":"左侧"),1)])]),a[30]||(a[30]=T("div",{class:"sp-divider"},null,-1)),a[31]||(a[31]=T("div",{class:"sp-section-title"},"操作历史",-1)),T("label",rF,[a[18]||(a[18]=T("span",null,"最大撤回步数",-1)),de(T("input",{class:"sp-num sp-undo-limit",type:"number",min:"1",max:"200","onUpdate:modelValue":a[2]||(a[2]=c=>R(i).settings.undoLimit=c),"aria-label":"最大撤回步数",onChange:n},null,544),[[He,R(i).settings.undoLimit,void 0,{number:!0}]])]),a[32]||(a[32]=T("div",{class:"sp-divider"},null,-1)),a[33]||(a[33]=T("div",{class:"sp-section-title"},"画布辅助显示",-1)),T("label",oF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[3]||(a[3]=c=>R(i).settings.showEmitter=c)},null,512),[[Et,R(i).settings.showEmitter]]),a[19]||(a[19]=At("发射点",-1))]),T("label",aF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[4]||(a[4]=c=>R(i).settings.showBones=c)},null,512),[[Et,R(i).settings.showBones]]),a[20]||(a[20]=At("骨骼连线",-1))]),R(i).settings.showBones?(K(),Q(Fe,{key:0},[T("label",lF,[a[21]||(a[21]=T("span",null,"骨骼点绘制大小",-1)),de(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":a[5]||(a[5]=c=>R(i).settings.bonePointDrawSize=c),"aria-label":"骨骼点绘制大小",onChange:r},null,544),[[He,R(i).settings.bonePointDrawSize,void 0,{number:!0}]])]),T("label",cF,[a[22]||(a[22]=T("span",null,"坐标轴绘制大小",-1)),de(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":a[6]||(a[6]=c=>R(i).settings.boneAxisDrawSize=c),"aria-label":"坐标轴绘制大小",onChange:r},null,544),[[He,R(i).settings.boneAxisDrawSize,void 0,{number:!0}]])])],64)):Te("",!0),T("label",hF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[7]||(a[7]=c=>R(i).settings.showSkinMesh=c)},null,512),[[Et,R(i).settings.showSkinMesh]]),a[23]||(a[23]=At("蒙皮网格",-1))]),a[34]||(a[34]=T("div",{class:"sp-divider"},null,-1)),T("label",uF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[8]||(a[8]=c=>R(i).settings.tickEnabled=c)},null,512),[[Et,R(i).settings.tickEnabled]]),a[24]||(a[24]=At("启用刻度",-1))]),R(i).settings.tickEnabled?(K(),Q(Fe,{key:1},[T("label",dF,[a[25]||(a[25]=T("span",null,"刻度文字大小",-1)),de(T("input",{type:"range",min:"8",max:"40",step:"1","onUpdate:modelValue":a[9]||(a[9]=c=>R(i).settings.axisFontSize=c)},null,512),[[He,R(i).settings.axisFontSize,void 0,{number:!0}]]),de(T("input",{type:"number",min:"8",max:"40","onUpdate:modelValue":a[10]||(a[10]=c=>R(i).settings.axisFontSize=c),class:"sp-num"},null,512),[[He,R(i).settings.axisFontSize,void 0,{number:!0}]])]),T("label",fF,[a[26]||(a[26]=T("span",null,"刻度线粗细",-1)),de(T("input",{type:"range",min:"1",max:"5",step:"0.5","onUpdate:modelValue":a[11]||(a[11]=c=>R(i).settings.tickWidth=c)},null,512),[[He,R(i).settings.tickWidth,void 0,{number:!0}]]),de(T("input",{type:"number",min:"1",max:"5","onUpdate:modelValue":a[12]||(a[12]=c=>R(i).settings.tickWidth=c),class:"sp-num"},null,512),[[He,R(i).settings.tickWidth,void 0,{number:!0}]])]),T("label",mF,[a[27]||(a[27]=T("span",null,"坐标轴颜色",-1)),de(T("input",{type:"color","onUpdate:modelValue":a[13]||(a[13]=c=>R(i).settings.axisColor=c),class:"sp-colr"},null,512),[[He,R(i).settings.axisColor]]),T("span",pF,_e(R(i).settings.axisColor),1)]),T("label",gF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[14]||(a[14]=c=>R(i).settings.showAxisLabels=c)},null,512),[[Et,R(i).settings.showAxisLabels]]),a[28]||(a[28]=At("显示刻度数值",-1))])],64)):Te("",!0),a[35]||(a[35]=T("div",{class:"sp-cache-note"},"整个系统设置会自动保存到当前浏览器",-1))])):Te("",!0)}}),yF=Qt(vF,[["__scopeId","data-v-1bba85d9"]]);class sf{constructor(){w(this,"sprite",null);w(this,"texture",null);w(this,"loadVersion",0)}createSprite(e){const t=new yr(ze.EMPTY);return t.anchor.set(.5),t.visible=!1,e.addChild(t),this.sprite=t,t}applyTransform(e,t,i){this.sprite&&(this.sprite.position.set(Number(e)||0,-(Number(t)||0)),this.sprite.alpha=Math.min(1,Math.max(0,Number(i)||0)))}async syncTexture(e){const t=++this.loadVersion;if(!e){this.sprite&&(this.sprite.texture=ze.EMPTY,this.sprite.visible=!1),this.texture&&this.texture.destroy(!0),this.texture=null;return}try{const i=await ze.fromURL(e);if(t!==this.loadVersion||!this.sprite){i.destroy(!0);return}const n=this.texture;this.texture=i,this.sprite.texture=i,this.sprite.visible=!0,n&&n.destroy(!0)}catch(i){console.error("背景图恢复失败",i)}}static clearStoreBackground(e,t){e.settings.backgroundImageData="",e.settings.backgroundImageName="",t&&(e.settings.backgroundX=0,e.settings.backgroundY=0,e.settings.backgroundOpacity=1)}static async handleFileChange(e,t){var r;const i=t.target,n=(r=i.files)==null?void 0:r[0];if(n)try{e.settings.backgroundImageData=await Ic(n),e.settings.backgroundImageName=n.name}catch(o){console.error("背景图加载失败",o)}finally{i.value=""}}destroy(){this.loadVersion++,this.texture&&this.texture.destroy(!0),this.texture=null,this.sprite=null}}class xF{constructor(e){w(this,"selectedNodes",new Set);w(this,"suppressNextDoubleClick",!1);this.ctx=e}resetSelection(){this.selectedNodes.clear()}activePath(){const e=this.ctx.store;if(e.activeObjectType!=="path")return null;const t=e.paths.find(i=>i.id===e.activeObjectId)||null;return(t==null?void 0:t.visible)===!1?null:t}pathInsertIndex(e,t,i){if(e.points.length<2)return e.points.length;const n=e.closed?e.points.length:e.points.length-1;let r=e.points.length,o=1/0;for(let a=0;aMath.hypot(c.x-n.x,c.y-n.y)<=r);if(o>=0){t.points.splice(o,1),this.selectedNodes.clear();return}const a=this.pathInsertIndex(t,n.x,n.y);t.points.splice(a,0,{x:n.x,y:n.y,inX:0,inY:0,outX:0,outY:0}),this.selectedNodes.clear(),this.selectedNodes.add(a)}onPointerDown(e){const t=this.activePath();if(!t||!t.enabled)return!1;const i=us(this.ctx,e.clientX,e.clientY),n=wo(t,i.x,i.y),r=9/Math.max(.01,this.ctx.store.editor.viewScale);if(e.detail>=2){if(t.points.findIndex(u=>Math.hypot(u.x-n.x,u.y-n.y)<=r)>=0)return!0;const l={x:n.x,y:n.y,inX:0,inY:0,outX:0,outY:0},h=this.pathInsertIndex(t,n.x,n.y);return t.points.splice(h,0,l),this.selectedNodes.clear(),this.selectedNodes.add(h),this.suppressNextDoubleClick=!0,zo(u=>{const d=us(this.ctx,u.clientX,u.clientY),f=wo(t,d.x,d.y);l.outX=f.x-l.x,l.outY=f.y-l.y,l.inX=-l.outX,l.inY=-l.outY}),!0}let o=null;for(const c of this.selectedNodes){const l=t.points[c];l&&(Math.hypot(l.x+l.inX-n.x,l.y+l.inY-n.y)<=r&&(o={index:c,side:"in"}),Math.hypot(l.x+l.outX-n.x,l.y+l.outY-n.y)<=r&&(o={index:c,side:"out"}))}if(o){const c=t.points[o.index],l=o.side==="in"?Math.hypot(c.outX,c.outY):Math.hypot(c.inX,c.inY);return zo(u=>{const d=us(this.ctx,u.clientX,u.clientY),f=wo(t,d.x,d.y),p=f.x-c.x,m=f.y-c.y;if(o.side==="in"?(c.inX=p,c.inY=m):(c.outX=p,c.outY=m),!u.altKey){const g=Math.max(1e-4,Math.hypot(p,m)),v=u.shiftKey?g:l;o.side==="in"?(c.outX=-p/g*v,c.outY=-m/g*v):(c.inX=-p/g*v,c.inY=-m/g*v)}}),!0}const a=t.points.findIndex(c=>Math.hypot(c.x-n.x,c.y-n.y)<=r);if(a>=0){if(e.altKey)return this.selectedNodes.delete(a),!0;e.ctrlKey||e.metaKey?this.selectedNodes.add(a):this.selectedNodes.has(a)||(this.selectedNodes.clear(),this.selectedNodes.add(a));const c=n,l=[...this.selectedNodes].map(u=>({index:u,x:t.points[u].x,y:t.points[u].y}));return zo(u=>{const d=us(this.ctx,u.clientX,u.clientY),f=wo(t,d.x,d.y);for(const p of l)t.points[p.index].x=p.x+f.x-c.x,t.points[p.index].y=p.y+f.y-c.y}),!0}if(e.altKey&&!e.ctrlKey&&!e.metaKey)return this.selectedNodes.clear(),!0;if(e.ctrlKey||e.metaKey||e.altKey){const c=n,l=e.altKey,h=u=>{const d=us(this.ctx,u.clientX,u.clientY),f=wo(t,d.x,d.y),p=Math.min(c.x,f.x),m=Math.max(c.x,f.x),g=Math.min(c.y,f.y),v=Math.max(c.y,f.y);t.points.forEach((x,y)=>{x.x>=p&&x.x<=m&&x.y>=g&&x.y<=v&&(l?this.selectedNodes.delete(y):this.selectedNodes.add(y))}),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h)};return window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h),!0}return!1}}class bF{constructor(e,t){this.ctx=e,this.getTool=t}onColliderPointerDown(e){const t=this.ctx.store;if(t.activeObjectType!=="collision")return!1;const i=t.colliders.find(x=>x.id===t.activeObjectId);if(!(i!=null&&i.enabled)||i.visible===!1)return!1;const n=us(this.ctx,e.clientX,e.clientY),r=i.rotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r),c=Math.max(1e-4,Math.abs(i.scaleX??1)),l=Math.max(1e-4,Math.abs(i.scaleY??1)),h=n.x-i.x,u=n.y-i.y,d=(o*h+a*u)/c,f=(-a*h+o*u)/l;if(!(i.shape==="circle"?Math.hypot(d,f)<=i.radius:i.shape==="ellipse"?Math.hypot(d/Math.max(1,i.radiusX),f/Math.max(1,i.radiusY))<=1:Math.abs(d)<=i.width*.5&&Math.abs(f)<=i.height*.5))return!1;const m=i.x,g=i.y,v=n;return zo(x=>{const y=us(this.ctx,x.clientX,x.clientY);i.x=m+y.x-v.x,i.y=g+y.y-v.y}),!0}onForceFieldDown(e){const t=this.ctx.store.systems.find(h=>h.id===this.ctx.store.activeId);if((t==null?void 0:t.visible)===!1)return!1;const i=t==null?void 0:t.config;if(!(i!=null&&i.forceField)||i.forceRadius<=0)return!1;const n=us(this.ctx,e.clientX,e.clientY);if(Math.hypot(n.x-i.forceCenterX,n.y-i.forceCenterY)>i.forceRadius)return!1;const o=i.forceCenterX,a=i.forceCenterY;this.ctx.holder.value&&(this.ctx.holder.value.style.cursor="grabbing");const c=h=>{const u=us(this.ctx,h.clientX,h.clientY);i.forceCenterX=o+u.x-n.x,i.forceCenterY=a+u.y-n.y},l=()=>{this.ctx.holder.value&&(this.ctx.holder.value.style.cursor=""),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)};return window.addEventListener("pointermove",c),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l),e.preventDefault(),!0}onAttractionDown(e){const t=this.ctx.store.systems.find(u=>u.id===this.ctx.store.activeId);if((t==null?void 0:t.visible)===!1)return!1;const i=t==null?void 0:t.config;if(!(i!=null&&i.attraction))return!1;const n=us(this.ctx,e.clientX,e.clientY),r=Math.max(i.attractionRadius,12/Math.max(1e-4,this.ctx.store.editor.viewScale));if(Math.hypot(n.x-i.attractionCenterX,n.y-i.attractionCenterY)>r)return!1;const a=i.attractionCenterX,c=i.attractionCenterY;this.ctx.holder.value&&(this.ctx.holder.value.style.cursor="grabbing");const l=u=>{const d=us(this.ctx,u.clientX,u.clientY);i.attractionCenterX=a+d.x-n.x,i.attractionCenterY=c+d.y-n.y},h=()=>{this.ctx.holder.value&&(this.ctx.holder.value.style.cursor=""),window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h)};return window.addEventListener("pointermove",l),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h),e.preventDefault(),!0}selectedTransformTarget(){const e=this.ctx.store,t=e.activeObjectId;if(e.activeObjectType==="particle"){const r=e.systems.find(a=>a.id===t);if(!r||r.visible===!1)return null;const o=r.config;return{x:o.centerX,y:o.centerY,rotation:o.rootRotation,scaleX:o.rootScaleX??1,scaleY:o.rootScaleY??1,setPosition:(a,c)=>{o.centerX=a,o.centerY=c},setRotation:a=>{o.rootRotation=a},setScale:(a,c)=>{o.rootScaleX=a,o.rootScaleY=c}}}const n=(e.activeObjectType==="collision"?e.colliders:e.activeObjectType==="path"?e.paths:e.spines).find(r=>r.id===t);return!n||n.visible===!1?null:{x:Number(n.x)||0,y:Number(n.y)||0,rotation:Number(n.rotation)||0,scaleX:Math.max(.05,Number(n.scaleX)||1),scaleY:Math.max(.05,Number(n.scaleY)||1),setPosition:(r,o)=>{n.x=r,n.y=o},setRotation:r=>{n.rotation=r},setScale:(r,o)=>{n.scaleX=r,n.scaleY=o}}}onGizmoDown(e){const t=this.selectedTransformTarget();if(!t)return;const i=this.ctx.app(),n=this.ctx.store,r=n.editor.viewScale,o=this.ctx.holder.value.getBoundingClientRect(),a=o.left+i.screen.width/2+n.editor.viewX+t.x*r,c=o.top+i.screen.height*.5+n.editor.viewY+-t.y*r,l=e.clientX,h=e.clientY,u=this.getTool(),d=t.x,f=t.y,p=t.rotation,m=t.scaleX,g=t.scaleY,v=Math.hypot(l-a,h-c)||1,x=Math.atan2(h-c,l-a);zo(_=>{const C=(_.clientX-l)/r,S=(_.clientY-h)/r;if(u==="translate")t.setPosition(d+C,f-S);else if(u==="rotate"){const b=Math.atan2(_.clientY-c,_.clientX-a);t.setRotation(p-(b-x)*180/Math.PI)}else if(u==="scale"){const M=Math.hypot(_.clientX-a,_.clientY-c)/v;t.setScale(Math.max(.05,m*M),Math.max(.05,g*M))}})}}function Pv(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function kv(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),o=Math.max(1e-4,Math.abs(s.scaleX??1)),a=Math.max(1e-4,Math.abs(s.scaleY??1));return{x:s.x+n*e*o-r*t*a,y:s.y+r*e*o+n*t*a}}function gp(s,e){if(!s.points.length)return null;if(s.points.length===1)return{...kv(s,s.points[0].x,s.points[0].y),angle:s.rotation};const t=s.closed?s.points.length:s.points.length-1,i=[];let n=0;for(let p=0;p0&&v===0)continue;const x=v/20,y=Pv(m.x,m.x+m.outX,g.x+g.inX,g.x,x),_=Pv(m.y,m.y+m.outY,g.y+g.inY,g.y,x),C=kv(s,y,_),S=i[i.length-1];S&&(n+=Math.hypot(C.x-S.x,C.y-S.y)),i.push({...C,distance:n})}}const r=Math.min(1,Math.max(0,e))*n;let o=i.findIndex(p=>p.distance>=r);o<0&&(o=i.length-1);const a=i[o],c=i[Math.max(0,o-1)],l=i[Math.min(i.length-1,o+1)],h=c.distance,u=o>0?(r-h)/Math.max(1e-4,a.distance-h):0,d=c.x+(a.x-c.x)*Math.min(1,Math.max(0,u)),f=c.y+(a.y-c.y)*Math.min(1,Math.max(0,u));return{x:d,y:f,angle:Math.atan2(l.y-c.y,l.x-c.x)*180/Math.PI}}function yh(s,e,t,i=Math.max(1e-4,Math.abs(s.rootScaleX)),n=Math.max(1e-4,Math.abs(s.rootScaleY))){const r=-s.rootRotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r),c=e-s.centerX,l=-t+s.centerY;return{x:(o*c+a*l)/i,y:(-a*c+o*l)/n}}function wF(s,e,t){const i=gp(e,t);if(!i)return null;const n=yh(s,i.x,i.y),r=i.angle*Math.PI/180,o=yh(s,i.x+Math.cos(r),i.y+Math.sin(r)),a=Math.atan2(o.y-n.y,o.x-n.x)*180/Math.PI;return{...n,angle:a}}function SF(s,e){return s.colliders.map(t=>{if(!t.followPath||!t.followPathId)return t;const i=s.paths.find(h=>h.id===t.followPathId&&h.enabled);if(!(i!=null&&i.points.length))return t;const n=Math.max(.05,Number(t.followDuration)||2),r=Math.min(1,Math.max(0,e/n)),o=Array.isArray(t.followCurve)?t.followCurve:[{x:0,y:0},{x:1,y:1}],a=t.followCurveMode==="跟随导出"?s.settings.exportSettings.keyframeCurve==="bezier"?"bezier":"linear":t.followCurveMode==="贝塞尔"?"bezier":"linear",c=Math.min(1,Math.max(0,nb(o,r,a))),l=gp(i,c);return l?{...t,x:l.x,y:l.y,rotation:t.rotation+(t.followPathRotation?l.angle:0)}:t})}class _F{constructor(){w(this,"emitters",new Map);w(this,"configs",new Map)}sync(e,t,i,n){for(const[r,o]of this.emitters){const a=e.systems.find(c=>c.id===r);(!a||this.configs.get(r)!==a.config)&&(t.removeChild(o),o.destroy({children:!0}),this.emitters.delete(r),this.configs.delete(r))}for(const r of e.systems){i&&!r.config.texture&&(r.config.texture=i);const o=pr(r.config);if(n)for(const c of o.trailResources)!c.texture&&(c.previewUrl==="/images/trail.png"||c.previewUrl==="/trails/trail.png")&&(c.texture=n);if(i)for(const c of o.imageResources)!c.texture&&c.textureName==="star"&&(c.texture=i);if(this.emitters.has(r.id))continue;const a=new LI(r.config);t.addChild(a),this.emitters.set(r.id,a),this.configs.set(r.id,r.config)}}destroy(e){for(const[t,i]of this.emitters)e.removeChild(i),i.destroy({children:!0}),this.emitters.delete(t),this.configs.delete(t)}}async function TF(){const[s,e]=await Promise.all([ze.fromURL("/images/star.png"),ze.fromURL("/images/trail.png")]);return{dotTex:s,trailTex:e}}function MF(s,e,t){for(const i of s.systems){i.config.texture=e;const n=pr(i.config);if(t)for(const r of n.trailResources)!r.texture&&(r.previewUrl==="/images/trail.png"||r.previewUrl==="/trails/trail.png")&&(r.texture=t);for(const r of n.imageResources)!r.texture&&r.textureName==="star"&&(r.texture=e)}}const CF={class:"stage-wrap"},AF={key:0,class:"hud"},EF={class:"hud-number hud-system-count"},IF={class:"hud-number hud-particle-count"},RF=Jt({__name:"Stage",setup(s){const e=ao(),t=Ge(null),i=Ge(null),n=Ge(!1),r=Ge(!1),o=Ge(""),a=Ge(!1);e.settings.undoLimit>0||(e.settings.undoLimit=20),e.settings.parameterPanelOnRight==null&&(e.settings.parameterPanelOnRight=!0),Number.isFinite(e.settings.backgroundX)||(e.settings.backgroundX=0),Number.isFinite(e.settings.backgroundY)||(e.settings.backgroundY=0),Number.isFinite(e.settings.backgroundOpacity)||(e.settings.backgroundOpacity=1),e.settings.backgroundImageName==null&&(e.settings.backgroundImageName=""),e.settings.backgroundImageData==null&&(e.settings.backgroundImageData=""),e.settings.showEmitter==null&&(e.settings.showEmitter=!0),e.settings.showBones==null&&(e.settings.showBones=!1),e.settings.bonePointDrawSize>0||(e.settings.bonePointDrawSize=1),e.settings.boneAxisDrawSize>0||(e.settings.boneAxisDrawSize=2),e.settings.showSkinMesh==null&&(e.settings.showSkinMesh=!1),e.settings.showGrid==null&&(e.settings.showGrid=!0);let c=null,l=null,h=null,u=null,d=null,f=null,p=null,m=null,g=null,v=null,x=null,y=null,_=null,C=null,S=[],b=0,M=0,I=0,F=0,E=null,k=null;const O=new sf,D=new _F,$={store:e,holder:t,app:()=>c},N=new xF($),U=new bF($,()=>o.value);let A=[];const P=new Map;function L(){l=new Si,c.stage.addChild(l),_=new Si,c.stage.addChild(_),O.createSprite(l),y=new zi,l.addChild(y),C=new mR,l.addChild(C.container),u=new zi,l.addChild(u),h=new zi,l.addChild(h),f=new zi,l.addChild(f),p=new zi,l.addChild(p),m=new zi,l.addChild(m),g=new zi,l.addChild(g),v=new zi,l.addChild(v),x=new zi,l.addChild(x),d=new zi,l.addChild(d)}function B(le){if(le.button===0){if(o.value&&U.selectedTransformTarget()){U.onGizmoDown(le);return}N.onPointerDown(le)||U.onColliderPointerDown(le)||U.onAttractionDown(le)||U.onForceFieldDown(le)||Dk($,le.clientX,le.clientY)}}function X(le){N.onStageDoubleClick(le)}function V(le){Lk($,le)}function q(le=!0){sf.clearStoreBackground(e,le)}async function W(le){await sf.handleFileChange(e,le)}nk({canvasElement:t,canvasFocused:a,undo:gw,save:()=>hw(e),togglePlay:()=>e.togglePlay(),toStart:()=>e.toStart(),setTool:le=>{o.value=le}});function ne(){l&&D.sync(e,l,E,k)}function re(){var ae,xe,Y;F=requestAnimationFrame(re);const le=performance.now()/1e3;let ue=le-b;if(b=le,ue>.1&&(ue=.1),c&&l){l.scale.set(e.editor.viewScale),l.position.set(c.screen.width/2+e.editor.viewX,c.screen.height*.5+e.editor.viewY),O.applyTransform(e.settings.backgroundX,e.settings.backgroundY,e.settings.backgroundOpacity),KI(e,c,y,_,S),ne();const j=Math.max(1,e.timeline.fps),H=e.timeline.frame,G=H/j;C==null||C.sync(e.spines,H,j),A=SF(e,G);for(const Me of e.systems){const ve=D.emitters.get(Me.id);if(!ve)continue;ve.setFollowExportCurveMode(e.settings.exportSettings.keyframeCurve==="bezier"?"贝塞尔":"线性");const Xe=Me.visible!==!1;ve.visible=Xe,ve.renderable=Xe;const pe=Me.config;ve.scale.set(pe.rootScaleX,pe.rootScaleY);const Ke=new Set(pe.collisionColliderIds);ve.setColliders(pe.collision?A.filter($e=>Ke.has($e.id)):[]),ve.setEmitterFollowSpawn(0,0,0);let Ze={x:pe.centerX,y:pe.centerY,rotation:pe.rootRotation};const Ct=pe.emitterFollow&&pe.emitterFollowMode==="bone"?e.spines.find($e=>$e.id===pe.emitterFollowSpineId&&$e.enabled&&$e.status==="ready"):null,Lt=Ct&&(C==null?void 0:C.getBoneWorldTransform(Ct.id,pe.emitterFollowBoneName))||null,ii=pe.emitterFollow&&pe.emitterFollowMode==="path"?e.paths.find($e=>$e.id===pe.emitterFollowPathId&&$e.enabled):null,rs=Math.max(.05,pe.emitterFollowDuration),zt=Math.min(1,Math.max(0,G/rs)),se=Math.min(1,Math.max(0,nb(pe.emitterFollowCurve,zt))),he=Math.min(1,Math.max(0,pe.emitterFollowOffset)),ot=pe.emitterFollowDirection==="reverse"?(1-he)*(1-se):he+(1-he)*se,at=ii?gp(ii,ot):null;if(Lt){const $e=pe.emitterFollowBoneOffsetX,_i=pe.emitterFollowBoneOffsetY,pi=Lt.x+$e,$t=Lt.y+_i,Fi=pe.rootRotation+pe.emitterFollowBoneRotation,vs=Math.max(1e-4,Math.abs(pe.rootScaleX*pe.emitterFollowBoneScaleX)),Vi=Math.max(1e-4,Math.abs(pe.rootScaleY*pe.emitterFollowBoneScaleY));if(Ze={x:pi,y:$t,rotation:Fi},pe.emitterFollowSpace==="local")ve.position.set(pi,-$t),ve.rotation=-Fi*Math.PI/180,ve.scale.set(vs,Vi),ve.setSimulationTransform(pi,$t,Fi,vs,Vi);else{ve.position.set(pe.centerX,-pe.centerY),ve.rotation=-pe.rootRotation*Math.PI/180,ve.scale.set(vs,Vi),ve.setSimulationTransform(pe.centerX,pe.centerY,pe.rootRotation,vs,Vi);const Ti=yh(pe,pi,$t,vs,Vi),uo=-(Fi-pe.rootRotation);ve.setEmitterFollowSpawn(Ti.x,Ti.y,uo)}}else if(at){const $e=at.angle+(pe.emitterFollowDirection==="reverse"?180:0),_i=pe.emitterAngleMode==="direction"?$e:pe.rootRotation;if(Ze={x:at.x,y:at.y,rotation:_i},pe.emitterFollowSpace==="local")ve.position.set(at.x,-at.y),ve.rotation=-_i*Math.PI/180,ve.setSimulationTransform(at.x,at.y,_i);else{ve.position.set(pe.centerX,-pe.centerY),ve.rotation=-pe.rootRotation*Math.PI/180,ve.setSimulationTransform(pe.centerX,pe.centerY,pe.rootRotation);const pi=yh(pe,at.x,at.y),$t=pe.emitterAngleMode==="direction"?-($e-pe.rootRotation):0;ve.setEmitterFollowSpawn(pi.x,pi.y,$t)}}else ve.position.set(pe.centerX,-pe.centerY),ve.rotation=-pe.rootRotation*Math.PI/180,ve.setSimulationTransform(pe.centerX,pe.centerY,pe.rootRotation);const gt=pe.shape==="path"&&pe.spawnPathId>0&&e.paths.find($e=>$e.id===pe.spawnPathId&&$e.enabled&&$e.points.length>0)||null;ve.setSpawnPathSampler(gt?$e=>wF(pe,gt,$e):null,(gt==null?void 0:gt.closed)===!0),P.set(Me.id,Ze)}let z=0;const ie=[],fe=e.settings.showBones&&e.activeObjectType==="particle"?e.activeObjectId:0,te=(Me,ve,Xe)=>{!Me||Me.id!==fe||Me.visible===!1||aR(ie,Xe,ve.position.x,ve.position.y)},oe=e.timeline,ce=oe.fps,Ce=1/Math.max(1,ce);let ye=I,we=0;if(oe.playing?(M+=ue,we=Math.floor(M/Ce),we>0&&(M-=we*Ce)):M=0,oe.playing&&we>0)for(let Me=0;MeZe.id===e.activeId),Xe=(ve==null?void 0:ve.config.mode)==="stream"&&ve.config.streamBehavior==="loop"?tb(ve.config,ce):null,Ke=oe.loop&&(Xe==null?void 0:Xe.start)===oe.playbackStart&&Xe.end===oe.playbackEnd?oe.playbackEnd-1:oe.playbackEnd;if(oe.frame>Ke)if(oe.loop)oe.frame=oe.playbackStart;else{oe.frame=oe.playbackEnd,oe.playing=!1;break}}else{if(oe.frame===0)for(const ve of e.systems){const Xe=D.emitters.get(ve.id);Xe&&(ve.config.mode==="stream"&&ve.config.streamBehavior==="loop"?fR(ve,Xe,ce,oe.totalFrames):Xe.reset())}for(const[ve,Xe]of D.emitters){const pe=e.systems.find(ii=>ii.id===ve),Ke=(pe==null?void 0:pe.config.mode)==="stream"&&pe.config.streamBehavior==="loop",Ze=Ke?(ae=pe.frames)==null?void 0:ae[oe.frame]:void 0,Ct=oe.frame===0&&!Ke,Lt=Ct?[]:Ze||Xe.update(Ce);if(Ct?Xe.apply([]):Ze&&Xe.apply(Ze),(pe==null?void 0:pe.visible)!==!1)for(const ii of Lt)ii.active&&te(pe,Xe,ii);z+=Lt.length}for(const ve of e.systems){if(!ve.config.texture)continue;ve.frames=ve.frames||[];const Xe=D.emitters.get(ve.id);Xe&&!(ve.config.mode==="stream"&&ve.config.streamBehavior==="loop")&&(ve.frames[oe.frame]=Xe.capture())}oe.frame++,oe.frame>=oe.totalFrames&&(oe.frame=oe.playbackStart,oe.recorded=!0)}else{oe.playing||(ye=oe.frame);for(const Me of e.systems){const ve=D.emitters.get(Me.id),Xe=oe.playing?I:oe.frame,pe=(Y=Me.frames)==null?void 0:Y[Xe],Ke=Me.config.mode==="stream"&&Me.config.streamBehavior==="loop"&&!!pe;if((oe.recorded||Ke)&&ve&&pe){ve.apply(pe);for(const Ze of pe)Ze.active&&(te(Me,ve,Ze),z++)}else if(ve){const Ze=oe.frame===0?[]:ve.update(0);if(oe.frame===0&&ve.apply([]),Me.visible!==!1)for(const Ct of Ze)Ct.active&&te(Me,ve,Ct);z+=ve.activeCount}}}I=ye,C==null||C.sync(e.spines,ye,ce);for(const[,Me]of D.emitters)Me.drawTrailMeshDebug(e.settings.showSkinMesh);rR(e,A,g),oR(e,N.selectedNodes,v),iR(e,C,u),ZI(e,P,h),JI(e,P,f),QI(e,p),eR(e,m),sR(o,U.selectedTransformTarget.bind(U),x),lR(ie,e,d),i.value&&(i.value.systems=e.systems.length,i.value.particles=z)}}return Vn(async()=>{const le=t.value;c=new A1({width:le.clientWidth||800,height:le.clientHeight||600,backgroundAlpha:0,antialias:!0}),le.appendChild(c.view),L(),Xi(()=>e.settings.backgroundImageData,ae=>O.syncTexture(ae),{immediate:!0});const ue=await TF();E=ue.dotTex,k=ue.trailTex,MF(e,E,k),i.value={systems:e.systems.length,particles:0},e.timeline.recorded=!1,e.timeline.frame=0,M=0,I=0,e.timeline.playing=!0,e.timeline.loop=!0;for(const ae of e.systems)ae.frames=[];e.recalcTotalFrames(),b=performance.now()/1e3,re(),Xi(()=>e.systems.map(ae=>JSON.stringify(ae.config,(xe,Y)=>xe==="texture"||xe==="trailTexture"||xe==="previewUrl"?void 0:Y)).join("|")+`|colliders:${JSON.stringify(e.colliders)}|paths:${JSON.stringify(e.paths)}`,()=>{e.recalcTotalFrames(),e.timeline.recorded=!1,e.timeline.frame=0;for(const ae of e.systems)ae.frames=[];e.timeline.playing=!0,e.timeline.loop=!0}),tk(e)}),gl(()=>{cancelAnimationFrame(F),C==null||C.destroy(),C=null,O.destroy(),l&&c&&D.destroy(l),c&&(c.destroy(!0,{children:!0}),c=null)}),Xi(()=>[e.activeObjectType,e.activeObjectId],()=>N.resetSelection()),(le,ue)=>(K(),Q("div",CF,[T("div",{ref_key:"holder",ref:t,class:Le(["stage-holder",{grid:R(e).settings.showGrid}]),tabindex:"0",onWheel:et(V,["prevent"]),onPointerdown:B,onDblclick:et(X,["prevent"])},null,34),be(eF,{ctx:$,"active-tool":o.value,"show-settings":n.value,"show-help":r.value,"onUpdate:activeTool":ue[0]||(ue[0]=ae=>o.value=ae),"onUpdate:showSettings":ue[1]||(ue[1]=ae=>n.value=ae),"onUpdate:showHelp":ue[2]||(ue[2]=ae=>r.value=ae),onClearBackground:q,onBackgroundFile:W},null,8,["active-tool","show-settings","show-help"]),be(yF,{show:n.value,onClose:ue[3]||(ue[3]=ae=>n.value=!1)},null,8,["show"]),be(Bk,{show:r.value,onClose:ue[4]||(ue[4]=ae=>r.value=!1)},null,8,["show"]),i.value?(K(),Q("div",AF,[ue[5]||(ue[5]=At(" 系统: ",-1)),T("b",EF,_e(i.value.systems),1),ue[6]||(ue[6]=At(" · 粒子(骨骼): ",-1)),T("b",IF,_e(i.value.particles),1),ue[7]||(ue[7]=At(" · 根骨骼: ",-1)),ue[8]||(ue[8]=T("b",null,"root",-1)),ue[9]||(ue[9]=T("span",{class:"hud-tip"},"滚轮缩放 · 左键拖动画布",-1))])):Te("",!0)]))}}),PF=Qt(RF,[["__scopeId","data-v-384a3641"]]),kF=[{x:0,y:0},{x:1,y:1}],cm=[{x:0,y:1},{x:1,y:1}],FF=[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],hm=[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}],um=[{x:0,y:1},{x:1,y:1}],dm=[{x:0,y:1},{x:1,y:1}],qt=no({visible:!1,title:"",detail:"",progress:0,indeterminate:!1,failed:!1});let uc=0;function OF(s){return new Promise(e=>window.setTimeout(e,s))}function yw(s,e){const t=++uc,i=performance.now();Object.assign(qt,{visible:!0,title:s,detail:e,progress:0,indeterminate:!1,failed:!1});const n=(o,a)=>{t===uc&&(qt.indeterminate=o==null,o!=null&&(qt.progress=Math.min(100,Math.max(0,o))),a&&(qt.detail=a))},r=async(o,a)=>{if(t!==uc)return;qt.failed=o,qt.indeterminate=!1,qt.progress=o?qt.progress:100,qt.detail=a,await OF(Math.max(180,(o?850:450)-(performance.now()-i))),t===uc&&(qt.visible=!1)};return{update:n,paint:()=>new Promise(o=>requestAnimationFrame(()=>o())),finish:(o="已完成")=>r(!1,o),fail:(o="操作失败")=>r(!0,o)}}async function BF(s,e){if(!s.body)return e(null),s.text();const t=Number(s.headers.get("content-length")),i=Number.isFinite(t)&&t>0,n=s.body.getReader(),r=new TextDecoder;let o=0,a="";for(e(i?0:null);;){const{done:c,value:l}=await n.read();if(c)break;o+=l.byteLength,a+=r.decode(l,{stream:!0}),e(i?Math.min(1,o/t):null)}return a+=r.decode(),i&&e(1),a}const LF="3.8";function ds(s,e,t){s[e]==null&&s[t]!=null&&(s[e]=s[t]),delete s[t]}function fm(s){if(!s||typeof s!="object")return;if(Array.isArray(s)){for(const t of s)fm(t);return}const e=s;Array.isArray(e.curve)&&delete e.curve;for(const t of Object.values(e))fm(t)}function DF(s){for(const e of s.bones)ds(e,"transform","inherit");for(const e of s.transform||[])ds(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),e.scaleMix==null&&(e.scaleMix=e.mixScaleX??e.mixScaleY),ds(e,"shearMix","mixShearY"),delete e.mixX,delete e.mixY,delete e.mixScaleX,delete e.mixScaleY;for(const e of s.path||[])ds(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),delete e.mixX,delete e.mixY;for(const e of s.skins)for(const t of Object.values(e.attachments||{}))for(const i of Object.values(t||{}))i.parent!=null&&ds(i,"deform","timelines")}function NF(s){for(const e of Object.values(s.slots||{}))ds(e,"color","rgba"),ds(e,"twoColor","rgba2")}function UF(s){for(const e of Object.values(s.bones||{}))for(const t of e.rotate||[])ds(t,"angle","value")}function $F(s){for(const e of Object.values(s.transform||{}))for(const t of e)ds(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),t.scaleMix==null&&(t.scaleMix=t.mixScaleX??t.mixScaleY),ds(t,"shearMix","mixShearY"),delete t.mixX,delete t.mixY,delete t.mixScaleX,delete t.mixScaleY}function XF(s){for(const e of Object.values(s.path||{})){for(const t of["position","spacing"])for(const i of e[t]||[])ds(i,t,"value");for(const t of e.mix||[])ds(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),delete t.mixX,delete t.mixY}}function VF(s){if(!s.attachments)return;const e=s.deform||(s.deform={});for(const[t,i]of Object.entries(s.attachments)){const n=e[t]||(e[t]={});for(const[r,o]of Object.entries(i)){const a=n[r]||(n[r]={});for(const[c,l]of Object.entries(o))l.deform&&(a[c]=l.deform)}}delete s.attachments}function YF(s){s.skeleton.spine=LF,DF(s);for(const e of Object.values(s.animations))NF(e),UF(e),$F(e),XF(e),VF(e);return fm(s.animations),s}function GF(s,e,t,i){const n=t.frame-e.frame,r=n<=0?0:(s.frame-e.frame)/n;let o=0;for(let a=0;a[...i].sort((o,a)=>o-a);let r=!0;for(;r;){r=!1;const o=n();for(let a=0;au&&(u=f,h=d)}h>=0&&(i.add(h),r=!0)}}return n().map(o=>s[o])}function Fv(s,e,t,i,n){const r=t-e+1;if(r<2)return 0;const o=n?e:t,a=n?e+1:t-1,c=n?e+2:t-2,l=Math.abs(s[a].frame-s[o].frame);if(r>=3&&l>0&&Math.abs(Math.abs(s[c].frame-s[a].frame)-l)<1e-6){const u=s[o].values[i],d=s[a].values[i],f=s[c].values[i];return n?(-3*u+4*d-f)/(2*l):(3*u-4*d+f)/(2*l)}const h=s[a].frame-s[o].frame;return h?(s[a].values[i]-s[o].values[i])/h:0}function Ov(s,e,t){const i=s[t].frame-s[e].frame,n=[];for(let r=0;rd.values[r])),l=Math.max(...s.slice(e,t+1).map(d=>d.values[r])),h=o+Fv(s,e,t,r,!0)*i/3,u=a-Fv(s,e,t,r,!1)*i/3;n.push([Math.max(c,Math.min(l,h)),Math.max(c,Math.min(l,u))])}return{values:n}}function HF(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function jF(s,e,t,i,n){const r=t.frame-e.frame,o=r<=0?0:(s.frame-e.frame)/r;let a=0;for(let c=0;c[...i].sort((a,c)=>a-c);let r=!0;for(;r;){r=!1;const a=n();for(let c=0;cf&&(f=m,d=p)}d>=0&&(i.add(d),r=!0)}}const o=n();return{samples:o.map(a=>s[a]),controls:o.slice(0,-1).map((a,c)=>Ov(s,a,o[c+1]))}}function WF(s){if(!s.length)return[];const e=[s[0]];for(let t=1;t180;)i-=360;for(;i-e[t-1]<-180;)i+=360;e.push(i)}return e}function ti(s){if(!Number.isFinite(s))return 0;const e=Math.round(s*1e5)/1e5;return Object.is(e,-0)?0:e}function zF(s,e,t,i){const n=Math.max(2,Math.min(16,Math.round(Number(s.trailGridRows)||2))),r=Math.max(2,Math.min(32,Math.round(Number(s.trailGridCols)||2))),o=Math.max(2,t.length),a=e.lengthMode==="random"?Math.max(1,Number(e.lengthMin)||0,Number(e.lengthMax)||0):Math.max(.001,Number(e.length)||100),c=e.widthSizeMode==="random"?Math.max(1,Number(e.widthMin)||0,Number(e.widthMax)||0):Math.max(.001,Number(e.width)||100),l=(Number(e.rotation)||0)*Math.PI/180,h=Math.cos(l),u=Math.sin(l),d=[],f=[],p=[],m=[],g=[];for(let y=0;y=0;y--)g.push({col:y,row:n-1});for(let y=n-2;y>=1;y--)g.push({col:0,row:y});const v=g.length;for(let y=1;y|\s]+/g,"_").replace(/^_+|_+$/g,"")||e}function ww(s,e){let t=s,i=2;for(;e.has(t);)t=`${s}_${i++}`;return e.add(t),t}function KF(s){return s.replace(/\.[^./\\]+$/,"")}function Sw(s,e){return KF([s,e].filter(Boolean).join("/").replace(/\\/g,"/").replace(/\/{2,}/g,"/").replace(/^\.\//,""))}function ZF(s){var i,n;const e=Number(((i=s==null?void 0:s.orig)==null?void 0:i.width)??(s==null?void 0:s.width))||0,t=Number(((n=s==null?void 0:s.orig)==null?void 0:n.height)??(s==null?void 0:s.height))||0;return{width:e,height:t}}function fc(s){return Math.round(Math.max(0,Math.min(1,s))*255).toString(16).padStart(2,"0")}function Uv(s,e){return[(s>>16&255)/255,(s>>8&255)/255,(s&255)/255,Math.max(0,Math.min(1,e))]}function Ga(s,e){return ti(s/e)}function JF(s,e){const t=s.config,i=t.lifeMode==="fixed"?Math.max(0,Number(t.lifeMin)||0):Math.max(0,Number(t.lifeMin)||0,Number(t.lifeMax)||0),n=Math.max(0,Number(t.delay)||0);let r;return t.mode!=="stream"?r=n+i:t.streamBehavior!=="loop"?r=n+Math.max(1/e,Number(t.duration)||0)+i:r=n+lr(t,e).total/e,Math.max(1,Math.ceil(r*e)+1)}function xh(s,e){return e?s.boneName:`${s.spawnId??"legacy"}_${s.boneName}`}function QF(s,e,t){const i=new Set;for(const n of s)for(const r of n)i.add(xh(r,e));return[...i].sort().map((n,r)=>({key:n,name:ww(`_particle_${String(r).padStart(3,"0")}`,t),states:s.map(o=>o.find(a=>xh(a,e)===n)||null)}))}function $v(s,e){const t=new Set(e.states.map(i=>i==null?void 0:i.resourceId).filter(i=>typeof i=="number"));return s.config.imageResources.filter(i=>t.has(i.id))}function e3(s,e,t,i){const n=e*t/i,r=Math.min(s.states.length-1,Math.max(0,Math.floor(n))),o=Math.min(s.states.length-1,r+1),a=s.states[r],c=s.states[o];if(!a||!c||xh(a,!0)!==xh(c,!0)||a.spawnId!==c.spawnId)return a;const l=n-r;if(l<=1e-6)return a;const h=(d,f)=>(d??0)+((f??d??0)-(d??0))*l,u=a.trailState&&c.trailState&&a.trailState.resourceId===c.trailState.resourceId?{...a.trailState,width:h(a.trailState.width,c.trailState.width),alpha:h(a.trailState.alpha,c.trailState.alpha),bones:a.trailState.bones.map((d,f)=>{const p=c.trailState.bones[f]||d;return{...d,worldX:h(d.worldX??d.x,p.worldX??p.x),worldY:h(d.worldY??d.y,p.worldY??p.y),worldRotation:h(d.worldRotation??-d.rotation,p.worldRotation??-p.rotation)}})}:a.trailState;return{...a,worldX:h(a.worldX,c.worldX),worldY:h(a.worldY,c.worldY),worldRotation:h(a.worldRotation,c.worldRotation),worldScaleX:h(a.worldScaleX,c.worldScaleX),worldScaleY:h(a.worldScaleY,c.worldScaleY),alpha:h(a.alpha,c.alpha),trailState:u}}function Xv(s,e){return!s||s==="跟随导出"?e.keyframeCurve:s==="贝塞尔"?"bezier":"linear"}function _o(s,e,t,i,n,r=new Set,o=n.keyframeCurve){if(!s.length)return[];const a=o==="bezier"&&n.spineVersion!=="3.8"?bw(s,i,r):{samples:xw(s,i,r),controls:[]},c=a.samples.map(l=>{const h={time:Ga(l.frame,e)};return t.forEach((u,d)=>{h[u]=ti(l.values[d])}),h});for(let l=0;l0&&n&&e.add(t-1),i&&e.add(t))}return e}function i3(s){const e=new Set;for(let t=0;t0&&n&&e.add(t-1),i&&e.add(t))}return e}function s3(s,e){var i;if(!s.shapeEnabled||!((i=s.shapeCurve)!=null&&i.length))return 1;const t=[...s.shapeCurve].sort((n,r)=>n.x-r.x);if(e<=t[0].x)return Math.max(0,t[0].y);for(let n=1;n{r!==n&&(i.push(t(r,o)),n=r)}),i}function r3(s,e,t){const i=s.imageMode==="sequence"?s.sequenceFrames[e]:void 0,n=(i==null?void 0:i.name)||s.textureName||`image_${s.id}`,r=(i==null?void 0:i.texture)||s.texture,o=ZF(r);(!o.width||!o.height)&&t.push({code:"missing-image",message:`图片“${n}”缺失或尺寸不可读,已保留路径。`});const a=o.width||1,c=o.height||1;return{path:Sw(s.textureFolder,n),x:ti((.5-s.anchorX)*a),y:ti((s.anchorY-.5)*c),width:ti(a),height:ti(c)}}function o3(s,e,t,i,n=i.keyframeCurve){if(!s.length)return[];const r=new Set;for(let h=1;h({frame:u,values:h})),a=1/255,c=n==="bezier"&&i.spineVersion!=="3.8"?bw(o,[a,a,a,.01],r):{samples:xw(o,[a,a,a,.01],r),controls:[]},l=c.samples.map(h=>({time:Ga(h.frame,t),color:`${fc(h.values[0])}${fc(h.values[1])}${fc(h.values[2])}${fc(h.values[3])}`}));if(c.controls.length)for(let h=0;h({time:Ga(d,n),name:u??null}));c.length&&(a.attachment=c);const l=o3(i,t,n,r,o);l.length&&(a.rgba=l)}function Yv(s){var p;const e=s.settings,t=Math.max(1,Number(s.timeline.fps)||30),i=Math.max(1,Math.round(e.fps||30)),n=e.integerFrameAlignment?i:t,r=[],o=s.systems.filter(m=>m.visible!==!1),a={skeleton:{hash:"",spine:e.spineVersion,x:0,y:0,width:0,height:0,images:e.imagesPath||"./images/"},bones:[{name:"root"}],slots:[],skins:[{name:"default",attachments:{}}],animations:{}};e.omitFps||(a.skeleton.fps=i);const c=a.skins[0].attachments,l=new Set(["root"]),h=[...new Set([...s.timeline.animations.length?s.timeline.animations:["animation"],...o.map(m=>m.animation||"animation")])],u=new Map;for(const m of o){const g=Math.min(((p=m.frames)==null?void 0:p.length)||0,JF(m,t)),v=(m.frames||[]).slice(0,g);v.length||r.push({code:"empty-cache",message:`“${m.config.name}”没有可用帧缓存。`});const x=ww(qF(m.config.name,`system_${m.id}`),l);a.bones.push({name:x,parent:"root"});const y=QF(v,e.bonePool,l),_=Math.max(0,(g-1)/t),C=Math.max(1,Math.ceil(_*n)+1),S=u.get(m.animation)||[];S.push({system:m,tracks:y,targetFrames:C}),u.set(m.animation,S);for(const b of y){a.bones.push({name:b.name,parent:x});const M=$v(m,b),I=new Set(M.map(O=>O.blend));for(const O of I){const D=`${b.name}_image_${O}`;a.slots.push({name:D,bone:b.name,color:"ffffff00",blend:Bv[O]});const $=c[D]||(c[D]={});for(const N of M.filter(U=>U.blend===O)){const U=N.imageMode==="sequence"?Math.max(1,N.sequenceFrames.length):1;for(let A=0;A{var L;return((L=P==null?void 0:P.trailState)==null?void 0:L.resourceId)===O.id}))continue;const D=Math.max(2,Math.min(16,Math.round(O.boneCount||3))),$=[];for(let P=0;Pa.bones.findIndex(L=>L.name===P)),A=Sw("",O.textureName||`trail_${O.id}`);(c[N]||(c[N]={}))[`trail_${O.id}`]=zF(m.config,O,U,A),O.texture||r.push({code:"missing-image",message:`拖尾图片“${O.textureName||O.id}”缺失,已保留路径。`})}const F=`${b.name}_image_`,E=`${b.name}_trail_`,k=a.slots.filter(O=>String(O.name).startsWith(F)||String(O.name).startsWith(E));k.length&&(a.slots=a.slots.filter(O=>!k.includes(O)),a.slots.push(...k.filter(O=>String(O.name).startsWith(E)),...k.filter(O=>String(O.name).startsWith(F))))}}for(const m of h){const g=u.get(m)||[],v={bones:{},slots:{}};let x=!1;for(const{system:y,tracks:_,targetFrames:C}of g)for(const S of _){const b=Array.from({length:C},(B,X)=>e3(S,X,t,n)),M=b.map(B=>!!(B!=null&&B.active)),I=[],F=[],E=[];b.forEach((B,X)=>{B!=null&&B.active&&(I.push({frame:X,values:[B.worldX??B.x,B.worldY??B.y]}),F.push(B.worldRotation??B.rotation),E.push({frame:X,values:[B.worldScaleX??B.scaleX,B.worldScaleY??B.scaleY]}))});const k=WF(F),O=I.map((B,X)=>({frame:B.frame,values:[k[X]??0]})),D=t3(b),$={},N=_o(I,n,["x","y"],[Lv,Lv],e,D),U=_o(O,n,["value"],[Nv],e,D),A=_o(E,n,["x","y"],[dc,dc],e,D);N.length&&($.translate=N),U.length&&($.rotate=U),A.length&&($.scale=A),Object.keys($).length&&(v.bones[S.name]=$,x=!0);const P=$v(y,S),L=new Set(P.map(B=>B.blend));for(const B of L){const X=[],V=[];let q=16777215;for(let le=0;leY.id===ue.resourceId):void 0,xe=!!ue&&M[le]&&ue.imageVisible!==!1&&(ae==null?void 0:ae.blend)===B;ue&&(ae==null?void 0:ae.blend)===B&&(q=ue.colorHex),X.push(xe?`image_${ae.id}_${ue.imageFrameIndex??0}`:null),V.push(Uv(q,xe?ue.alpha:0))}const ne=P.filter(le=>le.blend===B).filter(le=>le.independentAlpha==="curve").map(le=>Xv(le.alphaCurveMode,e)),re=ne.length?ne.includes("bezier")?"bezier":"linear":Xv(y.config.alphaMode==="curve"?y.config.curveMode:void 0,e);Vv(v,`${S.name}_image_${B}`,X,V,n,e,re),X.some(Boolean)&&(x=!0)}if(y.config.trail)for(const B of y.config.trailResources){const X=Math.max(2,Math.min(16,Math.round(B.boneCount||3))),V=b.map(Y=>{var j;return((j=Y==null?void 0:Y.trailState)==null?void 0:j.resourceId)===B.id?Y.trailState:void 0}),q=V.find(Y=>!!Y);if(!q)continue;const W=i3(V),ne=B.widthSizeMode==="random"?Math.max(1,Number(B.widthMin)||0,Number(B.widthMax)||0):Math.max(.001,Number(B.width)||100);let re=q;const le=V.map(Y=>(Y&&(re=Y),re));for(let Y=0;Y{const Me=ye==null?void 0:ye.bones[Math.min(ye.bones.length-1,Y)];if(!Me)return;const ve={x:Me.worldX??Me.x,y:Me.worldY??Me.y,rotation:Me.worldRotation??-Me.rotation};j.push({frame:we,values:[ve.x,ve.y]}),H.push({frame:we,values:[ve.rotation]}),G.push({frame:we,values:[1,Math.max(0,ye.width/ne)*ie]})});const fe=`${S.name}_trail_${B.id}_${Y}`,te={},oe=_o(j,n,["x","y"],[Dv,Dv],e,z),ce=_o(H,n,["value"],[Nv],e,z),Ce=_o(G,n,["x","y"],[dc,dc],e,z);oe.length&&(te.translate=oe),ce.length&&(te.rotate=ce),Ce.length&&(te.scale=Ce),Object.keys(te).length&&(v.bones[fe]=te)}const ue=V.map(()=>`trail_${B.id}`);let ae=q.colorHex;const xe=V.map(Y=>(Y&&(ae=Y.colorHex),Uv(ae,Y?Y.alpha:0)));Vv(v,`${S.name}_trail_${B.id}`,ue,xe,n,e),x=!0}}(x||!e.excludeEmptyAnimations)&&(a.animations[m]=v)}!Object.keys(a.animations).length&&!e.excludeEmptyAnimations&&(a.animations.animation={bones:{},slots:{}});const d=e.spineVersion==="3.8"?YF(a):a,f=JSON.stringify(d,null,2);return{json:d,text:f,warnings:r,particleSystemCount:o.length,animationCount:Object.keys(d.animations).length,boneCount:d.bones.length}}function a3(s,e){const t=new Blob([s.text],{type:"application/json;charset=utf-8"}),i=URL.createObjectURL(t),n=document.createElement("a");n.href=i,n.download=/\.json$/i.test(e)?e:`${e||"SpineParticle"}.json`,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3)}class z${constructor(){w(this,"array",[])}add(e){const t=this.contains(e);return this.array[e|0]=e|0,!t}contains(e){return this.array[e|0]!==void 0}remove(e){this.array[e|0]=void 0}clear(){this.array.length=0}}class l3{constructor(){w(this,"entries",{});w(this,"size",0)}add(e){const t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){const t=this.size;for(let i=0,n=e.length;i1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>`0${(t*255).toString(16)}`.slice(-2);return+`0x${e(this.r)}${e(this.g)}${e(this.b)}`}static fromString(e,t=new Qi){return t.setFromString(e)}};w(Qi,"WHITE",new Qi(1,1,1,1)),w(Qi,"RED",new Qi(1,0,0,1)),w(Qi,"GREEN",new Qi(0,1,0,1)),w(Qi,"BLUE",new Qi(0,0,1,1)),w(Qi,"MAGENTA",new Qi(1,0,1,1));let tt=Qi;const Xt=class Xt{static clamp(e,t,i){return ei?i:e}static cosDeg(e){return Math.cos(e*Xt.degRad)}static sinDeg(e){return Math.sin(e*Xt.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*Xt.radDeg}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){const t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return Xt.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,i){const n=Math.random(),r=t-e;return n<=(i-e)/r?e+Math.sqrt(n*r*(i-e)):t-Math.sqrt((1-n)*r*(t-i))}static isPowerOfTwo(e){return e&&(e&e-1)===0}};w(Xt,"epsilon",1e-5),w(Xt,"epsilon2",Xt.epsilon*Xt.epsilon),w(Xt,"PI",3.1415927),w(Xt,"PI2",Xt.PI*2),w(Xt,"invPI2",1/Xt.PI2),w(Xt,"radiansToDegrees",180/Xt.PI),w(Xt,"radDeg",Xt.radiansToDegrees),w(Xt,"degreesToRadians",Xt.PI/180),w(Xt,"degRad",Xt.degreesToRadians);let Ee=Xt;const as=class as{apply(e,t,i){return t===void 0||i===void 0?this.applyInternal(e):e+(t-e)*this.applyInternal(i)}};w(as,"linear",new class extends as{applyInternal(e){return e}}),w(as,"smooth",new class extends as{applyInternal(e){return e*e*(3-2*e)}}),w(as,"slowFast",new class extends as{applyInternal(e){return e*e}}),w(as,"fastSlow",new class extends as{applyInternal(e){return(e-1)*(e-1)*-1+1}}),w(as,"circle",new class extends as{applyInternal(e){return e<=.5?(e*=2,(1-Math.sqrt(1-e*e))/2):(e--,e*=2,(Math.sqrt(1-e*e)+1)/2)}});let qo=as;class c3 extends qo{constructor(t){super();w(this,"power",2);this.power=t}applyInternal(t){return t<=.5?Math.pow(t*2,this.power)/2:Math.pow((t-1)*2,this.power)/(this.power%2===0?-2:2)+1}}class q$ extends c3{constructor(e){super(e)}applyInternal(e){return Math.pow(e-1,this.power)*(this.power%2===0?-1:1)+1}}const Qn=class Qn{static arrayCopy(e,t,i,n,r){for(let o=t,a=n;o=t?e:Qn.setArraySize(e,t,i)}static newArray(e,t){const i=[];for(let n=0;n0?this.items.pop():this.instantiator()}free(e){var t;(t=e.reset)==null||t.call(e),this.items.push(e)}freeAll(e){for(let t=0;tthis.maxDelta&&(this.delta=this.maxDelta),this.lastTime=e,this.frameCount++,this.frameTime>1&&(this.framesPerSecond=this.frameCount/this.frameTime,this.frameTime=0,this.frameCount=0)}}class J${constructor(e=32){w(this,"values");w(this,"addedValues",0);w(this,"lastValue",0);w(this,"mean",0);w(this,"dirty",!0);this.values=new Array(e)}hasEnoughData(){return this.addedValues>=this.values.length}addValue(e){this.addedValuesthis.values.length-1&&(this.lastValue=0),this.dirty=!0}getMean(){if(this.hasEnoughData()){if(this.dirty){let e=0;for(let t=0;t{h.width=parseInt(i[1]),h.height=parseInt(i[2])},n.format=()=>{},n.filter=h=>{h.minFilter=Ye.enumValue(Qo,i[1]),h.magFilter=Ye.enumValue(Qo,i[2])},n.repeat=h=>{i[1].indexOf("x")!==-1&&(h.uWrap=ea.Repeat),i[1].indexOf("y")!==-1&&(h.vWrap=ea.Repeat)},n.pma=h=>{h.pma=i[1]==="true"};var r={};r.xy=h=>{h.x=parseInt(i[1]),h.y=parseInt(i[2])},r.size=h=>{h.width=parseInt(i[1]),h.height=parseInt(i[2])},r.bounds=h=>{h.x=parseInt(i[1]),h.y=parseInt(i[2]),h.width=parseInt(i[3]),h.height=parseInt(i[4])},r.offset=h=>{h.offsetX=parseInt(i[1]),h.offsetY=parseInt(i[2])},r.orig=h=>{h.originalWidth=parseInt(i[1]),h.originalHeight=parseInt(i[2])},r.offsets=h=>{h.offsetX=parseInt(i[1]),h.offsetY=parseInt(i[2]),h.originalWidth=parseInt(i[3]),h.originalHeight=parseInt(i[4])},r.rotate=h=>{const u=i[1];u==="true"?h.degrees=90:u!=="false"&&(h.degrees=parseInt(u))},r.index=h=>{h.index=parseInt(i[1])};let o=t.readLine();for(;o&&o.trim().length===0;)o=t.readLine();for(;!(!o||o.trim().length===0||t.readEntry(i,o)===0);)o=t.readLine();let a=null,c=null,l=null;for(;o!==null;)if(o.trim().length===0)a=null,o=t.readLine();else if(a){const h=new Tw(a,o);for(;;){const u=t.readEntry(i,o=t.readLine());if(u===0)break;const d=r[i[0]];if(d)d(h);else{c||(c=[]),l||(l=[]),c.push(i[0]);const f=[];for(let p=0;p0&&l&&l.length>0&&(h.names=c,h.values=l,c=null,l=null),h.u=h.x/a.width,h.v=h.y/a.height,h.degrees===90?(h.u2=(h.x+h.height)/a.width,h.v2=(h.y+h.width)/a.height):(h.u2=(h.x+h.width)/a.width,h.v2=(h.y+h.height)/a.height),this.regions.push(h)}else{for(a=new f3(o.trim());t.readEntry(i,o=t.readLine())!==0;){const h=n[i[0]];h&&h(a)}this.pages.push(a)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length===0))return 0;const i=t.indexOf(":");if(i===-1)return 0;e[0]=t.substr(0,i).trim();for(let n=1,r=i+1;;n++){const o=t.indexOf(",",r);if(o===-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,o-r).trim(),r=o+1,n===4)return 4}}}class f3{constructor(e){w(this,"name");w(this,"minFilter",Qo.Nearest);w(this,"magFilter",Qo.Nearest);w(this,"uWrap",ea.ClampToEdge);w(this,"vWrap",ea.ClampToEdge);w(this,"texture",null);w(this,"width",0);w(this,"height",0);w(this,"pma",!1);w(this,"regions",[]);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(const t of this.regions)t.texture=e}}class Tw extends _w{constructor(t,i){super();w(this,"page");w(this,"name");w(this,"x",0);w(this,"y",0);w(this,"offsetX",0);w(this,"offsetY",0);w(this,"originalWidth",0);w(this,"originalHeight",0);w(this,"index",0);w(this,"degrees",0);w(this,"names",null);w(this,"values",null);this.page=t,this.name=i,t.regions.push(this)}}const Ch=class Ch{constructor(e){w(this,"name");w(this,"timelineAttachment");w(this,"timelineSlots",Ch.empty);if(!e)throw new Error("name cannot be null.");this.name=e,this.timelineAttachment=this}isTimelineActive(e,t,i){let n=e[t];if(n.bone.isActive()){const r=(i?n.getAppliedPose():n.getPose()).getAttachment();if(r!=null&&r.timelineAttachment===this)return!0}for(let r=0,o=this.timelineSlots.length;r>1)*c;const l=i.appliedPose.deform;let h=this.vertices;const u=this.bones;if(!u){l.length>0&&(h=l);const m=i.bone.appliedPose,g=m.worldX,v=m.worldY,x=m.a,y=m.b,_=m.c,C=m.d;for(let S=n,b=a;b=this.regions.length&&(t=this.regions.length-1),t}getUVs(e){return this.uvs[e]}hasPathSuffix(){return this.pathSuffix}getPath(e,t){if(!this.pathSuffix)return e;let i=e;const n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)i+="0";return i+=n,i}static nextID(){return Fo._nextID++}};w(Fo,"_nextID",0);let ia=Fo;var bi;(function(s){s[s.hold=0]="hold",s[s.once=1]="once",s[s.loop=2]="loop",s[s.pingpong=3]="pingpong",s[s.onceReverse=4]="onceReverse",s[s.loopReverse=5]="loopReverse",s[s.pingpongReverse=6]="pingpongReverse"})(bi||(bi={}));const Mw=[bi.hold,bi.once,bi.loop,bi.pingpong,bi.onceReverse,bi.loopReverse,bi.pingpongReverse];class vp{constructor(e,t,i){w(this,"name");w(this,"timelines",[]);w(this,"timelineIds");w(this,"bones");w(this,"color",new tt(1,1,1,1));w(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.duration=i,this.timelineIds=new l3,this.bones=[],this.setTimelines(t)}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e;const t=e.length;this.timelineIds.clear(),this.bones.length=0;const i=new Set,n=e;for(let r=0;r0&&(t%=this.duration));const u=this.timelines;for(let d=0,f=u.length;dt)return r-i;return n-i}};function m3(s){return typeof s=="object"&&s!==null&&typeof s.slotIndex=="number"}class co extends Rt{constructor(t,i,...n){super(t,...n);w(this,"curves");this.curves=Ye.newFloatArray(t+i*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){const i=this.getFrameCount()+t*18;if(this.curves.length>i){const n=Ye.newFloatArray(i);Ye.arrayCopy(this.curves,0,n,0,i),this.curves=n}}setBezier(t,i,n,r,o,a,c,l,h,u,d){const f=this.curves;let p=this.getFrameCount()+t*18;n===0&&(f[i]=2+p);const m=(r-a*2+l)*.03,g=(o-c*2+h)*.03,v=((a-l)*3-r+u)*.006,x=((c-h)*3-o+d)*.006;let y=m*2+v,_=g*2+x,C=(a-r)*.3+m+v*.16666667,S=(c-o)*.3+g+x*.16666667,b=r+C,M=o+S;for(let I=p+18;pt){const h=this.frames[i],u=this.frames[i+n];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}const a=r+18;for(r+=2;r=t){const h=o[r-2],u=o[r-1];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}i+=this.getFrameEntries();const c=o[a-2],l=o[a-1];return l+(t-c)/(this.frames[i]-c)*(this.frames[i+n]-l)}}class En extends co{constructor(e,t,i){super(e,t,i)}getFrameEntries(){return 2}setFrame(e,t,i){e<<=1,this.frames[e]=t,this.frames[e+1]=i}getCurveValue(e){const t=this.frames;let i=t.length-2;for(let r=2;r<=i;r+=2)if(t[r]>e){i=r-2;break}const n=this.curves[i>>1];switch(n){case 0:{const r=t[i],o=t[i+1];return o+(e-r)/(t[i+2]-r)*(t[i+2+1]-o)}case 1:return t[i+1]}return this.getBezierValue(e,i,1,n-2)}getRelativeValue(e,t,i,n,r,o){if(e>2];switch(f){case 0:{const p=u[d];c=u[d+1],l=u[d+2],h=u[d+3];const m=(i-p)/(u[d+4]-p);c+=(u[d+4+1]-c)*m,l+=(u[d+4+2]-l)*m,h+=(u[d+4+3]-h)*m;break}case 1:c=u[d+1],l=u[d+2],h=u[d+3];break;default:c=this.getBezierValue(i,d,1,f-2),l=this.getBezierValue(i,d,2,f+18-2),h=this.getBezierValue(i,d,3,f+36-2)}if(n!==1)if(r===Ue.setup){const p=e.data.setupPose.color;c=p.r+(c-p.r)*n,l=p.g+(l-p.g)*n,h=p.b+(h-p.b)*n}else c=a.r+(c-a.r)*n,l=a.g+(l-a.g)*n,h=a.b+(h-a.b)*n;a.r=c<0?0:c>1?1:c,a.g=l<0?0:l>1?1:l,a.b=h<0?0:h>1?1:h}}class Nw extends En{constructor(t,i,n){super(t,i,`${Qe.alpha}|${n}`);w(this,"slotIndex",0);this.slotIndex=n}apply(t,i,n,r,o,a,c,l,h){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=(h?u.appliedPose:u.pose).color;let f=0;const p=this.frames;if(n1?1:f}}class Uw extends lu{constructor(e,t,i){super(e,t,i,`${Qe.rgb}|${i}`,`${Qe.alpha}|${i}`,`${Qe.rgb2}|${i}`)}getFrameEntries(){return 8}setFrame(e,t,i,n,r,o,a,c,l){e<<=3,this.frames[e]=t,this.frames[e+1]=i,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=o,this.frames[e+5]=a,this.frames[e+6]=c,this.frames[e+7]=l}apply1(e,t,i,n,r,o){const a=t.color,c=t.darkColor;let l=0,h=0,u=0;const d=this.frames;if(i>3];switch(x){case 0:{const y=d[v];f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],l=d[v+5],h=d[v+6],u=d[v+7];const _=(i-y)/(d[v+8]-y);f+=(d[v+8+1]-f)*_,p+=(d[v+8+2]-p)*_,m+=(d[v+8+3]-m)*_,g+=(d[v+8+4]-g)*_,l+=(d[v+8+5]-l)*_,h+=(d[v+8+6]-h)*_,u+=(d[v+8+7]-u)*_;break}case 1:f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],l=d[v+5],h=d[v+6],u=d[v+7];break;default:f=this.getBezierValue(i,v,1,x-2),p=this.getBezierValue(i,v,2,x+18-2),m=this.getBezierValue(i,v,3,x+36-2),g=this.getBezierValue(i,v,4,x+54-2),l=this.getBezierValue(i,v,5,x+72-2),h=this.getBezierValue(i,v,6,x+90-2),u=this.getBezierValue(i,v,7,x+108-2)}if(n===1)a.set(f,p,m,g);else if(r===Ue.setup){const y=e.data.setupPose;let _=y.color;a.set(_.r+(f-_.r)*n,_.g+(p-_.g)*n,_.b+(m-_.b)*n,_.a+(g-_.a)*n),_=y.darkColor,l=_.r+(l-_.r)*n,h=_.g+(h-_.g)*n,u=_.b+(u-_.b)*n}else a.add((f-a.r)*n,(p-a.g)*n,(m-a.b)*n,(g-a.a)*n),l=c.r+(l-c.r)*n,h=c.g+(h-c.g)*n,u=c.b+(u-c.b)*n;c.r=l<0?0:l>1?1:l,c.g=h<0?0:h>1?1:h,c.b=u<0?0:u>1?1:u}}class $w extends lu{constructor(e,t,i){super(e,t,i,`${Qe.rgb}|${i}`,`${Qe.rgb2}|${i}`)}getFrameEntries(){return 7}setFrame(e,t,i,n,r,o,a,c){e*=7,this.frames[e]=t,this.frames[e+1]=i,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=o,this.frames[e+5]=a,this.frames[e+6]=c}apply1(e,t,i,n,r,o){const a=t.color,c=t.darkColor;let l=0,h=0,u=0,d=0,f=0,p=0;const m=this.frames;if(i1?1:l,a.g=h<0?0:h>1?1:h,a.b=u<0?0:u>1?1:u,c.r=d<0?0:d>1?1:d,c.g=f<0?0:f>1?1:f,c.b=p<0?0:p>1?1:p}}class Ha extends Rt{constructor(t,i){super(t,`${Qe.attachment}|${i}`);w(this,"slotIndex",0);w(this,"attachmentNames");this.slotIndex=i,this.attachmentNames=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.attachmentNames[t]=n}apply(t,i,n,r,o,a,c,l,h){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=h?u.appliedPose:u.pose;l||nt){const l=this.frames[i];return n[r+1]*(t-l)/(n[r]-l)}const o=r+18;for(r+=2;r=t){const l=n[r-2],h=n[r-1];return h+(t-l)/(n[r]-l)*(n[r+1]-h)}const a=n[o-2],c=n[o-1];return c+(1-c)*(t-a)/(this.frames[i+this.getFrameEntries()]-a)}apply(t,i,n,r,o,a,c,l,h){const u=t.slots;if(!this.attachment.isTimelineActive(u,this.slotIndex,h))return;const d=this.attachment.timelineSlots,f=this.frames;if(n=f[f.length-1])g=0,p=this.vertices[f.length-1],m=null;else{const x=Rt.search(f,n);g=this.getCurvePercent(n,x),p=this.vertices[x],m=this.vertices[x+1]}const v=this.vertices[0].length;this.applyToSlot(u[this.slotIndex],h,p,m,g,v,o,a,c);for(const x of d)this.applyToSlot(u[x],h,p,m,g,v,o,a,c)}applyBeforeFirst(t,i,n,r){if(!t.bone.active)return;const o=i?t.appliedPose:t.pose;if(o.attachment==null||o.attachment.timelineAttachment!==this.attachment)return;const a=o.deform;switch(a.length===0&&(r=Ue.setup),r){case Ue.setup:a.length=0;break;case Ue.first:{if(n===1){a.length=0;return}const c=this.vertices[0].length;a.length=c;const l=a,h=o.attachment;if(h.bones===null){const u=h.vertices;for(let d=0;d>4,h=c.attachment.sequence.regions.length;const u=Mw[o&15];if(u!==bi.hold)switch(l+=(n-r)/a+1e-5|0,u){case bi.once:l=Math.min(h-1,l);break;case bi.loop:l%=h;break;case bi.pingpong:{const d=(h<<1)-2;l=d===0?0:l%d,l>=h&&(l=d-l);break}case bi.onceReverse:l=Math.max(h-1-l,0);break;case bi.loopReverse:l=h-1-l%h;break;case bi.pingpongReverse:{const d=(h<<1)-2;l=d===0?0:(l+h-1)%d,l>=h&&(l=d-l)}}c.sequenceIndex=l}};w(ls,"ENTRIES",3),w(ls,"MODE",1),w(ls,"DELAY",2);let Sh=ls;const Eh=class Eh extends Rt{constructor(t){super(t,...Eh.propertyIds);w(this,"events");this.events=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i.time,this.events[t]=i}apply(t,i,n,r,o,a,c,l,h){if(!r)return;const u=this.frames,d=this.frames.length;if(i>n)this.apply(null,i,Number.MAX_VALUE,r,0,a,!1,!1,!1),i=-1;else if(i>=u[d-1])return;if(n0&&u[f-1]===p;)f--}for(;f=u[f];f++)r.push(this.events[f])}};w(Eh,"propertyIds",[`${Qe.event}`]);let ul=Eh;const Oo=class Oo extends Rt{constructor(t){super(t,...Oo.propertyIds);w(this,"drawOrders");this.drawOrders=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.drawOrders[t]=n}apply(t,i,n,r,o,a,c,l,h){const u=h?t.drawOrder.appliedPose:t.drawOrder.pose,d=t.slots;if(l||n>2];switch(x){case 0:{const _=f[v];p=f[v+1],m=f[v+2],g=f[v+3];const C=(n-_)/(f[v+4]-_);p+=(f[v+4+1]-p)*C,m+=(f[v+4+2]-m)*C,g+=(f[v+4+3]-g)*C;break}case 1:p=f[v+1],m=f[v+2],g=f[v+3];break;default:p=this.getBezierValue(n,v,1,x-2),m=this.getBezierValue(n,v,2,x+18-2),g=this.getBezierValue(n,v,3,x+36-2)}const y=a===Ue.setup?u.data.setupPose:d;c?(d.mixRotate=y.mixRotate+p*o,d.mixX=y.mixX+m*o,d.mixY=y.mixY+g*o):(d.mixRotate=y.mixRotate+(p-y.mixRotate)*o,d.mixX=y.mixX+(m-y.mixX)*o,d.mixY=y.mixY+(g-y.mixY)*o)}}class xr extends _l{constructor(e,t,i,n){super(e,t,i,n)}apply(e,t,i,n,r,o,a,c,l){if(a&&!this.additive&&(a=!1),this.constraintIndex===-1){const h=i>=this.frames[0]?this.getCurveValue(i):0,u=e.physics;for(const d of u)if(d.active&&this.global(d.data)){const f=l?d.appliedPose:d.pose;this.set(f,this.getAbsoluteValue(i,r,o,a,this.get(f),this.get(d.data.setupPose),h))}}else{const h=e.constraints[this.constraintIndex];if(h.active){const u=l?h.appliedPose:h.pose;this.set(u,this.getAbsoluteValue(i,r,o,a,this.get(u),this.get(h.data.setupPose)))}}}}class Ww extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintInertia)}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}}class zw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintStrength)}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}}class qw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintDamping)}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}}class Kw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintMass)}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}}class Zw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintWind),this.additive=!0}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}}class Jw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintGravity),this.additive=!0}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}}class Qw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintMix)}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}}const Ih=class Ih extends Rt{constructor(t,i){super(t,...Ih.propertyIds);w(this,"constraintIndex");this.constraintIndex=i,this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i}apply(t,i,n,r,o,a,c,l,h){let u;if(this.constraintIndex!==-1&&(u=t.constraints[this.constraintIndex],!u.active))return;const d=this.frames;if(i>n)this.apply(t,i,Number.MAX_VALUE,[],o,a,!1,!1,!1),i=-1;else if(i>=d[d.length-1])return;if(!(n=d[Rt.search(d,i)+1]))if(u!=null)u.reset(t);else for(const f of t.physics)f.active&&f.reset(t)}};w(Ih,"propertyIds",[Qe.physicsConstraintReset.toString()]);let _h=Ih;class eS extends _l{constructor(e,t,i){super(e,t,i,Qe.sliderTime)}apply(e,t,i,n,r,o,a,c,l){const h=e.constraints[this.constraintIndex];if(h.active){const u=l?h.appliedPose:h.pose;u.time=this.getAbsoluteValue(i,r,o,a,u.time,h.data.setupPose.time)}}}class tS extends _l{constructor(e,t,i){super(e,t,i,Qe.sliderMix),this.additive=!0}apply(e,t,i,n,r,o,a,c,l){const h=e.constraints[this.constraintIndex];if(h.active){const u=l?h.appliedPose:h.pose;u.mix=this.getAbsoluteValue(i,r,o,a,u.mix,h.data.setupPose.mix)}}}const za=class za{constructor(e){w(this,"data");w(this,"tracks",[]);w(this,"timeScale",1);w(this,"unkeyedState",0);w(this,"events",[]);w(this,"listeners",[]);w(this,"queue",new y3(this));w(this,"propertyIds",new Map);w(this,"animationsChanged",!1);w(this,"trackEntryPool",new h3(()=>new v3));this.data=e}update(e){e*=this.timeScale;const t=this.tracks;for(let i=0,n=t.length;i0){if(r.delay-=o,r.delay>0)continue;o=-r.delay,r.delay=0}let a=r.next;if(a){const c=r.trackLast-a.delay;if(c>=0){for(a.delay=0,a.trackTime+=r.timeScale===0?0:(c/r.timeScale+e)*a.timeScale,r.trackTime+=o,this.setTrack(i,a,!0);a.mixingFrom;)a.mixTime+=e,a=a.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[i]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let c=r.mixingFrom;for(r.mixingFrom=null,c&&(c.mixingTo=null);c;)this.queue.end(c),c=c.mixingFrom}r.trackTime+=o}this.queue.drain()}updateMixingFrom(e,t){const i=e.mixingFrom;if(!i)return!0;const n=this.updateMixingFrom(i,t);if(i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast,e.nextTrackLast!==-1&&e.mixTime>=e.mixDuration){if(i.totalAlpha===0||e.mixDuration===0){if(e.mixingFrom=i.mixingFrom,i.mixingFrom!=null&&(i.mixingFrom.mixingTo=e),i.totalAlpha===0)for(let r=e;r.mixingTo!=null;r=r.mixingTo)r.keepHold=!0;this.queue.end(i)}return n}return i.trackTime+=t*i.timeScale,e.mixTime+=t,!1}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();const t=this.events,i=this.tracks;let n=!1;for(let a=0,c=i.length;a0)continue;n=!0;let h=l.alpha;l.mixingFrom?h*=this.applyMixingFrom(l,e):l.trackTime>=l.trackEnd&&!l.next&&(h=0);let u=l.animationLast,d=l.getAnimationTime(),f=d,p=t;l.reverse&&(f=l.animation.duration-f,p=null);const m=l.animation.timelines,g=m.length;if(a===0&&h===1)for(let v=0;v=l.alphaAttachmentThreshold,y=l.additive,_=y||l.shortestRotation,C=!_&&l.timelinesRotation.length!==g<<1;C&&(l.timelinesRotation.length=g<<1);for(let S=0;S0?c/a:o,h=i.animation.timelines,u=h.length,d=i.timelineMode,f=i.timelineHoldMix,p=r=i.alphaAttachmentThreshold);else{const O=!m||!(I instanceof dr)||E===Ue.current;I.apply(t,_,S,b,k,E,g,O,!1)}}return i.reverse&&r0&&this.queueEvents(i,C),this.events.length=0,i.nextAnimationLast=C,i.nextTrackLast=i.trackTime,r}applyAttachmentTimeline(e,t,i,n,r){const o=t.slots[e.slotIndex];if(!o.bone.active||!r&&o.attachmentState===this.unkeyedState+Kv)return;let a=i=0,C=v>=0;Math.abs(x)<=90&&Ee.signum(x)!==Ee.signum(g)&&(Math.abs(v-y)>180?(m+=360*Ee.signum(v),C=_):y!==0?m-=360*Ee.signum(v):C=_),C!==_&&(m+=360*Ee.signum(v)),o[a]=m}o[a+1]=g,h.rotation=f+m*n}queueEvents(e,t){const i=e.animationStart,n=e.animationEnd,r=n-i,o=e.reverse;let a=e.trackLast%r;o&&(a=r-a);const c=this.events;let l=0,h=c.length;for(;l=i&&d.time<=n&&this.queue.event(e,d)}let u=!1;if(e.loop)if(r===0)u=!0;else{const d=Math.floor(e.trackTime/r);u=d>0&&d>Math.floor(e.trackLast/r)}else u=t>=n&&e.animationLast=i&&d.time<=n&&this.queue.event(e,d)}}eventsReverse(e,t,i){const n=e.animation.duration,r=n-t,o=n-i,a=e.animation.timelines;for(let c=0,l=e.animation.timelines.length;c=o){for(let p=0;p=r)break;this.events.push(u[p])}}else{for(let m=0;m=r);m++)this.events.push(u[m]);let p=0;for(;p=o);p++);for(;p= 0.");if(e>=this.tracks.length)return;const t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let i=t;for(;;){const n=i.mixingFrom;if(!n)break;this.queue.end(n),i.mixingFrom=null,i.mixingTo=null,i=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setTrack(e,t,i){const n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(n.next=null,i&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,i=!1){return typeof t=="string"?this.setAnimation1(e,t,i):this.setAnimation2(e,t,i)}setAnimation1(e,t,i=!1){const n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error(`Animation not found: ${t}`);return this.setAnimation2(e,n,i)}setAnimation2(e,t,i=!1){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast===-1&&r.animation===t?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));const o=this.trackEntry(e,t,i,r);return this.setTrack(e,o,n),this.queue.drain(),o}addAnimation(e,t,i=!1,n=0){return typeof t=="string"?this.addAnimation1(e,t,i,n):this.addAnimation2(e,t,i,n)}addAnimation1(e,t,i=!1,n=0){const r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error(`Animation not found: ${t}`);return this.addAnimation2(e,r,i,n)}addAnimation2(e,t,i=!1,n=0){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;const o=this.trackEntry(e,t,i,r);return r?(r.next=o,o.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-o.mixDuration,0))):(this.setTrack(e,o,!0),this.queue.drain(),n<0&&(n=0)),o.delay=n,o}setEmptyAnimation(e,t=0){const i=this.setAnimation(e,za.emptyAnimation,!1);return i.mixDuration=t,i.trackEnd=t,i}addEmptyAnimation(e,t=0,i=0){const n=this.addAnimation(e,za.emptyAnimation,!1,i);return i<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){const t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let i=0,n=this.tracks.length;i0&&(o[d]=v);break}}c&&(g=g&~mc|r[d]&mc),r[d]=g}}from(e,t,i){const n=this.propertyIds;let r=x3;for(let o=0,a=i.length;o= 0.");return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){const t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}};w(za,"emptyAnimation",new vp("",[],0));let Hv=za;class v3{constructor(){w(this,"animation",null);w(this,"previous",null);w(this,"next",null);w(this,"mixingFrom",null);w(this,"mixingTo",null);w(this,"listener",null);w(this,"trackIndex",0);w(this,"loop",!1);w(this,"additive",!1);w(this,"reverse",!1);w(this,"shortestRotation",!1);w(this,"keepHold",!1);w(this,"eventThreshold",0);w(this,"mixAttachmentThreshold",0);w(this,"alphaAttachmentThreshold",0);w(this,"mixDrawOrderThreshold",0);w(this,"animationStart",0);w(this,"animationEnd",0);w(this,"animationLast",0);w(this,"nextAnimationLast",0);w(this,"delay",0);w(this,"trackTime",0);w(this,"trackLast",0);w(this,"nextTrackLast",0);w(this,"trackEnd",0);w(this,"timeScale",0);w(this,"alpha",0);w(this,"mixTime",0);w(this,"mixDuration",0);w(this,"totalAlpha",0);w(this,"mixInterpolation",qo.linear);w(this,"timelineMode",[]);w(this,"timelineHoldMix",[]);w(this,"timelinesRotation",[])}setMixDuration(e,t){this.mixDuration=e,t!==void 0&&(t<=0&&(t=this.previous==null?0:Math.max(t+this.previous.getTrackComplete()-e,0)),this.delay=t)}setMixInterpolation(e){if(!e)throw new Error("mixInterpolation cannot be null.");this.mixInterpolation=e}mix(){if(this.mixDuration===0)return 1;let e=this.mixTime/this.mixDuration;return e>=1?1:this.mixInterpolation===qo.linear?e:(e=this.mixInterpolation.apply(e),e<0?0:e>1?1:e)}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.mixInterpolation=qo.linear,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(!this.loop)return Math.min(this.trackTime+this.animationStart,this.animationEnd);const e=this.animationEnd-this.animationStart;return e===0?this.animationStart:this.trackTime%e+this.animationStart}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){const e=this.animationEnd-this.animationStart;if(e!==0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}}class y3{constructor(e){w(this,"objects",[]);w(this,"drainDisabled",!1);w(this,"animState");this.animState=e}start(e){this.objects.push(Wi.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(Wi.interrupt),this.objects.push(e)}end(e){this.objects.push(Wi.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(Wi.dispose),this.objects.push(e)}complete(e){this.objects.push(Wi.complete),this.objects.push(e)}event(e,t){this.objects.push(Wi.event),this.objects.push(e),this.objects.push(t)}drain(){var e,t,i,n,r,o;if(!this.drainDisabled){this.drainDisabled=!0;for(let a=0;a= 0.");if(!i)throw new Error("name cannot be null.");this.index=t,this.parent=n}copy(t){const i=new hu(this.index,this.name,t);return i.length=this.length,i.setupPose.set(this.setupPose),i}}var Yt;(function(s){s[s.Normal=0]="Normal",s[s.OnlyTranslation=1]="OnlyTranslation",s[s.NoRotationOrReflection=2]="NoRotationOrReflection",s[s.NoScale=3]="NoScale",s[s.NoScaleOrReflection=4]="NoScaleOrReflection"})(Yt||(Yt={}));class mm{constructor(){w(this,"bone");w(this,"x",0);w(this,"y",0);w(this,"rotation",0);w(this,"scaleX",0);w(this,"scaleY",0);w(this,"shearX",0);w(this,"shearY",0);w(this,"inherit",Yt.Normal);w(this,"a",0);w(this,"b",0);w(this,"c",0);w(this,"d",0);w(this,"worldY",0);w(this,"worldX",0);w(this,"world",0);w(this,"local",0)}set(e){if(e==null)throw new Error("pose cannot be null.");this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}setPosition(e,t){this.x=e,this.y=t}setScale(e,t){this.scaleX=e,this.scaleY=t===void 0?e:t}getInherit(){return this.inherit}setInherit(e){if(e==null)throw new Error("inherit cannot be null.");this.inherit=e}update(e,t){this.world!==e._update&&this.updateWorldTransform(e)}updateWorldTransform(e){this.local===e._update?this.updateLocalTransform(e):this.world=e._update;const t=this.rotation,i=this.scaleX,n=this.scaleY,r=this.shearX,o=this.shearY;if(!this.bone.parent){const d=e.scaleX,f=e.scaleY,p=(t+r)*Ee.degRad,m=(t+90+o)*Ee.degRad;this.a=Math.cos(p)*i*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*i*f,this.d=Math.sin(m)*n*f,this.worldX=this.x*d+e.x,this.worldY=this.y*f+e.y;return}const a=this.bone.parent.appliedPose;let c=a.a,l=a.b,h=a.c,u=a.d;switch(this.worldX=c*this.x+l*this.y+a.worldX,this.worldY=h*this.x+u*this.y+a.worldY,this.inherit){case Yt.Normal:{const d=(t+r)*Ee.degRad,f=(t+90+o)*Ee.degRad,p=Math.cos(d)*i,m=Math.cos(f)*n,g=Math.sin(d)*i,v=Math.sin(f)*n;this.a=c*p+l*g,this.b=c*m+l*v,this.c=h*p+u*g,this.d=h*m+u*v;return}case Yt.OnlyTranslation:{const d=e.scaleX,f=e.scaleY,p=(t+r)*Ee.degRad,m=(t+90+o)*Ee.degRad;this.a=Math.cos(p)*i*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*i*f,this.d=Math.sin(m)*n*f;break}case Yt.NoRotationOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f;c*=p,h*=m;let g=c*c+h*h,v=0;g>Ee.epsilon2?(g=Math.abs(c*u*m-l*p*h)/g,l=h*g,u=c*g,v=t-Ee.atan2Deg(h,c)):(c=0,h=0,v=t-90+Ee.atan2Deg(u,l));const x=(v+r)*Ee.degRad,y=(v+o+90)*Ee.degRad,_=Math.cos(x)*i,C=Math.cos(y)*n,S=Math.sin(x)*i,b=Math.sin(y)*n;this.a=(c*_-l*S)*d,this.b=(c*C-l*b)*d,this.c=(h*_+u*S)*f,this.d=(h*C+u*b)*f;break}case Yt.NoScale:case Yt.NoScaleOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f,g=t*Ee.degRad,v=Math.cos(g),x=Math.sin(g);let y=(c*v+l*x)*p,_=(h*v+u*x)*m;const C=1/Math.sqrt(y*y+_*_);y*=C,_*=C;let S=-_,b=y;this.inherit===Yt.NoScale&&c*u-l*h<0!=(d<0!=f<0)&&(S=-S,b=-b);const M=r*Ee.degRad,I=(90+o)*Ee.degRad,F=Math.cos(M)*i,E=Math.cos(I)*n,k=Math.sin(M)*i,O=Math.sin(I)*n;this.a=(y*F+S*k)*d,this.b=(y*E+S*O)*d,this.c=(_*F+b*k)*f,this.d=(_*E+b*O)*f;break}}}updateLocalTransform(e){this.local=0,this.world=e._update;const t=e.scaleX,i=e.scaleY;if(!this.bone.parent){const v=1/t,x=1/i;this.x=(this.worldX-e.x)*v,this.y=(this.worldY-e.y)*x,this.set5(this.a*v,this.b*v,this.c*x,this.d*x,0);return}const n=this.bone.parent.appliedPose;let r=n.a,o=n.b,a=n.c,c=n.d;const l=r*c-o*a,h=1/(r*c-o*a),u=c*h,d=o*h,f=a*h,p=r*h,m=this.worldX-n.worldX,g=this.worldY-n.worldY;switch(this.x=m*u-g*d,this.y=g*p-m*f,this.inherit){case Yt.Normal:this.set5(u*this.a-d*this.c,u*this.b-d*this.d,p*this.c-f*this.a,p*this.d-f*this.b,0);break;case Yt.OnlyTranslation:{const v=1/t,x=1/i;this.set5(this.a*v,this.b*v,this.c*x,this.d*x,0);break}case Yt.NoRotationOrReflection:{const v=1/t,x=1/i;r*=v,a*=x;const y=this.a*v,_=this.b*v,C=this.c*x,S=this.d*x,b=1/(r*r+a*a),M=1/Math.abs(l*v*x);this.set5((r*y+a*C)*b,(r*_+a*S)*b,(r*C-a*y)*M,(r*S-a*_)*M,Ee.atan2Deg(a,r));break}case Yt.NoScale:case Yt.NoScaleOrReflection:{const v=1/t,x=1/i,y=this.a*v,_=this.b*v,C=this.c*x,S=this.d*x;let b=c*this.a-o*this.c,M=r*this.c-a*this.a;l<0&&(b=-b,M=-M);let I=Ee.atan2Deg(M,b);this.rotation=I,I*=Ee.degRad;const F=Math.cos(I),E=Math.sin(I);let k=(r*F+o*E)*v,O=(a*F+c*E)*x;const D=1/Math.sqrt(k*k+O*O);k*=D,O*=D;const $=this.inherit===Yt.NoScale&&l<0!=(t<0!=i<0)?-1:1;this.set4(k*y+O*C,k*_+O*S,(k*C-O*y)*$,(k*S-O*_)*$)}}}set4(e,t,i,n){const r=e*e+i*i,o=t*t+n*n;r>Ee.epsilon2?(this.shearX=Ee.atan2Deg(i,e),this.scaleX=Math.sqrt(r)):(this.shearX=0,this.scaleX=0),this.scaleY=Math.sqrt(o),o>Ee.epsilon2?(this.shearY=Ee.atan2Deg(n,t),e*n-t*i<0?(this.scaleY=-this.scaleY,this.shearY+=90):this.shearY-=90,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}set5(e,t,i,n,r){this.shearX=0;const o=e*e+i*i,a=t*t+n*n;if(o>Ee.epsilon2){const c=Ee.atan2Deg(i,e);this.rotation=c+r,this.scaleX=Math.sqrt(o),this.scaleY=Math.sqrt(a),a>Ee.epsilon2?(this.shearY=Ee.atan2Deg(n,t),e*n-t*i<0?(this.scaleY=-this.scaleY,this.shearY+=90-c):this.shearY-=90+c,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}else this.scaleX=0,this.scaleY=Math.sqrt(a),this.shearY=0,this.rotation=a>Ee.epsilon2?Ee.atan2Deg(n,t)-90+r:r}validateLocalTransform(e){this.local===e._update&&this.updateLocalTransform(e)}modifyLocal(e){this.local===e._update&&this.updateLocalTransform(e),this.world=0,this.resetWorld(e,e._update)}modifyWorld(e){const t=e._update;this.local=t,this.world=t,this.resetWorld(e,t)}resetWorld(e,t){const i=this.bone.children;for(let n=0,r=i.length;n1&&t.constrained(this.bones[1].bone)}isSourceActive(){return this.target.active}static apply(t,i,n,r,o,a,c,l,h,u){typeof n=="number"?Jn.apply1(t,i,n,r,o,a,c,l):Jn.apply2(t,i,n,r,o,a,c,l,h,u)}static apply1(t,i,n,r,o,a,c,l){i.modifyLocal(t);const h=i.bone.parent.appliedPose;let u=h.a,d=h.b,f=h.c,p=h.d,m=-i.shearX-i.rotation,g=0,v=0;switch(i.inherit){case Yt.OnlyTranslation:g=(n-i.worldX)*Ee.signum(t.scaleX),v=(r-i.worldY)*Ee.signum(t.scaleY);break;case Yt.NoRotationOrReflection:{const x=Math.abs(u*p-d*f)/Math.max(Ee.epsilon,u*u+f*f),y=u/t.scaleX,_=f/t.scaleY;d=-_*x*t.scaleX,p=y*x*t.scaleY,m+=Ee.atan2Deg(_,y)}default:{const x=n-h.worldX,y=r-h.worldY,_=u*p-d*f;Math.abs(_)<=Ee.epsilon?(g=0,v=0):(g=(x*p-y*d)/_-i.x,v=(y*u-x*f)/_-i.y)}}if(m+=Ee.atan2Deg(v,g),i.scaleX<0&&(m+=180),m>180?m-=360:m<=-180&&(m+=360),i.rotation+=m*l,o||a){switch(i.inherit){case Yt.NoScale:case Yt.NoScaleOrReflection:g=n-i.worldX,v=r-i.worldY}const x=i.bone.data.length*i.scaleX;if(x>Ee.epsilon){const y=g*g+v*v;if(o&&yx*x){const _=(Math.sqrt(y)/x-1)*l+1;switch(i.scaleX*=_,c){case Ni.Uniform:i.scaleY*=_;break;case Ni.Volume:i.scaleY/=_<.7?.25+.642857*_:_}}}}}static apply2(t,i,n,r,o,a,c,l,h,u){if(i.inherit!==Yt.Normal||n.inherit!==Yt.Normal)return;i.modifyLocal(t),n.modifyLocal(t);let d=i.x,f=i.y,p=i.scaleX,m=i.scaleY,g=n.scaleX,v=0,x=0,y=0;p<0?(p=-p,v=180,y=-1):(v=0,y=1),m<0&&(m=-m,y=-y),g<0?(g=-g,x=180):x=0;let _=0,C=0,S=i.a,b=i.b,M=i.c,I=i.d;const F=Math.abs(p-m)<=Ee.epsilon;!F||c?(n.y=0,_=S*n.x+i.worldX,C=M*n.x+i.worldY):(_=S*n.x+b*n.y+i.worldX,C=M*n.x+I*n.y+i.worldY);const E=i.bone.parent.appliedPose;S=E.a,b=E.b,M=E.c,I=E.d;let k=S*I-b*M,O=_-E.worldX,D=C-E.worldY;k=Math.abs(k)<=Ee.epsilon?0:1/k;const $=(O*I-D*b)*k-d,N=(D*S-O*M)*k-f;let U=Math.sqrt($*$+N*N),A=n.bone.data.length*g,P,L;if(U0){let re=Math.min(1,ne/(h*2))-1;re=(ne-h*(1-re*re))/W,B-=re*B,X-=re*X,V=B*B+X*X}}e:if(F){A*=p;let W=(V-U*U-A*A)/(2*U*A);if(W<-1)W=-1,L=Math.PI*a;else if(W>1){if(W=1,L=0,c)switch(S=(Math.sqrt(V)/(U+A)-1)*u+1,i.scaleX*=S,l){case Ni.Uniform:i.scaleY*=S;break;case Ni.Volume:i.scaleY/=S<.7?.25+.642857*S:S}}else L=Math.acos(W)*a;S=U+A*W,b=A*Math.sin(L),P=Math.atan2(X*S-B*b,B*S+X*b)}else{S=p*A,b=m*A;const W=S*S,ne=b*b,re=Math.atan2(X,B);M=ne*U*U+W*V-W*ne;const le=-2*ne*U,ue=ne-W;if(I=le*le-4*ue*M,I>=0){let fe=Math.sqrt(I);le<0&&(fe=-fe),fe=-(le+fe)*.5;let te=fe/ue,oe=M/fe;const ce=Math.abs(te)=0){D=Math.sqrt(te)*a,P=re-Math.atan2(D,ce),L=Math.atan2(D/m,(ce-U)/p);break e}}let ae=Ee.PI,xe=U-S,Y=xe*xe,j=0,H=0,G=U+S,z=G*G,ie=0;M=-S*U/(W-ne),M>=-1&&M<=1&&(M=Math.acos(M),O=S*Math.cos(M)+U,D=b*Math.sin(M),I=O*O+D*D,Iz&&(H=M,z=I,G=O,ie=D)),V<=(Y+z)*.5?(P=re-Math.atan2(j*a,xe),L=ae*a):(P=re-Math.atan2(ie*a,G),L=H*a)}const q=Math.atan2(n.y,n.x)*y;P=(P-q)*Ee.radDeg+v-i.rotation,P>180?P-=360:P<=-180&&(P+=360),i.rotation+=P*u,L=((L+q)*Ee.radDeg-n.shearX)*y+x-n.rotation,L>180?L-=360:L<=-180&&(L+=360),n.rotation+=L*u}}class Rc extends Ml{constructor(t){super(t,new pm);w(this,"bones",[]);w(this,"_target",null);w(this,"_scaleYMode",Ni.None)}set target(t){this._target=t}get target(){if(!this._target)throw new Error("target cannot be null.");return this._target}set scaleYMode(t){this._scaleYMode=t}get scaleYMode(){if(this._scaleYMode==null)throw new Error("scaleYMode cannot be null.");return this._scaleYMode}create(t){return new Jn(this,t)}}class gm{constructor(){w(this,"position",0);w(this,"spacing",0);w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0)}set(e){this.position=e.position,this.spacing=e.spacing,this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY}}class Pc extends Ml{constructor(t){super(t,new gm);w(this,"bones",[]);w(this,"_slot",null);w(this,"positionMode",on.Fixed);w(this,"spacingMode",ci.Fixed);w(this,"rotateMode",Qr.Chain);w(this,"offsetRotation",0)}set slot(t){this._slot=t}get slot(){if(this._slot)return this._slot;throw new Error("SlotData not set.")}create(t){return new vm(this,t)}}var on;(function(s){s[s.Fixed=0]="Fixed",s[s.Percent=1]="Percent"})(on||(on={}));var ci;(function(s){s[s.Length=0]="Length",s[s.Fixed=1]="Fixed",s[s.Percent=2]="Percent",s[s.Proportional=3]="Proportional"})(ci||(ci={}));var Qr;(function(s){s[s.Tangent=0]="Tangent",s[s.Chain=1]="Chain",s[s.ChainScale=2]="ChainScale"})(Qr||(Qr={}));const _s=class _s extends Tl{constructor(t,i){super(t,new gm,new gm);w(this,"data");w(this,"bones");w(this,"slot");w(this,"spaces",[]);w(this,"positions",[]);w(this,"world",[]);w(this,"curves",[]);w(this,"lengths",[]);w(this,"segments",[]);if(!i)throw new Error("skeleton cannot be null.");this.data=t,this.bones=[];for(const n of this.data.bones)this.bones.push(i.bones[n.index].constrainedPose);this.slot=i.slots[t.slot.index]}copy(t){var i=new _s(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.slot.appliedPose.attachment;if(!(n instanceof dl))return;const r=this.appliedPose,o=r.mixRotate,a=r.mixX,c=r.mixY;if(o===0&&a===0&&c===0)return;const l=this.data,h=l.rotateMode===Qr.Tangent,u=l.rotateMode===Qr.ChainScale,d=this.bones,f=d.length,p=h?f:f+1,m=Ye.setArraySize(this.spaces,p),g=u?this.lengths=Ye.setArraySize(this.lengths,f):[],v=r.spacing;switch(l.spacingMode){case ci.Percent:if(u)for(let b=0,M=p-1;b0){b=p/b*v;for(let M=1;M0?Ee.degRad:-Ee.degRad}for(let b=0,M=3;b0){let D=I.a,$=I.b,N=I.c,U=I.d,A=0,P=0,L=0;if(h?A=x[M-1]:m[b+1]===0?A=x[M+2]:A=Math.atan2(O,k),A-=Math.atan2(N,D),S){P=Math.cos(A),L=Math.sin(A);const B=I.bone.data.length;y+=(B*(P*D-L*N)-k)*o,_+=(B*(L*D+P*N)-O)*o}else A+=C;A>Ee.PI?A-=Ee.PI2:A<-Ee.PI&&(A+=Ee.PI2),A*=o,P=Math.cos(A),L=Math.sin(A),I.a=P*D-L*N,I.b=P*$-L*U,I.c=L*D+P*N,I.d=L*$+P*U}}}computeWorldPositions(t,i,n,r){const o=this.slot;let a=this.appliedPose.position,c=this.spaces,l=Ye.setArraySize(this.positions,n*3+2),h=this.world;const u=i.closed;let d=i.worldVerticesLength,f=d/6,p=_s.NONE;if(!i.constantSpeed){const L=i.lengths;f-=u?1:2;const B=L[f];this.data.positionMode===on.Percent&&(a*=B);let X;switch(this.data.spacingMode){case ci.Percent:X=B;break;case ci.Proportional:X=B/n;break;default:X=1}h=Ye.setArraySize(this.world,8);for(let V=0,q=0,W=0;VB){p!==_s.AFTER&&(p=_s.AFTER,i.computeWorldVertices(t,o,d-6,4,h,0,2)),this.addAfterPosition(re-B,h,0,l,q);continue}for(;;W++){const le=L[W];if(!(re>le)){if(W===0)re/=le;else{const ue=L[W-1];re=(re-ue)/(le-ue)}break}}W!==p&&(p=W,u&&W===f?(i.computeWorldVertices(t,o,d-4,4,h,0,2),i.computeWorldVertices(t,o,0,4,h,4,2)):i.computeWorldVertices(t,o,W*6+2,8,h,0,2)),this.addCurvePosition(re,h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],l,q,r||V>0&&ne===0)}return l}u?(d+=2,h=Ye.setArraySize(this.world,d),i.computeWorldVertices(t,o,2,d-4,h,0,2),i.computeWorldVertices(t,o,0,2,h,d-4,2),h[d-2]=h[0],h[d-1]=h[1]):(f--,d-=4,h=Ye.setArraySize(this.world,d),i.computeWorldVertices(t,o,2,d,h,0,2));const m=Ye.setArraySize(this.curves,f);let g=0,v=h[0],x=h[1],y=0,_=0,C=0,S=0,b=0,M=0,I=0,F=0,E=0,k=0,O=0,D=0,$=0,N=0;for(let L=0,B=2;Lg){this.addAfterPosition(W-g,h,d-4,l,B);continue}for(;;X++){const ne=m[X];if(!(W>ne)){if(X===0)W/=ne;else{const re=m[X-1];W=(W-re)/(ne-re)}break}}if(X!==p){p=X;let ne=X*6;for(v=h[ne],x=h[ne+1],y=h[ne+2],_=h[ne+3],C=h[ne+4],S=h[ne+5],b=h[ne+6],M=h[ne+7],I=(v-y*2+C)*.03,F=(x-_*2+S)*.03,E=((y-C)*3-v+b)*.006,k=((_-S)*3-x+M)*.006,O=I*2+E,D=F*2+k,$=(y-v)*.3+I+E*.16666667,N=(_-x)*.3+F+k*.16666667,P=Math.sqrt($*$+N*N),A[0]=P,ne=1;ne<8;ne++)$+=O,N+=D,O+=E,D+=k,P+=Math.sqrt($*$+N*N),A[ne]=P;$+=O,N+=D,P+=Math.sqrt($*$+N*N),A[8]=P,$+=O+E,N+=D+k,P+=Math.sqrt($*$+N*N),A[9]=P,V=0}for(W*=P;;V++){const ne=A[V];if(!(W>ne)){if(V===0)W/=ne;else{const re=A[V-1];W=V+(W-re)/(ne-re)}break}}this.addCurvePosition(W*.1,v,x,y,_,C,S,b,M,l,B,r||L>0&&q===0)}return l}addBeforePosition(t,i,n,r,o){const a=i[n],c=i[n+1],l=i[n+2]-a,h=i[n+3]-c,u=Math.atan2(h,l);r[o]=a+t*Math.cos(u),r[o+1]=c+t*Math.sin(u),r[o+2]=u}addAfterPosition(t,i,n,r,o){const a=i[n+2],c=i[n+3],l=a-i[n],h=c-i[n+1],u=Math.atan2(h,l);r[o]=a+t*Math.cos(u),r[o+1]=c+t*Math.sin(u),r[o+2]=u}addCurvePosition(t,i,n,r,o,a,c,l,h,u,d,f){if(t===0||Number.isNaN(t)){u[d]=i,u[d+1]=n,u[d+2]=Math.atan2(o-n,r-i);return}const p=t*t,m=p*t,g=1-t,v=g*g,x=v*g,y=g*t,_=y*3,C=g*_,S=_*t,b=i*x+r*C+a*S+l*m,M=n*x+o*C+c*S+h*m;u[d]=b,u[d+1]=M,f&&(t<.001?u[d+2]=Math.atan2(o-n,r-i):u[d+2]=Math.atan2(M-(n*v+o*y*2+c*p),b-(i*v+r*y*2+a*p)))}sort(t){const i=this.slot.data.index,n=this.slot.bone;t.skin!=null&&this.sortPathSlot(t,t.skin,i,n),t.data.defaultSkin!=null&&t.data.defaultSkin!==t.skin&&this.sortPathSlot(t,t.data.defaultSkin,i,n),this.sortPath(t,this.slot.pose.attachment,n);const r=this.bones,o=this.bones.length;for(let a=0;a0,a=this.data.y>0,c=this.data.rotate>0||this.data.shearX>0,l=this.data.scaleX>0,h=this.bone;let u=h.bone.data.length,d=this.data.step,f=0;if(i!==Ur.none){switch(h.modifyWorld(t),i){case Ur.reset:this.reset(t);case Ur.update:{const p=Math.max(t.time-this.lastTime,0),m=this.remaining;this.remaining+=p,this.lastTime=t.time;const g=h.worldX,v=h.worldY;if(this._reset)this._reset=!1,this.ux=g,this.uy=v;else{let x=this.remaining,y=n.inertia,_=t.data.referenceScale,C=-1,S=0,b=0,M=this.data.limit*p,I=M*Math.abs(t.scaleY);if(M*=Math.abs(t.scaleX),o||a){if(o){const F=(this.ux-g)*y;this.xOffset+=F>M?M:F<-M?-M:F,this.ux=g}if(a){const F=(this.uy-v)*y;this.yOffset+=F>I?I:F<-I?-I:F,this.uy=v}if(x>=d){const F=this.xOffset,E=this.yOffset;C=n.damping**(60*d),S=d*n.massInverse,b=n.strength;const k=_*n.wind,O=_*n.gravity,D=(k*t.windX+O*t.gravityX)*t.scaleX,$=(k*t.windY+O*t.gravityY)*t.scaleY;do o&&(this.xVelocity+=(D-this.xOffset*b)*S,this.xOffset+=this.xVelocity*d,this.xVelocity*=C),a&&(this.yVelocity-=($+this.yOffset*b)*S,this.yOffset+=this.yVelocity*d,this.yVelocity*=C),x-=d;while(x>=d);this.xLag=this.xOffset-F,this.yLag=this.yOffset-E}f=Math.max(0,1-x/d),o&&(h.worldX+=(this.xOffset-this.xLag*f)*r*this.data.x),a&&(h.worldY+=(this.yOffset-this.yLag*f)*r*this.data.y)}if(c||l){let F=Math.atan2(h.c,h.a),E=0,k=0,O=0,D=this.cx-h.worldX,$=this.cy-h.worldY;if(D>M?D=M:D<-M&&(D=-M),$>I?$=I:$<-I&&($=-I),x=this.remaining,c){O=(this.data.rotate+this.data.shearX)*r,f=this.rotateLag*Math.max(0,1-m/d);let N=Math.atan2($+this.ty,D+this.tx)-F-(this.rotateOffset-f)*O;this.rotateOffset+=(N-Math.ceil(N*Ee.invPI2-.5)*Ee.PI2)*y,N=(this.rotateOffset-f)*O+F,E=Math.cos(N),k=Math.sin(N),l&&(N=u*h.getWorldScaleX(),N>0&&(this.scaleOffset+=(D*E+$*k)*y/N))}else{E=Math.cos(F),k=Math.sin(F);const N=u*h.getWorldScaleX()-this.scaleLag*Math.max(0,1-m/d);N>0&&(this.scaleOffset+=(D*E+$*k)*y/N)}if(x>=d){C===-1&&(C=n.damping**(60*d),S=d*n.massInverse,b=n.strength);const N=n.wind*t.windX+n.gravity*t.gravityX,U=(n.wind*t.windY+n.gravity*t.gravityY)*bm.yDir,A=this.rotateOffset,P=this.scaleOffset,L=u/_;for(;;)if(x-=d,l&&(this.scaleVelocity+=(N*E-U*k-this.scaleOffset*b)*S,this.scaleOffset+=this.scaleVelocity*d,this.scaleVelocity*=C),c){if(this.rotateVelocity-=((N*k+U*E)*L+this.rotateOffset*b)*S,this.rotateOffset+=this.rotateVelocity*d,this.rotateVelocity*=C,x0){let x=0;this.data.rotate>0&&(x=p*this.data.rotate,m=Math.sin(x),g=Math.cos(x),v=h.b,h.b=g*v-m*h.d,h.d=m*v+g*h.d),x+=p*this.data.shearX,m=Math.sin(x),g=Math.cos(x),v=h.a,h.a=g*v-m*h.c,h.c=m*v+g*h.c}else p*=this.data.rotate,m=Math.sin(p),g=Math.cos(p),v=h.a,h.a=g*v-m*h.c,h.c=m*v+g*h.c,v=h.b,h.b=g*v-m*h.d,h.d=m*v+g*h.d}if(l){let p=1+(this.scaleOffset-this.scaleLag*f)*r*this.data.scaleX;switch(h.a*=p,h.c*=p,this.data.scaleYMode){case Ni.Uniform:h.b*=p,h.d*=p;break;case Ni.Volume:p=Math.abs(p),p=p>=.7?1/p:4-3.67347*p,h.b*=p,h.d*=p}}i!==Ur.pose&&(this.tx=u*h.a,this.ty=u*h.c)}}sort(t){const i=this.bone.bone;t.sortBone(i),t._updateCache.push(this),t.sortReset(i.children),t.constrained(i)}isSourceActive(){return this.bone.bone.active}}class kc extends Ml{constructor(t){super(t,new ym);w(this,"_bone",null);w(this,"x",0);w(this,"y",0);w(this,"rotate",0);w(this,"scaleX",0);w(this,"shearX",0);w(this,"limit",0);w(this,"step",0);w(this,"inertiaGlobal",!1);w(this,"strengthGlobal",!1);w(this,"dampingGlobal",!1);w(this,"massGlobal",!1);w(this,"windGlobal",!1);w(this,"gravityGlobal",!1);w(this,"mixGlobal",!1);w(this,"_scaleYMode",Ni.None)}set bone(t){this._bone=t}get bone(){if(this._bone)return this._bone;throw new Error("BoneData not set.")}get scaleYMode(){return this._scaleYMode}set scaleYMode(t){if(t==null)throw new Error("scaleYMode cannot be null.");this._scaleYMode=t}create(t){return new uu(this,t)}}typeof Math.fround>"u"&&(Math.fround=(s=>e=>(s[0]=e,s[0]))(new Float32Array(1)));class wm{constructor(){w(this,"time",0);w(this,"mix",0)}set(e){this.time=e.time,this.mix=e.mix}}const qa=class qa extends Tl{constructor(t,i){super(t,new wm,new wm);w(this,"bone",null);if(!i)throw new Error("skeleton cannot be null.");t.bone!=null&&(this.bone=i.bones[t.bone.index])}copy(t){var i=new qa(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.appliedPose;if(n.mix===0)return;const r=this.data,o=r.animation,a=this.bone;if(a!==null){if(!a.active)return;r.local&&a.appliedPose.validateLocalTransform(t),n.time=r.offset+(r.property.value(t,a.appliedPose,r.local,qa.offsets)-r.property.offset)*r.scale,r.loop?n.time=o.duration+n.time%o.duration:n.time=Math.max(0,n.time)}const c=t.bones,l=o.bones;for(let h=0,u=o.bones.length;h=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=i}addSkin(e){for(let i=0;i= 0.");if(!n)throw new Error("boneData cannot be null.");this.index=t,this.boneData=n}}var Th;(function(s){s[s.Normal=0]="Normal",s[s.Additive=1]="Additive",s[s.Multiply=2]="Multiply",s[s.Screen=3]="Screen"})(Th||(Th={}));class Tm{constructor(){w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0);w(this,"mixScaleX",0);w(this,"mixScaleY",0);w(this,"mixShearY",0)}set(e){this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY,this.mixScaleX=e.mixScaleX,this.mixScaleY=e.mixScaleY,this.mixShearY=e.mixShearY}}class Tp extends Tl{constructor(t,i){super(t,new Tm,new Tm);w(this,"bones");w(this,"source");if(!i)throw new Error("skeleton cannot be null.");this.bones=[];for(const r of t.bones)this.bones.push(i.bones[r.index].constrainedPose);const n=i.bones[t.source.index];if(n==null)throw new Error("source cannot be null.");this.source=n}copy(t){var i=new Tp(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.appliedPose;if(n.mixRotate===0&&n.mixX===0&&n.mixY===0&&n.mixScaleX===0&&n.mixScaleY===0&&n.mixShearY===0)return;const r=this.data,o=r.localSource,a=r.localTarget,c=r.additive,l=r.clamp,h=r.offsets,u=this.source.appliedPose;o&&u.validateLocalTransform(t);const d=r.properties,f=r.properties.length,p=this.bones;for(let m=0,g=this.bones.length;m0?n[xt.ROTATION]:-n[xt.ROTATION]);return a<0&&(a+=360),a}}class aS extends ca{mix(e){return e.mixRotate}apply(e,t,i,n,r,o){if(r)i.rotation+=(o?n:n-i.rotation)*t.mixRotate;else{const a=e.scaleX,c=e.scaleY,l=1/a,h=1/c,u=i.a*l,d=i.b*l,f=i.c*h,p=i.d*h;n*=Ee.degRad,o||(n-=Math.atan2(f,u)),n>Ee.PI?n-=Ee.PI2:n<-Ee.PI&&(n+=Ee.PI2),n*=t.mixRotate;const m=Math.cos(n),g=Math.sin(n);i.a=(m*u-g*f)*a,i.b=(m*d-g*p)*a,i.c=(g*u+m*f)*c,i.d=(g*d+m*p)*c}}}class Cm extends la{value(e,t,i,n){return i?t.x+n[xt.X]:(n[xt.X]*t.a+n[xt.Y]*t.b+t.worldX)/e.scaleX}}class lS extends ca{mix(e){return e.mixX}apply(e,t,i,n,r,o){r?i.x+=(o?n:n-i.x)*t.mixX:(o||(n-=i.worldX/e.scaleX),i.worldX+=n*t.mixX*e.scaleX)}}class Am extends la{value(e,t,i,n){return i?t.y+n[xt.Y]:(n[xt.X]*t.c+n[xt.Y]*t.d+t.worldY)/e.scaleY}}class cS extends ca{mix(e){return e.mixY}apply(e,t,i,n,r,o){r?i.y+=(o?n:n-i.y)*t.mixY:(o||(n-=i.worldY/e.scaleY),i.worldY+=n*t.mixY*e.scaleY)}}class Em extends la{value(e,t,i,n){if(i)return t.scaleX+n[xt.SCALEX];const r=t.a/e.scaleX,o=t.c/e.scaleY;return Math.sqrt(r*r+o*o)+n[xt.SCALEX]}}class hS extends ca{mix(e){return e.mixScaleX}apply(e,t,i,n,r,o){if(r)o?i.scaleX*=1+(n-1)*t.mixScaleX:i.scaleX!==0&&(i.scaleX+=(n-i.scaleX)*t.mixScaleX);else if(o){const a=1+(n-1)*t.mixScaleX;i.a*=a,i.c*=a}else{let a=i.a/e.scaleX,c=i.c/e.scaleY,l=Math.sqrt(a*a+c*c);l!==0&&(l=1+(n-l)*t.mixScaleX/l,i.a*=l,i.c*=l)}}}class Im extends la{value(e,t,i,n){if(i)return t.scaleY+n[xt.SCALEY];const r=t.b/e.scaleX,o=t.d/e.scaleY;return Math.sqrt(r*r+o*o)+n[xt.SCALEY]}}class uS extends ca{mix(e){return e.mixScaleY}apply(e,t,i,n,r,o){if(r)o?i.scaleY*=1+(n-1)*t.mixScaleY:i.scaleY!==0&&(i.scaleY+=(n-i.scaleY)*t.mixScaleY);else if(o){const a=1+(n-1)*t.mixScaleY;i.b*=a,i.d*=a}else{let a=i.b/e.scaleX,c=i.d/e.scaleY,l=Math.sqrt(a*a+c*c);l!==0&&(l=1+(n-l)*t.mixScaleY/l,i.b*=l,i.d*=l)}}}class Rm extends la{value(e,t,i,n){if(i)return t.shearY+n[xt.SHEARY];const r=1/e.scaleX,o=1/e.scaleY;return(Math.atan2(t.d*o,t.b*r)-Math.atan2(t.c*o,t.a*r))*Ee.radDeg-90+n[xt.SHEARY]}}class dS extends ca{mix(e){return e.mixShearY}apply(e,t,i,n,r,o){if(r)o||(n-=i.shearY),i.shearY+=n*t.mixShearY;else{const a=e.scaleX,c=e.scaleY,l=i.b/a,h=i.d/c,u=Math.atan2(h,l);n=(n+90)*Ee.degRad,o?n-=Ee.PI/2:(n-=u-Math.atan2(i.c/c,i.a/a),n>Ee.PI?n-=Ee.PI2:n<-Ee.PI&&(n+=Ee.PI2)),n=u+n*t.mixShearY;const d=Math.sqrt(l*l+h*h);i.b=Math.cos(n)*d*a,i.d=Math.sin(n)*d*c}}}class nX{constructor(e){w(this,"scale",1);w(this,"attachmentLoader");w(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,i=new rS;i.name="";const n=new w3(e),r=n.readInt32(),o=n.readInt32();i.hash=o===0&&r===0?null:o.toString(16)+r.toString(16),i.version=n.readString(),i.x=n.readFloat(),i.y=n.readFloat(),i.width=n.readFloat(),i.height=n.readFloat(),i.referenceScale=n.readFloat()*t;const a=n.readBoolean();a&&(i.fps=n.readFloat(),i.imagesPath=n.readString(),i.audioPath=n.readString());let c=0;c=n.readInt(!0);for(let p=0;p>5;for(let _=0,C;_>1&1,v.spacingMode=x>>2&3,v.rotateMode=x>>4&3,(x&128)!==0&&(v.offsetRotation=n.readFloat());const y=v.setupPose;y.position=n.readFloat(),v.positionMode===on.Fixed&&(y.position*=t),y.spacing=n.readFloat(),(v.spacingMode===ci.Length||v.spacingMode===ci.Fixed)&&(y.spacing*=t),y.mixRotate=n.readFloat(),y.mixX=n.readFloat(),y.mixY=n.readFloat(),h.push(v);break}case H3:{const v=new kc(m);v.bone=l[n.readInt(!0)];let x=n.readByte();if(v.skinRequired=(x&1)!==0,(x&2)!==0&&(v.x=n.readFloat()),(x&4)!==0&&(v.y=n.readFloat()),(x&8)!==0&&(v.rotate=n.readFloat()),(x&16)!==0){let _=n.readFloat();_<-2?(v.scaleYMode=Ni.Volume,_=-2-_):_<0&&(v.scaleYMode=Ni.Uniform,_=-1-_),v.scaleX=_}(x&32)!==0&&(v.shearX=n.readFloat()),v.limit=((x&64)!==0?n.readFloat():5e3)*t,v.step=1/n.readUnsignedByte();const y=v.setupPose;y.inertia=n.readFloat(),y.strength=n.readFloat(),y.damping=n.readFloat(),y.massInverse=(x&128)!==0?n.readFloat():1,y.wind=n.readFloat(),y.gravity=n.readFloat(),x=n.readByte(),(x&1)!==0&&(v.inertiaGlobal=!0),(x&2)!==0&&(v.strengthGlobal=!0),(x&4)!==0&&(v.dampingGlobal=!0),(x&8)!==0&&(v.massGlobal=!0),(x&16)!==0&&(v.windGlobal=!0),(x&32)!==0&&(v.gravityGlobal=!0),(x&64)!==0&&(v.mixGlobal=!0),y.mix=(x&128)!==0?n.readFloat():1,h.push(v);break}case j3:{const v=new Xr(m),x=n.readByte();if(v.skinRequired=(x&1)!==0,v.loop=(x&2)!==0,v.additive=(x&4)!==0,(x&8)!==0){const y=n.readFloat();a&&(x&64)!==0?v.max=y:v.setupPose.time=y}if((x&16)!==0&&(v.setupPose.mix=(x&32)!==0?n.readFloat():1),(x&64)!==0){v.local=(x&128)!==0,v.bone=l[n.readInt(!0)];const y=n.readFloat();let _=1;switch(n.readByte()){case 0:v.property=new Mm;break;case 1:{_=t,v.property=new Cm;break}case 2:{_=t,v.property=new Am;break}case 3:v.property=new Em;break;case 4:v.property=new Im;break;case 5:v.property=new Rm;break;default:continue}v.property.offset=y*_,v.offset=n.readFloat(),v.scale=n.readFloat()/_}h.push(v);break}}}const d=this.readSkin(n,i,!0,a);d&&(i.defaultSkin=d,i.skins.push(d));{let p=i.skins.length;for(Ye.setArraySize(i.skins,c=p+n.readInt(!0));p0){x=[];for(let b=0;b>4,e.readFloat())}r.push(F);break}}}}}const a=i.slots.length,c=e.readInt(!0);if(c>0){const f=new dr(c);for(let p=0;p0){const f=new ul(h);for(let p=0;p>>1^-(i&1)}readStringRef(){const e=this.readInt(!0);return e===0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let i=0;i>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),i+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),i+=3;break;default:t+=String.fromCharCode(n),i++}}return t}readFloat(){const e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!==0}}let S3=class{constructor(e,t,i,n,r,o){w(this,"source");w(this,"skinIndex");w(this,"slotIndex");w(this,"sourceIndex");w(this,"mesh");w(this,"inheritTimelines");this.mesh=e,this.skinIndex=t,this.slotIndex=i,this.sourceIndex=n,this.source=r,this.inheritTimelines=o}};class Jv{constructor(e=null,t,i=0){w(this,"bones");w(this,"vertices");w(this,"length");this.bones=e,this.vertices=t,this.length=i}}var vn;(function(s){s[s.Region=0]="Region",s[s.BoundingBox=1]="BoundingBox",s[s.Mesh=2]="Mesh",s[s.LinkedMesh=3]="LinkedMesh",s[s.Path=4]="Path",s[s.Point=5]="Point",s[s.Clipping=6]="Clipping"})(vn||(vn={}));function ei(s,e,t,i){t instanceof En?_3(s,e,t,i):T3(s,e,t,i)}function _3(s,e,t,i){let n=s.readFloat(),r=s.readFloat()*i;for(let o=0,a=0,c=t.getFrameCount()-1;t.setFrame(o,n,r),o!==c;o++){const l=s.readFloat(),h=s.readFloat()*i;switch(s.readByte()){case Gs:t.setStepped(o);break;case Hs:ut(s,t,a++,o,0,n,l,r,h,i)}n=l,r=h}e.push(t)}function T3(s,e,t,i){let n=s.readFloat(),r=s.readFloat()*i,o=s.readFloat()*i;for(let a=0,c=0,l=t.getFrameCount()-1;t.setFrame(a,n,r,o),a!==l;a++){const h=s.readFloat(),u=s.readFloat()*i,d=s.readFloat()*i;switch(s.readByte()){case Gs:t.setStepped(a);break;case Hs:ut(s,t,c++,a,0,n,h,r,u,i),ut(s,t,c++,a,1,n,h,o,d,i)}n=h,r=u,o=d}e.push(t)}function Qv(s,e){const t=s.readInt(!0);if(t===0)return null;const i=new Array(e).fill(-1),n=new Array(e-t);let r=0,o=0;for(let a=0;a=0;a--)i[a]===-1&&(i[a]=n[--o]);return i}function ut(s,e,t,i,n,r,o,a,c,l){e.setBezier(t,i,n,r,a,s.readFloat(),s.readFloat()*l,s.readFloat(),s.readFloat()*l,o,c)}const M3=0,C3=1,A3=2,E3=3,I3=4,R3=5,P3=6,k3=7,F3=8,O3=9,B3=10,L3=0,D3=1,N3=2,U3=3,$3=4,X3=5,V3=0,Y3=1,G3=2,H3=3,j3=4,W3=0,z3=1,q3=0,K3=1,Z3=2,J3=0,Q3=1,eO=2,tO=4,iO=5,sO=6,nO=7,rO=8,oO=0,aO=1,Gs=1,Hs=2;class lO{constructor(e){w(this,"attachmentLoader");w(this,"scale",1);w(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,i=new rS,n=typeof e=="string"?JSON.parse(e):e,r=n.skeleton;if(r&&(i.hash=r.hash,i.version=r.spine,i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height,i.referenceScale=Z(r,"referenceScale",100)*t,i.fps=r.fps,i.imagesPath=r.images??null,i.audioPath=r.audio??null),n.bones)for(let o=0;o0&&l.properties.push(S)}l.offsets[xt.ROTATION]=Z(o,"rotation",0),l.offsets[xt.X]=Z(o,"x",0)*t,l.offsets[xt.Y]=Z(o,"y",0)*t,l.offsets[xt.SCALEX]=Z(o,"scaleX",0),l.offsets[xt.SCALEY]=Z(o,"scaleY",0),l.offsets[xt.SHEARY]=Z(o,"shearY",0);const y=l.setupPose;d&&(y.mixRotate=Z(o,"mixRotate",1)),f&&(y.mixX=Z(o,"mixX",1)),p&&(y.mixY=Z(o,"mixY",y.mixX)),m&&(y.mixScaleX=Z(o,"mixScaleX",1)),g&&(y.mixScaleY=Z(o,"mixScaleY",y.mixScaleX)),v&&(y.mixShearY=Z(o,"mixShearY",1)),i.constraints.push(l);break}case"path":{const l=new Pc(a);l.skinRequired=c;for(let f=0;f0){const d=i.findConstraint(l,kc);if(!d)throw new Error(`Physics constraint not found: ${l}`);u=i.constraints.indexOf(d)}for(const d in h){const f=h[d];let p=f[0];if(!p)continue;const m=f.length;let g,v=0;if(d==="reset"){const x=new _h(m,u);for(let y=0;p!=null;p=f[y+1],y++)x.setFrame(y,Z(p,"time",0));r.push(x);continue}switch(d){case"inertia":g=new Ww(m,m,u);break;case"strength":g=new zw(m,m,u);break;case"damping":g=new qw(m,m,u);break;case"mass":g=new Kw(m,m,u);break;case"wind":g=new Zw(m,m,u);break;case"gravity":g=new Jw(m,m,u);break;case"mix":{v=1,g=new Qw(m,m,u);break}default:continue}Zi(r,f,g,v,1)}}if(e.slider)for(const l in e.slider){const h=e.slider[l],u=i.findConstraint(l,Xr);if(!u)throw new Error(`Slider not found: ${l}`);const d=i.constraints.indexOf(u);for(const f in h){const p=h[f];if(!p[0])continue;const g=p.length;switch(f){case"time":Zi(r,p,new eS(g,g,d),1,1);break;case"mix":Zi(r,p,new tS(g,g,d),1,1);break}}}if(e.attachments)for(const l in e.attachments){const h=e.attachments[l],u=i.findSkin(l);if(!u)throw new Error(`Skin not found: ${l}`);for(const d in h){const f=h[d],p=i.findSlot(d);if(!p)throw new Error(`Attachment slot not found: ${d}`);const m=p.index;for(const g in f){const v=f[g],x=u.getAttachment(m,g);if(!x)throw new Error(`Timeline attachment not found: ${g}`);for(const y in v){const _=v[y];let C=_[0];if(C){if(y==="deform"){const S=x.bones,b=x.vertices,M=S?b.length/3*2:b.length,I=new Xw(_.length,_.length,m,x);let F=Z(C,"time",0);for(let E=0,k=0;;E++){let O;const D=Z(C,"vertices",null);if(!D)O=S?Ye.newFloatArray(M):b;else{O=Ye.newFloatArray(M);const A=Z(C,"offset",0);if(Ye.arrayCopy(D,0,O,A,D.length),n!==1)for(let P=A,L=P+D.length;P=0;l--)r[l]===-1&&(r[l]=o[--c]);return r}function mt(s,e,t,i,n,r,o,a,c,l){if(s==="stepped")return e.setStepped(i),t;const h=n<<2,u=s[h],d=s[h+1]*l,f=s[h+2],p=s[h+3]*l;return e.setBezier(t,i,n,r,a,u,d,f,p,o,c),t+1}function Z(s,e,t){return s[e]!==void 0?s[e]:t}class hO{newRegionAttachment(e,t,i,n){return new ru(t,i)}newMeshAttachment(e,t,i,n){return new Sl(t,i)}newBoundingBoxAttachment(e,t){return new Ub(t)}newPathAttachment(e,t){return new hl(t)}newPointAttachment(e,t){return new Hb(t)}newClippingAttachment(e,t){return new Wo(t)}}class uO{sequence(e){for(let t=0;t!Number.isInteger(h)||h<0||h>=o))throw new Error(`拖尾网格“${e}”的三角形索引越界`);const a=Number(s.hull)||0;if(!Number.isInteger(a)||a<0||a>o)throw new Error(`拖尾网格“${e}”的外轮廓数量无效`);if(Array.isArray(s.edges)&&s.edges.some(h=>!Number.isInteger(h)||h<0||h>=o*2||h%2))throw new Error(`拖尾网格“${e}”的外轮廓边索引越界`);if(n.length===i.length)return;let c=0,l=0;for(;c=t)throw new Error(`拖尾网格“${e}”引用了不存在的骨骼`);if(![p,m,g].every(Number.isFinite)||g<0)throw new Error(`拖尾网格“${e}”包含无效权重数据`);u+=g}if(Math.abs(u-1)>.001)throw new Error(`拖尾网格“${e}”的顶点权重之和不为 1`);l++}if(c!==n.length||l!==o)throw new Error(`拖尾网格“${e}”的顶点数量与 UV 不一致`)}function mO(s,e){var r,o,a,c;const t=Array.isArray(s.bones)?s.bones:[],i=new Map(t.map(l=>[String(l.name||""),l])),n=new Set;for(const l of t){if(l.inherit!=null&&!dO.has(l.inherit))throw new Error(`骨骼“${l.name||""}”的 inherit 值“${l.inherit}”不符合 Spine ${e} JSON 格式`);if(/_particle_\d+_trail_/.test(String(l.name||""))){const h=i.get(String(l.parent||""));if(!h||/_particle_\d+_trail_/.test(String(h.name||"")))throw new Error(`拖尾骨骼“${l.name||""}”必须直接挂在粒子系统骨骼下,不能组成骨骼链`)}}for(const l of Array.isArray(s.skins)?s.skins:[]){const h=(l==null?void 0:l.attachments)||{};for(const u of Object.keys(h))for(const d of Object.keys(h[u]||{})){const f=h[u][d];(f==null?void 0:f.type)==="mesh"&&(fO(f,d,t.length),((r=f.vertices)==null?void 0:r.length)!==((o=f.uvs)==null?void 0:o.length)&&n.add(u))}}for(const l of Object.values(s.animations||{}))for(const h of n){const u=(c=(a=l==null?void 0:l.slots)==null?void 0:a[h])==null?void 0:c.attachment;if(Array.isArray(u)&&u.some(d=>!(d!=null&&d.name)))throw new Error(`加权拖尾插槽“${h}”不能使用空附件,未出现或死亡阶段应将对应骨骼缩放设为 0`)}}function pO(s){var e;if(String(((e=s==null?void 0:s.skeleton)==null?void 0:e.spine)||"")!=="3.8")throw new Error("Spine 3.8 导出的版本标识必须为 3.8");for(const t of s.bones||[])if(t.inherit!=null)throw new Error(`Spine 3.8 骨骼“${t.name||""}”应使用 transform,不能使用 inherit`);for(const t of Object.values(s.animations||{})){for(const n of Object.values(t.slots||{})){if(n.rgba||n.rgba2)throw new Error("Spine 3.8 插槽颜色时间轴必须使用 color / twoColor");for(const r of n.attachment||[])if(!Object.prototype.hasOwnProperty.call(r,"name"))throw new Error("Spine 3.8 附件时间轴的隐藏帧必须显式写入 name: null")}for(const n of Object.values(t.bones||{}))for(const r of n.rotate||[])if(r.value!=null||r.angle==null)throw new Error("Spine 3.8 旋转时间轴必须使用 angle");const i=[t];for(;i.length;){const n=i.pop();if(!(!n||typeof n!="object")){if(!Array.isArray(n)&&Array.isArray(n.curve))throw new Error("Spine 3.8 不支持 4.x 数组曲线格式");i.push(...Object.values(n))}}}}function ty(s,e){var o;const t=JSON.parse(s),i=ah((o=t==null?void 0:t.skeleton)==null?void 0:o.spine);if(!i)throw new Error(`导出版本不受支持,仅支持 Spine ${im()}`);if(e&&i!==e)throw new Error(`导出版本不一致:设置为 Spine ${e},JSON 标记为 Spine ${i}`);mO(t,i),i==="3.8"&&pO(t);const n=i==="3.8"?nw(JSON.parse(JSON.stringify(t))):t,r=i==="4.3"?new lO(new uO).readSkeletonData(n):new fh(new hO).readSkeletonData(n);if(!r.bones.length)throw new Error("导出结果缺少骨骼");return{version:i,bones:r.bones.length,slots:r.slots.length,animations:r.animations.length}}const fS="http://127.0.0.1:27843";class Mh extends Error{constructor(t,i="CONNECTOR_ERROR",n){super(t);w(this,"code");w(this,"pairUrl");this.name="SpineConnectorError",this.code=i,this.pairUrl=n}}function Pm(s,e){return String(s||"").trim().replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||e}function gO(s,e){const t=/\.([a-z0-9]{2,5})$/i.exec(s);return t?`.${t[1].toLowerCase()}`:e.includes("jpeg")?".jpg":e.includes("webp")?".webp":e.includes("gif")?".gif":".png"}function vO(s,e,t){const i=String(s||"").replace(/\\/g,"/").split("/").filter(Boolean).map(r=>Pm(r,"images")),n=Pm(e.replace(/\.[^./\\]+$/,""),"image");return[...i,`${n}${gO(e,t)}`].join("/")}async function rf(s,e,t){if(!s)return null;const i=await fetch(s);if(!i.ok)throw new Error(`无法读取导出图片:${t}`);const n=await i.blob(),r=new Uint8Array(await n.arrayBuffer());let o="";const a=32768;for(let c=0;co.finally(()=>{i++,e==null||e(i,t.length)});for(const o of s.filter(a=>a.visible!==!1)){for(const a of o.config.imageResources)if(a.imageMode==="sequence"&&a.sequenceFrames.length)for(const c of a.sequenceFrames)t.push(n(rf(c.previewUrl,a.textureFolder,c.name||a.textureName)));else t.push(n(rf(a.previewUrl,a.textureFolder,a.textureName)));if(o.config.trail)for(const a of o.config.trailResources)t.push(n(rf(a.previewUrl,"",a.textureName)))}const r=new Map;for(const o of await Promise.all(t))o&&!r.has(o.path)&&r.set(o.path,o);return[...r.values()]}async function yO(){try{const s=await fetch(`${fS}/v1/health`,{cache:"no-store"});if(!s.ok)throw new Error(`HTTP ${s.status}`);return{available:!0,...await s.json()}}catch(s){return{available:!1,authorized:!1,error:s instanceof Error?s.message:String(s)}}}async function xO(s,e){const t=await mS(s.systems,(n,r)=>{e==null||e({phase:"images",progress:r?n/r:1})}),i=JSON.stringify({schemaVersion:1,projectName:s.projectName,spineVersion:s.spineVersion,skeletonJson:s.skeletonJson,images:t});return new Promise((n,r)=>{const o=new XMLHttpRequest;o.open("POST",`${fS}/v1/convert`),o.responseType="blob",o.setRequestHeader("Content-Type","application/json"),o.upload.onprogress=a=>{e==null||e({phase:"upload",progress:a.lengthComputable&&a.total>0?a.loaded/a.total:null})},o.upload.onloadend=()=>e==null?void 0:e({phase:"processing",progress:null}),o.onprogress=a=>{e==null||e({phase:"download",progress:a.lengthComputable&&a.total>0?a.loaded/a.total:null})},o.onerror=()=>r(new Mh("未检测到本地 Spine 连接器,请先启动连接器","CONNECTOR_OFFLINE")),o.onload=async()=>{const a=o.response;if(o.status<200||o.status>=300){let h={};try{h=JSON.parse(await a.text())}catch{}r(new Mh(h.message||`Spine 连接器返回错误:HTTP ${o.status}`,h.code,h.pairUrl));return}const c=o.getResponseHeader("X-Spine-File-Name");let l=`${Pm(s.projectName,"SpineParticle")}.zip`;if(c)try{l=decodeURIComponent(c)}catch{}n({blob:a,fileName:l,spineEditorVersion:o.getResponseHeader("X-Spine-Editor-Version")||s.spineVersion,imageCount:t.length})},o.send(i)})}function bO(s,e){const t=URL.createObjectURL(s),i=document.createElement("a");i.href=t,i.download=/\.zip$/i.test(e)?e:`${e}.zip`,i.style.display="none",document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}const wO=Array.from({length:256},(s,e)=>{let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;return t>>>0});function SO(s){let e=4294967295;for(const t of s)e=wO[(e^t)&255]^e>>>8;return(e^4294967295)>>>0}function _O(s){const e=String(s||"").replace(/\\/g,"/").split("/").filter(t=>t&&t!==".");if(!e.length||e.some(t=>t===".."))throw new Error("ZIP 文件路径无效");return e.join("/")}function TO(s=new Date){const e=Math.max(1980,s.getFullYear());return{time:s.getHours()<<11|s.getMinutes()<<5|Math.floor(s.getSeconds()/2),date:e-1980<<9|s.getMonth()+1<<5|s.getDate()}}function of(s){const e=new Uint8Array(s);return{bytes:e,view:new DataView(e.buffer)}}function iy(s){const e=new Uint8Array(s.reduce((i,n)=>i+n.length,0));let t=0;for(const i of s)e.set(i,t),t+=i.length;return e}function MO(s){const e=new TextEncoder,t=[],i=[],n=TO();let r=0;for(const c of s){const l=e.encode(_O(c.name)),h=SO(c.data),u=of(30);u.view.setUint32(0,67324752,!0),u.view.setUint16(4,20,!0),u.view.setUint16(6,2048,!0),u.view.setUint16(10,n.time,!0),u.view.setUint16(12,n.date,!0),u.view.setUint32(14,h,!0),u.view.setUint32(18,c.data.length,!0),u.view.setUint32(22,c.data.length,!0),u.view.setUint16(26,l.length,!0),t.push(u.bytes,l,c.data);const d=of(46);d.view.setUint32(0,33639248,!0),d.view.setUint16(4,20,!0),d.view.setUint16(6,20,!0),d.view.setUint16(8,2048,!0),d.view.setUint16(12,n.time,!0),d.view.setUint16(14,n.date,!0),d.view.setUint32(16,h,!0),d.view.setUint32(20,c.data.length,!0),d.view.setUint32(24,c.data.length,!0),d.view.setUint16(28,l.length,!0),d.view.setUint32(42,r,!0),i.push(d.bytes,l),r+=u.bytes.length+l.length+c.data.length}const o=iy(i),a=of(22);return a.view.setUint32(0,101010256,!0),a.view.setUint16(8,s.length,!0),a.view.setUint16(10,s.length,!0),a.view.setUint32(12,o.length,!0),a.view.setUint32(16,r,!0),new Blob([iy([...t,o,a.bytes])],{type:"application/zip"})}function CO(s){const e=atob(s),t=new Uint8Array(e.length);for(let i=0;ii===".."||/^[a-z]+:/i.test(i))?"images":t.join("/")}function EO(s){return String(s||"SpineParticle").replace(/\.json$/i,"").replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||"SpineParticle"}async function IO(s){const e=await mS(s.systems);if(!e.length)throw new Error("当前可见粒子系统没有可导出的图片");const t=AO(s.imagesPath);return{blob:MO(e.map(n=>({name:`${t}/${n.path}`,data:CO(n.dataBase64)}))),imageCount:e.length,folder:t}}function RO(s,e){const t=`${EO(e)}-images.zip`,i=URL.createObjectURL(s),n=document.createElement("a");return n.href=i,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3),t}function PO(s){s.settings.exportSettings=Q1(s.settings.exportSettings);const e=qe(()=>s.settings.exportSettings),t=Ge(!1),i=Ge(null),n=Ge(""),r=Ge(!1),o=Ge(null),a=Ge(""),c=Ge(""),l=qe(()=>{const b=o.value;return b?b.available?b.spineFound?b.authorized?"连接器可用 · Spine 已就绪":"连接器已启动,当前网站尚未授权":"连接器已启动,但未找到 Spine":"本地 Spine 连接器未启动":"正在检测本地 Spine 连接器…"}),h=qe(()=>{var b,M,I,F,E,k;return{ready:!!((b=o.value)!=null&&b.available)&&!!((M=o.value)!=null&&M.spineFound)&&!!((I=o.value)!=null&&I.authorized),warning:!!((F=o.value)!=null&&F.available)&&(!((E=o.value)!=null&&E.spineFound)||!((k=o.value)!=null&&k.authorized))}}),u=qe(()=>{var b,M,I;return!!((b=o.value)!=null&&b.available)&&!!((M=o.value)!=null&&M.spineFound)&&!!((I=o.value)!=null&&I.authorized)}),d=qe(()=>{const b=o.value;return!(b!=null&&b.available)||!b.spineFound||b.authorized||typeof window>"u"?"":`http://127.0.0.1:27843/pair?origin=${encodeURIComponent(window.location.origin)}`}),f=qe(()=>{const b=o.value;return b?b.available?b.spineFound?b.authorized?"":"未授权":"未找到 Spine":"未启动":"检测中"}),p=qe(()=>t.value?"正在重新计算并生成 Spine 工程":f.value?`暂不可用:${f.value}`:`调用本机 Spine 自动生成 ${e.value.spineVersion} 工程`);Vn(()=>{v(),m=window.setInterval(v,3e3)});let m,g=0;pl(()=>{m!==void 0&&window.clearInterval(m)});async function v(){const b=++g,M=await yO();if(b!==g)return;o.value=M;const I=c.value;(I==="CONNECTOR_OFFLINE"?M.available:I==="SPINE_NOT_FOUND"?M.available&&M.spineFound:I==="ORIGIN_NOT_ALLOWED"?M.available&&M.spineFound&&M.authorized:!!I&&M.available&&M.spineFound&&M.authorized)&&(c.value="",a.value="",r.value&&(r.value=!1,n.value=""))}function x(){return new Promise(b=>requestAnimationFrame(()=>b()))}async function y(b){s.timeline.playing=!1,s.timeline.frame=0,s.timeline.recorded=!1;for(const F of s.systems)F.frames=void 0;s.recalcTotalFrames(),await x(),s.timeline.playing=!0;const M=s.timeline.totalFrames/Math.max(1,s.timeline.fps)*1e3,I=performance.now()+Math.max(8e3,M*2.5+3e3);for(;!s.timeline.recorded;){if(performance.now()>I)throw new Error("重新计算动画超时,请确认页面仍在运行后重试");b==null||b(Math.min(.98,s.timeline.frame/Math.max(1,s.timeline.totalFrames-1))),await new Promise(F=>setTimeout(F,50))}b==null||b(1)}async function _(){if(!t.value){t.value=!0,i.value="json",r.value=!1,c.value="",a.value="",n.value="正在重新计算粒子动画…";try{await y();const b=Yv({systems:s.systems,timeline:s.timeline,settings:e.value});ty(b.text,e.value.spineVersion),a3(b,e.value.fileName);const M=b.warnings.length?`;${b.warnings.length} 条资源提示(缺图仍已导出)`:"";n.value=`已导出 Spine ${e.value.spineVersion}:${b.particleSystemCount} 个粒子系统、${b.animationCount} 个动画、${b.boneCount} 根骨骼${M}`}catch(b){r.value=!0,n.value=b instanceof Error?b.message:String(b)}finally{t.value=!1,i.value=null}}}async function C(){if(t.value)return;t.value=!0,i.value="spine",r.value=!1,c.value="",a.value="",n.value="正在重新计算粒子动画…";const b=yw("导出 Spine 包","正在重新计算粒子动画…");try{await b.paint(),await y(E=>b.update(E*18,"正在重新计算粒子动画…")),b.update(20,"正在生成 Spine JSON…");const M=Yv({systems:s.systems,timeline:s.timeline,settings:e.value});ty(M.text,e.value.spineVersion),n.value="正在整理图片并调用本机 Spine…";const I=e.value.fileName.replace(/\.json$/i,"")||"SpineParticle",F=await xO({projectName:I,spineVersion:e.value.spineVersion,skeletonJson:M.text,systems:s.systems},({phase:E,progress:k})=>{E==="images"?b.update(k==null?null:22+k*18,"正在整理工程图片…"):E==="upload"?b.update(k==null?null:40+k*30,"正在上传数据到 Spine 连接器…"):E==="processing"?b.update(null,"Spine 正在转换工程,请稍候…"):b.update(k==null?null:82+k*16,"正在下载生成的 Spine 工程包…")});b.update(99,"正在交给浏览器下载…"),bO(F.blob,F.fileName),n.value=`已生成 ${F.fileName}:包含 .spine 工程和 ${F.imageCount} 张图片,Spine ${F.spineEditorVersion}`,await v(),await b.finish("Spine 工程包已开始下载")}catch(M){const I=M instanceof Error?M.message:String(M);r.value=!0,c.value=M instanceof Mh?M.code:"",M instanceof Mh&&M.pairUrl&&(a.value=M.pairUrl),n.value=I,await v(),await b.fail(I)}finally{t.value=!1,i.value=null}}async function S(){if(!t.value){t.value=!0,i.value="images",r.value=!1,c.value="",a.value="",n.value="正在整理当前粒子系统使用的图片…";try{const b=await IO({systems:s.systems,imagesPath:e.value.imagesPath}),M=RO(b.blob,e.value.fileName);n.value=`已生成 ${M}:${b.folder}/ 内包含 ${b.imageCount} 张图片`}catch(b){r.value=!0,n.value=b instanceof Error?b.message:String(b)}finally{t.value=!1,i.value=null}}}return{exportSettings:e,exportBusy:t,exportTarget:i,exportMessage:n,exportError:r,connectorHealth:o,connectorPairUrl:a,connectorExportErrorCode:c,connectorStatusText:l,connectorStatusClass:h,connectorReady:u,connectorAuthorizationUrl:d,connectorDisabledReason:f,connectorButtonTitle:p,connectorHealthTimer:m,connectorHealthRequestId:g,refreshConnectorHealth:v,nextPaint:x,prepareExportFrames:y,exportSpineJson:_,exportSpineProject:C,exportSpineImages:S}}function kO(s){const e=Ge(null),t=Ge(""),i=Ge([]),n=Ge(!1),r=Ge(""),o=Ge(!1);function a(){hw(s),o.value=!1,r.value="配置已保存到本地"}async function c(u){var p;const d=u.target,f=(p=d.files)==null?void 0:p[0];if(f){r.value="正在加载配置…",o.value=!1;try{await KP(s,f),r.value=`已加载:${f.name}`}catch(m){o.value=!0,r.value=m instanceof Error?m.message:String(m)}finally{d.value=""}}}async function l(){try{const u=await fetch(`/Preset/index.json?t=${Date.now()}`,{cache:"no-store"});if(!u.ok)throw new Error("无法读取预设列表");const d=await u.json();i.value=Array.isArray(d)?d.filter(f=>!!f&&typeof f.name=="string"&&typeof f.file=="string"):[]}catch{i.value=[]}}async function h(){const u=t.value;if(!u)return;n.value=!0,o.value=!1,r.value="正在加载预设…";const d=yw("加载预设",`正在下载 ${u}…`);try{await d.paint();const f=await fetch(`/Preset/${encodeURIComponent(u)}`,{cache:"no-store"});if(!f.ok)throw new Error(`无法读取预设:${u}`);const p=await BF(f,m=>{d.update(m==null?null:m*55,`正在下载 ${u}…`)});d.update(58,"正在解析预设配置…"),d.update(70,"正在解析并恢复预设资源…"),await dw(s,p),r.value=`已加载预设:${u.replace(/\.json$/i,"")}`,await d.finish("预设加载完成")}catch(f){o.value=!0;const p=f instanceof Error?f.message:String(f);r.value=`${p},请检查预设文件命名`,await d.fail(p)}finally{n.value=!1,t.value=""}}return Vn(l),{configFileInput:e,selectedPreset:t,presetOptions:i,presetLoading:n,configMessage:r,configError:o,saveConfig:a,onConfigFileChange:c,refreshPresets:l,loadSelectedPreset:h}}function FO(s){const e=Ge(null),t=Ge(null),i=Ge(null),n=Ge(null),r=Ge(null);function o(){var B;const P=(B=s.value)==null?void 0:B.config;if(!P)return;const L=Math.max(0,...P.trailResources.map(X=>X.id))+1;P.trailResources.push({id:L,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:um.map(X=>({...X})),boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:cm.map(X=>({...X})),shapeEnabled:!1,shapeCurve:dm.map(X=>({...X}))}),p()}function a(P){var L;r.value=P,(L=n.value)==null||L.click()}function c(P,L){var V;const B=(V=s.value)==null?void 0:V.config;if(!B)return;const X=P==="trailGridCols"?32:16;B[P]=Math.min(X,Math.max(2,Math.round(Number(L)||2)))}function l(P,L){var X;const B=(X=s.value)==null?void 0:X.config.trailResources.find(V=>V.id===P);B&&(B.boneCount=Math.min(16,Math.max(2,Math.round(Number(L)||2))))}function h(P,L){var X;const B=(X=s.value)==null?void 0:X.config.trailResources.find(V=>V.id===P);B&&(B.rotation=Math.max(-360,Math.min(360,Number(L)||0)))}async function u(P){var W,ne;const L=P.target,B=(W=L.files)==null?void 0:W[0],X=(ne=s.value)==null?void 0:ne.config,V=X==null?void 0:X.trailResources.find(re=>re.id===r.value);if(!B||!V){L.value="";return}const q=await M(B);V.texture=nr(await ze.fromURL(q)),V.previewUrl=q,V.textureName=B.name.replace(/\.[^.]+$/,"")||"trail",L.value="",r.value=null}async function d(P){var X;const L=(X=s.value)==null?void 0:X.config,B=L==null?void 0:L.trailResources.find(V=>V.id===P);B&&(B.texture=nr(await ze.fromURL("/images/trail.png")),B.previewUrl="/images/trail.png",B.textureName="trail",B.weight=100,B.locked=!1,B.rotation=0,B.boneCount=3,B.trailRatio=100,B.lengthMode="fixed",B.length=100,B.lengthMin=100,B.lengthMax=100,B.widthSizeMode="fixed",B.width=100,B.widthMin=100,B.widthMax=100,B.widthMode="particle",B.lifeLengthEnabled=!1,B.lifeLengthCurve=cm.map(V=>({...V})),B.shapeEnabled=!1,B.shapeCurve=dm.map(V=>({...V})),B.colorMode="particle",B.color="#ffffff",B.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],B.blend="normal",B.alphaMode="particle",B.alpha=1,B.alphaCurve=um.map(V=>({...V})),p())}function f(P){var X;const L=(X=s.value)==null?void 0:X.config.trailResources;if(!L||L.length<=1)return;const B=L.findIndex(V=>V.id===P);B>=0&&L.splice(B,1),p()}function p(){var V;const P=(V=s.value)==null?void 0:V.config.trailResources;if(!(P!=null&&P.length))return;if(P.length===1){P[0].weight=100,P[0].locked=!1;return}const L=P.filter(q=>q.locked),B=P.filter(q=>!q.locked);let X=L.reduce((q,W)=>q+Math.max(0,Number(W.weight)||0),0);X>100&&($(L,100,!0),X=100),$(B,100-X)}function m(P,L){var ne;const B=(ne=s.value)==null?void 0:ne.config.trailResources;if(!(B!=null&&B.length))return;if(B.length===1){B[0].weight=100,B[0].locked=!1;return}const X=B.find(re=>re.id===P);if(!X||X.locked)return;const V=B.filter(re=>re.id!==P&&re.locked).reduce((re,le)=>re+Math.max(0,Number(le.weight)||0),0),q=Math.max(0,100-V),W=B.filter(re=>re.id!==P&&!re.locked);X.weight=D(Math.min(q,Math.max(0,Number(L)||0))),W.length?$(W,q-X.weight,!0):X.weight=D(q)}function g(P){var X;const L=(X=s.value)==null?void 0:X.config.trailResources;if(!L||L.length===1)return;const B=L.find(V=>V.id===P);B&&(B.locked=!B.locked)}function v(P,L){const B=L.target;P.color=F(B.value,P.color),B.value=P.color}function x(P,L){v(P,L),L.target.blur()}function y(){var B;const P=(B=s.value)==null?void 0:B.config;if(!P)return;const L=Math.max(0,...P.imageResources.map(X=>X.id))+1;P.imageResources.push({id:L,texture:P.texture,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:hm.map(X=>({...X}))}),N()}function _(P){var L;i.value=P,(L=e.value)==null||L.click()}function C(P){var L;i.value=P,(L=t.value)==null||L.click()}async function S(P){var ne,re;const L=P.target,B=(ne=L.files)==null?void 0:ne[0],X=(re=s.value)==null?void 0:re.config,V=X==null?void 0:X.imageResources.find(le=>le.id===i.value);if(!B||!V){L.value="";return}const q=await M(B),W=nr(await ze.fromURL(q));V.texture=W,V.previewUrl=q,V.textureFolder="",V.textureName=B.name.replace(/\.[^.]+$/,"")||"particle",L.value="",i.value=null}async function b(P){var q;const L=P.target,B=Array.from(L.files||[]).sort((W,ne)=>W.name.localeCompare(ne.name,void 0,{numeric:!0,sensitivity:"base"})),X=(q=s.value)==null?void 0:q.config,V=X==null?void 0:X.imageResources.find(W=>W.id===i.value);if(!B.length||!V){L.value="";return}V.sequenceFrames=await Promise.all(B.map(async W=>{const ne=await M(W);return{name:W.name,previewUrl:ne,texture:nr(await ze.fromURL(ne))}})),V.imageMode="sequence",L.value="",i.value=null}function M(P){return new Promise((L,B)=>{const X=new FileReader;X.onload=()=>L(String(X.result||"")),X.onerror=()=>B(X.error),X.readAsDataURL(P)})}function I(P){var X;const L=(X=s.value)==null?void 0:X.config,B=L==null?void 0:L.imageResources.find(V=>V.id===P);!L||!B||(B.texture=L.texture,B.textureName="star",B.textureFolder="",B.previewUrl="/images/star.png",B.imageMode="fixed",B.sequencePlayback="loop-forward",B.sequenceFps=30,B.sequenceFrames=[],B.scale=1,B.anchorX=.5,B.anchorY=.5,B.colorMode="fixed",B.colorStart="#ffffff",B.colorEnd="#ff4d4d",B.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],B.blend="normal",B.independentAlpha="off",B.alpha=1,B.alphaCurveMode="跟随导出",B.alphaCurve=hm.map(V=>({...V})),B.locked=!1,N())}function F(P,L){let B=P.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(B)&&(B=B.split("").map(X=>X+X).join("")),/^[0-9a-f]{6}$/i.test(B)?`#${B.toLowerCase()}`:L}function E(P,L){const B=L.target;P.colorStart=F(B.value,P.colorStart),B.value=P.colorStart}function k(P,L){E(P,L),L.target.blur()}function O(P){var X;const L=(X=s.value)==null?void 0:X.config.imageResources;if(!L||L.length<=1)return;const B=L.findIndex(V=>V.id===P);B>=0&&L.splice(B,1),N()}function D(P){return Math.round(P)}function $(P,L,B=!1){if(!P.length)return;const X=Math.max(0,D(L)),V=B?P.reduce((W,ne)=>W+Math.max(0,Number(ne.weight)||0),0):0;let q=0;P.forEach((W,ne)=>{const re=ne===P.length-1,le=D(re?X-q:V>0?X*Math.max(0,Number(W.weight)||0)/V:X/P.length);W.weight=le,q+=le})}function N(){var V;const P=(V=s.value)==null?void 0:V.config.imageResources;if(!(P!=null&&P.length))return;if(P.length===1){P[0].weight=100,P[0].locked=!1;return}const L=P.filter(q=>q.locked),B=P.filter(q=>!q.locked);let X=L.reduce((q,W)=>q+Math.max(0,Number(W.weight)||0),0);X>100&&($(L,100,!0),X=100),$(B,100-X)}function U(P,L){var ne;const B=(ne=s.value)==null?void 0:ne.config.imageResources;if(!(B!=null&&B.length))return;if(B.length===1){B[0].weight=100,B[0].locked=!1;return}const X=B.find(re=>re.id===P);if(!X||X.locked)return;const V=B.filter(re=>re.id!==P&&re.locked).reduce((re,le)=>re+Math.max(0,Number(le.weight)||0),0),q=Math.max(0,100-V),W=B.filter(re=>re.id!==P&&!re.locked);if(X.weight=D(Math.min(q,Math.max(0,Number(L)||0))),!W.length){X.weight=D(q);return}$(W,q-X.weight,!0)}function A(P){var X;const L=(X=s.value)==null?void 0:X.config.imageResources;if(!L||L.length===1)return;const B=L.find(V=>V.id===P);B&&(B.locked=!B.locked)}return{textureFileInput:e,sequenceFileInput:t,pendingResourceId:i,trailTextureFileInput:n,pendingTrailResourceId:r,addTrailResource:o,openTrailTexturePicker:a,onTrailRigChange:c,onTrailResourceBoneCountChange:l,onTrailResourceRotationChange:h,onTrailTextureFile:u,resetTrailTexture:d,removeTrailResource:f,rebalanceTrailWeights:p,setTrailResourceWeight:m,toggleTrailResourceLock:g,setTrailColor:v,commitTrailColor:x,addImageResource:y,openTexturePicker:_,openSequencePicker:C,onTextureFile:S,onSequenceFiles:b,readFileAsDataUrl:M,resetTexture:I,normalizeHex:F,setResourceFixedColor:E,commitResourceFixedColor:k,removeImageResource:O,roundWeight:D,distributeImageWeights:$,rebalanceImageWeights:N,setResourceWeight:U,toggleResourceLock:A}}function OO(){const s=ao(),{exportSettings:e,exportBusy:t,exportTarget:i,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:c,connectorReady:l,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g}=PO(s),{configFileInput:v,selectedPreset:x,presetOptions:y,presetLoading:_,configMessage:C,configError:S,saveConfig:b,onConfigFileChange:M,refreshPresets:I,loadSelectedPreset:F}=kO(s);function E(ee){return ee==="跟随导出"?e.value.keyframeCurve==="bezier"?"bezier":"linear":ee==="贝塞尔"?"bezier":"linear"}s.systems.length||s.addSystem();const k=qe(()=>{const ee=s.systems.findIndex(me=>me.id===s.activeId);return ee>=0?ee:0}),O=qe(()=>s.systems[k.value]||null),{textureFileInput:D,sequenceFileInput:$,trailTextureFileInput:N,addTrailResource:U,openTrailTexturePicker:A,onTrailRigChange:P,onTrailResourceBoneCountChange:L,onTrailResourceRotationChange:B,onTrailTextureFile:X,resetTrailTexture:V,removeTrailResource:q,setTrailResourceWeight:W,toggleTrailResourceLock:ne,setTrailColor:re,commitTrailColor:le,addImageResource:ue,openTexturePicker:ae,openSequencePicker:xe,onTextureFile:Y,onSequenceFiles:j,resetTexture:H,setResourceFixedColor:G,commitResourceFixedColor:z,removeImageResource:ie,setResourceWeight:fe,toggleResourceLock:te}=FO(O),oe=qe(()=>O.value?eb(O.value.config,s.timeline.fps):30),ce=qe(()=>{var me;const ee=(me=O.value)==null?void 0:me.config;return ee?Math.max(1,Math.ceil(Number(ee.loopDurationFrames)||1)):1}),Ce=qe(()=>s.activeObjectType),ye=qe(()=>s.activeObjectType==="collision"&&s.colliders.find(ee=>ee.id===s.activeObjectId)||null),we=qe(()=>s.activeObjectType==="path"&&s.paths.find(ee=>ee.id===s.activeObjectId)||null),Me=qe(()=>s.activeObjectType==="spine"&&s.spines.find(ee=>ee.id===s.activeObjectId)||null),ve=qe(()=>s.activeObjectType==="particle"?s.systems.some(ee=>ee.id===s.activeObjectId):s.activeObjectType==="collision"?s.colliders.some(ee=>ee.id===s.activeObjectId):s.activeObjectType==="path"?s.paths.some(ee=>ee.id===s.activeObjectId):s.spines.some(ee=>ee.id===s.activeObjectId)),Xe=qe(()=>{const ee=s.spines.find(me=>me.selectedBone&&me.bones.some(Ae=>Ae.name===me.selectedBone));return ee?{spine:ee,boneName:ee.selectedBone}:null}),pe=qe(()=>{var Ae;const ee=(Ae=O.value)==null?void 0:Ae.config;if(!ee||ee.emitterFollowMode!=="bone")return null;const me=s.spines.find(bt=>bt.id===ee.emitterFollowSpineId);return!me||!me.bones.some(bt=>bt.name===ee.emitterFollowBoneName)?null:{spine:me,boneName:ee.emitterFollowBoneName}}),Ke=Ge(!1),Ze=qe(()=>{var me;const ee=new Set(((me=O.value)==null?void 0:me.config.collisionColliderIds)||[]);return s.colliders.filter(Ae=>ee.has(Ae.id))}),Ct=qe(()=>{var me;const ee=new Set(((me=O.value)==null?void 0:me.config.collisionColliderIds)||[]);return s.colliders.filter(Ae=>!ee.has(Ae.id))});Xi(()=>{var ee,me;return[(ee=O.value)==null?void 0:ee.id,(me=O.value)==null?void 0:me.config.collision]},()=>{Ke.value=!1});function Lt(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;!me||me.collisionColliderIds.includes(ee)||(me.collisionColliderIds.push(ee),Ke.value=!1)}function ii(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;me&&(me.collisionColliderIds=me.collisionColliderIds.filter(bt=>bt!==ee))}Ma(()=>{for(const ee of s.systems)ee.visible==null&&(ee.visible=!0);for(const ee of s.colliders)ee.visible==null&&(ee.visible=!0);for(const ee of s.paths)ee.visible==null&&(ee.visible=!0);for(const ee of s.spines)ee.visible==null&&(ee.visible=!0)}),Ma(()=>{if(!O.value)return;const ee=pr(O.value.config);ee.lifeMode==="curve"&&(ee.lifeMode="random"),ee.speedMode==="curve"&&(ee.speedMode="random"),ee.scaleMode==="curve"&&(ee.scaleMode="random"),ee.initialRotationMode==="curve"&&(ee.initialRotationMode="random"),ee.mode==="stream"&&!(ee.duration>0)&&(ee.duration=1),ee.streamBehavior==="loop"&&(ee.emitterFollow||ee.emitterFollowMode!=="none")&&ot(ee)}),Ma(()=>{const ee=new Set(s.colliders.map(me=>me.id));for(const me of s.systems){const Ae=pr(me.config),bt=Ae.collisionColliderIds.filter(Sr=>ee.has(Sr));if(bt.length!==Ae.collisionColliderIds.length&&(Ae.collisionColliderIds=bt),Ae.spawnPathId>0&&!s.paths.some(Sr=>Sr.id===Ae.spawnPathId)&&(Ae.spawnPathId=0,(Ae.emissionAngleMode==="path-normal"||Ae.emissionAngleMode==="path-tangent")&&(Ae.emissionAngleMode="fixed")),Ae.emitterFollowMode!=="bone")continue;const Pt=s.spines.find(Sr=>Sr.id===Ae.emitterFollowSpineId);!!(Pt!=null&&Pt.bones.some(Sr=>Sr.name===Ae.emitterFollowBoneName))||(Ae.emitterFollowMode="none",Ae.emitterFollowSpineId=0,Ae.emitterFollowBoneName="")}}),Ma(()=>{for(const ee of s.colliders)ee.followPathId==null&&(ee.followPathId=0),ee.followDuration>0||(ee.followDuration=2),ee.followPathRotation==null&&(ee.followPathRotation=!1),["跟随导出","线性","贝塞尔"].includes(ee.followCurveMode)||(ee.followCurveMode="跟随导出"),(!Array.isArray(ee.followCurve)||ee.followCurve.length<2)&&(ee.followCurve=[{x:0,y:0},{x:1,y:1}])});const rs=no({config:!0,scene:!1,emitMode:!0,shape:!0,attr:!0,look:!0,mods:!0,export:!1});function zt(ee){rs[ee]=!rs[ee]}function se(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;me&&(me.mode=ee,ee==="stream"&&!(me.duration>0)&&(me.duration=1))}function he(ee){var bt;const me=(bt=O.value)==null?void 0:bt.config;if(!me)return;const Ae=Math.min(1800,Math.max(1,Math.ceil(Number(ee)||1)));me.loopDurationFrames=Ae}function ot(ee){const me=cl();ee.emitterFollow=!1,ee.emitterFollowMode="none",ee.emitterFollowPathId=me.emitterFollowPathId,ee.emitterFollowSpineId=me.emitterFollowSpineId,ee.emitterFollowBoneName=me.emitterFollowBoneName,ee.emitterFollowBoneOffsetX=me.emitterFollowBoneOffsetX,ee.emitterFollowBoneOffsetY=me.emitterFollowBoneOffsetY,ee.emitterFollowBoneRotation=me.emitterFollowBoneRotation,ee.emitterFollowBoneScaleX=me.emitterFollowBoneScaleX,ee.emitterFollowBoneScaleY=me.emitterFollowBoneScaleY,ee.emitterAngleMode=me.emitterAngleMode,ee.emitterFollowCurve=me.emitterFollowCurve.map(Ae=>({...Ae})),ee.emitterFollowDuration=me.emitterFollowDuration,ee.emitterFollowSpace=me.emitterFollowSpace,ee.emitterFollowDirection=me.emitterFollowDirection,ee.emitterFollowOffset=me.emitterFollowOffset}function at(ee){var Pt;const me=(Pt=O.value)==null?void 0:Pt.config;if(!me||me.streamBehavior===ee)return;const Ae=ee==="loop",bt=Ae?"进入循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?":"退出循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?";window.confirm(bt)&&(ot(me),me.streamBehavior=ee,Ae||(me.generateLoopStartAnimation=!1,me.generateLoopEndAnimation=!1))}function gt(ee,me){var Pt;const Ae=(Pt=O.value)==null?void 0:Pt.config;if(!Ae)return;const bt=me.target.checked;ee==="start"?Ae.generateLoopStartAnimation=bt:Ae.generateLoopEndAnimation=bt}function $e(ee,me){var Pt;const Ae=(Pt=O.value)==null?void 0:Pt.config;if(!Ae)return;const bt=Math.min(1800,Math.max(1,Math.ceil(Number(me.target.value)||30)));ee==="start"?Ae.loopStartDurationFrames=bt:Ae.loopEndDurationFrames=bt}function _i(ee,me){var Pt;const Ae=(Pt=O.value)==null?void 0:Pt.config;if(!Ae)return;const bt=me.target.checked;ee==="start"?Ae.loopStartUseCustomDuration=bt:Ae.loopEndUseCustomDuration=bt}function pi(ee,me){const Ae=ee.target.value;if(me.emitterFollowMode=Ae,Ae!=="bone"){me.emitterFollowSpineId=0,me.emitterFollowBoneName="";return}$t(me)}function $t(ee){const me=Xe.value;if(!me){ee.emitterFollowMode="none",ee.emitterFollowSpineId=0,ee.emitterFollowBoneName="";return}ee.emitterFollowMode="bone",ee.emitterFollowSpineId=me.spine.id,ee.emitterFollowBoneName=me.boneName}const Fi={emitMode:["mode","rate","streamBehavior","loopDurationFrames","generateLoopStartAnimation","loopStartUseCustomDuration","loopStartDurationFrames","generateLoopEndAnimation","loopEndUseCustomDuration","loopEndDurationFrames","burstCount","burstLoop","delay","duration"],shape:["shape","shapeRangeVersion","innerRadius","outerRadius","innerRectW","innerRectH","outerRectW","outerRectH","spawnPathId","spawnPathDistribution","radius","rectW","rectH","emissionAngleMode","direction","spread","coneDirection","coneAngle"],attr:["lifeMin","lifeMax","lifeMode","lifeCurve","speedMin","speedMax","speedMode","speedCurve","scaleMin","scaleMax","scaleMode","scaleAxisMode","scaleYMin","scaleYMax","scaleCurve","scaleYCurve","scaleEndRatio","initialRotationMode","initialRotationMin","initialRotationMax","initialRotationCurve","rotationSpeedMin","rotationSpeedMax","speedOverLifeEnabled","speedOverLifeMode","speedOverLifeMin","speedOverLifeMax","speedOverLifeCurve","scaleOverLifeEnabled","scaleOverLifeMode","scaleOverLifeAxisMode","scaleOverLifeMin","scaleOverLifeMax","scaleYOverLifeMin","scaleYOverLifeMax","scaleOverLifeCurve","scaleYOverLifeCurve","rotationOverLifeEnabled","rotationOverLifeMode","rotationOverLifeCurve"],look:["texture","imageResources","imageWeightVersion","alpha","alphaEnd","colorStart","colorEnd","colorOverLife","blend","alphaMode","curveMode","alphaCurve","textureName","textureFolder","alphaScale","anchorX","anchorY","independentAlpha"],mods:["noise","noiseAmt","noiseRange","noiseSpeed","useGravity","gravity","gravityMode","gravityMin","gravityMax","gravityDirection","gravityCurve","wind","windX","windY","windMode","windMin","windMax","windDirection","windCurve","forceField","forceStrength","forceRadius","forceCenterX","forceCenterY","forceFalloff","attraction","attractionCenterX","attractionCenterY","attractionRadius","attractionDuration","attractionDelay","attractionDelayMode","attractionPath","trail","trailConfigVersion","trailResources","trailResourceVersion","trailTexture","trailTextureName","trailPreviewUrl","trailColorMode","trailColor","trailColorGradient","trailAlphaMode","trailAlpha","trailAlphaCurve","trailBoneCount","trailLength","trailWidth","trailWidthMode","trailLifeLengthEnabled","trailLifeLengthCurve","trailShapeEnabled","trailShapeCurve","trailGridRows","trailGridCols","collision","collisionColliderIds","pathFollow","emitterFollow","emitterFollowMode","emitterFollowPathId","emitterFollowSpineId","emitterFollowBoneName","emitterFollowBoneOffsetX","emitterFollowBoneOffsetY","emitterFollowBoneRotation","emitterFollowBoneScaleX","emitterFollowBoneScaleY","emitterAngleMode","emitterFollowCurve","emitterFollowDuration","emitterFollowSpace","emitterFollowDirection","emitterFollowOffset","damping"]};function vs(ee){var bt;const me=(bt=O.value)==null?void 0:bt.config;if(ee==="export"){s.settings.exportSettings=ap();return}if(!me)return;const Ae=cl();for(const Pt of Fi[ee])me[Pt]=Ae[Pt]}function Vi(){e.value.fps=Math.min(240,Math.max(1,Math.round(Number(e.value.fps)||30)))}function Ti(ee){var me;s.selectSystem(((me=s.systems[ee])==null?void 0:me.id)??0)}function uo(){s.addSystem()}function Cl(){s.addCollider()}function Al(){s.addPath()}function wr(){s.addSpine()}function ha(){s.duplicateSelectedObject()}function Yi(ee,me,Ae=0,bt=0,Pt=0,ma=0){return{x:ee,y:me,inX:Ae,inY:bt,outX:Pt,outY:ma}}function ua(){const ee=we.value;if(!(!ee||!ee.preset))if(ee.preset==="circle"){const Ae=60.751328;ee.points=[Yi(110,0,0,-Ae,0,Ae),Yi(0,110,Ae,0,-Ae,0),Yi(-110,0,0,Ae,0,-Ae),Yi(0,-110,-Ae,0,Ae,0)],ee.closed=!0}else if(ee.preset==="square")ee.points=[Yi(-100,-100),Yi(100,-100),Yi(100,100),Yi(-100,100)],ee.closed=!0;else{const me=ee.preset==="star"?10:6;ee.points=Array.from({length:me},(Ae,bt)=>{const Pt=ee.preset==="star"&&bt%2?50:110,ma=-Math.PI*.5+bt/me*Math.PI*2;return Yi(Math.cos(ma)*Pt,Math.sin(ma)*Pt)}),ee.closed=!0}}function da(){we.value&&(we.value.points=[])}function El(){O.value&&(O.value.config.seed=Math.floor(Math.random()*999999)+1)}function Il(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;!me||ee==="direction"||(me.speedOverLifeMode=ee,ee==="curve"&&me.speedOverLifeMin===me.speedOverLifeMax&&(me.speedOverLifeMin=0,me.speedOverLifeMax=1))}function fo(){var me;const ee=(me=O.value)==null?void 0:me.config;!ee||ee.scaleOverLifeMode!=="curve"||(ee.scaleOverLifeMin===ee.scaleOverLifeMax&&(ee.scaleOverLifeMin=0,ee.scaleOverLifeMax=1),ee.scaleYOverLifeMin===ee.scaleYOverLifeMax&&(ee.scaleYOverLifeMin=0,ee.scaleYOverLifeMax=1))}function Rl(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;!me||ee==="direction"||(me.scaleOverLifeMode=ee,fo())}const fa={point:{emissionAngleMode:"random",direction:0,spread:360},circle:{innerRadius:0,outerRadius:100,emissionAngleMode:"fixed",direction:-90,spread:0},rect:{innerRectW:0,innerRectH:0,outerRectW:200,outerRectH:100,emissionAngleMode:"fixed",direction:-90,spread:0},cone:{innerRadius:0,outerRadius:100,coneAngle:90,coneDirection:90,emissionAngleMode:"random",direction:90,spread:90},path:{spawnPathId:0,spawnPathDistribution:"fixed",emissionAngleMode:"fixed",direction:0,spread:0}};function Pl(){var Ae;const ee=(Ae=O.value)==null?void 0:Ae.config;if(!ee)return;const me=fa[ee.shape];me&&Object.assign(ee,me)}function du(){var me;const ee=(me=O.value)==null?void 0:me.config;!ee||ee.spawnPathId>0||(ee.emissionAngleMode==="path-normal"||ee.emissionAngleMode==="path-tangent")&&(ee.emissionAngleMode="fixed")}return{store:s,exportSettings:e,exportBusy:t,exportTarget:i,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:c,connectorReady:l,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g,configFileInput:v,selectedPreset:x,presetOptions:y,presetLoading:_,configMessage:C,configError:S,saveConfig:b,onConfigFileChange:M,refreshPresets:I,loadSelectedPreset:F,resolvedCurveEditorMode:E,sys:O,textureFileInput:D,sequenceFileInput:$,trailTextureFileInput:N,addTrailResource:U,openTrailTexturePicker:A,onTrailRigChange:P,onTrailResourceBoneCountChange:L,onTrailResourceRotationChange:B,onTrailTextureFile:X,resetTrailTexture:V,removeTrailResource:q,setTrailResourceWeight:W,toggleTrailResourceLock:ne,setTrailColor:re,commitTrailColor:le,addImageResource:ue,openTexturePicker:ae,openSequencePicker:xe,onTextureFile:Y,onSequenceFiles:j,resetTexture:H,setResourceFixedColor:G,commitResourceFixedColor:z,removeImageResource:ie,setResourceWeight:fe,toggleResourceLock:te,automaticLoopDuration:oe,loopDurationFrames:ce,activeObjectType:Ce,activeCollider:ye,activePath:we,activeSpine:Me,canCopyObject:ve,selectedSpineBone:Xe,boundSpineBone:pe,collisionPickerOpen:Ke,selectedCollisionBodies:Ze,availableCollisionBodies:Ct,addCollisionBody:Lt,removeCollisionBody:ii,collapsed:rs,toggle:zt,setEmitMode:se,setLoopDurationFrames:he,setStreamBehavior:at,setLoopSection:gt,setLoopSectionDuration:$e,setLoopCustomDuration:_i,onEmitterFollowModeChange:pi,bindSelectedBone:$t,resetModule:vs,normalizeExportFps:Vi,select:Ti,addSys:uo,addCollider:Cl,addPath:Al,addSpine:wr,copySelectedObject:ha,applyPathPreset:ua,clearPathAnchors:da,randomizeSeed:El,setSpeedOverLifeMode:Il,prepareScaleOverLifeCurve:fo,setScaleOverLifeMode:Rl,onShapeChange:Pl,onSpawnPathChange:du,LINEAR_CURVE:kF,FLAT_CURVE:cm,ALPHA_CURVE:FF,RESOURCE_ALPHA_CURVE:hm,TRAIL_ALPHA_CURVE:um,TRAIL_SHAPE_CURVE:dm}}const pS=Symbol("particle-panel");function BO(){const s=OO();return By(pS,s),s}function br(){const s=No(pS);if(!s)throw new Error("Particle panel sections require a ParticlePanel parent");return s}const LO={class:"group config-management"},DO={class:"caret"},NO={class:"group-body config-management-body"},UO={class:"config-toolbar"},$O=["disabled"],XO={value:""},VO=["value"],YO=Jt({__name:"ProjectConfigSection",setup(s){const{configFileInput:e,selectedPreset:t,presetOptions:i,presetLoading:n,configMessage:r,configError:o,saveConfig:a,onConfigFileChange:c,refreshPresets:l,loadSelectedPreset:h,collapsed:u,toggle:d,select:f}=br();return(p,m)=>(K(),Q("div",LO,[T("div",{class:"group-head",onClick:m[0]||(m[0]=g=>R(d)("config"))},[T("span",DO,_e(R(u).config?"▸":"▾"),1),m[8]||(m[8]=T("span",null,"配置管理",-1))]),de(T("div",NO,[T("div",UO,[T("button",{title:"保存全部编辑器配置 (Ctrl+S)",onClick:m[1]||(m[1]=(...g)=>R(a)&&R(a)(...g))},"保存配置"),T("button",{title:"加载本地编辑器配置",onClick:m[2]||(m[2]=g=>{var v;return(v=R(e))==null?void 0:v.click()})},"加载配置"),de(T("select",{"onUpdate:modelValue":m[3]||(m[3]=g=>jt(t)?t.value=g:null),"aria-label":"预设列表",disabled:!R(i).length||R(n),onPointerdown:m[4]||(m[4]=(...g)=>R(l)&&R(l)(...g)),onFocus:m[5]||(m[5]=(...g)=>R(l)&&R(l)(...g)),onChange:m[6]||(m[6]=(...g)=>R(h)&&R(h)(...g))},[T("option",XO,_e(R(i).length?"选择预设":"无预设文件"),1),(K(!0),Q(Fe,null,Dt(R(i),g=>(K(),Q("option",{key:g.file,value:g.file},_e(g.name),9,VO))),128))],40,$O),[[wt,R(t)]]),T("input",{ref_key:"configFileInput",ref:e,hidden:"",type:"file",accept:".json,application/json",onChange:m[7]||(m[7]=(...g)=>R(c)&&R(c)(...g))},null,544)]),R(r)?(K(),Q("div",{key:0,class:Le(["config-message",{error:R(o)}])},_e(R(r)),3)):Te("",!0)],512),[[vi,!R(u).config]])]))}}),GO=Qt(YO,[["__scopeId","data-v-cb52d3e0"]]),HO={class:"ns-label"},jO=["min","max","step","value","disabled"],WO=["min","max","step","value","disabled"],zO=Jt({__name:"NumSlider",props:{label:{},modelValue:{},min:{},max:{},step:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=Ge(String(t.modelValue));Xi(()=>t.modelValue,c=>{n.value=String(c)});function r(c){const l=parseFloat(c.target.value);Number.isNaN(l)||i("update:modelValue",l)}function o(c){n.value=c.target.value;const l=parseFloat(n.value);Number.isNaN(l)||i("update:modelValue",l)}function a(){const c=parseFloat(n.value);Number.isNaN(c)&&(n.value=String(t.modelValue))}return(c,l)=>(K(),Q("div",{class:Le(["ns",{disabled:s.disabled}])},[T("span",HO,_e(s.label),1),T("input",{type:"range",class:"ns-range",min:s.min,max:s.max,step:s.step,value:s.modelValue,disabled:s.disabled,onInput:r},null,40,jO),T("input",{type:"number",class:"ns-num",min:s.min,max:s.max,step:s.step,value:n.value,disabled:s.disabled,onInput:o,onBlur:a},null,40,WO)],2))}}),Be=Qt(zO,[["__scopeId","data-v-7c2fbed0"]]),qO={class:"ce"},KO={class:"ce-editor"},ZO={class:"ce-grid"},JO=["x1","x2","y2"],QO=["y1","x2","y2"],eB=["x","y","width","height"],tB=["d"],iB={key:0,class:"ce-handles"},sB=["x1","y1","x2","y2"],nB=["cx","cy","onPointerdown"],rB=["x1","y1","x2","y2"],oB=["cx","cy","onPointerdown"],aB=["cx","cy"],lB=["cx","cy","onPointerdown","onDblclick"],cB={class:"ce-nav"},hB={class:"ce-tip"},Hn=8,uB=Jt({__name:"CurveEditor",props:{modelValue:{},defaultValue:{default:()=>[{x:0,y:0},{x:1,y:1}]},mode:{default:"linear"}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=Ge(null),r=Ge(300),o=Ge(110);let a=null;function c(){if(!n.value)return;const E=n.value.getBoundingClientRect();r.value=E.width,o.value=E.height}function l(E){return Hn+E*(r.value-Hn*2)}function h(E){return Hn+(1-E)*(o.value-Hn*2)}function u(){return[...t.modelValue].sort((E,k)=>E.x-k.x)}function d(E){i("update:modelValue",[...E].sort((k,O)=>k.x-O.x))}function f(){d(t.defaultValue.map(E=>({...E})))}const p=qe(()=>u());function m(E){const k=p.value[E],O=p.value[Math.max(0,E-1)];return{x:k.x-(k.x-O.x)/3,y:k.y-(k.y-O.y)/3}}function g(E){const k=p.value[E],O=p.value[Math.min(p.value.length-1,E+1)];return{x:k.x+(O.x-k.x)/3,y:k.y+(O.y-k.y)/3}}function v(E){const k=p.value[E],O=m(E);return{x:k.x+(k.inX??O.x-k.x),y:k.y+(k.inY??O.y-k.y)}}function x(E){const k=p.value[E],O=g(E);return{x:k.x+(k.outX??O.x-k.x),y:k.y+(k.outY??O.y-k.y)}}const y=qe(()=>{if(!p.value.length)return"";let E=`M ${l(p.value[0].x)} ${h(p.value[0].y)}`;for(let k=1;kMath.abs($.x-k)>.02);D.push({x:k,y:O}),d(D)}let b={t:0,i:-1,x:0,y:0};function M(E,k){E.stopPropagation();const O=u().findIndex(U=>Math.abs(U.x-p.value[k].x)<1e-6&&Math.abs(U.y-p.value[k].y)<1e-6);if(O<0)return;const D=Date.now();if(D-b.t<300&&b.i===k&&Math.abs(E.clientX-b.x)<8&&Math.abs(E.clientY-b.y)<8){b={t:0,i:-1,x:0,y:0},F(k);return}b={t:D,i:k,x:E.clientX,y:E.clientY};const $=U=>{(Math.abs(U.clientX-E.clientX)>8||Math.abs(U.clientY-E.clientY)>8)&&(b={t:0,i:-1,x:0,y:0});const{x:A,y:P}=_(U.clientX,U.clientY),L=u();L[O]={x:A,y:P},d(L)},N=()=>{window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",N)};window.addEventListener("pointermove",$),window.addEventListener("pointerup",N)}function I(E,k,O){E.stopPropagation();const D=N=>{const U=_(N.clientX,N.clientY),A=u(),P=A[k],L=O==="in"?A[Math.max(0,k-1)].x:P.x,B=O==="in"?P.x:A[Math.min(A.length-1,k+1)].x,X=Math.min(B,Math.max(L,U.x)),V=Math.round((X-P.x)*100)/100,q=Math.round((U.y-P.y)*100)/100;A[k]=O==="in"?{...P,inX:V,inY:q}:{...P,outX:V,outY:q},d(A)},$=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",$)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",$)}function F(E,k){k==null||k.stopPropagation();const O=u();O.length<=2||(C=Date.now(),d(O.filter((D,$)=>$!==E)))}return Vn(()=>{c(),a=new ResizeObserver(c),n.value&&a.observe(n.value)}),gl(()=>{a==null||a.disconnect()}),(E,k)=>(K(),Q("div",qO,[T("div",KO,[(K(),Q("svg",{ref_key:"svg",ref:n,class:"ce-svg",onDblclick:S},[T("g",ZO,[(K(),Q(Fe,null,Dt([.25,.5,.75],O=>T("line",{key:"v"+O,x1:l(O),y1:"0",x2:l(O),y2:h(0)},null,8,JO)),64)),(K(),Q(Fe,null,Dt([.25,.5,.75],O=>T("line",{key:"h"+O,x1:"0",y1:h(O),x2:l(1),y2:h(O)},null,8,QO)),64))]),T("rect",{x:l(0),y:h(1),width:l(1)-l(0),height:h(0)-h(1),class:"ce-frame",fill:"none"},null,8,eB),T("path",{d:y.value,class:"ce-line",fill:"none"},null,8,tB),s.mode==="bezier"?(K(),Q("g",iB,[(K(!0),Q(Fe,null,Dt(p.value,(O,D)=>(K(),Q(Fe,{key:"handles-"+D},[D>0?(K(),Q("line",{key:0,x1:l(O.x),y1:h(O.y),x2:l(v(D).x),y2:h(v(D).y)},null,8,sB)):Te("",!0),D>0?(K(),Q("circle",{key:1,cx:l(v(D).x),cy:h(v(D).y),r:"4",onPointerdown:$=>I($,D,"in")},null,40,nB)):Te("",!0),DI($,D,"out")},null,40,oB)):Te("",!0)],64))),128))])):Te("",!0),(K(!0),Q(Fe,null,Dt(p.value,(O,D)=>(K(),Q("g",{key:D},[T("circle",{cx:l(O.x),cy:h(O.y),r:"5",class:"ce-node"},null,8,aB),T("circle",{cx:l(O.x),cy:h(O.y),r:"9",class:"ce-hit",onPointerdown:$=>M($,D),onDblclick:$=>F(D,$)},null,40,lB)]))),128))],544)),T("div",cB,[T("span",hB,_e(s.mode==="bezier"?"拖动方形手柄调整弧度·双击空白新建·双击节点删除":"双击空白新建·双击节点删除·拖动节点调整"),1)])]),T("button",{class:"ce-reset",type:"button",title:"恢复默认曲线",onClick:f},"重置")]))}}),qs=Qt(uB,[["__scopeId","data-v-9bfb7b31"]]),dB={class:"spine-editor"},fB={class:"field wide"},mB={class:"grid three"},pB={class:"field"},gB={class:"field"},vB={class:"field"},yB={class:"grid three"},xB={class:"field"},bB={class:"field"},wB={class:"field"},SB=["disabled"],_B={class:"asset-row"},TB=["title"],MB={class:"asset-row"},CB=["title"],AB={class:"asset-row"},EB=["title"],IB={class:"asset-actions"},RB=["disabled"],PB={class:"runtime-note"},kB={key:0},FB={key:0,class:"error"},OB={class:"section-box"},BB={key:0,class:"empty"},LB={key:1,class:"field wide"},DB=["value"],NB={class:"section-box"},UB={class:"tree-title-row"},$B=["disabled","title"],XB={key:0,class:"empty"},VB={key:1,class:"bone-search"},YB={key:2,class:"empty"},GB={key:3,class:"bone-tree"},HB=["onClick","onKeydown"],jB=["title","onClick"],WB={key:1,class:"bone-leaf"},zB={class:"bone-name"},qB=Jt({__name:"SpineObjectPanel",props:{spineObject:{}},setup(s){const e=s,t=ao(),i=Ge(null),n=Ge(null),r=Ge(null),o=Ge(null),a=Ge(new Set),c=Ge(""),l=Ge(null),h=Ge(null),u=Ge([]);e.spineObject.selectedBone==null&&(e.spineObject.selectedBone=""),e.spineObject.sourceBundle==null&&(e.spineObject.sourceBundle=null),e.spineObject.dataVersion==null&&(e.spineObject.dataVersion="");const d=qe(()=>{var U;return((U=l.value)==null?void 0:U.name)||e.spineObject.skeletonFileName}),f=qe(()=>{var U;return((U=h.value)==null?void 0:U.name)||e.spineObject.atlasFileName}),p=qe(()=>u.value.length?u.value.map(U=>U.name):e.spineObject.textureFileNames),m=qe(()=>p.value.length?`${p.value.length} 张:${p.value.join(", ")}`:"PNG / JPEG / WebP..."),g=qe(()=>new Set(e.spineObject.bones.map(U=>U.parent).filter(U=>!!U))),v=qe(()=>new Map(e.spineObject.bones.map(U=>[U.name,U]))),x=qe(()=>e.spineObject.bones.filter(U=>{var L;const A=c.value.trim().toLocaleLowerCase();if(A)return U.name.toLocaleLowerCase().includes(A);let P=U.parent;for(;P;){if(a.value.has(P))return!1;P=((L=v.value.get(P))==null?void 0:L.parent)||null}return!0})),y=qe(()=>g.value.size>0&&[...g.value].every(U=>a.value.has(U)));function _(U){const A=e.spineObject.selectedBone===U;for(const P of t.spines)P.selectedBone="";A||(e.spineObject.selectedBone=U)}function C(U){a.value.has(U)?a.value.delete(U):a.value.add(U)}function S(){a.value=y.value?new Set:new Set(g.value)}function b(U){var A;return((A=U.target.files)==null?void 0:A[0])||null}function M(U){l.value=b(U)}function I(U){h.value=b(U)}function F(U){u.value=Array.from(U.target.files||[])}function E(U){return U.name.replace(/\.[^.]+$/,"").toLocaleLowerCase()}async function k(U){const A=Array.from(U.target.files||[]);if(!A.length)return;const P=A.filter(W=>/\.(json|skel)$/i.test(W.name)),L=A.filter(W=>/\.atlas$/i.test(W.name)),B=A.filter(W=>/\.(png|jpe?g|webp|wepb)$/i.test(W.name)),X=L.map(W=>({atlas:W,skeleton:P.find(ne=>E(ne)===E(W))})).find(W=>W.skeleton),V=(X==null?void 0:X.skeleton)||P[0]||null,q=(X==null?void 0:X.atlas)||L[0]||null;if(l.value=V,h.value=q,u.value=B,!V||!q||!B.length){const W=[!V&&"JSON / SKEL",!q&&"Atlas",!B.length&&"纹理图片"].filter(Boolean).join("、");e.spineObject.status="error",e.spineObject.error=`所选文件夹缺少:${W}`;return}await $()}function O(){t.recalcTotalFrames()}function D(){O(),t.timeline.frame=0}async function $(){var P;const U=l.value,A=h.value;if(!U||!A||!u.value.length){e.spineObject.status="error",e.spineObject.error="请依次选择 Spine 数据、Atlas 和全部纹理图片";return}e.spineObject.status="loading",e.spineObject.error="";try{const L=await rw(U,A,u.value);nu(e.spineObject.id,L),e.spineObject.skeletonFileName=U.name,e.spineObject.atlasFileName=A.name,e.spineObject.textureFileNames=u.value.map(B=>B.name),e.spineObject.dataVersion=L.dataVersion,e.spineObject.animations=L.animations,e.spineObject.bones=L.bones,e.spineObject.selectedBone="",c.value="",a.value=new Set,e.spineObject.selectedAnimation=((P=L.animations[0])==null?void 0:P.name)||"",e.spineObject.assetVersion++,e.spineObject.status="ready",O(),t.timeline.frame=0;try{e.spineObject.sourceBundle=await XP(U,A,u.value)}catch(B){e.spineObject.sourceBundle=null,console.warn("Spine 配置资源嵌入失败",B)}}catch(L){e.spineObject.status="error",e.spineObject.error=L instanceof Error?L.message:String(L)}}function N(){wl(e.spineObject.id),l.value=null,h.value=null,u.value=[],i.value&&(i.value.value=""),n.value&&(n.value.value=""),r.value&&(r.value.value=""),o.value&&(o.value.value=""),e.spineObject.skeletonFileName="",e.spineObject.atlasFileName="",e.spineObject.textureFileNames=[],e.spineObject.dataVersion="",e.spineObject.sourceBundle=null,e.spineObject.animations=[],e.spineObject.bones=[],e.spineObject.selectedBone="",c.value="",a.value=new Set,e.spineObject.selectedAnimation="",e.spineObject.assetVersion++,e.spineObject.status="empty",e.spineObject.error="",O()}return(U,A)=>(K(),Q("div",dB,[A[30]||(A[30]=T("div",{class:"editor-title"},"Spine 属性",-1)),T("label",fB,[A[15]||(A[15]=T("span",null,"Spine 名称",-1)),de(T("input",{"onUpdate:modelValue":A[0]||(A[0]=P=>s.spineObject.name=P)},null,512),[[He,s.spineObject.name]])]),T("div",mB,[T("label",pB,[A[16]||(A[16]=T("span",null,"X 位置",-1)),de(T("input",{"onUpdate:modelValue":A[1]||(A[1]=P=>s.spineObject.x=P),type:"number"},null,512),[[He,s.spineObject.x,void 0,{number:!0}]])]),T("label",gB,[A[17]||(A[17]=T("span",null,"Y 位置",-1)),de(T("input",{"onUpdate:modelValue":A[2]||(A[2]=P=>s.spineObject.y=P),type:"number"},null,512),[[He,s.spineObject.y,void 0,{number:!0}]])]),T("label",vB,[A[18]||(A[18]=T("span",null,"旋转",-1)),de(T("input",{"onUpdate:modelValue":A[3]||(A[3]=P=>s.spineObject.rotation=P),type:"number"},null,512),[[He,s.spineObject.rotation,void 0,{number:!0}]])])]),T("div",yB,[T("label",xB,[A[19]||(A[19]=T("span",null,"Scale X",-1)),de(T("input",{"onUpdate:modelValue":A[4]||(A[4]=P=>s.spineObject.scaleX=P),type:"number",step:"0.05"},null,512),[[He,s.spineObject.scaleX,void 0,{number:!0}]])]),T("label",bB,[A[20]||(A[20]=T("span",null,"Scale Y",-1)),de(T("input",{"onUpdate:modelValue":A[5]||(A[5]=P=>s.spineObject.scaleY=P),type:"number",step:"0.05"},null,512),[[He,s.spineObject.scaleY,void 0,{number:!0}]])]),T("label",wB,[A[21]||(A[21]=T("span",null,"开始时间",-1)),de(T("input",{"onUpdate:modelValue":A[6]||(A[6]=P=>s.spineObject.timeOffset=P),type:"number",min:"0",step:"0.033333",onChange:O},null,544),[[He,s.spineObject.timeOffset,void 0,{number:!0}]])])]),A[31]||(A[31]=T("div",{class:"divider"},null,-1)),A[32]||(A[32]=T("div",{class:"section-title"},"Spine 资源",-1)),T("input",{ref_key:"skeletonInput",ref:i,hidden:"",type:"file",accept:".json,.skel,application/json,application/octet-stream",onChange:M},null,544),T("input",{ref_key:"atlasInput",ref:n,hidden:"",type:"file",accept:".atlas,text/plain",onChange:I},null,544),T("input",{ref_key:"textureInput",ref:r,hidden:"",type:"file",multiple:"",accept:".png,.jpg,.jpeg,.webp,.wepb,image/png,image/jpeg,image/webp",onChange:F},null,544),T("input",{ref_key:"folderInput",ref:o,hidden:"",type:"file",multiple:"",webkitdirectory:"",directory:"",onChange:k},null,544),T("button",{class:"folder-select",disabled:s.spineObject.status==="loading",onClick:A[7]||(A[7]=P=>{var L;return(L=o.value)==null?void 0:L.click()})},"选择文件夹并加载",8,SB),A[33]||(A[33]=T("div",{class:"folder-hint"},"一次读取文件夹中的 JSON / SKEL、Atlas 和全部纹理;仍可在下方单独替换资源。",-1)),T("div",_B,[T("div",{class:"asset-name",title:d.value},_e(d.value||"JSON / SKEL..."),9,TB),T("button",{onClick:A[8]||(A[8]=P=>{var L;return(L=i.value)==null?void 0:L.click()})},"选择")]),T("div",MB,[T("div",{class:"asset-name",title:f.value},_e(f.value||"Atlas..."),9,CB),T("button",{onClick:A[9]||(A[9]=P=>{var L;return(L=n.value)==null?void 0:L.click()})},"选择")]),T("div",AB,[T("div",{class:"asset-name",title:p.value.join(", ")},_e(m.value),9,EB),T("button",{onClick:A[10]||(A[10]=P=>{var L;return(L=r.value)==null?void 0:L.click()})},"选择(多选)")]),T("div",IB,[T("button",{class:"load",disabled:s.spineObject.status==="loading",onClick:$},_e(s.spineObject.status==="loading"?"加载中…":"↧ 加载"),9,RB),T("button",{class:"clear",onClick:N},"清除")]),T("div",PB,[A[22]||(A[22]=At(" 支持 Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · 对应版本运行时按需加载 · 本地离线 ",-1)),s.spineObject.dataVersion?(K(),Q("span",kB," · 当前资源 "+_e(s.spineObject.dataVersion),1)):Te("",!0)]),s.spineObject.error?(K(),Q("div",FB,_e(s.spineObject.error),1)):Te("",!0),T("div",OB,[A[25]||(A[25]=T("div",{class:"section-title"},"Spine 动画",-1)),s.spineObject.animations.length?(K(),Q("label",LB,[A[24]||(A[24]=T("span",null,"时间轴播放动画",-1)),de(T("select",{"onUpdate:modelValue":A[11]||(A[11]=P=>s.spineObject.selectedAnimation=P),onChange:D},[A[23]||(A[23]=T("option",{value:""},"无",-1)),(K(!0),Q(Fe,null,Dt(s.spineObject.animations,P=>(K(),Q("option",{key:P.name,value:P.name},_e(P.name)+"("+_e(P.duration.toFixed(2))+"s) ",9,DB))),128))],544),[[wt,s.spineObject.selectedAnimation]])])):(K(),Q("div",BB,"无可用动画"))]),T("div",NB,[T("div",UB,[A[29]||(A[29]=T("div",{class:"section-title"},"层级树",-1)),T("button",{class:Le(["selected-bone",{active:s.spineObject.selectedBone}]),disabled:!s.spineObject.selectedBone,title:s.spineObject.selectedBone?"点击清除骨骼选择":"当前未选择骨骼",onClick:A[12]||(A[12]=P=>s.spineObject.selectedBone="")},[s.spineObject.selectedBone?(K(),Q(Fe,{key:0},[A[26]||(A[26]=At("清除选中骨骼:",-1)),T("strong",null,_e(s.spineObject.selectedBone),1)],64)):(K(),Q(Fe,{key:1},[A[27]||(A[27]=At("当前骨骼:",-1)),A[28]||(A[28]=T("strong",null,"未选择",-1))],64))],10,$B),s.spineObject.bones.length?(K(),Q("button",{key:0,class:"tree-action",onClick:S},_e(y.value?"全部展开":"全部折叠"),1)):Te("",!0)]),s.spineObject.bones.length?(K(),Q("div",VB,[de(T("input",{"onUpdate:modelValue":A[13]||(A[13]=P=>c.value=P),type:"search","aria-label":"搜索骨骼",placeholder:"搜索骨骼名称…"},null,512),[[He,c.value,void 0,{trim:!0}]]),c.value?(K(),Q("button",{key:0,title:"清空搜索","aria-label":"清空骨骼搜索",onClick:A[14]||(A[14]=P=>c.value="")},"✕")):Te("",!0)])):(K(),Q("div",XB,"未加载 Spine")),s.spineObject.bones.length&&!x.value.length?(K(),Q("div",YB,"未找到匹配的骨骼")):s.spineObject.bones.length?(K(),Q("div",GB,[(K(!0),Q(Fe,null,Dt(x.value,P=>(K(),Q("div",{key:P.name,class:Le(["bone",{selected:s.spineObject.selectedBone===P.name}]),style:di({paddingLeft:`${6+P.depth*16}px`}),role:"button",tabindex:"0",onClick:L=>_(P.name),onKeydown:zr(et(L=>_(P.name),["prevent"]),["enter"])},[g.value.has(P.name)?(K(),Q("button",{key:0,class:"bone-toggle",title:a.value.has(P.name)?"展开子骨骼":"折叠子骨骼",onClick:et(L=>C(P.name),["stop"])},_e(a.value.has(P.name)?"▸":"▾"),9,jB)):(K(),Q("span",WB,"•")),T("span",zB,_e(P.name),1)],46,HB))),128))])):Te("",!0)])]))}}),KB=Qt(qB,[["__scopeId","data-v-9257fb45"]]),ZB={class:"group"},JB={class:"caret"},QB={class:"scene-actions"},eL=["disabled"],tL={class:"group-body"},iL={class:"tree scene-tree"},sL=["onClick"],nL={class:"tlabel"},rL=["title","aria-label","onClick"],oL={viewBox:"0 0 24 24","aria-hidden":"true"},aL={key:0,class:"eye-slash",d:"M4 4l16 16"},lL=["onClick"],cL=["onClick"],hL={class:"tlabel"},uL=["title","aria-label","onClick"],dL={viewBox:"0 0 24 24","aria-hidden":"true"},fL={key:0,class:"eye-slash",d:"M4 4l16 16"},mL=["onClick"],pL=["onClick"],gL={class:"tlabel"},vL=["title","aria-label","onClick"],yL={viewBox:"0 0 24 24","aria-hidden":"true"},xL={key:0,class:"eye-slash",d:"M4 4l16 16"},bL=["onClick"],wL=["onClick"],SL={class:"tlabel"},_L=["title","aria-label","onClick"],TL={viewBox:"0 0 24 24","aria-hidden":"true"},ML={key:0,class:"eye-slash",d:"M4 4l16 16"},CL=["onClick"],AL={key:0,class:"empty"},EL={class:"row"},IL={class:"seed-row scene-seed"},RL={class:"field-block"},PL={class:"field-grid"},kL={class:"field-block"},FL={class:"field-block check-field"},OL={class:"field-grid"},BL={class:"compact-field"},LL={class:"compact-field"},DL={class:"field-grid"},NL={class:"compact-field"},UL={class:"compact-field"},$L={key:1,class:"field-grid"},XL={class:"compact-field"},VL={class:"compact-field"},YL={key:2,class:"field-grid"},GL={class:"compact-field"},HL={class:"compact-field"},jL={class:"field-block"},WL={key:4,class:"field-grid"},zL={class:"compact-field"},qL={class:"compact-field"},KL={class:"collider-follow-section"},ZL={class:"follow-path"},JL={class:"field-block"},QL=["value"],eD={class:"field-grid"},tD={class:"compact-field"},iD={class:"compact-field"},sD={class:"follow-path"},nD={class:"field-block"},rD={class:"field-grid"},oD={class:"compact-field"},aD={class:"compact-field"},lD={class:"field-grid"},cD={class:"compact-field"},hD={class:"compact-field"},uD={class:"setting-line"},dD={class:"setting-line"},fD={class:"field-block"},mD={key:4,class:"panel-hint"},pD=Jt({__name:"SceneObjectsSection",setup(s){const{store:e,resolvedCurveEditorMode:t,sys:i,activeObjectType:n,activeCollider:r,activePath:o,activeSpine:a,canCopyObject:c,collapsed:l,toggle:h,select:u,addSys:d,addCollider:f,addPath:p,addSpine:m,copySelectedObject:g,applyPathPreset:v,clearPathAnchors:x,randomizeSeed:y,LINEAR_CURVE:_}=br();return(C,S)=>(K(),Q("div",ZB,[T("div",{class:"group-head scene-head",onClick:S[5]||(S[5]=b=>R(h)("scene"))},[T("span",JB,_e(R(l).scene?"▸":"▾"),1),S[50]||(S[50]=T("span",null,"场景对象",-1)),T("div",QB,[T("button",{class:"scene-add",title:"添加粒子系统",onClick:S[0]||(S[0]=et((...b)=>R(d)&&R(d)(...b),["stop"]))},"+粒子"),T("button",{class:"scene-add",title:"添加碰撞体",onClick:S[1]||(S[1]=et((...b)=>R(f)&&R(f)(...b),["stop"]))},"+碰撞"),T("button",{class:"scene-add",title:"添加路径",onClick:S[2]||(S[2]=et((...b)=>R(p)&&R(p)(...b),["stop"]))},"+路径"),T("button",{class:"scene-add",title:"添加 Spine",onClick:S[3]||(S[3]=et((...b)=>R(m)&&R(m)(...b),["stop"]))},"+Spine"),T("button",{class:"scene-add",disabled:!R(c),title:"复制当前选中的场景对象",onClick:S[4]||(S[4]=et((...b)=>R(g)&&R(g)(...b),["stop"]))},"+Copy",8,eL)])]),de(T("div",tL,[T("div",iL,[(K(!0),Q(Fe,null,Dt(R(e).systems,(b,M)=>(K(),Q("div",{key:`particle-${b.id}`,class:Le(["tree-item scene-object-item",{on:R(n)==="particle"&&b.id===R(e).activeObjectId}]),onClick:I=>R(u)(M)},[S[53]||(S[53]=T("span",{class:"tdot"},"●",-1)),T("span",nL,_e(b.config.name||"ParticleSystem"+(M+1)),1),T("button",{class:Le(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示粒子系统":"隐藏粒子系统","aria-label":b.visible===!1?"显示粒子系统":"隐藏粒子系统",onClick:et(I=>b.visible=b.visible===!1,["stop"])},[(K(),Q("svg",oL,[S[51]||(S[51]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[52]||(S[52]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(K(),Q("path",aL)):Te("",!0)]))],10,rL),S[54]||(S[54]=T("span",{class:"scene-object-kind"},"粒子",-1)),T("button",{class:"scene-object-delete",title:"删除粒子系统",onClick:et(I=>R(e).removeSystem(b.id),["stop"])},"✕",8,lL)],10,sL))),128)),(K(!0),Q(Fe,null,Dt(R(e).colliders,b=>(K(),Q("div",{key:`collision-${b.id}`,class:Le(["tree-item scene-object-item",{on:R(n)==="collision"&&b.id===R(e).activeObjectId}]),onClick:M=>R(e).selectSceneObject("collision",b.id)},[S[57]||(S[57]=T("span",{class:"tdot collision-dot"},"■",-1)),T("span",hL,_e(b.name),1),T("button",{class:Le(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示碰撞体":"隐藏碰撞体","aria-label":b.visible===!1?"显示碰撞体":"隐藏碰撞体",onClick:et(M=>b.visible=b.visible===!1,["stop"])},[(K(),Q("svg",dL,[S[55]||(S[55]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[56]||(S[56]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(K(),Q("path",fL)):Te("",!0)]))],10,uL),S[58]||(S[58]=T("span",{class:"scene-object-kind"},"碰撞",-1)),T("button",{class:"scene-object-delete",title:"删除碰撞体",onClick:et(M=>R(e).removeCollider(b.id),["stop"])},"✕",8,mL)],10,cL))),128)),(K(!0),Q(Fe,null,Dt(R(e).paths,b=>(K(),Q("div",{key:`path-${b.id}`,class:Le(["tree-item scene-object-item",{on:R(n)==="path"&&b.id===R(e).activeObjectId}]),onClick:M=>R(e).selectSceneObject("path",b.id)},[S[61]||(S[61]=T("span",{class:"tdot path-dot"},"◇",-1)),T("span",gL,_e(b.name),1),T("button",{class:Le(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示路径":"隐藏路径","aria-label":b.visible===!1?"显示路径":"隐藏路径",onClick:et(M=>b.visible=b.visible===!1,["stop"])},[(K(),Q("svg",yL,[S[59]||(S[59]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[60]||(S[60]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(K(),Q("path",xL)):Te("",!0)]))],10,vL),S[62]||(S[62]=T("span",{class:"scene-object-kind"},"路径",-1)),T("button",{class:"scene-object-delete",title:"删除路径",onClick:et(M=>R(e).removePath(b.id),["stop"])},"✕",8,bL)],10,pL))),128)),(K(!0),Q(Fe,null,Dt(R(e).spines,b=>(K(),Q("div",{key:`spine-${b.id}`,class:Le(["tree-item scene-object-item",{on:R(n)==="spine"&&b.id===R(e).activeObjectId}]),onClick:M=>R(e).selectSceneObject("spine",b.id)},[S[65]||(S[65]=T("span",{class:"tdot spine-dot"},"◆",-1)),T("span",SL,_e(b.name),1),T("button",{class:Le(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示 Spine":"隐藏 Spine","aria-label":b.visible===!1?"显示 Spine":"隐藏 Spine",onClick:et(M=>b.visible=b.visible===!1,["stop"])},[(K(),Q("svg",TL,[S[63]||(S[63]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[64]||(S[64]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(K(),Q("path",ML)):Te("",!0)]))],10,_L),S[66]||(S[66]=T("span",{class:"scene-object-kind"},"Spine",-1)),T("button",{class:"scene-object-delete",title:"删除 Spine",onClick:et(M=>R(e).removeSpine(b.id),["stop"])},"✕",8,CL)],10,wL))),128)),!R(e).systems.length&&!R(e).colliders.length&&!R(e).paths.length&&!R(e).spines.length?(K(),Q("div",AL,"场景中暂无对象")):Te("",!0)]),R(n)==="particle"&&R(i)?(K(),Q(Fe,{key:0},[T("label",EL,[S[67]||(S[67]=T("span",null,"名称",-1)),de(T("input",{"onUpdate:modelValue":S[6]||(S[6]=b=>R(i).config.name=b),class:"inp"},null,512),[[He,R(i).config.name]])]),be(Be,{label:"位置X",min:-2e3,max:2e3,step:1,modelValue:R(i).config.centerX,"onUpdate:modelValue":S[7]||(S[7]=b=>R(i).config.centerX=b)},null,8,["modelValue"]),be(Be,{label:"位置Y",min:-2e3,max:2e3,step:1,modelValue:R(i).config.centerY,"onUpdate:modelValue":S[8]||(S[8]=b=>R(i).config.centerY=b)},null,8,["modelValue"]),be(Be,{label:"偏移X",min:-2e3,max:2e3,step:1,modelValue:R(i).config.offsetX,"onUpdate:modelValue":S[9]||(S[9]=b=>R(i).config.offsetX=b)},null,8,["modelValue"]),be(Be,{label:"偏移Y",min:-2e3,max:2e3,step:1,modelValue:R(i).config.offsetY,"onUpdate:modelValue":S[10]||(S[10]=b=>R(i).config.offsetY=b)},null,8,["modelValue"]),be(Be,{label:"旋转",min:-360,max:360,step:1,modelValue:R(i).config.rootRotation,"onUpdate:modelValue":S[11]||(S[11]=b=>R(i).config.rootRotation=b)},null,8,["modelValue"]),be(Be,{label:"缩放X",min:.05,max:10,step:.05,modelValue:R(i).config.rootScaleX,"onUpdate:modelValue":S[12]||(S[12]=b=>R(i).config.rootScaleX=b)},null,8,["modelValue"]),be(Be,{label:"缩放Y",min:.05,max:10,step:.05,modelValue:R(i).config.rootScaleY,"onUpdate:modelValue":S[13]||(S[13]=b=>R(i).config.rootScaleY=b)},null,8,["modelValue"]),T("div",IL,[S[68]||(S[68]=T("label",{for:"system-seed"},"随机种子",-1)),de(T("input",{id:"system-seed",class:"seed-input",type:"number",min:"0",step:"1","onUpdate:modelValue":S[14]||(S[14]=b=>R(i).config.seed=b),title:"控制粒子系统内全部随机属性、资源选择与修改器随机采样"},null,512),[[He,R(i).config.seed,void 0,{number:!0}]]),T("button",{class:"seed-random",title:"生成新的全局随机种子",onClick:S[15]||(S[15]=(...b)=>R(y)&&R(y)(...b))},"⚄")]),S[69]||(S[69]=T("div",{class:"seed-hint"},"控制初始随机参数、资源选择和修改器随机采样;相同种子可复现相同效果",-1))],64)):R(r)?(K(),Q(Fe,{key:1},[S[94]||(S[94]=T("div",{class:"object-editor-title"},"碰撞体属性",-1)),T("label",RL,[S[70]||(S[70]=T("span",null,"碰撞体名称",-1)),de(T("input",{"onUpdate:modelValue":S[16]||(S[16]=b=>R(r).name=b),class:"inp"},null,512),[[He,R(r).name]])]),T("div",PL,[T("label",kL,[S[72]||(S[72]=T("span",null,"类型",-1)),de(T("select",{"onUpdate:modelValue":S[17]||(S[17]=b=>R(r).shape=b),class:"inp"},[...S[71]||(S[71]=[es('',5)])],512),[[wt,R(r).shape]])]),T("label",FL,[S[73]||(S[73]=T("span",null,"启用",-1)),de(T("input",{"onUpdate:modelValue":S[18]||(S[18]=b=>R(r).enabled=b),type:"checkbox"},null,512),[[Et,R(r).enabled]])])]),T("div",OL,[T("label",BL,[S[74]||(S[74]=T("span",null,"X 位置",-1)),de(T("input",{"onUpdate:modelValue":S[19]||(S[19]=b=>R(r).x=b),type:"number",class:"inp"},null,512),[[He,R(r).x,void 0,{number:!0}]])]),T("label",LL,[S[75]||(S[75]=T("span",null,"Y 位置",-1)),de(T("input",{"onUpdate:modelValue":S[20]||(S[20]=b=>R(r).y=b),type:"number",class:"inp"},null,512),[[He,R(r).y,void 0,{number:!0}]])])]),be(Be,{label:"旋转",min:-360,max:360,step:1,modelValue:R(r).rotation,"onUpdate:modelValue":S[21]||(S[21]=b=>R(r).rotation=b)},null,8,["modelValue"]),T("div",DL,[T("label",NL,[S[76]||(S[76]=T("span",null,"缩放 X",-1)),de(T("input",{"onUpdate:modelValue":S[22]||(S[22]=b=>R(r).scaleX=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(r).scaleX,void 0,{number:!0}]])]),T("label",UL,[S[77]||(S[77]=T("span",null,"缩放 Y",-1)),de(T("input",{"onUpdate:modelValue":S[23]||(S[23]=b=>R(r).scaleY=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(r).scaleY,void 0,{number:!0}]])])]),R(r).shape==="circle"?(K(),Mt(Be,{key:0,label:"半径",min:1,max:1e3,step:1,modelValue:R(r).radius,"onUpdate:modelValue":S[24]||(S[24]=b=>R(r).radius=b)},null,8,["modelValue"])):R(r).shape==="ellipse"?(K(),Q("div",$L,[T("label",XL,[S[78]||(S[78]=T("span",null,"X 半径",-1)),de(T("input",{"onUpdate:modelValue":S[25]||(S[25]=b=>R(r).radiusX=b),type:"number",min:"1",class:"inp"},null,512),[[He,R(r).radiusX,void 0,{number:!0}]])]),T("label",VL,[S[79]||(S[79]=T("span",null,"Y 半径",-1)),de(T("input",{"onUpdate:modelValue":S[26]||(S[26]=b=>R(r).radiusY=b),type:"number",min:"1",class:"inp"},null,512),[[He,R(r).radiusY,void 0,{number:!0}]])])])):(K(),Q("div",YL,[T("label",GL,[S[80]||(S[80]=T("span",null,"宽度",-1)),de(T("input",{"onUpdate:modelValue":S[27]||(S[27]=b=>R(r).width=b),type:"number",min:"1",class:"inp"},null,512),[[He,R(r).width,void 0,{number:!0}]])]),T("label",HL,[S[81]||(S[81]=T("span",null,"高度",-1)),de(T("input",{"onUpdate:modelValue":S[28]||(S[28]=b=>R(r).height=b),type:"number",min:"1",class:"inp"},null,512),[[He,R(r).height,void 0,{number:!0}]])])])),R(r).shape==="polygon"||R(r).shape==="custom"?(K(),Mt(Be,{key:3,label:"边数",min:3,max:16,step:1,modelValue:R(r).sides,"onUpdate:modelValue":S[29]||(S[29]=b=>R(r).sides=b)},null,8,["modelValue"])):Te("",!0),T("label",jL,[S[83]||(S[83]=T("span",null,"碰撞响应",-1)),de(T("select",{"onUpdate:modelValue":S[30]||(S[30]=b=>R(r).response=b),class:"inp"},[...S[82]||(S[82]=[T("option",{value:"physics"},"物理(弹跳/摩擦)",-1),T("option",{value:"pause"},"暂停(停止不动)",-1),T("option",{value:"destroy"},"消失(立即销毁)",-1)])],512),[[wt,R(r).response]])]),R(r).response==="physics"?(K(),Q("div",WL,[T("label",zL,[S[84]||(S[84]=T("span",null,"弹性 (0-1)",-1)),de(T("input",{"onUpdate:modelValue":S[31]||(S[31]=b=>R(r).elasticity=b),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[He,R(r).elasticity,void 0,{number:!0}]])]),T("label",qL,[S[85]||(S[85]=T("span",null,"摩擦 (0-1)",-1)),de(T("input",{"onUpdate:modelValue":S[32]||(S[32]=b=>R(r).friction=b),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[He,R(r).friction,void 0,{number:!0}]])])])):Te("",!0),T("div",KL,[T("label",ZL,[de(T("input",{"onUpdate:modelValue":S[33]||(S[33]=b=>R(r).followPath=b),type:"checkbox"},null,512),[[Et,R(r).followPath]]),S[86]||(S[86]=At("跟随路径移动",-1))]),R(r).followPath?(K(),Q(Fe,{key:0},[T("label",JL,[S[88]||(S[88]=T("span",null,"目标路径",-1)),de(T("select",{"onUpdate:modelValue":S[34]||(S[34]=b=>R(r).followPathId=b),class:"inp"},[S[87]||(S[87]=T("option",{value:0},"(未选择)",-1)),(K(!0),Q(Fe,null,Dt(R(e).paths,b=>(K(),Q("option",{key:b.id,value:b.id},_e(b.name),9,QL))),128))],512),[[wt,R(r).followPathId,void 0,{number:!0}]])]),T("div",eD,[T("label",tD,[S[89]||(S[89]=T("span",null,"移动时长(秒)",-1)),de(T("input",{"onUpdate:modelValue":S[35]||(S[35]=b=>R(r).followDuration=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(r).followDuration,void 0,{number:!0}]])]),T("label",iD,[S[91]||(S[91]=T("span",null,"曲线模式",-1)),de(T("select",{"onUpdate:modelValue":S[36]||(S[36]=b=>R(r).followCurveMode=b),class:"inp"},[...S[90]||(S[90]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[wt,R(r).followCurveMode]])])]),T("label",sD,[de(T("input",{"onUpdate:modelValue":S[37]||(S[37]=b=>R(r).followPathRotation=b),type:"checkbox"},null,512),[[Et,R(r).followPathRotation]]),S[92]||(S[92]=At("方向沿路径",-1))]),S[93]||(S[93]=T("div",{class:"collider-curve-title"},[At("移动进度曲线 "),T("small",null,"横轴:实时/移动时长 纵轴:路径进度(0=起点 → 1=终点)")],-1)),be(qs,{"model-value":R(r).followCurve||R(_),"default-value":R(_),mode:R(t)(R(r).followCurveMode),"onUpdate:modelValue":S[38]||(S[38]=b=>R(r).followCurve=b)},null,8,["model-value","default-value","mode"])],64)):Te("",!0)])],64)):R(o)?(K(),Q(Fe,{key:2},[S[104]||(S[104]=T("div",{class:"object-editor-title"},"路径属性",-1)),T("label",nD,[S[95]||(S[95]=T("span",null,"路径名称",-1)),de(T("input",{"onUpdate:modelValue":S[39]||(S[39]=b=>R(o).name=b),class:"inp"},null,512),[[He,R(o).name]])]),T("div",rD,[T("label",oD,[S[96]||(S[96]=T("span",null,"X 位置",-1)),de(T("input",{"onUpdate:modelValue":S[40]||(S[40]=b=>R(o).x=b),type:"number",class:"inp"},null,512),[[He,R(o).x,void 0,{number:!0}]])]),T("label",aD,[S[97]||(S[97]=T("span",null,"Y 位置",-1)),de(T("input",{"onUpdate:modelValue":S[41]||(S[41]=b=>R(o).y=b),type:"number",class:"inp"},null,512),[[He,R(o).y,void 0,{number:!0}]])])]),be(Be,{label:"旋转",min:-360,max:360,step:1,modelValue:R(o).rotation,"onUpdate:modelValue":S[42]||(S[42]=b=>R(o).rotation=b)},null,8,["modelValue"]),T("div",lD,[T("label",cD,[S[98]||(S[98]=T("span",null,"缩放 X",-1)),de(T("input",{"onUpdate:modelValue":S[43]||(S[43]=b=>R(o).scaleX=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(o).scaleX,void 0,{number:!0}]])]),T("label",hD,[S[99]||(S[99]=T("span",null,"缩放 Y",-1)),de(T("input",{"onUpdate:modelValue":S[44]||(S[44]=b=>R(o).scaleY=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(o).scaleY,void 0,{number:!0}]])])]),T("label",uD,[S[100]||(S[100]=T("span",null,"闭合路径",-1)),de(T("input",{"onUpdate:modelValue":S[45]||(S[45]=b=>R(o).closed=b),type:"checkbox"},null,512),[[Et,R(o).closed]])]),T("label",dD,[S[101]||(S[101]=T("span",null,"路径颜色",-1)),de(T("input",{"onUpdate:modelValue":S[46]||(S[46]=b=>R(o).color=b),type:"color",class:"path-color"},null,512),[[He,R(o).color]])]),S[105]||(S[105]=es('
操作说明:
  • 双击空白处/曲线:新建锚点
  • 双击锚点:删除节点
  • 双击第二下按住拖动:新建并拉出手柄
  • 拖动锚点移动位置,拖动手柄调整曲线
  • Shift+拖动手柄:两侧完全对称
  • Alt+拖动手柄:独立控制单侧
  • Ctrl+点击/框选:加选节点
  • Alt+点击/框选:减选节点
  • Alt+单击空白处:清除全部选中
  • 选中多个节点后可整体拖动
',1)),T("label",fD,[S[103]||(S[103]=T("span",null,"应用预设形状",-1)),de(T("select",{"onUpdate:modelValue":S[47]||(S[47]=b=>R(o).preset=b),class:"inp"},[...S[102]||(S[102]=[es('',5)])],512),[[wt,R(o).preset]])]),T("button",{class:"path-action primary",onClick:S[48]||(S[48]=(...b)=>R(v)&&R(v)(...b))},"应用预设"),T("button",{class:"path-action",onClick:S[49]||(S[49]=(...b)=>R(x)&&R(x)(...b))},"清空锚点")],64)):R(a)?(K(),Mt(KB,{key:3,"spine-object":R(a)},null,8,["spine-object"])):(K(),Q("div",mD,"使用右上角按钮创建场景对象"))],512),[[vi,!R(l).scene]])]))}}),gD=Qt(pD,[["__scopeId","data-v-3873124f"]]),vD={class:"group"},yD={class:"caret"},xD={class:"group-body"},bD={class:"segs"},wD={class:"segs stream-behavior-segs"},SD={key:2,class:"stream-loop-options"},_D={class:"loop-section-row"},TD={class:"switch-row"},MD=["checked"],CD={key:0,class:"loop-duration-control"},AD={class:"switch-row loop-duration-toggle"},ED=["checked"],ID={class:"loop-section-duration"},RD=["value"],PD={key:1},kD={key:2,class:"loop-auto-duration"},FD={class:"loop-section-row"},OD={class:"switch-row"},BD=["checked"],LD={key:0,class:"loop-duration-control"},DD={class:"switch-row loop-duration-toggle"},ND=["checked"],UD={class:"loop-section-duration"},$D=["value"],XD={key:1},VD={key:2,class:"loop-auto-duration"},YD={key:3,class:"modifier-hint stream-loop-hint"},GD={class:"group"},HD={class:"caret"},jD={class:"group-body"},WD={class:"row"},zD={class:"row"},qD=["value","disabled"],KD={key:0,class:"row"},ZD={class:"row"},JD={key:0,value:"radial"},QD={key:1,value:"path-normal"},eN={key:2,value:"path-tangent"},tN=Jt({__name:"EmissionSection",setup(s){const{store:e,sys:t,automaticLoopDuration:i,loopDurationFrames:n,collapsed:r,toggle:o,setEmitMode:a,setLoopDurationFrames:c,setStreamBehavior:l,setLoopSection:h,setLoopSectionDuration:u,setLoopCustomDuration:d,resetModule:f,select:p,onShapeChange:m,onSpawnPathChange:g}=br();return(v,x)=>(K(),Q(Fe,null,[T("div",vD,[T("div",{class:"group-head",onClick:x[1]||(x[1]=y=>R(o)("emitMode"))},[T("span",yD,_e(R(r).emitMode?"▸":"▾"),1),x[35]||(x[35]=T("span",null,"发射模式",-1)),T("button",{class:"group-reset",title:"重置发射模式参数",onClick:x[0]||(x[0]=et(y=>R(f)("emitMode"),["stop"]))},"重置")]),de(T("div",xD,[T("div",bD,[T("button",{class:Le(["seg",{on:R(t).config.mode==="stream"}]),onClick:x[2]||(x[2]=y=>R(a)("stream"))},"持续",2),T("button",{class:Le(["seg",{on:R(t).config.mode==="burst"}]),onClick:x[3]||(x[3]=y=>R(a)("burst"))},"爆发",2)]),R(t).config.mode==="stream"?(K(),Q(Fe,{key:0},[T("div",wD,[T("button",{class:Le(["seg",{on:R(t).config.streamBehavior==="normal"}]),onClick:x[4]||(x[4]=y=>R(l)("normal"))},"常规持续",2),T("button",{class:Le(["seg",{on:R(t).config.streamBehavior==="loop"}]),onClick:x[5]||(x[5]=y=>R(l)("loop"))},"循环持续",2)]),be(Be,{label:"发射速率",min:1,max:300,step:1,modelValue:R(t).config.rate,"onUpdate:modelValue":x[6]||(x[6]=y=>R(t).config.rate=y)},null,8,["modelValue"]),R(t).config.streamBehavior==="normal"?(K(),Mt(Be,{key:0,label:"发射时长",min:1/30,max:60,step:1/30,modelValue:R(t).config.duration,"onUpdate:modelValue":x[7]||(x[7]=y=>R(t).config.duration=y)},null,8,["modelValue"])):(K(),Mt(Be,{key:1,label:"发射时长 (f)",min:1,max:1800,step:1,"model-value":R(n),"onUpdate:modelValue":R(c)},null,8,["model-value","onUpdate:modelValue"])),R(t).config.streamBehavior==="loop"?(K(),Q("div",SD,[T("div",_D,[T("label",TD,[T("input",{type:"checkbox",checked:R(t).config.generateLoopStartAnimation,onChange:x[8]||(x[8]=y=>R(h)("start",y))},null,40,MD),x[36]||(x[36]=T("span",{class:"switch-ui"},null,-1)),x[37]||(x[37]=T("span",null,"生成开始循环动画",-1))]),R(t).config.generateLoopStartAnimation?(K(),Q("div",CD,[T("label",AD,[T("input",{type:"checkbox",checked:R(t).config.loopStartUseCustomDuration,onChange:x[9]||(x[9]=y=>R(d)("start",y))},null,40,ED),x[38]||(x[38]=T("span",{class:"switch-ui"},null,-1)),x[39]||(x[39]=T("span",null,"指定时长",-1))]),T("label",ID,[R(t).config.loopStartUseCustomDuration?(K(),Q("input",{key:0,value:R(t).config.loopStartDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"开始循环段时长",onChange:x[10]||(x[10]=y=>R(u)("start",y))},null,40,RD)):Te("",!0),R(t).config.loopStartUseCustomDuration?(K(),Q("span",PD,"f")):(K(),Q("span",kD,"自动 "+_e(R(i))+"f",1))])])):Te("",!0)]),T("div",FD,[T("label",OD,[T("input",{type:"checkbox",checked:R(t).config.generateLoopEndAnimation,onChange:x[11]||(x[11]=y=>R(h)("end",y))},null,40,BD),x[40]||(x[40]=T("span",{class:"switch-ui"},null,-1)),x[41]||(x[41]=T("span",null,"生成结束循环动画",-1))]),R(t).config.generateLoopEndAnimation?(K(),Q("div",LD,[T("label",DD,[T("input",{type:"checkbox",checked:R(t).config.loopEndUseCustomDuration,onChange:x[12]||(x[12]=y=>R(d)("end",y))},null,40,ND),x[42]||(x[42]=T("span",{class:"switch-ui"},null,-1)),x[43]||(x[43]=T("span",null,"指定时长",-1))]),T("label",UD,[R(t).config.loopEndUseCustomDuration?(K(),Q("input",{key:0,value:R(t).config.loopEndDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"结束循环段时长",onChange:x[13]||(x[13]=y=>R(u)("end",y))},null,40,$D)):Te("",!0),R(t).config.loopEndUseCustomDuration?(K(),Q("span",XD,"f")):(K(),Q("span",VD,"自动 "+_e(R(i))+"f",1))])])):Te("",!0)])])):Te("",!0),R(t).config.streamBehavior==="loop"?(K(),Q("div",YD,"循环持续模式不支持骨骼跟随和路径跟随;进入或退出时会将粒子跟随设置恢复默认值。")):Te("",!0)],64)):(K(),Mt(Be,{key:1,label:"单次数量",min:1,max:1e3,step:1,modelValue:R(t).config.burstCount,"onUpdate:modelValue":x[14]||(x[14]=y=>R(t).config.burstCount=y)},null,8,["modelValue"])),be(Be,{label:"延迟时间",min:0,max:5,step:.1,modelValue:R(t).config.delay,"onUpdate:modelValue":x[15]||(x[15]=y=>R(t).config.delay=y)},null,8,["modelValue"])],512),[[vi,!R(r).emitMode]])]),T("div",GD,[T("div",{class:"group-head",onClick:x[17]||(x[17]=y=>R(o)("shape"))},[T("span",HD,_e(R(r).shape?"▸":"▾"),1),x[44]||(x[44]=T("span",null,"发射器形状",-1)),T("button",{class:"group-reset",title:"重置发射器形状参数",onClick:x[16]||(x[16]=et(y=>R(f)("shape"),["stop"]))},"重置")]),de(T("div",jD,[T("label",WD,[x[46]||(x[46]=T("span",null,"形状",-1)),de(T("select",{"onUpdate:modelValue":x[18]||(x[18]=y=>R(t).config.shape=y),class:"inp",onChange:x[19]||(x[19]=(...y)=>R(m)&&R(m)(...y))},[...x[45]||(x[45]=[es('',5)])],544),[[wt,R(t).config.shape]])]),R(t).config.shape==="circle"||R(t).config.shape==="cone"?(K(),Q(Fe,{key:0},[be(Be,{label:R(t).config.shape==="cone"?"内径":"内半径",min:0,max:R(t).config.outerRadius,step:1,modelValue:R(t).config.innerRadius,"onUpdate:modelValue":x[20]||(x[20]=y=>R(t).config.innerRadius=y)},null,8,["label","max","modelValue"]),be(Be,{label:R(t).config.shape==="cone"?"外径":"外半径",min:R(t).config.innerRadius,max:300,step:1,modelValue:R(t).config.outerRadius,"onUpdate:modelValue":x[21]||(x[21]=y=>R(t).config.outerRadius=y)},null,8,["label","min","modelValue"])],64)):Te("",!0),R(t).config.shape==="cone"?(K(),Q(Fe,{key:1},[be(Be,{label:"锥形朝向",min:-360,max:360,step:1,modelValue:R(t).config.coneDirection,"onUpdate:modelValue":x[22]||(x[22]=y=>R(t).config.coneDirection=y)},null,8,["modelValue"]),be(Be,{label:"锥形开口角度",min:1,max:360,step:1,modelValue:R(t).config.coneAngle,"onUpdate:modelValue":x[23]||(x[23]=y=>R(t).config.coneAngle=y)},null,8,["modelValue"])],64)):R(t).config.shape==="rect"?(K(),Q(Fe,{key:2},[be(Be,{label:"内宽",min:0,max:R(t).config.outerRectW,step:1,modelValue:R(t).config.innerRectW,"onUpdate:modelValue":x[24]||(x[24]=y=>R(t).config.innerRectW=y)},null,8,["max","modelValue"]),be(Be,{label:"内高",min:0,max:R(t).config.outerRectH,step:1,modelValue:R(t).config.innerRectH,"onUpdate:modelValue":x[25]||(x[25]=y=>R(t).config.innerRectH=y)},null,8,["max","modelValue"]),be(Be,{label:"外宽",min:R(t).config.innerRectW,max:400,step:1,modelValue:R(t).config.outerRectW,"onUpdate:modelValue":x[26]||(x[26]=y=>R(t).config.outerRectW=y)},null,8,["min","modelValue"]),be(Be,{label:"外高",min:R(t).config.innerRectH,max:400,step:1,modelValue:R(t).config.outerRectH,"onUpdate:modelValue":x[27]||(x[27]=y=>R(t).config.outerRectH=y)},null,8,["min","modelValue"])],64)):R(t).config.shape==="path"?(K(),Q(Fe,{key:3},[T("label",zD,[x[48]||(x[48]=T("span",null,"选择路径",-1)),de(T("select",{"onUpdate:modelValue":x[28]||(x[28]=y=>R(t).config.spawnPathId=y),class:"inp",onChange:x[29]||(x[29]=(...y)=>R(g)&&R(g)(...y))},[x[47]||(x[47]=T("option",{value:0},"无路径(点发射)",-1)),(K(!0),Q(Fe,null,Dt(R(e).paths,y=>(K(),Q("option",{key:y.id,value:y.id,disabled:!y.enabled},_e(y.name),9,qD))),128))],544),[[wt,R(t).config.spawnPathId,void 0,{number:!0}]])]),R(t).config.spawnPathId>0?(K(),Q("label",KD,[x[50]||(x[50]=T("span",null,"出生分布",-1)),de(T("select",{"onUpdate:modelValue":x[30]||(x[30]=y=>R(t).config.spawnPathDistribution=y),class:"inp"},[...x[49]||(x[49]=[T("option",{value:"fixed"},"等间距固定分布",-1),T("option",{value:"random"},"随机分布",-1)])],512),[[wt,R(t).config.spawnPathDistribution]])])):Te("",!0)],64)):Te("",!0),x[54]||(x[54]=T("div",{class:"divider"},null,-1)),T("label",ZD,[x[53]||(x[53]=T("span",null,"发射角度",-1)),de(T("select",{"onUpdate:modelValue":x[31]||(x[31]=y=>R(t).config.emissionAngleMode=y),class:"inp"},[x[51]||(x[51]=T("option",{value:"fixed"},"固定",-1)),x[52]||(x[52]=T("option",{value:"random"},"随机",-1)),R(t).config.shape==="circle"||R(t).config.shape==="rect"||R(t).config.shape==="cone"?(K(),Q("option",JD,"径向(中心向外)")):Te("",!0),R(t).config.shape==="path"&&R(t).config.spawnPathId>0?(K(),Q("option",QD,"垂直于路径")):Te("",!0),R(t).config.shape==="path"&&R(t).config.spawnPathId>0?(K(),Q("option",eN,"沿路径方向")):Te("",!0)],512),[[wt,R(t).config.emissionAngleMode]])]),R(t).config.emissionAngleMode==="fixed"?(K(),Mt(Be,{key:4,label:"固定角度",min:-360,max:360,step:1,modelValue:R(t).config.direction,"onUpdate:modelValue":x[32]||(x[32]=y=>R(t).config.direction=y)},null,8,["modelValue"])):R(t).config.emissionAngleMode==="random"?(K(),Q(Fe,{key:5},[be(Be,{label:"基准角度",min:-360,max:360,step:1,modelValue:R(t).config.direction,"onUpdate:modelValue":x[33]||(x[33]=y=>R(t).config.direction=y)},null,8,["modelValue"]),be(Be,{label:"随机范围",min:0,max:360,step:1,modelValue:R(t).config.spread,"onUpdate:modelValue":x[34]||(x[34]=y=>R(t).config.spread=y)},null,8,["modelValue"])],64)):Te("",!0)],512),[[vi,!R(r).shape]])])],64))}}),iN=Qt(tN,[["__scopeId","data-v-59bf8cf4"]]),sN={class:"pac"},nN={class:"pac-head"},rN={class:"pac-label"},oN={key:0,class:"pac-modes"},aN=["onClick"],lN={class:"pac-range"},cN={class:"pac-curve"},hN={class:"pac-axis"},uN=Jt({__name:"ParticleAttributeControl",props:{label:{},mode:{},valueMin:{},valueMax:{},curve:{},defaultCurve:{default:()=>[{x:0,y:0},{x:1,y:1}]},min:{},max:{},step:{default:1},allowDirection:{type:Boolean,default:!1},allowCurve:{type:Boolean,default:!0},showModes:{type:Boolean,default:!0},curveLabel:{default:"曲线输入 →"}},emits:["update:mode","update:valueMin","update:valueMax","update:curve"],setup(s){const e=s,t=qe(()=>{const i=[{label:"固定",value:"fixed"},{label:"随机",value:"random"}];return e.allowCurve&&i.push({label:"曲线",value:"curve"}),e.allowDirection&&i.push({label:"发射方向",value:"direction"}),i});return(i,n)=>(K(),Q("div",sN,[T("div",nN,[T("span",rN,_e(s.label),1),s.showModes?(K(),Q("div",oN,[(K(!0),Q(Fe,null,Dt(t.value,r=>(K(),Q("button",{key:r.value,class:Le(["pac-mode",{on:s.mode===r.value}]),onClick:o=>i.$emit("update:mode",r.value)},_e(r.label),11,aN))),128))])):Te("",!0)]),s.mode==="fixed"||s.mode==="direction"?(K(),Mt(Be,{key:0,label:s.mode==="direction"?"角度偏移":"数值",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[0]||(n[0]=r=>i.$emit("update:valueMin",r))},null,8,["label","min","max","step","model-value"])):s.mode==="random"?(K(),Q(Fe,{key:1},[be(Be,{label:"下限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[1]||(n[1]=r=>i.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),be(Be,{label:"上限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMax,"onUpdate:modelValue":n[2]||(n[2]=r=>i.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])],64)):(K(),Q(Fe,{key:2},[T("div",lN,[be(Be,{label:"范围下限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[3]||(n[3]=r=>i.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),be(Be,{label:"范围上限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMax,"onUpdate:modelValue":n[4]||(n[4]=r=>i.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])]),T("div",cN,[be(qs,{"model-value":s.curve,"default-value":s.defaultCurve,"onUpdate:modelValue":n[5]||(n[5]=r=>i.$emit("update:curve",r))},null,8,["model-value","default-value"]),T("div",hN,[n[6]||(n[6]=T("span",null,"0",-1)),T("span",null,_e(s.curveLabel),1),n[7]||(n[7]=T("span",null,"1",-1))])])],64))]))}}),mn=Qt(uN,[["__scopeId","data-v-238f838c"]]),dN={class:"group"},fN={class:"caret"},mN={class:"group-body attr-body"},pN={class:"attr-axis-head"},gN={class:"axis-modes"},vN={class:"life-item"},yN={class:"switch-row"},xN={class:"life-item"},bN={class:"switch-row"},wN={class:"axis-modes life-axis"},SN={class:"life-item"},_N={class:"switch-row"},TN=Jt({__name:"ParticleAttributesSection",setup(s){const{sys:e,collapsed:t,toggle:i,resetModule:n,setSpeedOverLifeMode:r,prepareScaleOverLifeCurve:o,setScaleOverLifeMode:a,LINEAR_CURVE:c,FLAT_CURVE:l}=br();return(h,u)=>(K(),Q("div",dN,[T("div",{class:"group-head",onClick:u[1]||(u[1]=d=>R(i)("attr"))},[T("span",fN,_e(R(t).attr?"▸":"▾"),1),u[44]||(u[44]=T("span",null,"粒子属性",-1)),T("button",{class:"group-reset",title:"重置粒子属性参数",onClick:u[0]||(u[0]=et(d=>R(n)("attr"),["stop"]))},"重置")]),de(T("div",mN,[u[52]||(u[52]=T("div",{class:"attr-section-title"},"粒子初始参数",-1)),be(mn,{label:"初始生命周期","allow-curve":!1,mode:R(e).config.lifeMode,"onUpdate:mode":u[2]||(u[2]=d=>R(e).config.lifeMode=d),"value-min":R(e).config.lifeMin,"onUpdate:valueMin":u[3]||(u[3]=d=>R(e).config.lifeMin=d),"value-max":R(e).config.lifeMax,"onUpdate:valueMax":u[4]||(u[4]=d=>R(e).config.lifeMax=d),curve:R(e).config.lifeCurve,"onUpdate:curve":u[5]||(u[5]=d=>R(e).config.lifeCurve=d),min:.1,max:10,step:.1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),be(mn,{label:"初始速度","allow-curve":!1,mode:R(e).config.speedMode,"onUpdate:mode":u[6]||(u[6]=d=>R(e).config.speedMode=d),"value-min":R(e).config.speedMin,"onUpdate:valueMin":u[7]||(u[7]=d=>R(e).config.speedMin=d),"value-max":R(e).config.speedMax,"onUpdate:valueMax":u[8]||(u[8]=d=>R(e).config.speedMax=d),curve:R(e).config.speedCurve,"onUpdate:curve":u[9]||(u[9]=d=>R(e).config.speedCurve=d),min:0,max:1e3,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),T("div",pN,[u[45]||(u[45]=T("span",null,"初始缩放",-1)),T("div",gN,[T("button",{class:Le(["axis-mode",{on:R(e).config.scaleAxisMode==="uniform"}]),onClick:u[10]||(u[10]=d=>R(e).config.scaleAxisMode="uniform")},"统一",2),T("button",{class:Le(["axis-mode",{on:R(e).config.scaleAxisMode==="separate"}]),onClick:u[11]||(u[11]=d=>R(e).config.scaleAxisMode="separate")},"XY分离",2)])]),be(mn,{label:R(e).config.scaleAxisMode==="uniform"?"初始缩放":"缩放 X","allow-curve":!1,mode:R(e).config.scaleMode,"onUpdate:mode":u[12]||(u[12]=d=>R(e).config.scaleMode=d),"value-min":R(e).config.scaleMin,"onUpdate:valueMin":u[13]||(u[13]=d=>R(e).config.scaleMin=d),"value-max":R(e).config.scaleMax,"onUpdate:valueMax":u[14]||(u[14]=d=>R(e).config.scaleMax=d),curve:R(e).config.scaleCurve,"onUpdate:curve":u[15]||(u[15]=d=>R(e).config.scaleCurve=d),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["label","mode","value-min","value-max","curve"]),R(e).config.scaleAxisMode==="separate"?(K(),Mt(mn,{key:0,label:"缩放 Y","show-modes":!1,"allow-curve":!1,mode:R(e).config.scaleMode,"onUpdate:mode":u[16]||(u[16]=d=>R(e).config.scaleMode=d),"value-min":R(e).config.scaleYMin,"onUpdate:valueMin":u[17]||(u[17]=d=>R(e).config.scaleYMin=d),"value-max":R(e).config.scaleYMax,"onUpdate:valueMax":u[18]||(u[18]=d=>R(e).config.scaleYMax=d),curve:R(e).config.scaleYCurve,"onUpdate:curve":u[19]||(u[19]=d=>R(e).config.scaleYCurve=d),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"])):Te("",!0),be(mn,{label:"初始旋转","allow-direction":"","allow-curve":!1,mode:R(e).config.initialRotationMode,"onUpdate:mode":u[20]||(u[20]=d=>R(e).config.initialRotationMode=d),"value-min":R(e).config.initialRotationMin,"onUpdate:valueMin":u[21]||(u[21]=d=>R(e).config.initialRotationMin=d),"value-max":R(e).config.initialRotationMax,"onUpdate:valueMax":u[22]||(u[22]=d=>R(e).config.initialRotationMax=d),curve:R(e).config.initialRotationCurve,"onUpdate:curve":u[23]||(u[23]=d=>R(e).config.initialRotationCurve=d),min:-360,max:360,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),u[53]||(u[53]=T("div",{class:"attr-section-title life-title"},"粒子生命周期变化参数",-1)),T("div",vN,[T("label",yN,[de(T("input",{type:"checkbox","onUpdate:modelValue":u[24]||(u[24]=d=>R(e).config.speedOverLifeEnabled=d)},null,512),[[Et,R(e).config.speedOverLifeEnabled]]),u[46]||(u[46]=T("span",{class:"switch-ui"},null,-1)),u[47]||(u[47]=T("span",null,"生命周期内速度",-1))]),R(e).config.speedOverLifeEnabled?(K(),Mt(mn,{key:0,label:"速度倍率",mode:R(e).config.speedOverLifeMode,"onUpdate:mode":R(r),"value-min":R(e).config.speedOverLifeMin,"onUpdate:valueMin":u[25]||(u[25]=d=>R(e).config.speedOverLifeMin=d),"value-max":R(e).config.speedOverLifeMax,"onUpdate:valueMax":u[26]||(u[26]=d=>R(e).config.speedOverLifeMax=d),curve:R(e).config.speedOverLifeCurve,"onUpdate:curve":u[27]||(u[27]=d=>R(e).config.speedOverLifeCurve=d),"default-curve":R(l),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","onUpdate:mode","value-min","value-max","curve","default-curve"])):Te("",!0)]),T("div",xN,[T("label",bN,[de(T("input",{type:"checkbox","onUpdate:modelValue":u[28]||(u[28]=d=>R(e).config.scaleOverLifeEnabled=d),onChange:u[29]||(u[29]=(...d)=>R(o)&&R(o)(...d))},null,544),[[Et,R(e).config.scaleOverLifeEnabled]]),u[48]||(u[48]=T("span",{class:"switch-ui"},null,-1)),u[49]||(u[49]=T("span",null,"生命周期内缩放",-1))]),R(e).config.scaleOverLifeEnabled?(K(),Q(Fe,{key:0},[T("div",wN,[T("button",{class:Le(["axis-mode",{on:R(e).config.scaleOverLifeAxisMode==="uniform"}]),onClick:u[30]||(u[30]=d=>R(e).config.scaleOverLifeAxisMode="uniform")},"统一",2),T("button",{class:Le(["axis-mode",{on:R(e).config.scaleOverLifeAxisMode==="separate"}]),onClick:u[31]||(u[31]=d=>R(e).config.scaleOverLifeAxisMode="separate")},"XY分离",2)]),be(mn,{label:R(e).config.scaleOverLifeAxisMode==="uniform"?"缩放倍率":"倍率 X",mode:R(e).config.scaleOverLifeMode,"onUpdate:mode":R(a),"value-min":R(e).config.scaleOverLifeMin,"onUpdate:valueMin":u[32]||(u[32]=d=>R(e).config.scaleOverLifeMin=d),"value-max":R(e).config.scaleOverLifeMax,"onUpdate:valueMax":u[33]||(u[33]=d=>R(e).config.scaleOverLifeMax=d),curve:R(e).config.scaleOverLifeCurve,"onUpdate:curve":u[34]||(u[34]=d=>R(e).config.scaleOverLifeCurve=d),"default-curve":R(l),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["label","mode","onUpdate:mode","value-min","value-max","curve","default-curve"]),R(e).config.scaleOverLifeAxisMode==="separate"?(K(),Mt(mn,{key:0,label:"倍率 Y","show-modes":!1,mode:R(e).config.scaleOverLifeMode,"onUpdate:mode":u[35]||(u[35]=d=>R(e).config.scaleOverLifeMode=d),"value-min":R(e).config.scaleYOverLifeMin,"onUpdate:valueMin":u[36]||(u[36]=d=>R(e).config.scaleYOverLifeMin=d),"value-max":R(e).config.scaleYOverLifeMax,"onUpdate:valueMax":u[37]||(u[37]=d=>R(e).config.scaleYOverLifeMax=d),curve:R(e).config.scaleYOverLifeCurve,"onUpdate:curve":u[38]||(u[38]=d=>R(e).config.scaleYOverLifeCurve=d),"default-curve":R(l),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve","default-curve"])):Te("",!0)],64)):Te("",!0)]),T("div",SN,[T("label",_N,[de(T("input",{type:"checkbox","onUpdate:modelValue":u[39]||(u[39]=d=>R(e).config.rotationOverLifeEnabled=d)},null,512),[[Et,R(e).config.rotationOverLifeEnabled]]),u[50]||(u[50]=T("span",{class:"switch-ui"},null,-1)),u[51]||(u[51]=T("span",null,"生命周期内旋转",-1))]),R(e).config.rotationOverLifeEnabled?(K(),Mt(mn,{key:0,label:"旋转速度",mode:R(e).config.rotationOverLifeMode,"onUpdate:mode":u[40]||(u[40]=d=>R(e).config.rotationOverLifeMode=d),"value-min":R(e).config.rotationSpeedMin,"onUpdate:valueMin":u[41]||(u[41]=d=>R(e).config.rotationSpeedMin=d),"value-max":R(e).config.rotationSpeedMax,"onUpdate:valueMax":u[42]||(u[42]=d=>R(e).config.rotationSpeedMax=d),curve:R(e).config.rotationOverLifeCurve,"onUpdate:curve":u[43]||(u[43]=d=>R(e).config.rotationOverLifeCurve=d),"default-curve":R(c),min:-720,max:720,step:10,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve","default-curve"])):Te("",!0)])],512),[[vi,!R(t).attr]])]))}}),MN=Qt(TN,[["__scopeId","data-v-cf6b86a5"]]),CN={class:"gradient-editor"},AN=["title","onClick","onDblclick","onPointerdown"],EN={key:0,class:"gradient-controls"},IN=["value"],RN=["value"],PN={class:"gradient-position"},kN=["value"],FN=["disabled"],ON=Jt({__name:"ColorGradientEditor",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=Ge(null),r=Ge(0),o=qe(()=>t.modelValue[r.value]||null),a=qe(()=>[...t.modelValue].sort((M,I)=>M.position-I.position)),c=qe(()=>{const M=a.value;return M.length?`linear-gradient(90deg, ${M.map(I=>`${I.color} ${l(I.position)*100}%`).join(", ")})`:"#ffffff"});Xi(()=>t.modelValue.length,M=>{r.value>=M&&(r.value=Math.max(0,M-1))});function l(M){return Math.min(1,Math.max(0,Number(M)||0))}function h(){return t.modelValue.map(M=>({position:l(M.position),color:M.color}))}function u(M,I){const F=h();F[M]&&(F[M]={...F[M],...I},i("update:modelValue",F))}function d(M){u(r.value,{color:M.target.value})}function f(M){var E;const I=M.target,F=b(I.value,((E=o.value)==null?void 0:E.color)||"#ffffff");I.value=F,u(r.value,{color:F})}function p(M){const I=M.target;f(M),I.blur()}function m(M){const I=Number(M.target.value);Number.isFinite(I)&&u(r.value,{position:l(I/100)})}function g(M){const I=h();I.push({position:l(M),color:C(I,M)}),r.value=I.length-1,i("update:modelValue",I)}function v(M){if(!n.value)return;const I=n.value.getBoundingClientRect();g((M.clientX-I.left)/Math.max(1,I.width))}function x(){const M=a.value;let I=.5;if(M.length>1){let F=-1;for(let E=0;EF&&(F=k,I=(M[E].position+M[E+1].position)/2)}}g(I)}function y(M){if(t.modelValue.length<=2||M<0)return;const I=h().filter((F,E)=>E!==M);r.value=Math.min(M,I.length-1),i("update:modelValue",I)}function _(M,I){if(!n.value)return;r.value=I;const F=k=>{const O=n.value.getBoundingClientRect();u(I,{position:l((k.clientX-O.left)/Math.max(1,O.width))})},E=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",E),window.removeEventListener("pointercancel",E)};window.addEventListener("pointermove",F),window.addEventListener("pointerup",E),window.addEventListener("pointercancel",E),M.preventDefault()}function C(M,I){const F=[...M].sort((E,k)=>E.position-k.position);if(!F.length)return"#ffffff";if(I<=F[0].position)return F[0].color;if(I>=F[F.length-1].position)return F[F.length-1].color;for(let E=0;EO.position)continue;const D=(I-k.position)/Math.max(1e-4,O.position-k.position);return S(k.color,O.color,D)}return F[F.length-1].color}function S(M,I,F){const E=$=>{const N=parseInt($.replace("#","").padEnd(6,"0").slice(0,6),16);return[N>>16&255,N>>8&255,N&255]},k=E(M),O=E(I),D=$=>Math.round(k[$]+(O[$]-k[$])*F);return`#${[D(0),D(1),D(2)].map($=>$.toString(16).padStart(2,"0")).join("")}`}function b(M,I){let F=M.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(F)&&(F=F.split("").map(E=>E+E).join("")),/^[0-9a-f]{6}$/i.test(F)?`#${F.toLowerCase()}`:I}return(M,I)=>(K(),Q("div",CN,[T("div",{ref_key:"bar",ref:n,class:"gradient-bar",style:di({background:c.value}),title:"双击色带添加色标",onDblclick:v},[(K(!0),Q(Fe,null,Dt(s.modelValue,(F,E)=>(K(),Q("button",{key:E,type:"button",class:Le(["gradient-stop",{selected:E===r.value}]),style:di({left:`${l(F.position)*100}%`,"--stop-color":F.color}),title:`${Math.round(l(F.position)*100)}% · ${F.color}`,onClick:et(k=>r.value=E,["stop"]),onDblclick:et(k=>y(E),["stop"]),onPointerdown:et(k=>_(k,E),["stop"])},null,46,AN))),128))],36),o.value?(K(),Q("div",EN,[T("input",{type:"color",class:"gradient-color",value:o.value.color,"aria-label":"色标颜色",onInput:d},null,40,IN),T("input",{type:"text",class:"gradient-hex-input",value:o.value.color,"aria-label":"色标颜色值",spellcheck:"false",onChange:f,onKeydown:zr(p,["enter"])},null,40,RN),T("label",PN,[T("input",{type:"number",min:"0",max:"100",step:"1",value:Math.round(l(o.value.position)*100),"aria-label":"色标位置",onInput:m},null,40,kN),I[1]||(I[1]=T("span",null,"%",-1))]),T("button",{type:"button",class:"gradient-action",title:"在中间新增颜色",onClick:x},"+"),T("button",{type:"button",class:"gradient-action danger",title:"删除当前色标",disabled:s.modelValue.length<=2,onClick:I[0]||(I[0]=F=>y(r.value))},"×",8,FN)])):Te("",!0),I[2]||(I[2]=T("div",{class:"gradient-hint"},"双击色带新增 · 拖动色标调整位置 · 双击色标删除",-1))]))}}),gS=Qt(ON,[["__scopeId","data-v-f6ab10bf"]]),BN={class:"image-card"},LN={class:"imgrow"},DN=["title"],NN=["src","alt"],UN={key:1,viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#8a93bb","stroke-width":"1.6"},$N={class:"img-fields"},XN={key:0,class:"row"},VN={class:"row"},YN=["placeholder"],GN={class:"img-actions"},HN=["title"],jN=["disabled"],WN={class:"thumb-note"},zN={key:0,class:"row"},qN={class:"row"},KN={class:"row"},ZN={class:"sequence-note"},JN={class:"resource-weight-row"},QN=["disabled","title"],e4={key:0,viewBox:"0 0 24 24","aria-hidden":"true"},t4={key:1,viewBox:"0 0 24 24","aria-hidden":"true"},i4=Jt({__name:"ImageResourceCard",props:{resource:{},resourceCount:{},defaultFile:{},namePlaceholder:{default:"particle"},showFolder:{type:Boolean,default:!0},supportsSequence:{type:Boolean,default:!1}},emits:["pick","pickSequence","reset","remove","updateWeight","toggleLock"],setup(s,{emit:e}){const t=s,i=e,n=qe(()=>{var l,h;if(t.resource.imageMode==="sequence"){const u=t.resource.sequenceFrames||[];if(!u.length)return"未选择序列帧";const d=((l=u[0])==null?void 0:l.name)||"第 1 帧",f=((h=u[u.length-1])==null?void 0:h.name)||d;return u.length===1?`1 帧 · ${d}`:`${u.length} 帧 · ${d} → ${f}`}const c=t.resource.textureName||t.defaultFile.replace(/\.[^.]+$/,"");return c.includes(".")?c:`${c}.png`}),r=qe(()=>{var c,l;return t.resource.imageMode==="sequence"?((l=(c=t.resource.sequenceFrames)==null?void 0:c[0])==null?void 0:l.previewUrl)||"":t.resource.previewUrl}),o=qe(()=>{var u,d;const c=t.resource.sequenceFrames||[];if(!c.length)return"未选择序列帧";const l=((u=c[0])==null?void 0:u.name)||"第一张图片",h=((d=c[c.length-1])==null?void 0:d.name)||"最后一张图片";return`已选择 ${c.length} 帧,按 ${l}-${h} 顺序播放`});function a(){t.supportsSequence&&t.resource.imageMode==="sequence"?i("pickSequence",t.resource.id):i("pick",t.resource.id)}return(c,l)=>(K(),Q("div",BN,[T("div",LN,[T("button",{class:"img-thumb",title:s.supportsSequence&&s.resource.imageMode==="sequence"?"选择序列帧图片":"选择本地图片",onClick:a},[r.value?(K(),Q("img",{key:0,src:r.value,alt:s.resource.textureName},null,8,NN)):(K(),Q("svg",UN,[...l[10]||(l[10]=[T("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"},null,-1),T("circle",{cx:"8.5",cy:"8.5",r:"1.6"},null,-1),T("path",{d:"M21 15l-5-5-9 9"},null,-1)])]))],8,DN),T("div",$N,[s.showFolder?(K(),Q("label",XN,[l[11]||(l[11]=T("span",null,"子文件夹",-1)),de(T("input",{"onUpdate:modelValue":l[0]||(l[0]=h=>s.resource.textureFolder=h),type:"text",class:"inp",placeholder:"subfolder/"},null,512),[[He,s.resource.textureFolder]])])):Te("",!0),T("label",VN,[l[12]||(l[12]=T("span",null,"名称",-1)),de(T("input",{"onUpdate:modelValue":l[1]||(l[1]=h=>s.resource.textureName=h),type:"text",class:"inp",placeholder:s.namePlaceholder},null,8,YN),[[He,s.resource.textureName]])])]),T("div",GN,[T("button",{class:"mini-btn2",title:`恢复 ${s.defaultFile}`,onClick:l[2]||(l[2]=h=>c.$emit("reset",s.resource.id))},"⟳",8,HN),T("button",{class:"mini-btn2",title:"删除图片资源",disabled:s.resourceCount===1,onClick:l[3]||(l[3]=h=>c.$emit("remove",s.resource.id))},"🗑",8,jN)])]),T("div",WN,_e(n.value),1),s.supportsSequence?(K(),Q("label",zN,[l[14]||(l[14]=T("span",null,"图片模式",-1)),de(T("select",{"onUpdate:modelValue":l[4]||(l[4]=h=>s.resource.imageMode=h),class:"inp"},[...l[13]||(l[13]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"sequence"},"序列帧",-1)])],512),[[wt,s.resource.imageMode]])])):Te("",!0),s.supportsSequence&&s.resource.imageMode==="sequence"?(K(),Q(Fe,{key:1},[T("label",qN,[l[16]||(l[16]=T("span",null,"播放模式",-1)),de(T("select",{"onUpdate:modelValue":l[5]||(l[5]=h=>s.resource.sequencePlayback=h),class:"inp"},[...l[15]||(l[15]=[T("option",{value:"once-hide"},"单次-尾帧消失",-1),T("option",{value:"once-hold"},"单次-尾帧固定",-1),T("option",{value:"loop-forward"},"正向循环",-1),T("option",{value:"loop-reverse"},"反向循环",-1)])],512),[[wt,s.resource.sequencePlayback]])]),T("label",KN,[l[17]||(l[17]=T("span",null,"播放帧率",-1)),de(T("input",{"onUpdate:modelValue":l[6]||(l[6]=h=>s.resource.sequenceFps=h),type:"number",min:"1",max:"120",step:"1",class:"inp"},null,512),[[He,s.resource.sequenceFps,void 0,{number:!0}]])]),T("button",{class:"sequence-pick",onClick:l[7]||(l[7]=h=>c.$emit("pickSequence",s.resource.id))},"选择序列帧(多选)"),T("div",ZN,_e(o.value),1)],64)):Te("",!0),T("div",JN,[be(Be,{class:"resource-weight-control",label:"占比%",min:0,max:100,step:1,"model-value":s.resource.weight,disabled:s.resource.locked||s.resourceCount===1,"onUpdate:modelValue":l[8]||(l[8]=h=>c.$emit("updateWeight",s.resource.id,h))},null,8,["model-value","disabled"]),T("button",{class:Le(["weight-lock",{on:s.resource.locked}]),disabled:s.resourceCount===1,title:s.resource.locked?"解除占比锁定":"锁定当前占比",onClick:l[9]||(l[9]=h=>c.$emit("toggleLock",s.resource.id))},[s.resource.locked?(K(),Q("svg",e4,[...l[18]||(l[18]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"},null,-1)])])):(K(),Q("svg",t4,[...l[19]||(l[19]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M16 10V7a4 4 0 0 0-7.5-2"},null,-1)])]))],10,QN)]),R_(c.$slots,"default",{},void 0)]))}}),vS=Qt(i4,[["__scopeId","data-v-68ff5314"]]),s4={class:"group"},n4={class:"caret"},r4={class:"group-body"},o4={class:"seg"},a4={class:"row"},l4={class:"curve-wrap"},c4={class:"look-title image-title"},h4={class:"row"},u4=["onUpdate:modelValue"],d4=["onUpdate:modelValue"],f4={class:"row resource-color-row"},m4=["onUpdate:modelValue"],p4=["onUpdate:modelValue"],g4={key:0,class:"row resource-color-picker"},v4=["onUpdate:modelValue"],y4=["value","onChange","onKeydown"],x4={key:0,class:"random-color-hint"},b4={class:"resource-alpha-head"},w4={class:"alpha-modes"},S4=["onClick"],_4=["onClick"],T4=["onClick"],M4={class:"row"},C4=["onUpdate:modelValue"],A4={class:"resource-alpha-curve"},E4=Jt({__name:"ParticleAppearanceSection",setup(s){const{resolvedCurveEditorMode:e,sys:t,textureFileInput:i,sequenceFileInput:n,addImageResource:r,openTexturePicker:o,openSequencePicker:a,onTextureFile:c,onSequenceFiles:l,resetTexture:h,setResourceFixedColor:u,commitResourceFixedColor:d,removeImageResource:f,setResourceWeight:p,toggleResourceLock:m,collapsed:g,toggle:v,resetModule:x,select:y,ALPHA_CURVE:_,RESOURCE_ALPHA_CURVE:C}=br();return(S,b)=>(K(),Q("div",s4,[T("div",{class:"group-head",onClick:b[1]||(b[1]=M=>R(v)("look"))},[T("span",n4,_e(R(g).look?"▸":"▾"),1),b[10]||(b[10]=T("span",null,"外观与资源",-1)),T("button",{class:"group-reset",title:"重置外观与资源参数",onClick:b[0]||(b[0]=et(M=>R(x)("look"),["stop"]))},"重置")]),de(T("div",r4,[b[24]||(b[24]=T("div",{class:"look-title"},"透明度",-1)),T("div",o4,[T("button",{class:Le(["seg-btn",{active:R(t).config.alphaMode==="curve"}]),onClick:b[2]||(b[2]=M=>R(t).config.alphaMode="curve")},"曲线",2),T("button",{class:Le(["seg-btn",{active:R(t).config.alphaMode==="fixed"}]),onClick:b[3]||(b[3]=M=>R(t).config.alphaMode="fixed")},"固定",2)]),R(t).config.alphaMode==="fixed"?(K(),Mt(Be,{key:0,label:"透明度",min:0,max:1,step:.01,modelValue:R(t).config.alpha,"onUpdate:modelValue":b[4]||(b[4]=M=>R(t).config.alpha=M)},null,8,["modelValue"])):(K(),Q(Fe,{key:1},[T("label",a4,[b[12]||(b[12]=T("span",null,"曲线模式",-1)),de(T("select",{"onUpdate:modelValue":b[5]||(b[5]=M=>R(t).config.curveMode=M),class:"inp"},[...b[11]||(b[11]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[wt,R(t).config.curveMode]])]),T("div",l4,[be(qs,{modelValue:R(t).config.alphaCurve,"onUpdate:modelValue":b[6]||(b[6]=M=>R(t).config.alphaCurve=M),"default-value":R(_),mode:R(e)(R(t).config.curveMode)},null,8,["modelValue","default-value","mode"]),b[13]||(b[13]=T("div",{class:"curve-labels"},[T("span",null,"0(透明)"),T("span",null,"生命周期 →"),T("span",null,"1(不透明)")],-1))])],64)),T("div",c4,[b[14]||(b[14]=T("span",null,"图片资源",-1)),T("button",{class:"image-add",title:"新增图片资源",onClick:b[7]||(b[7]=(...M)=>R(r)&&R(r)(...M))},"+")]),(K(!0),Q(Fe,null,Dt(R(t).config.imageResources,M=>(K(),Mt(vS,{key:M.id,resource:M,"resource-count":R(t).config.imageResources.length,"supports-sequence":"","default-file":"star.png",onPick:R(o),onPickSequence:R(a),onReset:R(h),onRemove:R(f),onUpdateWeight:R(p),onToggleLock:R(m)},{default:$h(()=>[be(Be,{label:"缩放",min:.1,max:3,step:.05,modelValue:M.scale,"onUpdate:modelValue":I=>M.scale=I},null,8,["modelValue","onUpdate:modelValue"]),T("label",h4,[b[15]||(b[15]=T("span",null,"轴心 x,y",-1)),de(T("input",{type:"number",step:"0.05",class:"inp tiny","onUpdate:modelValue":I=>M.anchorX=I},null,8,u4),[[He,M.anchorX,void 0,{number:!0}]]),de(T("input",{type:"number",step:"0.05",class:"inp tiny","onUpdate:modelValue":I=>M.anchorY=I},null,8,d4),[[He,M.anchorY,void 0,{number:!0}]])]),b[23]||(b[23]=T("div",{class:"resource-divider"},null,-1)),T("label",f4,[b[18]||(b[18]=T("span",null,"颜色",-1)),de(T("select",{"onUpdate:modelValue":I=>M.colorMode=I,class:"inp"},[...b[16]||(b[16]=[T("option",{value:"fixed"},"固定色",-1),T("option",{value:"random"},"随机颜色",-1),T("option",{value:"lifetime"},"生命周期",-1)])],8,m4),[[wt,M.colorMode]]),de(T("select",{"onUpdate:modelValue":I=>M.blend=I,class:"inp blend-select"},[...b[17]||(b[17]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,p4),[[wt,M.blend]])]),M.colorMode==="fixed"?(K(),Q("label",g4,[b[19]||(b[19]=T("span",null,"固定色",-1)),de(T("input",{type:"color","onUpdate:modelValue":I=>M.colorStart=I,class:"colr"},null,8,v4),[[He,M.colorStart]]),T("input",{type:"text",class:"hex-input",value:M.colorStart,spellcheck:"false","aria-label":"固定颜色值",onChange:I=>R(u)(M,I),onKeydown:zr(I=>R(d)(M,I),["enter"])},null,40,y4)])):(K(),Q(Fe,{key:1},[be(gS,{modelValue:M.colorGradient,"onUpdate:modelValue":I=>M.colorGradient=I},null,8,["modelValue","onUpdate:modelValue"]),M.colorMode==="random"?(K(),Q("div",x4,"每个粒子出生时从色带随机取色,生命周期内保持不变")):Te("",!0)],64)),T("div",b4,[b[20]||(b[20]=T("span",null,"独立透明度",-1)),T("div",w4,[T("button",{class:Le({on:M.independentAlpha==="off"}),onClick:I=>M.independentAlpha="off"},"关闭",10,S4),T("button",{class:Le({on:M.independentAlpha==="fixed"}),onClick:I=>M.independentAlpha="fixed"},"固定",10,_4),T("button",{class:Le({on:M.independentAlpha==="curve"}),onClick:I=>M.independentAlpha="curve"},"曲线",10,T4)])]),M.independentAlpha==="fixed"?(K(),Mt(Be,{key:2,label:"透明度",min:0,max:1,step:.01,modelValue:M.alpha,"onUpdate:modelValue":I=>M.alpha=I},null,8,["modelValue","onUpdate:modelValue"])):M.independentAlpha==="curve"?(K(),Q(Fe,{key:3},[T("label",M4,[b[22]||(b[22]=T("span",null,"曲线模式",-1)),de(T("select",{"onUpdate:modelValue":I=>M.alphaCurveMode=I,class:"inp"},[...b[21]||(b[21]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],8,C4),[[wt,M.alphaCurveMode]])]),T("div",A4,[be(qs,{modelValue:M.alphaCurve,"onUpdate:modelValue":I=>M.alphaCurve=I,"default-value":R(C),mode:R(e)(M.alphaCurveMode)},null,8,["modelValue","onUpdate:modelValue","default-value","mode"])])],64)):Te("",!0)]),_:2},1032,["resource","resource-count","onPick","onPickSequence","onReset","onRemove","onUpdateWeight","onToggleLock"]))),128)),T("input",{ref_key:"textureFileInput",ref:i,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:b[8]||(b[8]=(...M)=>R(c)&&R(c)(...M))},null,544),T("input",{ref_key:"sequenceFileInput",ref:n,class:"file-input",type:"file",multiple:"",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:b[9]||(b[9]=(...M)=>R(l)&&R(l)(...M))},null,544)],512),[[vi,!R(g).look]])]))}}),I4=Qt(E4,[["__scopeId","data-v-d8fe7aad"]]),R4={class:"group"},P4={class:"caret"},k4={class:"group-body"},F4={class:"modifier-item"},O4={class:"switch-row modifier-switch"},B4={key:0,class:"modifier-params"},L4={class:"modifier-item"},D4={class:"switch-row modifier-switch"},N4={key:0,class:"modifier-params gravity-params"},U4={class:"modifier-mode-row"},$4={class:"modifier-item"},X4={class:"switch-row modifier-switch"},V4={key:0,class:"modifier-params gravity-params"},Y4={class:"modifier-mode-row"},G4={class:"modifier-item"},H4={class:"switch-row modifier-switch"},j4={key:0,class:"modifier-params"},W4={class:"row"},z4={class:"modifier-item"},q4={class:"switch-row modifier-switch"},K4={key:0,class:"modifier-params"},Z4={class:"row"},J4={class:"row"},Q4={class:"modifier-item"},e8={class:"switch-row modifier-switch"},t8={key:0,class:"modifier-params trail-params"},i8={class:"trail-section-head"},s8={class:"row"},n8=["onUpdate:modelValue"],r8={class:"row"},o8=["onUpdate:modelValue"],a8={class:"row"},l8=["onUpdate:modelValue"],c8={class:"switch-row trail-sub-switch"},h8=["onUpdate:modelValue"],u8={class:"switch-row trail-sub-switch"},d8=["onUpdate:modelValue"],f8={class:"trail-mode-head"},m8={class:"alpha-modes"},p8=["onClick"],g8=["onClick"],v8=["onClick"],y8={class:"row"},x8=["onUpdate:modelValue"],b8={key:6,class:"row trail-fixed-color"},w8=["onUpdate:modelValue"],S8=["value","onChange","onKeydown"],_8={class:"trail-mode-head"},T8={class:"alpha-modes"},M8=["onClick"],C8=["onClick"],A8=["onClick"],E8={class:"trail-grid-row"},I8={class:"modifier-item"},R8={class:"switch-row modifier-switch"},P8=["disabled"],k8={key:0,class:"modifier-params emitter-follow-params"},F8={class:"field-block"},O8=["value"],B8={key:0,value:"bone"},L8={class:"field-block"},D8=["value"],N8={class:"field-block"},U8={class:"field-grid follow-grid"},$8={class:"compact-field"},X8={class:"compact-field"},V8={class:"field-block"},Y8={key:0,class:"bone-follow-target"},G8={key:1,class:"bone-follow-missing"},H8={class:"field-block"},j8={class:"field-grid follow-grid"},W8={class:"compact-field"},z8={class:"compact-field"},q8={class:"bone-follow-transform-grid"},K8={class:"compact-field"},Z8={class:"compact-field"},J8={class:"compact-field"},Q8={class:"modifier-item"},e5={class:"switch-row modifier-switch"},t5={key:0,class:"modifier-params collision-filter-params"},i5={class:"collision-filter-tags"},s5=["title"],n5=["aria-label","onClick"],r5=["disabled","title"],o5={key:0,class:"collision-filter-empty"},a5={key:1,class:"collision-filter-picker"},l5=["onClick"],c5=Jt({__name:"ParticleModifiersSection",setup(s){const{store:e,sys:t,trailTextureFileInput:i,addTrailResource:n,openTrailTexturePicker:r,onTrailRigChange:o,onTrailResourceBoneCountChange:a,onTrailResourceRotationChange:c,onTrailTextureFile:l,resetTrailTexture:h,removeTrailResource:u,setTrailResourceWeight:d,toggleTrailResourceLock:f,setTrailColor:p,commitTrailColor:m,selectedSpineBone:g,boundSpineBone:v,collisionPickerOpen:x,selectedCollisionBodies:y,availableCollisionBodies:_,addCollisionBody:C,removeCollisionBody:S,collapsed:b,toggle:M,onEmitterFollowModeChange:I,bindSelectedBone:F,resetModule:E,select:k,LINEAR_CURVE:O,FLAT_CURVE:D,TRAIL_ALPHA_CURVE:$,TRAIL_SHAPE_CURVE:N}=br();return(U,A)=>(K(),Q("div",R4,[T("div",{class:"group-head",onClick:A[1]||(A[1]=P=>R(M)("mods"))},[T("span",P4,_e(R(b).mods?"▸":"▾"),1),A[60]||(A[60]=T("span",null,"修改器",-1)),T("button",{class:"group-reset",title:"重置修改器参数",onClick:A[0]||(A[0]=et(P=>R(E)("mods"),["stop"]))},"重置")]),de(T("div",k4,[T("div",F4,[T("label",O4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[2]||(A[2]=P=>R(t).config.noise=P)},null,512),[[Et,R(t).config.noise]]),A[61]||(A[61]=T("span",{class:"switch-ui"},null,-1)),A[62]||(A[62]=T("span",null,"开启移动噪声",-1))]),R(t).config.noise?(K(),Q("div",B4,[be(Be,{label:"强度",min:0,max:100,step:1,modelValue:R(t).config.noiseAmt,"onUpdate:modelValue":A[3]||(A[3]=P=>R(t).config.noiseAmt=P)},null,8,["modelValue"]),be(Be,{label:"波动范围",min:0,max:500,step:1,modelValue:R(t).config.noiseRange,"onUpdate:modelValue":A[4]||(A[4]=P=>R(t).config.noiseRange=P)},null,8,["modelValue"]),be(Be,{label:"时间流速",min:0,max:10,step:.1,modelValue:R(t).config.noiseSpeed,"onUpdate:modelValue":A[5]||(A[5]=P=>R(t).config.noiseSpeed=P)},null,8,["modelValue"]),A[63]||(A[63]=T("div",{class:"modifier-hint"},"强度控制影响比例 · 波动范围控制最大偏移 · 时间流速控制变化速度",-1))])):Te("",!0)]),T("div",L4,[T("label",D4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[6]||(A[6]=P=>R(t).config.useGravity=P)},null,512),[[Et,R(t).config.useGravity]]),A[64]||(A[64]=T("span",{class:"switch-ui"},null,-1)),A[65]||(A[65]=T("span",null,"开启重力",-1))]),R(t).config.useGravity?(K(),Q("div",N4,[T("div",U4,[T("button",{class:Le(["axis-mode",{on:R(t).config.gravityMode==="fixed"}]),onClick:A[7]||(A[7]=P=>R(t).config.gravityMode="fixed")},"固定",2),T("button",{class:Le(["axis-mode",{on:R(t).config.gravityMode==="random"}]),onClick:A[8]||(A[8]=P=>R(t).config.gravityMode="random")},"随机",2)]),R(t).config.gravityMode==="fixed"?(K(),Mt(Be,{key:0,label:"重力强度",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMin,"onUpdate:modelValue":A[9]||(A[9]=P=>R(t).config.gravityMin=P)},null,8,["modelValue"])):(K(),Q(Fe,{key:1},[be(Be,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMin,"onUpdate:modelValue":A[10]||(A[10]=P=>R(t).config.gravityMin=P)},null,8,["modelValue"]),be(Be,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMax,"onUpdate:modelValue":A[11]||(A[11]=P=>R(t).config.gravityMax=P)},null,8,["modelValue"])],64)),be(Be,{label:"方向",min:-360,max:360,step:1,modelValue:R(t).config.gravityDirection,"onUpdate:modelValue":A[12]||(A[12]=P=>R(t).config.gravityDirection=P)},null,8,["modelValue"]),A[66]||(A[66]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内重力"),T("span",null,"纵轴:强度 0~1")],-1)),be(qs,{modelValue:R(t).config.gravityCurve,"onUpdate:modelValue":A[13]||(A[13]=P=>R(t).config.gravityCurve=P),"default-value":R(D)},null,8,["modelValue","default-value"]),A[67]||(A[67]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),A[68]||(A[68]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):Te("",!0)]),T("div",$4,[T("label",X4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[14]||(A[14]=P=>R(t).config.wind=P)},null,512),[[Et,R(t).config.wind]]),A[69]||(A[69]=T("span",{class:"switch-ui"},null,-1)),A[70]||(A[70]=T("span",null,"开启风力",-1))]),R(t).config.wind?(K(),Q("div",V4,[T("div",Y4,[T("button",{class:Le(["axis-mode",{on:R(t).config.windMode==="fixed"}]),onClick:A[15]||(A[15]=P=>R(t).config.windMode="fixed")},"固定",2),T("button",{class:Le(["axis-mode",{on:R(t).config.windMode==="random"}]),onClick:A[16]||(A[16]=P=>R(t).config.windMode="random")},"随机",2)]),R(t).config.windMode==="fixed"?(K(),Mt(Be,{key:0,label:"风力强度",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMin,"onUpdate:modelValue":A[17]||(A[17]=P=>R(t).config.windMin=P)},null,8,["modelValue"])):(K(),Q(Fe,{key:1},[be(Be,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMin,"onUpdate:modelValue":A[18]||(A[18]=P=>R(t).config.windMin=P)},null,8,["modelValue"]),be(Be,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMax,"onUpdate:modelValue":A[19]||(A[19]=P=>R(t).config.windMax=P)},null,8,["modelValue"])],64)),be(Be,{label:"方向",min:-360,max:360,step:1,modelValue:R(t).config.windDirection,"onUpdate:modelValue":A[20]||(A[20]=P=>R(t).config.windDirection=P)},null,8,["modelValue"]),A[71]||(A[71]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内风力"),T("span",null,"纵轴:强度 0~1")],-1)),be(qs,{modelValue:R(t).config.windCurve,"onUpdate:modelValue":A[21]||(A[21]=P=>R(t).config.windCurve=P),"default-value":R(D)},null,8,["modelValue","default-value"]),A[72]||(A[72]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),A[73]||(A[73]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):Te("",!0)]),T("div",G4,[T("label",H4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[22]||(A[22]=P=>R(t).config.forceField=P)},null,512),[[Et,R(t).config.forceField]]),A[74]||(A[74]=T("span",{class:"switch-ui"},null,-1)),A[75]||(A[75]=T("span",null,"开启力场",-1))]),R(t).config.forceField?(K(),Q("div",j4,[be(Be,{label:"中心 X",min:-5e3,max:5e3,step:1,modelValue:R(t).config.forceCenterX,"onUpdate:modelValue":A[23]||(A[23]=P=>R(t).config.forceCenterX=P)},null,8,["modelValue"]),be(Be,{label:"中心 Y",min:-5e3,max:5e3,step:1,modelValue:R(t).config.forceCenterY,"onUpdate:modelValue":A[24]||(A[24]=P=>R(t).config.forceCenterY=P)},null,8,["modelValue"]),be(Be,{label:"力场强度",min:-300,max:300,step:1,modelValue:R(t).config.forceStrength,"onUpdate:modelValue":A[25]||(A[25]=P=>R(t).config.forceStrength=P)},null,8,["modelValue"]),be(Be,{label:"力场半径",min:1,max:2e3,step:1,modelValue:R(t).config.forceRadius,"onUpdate:modelValue":A[26]||(A[26]=P=>R(t).config.forceRadius=P)},null,8,["modelValue"]),T("label",W4,[A[77]||(A[77]=T("span",null,"衰减模式",-1)),de(T("select",{"onUpdate:modelValue":A[27]||(A[27]=P=>R(t).config.forceFalloff=P),class:"inp"},[...A[76]||(A[76]=[T("option",{value:"constant"},"恒定(范围内力度不变)",-1),T("option",{value:"linear"},"线性衰减(边缘为 0)",-1),T("option",{value:"inverse"},"距离反比(中心最强)",-1)])],512),[[wt,R(t).config.forceFalloff]])]),A[78]||(A[78]=T("div",{class:"modifier-hint"},"正数吸向中心 · 负数向外排斥 · 可在画布内拖动力场圆",-1))])):Te("",!0)]),T("div",z4,[T("label",q4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[28]||(A[28]=P=>R(t).config.attraction=P)},null,512),[[Et,R(t).config.attraction]]),A[79]||(A[79]=T("span",{class:"switch-ui"},null,-1)),A[80]||(A[80]=T("span",null,"开启吸附",-1))]),R(t).config.attraction?(K(),Q("div",K4,[be(Be,{label:"吸附点 X",min:-5e3,max:5e3,step:1,modelValue:R(t).config.attractionCenterX,"onUpdate:modelValue":A[29]||(A[29]=P=>R(t).config.attractionCenterX=P)},null,8,["modelValue"]),be(Be,{label:"吸附点 Y",min:-5e3,max:5e3,step:1,modelValue:R(t).config.attractionCenterY,"onUpdate:modelValue":A[30]||(A[30]=P=>R(t).config.attractionCenterY=P)},null,8,["modelValue"]),be(Be,{label:"吸附半径",min:0,max:2e3,step:1,modelValue:R(t).config.attractionRadius,"onUpdate:modelValue":A[31]||(A[31]=P=>R(t).config.attractionRadius=P)},null,8,["modelValue"]),be(Be,{label:"吸附时长",min:.05,max:30,step:.05,modelValue:R(t).config.attractionDuration,"onUpdate:modelValue":A[32]||(A[32]=P=>R(t).config.attractionDuration=P)},null,8,["modelValue"]),be(Be,{label:"延迟时间",min:0,max:30,step:.05,modelValue:R(t).config.attractionDelay,"onUpdate:modelValue":A[33]||(A[33]=P=>R(t).config.attractionDelay=P)},null,8,["modelValue"]),T("label",Z4,[A[82]||(A[82]=T("span",null,"延迟方式",-1)),de(T("select",{"onUpdate:modelValue":A[34]||(A[34]=P=>R(t).config.attractionDelayMode=P),class:"inp"},[...A[81]||(A[81]=[T("option",{value:"global"},"统一时间",-1),T("option",{value:"particle"},"单粒子生命",-1)])],512),[[wt,R(t).config.attractionDelayMode]])]),T("label",J4,[A[84]||(A[84]=T("span",null,"吸附方式",-1)),de(T("select",{"onUpdate:modelValue":A[35]||(A[35]=P=>R(t).config.attractionPath=P),class:"inp"},[...A[83]||(A[83]=[T("option",{value:"linear"},"直线",-1),T("option",{value:"curve"},"曲线",-1)])],512),[[wt,R(t).config.attractionPath]])]),A[85]||(A[85]=T("div",{class:"modifier-hint"},"延迟后从当前位置开始吸附 · 到达红色范围即死亡 · 可在画布内拖动吸附圆",-1))])):Te("",!0)]),T("div",Q4,[T("label",e8,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[36]||(A[36]=P=>R(t).config.trail=P)},null,512),[[Et,R(t).config.trail]]),A[86]||(A[86]=T("span",{class:"switch-ui"},null,-1)),A[87]||(A[87]=T("span",null,"开启拖尾",-1))]),R(t).config.trail?(K(),Q("div",t8,[T("div",i8,[A[88]||(A[88]=T("div",{class:"trail-section-title"},"拖尾独立图片",-1)),T("button",{class:"image-add",title:"增加拖尾图片资源",onClick:A[37]||(A[37]=(...P)=>R(n)&&R(n)(...P))},"+")]),(K(!0),Q(Fe,null,Dt(R(t).config.trailResources,P=>(K(),Mt(vS,{key:P.id,resource:P,"resource-count":R(t).config.trailResources.length,"default-file":"trail.png","name-placeholder":"trail","show-folder":!1,onPick:R(r),onReset:R(h),onRemove:R(u),onUpdateWeight:R(d),onToggleLock:R(f)},{default:$h(()=>[A[104]||(A[104]=T("div",{class:"resource-divider"},null,-1)),be(Be,{label:"旋转",min:-360,max:360,step:1,"model-value":P.rotation,"onUpdate:modelValue":L=>R(c)(P.id,L)},null,8,["model-value","onUpdate:modelValue"]),be(Be,{label:"拖尾骨骼数",min:2,max:16,step:1,"model-value":P.boneCount,"onUpdate:modelValue":L=>R(a)(P.id,L)},null,8,["model-value","onUpdate:modelValue"]),be(Be,{label:"拖尾比例 (%)",min:0,max:100,step:1,modelValue:P.trailRatio,"onUpdate:modelValue":L=>P.trailRatio=L},null,8,["modelValue","onUpdate:modelValue"]),T("label",s8,[A[90]||(A[90]=T("span",null,"拖尾长度",-1)),de(T("select",{"onUpdate:modelValue":L=>P.lengthMode=L,class:"inp"},[...A[89]||(A[89]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,n8),[[wt,P.lengthMode]])]),P.lengthMode==="fixed"?(K(),Mt(Be,{key:0,label:"长度比例 (%)",min:0,max:500,step:1,modelValue:P.length,"onUpdate:modelValue":L=>P.length=L},null,8,["modelValue","onUpdate:modelValue"])):(K(),Q(Fe,{key:1},[be(Be,{label:"长度最小 (%)",min:0,max:500,step:1,modelValue:P.lengthMin,"onUpdate:modelValue":L=>P.lengthMin=L},null,8,["modelValue","onUpdate:modelValue"]),be(Be,{label:"长度最大 (%)",min:0,max:500,step:1,modelValue:P.lengthMax,"onUpdate:modelValue":L=>P.lengthMax=L},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",r8,[A[92]||(A[92]=T("span",null,"拖尾宽度",-1)),de(T("select",{"onUpdate:modelValue":L=>P.widthSizeMode=L,class:"inp"},[...A[91]||(A[91]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,o8),[[wt,P.widthSizeMode]])]),P.widthSizeMode==="fixed"?(K(),Mt(Be,{key:2,label:"宽度比例 (%)",min:0,max:500,step:1,modelValue:P.width,"onUpdate:modelValue":L=>P.width=L},null,8,["modelValue","onUpdate:modelValue"])):(K(),Q(Fe,{key:3},[be(Be,{label:"宽度最小 (%)",min:0,max:500,step:1,modelValue:P.widthMin,"onUpdate:modelValue":L=>P.widthMin=L},null,8,["modelValue","onUpdate:modelValue"]),be(Be,{label:"宽度最大 (%)",min:0,max:500,step:1,modelValue:P.widthMax,"onUpdate:modelValue":L=>P.widthMax=L},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",a8,[A[94]||(A[94]=T("span",null,"宽度缩放",-1)),de(T("select",{"onUpdate:modelValue":L=>P.widthMode=L,class:"inp"},[...A[93]||(A[93]=[T("option",{value:"particle"},"跟随粒子",-1),T("option",{value:"fixed"},"固定",-1)])],8,l8),[[wt,P.widthMode]])]),T("label",c8,[de(T("input",{type:"checkbox","onUpdate:modelValue":L=>P.lifeLengthEnabled=L},null,8,h8),[[Et,P.lifeLengthEnabled]]),A[95]||(A[95]=T("span",{class:"switch-ui"},null,-1)),A[96]||(A[96]=T("span",null,"生命周期长度曲线",-1))]),P.lifeLengthEnabled?(K(),Mt(qs,{key:4,modelValue:P.lifeLengthCurve,"onUpdate:modelValue":L=>P.lifeLengthCurve=L,"default-value":R(D)},null,8,["modelValue","onUpdate:modelValue","default-value"])):Te("",!0),T("label",u8,[de(T("input",{type:"checkbox","onUpdate:modelValue":L=>P.shapeEnabled=L},null,8,d8),[[Et,P.shapeEnabled]]),A[97]||(A[97]=T("span",{class:"switch-ui"},null,-1)),A[98]||(A[98]=T("span",null,"形状曲线(首端 → 尾端宽度)",-1))]),P.shapeEnabled?(K(),Mt(qs,{key:5,modelValue:P.shapeCurve,"onUpdate:modelValue":L=>P.shapeCurve=L,"default-value":R(N)},null,8,["modelValue","onUpdate:modelValue","default-value"])):Te("",!0),T("div",f8,[A[99]||(A[99]=T("span",null,"颜色模式",-1)),T("div",m8,[T("button",{class:Le(["axis-mode",{on:P.colorMode==="particle"}]),onClick:L=>P.colorMode="particle"},"跟随粒子",10,p8),T("button",{class:Le(["axis-mode",{on:P.colorMode==="fixed"}]),onClick:L=>P.colorMode="fixed"},"固定",10,g8),T("button",{class:Le(["axis-mode",{on:P.colorMode==="curve"}]),onClick:L=>P.colorMode="curve"},"曲线",10,v8)])]),T("label",y8,[A[101]||(A[101]=T("span",null,"混合模式",-1)),de(T("select",{"onUpdate:modelValue":L=>P.blend=L,class:"inp"},[...A[100]||(A[100]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,x8),[[wt,P.blend]])]),P.colorMode==="fixed"?(K(),Q("label",b8,[A[102]||(A[102]=T("span",null,"固定颜色",-1)),de(T("input",{class:"colr",type:"color","onUpdate:modelValue":L=>P.color=L},null,8,w8),[[He,P.color]]),T("input",{class:"hex-input",value:P.color,onChange:L=>R(p)(P,L),onKeydown:zr(et(L=>R(m)(P,L),["prevent"]),["enter"])},null,40,S8)])):P.colorMode==="curve"?(K(),Mt(gS,{key:7,modelValue:P.colorGradient,"onUpdate:modelValue":L=>P.colorGradient=L},null,8,["modelValue","onUpdate:modelValue"])):Te("",!0),T("div",_8,[A[103]||(A[103]=T("span",null,"透明度模式",-1)),T("div",T8,[T("button",{class:Le(["axis-mode",{on:P.alphaMode==="particle"}]),onClick:L=>P.alphaMode="particle"},"跟随粒子",10,M8),T("button",{class:Le(["axis-mode",{on:P.alphaMode==="fixed"}]),onClick:L=>P.alphaMode="fixed"},"固定",10,C8),T("button",{class:Le(["axis-mode",{on:P.alphaMode==="curve"}]),onClick:L=>P.alphaMode="curve"},"曲线",10,A8)])]),P.alphaMode==="fixed"?(K(),Mt(Be,{key:8,label:"透明度",min:0,max:1,step:.01,modelValue:P.alpha,"onUpdate:modelValue":L=>P.alpha=L},null,8,["modelValue","onUpdate:modelValue"])):Te("",!0),P.alphaMode==="curve"?(K(),Mt(qs,{key:9,modelValue:P.alphaCurve,"onUpdate:modelValue":L=>P.alphaCurve=L,"default-value":R($)},null,8,["modelValue","onUpdate:modelValue","default-value"])):Te("",!0)]),_:2},1032,["resource","resource-count","onPick","onReset","onRemove","onUpdateWeight","onToggleLock"]))),128)),T("input",{ref_key:"trailTextureFileInput",ref:i,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:A[38]||(A[38]=(...P)=>R(l)&&R(l)(...P))},null,544),T("div",E8,[be(Be,{label:"网格行数",min:2,max:16,step:1,"model-value":R(t).config.trailGridRows,"onUpdate:modelValue":A[39]||(A[39]=P=>R(o)("trailGridRows",P))},null,8,["model-value"]),be(Be,{label:"网格列数",min:2,max:32,step:1,"model-value":R(t).config.trailGridCols,"onUpdate:modelValue":A[40]||(A[40]=P=>R(o)("trailGridCols",P))},null,8,["model-value"])]),A[105]||(A[105]=T("div",{class:"modifier-hint"},"每个粒子按资源比例生成一组同级拖尾骨骼;随机长度与宽度在粒子出生时确定,相同种子可稳定复现",-1))])):Te("",!0)]),T("div",I8,[T("label",R8,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[41]||(A[41]=P=>R(t).config.emitterFollow=P),disabled:R(t).config.streamBehavior==="loop"},null,8,P8),[[Et,R(t).config.emitterFollow]]),A[106]||(A[106]=T("span",{class:"switch-ui"},null,-1)),A[107]||(A[107]=T("span",null,"开启发射器跟随",-1))]),R(t).config.emitterFollow&&R(t).config.streamBehavior!=="loop"?(K(),Q("div",k8,[T("label",F8,[A[110]||(A[110]=T("span",null,"跟随模式",-1)),T("select",{value:R(t).config.emitterFollowMode,class:"inp",onChange:A[42]||(A[42]=P=>R(I)(P,R(t).config))},[A[108]||(A[108]=T("option",{value:"none"},"无",-1)),A[109]||(A[109]=T("option",{value:"path"},"跟随路径",-1)),R(g)||R(t).config.emitterFollowMode==="bone"?(K(),Q("option",B8,"选中的骨骼")):Te("",!0)],40,O8)]),R(t).config.emitterFollowMode==="path"?(K(),Q(Fe,{key:0},[T("label",L8,[A[112]||(A[112]=T("span",null,"跟随路径",-1)),de(T("select",{"onUpdate:modelValue":A[43]||(A[43]=P=>R(t).config.emitterFollowPathId=P),class:"inp"},[A[111]||(A[111]=T("option",{value:0},"无",-1)),(K(!0),Q(Fe,null,Dt(R(e).paths,P=>(K(),Q("option",{key:P.id,value:P.id},_e(P.name),9,D8))),128))],512),[[wt,R(t).config.emitterFollowPathId,void 0,{number:!0}]])]),T("label",N8,[A[114]||(A[114]=T("span",null,"发射器角度模式",-1)),de(T("select",{"onUpdate:modelValue":A[44]||(A[44]=P=>R(t).config.emitterAngleMode=P),class:"inp"},[...A[113]||(A[113]=[T("option",{value:"fixed"},"固定角度",-1),T("option",{value:"direction"},"跟随移动方向",-1)])],512),[[wt,R(t).config.emitterAngleMode]])]),A[120]||(A[120]=T("div",{class:"gravity-curve-title"},[T("span",null,"移动进度曲线 (0→1)")],-1)),be(qs,{modelValue:R(t).config.emitterFollowCurve,"onUpdate:modelValue":A[45]||(A[45]=P=>R(t).config.emitterFollowCurve=P),"default-value":R(O)},null,8,["modelValue","default-value"]),T("div",U8,[T("label",$8,[A[115]||(A[115]=T("span",null,"移动时长 (s)",-1)),de(T("input",{"onUpdate:modelValue":A[46]||(A[46]=P=>R(t).config.emitterFollowDuration=P),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(t).config.emitterFollowDuration,void 0,{number:!0}]])]),T("label",X8,[A[117]||(A[117]=T("span",null,"跟随空间",-1)),de(T("select",{"onUpdate:modelValue":A[47]||(A[47]=P=>R(t).config.emitterFollowSpace=P),class:"inp"},[...A[116]||(A[116]=[T("option",{value:"local"},"局部空间(GEN 移动)",-1),T("option",{value:"world"},"世界空间(粒子生成点移动)",-1)])],512),[[wt,R(t).config.emitterFollowSpace]])])]),T("label",V8,[A[119]||(A[119]=T("span",null,"移动方向",-1)),de(T("select",{"onUpdate:modelValue":A[48]||(A[48]=P=>R(t).config.emitterFollowDirection=P),class:"inp"},[...A[118]||(A[118]=[T("option",{value:"forward"},"正向(起点 → 终点)",-1),T("option",{value:"reverse"},"反向(终点 → 起点)",-1)])],512),[[wt,R(t).config.emitterFollowDirection]])]),be(Be,{label:"偏移起始点 (0-1)",min:0,max:1,step:.01,modelValue:R(t).config.emitterFollowOffset,"onUpdate:modelValue":A[49]||(A[49]=P=>R(t).config.emitterFollowOffset=P)},null,8,["modelValue"]),A[121]||(A[121]=T("div",{class:"modifier-hint"},"局部空间会移动整个发射器;世界空间只移动新粒子的生成点,已出生粒子留在世界位置。",-1))],64)):R(t).config.emitterFollowMode==="bone"?(K(),Q(Fe,{key:1},[R(v)?(K(),Q("div",Y8,[A[122]||(A[122]=At("跟随目标:",-1)),T("strong",null,_e(R(v).spine.name)+" / "+_e(R(v).boneName),1)])):(K(),Q("div",G8,"尚未绑定有效骨骼,请先在 Spine 层级树中选择骨骼。")),R(g)&&(!R(v)||R(g).spine.id!==R(v).spine.id||R(g).boneName!==R(v).boneName)?(K(),Q("button",{key:2,class:"bone-follow-rebind",onClick:A[50]||(A[50]=P=>R(F)(R(t).config))},_e(R(v)?"重新绑定":"绑定")+"当前选中骨骼:"+_e(R(g).spine.name)+" / "+_e(R(g).boneName),1)):Te("",!0),R(v)?(K(),Q(Fe,{key:3},[T("label",H8,[A[124]||(A[124]=T("span",null,"跟随空间",-1)),de(T("select",{"onUpdate:modelValue":A[51]||(A[51]=P=>R(t).config.emitterFollowSpace=P),class:"inp"},[...A[123]||(A[123]=[T("option",{value:"local"},"本地空间(随骨骼移动)",-1),T("option",{value:"world"},"世界空间(粒子生成后保持位置)",-1)])],512),[[wt,R(t).config.emitterFollowSpace]])]),T("div",j8,[T("label",W8,[A[125]||(A[125]=T("span",null,"位移偏移 X",-1)),de(T("input",{"onUpdate:modelValue":A[52]||(A[52]=P=>R(t).config.emitterFollowBoneOffsetX=P),type:"number",step:"1",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneOffsetX,void 0,{number:!0}]])]),T("label",z8,[A[126]||(A[126]=T("span",null,"位移偏移 Y",-1)),de(T("input",{"onUpdate:modelValue":A[53]||(A[53]=P=>R(t).config.emitterFollowBoneOffsetY=P),type:"number",step:"1",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneOffsetY,void 0,{number:!0}]])])]),T("div",q8,[T("label",K8,[A[127]||(A[127]=T("span",null,"旋转偏移",-1)),de(T("input",{"onUpdate:modelValue":A[54]||(A[54]=P=>R(t).config.emitterFollowBoneRotation=P),type:"number",step:"1",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneRotation,void 0,{number:!0}]])]),T("label",Z8,[A[128]||(A[128]=T("span",null,"缩放偏移 X",-1)),de(T("input",{"onUpdate:modelValue":A[55]||(A[55]=P=>R(t).config.emitterFollowBoneScaleX=P),type:"number",step:"0.05",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneScaleX,void 0,{number:!0}]])]),T("label",J8,[A[129]||(A[129]=T("span",null,"缩放偏移 Y",-1)),de(T("input",{"onUpdate:modelValue":A[56]||(A[56]=P=>R(t).config.emitterFollowBoneScaleY=P),type:"number",step:"0.05",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneScaleY,void 0,{number:!0}]])])]),A[130]||(A[130]=T("div",{class:"modifier-hint"},"发射器只跟随所选 Spine 骨骼的位置,不继承 Spine 的旋转或缩放;粒子变换使用粒子系统自身参数和上方偏移。",-1))],64)):Te("",!0)],64)):Te("",!0)])):Te("",!0)]),T("div",Q8,[T("label",e5,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[57]||(A[57]=P=>R(t).config.collision=P)},null,512),[[Et,R(t).config.collision]]),A[131]||(A[131]=T("span",{class:"switch-ui"},null,-1)),A[132]||(A[132]=T("span",null,"开启碰撞",-1))]),R(t).config.collision?(K(),Q("div",t5,[A[133]||(A[133]=T("div",{class:"collision-filter-title"},"参与的碰撞对象",-1)),T("div",i5,[(K(!0),Q(Fe,null,Dt(R(y),P=>(K(),Q("span",{key:P.id,class:Le(["collision-filter-tag",{disabled:!P.enabled}]),title:P.enabled?P.name:`${P.name}(碰撞体已禁用)`},[T("span",null,_e(P.name),1),T("button",{type:"button","aria-label":`清除碰撞对象 ${P.name}`,onClick:L=>R(S)(P.id)},"×",8,n5)],10,s5))),128)),T("button",{type:"button",class:Le(["collision-filter-add",{active:R(x)}]),disabled:R(_).length===0,title:R(_).length?"加入场景碰撞对象":"没有可加入的碰撞对象",onClick:A[58]||(A[58]=P=>x.value=!R(x))},"+",10,r5)]),R(y).length===0?(K(),Q("div",o5,"未选择碰撞对象,当前粒子不会发生碰撞")):Te("",!0),R(x)&&R(_).length?(K(),Q("div",a5,[(K(!0),Q(Fe,null,Dt(R(_),P=>(K(),Q("button",{key:P.id,type:"button",onClick:L=>R(C)(P.id)},[T("span",null,_e(P.name),1),T("small",null,_e(P.enabled?"可用":"已禁用"),1)],8,l5))),128))])):Te("",!0),A[134]||(A[134]=T("div",{class:"modifier-hint"},"只有已加入且启用的场景碰撞对象会参与当前粒子系统的碰撞",-1))])):Te("",!0)]),be(Be,{label:"阻尼",min:0,max:2,step:.05,modelValue:R(t).config.damping,"onUpdate:modelValue":A[59]||(A[59]=P=>R(t).config.damping=P)},null,8,["modelValue"])],512),[[vi,!R(b).mods]])]))}}),h5=Qt(c5,[["__scopeId","data-v-1798235e"]]),u5={class:"group"},d5={class:"caret"},f5={class:"group-body export-settings"},m5={class:"export-field"},p5={class:"export-field"},g5={class:"export-field"},v5={key:0,class:"export-help"},y5={class:"export-fps-row"},x5={class:"export-field export-fps-field"},b5={class:"export-checkbox"},w5={class:"export-switches"},S5={class:"switch-row export-switch"},_5={class:"switch-row export-switch"},T5={class:"switch-row export-switch export-switch-last"},M5=Jt({__name:"ExportSettingsSection",setup(s){const{exportSettings:e,collapsed:t,toggle:i,resetModule:n,normalizeExportFps:r,select:o}=br();return(a,c)=>(K(),Q("div",u5,[T("div",{class:"group-head",onClick:c[1]||(c[1]=l=>R(i)("export"))},[T("span",d5,_e(R(t).export?"▸":"▾"),1),c[11]||(c[11]=T("span",null,"导出设置",-1)),T("button",{class:"group-reset",title:"重置导出设置",onClick:c[0]||(c[0]=et(l=>R(n)("export"),["stop"]))},"重置")]),de(T("div",f5,[T("label",m5,[c[12]||(c[12]=T("span",null,"图片路径 (Spine Images Path)",-1)),de(T("input",{"onUpdate:modelValue":c[2]||(c[2]=l=>R(e).imagesPath=l),class:"inp export-input",type:"text",placeholder:"./images/"},null,512),[[He,R(e).imagesPath,void 0,{trim:!0}]])]),T("label",p5,[c[14]||(c[14]=T("span",null,"Spine 版本",-1)),de(T("select",{"onUpdate:modelValue":c[3]||(c[3]=l=>R(e).spineVersion=l),class:"inp export-input"},[...c[13]||(c[13]=[es('',5)])],512),[[wt,R(e).spineVersion]])]),T("label",g5,[c[16]||(c[16]=T("span",null,"关键帧插值曲线",-1)),de(T("select",{"onUpdate:modelValue":c[4]||(c[4]=l=>R(e).keyframeCurve=l),class:"inp export-input"},[...c[15]||(c[15]=[T("option",{value:"linear"},"线性 (Linear)",-1),T("option",{value:"bezier"},"平滑贝塞尔 (Smooth Bézier)",-1)])],512),[[wt,R(e).keyframeCurve]])]),c[25]||(c[25]=T("div",{class:"export-help"},"平滑贝塞尔会在误差允许范围内拟合连续运动;出生、死亡、附件切换和突变仍使用阶跃关键帧。",-1)),R(e).spineVersion==="3.8"?(K(),Q("div",v5,"Spine 3.8 不支持 4.x 的逐通道数组贝塞尔,导出时会转换为经过容差精简的分段线性关键帧。")):Te("",!0),T("div",y5,[T("label",x5,[c[17]||(c[17]=T("span",null,"导出 FPS",-1)),de(T("input",{"onUpdate:modelValue":c[5]||(c[5]=l=>R(e).fps=l),class:"inp export-input",type:"number",min:"1",max:"240",step:"1",onChange:c[6]||(c[6]=(...l)=>R(r)&&R(r)(...l))},null,544),[[He,R(e).fps,void 0,{number:!0}]])]),T("label",b5,[de(T("input",{"onUpdate:modelValue":c[7]||(c[7]=l=>R(e).omitFps=l),type:"checkbox"},null,512),[[Et,R(e).omitFps]]),c[18]||(c[18]=At("不写 fps",-1))])]),c[26]||(c[26]=T("div",{class:"export-help"},"修改 FPS 时保持动画实际秒数不变;“不写 fps”只省略 Spine 的 fps 元数据。",-1)),T("div",w5,[T("label",S5,[de(T("input",{"onUpdate:modelValue":c[8]||(c[8]=l=>R(e).integerFrameAlignment=l),type:"checkbox"},null,512),[[Et,R(e).integerFrameAlignment]]),c[19]||(c[19]=T("span",{class:"switch-ui"},null,-1)),c[20]||(c[20]=T("span",null,"整数帧对齐",-1))]),T("label",_5,[de(T("input",{"onUpdate:modelValue":c[9]||(c[9]=l=>R(e).bonePool=l),type:"checkbox"},null,512),[[Et,R(e).bonePool]]),c[21]||(c[21]=T("span",{class:"switch-ui"},null,-1)),c[22]||(c[22]=T("span",null,"骨骼对象池",-1))]),T("label",T5,[de(T("input",{"onUpdate:modelValue":c[10]||(c[10]=l=>R(e).excludeEmptyAnimations=l),type:"checkbox"},null,512),[[Et,R(e).excludeEmptyAnimations]]),c[23]||(c[23]=T("span",{class:"switch-ui"},null,-1)),c[24]||(c[24]=T("span",null,"排除无内容动画",-1))])])],512),[[vi,!R(t).export]])]))}}),C5=Qt(M5,[["__scopeId","data-v-04462c7a"]]),A5={class:"spine-export-actions"},E5=["disabled","title"],I5=["disabled"],R5=["disabled","title"],P5={key:0},k5=["href"],F5=["href"],O5=Jt({__name:"ParticleExportFooter",setup(s){const{exportSettings:e,exportBusy:t,exportTarget:i,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:c,connectorReady:l,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g}=br();return(v,x)=>(K(),Q(Fe,null,[T("div",A5,[T("button",{type:"button",class:"export-spine-json",disabled:R(t),title:R(t)?"正在重新计算并烘焙动画":`导出 Spine ${R(e).spineVersion} JSON`,onClick:x[0]||(x[0]=(...y)=>R(p)&&R(p)(...y))},_e(R(t)&&R(i)==="json"?"正在准备导出…":"导出Spine Json"),9,E5),T("button",{type:"button",class:"export-spine-images",disabled:R(t),title:"单独下载当前粒子系统使用的图片 ZIP",onClick:x[1]||(x[1]=(...y)=>R(g)&&R(g)(...y))},_e(R(t)&&R(i)==="images"?"正在整理图片…":"导出 images 包"),9,I5),T("button",{type:"button",class:"export-spine-project",disabled:R(t)||!R(l),title:R(d),onClick:x[2]||(x[2]=(...y)=>R(m)&&R(m)(...y))},[T("span",null,_e(R(t)&&R(i)==="spine"?"正在生成工程…":"导出 .spine 包"),1),!R(t)&&R(u)?(K(),Q("small",P5,_e(R(u)),1)):Te("",!0)],8,R5)]),T("div",{class:Le(["connector-status",R(c)])},[x[5]||(x[5]=T("span",{class:"connector-dot"},null,-1)),At(_e(R(a))+" ",1),R(h)?(K(),Q("a",{key:0,href:R(h),target:"_blank",rel:"noopener",title:"在本机连接器中授权当前网站"},"授权当前网站",8,k5)):Te("",!0),T("button",{type:"button",title:"重新检测连接器",onClick:x[3]||(x[3]=(...y)=>R(f)&&R(f)(...y))},"刷新")],2),R(n)?(K(),Q("div",{key:0,class:Le(["export-message",{error:R(r)}])},[At(_e(R(n))+" ",1),R(o)?(K(),Q("a",{key:0,href:R(o),target:"_blank",rel:"noopener",onClick:x[4]||(x[4]=y=>o.value="")},"授权当前网站",8,F5)):Te("",!0)],2)):Te("",!0)],64))}}),B5=Qt(O5,[["__scopeId","data-v-7ff40afe"]]),L5={class:"panel"},D5={class:"panel-scroll"},N5=Jt({__name:"ParticlePanel",setup(s){const{activeObjectType:e,sys:t}=BO();return(i,n)=>(K(),Q("div",L5,[n[0]||(n[0]=T("div",{class:"panel-header"},[T("span",null,"Spine粒子编辑器-Yeomai")],-1)),T("div",D5,[be(GO),be(gD),R(e)==="particle"&&R(t)?(K(),Q(Fe,{key:0},[be(iN),be(MN),be(I4),be(h5),be(C5)],64)):Te("",!0)]),be(B5)]))}}),U5=Qt(N5,[["__scopeId","data-v-283ef8eb"]]),$5={class:"timeline"},X5={class:"tl-controls"},V5=["title"],Y5={class:"tl-range",title:"自定义播放起始帧"},G5=["max","onKeydown"],H5={class:"tl-range",title:"自定义播放结束帧"},j5=["min","max","onKeydown"],W5=["title"],z5={class:"tl-frame"},q5=["disabled"],K5=["onClick"],Z5={key:0},J5={class:"tl-animation-editor"},Q5={key:0,class:"tl-animation-error"},eU={class:"tl-animation-actions"},tU=["disabled"],iU={key:1,class:"tl-animation-hint"},sU={class:"tl-anim tl-spine-preview"},nU=["value","disabled"],rU={value:""},oU=["value"],aU={class:"tl-zoom"},lU={class:"tl-ticks"},cU={class:"tl-ticklabel"},hU={class:"tl-lanes"},uU=["onPointerdown"],dU={class:"lane-name"},fU=["onPointerdown"],mU=["onPointerdown"],pU=["onPointerdown"],gU={class:"lane-name"},vU={key:0,class:"tl-empty"},yU=Jt({__name:"Timeline",setup(s){const e=ao(),t=Ge(null),i=Ge(null),n=Ge(!1),r=Ge("animation"),o=Ge("");Ma(()=>{(!Array.isArray(e.timeline.animations)||!e.timeline.animations.length)&&(e.timeline.animations=["animation"]),e.timeline.animations.includes(e.timeline.animation)||(e.timeline.animation=e.timeline.animations[0]);for(const H of e.systems)(!H.animation||!e.timeline.animations.includes(H.animation))&&(H.animation=e.timeline.animations[0])});const a=qe(()=>e.systems.find(H=>H.id===e.activeId)||null),c=qe(()=>{const H=a.value;return!H||!V(H)?null:tb(H.config,m.value)});function l(){a.value&&(n.value=!n.value,r.value=a.value.animation,o.value="")}function h(H){const G=a.value;G&&(e.setSystemAnimation(G.id,H),r.value=H,o.value="")}function u(){const H=e.addAnimation();r.value=H,o.value=""}function d(){var z;const H=((z=a.value)==null?void 0:z.animation)||e.timeline.animation,G=r.value.trim();if(!G){o.value="动画名称不能为空";return}if(G!==H&&e.timeline.animations.includes(G)){o.value="动画名称不能重复";return}if(!e.renameAnimation(H,G)){o.value="无法修改动画名称";return}r.value=G,o.value=""}function f(){var z,ie;const H=((z=a.value)==null?void 0:z.animation)||e.timeline.animation;if(!e.removeAnimation(H)){o.value="至少需要保留一个动画";return}const G=((ie=a.value)==null?void 0:ie.animation)||e.timeline.animation;r.value=G,o.value=""}function p(H){var G;(G=i.value)!=null&&G.contains(H.target)||(n.value=!1)}Vn(()=>document.addEventListener("pointerdown",p)),pl(()=>document.removeEventListener("pointerdown",p));const m=qe(()=>Math.max(1,e.timeline.fps||30)),g=Ge(120),v=Ge({}),x=Ge({}),y=Ge({}),_=Ge({}),C=Ge(String(e.timeline.playbackStart)),S=Ge(String(e.timeline.playbackEnd));Xi(()=>e.timeline.playbackStart,H=>{C.value=String(H)}),Xi(()=>e.timeline.playbackEnd,H=>{S.value=String(H)});const b=qe(()=>e.timeline.totalFrames),M=qe(()=>g.value<=30?"放大":g.value>=300?"缩小":"适中"),I=qe(()=>e.spines.filter(H=>H.selectedAnimation&&H.animations.some(G=>G.name===H.selectedAnimation&&G.duration>0))),F=qe(()=>(e.activeObjectType==="spine"?e.spines.find(G=>G.id===e.activeObjectId&&G.animations.length):null)||e.spines.find(G=>G.animations.length)||null);function E(H){const G=F.value;G&&(G.selectedAnimation=H.target.value,e.recalcTotalFrames(),e.timeline.frame=0)}function k(){e.setPlaybackStart(Number(C.value)),C.value=String(e.timeline.playbackStart)}function O(){e.setPlaybackEnd(Number(S.value)),S.value=String(e.timeline.playbackEnd)}function D(){const H=c.value;H&&(e.setPlaybackEnd(H.end),e.setPlaybackStart(H.start))}function $(){var G;const H=((G=t.value)==null?void 0:G.clientWidth)||600;return g.value/H}const N=qe(()=>{const H=[],G=g.value;let z=1;g.value<=10?z=1:g.value<=50?z=5:g.value<=200?z=10:g.value<=500?z=50:z=100;for(let ie=0;ie<=G;ie+=z)H.push({f:ie,px:ie/$()});return H}),U=qe(()=>e.timeline.frame/$());function A(H){const G=H.config;return(v.value[H.id]??Math.max(0,Number(G.delay)||0))*m.value/$()}function P(H){const G=H.config,z=Math.max(0,Number(G.lifeMin)||0),ie=Math.max(0,Number(G.lifeMax)||0);return G.lifeMode==="fixed"?z:Math.max(z,ie)}function L(H){return X(H)}function B(H){if(H.config.mode!=="stream")return 0;if(H.config.streamBehavior==="loop"){const z=H.config;return(y.value[H.id]??lr(z,m.value).loop)/$()}return(x.value[H.id]??Math.max(1/m.value,Number(H.config.duration)||1))*m.value/$()}function X(H){const G=H.config;return G.mode==="stream"&&G.streamBehavior==="loop"?q(H)+B(H)+W(H):B(H)+P(H)*m.value/$()}function V(H){const G=H.config;return G.mode==="stream"&&G.streamBehavior==="loop"}function q(H){return V(H)?lr(H.config,m.value).start/$():0}function W(H){return V(H)?lr(H.config,m.value).end/$():0}function ne(H){var G;return((G=H.animations.find(z=>z.name===H.selectedAnimation))==null?void 0:G.duration)||0}function re(H){return(_.value[H.id]??Math.max(0,Number(H.timeOffset)||0))*m.value/$()}function le(H){return ne(H)*m.value/$()}function ue(H){const G=H.deltaY<0?.8:1.25;let z=g.value*G;z=Math.min(2e3,Math.max(10,z)),g.value=Math.round(z)}function ae(H){const G=t.value,z=fe=>{const te=G.getBoundingClientRect(),oe=Math.floor((fe.clientX-te.left)/te.width*g.value);e.timeline.frame=Math.max(0,Math.min(oe,b.value-1))};z(H);const ie=()=>{window.removeEventListener("pointermove",z),window.removeEventListener("pointerup",ie)};window.addEventListener("pointermove",z),window.addEventListener("pointerup",ie)}function xe(H,G){H.stopPropagation();const z=H.clientX,ie=Math.max(0,Number(G.config.delay)||0),fe=$()/m.value,te=ye=>{const we=(ye.clientX-z)*fe,Me=Math.max(0,Math.min(ie+we,600));v.value[G.id]=Math.round(Me*m.value)/m.value},oe=ye=>{window.removeEventListener("pointermove",te),window.removeEventListener("pointerup",ce),window.removeEventListener("pointercancel",Ce);const we=v.value[G.id];delete v.value[G.id],ye&&we!=null&&we!==ie&&(G.config.delay=we)},ce=()=>oe(!0),Ce=()=>oe(!1);window.addEventListener("pointermove",te),window.addEventListener("pointerup",ce),window.addEventListener("pointercancel",Ce)}function Y(H,G){var Xe;H.stopPropagation();const z=V(G),ie=Math.max(0,Number(G.config.duration)||0),fe=lr(G.config,m.value).loop,te=$()/m.value,oe=((Xe=H.currentTarget.closest(".lane-bar"))==null?void 0:Xe.getBoundingClientRect().left)??H.clientX,ce=q(G);let Ce=!1;const ye=pe=>{if(Ce=!0,z){const Ke=Math.min(1800,Math.max(1,Math.round((pe.clientX-oe-ce)/$())));y.value[G.id]=Ke}else{const Ke=Math.max(1/m.value,Math.min((pe.clientX-oe)*te,600));x.value[G.id]=Math.round(Ke*m.value)/m.value}},we=pe=>{window.removeEventListener("pointermove",ye),window.removeEventListener("pointerup",Me),window.removeEventListener("pointercancel",ve);const Ke=x.value[G.id],Ze=y.value[G.id];delete x.value[G.id],delete y.value[G.id],pe&&Ce&&z&&Ze!=null&&Ze!==fe?G.config.loopDurationFrames=Ze:pe&&Ce&&!z&&Ke!=null&&Ke!==ie&&(G.config.duration=Ke)},Me=()=>we(!0),ve=()=>we(!1);window.addEventListener("pointermove",ye),window.addEventListener("pointerup",Me),window.addEventListener("pointercancel",ve)}function j(H,G){H.stopPropagation();const z=H.clientX,ie=Math.max(0,Number(G.timeOffset)||0),fe=$()/m.value,te=ye=>{const we=Math.max(0,Math.min(ie+(ye.clientX-z)*fe,600));_.value[G.id]=Math.round(we*m.value)/m.value},oe=ye=>{window.removeEventListener("pointermove",te),window.removeEventListener("pointerup",ce),window.removeEventListener("pointercancel",Ce);const we=_.value[G.id];delete _.value[G.id],ye&&we!=null&&we!==ie&&(G.timeOffset=we,e.recalcTotalFrames())},ce=()=>oe(!0),Ce=()=>oe(!1);window.addEventListener("pointermove",te),window.addEventListener("pointerup",ce),window.addEventListener("pointercancel",Ce)}return(H,G)=>{var z,ie,fe;return K(),Q("div",$5,[T("div",X5,[T("button",{class:Le(["tl-btn",{on:R(e).timeline.playing}]),onClick:G[0]||(G[0]=te=>R(e).togglePlay()),title:R(e).timeline.playing?"暂停 (D)":"播放 (D)"},_e(R(e).timeline.playing?"❚❚":"▶"),11,V5),T("button",{class:"tl-btn",onClick:G[1]||(G[1]=te=>R(e).toStart()),title:"回到第一帧 (S)"},"⏮"),T("button",{class:"tl-btn",onClick:G[2]||(G[2]=te=>R(e).previousFrame()),title:"前一帧"},"◀"),T("button",{class:"tl-btn",onClick:G[3]||(G[3]=te=>R(e).nextFrame()),title:"后一帧"},"▶"),T("button",{class:"tl-btn",onClick:G[4]||(G[4]=te=>R(e).toEnd()),title:"移动到最后一帧"},"⏭"),T("button",{class:Le(["tl-btn",{on:R(e).timeline.loop}]),onClick:G[5]||(G[5]=te=>R(e).toggleLoop()),title:"循环"},"⟳",2),T("label",Y5,[G[10]||(G[10]=T("span",null,"A",-1)),de(T("input",{"onUpdate:modelValue":G[6]||(G[6]=te=>C.value=te),type:"number",min:"0",max:Math.max(0,R(e).timeline.playbackEnd-1),"aria-label":"播放起始帧",onChange:k,onKeydown:zr(et(k,["prevent"]),["enter"])},null,40,G5),[[He,C.value]])]),T("label",H5,[G[11]||(G[11]=T("span",null,"B",-1)),de(T("input",{"onUpdate:modelValue":G[7]||(G[7]=te=>S.value=te),type:"number",min:R(e).timeline.playbackStart+1,max:Math.max(1,R(e).timeline.totalFrames-1),"aria-label":"播放结束帧",onChange:O,onKeydown:zr(et(O,["prevent"]),["enter"])},null,40,j5),[[He,S.value]])]),c.value?(K(),Q("button",{key:0,class:"tl-loop-range",title:`设为闭合自循环范围 ${c.value.start}–${c.value.end}f`,onClick:D},"循环段",8,W5)):Te("",!0),T("span",z5,[G[12]||(G[12]=At("帧 ",-1)),T("b",null,_e(R(e).timeline.frame),1),G[13]||(G[13]=At(" / ",-1)),T("b",null,_e(Math.max(0,R(e).timeline.totalFrames-1)),1)]),G[18]||(G[18]=T("span",{class:"tl-legend"},[T("i",{class:"legend-emission"}),At("持续发射 "),T("i",{class:"legend-life"}),At("粒子存在 "),T("i",{class:"legend-spine"}),At("Spine 动画")],-1)),T("div",{ref_key:"animationMenuRef",ref:i,class:"tl-anim tl-owner-animation"},[G[16]||(G[16]=T("span",null,"所属动画",-1)),T("button",{class:"tl-animation-trigger",disabled:!a.value,title:"设置当前粒子系统所属的动画",onClick:et(l,["stop"])},[T("span",null,_e(((z=a.value)==null?void 0:z.animation)||R(e).timeline.animation),1),G[14]||(G[14]=T("i",null,"⌄",-1))],8,q5),n.value?(K(),Q("div",{key:0,class:"tl-animation-menu",onPointerdown:G[9]||(G[9]=et(()=>{},["stop"]))},[G[15]||(G[15]=T("div",{class:"tl-animation-menu-title"},"选择所属动画",-1)),(K(!0),Q(Fe,null,Dt(R(e).timeline.animations,te=>{var oe,ce;return K(),Q("button",{key:te,class:Le(["tl-animation-option",{on:((oe=a.value)==null?void 0:oe.animation)===te}]),onClick:Ce=>h(te)},[T("span",null,_e(te),1),((ce=a.value)==null?void 0:ce.animation)===te?(K(),Q("i",Z5,"✓")):Te("",!0)],10,K5)}),128)),T("div",J5,[de(T("input",{"onUpdate:modelValue":G[8]||(G[8]=te=>r.value=te),class:"tl-animation-name",maxlength:"64","aria-label":"动画名称",onKeydown:zr(d,["enter"])},null,544),[[He,r.value]]),T("button",{title:"重命名当前动画",onClick:d},"重命名")]),o.value?(K(),Q("div",Q5,_e(o.value),1)):Te("",!0),T("div",eU,[T("button",{onClick:u},"+ 新增"),T("button",{disabled:R(e).timeline.animations.length<=1,onClick:f},"删除",8,tU)]),R(e).timeline.animations.length<=1?(K(),Q("div",iU,"至少需要保留一个动画")):Te("",!0)],32)):Te("",!0)],512),T("label",sU,[G[17]||(G[17]=At("Spine 预览动画 ",-1)),T("select",{class:"tl-sel",value:((ie=F.value)==null?void 0:ie.selectedAnimation)||"",disabled:!F.value,onChange:E},[T("option",rU,_e(F.value?"无":"无可用 Spine 动画"),1),(K(!0),Q(Fe,null,Dt(((fe=F.value)==null?void 0:fe.animations)||[],te=>(K(),Q("option",{key:te.name,value:te.name},_e(te.name)+"("+_e(te.duration.toFixed(2))+"s) ",9,oU))),128))],40,nU)]),T("span",aU,_e(M.value),1)]),T("div",{class:"tl-viewport",ref_key:"vpRef",ref:t,onWheel:et(ue,["prevent"]),onPointerdown:ae},[T("div",lU,[(K(!0),Q(Fe,null,Dt(N.value,te=>(K(),Q("div",{key:te.f,class:"tl-tickline",style:di({left:te.px+"px"})},[T("span",cU,_e(te.f)+"f",1)],4))),128))]),T("div",{class:"tl-playhead",style:di({left:U.value+"px"})},null,4),T("div",hU,[(K(!0),Q(Fe,null,Dt(R(e).systems,(te,oe)=>(K(),Q("div",{key:te.id,class:"tl-lane"},[G[19]||(G[19]=T("span",{class:"lane-ico"},"●",-1)),T("div",{class:"lane-bar",style:di({left:A(te)+"px",width:L(te)+"px"}),onPointerdown:et(ce=>xe(ce,te),["stop"])},[T("span",dU,_e(te.config.name||"系统 "+(oe+1)),1),T("span",{class:Le(["bar-life",{"loop-life":V(te)}]),style:di({width:X(te)+"px"})},null,6),V(te)?(K(),Q(Fe,{key:0},[q(te)?(K(),Q("span",{key:0,class:"bar-loop-transition bar-loop-start",style:di({width:q(te)+"px"})},null,4)):Te("",!0),T("span",{class:"bar-emission bar-loop",style:di({left:q(te)+"px",width:B(te)+"px"})},[T("span",{class:"bar-handle",title:"拖动循环段时长",onPointerdown:et(ce=>Y(ce,te),["stop"])},null,40,fU)],4),W(te)?(K(),Q("span",{key:1,class:"bar-loop-transition bar-loop-end",style:di({left:q(te)+B(te)+"px",width:W(te)+"px"})},null,4)):Te("",!0)],64)):te.config.mode==="stream"?(K(),Q("span",{key:1,class:"bar-emission",style:di({width:B(te)+"px"})},[T("span",{class:"bar-handle",title:"拖动持续发射时长",onPointerdown:et(ce=>Y(ce,te),["stop"])},null,40,mU)],4)):Te("",!0)],44,uU)]))),128)),(K(!0),Q(Fe,null,Dt(I.value,te=>(K(),Q("div",{key:`spine-${te.id}`,class:"tl-lane spine-lane"},[G[20]||(G[20]=T("span",{class:"lane-ico spine-ico"},"◆",-1)),T("div",{class:"spine-bar",style:di({left:re(te)+"px",width:le(te)+"px"}),title:"拖动调整动画开始时间",onPointerdown:et(oe=>j(oe,te),["stop"])},[T("span",gU,_e(te.name)+" · "+_e(te.selectedAnimation),1)],44,pU)]))),128)),!R(e).systems.length&&!I.value.length?(K(),Q("div",vU,"暂无可显示的动画数据")):Te("",!0)])],544)])}}}),xU=Qt(yU,[["__scopeId","data-v-8d9981a9"]]),bU={class:"transfer-heading"},wU={key:0},SU={class:"transfer-detail"},_U=Jt({__name:"TransferProgressOverlay",setup(s){const e=Ge(null);return Xi(()=>qt.visible,async t=>{var i;t&&(await Uh(),(i=e.value)==null||i.focus({preventScroll:!0}))},{flush:"post"}),(t,i)=>(K(),Mt(wT,{name:"transfer-fade"},{default:$h(()=>[R(qt).visible?(K(),Q("div",{key:0,ref_key:"overlayElement",ref:e,class:"transfer-overlay",role:"dialog","aria-modal":"true","aria-live":"polite",tabindex:"-1",onPointerdown:i[0]||(i[0]=et(()=>{},["stop","prevent"])),onPointerup:i[1]||(i[1]=et(()=>{},["stop","prevent"])),onClick:i[2]||(i[2]=et(()=>{},["stop","prevent"])),onDblclick:i[3]||(i[3]=et(()=>{},["stop","prevent"])),onContextmenu:i[4]||(i[4]=et(()=>{},["stop","prevent"])),onWheel:i[5]||(i[5]=et(()=>{},["stop","prevent"])),onKeydown:i[6]||(i[6]=et(()=>{},["stop","prevent"]))},[T("div",{class:Le(["transfer-dialog",{failed:R(qt).failed}])},[T("div",bU,[T("span",null,_e(R(qt).title),1),R(qt).indeterminate?Te("",!0):(K(),Q("strong",wU,_e(Math.round(R(qt).progress))+"%",1))]),T("div",{class:Le(["transfer-track",{indeterminate:R(qt).indeterminate}])},[T("div",{class:"transfer-bar",style:di(R(qt).indeterminate?void 0:{width:`${R(qt).progress}%`})},null,4)],2),T("div",SU,_e(R(qt).detail),1)],2)],544)):Te("",!0)]),_:1}))}}),TU=Qt(_U,[["__scopeId","data-v-592b922e"]]),MU=["inert","aria-hidden"],CU={class:"right"},AU={class:"stage-area"},EU=Jt({__name:"App",setup(s){const e=ao();zI(e);const t=Ge(360),i=Ge(180);function n(o){o.preventDefault();const a=l=>{const h=e.settings.parameterPanelOnRight?window.innerWidth-l.clientX:l.clientX,u=Math.max(240,Math.min(h,window.innerWidth-200));t.value=u},c=()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",c)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",c)}function r(o){o.preventDefault();const a=o.clientY,c=i.value,l=u=>{const d=Math.max(80,Math.min(c+(a-u.clientY),window.innerHeight-200));i.value=d},h=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",h)};window.addEventListener("pointermove",l),window.addEventListener("pointerup",h)}return(o,a)=>(K(),Q(Fe,null,[T("div",{class:Le(["layout",{"panel-right":R(e).settings.parameterPanelOnRight}]),inert:R(qt).visible?!0:void 0,"aria-hidden":R(qt).visible?"true":void 0},[T("div",{class:"parameter-panel",style:di({width:t.value+"px"})},[be(U5)],4),T("div",{class:"resizer-col",onPointerdown:n},null,32),T("div",CU,[T("div",AU,[be(PF)]),T("div",{class:"resizer-row",onPointerdown:r,title:"拖动调整时间轴高度"},null,32),T("div",{class:"timeline-area",style:di({height:i.value+"px"})},[be(xU)],4)])],10,MU),be(TU)],64))}}),IU=Qt(EU,[["__scopeId","data-v-42c4fa00"]]);qT(IU).use(JT()).mount("#app");export{Kv as $,tn as A,Th as B,St as C,Si as D,Pe as E,$i as F,an as G,tt as H,pt as I,rS as J,zi as K,ns as L,gs as M,gr as N,cu as O,en as P,al as Q,ta as R,Cs as S,u3 as T,Ye as U,Gv as V,Is as W,nX as X,lO as Y,dl as Z,op as _,ze as a,ym as a$,qv as a0,Nw as a1,vp as a2,iX as a3,bh as a4,Ha as a5,w3 as a6,ja as a7,hu as a8,mm as a9,Cm as aA,Am as aB,mc as aC,Jn as aD,Rc as aE,pm as aF,Vw as aG,Yt as aH,Bw as aI,z$ as aJ,qo as aK,zv as aL,Ee as aM,Ue as aN,vm as aO,Pc as aP,jw as aQ,gm as aR,Gw as aS,Hw as aT,uu as aU,qw as aV,kc as aW,Jw as aX,Ww as aY,Kw as aZ,Qw as a_,ho as aa,yp as ab,xp as ac,jv as ad,Tl as ae,Ml as af,_l as ag,co as ah,En as ai,K$ as aj,Xw as ak,b3 as al,sa as am,dr as an,Sp as ao,nS as ap,y3 as aq,ul as ar,Wi as as,Wv as at,Q$ as au,la as av,Mm as aw,Em as ax,Im as ay,Rm as az,Qo as b,$n as b$,_h as b0,zw as b1,xr as b2,Zw as b3,bp as b4,h3 as b5,iS as b6,sS as b7,wp as b8,on as b9,eS as bA,_p as bB,lu as bC,oS as bD,xm as bE,ci as bF,l3 as bG,f3 as bH,Tw as bI,_w as bJ,Z$ as bK,Rt as bL,ca as bM,aS as bN,hS as bO,uS as bP,dS as bQ,lS as bR,cS as bS,v3 as bT,Tp as bU,xt as bV,Tm as bW,Yw as bX,Cw as bY,Aw as bZ,Ew as b_,c3 as ba,q$ as bb,Qe as bc,$w as bd,Uw as be,Lw as bf,Dw as bg,Qr as bh,wh as bi,x3 as bj,Iw as bk,Rw as bl,Ni as bm,Pw as bn,ia as bo,bi as bp,Mw as bq,Sh as br,kw as bs,Fw as bt,Ow as bu,Zv as bv,Sm as bw,Xr as bx,tS as by,wm as bz,ea as c,J$ as c0,p3 as c1,g3 as c2,m3 as c3,je as d,Ne as e,eX as f,Je as g,mi as h,Qc as i,Ki as j,Ot as k,De as l,ks as m,Bt as n,Qm as o,Zt as p,ll as q,Kn as r,ke as s,Hx as t,rp as u,nh as v,bm as w,Ur as x,Hv as y,_m as z}; +`;class tw extends Kn{constructor(e){super(e),this.shaderGenerator=new Hx(bP,wP),this.geometryClass=xP,this.vertexSize=7}packInterleavedGeometry(e,t,i,n,r){const{uint32View:o,float32View:a}=t,c=n/this.vertexSize,l=e.uvs,h=e.indices,u=e.vertexData,d=e._texture.baseTexture._batchLocation,f=Math.min(e.worldAlpha,1),p=St.shared.setValue(e._tintRGB).toPremultiplied(f,!0),m=St.shared.setValue(e._darkTintRGB).premultiply(f,!0).toPremultiplied(1,!1);for(let g=0;g0){let o=function(l){return Promise.all(l.map(h=>Promise.resolve(h).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));n=o(t.map(l=>{if(l=CP(l),l in Ev)return;Ev[l]=!0;const h=l.endsWith(".css"),u=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const d=document.createElement("link");if(d.rel=h?"stylesheet":MP,h||(d.as="script"),d.crossOrigin="",d.href=l,c&&d.setAttribute("nonce",c),document.head.appendChild(d),h)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return n.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return e().catch(r)})};async function sw(){const[s,e]=await Promise.all([Iv(()=>import("./index-Cz2cACyM.js"),[]),Iv(()=>import("./index-D13mN481.js"),__vite__mapDeps([0,1]))]);return{core:s,pixi:e}}async function AP(s,e,t){const{core:i,pixi:n}=await sw(),r=new i.TextureAtlas(e);return dp(r,t,n.SpineTexture),{skeletonData:new i.SkeletonJson(new i.AtlasAttachmentLoader(r)).readSkeletonData(s),SpineClass:n.Spine}}async function EP(s,e,t){const{core:i,pixi:n}=await sw(),r=new i.TextureAtlas(e);return dp(r,t,n.SpineTexture),{skeletonData:new i.SkeletonBinary(new i.AtlasAttachmentLoader(r)).readSkeletonData(s),SpineClass:n.Spine}}function sr(s,e,t){const i=Number(s[e]);return Number.isFinite(i)?i:t}function qi(s,e,t,i){s[e]==null&&(s[e]=sr(s,t,i))}function fp(s,e,t){if(typeof s.curve!="number")return;const i=sr(s,"time",0),r=sr(e,"time",0)-i,o=s.curve,a=sr(s,"c2",0),c=sr(s,"c3",1),l=sr(s,"c4",1);s.curve=t.flatMap(([h,u])=>[i+r*o,h+(u-h)*a,i+r*c,h+(u-h)*l]),delete s.c2,delete s.c3,delete s.c4}function hr(s,e){if(Array.isArray(s))for(let t=0;t[sr(i,r,o),sr(n,r,o)]))}}function IP(s){if(Array.isArray(s))for(let e=0;eNumber.parseInt(i.slice(r,r+2),16)/255);return e?n:n.slice(0,3)}function Rv(s,e){if(Array.isArray(s))for(let t=0;t[a,o[c]]))}}function RP(s){for(const e of s.bones||[])e.inherit==null&&e.transform!=null&&(e.inherit=e.transform);for(const e of s.transform||[])qi(e,"mixRotate","rotateMix",1),qi(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX),qi(e,"mixScaleX","scaleMix",1),e.mixScaleY==null&&(e.mixScaleY=e.mixScaleX),qi(e,"mixShearY","shearMix",1);for(const e of s.path||[])qi(e,"mixRotate","rotateMix",1),qi(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX)}function PP(s){for(const e of s.skins||[])for(const t of Object.values(e.attachments||{}))for(const i of Object.values(t||{}))i.parent!=null&&i.timelines==null&&i.deform!=null&&(i.timelines=i.deform)}function kP(s){for(const e of Object.values(s.slots||{}))e.color&&!e.rgba&&(e.rgba=e.color,delete e.color),e.twoColor&&!e.rgba2&&(e.rgba2=e.twoColor,delete e.twoColor),Rv(e.rgba,!1),Rv(e.rgba2,!0)}function FP(s){for(const e of Object.values(s.bones||{})){for(const t of e.rotate||[])qi(t,"value","angle",0);hr(e.rotate,[{key:"value",fallback:0}]),hr(e.translate,[{key:"x",fallback:0},{key:"y",fallback:0}]),hr(e.scale,[{key:"x",fallback:1},{key:"y",fallback:1}]),hr(e.shear,[{key:"x",fallback:0},{key:"y",fallback:0}])}}function OP(s){for(const e of Object.values(s.ik||{}))hr(e,[{key:"mix",fallback:1},{key:"softness",fallback:0}])}function BP(s){for(const e of Object.values(s.transform||{})){for(const t of e)qi(t,"mixRotate","rotateMix",1),qi(t,"mixX","translateMix",1),t.mixY==null&&(t.mixY=t.mixX),qi(t,"mixScaleX","scaleMix",1),t.mixScaleY==null&&(t.mixScaleY=t.mixScaleX),qi(t,"mixShearY","shearMix",1);hr(e,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1},{key:"mixScaleX",fallback:1},{key:"mixScaleY",fallback:1},{key:"mixShearY",fallback:1}])}}function LP(s){for(const e of Object.values(s.path||{})){for(const i of["position","spacing"]){const n=e[i];for(const r of n||[])qi(r,"value",i,0);hr(n,[{key:"value",fallback:0}])}const t=e.mix;for(const i of t||[])qi(i,"mixRotate","rotateMix",1),qi(i,"mixX","translateMix",1),i.mixY==null&&(i.mixY=i.mixX);hr(t,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1}])}}function DP(s){if(!s.deform)return;const e=s.attachments||(s.attachments={});for(const[t,i]of Object.entries(s.deform)){const n=e[t]||(e[t]={});for(const[r,o]of Object.entries(i)){const a=n[r]||(n[r]={});for(const[c,l]of Object.entries(o)){const h=a[c]||(a[c]={});h.deform=l,IP(l)}}}delete s.deform}function nw(s){RP(s),PP(s);for(const e of Object.values(s.animations||{}))kP(e),FP(e),OP(e),BP(e),LP(e),DP(e),!e.drawOrder&&e.draworder&&(e.drawOrder=e.draworder);return s}function NP(s){return s.replace(/\\/g,"/").split("/").pop()||s}async function UP(s){const e=await Promise.all(s.map(async t=>{const i=URL.createObjectURL(t);try{return[NP(t.name).toLowerCase(),await ze.fromURL(i)]}finally{URL.revokeObjectURL(i)}}));return new Map(e)}function $P(s){const e=new Map;return s.bones.map(t=>{var r;const i=((r=t.parent)==null?void 0:r.name)||null,n=i?(e.get(i)||0)+1:0;return e.set(t.name,n),{name:t.name,parent:i,depth:n}})}async function rw(s,e,t){var o;if(!/\.(json|skel)$/i.test(s.name))throw new Error("Spine 数据仅支持 .json 或 .skel");if(!/\.atlas$/i.test(e.name))throw new Error("图集文件仅支持 .atlas");if(!t.length)throw new Error("请至少选择一张纹理图片");const i=await e.text(),n=await UP(t),r=[...n.values()];try{let a,c,l=null,h;if(/\.skel$/i.test(s.name)){const u=await s.arrayBuffer();try{({skeletonData:a,SpineClass:c}=await EP(u,i,n)),h="4.3"}catch(d){try{({skeletonData:a,SpineClass:c}=TP(u,i,n)),h="4.2"}catch(f){const p=d instanceof Error?d.message:String(d),m=f instanceof Error?f.message:String(f);throw new Error(`Spine 二进制解析失败(4.3:${p};旧版:${m})`)}}l=ah(a.version)}else{let u;try{u=JSON.parse(await s.text())}catch{throw new Error("Spine JSON 文件格式无效")}if(l=ah((o=u==null?void 0:u.skeleton)==null?void 0:o.spine),!l)throw new Error(`Spine JSON 版本不受支持,仅支持 ${im()}`);h=VI(l),l==="3.8"&&nw(u);const d=h==="4.3"?await AP(u,i,n):_P(u,i,n);a=d.skeletonData,c=d.SpineClass}if(!l)throw new Error(`Spine 数据版本不受支持,仅支持 ${im()}`);return{skeletonData:a,textures:r,runtimeVersion:h,SpineClass:c,dataVersion:l,animations:a.animations.map(u=>({name:u.name,duration:u.duration})),bones:$P(a)}}catch(a){for(const c of r)c.destroy(!0);throw a}}function Ic(s){return new Promise((e,t)=>{const i=new FileReader;i.onload=()=>e(String(i.result||"")),i.onerror=()=>t(i.error),i.readAsDataURL(s)})}async function XP(s,e,t){return{skeleton:{name:s.name,dataUrl:await Ic(s)},atlas:{name:e.name,dataUrl:await Ic(e)},textures:await Promise.all(t.map(async i=>({name:i.name,dataUrl:await Ic(i)})))}}async function tf(s){const e=await fetch(s.dataUrl);if(!e.ok)throw new Error(`无法读取内嵌 Spine 文件:${s.name}`);return new File([await e.blob()],s.name)}async function VP(s){return{skeleton:await tf(s.skeleton),atlas:await tf(s.atlas),textures:await Promise.all(s.textures.map(tf))}}const ow="SpineParticle.EditorConfig",aw=1;function lw(s){return{backgroundX:s.backgroundX,backgroundY:s.backgroundY,backgroundOpacity:s.backgroundOpacity,backgroundImageName:s.backgroundImageName,backgroundImageData:s.backgroundImageData,showGrid:s.showGrid,exportSettings:Nt(s.exportSettings)}}function YP(s){return JSON.parse(JSON.stringify(s,(e,t)=>{if(!(e==="texture"||e==="trailTexture"||e==="frames"))return t}))}function cw(s){const e=Nt(s);return delete e.tags,delete e.selectedTag,e}function GP(s){const e=lw(s.settings);return YP({format:ow,version:aw,savedAt:new Date().toISOString(),editor:Nt(s.editor),settings:e,timeline:{fps:s.timeline.fps,loop:s.timeline.loop,playbackStart:s.timeline.playbackStart,playbackEnd:s.timeline.playbackEnd,animations:[...s.timeline.animations]},selection:{type:s.activeObjectType,id:s.activeObjectId},scene:{systems:s.systems.map(t=>({...Nt(t),frames:void 0})),colliders:s.colliders.map(cw),paths:Nt(s.paths),spines:Nt(s.spines)}})}function HP(){return`SpineParticle-${new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","-")}.json`}function hw(s){const e=GP(s),t=new Blob([JSON.stringify(e,null,2)],{type:"application/json;charset=utf-8"}),i=URL.createObjectURL(t),n=document.createElement("a");return n.href=i,n.download=HP(),document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),0),e}function uw(s){let e;try{e=JSON.parse(s)}catch{throw new Error("配置文件不是有效的 JSON")}const t=e;if(t.format!==ow)throw new Error("不是 SpineParticle 编辑器配置文件");if(t.version!==aw)throw new Error(`暂不支持配置版本:${t.version??"未知"}`);if(!t.scene||!Array.isArray(t.scene.systems)||!Array.isArray(t.scene.colliders)||!Array.isArray(t.scene.paths)||!Array.isArray(t.scene.spines))throw new Error("配置文件缺少完整场景数据");return t}async function jP(s){const e=new Map,t=n=>{const r=n==="/particles/star.png"?"/images/star.png":n==="/trails/trail.png"?"/images/trail.png":n||"/images/star.png";let o=e.get(r);return o||(o=ze.fromURL(r).then(a=>nr(a)),e.set(r,o)),o},i=await t("/images/star.png");await Promise.all(s.map(async n=>{var o;const r=pr(n.config);r.texture=i,await Promise.all(r.imageResources.map(async a=>{a.texture=await t(a.previewUrl||"/images/star.png"),await Promise.all(a.sequenceFrames.map(async c=>{c.texture=await t(c.previewUrl||a.previewUrl||"/images/star.png")}))})),await Promise.all(r.trailResources.map(async a=>{a.texture=await t(a.previewUrl||"/images/trail.png")})),r.trailTexture=((o=r.trailResources[0])==null?void 0:o.texture)||null,n.frames=[]}))}async function WP(s){const e=new Map;try{for(const t of s){if(!t.sourceBundle)continue;const i=await VP(t.sourceBundle);e.set(t.id,await rw(i.skeleton,i.atlas,i.textures))}return e}catch(t){for(const i of e.values())for(const n of i.textures)n.destroy(!0);throw t}}function zP(s,e){const t=(e==null?void 0:e.type)||"particle",i=Number(e==null?void 0:e.id)||0;(t==="particle"?s.systems.some(r=>r.id===i):t==="collision"?s.colliders.some(r=>r.id===i):t==="path"?s.paths.some(r=>r.id===i):s.spines.some(r=>r.id===i))?s.selectSceneObject(t,i):s.systems[0]?s.selectSceneObject("particle",s.systems[0].id):s.colliders[0]?s.selectSceneObject("collision",s.colliders[0].id):s.paths[0]?s.selectSceneObject("path",s.paths[0].id):s.spines[0]?s.selectSceneObject("spine",s.spines[0].id):(s.activeObjectType="particle",s.activeObjectId=0,s.activeId=0)}async function qP(s,e){var h,u,d,f,p,m,g;const t=uw(JSON.stringify(e)),i=Nt(t.scene.systems),n=t.scene.colliders.map(cw),r=Nt(t.scene.paths),o=Nt(t.scene.spines);for(const v of o)v.sourceBundle==null&&(v.sourceBundle=null),v.dataVersion==null&&(v.dataVersion="");await jP(i);const a=await WP(o),c=new Map(s.spines.map(v=>[v.id,v.assetVersion]));for(const v of s.spines)wl(v.id);s.systems=i,s.colliders=n,s.paths=r,s.spines=o,Object.assign(s.editor,Nt(t.editor||{}));const l=t.settings;if(l)for(const v of["backgroundX","backgroundY","backgroundOpacity","backgroundImageName","backgroundImageData","showGrid"])Object.prototype.hasOwnProperty.call(l,v)&&(s.settings[v]=l[v]);s.settings.exportSettings=Qb((h=t.settings)==null?void 0:h.exportSettings),s.settings.undoLimit=Math.min(200,Math.max(1,Math.round(Number(s.settings.undoLimit)||20))),s.timeline.fps=Math.max(1,Math.round(Number((u=t.timeline)==null?void 0:u.fps)||30)),s.timeline.loop=((d=t.timeline)==null?void 0:d.loop)!==!1,s.timeline.animations=Array.isArray((f=t.timeline)==null?void 0:f.animations)&&t.timeline.animations.length?[...new Set(t.timeline.animations.filter(v=>typeof v=="string"&&v.trim()).map(v=>v.trim()))]:["animation"];for(const v of s.spines){const x=a.get(v.id);if(v.assetVersion=Math.max(Number(v.assetVersion)||0,c.get(v.id)||0)+1,!x){v.status="empty",v.error=v.skeletonFileName?"配置未包含可复用的 Spine 原始资源":"",v.animations=[],v.bones=[],v.selectedAnimation="";continue}nu(v.id,x),v.dataVersion=x.dataVersion,v.animations=x.animations,v.bones=x.bones,x.animations.some(y=>y.name===v.selectedAnimation)||(v.selectedAnimation=((p=x.animations[0])==null?void 0:p.name)||""),v.status="ready",v.error=""}s.syncSceneSequences(),zP(s,t.selection),s.timeline.playbackStart=Math.max(0,Math.floor(Number((m=t.timeline)==null?void 0:m.playbackStart)||0)),s.timeline.playbackEnd=Math.max(1,Math.floor(Number((g=t.timeline)==null?void 0:g.playbackEnd)||Number.MAX_SAFE_INTEGER)),s.timeline.frame=0,s.timeline.recorded=!1,s.timeline.playing=!0;for(const v of s.systems)s.timeline.animations.includes(v.animation)||(v.animation=s.timeline.animations[0]);return s.recalcTotalFrames(),s.timeline.frame=s.timeline.playbackStart,t}async function dw(s,e){return qP(s,uw(e))}async function KP(s,e){if(!/\.json$/i.test(e.name))throw new Error("请选择 .json 配置文件");return dw(s,await e.text())}const au=no({undoCount:0});let ph=null,Cn=null,ur=[],Ta=null,An=null,gh=!1;function mp(s){return{systems:s.systems.map(t=>{const i=Nt(t);return i.frames=void 0,i}),colliders:Nt(s.colliders),paths:Nt(s.paths),spines:Nt(s.spines),animations:[...s.timeline.animations],settings:lw(s.settings)}}function pp(s){return JSON.stringify(s,(e,t)=>e==="texture"||e==="trailTexture"?null:typeof t=="string"&&t.startsWith("data:")&&t.length>256?`${t.length}:${t.slice(0,96)}:${t.slice(-48)}`:t)}function fw(s,e=mp(s),t=pp(e)){const i=new Map;for(const n of e.spines){const r=$I(n.id);r&&i.set(n.id,r)}return{data:e,signature:t,spineAssets:i}}function vh(s){if(s){for(const e of s.spineAssets.values())NI(e);s.spineAssets.clear()}}function mw(s){for(;ur.length>s;)vh(ur.shift()||null);au.undoCount=ur.length}function pw(){const s=ph;if(!s||!Cn||gh)return;const e=mp(s),t=pp(e);t!==Cn.signature&&(ur.push(Cn),Cn=fw(s,e,t),mw(s.settings.undoLimit))}function ZP(){gh||(An&&clearTimeout(An),An=setTimeout(()=>{An=null,pw()},250))}function JP(s){const e=s.activeObjectId;return s.activeObjectType==="particle"?s.systems.some(t=>t.id===e):s.activeObjectType==="collision"?s.colliders.some(t=>t.id===e):s.activeObjectType==="path"?s.paths.some(t=>t.id===e):s.spines.some(t=>t.id===e)}function QP(s){var t,i;if(!JP(s)){const n=s.systems[0],r=s.colliders[0],o=s.paths[0],a=s.spines[0];n?(s.activeObjectType="particle",s.activeObjectId=n.id):r?(s.activeObjectType="collision",s.activeObjectId=r.id):o?(s.activeObjectType="path",s.activeObjectId=o.id):(s.activeObjectType="spine",s.activeObjectId=(a==null?void 0:a.id)||0)}const e=s.activeObjectType==="particle"?s.systems.find(n=>n.id===s.activeObjectId):s.systems.find(n=>n.id===s.activeId);s.activeId=(e==null?void 0:e.id)||((t=s.systems[0])==null?void 0:t.id)||0,s.timeline.animation=(e==null?void 0:e.animation)||((i=s.systems[0])==null?void 0:i.animation)||s.timeline.animations[0]||"animation"}function ek(s,e){const t=Cn;gh=!0;try{for(const i of s.spines)wl(i.id);s.systems=Nt(e.data.systems),s.colliders=Nt(e.data.colliders),s.paths=Nt(e.data.paths),s.spines=Nt(e.data.spines),s.timeline.animations=[...e.data.animations],Object.assign(s.settings,Nt(e.data.settings));for(const[i,n]of e.spineAssets)nu(i,n);for(const i of s.systems)i.frames=[];s.timeline.recorded=!1,s.timeline.playing=!1,QP(s),s.recalcTotalFrames(),Cn=e}finally{gh=!1,vh(t)}}function tk(s){if(!(ph===s&&Ta)){Ta==null||Ta(),An&&clearTimeout(An),vh(Cn);for(const e of ur)vh(e);ur=[],ph=s,Cn=fw(s),au.undoCount=0,Ta=Xi(()=>pp(mp(s)),ZP,{flush:"post"})}}function ik(s,e){const t=Math.min(200,Math.max(1,Math.round(Number(e)||20)));s.settings.undoLimit=t,mw(t)}function gw(){const s=ph;if(!s||!Cn)return!1;An&&(clearTimeout(An),An=null),pw();const e=ur.pop();return e?(ek(s,e),au.undoCount=ur.length,!0):!1}function sk(s){const e=s instanceof HTMLElement?s:null;return!!(e!=null&&e.closest('input, textarea, select, [contenteditable="true"]'))}function nk(s){function e(i){var r;const n=i.target instanceof Node?i.target:null;s.canvasFocused.value=!!n&&!!((r=s.canvasElement.value)!=null&&r.contains(n))}function t(i){const n=i.key.toLowerCase();if((i.ctrlKey||i.metaKey)&&!i.altKey&&n==="s"){i.preventDefault(),i.stopPropagation(),s.save();return}if((i.ctrlKey||i.metaKey)&&!i.altKey&&n==="z"){i.preventDefault(),i.stopPropagation(),s.undo();return}if(i.ctrlKey||i.metaKey||i.altKey||sk(i.target))return;if(n==="d"){i.preventDefault(),s.togglePlay();return}if(n==="s"){i.preventDefault(),s.toStart();return}if(!s.canvasFocused.value)return;const r={q:"",w:"translate",e:"rotate",r:"scale"};n in r&&(i.preventDefault(),s.setTool(r[n]))}Vn(()=>{document.addEventListener("pointerdown",e,!0),window.addEventListener("keydown",t,!0)}),gl(()=>{document.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t,!0)})}const rk={class:"help-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"help-title"},ok={class:"help-body"},ak=["aria-expanded"],lk={class:"caret"},ck={class:"help-module-body"},hk=["aria-expanded"],uk={class:"caret"},dk={class:"help-module-body"},fk=["aria-expanded"],mk={class:"caret"},pk={class:"help-module-body"},gk=["aria-expanded"],vk={class:"caret"},yk={class:"help-module-body"},xk=["aria-expanded"],bk={class:"caret"},wk={class:"help-module-body"},Sk=["aria-expanded"],_k={class:"caret"},Tk={class:"help-module-body"},Mk=["aria-expanded"],Ck={class:"caret"},Ak={class:"help-module-body"},Ek=["aria-expanded"],Ik={class:"caret"},Rk={class:"help-module-body"},Pk=["aria-expanded"],kk={class:"caret"},Fk={class:"help-module-body"},Ok=Jt({__name:"HelpDialog",props:{show:{type:Boolean}},emits:["close"],setup(s,{emit:e}){const t=e,i=Ge(Array.from({length:9},()=>!1));function n(){t("close")}function r(o){o.key==="Escape"&&n()}return Vn(()=>window.addEventListener("keydown",r)),pl(()=>window.removeEventListener("keydown",r)),(o,a)=>s.show?(K(),Q("div",{key:0,class:"help-overlay",role:"presentation",onClick:et(n,["self"])},[T("section",rk,[T("header",{class:"help-head"},[a[9]||(a[9]=T("div",null,[T("h2",{id:"help-title"},"使用说明"),T("p",null,"从创建粒子到保存、导出的快速入门")],-1)),T("button",{class:"help-close","aria-label":"关闭使用说明",title:"关闭 (Esc)",onClick:n},"✕")]),T("div",ok,[a[37]||(a[37]=es('

快速开始

  1. 创建对象:在左侧“场景对象”中用 +粒子 / +碰撞 / +路径 / +Spine 添加场景对象。
  2. 编辑粒子:选中某个粒子系统,依次调整“发射模式 → 发射器形状 → 粒子属性 → 外观与资源 → 修改器”。
  3. 查看效果:底部时间轴可播放、暂停、逐帧或拖动;修改任意参数后会自动重新计算。
  4. 保存与导出:用“保存配置”保留工程;“导出 Spine Json / images 包 / .spine 包”输出成品。

每个模块组标题右侧的“重置”可把该组参数恢复默认;系统设置会自动保存在当前浏览器。

常用操作

小眼睛
单独显示/隐藏对象;隐藏的粒子系统不会被导出。
+Copy
完整复制当前选中对象,方便对比不同参数。
背景图
上传参考图并调整位置和透明度,只用于画布预览。
系统设置
管理界面布局、辅助显示、刻度等,自动存入浏览器。
撤销/重做
Ctrl+Z 撤回一步;可达成的步数在系统设置中调整。
Spine 骨骼
在层级树搜索并选择骨骼,可用于粒子发射器跟随。

快捷键

Ctrl/⌘+Z撤回上一步
Ctrl/⌘+S保存配置
Q拖动画布
W位移工具
E旋转工具
R缩放工具
D播放 / 暂停
S回到第一帧

Q / W / E / R 需先点击画布;光标位于输入框时,单键快捷键不会触发。

功能模块详解
',3)),T("section",{class:Le(["help-section help-module",{open:i.value[0]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[0]?"true":"false",onClick:a[0]||(a[0]=c=>i.value[0]=!i.value[0])},[a[10]||(a[10]=T("span",{class:"mnum"},"1",-1)),a[11]||(a[11]=T("span",{class:"mtitle"},"配置管理",-1)),T("span",lk,_e(i.value[0]?"▾":"▸"),1)],8,ak),de(T("div",ck,[...a[12]||(a[12]=[es('
保存配置
把当前全部场景对象和参数保存为工程 JSON 文件(也支持 Ctrl+S)。
加载配置
选择本地配置文件,恢复完整工程。
预设
从下拉中选择已保存的预设快速套用;点击下拉即可刷新列表。
范围
配置只含对象与参数,不含“系统设置”;系统设置单独存于浏览器。
',1)])],512),[[vi,i.value[0]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[1]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[1]?"true":"false",onClick:a[1]||(a[1]=c=>i.value[1]=!i.value[1])},[a[13]||(a[13]=T("span",{class:"mnum"},"2",-1)),a[14]||(a[14]=T("span",{class:"mtitle"},"场景对象",-1)),T("span",uk,_e(i.value[1]?"▾":"▸"),1)],8,hk),de(T("div",dk,[...a[15]||(a[15]=[es('
粒子
核心对象。可设名称、位置 X/Y、偏移、旋转、缩放 X/Y,以及“随机种子”——相同种子可精确复现同一次效果。
碰撞
圆形/椭圆/矩形/多边形/自定义;启用开关、碰撞响应(物理弹跳/暂停/销毁)、弹性与摩擦,还可沿某条路径移动并带进度曲线。
路径
贝塞尔路径,可双击新建/删除锚点、拖手柄调曲线;内置圆/方/多边形/星形预设,支持闭合与颜色。
Spine
加载 .json+.atlas+.png 预览骨骼动画,可查看/搜索骨骼层级树,用于粒子“发射器跟随”。
通用
每个对象都有小眼睛显隐;“+Copy”可以复制当前对象;隐藏的粒子系统不会进入导出。
',1)])],512),[[vi,i.value[1]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[2]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[2]?"true":"false",onClick:a[2]||(a[2]=c=>i.value[2]=!i.value[2])},[a[16]||(a[16]=T("span",{class:"mnum"},"3",-1)),a[17]||(a[17]=T("span",{class:"mtitle"},"发射模式",-1)),T("span",mk,_e(i.value[2]?"▾":"▸"),1)],8,fk),de(T("div",pk,[...a[18]||(a[18]=[es('
持续
按“每秒发射数量”持续喷射;再分“常规持续”(发射时长)与“循环持续”(三段式:开始循环 / 纯循环 / 结束循环,可自动或自定义帧长,做到无缝衔接)。
爆发
一次性发射“单次数量”颗粒子。
延迟时间
粒子条左端位置,表示发射开始前的等待时间。
注意
循环持续模式不支持骨骼跟随和路径跟随;开关时会把跟随设置恢复默认。
',1)])],512),[[vi,i.value[2]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[3]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[3]?"true":"false",onClick:a[3]||(a[3]=c=>i.value[3]=!i.value[3])},[a[19]||(a[19]=T("span",{class:"mnum"},"4",-1)),a[20]||(a[20]=T("span",{class:"mtitle"},"发射器形状",-1)),T("span",vk,_e(i.value[3]?"▾":"▸"),1)],8,gk),de(T("div",yk,[...a[21]||(a[21]=[es('
形状
点 / 圆形 / 矩形 / 锥形 / 路径。
圆·锥
内半径与外半径,形成环形或锥形发射区;锥形额外有“锥形朝向”和“开口角度”。
矩形
“外框 − 内框”形成环带,可分别设置内外宽高。
路径
选一条场景路径作为出生线;出生分布可选等距固定或随机。
发射角度
固定 / 随机(基准角度 + 随机范围)/ 径向(圆、矩、锥中心向外)/ 垂直于路径 / 沿路径方向。
',1)])],512),[[vi,i.value[3]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[4]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[4]?"true":"false",onClick:a[4]||(a[4]=c=>i.value[4]=!i.value[4])},[a[22]||(a[22]=T("span",{class:"mnum"},"5",-1)),a[23]||(a[23]=T("span",{class:"mtitle"},"粒子属性",-1)),T("span",bk,_e(i.value[4]?"▾":"▸"),1)],8,xk),de(T("div",wk,[...a[24]||(a[24]=[T("dl",{class:"help-list"},[T("div",null,[T("dt",null,"初始参数"),T("dd",null,"生命周期、速度、缩放(统一或 X/Y 分离)、初始旋转(可跟随发射方向)。每个属性支持固定 / 随机 / 曲线三种取值。")]),T("div",null,[T("dt",null,"生命周期变化"),T("dd",null,"速度倍率、缩放倍率(统一/分离)、旋转速度,均可用“生命周期 → 倍率”曲线控制。")]),T("div",null,[T("dt",null,"曲线含义"),T("dd",null,"横轴为粒子生命周期 0→1,纵轴为倍率或对应数值。")])],-1)])],512),[[vi,i.value[4]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[5]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[5]?"true":"false",onClick:a[5]||(a[5]=c=>i.value[5]=!i.value[5])},[a[25]||(a[25]=T("span",{class:"mnum"},"6",-1)),a[26]||(a[26]=T("span",{class:"mtitle"},"外观与资源",-1)),T("span",_k,_e(i.value[5]?"▾":"▸"),1)],8,Sk),de(T("div",Tk,[...a[27]||(a[27]=[T("dl",{class:"help-list"},[T("div",null,[T("dt",null,"透明度"),T("dd",null,"曲线或固定;曲线模式可选“跟随导出 / 线性 / 贝塞尔”。")]),T("div",null,[T("dt",null,"图片资源"),T("dd",null,"“+”新增,可上传单图或序列帧;多张图片按权重随机。每张可调缩放、轴心、颜色(固定/随机/生命周期渐变)、混合模式(正常/相加/相乘/滤色)、独立透明度(关/固定/曲线)。")]),T("div",null,[T("dt",null,"序列帧"),T("dd",null,"播放方式:单次隐藏 / 单次定格 / 正向循环 / 反向循环,可设每秒帧数。")])],-1)])],512),[[vi,i.value[5]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[6]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[6]?"true":"false",onClick:a[6]||(a[6]=c=>i.value[6]=!i.value[6])},[a[28]||(a[28]=T("span",{class:"mnum"},"7",-1)),a[29]||(a[29]=T("span",{class:"mtitle"},"修改器",-1)),T("span",Ck,_e(i.value[6]?"▾":"▸"),1)],8,Mk),de(T("div",Ak,[...a[30]||(a[30]=[es('
移动噪声
强度、波动范围、时间流速,让粒子轨迹产生抖动。
重力 / 风力
固定或随机强度、方向,以及生命周期内强度曲线。
力场
中心 X/Y、强度(正吸负斥)、半径、衰减(恒定/线性/反比)。
吸附
延迟后把粒子吸到指定点,到达范围即死亡;可直线或曲线。
拖尾
独立拖尾图片(多资源按权重)、旋转、拖尾骨骼数、拖尾比例;长度/宽度可固定或随机并支持放大;可加生命周期长度曲线与形状曲线;颜色/透明度可跟随粒子、固定或曲线。
发射器跟随
跟随某条路径(局部/世界、正/反向、进度曲线),或跟随 Spine 骨骼(选中的骨骼 + 偏移)。
碰撞 + 阻尼
选择场景中已启用的碰撞对象参与,并设置速度阻尼。
',1)])],512),[[vi,i.value[6]]])],2),T("section",{class:Le(["help-section help-module",{open:i.value[7]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[7]?"true":"false",onClick:a[7]||(a[7]=c=>i.value[7]=!i.value[7])},[a[31]||(a[31]=T("span",{class:"mnum"},"8",-1)),a[32]||(a[32]=T("span",{class:"mtitle"},"导出设置",-1)),T("span",Ik,_e(i.value[7]?"▾":"▸"),1)],8,Ek),de(T("div",Rk,[...a[33]||(a[33]=[es('
图片路径
写入 Spine 的 images 路径,例如 ./images/。
Spine 版本
3.8 / 4.0 / 4.1 / 4.2 / 4.3。
关键帧曲线
线性或平滑贝塞尔;出生、死亡、突变仍使用阶跃关键帧。
导出 FPS
修改 FPS 会保持动画实际秒数不变;“不写 fps”只省略元数据。
其它
整数帧对齐、骨骼对象池、排除无内容动画。
导出按钮
“导出 Spine Json”生成骨骼动画文件;“导出 images 包”单独下载图片 ZIP;“导出 .spine 包”需要连接器。
',1)])],512),[[vi,i.value[7]]])],2),T("section",{class:Le(["help-section help-module help-connector",{open:i.value[8]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":i.value[8]?"true":"false",onClick:a[8]||(a[8]=c=>i.value[8]=!i.value[8])},[a[34]||(a[34]=T("span",{class:"mnum"},"9",-1)),a[35]||(a[35]=T("span",{class:"mtitle"},"连接器(Spine 连接器)使用说明",-1)),T("span",kk,_e(i.value[8]?"▾":"▸"),1)],8,Pk),de(T("div",Fk,[...a[36]||(a[36]=[es('

连接器用于把网页生成的 JSON 和图片,调用你电脑上已安装并激活的 Spine,转换成可编辑的 .spine 工程。

前置
电脑已安装并激活 Spine;并已启动桌面版连接器APP。
网页端
导出区状态显示“连接器可用 · Spine 已就绪”后,点击“导出 .spine 包”。
首次授权
生产网站首次连接会显示“授权当前网站”;点击后在本机确认页核对完整来源(协议 + 域名 + 端口),再点“允许此网站”。授权一次后本机会保存白名单。本地 127.0.0.1:5173 默认允许。
路径设置
连接器自动检测 Spine 安装位置;检测不到时可在桌面窗口手动指定:Windows 选 Spine.com,macOS 选 Spine.app/Contents/MacOS/Spine。
下载结果
得到 ZIP 包,内含 .spine 工程和图片目录(如 images/star.png)。
版本
连接器按请求与 JSON 内的版本自动匹配 3.8~4.3,使用最新可用补丁。
安全
仅监听本机 127.0.0.1:27843;授权与白名单保存在连接器里;文件在临时目录转换后清理,并有大小限制。
',2)])],512),[[vi,i.value[8]]])],2),a[38]||(a[38]=T("section",{class:"help-section help-export"},[T("h3",null,"配置与导出有什么区别?"),T("p",null,[T("b",null,"保存配置"),At("会保存编辑器中的全部对象和参数,之后可以继续修改;"),T("b",null,"导出 Spine Json"),At("只导出显示中的粒子系统,并把跟随、碰撞和拖尾结果烘焙为独立动画数据。")])],-1))])])])):Te("",!0)}}),Qt=(s,e)=>{const t=s.__vccOpts||s;for(const[i,n]of e)t[i]=n;return t},Bk=Qt(Ok,[["__scopeId","data-v-78204b9d"]]);function zo(s){const e=()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",e),window.removeEventListener("pointercancel",e)};window.addEventListener("pointermove",s),window.addEventListener("pointerup",e),window.addEventListener("pointercancel",e)}function us(s,e,t){const i=s.holder.value,n=s.app(),r=i.getBoundingClientRect(),o=Math.max(1e-4,s.store.editor.viewScale),a=e-r.left,c=t-r.top;return{x:(a-n.screen.width/2-s.store.editor.viewX)/o,y:-(c-n.screen.height*.5-s.store.editor.viewY)/o}}function Lk(s,e){const t=s.holder.value,i=s.app(),n=s.store,r=t.getBoundingClientRect(),o=e.clientX-r.left,a=e.clientY-r.top,c=e.deltaY<0?1.12:1/1.12,l=n.editor.viewScale,h=Math.max(.01,l*c),u=i.screen.width/2,d=i.screen.height*.5,f=n.editor.viewX,p=n.editor.viewY,m=(o-u-f)/l,g=(a-d-p)/l;n.editor.viewX=o-u-m*h,n.editor.viewY=a-d-g*h,n.editor.viewScale=h}function Dk(s,e,t){const i=s.store,n=i.editor.viewX,r=i.editor.viewY;zo(o=>{i.editor.viewX=n+(o.clientX-e),i.editor.viewY=r+(o.clientY-t)})}function vw(s,e){const t=Math.max(.01,s.store.editor.viewScale*e);s.store.editor.viewScale=t}function Nk(s){vw(s,1.2)}function Uk(s){vw(s,1/1.2)}function $k(s){s.store.editor.viewScale=1,s.store.editor.viewX=0,s.store.editor.viewY=0}function Xk(s){s.store.editor.viewScale=1,s.store.editor.viewX=0,s.store.editor.viewY=0}function Vk(s){s.store.settings.showGrid=!s.store.settings.showGrid}const Yk={class:"topbar"},Gk=["disabled"],Hk={class:"tool-group"},jk={class:"tool-group"},Wk={key:0,class:"background-panel"},zk=["disabled"],qk=["title"],Kk={class:"background-position-row"},Zk={class:"background-opacity-row"},Jk={class:"zoom-pct"},Qk=Jt({__name:"StageToolbar",props:{ctx:{},activeTool:{},showSettings:{type:Boolean},showHelp:{type:Boolean}},emits:["update:activeTool","update:showSettings","update:showHelp","clear-background","background-file"],setup(s,{emit:e}){const t=s,i=e,n=ao(),r=Ge(!1),o=Ge(null),a=qe(()=>n.settings.backgroundImageName);function c(m){i("update:activeTool",t.activeTool===m?"":m)}function l(){r.value=!r.value,r.value&&i("update:showSettings",!1)}function h(){const m=!t.showSettings;i("update:showSettings",m),m&&(r.value=!1)}function u(){i("update:showHelp",!0),r.value=!1,i("update:showSettings",!1)}function d(m){i("background-file",m)}function f(m=!0){o.value&&(o.value.value=""),i("clear-background",m)}function p(){gw()}return(m,g)=>(K(),Q("div",Yk,[T("button",{class:"settings-btn",onClick:h,title:"系统设置"},"系统设置"),T("button",{class:"undo-btn",disabled:R(au).undoCount===0,onClick:p,title:"撤回上一步 (Ctrl+Z)"},"↶",8,Gk),T("div",Hk,[T("button",{class:Le(["tool-btn",{on:s.activeTool===""}]),onClick:g[0]||(g[0]=v=>c("")),title:"拖动画布 (Q)"},"✋",2),T("button",{class:Le(["tool-btn",{on:s.activeTool==="translate"}]),onClick:g[1]||(g[1]=v=>c("translate")),title:"位移 (W)"},"✥",2),T("button",{class:Le(["tool-btn",{on:s.activeTool==="rotate"}]),onClick:g[2]||(g[2]=v=>c("rotate")),title:"旋转 (E)"},"⟳",2),T("button",{class:Le(["tool-btn",{on:s.activeTool==="scale"}]),onClick:g[3]||(g[3]=v=>c("scale")),title:"缩放 (R)"},"⤢",2)]),T("div",jk,[T("button",{class:"tool-btn",onClick:g[4]||(g[4]=v=>R(Nk)(s.ctx)),title:"放大"},"+"),T("button",{class:"tool-btn",onClick:g[5]||(g[5]=v=>R(Uk)(s.ctx)),title:"缩小"},"-"),T("button",{class:"tool-btn",onClick:g[6]||(g[6]=v=>R($k)(s.ctx)),title:"适配画布"},"⤢"),T("button",{class:Le(["tool-btn",{on:R(n).settings.showGrid}]),onClick:g[7]||(g[7]=v=>R(Vk)(s.ctx)),title:"切换网格"},"▦",2),T("button",{class:"tool-btn",onClick:g[8]||(g[8]=v=>R(Xk)(s.ctx)),title:"重置视图"},"⟳")]),T("div",{class:"background-menu",onClick:g[14]||(g[14]=et(()=>{},["stop"]))},[T("button",{class:Le(["background-btn",{on:r.value}]),title:"背景图显示设置",onClick:l},"背景图",2),r.value?(K(),Q("div",Wk,[T("button",{class:"background-upload",onClick:g[9]||(g[9]=v=>{var x;return(x=o.value)==null?void 0:x.click()})},_e(a.value?"更换图像":"上传图像"),1),T("button",{class:"background-clear",disabled:!a.value,onClick:g[10]||(g[10]=v=>f())},"清除背景",8,zk),T("input",{ref_key:"backgroundFileInput",ref:o,class:"background-file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:d},null,544),T("div",{class:"background-file-name",title:a.value},_e(a.value||"未上传图像"),9,qk),T("div",Kk,[T("label",null,[g[15]||(g[15]=T("span",null,"X",-1)),de(T("input",{"onUpdate:modelValue":g[11]||(g[11]=v=>R(n).settings.backgroundX=v),type:"number",step:"1","aria-label":"背景图 X 偏移"},null,512),[[He,R(n).settings.backgroundX,void 0,{number:!0}]])]),T("label",null,[g[16]||(g[16]=T("span",null,"Y",-1)),de(T("input",{"onUpdate:modelValue":g[12]||(g[12]=v=>R(n).settings.backgroundY=v),type:"number",step:"1","aria-label":"背景图 Y 偏移"},null,512),[[He,R(n).settings.backgroundY,void 0,{number:!0}]])])]),T("label",Zk,[g[17]||(g[17]=T("span",null,"透明度",-1)),de(T("input",{"onUpdate:modelValue":g[13]||(g[13]=v=>R(n).settings.backgroundOpacity=v),type:"range",min:"0",max:"1",step:"0.01","aria-label":"背景图透明度"},null,512),[[He,R(n).settings.backgroundOpacity,void 0,{number:!0}]]),T("b",null,_e(Math.round(R(n).settings.backgroundOpacity*100))+"%",1)])])):Te("",!0)]),T("button",{class:Le(["help-btn",{on:s.showHelp}]),title:"查看使用说明",onClick:u},"使用说明",2),T("span",Jk,_e(Math.round(R(n).editor.viewScale*100))+"%",1)]))}}),eF=Qt(Qk,[["__scopeId","data-v-612a51be"]]),tF={key:0,class:"settings-panel"},iF={class:"sp-head"},sF={class:"sp-switch-row"},nF={class:"sp-switch-control"},rF={class:"sp-row"},oF={class:"sp-chk"},aF={class:"sp-chk"},lF={class:"sp-row"},cF={class:"sp-row"},hF={class:"sp-chk"},uF={class:"sp-chk"},dF={class:"sp-row"},fF={class:"sp-row"},mF={class:"sp-row"},pF={class:"sp-hex"},gF={class:"sp-chk"},vF=Jt({__name:"StageSettingsPanel",props:{show:{type:Boolean}},emits:["close"],setup(s,{emit:e}){const t=e,i=ao();function n(o){ik(i,Number(o.target.value))}function r(){i.settings.bonePointDrawSize=Math.min(10,Math.max(.1,Number(i.settings.bonePointDrawSize)||1)),i.settings.boneAxisDrawSize=Math.min(10,Math.max(.1,Number(i.settings.boneAxisDrawSize)||2))}return(o,a)=>s.show?(K(),Q("div",tF,[T("div",iF,[a[15]||(a[15]=At("系统设置 ",-1)),T("button",{class:"sp-close",onClick:a[0]||(a[0]=c=>t("close"))},"✕")]),a[29]||(a[29]=T("div",{class:"sp-section-title"},"界面布局",-1)),T("label",sF,[a[17]||(a[17]=T("span",null,"参数面板位置",-1)),T("span",nF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[1]||(a[1]=c=>R(i).settings.parameterPanelOnRight=c),"aria-label":"参数面板显示在右侧"},null,512),[[Et,R(i).settings.parameterPanelOnRight]]),a[16]||(a[16]=T("span",{class:"sp-switch-ui","aria-hidden":"true"},null,-1)),T("b",null,_e(R(i).settings.parameterPanelOnRight?"右侧":"左侧"),1)])]),a[30]||(a[30]=T("div",{class:"sp-divider"},null,-1)),a[31]||(a[31]=T("div",{class:"sp-section-title"},"操作历史",-1)),T("label",rF,[a[18]||(a[18]=T("span",null,"最大撤回步数",-1)),de(T("input",{class:"sp-num sp-undo-limit",type:"number",min:"1",max:"200","onUpdate:modelValue":a[2]||(a[2]=c=>R(i).settings.undoLimit=c),"aria-label":"最大撤回步数",onChange:n},null,544),[[He,R(i).settings.undoLimit,void 0,{number:!0}]])]),a[32]||(a[32]=T("div",{class:"sp-divider"},null,-1)),a[33]||(a[33]=T("div",{class:"sp-section-title"},"画布辅助显示",-1)),T("label",oF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[3]||(a[3]=c=>R(i).settings.showEmitter=c)},null,512),[[Et,R(i).settings.showEmitter]]),a[19]||(a[19]=At("发射点",-1))]),T("label",aF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[4]||(a[4]=c=>R(i).settings.showBones=c)},null,512),[[Et,R(i).settings.showBones]]),a[20]||(a[20]=At("骨骼连线",-1))]),R(i).settings.showBones?(K(),Q(Fe,{key:0},[T("label",lF,[a[21]||(a[21]=T("span",null,"骨骼点绘制大小",-1)),de(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":a[5]||(a[5]=c=>R(i).settings.bonePointDrawSize=c),"aria-label":"骨骼点绘制大小",onChange:r},null,544),[[He,R(i).settings.bonePointDrawSize,void 0,{number:!0}]])]),T("label",cF,[a[22]||(a[22]=T("span",null,"坐标轴绘制大小",-1)),de(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":a[6]||(a[6]=c=>R(i).settings.boneAxisDrawSize=c),"aria-label":"坐标轴绘制大小",onChange:r},null,544),[[He,R(i).settings.boneAxisDrawSize,void 0,{number:!0}]])])],64)):Te("",!0),T("label",hF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[7]||(a[7]=c=>R(i).settings.showSkinMesh=c)},null,512),[[Et,R(i).settings.showSkinMesh]]),a[23]||(a[23]=At("蒙皮网格",-1))]),a[34]||(a[34]=T("div",{class:"sp-divider"},null,-1)),T("label",uF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[8]||(a[8]=c=>R(i).settings.tickEnabled=c)},null,512),[[Et,R(i).settings.tickEnabled]]),a[24]||(a[24]=At("启用刻度",-1))]),R(i).settings.tickEnabled?(K(),Q(Fe,{key:1},[T("label",dF,[a[25]||(a[25]=T("span",null,"刻度文字大小",-1)),de(T("input",{type:"range",min:"8",max:"40",step:"1","onUpdate:modelValue":a[9]||(a[9]=c=>R(i).settings.axisFontSize=c)},null,512),[[He,R(i).settings.axisFontSize,void 0,{number:!0}]]),de(T("input",{type:"number",min:"8",max:"40","onUpdate:modelValue":a[10]||(a[10]=c=>R(i).settings.axisFontSize=c),class:"sp-num"},null,512),[[He,R(i).settings.axisFontSize,void 0,{number:!0}]])]),T("label",fF,[a[26]||(a[26]=T("span",null,"刻度线粗细",-1)),de(T("input",{type:"range",min:"1",max:"5",step:"0.5","onUpdate:modelValue":a[11]||(a[11]=c=>R(i).settings.tickWidth=c)},null,512),[[He,R(i).settings.tickWidth,void 0,{number:!0}]]),de(T("input",{type:"number",min:"1",max:"5","onUpdate:modelValue":a[12]||(a[12]=c=>R(i).settings.tickWidth=c),class:"sp-num"},null,512),[[He,R(i).settings.tickWidth,void 0,{number:!0}]])]),T("label",mF,[a[27]||(a[27]=T("span",null,"坐标轴颜色",-1)),de(T("input",{type:"color","onUpdate:modelValue":a[13]||(a[13]=c=>R(i).settings.axisColor=c),class:"sp-colr"},null,512),[[He,R(i).settings.axisColor]]),T("span",pF,_e(R(i).settings.axisColor),1)]),T("label",gF,[de(T("input",{type:"checkbox","onUpdate:modelValue":a[14]||(a[14]=c=>R(i).settings.showAxisLabels=c)},null,512),[[Et,R(i).settings.showAxisLabels]]),a[28]||(a[28]=At("显示刻度数值",-1))])],64)):Te("",!0),a[35]||(a[35]=T("div",{class:"sp-cache-note"},"整个系统设置会自动保存到当前浏览器",-1))])):Te("",!0)}}),yF=Qt(vF,[["__scopeId","data-v-91f62c22"]]);class sf{constructor(){w(this,"sprite",null);w(this,"texture",null);w(this,"loadVersion",0)}createSprite(e){const t=new yr(ze.EMPTY);return t.anchor.set(.5),t.visible=!1,e.addChild(t),this.sprite=t,t}applyTransform(e,t,i){this.sprite&&(this.sprite.position.set(Number(e)||0,-(Number(t)||0)),this.sprite.alpha=Math.min(1,Math.max(0,Number(i)||0)))}async syncTexture(e){const t=++this.loadVersion;if(!e){this.sprite&&(this.sprite.texture=ze.EMPTY,this.sprite.visible=!1),this.texture&&this.texture.destroy(!0),this.texture=null;return}try{const i=await ze.fromURL(e);if(t!==this.loadVersion||!this.sprite){i.destroy(!0);return}const n=this.texture;this.texture=i,this.sprite.texture=i,this.sprite.visible=!0,n&&n.destroy(!0)}catch(i){console.error("背景图恢复失败",i)}}static clearStoreBackground(e,t){e.settings.backgroundImageData="",e.settings.backgroundImageName="",t&&(e.settings.backgroundX=0,e.settings.backgroundY=0,e.settings.backgroundOpacity=1)}static async handleFileChange(e,t){var r;const i=t.target,n=(r=i.files)==null?void 0:r[0];if(n)try{e.settings.backgroundImageData=await Ic(n),e.settings.backgroundImageName=n.name}catch(o){console.error("背景图加载失败",o)}finally{i.value=""}}destroy(){this.loadVersion++,this.texture&&this.texture.destroy(!0),this.texture=null,this.sprite=null}}class xF{constructor(e){w(this,"selectedNodes",new Set);w(this,"suppressNextDoubleClick",!1);this.ctx=e}resetSelection(){this.selectedNodes.clear()}activePath(){const e=this.ctx.store;if(e.activeObjectType!=="path")return null;const t=e.paths.find(i=>i.id===e.activeObjectId)||null;return(t==null?void 0:t.visible)===!1?null:t}pathInsertIndex(e,t,i){if(e.points.length<2)return e.points.length;const n=e.closed?e.points.length:e.points.length-1;let r=e.points.length,o=1/0;for(let a=0;aMath.hypot(c.x-n.x,c.y-n.y)<=r);if(o>=0){t.points.splice(o,1),this.selectedNodes.clear();return}const a=this.pathInsertIndex(t,n.x,n.y);t.points.splice(a,0,{x:n.x,y:n.y,inX:0,inY:0,outX:0,outY:0}),this.selectedNodes.clear(),this.selectedNodes.add(a)}onPointerDown(e){const t=this.activePath();if(!t||!t.enabled)return!1;const i=us(this.ctx,e.clientX,e.clientY),n=wo(t,i.x,i.y),r=9/Math.max(.01,this.ctx.store.editor.viewScale);if(e.detail>=2){if(t.points.findIndex(u=>Math.hypot(u.x-n.x,u.y-n.y)<=r)>=0)return!0;const l={x:n.x,y:n.y,inX:0,inY:0,outX:0,outY:0},h=this.pathInsertIndex(t,n.x,n.y);return t.points.splice(h,0,l),this.selectedNodes.clear(),this.selectedNodes.add(h),this.suppressNextDoubleClick=!0,zo(u=>{const d=us(this.ctx,u.clientX,u.clientY),f=wo(t,d.x,d.y);l.outX=f.x-l.x,l.outY=f.y-l.y,l.inX=-l.outX,l.inY=-l.outY}),!0}let o=null;for(const c of this.selectedNodes){const l=t.points[c];l&&(Math.hypot(l.x+l.inX-n.x,l.y+l.inY-n.y)<=r&&(o={index:c,side:"in"}),Math.hypot(l.x+l.outX-n.x,l.y+l.outY-n.y)<=r&&(o={index:c,side:"out"}))}if(o){const c=t.points[o.index],l=o.side==="in"?Math.hypot(c.outX,c.outY):Math.hypot(c.inX,c.inY);return zo(u=>{const d=us(this.ctx,u.clientX,u.clientY),f=wo(t,d.x,d.y),p=f.x-c.x,m=f.y-c.y;if(o.side==="in"?(c.inX=p,c.inY=m):(c.outX=p,c.outY=m),!u.altKey){const g=Math.max(1e-4,Math.hypot(p,m)),v=u.shiftKey?g:l;o.side==="in"?(c.outX=-p/g*v,c.outY=-m/g*v):(c.inX=-p/g*v,c.inY=-m/g*v)}}),!0}const a=t.points.findIndex(c=>Math.hypot(c.x-n.x,c.y-n.y)<=r);if(a>=0){if(e.altKey)return this.selectedNodes.delete(a),!0;e.ctrlKey||e.metaKey?this.selectedNodes.add(a):this.selectedNodes.has(a)||(this.selectedNodes.clear(),this.selectedNodes.add(a));const c=n,l=[...this.selectedNodes].map(u=>({index:u,x:t.points[u].x,y:t.points[u].y}));return zo(u=>{const d=us(this.ctx,u.clientX,u.clientY),f=wo(t,d.x,d.y);for(const p of l)t.points[p.index].x=p.x+f.x-c.x,t.points[p.index].y=p.y+f.y-c.y}),!0}if(e.altKey&&!e.ctrlKey&&!e.metaKey)return this.selectedNodes.clear(),!0;if(e.ctrlKey||e.metaKey||e.altKey){const c=n,l=e.altKey,h=u=>{const d=us(this.ctx,u.clientX,u.clientY),f=wo(t,d.x,d.y),p=Math.min(c.x,f.x),m=Math.max(c.x,f.x),g=Math.min(c.y,f.y),v=Math.max(c.y,f.y);t.points.forEach((x,y)=>{x.x>=p&&x.x<=m&&x.y>=g&&x.y<=v&&(l?this.selectedNodes.delete(y):this.selectedNodes.add(y))}),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h)};return window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h),!0}return!1}}class bF{constructor(e,t){this.ctx=e,this.getTool=t}onColliderPointerDown(e){const t=this.ctx.store;if(t.activeObjectType!=="collision")return!1;const i=t.colliders.find(x=>x.id===t.activeObjectId);if(!(i!=null&&i.enabled)||i.visible===!1)return!1;const n=us(this.ctx,e.clientX,e.clientY),r=i.rotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r),c=Math.max(1e-4,Math.abs(i.scaleX??1)),l=Math.max(1e-4,Math.abs(i.scaleY??1)),h=n.x-i.x,u=n.y-i.y,d=(o*h+a*u)/c,f=(-a*h+o*u)/l;if(!(i.shape==="circle"?Math.hypot(d,f)<=i.radius:i.shape==="ellipse"?Math.hypot(d/Math.max(1,i.radiusX),f/Math.max(1,i.radiusY))<=1:Math.abs(d)<=i.width*.5&&Math.abs(f)<=i.height*.5))return!1;const m=i.x,g=i.y,v=n;return zo(x=>{const y=us(this.ctx,x.clientX,x.clientY);i.x=m+y.x-v.x,i.y=g+y.y-v.y}),!0}onForceFieldDown(e){const t=this.ctx.store.systems.find(h=>h.id===this.ctx.store.activeId);if((t==null?void 0:t.visible)===!1)return!1;const i=t==null?void 0:t.config;if(!(i!=null&&i.forceField)||i.forceRadius<=0)return!1;const n=us(this.ctx,e.clientX,e.clientY);if(Math.hypot(n.x-i.forceCenterX,n.y-i.forceCenterY)>i.forceRadius)return!1;const o=i.forceCenterX,a=i.forceCenterY;this.ctx.holder.value&&(this.ctx.holder.value.style.cursor="grabbing");const c=h=>{const u=us(this.ctx,h.clientX,h.clientY);i.forceCenterX=o+u.x-n.x,i.forceCenterY=a+u.y-n.y},l=()=>{this.ctx.holder.value&&(this.ctx.holder.value.style.cursor=""),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)};return window.addEventListener("pointermove",c),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l),e.preventDefault(),!0}onAttractionDown(e){const t=this.ctx.store.systems.find(u=>u.id===this.ctx.store.activeId);if((t==null?void 0:t.visible)===!1)return!1;const i=t==null?void 0:t.config;if(!(i!=null&&i.attraction))return!1;const n=us(this.ctx,e.clientX,e.clientY),r=Math.max(i.attractionRadius,12/Math.max(1e-4,this.ctx.store.editor.viewScale));if(Math.hypot(n.x-i.attractionCenterX,n.y-i.attractionCenterY)>r)return!1;const a=i.attractionCenterX,c=i.attractionCenterY;this.ctx.holder.value&&(this.ctx.holder.value.style.cursor="grabbing");const l=u=>{const d=us(this.ctx,u.clientX,u.clientY);i.attractionCenterX=a+d.x-n.x,i.attractionCenterY=c+d.y-n.y},h=()=>{this.ctx.holder.value&&(this.ctx.holder.value.style.cursor=""),window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h)};return window.addEventListener("pointermove",l),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h),e.preventDefault(),!0}selectedTransformTarget(){const e=this.ctx.store,t=e.activeObjectId;if(e.activeObjectType==="particle"){const r=e.systems.find(a=>a.id===t);if(!r||r.visible===!1)return null;const o=r.config;return{x:o.centerX,y:o.centerY,rotation:o.rootRotation,scaleX:o.rootScaleX??1,scaleY:o.rootScaleY??1,setPosition:(a,c)=>{o.centerX=a,o.centerY=c},setRotation:a=>{o.rootRotation=a},setScale:(a,c)=>{o.rootScaleX=a,o.rootScaleY=c}}}const n=(e.activeObjectType==="collision"?e.colliders:e.activeObjectType==="path"?e.paths:e.spines).find(r=>r.id===t);return!n||n.visible===!1?null:{x:Number(n.x)||0,y:Number(n.y)||0,rotation:Number(n.rotation)||0,scaleX:Math.max(.05,Number(n.scaleX)||1),scaleY:Math.max(.05,Number(n.scaleY)||1),setPosition:(r,o)=>{n.x=r,n.y=o},setRotation:r=>{n.rotation=r},setScale:(r,o)=>{n.scaleX=r,n.scaleY=o}}}onGizmoDown(e){const t=this.selectedTransformTarget();if(!t)return;const i=this.ctx.app(),n=this.ctx.store,r=n.editor.viewScale,o=this.ctx.holder.value.getBoundingClientRect(),a=o.left+i.screen.width/2+n.editor.viewX+t.x*r,c=o.top+i.screen.height*.5+n.editor.viewY+-t.y*r,l=e.clientX,h=e.clientY,u=this.getTool(),d=t.x,f=t.y,p=t.rotation,m=t.scaleX,g=t.scaleY,v=Math.hypot(l-a,h-c)||1,x=Math.atan2(h-c,l-a);zo(_=>{const C=(_.clientX-l)/r,S=(_.clientY-h)/r;if(u==="translate")t.setPosition(d+C,f-S);else if(u==="rotate"){const b=Math.atan2(_.clientY-c,_.clientX-a);t.setRotation(p-(b-x)*180/Math.PI)}else if(u==="scale"){const M=Math.hypot(_.clientX-a,_.clientY-c)/v;t.setScale(Math.max(.05,m*M),Math.max(.05,g*M))}})}}function Pv(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function kv(s,e,t){const i=s.rotation*Math.PI/180,n=Math.cos(i),r=Math.sin(i),o=Math.max(1e-4,Math.abs(s.scaleX??1)),a=Math.max(1e-4,Math.abs(s.scaleY??1));return{x:s.x+n*e*o-r*t*a,y:s.y+r*e*o+n*t*a}}function gp(s,e){if(!s.points.length)return null;if(s.points.length===1)return{...kv(s,s.points[0].x,s.points[0].y),angle:s.rotation};const t=s.closed?s.points.length:s.points.length-1,i=[];let n=0;for(let p=0;p0&&v===0)continue;const x=v/20,y=Pv(m.x,m.x+m.outX,g.x+g.inX,g.x,x),_=Pv(m.y,m.y+m.outY,g.y+g.inY,g.y,x),C=kv(s,y,_),S=i[i.length-1];S&&(n+=Math.hypot(C.x-S.x,C.y-S.y)),i.push({...C,distance:n})}}const r=Math.min(1,Math.max(0,e))*n;let o=i.findIndex(p=>p.distance>=r);o<0&&(o=i.length-1);const a=i[o],c=i[Math.max(0,o-1)],l=i[Math.min(i.length-1,o+1)],h=c.distance,u=o>0?(r-h)/Math.max(1e-4,a.distance-h):0,d=c.x+(a.x-c.x)*Math.min(1,Math.max(0,u)),f=c.y+(a.y-c.y)*Math.min(1,Math.max(0,u));return{x:d,y:f,angle:Math.atan2(l.y-c.y,l.x-c.x)*180/Math.PI}}function yh(s,e,t,i=Math.max(1e-4,Math.abs(s.rootScaleX)),n=Math.max(1e-4,Math.abs(s.rootScaleY))){const r=-s.rootRotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r),c=e-s.centerX,l=-t+s.centerY;return{x:(o*c+a*l)/i,y:(-a*c+o*l)/n}}function wF(s,e,t){const i=gp(e,t);if(!i)return null;const n=yh(s,i.x,i.y),r=i.angle*Math.PI/180,o=yh(s,i.x+Math.cos(r),i.y+Math.sin(r)),a=Math.atan2(o.y-n.y,o.x-n.x)*180/Math.PI;return{...n,angle:a}}function SF(s,e){return s.colliders.map(t=>{if(!t.followPath||!t.followPathId)return t;const i=s.paths.find(h=>h.id===t.followPathId&&h.enabled);if(!(i!=null&&i.points.length))return t;const n=Math.max(.05,Number(t.followDuration)||2),r=Math.min(1,Math.max(0,e/n)),o=Array.isArray(t.followCurve)?t.followCurve:[{x:0,y:0},{x:1,y:1}],a=t.followCurveMode==="跟随导出"?s.settings.exportSettings.keyframeCurve==="bezier"?"bezier":"linear":t.followCurveMode==="贝塞尔"?"bezier":"linear",c=Math.min(1,Math.max(0,n1(o,r,a))),l=gp(i,c);return l?{...t,x:l.x,y:l.y,rotation:t.rotation+(t.followPathRotation?l.angle:0)}:t})}class _F{constructor(){w(this,"emitters",new Map);w(this,"configs",new Map)}sync(e,t,i,n){for(const[r,o]of this.emitters){const a=e.systems.find(c=>c.id===r);(!a||this.configs.get(r)!==a.config)&&(t.removeChild(o),o.destroy({children:!0}),this.emitters.delete(r),this.configs.delete(r))}for(const r of e.systems){i&&!r.config.texture&&(r.config.texture=i);const o=pr(r.config);if(n)for(const c of o.trailResources)!c.texture&&(c.previewUrl==="/images/trail.png"||c.previewUrl==="/trails/trail.png")&&(c.texture=n);if(i)for(const c of o.imageResources)!c.texture&&c.textureName==="star"&&(c.texture=i);if(this.emitters.has(r.id))continue;const a=new LI(r.config);t.addChild(a),this.emitters.set(r.id,a),this.configs.set(r.id,r.config)}}destroy(e){for(const[t,i]of this.emitters)e.removeChild(i),i.destroy({children:!0}),this.emitters.delete(t),this.configs.delete(t)}}async function TF(){const[s,e]=await Promise.all([ze.fromURL("/images/star.png"),ze.fromURL("/images/trail.png")]);return{dotTex:s,trailTex:e}}function MF(s,e,t){for(const i of s.systems){i.config.texture=e;const n=pr(i.config);if(t)for(const r of n.trailResources)!r.texture&&(r.previewUrl==="/images/trail.png"||r.previewUrl==="/trails/trail.png")&&(r.texture=t);for(const r of n.imageResources)!r.texture&&r.textureName==="star"&&(r.texture=e)}}const CF={class:"stage-wrap"},AF={key:0,class:"hud"},EF={class:"hud-number hud-system-count"},IF={class:"hud-number hud-particle-count"},RF=Jt({__name:"Stage",setup(s){const e=ao(),t=Ge(null),i=Ge(null),n=Ge(!1),r=Ge(!1),o=Ge(""),a=Ge(!1);e.settings.undoLimit>0||(e.settings.undoLimit=20),e.settings.parameterPanelOnRight==null&&(e.settings.parameterPanelOnRight=!0),Number.isFinite(e.settings.backgroundX)||(e.settings.backgroundX=0),Number.isFinite(e.settings.backgroundY)||(e.settings.backgroundY=0),Number.isFinite(e.settings.backgroundOpacity)||(e.settings.backgroundOpacity=1),e.settings.backgroundImageName==null&&(e.settings.backgroundImageName=""),e.settings.backgroundImageData==null&&(e.settings.backgroundImageData=""),e.settings.showEmitter==null&&(e.settings.showEmitter=!0),e.settings.showBones==null&&(e.settings.showBones=!1),e.settings.bonePointDrawSize>0||(e.settings.bonePointDrawSize=1),e.settings.boneAxisDrawSize>0||(e.settings.boneAxisDrawSize=2),e.settings.showSkinMesh==null&&(e.settings.showSkinMesh=!1),e.settings.showGrid==null&&(e.settings.showGrid=!0);let c=null,l=null,h=null,u=null,d=null,f=null,p=null,m=null,g=null,v=null,x=null,y=null,_=null,C=null,S=[],b=0,M=0,I=0,F=0,E=null,k=null;const O=new sf,D=new _F,$={store:e,holder:t,app:()=>c},N=new xF($),U=new bF($,()=>o.value);let A=[];const P=new Map;function L(){l=new Si,c.stage.addChild(l),_=new Si,c.stage.addChild(_),O.createSprite(l),y=new zi,l.addChild(y),C=new mR,l.addChild(C.container),u=new zi,l.addChild(u),h=new zi,l.addChild(h),f=new zi,l.addChild(f),p=new zi,l.addChild(p),m=new zi,l.addChild(m),g=new zi,l.addChild(g),v=new zi,l.addChild(v),x=new zi,l.addChild(x),d=new zi,l.addChild(d)}function B(le){if(le.button===0){if(o.value&&U.selectedTransformTarget()){U.onGizmoDown(le);return}N.onPointerDown(le)||U.onColliderPointerDown(le)||U.onAttractionDown(le)||U.onForceFieldDown(le)||Dk($,le.clientX,le.clientY)}}function X(le){N.onStageDoubleClick(le)}function V(le){Lk($,le)}function q(le=!0){sf.clearStoreBackground(e,le)}async function W(le){await sf.handleFileChange(e,le)}nk({canvasElement:t,canvasFocused:a,undo:gw,save:()=>hw(e),togglePlay:()=>e.togglePlay(),toStart:()=>e.toStart(),setTool:le=>{o.value=le}});function ne(){l&&D.sync(e,l,E,k)}function re(){var ae,xe,Y;F=requestAnimationFrame(re);const le=performance.now()/1e3;let ue=le-b;if(b=le,ue>.1&&(ue=.1),c&&l){l.scale.set(e.editor.viewScale),l.position.set(c.screen.width/2+e.editor.viewX,c.screen.height*.5+e.editor.viewY),O.applyTransform(e.settings.backgroundX,e.settings.backgroundY,e.settings.backgroundOpacity),KI(e,c,y,_,S),ne();const j=Math.max(1,e.timeline.fps),H=e.timeline.frame,G=H/j;C==null||C.sync(e.spines,H,j),A=SF(e,G);for(const Me of e.systems){const ve=D.emitters.get(Me.id);if(!ve)continue;ve.setFollowExportCurveMode(e.settings.exportSettings.keyframeCurve==="bezier"?"贝塞尔":"线性");const Xe=Me.visible!==!1;ve.visible=Xe,ve.renderable=Xe;const pe=Me.config;ve.scale.set(pe.rootScaleX,pe.rootScaleY);const Ke=new Set(pe.collisionColliderIds);ve.setColliders(pe.collision?A.filter($e=>Ke.has($e.id)):[]),ve.setEmitterFollowSpawn(0,0,0);let Ze={x:pe.centerX,y:pe.centerY,rotation:pe.rootRotation};const Ct=pe.emitterFollow&&pe.emitterFollowMode==="bone"?e.spines.find($e=>$e.id===pe.emitterFollowSpineId&&$e.enabled&&$e.status==="ready"):null,Lt=Ct&&(C==null?void 0:C.getBoneWorldTransform(Ct.id,pe.emitterFollowBoneName))||null,ii=pe.emitterFollow&&pe.emitterFollowMode==="path"?e.paths.find($e=>$e.id===pe.emitterFollowPathId&&$e.enabled):null,rs=Math.max(.05,pe.emitterFollowDuration),zt=Math.min(1,Math.max(0,G/rs)),se=Math.min(1,Math.max(0,n1(pe.emitterFollowCurve,zt))),he=Math.min(1,Math.max(0,pe.emitterFollowOffset)),ot=pe.emitterFollowDirection==="reverse"?(1-he)*(1-se):he+(1-he)*se,at=ii?gp(ii,ot):null;if(Lt){const $e=pe.emitterFollowBoneOffsetX,_i=pe.emitterFollowBoneOffsetY,pi=Lt.x+$e,$t=Lt.y+_i,Fi=pe.rootRotation+pe.emitterFollowBoneRotation,vs=Math.max(1e-4,Math.abs(pe.rootScaleX*pe.emitterFollowBoneScaleX)),Vi=Math.max(1e-4,Math.abs(pe.rootScaleY*pe.emitterFollowBoneScaleY));if(Ze={x:pi,y:$t,rotation:Fi},pe.emitterFollowSpace==="local")ve.position.set(pi,-$t),ve.rotation=-Fi*Math.PI/180,ve.scale.set(vs,Vi),ve.setSimulationTransform(pi,$t,Fi,vs,Vi);else{ve.position.set(pe.centerX,-pe.centerY),ve.rotation=-pe.rootRotation*Math.PI/180,ve.scale.set(vs,Vi),ve.setSimulationTransform(pe.centerX,pe.centerY,pe.rootRotation,vs,Vi);const Ti=yh(pe,pi,$t,vs,Vi),uo=-(Fi-pe.rootRotation);ve.setEmitterFollowSpawn(Ti.x,Ti.y,uo)}}else if(at){const $e=at.angle+(pe.emitterFollowDirection==="reverse"?180:0),_i=pe.emitterAngleMode==="direction"?$e:pe.rootRotation;if(Ze={x:at.x,y:at.y,rotation:_i},pe.emitterFollowSpace==="local")ve.position.set(at.x,-at.y),ve.rotation=-_i*Math.PI/180,ve.setSimulationTransform(at.x,at.y,_i);else{ve.position.set(pe.centerX,-pe.centerY),ve.rotation=-pe.rootRotation*Math.PI/180,ve.setSimulationTransform(pe.centerX,pe.centerY,pe.rootRotation);const pi=yh(pe,at.x,at.y),$t=pe.emitterAngleMode==="direction"?-($e-pe.rootRotation):0;ve.setEmitterFollowSpawn(pi.x,pi.y,$t)}}else ve.position.set(pe.centerX,-pe.centerY),ve.rotation=-pe.rootRotation*Math.PI/180,ve.setSimulationTransform(pe.centerX,pe.centerY,pe.rootRotation);const gt=pe.shape==="path"&&pe.spawnPathId>0&&e.paths.find($e=>$e.id===pe.spawnPathId&&$e.enabled&&$e.points.length>0)||null;ve.setSpawnPathSampler(gt?$e=>wF(pe,gt,$e):null,(gt==null?void 0:gt.closed)===!0),P.set(Me.id,Ze)}let z=0;const ie=[],fe=e.settings.showBones&&e.activeObjectType==="particle"?e.activeObjectId:0,te=(Me,ve,Xe)=>{!Me||Me.id!==fe||Me.visible===!1||aR(ie,Xe,ve.position.x,ve.position.y)},oe=e.timeline,ce=oe.fps,Ce=1/Math.max(1,ce);let ye=I,we=0;if(oe.playing?(M+=ue,we=Math.floor(M/Ce),we>0&&(M-=we*Ce)):M=0,oe.playing&&we>0)for(let Me=0;MeZe.id===e.activeId),Xe=(ve==null?void 0:ve.config.mode)==="stream"&&ve.config.streamBehavior==="loop"?t1(ve.config,ce):null,Ke=oe.loop&&(Xe==null?void 0:Xe.start)===oe.playbackStart&&Xe.end===oe.playbackEnd?oe.playbackEnd-1:oe.playbackEnd;if(oe.frame>Ke)if(oe.loop)oe.frame=oe.playbackStart;else{oe.frame=oe.playbackEnd,oe.playing=!1;break}}else{if(oe.frame===0)for(const ve of e.systems){const Xe=D.emitters.get(ve.id);Xe&&(ve.config.mode==="stream"&&ve.config.streamBehavior==="loop"?fR(ve,Xe,ce,oe.totalFrames):Xe.reset())}for(const[ve,Xe]of D.emitters){const pe=e.systems.find(ii=>ii.id===ve),Ke=(pe==null?void 0:pe.config.mode)==="stream"&&pe.config.streamBehavior==="loop",Ze=Ke?(ae=pe.frames)==null?void 0:ae[oe.frame]:void 0,Ct=oe.frame===0&&!Ke,Lt=Ct?[]:Ze||Xe.update(Ce);if(Ct?Xe.apply([]):Ze&&Xe.apply(Ze),(pe==null?void 0:pe.visible)!==!1)for(const ii of Lt)ii.active&&te(pe,Xe,ii);z+=Lt.length}for(const ve of e.systems){if(!ve.config.texture)continue;ve.frames=ve.frames||[];const Xe=D.emitters.get(ve.id);Xe&&!(ve.config.mode==="stream"&&ve.config.streamBehavior==="loop")&&(ve.frames[oe.frame]=Xe.capture())}oe.frame++,oe.frame>=oe.totalFrames&&(oe.frame=oe.playbackStart,oe.recorded=!0)}else{oe.playing||(ye=oe.frame);for(const Me of e.systems){const ve=D.emitters.get(Me.id),Xe=oe.playing?I:oe.frame,pe=(Y=Me.frames)==null?void 0:Y[Xe],Ke=Me.config.mode==="stream"&&Me.config.streamBehavior==="loop"&&!!pe;if((oe.recorded||Ke)&&ve&&pe){ve.apply(pe);for(const Ze of pe)Ze.active&&(te(Me,ve,Ze),z++)}else if(ve){const Ze=oe.frame===0?[]:ve.update(0);if(oe.frame===0&&ve.apply([]),Me.visible!==!1)for(const Ct of Ze)Ct.active&&te(Me,ve,Ct);z+=ve.activeCount}}}I=ye,C==null||C.sync(e.spines,ye,ce);for(const[,Me]of D.emitters)Me.drawTrailMeshDebug(e.settings.showSkinMesh);rR(e,A,g),oR(e,N.selectedNodes,v),iR(e,C,u),ZI(e,P,h),JI(e,P,f),QI(e,p),eR(e,m),sR(o,U.selectedTransformTarget.bind(U),x),lR(ie,e,d),i.value&&(i.value.systems=e.systems.length,i.value.particles=z)}}return Vn(async()=>{const le=t.value;c=new Ab({width:le.clientWidth||800,height:le.clientHeight||600,backgroundAlpha:0,antialias:!0}),le.appendChild(c.view),L(),Xi(()=>e.settings.backgroundImageData,ae=>O.syncTexture(ae),{immediate:!0});const ue=await TF();E=ue.dotTex,k=ue.trailTex,MF(e,E,k),i.value={systems:e.systems.length,particles:0},e.timeline.recorded=!1,e.timeline.frame=0,M=0,I=0,e.timeline.playing=!0,e.timeline.loop=!0;for(const ae of e.systems)ae.frames=[];e.recalcTotalFrames(),b=performance.now()/1e3,re(),Xi(()=>e.systems.map(ae=>JSON.stringify(ae.config,(xe,Y)=>xe==="texture"||xe==="trailTexture"||xe==="previewUrl"?void 0:Y)).join("|")+`|colliders:${JSON.stringify(e.colliders)}|paths:${JSON.stringify(e.paths)}`,()=>{e.recalcTotalFrames(),e.timeline.recorded=!1,e.timeline.frame=0;for(const ae of e.systems)ae.frames=[];e.timeline.playing=!0,e.timeline.loop=!0}),tk(e)}),gl(()=>{cancelAnimationFrame(F),C==null||C.destroy(),C=null,O.destroy(),l&&c&&D.destroy(l),c&&(c.destroy(!0,{children:!0}),c=null)}),Xi(()=>[e.activeObjectType,e.activeObjectId],()=>N.resetSelection()),(le,ue)=>(K(),Q("div",CF,[T("div",{ref_key:"holder",ref:t,class:Le(["stage-holder",{grid:R(e).settings.showGrid}]),tabindex:"0",onWheel:et(V,["prevent"]),onPointerdown:B,onDblclick:et(X,["prevent"])},null,34),be(eF,{ctx:$,"active-tool":o.value,"show-settings":n.value,"show-help":r.value,"onUpdate:activeTool":ue[0]||(ue[0]=ae=>o.value=ae),"onUpdate:showSettings":ue[1]||(ue[1]=ae=>n.value=ae),"onUpdate:showHelp":ue[2]||(ue[2]=ae=>r.value=ae),onClearBackground:q,onBackgroundFile:W},null,8,["active-tool","show-settings","show-help"]),be(yF,{show:n.value,onClose:ue[3]||(ue[3]=ae=>n.value=!1)},null,8,["show"]),be(Bk,{show:r.value,onClose:ue[4]||(ue[4]=ae=>r.value=!1)},null,8,["show"]),i.value?(K(),Q("div",AF,[ue[5]||(ue[5]=At(" 系统: ",-1)),T("b",EF,_e(i.value.systems),1),ue[6]||(ue[6]=At(" · 粒子(骨骼): ",-1)),T("b",IF,_e(i.value.particles),1),ue[7]||(ue[7]=At(" · 根骨骼: ",-1)),ue[8]||(ue[8]=T("b",null,"root",-1)),ue[9]||(ue[9]=T("span",{class:"hud-tip"},"滚轮缩放 · 左键拖动画布",-1))])):Te("",!0)]))}}),PF=Qt(RF,[["__scopeId","data-v-b4c5a353"]]),kF=[{x:0,y:0},{x:1,y:1}],cm=[{x:0,y:1},{x:1,y:1}],FF=[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],hm=[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}],um=[{x:0,y:1},{x:1,y:1}],dm=[{x:0,y:1},{x:1,y:1}],qt=no({visible:!1,title:"",detail:"",progress:0,indeterminate:!1,failed:!1});let uc=0;function OF(s){return new Promise(e=>window.setTimeout(e,s))}function yw(s,e){const t=++uc,i=performance.now();Object.assign(qt,{visible:!0,title:s,detail:e,progress:0,indeterminate:!1,failed:!1});const n=(o,a)=>{t===uc&&(qt.indeterminate=o==null,o!=null&&(qt.progress=Math.min(100,Math.max(0,o))),a&&(qt.detail=a))},r=async(o,a)=>{if(t!==uc)return;qt.failed=o,qt.indeterminate=!1,qt.progress=o?qt.progress:100,qt.detail=a,await OF(Math.max(180,(o?850:450)-(performance.now()-i))),t===uc&&(qt.visible=!1)};return{update:n,paint:()=>new Promise(o=>requestAnimationFrame(()=>o())),finish:(o="已完成")=>r(!1,o),fail:(o="操作失败")=>r(!0,o)}}async function BF(s,e){if(!s.body)return e(null),s.text();const t=Number(s.headers.get("content-length")),i=Number.isFinite(t)&&t>0,n=s.body.getReader(),r=new TextDecoder;let o=0,a="";for(e(i?0:null);;){const{done:c,value:l}=await n.read();if(c)break;o+=l.byteLength,a+=r.decode(l,{stream:!0}),e(i?Math.min(1,o/t):null)}return a+=r.decode(),i&&e(1),a}const LF="3.8";function ds(s,e,t){s[e]==null&&s[t]!=null&&(s[e]=s[t]),delete s[t]}function fm(s){if(!s||typeof s!="object")return;if(Array.isArray(s)){for(const t of s)fm(t);return}const e=s;Array.isArray(e.curve)&&delete e.curve;for(const t of Object.values(e))fm(t)}function DF(s){for(const e of s.bones)ds(e,"transform","inherit");for(const e of s.transform||[])ds(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),e.scaleMix==null&&(e.scaleMix=e.mixScaleX??e.mixScaleY),ds(e,"shearMix","mixShearY"),delete e.mixX,delete e.mixY,delete e.mixScaleX,delete e.mixScaleY;for(const e of s.path||[])ds(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),delete e.mixX,delete e.mixY;for(const e of s.skins)for(const t of Object.values(e.attachments||{}))for(const i of Object.values(t||{}))i.parent!=null&&ds(i,"deform","timelines")}function NF(s){for(const e of Object.values(s.slots||{}))ds(e,"color","rgba"),ds(e,"twoColor","rgba2")}function UF(s){for(const e of Object.values(s.bones||{}))for(const t of e.rotate||[])ds(t,"angle","value")}function $F(s){for(const e of Object.values(s.transform||{}))for(const t of e)ds(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),t.scaleMix==null&&(t.scaleMix=t.mixScaleX??t.mixScaleY),ds(t,"shearMix","mixShearY"),delete t.mixX,delete t.mixY,delete t.mixScaleX,delete t.mixScaleY}function XF(s){for(const e of Object.values(s.path||{})){for(const t of["position","spacing"])for(const i of e[t]||[])ds(i,t,"value");for(const t of e.mix||[])ds(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),delete t.mixX,delete t.mixY}}function VF(s){if(!s.attachments)return;const e=s.deform||(s.deform={});for(const[t,i]of Object.entries(s.attachments)){const n=e[t]||(e[t]={});for(const[r,o]of Object.entries(i)){const a=n[r]||(n[r]={});for(const[c,l]of Object.entries(o))l.deform&&(a[c]=l.deform)}}delete s.attachments}function YF(s){s.skeleton.spine=LF,DF(s);for(const e of Object.values(s.animations))NF(e),UF(e),$F(e),XF(e),VF(e);return fm(s.animations),s}function GF(s,e,t,i){const n=t.frame-e.frame,r=n<=0?0:(s.frame-e.frame)/n;let o=0;for(let a=0;a[...i].sort((o,a)=>o-a);let r=!0;for(;r;){r=!1;const o=n();for(let a=0;au&&(u=f,h=d)}h>=0&&(i.add(h),r=!0)}}return n().map(o=>s[o])}function Fv(s,e,t,i,n){const r=t-e+1;if(r<2)return 0;const o=n?e:t,a=n?e+1:t-1,c=n?e+2:t-2,l=Math.abs(s[a].frame-s[o].frame);if(r>=3&&l>0&&Math.abs(Math.abs(s[c].frame-s[a].frame)-l)<1e-6){const u=s[o].values[i],d=s[a].values[i],f=s[c].values[i];return n?(-3*u+4*d-f)/(2*l):(3*u-4*d+f)/(2*l)}const h=s[a].frame-s[o].frame;return h?(s[a].values[i]-s[o].values[i])/h:0}function Ov(s,e,t){const i=s[t].frame-s[e].frame,n=[];for(let r=0;rd.values[r])),l=Math.max(...s.slice(e,t+1).map(d=>d.values[r])),h=o+Fv(s,e,t,r,!0)*i/3,u=a-Fv(s,e,t,r,!1)*i/3;n.push([Math.max(c,Math.min(l,h)),Math.max(c,Math.min(l,u))])}return{values:n}}function HF(s,e,t,i,n){const r=1-n;return r*r*r*s+3*r*r*n*e+3*r*n*n*t+n*n*n*i}function jF(s,e,t,i,n){const r=t.frame-e.frame,o=r<=0?0:(s.frame-e.frame)/r;let a=0;for(let c=0;c[...i].sort((a,c)=>a-c);let r=!0;for(;r;){r=!1;const a=n();for(let c=0;cf&&(f=m,d=p)}d>=0&&(i.add(d),r=!0)}}const o=n();return{samples:o.map(a=>s[a]),controls:o.slice(0,-1).map((a,c)=>Ov(s,a,o[c+1]))}}function WF(s){if(!s.length)return[];const e=[s[0]];for(let t=1;t180;)i-=360;for(;i-e[t-1]<-180;)i+=360;e.push(i)}return e}function ti(s){if(!Number.isFinite(s))return 0;const e=Math.round(s*1e5)/1e5;return Object.is(e,-0)?0:e}function zF(s,e,t,i){const n=Math.max(2,Math.min(16,Math.round(Number(s.trailGridRows)||2))),r=Math.max(2,Math.min(32,Math.round(Number(s.trailGridCols)||2))),o=Math.max(2,t.length),a=e.lengthMode==="random"?Math.max(1,Number(e.lengthMin)||0,Number(e.lengthMax)||0):Math.max(.001,Number(e.length)||100),c=e.widthSizeMode==="random"?Math.max(1,Number(e.widthMin)||0,Number(e.widthMax)||0):Math.max(.001,Number(e.width)||100),l=(Number(e.rotation)||0)*Math.PI/180,h=Math.cos(l),u=Math.sin(l),d=[],f=[],p=[],m=[],g=[];for(let y=0;y=0;y--)g.push({col:y,row:n-1});for(let y=n-2;y>=1;y--)g.push({col:0,row:y});const v=g.length;for(let y=1;y|\s]+/g,"_").replace(/^_+|_+$/g,"")||e}function ww(s,e){let t=s,i=2;for(;e.has(t);)t=`${s}_${i++}`;return e.add(t),t}function KF(s){return s.replace(/\.[^./\\]+$/,"")}function Sw(s,e){return KF([s,e].filter(Boolean).join("/").replace(/\\/g,"/").replace(/\/{2,}/g,"/").replace(/^\.\//,""))}function ZF(s){var i,n;const e=Number(((i=s==null?void 0:s.orig)==null?void 0:i.width)??(s==null?void 0:s.width))||0,t=Number(((n=s==null?void 0:s.orig)==null?void 0:n.height)??(s==null?void 0:s.height))||0;return{width:e,height:t}}function fc(s){return Math.round(Math.max(0,Math.min(1,s))*255).toString(16).padStart(2,"0")}function Uv(s,e){return[(s>>16&255)/255,(s>>8&255)/255,(s&255)/255,Math.max(0,Math.min(1,e))]}function Ga(s,e){return ti(s/e)}function JF(s,e){const t=s.config,i=t.lifeMode==="fixed"?Math.max(0,Number(t.lifeMin)||0):Math.max(0,Number(t.lifeMin)||0,Number(t.lifeMax)||0),n=Math.max(0,Number(t.delay)||0);let r;return t.mode!=="stream"?r=n+i:t.streamBehavior!=="loop"?r=n+Math.max(1/e,Number(t.duration)||0)+i:r=n+lr(t,e).total/e,Math.max(1,Math.ceil(r*e)+1)}function xh(s,e){return e?s.boneName:`${s.spawnId??"legacy"}_${s.boneName}`}function QF(s,e,t){const i=new Set;for(const n of s)for(const r of n)i.add(xh(r,e));return[...i].sort().map((n,r)=>({key:n,name:ww(`_particle_${String(r).padStart(3,"0")}`,t),states:s.map(o=>o.find(a=>xh(a,e)===n)||null)}))}function $v(s,e){const t=new Set(e.states.map(i=>i==null?void 0:i.resourceId).filter(i=>typeof i=="number"));return s.config.imageResources.filter(i=>t.has(i.id))}function e3(s,e,t,i){const n=e*t/i,r=Math.min(s.states.length-1,Math.max(0,Math.floor(n))),o=Math.min(s.states.length-1,r+1),a=s.states[r],c=s.states[o];if(!a||!c||xh(a,!0)!==xh(c,!0)||a.spawnId!==c.spawnId)return a;const l=n-r;if(l<=1e-6)return a;const h=(d,f)=>(d??0)+((f??d??0)-(d??0))*l,u=a.trailState&&c.trailState&&a.trailState.resourceId===c.trailState.resourceId?{...a.trailState,width:h(a.trailState.width,c.trailState.width),alpha:h(a.trailState.alpha,c.trailState.alpha),bones:a.trailState.bones.map((d,f)=>{const p=c.trailState.bones[f]||d;return{...d,worldX:h(d.worldX??d.x,p.worldX??p.x),worldY:h(d.worldY??d.y,p.worldY??p.y),worldRotation:h(d.worldRotation??-d.rotation,p.worldRotation??-p.rotation)}})}:a.trailState;return{...a,worldX:h(a.worldX,c.worldX),worldY:h(a.worldY,c.worldY),worldRotation:h(a.worldRotation,c.worldRotation),worldScaleX:h(a.worldScaleX,c.worldScaleX),worldScaleY:h(a.worldScaleY,c.worldScaleY),alpha:h(a.alpha,c.alpha),trailState:u}}function Xv(s,e){return!s||s==="跟随导出"?e.keyframeCurve:s==="贝塞尔"?"bezier":"linear"}function _o(s,e,t,i,n,r=new Set,o=n.keyframeCurve){if(!s.length)return[];const a=o==="bezier"&&n.spineVersion!=="3.8"?bw(s,i,r):{samples:xw(s,i,r),controls:[]},c=a.samples.map(l=>{const h={time:Ga(l.frame,e)};return t.forEach((u,d)=>{h[u]=ti(l.values[d])}),h});for(let l=0;l0&&n&&e.add(t-1),i&&e.add(t))}return e}function i3(s){const e=new Set;for(let t=0;t0&&n&&e.add(t-1),i&&e.add(t))}return e}function s3(s,e){var i;if(!s.shapeEnabled||!((i=s.shapeCurve)!=null&&i.length))return 1;const t=[...s.shapeCurve].sort((n,r)=>n.x-r.x);if(e<=t[0].x)return Math.max(0,t[0].y);for(let n=1;n{r!==n&&(i.push(t(r,o)),n=r)}),i}function r3(s,e,t){const i=s.imageMode==="sequence"?s.sequenceFrames[e]:void 0,n=(i==null?void 0:i.name)||s.textureName||`image_${s.id}`,r=(i==null?void 0:i.texture)||s.texture,o=ZF(r);(!o.width||!o.height)&&t.push({code:"missing-image",message:`图片“${n}”缺失或尺寸不可读,已保留路径。`});const a=o.width||1,c=o.height||1;return{path:Sw(s.textureFolder,n),x:ti((.5-s.anchorX)*a),y:ti((s.anchorY-.5)*c),width:ti(a),height:ti(c)}}function o3(s,e,t,i,n=i.keyframeCurve){if(!s.length)return[];const r=new Set;for(let h=1;h({frame:u,values:h})),a=1/255,c=n==="bezier"&&i.spineVersion!=="3.8"?bw(o,[a,a,a,.01],r):{samples:xw(o,[a,a,a,.01],r),controls:[]},l=c.samples.map(h=>({time:Ga(h.frame,t),color:`${fc(h.values[0])}${fc(h.values[1])}${fc(h.values[2])}${fc(h.values[3])}`}));if(c.controls.length)for(let h=0;h({time:Ga(d,n),name:u??null}));c.length&&(a.attachment=c);const l=o3(i,t,n,r,o);l.length&&(a.rgba=l)}function Yv(s){var p;const e=s.settings,t=Math.max(1,Number(s.timeline.fps)||30),i=Math.max(1,Math.round(e.fps||30)),n=e.integerFrameAlignment?i:t,r=[],o=s.systems.filter(m=>m.visible!==!1),a={skeleton:{hash:"",spine:e.spineVersion,x:0,y:0,width:0,height:0,images:e.imagesPath||"./images/"},bones:[{name:"root"}],slots:[],skins:[{name:"default",attachments:{}}],animations:{}};e.omitFps||(a.skeleton.fps=i);const c=a.skins[0].attachments,l=new Set(["root"]),h=[...new Set([...s.timeline.animations.length?s.timeline.animations:["animation"],...o.map(m=>m.animation||"animation")])],u=new Map;for(const m of o){const g=Math.min(((p=m.frames)==null?void 0:p.length)||0,JF(m,t)),v=(m.frames||[]).slice(0,g);v.length||r.push({code:"empty-cache",message:`“${m.config.name}”没有可用帧缓存。`});const x=ww(qF(m.config.name,`system_${m.id}`),l);a.bones.push({name:x,parent:"root"});const y=QF(v,e.bonePool,l),_=Math.max(0,(g-1)/t),C=Math.max(1,Math.ceil(_*n)+1),S=u.get(m.animation)||[];S.push({system:m,tracks:y,targetFrames:C}),u.set(m.animation,S);for(const b of y){a.bones.push({name:b.name,parent:x});const M=$v(m,b),I=new Set(M.map(O=>O.blend));for(const O of I){const D=`${b.name}_image_${O}`;a.slots.push({name:D,bone:b.name,color:"ffffff00",blend:Bv[O]});const $=c[D]||(c[D]={});for(const N of M.filter(U=>U.blend===O)){const U=N.imageMode==="sequence"?Math.max(1,N.sequenceFrames.length):1;for(let A=0;A{var L;return((L=P==null?void 0:P.trailState)==null?void 0:L.resourceId)===O.id}))continue;const D=Math.max(2,Math.min(16,Math.round(O.boneCount||3))),$=[];for(let P=0;Pa.bones.findIndex(L=>L.name===P)),A=Sw("",O.textureName||`trail_${O.id}`);(c[N]||(c[N]={}))[`trail_${O.id}`]=zF(m.config,O,U,A),O.texture||r.push({code:"missing-image",message:`拖尾图片“${O.textureName||O.id}”缺失,已保留路径。`})}const F=`${b.name}_image_`,E=`${b.name}_trail_`,k=a.slots.filter(O=>String(O.name).startsWith(F)||String(O.name).startsWith(E));k.length&&(a.slots=a.slots.filter(O=>!k.includes(O)),a.slots.push(...k.filter(O=>String(O.name).startsWith(E)),...k.filter(O=>String(O.name).startsWith(F))))}}for(const m of h){const g=u.get(m)||[],v={bones:{},slots:{}};let x=!1;for(const{system:y,tracks:_,targetFrames:C}of g)for(const S of _){const b=Array.from({length:C},(B,X)=>e3(S,X,t,n)),M=b.map(B=>!!(B!=null&&B.active)),I=[],F=[],E=[];b.forEach((B,X)=>{B!=null&&B.active&&(I.push({frame:X,values:[B.worldX??B.x,B.worldY??B.y]}),F.push(B.worldRotation??B.rotation),E.push({frame:X,values:[B.worldScaleX??B.scaleX,B.worldScaleY??B.scaleY]}))});const k=WF(F),O=I.map((B,X)=>({frame:B.frame,values:[k[X]??0]})),D=t3(b),$={},N=_o(I,n,["x","y"],[Lv,Lv],e,D),U=_o(O,n,["value"],[Nv],e,D),A=_o(E,n,["x","y"],[dc,dc],e,D);N.length&&($.translate=N),U.length&&($.rotate=U),A.length&&($.scale=A),Object.keys($).length&&(v.bones[S.name]=$,x=!0);const P=$v(y,S),L=new Set(P.map(B=>B.blend));for(const B of L){const X=[],V=[];let q=16777215;for(let le=0;leY.id===ue.resourceId):void 0,xe=!!ue&&M[le]&&ue.imageVisible!==!1&&(ae==null?void 0:ae.blend)===B;ue&&(ae==null?void 0:ae.blend)===B&&(q=ue.colorHex),X.push(xe?`image_${ae.id}_${ue.imageFrameIndex??0}`:null),V.push(Uv(q,xe?ue.alpha:0))}const ne=P.filter(le=>le.blend===B).filter(le=>le.independentAlpha==="curve").map(le=>Xv(le.alphaCurveMode,e)),re=ne.length?ne.includes("bezier")?"bezier":"linear":Xv(y.config.alphaMode==="curve"?y.config.curveMode:void 0,e);Vv(v,`${S.name}_image_${B}`,X,V,n,e,re),X.some(Boolean)&&(x=!0)}if(y.config.trail)for(const B of y.config.trailResources){const X=Math.max(2,Math.min(16,Math.round(B.boneCount||3))),V=b.map(Y=>{var j;return((j=Y==null?void 0:Y.trailState)==null?void 0:j.resourceId)===B.id?Y.trailState:void 0}),q=V.find(Y=>!!Y);if(!q)continue;const W=i3(V),ne=B.widthSizeMode==="random"?Math.max(1,Number(B.widthMin)||0,Number(B.widthMax)||0):Math.max(.001,Number(B.width)||100);let re=q;const le=V.map(Y=>(Y&&(re=Y),re));for(let Y=0;Y{const Me=ye==null?void 0:ye.bones[Math.min(ye.bones.length-1,Y)];if(!Me)return;const ve={x:Me.worldX??Me.x,y:Me.worldY??Me.y,rotation:Me.worldRotation??-Me.rotation};j.push({frame:we,values:[ve.x,ve.y]}),H.push({frame:we,values:[ve.rotation]}),G.push({frame:we,values:[1,Math.max(0,ye.width/ne)*ie]})});const fe=`${S.name}_trail_${B.id}_${Y}`,te={},oe=_o(j,n,["x","y"],[Dv,Dv],e,z),ce=_o(H,n,["value"],[Nv],e,z),Ce=_o(G,n,["x","y"],[dc,dc],e,z);oe.length&&(te.translate=oe),ce.length&&(te.rotate=ce),Ce.length&&(te.scale=Ce),Object.keys(te).length&&(v.bones[fe]=te)}const ue=V.map(()=>`trail_${B.id}`);let ae=q.colorHex;const xe=V.map(Y=>(Y&&(ae=Y.colorHex),Uv(ae,Y?Y.alpha:0)));Vv(v,`${S.name}_trail_${B.id}`,ue,xe,n,e),x=!0}}(x||!e.excludeEmptyAnimations)&&(a.animations[m]=v)}!Object.keys(a.animations).length&&!e.excludeEmptyAnimations&&(a.animations.animation={bones:{},slots:{}});const d=e.spineVersion==="3.8"?YF(a):a,f=JSON.stringify(d,null,2);return{json:d,text:f,warnings:r,particleSystemCount:o.length,animationCount:Object.keys(d.animations).length,boneCount:d.bones.length}}function a3(s,e){const t=new Blob([s.text],{type:"application/json;charset=utf-8"}),i=URL.createObjectURL(t),n=document.createElement("a");n.href=i,n.download=/\.json$/i.test(e)?e:`${e||"SpineParticle"}.json`,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3)}class z${constructor(){w(this,"array",[])}add(e){const t=this.contains(e);return this.array[e|0]=e|0,!t}contains(e){return this.array[e|0]!==void 0}remove(e){this.array[e|0]=void 0}clear(){this.array.length=0}}class l3{constructor(){w(this,"entries",{});w(this,"size",0)}add(e){const t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){const t=this.size;for(let i=0,n=e.length;i1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>`0${(t*255).toString(16)}`.slice(-2);return+`0x${e(this.r)}${e(this.g)}${e(this.b)}`}static fromString(e,t=new Qi){return t.setFromString(e)}};w(Qi,"WHITE",new Qi(1,1,1,1)),w(Qi,"RED",new Qi(1,0,0,1)),w(Qi,"GREEN",new Qi(0,1,0,1)),w(Qi,"BLUE",new Qi(0,0,1,1)),w(Qi,"MAGENTA",new Qi(1,0,1,1));let tt=Qi;const Xt=class Xt{static clamp(e,t,i){return ei?i:e}static cosDeg(e){return Math.cos(e*Xt.degRad)}static sinDeg(e){return Math.sin(e*Xt.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*Xt.radDeg}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){const t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return Xt.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,i){const n=Math.random(),r=t-e;return n<=(i-e)/r?e+Math.sqrt(n*r*(i-e)):t-Math.sqrt((1-n)*r*(t-i))}static isPowerOfTwo(e){return e&&(e&e-1)===0}};w(Xt,"epsilon",1e-5),w(Xt,"epsilon2",Xt.epsilon*Xt.epsilon),w(Xt,"PI",3.1415927),w(Xt,"PI2",Xt.PI*2),w(Xt,"invPI2",1/Xt.PI2),w(Xt,"radiansToDegrees",180/Xt.PI),w(Xt,"radDeg",Xt.radiansToDegrees),w(Xt,"degreesToRadians",Xt.PI/180),w(Xt,"degRad",Xt.degreesToRadians);let Ee=Xt;const as=class as{apply(e,t,i){return t===void 0||i===void 0?this.applyInternal(e):e+(t-e)*this.applyInternal(i)}};w(as,"linear",new class extends as{applyInternal(e){return e}}),w(as,"smooth",new class extends as{applyInternal(e){return e*e*(3-2*e)}}),w(as,"slowFast",new class extends as{applyInternal(e){return e*e}}),w(as,"fastSlow",new class extends as{applyInternal(e){return(e-1)*(e-1)*-1+1}}),w(as,"circle",new class extends as{applyInternal(e){return e<=.5?(e*=2,(1-Math.sqrt(1-e*e))/2):(e--,e*=2,(Math.sqrt(1-e*e)+1)/2)}});let qo=as;class c3 extends qo{constructor(t){super();w(this,"power",2);this.power=t}applyInternal(t){return t<=.5?Math.pow(t*2,this.power)/2:Math.pow((t-1)*2,this.power)/(this.power%2===0?-2:2)+1}}class q$ extends c3{constructor(e){super(e)}applyInternal(e){return Math.pow(e-1,this.power)*(this.power%2===0?-1:1)+1}}const Qn=class Qn{static arrayCopy(e,t,i,n,r){for(let o=t,a=n;o=t?e:Qn.setArraySize(e,t,i)}static newArray(e,t){const i=[];for(let n=0;n0?this.items.pop():this.instantiator()}free(e){var t;(t=e.reset)==null||t.call(e),this.items.push(e)}freeAll(e){for(let t=0;tthis.maxDelta&&(this.delta=this.maxDelta),this.lastTime=e,this.frameCount++,this.frameTime>1&&(this.framesPerSecond=this.frameCount/this.frameTime,this.frameTime=0,this.frameCount=0)}}class J${constructor(e=32){w(this,"values");w(this,"addedValues",0);w(this,"lastValue",0);w(this,"mean",0);w(this,"dirty",!0);this.values=new Array(e)}hasEnoughData(){return this.addedValues>=this.values.length}addValue(e){this.addedValuesthis.values.length-1&&(this.lastValue=0),this.dirty=!0}getMean(){if(this.hasEnoughData()){if(this.dirty){let e=0;for(let t=0;t{h.width=parseInt(i[1]),h.height=parseInt(i[2])},n.format=()=>{},n.filter=h=>{h.minFilter=Ye.enumValue(Qo,i[1]),h.magFilter=Ye.enumValue(Qo,i[2])},n.repeat=h=>{i[1].indexOf("x")!==-1&&(h.uWrap=ea.Repeat),i[1].indexOf("y")!==-1&&(h.vWrap=ea.Repeat)},n.pma=h=>{h.pma=i[1]==="true"};var r={};r.xy=h=>{h.x=parseInt(i[1]),h.y=parseInt(i[2])},r.size=h=>{h.width=parseInt(i[1]),h.height=parseInt(i[2])},r.bounds=h=>{h.x=parseInt(i[1]),h.y=parseInt(i[2]),h.width=parseInt(i[3]),h.height=parseInt(i[4])},r.offset=h=>{h.offsetX=parseInt(i[1]),h.offsetY=parseInt(i[2])},r.orig=h=>{h.originalWidth=parseInt(i[1]),h.originalHeight=parseInt(i[2])},r.offsets=h=>{h.offsetX=parseInt(i[1]),h.offsetY=parseInt(i[2]),h.originalWidth=parseInt(i[3]),h.originalHeight=parseInt(i[4])},r.rotate=h=>{const u=i[1];u==="true"?h.degrees=90:u!=="false"&&(h.degrees=parseInt(u))},r.index=h=>{h.index=parseInt(i[1])};let o=t.readLine();for(;o&&o.trim().length===0;)o=t.readLine();for(;!(!o||o.trim().length===0||t.readEntry(i,o)===0);)o=t.readLine();let a=null,c=null,l=null;for(;o!==null;)if(o.trim().length===0)a=null,o=t.readLine();else if(a){const h=new Tw(a,o);for(;;){const u=t.readEntry(i,o=t.readLine());if(u===0)break;const d=r[i[0]];if(d)d(h);else{c||(c=[]),l||(l=[]),c.push(i[0]);const f=[];for(let p=0;p0&&l&&l.length>0&&(h.names=c,h.values=l,c=null,l=null),h.u=h.x/a.width,h.v=h.y/a.height,h.degrees===90?(h.u2=(h.x+h.height)/a.width,h.v2=(h.y+h.width)/a.height):(h.u2=(h.x+h.width)/a.width,h.v2=(h.y+h.height)/a.height),this.regions.push(h)}else{for(a=new f3(o.trim());t.readEntry(i,o=t.readLine())!==0;){const h=n[i[0]];h&&h(a)}this.pages.push(a)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length===0))return 0;const i=t.indexOf(":");if(i===-1)return 0;e[0]=t.substr(0,i).trim();for(let n=1,r=i+1;;n++){const o=t.indexOf(",",r);if(o===-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,o-r).trim(),r=o+1,n===4)return 4}}}class f3{constructor(e){w(this,"name");w(this,"minFilter",Qo.Nearest);w(this,"magFilter",Qo.Nearest);w(this,"uWrap",ea.ClampToEdge);w(this,"vWrap",ea.ClampToEdge);w(this,"texture",null);w(this,"width",0);w(this,"height",0);w(this,"pma",!1);w(this,"regions",[]);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(const t of this.regions)t.texture=e}}class Tw extends _w{constructor(t,i){super();w(this,"page");w(this,"name");w(this,"x",0);w(this,"y",0);w(this,"offsetX",0);w(this,"offsetY",0);w(this,"originalWidth",0);w(this,"originalHeight",0);w(this,"index",0);w(this,"degrees",0);w(this,"names",null);w(this,"values",null);this.page=t,this.name=i,t.regions.push(this)}}const Ch=class Ch{constructor(e){w(this,"name");w(this,"timelineAttachment");w(this,"timelineSlots",Ch.empty);if(!e)throw new Error("name cannot be null.");this.name=e,this.timelineAttachment=this}isTimelineActive(e,t,i){let n=e[t];if(n.bone.isActive()){const r=(i?n.getAppliedPose():n.getPose()).getAttachment();if(r!=null&&r.timelineAttachment===this)return!0}for(let r=0,o=this.timelineSlots.length;r>1)*c;const l=i.appliedPose.deform;let h=this.vertices;const u=this.bones;if(!u){l.length>0&&(h=l);const m=i.bone.appliedPose,g=m.worldX,v=m.worldY,x=m.a,y=m.b,_=m.c,C=m.d;for(let S=n,b=a;b=this.regions.length&&(t=this.regions.length-1),t}getUVs(e){return this.uvs[e]}hasPathSuffix(){return this.pathSuffix}getPath(e,t){if(!this.pathSuffix)return e;let i=e;const n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)i+="0";return i+=n,i}static nextID(){return Fo._nextID++}};w(Fo,"_nextID",0);let ia=Fo;var bi;(function(s){s[s.hold=0]="hold",s[s.once=1]="once",s[s.loop=2]="loop",s[s.pingpong=3]="pingpong",s[s.onceReverse=4]="onceReverse",s[s.loopReverse=5]="loopReverse",s[s.pingpongReverse=6]="pingpongReverse"})(bi||(bi={}));const Mw=[bi.hold,bi.once,bi.loop,bi.pingpong,bi.onceReverse,bi.loopReverse,bi.pingpongReverse];class vp{constructor(e,t,i){w(this,"name");w(this,"timelines",[]);w(this,"timelineIds");w(this,"bones");w(this,"color",new tt(1,1,1,1));w(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.duration=i,this.timelineIds=new l3,this.bones=[],this.setTimelines(t)}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e;const t=e.length;this.timelineIds.clear(),this.bones.length=0;const i=new Set,n=e;for(let r=0;r0&&(t%=this.duration));const u=this.timelines;for(let d=0,f=u.length;dt)return r-i;return n-i}};function m3(s){return typeof s=="object"&&s!==null&&typeof s.slotIndex=="number"}class co extends Rt{constructor(t,i,...n){super(t,...n);w(this,"curves");this.curves=Ye.newFloatArray(t+i*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){const i=this.getFrameCount()+t*18;if(this.curves.length>i){const n=Ye.newFloatArray(i);Ye.arrayCopy(this.curves,0,n,0,i),this.curves=n}}setBezier(t,i,n,r,o,a,c,l,h,u,d){const f=this.curves;let p=this.getFrameCount()+t*18;n===0&&(f[i]=2+p);const m=(r-a*2+l)*.03,g=(o-c*2+h)*.03,v=((a-l)*3-r+u)*.006,x=((c-h)*3-o+d)*.006;let y=m*2+v,_=g*2+x,C=(a-r)*.3+m+v*.16666667,S=(c-o)*.3+g+x*.16666667,b=r+C,M=o+S;for(let I=p+18;pt){const h=this.frames[i],u=this.frames[i+n];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}const a=r+18;for(r+=2;r=t){const h=o[r-2],u=o[r-1];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}i+=this.getFrameEntries();const c=o[a-2],l=o[a-1];return l+(t-c)/(this.frames[i]-c)*(this.frames[i+n]-l)}}class En extends co{constructor(e,t,i){super(e,t,i)}getFrameEntries(){return 2}setFrame(e,t,i){e<<=1,this.frames[e]=t,this.frames[e+1]=i}getCurveValue(e){const t=this.frames;let i=t.length-2;for(let r=2;r<=i;r+=2)if(t[r]>e){i=r-2;break}const n=this.curves[i>>1];switch(n){case 0:{const r=t[i],o=t[i+1];return o+(e-r)/(t[i+2]-r)*(t[i+2+1]-o)}case 1:return t[i+1]}return this.getBezierValue(e,i,1,n-2)}getRelativeValue(e,t,i,n,r,o){if(e>2];switch(f){case 0:{const p=u[d];c=u[d+1],l=u[d+2],h=u[d+3];const m=(i-p)/(u[d+4]-p);c+=(u[d+4+1]-c)*m,l+=(u[d+4+2]-l)*m,h+=(u[d+4+3]-h)*m;break}case 1:c=u[d+1],l=u[d+2],h=u[d+3];break;default:c=this.getBezierValue(i,d,1,f-2),l=this.getBezierValue(i,d,2,f+18-2),h=this.getBezierValue(i,d,3,f+36-2)}if(n!==1)if(r===Ue.setup){const p=e.data.setupPose.color;c=p.r+(c-p.r)*n,l=p.g+(l-p.g)*n,h=p.b+(h-p.b)*n}else c=a.r+(c-a.r)*n,l=a.g+(l-a.g)*n,h=a.b+(h-a.b)*n;a.r=c<0?0:c>1?1:c,a.g=l<0?0:l>1?1:l,a.b=h<0?0:h>1?1:h}}class Nw extends En{constructor(t,i,n){super(t,i,`${Qe.alpha}|${n}`);w(this,"slotIndex",0);this.slotIndex=n}apply(t,i,n,r,o,a,c,l,h){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=(h?u.appliedPose:u.pose).color;let f=0;const p=this.frames;if(n1?1:f}}class Uw extends lu{constructor(e,t,i){super(e,t,i,`${Qe.rgb}|${i}`,`${Qe.alpha}|${i}`,`${Qe.rgb2}|${i}`)}getFrameEntries(){return 8}setFrame(e,t,i,n,r,o,a,c,l){e<<=3,this.frames[e]=t,this.frames[e+1]=i,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=o,this.frames[e+5]=a,this.frames[e+6]=c,this.frames[e+7]=l}apply1(e,t,i,n,r,o){const a=t.color,c=t.darkColor;let l=0,h=0,u=0;const d=this.frames;if(i>3];switch(x){case 0:{const y=d[v];f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],l=d[v+5],h=d[v+6],u=d[v+7];const _=(i-y)/(d[v+8]-y);f+=(d[v+8+1]-f)*_,p+=(d[v+8+2]-p)*_,m+=(d[v+8+3]-m)*_,g+=(d[v+8+4]-g)*_,l+=(d[v+8+5]-l)*_,h+=(d[v+8+6]-h)*_,u+=(d[v+8+7]-u)*_;break}case 1:f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],l=d[v+5],h=d[v+6],u=d[v+7];break;default:f=this.getBezierValue(i,v,1,x-2),p=this.getBezierValue(i,v,2,x+18-2),m=this.getBezierValue(i,v,3,x+36-2),g=this.getBezierValue(i,v,4,x+54-2),l=this.getBezierValue(i,v,5,x+72-2),h=this.getBezierValue(i,v,6,x+90-2),u=this.getBezierValue(i,v,7,x+108-2)}if(n===1)a.set(f,p,m,g);else if(r===Ue.setup){const y=e.data.setupPose;let _=y.color;a.set(_.r+(f-_.r)*n,_.g+(p-_.g)*n,_.b+(m-_.b)*n,_.a+(g-_.a)*n),_=y.darkColor,l=_.r+(l-_.r)*n,h=_.g+(h-_.g)*n,u=_.b+(u-_.b)*n}else a.add((f-a.r)*n,(p-a.g)*n,(m-a.b)*n,(g-a.a)*n),l=c.r+(l-c.r)*n,h=c.g+(h-c.g)*n,u=c.b+(u-c.b)*n;c.r=l<0?0:l>1?1:l,c.g=h<0?0:h>1?1:h,c.b=u<0?0:u>1?1:u}}class $w extends lu{constructor(e,t,i){super(e,t,i,`${Qe.rgb}|${i}`,`${Qe.rgb2}|${i}`)}getFrameEntries(){return 7}setFrame(e,t,i,n,r,o,a,c){e*=7,this.frames[e]=t,this.frames[e+1]=i,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=o,this.frames[e+5]=a,this.frames[e+6]=c}apply1(e,t,i,n,r,o){const a=t.color,c=t.darkColor;let l=0,h=0,u=0,d=0,f=0,p=0;const m=this.frames;if(i1?1:l,a.g=h<0?0:h>1?1:h,a.b=u<0?0:u>1?1:u,c.r=d<0?0:d>1?1:d,c.g=f<0?0:f>1?1:f,c.b=p<0?0:p>1?1:p}}class Ha extends Rt{constructor(t,i){super(t,`${Qe.attachment}|${i}`);w(this,"slotIndex",0);w(this,"attachmentNames");this.slotIndex=i,this.attachmentNames=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.attachmentNames[t]=n}apply(t,i,n,r,o,a,c,l,h){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=h?u.appliedPose:u.pose;l||nt){const l=this.frames[i];return n[r+1]*(t-l)/(n[r]-l)}const o=r+18;for(r+=2;r=t){const l=n[r-2],h=n[r-1];return h+(t-l)/(n[r]-l)*(n[r+1]-h)}const a=n[o-2],c=n[o-1];return c+(1-c)*(t-a)/(this.frames[i+this.getFrameEntries()]-a)}apply(t,i,n,r,o,a,c,l,h){const u=t.slots;if(!this.attachment.isTimelineActive(u,this.slotIndex,h))return;const d=this.attachment.timelineSlots,f=this.frames;if(n=f[f.length-1])g=0,p=this.vertices[f.length-1],m=null;else{const x=Rt.search(f,n);g=this.getCurvePercent(n,x),p=this.vertices[x],m=this.vertices[x+1]}const v=this.vertices[0].length;this.applyToSlot(u[this.slotIndex],h,p,m,g,v,o,a,c);for(const x of d)this.applyToSlot(u[x],h,p,m,g,v,o,a,c)}applyBeforeFirst(t,i,n,r){if(!t.bone.active)return;const o=i?t.appliedPose:t.pose;if(o.attachment==null||o.attachment.timelineAttachment!==this.attachment)return;const a=o.deform;switch(a.length===0&&(r=Ue.setup),r){case Ue.setup:a.length=0;break;case Ue.first:{if(n===1){a.length=0;return}const c=this.vertices[0].length;a.length=c;const l=a,h=o.attachment;if(h.bones===null){const u=h.vertices;for(let d=0;d>4,h=c.attachment.sequence.regions.length;const u=Mw[o&15];if(u!==bi.hold)switch(l+=(n-r)/a+1e-5|0,u){case bi.once:l=Math.min(h-1,l);break;case bi.loop:l%=h;break;case bi.pingpong:{const d=(h<<1)-2;l=d===0?0:l%d,l>=h&&(l=d-l);break}case bi.onceReverse:l=Math.max(h-1-l,0);break;case bi.loopReverse:l=h-1-l%h;break;case bi.pingpongReverse:{const d=(h<<1)-2;l=d===0?0:(l+h-1)%d,l>=h&&(l=d-l)}}c.sequenceIndex=l}};w(ls,"ENTRIES",3),w(ls,"MODE",1),w(ls,"DELAY",2);let Sh=ls;const Eh=class Eh extends Rt{constructor(t){super(t,...Eh.propertyIds);w(this,"events");this.events=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i.time,this.events[t]=i}apply(t,i,n,r,o,a,c,l,h){if(!r)return;const u=this.frames,d=this.frames.length;if(i>n)this.apply(null,i,Number.MAX_VALUE,r,0,a,!1,!1,!1),i=-1;else if(i>=u[d-1])return;if(n0&&u[f-1]===p;)f--}for(;f=u[f];f++)r.push(this.events[f])}};w(Eh,"propertyIds",[`${Qe.event}`]);let ul=Eh;const Oo=class Oo extends Rt{constructor(t){super(t,...Oo.propertyIds);w(this,"drawOrders");this.drawOrders=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i,n){this.frames[t]=i,this.drawOrders[t]=n}apply(t,i,n,r,o,a,c,l,h){const u=h?t.drawOrder.appliedPose:t.drawOrder.pose,d=t.slots;if(l||n>2];switch(x){case 0:{const _=f[v];p=f[v+1],m=f[v+2],g=f[v+3];const C=(n-_)/(f[v+4]-_);p+=(f[v+4+1]-p)*C,m+=(f[v+4+2]-m)*C,g+=(f[v+4+3]-g)*C;break}case 1:p=f[v+1],m=f[v+2],g=f[v+3];break;default:p=this.getBezierValue(n,v,1,x-2),m=this.getBezierValue(n,v,2,x+18-2),g=this.getBezierValue(n,v,3,x+36-2)}const y=a===Ue.setup?u.data.setupPose:d;c?(d.mixRotate=y.mixRotate+p*o,d.mixX=y.mixX+m*o,d.mixY=y.mixY+g*o):(d.mixRotate=y.mixRotate+(p-y.mixRotate)*o,d.mixX=y.mixX+(m-y.mixX)*o,d.mixY=y.mixY+(g-y.mixY)*o)}}class xr extends _l{constructor(e,t,i,n){super(e,t,i,n)}apply(e,t,i,n,r,o,a,c,l){if(a&&!this.additive&&(a=!1),this.constraintIndex===-1){const h=i>=this.frames[0]?this.getCurveValue(i):0,u=e.physics;for(const d of u)if(d.active&&this.global(d.data)){const f=l?d.appliedPose:d.pose;this.set(f,this.getAbsoluteValue(i,r,o,a,this.get(f),this.get(d.data.setupPose),h))}}else{const h=e.constraints[this.constraintIndex];if(h.active){const u=l?h.appliedPose:h.pose;this.set(u,this.getAbsoluteValue(i,r,o,a,this.get(u),this.get(h.data.setupPose)))}}}}class Ww extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintInertia)}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}}class zw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintStrength)}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}}class qw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintDamping)}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}}class Kw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintMass)}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}}class Zw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintWind),this.additive=!0}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}}class Jw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintGravity),this.additive=!0}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}}class Qw extends xr{constructor(e,t,i){super(e,t,i,Qe.physicsConstraintMix)}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}}const Ih=class Ih extends Rt{constructor(t,i){super(t,...Ih.propertyIds);w(this,"constraintIndex");this.constraintIndex=i,this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,i){this.frames[t]=i}apply(t,i,n,r,o,a,c,l,h){let u;if(this.constraintIndex!==-1&&(u=t.constraints[this.constraintIndex],!u.active))return;const d=this.frames;if(i>n)this.apply(t,i,Number.MAX_VALUE,[],o,a,!1,!1,!1),i=-1;else if(i>=d[d.length-1])return;if(!(n=d[Rt.search(d,i)+1]))if(u!=null)u.reset(t);else for(const f of t.physics)f.active&&f.reset(t)}};w(Ih,"propertyIds",[Qe.physicsConstraintReset.toString()]);let _h=Ih;class eS extends _l{constructor(e,t,i){super(e,t,i,Qe.sliderTime)}apply(e,t,i,n,r,o,a,c,l){const h=e.constraints[this.constraintIndex];if(h.active){const u=l?h.appliedPose:h.pose;u.time=this.getAbsoluteValue(i,r,o,a,u.time,h.data.setupPose.time)}}}class tS extends _l{constructor(e,t,i){super(e,t,i,Qe.sliderMix),this.additive=!0}apply(e,t,i,n,r,o,a,c,l){const h=e.constraints[this.constraintIndex];if(h.active){const u=l?h.appliedPose:h.pose;u.mix=this.getAbsoluteValue(i,r,o,a,u.mix,h.data.setupPose.mix)}}}const za=class za{constructor(e){w(this,"data");w(this,"tracks",[]);w(this,"timeScale",1);w(this,"unkeyedState",0);w(this,"events",[]);w(this,"listeners",[]);w(this,"queue",new y3(this));w(this,"propertyIds",new Map);w(this,"animationsChanged",!1);w(this,"trackEntryPool",new h3(()=>new v3));this.data=e}update(e){e*=this.timeScale;const t=this.tracks;for(let i=0,n=t.length;i0){if(r.delay-=o,r.delay>0)continue;o=-r.delay,r.delay=0}let a=r.next;if(a){const c=r.trackLast-a.delay;if(c>=0){for(a.delay=0,a.trackTime+=r.timeScale===0?0:(c/r.timeScale+e)*a.timeScale,r.trackTime+=o,this.setTrack(i,a,!0);a.mixingFrom;)a.mixTime+=e,a=a.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[i]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let c=r.mixingFrom;for(r.mixingFrom=null,c&&(c.mixingTo=null);c;)this.queue.end(c),c=c.mixingFrom}r.trackTime+=o}this.queue.drain()}updateMixingFrom(e,t){const i=e.mixingFrom;if(!i)return!0;const n=this.updateMixingFrom(i,t);if(i.animationLast=i.nextAnimationLast,i.trackLast=i.nextTrackLast,e.nextTrackLast!==-1&&e.mixTime>=e.mixDuration){if(i.totalAlpha===0||e.mixDuration===0){if(e.mixingFrom=i.mixingFrom,i.mixingFrom!=null&&(i.mixingFrom.mixingTo=e),i.totalAlpha===0)for(let r=e;r.mixingTo!=null;r=r.mixingTo)r.keepHold=!0;this.queue.end(i)}return n}return i.trackTime+=t*i.timeScale,e.mixTime+=t,!1}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();const t=this.events,i=this.tracks;let n=!1;for(let a=0,c=i.length;a0)continue;n=!0;let h=l.alpha;l.mixingFrom?h*=this.applyMixingFrom(l,e):l.trackTime>=l.trackEnd&&!l.next&&(h=0);let u=l.animationLast,d=l.getAnimationTime(),f=d,p=t;l.reverse&&(f=l.animation.duration-f,p=null);const m=l.animation.timelines,g=m.length;if(a===0&&h===1)for(let v=0;v=l.alphaAttachmentThreshold,y=l.additive,_=y||l.shortestRotation,C=!_&&l.timelinesRotation.length!==g<<1;C&&(l.timelinesRotation.length=g<<1);for(let S=0;S0?c/a:o,h=i.animation.timelines,u=h.length,d=i.timelineMode,f=i.timelineHoldMix,p=r=i.alphaAttachmentThreshold);else{const O=!m||!(I instanceof dr)||E===Ue.current;I.apply(t,_,S,b,k,E,g,O,!1)}}return i.reverse&&r0&&this.queueEvents(i,C),this.events.length=0,i.nextAnimationLast=C,i.nextTrackLast=i.trackTime,r}applyAttachmentTimeline(e,t,i,n,r){const o=t.slots[e.slotIndex];if(!o.bone.active||!r&&o.attachmentState===this.unkeyedState+Kv)return;let a=i=0,C=v>=0;Math.abs(x)<=90&&Ee.signum(x)!==Ee.signum(g)&&(Math.abs(v-y)>180?(m+=360*Ee.signum(v),C=_):y!==0?m-=360*Ee.signum(v):C=_),C!==_&&(m+=360*Ee.signum(v)),o[a]=m}o[a+1]=g,h.rotation=f+m*n}queueEvents(e,t){const i=e.animationStart,n=e.animationEnd,r=n-i,o=e.reverse;let a=e.trackLast%r;o&&(a=r-a);const c=this.events;let l=0,h=c.length;for(;l=i&&d.time<=n&&this.queue.event(e,d)}let u=!1;if(e.loop)if(r===0)u=!0;else{const d=Math.floor(e.trackTime/r);u=d>0&&d>Math.floor(e.trackLast/r)}else u=t>=n&&e.animationLast=i&&d.time<=n&&this.queue.event(e,d)}}eventsReverse(e,t,i){const n=e.animation.duration,r=n-t,o=n-i,a=e.animation.timelines;for(let c=0,l=e.animation.timelines.length;c=o){for(let p=0;p=r)break;this.events.push(u[p])}}else{for(let m=0;m=r);m++)this.events.push(u[m]);let p=0;for(;p=o);p++);for(;p= 0.");if(e>=this.tracks.length)return;const t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let i=t;for(;;){const n=i.mixingFrom;if(!n)break;this.queue.end(n),i.mixingFrom=null,i.mixingTo=null,i=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setTrack(e,t,i){const n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(n.next=null,i&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,i=!1){return typeof t=="string"?this.setAnimation1(e,t,i):this.setAnimation2(e,t,i)}setAnimation1(e,t,i=!1){const n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error(`Animation not found: ${t}`);return this.setAnimation2(e,n,i)}setAnimation2(e,t,i=!1){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast===-1&&r.animation===t?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));const o=this.trackEntry(e,t,i,r);return this.setTrack(e,o,n),this.queue.drain(),o}addAnimation(e,t,i=!1,n=0){return typeof t=="string"?this.addAnimation1(e,t,i,n):this.addAnimation2(e,t,i,n)}addAnimation1(e,t,i=!1,n=0){const r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error(`Animation not found: ${t}`);return this.addAnimation2(e,r,i,n)}addAnimation2(e,t,i=!1,n=0){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;const o=this.trackEntry(e,t,i,r);return r?(r.next=o,o.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-o.mixDuration,0))):(this.setTrack(e,o,!0),this.queue.drain(),n<0&&(n=0)),o.delay=n,o}setEmptyAnimation(e,t=0){const i=this.setAnimation(e,za.emptyAnimation,!1);return i.mixDuration=t,i.trackEnd=t,i}addEmptyAnimation(e,t=0,i=0){const n=this.addAnimation(e,za.emptyAnimation,!1,i);return i<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){const t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let i=0,n=this.tracks.length;i0&&(o[d]=v);break}}c&&(g=g&~mc|r[d]&mc),r[d]=g}}from(e,t,i){const n=this.propertyIds;let r=x3;for(let o=0,a=i.length;o= 0.");return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){const t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}};w(za,"emptyAnimation",new vp("",[],0));let Hv=za;class v3{constructor(){w(this,"animation",null);w(this,"previous",null);w(this,"next",null);w(this,"mixingFrom",null);w(this,"mixingTo",null);w(this,"listener",null);w(this,"trackIndex",0);w(this,"loop",!1);w(this,"additive",!1);w(this,"reverse",!1);w(this,"shortestRotation",!1);w(this,"keepHold",!1);w(this,"eventThreshold",0);w(this,"mixAttachmentThreshold",0);w(this,"alphaAttachmentThreshold",0);w(this,"mixDrawOrderThreshold",0);w(this,"animationStart",0);w(this,"animationEnd",0);w(this,"animationLast",0);w(this,"nextAnimationLast",0);w(this,"delay",0);w(this,"trackTime",0);w(this,"trackLast",0);w(this,"nextTrackLast",0);w(this,"trackEnd",0);w(this,"timeScale",0);w(this,"alpha",0);w(this,"mixTime",0);w(this,"mixDuration",0);w(this,"totalAlpha",0);w(this,"mixInterpolation",qo.linear);w(this,"timelineMode",[]);w(this,"timelineHoldMix",[]);w(this,"timelinesRotation",[])}setMixDuration(e,t){this.mixDuration=e,t!==void 0&&(t<=0&&(t=this.previous==null?0:Math.max(t+this.previous.getTrackComplete()-e,0)),this.delay=t)}setMixInterpolation(e){if(!e)throw new Error("mixInterpolation cannot be null.");this.mixInterpolation=e}mix(){if(this.mixDuration===0)return 1;let e=this.mixTime/this.mixDuration;return e>=1?1:this.mixInterpolation===qo.linear?e:(e=this.mixInterpolation.apply(e),e<0?0:e>1?1:e)}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.mixInterpolation=qo.linear,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(!this.loop)return Math.min(this.trackTime+this.animationStart,this.animationEnd);const e=this.animationEnd-this.animationStart;return e===0?this.animationStart:this.trackTime%e+this.animationStart}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){const e=this.animationEnd-this.animationStart;if(e!==0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}}class y3{constructor(e){w(this,"objects",[]);w(this,"drainDisabled",!1);w(this,"animState");this.animState=e}start(e){this.objects.push(Wi.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(Wi.interrupt),this.objects.push(e)}end(e){this.objects.push(Wi.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(Wi.dispose),this.objects.push(e)}complete(e){this.objects.push(Wi.complete),this.objects.push(e)}event(e,t){this.objects.push(Wi.event),this.objects.push(e),this.objects.push(t)}drain(){var e,t,i,n,r,o;if(!this.drainDisabled){this.drainDisabled=!0;for(let a=0;a= 0.");if(!i)throw new Error("name cannot be null.");this.index=t,this.parent=n}copy(t){const i=new hu(this.index,this.name,t);return i.length=this.length,i.setupPose.set(this.setupPose),i}}var Yt;(function(s){s[s.Normal=0]="Normal",s[s.OnlyTranslation=1]="OnlyTranslation",s[s.NoRotationOrReflection=2]="NoRotationOrReflection",s[s.NoScale=3]="NoScale",s[s.NoScaleOrReflection=4]="NoScaleOrReflection"})(Yt||(Yt={}));class mm{constructor(){w(this,"bone");w(this,"x",0);w(this,"y",0);w(this,"rotation",0);w(this,"scaleX",0);w(this,"scaleY",0);w(this,"shearX",0);w(this,"shearY",0);w(this,"inherit",Yt.Normal);w(this,"a",0);w(this,"b",0);w(this,"c",0);w(this,"d",0);w(this,"worldY",0);w(this,"worldX",0);w(this,"world",0);w(this,"local",0)}set(e){if(e==null)throw new Error("pose cannot be null.");this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}setPosition(e,t){this.x=e,this.y=t}setScale(e,t){this.scaleX=e,this.scaleY=t===void 0?e:t}getInherit(){return this.inherit}setInherit(e){if(e==null)throw new Error("inherit cannot be null.");this.inherit=e}update(e,t){this.world!==e._update&&this.updateWorldTransform(e)}updateWorldTransform(e){this.local===e._update?this.updateLocalTransform(e):this.world=e._update;const t=this.rotation,i=this.scaleX,n=this.scaleY,r=this.shearX,o=this.shearY;if(!this.bone.parent){const d=e.scaleX,f=e.scaleY,p=(t+r)*Ee.degRad,m=(t+90+o)*Ee.degRad;this.a=Math.cos(p)*i*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*i*f,this.d=Math.sin(m)*n*f,this.worldX=this.x*d+e.x,this.worldY=this.y*f+e.y;return}const a=this.bone.parent.appliedPose;let c=a.a,l=a.b,h=a.c,u=a.d;switch(this.worldX=c*this.x+l*this.y+a.worldX,this.worldY=h*this.x+u*this.y+a.worldY,this.inherit){case Yt.Normal:{const d=(t+r)*Ee.degRad,f=(t+90+o)*Ee.degRad,p=Math.cos(d)*i,m=Math.cos(f)*n,g=Math.sin(d)*i,v=Math.sin(f)*n;this.a=c*p+l*g,this.b=c*m+l*v,this.c=h*p+u*g,this.d=h*m+u*v;return}case Yt.OnlyTranslation:{const d=e.scaleX,f=e.scaleY,p=(t+r)*Ee.degRad,m=(t+90+o)*Ee.degRad;this.a=Math.cos(p)*i*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*i*f,this.d=Math.sin(m)*n*f;break}case Yt.NoRotationOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f;c*=p,h*=m;let g=c*c+h*h,v=0;g>Ee.epsilon2?(g=Math.abs(c*u*m-l*p*h)/g,l=h*g,u=c*g,v=t-Ee.atan2Deg(h,c)):(c=0,h=0,v=t-90+Ee.atan2Deg(u,l));const x=(v+r)*Ee.degRad,y=(v+o+90)*Ee.degRad,_=Math.cos(x)*i,C=Math.cos(y)*n,S=Math.sin(x)*i,b=Math.sin(y)*n;this.a=(c*_-l*S)*d,this.b=(c*C-l*b)*d,this.c=(h*_+u*S)*f,this.d=(h*C+u*b)*f;break}case Yt.NoScale:case Yt.NoScaleOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f,g=t*Ee.degRad,v=Math.cos(g),x=Math.sin(g);let y=(c*v+l*x)*p,_=(h*v+u*x)*m;const C=1/Math.sqrt(y*y+_*_);y*=C,_*=C;let S=-_,b=y;this.inherit===Yt.NoScale&&c*u-l*h<0!=(d<0!=f<0)&&(S=-S,b=-b);const M=r*Ee.degRad,I=(90+o)*Ee.degRad,F=Math.cos(M)*i,E=Math.cos(I)*n,k=Math.sin(M)*i,O=Math.sin(I)*n;this.a=(y*F+S*k)*d,this.b=(y*E+S*O)*d,this.c=(_*F+b*k)*f,this.d=(_*E+b*O)*f;break}}}updateLocalTransform(e){this.local=0,this.world=e._update;const t=e.scaleX,i=e.scaleY;if(!this.bone.parent){const v=1/t,x=1/i;this.x=(this.worldX-e.x)*v,this.y=(this.worldY-e.y)*x,this.set5(this.a*v,this.b*v,this.c*x,this.d*x,0);return}const n=this.bone.parent.appliedPose;let r=n.a,o=n.b,a=n.c,c=n.d;const l=r*c-o*a,h=1/(r*c-o*a),u=c*h,d=o*h,f=a*h,p=r*h,m=this.worldX-n.worldX,g=this.worldY-n.worldY;switch(this.x=m*u-g*d,this.y=g*p-m*f,this.inherit){case Yt.Normal:this.set5(u*this.a-d*this.c,u*this.b-d*this.d,p*this.c-f*this.a,p*this.d-f*this.b,0);break;case Yt.OnlyTranslation:{const v=1/t,x=1/i;this.set5(this.a*v,this.b*v,this.c*x,this.d*x,0);break}case Yt.NoRotationOrReflection:{const v=1/t,x=1/i;r*=v,a*=x;const y=this.a*v,_=this.b*v,C=this.c*x,S=this.d*x,b=1/(r*r+a*a),M=1/Math.abs(l*v*x);this.set5((r*y+a*C)*b,(r*_+a*S)*b,(r*C-a*y)*M,(r*S-a*_)*M,Ee.atan2Deg(a,r));break}case Yt.NoScale:case Yt.NoScaleOrReflection:{const v=1/t,x=1/i,y=this.a*v,_=this.b*v,C=this.c*x,S=this.d*x;let b=c*this.a-o*this.c,M=r*this.c-a*this.a;l<0&&(b=-b,M=-M);let I=Ee.atan2Deg(M,b);this.rotation=I,I*=Ee.degRad;const F=Math.cos(I),E=Math.sin(I);let k=(r*F+o*E)*v,O=(a*F+c*E)*x;const D=1/Math.sqrt(k*k+O*O);k*=D,O*=D;const $=this.inherit===Yt.NoScale&&l<0!=(t<0!=i<0)?-1:1;this.set4(k*y+O*C,k*_+O*S,(k*C-O*y)*$,(k*S-O*_)*$)}}}set4(e,t,i,n){const r=e*e+i*i,o=t*t+n*n;r>Ee.epsilon2?(this.shearX=Ee.atan2Deg(i,e),this.scaleX=Math.sqrt(r)):(this.shearX=0,this.scaleX=0),this.scaleY=Math.sqrt(o),o>Ee.epsilon2?(this.shearY=Ee.atan2Deg(n,t),e*n-t*i<0?(this.scaleY=-this.scaleY,this.shearY+=90):this.shearY-=90,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}set5(e,t,i,n,r){this.shearX=0;const o=e*e+i*i,a=t*t+n*n;if(o>Ee.epsilon2){const c=Ee.atan2Deg(i,e);this.rotation=c+r,this.scaleX=Math.sqrt(o),this.scaleY=Math.sqrt(a),a>Ee.epsilon2?(this.shearY=Ee.atan2Deg(n,t),e*n-t*i<0?(this.scaleY=-this.scaleY,this.shearY+=90-c):this.shearY-=90+c,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}else this.scaleX=0,this.scaleY=Math.sqrt(a),this.shearY=0,this.rotation=a>Ee.epsilon2?Ee.atan2Deg(n,t)-90+r:r}validateLocalTransform(e){this.local===e._update&&this.updateLocalTransform(e)}modifyLocal(e){this.local===e._update&&this.updateLocalTransform(e),this.world=0,this.resetWorld(e,e._update)}modifyWorld(e){const t=e._update;this.local=t,this.world=t,this.resetWorld(e,t)}resetWorld(e,t){const i=this.bone.children;for(let n=0,r=i.length;n1&&t.constrained(this.bones[1].bone)}isSourceActive(){return this.target.active}static apply(t,i,n,r,o,a,c,l,h,u){typeof n=="number"?Jn.apply1(t,i,n,r,o,a,c,l):Jn.apply2(t,i,n,r,o,a,c,l,h,u)}static apply1(t,i,n,r,o,a,c,l){i.modifyLocal(t);const h=i.bone.parent.appliedPose;let u=h.a,d=h.b,f=h.c,p=h.d,m=-i.shearX-i.rotation,g=0,v=0;switch(i.inherit){case Yt.OnlyTranslation:g=(n-i.worldX)*Ee.signum(t.scaleX),v=(r-i.worldY)*Ee.signum(t.scaleY);break;case Yt.NoRotationOrReflection:{const x=Math.abs(u*p-d*f)/Math.max(Ee.epsilon,u*u+f*f),y=u/t.scaleX,_=f/t.scaleY;d=-_*x*t.scaleX,p=y*x*t.scaleY,m+=Ee.atan2Deg(_,y)}default:{const x=n-h.worldX,y=r-h.worldY,_=u*p-d*f;Math.abs(_)<=Ee.epsilon?(g=0,v=0):(g=(x*p-y*d)/_-i.x,v=(y*u-x*f)/_-i.y)}}if(m+=Ee.atan2Deg(v,g),i.scaleX<0&&(m+=180),m>180?m-=360:m<=-180&&(m+=360),i.rotation+=m*l,o||a){switch(i.inherit){case Yt.NoScale:case Yt.NoScaleOrReflection:g=n-i.worldX,v=r-i.worldY}const x=i.bone.data.length*i.scaleX;if(x>Ee.epsilon){const y=g*g+v*v;if(o&&yx*x){const _=(Math.sqrt(y)/x-1)*l+1;switch(i.scaleX*=_,c){case Ni.Uniform:i.scaleY*=_;break;case Ni.Volume:i.scaleY/=_<.7?.25+.642857*_:_}}}}}static apply2(t,i,n,r,o,a,c,l,h,u){if(i.inherit!==Yt.Normal||n.inherit!==Yt.Normal)return;i.modifyLocal(t),n.modifyLocal(t);let d=i.x,f=i.y,p=i.scaleX,m=i.scaleY,g=n.scaleX,v=0,x=0,y=0;p<0?(p=-p,v=180,y=-1):(v=0,y=1),m<0&&(m=-m,y=-y),g<0?(g=-g,x=180):x=0;let _=0,C=0,S=i.a,b=i.b,M=i.c,I=i.d;const F=Math.abs(p-m)<=Ee.epsilon;!F||c?(n.y=0,_=S*n.x+i.worldX,C=M*n.x+i.worldY):(_=S*n.x+b*n.y+i.worldX,C=M*n.x+I*n.y+i.worldY);const E=i.bone.parent.appliedPose;S=E.a,b=E.b,M=E.c,I=E.d;let k=S*I-b*M,O=_-E.worldX,D=C-E.worldY;k=Math.abs(k)<=Ee.epsilon?0:1/k;const $=(O*I-D*b)*k-d,N=(D*S-O*M)*k-f;let U=Math.sqrt($*$+N*N),A=n.bone.data.length*g,P,L;if(U0){let re=Math.min(1,ne/(h*2))-1;re=(ne-h*(1-re*re))/W,B-=re*B,X-=re*X,V=B*B+X*X}}e:if(F){A*=p;let W=(V-U*U-A*A)/(2*U*A);if(W<-1)W=-1,L=Math.PI*a;else if(W>1){if(W=1,L=0,c)switch(S=(Math.sqrt(V)/(U+A)-1)*u+1,i.scaleX*=S,l){case Ni.Uniform:i.scaleY*=S;break;case Ni.Volume:i.scaleY/=S<.7?.25+.642857*S:S}}else L=Math.acos(W)*a;S=U+A*W,b=A*Math.sin(L),P=Math.atan2(X*S-B*b,B*S+X*b)}else{S=p*A,b=m*A;const W=S*S,ne=b*b,re=Math.atan2(X,B);M=ne*U*U+W*V-W*ne;const le=-2*ne*U,ue=ne-W;if(I=le*le-4*ue*M,I>=0){let fe=Math.sqrt(I);le<0&&(fe=-fe),fe=-(le+fe)*.5;let te=fe/ue,oe=M/fe;const ce=Math.abs(te)=0){D=Math.sqrt(te)*a,P=re-Math.atan2(D,ce),L=Math.atan2(D/m,(ce-U)/p);break e}}let ae=Ee.PI,xe=U-S,Y=xe*xe,j=0,H=0,G=U+S,z=G*G,ie=0;M=-S*U/(W-ne),M>=-1&&M<=1&&(M=Math.acos(M),O=S*Math.cos(M)+U,D=b*Math.sin(M),I=O*O+D*D,Iz&&(H=M,z=I,G=O,ie=D)),V<=(Y+z)*.5?(P=re-Math.atan2(j*a,xe),L=ae*a):(P=re-Math.atan2(ie*a,G),L=H*a)}const q=Math.atan2(n.y,n.x)*y;P=(P-q)*Ee.radDeg+v-i.rotation,P>180?P-=360:P<=-180&&(P+=360),i.rotation+=P*u,L=((L+q)*Ee.radDeg-n.shearX)*y+x-n.rotation,L>180?L-=360:L<=-180&&(L+=360),n.rotation+=L*u}}class Rc extends Ml{constructor(t){super(t,new pm);w(this,"bones",[]);w(this,"_target",null);w(this,"_scaleYMode",Ni.None)}set target(t){this._target=t}get target(){if(!this._target)throw new Error("target cannot be null.");return this._target}set scaleYMode(t){this._scaleYMode=t}get scaleYMode(){if(this._scaleYMode==null)throw new Error("scaleYMode cannot be null.");return this._scaleYMode}create(t){return new Jn(this,t)}}class gm{constructor(){w(this,"position",0);w(this,"spacing",0);w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0)}set(e){this.position=e.position,this.spacing=e.spacing,this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY}}class Pc extends Ml{constructor(t){super(t,new gm);w(this,"bones",[]);w(this,"_slot",null);w(this,"positionMode",on.Fixed);w(this,"spacingMode",ci.Fixed);w(this,"rotateMode",Qr.Chain);w(this,"offsetRotation",0)}set slot(t){this._slot=t}get slot(){if(this._slot)return this._slot;throw new Error("SlotData not set.")}create(t){return new vm(this,t)}}var on;(function(s){s[s.Fixed=0]="Fixed",s[s.Percent=1]="Percent"})(on||(on={}));var ci;(function(s){s[s.Length=0]="Length",s[s.Fixed=1]="Fixed",s[s.Percent=2]="Percent",s[s.Proportional=3]="Proportional"})(ci||(ci={}));var Qr;(function(s){s[s.Tangent=0]="Tangent",s[s.Chain=1]="Chain",s[s.ChainScale=2]="ChainScale"})(Qr||(Qr={}));const _s=class _s extends Tl{constructor(t,i){super(t,new gm,new gm);w(this,"data");w(this,"bones");w(this,"slot");w(this,"spaces",[]);w(this,"positions",[]);w(this,"world",[]);w(this,"curves",[]);w(this,"lengths",[]);w(this,"segments",[]);if(!i)throw new Error("skeleton cannot be null.");this.data=t,this.bones=[];for(const n of this.data.bones)this.bones.push(i.bones[n.index].constrainedPose);this.slot=i.slots[t.slot.index]}copy(t){var i=new _s(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.slot.appliedPose.attachment;if(!(n instanceof dl))return;const r=this.appliedPose,o=r.mixRotate,a=r.mixX,c=r.mixY;if(o===0&&a===0&&c===0)return;const l=this.data,h=l.rotateMode===Qr.Tangent,u=l.rotateMode===Qr.ChainScale,d=this.bones,f=d.length,p=h?f:f+1,m=Ye.setArraySize(this.spaces,p),g=u?this.lengths=Ye.setArraySize(this.lengths,f):[],v=r.spacing;switch(l.spacingMode){case ci.Percent:if(u)for(let b=0,M=p-1;b0){b=p/b*v;for(let M=1;M0?Ee.degRad:-Ee.degRad}for(let b=0,M=3;b0){let D=I.a,$=I.b,N=I.c,U=I.d,A=0,P=0,L=0;if(h?A=x[M-1]:m[b+1]===0?A=x[M+2]:A=Math.atan2(O,k),A-=Math.atan2(N,D),S){P=Math.cos(A),L=Math.sin(A);const B=I.bone.data.length;y+=(B*(P*D-L*N)-k)*o,_+=(B*(L*D+P*N)-O)*o}else A+=C;A>Ee.PI?A-=Ee.PI2:A<-Ee.PI&&(A+=Ee.PI2),A*=o,P=Math.cos(A),L=Math.sin(A),I.a=P*D-L*N,I.b=P*$-L*U,I.c=L*D+P*N,I.d=L*$+P*U}}}computeWorldPositions(t,i,n,r){const o=this.slot;let a=this.appliedPose.position,c=this.spaces,l=Ye.setArraySize(this.positions,n*3+2),h=this.world;const u=i.closed;let d=i.worldVerticesLength,f=d/6,p=_s.NONE;if(!i.constantSpeed){const L=i.lengths;f-=u?1:2;const B=L[f];this.data.positionMode===on.Percent&&(a*=B);let X;switch(this.data.spacingMode){case ci.Percent:X=B;break;case ci.Proportional:X=B/n;break;default:X=1}h=Ye.setArraySize(this.world,8);for(let V=0,q=0,W=0;VB){p!==_s.AFTER&&(p=_s.AFTER,i.computeWorldVertices(t,o,d-6,4,h,0,2)),this.addAfterPosition(re-B,h,0,l,q);continue}for(;;W++){const le=L[W];if(!(re>le)){if(W===0)re/=le;else{const ue=L[W-1];re=(re-ue)/(le-ue)}break}}W!==p&&(p=W,u&&W===f?(i.computeWorldVertices(t,o,d-4,4,h,0,2),i.computeWorldVertices(t,o,0,4,h,4,2)):i.computeWorldVertices(t,o,W*6+2,8,h,0,2)),this.addCurvePosition(re,h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],l,q,r||V>0&&ne===0)}return l}u?(d+=2,h=Ye.setArraySize(this.world,d),i.computeWorldVertices(t,o,2,d-4,h,0,2),i.computeWorldVertices(t,o,0,2,h,d-4,2),h[d-2]=h[0],h[d-1]=h[1]):(f--,d-=4,h=Ye.setArraySize(this.world,d),i.computeWorldVertices(t,o,2,d,h,0,2));const m=Ye.setArraySize(this.curves,f);let g=0,v=h[0],x=h[1],y=0,_=0,C=0,S=0,b=0,M=0,I=0,F=0,E=0,k=0,O=0,D=0,$=0,N=0;for(let L=0,B=2;Lg){this.addAfterPosition(W-g,h,d-4,l,B);continue}for(;;X++){const ne=m[X];if(!(W>ne)){if(X===0)W/=ne;else{const re=m[X-1];W=(W-re)/(ne-re)}break}}if(X!==p){p=X;let ne=X*6;for(v=h[ne],x=h[ne+1],y=h[ne+2],_=h[ne+3],C=h[ne+4],S=h[ne+5],b=h[ne+6],M=h[ne+7],I=(v-y*2+C)*.03,F=(x-_*2+S)*.03,E=((y-C)*3-v+b)*.006,k=((_-S)*3-x+M)*.006,O=I*2+E,D=F*2+k,$=(y-v)*.3+I+E*.16666667,N=(_-x)*.3+F+k*.16666667,P=Math.sqrt($*$+N*N),A[0]=P,ne=1;ne<8;ne++)$+=O,N+=D,O+=E,D+=k,P+=Math.sqrt($*$+N*N),A[ne]=P;$+=O,N+=D,P+=Math.sqrt($*$+N*N),A[8]=P,$+=O+E,N+=D+k,P+=Math.sqrt($*$+N*N),A[9]=P,V=0}for(W*=P;;V++){const ne=A[V];if(!(W>ne)){if(V===0)W/=ne;else{const re=A[V-1];W=V+(W-re)/(ne-re)}break}}this.addCurvePosition(W*.1,v,x,y,_,C,S,b,M,l,B,r||L>0&&q===0)}return l}addBeforePosition(t,i,n,r,o){const a=i[n],c=i[n+1],l=i[n+2]-a,h=i[n+3]-c,u=Math.atan2(h,l);r[o]=a+t*Math.cos(u),r[o+1]=c+t*Math.sin(u),r[o+2]=u}addAfterPosition(t,i,n,r,o){const a=i[n+2],c=i[n+3],l=a-i[n],h=c-i[n+1],u=Math.atan2(h,l);r[o]=a+t*Math.cos(u),r[o+1]=c+t*Math.sin(u),r[o+2]=u}addCurvePosition(t,i,n,r,o,a,c,l,h,u,d,f){if(t===0||Number.isNaN(t)){u[d]=i,u[d+1]=n,u[d+2]=Math.atan2(o-n,r-i);return}const p=t*t,m=p*t,g=1-t,v=g*g,x=v*g,y=g*t,_=y*3,C=g*_,S=_*t,b=i*x+r*C+a*S+l*m,M=n*x+o*C+c*S+h*m;u[d]=b,u[d+1]=M,f&&(t<.001?u[d+2]=Math.atan2(o-n,r-i):u[d+2]=Math.atan2(M-(n*v+o*y*2+c*p),b-(i*v+r*y*2+a*p)))}sort(t){const i=this.slot.data.index,n=this.slot.bone;t.skin!=null&&this.sortPathSlot(t,t.skin,i,n),t.data.defaultSkin!=null&&t.data.defaultSkin!==t.skin&&this.sortPathSlot(t,t.data.defaultSkin,i,n),this.sortPath(t,this.slot.pose.attachment,n);const r=this.bones,o=this.bones.length;for(let a=0;a0,a=this.data.y>0,c=this.data.rotate>0||this.data.shearX>0,l=this.data.scaleX>0,h=this.bone;let u=h.bone.data.length,d=this.data.step,f=0;if(i!==Ur.none){switch(h.modifyWorld(t),i){case Ur.reset:this.reset(t);case Ur.update:{const p=Math.max(t.time-this.lastTime,0),m=this.remaining;this.remaining+=p,this.lastTime=t.time;const g=h.worldX,v=h.worldY;if(this._reset)this._reset=!1,this.ux=g,this.uy=v;else{let x=this.remaining,y=n.inertia,_=t.data.referenceScale,C=-1,S=0,b=0,M=this.data.limit*p,I=M*Math.abs(t.scaleY);if(M*=Math.abs(t.scaleX),o||a){if(o){const F=(this.ux-g)*y;this.xOffset+=F>M?M:F<-M?-M:F,this.ux=g}if(a){const F=(this.uy-v)*y;this.yOffset+=F>I?I:F<-I?-I:F,this.uy=v}if(x>=d){const F=this.xOffset,E=this.yOffset;C=n.damping**(60*d),S=d*n.massInverse,b=n.strength;const k=_*n.wind,O=_*n.gravity,D=(k*t.windX+O*t.gravityX)*t.scaleX,$=(k*t.windY+O*t.gravityY)*t.scaleY;do o&&(this.xVelocity+=(D-this.xOffset*b)*S,this.xOffset+=this.xVelocity*d,this.xVelocity*=C),a&&(this.yVelocity-=($+this.yOffset*b)*S,this.yOffset+=this.yVelocity*d,this.yVelocity*=C),x-=d;while(x>=d);this.xLag=this.xOffset-F,this.yLag=this.yOffset-E}f=Math.max(0,1-x/d),o&&(h.worldX+=(this.xOffset-this.xLag*f)*r*this.data.x),a&&(h.worldY+=(this.yOffset-this.yLag*f)*r*this.data.y)}if(c||l){let F=Math.atan2(h.c,h.a),E=0,k=0,O=0,D=this.cx-h.worldX,$=this.cy-h.worldY;if(D>M?D=M:D<-M&&(D=-M),$>I?$=I:$<-I&&($=-I),x=this.remaining,c){O=(this.data.rotate+this.data.shearX)*r,f=this.rotateLag*Math.max(0,1-m/d);let N=Math.atan2($+this.ty,D+this.tx)-F-(this.rotateOffset-f)*O;this.rotateOffset+=(N-Math.ceil(N*Ee.invPI2-.5)*Ee.PI2)*y,N=(this.rotateOffset-f)*O+F,E=Math.cos(N),k=Math.sin(N),l&&(N=u*h.getWorldScaleX(),N>0&&(this.scaleOffset+=(D*E+$*k)*y/N))}else{E=Math.cos(F),k=Math.sin(F);const N=u*h.getWorldScaleX()-this.scaleLag*Math.max(0,1-m/d);N>0&&(this.scaleOffset+=(D*E+$*k)*y/N)}if(x>=d){C===-1&&(C=n.damping**(60*d),S=d*n.massInverse,b=n.strength);const N=n.wind*t.windX+n.gravity*t.gravityX,U=(n.wind*t.windY+n.gravity*t.gravityY)*bm.yDir,A=this.rotateOffset,P=this.scaleOffset,L=u/_;for(;;)if(x-=d,l&&(this.scaleVelocity+=(N*E-U*k-this.scaleOffset*b)*S,this.scaleOffset+=this.scaleVelocity*d,this.scaleVelocity*=C),c){if(this.rotateVelocity-=((N*k+U*E)*L+this.rotateOffset*b)*S,this.rotateOffset+=this.rotateVelocity*d,this.rotateVelocity*=C,x0){let x=0;this.data.rotate>0&&(x=p*this.data.rotate,m=Math.sin(x),g=Math.cos(x),v=h.b,h.b=g*v-m*h.d,h.d=m*v+g*h.d),x+=p*this.data.shearX,m=Math.sin(x),g=Math.cos(x),v=h.a,h.a=g*v-m*h.c,h.c=m*v+g*h.c}else p*=this.data.rotate,m=Math.sin(p),g=Math.cos(p),v=h.a,h.a=g*v-m*h.c,h.c=m*v+g*h.c,v=h.b,h.b=g*v-m*h.d,h.d=m*v+g*h.d}if(l){let p=1+(this.scaleOffset-this.scaleLag*f)*r*this.data.scaleX;switch(h.a*=p,h.c*=p,this.data.scaleYMode){case Ni.Uniform:h.b*=p,h.d*=p;break;case Ni.Volume:p=Math.abs(p),p=p>=.7?1/p:4-3.67347*p,h.b*=p,h.d*=p}}i!==Ur.pose&&(this.tx=u*h.a,this.ty=u*h.c)}}sort(t){const i=this.bone.bone;t.sortBone(i),t._updateCache.push(this),t.sortReset(i.children),t.constrained(i)}isSourceActive(){return this.bone.bone.active}}class kc extends Ml{constructor(t){super(t,new ym);w(this,"_bone",null);w(this,"x",0);w(this,"y",0);w(this,"rotate",0);w(this,"scaleX",0);w(this,"shearX",0);w(this,"limit",0);w(this,"step",0);w(this,"inertiaGlobal",!1);w(this,"strengthGlobal",!1);w(this,"dampingGlobal",!1);w(this,"massGlobal",!1);w(this,"windGlobal",!1);w(this,"gravityGlobal",!1);w(this,"mixGlobal",!1);w(this,"_scaleYMode",Ni.None)}set bone(t){this._bone=t}get bone(){if(this._bone)return this._bone;throw new Error("BoneData not set.")}get scaleYMode(){return this._scaleYMode}set scaleYMode(t){if(t==null)throw new Error("scaleYMode cannot be null.");this._scaleYMode=t}create(t){return new uu(this,t)}}typeof Math.fround>"u"&&(Math.fround=(s=>e=>(s[0]=e,s[0]))(new Float32Array(1)));class wm{constructor(){w(this,"time",0);w(this,"mix",0)}set(e){this.time=e.time,this.mix=e.mix}}const qa=class qa extends Tl{constructor(t,i){super(t,new wm,new wm);w(this,"bone",null);if(!i)throw new Error("skeleton cannot be null.");t.bone!=null&&(this.bone=i.bones[t.bone.index])}copy(t){var i=new qa(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.appliedPose;if(n.mix===0)return;const r=this.data,o=r.animation,a=this.bone;if(a!==null){if(!a.active)return;r.local&&a.appliedPose.validateLocalTransform(t),n.time=r.offset+(r.property.value(t,a.appliedPose,r.local,qa.offsets)-r.property.offset)*r.scale,r.loop?n.time=o.duration+n.time%o.duration:n.time=Math.max(0,n.time)}const c=t.bones,l=o.bones;for(let h=0,u=o.bones.length;h=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=i}addSkin(e){for(let i=0;i= 0.");if(!n)throw new Error("boneData cannot be null.");this.index=t,this.boneData=n}}var Th;(function(s){s[s.Normal=0]="Normal",s[s.Additive=1]="Additive",s[s.Multiply=2]="Multiply",s[s.Screen=3]="Screen"})(Th||(Th={}));class Tm{constructor(){w(this,"mixRotate",0);w(this,"mixX",0);w(this,"mixY",0);w(this,"mixScaleX",0);w(this,"mixScaleY",0);w(this,"mixShearY",0)}set(e){this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY,this.mixScaleX=e.mixScaleX,this.mixScaleY=e.mixScaleY,this.mixShearY=e.mixShearY}}class Tp extends Tl{constructor(t,i){super(t,new Tm,new Tm);w(this,"bones");w(this,"source");if(!i)throw new Error("skeleton cannot be null.");this.bones=[];for(const r of t.bones)this.bones.push(i.bones[r.index].constrainedPose);const n=i.bones[t.source.index];if(n==null)throw new Error("source cannot be null.");this.source=n}copy(t){var i=new Tp(this.data,t);return i.pose.set(this.pose),i}update(t,i){const n=this.appliedPose;if(n.mixRotate===0&&n.mixX===0&&n.mixY===0&&n.mixScaleX===0&&n.mixScaleY===0&&n.mixShearY===0)return;const r=this.data,o=r.localSource,a=r.localTarget,c=r.additive,l=r.clamp,h=r.offsets,u=this.source.appliedPose;o&&u.validateLocalTransform(t);const d=r.properties,f=r.properties.length,p=this.bones;for(let m=0,g=this.bones.length;m0?n[xt.ROTATION]:-n[xt.ROTATION]);return a<0&&(a+=360),a}}class aS extends ca{mix(e){return e.mixRotate}apply(e,t,i,n,r,o){if(r)i.rotation+=(o?n:n-i.rotation)*t.mixRotate;else{const a=e.scaleX,c=e.scaleY,l=1/a,h=1/c,u=i.a*l,d=i.b*l,f=i.c*h,p=i.d*h;n*=Ee.degRad,o||(n-=Math.atan2(f,u)),n>Ee.PI?n-=Ee.PI2:n<-Ee.PI&&(n+=Ee.PI2),n*=t.mixRotate;const m=Math.cos(n),g=Math.sin(n);i.a=(m*u-g*f)*a,i.b=(m*d-g*p)*a,i.c=(g*u+m*f)*c,i.d=(g*d+m*p)*c}}}class Cm extends la{value(e,t,i,n){return i?t.x+n[xt.X]:(n[xt.X]*t.a+n[xt.Y]*t.b+t.worldX)/e.scaleX}}class lS extends ca{mix(e){return e.mixX}apply(e,t,i,n,r,o){r?i.x+=(o?n:n-i.x)*t.mixX:(o||(n-=i.worldX/e.scaleX),i.worldX+=n*t.mixX*e.scaleX)}}class Am extends la{value(e,t,i,n){return i?t.y+n[xt.Y]:(n[xt.X]*t.c+n[xt.Y]*t.d+t.worldY)/e.scaleY}}class cS extends ca{mix(e){return e.mixY}apply(e,t,i,n,r,o){r?i.y+=(o?n:n-i.y)*t.mixY:(o||(n-=i.worldY/e.scaleY),i.worldY+=n*t.mixY*e.scaleY)}}class Em extends la{value(e,t,i,n){if(i)return t.scaleX+n[xt.SCALEX];const r=t.a/e.scaleX,o=t.c/e.scaleY;return Math.sqrt(r*r+o*o)+n[xt.SCALEX]}}class hS extends ca{mix(e){return e.mixScaleX}apply(e,t,i,n,r,o){if(r)o?i.scaleX*=1+(n-1)*t.mixScaleX:i.scaleX!==0&&(i.scaleX+=(n-i.scaleX)*t.mixScaleX);else if(o){const a=1+(n-1)*t.mixScaleX;i.a*=a,i.c*=a}else{let a=i.a/e.scaleX,c=i.c/e.scaleY,l=Math.sqrt(a*a+c*c);l!==0&&(l=1+(n-l)*t.mixScaleX/l,i.a*=l,i.c*=l)}}}class Im extends la{value(e,t,i,n){if(i)return t.scaleY+n[xt.SCALEY];const r=t.b/e.scaleX,o=t.d/e.scaleY;return Math.sqrt(r*r+o*o)+n[xt.SCALEY]}}class uS extends ca{mix(e){return e.mixScaleY}apply(e,t,i,n,r,o){if(r)o?i.scaleY*=1+(n-1)*t.mixScaleY:i.scaleY!==0&&(i.scaleY+=(n-i.scaleY)*t.mixScaleY);else if(o){const a=1+(n-1)*t.mixScaleY;i.b*=a,i.d*=a}else{let a=i.b/e.scaleX,c=i.d/e.scaleY,l=Math.sqrt(a*a+c*c);l!==0&&(l=1+(n-l)*t.mixScaleY/l,i.b*=l,i.d*=l)}}}class Rm extends la{value(e,t,i,n){if(i)return t.shearY+n[xt.SHEARY];const r=1/e.scaleX,o=1/e.scaleY;return(Math.atan2(t.d*o,t.b*r)-Math.atan2(t.c*o,t.a*r))*Ee.radDeg-90+n[xt.SHEARY]}}class dS extends ca{mix(e){return e.mixShearY}apply(e,t,i,n,r,o){if(r)o||(n-=i.shearY),i.shearY+=n*t.mixShearY;else{const a=e.scaleX,c=e.scaleY,l=i.b/a,h=i.d/c,u=Math.atan2(h,l);n=(n+90)*Ee.degRad,o?n-=Ee.PI/2:(n-=u-Math.atan2(i.c/c,i.a/a),n>Ee.PI?n-=Ee.PI2:n<-Ee.PI&&(n+=Ee.PI2)),n=u+n*t.mixShearY;const d=Math.sqrt(l*l+h*h);i.b=Math.cos(n)*d*a,i.d=Math.sin(n)*d*c}}}class nX{constructor(e){w(this,"scale",1);w(this,"attachmentLoader");w(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,i=new rS;i.name="";const n=new w3(e),r=n.readInt32(),o=n.readInt32();i.hash=o===0&&r===0?null:o.toString(16)+r.toString(16),i.version=n.readString(),i.x=n.readFloat(),i.y=n.readFloat(),i.width=n.readFloat(),i.height=n.readFloat(),i.referenceScale=n.readFloat()*t;const a=n.readBoolean();a&&(i.fps=n.readFloat(),i.imagesPath=n.readString(),i.audioPath=n.readString());let c=0;c=n.readInt(!0);for(let p=0;p>5;for(let _=0,C;_>1&1,v.spacingMode=x>>2&3,v.rotateMode=x>>4&3,(x&128)!==0&&(v.offsetRotation=n.readFloat());const y=v.setupPose;y.position=n.readFloat(),v.positionMode===on.Fixed&&(y.position*=t),y.spacing=n.readFloat(),(v.spacingMode===ci.Length||v.spacingMode===ci.Fixed)&&(y.spacing*=t),y.mixRotate=n.readFloat(),y.mixX=n.readFloat(),y.mixY=n.readFloat(),h.push(v);break}case H3:{const v=new kc(m);v.bone=l[n.readInt(!0)];let x=n.readByte();if(v.skinRequired=(x&1)!==0,(x&2)!==0&&(v.x=n.readFloat()),(x&4)!==0&&(v.y=n.readFloat()),(x&8)!==0&&(v.rotate=n.readFloat()),(x&16)!==0){let _=n.readFloat();_<-2?(v.scaleYMode=Ni.Volume,_=-2-_):_<0&&(v.scaleYMode=Ni.Uniform,_=-1-_),v.scaleX=_}(x&32)!==0&&(v.shearX=n.readFloat()),v.limit=((x&64)!==0?n.readFloat():5e3)*t,v.step=1/n.readUnsignedByte();const y=v.setupPose;y.inertia=n.readFloat(),y.strength=n.readFloat(),y.damping=n.readFloat(),y.massInverse=(x&128)!==0?n.readFloat():1,y.wind=n.readFloat(),y.gravity=n.readFloat(),x=n.readByte(),(x&1)!==0&&(v.inertiaGlobal=!0),(x&2)!==0&&(v.strengthGlobal=!0),(x&4)!==0&&(v.dampingGlobal=!0),(x&8)!==0&&(v.massGlobal=!0),(x&16)!==0&&(v.windGlobal=!0),(x&32)!==0&&(v.gravityGlobal=!0),(x&64)!==0&&(v.mixGlobal=!0),y.mix=(x&128)!==0?n.readFloat():1,h.push(v);break}case j3:{const v=new Xr(m),x=n.readByte();if(v.skinRequired=(x&1)!==0,v.loop=(x&2)!==0,v.additive=(x&4)!==0,(x&8)!==0){const y=n.readFloat();a&&(x&64)!==0?v.max=y:v.setupPose.time=y}if((x&16)!==0&&(v.setupPose.mix=(x&32)!==0?n.readFloat():1),(x&64)!==0){v.local=(x&128)!==0,v.bone=l[n.readInt(!0)];const y=n.readFloat();let _=1;switch(n.readByte()){case 0:v.property=new Mm;break;case 1:{_=t,v.property=new Cm;break}case 2:{_=t,v.property=new Am;break}case 3:v.property=new Em;break;case 4:v.property=new Im;break;case 5:v.property=new Rm;break;default:continue}v.property.offset=y*_,v.offset=n.readFloat(),v.scale=n.readFloat()/_}h.push(v);break}}}const d=this.readSkin(n,i,!0,a);d&&(i.defaultSkin=d,i.skins.push(d));{let p=i.skins.length;for(Ye.setArraySize(i.skins,c=p+n.readInt(!0));p0){x=[];for(let b=0;b>4,e.readFloat())}r.push(F);break}}}}}const a=i.slots.length,c=e.readInt(!0);if(c>0){const f=new dr(c);for(let p=0;p0){const f=new ul(h);for(let p=0;p>>1^-(i&1)}readStringRef(){const e=this.readInt(!0);return e===0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let i=0;i>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),i+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),i+=3;break;default:t+=String.fromCharCode(n),i++}}return t}readFloat(){const e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!==0}}let S3=class{constructor(e,t,i,n,r,o){w(this,"source");w(this,"skinIndex");w(this,"slotIndex");w(this,"sourceIndex");w(this,"mesh");w(this,"inheritTimelines");this.mesh=e,this.skinIndex=t,this.slotIndex=i,this.sourceIndex=n,this.source=r,this.inheritTimelines=o}};class Jv{constructor(e=null,t,i=0){w(this,"bones");w(this,"vertices");w(this,"length");this.bones=e,this.vertices=t,this.length=i}}var vn;(function(s){s[s.Region=0]="Region",s[s.BoundingBox=1]="BoundingBox",s[s.Mesh=2]="Mesh",s[s.LinkedMesh=3]="LinkedMesh",s[s.Path=4]="Path",s[s.Point=5]="Point",s[s.Clipping=6]="Clipping"})(vn||(vn={}));function ei(s,e,t,i){t instanceof En?_3(s,e,t,i):T3(s,e,t,i)}function _3(s,e,t,i){let n=s.readFloat(),r=s.readFloat()*i;for(let o=0,a=0,c=t.getFrameCount()-1;t.setFrame(o,n,r),o!==c;o++){const l=s.readFloat(),h=s.readFloat()*i;switch(s.readByte()){case Gs:t.setStepped(o);break;case Hs:ut(s,t,a++,o,0,n,l,r,h,i)}n=l,r=h}e.push(t)}function T3(s,e,t,i){let n=s.readFloat(),r=s.readFloat()*i,o=s.readFloat()*i;for(let a=0,c=0,l=t.getFrameCount()-1;t.setFrame(a,n,r,o),a!==l;a++){const h=s.readFloat(),u=s.readFloat()*i,d=s.readFloat()*i;switch(s.readByte()){case Gs:t.setStepped(a);break;case Hs:ut(s,t,c++,a,0,n,h,r,u,i),ut(s,t,c++,a,1,n,h,o,d,i)}n=h,r=u,o=d}e.push(t)}function Qv(s,e){const t=s.readInt(!0);if(t===0)return null;const i=new Array(e).fill(-1),n=new Array(e-t);let r=0,o=0;for(let a=0;a=0;a--)i[a]===-1&&(i[a]=n[--o]);return i}function ut(s,e,t,i,n,r,o,a,c,l){e.setBezier(t,i,n,r,a,s.readFloat(),s.readFloat()*l,s.readFloat(),s.readFloat()*l,o,c)}const M3=0,C3=1,A3=2,E3=3,I3=4,R3=5,P3=6,k3=7,F3=8,O3=9,B3=10,L3=0,D3=1,N3=2,U3=3,$3=4,X3=5,V3=0,Y3=1,G3=2,H3=3,j3=4,W3=0,z3=1,q3=0,K3=1,Z3=2,J3=0,Q3=1,eO=2,tO=4,iO=5,sO=6,nO=7,rO=8,oO=0,aO=1,Gs=1,Hs=2;class lO{constructor(e){w(this,"attachmentLoader");w(this,"scale",1);w(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,i=new rS,n=typeof e=="string"?JSON.parse(e):e,r=n.skeleton;if(r&&(i.hash=r.hash,i.version=r.spine,i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height,i.referenceScale=Z(r,"referenceScale",100)*t,i.fps=r.fps,i.imagesPath=r.images??null,i.audioPath=r.audio??null),n.bones)for(let o=0;o0&&l.properties.push(S)}l.offsets[xt.ROTATION]=Z(o,"rotation",0),l.offsets[xt.X]=Z(o,"x",0)*t,l.offsets[xt.Y]=Z(o,"y",0)*t,l.offsets[xt.SCALEX]=Z(o,"scaleX",0),l.offsets[xt.SCALEY]=Z(o,"scaleY",0),l.offsets[xt.SHEARY]=Z(o,"shearY",0);const y=l.setupPose;d&&(y.mixRotate=Z(o,"mixRotate",1)),f&&(y.mixX=Z(o,"mixX",1)),p&&(y.mixY=Z(o,"mixY",y.mixX)),m&&(y.mixScaleX=Z(o,"mixScaleX",1)),g&&(y.mixScaleY=Z(o,"mixScaleY",y.mixScaleX)),v&&(y.mixShearY=Z(o,"mixShearY",1)),i.constraints.push(l);break}case"path":{const l=new Pc(a);l.skinRequired=c;for(let f=0;f0){const d=i.findConstraint(l,kc);if(!d)throw new Error(`Physics constraint not found: ${l}`);u=i.constraints.indexOf(d)}for(const d in h){const f=h[d];let p=f[0];if(!p)continue;const m=f.length;let g,v=0;if(d==="reset"){const x=new _h(m,u);for(let y=0;p!=null;p=f[y+1],y++)x.setFrame(y,Z(p,"time",0));r.push(x);continue}switch(d){case"inertia":g=new Ww(m,m,u);break;case"strength":g=new zw(m,m,u);break;case"damping":g=new qw(m,m,u);break;case"mass":g=new Kw(m,m,u);break;case"wind":g=new Zw(m,m,u);break;case"gravity":g=new Jw(m,m,u);break;case"mix":{v=1,g=new Qw(m,m,u);break}default:continue}Zi(r,f,g,v,1)}}if(e.slider)for(const l in e.slider){const h=e.slider[l],u=i.findConstraint(l,Xr);if(!u)throw new Error(`Slider not found: ${l}`);const d=i.constraints.indexOf(u);for(const f in h){const p=h[f];if(!p[0])continue;const g=p.length;switch(f){case"time":Zi(r,p,new eS(g,g,d),1,1);break;case"mix":Zi(r,p,new tS(g,g,d),1,1);break}}}if(e.attachments)for(const l in e.attachments){const h=e.attachments[l],u=i.findSkin(l);if(!u)throw new Error(`Skin not found: ${l}`);for(const d in h){const f=h[d],p=i.findSlot(d);if(!p)throw new Error(`Attachment slot not found: ${d}`);const m=p.index;for(const g in f){const v=f[g],x=u.getAttachment(m,g);if(!x)throw new Error(`Timeline attachment not found: ${g}`);for(const y in v){const _=v[y];let C=_[0];if(C){if(y==="deform"){const S=x.bones,b=x.vertices,M=S?b.length/3*2:b.length,I=new Xw(_.length,_.length,m,x);let F=Z(C,"time",0);for(let E=0,k=0;;E++){let O;const D=Z(C,"vertices",null);if(!D)O=S?Ye.newFloatArray(M):b;else{O=Ye.newFloatArray(M);const A=Z(C,"offset",0);if(Ye.arrayCopy(D,0,O,A,D.length),n!==1)for(let P=A,L=P+D.length;P=0;l--)r[l]===-1&&(r[l]=o[--c]);return r}function mt(s,e,t,i,n,r,o,a,c,l){if(s==="stepped")return e.setStepped(i),t;const h=n<<2,u=s[h],d=s[h+1]*l,f=s[h+2],p=s[h+3]*l;return e.setBezier(t,i,n,r,a,u,d,f,p,o,c),t+1}function Z(s,e,t){return s[e]!==void 0?s[e]:t}class hO{newRegionAttachment(e,t,i,n){return new ru(t,i)}newMeshAttachment(e,t,i,n){return new Sl(t,i)}newBoundingBoxAttachment(e,t){return new U1(t)}newPathAttachment(e,t){return new hl(t)}newPointAttachment(e,t){return new H1(t)}newClippingAttachment(e,t){return new Wo(t)}}class uO{sequence(e){for(let t=0;t!Number.isInteger(h)||h<0||h>=o))throw new Error(`拖尾网格“${e}”的三角形索引越界`);const a=Number(s.hull)||0;if(!Number.isInteger(a)||a<0||a>o)throw new Error(`拖尾网格“${e}”的外轮廓数量无效`);if(Array.isArray(s.edges)&&s.edges.some(h=>!Number.isInteger(h)||h<0||h>=o*2||h%2))throw new Error(`拖尾网格“${e}”的外轮廓边索引越界`);if(n.length===i.length)return;let c=0,l=0;for(;c=t)throw new Error(`拖尾网格“${e}”引用了不存在的骨骼`);if(![p,m,g].every(Number.isFinite)||g<0)throw new Error(`拖尾网格“${e}”包含无效权重数据`);u+=g}if(Math.abs(u-1)>.001)throw new Error(`拖尾网格“${e}”的顶点权重之和不为 1`);l++}if(c!==n.length||l!==o)throw new Error(`拖尾网格“${e}”的顶点数量与 UV 不一致`)}function mO(s,e){var r,o,a,c;const t=Array.isArray(s.bones)?s.bones:[],i=new Map(t.map(l=>[String(l.name||""),l])),n=new Set;for(const l of t){if(l.inherit!=null&&!dO.has(l.inherit))throw new Error(`骨骼“${l.name||""}”的 inherit 值“${l.inherit}”不符合 Spine ${e} JSON 格式`);if(/_particle_\d+_trail_/.test(String(l.name||""))){const h=i.get(String(l.parent||""));if(!h||/_particle_\d+_trail_/.test(String(h.name||"")))throw new Error(`拖尾骨骼“${l.name||""}”必须直接挂在粒子系统骨骼下,不能组成骨骼链`)}}for(const l of Array.isArray(s.skins)?s.skins:[]){const h=(l==null?void 0:l.attachments)||{};for(const u of Object.keys(h))for(const d of Object.keys(h[u]||{})){const f=h[u][d];(f==null?void 0:f.type)==="mesh"&&(fO(f,d,t.length),((r=f.vertices)==null?void 0:r.length)!==((o=f.uvs)==null?void 0:o.length)&&n.add(u))}}for(const l of Object.values(s.animations||{}))for(const h of n){const u=(c=(a=l==null?void 0:l.slots)==null?void 0:a[h])==null?void 0:c.attachment;if(Array.isArray(u)&&u.some(d=>!(d!=null&&d.name)))throw new Error(`加权拖尾插槽“${h}”不能使用空附件,未出现或死亡阶段应将对应骨骼缩放设为 0`)}}function pO(s){var e;if(String(((e=s==null?void 0:s.skeleton)==null?void 0:e.spine)||"")!=="3.8")throw new Error("Spine 3.8 导出的版本标识必须为 3.8");for(const t of s.bones||[])if(t.inherit!=null)throw new Error(`Spine 3.8 骨骼“${t.name||""}”应使用 transform,不能使用 inherit`);for(const t of Object.values(s.animations||{})){for(const n of Object.values(t.slots||{})){if(n.rgba||n.rgba2)throw new Error("Spine 3.8 插槽颜色时间轴必须使用 color / twoColor");for(const r of n.attachment||[])if(!Object.prototype.hasOwnProperty.call(r,"name"))throw new Error("Spine 3.8 附件时间轴的隐藏帧必须显式写入 name: null")}for(const n of Object.values(t.bones||{}))for(const r of n.rotate||[])if(r.value!=null||r.angle==null)throw new Error("Spine 3.8 旋转时间轴必须使用 angle");const i=[t];for(;i.length;){const n=i.pop();if(!(!n||typeof n!="object")){if(!Array.isArray(n)&&Array.isArray(n.curve))throw new Error("Spine 3.8 不支持 4.x 数组曲线格式");i.push(...Object.values(n))}}}}function ty(s,e){var o;const t=JSON.parse(s),i=ah((o=t==null?void 0:t.skeleton)==null?void 0:o.spine);if(!i)throw new Error(`导出版本不受支持,仅支持 Spine ${im()}`);if(e&&i!==e)throw new Error(`导出版本不一致:设置为 Spine ${e},JSON 标记为 Spine ${i}`);mO(t,i),i==="3.8"&&pO(t);const n=i==="3.8"?nw(JSON.parse(JSON.stringify(t))):t,r=i==="4.3"?new lO(new uO).readSkeletonData(n):new fh(new hO).readSkeletonData(n);if(!r.bones.length)throw new Error("导出结果缺少骨骼");return{version:i,bones:r.bones.length,slots:r.slots.length,animations:r.animations.length}}const fS="http://127.0.0.1:27843";class Mh extends Error{constructor(t,i="CONNECTOR_ERROR",n){super(t);w(this,"code");w(this,"pairUrl");this.name="SpineConnectorError",this.code=i,this.pairUrl=n}}function Pm(s,e){return String(s||"").trim().replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||e}function gO(s,e){const t=/\.([a-z0-9]{2,5})$/i.exec(s);return t?`.${t[1].toLowerCase()}`:e.includes("jpeg")?".jpg":e.includes("webp")?".webp":e.includes("gif")?".gif":".png"}function vO(s,e,t){const i=String(s||"").replace(/\\/g,"/").split("/").filter(Boolean).map(r=>Pm(r,"images")),n=Pm(e.replace(/\.[^./\\]+$/,""),"image");return[...i,`${n}${gO(e,t)}`].join("/")}async function rf(s,e,t){if(!s)return null;const i=await fetch(s);if(!i.ok)throw new Error(`无法读取导出图片:${t}`);const n=await i.blob(),r=new Uint8Array(await n.arrayBuffer());let o="";const a=32768;for(let c=0;co.finally(()=>{i++,e==null||e(i,t.length)});for(const o of s.filter(a=>a.visible!==!1)){for(const a of o.config.imageResources)if(a.imageMode==="sequence"&&a.sequenceFrames.length)for(const c of a.sequenceFrames)t.push(n(rf(c.previewUrl,a.textureFolder,c.name||a.textureName)));else t.push(n(rf(a.previewUrl,a.textureFolder,a.textureName)));if(o.config.trail)for(const a of o.config.trailResources)t.push(n(rf(a.previewUrl,"",a.textureName)))}const r=new Map;for(const o of await Promise.all(t))o&&!r.has(o.path)&&r.set(o.path,o);return[...r.values()]}async function yO(){try{const s=await fetch(`${fS}/v1/health`,{cache:"no-store"});if(!s.ok)throw new Error(`HTTP ${s.status}`);return{available:!0,...await s.json()}}catch(s){return{available:!1,authorized:!1,error:s instanceof Error?s.message:String(s)}}}async function xO(s,e){const t=await mS(s.systems,(n,r)=>{e==null||e({phase:"images",progress:r?n/r:1})}),i=JSON.stringify({schemaVersion:1,projectName:s.projectName,spineVersion:s.spineVersion,skeletonJson:s.skeletonJson,images:t});return new Promise((n,r)=>{const o=new XMLHttpRequest;o.open("POST",`${fS}/v1/convert`),o.responseType="blob",o.setRequestHeader("Content-Type","application/json"),o.upload.onprogress=a=>{e==null||e({phase:"upload",progress:a.lengthComputable&&a.total>0?a.loaded/a.total:null})},o.upload.onloadend=()=>e==null?void 0:e({phase:"processing",progress:null}),o.onprogress=a=>{e==null||e({phase:"download",progress:a.lengthComputable&&a.total>0?a.loaded/a.total:null})},o.onerror=()=>r(new Mh("未检测到本地 Spine 连接器,请先启动连接器","CONNECTOR_OFFLINE")),o.onload=async()=>{const a=o.response;if(o.status<200||o.status>=300){let h={};try{h=JSON.parse(await a.text())}catch{}r(new Mh(h.message||`Spine 连接器返回错误:HTTP ${o.status}`,h.code,h.pairUrl));return}const c=o.getResponseHeader("X-Spine-File-Name");let l=`${Pm(s.projectName,"SpineParticle")}.zip`;if(c)try{l=decodeURIComponent(c)}catch{}n({blob:a,fileName:l,spineEditorVersion:o.getResponseHeader("X-Spine-Editor-Version")||s.spineVersion,imageCount:t.length})},o.send(i)})}function bO(s,e){const t=URL.createObjectURL(s),i=document.createElement("a");i.href=t,i.download=/\.zip$/i.test(e)?e:`${e}.zip`,i.style.display="none",document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}const wO=Array.from({length:256},(s,e)=>{let t=e;for(let i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;return t>>>0});function SO(s){let e=4294967295;for(const t of s)e=wO[(e^t)&255]^e>>>8;return(e^4294967295)>>>0}function _O(s){const e=String(s||"").replace(/\\/g,"/").split("/").filter(t=>t&&t!==".");if(!e.length||e.some(t=>t===".."))throw new Error("ZIP 文件路径无效");return e.join("/")}function TO(s=new Date){const e=Math.max(1980,s.getFullYear());return{time:s.getHours()<<11|s.getMinutes()<<5|Math.floor(s.getSeconds()/2),date:e-1980<<9|s.getMonth()+1<<5|s.getDate()}}function of(s){const e=new Uint8Array(s);return{bytes:e,view:new DataView(e.buffer)}}function iy(s){const e=new Uint8Array(s.reduce((i,n)=>i+n.length,0));let t=0;for(const i of s)e.set(i,t),t+=i.length;return e}function MO(s){const e=new TextEncoder,t=[],i=[],n=TO();let r=0;for(const c of s){const l=e.encode(_O(c.name)),h=SO(c.data),u=of(30);u.view.setUint32(0,67324752,!0),u.view.setUint16(4,20,!0),u.view.setUint16(6,2048,!0),u.view.setUint16(10,n.time,!0),u.view.setUint16(12,n.date,!0),u.view.setUint32(14,h,!0),u.view.setUint32(18,c.data.length,!0),u.view.setUint32(22,c.data.length,!0),u.view.setUint16(26,l.length,!0),t.push(u.bytes,l,c.data);const d=of(46);d.view.setUint32(0,33639248,!0),d.view.setUint16(4,20,!0),d.view.setUint16(6,20,!0),d.view.setUint16(8,2048,!0),d.view.setUint16(12,n.time,!0),d.view.setUint16(14,n.date,!0),d.view.setUint32(16,h,!0),d.view.setUint32(20,c.data.length,!0),d.view.setUint32(24,c.data.length,!0),d.view.setUint16(28,l.length,!0),d.view.setUint32(42,r,!0),i.push(d.bytes,l),r+=u.bytes.length+l.length+c.data.length}const o=iy(i),a=of(22);return a.view.setUint32(0,101010256,!0),a.view.setUint16(8,s.length,!0),a.view.setUint16(10,s.length,!0),a.view.setUint32(12,o.length,!0),a.view.setUint32(16,r,!0),new Blob([iy([...t,o,a.bytes])],{type:"application/zip"})}function CO(s){const e=atob(s),t=new Uint8Array(e.length);for(let i=0;ii===".."||/^[a-z]+:/i.test(i))?"images":t.join("/")}function EO(s){return String(s||"SpineParticle").replace(/\.json$/i,"").replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||"SpineParticle"}async function IO(s){const e=await mS(s.systems);if(!e.length)throw new Error("当前可见粒子系统没有可导出的图片");const t=AO(s.imagesPath);return{blob:MO(e.map(n=>({name:`${t}/${n.path}`,data:CO(n.dataBase64)}))),imageCount:e.length,folder:t}}function RO(s,e){const t=`${EO(e)}-images.zip`,i=URL.createObjectURL(s),n=document.createElement("a");return n.href=i,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(i),1e3),t}function PO(s){s.settings.exportSettings=Qb(s.settings.exportSettings);const e=qe(()=>s.settings.exportSettings),t=Ge(!1),i=Ge(null),n=Ge(""),r=Ge(!1),o=Ge(null),a=Ge(""),c=Ge(""),l=qe(()=>{const b=o.value;return b?b.available?b.spineFound?b.authorized?"连接器可用 · Spine 已就绪":"连接器已启动,当前网站尚未授权":"连接器已启动,但未找到 Spine":"本地 Spine 连接器未启动":"正在检测本地 Spine 连接器…"}),h=qe(()=>{var b,M,I,F,E,k;return{ready:!!((b=o.value)!=null&&b.available)&&!!((M=o.value)!=null&&M.spineFound)&&!!((I=o.value)!=null&&I.authorized),warning:!!((F=o.value)!=null&&F.available)&&(!((E=o.value)!=null&&E.spineFound)||!((k=o.value)!=null&&k.authorized))}}),u=qe(()=>{var b,M,I;return!!((b=o.value)!=null&&b.available)&&!!((M=o.value)!=null&&M.spineFound)&&!!((I=o.value)!=null&&I.authorized)}),d=qe(()=>{const b=o.value;return!(b!=null&&b.available)||!b.spineFound||b.authorized||typeof window>"u"?"":`http://127.0.0.1:27843/pair?origin=${encodeURIComponent(window.location.origin)}`}),f=qe(()=>{const b=o.value;return b?b.available?b.spineFound?b.authorized?"":"未授权":"未找到 Spine":"未启动":"检测中"}),p=qe(()=>t.value?"正在重新计算并生成 Spine 工程":f.value?`暂不可用:${f.value}`:`调用本机 Spine 自动生成 ${e.value.spineVersion} 工程`);Vn(()=>{v(),m=window.setInterval(v,3e3)});let m,g=0;pl(()=>{m!==void 0&&window.clearInterval(m)});async function v(){const b=++g,M=await yO();if(b!==g)return;o.value=M;const I=c.value;(I==="CONNECTOR_OFFLINE"?M.available:I==="SPINE_NOT_FOUND"?M.available&&M.spineFound:I==="ORIGIN_NOT_ALLOWED"?M.available&&M.spineFound&&M.authorized:!!I&&M.available&&M.spineFound&&M.authorized)&&(c.value="",a.value="",r.value&&(r.value=!1,n.value=""))}function x(){return new Promise(b=>requestAnimationFrame(()=>b()))}async function y(b){s.timeline.playing=!1,s.timeline.frame=0,s.timeline.recorded=!1;for(const F of s.systems)F.frames=void 0;s.recalcTotalFrames(),await x(),s.timeline.playing=!0;const M=s.timeline.totalFrames/Math.max(1,s.timeline.fps)*1e3,I=performance.now()+Math.max(8e3,M*2.5+3e3);for(;!s.timeline.recorded;){if(performance.now()>I)throw new Error("重新计算动画超时,请确认页面仍在运行后重试");b==null||b(Math.min(.98,s.timeline.frame/Math.max(1,s.timeline.totalFrames-1))),await new Promise(F=>setTimeout(F,50))}b==null||b(1)}async function _(){if(!t.value){t.value=!0,i.value="json",r.value=!1,c.value="",a.value="",n.value="正在重新计算粒子动画…";try{await y();const b=Yv({systems:s.systems,timeline:s.timeline,settings:e.value});ty(b.text,e.value.spineVersion),a3(b,e.value.fileName);const M=b.warnings.length?`;${b.warnings.length} 条资源提示(缺图仍已导出)`:"";n.value=`已导出 Spine ${e.value.spineVersion}:${b.particleSystemCount} 个粒子系统、${b.animationCount} 个动画、${b.boneCount} 根骨骼${M}`}catch(b){r.value=!0,n.value=b instanceof Error?b.message:String(b)}finally{t.value=!1,i.value=null}}}async function C(){if(t.value)return;t.value=!0,i.value="spine",r.value=!1,c.value="",a.value="",n.value="正在重新计算粒子动画…";const b=yw("导出 Spine 包","正在重新计算粒子动画…");try{await b.paint(),await y(E=>b.update(E*18,"正在重新计算粒子动画…")),b.update(20,"正在生成 Spine JSON…");const M=Yv({systems:s.systems,timeline:s.timeline,settings:e.value});ty(M.text,e.value.spineVersion),n.value="正在整理图片并调用本机 Spine…";const I=e.value.fileName.replace(/\.json$/i,"")||"SpineParticle",F=await xO({projectName:I,spineVersion:e.value.spineVersion,skeletonJson:M.text,systems:s.systems},({phase:E,progress:k})=>{E==="images"?b.update(k==null?null:22+k*18,"正在整理工程图片…"):E==="upload"?b.update(k==null?null:40+k*30,"正在上传数据到 Spine 连接器…"):E==="processing"?b.update(null,"Spine 正在转换工程,请稍候…"):b.update(k==null?null:82+k*16,"正在下载生成的 Spine 工程包…")});b.update(99,"正在交给浏览器下载…"),bO(F.blob,F.fileName),n.value=`已生成 ${F.fileName}:包含 .spine 工程和 ${F.imageCount} 张图片,Spine ${F.spineEditorVersion}`,await v(),await b.finish("Spine 工程包已开始下载")}catch(M){const I=M instanceof Error?M.message:String(M);r.value=!0,c.value=M instanceof Mh?M.code:"",M instanceof Mh&&M.pairUrl&&(a.value=M.pairUrl),n.value=I,await v(),await b.fail(I)}finally{t.value=!1,i.value=null}}async function S(){if(!t.value){t.value=!0,i.value="images",r.value=!1,c.value="",a.value="",n.value="正在整理当前粒子系统使用的图片…";try{const b=await IO({systems:s.systems,imagesPath:e.value.imagesPath}),M=RO(b.blob,e.value.fileName);n.value=`已生成 ${M}:${b.folder}/ 内包含 ${b.imageCount} 张图片`}catch(b){r.value=!0,n.value=b instanceof Error?b.message:String(b)}finally{t.value=!1,i.value=null}}}return{exportSettings:e,exportBusy:t,exportTarget:i,exportMessage:n,exportError:r,connectorHealth:o,connectorPairUrl:a,connectorExportErrorCode:c,connectorStatusText:l,connectorStatusClass:h,connectorReady:u,connectorAuthorizationUrl:d,connectorDisabledReason:f,connectorButtonTitle:p,connectorHealthTimer:m,connectorHealthRequestId:g,refreshConnectorHealth:v,nextPaint:x,prepareExportFrames:y,exportSpineJson:_,exportSpineProject:C,exportSpineImages:S}}function kO(s){const e=Ge(null),t=Ge(""),i=Ge([]),n=Ge(!1),r=Ge(""),o=Ge(!1);function a(){hw(s),o.value=!1,r.value="配置已保存到本地"}async function c(u){var p;const d=u.target,f=(p=d.files)==null?void 0:p[0];if(f){r.value="正在加载配置…",o.value=!1;try{await KP(s,f),r.value=`已加载:${f.name}`}catch(m){o.value=!0,r.value=m instanceof Error?m.message:String(m)}finally{d.value=""}}}async function l(){try{const u=await fetch(`/Preset/index.json?t=${Date.now()}`,{cache:"no-store"});if(!u.ok)throw new Error("无法读取预设列表");const d=await u.json();i.value=Array.isArray(d)?d.filter(f=>!!f&&typeof f.name=="string"&&typeof f.file=="string"):[]}catch{i.value=[]}}async function h(){const u=t.value;if(!u)return;n.value=!0,o.value=!1,r.value="正在加载预设…";const d=yw("加载预设",`正在下载 ${u}…`);try{await d.paint();const f=await fetch(`/Preset/${encodeURIComponent(u)}`,{cache:"no-store"});if(!f.ok)throw new Error(`无法读取预设:${u}`);const p=await BF(f,m=>{d.update(m==null?null:m*55,`正在下载 ${u}…`)});d.update(58,"正在解析预设配置…"),d.update(70,"正在解析并恢复预设资源…"),await dw(s,p),r.value=`已加载预设:${u.replace(/\.json$/i,"")}`,await d.finish("预设加载完成")}catch(f){o.value=!0;const p=f instanceof Error?f.message:String(f);r.value=`${p},请检查预设文件命名`,await d.fail(p)}finally{n.value=!1,t.value=""}}return Vn(l),{configFileInput:e,selectedPreset:t,presetOptions:i,presetLoading:n,configMessage:r,configError:o,saveConfig:a,onConfigFileChange:c,refreshPresets:l,loadSelectedPreset:h}}function FO(s){const e=Ge(null),t=Ge(null),i=Ge(null),n=Ge(null),r=Ge(null);function o(){var B;const P=(B=s.value)==null?void 0:B.config;if(!P)return;const L=Math.max(0,...P.trailResources.map(X=>X.id))+1;P.trailResources.push({id:L,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:um.map(X=>({...X})),boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:cm.map(X=>({...X})),shapeEnabled:!1,shapeCurve:dm.map(X=>({...X}))}),p()}function a(P){var L;r.value=P,(L=n.value)==null||L.click()}function c(P,L){var V;const B=(V=s.value)==null?void 0:V.config;if(!B)return;const X=P==="trailGridCols"?32:16;B[P]=Math.min(X,Math.max(2,Math.round(Number(L)||2)))}function l(P,L){var X;const B=(X=s.value)==null?void 0:X.config.trailResources.find(V=>V.id===P);B&&(B.boneCount=Math.min(16,Math.max(2,Math.round(Number(L)||2))))}function h(P,L){var X;const B=(X=s.value)==null?void 0:X.config.trailResources.find(V=>V.id===P);B&&(B.rotation=Math.max(-360,Math.min(360,Number(L)||0)))}async function u(P){var W,ne;const L=P.target,B=(W=L.files)==null?void 0:W[0],X=(ne=s.value)==null?void 0:ne.config,V=X==null?void 0:X.trailResources.find(re=>re.id===r.value);if(!B||!V){L.value="";return}const q=await M(B);V.texture=nr(await ze.fromURL(q)),V.previewUrl=q,V.textureName=B.name.replace(/\.[^.]+$/,"")||"trail",L.value="",r.value=null}async function d(P){var X;const L=(X=s.value)==null?void 0:X.config,B=L==null?void 0:L.trailResources.find(V=>V.id===P);B&&(B.texture=nr(await ze.fromURL("/images/trail.png")),B.previewUrl="/images/trail.png",B.textureName="trail",B.weight=100,B.locked=!1,B.rotation=0,B.boneCount=3,B.trailRatio=100,B.lengthMode="fixed",B.length=100,B.lengthMin=100,B.lengthMax=100,B.widthSizeMode="fixed",B.width=100,B.widthMin=100,B.widthMax=100,B.widthMode="particle",B.lifeLengthEnabled=!1,B.lifeLengthCurve=cm.map(V=>({...V})),B.shapeEnabled=!1,B.shapeCurve=dm.map(V=>({...V})),B.colorMode="particle",B.color="#ffffff",B.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],B.blend="normal",B.alphaMode="particle",B.alpha=1,B.alphaCurve=um.map(V=>({...V})),p())}function f(P){var X;const L=(X=s.value)==null?void 0:X.config.trailResources;if(!L||L.length<=1)return;const B=L.findIndex(V=>V.id===P);B>=0&&L.splice(B,1),p()}function p(){var V;const P=(V=s.value)==null?void 0:V.config.trailResources;if(!(P!=null&&P.length))return;if(P.length===1){P[0].weight=100,P[0].locked=!1;return}const L=P.filter(q=>q.locked),B=P.filter(q=>!q.locked);let X=L.reduce((q,W)=>q+Math.max(0,Number(W.weight)||0),0);X>100&&($(L,100,!0),X=100),$(B,100-X)}function m(P,L){var ne;const B=(ne=s.value)==null?void 0:ne.config.trailResources;if(!(B!=null&&B.length))return;if(B.length===1){B[0].weight=100,B[0].locked=!1;return}const X=B.find(re=>re.id===P);if(!X||X.locked)return;const V=B.filter(re=>re.id!==P&&re.locked).reduce((re,le)=>re+Math.max(0,Number(le.weight)||0),0),q=Math.max(0,100-V),W=B.filter(re=>re.id!==P&&!re.locked);X.weight=D(Math.min(q,Math.max(0,Number(L)||0))),W.length?$(W,q-X.weight,!0):X.weight=D(q)}function g(P){var X;const L=(X=s.value)==null?void 0:X.config.trailResources;if(!L||L.length===1)return;const B=L.find(V=>V.id===P);B&&(B.locked=!B.locked)}function v(P,L){const B=L.target;P.color=F(B.value,P.color),B.value=P.color}function x(P,L){v(P,L),L.target.blur()}function y(){var B;const P=(B=s.value)==null?void 0:B.config;if(!P)return;const L=Math.max(0,...P.imageResources.map(X=>X.id))+1;P.imageResources.push({id:L,texture:P.texture,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:hm.map(X=>({...X}))}),N()}function _(P){var L;i.value=P,(L=e.value)==null||L.click()}function C(P){var L;i.value=P,(L=t.value)==null||L.click()}async function S(P){var ne,re;const L=P.target,B=(ne=L.files)==null?void 0:ne[0],X=(re=s.value)==null?void 0:re.config,V=X==null?void 0:X.imageResources.find(le=>le.id===i.value);if(!B||!V){L.value="";return}const q=await M(B),W=nr(await ze.fromURL(q));V.texture=W,V.previewUrl=q,V.textureFolder="",V.textureName=B.name.replace(/\.[^.]+$/,"")||"particle",L.value="",i.value=null}async function b(P){var q;const L=P.target,B=Array.from(L.files||[]).sort((W,ne)=>W.name.localeCompare(ne.name,void 0,{numeric:!0,sensitivity:"base"})),X=(q=s.value)==null?void 0:q.config,V=X==null?void 0:X.imageResources.find(W=>W.id===i.value);if(!B.length||!V){L.value="";return}V.sequenceFrames=await Promise.all(B.map(async W=>{const ne=await M(W);return{name:W.name,previewUrl:ne,texture:nr(await ze.fromURL(ne))}})),V.imageMode="sequence",L.value="",i.value=null}function M(P){return new Promise((L,B)=>{const X=new FileReader;X.onload=()=>L(String(X.result||"")),X.onerror=()=>B(X.error),X.readAsDataURL(P)})}function I(P){var X;const L=(X=s.value)==null?void 0:X.config,B=L==null?void 0:L.imageResources.find(V=>V.id===P);!L||!B||(B.texture=L.texture,B.textureName="star",B.textureFolder="",B.previewUrl="/images/star.png",B.imageMode="fixed",B.sequencePlayback="loop-forward",B.sequenceFps=30,B.sequenceFrames=[],B.scale=1,B.anchorX=.5,B.anchorY=.5,B.colorMode="fixed",B.colorStart="#ffffff",B.colorEnd="#ff4d4d",B.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],B.blend="normal",B.independentAlpha="off",B.alpha=1,B.alphaCurveMode="跟随导出",B.alphaCurve=hm.map(V=>({...V})),B.locked=!1,N())}function F(P,L){let B=P.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(B)&&(B=B.split("").map(X=>X+X).join("")),/^[0-9a-f]{6}$/i.test(B)?`#${B.toLowerCase()}`:L}function E(P,L){const B=L.target;P.colorStart=F(B.value,P.colorStart),B.value=P.colorStart}function k(P,L){E(P,L),L.target.blur()}function O(P){var X;const L=(X=s.value)==null?void 0:X.config.imageResources;if(!L||L.length<=1)return;const B=L.findIndex(V=>V.id===P);B>=0&&L.splice(B,1),N()}function D(P){return Math.round(P)}function $(P,L,B=!1){if(!P.length)return;const X=Math.max(0,D(L)),V=B?P.reduce((W,ne)=>W+Math.max(0,Number(ne.weight)||0),0):0;let q=0;P.forEach((W,ne)=>{const re=ne===P.length-1,le=D(re?X-q:V>0?X*Math.max(0,Number(W.weight)||0)/V:X/P.length);W.weight=le,q+=le})}function N(){var V;const P=(V=s.value)==null?void 0:V.config.imageResources;if(!(P!=null&&P.length))return;if(P.length===1){P[0].weight=100,P[0].locked=!1;return}const L=P.filter(q=>q.locked),B=P.filter(q=>!q.locked);let X=L.reduce((q,W)=>q+Math.max(0,Number(W.weight)||0),0);X>100&&($(L,100,!0),X=100),$(B,100-X)}function U(P,L){var ne;const B=(ne=s.value)==null?void 0:ne.config.imageResources;if(!(B!=null&&B.length))return;if(B.length===1){B[0].weight=100,B[0].locked=!1;return}const X=B.find(re=>re.id===P);if(!X||X.locked)return;const V=B.filter(re=>re.id!==P&&re.locked).reduce((re,le)=>re+Math.max(0,Number(le.weight)||0),0),q=Math.max(0,100-V),W=B.filter(re=>re.id!==P&&!re.locked);if(X.weight=D(Math.min(q,Math.max(0,Number(L)||0))),!W.length){X.weight=D(q);return}$(W,q-X.weight,!0)}function A(P){var X;const L=(X=s.value)==null?void 0:X.config.imageResources;if(!L||L.length===1)return;const B=L.find(V=>V.id===P);B&&(B.locked=!B.locked)}return{textureFileInput:e,sequenceFileInput:t,pendingResourceId:i,trailTextureFileInput:n,pendingTrailResourceId:r,addTrailResource:o,openTrailTexturePicker:a,onTrailRigChange:c,onTrailResourceBoneCountChange:l,onTrailResourceRotationChange:h,onTrailTextureFile:u,resetTrailTexture:d,removeTrailResource:f,rebalanceTrailWeights:p,setTrailResourceWeight:m,toggleTrailResourceLock:g,setTrailColor:v,commitTrailColor:x,addImageResource:y,openTexturePicker:_,openSequencePicker:C,onTextureFile:S,onSequenceFiles:b,readFileAsDataUrl:M,resetTexture:I,normalizeHex:F,setResourceFixedColor:E,commitResourceFixedColor:k,removeImageResource:O,roundWeight:D,distributeImageWeights:$,rebalanceImageWeights:N,setResourceWeight:U,toggleResourceLock:A}}function OO(){const s=ao(),{exportSettings:e,exportBusy:t,exportTarget:i,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:c,connectorReady:l,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g}=PO(s),{configFileInput:v,selectedPreset:x,presetOptions:y,presetLoading:_,configMessage:C,configError:S,saveConfig:b,onConfigFileChange:M,refreshPresets:I,loadSelectedPreset:F}=kO(s);function E(ee){return ee==="跟随导出"?e.value.keyframeCurve==="bezier"?"bezier":"linear":ee==="贝塞尔"?"bezier":"linear"}s.systems.length||s.addSystem();const k=qe(()=>{const ee=s.systems.findIndex(me=>me.id===s.activeId);return ee>=0?ee:0}),O=qe(()=>s.systems[k.value]||null),{textureFileInput:D,sequenceFileInput:$,trailTextureFileInput:N,addTrailResource:U,openTrailTexturePicker:A,onTrailRigChange:P,onTrailResourceBoneCountChange:L,onTrailResourceRotationChange:B,onTrailTextureFile:X,resetTrailTexture:V,removeTrailResource:q,setTrailResourceWeight:W,toggleTrailResourceLock:ne,setTrailColor:re,commitTrailColor:le,addImageResource:ue,openTexturePicker:ae,openSequencePicker:xe,onTextureFile:Y,onSequenceFiles:j,resetTexture:H,setResourceFixedColor:G,commitResourceFixedColor:z,removeImageResource:ie,setResourceWeight:fe,toggleResourceLock:te}=FO(O),oe=qe(()=>O.value?e1(O.value.config,s.timeline.fps):30),ce=qe(()=>{var me;const ee=(me=O.value)==null?void 0:me.config;return ee?Math.max(1,Math.ceil(Number(ee.loopDurationFrames)||1)):1}),Ce=qe(()=>s.activeObjectType),ye=qe(()=>s.activeObjectType==="collision"&&s.colliders.find(ee=>ee.id===s.activeObjectId)||null),we=qe(()=>s.activeObjectType==="path"&&s.paths.find(ee=>ee.id===s.activeObjectId)||null),Me=qe(()=>s.activeObjectType==="spine"&&s.spines.find(ee=>ee.id===s.activeObjectId)||null),ve=qe(()=>s.activeObjectType==="particle"?s.systems.some(ee=>ee.id===s.activeObjectId):s.activeObjectType==="collision"?s.colliders.some(ee=>ee.id===s.activeObjectId):s.activeObjectType==="path"?s.paths.some(ee=>ee.id===s.activeObjectId):s.spines.some(ee=>ee.id===s.activeObjectId)),Xe=qe(()=>{const ee=s.spines.find(me=>me.selectedBone&&me.bones.some(Ae=>Ae.name===me.selectedBone));return ee?{spine:ee,boneName:ee.selectedBone}:null}),pe=qe(()=>{var Ae;const ee=(Ae=O.value)==null?void 0:Ae.config;if(!ee||ee.emitterFollowMode!=="bone")return null;const me=s.spines.find(bt=>bt.id===ee.emitterFollowSpineId);return!me||!me.bones.some(bt=>bt.name===ee.emitterFollowBoneName)?null:{spine:me,boneName:ee.emitterFollowBoneName}}),Ke=Ge(!1),Ze=qe(()=>{var me;const ee=new Set(((me=O.value)==null?void 0:me.config.collisionColliderIds)||[]);return s.colliders.filter(Ae=>ee.has(Ae.id))}),Ct=qe(()=>{var me;const ee=new Set(((me=O.value)==null?void 0:me.config.collisionColliderIds)||[]);return s.colliders.filter(Ae=>!ee.has(Ae.id))});Xi(()=>{var ee,me;return[(ee=O.value)==null?void 0:ee.id,(me=O.value)==null?void 0:me.config.collision]},()=>{Ke.value=!1});function Lt(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;!me||me.collisionColliderIds.includes(ee)||(me.collisionColliderIds.push(ee),Ke.value=!1)}function ii(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;me&&(me.collisionColliderIds=me.collisionColliderIds.filter(bt=>bt!==ee))}Ma(()=>{for(const ee of s.systems)ee.visible==null&&(ee.visible=!0);for(const ee of s.colliders)ee.visible==null&&(ee.visible=!0);for(const ee of s.paths)ee.visible==null&&(ee.visible=!0);for(const ee of s.spines)ee.visible==null&&(ee.visible=!0)}),Ma(()=>{if(!O.value)return;const ee=pr(O.value.config);ee.lifeMode==="curve"&&(ee.lifeMode="random"),ee.speedMode==="curve"&&(ee.speedMode="random"),ee.scaleMode==="curve"&&(ee.scaleMode="random"),ee.initialRotationMode==="curve"&&(ee.initialRotationMode="random"),ee.mode==="stream"&&!(ee.duration>0)&&(ee.duration=1),ee.streamBehavior==="loop"&&(ee.emitterFollow||ee.emitterFollowMode!=="none")&&ot(ee)}),Ma(()=>{const ee=new Set(s.colliders.map(me=>me.id));for(const me of s.systems){const Ae=pr(me.config),bt=Ae.collisionColliderIds.filter(Sr=>ee.has(Sr));if(bt.length!==Ae.collisionColliderIds.length&&(Ae.collisionColliderIds=bt),Ae.spawnPathId>0&&!s.paths.some(Sr=>Sr.id===Ae.spawnPathId)&&(Ae.spawnPathId=0,(Ae.emissionAngleMode==="path-normal"||Ae.emissionAngleMode==="path-tangent")&&(Ae.emissionAngleMode="fixed")),Ae.emitterFollowMode!=="bone")continue;const Pt=s.spines.find(Sr=>Sr.id===Ae.emitterFollowSpineId);!!(Pt!=null&&Pt.bones.some(Sr=>Sr.name===Ae.emitterFollowBoneName))||(Ae.emitterFollowMode="none",Ae.emitterFollowSpineId=0,Ae.emitterFollowBoneName="")}}),Ma(()=>{for(const ee of s.colliders)ee.followPathId==null&&(ee.followPathId=0),ee.followDuration>0||(ee.followDuration=2),ee.followPathRotation==null&&(ee.followPathRotation=!1),["跟随导出","线性","贝塞尔"].includes(ee.followCurveMode)||(ee.followCurveMode="跟随导出"),(!Array.isArray(ee.followCurve)||ee.followCurve.length<2)&&(ee.followCurve=[{x:0,y:0},{x:1,y:1}])});const rs=no({config:!0,scene:!1,emitMode:!0,shape:!0,attr:!0,look:!0,mods:!0,export:!1});function zt(ee){rs[ee]=!rs[ee]}function se(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;me&&(me.mode=ee,ee==="stream"&&!(me.duration>0)&&(me.duration=1))}function he(ee){var bt;const me=(bt=O.value)==null?void 0:bt.config;if(!me)return;const Ae=Math.min(1800,Math.max(1,Math.ceil(Number(ee)||1)));me.loopDurationFrames=Ae}function ot(ee){const me=cl();ee.emitterFollow=!1,ee.emitterFollowMode="none",ee.emitterFollowPathId=me.emitterFollowPathId,ee.emitterFollowSpineId=me.emitterFollowSpineId,ee.emitterFollowBoneName=me.emitterFollowBoneName,ee.emitterFollowBoneOffsetX=me.emitterFollowBoneOffsetX,ee.emitterFollowBoneOffsetY=me.emitterFollowBoneOffsetY,ee.emitterFollowBoneRotation=me.emitterFollowBoneRotation,ee.emitterFollowBoneScaleX=me.emitterFollowBoneScaleX,ee.emitterFollowBoneScaleY=me.emitterFollowBoneScaleY,ee.emitterAngleMode=me.emitterAngleMode,ee.emitterFollowCurve=me.emitterFollowCurve.map(Ae=>({...Ae})),ee.emitterFollowDuration=me.emitterFollowDuration,ee.emitterFollowSpace=me.emitterFollowSpace,ee.emitterFollowDirection=me.emitterFollowDirection,ee.emitterFollowOffset=me.emitterFollowOffset}function at(ee){var Pt;const me=(Pt=O.value)==null?void 0:Pt.config;if(!me||me.streamBehavior===ee)return;const Ae=ee==="loop",bt=Ae?"进入循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?":"退出循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?";window.confirm(bt)&&(ot(me),me.streamBehavior=ee,Ae||(me.generateLoopStartAnimation=!1,me.generateLoopEndAnimation=!1))}function gt(ee,me){var Pt;const Ae=(Pt=O.value)==null?void 0:Pt.config;if(!Ae)return;const bt=me.target.checked;ee==="start"?Ae.generateLoopStartAnimation=bt:Ae.generateLoopEndAnimation=bt}function $e(ee,me){var Pt;const Ae=(Pt=O.value)==null?void 0:Pt.config;if(!Ae)return;const bt=Math.min(1800,Math.max(1,Math.ceil(Number(me.target.value)||30)));ee==="start"?Ae.loopStartDurationFrames=bt:Ae.loopEndDurationFrames=bt}function _i(ee,me){var Pt;const Ae=(Pt=O.value)==null?void 0:Pt.config;if(!Ae)return;const bt=me.target.checked;ee==="start"?Ae.loopStartUseCustomDuration=bt:Ae.loopEndUseCustomDuration=bt}function pi(ee,me){const Ae=ee.target.value;if(me.emitterFollowMode=Ae,Ae!=="bone"){me.emitterFollowSpineId=0,me.emitterFollowBoneName="";return}$t(me)}function $t(ee){const me=Xe.value;if(!me){ee.emitterFollowMode="none",ee.emitterFollowSpineId=0,ee.emitterFollowBoneName="";return}ee.emitterFollowMode="bone",ee.emitterFollowSpineId=me.spine.id,ee.emitterFollowBoneName=me.boneName}const Fi={emitMode:["mode","rate","streamBehavior","loopDurationFrames","generateLoopStartAnimation","loopStartUseCustomDuration","loopStartDurationFrames","generateLoopEndAnimation","loopEndUseCustomDuration","loopEndDurationFrames","burstCount","burstLoop","delay","duration"],shape:["shape","shapeRangeVersion","innerRadius","outerRadius","innerRectW","innerRectH","outerRectW","outerRectH","spawnPathId","spawnPathDistribution","radius","rectW","rectH","emissionAngleMode","direction","spread","coneDirection","coneAngle"],attr:["lifeMin","lifeMax","lifeMode","lifeCurve","speedMin","speedMax","speedMode","speedCurve","scaleMin","scaleMax","scaleMode","scaleAxisMode","scaleYMin","scaleYMax","scaleCurve","scaleYCurve","scaleEndRatio","initialRotationMode","initialRotationMin","initialRotationMax","initialRotationCurve","rotationSpeedMin","rotationSpeedMax","speedOverLifeEnabled","speedOverLifeMode","speedOverLifeMin","speedOverLifeMax","speedOverLifeCurve","scaleOverLifeEnabled","scaleOverLifeMode","scaleOverLifeAxisMode","scaleOverLifeMin","scaleOverLifeMax","scaleYOverLifeMin","scaleYOverLifeMax","scaleOverLifeCurve","scaleYOverLifeCurve","rotationOverLifeEnabled","rotationOverLifeMode","rotationOverLifeCurve"],look:["texture","imageResources","imageWeightVersion","alpha","alphaEnd","colorStart","colorEnd","colorOverLife","blend","alphaMode","curveMode","alphaCurve","textureName","textureFolder","alphaScale","anchorX","anchorY","independentAlpha"],mods:["noise","noiseAmt","noiseRange","noiseSpeed","useGravity","gravity","gravityMode","gravityMin","gravityMax","gravityDirection","gravityCurve","wind","windX","windY","windMode","windMin","windMax","windDirection","windCurve","forceField","forceStrength","forceRadius","forceCenterX","forceCenterY","forceFalloff","attraction","attractionCenterX","attractionCenterY","attractionRadius","attractionDuration","attractionDelay","attractionDelayMode","attractionPath","trail","trailConfigVersion","trailResources","trailResourceVersion","trailTexture","trailTextureName","trailPreviewUrl","trailColorMode","trailColor","trailColorGradient","trailAlphaMode","trailAlpha","trailAlphaCurve","trailBoneCount","trailLength","trailWidth","trailWidthMode","trailLifeLengthEnabled","trailLifeLengthCurve","trailShapeEnabled","trailShapeCurve","trailGridRows","trailGridCols","collision","collisionColliderIds","pathFollow","emitterFollow","emitterFollowMode","emitterFollowPathId","emitterFollowSpineId","emitterFollowBoneName","emitterFollowBoneOffsetX","emitterFollowBoneOffsetY","emitterFollowBoneRotation","emitterFollowBoneScaleX","emitterFollowBoneScaleY","emitterAngleMode","emitterFollowCurve","emitterFollowDuration","emitterFollowSpace","emitterFollowDirection","emitterFollowOffset","damping"]};function vs(ee){var bt;const me=(bt=O.value)==null?void 0:bt.config;if(ee==="export"){s.settings.exportSettings=ap();return}if(!me)return;const Ae=cl();for(const Pt of Fi[ee])me[Pt]=Ae[Pt]}function Vi(){e.value.fps=Math.min(240,Math.max(1,Math.round(Number(e.value.fps)||30)))}function Ti(ee){var me;s.selectSystem(((me=s.systems[ee])==null?void 0:me.id)??0)}function uo(){s.addSystem()}function Cl(){s.addCollider()}function Al(){s.addPath()}function wr(){s.addSpine()}function ha(){s.duplicateSelectedObject()}function Yi(ee,me,Ae=0,bt=0,Pt=0,ma=0){return{x:ee,y:me,inX:Ae,inY:bt,outX:Pt,outY:ma}}function ua(){const ee=we.value;if(!(!ee||!ee.preset))if(ee.preset==="circle"){const Ae=60.751328;ee.points=[Yi(110,0,0,-Ae,0,Ae),Yi(0,110,Ae,0,-Ae,0),Yi(-110,0,0,Ae,0,-Ae),Yi(0,-110,-Ae,0,Ae,0)],ee.closed=!0}else if(ee.preset==="square")ee.points=[Yi(-100,-100),Yi(100,-100),Yi(100,100),Yi(-100,100)],ee.closed=!0;else{const me=ee.preset==="star"?10:6;ee.points=Array.from({length:me},(Ae,bt)=>{const Pt=ee.preset==="star"&&bt%2?50:110,ma=-Math.PI*.5+bt/me*Math.PI*2;return Yi(Math.cos(ma)*Pt,Math.sin(ma)*Pt)}),ee.closed=!0}}function da(){we.value&&(we.value.points=[])}function El(){O.value&&(O.value.config.seed=Math.floor(Math.random()*999999)+1)}function Il(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;!me||ee==="direction"||(me.speedOverLifeMode=ee,ee==="curve"&&me.speedOverLifeMin===me.speedOverLifeMax&&(me.speedOverLifeMin=0,me.speedOverLifeMax=1))}function fo(){var me;const ee=(me=O.value)==null?void 0:me.config;!ee||ee.scaleOverLifeMode!=="curve"||(ee.scaleOverLifeMin===ee.scaleOverLifeMax&&(ee.scaleOverLifeMin=0,ee.scaleOverLifeMax=1),ee.scaleYOverLifeMin===ee.scaleYOverLifeMax&&(ee.scaleYOverLifeMin=0,ee.scaleYOverLifeMax=1))}function Rl(ee){var Ae;const me=(Ae=O.value)==null?void 0:Ae.config;!me||ee==="direction"||(me.scaleOverLifeMode=ee,fo())}const fa={point:{emissionAngleMode:"random",direction:0,spread:360},circle:{innerRadius:0,outerRadius:100,emissionAngleMode:"fixed",direction:-90,spread:0},rect:{innerRectW:0,innerRectH:0,outerRectW:200,outerRectH:100,emissionAngleMode:"fixed",direction:-90,spread:0},cone:{innerRadius:0,outerRadius:100,coneAngle:90,coneDirection:90,emissionAngleMode:"random",direction:90,spread:90},path:{spawnPathId:0,spawnPathDistribution:"fixed",emissionAngleMode:"fixed",direction:0,spread:0}};function Pl(){var Ae;const ee=(Ae=O.value)==null?void 0:Ae.config;if(!ee)return;const me=fa[ee.shape];me&&Object.assign(ee,me)}function du(){var me;const ee=(me=O.value)==null?void 0:me.config;!ee||ee.spawnPathId>0||(ee.emissionAngleMode==="path-normal"||ee.emissionAngleMode==="path-tangent")&&(ee.emissionAngleMode="fixed")}return{store:s,exportSettings:e,exportBusy:t,exportTarget:i,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:c,connectorReady:l,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g,configFileInput:v,selectedPreset:x,presetOptions:y,presetLoading:_,configMessage:C,configError:S,saveConfig:b,onConfigFileChange:M,refreshPresets:I,loadSelectedPreset:F,resolvedCurveEditorMode:E,sys:O,textureFileInput:D,sequenceFileInput:$,trailTextureFileInput:N,addTrailResource:U,openTrailTexturePicker:A,onTrailRigChange:P,onTrailResourceBoneCountChange:L,onTrailResourceRotationChange:B,onTrailTextureFile:X,resetTrailTexture:V,removeTrailResource:q,setTrailResourceWeight:W,toggleTrailResourceLock:ne,setTrailColor:re,commitTrailColor:le,addImageResource:ue,openTexturePicker:ae,openSequencePicker:xe,onTextureFile:Y,onSequenceFiles:j,resetTexture:H,setResourceFixedColor:G,commitResourceFixedColor:z,removeImageResource:ie,setResourceWeight:fe,toggleResourceLock:te,automaticLoopDuration:oe,loopDurationFrames:ce,activeObjectType:Ce,activeCollider:ye,activePath:we,activeSpine:Me,canCopyObject:ve,selectedSpineBone:Xe,boundSpineBone:pe,collisionPickerOpen:Ke,selectedCollisionBodies:Ze,availableCollisionBodies:Ct,addCollisionBody:Lt,removeCollisionBody:ii,collapsed:rs,toggle:zt,setEmitMode:se,setLoopDurationFrames:he,setStreamBehavior:at,setLoopSection:gt,setLoopSectionDuration:$e,setLoopCustomDuration:_i,onEmitterFollowModeChange:pi,bindSelectedBone:$t,resetModule:vs,normalizeExportFps:Vi,select:Ti,addSys:uo,addCollider:Cl,addPath:Al,addSpine:wr,copySelectedObject:ha,applyPathPreset:ua,clearPathAnchors:da,randomizeSeed:El,setSpeedOverLifeMode:Il,prepareScaleOverLifeCurve:fo,setScaleOverLifeMode:Rl,onShapeChange:Pl,onSpawnPathChange:du,LINEAR_CURVE:kF,FLAT_CURVE:cm,ALPHA_CURVE:FF,RESOURCE_ALPHA_CURVE:hm,TRAIL_ALPHA_CURVE:um,TRAIL_SHAPE_CURVE:dm}}const pS=Symbol("particle-panel");function BO(){const s=OO();return By(pS,s),s}function br(){const s=No(pS);if(!s)throw new Error("Particle panel sections require a ParticlePanel parent");return s}const LO={class:"group config-management"},DO={class:"caret"},NO={class:"group-body config-management-body"},UO={class:"config-toolbar"},$O=["disabled"],XO={value:""},VO=["value"],YO=Jt({__name:"ProjectConfigSection",setup(s){const{configFileInput:e,selectedPreset:t,presetOptions:i,presetLoading:n,configMessage:r,configError:o,saveConfig:a,onConfigFileChange:c,refreshPresets:l,loadSelectedPreset:h,collapsed:u,toggle:d,select:f}=br();return(p,m)=>(K(),Q("div",LO,[T("div",{class:"group-head",onClick:m[0]||(m[0]=g=>R(d)("config"))},[T("span",DO,_e(R(u).config?"▸":"▾"),1),m[8]||(m[8]=T("span",null,"配置管理",-1))]),de(T("div",NO,[T("div",UO,[T("button",{title:"保存全部编辑器配置 (Ctrl+S)",onClick:m[1]||(m[1]=(...g)=>R(a)&&R(a)(...g))},"保存配置"),T("button",{title:"加载本地编辑器配置",onClick:m[2]||(m[2]=g=>{var v;return(v=R(e))==null?void 0:v.click()})},"加载配置"),de(T("select",{"onUpdate:modelValue":m[3]||(m[3]=g=>jt(t)?t.value=g:null),"aria-label":"预设列表",disabled:!R(i).length||R(n),onPointerdown:m[4]||(m[4]=(...g)=>R(l)&&R(l)(...g)),onFocus:m[5]||(m[5]=(...g)=>R(l)&&R(l)(...g)),onChange:m[6]||(m[6]=(...g)=>R(h)&&R(h)(...g))},[T("option",XO,_e(R(i).length?"选择预设":"无预设文件"),1),(K(!0),Q(Fe,null,Dt(R(i),g=>(K(),Q("option",{key:g.file,value:g.file},_e(g.name),9,VO))),128))],40,$O),[[wt,R(t)]]),T("input",{ref_key:"configFileInput",ref:e,hidden:"",type:"file",accept:".json,application/json",onChange:m[7]||(m[7]=(...g)=>R(c)&&R(c)(...g))},null,544)]),R(r)?(K(),Q("div",{key:0,class:Le(["config-message",{error:R(o)}])},_e(R(r)),3)):Te("",!0)],512),[[vi,!R(u).config]])]))}}),GO=Qt(YO,[["__scopeId","data-v-7ab00fa9"]]),HO={class:"ns-label"},jO=["min","max","step","value","disabled"],WO=["min","max","step","value","disabled"],zO=Jt({__name:"NumSlider",props:{label:{},modelValue:{},min:{},max:{},step:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=Ge(String(t.modelValue));Xi(()=>t.modelValue,c=>{n.value=String(c)});function r(c){const l=parseFloat(c.target.value);Number.isNaN(l)||i("update:modelValue",l)}function o(c){n.value=c.target.value;const l=parseFloat(n.value);Number.isNaN(l)||i("update:modelValue",l)}function a(){const c=parseFloat(n.value);Number.isNaN(c)&&(n.value=String(t.modelValue))}return(c,l)=>(K(),Q("div",{class:Le(["ns",{disabled:s.disabled}])},[T("span",HO,_e(s.label),1),T("input",{type:"range",class:"ns-range",min:s.min,max:s.max,step:s.step,value:s.modelValue,disabled:s.disabled,onInput:r},null,40,jO),T("input",{type:"number",class:"ns-num",min:s.min,max:s.max,step:s.step,value:n.value,disabled:s.disabled,onInput:o,onBlur:a},null,40,WO)],2))}}),Be=Qt(zO,[["__scopeId","data-v-45669c72"]]),qO={class:"ce"},KO={class:"ce-editor"},ZO={class:"ce-grid"},JO=["x1","x2","y2"],QO=["y1","x2","y2"],eB=["x","y","width","height"],tB=["d"],iB={key:0,class:"ce-handles"},sB=["x1","y1","x2","y2"],nB=["cx","cy","onPointerdown"],rB=["x1","y1","x2","y2"],oB=["cx","cy","onPointerdown"],aB=["cx","cy"],lB=["cx","cy","onPointerdown","onDblclick"],cB={class:"ce-nav"},hB={class:"ce-tip"},Hn=8,uB=Jt({__name:"CurveEditor",props:{modelValue:{},defaultValue:{default:()=>[{x:0,y:0},{x:1,y:1}]},mode:{default:"linear"}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=Ge(null),r=Ge(300),o=Ge(110);let a=null;function c(){if(!n.value)return;const E=n.value.getBoundingClientRect();r.value=E.width,o.value=E.height}function l(E){return Hn+E*(r.value-Hn*2)}function h(E){return Hn+(1-E)*(o.value-Hn*2)}function u(){return[...t.modelValue].sort((E,k)=>E.x-k.x)}function d(E){i("update:modelValue",[...E].sort((k,O)=>k.x-O.x))}function f(){d(t.defaultValue.map(E=>({...E})))}const p=qe(()=>u());function m(E){const k=p.value[E],O=p.value[Math.max(0,E-1)];return{x:k.x-(k.x-O.x)/3,y:k.y-(k.y-O.y)/3}}function g(E){const k=p.value[E],O=p.value[Math.min(p.value.length-1,E+1)];return{x:k.x+(O.x-k.x)/3,y:k.y+(O.y-k.y)/3}}function v(E){const k=p.value[E],O=m(E);return{x:k.x+(k.inX??O.x-k.x),y:k.y+(k.inY??O.y-k.y)}}function x(E){const k=p.value[E],O=g(E);return{x:k.x+(k.outX??O.x-k.x),y:k.y+(k.outY??O.y-k.y)}}const y=qe(()=>{if(!p.value.length)return"";let E=`M ${l(p.value[0].x)} ${h(p.value[0].y)}`;for(let k=1;kMath.abs($.x-k)>.02);D.push({x:k,y:O}),d(D)}let b={t:0,i:-1,x:0,y:0};function M(E,k){E.stopPropagation();const O=u().findIndex(U=>Math.abs(U.x-p.value[k].x)<1e-6&&Math.abs(U.y-p.value[k].y)<1e-6);if(O<0)return;const D=Date.now();if(D-b.t<300&&b.i===k&&Math.abs(E.clientX-b.x)<8&&Math.abs(E.clientY-b.y)<8){b={t:0,i:-1,x:0,y:0},F(k);return}b={t:D,i:k,x:E.clientX,y:E.clientY};const $=U=>{(Math.abs(U.clientX-E.clientX)>8||Math.abs(U.clientY-E.clientY)>8)&&(b={t:0,i:-1,x:0,y:0});const{x:A,y:P}=_(U.clientX,U.clientY),L=u();L[O]={x:A,y:P},d(L)},N=()=>{window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",N)};window.addEventListener("pointermove",$),window.addEventListener("pointerup",N)}function I(E,k,O){E.stopPropagation();const D=N=>{const U=_(N.clientX,N.clientY),A=u(),P=A[k],L=O==="in"?A[Math.max(0,k-1)].x:P.x,B=O==="in"?P.x:A[Math.min(A.length-1,k+1)].x,X=Math.min(B,Math.max(L,U.x)),V=Math.round((X-P.x)*100)/100,q=Math.round((U.y-P.y)*100)/100;A[k]=O==="in"?{...P,inX:V,inY:q}:{...P,outX:V,outY:q},d(A)},$=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",$)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",$)}function F(E,k){k==null||k.stopPropagation();const O=u();O.length<=2||(C=Date.now(),d(O.filter((D,$)=>$!==E)))}return Vn(()=>{c(),a=new ResizeObserver(c),n.value&&a.observe(n.value)}),gl(()=>{a==null||a.disconnect()}),(E,k)=>(K(),Q("div",qO,[T("div",KO,[(K(),Q("svg",{ref_key:"svg",ref:n,class:"ce-svg",onDblclick:S},[T("g",ZO,[(K(),Q(Fe,null,Dt([.25,.5,.75],O=>T("line",{key:"v"+O,x1:l(O),y1:"0",x2:l(O),y2:h(0)},null,8,JO)),64)),(K(),Q(Fe,null,Dt([.25,.5,.75],O=>T("line",{key:"h"+O,x1:"0",y1:h(O),x2:l(1),y2:h(O)},null,8,QO)),64))]),T("rect",{x:l(0),y:h(1),width:l(1)-l(0),height:h(0)-h(1),class:"ce-frame",fill:"none"},null,8,eB),T("path",{d:y.value,class:"ce-line",fill:"none"},null,8,tB),s.mode==="bezier"?(K(),Q("g",iB,[(K(!0),Q(Fe,null,Dt(p.value,(O,D)=>(K(),Q(Fe,{key:"handles-"+D},[D>0?(K(),Q("line",{key:0,x1:l(O.x),y1:h(O.y),x2:l(v(D).x),y2:h(v(D).y)},null,8,sB)):Te("",!0),D>0?(K(),Q("circle",{key:1,cx:l(v(D).x),cy:h(v(D).y),r:"4",onPointerdown:$=>I($,D,"in")},null,40,nB)):Te("",!0),DI($,D,"out")},null,40,oB)):Te("",!0)],64))),128))])):Te("",!0),(K(!0),Q(Fe,null,Dt(p.value,(O,D)=>(K(),Q("g",{key:D},[T("circle",{cx:l(O.x),cy:h(O.y),r:"5",class:"ce-node"},null,8,aB),T("circle",{cx:l(O.x),cy:h(O.y),r:"9",class:"ce-hit",onPointerdown:$=>M($,D),onDblclick:$=>F(D,$)},null,40,lB)]))),128))],544)),T("div",cB,[T("span",hB,_e(s.mode==="bezier"?"拖动方形手柄调整弧度·双击空白新建·双击节点删除":"双击空白新建·双击节点删除·拖动节点调整"),1)])]),T("button",{class:"ce-reset",type:"button",title:"恢复默认曲线",onClick:f},"重置")]))}}),qs=Qt(uB,[["__scopeId","data-v-3c8d1b94"]]),dB={class:"spine-editor"},fB={class:"field wide"},mB={class:"grid three"},pB={class:"field"},gB={class:"field"},vB={class:"field"},yB={class:"grid three"},xB={class:"field"},bB={class:"field"},wB={class:"field"},SB=["disabled"],_B={class:"asset-row"},TB=["title"],MB={class:"asset-row"},CB=["title"],AB={class:"asset-row"},EB=["title"],IB={class:"asset-actions"},RB=["disabled"],PB={class:"runtime-note"},kB={key:0},FB={key:0,class:"error"},OB={class:"section-box"},BB={key:0,class:"empty"},LB={key:1,class:"field wide"},DB=["value"],NB={class:"section-box"},UB={class:"tree-title-row"},$B=["disabled","title"],XB={key:0,class:"empty"},VB={key:1,class:"bone-search"},YB={key:2,class:"empty"},GB={key:3,class:"bone-tree"},HB=["onClick","onKeydown"],jB=["title","onClick"],WB={key:1,class:"bone-leaf"},zB={class:"bone-name"},qB=Jt({__name:"SpineObjectPanel",props:{spineObject:{}},setup(s){const e=s,t=ao(),i=Ge(null),n=Ge(null),r=Ge(null),o=Ge(null),a=Ge(new Set),c=Ge(""),l=Ge(null),h=Ge(null),u=Ge([]);e.spineObject.selectedBone==null&&(e.spineObject.selectedBone=""),e.spineObject.sourceBundle==null&&(e.spineObject.sourceBundle=null),e.spineObject.dataVersion==null&&(e.spineObject.dataVersion="");const d=qe(()=>{var U;return((U=l.value)==null?void 0:U.name)||e.spineObject.skeletonFileName}),f=qe(()=>{var U;return((U=h.value)==null?void 0:U.name)||e.spineObject.atlasFileName}),p=qe(()=>u.value.length?u.value.map(U=>U.name):e.spineObject.textureFileNames),m=qe(()=>p.value.length?`${p.value.length} 张:${p.value.join(", ")}`:"PNG / JPEG / WebP..."),g=qe(()=>new Set(e.spineObject.bones.map(U=>U.parent).filter(U=>!!U))),v=qe(()=>new Map(e.spineObject.bones.map(U=>[U.name,U]))),x=qe(()=>e.spineObject.bones.filter(U=>{var L;const A=c.value.trim().toLocaleLowerCase();if(A)return U.name.toLocaleLowerCase().includes(A);let P=U.parent;for(;P;){if(a.value.has(P))return!1;P=((L=v.value.get(P))==null?void 0:L.parent)||null}return!0})),y=qe(()=>g.value.size>0&&[...g.value].every(U=>a.value.has(U)));function _(U){const A=e.spineObject.selectedBone===U;for(const P of t.spines)P.selectedBone="";A||(e.spineObject.selectedBone=U)}function C(U){a.value.has(U)?a.value.delete(U):a.value.add(U)}function S(){a.value=y.value?new Set:new Set(g.value)}function b(U){var A;return((A=U.target.files)==null?void 0:A[0])||null}function M(U){l.value=b(U)}function I(U){h.value=b(U)}function F(U){u.value=Array.from(U.target.files||[])}function E(U){return U.name.replace(/\.[^.]+$/,"").toLocaleLowerCase()}async function k(U){const A=Array.from(U.target.files||[]);if(!A.length)return;const P=A.filter(W=>/\.(json|skel)$/i.test(W.name)),L=A.filter(W=>/\.atlas$/i.test(W.name)),B=A.filter(W=>/\.(png|jpe?g|webp|wepb)$/i.test(W.name)),X=L.map(W=>({atlas:W,skeleton:P.find(ne=>E(ne)===E(W))})).find(W=>W.skeleton),V=(X==null?void 0:X.skeleton)||P[0]||null,q=(X==null?void 0:X.atlas)||L[0]||null;if(l.value=V,h.value=q,u.value=B,!V||!q||!B.length){const W=[!V&&"JSON / SKEL",!q&&"Atlas",!B.length&&"纹理图片"].filter(Boolean).join("、");e.spineObject.status="error",e.spineObject.error=`所选文件夹缺少:${W}`;return}await $()}function O(){t.recalcTotalFrames()}function D(){O(),t.timeline.frame=0}async function $(){var P;const U=l.value,A=h.value;if(!U||!A||!u.value.length){e.spineObject.status="error",e.spineObject.error="请依次选择 Spine 数据、Atlas 和全部纹理图片";return}e.spineObject.status="loading",e.spineObject.error="";try{const L=await rw(U,A,u.value);nu(e.spineObject.id,L),e.spineObject.skeletonFileName=U.name,e.spineObject.atlasFileName=A.name,e.spineObject.textureFileNames=u.value.map(B=>B.name),e.spineObject.dataVersion=L.dataVersion,e.spineObject.animations=L.animations,e.spineObject.bones=L.bones,e.spineObject.selectedBone="",c.value="",a.value=new Set,e.spineObject.selectedAnimation=((P=L.animations[0])==null?void 0:P.name)||"",e.spineObject.assetVersion++,e.spineObject.status="ready",O(),t.timeline.frame=0;try{e.spineObject.sourceBundle=await XP(U,A,u.value)}catch(B){e.spineObject.sourceBundle=null,console.warn("Spine 配置资源嵌入失败",B)}}catch(L){e.spineObject.status="error",e.spineObject.error=L instanceof Error?L.message:String(L)}}function N(){wl(e.spineObject.id),l.value=null,h.value=null,u.value=[],i.value&&(i.value.value=""),n.value&&(n.value.value=""),r.value&&(r.value.value=""),o.value&&(o.value.value=""),e.spineObject.skeletonFileName="",e.spineObject.atlasFileName="",e.spineObject.textureFileNames=[],e.spineObject.dataVersion="",e.spineObject.sourceBundle=null,e.spineObject.animations=[],e.spineObject.bones=[],e.spineObject.selectedBone="",c.value="",a.value=new Set,e.spineObject.selectedAnimation="",e.spineObject.assetVersion++,e.spineObject.status="empty",e.spineObject.error="",O()}return(U,A)=>(K(),Q("div",dB,[A[30]||(A[30]=T("div",{class:"editor-title"},"Spine 属性",-1)),T("label",fB,[A[15]||(A[15]=T("span",null,"Spine 名称",-1)),de(T("input",{"onUpdate:modelValue":A[0]||(A[0]=P=>s.spineObject.name=P)},null,512),[[He,s.spineObject.name]])]),T("div",mB,[T("label",pB,[A[16]||(A[16]=T("span",null,"X 位置",-1)),de(T("input",{"onUpdate:modelValue":A[1]||(A[1]=P=>s.spineObject.x=P),type:"number"},null,512),[[He,s.spineObject.x,void 0,{number:!0}]])]),T("label",gB,[A[17]||(A[17]=T("span",null,"Y 位置",-1)),de(T("input",{"onUpdate:modelValue":A[2]||(A[2]=P=>s.spineObject.y=P),type:"number"},null,512),[[He,s.spineObject.y,void 0,{number:!0}]])]),T("label",vB,[A[18]||(A[18]=T("span",null,"旋转",-1)),de(T("input",{"onUpdate:modelValue":A[3]||(A[3]=P=>s.spineObject.rotation=P),type:"number"},null,512),[[He,s.spineObject.rotation,void 0,{number:!0}]])])]),T("div",yB,[T("label",xB,[A[19]||(A[19]=T("span",null,"Scale X",-1)),de(T("input",{"onUpdate:modelValue":A[4]||(A[4]=P=>s.spineObject.scaleX=P),type:"number",step:"0.05"},null,512),[[He,s.spineObject.scaleX,void 0,{number:!0}]])]),T("label",bB,[A[20]||(A[20]=T("span",null,"Scale Y",-1)),de(T("input",{"onUpdate:modelValue":A[5]||(A[5]=P=>s.spineObject.scaleY=P),type:"number",step:"0.05"},null,512),[[He,s.spineObject.scaleY,void 0,{number:!0}]])]),T("label",wB,[A[21]||(A[21]=T("span",null,"开始时间",-1)),de(T("input",{"onUpdate:modelValue":A[6]||(A[6]=P=>s.spineObject.timeOffset=P),type:"number",min:"0",step:"0.033333",onChange:O},null,544),[[He,s.spineObject.timeOffset,void 0,{number:!0}]])])]),A[31]||(A[31]=T("div",{class:"divider"},null,-1)),A[32]||(A[32]=T("div",{class:"section-title"},"Spine 资源",-1)),T("input",{ref_key:"skeletonInput",ref:i,hidden:"",type:"file",accept:".json,.skel,application/json,application/octet-stream",onChange:M},null,544),T("input",{ref_key:"atlasInput",ref:n,hidden:"",type:"file",accept:".atlas,text/plain",onChange:I},null,544),T("input",{ref_key:"textureInput",ref:r,hidden:"",type:"file",multiple:"",accept:".png,.jpg,.jpeg,.webp,.wepb,image/png,image/jpeg,image/webp",onChange:F},null,544),T("input",{ref_key:"folderInput",ref:o,hidden:"",type:"file",multiple:"",webkitdirectory:"",directory:"",onChange:k},null,544),T("button",{class:"folder-select",disabled:s.spineObject.status==="loading",onClick:A[7]||(A[7]=P=>{var L;return(L=o.value)==null?void 0:L.click()})},"选择文件夹并加载",8,SB),A[33]||(A[33]=T("div",{class:"folder-hint"},"一次读取文件夹中的 JSON / SKEL、Atlas 和全部纹理;仍可在下方单独替换资源。",-1)),T("div",_B,[T("div",{class:"asset-name",title:d.value},_e(d.value||"JSON / SKEL..."),9,TB),T("button",{onClick:A[8]||(A[8]=P=>{var L;return(L=i.value)==null?void 0:L.click()})},"选择")]),T("div",MB,[T("div",{class:"asset-name",title:f.value},_e(f.value||"Atlas..."),9,CB),T("button",{onClick:A[9]||(A[9]=P=>{var L;return(L=n.value)==null?void 0:L.click()})},"选择")]),T("div",AB,[T("div",{class:"asset-name",title:p.value.join(", ")},_e(m.value),9,EB),T("button",{onClick:A[10]||(A[10]=P=>{var L;return(L=r.value)==null?void 0:L.click()})},"选择(多选)")]),T("div",IB,[T("button",{class:"load",disabled:s.spineObject.status==="loading",onClick:$},_e(s.spineObject.status==="loading"?"加载中…":"↧ 加载"),9,RB),T("button",{class:"clear",onClick:N},"清除")]),T("div",PB,[A[22]||(A[22]=At(" 支持 Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · 对应版本运行时按需加载 · 本地离线 ",-1)),s.spineObject.dataVersion?(K(),Q("span",kB," · 当前资源 "+_e(s.spineObject.dataVersion),1)):Te("",!0)]),s.spineObject.error?(K(),Q("div",FB,_e(s.spineObject.error),1)):Te("",!0),T("div",OB,[A[25]||(A[25]=T("div",{class:"section-title"},"Spine 动画",-1)),s.spineObject.animations.length?(K(),Q("label",LB,[A[24]||(A[24]=T("span",null,"时间轴播放动画",-1)),de(T("select",{"onUpdate:modelValue":A[11]||(A[11]=P=>s.spineObject.selectedAnimation=P),onChange:D},[A[23]||(A[23]=T("option",{value:""},"无",-1)),(K(!0),Q(Fe,null,Dt(s.spineObject.animations,P=>(K(),Q("option",{key:P.name,value:P.name},_e(P.name)+"("+_e(P.duration.toFixed(2))+"s) ",9,DB))),128))],544),[[wt,s.spineObject.selectedAnimation]])])):(K(),Q("div",BB,"无可用动画"))]),T("div",NB,[T("div",UB,[A[29]||(A[29]=T("div",{class:"section-title"},"层级树",-1)),T("button",{class:Le(["selected-bone",{active:s.spineObject.selectedBone}]),disabled:!s.spineObject.selectedBone,title:s.spineObject.selectedBone?"点击清除骨骼选择":"当前未选择骨骼",onClick:A[12]||(A[12]=P=>s.spineObject.selectedBone="")},[s.spineObject.selectedBone?(K(),Q(Fe,{key:0},[A[26]||(A[26]=At("清除选中骨骼:",-1)),T("strong",null,_e(s.spineObject.selectedBone),1)],64)):(K(),Q(Fe,{key:1},[A[27]||(A[27]=At("当前骨骼:",-1)),A[28]||(A[28]=T("strong",null,"未选择",-1))],64))],10,$B),s.spineObject.bones.length?(K(),Q("button",{key:0,class:"tree-action",onClick:S},_e(y.value?"全部展开":"全部折叠"),1)):Te("",!0)]),s.spineObject.bones.length?(K(),Q("div",VB,[de(T("input",{"onUpdate:modelValue":A[13]||(A[13]=P=>c.value=P),type:"search","aria-label":"搜索骨骼",placeholder:"搜索骨骼名称…"},null,512),[[He,c.value,void 0,{trim:!0}]]),c.value?(K(),Q("button",{key:0,title:"清空搜索","aria-label":"清空骨骼搜索",onClick:A[14]||(A[14]=P=>c.value="")},"✕")):Te("",!0)])):(K(),Q("div",XB,"未加载 Spine")),s.spineObject.bones.length&&!x.value.length?(K(),Q("div",YB,"未找到匹配的骨骼")):s.spineObject.bones.length?(K(),Q("div",GB,[(K(!0),Q(Fe,null,Dt(x.value,P=>(K(),Q("div",{key:P.name,class:Le(["bone",{selected:s.spineObject.selectedBone===P.name}]),style:di({paddingLeft:`${6+P.depth*16}px`}),role:"button",tabindex:"0",onClick:L=>_(P.name),onKeydown:zr(et(L=>_(P.name),["prevent"]),["enter"])},[g.value.has(P.name)?(K(),Q("button",{key:0,class:"bone-toggle",title:a.value.has(P.name)?"展开子骨骼":"折叠子骨骼",onClick:et(L=>C(P.name),["stop"])},_e(a.value.has(P.name)?"▸":"▾"),9,jB)):(K(),Q("span",WB,"•")),T("span",zB,_e(P.name),1)],46,HB))),128))])):Te("",!0)])]))}}),KB=Qt(qB,[["__scopeId","data-v-3af7b738"]]),ZB={class:"group"},JB={class:"caret"},QB={class:"scene-actions"},eL=["disabled"],tL={class:"group-body"},iL={class:"tree scene-tree"},sL=["onClick"],nL={class:"tlabel"},rL=["title","aria-label","onClick"],oL={viewBox:"0 0 24 24","aria-hidden":"true"},aL={key:0,class:"eye-slash",d:"M4 4l16 16"},lL=["onClick"],cL=["onClick"],hL={class:"tlabel"},uL=["title","aria-label","onClick"],dL={viewBox:"0 0 24 24","aria-hidden":"true"},fL={key:0,class:"eye-slash",d:"M4 4l16 16"},mL=["onClick"],pL=["onClick"],gL={class:"tlabel"},vL=["title","aria-label","onClick"],yL={viewBox:"0 0 24 24","aria-hidden":"true"},xL={key:0,class:"eye-slash",d:"M4 4l16 16"},bL=["onClick"],wL=["onClick"],SL={class:"tlabel"},_L=["title","aria-label","onClick"],TL={viewBox:"0 0 24 24","aria-hidden":"true"},ML={key:0,class:"eye-slash",d:"M4 4l16 16"},CL=["onClick"],AL={key:0,class:"empty"},EL={class:"row"},IL={class:"seed-row scene-seed"},RL={class:"field-block"},PL={class:"field-grid"},kL={class:"field-block"},FL={class:"field-block check-field"},OL={class:"field-grid"},BL={class:"compact-field"},LL={class:"compact-field"},DL={class:"field-grid"},NL={class:"compact-field"},UL={class:"compact-field"},$L={key:1,class:"field-grid"},XL={class:"compact-field"},VL={class:"compact-field"},YL={key:2,class:"field-grid"},GL={class:"compact-field"},HL={class:"compact-field"},jL={class:"field-block"},WL={key:4,class:"field-grid"},zL={class:"compact-field"},qL={class:"compact-field"},KL={class:"collider-follow-section"},ZL={class:"follow-path"},JL={class:"field-block"},QL=["value"],eD={class:"field-grid"},tD={class:"compact-field"},iD={class:"compact-field"},sD={class:"follow-path"},nD={class:"field-block"},rD={class:"field-grid"},oD={class:"compact-field"},aD={class:"compact-field"},lD={class:"field-grid"},cD={class:"compact-field"},hD={class:"compact-field"},uD={class:"setting-line"},dD={class:"setting-line"},fD={class:"field-block"},mD={key:4,class:"panel-hint"},pD=Jt({__name:"SceneObjectsSection",setup(s){const{store:e,resolvedCurveEditorMode:t,sys:i,activeObjectType:n,activeCollider:r,activePath:o,activeSpine:a,canCopyObject:c,collapsed:l,toggle:h,select:u,addSys:d,addCollider:f,addPath:p,addSpine:m,copySelectedObject:g,applyPathPreset:v,clearPathAnchors:x,randomizeSeed:y,LINEAR_CURVE:_}=br();return(C,S)=>(K(),Q("div",ZB,[T("div",{class:"group-head scene-head",onClick:S[5]||(S[5]=b=>R(h)("scene"))},[T("span",JB,_e(R(l).scene?"▸":"▾"),1),S[50]||(S[50]=T("span",null,"场景对象",-1)),T("div",QB,[T("button",{class:"scene-add",title:"添加粒子系统",onClick:S[0]||(S[0]=et((...b)=>R(d)&&R(d)(...b),["stop"]))},"+粒子"),T("button",{class:"scene-add",title:"添加碰撞体",onClick:S[1]||(S[1]=et((...b)=>R(f)&&R(f)(...b),["stop"]))},"+碰撞"),T("button",{class:"scene-add",title:"添加路径",onClick:S[2]||(S[2]=et((...b)=>R(p)&&R(p)(...b),["stop"]))},"+路径"),T("button",{class:"scene-add",title:"添加 Spine",onClick:S[3]||(S[3]=et((...b)=>R(m)&&R(m)(...b),["stop"]))},"+Spine"),T("button",{class:"scene-add",disabled:!R(c),title:"复制当前选中的场景对象",onClick:S[4]||(S[4]=et((...b)=>R(g)&&R(g)(...b),["stop"]))},"+Copy",8,eL)])]),de(T("div",tL,[T("div",iL,[(K(!0),Q(Fe,null,Dt(R(e).systems,(b,M)=>(K(),Q("div",{key:`particle-${b.id}`,class:Le(["tree-item scene-object-item",{on:R(n)==="particle"&&b.id===R(e).activeObjectId}]),onClick:I=>R(u)(M)},[S[53]||(S[53]=T("span",{class:"tdot"},"●",-1)),T("span",nL,_e(b.config.name||"ParticleSystem"+(M+1)),1),T("button",{class:Le(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示粒子系统":"隐藏粒子系统","aria-label":b.visible===!1?"显示粒子系统":"隐藏粒子系统",onClick:et(I=>b.visible=b.visible===!1,["stop"])},[(K(),Q("svg",oL,[S[51]||(S[51]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[52]||(S[52]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(K(),Q("path",aL)):Te("",!0)]))],10,rL),S[54]||(S[54]=T("span",{class:"scene-object-kind"},"粒子",-1)),T("button",{class:"scene-object-delete",title:"删除粒子系统",onClick:et(I=>R(e).removeSystem(b.id),["stop"])},"✕",8,lL)],10,sL))),128)),(K(!0),Q(Fe,null,Dt(R(e).colliders,b=>(K(),Q("div",{key:`collision-${b.id}`,class:Le(["tree-item scene-object-item",{on:R(n)==="collision"&&b.id===R(e).activeObjectId}]),onClick:M=>R(e).selectSceneObject("collision",b.id)},[S[57]||(S[57]=T("span",{class:"tdot collision-dot"},"■",-1)),T("span",hL,_e(b.name),1),T("button",{class:Le(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示碰撞体":"隐藏碰撞体","aria-label":b.visible===!1?"显示碰撞体":"隐藏碰撞体",onClick:et(M=>b.visible=b.visible===!1,["stop"])},[(K(),Q("svg",dL,[S[55]||(S[55]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[56]||(S[56]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(K(),Q("path",fL)):Te("",!0)]))],10,uL),S[58]||(S[58]=T("span",{class:"scene-object-kind"},"碰撞",-1)),T("button",{class:"scene-object-delete",title:"删除碰撞体",onClick:et(M=>R(e).removeCollider(b.id),["stop"])},"✕",8,mL)],10,cL))),128)),(K(!0),Q(Fe,null,Dt(R(e).paths,b=>(K(),Q("div",{key:`path-${b.id}`,class:Le(["tree-item scene-object-item",{on:R(n)==="path"&&b.id===R(e).activeObjectId}]),onClick:M=>R(e).selectSceneObject("path",b.id)},[S[61]||(S[61]=T("span",{class:"tdot path-dot"},"◇",-1)),T("span",gL,_e(b.name),1),T("button",{class:Le(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示路径":"隐藏路径","aria-label":b.visible===!1?"显示路径":"隐藏路径",onClick:et(M=>b.visible=b.visible===!1,["stop"])},[(K(),Q("svg",yL,[S[59]||(S[59]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[60]||(S[60]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(K(),Q("path",xL)):Te("",!0)]))],10,vL),S[62]||(S[62]=T("span",{class:"scene-object-kind"},"路径",-1)),T("button",{class:"scene-object-delete",title:"删除路径",onClick:et(M=>R(e).removePath(b.id),["stop"])},"✕",8,bL)],10,pL))),128)),(K(!0),Q(Fe,null,Dt(R(e).spines,b=>(K(),Q("div",{key:`spine-${b.id}`,class:Le(["tree-item scene-object-item",{on:R(n)==="spine"&&b.id===R(e).activeObjectId}]),onClick:M=>R(e).selectSceneObject("spine",b.id)},[S[65]||(S[65]=T("span",{class:"tdot spine-dot"},"◆",-1)),T("span",SL,_e(b.name),1),T("button",{class:Le(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示 Spine":"隐藏 Spine","aria-label":b.visible===!1?"显示 Spine":"隐藏 Spine",onClick:et(M=>b.visible=b.visible===!1,["stop"])},[(K(),Q("svg",TL,[S[63]||(S[63]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[64]||(S[64]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(K(),Q("path",ML)):Te("",!0)]))],10,_L),S[66]||(S[66]=T("span",{class:"scene-object-kind"},"Spine",-1)),T("button",{class:"scene-object-delete",title:"删除 Spine",onClick:et(M=>R(e).removeSpine(b.id),["stop"])},"✕",8,CL)],10,wL))),128)),!R(e).systems.length&&!R(e).colliders.length&&!R(e).paths.length&&!R(e).spines.length?(K(),Q("div",AL,"场景中暂无对象")):Te("",!0)]),R(n)==="particle"&&R(i)?(K(),Q(Fe,{key:0},[T("label",EL,[S[67]||(S[67]=T("span",null,"名称",-1)),de(T("input",{"onUpdate:modelValue":S[6]||(S[6]=b=>R(i).config.name=b),class:"inp"},null,512),[[He,R(i).config.name]])]),be(Be,{label:"位置X",min:-2e3,max:2e3,step:1,modelValue:R(i).config.centerX,"onUpdate:modelValue":S[7]||(S[7]=b=>R(i).config.centerX=b)},null,8,["modelValue"]),be(Be,{label:"位置Y",min:-2e3,max:2e3,step:1,modelValue:R(i).config.centerY,"onUpdate:modelValue":S[8]||(S[8]=b=>R(i).config.centerY=b)},null,8,["modelValue"]),be(Be,{label:"偏移X",min:-2e3,max:2e3,step:1,modelValue:R(i).config.offsetX,"onUpdate:modelValue":S[9]||(S[9]=b=>R(i).config.offsetX=b)},null,8,["modelValue"]),be(Be,{label:"偏移Y",min:-2e3,max:2e3,step:1,modelValue:R(i).config.offsetY,"onUpdate:modelValue":S[10]||(S[10]=b=>R(i).config.offsetY=b)},null,8,["modelValue"]),be(Be,{label:"旋转",min:-360,max:360,step:1,modelValue:R(i).config.rootRotation,"onUpdate:modelValue":S[11]||(S[11]=b=>R(i).config.rootRotation=b)},null,8,["modelValue"]),be(Be,{label:"缩放X",min:.05,max:10,step:.05,modelValue:R(i).config.rootScaleX,"onUpdate:modelValue":S[12]||(S[12]=b=>R(i).config.rootScaleX=b)},null,8,["modelValue"]),be(Be,{label:"缩放Y",min:.05,max:10,step:.05,modelValue:R(i).config.rootScaleY,"onUpdate:modelValue":S[13]||(S[13]=b=>R(i).config.rootScaleY=b)},null,8,["modelValue"]),T("div",IL,[S[68]||(S[68]=T("label",{for:"system-seed"},"随机种子",-1)),de(T("input",{id:"system-seed",class:"seed-input",type:"number",min:"0",step:"1","onUpdate:modelValue":S[14]||(S[14]=b=>R(i).config.seed=b),title:"控制粒子系统内全部随机属性、资源选择与修改器随机采样"},null,512),[[He,R(i).config.seed,void 0,{number:!0}]]),T("button",{class:"seed-random",title:"生成新的全局随机种子",onClick:S[15]||(S[15]=(...b)=>R(y)&&R(y)(...b))},"⚄")]),S[69]||(S[69]=T("div",{class:"seed-hint"},"控制初始随机参数、资源选择和修改器随机采样;相同种子可复现相同效果",-1))],64)):R(r)?(K(),Q(Fe,{key:1},[S[94]||(S[94]=T("div",{class:"object-editor-title"},"碰撞体属性",-1)),T("label",RL,[S[70]||(S[70]=T("span",null,"碰撞体名称",-1)),de(T("input",{"onUpdate:modelValue":S[16]||(S[16]=b=>R(r).name=b),class:"inp"},null,512),[[He,R(r).name]])]),T("div",PL,[T("label",kL,[S[72]||(S[72]=T("span",null,"类型",-1)),de(T("select",{"onUpdate:modelValue":S[17]||(S[17]=b=>R(r).shape=b),class:"inp"},[...S[71]||(S[71]=[es('',5)])],512),[[wt,R(r).shape]])]),T("label",FL,[S[73]||(S[73]=T("span",null,"启用",-1)),de(T("input",{"onUpdate:modelValue":S[18]||(S[18]=b=>R(r).enabled=b),type:"checkbox"},null,512),[[Et,R(r).enabled]])])]),T("div",OL,[T("label",BL,[S[74]||(S[74]=T("span",null,"X 位置",-1)),de(T("input",{"onUpdate:modelValue":S[19]||(S[19]=b=>R(r).x=b),type:"number",class:"inp"},null,512),[[He,R(r).x,void 0,{number:!0}]])]),T("label",LL,[S[75]||(S[75]=T("span",null,"Y 位置",-1)),de(T("input",{"onUpdate:modelValue":S[20]||(S[20]=b=>R(r).y=b),type:"number",class:"inp"},null,512),[[He,R(r).y,void 0,{number:!0}]])])]),be(Be,{label:"旋转",min:-360,max:360,step:1,modelValue:R(r).rotation,"onUpdate:modelValue":S[21]||(S[21]=b=>R(r).rotation=b)},null,8,["modelValue"]),T("div",DL,[T("label",NL,[S[76]||(S[76]=T("span",null,"缩放 X",-1)),de(T("input",{"onUpdate:modelValue":S[22]||(S[22]=b=>R(r).scaleX=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(r).scaleX,void 0,{number:!0}]])]),T("label",UL,[S[77]||(S[77]=T("span",null,"缩放 Y",-1)),de(T("input",{"onUpdate:modelValue":S[23]||(S[23]=b=>R(r).scaleY=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(r).scaleY,void 0,{number:!0}]])])]),R(r).shape==="circle"?(K(),Mt(Be,{key:0,label:"半径",min:1,max:1e3,step:1,modelValue:R(r).radius,"onUpdate:modelValue":S[24]||(S[24]=b=>R(r).radius=b)},null,8,["modelValue"])):R(r).shape==="ellipse"?(K(),Q("div",$L,[T("label",XL,[S[78]||(S[78]=T("span",null,"X 半径",-1)),de(T("input",{"onUpdate:modelValue":S[25]||(S[25]=b=>R(r).radiusX=b),type:"number",min:"1",class:"inp"},null,512),[[He,R(r).radiusX,void 0,{number:!0}]])]),T("label",VL,[S[79]||(S[79]=T("span",null,"Y 半径",-1)),de(T("input",{"onUpdate:modelValue":S[26]||(S[26]=b=>R(r).radiusY=b),type:"number",min:"1",class:"inp"},null,512),[[He,R(r).radiusY,void 0,{number:!0}]])])])):(K(),Q("div",YL,[T("label",GL,[S[80]||(S[80]=T("span",null,"宽度",-1)),de(T("input",{"onUpdate:modelValue":S[27]||(S[27]=b=>R(r).width=b),type:"number",min:"1",class:"inp"},null,512),[[He,R(r).width,void 0,{number:!0}]])]),T("label",HL,[S[81]||(S[81]=T("span",null,"高度",-1)),de(T("input",{"onUpdate:modelValue":S[28]||(S[28]=b=>R(r).height=b),type:"number",min:"1",class:"inp"},null,512),[[He,R(r).height,void 0,{number:!0}]])])])),R(r).shape==="polygon"||R(r).shape==="custom"?(K(),Mt(Be,{key:3,label:"边数",min:3,max:16,step:1,modelValue:R(r).sides,"onUpdate:modelValue":S[29]||(S[29]=b=>R(r).sides=b)},null,8,["modelValue"])):Te("",!0),T("label",jL,[S[83]||(S[83]=T("span",null,"碰撞响应",-1)),de(T("select",{"onUpdate:modelValue":S[30]||(S[30]=b=>R(r).response=b),class:"inp"},[...S[82]||(S[82]=[T("option",{value:"physics"},"物理(弹跳/摩擦)",-1),T("option",{value:"pause"},"暂停(停止不动)",-1),T("option",{value:"destroy"},"消失(立即销毁)",-1)])],512),[[wt,R(r).response]])]),R(r).response==="physics"?(K(),Q("div",WL,[T("label",zL,[S[84]||(S[84]=T("span",null,"弹性 (0-1)",-1)),de(T("input",{"onUpdate:modelValue":S[31]||(S[31]=b=>R(r).elasticity=b),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[He,R(r).elasticity,void 0,{number:!0}]])]),T("label",qL,[S[85]||(S[85]=T("span",null,"摩擦 (0-1)",-1)),de(T("input",{"onUpdate:modelValue":S[32]||(S[32]=b=>R(r).friction=b),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[He,R(r).friction,void 0,{number:!0}]])])])):Te("",!0),T("div",KL,[T("label",ZL,[de(T("input",{"onUpdate:modelValue":S[33]||(S[33]=b=>R(r).followPath=b),type:"checkbox"},null,512),[[Et,R(r).followPath]]),S[86]||(S[86]=At("跟随路径移动",-1))]),R(r).followPath?(K(),Q(Fe,{key:0},[T("label",JL,[S[88]||(S[88]=T("span",null,"目标路径",-1)),de(T("select",{"onUpdate:modelValue":S[34]||(S[34]=b=>R(r).followPathId=b),class:"inp"},[S[87]||(S[87]=T("option",{value:0},"(未选择)",-1)),(K(!0),Q(Fe,null,Dt(R(e).paths,b=>(K(),Q("option",{key:b.id,value:b.id},_e(b.name),9,QL))),128))],512),[[wt,R(r).followPathId,void 0,{number:!0}]])]),T("div",eD,[T("label",tD,[S[89]||(S[89]=T("span",null,"移动时长(秒)",-1)),de(T("input",{"onUpdate:modelValue":S[35]||(S[35]=b=>R(r).followDuration=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(r).followDuration,void 0,{number:!0}]])]),T("label",iD,[S[91]||(S[91]=T("span",null,"曲线模式",-1)),de(T("select",{"onUpdate:modelValue":S[36]||(S[36]=b=>R(r).followCurveMode=b),class:"inp"},[...S[90]||(S[90]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[wt,R(r).followCurveMode]])])]),T("label",sD,[de(T("input",{"onUpdate:modelValue":S[37]||(S[37]=b=>R(r).followPathRotation=b),type:"checkbox"},null,512),[[Et,R(r).followPathRotation]]),S[92]||(S[92]=At("方向沿路径",-1))]),S[93]||(S[93]=T("div",{class:"collider-curve-title"},[At("移动进度曲线 "),T("small",null,"横轴:实时/移动时长 纵轴:路径进度(0=起点 → 1=终点)")],-1)),be(qs,{"model-value":R(r).followCurve||R(_),"default-value":R(_),mode:R(t)(R(r).followCurveMode),"onUpdate:modelValue":S[38]||(S[38]=b=>R(r).followCurve=b)},null,8,["model-value","default-value","mode"])],64)):Te("",!0)])],64)):R(o)?(K(),Q(Fe,{key:2},[S[104]||(S[104]=T("div",{class:"object-editor-title"},"路径属性",-1)),T("label",nD,[S[95]||(S[95]=T("span",null,"路径名称",-1)),de(T("input",{"onUpdate:modelValue":S[39]||(S[39]=b=>R(o).name=b),class:"inp"},null,512),[[He,R(o).name]])]),T("div",rD,[T("label",oD,[S[96]||(S[96]=T("span",null,"X 位置",-1)),de(T("input",{"onUpdate:modelValue":S[40]||(S[40]=b=>R(o).x=b),type:"number",class:"inp"},null,512),[[He,R(o).x,void 0,{number:!0}]])]),T("label",aD,[S[97]||(S[97]=T("span",null,"Y 位置",-1)),de(T("input",{"onUpdate:modelValue":S[41]||(S[41]=b=>R(o).y=b),type:"number",class:"inp"},null,512),[[He,R(o).y,void 0,{number:!0}]])])]),be(Be,{label:"旋转",min:-360,max:360,step:1,modelValue:R(o).rotation,"onUpdate:modelValue":S[42]||(S[42]=b=>R(o).rotation=b)},null,8,["modelValue"]),T("div",lD,[T("label",cD,[S[98]||(S[98]=T("span",null,"缩放 X",-1)),de(T("input",{"onUpdate:modelValue":S[43]||(S[43]=b=>R(o).scaleX=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(o).scaleX,void 0,{number:!0}]])]),T("label",hD,[S[99]||(S[99]=T("span",null,"缩放 Y",-1)),de(T("input",{"onUpdate:modelValue":S[44]||(S[44]=b=>R(o).scaleY=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(o).scaleY,void 0,{number:!0}]])])]),T("label",uD,[S[100]||(S[100]=T("span",null,"闭合路径",-1)),de(T("input",{"onUpdate:modelValue":S[45]||(S[45]=b=>R(o).closed=b),type:"checkbox"},null,512),[[Et,R(o).closed]])]),T("label",dD,[S[101]||(S[101]=T("span",null,"路径颜色",-1)),de(T("input",{"onUpdate:modelValue":S[46]||(S[46]=b=>R(o).color=b),type:"color",class:"path-color"},null,512),[[He,R(o).color]])]),S[105]||(S[105]=es('
操作说明:
  • 双击空白处/曲线:新建锚点
  • 双击锚点:删除节点
  • 双击第二下按住拖动:新建并拉出手柄
  • 拖动锚点移动位置,拖动手柄调整曲线
  • Shift+拖动手柄:两侧完全对称
  • Alt+拖动手柄:独立控制单侧
  • Ctrl+点击/框选:加选节点
  • Alt+点击/框选:减选节点
  • Alt+单击空白处:清除全部选中
  • 选中多个节点后可整体拖动
',1)),T("label",fD,[S[103]||(S[103]=T("span",null,"应用预设形状",-1)),de(T("select",{"onUpdate:modelValue":S[47]||(S[47]=b=>R(o).preset=b),class:"inp"},[...S[102]||(S[102]=[es('',5)])],512),[[wt,R(o).preset]])]),T("button",{class:"path-action primary",onClick:S[48]||(S[48]=(...b)=>R(v)&&R(v)(...b))},"应用预设"),T("button",{class:"path-action",onClick:S[49]||(S[49]=(...b)=>R(x)&&R(x)(...b))},"清空锚点")],64)):R(a)?(K(),Mt(KB,{key:3,"spine-object":R(a)},null,8,["spine-object"])):(K(),Q("div",mD,"使用右上角按钮创建场景对象"))],512),[[vi,!R(l).scene]])]))}}),gD=Qt(pD,[["__scopeId","data-v-f97ddd48"]]),vD={class:"group"},yD={class:"caret"},xD={class:"group-body"},bD={class:"segs"},wD={class:"segs stream-behavior-segs"},SD={key:2,class:"stream-loop-options"},_D={class:"loop-section-row"},TD={class:"switch-row"},MD=["checked"],CD={key:0,class:"loop-duration-control"},AD={class:"switch-row loop-duration-toggle"},ED=["checked"],ID={class:"loop-section-duration"},RD=["value"],PD={key:1},kD={key:2,class:"loop-auto-duration"},FD={class:"loop-section-row"},OD={class:"switch-row"},BD=["checked"],LD={key:0,class:"loop-duration-control"},DD={class:"switch-row loop-duration-toggle"},ND=["checked"],UD={class:"loop-section-duration"},$D=["value"],XD={key:1},VD={key:2,class:"loop-auto-duration"},YD={key:3,class:"modifier-hint stream-loop-hint"},GD={class:"group"},HD={class:"caret"},jD={class:"group-body"},WD={class:"row"},zD={class:"row"},qD=["value","disabled"],KD={key:0,class:"row"},ZD={class:"row"},JD={key:0,value:"radial"},QD={key:1,value:"path-normal"},eN={key:2,value:"path-tangent"},tN=Jt({__name:"EmissionSection",setup(s){const{store:e,sys:t,automaticLoopDuration:i,loopDurationFrames:n,collapsed:r,toggle:o,setEmitMode:a,setLoopDurationFrames:c,setStreamBehavior:l,setLoopSection:h,setLoopSectionDuration:u,setLoopCustomDuration:d,resetModule:f,select:p,onShapeChange:m,onSpawnPathChange:g}=br();return(v,x)=>(K(),Q(Fe,null,[T("div",vD,[T("div",{class:"group-head",onClick:x[1]||(x[1]=y=>R(o)("emitMode"))},[T("span",yD,_e(R(r).emitMode?"▸":"▾"),1),x[35]||(x[35]=T("span",null,"发射模式",-1)),T("button",{class:"group-reset",title:"重置发射模式参数",onClick:x[0]||(x[0]=et(y=>R(f)("emitMode"),["stop"]))},"重置")]),de(T("div",xD,[T("div",bD,[T("button",{class:Le(["seg",{on:R(t).config.mode==="stream"}]),onClick:x[2]||(x[2]=y=>R(a)("stream"))},"持续",2),T("button",{class:Le(["seg",{on:R(t).config.mode==="burst"}]),onClick:x[3]||(x[3]=y=>R(a)("burst"))},"爆发",2)]),R(t).config.mode==="stream"?(K(),Q(Fe,{key:0},[T("div",wD,[T("button",{class:Le(["seg",{on:R(t).config.streamBehavior==="normal"}]),onClick:x[4]||(x[4]=y=>R(l)("normal"))},"常规持续",2),T("button",{class:Le(["seg",{on:R(t).config.streamBehavior==="loop"}]),onClick:x[5]||(x[5]=y=>R(l)("loop"))},"循环持续",2)]),be(Be,{label:"发射速率",min:1,max:300,step:1,modelValue:R(t).config.rate,"onUpdate:modelValue":x[6]||(x[6]=y=>R(t).config.rate=y)},null,8,["modelValue"]),R(t).config.streamBehavior==="normal"?(K(),Mt(Be,{key:0,label:"发射时长",min:1/30,max:60,step:1/30,modelValue:R(t).config.duration,"onUpdate:modelValue":x[7]||(x[7]=y=>R(t).config.duration=y)},null,8,["modelValue"])):(K(),Mt(Be,{key:1,label:"发射时长 (f)",min:1,max:1800,step:1,"model-value":R(n),"onUpdate:modelValue":R(c)},null,8,["model-value","onUpdate:modelValue"])),R(t).config.streamBehavior==="loop"?(K(),Q("div",SD,[T("div",_D,[T("label",TD,[T("input",{type:"checkbox",checked:R(t).config.generateLoopStartAnimation,onChange:x[8]||(x[8]=y=>R(h)("start",y))},null,40,MD),x[36]||(x[36]=T("span",{class:"switch-ui"},null,-1)),x[37]||(x[37]=T("span",null,"生成开始循环动画",-1))]),R(t).config.generateLoopStartAnimation?(K(),Q("div",CD,[T("label",AD,[T("input",{type:"checkbox",checked:R(t).config.loopStartUseCustomDuration,onChange:x[9]||(x[9]=y=>R(d)("start",y))},null,40,ED),x[38]||(x[38]=T("span",{class:"switch-ui"},null,-1)),x[39]||(x[39]=T("span",null,"指定时长",-1))]),T("label",ID,[R(t).config.loopStartUseCustomDuration?(K(),Q("input",{key:0,value:R(t).config.loopStartDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"开始循环段时长",onChange:x[10]||(x[10]=y=>R(u)("start",y))},null,40,RD)):Te("",!0),R(t).config.loopStartUseCustomDuration?(K(),Q("span",PD,"f")):(K(),Q("span",kD,"自动 "+_e(R(i))+"f",1))])])):Te("",!0)]),T("div",FD,[T("label",OD,[T("input",{type:"checkbox",checked:R(t).config.generateLoopEndAnimation,onChange:x[11]||(x[11]=y=>R(h)("end",y))},null,40,BD),x[40]||(x[40]=T("span",{class:"switch-ui"},null,-1)),x[41]||(x[41]=T("span",null,"生成结束循环动画",-1))]),R(t).config.generateLoopEndAnimation?(K(),Q("div",LD,[T("label",DD,[T("input",{type:"checkbox",checked:R(t).config.loopEndUseCustomDuration,onChange:x[12]||(x[12]=y=>R(d)("end",y))},null,40,ND),x[42]||(x[42]=T("span",{class:"switch-ui"},null,-1)),x[43]||(x[43]=T("span",null,"指定时长",-1))]),T("label",UD,[R(t).config.loopEndUseCustomDuration?(K(),Q("input",{key:0,value:R(t).config.loopEndDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"结束循环段时长",onChange:x[13]||(x[13]=y=>R(u)("end",y))},null,40,$D)):Te("",!0),R(t).config.loopEndUseCustomDuration?(K(),Q("span",XD,"f")):(K(),Q("span",VD,"自动 "+_e(R(i))+"f",1))])])):Te("",!0)])])):Te("",!0),R(t).config.streamBehavior==="loop"?(K(),Q("div",YD,"循环持续模式不支持骨骼跟随和路径跟随;进入或退出时会将粒子跟随设置恢复默认值。")):Te("",!0)],64)):(K(),Mt(Be,{key:1,label:"单次数量",min:1,max:1e3,step:1,modelValue:R(t).config.burstCount,"onUpdate:modelValue":x[14]||(x[14]=y=>R(t).config.burstCount=y)},null,8,["modelValue"])),be(Be,{label:"延迟时间",min:0,max:5,step:.1,modelValue:R(t).config.delay,"onUpdate:modelValue":x[15]||(x[15]=y=>R(t).config.delay=y)},null,8,["modelValue"])],512),[[vi,!R(r).emitMode]])]),T("div",GD,[T("div",{class:"group-head",onClick:x[17]||(x[17]=y=>R(o)("shape"))},[T("span",HD,_e(R(r).shape?"▸":"▾"),1),x[44]||(x[44]=T("span",null,"发射器形状",-1)),T("button",{class:"group-reset",title:"重置发射器形状参数",onClick:x[16]||(x[16]=et(y=>R(f)("shape"),["stop"]))},"重置")]),de(T("div",jD,[T("label",WD,[x[46]||(x[46]=T("span",null,"形状",-1)),de(T("select",{"onUpdate:modelValue":x[18]||(x[18]=y=>R(t).config.shape=y),class:"inp",onChange:x[19]||(x[19]=(...y)=>R(m)&&R(m)(...y))},[...x[45]||(x[45]=[es('',5)])],544),[[wt,R(t).config.shape]])]),R(t).config.shape==="circle"||R(t).config.shape==="cone"?(K(),Q(Fe,{key:0},[be(Be,{label:R(t).config.shape==="cone"?"内径":"内半径",min:0,max:R(t).config.outerRadius,step:1,modelValue:R(t).config.innerRadius,"onUpdate:modelValue":x[20]||(x[20]=y=>R(t).config.innerRadius=y)},null,8,["label","max","modelValue"]),be(Be,{label:R(t).config.shape==="cone"?"外径":"外半径",min:R(t).config.innerRadius,max:300,step:1,modelValue:R(t).config.outerRadius,"onUpdate:modelValue":x[21]||(x[21]=y=>R(t).config.outerRadius=y)},null,8,["label","min","modelValue"])],64)):Te("",!0),R(t).config.shape==="cone"?(K(),Q(Fe,{key:1},[be(Be,{label:"锥形朝向",min:-360,max:360,step:1,modelValue:R(t).config.coneDirection,"onUpdate:modelValue":x[22]||(x[22]=y=>R(t).config.coneDirection=y)},null,8,["modelValue"]),be(Be,{label:"锥形开口角度",min:1,max:360,step:1,modelValue:R(t).config.coneAngle,"onUpdate:modelValue":x[23]||(x[23]=y=>R(t).config.coneAngle=y)},null,8,["modelValue"])],64)):R(t).config.shape==="rect"?(K(),Q(Fe,{key:2},[be(Be,{label:"内宽",min:0,max:R(t).config.outerRectW,step:1,modelValue:R(t).config.innerRectW,"onUpdate:modelValue":x[24]||(x[24]=y=>R(t).config.innerRectW=y)},null,8,["max","modelValue"]),be(Be,{label:"内高",min:0,max:R(t).config.outerRectH,step:1,modelValue:R(t).config.innerRectH,"onUpdate:modelValue":x[25]||(x[25]=y=>R(t).config.innerRectH=y)},null,8,["max","modelValue"]),be(Be,{label:"外宽",min:R(t).config.innerRectW,max:400,step:1,modelValue:R(t).config.outerRectW,"onUpdate:modelValue":x[26]||(x[26]=y=>R(t).config.outerRectW=y)},null,8,["min","modelValue"]),be(Be,{label:"外高",min:R(t).config.innerRectH,max:400,step:1,modelValue:R(t).config.outerRectH,"onUpdate:modelValue":x[27]||(x[27]=y=>R(t).config.outerRectH=y)},null,8,["min","modelValue"])],64)):R(t).config.shape==="path"?(K(),Q(Fe,{key:3},[T("label",zD,[x[48]||(x[48]=T("span",null,"选择路径",-1)),de(T("select",{"onUpdate:modelValue":x[28]||(x[28]=y=>R(t).config.spawnPathId=y),class:"inp",onChange:x[29]||(x[29]=(...y)=>R(g)&&R(g)(...y))},[x[47]||(x[47]=T("option",{value:0},"无路径(点发射)",-1)),(K(!0),Q(Fe,null,Dt(R(e).paths,y=>(K(),Q("option",{key:y.id,value:y.id,disabled:!y.enabled},_e(y.name),9,qD))),128))],544),[[wt,R(t).config.spawnPathId,void 0,{number:!0}]])]),R(t).config.spawnPathId>0?(K(),Q("label",KD,[x[50]||(x[50]=T("span",null,"出生分布",-1)),de(T("select",{"onUpdate:modelValue":x[30]||(x[30]=y=>R(t).config.spawnPathDistribution=y),class:"inp"},[...x[49]||(x[49]=[T("option",{value:"fixed"},"等间距固定分布",-1),T("option",{value:"random"},"随机分布",-1)])],512),[[wt,R(t).config.spawnPathDistribution]])])):Te("",!0)],64)):Te("",!0),x[54]||(x[54]=T("div",{class:"divider"},null,-1)),T("label",ZD,[x[53]||(x[53]=T("span",null,"发射角度",-1)),de(T("select",{"onUpdate:modelValue":x[31]||(x[31]=y=>R(t).config.emissionAngleMode=y),class:"inp"},[x[51]||(x[51]=T("option",{value:"fixed"},"固定",-1)),x[52]||(x[52]=T("option",{value:"random"},"随机",-1)),R(t).config.shape==="circle"||R(t).config.shape==="rect"||R(t).config.shape==="cone"?(K(),Q("option",JD,"径向(中心向外)")):Te("",!0),R(t).config.shape==="path"&&R(t).config.spawnPathId>0?(K(),Q("option",QD,"垂直于路径")):Te("",!0),R(t).config.shape==="path"&&R(t).config.spawnPathId>0?(K(),Q("option",eN,"沿路径方向")):Te("",!0)],512),[[wt,R(t).config.emissionAngleMode]])]),R(t).config.emissionAngleMode==="fixed"?(K(),Mt(Be,{key:4,label:"固定角度",min:-360,max:360,step:1,modelValue:R(t).config.direction,"onUpdate:modelValue":x[32]||(x[32]=y=>R(t).config.direction=y)},null,8,["modelValue"])):R(t).config.emissionAngleMode==="random"?(K(),Q(Fe,{key:5},[be(Be,{label:"基准角度",min:-360,max:360,step:1,modelValue:R(t).config.direction,"onUpdate:modelValue":x[33]||(x[33]=y=>R(t).config.direction=y)},null,8,["modelValue"]),be(Be,{label:"随机范围",min:0,max:360,step:1,modelValue:R(t).config.spread,"onUpdate:modelValue":x[34]||(x[34]=y=>R(t).config.spread=y)},null,8,["modelValue"])],64)):Te("",!0)],512),[[vi,!R(r).shape]])])],64))}}),iN=Qt(tN,[["__scopeId","data-v-fcf44933"]]),sN={class:"pac"},nN={class:"pac-head"},rN={class:"pac-label"},oN={key:0,class:"pac-modes"},aN=["onClick"],lN={class:"pac-range"},cN={class:"pac-curve"},hN={class:"pac-axis"},uN=Jt({__name:"ParticleAttributeControl",props:{label:{},mode:{},valueMin:{},valueMax:{},curve:{},defaultCurve:{default:()=>[{x:0,y:0},{x:1,y:1}]},min:{},max:{},step:{default:1},allowDirection:{type:Boolean,default:!1},allowCurve:{type:Boolean,default:!0},showModes:{type:Boolean,default:!0},curveLabel:{default:"曲线输入 →"}},emits:["update:mode","update:valueMin","update:valueMax","update:curve"],setup(s){const e=s,t=qe(()=>{const i=[{label:"固定",value:"fixed"},{label:"随机",value:"random"}];return e.allowCurve&&i.push({label:"曲线",value:"curve"}),e.allowDirection&&i.push({label:"发射方向",value:"direction"}),i});return(i,n)=>(K(),Q("div",sN,[T("div",nN,[T("span",rN,_e(s.label),1),s.showModes?(K(),Q("div",oN,[(K(!0),Q(Fe,null,Dt(t.value,r=>(K(),Q("button",{key:r.value,class:Le(["pac-mode",{on:s.mode===r.value}]),onClick:o=>i.$emit("update:mode",r.value)},_e(r.label),11,aN))),128))])):Te("",!0)]),s.mode==="fixed"||s.mode==="direction"?(K(),Mt(Be,{key:0,label:s.mode==="direction"?"角度偏移":"数值",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[0]||(n[0]=r=>i.$emit("update:valueMin",r))},null,8,["label","min","max","step","model-value"])):s.mode==="random"?(K(),Q(Fe,{key:1},[be(Be,{label:"下限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[1]||(n[1]=r=>i.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),be(Be,{label:"上限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMax,"onUpdate:modelValue":n[2]||(n[2]=r=>i.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])],64)):(K(),Q(Fe,{key:2},[T("div",lN,[be(Be,{label:"范围下限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMin,"onUpdate:modelValue":n[3]||(n[3]=r=>i.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),be(Be,{label:"范围上限",min:s.min,max:s.max,step:s.step,"model-value":s.valueMax,"onUpdate:modelValue":n[4]||(n[4]=r=>i.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])]),T("div",cN,[be(qs,{"model-value":s.curve,"default-value":s.defaultCurve,"onUpdate:modelValue":n[5]||(n[5]=r=>i.$emit("update:curve",r))},null,8,["model-value","default-value"]),T("div",hN,[n[6]||(n[6]=T("span",null,"0",-1)),T("span",null,_e(s.curveLabel),1),n[7]||(n[7]=T("span",null,"1",-1))])])],64))]))}}),mn=Qt(uN,[["__scopeId","data-v-7a931847"]]),dN={class:"group"},fN={class:"caret"},mN={class:"group-body attr-body"},pN={class:"attr-axis-head"},gN={class:"axis-modes"},vN={class:"life-item"},yN={class:"switch-row"},xN={class:"life-item"},bN={class:"switch-row"},wN={class:"axis-modes life-axis"},SN={class:"life-item"},_N={class:"switch-row"},TN=Jt({__name:"ParticleAttributesSection",setup(s){const{sys:e,collapsed:t,toggle:i,resetModule:n,setSpeedOverLifeMode:r,prepareScaleOverLifeCurve:o,setScaleOverLifeMode:a,LINEAR_CURVE:c,FLAT_CURVE:l}=br();return(h,u)=>(K(),Q("div",dN,[T("div",{class:"group-head",onClick:u[1]||(u[1]=d=>R(i)("attr"))},[T("span",fN,_e(R(t).attr?"▸":"▾"),1),u[44]||(u[44]=T("span",null,"粒子属性",-1)),T("button",{class:"group-reset",title:"重置粒子属性参数",onClick:u[0]||(u[0]=et(d=>R(n)("attr"),["stop"]))},"重置")]),de(T("div",mN,[u[52]||(u[52]=T("div",{class:"attr-section-title"},"粒子初始参数",-1)),be(mn,{label:"初始生命周期","allow-curve":!1,mode:R(e).config.lifeMode,"onUpdate:mode":u[2]||(u[2]=d=>R(e).config.lifeMode=d),"value-min":R(e).config.lifeMin,"onUpdate:valueMin":u[3]||(u[3]=d=>R(e).config.lifeMin=d),"value-max":R(e).config.lifeMax,"onUpdate:valueMax":u[4]||(u[4]=d=>R(e).config.lifeMax=d),curve:R(e).config.lifeCurve,"onUpdate:curve":u[5]||(u[5]=d=>R(e).config.lifeCurve=d),min:.1,max:10,step:.1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),be(mn,{label:"初始速度","allow-curve":!1,mode:R(e).config.speedMode,"onUpdate:mode":u[6]||(u[6]=d=>R(e).config.speedMode=d),"value-min":R(e).config.speedMin,"onUpdate:valueMin":u[7]||(u[7]=d=>R(e).config.speedMin=d),"value-max":R(e).config.speedMax,"onUpdate:valueMax":u[8]||(u[8]=d=>R(e).config.speedMax=d),curve:R(e).config.speedCurve,"onUpdate:curve":u[9]||(u[9]=d=>R(e).config.speedCurve=d),min:0,max:1e3,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),T("div",pN,[u[45]||(u[45]=T("span",null,"初始缩放",-1)),T("div",gN,[T("button",{class:Le(["axis-mode",{on:R(e).config.scaleAxisMode==="uniform"}]),onClick:u[10]||(u[10]=d=>R(e).config.scaleAxisMode="uniform")},"统一",2),T("button",{class:Le(["axis-mode",{on:R(e).config.scaleAxisMode==="separate"}]),onClick:u[11]||(u[11]=d=>R(e).config.scaleAxisMode="separate")},"XY分离",2)])]),be(mn,{label:R(e).config.scaleAxisMode==="uniform"?"初始缩放":"缩放 X","allow-curve":!1,mode:R(e).config.scaleMode,"onUpdate:mode":u[12]||(u[12]=d=>R(e).config.scaleMode=d),"value-min":R(e).config.scaleMin,"onUpdate:valueMin":u[13]||(u[13]=d=>R(e).config.scaleMin=d),"value-max":R(e).config.scaleMax,"onUpdate:valueMax":u[14]||(u[14]=d=>R(e).config.scaleMax=d),curve:R(e).config.scaleCurve,"onUpdate:curve":u[15]||(u[15]=d=>R(e).config.scaleCurve=d),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["label","mode","value-min","value-max","curve"]),R(e).config.scaleAxisMode==="separate"?(K(),Mt(mn,{key:0,label:"缩放 Y","show-modes":!1,"allow-curve":!1,mode:R(e).config.scaleMode,"onUpdate:mode":u[16]||(u[16]=d=>R(e).config.scaleMode=d),"value-min":R(e).config.scaleYMin,"onUpdate:valueMin":u[17]||(u[17]=d=>R(e).config.scaleYMin=d),"value-max":R(e).config.scaleYMax,"onUpdate:valueMax":u[18]||(u[18]=d=>R(e).config.scaleYMax=d),curve:R(e).config.scaleYCurve,"onUpdate:curve":u[19]||(u[19]=d=>R(e).config.scaleYCurve=d),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"])):Te("",!0),be(mn,{label:"初始旋转","allow-direction":"","allow-curve":!1,mode:R(e).config.initialRotationMode,"onUpdate:mode":u[20]||(u[20]=d=>R(e).config.initialRotationMode=d),"value-min":R(e).config.initialRotationMin,"onUpdate:valueMin":u[21]||(u[21]=d=>R(e).config.initialRotationMin=d),"value-max":R(e).config.initialRotationMax,"onUpdate:valueMax":u[22]||(u[22]=d=>R(e).config.initialRotationMax=d),curve:R(e).config.initialRotationCurve,"onUpdate:curve":u[23]||(u[23]=d=>R(e).config.initialRotationCurve=d),min:-360,max:360,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),u[53]||(u[53]=T("div",{class:"attr-section-title life-title"},"粒子生命周期变化参数",-1)),T("div",vN,[T("label",yN,[de(T("input",{type:"checkbox","onUpdate:modelValue":u[24]||(u[24]=d=>R(e).config.speedOverLifeEnabled=d)},null,512),[[Et,R(e).config.speedOverLifeEnabled]]),u[46]||(u[46]=T("span",{class:"switch-ui"},null,-1)),u[47]||(u[47]=T("span",null,"生命周期内速度",-1))]),R(e).config.speedOverLifeEnabled?(K(),Mt(mn,{key:0,label:"速度倍率",mode:R(e).config.speedOverLifeMode,"onUpdate:mode":R(r),"value-min":R(e).config.speedOverLifeMin,"onUpdate:valueMin":u[25]||(u[25]=d=>R(e).config.speedOverLifeMin=d),"value-max":R(e).config.speedOverLifeMax,"onUpdate:valueMax":u[26]||(u[26]=d=>R(e).config.speedOverLifeMax=d),curve:R(e).config.speedOverLifeCurve,"onUpdate:curve":u[27]||(u[27]=d=>R(e).config.speedOverLifeCurve=d),"default-curve":R(l),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","onUpdate:mode","value-min","value-max","curve","default-curve"])):Te("",!0)]),T("div",xN,[T("label",bN,[de(T("input",{type:"checkbox","onUpdate:modelValue":u[28]||(u[28]=d=>R(e).config.scaleOverLifeEnabled=d),onChange:u[29]||(u[29]=(...d)=>R(o)&&R(o)(...d))},null,544),[[Et,R(e).config.scaleOverLifeEnabled]]),u[48]||(u[48]=T("span",{class:"switch-ui"},null,-1)),u[49]||(u[49]=T("span",null,"生命周期内缩放",-1))]),R(e).config.scaleOverLifeEnabled?(K(),Q(Fe,{key:0},[T("div",wN,[T("button",{class:Le(["axis-mode",{on:R(e).config.scaleOverLifeAxisMode==="uniform"}]),onClick:u[30]||(u[30]=d=>R(e).config.scaleOverLifeAxisMode="uniform")},"统一",2),T("button",{class:Le(["axis-mode",{on:R(e).config.scaleOverLifeAxisMode==="separate"}]),onClick:u[31]||(u[31]=d=>R(e).config.scaleOverLifeAxisMode="separate")},"XY分离",2)]),be(mn,{label:R(e).config.scaleOverLifeAxisMode==="uniform"?"缩放倍率":"倍率 X",mode:R(e).config.scaleOverLifeMode,"onUpdate:mode":R(a),"value-min":R(e).config.scaleOverLifeMin,"onUpdate:valueMin":u[32]||(u[32]=d=>R(e).config.scaleOverLifeMin=d),"value-max":R(e).config.scaleOverLifeMax,"onUpdate:valueMax":u[33]||(u[33]=d=>R(e).config.scaleOverLifeMax=d),curve:R(e).config.scaleOverLifeCurve,"onUpdate:curve":u[34]||(u[34]=d=>R(e).config.scaleOverLifeCurve=d),"default-curve":R(l),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["label","mode","onUpdate:mode","value-min","value-max","curve","default-curve"]),R(e).config.scaleOverLifeAxisMode==="separate"?(K(),Mt(mn,{key:0,label:"倍率 Y","show-modes":!1,mode:R(e).config.scaleOverLifeMode,"onUpdate:mode":u[35]||(u[35]=d=>R(e).config.scaleOverLifeMode=d),"value-min":R(e).config.scaleYOverLifeMin,"onUpdate:valueMin":u[36]||(u[36]=d=>R(e).config.scaleYOverLifeMin=d),"value-max":R(e).config.scaleYOverLifeMax,"onUpdate:valueMax":u[37]||(u[37]=d=>R(e).config.scaleYOverLifeMax=d),curve:R(e).config.scaleYOverLifeCurve,"onUpdate:curve":u[38]||(u[38]=d=>R(e).config.scaleYOverLifeCurve=d),"default-curve":R(l),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve","default-curve"])):Te("",!0)],64)):Te("",!0)]),T("div",SN,[T("label",_N,[de(T("input",{type:"checkbox","onUpdate:modelValue":u[39]||(u[39]=d=>R(e).config.rotationOverLifeEnabled=d)},null,512),[[Et,R(e).config.rotationOverLifeEnabled]]),u[50]||(u[50]=T("span",{class:"switch-ui"},null,-1)),u[51]||(u[51]=T("span",null,"生命周期内旋转",-1))]),R(e).config.rotationOverLifeEnabled?(K(),Mt(mn,{key:0,label:"旋转速度",mode:R(e).config.rotationOverLifeMode,"onUpdate:mode":u[40]||(u[40]=d=>R(e).config.rotationOverLifeMode=d),"value-min":R(e).config.rotationSpeedMin,"onUpdate:valueMin":u[41]||(u[41]=d=>R(e).config.rotationSpeedMin=d),"value-max":R(e).config.rotationSpeedMax,"onUpdate:valueMax":u[42]||(u[42]=d=>R(e).config.rotationSpeedMax=d),curve:R(e).config.rotationOverLifeCurve,"onUpdate:curve":u[43]||(u[43]=d=>R(e).config.rotationOverLifeCurve=d),"default-curve":R(c),min:-720,max:720,step:10,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve","default-curve"])):Te("",!0)])],512),[[vi,!R(t).attr]])]))}}),MN=Qt(TN,[["__scopeId","data-v-909c781b"]]),CN={class:"gradient-editor"},AN=["title","onClick","onDblclick","onPointerdown"],EN={key:0,class:"gradient-controls"},IN=["value"],RN=["value"],PN={class:"gradient-position"},kN=["value"],FN=["disabled"],ON=Jt({__name:"ColorGradientEditor",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:e}){const t=s,i=e,n=Ge(null),r=Ge(0),o=qe(()=>t.modelValue[r.value]||null),a=qe(()=>[...t.modelValue].sort((M,I)=>M.position-I.position)),c=qe(()=>{const M=a.value;return M.length?`linear-gradient(90deg, ${M.map(I=>`${I.color} ${l(I.position)*100}%`).join(", ")})`:"#ffffff"});Xi(()=>t.modelValue.length,M=>{r.value>=M&&(r.value=Math.max(0,M-1))});function l(M){return Math.min(1,Math.max(0,Number(M)||0))}function h(){return t.modelValue.map(M=>({position:l(M.position),color:M.color}))}function u(M,I){const F=h();F[M]&&(F[M]={...F[M],...I},i("update:modelValue",F))}function d(M){u(r.value,{color:M.target.value})}function f(M){var E;const I=M.target,F=b(I.value,((E=o.value)==null?void 0:E.color)||"#ffffff");I.value=F,u(r.value,{color:F})}function p(M){const I=M.target;f(M),I.blur()}function m(M){const I=Number(M.target.value);Number.isFinite(I)&&u(r.value,{position:l(I/100)})}function g(M){const I=h();I.push({position:l(M),color:C(I,M)}),r.value=I.length-1,i("update:modelValue",I)}function v(M){if(!n.value)return;const I=n.value.getBoundingClientRect();g((M.clientX-I.left)/Math.max(1,I.width))}function x(){const M=a.value;let I=.5;if(M.length>1){let F=-1;for(let E=0;EF&&(F=k,I=(M[E].position+M[E+1].position)/2)}}g(I)}function y(M){if(t.modelValue.length<=2||M<0)return;const I=h().filter((F,E)=>E!==M);r.value=Math.min(M,I.length-1),i("update:modelValue",I)}function _(M,I){if(!n.value)return;r.value=I;const F=k=>{const O=n.value.getBoundingClientRect();u(I,{position:l((k.clientX-O.left)/Math.max(1,O.width))})},E=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",E),window.removeEventListener("pointercancel",E)};window.addEventListener("pointermove",F),window.addEventListener("pointerup",E),window.addEventListener("pointercancel",E),M.preventDefault()}function C(M,I){const F=[...M].sort((E,k)=>E.position-k.position);if(!F.length)return"#ffffff";if(I<=F[0].position)return F[0].color;if(I>=F[F.length-1].position)return F[F.length-1].color;for(let E=0;EO.position)continue;const D=(I-k.position)/Math.max(1e-4,O.position-k.position);return S(k.color,O.color,D)}return F[F.length-1].color}function S(M,I,F){const E=$=>{const N=parseInt($.replace("#","").padEnd(6,"0").slice(0,6),16);return[N>>16&255,N>>8&255,N&255]},k=E(M),O=E(I),D=$=>Math.round(k[$]+(O[$]-k[$])*F);return`#${[D(0),D(1),D(2)].map($=>$.toString(16).padStart(2,"0")).join("")}`}function b(M,I){let F=M.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(F)&&(F=F.split("").map(E=>E+E).join("")),/^[0-9a-f]{6}$/i.test(F)?`#${F.toLowerCase()}`:I}return(M,I)=>(K(),Q("div",CN,[T("div",{ref_key:"bar",ref:n,class:"gradient-bar",style:di({background:c.value}),title:"双击色带添加色标",onDblclick:v},[(K(!0),Q(Fe,null,Dt(s.modelValue,(F,E)=>(K(),Q("button",{key:E,type:"button",class:Le(["gradient-stop",{selected:E===r.value}]),style:di({left:`${l(F.position)*100}%`,"--stop-color":F.color}),title:`${Math.round(l(F.position)*100)}% · ${F.color}`,onClick:et(k=>r.value=E,["stop"]),onDblclick:et(k=>y(E),["stop"]),onPointerdown:et(k=>_(k,E),["stop"])},null,46,AN))),128))],36),o.value?(K(),Q("div",EN,[T("input",{type:"color",class:"gradient-color",value:o.value.color,"aria-label":"色标颜色",onInput:d},null,40,IN),T("input",{type:"text",class:"gradient-hex-input",value:o.value.color,"aria-label":"色标颜色值",spellcheck:"false",onChange:f,onKeydown:zr(p,["enter"])},null,40,RN),T("label",PN,[T("input",{type:"number",min:"0",max:"100",step:"1",value:Math.round(l(o.value.position)*100),"aria-label":"色标位置",onInput:m},null,40,kN),I[1]||(I[1]=T("span",null,"%",-1))]),T("button",{type:"button",class:"gradient-action",title:"在中间新增颜色",onClick:x},"+"),T("button",{type:"button",class:"gradient-action danger",title:"删除当前色标",disabled:s.modelValue.length<=2,onClick:I[0]||(I[0]=F=>y(r.value))},"×",8,FN)])):Te("",!0),I[2]||(I[2]=T("div",{class:"gradient-hint"},"双击色带新增 · 拖动色标调整位置 · 双击色标删除",-1))]))}}),gS=Qt(ON,[["__scopeId","data-v-8816e4a4"]]),BN={class:"image-card"},LN={class:"imgrow"},DN=["title"],NN=["src","alt"],UN={key:1,viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#8a93bb","stroke-width":"1.6"},$N={class:"img-fields"},XN={key:0,class:"row"},VN={class:"row"},YN=["placeholder"],GN={class:"img-actions"},HN=["title"],jN=["disabled"],WN={class:"thumb-note"},zN={key:0,class:"row"},qN={class:"row"},KN={class:"row"},ZN={class:"sequence-note"},JN={class:"resource-weight-row"},QN=["disabled","title"],e4={key:0,viewBox:"0 0 24 24","aria-hidden":"true"},t4={key:1,viewBox:"0 0 24 24","aria-hidden":"true"},i4=Jt({__name:"ImageResourceCard",props:{resource:{},resourceCount:{},defaultFile:{},namePlaceholder:{default:"particle"},showFolder:{type:Boolean,default:!0},supportsSequence:{type:Boolean,default:!1}},emits:["pick","pickSequence","reset","remove","updateWeight","toggleLock"],setup(s,{emit:e}){const t=s,i=e,n=qe(()=>{var l,h;if(t.resource.imageMode==="sequence"){const u=t.resource.sequenceFrames||[];if(!u.length)return"未选择序列帧";const d=((l=u[0])==null?void 0:l.name)||"第 1 帧",f=((h=u[u.length-1])==null?void 0:h.name)||d;return u.length===1?`1 帧 · ${d}`:`${u.length} 帧 · ${d} → ${f}`}const c=t.resource.textureName||t.defaultFile.replace(/\.[^.]+$/,"");return c.includes(".")?c:`${c}.png`}),r=qe(()=>{var c,l;return t.resource.imageMode==="sequence"?((l=(c=t.resource.sequenceFrames)==null?void 0:c[0])==null?void 0:l.previewUrl)||"":t.resource.previewUrl}),o=qe(()=>{var u,d;const c=t.resource.sequenceFrames||[];if(!c.length)return"未选择序列帧";const l=((u=c[0])==null?void 0:u.name)||"第一张图片",h=((d=c[c.length-1])==null?void 0:d.name)||"最后一张图片";return`已选择 ${c.length} 帧,按 ${l}-${h} 顺序播放`});function a(){t.supportsSequence&&t.resource.imageMode==="sequence"?i("pickSequence",t.resource.id):i("pick",t.resource.id)}return(c,l)=>(K(),Q("div",BN,[T("div",LN,[T("button",{class:"img-thumb",title:s.supportsSequence&&s.resource.imageMode==="sequence"?"选择序列帧图片":"选择本地图片",onClick:a},[r.value?(K(),Q("img",{key:0,src:r.value,alt:s.resource.textureName},null,8,NN)):(K(),Q("svg",UN,[...l[10]||(l[10]=[T("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"},null,-1),T("circle",{cx:"8.5",cy:"8.5",r:"1.6"},null,-1),T("path",{d:"M21 15l-5-5-9 9"},null,-1)])]))],8,DN),T("div",$N,[s.showFolder?(K(),Q("label",XN,[l[11]||(l[11]=T("span",null,"子文件夹",-1)),de(T("input",{"onUpdate:modelValue":l[0]||(l[0]=h=>s.resource.textureFolder=h),type:"text",class:"inp",placeholder:"subfolder/"},null,512),[[He,s.resource.textureFolder]])])):Te("",!0),T("label",VN,[l[12]||(l[12]=T("span",null,"名称",-1)),de(T("input",{"onUpdate:modelValue":l[1]||(l[1]=h=>s.resource.textureName=h),type:"text",class:"inp",placeholder:s.namePlaceholder},null,8,YN),[[He,s.resource.textureName]])])]),T("div",GN,[T("button",{class:"mini-btn2",title:`恢复 ${s.defaultFile}`,onClick:l[2]||(l[2]=h=>c.$emit("reset",s.resource.id))},"⟳",8,HN),T("button",{class:"mini-btn2",title:"删除图片资源",disabled:s.resourceCount===1,onClick:l[3]||(l[3]=h=>c.$emit("remove",s.resource.id))},"🗑",8,jN)])]),T("div",WN,_e(n.value),1),s.supportsSequence?(K(),Q("label",zN,[l[14]||(l[14]=T("span",null,"图片模式",-1)),de(T("select",{"onUpdate:modelValue":l[4]||(l[4]=h=>s.resource.imageMode=h),class:"inp"},[...l[13]||(l[13]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"sequence"},"序列帧",-1)])],512),[[wt,s.resource.imageMode]])])):Te("",!0),s.supportsSequence&&s.resource.imageMode==="sequence"?(K(),Q(Fe,{key:1},[T("label",qN,[l[16]||(l[16]=T("span",null,"播放模式",-1)),de(T("select",{"onUpdate:modelValue":l[5]||(l[5]=h=>s.resource.sequencePlayback=h),class:"inp"},[...l[15]||(l[15]=[T("option",{value:"once-hide"},"单次-尾帧消失",-1),T("option",{value:"once-hold"},"单次-尾帧固定",-1),T("option",{value:"loop-forward"},"正向循环",-1),T("option",{value:"loop-reverse"},"反向循环",-1)])],512),[[wt,s.resource.sequencePlayback]])]),T("label",KN,[l[17]||(l[17]=T("span",null,"播放帧率",-1)),de(T("input",{"onUpdate:modelValue":l[6]||(l[6]=h=>s.resource.sequenceFps=h),type:"number",min:"1",max:"120",step:"1",class:"inp"},null,512),[[He,s.resource.sequenceFps,void 0,{number:!0}]])]),T("button",{class:"sequence-pick",onClick:l[7]||(l[7]=h=>c.$emit("pickSequence",s.resource.id))},"选择序列帧(多选)"),T("div",ZN,_e(o.value),1)],64)):Te("",!0),T("div",JN,[be(Be,{class:"resource-weight-control",label:"占比%",min:0,max:100,step:1,"model-value":s.resource.weight,disabled:s.resource.locked||s.resourceCount===1,"onUpdate:modelValue":l[8]||(l[8]=h=>c.$emit("updateWeight",s.resource.id,h))},null,8,["model-value","disabled"]),T("button",{class:Le(["weight-lock",{on:s.resource.locked}]),disabled:s.resourceCount===1,title:s.resource.locked?"解除占比锁定":"锁定当前占比",onClick:l[9]||(l[9]=h=>c.$emit("toggleLock",s.resource.id))},[s.resource.locked?(K(),Q("svg",e4,[...l[18]||(l[18]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"},null,-1)])])):(K(),Q("svg",t4,[...l[19]||(l[19]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M16 10V7a4 4 0 0 0-7.5-2"},null,-1)])]))],10,QN)]),R_(c.$slots,"default",{},void 0)]))}}),vS=Qt(i4,[["__scopeId","data-v-7a2d016a"]]),s4={class:"group"},n4={class:"caret"},r4={class:"group-body"},o4={class:"seg"},a4={class:"row"},l4={class:"curve-wrap"},c4={class:"look-title image-title"},h4={class:"row"},u4=["onUpdate:modelValue"],d4=["onUpdate:modelValue"],f4={class:"row resource-color-row"},m4=["onUpdate:modelValue"],p4=["onUpdate:modelValue"],g4={key:0,class:"row resource-color-picker"},v4=["onUpdate:modelValue"],y4=["value","onChange","onKeydown"],x4={key:0,class:"random-color-hint"},b4={class:"resource-alpha-head"},w4={class:"alpha-modes"},S4=["onClick"],_4=["onClick"],T4=["onClick"],M4={class:"row"},C4=["onUpdate:modelValue"],A4={class:"resource-alpha-curve"},E4=Jt({__name:"ParticleAppearanceSection",setup(s){const{resolvedCurveEditorMode:e,sys:t,textureFileInput:i,sequenceFileInput:n,addImageResource:r,openTexturePicker:o,openSequencePicker:a,onTextureFile:c,onSequenceFiles:l,resetTexture:h,setResourceFixedColor:u,commitResourceFixedColor:d,removeImageResource:f,setResourceWeight:p,toggleResourceLock:m,collapsed:g,toggle:v,resetModule:x,select:y,ALPHA_CURVE:_,RESOURCE_ALPHA_CURVE:C}=br();return(S,b)=>(K(),Q("div",s4,[T("div",{class:"group-head",onClick:b[1]||(b[1]=M=>R(v)("look"))},[T("span",n4,_e(R(g).look?"▸":"▾"),1),b[10]||(b[10]=T("span",null,"外观与资源",-1)),T("button",{class:"group-reset",title:"重置外观与资源参数",onClick:b[0]||(b[0]=et(M=>R(x)("look"),["stop"]))},"重置")]),de(T("div",r4,[b[24]||(b[24]=T("div",{class:"look-title"},"透明度",-1)),T("div",o4,[T("button",{class:Le(["seg-btn",{active:R(t).config.alphaMode==="curve"}]),onClick:b[2]||(b[2]=M=>R(t).config.alphaMode="curve")},"曲线",2),T("button",{class:Le(["seg-btn",{active:R(t).config.alphaMode==="fixed"}]),onClick:b[3]||(b[3]=M=>R(t).config.alphaMode="fixed")},"固定",2)]),R(t).config.alphaMode==="fixed"?(K(),Mt(Be,{key:0,label:"透明度",min:0,max:1,step:.01,modelValue:R(t).config.alpha,"onUpdate:modelValue":b[4]||(b[4]=M=>R(t).config.alpha=M)},null,8,["modelValue"])):(K(),Q(Fe,{key:1},[T("label",a4,[b[12]||(b[12]=T("span",null,"曲线模式",-1)),de(T("select",{"onUpdate:modelValue":b[5]||(b[5]=M=>R(t).config.curveMode=M),class:"inp"},[...b[11]||(b[11]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[wt,R(t).config.curveMode]])]),T("div",l4,[be(qs,{modelValue:R(t).config.alphaCurve,"onUpdate:modelValue":b[6]||(b[6]=M=>R(t).config.alphaCurve=M),"default-value":R(_),mode:R(e)(R(t).config.curveMode)},null,8,["modelValue","default-value","mode"]),b[13]||(b[13]=T("div",{class:"curve-labels"},[T("span",null,"0(透明)"),T("span",null,"生命周期 →"),T("span",null,"1(不透明)")],-1))])],64)),T("div",c4,[b[14]||(b[14]=T("span",null,"图片资源",-1)),T("button",{class:"image-add",title:"新增图片资源",onClick:b[7]||(b[7]=(...M)=>R(r)&&R(r)(...M))},"+")]),(K(!0),Q(Fe,null,Dt(R(t).config.imageResources,M=>(K(),Mt(vS,{key:M.id,resource:M,"resource-count":R(t).config.imageResources.length,"supports-sequence":"","default-file":"star.png",onPick:R(o),onPickSequence:R(a),onReset:R(h),onRemove:R(f),onUpdateWeight:R(p),onToggleLock:R(m)},{default:$h(()=>[be(Be,{label:"缩放",min:.1,max:3,step:.05,modelValue:M.scale,"onUpdate:modelValue":I=>M.scale=I},null,8,["modelValue","onUpdate:modelValue"]),T("label",h4,[b[15]||(b[15]=T("span",null,"轴心 x,y",-1)),de(T("input",{type:"number",step:"0.05",class:"inp tiny","onUpdate:modelValue":I=>M.anchorX=I},null,8,u4),[[He,M.anchorX,void 0,{number:!0}]]),de(T("input",{type:"number",step:"0.05",class:"inp tiny","onUpdate:modelValue":I=>M.anchorY=I},null,8,d4),[[He,M.anchorY,void 0,{number:!0}]])]),b[23]||(b[23]=T("div",{class:"resource-divider"},null,-1)),T("label",f4,[b[18]||(b[18]=T("span",null,"颜色",-1)),de(T("select",{"onUpdate:modelValue":I=>M.colorMode=I,class:"inp"},[...b[16]||(b[16]=[T("option",{value:"fixed"},"固定色",-1),T("option",{value:"random"},"随机颜色",-1),T("option",{value:"lifetime"},"生命周期",-1)])],8,m4),[[wt,M.colorMode]]),de(T("select",{"onUpdate:modelValue":I=>M.blend=I,class:"inp blend-select"},[...b[17]||(b[17]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,p4),[[wt,M.blend]])]),M.colorMode==="fixed"?(K(),Q("label",g4,[b[19]||(b[19]=T("span",null,"固定色",-1)),de(T("input",{type:"color","onUpdate:modelValue":I=>M.colorStart=I,class:"colr"},null,8,v4),[[He,M.colorStart]]),T("input",{type:"text",class:"hex-input",value:M.colorStart,spellcheck:"false","aria-label":"固定颜色值",onChange:I=>R(u)(M,I),onKeydown:zr(I=>R(d)(M,I),["enter"])},null,40,y4)])):(K(),Q(Fe,{key:1},[be(gS,{modelValue:M.colorGradient,"onUpdate:modelValue":I=>M.colorGradient=I},null,8,["modelValue","onUpdate:modelValue"]),M.colorMode==="random"?(K(),Q("div",x4,"每个粒子出生时从色带随机取色,生命周期内保持不变")):Te("",!0)],64)),T("div",b4,[b[20]||(b[20]=T("span",null,"独立透明度",-1)),T("div",w4,[T("button",{class:Le({on:M.independentAlpha==="off"}),onClick:I=>M.independentAlpha="off"},"关闭",10,S4),T("button",{class:Le({on:M.independentAlpha==="fixed"}),onClick:I=>M.independentAlpha="fixed"},"固定",10,_4),T("button",{class:Le({on:M.independentAlpha==="curve"}),onClick:I=>M.independentAlpha="curve"},"曲线",10,T4)])]),M.independentAlpha==="fixed"?(K(),Mt(Be,{key:2,label:"透明度",min:0,max:1,step:.01,modelValue:M.alpha,"onUpdate:modelValue":I=>M.alpha=I},null,8,["modelValue","onUpdate:modelValue"])):M.independentAlpha==="curve"?(K(),Q(Fe,{key:3},[T("label",M4,[b[22]||(b[22]=T("span",null,"曲线模式",-1)),de(T("select",{"onUpdate:modelValue":I=>M.alphaCurveMode=I,class:"inp"},[...b[21]||(b[21]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],8,C4),[[wt,M.alphaCurveMode]])]),T("div",A4,[be(qs,{modelValue:M.alphaCurve,"onUpdate:modelValue":I=>M.alphaCurve=I,"default-value":R(C),mode:R(e)(M.alphaCurveMode)},null,8,["modelValue","onUpdate:modelValue","default-value","mode"])])],64)):Te("",!0)]),_:2},1032,["resource","resource-count","onPick","onPickSequence","onReset","onRemove","onUpdateWeight","onToggleLock"]))),128)),T("input",{ref_key:"textureFileInput",ref:i,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:b[8]||(b[8]=(...M)=>R(c)&&R(c)(...M))},null,544),T("input",{ref_key:"sequenceFileInput",ref:n,class:"file-input",type:"file",multiple:"",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:b[9]||(b[9]=(...M)=>R(l)&&R(l)(...M))},null,544)],512),[[vi,!R(g).look]])]))}}),I4=Qt(E4,[["__scopeId","data-v-f3235ea1"]]),R4={class:"group"},P4={class:"caret"},k4={class:"group-body"},F4={class:"modifier-item"},O4={class:"switch-row modifier-switch"},B4={key:0,class:"modifier-params"},L4={class:"modifier-item"},D4={class:"switch-row modifier-switch"},N4={key:0,class:"modifier-params gravity-params"},U4={class:"modifier-mode-row"},$4={class:"modifier-item"},X4={class:"switch-row modifier-switch"},V4={key:0,class:"modifier-params gravity-params"},Y4={class:"modifier-mode-row"},G4={class:"modifier-item"},H4={class:"switch-row modifier-switch"},j4={key:0,class:"modifier-params"},W4={class:"row"},z4={class:"modifier-item"},q4={class:"switch-row modifier-switch"},K4={key:0,class:"modifier-params"},Z4={class:"row"},J4={class:"row"},Q4={class:"modifier-item"},e8={class:"switch-row modifier-switch"},t8={key:0,class:"modifier-params trail-params"},i8={class:"trail-section-head"},s8={class:"row"},n8=["onUpdate:modelValue"],r8={class:"row"},o8=["onUpdate:modelValue"],a8={class:"row"},l8=["onUpdate:modelValue"],c8={class:"switch-row trail-sub-switch"},h8=["onUpdate:modelValue"],u8={class:"switch-row trail-sub-switch"},d8=["onUpdate:modelValue"],f8={class:"trail-mode-head"},m8={class:"alpha-modes"},p8=["onClick"],g8=["onClick"],v8=["onClick"],y8={class:"row"},x8=["onUpdate:modelValue"],b8={key:6,class:"row trail-fixed-color"},w8=["onUpdate:modelValue"],S8=["value","onChange","onKeydown"],_8={class:"trail-mode-head"},T8={class:"alpha-modes"},M8=["onClick"],C8=["onClick"],A8=["onClick"],E8={class:"trail-grid-row"},I8={class:"modifier-item"},R8={class:"switch-row modifier-switch"},P8=["disabled"],k8={key:0,class:"modifier-params emitter-follow-params"},F8={class:"field-block"},O8=["value"],B8={key:0,value:"bone"},L8={class:"field-block"},D8=["value"],N8={class:"field-block"},U8={class:"field-grid follow-grid"},$8={class:"compact-field"},X8={class:"compact-field"},V8={class:"field-block"},Y8={key:0,class:"bone-follow-target"},G8={key:1,class:"bone-follow-missing"},H8={class:"field-block"},j8={class:"field-grid follow-grid"},W8={class:"compact-field"},z8={class:"compact-field"},q8={class:"bone-follow-transform-grid"},K8={class:"compact-field"},Z8={class:"compact-field"},J8={class:"compact-field"},Q8={class:"modifier-item"},e5={class:"switch-row modifier-switch"},t5={key:0,class:"modifier-params collision-filter-params"},i5={class:"collision-filter-tags"},s5=["title"],n5=["aria-label","onClick"],r5=["disabled","title"],o5={key:0,class:"collision-filter-empty"},a5={key:1,class:"collision-filter-picker"},l5=["onClick"],c5=Jt({__name:"ParticleModifiersSection",setup(s){const{store:e,sys:t,trailTextureFileInput:i,addTrailResource:n,openTrailTexturePicker:r,onTrailRigChange:o,onTrailResourceBoneCountChange:a,onTrailResourceRotationChange:c,onTrailTextureFile:l,resetTrailTexture:h,removeTrailResource:u,setTrailResourceWeight:d,toggleTrailResourceLock:f,setTrailColor:p,commitTrailColor:m,selectedSpineBone:g,boundSpineBone:v,collisionPickerOpen:x,selectedCollisionBodies:y,availableCollisionBodies:_,addCollisionBody:C,removeCollisionBody:S,collapsed:b,toggle:M,onEmitterFollowModeChange:I,bindSelectedBone:F,resetModule:E,select:k,LINEAR_CURVE:O,FLAT_CURVE:D,TRAIL_ALPHA_CURVE:$,TRAIL_SHAPE_CURVE:N}=br();return(U,A)=>(K(),Q("div",R4,[T("div",{class:"group-head",onClick:A[1]||(A[1]=P=>R(M)("mods"))},[T("span",P4,_e(R(b).mods?"▸":"▾"),1),A[60]||(A[60]=T("span",null,"修改器",-1)),T("button",{class:"group-reset",title:"重置修改器参数",onClick:A[0]||(A[0]=et(P=>R(E)("mods"),["stop"]))},"重置")]),de(T("div",k4,[T("div",F4,[T("label",O4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[2]||(A[2]=P=>R(t).config.noise=P)},null,512),[[Et,R(t).config.noise]]),A[61]||(A[61]=T("span",{class:"switch-ui"},null,-1)),A[62]||(A[62]=T("span",null,"开启移动噪声",-1))]),R(t).config.noise?(K(),Q("div",B4,[be(Be,{label:"强度",min:0,max:100,step:1,modelValue:R(t).config.noiseAmt,"onUpdate:modelValue":A[3]||(A[3]=P=>R(t).config.noiseAmt=P)},null,8,["modelValue"]),be(Be,{label:"波动范围",min:0,max:500,step:1,modelValue:R(t).config.noiseRange,"onUpdate:modelValue":A[4]||(A[4]=P=>R(t).config.noiseRange=P)},null,8,["modelValue"]),be(Be,{label:"时间流速",min:0,max:10,step:.1,modelValue:R(t).config.noiseSpeed,"onUpdate:modelValue":A[5]||(A[5]=P=>R(t).config.noiseSpeed=P)},null,8,["modelValue"]),A[63]||(A[63]=T("div",{class:"modifier-hint"},"强度控制影响比例 · 波动范围控制最大偏移 · 时间流速控制变化速度",-1))])):Te("",!0)]),T("div",L4,[T("label",D4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[6]||(A[6]=P=>R(t).config.useGravity=P)},null,512),[[Et,R(t).config.useGravity]]),A[64]||(A[64]=T("span",{class:"switch-ui"},null,-1)),A[65]||(A[65]=T("span",null,"开启重力",-1))]),R(t).config.useGravity?(K(),Q("div",N4,[T("div",U4,[T("button",{class:Le(["axis-mode",{on:R(t).config.gravityMode==="fixed"}]),onClick:A[7]||(A[7]=P=>R(t).config.gravityMode="fixed")},"固定",2),T("button",{class:Le(["axis-mode",{on:R(t).config.gravityMode==="random"}]),onClick:A[8]||(A[8]=P=>R(t).config.gravityMode="random")},"随机",2)]),R(t).config.gravityMode==="fixed"?(K(),Mt(Be,{key:0,label:"重力强度",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMin,"onUpdate:modelValue":A[9]||(A[9]=P=>R(t).config.gravityMin=P)},null,8,["modelValue"])):(K(),Q(Fe,{key:1},[be(Be,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMin,"onUpdate:modelValue":A[10]||(A[10]=P=>R(t).config.gravityMin=P)},null,8,["modelValue"]),be(Be,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMax,"onUpdate:modelValue":A[11]||(A[11]=P=>R(t).config.gravityMax=P)},null,8,["modelValue"])],64)),be(Be,{label:"方向",min:-360,max:360,step:1,modelValue:R(t).config.gravityDirection,"onUpdate:modelValue":A[12]||(A[12]=P=>R(t).config.gravityDirection=P)},null,8,["modelValue"]),A[66]||(A[66]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内重力"),T("span",null,"纵轴:强度 0~1")],-1)),be(qs,{modelValue:R(t).config.gravityCurve,"onUpdate:modelValue":A[13]||(A[13]=P=>R(t).config.gravityCurve=P),"default-value":R(D)},null,8,["modelValue","default-value"]),A[67]||(A[67]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),A[68]||(A[68]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):Te("",!0)]),T("div",$4,[T("label",X4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[14]||(A[14]=P=>R(t).config.wind=P)},null,512),[[Et,R(t).config.wind]]),A[69]||(A[69]=T("span",{class:"switch-ui"},null,-1)),A[70]||(A[70]=T("span",null,"开启风力",-1))]),R(t).config.wind?(K(),Q("div",V4,[T("div",Y4,[T("button",{class:Le(["axis-mode",{on:R(t).config.windMode==="fixed"}]),onClick:A[15]||(A[15]=P=>R(t).config.windMode="fixed")},"固定",2),T("button",{class:Le(["axis-mode",{on:R(t).config.windMode==="random"}]),onClick:A[16]||(A[16]=P=>R(t).config.windMode="random")},"随机",2)]),R(t).config.windMode==="fixed"?(K(),Mt(Be,{key:0,label:"风力强度",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMin,"onUpdate:modelValue":A[17]||(A[17]=P=>R(t).config.windMin=P)},null,8,["modelValue"])):(K(),Q(Fe,{key:1},[be(Be,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMin,"onUpdate:modelValue":A[18]||(A[18]=P=>R(t).config.windMin=P)},null,8,["modelValue"]),be(Be,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMax,"onUpdate:modelValue":A[19]||(A[19]=P=>R(t).config.windMax=P)},null,8,["modelValue"])],64)),be(Be,{label:"方向",min:-360,max:360,step:1,modelValue:R(t).config.windDirection,"onUpdate:modelValue":A[20]||(A[20]=P=>R(t).config.windDirection=P)},null,8,["modelValue"]),A[71]||(A[71]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内风力"),T("span",null,"纵轴:强度 0~1")],-1)),be(qs,{modelValue:R(t).config.windCurve,"onUpdate:modelValue":A[21]||(A[21]=P=>R(t).config.windCurve=P),"default-value":R(D)},null,8,["modelValue","default-value"]),A[72]||(A[72]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),A[73]||(A[73]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):Te("",!0)]),T("div",G4,[T("label",H4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[22]||(A[22]=P=>R(t).config.forceField=P)},null,512),[[Et,R(t).config.forceField]]),A[74]||(A[74]=T("span",{class:"switch-ui"},null,-1)),A[75]||(A[75]=T("span",null,"开启力场",-1))]),R(t).config.forceField?(K(),Q("div",j4,[be(Be,{label:"中心 X",min:-5e3,max:5e3,step:1,modelValue:R(t).config.forceCenterX,"onUpdate:modelValue":A[23]||(A[23]=P=>R(t).config.forceCenterX=P)},null,8,["modelValue"]),be(Be,{label:"中心 Y",min:-5e3,max:5e3,step:1,modelValue:R(t).config.forceCenterY,"onUpdate:modelValue":A[24]||(A[24]=P=>R(t).config.forceCenterY=P)},null,8,["modelValue"]),be(Be,{label:"力场强度",min:-300,max:300,step:1,modelValue:R(t).config.forceStrength,"onUpdate:modelValue":A[25]||(A[25]=P=>R(t).config.forceStrength=P)},null,8,["modelValue"]),be(Be,{label:"力场半径",min:1,max:2e3,step:1,modelValue:R(t).config.forceRadius,"onUpdate:modelValue":A[26]||(A[26]=P=>R(t).config.forceRadius=P)},null,8,["modelValue"]),T("label",W4,[A[77]||(A[77]=T("span",null,"衰减模式",-1)),de(T("select",{"onUpdate:modelValue":A[27]||(A[27]=P=>R(t).config.forceFalloff=P),class:"inp"},[...A[76]||(A[76]=[T("option",{value:"constant"},"恒定(范围内力度不变)",-1),T("option",{value:"linear"},"线性衰减(边缘为 0)",-1),T("option",{value:"inverse"},"距离反比(中心最强)",-1)])],512),[[wt,R(t).config.forceFalloff]])]),A[78]||(A[78]=T("div",{class:"modifier-hint"},"正数吸向中心 · 负数向外排斥 · 可在画布内拖动力场圆",-1))])):Te("",!0)]),T("div",z4,[T("label",q4,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[28]||(A[28]=P=>R(t).config.attraction=P)},null,512),[[Et,R(t).config.attraction]]),A[79]||(A[79]=T("span",{class:"switch-ui"},null,-1)),A[80]||(A[80]=T("span",null,"开启吸附",-1))]),R(t).config.attraction?(K(),Q("div",K4,[be(Be,{label:"吸附点 X",min:-5e3,max:5e3,step:1,modelValue:R(t).config.attractionCenterX,"onUpdate:modelValue":A[29]||(A[29]=P=>R(t).config.attractionCenterX=P)},null,8,["modelValue"]),be(Be,{label:"吸附点 Y",min:-5e3,max:5e3,step:1,modelValue:R(t).config.attractionCenterY,"onUpdate:modelValue":A[30]||(A[30]=P=>R(t).config.attractionCenterY=P)},null,8,["modelValue"]),be(Be,{label:"吸附半径",min:0,max:2e3,step:1,modelValue:R(t).config.attractionRadius,"onUpdate:modelValue":A[31]||(A[31]=P=>R(t).config.attractionRadius=P)},null,8,["modelValue"]),be(Be,{label:"吸附时长",min:.05,max:30,step:.05,modelValue:R(t).config.attractionDuration,"onUpdate:modelValue":A[32]||(A[32]=P=>R(t).config.attractionDuration=P)},null,8,["modelValue"]),be(Be,{label:"延迟时间",min:0,max:30,step:.05,modelValue:R(t).config.attractionDelay,"onUpdate:modelValue":A[33]||(A[33]=P=>R(t).config.attractionDelay=P)},null,8,["modelValue"]),T("label",Z4,[A[82]||(A[82]=T("span",null,"延迟方式",-1)),de(T("select",{"onUpdate:modelValue":A[34]||(A[34]=P=>R(t).config.attractionDelayMode=P),class:"inp"},[...A[81]||(A[81]=[T("option",{value:"global"},"统一时间",-1),T("option",{value:"particle"},"单粒子生命",-1)])],512),[[wt,R(t).config.attractionDelayMode]])]),T("label",J4,[A[84]||(A[84]=T("span",null,"吸附方式",-1)),de(T("select",{"onUpdate:modelValue":A[35]||(A[35]=P=>R(t).config.attractionPath=P),class:"inp"},[...A[83]||(A[83]=[T("option",{value:"linear"},"直线",-1),T("option",{value:"curve"},"曲线",-1)])],512),[[wt,R(t).config.attractionPath]])]),A[85]||(A[85]=T("div",{class:"modifier-hint"},"延迟后从当前位置开始吸附 · 到达红色范围即死亡 · 可在画布内拖动吸附圆",-1))])):Te("",!0)]),T("div",Q4,[T("label",e8,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[36]||(A[36]=P=>R(t).config.trail=P)},null,512),[[Et,R(t).config.trail]]),A[86]||(A[86]=T("span",{class:"switch-ui"},null,-1)),A[87]||(A[87]=T("span",null,"开启拖尾",-1))]),R(t).config.trail?(K(),Q("div",t8,[T("div",i8,[A[88]||(A[88]=T("div",{class:"trail-section-title"},"拖尾独立图片",-1)),T("button",{class:"image-add",title:"增加拖尾图片资源",onClick:A[37]||(A[37]=(...P)=>R(n)&&R(n)(...P))},"+")]),(K(!0),Q(Fe,null,Dt(R(t).config.trailResources,P=>(K(),Mt(vS,{key:P.id,resource:P,"resource-count":R(t).config.trailResources.length,"default-file":"trail.png","name-placeholder":"trail","show-folder":!1,onPick:R(r),onReset:R(h),onRemove:R(u),onUpdateWeight:R(d),onToggleLock:R(f)},{default:$h(()=>[A[104]||(A[104]=T("div",{class:"resource-divider"},null,-1)),be(Be,{label:"旋转",min:-360,max:360,step:1,"model-value":P.rotation,"onUpdate:modelValue":L=>R(c)(P.id,L)},null,8,["model-value","onUpdate:modelValue"]),be(Be,{label:"拖尾骨骼数",min:2,max:16,step:1,"model-value":P.boneCount,"onUpdate:modelValue":L=>R(a)(P.id,L)},null,8,["model-value","onUpdate:modelValue"]),be(Be,{label:"拖尾比例 (%)",min:0,max:100,step:1,modelValue:P.trailRatio,"onUpdate:modelValue":L=>P.trailRatio=L},null,8,["modelValue","onUpdate:modelValue"]),T("label",s8,[A[90]||(A[90]=T("span",null,"拖尾长度",-1)),de(T("select",{"onUpdate:modelValue":L=>P.lengthMode=L,class:"inp"},[...A[89]||(A[89]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,n8),[[wt,P.lengthMode]])]),P.lengthMode==="fixed"?(K(),Mt(Be,{key:0,label:"长度比例 (%)",min:0,max:500,step:1,modelValue:P.length,"onUpdate:modelValue":L=>P.length=L},null,8,["modelValue","onUpdate:modelValue"])):(K(),Q(Fe,{key:1},[be(Be,{label:"长度最小 (%)",min:0,max:500,step:1,modelValue:P.lengthMin,"onUpdate:modelValue":L=>P.lengthMin=L},null,8,["modelValue","onUpdate:modelValue"]),be(Be,{label:"长度最大 (%)",min:0,max:500,step:1,modelValue:P.lengthMax,"onUpdate:modelValue":L=>P.lengthMax=L},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",r8,[A[92]||(A[92]=T("span",null,"拖尾宽度",-1)),de(T("select",{"onUpdate:modelValue":L=>P.widthSizeMode=L,class:"inp"},[...A[91]||(A[91]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,o8),[[wt,P.widthSizeMode]])]),P.widthSizeMode==="fixed"?(K(),Mt(Be,{key:2,label:"宽度比例 (%)",min:0,max:500,step:1,modelValue:P.width,"onUpdate:modelValue":L=>P.width=L},null,8,["modelValue","onUpdate:modelValue"])):(K(),Q(Fe,{key:3},[be(Be,{label:"宽度最小 (%)",min:0,max:500,step:1,modelValue:P.widthMin,"onUpdate:modelValue":L=>P.widthMin=L},null,8,["modelValue","onUpdate:modelValue"]),be(Be,{label:"宽度最大 (%)",min:0,max:500,step:1,modelValue:P.widthMax,"onUpdate:modelValue":L=>P.widthMax=L},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",a8,[A[94]||(A[94]=T("span",null,"宽度缩放",-1)),de(T("select",{"onUpdate:modelValue":L=>P.widthMode=L,class:"inp"},[...A[93]||(A[93]=[T("option",{value:"particle"},"跟随粒子",-1),T("option",{value:"fixed"},"固定",-1)])],8,l8),[[wt,P.widthMode]])]),T("label",c8,[de(T("input",{type:"checkbox","onUpdate:modelValue":L=>P.lifeLengthEnabled=L},null,8,h8),[[Et,P.lifeLengthEnabled]]),A[95]||(A[95]=T("span",{class:"switch-ui"},null,-1)),A[96]||(A[96]=T("span",null,"生命周期长度曲线",-1))]),P.lifeLengthEnabled?(K(),Mt(qs,{key:4,modelValue:P.lifeLengthCurve,"onUpdate:modelValue":L=>P.lifeLengthCurve=L,"default-value":R(D)},null,8,["modelValue","onUpdate:modelValue","default-value"])):Te("",!0),T("label",u8,[de(T("input",{type:"checkbox","onUpdate:modelValue":L=>P.shapeEnabled=L},null,8,d8),[[Et,P.shapeEnabled]]),A[97]||(A[97]=T("span",{class:"switch-ui"},null,-1)),A[98]||(A[98]=T("span",null,"形状曲线(首端 → 尾端宽度)",-1))]),P.shapeEnabled?(K(),Mt(qs,{key:5,modelValue:P.shapeCurve,"onUpdate:modelValue":L=>P.shapeCurve=L,"default-value":R(N)},null,8,["modelValue","onUpdate:modelValue","default-value"])):Te("",!0),T("div",f8,[A[99]||(A[99]=T("span",null,"颜色模式",-1)),T("div",m8,[T("button",{class:Le(["axis-mode",{on:P.colorMode==="particle"}]),onClick:L=>P.colorMode="particle"},"跟随粒子",10,p8),T("button",{class:Le(["axis-mode",{on:P.colorMode==="fixed"}]),onClick:L=>P.colorMode="fixed"},"固定",10,g8),T("button",{class:Le(["axis-mode",{on:P.colorMode==="curve"}]),onClick:L=>P.colorMode="curve"},"曲线",10,v8)])]),T("label",y8,[A[101]||(A[101]=T("span",null,"混合模式",-1)),de(T("select",{"onUpdate:modelValue":L=>P.blend=L,class:"inp"},[...A[100]||(A[100]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,x8),[[wt,P.blend]])]),P.colorMode==="fixed"?(K(),Q("label",b8,[A[102]||(A[102]=T("span",null,"固定颜色",-1)),de(T("input",{class:"colr",type:"color","onUpdate:modelValue":L=>P.color=L},null,8,w8),[[He,P.color]]),T("input",{class:"hex-input",value:P.color,onChange:L=>R(p)(P,L),onKeydown:zr(et(L=>R(m)(P,L),["prevent"]),["enter"])},null,40,S8)])):P.colorMode==="curve"?(K(),Mt(gS,{key:7,modelValue:P.colorGradient,"onUpdate:modelValue":L=>P.colorGradient=L},null,8,["modelValue","onUpdate:modelValue"])):Te("",!0),T("div",_8,[A[103]||(A[103]=T("span",null,"透明度模式",-1)),T("div",T8,[T("button",{class:Le(["axis-mode",{on:P.alphaMode==="particle"}]),onClick:L=>P.alphaMode="particle"},"跟随粒子",10,M8),T("button",{class:Le(["axis-mode",{on:P.alphaMode==="fixed"}]),onClick:L=>P.alphaMode="fixed"},"固定",10,C8),T("button",{class:Le(["axis-mode",{on:P.alphaMode==="curve"}]),onClick:L=>P.alphaMode="curve"},"曲线",10,A8)])]),P.alphaMode==="fixed"?(K(),Mt(Be,{key:8,label:"透明度",min:0,max:1,step:.01,modelValue:P.alpha,"onUpdate:modelValue":L=>P.alpha=L},null,8,["modelValue","onUpdate:modelValue"])):Te("",!0),P.alphaMode==="curve"?(K(),Mt(qs,{key:9,modelValue:P.alphaCurve,"onUpdate:modelValue":L=>P.alphaCurve=L,"default-value":R($)},null,8,["modelValue","onUpdate:modelValue","default-value"])):Te("",!0)]),_:2},1032,["resource","resource-count","onPick","onReset","onRemove","onUpdateWeight","onToggleLock"]))),128)),T("input",{ref_key:"trailTextureFileInput",ref:i,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:A[38]||(A[38]=(...P)=>R(l)&&R(l)(...P))},null,544),T("div",E8,[be(Be,{label:"网格行数",min:2,max:16,step:1,"model-value":R(t).config.trailGridRows,"onUpdate:modelValue":A[39]||(A[39]=P=>R(o)("trailGridRows",P))},null,8,["model-value"]),be(Be,{label:"网格列数",min:2,max:32,step:1,"model-value":R(t).config.trailGridCols,"onUpdate:modelValue":A[40]||(A[40]=P=>R(o)("trailGridCols",P))},null,8,["model-value"])]),A[105]||(A[105]=T("div",{class:"modifier-hint"},"每个粒子按资源比例生成一组同级拖尾骨骼;随机长度与宽度在粒子出生时确定,相同种子可稳定复现",-1))])):Te("",!0)]),T("div",I8,[T("label",R8,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[41]||(A[41]=P=>R(t).config.emitterFollow=P),disabled:R(t).config.streamBehavior==="loop"},null,8,P8),[[Et,R(t).config.emitterFollow]]),A[106]||(A[106]=T("span",{class:"switch-ui"},null,-1)),A[107]||(A[107]=T("span",null,"开启发射器跟随",-1))]),R(t).config.emitterFollow&&R(t).config.streamBehavior!=="loop"?(K(),Q("div",k8,[T("label",F8,[A[110]||(A[110]=T("span",null,"跟随模式",-1)),T("select",{value:R(t).config.emitterFollowMode,class:"inp",onChange:A[42]||(A[42]=P=>R(I)(P,R(t).config))},[A[108]||(A[108]=T("option",{value:"none"},"无",-1)),A[109]||(A[109]=T("option",{value:"path"},"跟随路径",-1)),R(g)||R(t).config.emitterFollowMode==="bone"?(K(),Q("option",B8,"选中的骨骼")):Te("",!0)],40,O8)]),R(t).config.emitterFollowMode==="path"?(K(),Q(Fe,{key:0},[T("label",L8,[A[112]||(A[112]=T("span",null,"跟随路径",-1)),de(T("select",{"onUpdate:modelValue":A[43]||(A[43]=P=>R(t).config.emitterFollowPathId=P),class:"inp"},[A[111]||(A[111]=T("option",{value:0},"无",-1)),(K(!0),Q(Fe,null,Dt(R(e).paths,P=>(K(),Q("option",{key:P.id,value:P.id},_e(P.name),9,D8))),128))],512),[[wt,R(t).config.emitterFollowPathId,void 0,{number:!0}]])]),T("label",N8,[A[114]||(A[114]=T("span",null,"发射器角度模式",-1)),de(T("select",{"onUpdate:modelValue":A[44]||(A[44]=P=>R(t).config.emitterAngleMode=P),class:"inp"},[...A[113]||(A[113]=[T("option",{value:"fixed"},"固定角度",-1),T("option",{value:"direction"},"跟随移动方向",-1)])],512),[[wt,R(t).config.emitterAngleMode]])]),A[120]||(A[120]=T("div",{class:"gravity-curve-title"},[T("span",null,"移动进度曲线 (0→1)")],-1)),be(qs,{modelValue:R(t).config.emitterFollowCurve,"onUpdate:modelValue":A[45]||(A[45]=P=>R(t).config.emitterFollowCurve=P),"default-value":R(O)},null,8,["modelValue","default-value"]),T("div",U8,[T("label",$8,[A[115]||(A[115]=T("span",null,"移动时长 (s)",-1)),de(T("input",{"onUpdate:modelValue":A[46]||(A[46]=P=>R(t).config.emitterFollowDuration=P),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[He,R(t).config.emitterFollowDuration,void 0,{number:!0}]])]),T("label",X8,[A[117]||(A[117]=T("span",null,"跟随空间",-1)),de(T("select",{"onUpdate:modelValue":A[47]||(A[47]=P=>R(t).config.emitterFollowSpace=P),class:"inp"},[...A[116]||(A[116]=[T("option",{value:"local"},"局部空间(GEN 移动)",-1),T("option",{value:"world"},"世界空间(粒子生成点移动)",-1)])],512),[[wt,R(t).config.emitterFollowSpace]])])]),T("label",V8,[A[119]||(A[119]=T("span",null,"移动方向",-1)),de(T("select",{"onUpdate:modelValue":A[48]||(A[48]=P=>R(t).config.emitterFollowDirection=P),class:"inp"},[...A[118]||(A[118]=[T("option",{value:"forward"},"正向(起点 → 终点)",-1),T("option",{value:"reverse"},"反向(终点 → 起点)",-1)])],512),[[wt,R(t).config.emitterFollowDirection]])]),be(Be,{label:"偏移起始点 (0-1)",min:0,max:1,step:.01,modelValue:R(t).config.emitterFollowOffset,"onUpdate:modelValue":A[49]||(A[49]=P=>R(t).config.emitterFollowOffset=P)},null,8,["modelValue"]),A[121]||(A[121]=T("div",{class:"modifier-hint"},"局部空间会移动整个发射器;世界空间只移动新粒子的生成点,已出生粒子留在世界位置。",-1))],64)):R(t).config.emitterFollowMode==="bone"?(K(),Q(Fe,{key:1},[R(v)?(K(),Q("div",Y8,[A[122]||(A[122]=At("跟随目标:",-1)),T("strong",null,_e(R(v).spine.name)+" / "+_e(R(v).boneName),1)])):(K(),Q("div",G8,"尚未绑定有效骨骼,请先在 Spine 层级树中选择骨骼。")),R(g)&&(!R(v)||R(g).spine.id!==R(v).spine.id||R(g).boneName!==R(v).boneName)?(K(),Q("button",{key:2,class:"bone-follow-rebind",onClick:A[50]||(A[50]=P=>R(F)(R(t).config))},_e(R(v)?"重新绑定":"绑定")+"当前选中骨骼:"+_e(R(g).spine.name)+" / "+_e(R(g).boneName),1)):Te("",!0),R(v)?(K(),Q(Fe,{key:3},[T("label",H8,[A[124]||(A[124]=T("span",null,"跟随空间",-1)),de(T("select",{"onUpdate:modelValue":A[51]||(A[51]=P=>R(t).config.emitterFollowSpace=P),class:"inp"},[...A[123]||(A[123]=[T("option",{value:"local"},"本地空间(随骨骼移动)",-1),T("option",{value:"world"},"世界空间(粒子生成后保持位置)",-1)])],512),[[wt,R(t).config.emitterFollowSpace]])]),T("div",j8,[T("label",W8,[A[125]||(A[125]=T("span",null,"位移偏移 X",-1)),de(T("input",{"onUpdate:modelValue":A[52]||(A[52]=P=>R(t).config.emitterFollowBoneOffsetX=P),type:"number",step:"1",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneOffsetX,void 0,{number:!0}]])]),T("label",z8,[A[126]||(A[126]=T("span",null,"位移偏移 Y",-1)),de(T("input",{"onUpdate:modelValue":A[53]||(A[53]=P=>R(t).config.emitterFollowBoneOffsetY=P),type:"number",step:"1",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneOffsetY,void 0,{number:!0}]])])]),T("div",q8,[T("label",K8,[A[127]||(A[127]=T("span",null,"旋转偏移",-1)),de(T("input",{"onUpdate:modelValue":A[54]||(A[54]=P=>R(t).config.emitterFollowBoneRotation=P),type:"number",step:"1",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneRotation,void 0,{number:!0}]])]),T("label",Z8,[A[128]||(A[128]=T("span",null,"缩放偏移 X",-1)),de(T("input",{"onUpdate:modelValue":A[55]||(A[55]=P=>R(t).config.emitterFollowBoneScaleX=P),type:"number",step:"0.05",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneScaleX,void 0,{number:!0}]])]),T("label",J8,[A[129]||(A[129]=T("span",null,"缩放偏移 Y",-1)),de(T("input",{"onUpdate:modelValue":A[56]||(A[56]=P=>R(t).config.emitterFollowBoneScaleY=P),type:"number",step:"0.05",class:"inp"},null,512),[[He,R(t).config.emitterFollowBoneScaleY,void 0,{number:!0}]])])]),A[130]||(A[130]=T("div",{class:"modifier-hint"},"发射器只跟随所选 Spine 骨骼的位置,不继承 Spine 的旋转或缩放;粒子变换使用粒子系统自身参数和上方偏移。",-1))],64)):Te("",!0)],64)):Te("",!0)])):Te("",!0)]),T("div",Q8,[T("label",e5,[de(T("input",{type:"checkbox","onUpdate:modelValue":A[57]||(A[57]=P=>R(t).config.collision=P)},null,512),[[Et,R(t).config.collision]]),A[131]||(A[131]=T("span",{class:"switch-ui"},null,-1)),A[132]||(A[132]=T("span",null,"开启碰撞",-1))]),R(t).config.collision?(K(),Q("div",t5,[A[133]||(A[133]=T("div",{class:"collision-filter-title"},"参与的碰撞对象",-1)),T("div",i5,[(K(!0),Q(Fe,null,Dt(R(y),P=>(K(),Q("span",{key:P.id,class:Le(["collision-filter-tag",{disabled:!P.enabled}]),title:P.enabled?P.name:`${P.name}(碰撞体已禁用)`},[T("span",null,_e(P.name),1),T("button",{type:"button","aria-label":`清除碰撞对象 ${P.name}`,onClick:L=>R(S)(P.id)},"×",8,n5)],10,s5))),128)),T("button",{type:"button",class:Le(["collision-filter-add",{active:R(x)}]),disabled:R(_).length===0,title:R(_).length?"加入场景碰撞对象":"没有可加入的碰撞对象",onClick:A[58]||(A[58]=P=>x.value=!R(x))},"+",10,r5)]),R(y).length===0?(K(),Q("div",o5,"未选择碰撞对象,当前粒子不会发生碰撞")):Te("",!0),R(x)&&R(_).length?(K(),Q("div",a5,[(K(!0),Q(Fe,null,Dt(R(_),P=>(K(),Q("button",{key:P.id,type:"button",onClick:L=>R(C)(P.id)},[T("span",null,_e(P.name),1),T("small",null,_e(P.enabled?"可用":"已禁用"),1)],8,l5))),128))])):Te("",!0),A[134]||(A[134]=T("div",{class:"modifier-hint"},"只有已加入且启用的场景碰撞对象会参与当前粒子系统的碰撞",-1))])):Te("",!0)]),be(Be,{label:"阻尼",min:0,max:2,step:.05,modelValue:R(t).config.damping,"onUpdate:modelValue":A[59]||(A[59]=P=>R(t).config.damping=P)},null,8,["modelValue"])],512),[[vi,!R(b).mods]])]))}}),h5=Qt(c5,[["__scopeId","data-v-4d0d64ec"]]),u5={class:"group"},d5={class:"caret"},f5={class:"group-body export-settings"},m5={class:"export-field"},p5={class:"export-field"},g5={class:"export-field"},v5={key:0,class:"export-help"},y5={class:"export-fps-row"},x5={class:"export-field export-fps-field"},b5={class:"export-checkbox"},w5={class:"export-switches"},S5={class:"switch-row export-switch"},_5={class:"switch-row export-switch"},T5={class:"switch-row export-switch export-switch-last"},M5=Jt({__name:"ExportSettingsSection",setup(s){const{exportSettings:e,collapsed:t,toggle:i,resetModule:n,normalizeExportFps:r,select:o}=br();return(a,c)=>(K(),Q("div",u5,[T("div",{class:"group-head",onClick:c[1]||(c[1]=l=>R(i)("export"))},[T("span",d5,_e(R(t).export?"▸":"▾"),1),c[11]||(c[11]=T("span",null,"导出设置",-1)),T("button",{class:"group-reset",title:"重置导出设置",onClick:c[0]||(c[0]=et(l=>R(n)("export"),["stop"]))},"重置")]),de(T("div",f5,[T("label",m5,[c[12]||(c[12]=T("span",null,"图片路径 (Spine Images Path)",-1)),de(T("input",{"onUpdate:modelValue":c[2]||(c[2]=l=>R(e).imagesPath=l),class:"inp export-input",type:"text",placeholder:"./images/"},null,512),[[He,R(e).imagesPath,void 0,{trim:!0}]])]),T("label",p5,[c[14]||(c[14]=T("span",null,"Spine 版本",-1)),de(T("select",{"onUpdate:modelValue":c[3]||(c[3]=l=>R(e).spineVersion=l),class:"inp export-input"},[...c[13]||(c[13]=[es('',5)])],512),[[wt,R(e).spineVersion]])]),T("label",g5,[c[16]||(c[16]=T("span",null,"关键帧插值曲线",-1)),de(T("select",{"onUpdate:modelValue":c[4]||(c[4]=l=>R(e).keyframeCurve=l),class:"inp export-input"},[...c[15]||(c[15]=[T("option",{value:"linear"},"线性 (Linear)",-1),T("option",{value:"bezier"},"平滑贝塞尔 (Smooth Bézier)",-1)])],512),[[wt,R(e).keyframeCurve]])]),c[25]||(c[25]=T("div",{class:"export-help"},"平滑贝塞尔会在误差允许范围内拟合连续运动;出生、死亡、附件切换和突变仍使用阶跃关键帧。",-1)),R(e).spineVersion==="3.8"?(K(),Q("div",v5,"Spine 3.8 不支持 4.x 的逐通道数组贝塞尔,导出时会转换为经过容差精简的分段线性关键帧。")):Te("",!0),T("div",y5,[T("label",x5,[c[17]||(c[17]=T("span",null,"导出 FPS",-1)),de(T("input",{"onUpdate:modelValue":c[5]||(c[5]=l=>R(e).fps=l),class:"inp export-input",type:"number",min:"1",max:"240",step:"1",onChange:c[6]||(c[6]=(...l)=>R(r)&&R(r)(...l))},null,544),[[He,R(e).fps,void 0,{number:!0}]])]),T("label",b5,[de(T("input",{"onUpdate:modelValue":c[7]||(c[7]=l=>R(e).omitFps=l),type:"checkbox"},null,512),[[Et,R(e).omitFps]]),c[18]||(c[18]=At("不写 fps",-1))])]),c[26]||(c[26]=T("div",{class:"export-help"},"修改 FPS 时保持动画实际秒数不变;“不写 fps”只省略 Spine 的 fps 元数据。",-1)),T("div",w5,[T("label",S5,[de(T("input",{"onUpdate:modelValue":c[8]||(c[8]=l=>R(e).integerFrameAlignment=l),type:"checkbox"},null,512),[[Et,R(e).integerFrameAlignment]]),c[19]||(c[19]=T("span",{class:"switch-ui"},null,-1)),c[20]||(c[20]=T("span",null,"整数帧对齐",-1))]),T("label",_5,[de(T("input",{"onUpdate:modelValue":c[9]||(c[9]=l=>R(e).bonePool=l),type:"checkbox"},null,512),[[Et,R(e).bonePool]]),c[21]||(c[21]=T("span",{class:"switch-ui"},null,-1)),c[22]||(c[22]=T("span",null,"骨骼对象池",-1))]),T("label",T5,[de(T("input",{"onUpdate:modelValue":c[10]||(c[10]=l=>R(e).excludeEmptyAnimations=l),type:"checkbox"},null,512),[[Et,R(e).excludeEmptyAnimations]]),c[23]||(c[23]=T("span",{class:"switch-ui"},null,-1)),c[24]||(c[24]=T("span",null,"排除无内容动画",-1))])])],512),[[vi,!R(t).export]])]))}}),C5=Qt(M5,[["__scopeId","data-v-ffed0f1f"]]),A5={class:"spine-export-actions"},E5=["disabled","title"],I5=["disabled"],R5=["disabled","title"],P5={key:0},k5=["href"],F5=["href"],O5=Jt({__name:"ParticleExportFooter",setup(s){const{exportSettings:e,exportBusy:t,exportTarget:i,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:c,connectorReady:l,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g}=br();return(v,x)=>(K(),Q(Fe,null,[T("div",A5,[T("button",{type:"button",class:"export-spine-json",disabled:R(t),title:R(t)?"正在重新计算并烘焙动画":`导出 Spine ${R(e).spineVersion} JSON`,onClick:x[0]||(x[0]=(...y)=>R(p)&&R(p)(...y))},_e(R(t)&&R(i)==="json"?"正在准备导出…":"导出Spine Json"),9,E5),T("button",{type:"button",class:"export-spine-images",disabled:R(t),title:"单独下载当前粒子系统使用的图片 ZIP",onClick:x[1]||(x[1]=(...y)=>R(g)&&R(g)(...y))},_e(R(t)&&R(i)==="images"?"正在整理图片…":"导出 images 包"),9,I5),T("button",{type:"button",class:"export-spine-project",disabled:R(t)||!R(l),title:R(d),onClick:x[2]||(x[2]=(...y)=>R(m)&&R(m)(...y))},[T("span",null,_e(R(t)&&R(i)==="spine"?"正在生成工程…":"导出 .spine 包"),1),!R(t)&&R(u)?(K(),Q("small",P5,_e(R(u)),1)):Te("",!0)],8,R5)]),T("div",{class:Le(["connector-status",R(c)])},[x[5]||(x[5]=T("span",{class:"connector-dot"},null,-1)),At(_e(R(a))+" ",1),R(h)?(K(),Q("a",{key:0,href:R(h),target:"_blank",rel:"noopener",title:"在本机连接器中授权当前网站"},"授权当前网站",8,k5)):Te("",!0),T("button",{type:"button",title:"重新检测连接器",onClick:x[3]||(x[3]=(...y)=>R(f)&&R(f)(...y))},"刷新")],2),R(n)?(K(),Q("div",{key:0,class:Le(["export-message",{error:R(r)}])},[At(_e(R(n))+" ",1),R(o)?(K(),Q("a",{key:0,href:R(o),target:"_blank",rel:"noopener",onClick:x[4]||(x[4]=y=>o.value="")},"授权当前网站",8,F5)):Te("",!0)],2)):Te("",!0)],64))}}),B5=Qt(O5,[["__scopeId","data-v-5f1ec706"]]),L5={class:"panel"},D5={class:"panel-scroll"},N5=Jt({__name:"ParticlePanel",setup(s){const{activeObjectType:e,sys:t}=BO();return(i,n)=>(K(),Q("div",L5,[n[0]||(n[0]=T("div",{class:"panel-header"},[T("span",null,"Spine粒子编辑器-Yeomai")],-1)),T("div",D5,[be(GO),be(gD),R(e)==="particle"&&R(t)?(K(),Q(Fe,{key:0},[be(iN),be(MN),be(I4),be(h5),be(C5)],64)):Te("",!0)]),be(B5)]))}}),U5=Qt(N5,[["__scopeId","data-v-a28d4278"]]),$5={class:"timeline"},X5={class:"tl-controls"},V5=["title"],Y5={class:"tl-range",title:"自定义播放起始帧"},G5=["max","onKeydown"],H5={class:"tl-range",title:"自定义播放结束帧"},j5=["min","max","onKeydown"],W5=["title"],z5={class:"tl-frame"},q5=["disabled"],K5=["onClick"],Z5={key:0},J5={class:"tl-animation-editor"},Q5={key:0,class:"tl-animation-error"},eU={class:"tl-animation-actions"},tU=["disabled"],iU={key:1,class:"tl-animation-hint"},sU={class:"tl-anim tl-spine-preview"},nU=["value","disabled"],rU={value:""},oU=["value"],aU={class:"tl-zoom"},lU={class:"tl-ticks"},cU={class:"tl-ticklabel"},hU={class:"tl-lanes"},uU=["onPointerdown"],dU={class:"lane-name"},fU=["onPointerdown"],mU=["onPointerdown"],pU=["onPointerdown"],gU={class:"lane-name"},vU={key:0,class:"tl-empty"},yU=Jt({__name:"Timeline",setup(s){const e=ao(),t=Ge(null),i=Ge(null),n=Ge(!1),r=Ge("animation"),o=Ge("");Ma(()=>{(!Array.isArray(e.timeline.animations)||!e.timeline.animations.length)&&(e.timeline.animations=["animation"]),e.timeline.animations.includes(e.timeline.animation)||(e.timeline.animation=e.timeline.animations[0]);for(const H of e.systems)(!H.animation||!e.timeline.animations.includes(H.animation))&&(H.animation=e.timeline.animations[0])});const a=qe(()=>e.systems.find(H=>H.id===e.activeId)||null),c=qe(()=>{const H=a.value;return!H||!V(H)?null:t1(H.config,m.value)});function l(){a.value&&(n.value=!n.value,r.value=a.value.animation,o.value="")}function h(H){const G=a.value;G&&(e.setSystemAnimation(G.id,H),r.value=H,o.value="")}function u(){const H=e.addAnimation();r.value=H,o.value=""}function d(){var z;const H=((z=a.value)==null?void 0:z.animation)||e.timeline.animation,G=r.value.trim();if(!G){o.value="动画名称不能为空";return}if(G!==H&&e.timeline.animations.includes(G)){o.value="动画名称不能重复";return}if(!e.renameAnimation(H,G)){o.value="无法修改动画名称";return}r.value=G,o.value=""}function f(){var z,ie;const H=((z=a.value)==null?void 0:z.animation)||e.timeline.animation;if(!e.removeAnimation(H)){o.value="至少需要保留一个动画";return}const G=((ie=a.value)==null?void 0:ie.animation)||e.timeline.animation;r.value=G,o.value=""}function p(H){var G;(G=i.value)!=null&&G.contains(H.target)||(n.value=!1)}Vn(()=>document.addEventListener("pointerdown",p)),pl(()=>document.removeEventListener("pointerdown",p));const m=qe(()=>Math.max(1,e.timeline.fps||30)),g=Ge(120),v=Ge({}),x=Ge({}),y=Ge({}),_=Ge({}),C=Ge(String(e.timeline.playbackStart)),S=Ge(String(e.timeline.playbackEnd));Xi(()=>e.timeline.playbackStart,H=>{C.value=String(H)}),Xi(()=>e.timeline.playbackEnd,H=>{S.value=String(H)});const b=qe(()=>e.timeline.totalFrames),M=qe(()=>g.value<=30?"放大":g.value>=300?"缩小":"适中"),I=qe(()=>e.spines.filter(H=>H.selectedAnimation&&H.animations.some(G=>G.name===H.selectedAnimation&&G.duration>0))),F=qe(()=>(e.activeObjectType==="spine"?e.spines.find(G=>G.id===e.activeObjectId&&G.animations.length):null)||e.spines.find(G=>G.animations.length)||null);function E(H){const G=F.value;G&&(G.selectedAnimation=H.target.value,e.recalcTotalFrames(),e.timeline.frame=0)}function k(){e.setPlaybackStart(Number(C.value)),C.value=String(e.timeline.playbackStart)}function O(){e.setPlaybackEnd(Number(S.value)),S.value=String(e.timeline.playbackEnd)}function D(){const H=c.value;H&&(e.setPlaybackEnd(H.end),e.setPlaybackStart(H.start))}function $(){var G;const H=((G=t.value)==null?void 0:G.clientWidth)||600;return g.value/H}const N=qe(()=>{const H=[],G=g.value;let z=1;g.value<=10?z=1:g.value<=50?z=5:g.value<=200?z=10:g.value<=500?z=50:z=100;for(let ie=0;ie<=G;ie+=z)H.push({f:ie,px:ie/$()});return H}),U=qe(()=>e.timeline.frame/$());function A(H){const G=H.config;return(v.value[H.id]??Math.max(0,Number(G.delay)||0))*m.value/$()}function P(H){const G=H.config,z=Math.max(0,Number(G.lifeMin)||0),ie=Math.max(0,Number(G.lifeMax)||0);return G.lifeMode==="fixed"?z:Math.max(z,ie)}function L(H){return X(H)}function B(H){if(H.config.mode!=="stream")return 0;if(H.config.streamBehavior==="loop"){const z=H.config;return(y.value[H.id]??lr(z,m.value).loop)/$()}return(x.value[H.id]??Math.max(1/m.value,Number(H.config.duration)||1))*m.value/$()}function X(H){const G=H.config;return G.mode==="stream"&&G.streamBehavior==="loop"?q(H)+B(H)+W(H):B(H)+P(H)*m.value/$()}function V(H){const G=H.config;return G.mode==="stream"&&G.streamBehavior==="loop"}function q(H){return V(H)?lr(H.config,m.value).start/$():0}function W(H){return V(H)?lr(H.config,m.value).end/$():0}function ne(H){var G;return((G=H.animations.find(z=>z.name===H.selectedAnimation))==null?void 0:G.duration)||0}function re(H){return(_.value[H.id]??Math.max(0,Number(H.timeOffset)||0))*m.value/$()}function le(H){return ne(H)*m.value/$()}function ue(H){const G=H.deltaY<0?.8:1.25;let z=g.value*G;z=Math.min(2e3,Math.max(10,z)),g.value=Math.round(z)}function ae(H){const G=t.value,z=fe=>{const te=G.getBoundingClientRect(),oe=Math.floor((fe.clientX-te.left)/te.width*g.value);e.timeline.frame=Math.max(0,Math.min(oe,b.value-1))};z(H);const ie=()=>{window.removeEventListener("pointermove",z),window.removeEventListener("pointerup",ie)};window.addEventListener("pointermove",z),window.addEventListener("pointerup",ie)}function xe(H,G){H.stopPropagation();const z=H.clientX,ie=Math.max(0,Number(G.config.delay)||0),fe=$()/m.value,te=ye=>{const we=(ye.clientX-z)*fe,Me=Math.max(0,Math.min(ie+we,600));v.value[G.id]=Math.round(Me*m.value)/m.value},oe=ye=>{window.removeEventListener("pointermove",te),window.removeEventListener("pointerup",ce),window.removeEventListener("pointercancel",Ce);const we=v.value[G.id];delete v.value[G.id],ye&&we!=null&&we!==ie&&(G.config.delay=we)},ce=()=>oe(!0),Ce=()=>oe(!1);window.addEventListener("pointermove",te),window.addEventListener("pointerup",ce),window.addEventListener("pointercancel",Ce)}function Y(H,G){var Xe;H.stopPropagation();const z=V(G),ie=Math.max(0,Number(G.config.duration)||0),fe=lr(G.config,m.value).loop,te=$()/m.value,oe=((Xe=H.currentTarget.closest(".lane-bar"))==null?void 0:Xe.getBoundingClientRect().left)??H.clientX,ce=q(G);let Ce=!1;const ye=pe=>{if(Ce=!0,z){const Ke=Math.min(1800,Math.max(1,Math.round((pe.clientX-oe-ce)/$())));y.value[G.id]=Ke}else{const Ke=Math.max(1/m.value,Math.min((pe.clientX-oe)*te,600));x.value[G.id]=Math.round(Ke*m.value)/m.value}},we=pe=>{window.removeEventListener("pointermove",ye),window.removeEventListener("pointerup",Me),window.removeEventListener("pointercancel",ve);const Ke=x.value[G.id],Ze=y.value[G.id];delete x.value[G.id],delete y.value[G.id],pe&&Ce&&z&&Ze!=null&&Ze!==fe?G.config.loopDurationFrames=Ze:pe&&Ce&&!z&&Ke!=null&&Ke!==ie&&(G.config.duration=Ke)},Me=()=>we(!0),ve=()=>we(!1);window.addEventListener("pointermove",ye),window.addEventListener("pointerup",Me),window.addEventListener("pointercancel",ve)}function j(H,G){H.stopPropagation();const z=H.clientX,ie=Math.max(0,Number(G.timeOffset)||0),fe=$()/m.value,te=ye=>{const we=Math.max(0,Math.min(ie+(ye.clientX-z)*fe,600));_.value[G.id]=Math.round(we*m.value)/m.value},oe=ye=>{window.removeEventListener("pointermove",te),window.removeEventListener("pointerup",ce),window.removeEventListener("pointercancel",Ce);const we=_.value[G.id];delete _.value[G.id],ye&&we!=null&&we!==ie&&(G.timeOffset=we,e.recalcTotalFrames())},ce=()=>oe(!0),Ce=()=>oe(!1);window.addEventListener("pointermove",te),window.addEventListener("pointerup",ce),window.addEventListener("pointercancel",Ce)}return(H,G)=>{var z,ie,fe;return K(),Q("div",$5,[T("div",X5,[T("button",{class:Le(["tl-btn",{on:R(e).timeline.playing}]),onClick:G[0]||(G[0]=te=>R(e).togglePlay()),title:R(e).timeline.playing?"暂停 (D)":"播放 (D)"},_e(R(e).timeline.playing?"❚❚":"▶"),11,V5),T("button",{class:"tl-btn",onClick:G[1]||(G[1]=te=>R(e).toStart()),title:"回到第一帧 (S)"},"⏮"),T("button",{class:"tl-btn",onClick:G[2]||(G[2]=te=>R(e).previousFrame()),title:"前一帧"},"◀"),T("button",{class:"tl-btn",onClick:G[3]||(G[3]=te=>R(e).nextFrame()),title:"后一帧"},"▶"),T("button",{class:"tl-btn",onClick:G[4]||(G[4]=te=>R(e).toEnd()),title:"移动到最后一帧"},"⏭"),T("button",{class:Le(["tl-btn",{on:R(e).timeline.loop}]),onClick:G[5]||(G[5]=te=>R(e).toggleLoop()),title:"循环"},"⟳",2),T("label",Y5,[G[10]||(G[10]=T("span",null,"A",-1)),de(T("input",{"onUpdate:modelValue":G[6]||(G[6]=te=>C.value=te),type:"number",min:"0",max:Math.max(0,R(e).timeline.playbackEnd-1),"aria-label":"播放起始帧",onChange:k,onKeydown:zr(et(k,["prevent"]),["enter"])},null,40,G5),[[He,C.value]])]),T("label",H5,[G[11]||(G[11]=T("span",null,"B",-1)),de(T("input",{"onUpdate:modelValue":G[7]||(G[7]=te=>S.value=te),type:"number",min:R(e).timeline.playbackStart+1,max:Math.max(1,R(e).timeline.totalFrames-1),"aria-label":"播放结束帧",onChange:O,onKeydown:zr(et(O,["prevent"]),["enter"])},null,40,j5),[[He,S.value]])]),c.value?(K(),Q("button",{key:0,class:"tl-loop-range",title:`设为闭合自循环范围 ${c.value.start}–${c.value.end}f`,onClick:D},"循环段",8,W5)):Te("",!0),T("span",z5,[G[12]||(G[12]=At("帧 ",-1)),T("b",null,_e(R(e).timeline.frame),1),G[13]||(G[13]=At(" / ",-1)),T("b",null,_e(Math.max(0,R(e).timeline.totalFrames-1)),1)]),G[18]||(G[18]=T("span",{class:"tl-legend"},[T("i",{class:"legend-emission"}),At("持续发射 "),T("i",{class:"legend-life"}),At("粒子存在 "),T("i",{class:"legend-spine"}),At("Spine 动画")],-1)),T("div",{ref_key:"animationMenuRef",ref:i,class:"tl-anim tl-owner-animation"},[G[16]||(G[16]=T("span",null,"所属动画",-1)),T("button",{class:"tl-animation-trigger",disabled:!a.value,title:"设置当前粒子系统所属的动画",onClick:et(l,["stop"])},[T("span",null,_e(((z=a.value)==null?void 0:z.animation)||R(e).timeline.animation),1),G[14]||(G[14]=T("i",null,"⌄",-1))],8,q5),n.value?(K(),Q("div",{key:0,class:"tl-animation-menu",onPointerdown:G[9]||(G[9]=et(()=>{},["stop"]))},[G[15]||(G[15]=T("div",{class:"tl-animation-menu-title"},"选择所属动画",-1)),(K(!0),Q(Fe,null,Dt(R(e).timeline.animations,te=>{var oe,ce;return K(),Q("button",{key:te,class:Le(["tl-animation-option",{on:((oe=a.value)==null?void 0:oe.animation)===te}]),onClick:Ce=>h(te)},[T("span",null,_e(te),1),((ce=a.value)==null?void 0:ce.animation)===te?(K(),Q("i",Z5,"✓")):Te("",!0)],10,K5)}),128)),T("div",J5,[de(T("input",{"onUpdate:modelValue":G[8]||(G[8]=te=>r.value=te),class:"tl-animation-name",maxlength:"64","aria-label":"动画名称",onKeydown:zr(d,["enter"])},null,544),[[He,r.value]]),T("button",{title:"重命名当前动画",onClick:d},"重命名")]),o.value?(K(),Q("div",Q5,_e(o.value),1)):Te("",!0),T("div",eU,[T("button",{onClick:u},"+ 新增"),T("button",{disabled:R(e).timeline.animations.length<=1,onClick:f},"删除",8,tU)]),R(e).timeline.animations.length<=1?(K(),Q("div",iU,"至少需要保留一个动画")):Te("",!0)],32)):Te("",!0)],512),T("label",sU,[G[17]||(G[17]=At("Spine 预览动画 ",-1)),T("select",{class:"tl-sel",value:((ie=F.value)==null?void 0:ie.selectedAnimation)||"",disabled:!F.value,onChange:E},[T("option",rU,_e(F.value?"无":"无可用 Spine 动画"),1),(K(!0),Q(Fe,null,Dt(((fe=F.value)==null?void 0:fe.animations)||[],te=>(K(),Q("option",{key:te.name,value:te.name},_e(te.name)+"("+_e(te.duration.toFixed(2))+"s) ",9,oU))),128))],40,nU)]),T("span",aU,_e(M.value),1)]),T("div",{class:"tl-viewport",ref_key:"vpRef",ref:t,onWheel:et(ue,["prevent"]),onPointerdown:ae},[T("div",lU,[(K(!0),Q(Fe,null,Dt(N.value,te=>(K(),Q("div",{key:te.f,class:"tl-tickline",style:di({left:te.px+"px"})},[T("span",cU,_e(te.f)+"f",1)],4))),128))]),T("div",{class:"tl-playhead",style:di({left:U.value+"px"})},null,4),T("div",hU,[(K(!0),Q(Fe,null,Dt(R(e).systems,(te,oe)=>(K(),Q("div",{key:te.id,class:"tl-lane"},[G[19]||(G[19]=T("span",{class:"lane-ico"},"●",-1)),T("div",{class:"lane-bar",style:di({left:A(te)+"px",width:L(te)+"px"}),onPointerdown:et(ce=>xe(ce,te),["stop"])},[T("span",dU,_e(te.config.name||"系统 "+(oe+1)),1),T("span",{class:Le(["bar-life",{"loop-life":V(te)}]),style:di({width:X(te)+"px"})},null,6),V(te)?(K(),Q(Fe,{key:0},[q(te)?(K(),Q("span",{key:0,class:"bar-loop-transition bar-loop-start",style:di({width:q(te)+"px"})},null,4)):Te("",!0),T("span",{class:"bar-emission bar-loop",style:di({left:q(te)+"px",width:B(te)+"px"})},[T("span",{class:"bar-handle",title:"拖动循环段时长",onPointerdown:et(ce=>Y(ce,te),["stop"])},null,40,fU)],4),W(te)?(K(),Q("span",{key:1,class:"bar-loop-transition bar-loop-end",style:di({left:q(te)+B(te)+"px",width:W(te)+"px"})},null,4)):Te("",!0)],64)):te.config.mode==="stream"?(K(),Q("span",{key:1,class:"bar-emission",style:di({width:B(te)+"px"})},[T("span",{class:"bar-handle",title:"拖动持续发射时长",onPointerdown:et(ce=>Y(ce,te),["stop"])},null,40,mU)],4)):Te("",!0)],44,uU)]))),128)),(K(!0),Q(Fe,null,Dt(I.value,te=>(K(),Q("div",{key:`spine-${te.id}`,class:"tl-lane spine-lane"},[G[20]||(G[20]=T("span",{class:"lane-ico spine-ico"},"◆",-1)),T("div",{class:"spine-bar",style:di({left:re(te)+"px",width:le(te)+"px"}),title:"拖动调整动画开始时间",onPointerdown:et(oe=>j(oe,te),["stop"])},[T("span",gU,_e(te.name)+" · "+_e(te.selectedAnimation),1)],44,pU)]))),128)),!R(e).systems.length&&!I.value.length?(K(),Q("div",vU,"暂无可显示的动画数据")):Te("",!0)])],544)])}}}),xU=Qt(yU,[["__scopeId","data-v-e305dee7"]]),bU={class:"transfer-heading"},wU={key:0},SU={class:"transfer-detail"},_U=Jt({__name:"TransferProgressOverlay",setup(s){const e=Ge(null);return Xi(()=>qt.visible,async t=>{var i;t&&(await Uh(),(i=e.value)==null||i.focus({preventScroll:!0}))},{flush:"post"}),(t,i)=>(K(),Mt(wT,{name:"transfer-fade"},{default:$h(()=>[R(qt).visible?(K(),Q("div",{key:0,ref_key:"overlayElement",ref:e,class:"transfer-overlay",role:"dialog","aria-modal":"true","aria-live":"polite",tabindex:"-1",onPointerdown:i[0]||(i[0]=et(()=>{},["stop","prevent"])),onPointerup:i[1]||(i[1]=et(()=>{},["stop","prevent"])),onClick:i[2]||(i[2]=et(()=>{},["stop","prevent"])),onDblclick:i[3]||(i[3]=et(()=>{},["stop","prevent"])),onContextmenu:i[4]||(i[4]=et(()=>{},["stop","prevent"])),onWheel:i[5]||(i[5]=et(()=>{},["stop","prevent"])),onKeydown:i[6]||(i[6]=et(()=>{},["stop","prevent"]))},[T("div",{class:Le(["transfer-dialog",{failed:R(qt).failed}])},[T("div",bU,[T("span",null,_e(R(qt).title),1),R(qt).indeterminate?Te("",!0):(K(),Q("strong",wU,_e(Math.round(R(qt).progress))+"%",1))]),T("div",{class:Le(["transfer-track",{indeterminate:R(qt).indeterminate}])},[T("div",{class:"transfer-bar",style:di(R(qt).indeterminate?void 0:{width:`${R(qt).progress}%`})},null,4)],2),T("div",SU,_e(R(qt).detail),1)],2)],544)):Te("",!0)]),_:1}))}}),TU=Qt(_U,[["__scopeId","data-v-016b4c9d"]]),MU=["inert","aria-hidden"],CU={class:"right"},AU={class:"stage-area"},EU=Jt({__name:"App",setup(s){const e=ao();zI(e);const t=Ge(360),i=Ge(180);function n(o){o.preventDefault();const a=l=>{const h=e.settings.parameterPanelOnRight?window.innerWidth-l.clientX:l.clientX,u=Math.max(240,Math.min(h,window.innerWidth-200));t.value=u},c=()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",c)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",c)}function r(o){o.preventDefault();const a=o.clientY,c=i.value,l=u=>{const d=Math.max(80,Math.min(c+(a-u.clientY),window.innerHeight-200));i.value=d},h=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",h)};window.addEventListener("pointermove",l),window.addEventListener("pointerup",h)}return(o,a)=>(K(),Q(Fe,null,[T("div",{class:Le(["layout",{"panel-right":R(e).settings.parameterPanelOnRight}]),inert:R(qt).visible?!0:void 0,"aria-hidden":R(qt).visible?"true":void 0},[T("div",{class:"parameter-panel",style:di({width:t.value+"px"})},[be(U5)],4),T("div",{class:"resizer-col",onPointerdown:n},null,32),T("div",CU,[T("div",AU,[be(PF)]),T("div",{class:"resizer-row",onPointerdown:r,title:"拖动调整时间轴高度"},null,32),T("div",{class:"timeline-area",style:di({height:i.value+"px"})},[be(xU)],4)])],10,MU),be(TU)],64))}}),IU=Qt(EU,[["__scopeId","data-v-d7e0e59a"]]);qT(IU).use(JT()).mount("#app");export{Kv as $,tn as A,Th as B,St as C,Si as D,Pe as E,$i as F,an as G,tt as H,pt as I,rS as J,zi as K,ns as L,gs as M,gr as N,cu as O,en as P,al as Q,ta as R,Cs as S,u3 as T,Ye as U,Gv as V,Is as W,nX as X,lO as Y,dl as Z,op as _,ze as a,ym as a$,qv as a0,Nw as a1,vp as a2,iX as a3,bh as a4,Ha as a5,w3 as a6,ja as a7,hu as a8,mm as a9,Cm as aA,Am as aB,mc as aC,Jn as aD,Rc as aE,pm as aF,Vw as aG,Yt as aH,Bw as aI,z$ as aJ,qo as aK,zv as aL,Ee as aM,Ue as aN,vm as aO,Pc as aP,jw as aQ,gm as aR,Gw as aS,Hw as aT,uu as aU,qw as aV,kc as aW,Jw as aX,Ww as aY,Kw as aZ,Qw as a_,ho as aa,yp as ab,xp as ac,jv as ad,Tl as ae,Ml as af,_l as ag,co as ah,En as ai,K$ as aj,Xw as ak,b3 as al,sa as am,dr as an,Sp as ao,nS as ap,y3 as aq,ul as ar,Wi as as,Wv as at,Q$ as au,la as av,Mm as aw,Em as ax,Im as ay,Rm as az,Qo as b,$n as b$,_h as b0,zw as b1,xr as b2,Zw as b3,bp as b4,h3 as b5,iS as b6,sS as b7,wp as b8,on as b9,eS as bA,_p as bB,lu as bC,oS as bD,xm as bE,ci as bF,l3 as bG,f3 as bH,Tw as bI,_w as bJ,Z$ as bK,Rt as bL,ca as bM,aS as bN,hS as bO,uS as bP,dS as bQ,lS as bR,cS as bS,v3 as bT,Tp as bU,xt as bV,Tm as bW,Yw as bX,Cw as bY,Aw as bZ,Ew as b_,c3 as ba,q$ as bb,Qe as bc,$w as bd,Uw as be,Lw as bf,Dw as bg,Qr as bh,wh as bi,x3 as bj,Iw as bk,Rw as bl,Ni as bm,Pw as bn,ia as bo,bi as bp,Mw as bq,Sh as br,kw as bs,Fw as bt,Ow as bu,Zv as bv,Sm as bw,Xr as bx,tS as by,wm as bz,ea as c,J$ as c0,p3 as c1,g3 as c2,m3 as c3,je as d,Ne as e,eX as f,Je as g,mi as h,Qc as i,Ki as j,Ot as k,De as l,ks as m,Bt as n,Qm as o,Zt as p,ll as q,Kn as r,ke as s,Hx as t,rp as u,nh as v,bm as w,Ur as x,Hv as y,_m as z}; diff --git a/dist/assets/index-Btg_SCRJ.js b/dist/assets/index-Cz2cACyM.js similarity index 99% rename from dist/assets/index-Btg_SCRJ.js rename to dist/assets/index-Cz2cACyM.js index 3e71de0..7e55e18 100644 --- a/dist/assets/index-Btg_SCRJ.js +++ b/dist/assets/index-Cz2cACyM.js @@ -1,2 +1,2 @@ -var ft=Object.defineProperty;var gt=(W,t,e)=>t in W?ft(W,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):W[t]=e;var T=(W,t,e)=>gt(W,typeof t!="symbol"?t+"":t,e);import{f as ht,R as pt,N as dt,ac as ut,Z as mt,b4 as yt,O as rt,b5 as at,U as D,B as Tt}from"./index-CyjCNKhS.js";import{$ as Rt,a0 as Yt,a1 as Ft,a2 as Et,y as _t,a3 as Ot,a4 as kt,a5 as Xt,a6 as Bt,a7 as Nt,a8 as Dt,a9 as $t,aa as zt,ab as Wt,ad as qt,H as Gt,ae as Jt,af as Ht,ag as Zt,ah as Kt,ai as Qt,aj as jt,ak as te,al as ee,am as se,an as ne,ao as ie,ap as oe,aq as re,ar as ae,as as le,at as ce,au as he,av as pe,aw as de,ax as ue,ay as fe,az as ge,aA as me,aB as ye,aC as Te,aD as be,aE as we,aF as xe,aG as Ae,aH as Pe,aI as Ie,aJ as Ce,aK as Ve,aL as Le,aM as Se,aN as Me,aO as ve,aP as Ue,aQ as Re,aR as Ye,aS as Fe,aT as Ee,x as _e,aU as Oe,aV as ke,aW as Xe,aX as Be,aY as Ne,aZ as De,a_ as $e,a$ as ze,b0 as We,b1 as qe,b2 as Ge,b3 as Je,b6 as He,b7 as Ze,b8 as Ke,b9 as Qe,ba as je,bb as ts,bc as es,bd as ss,be as ns,bf as is,bg as os,bh as rs,bi as as,bj as ls,bk as cs,bl as hs,bm as ps,bn as ds,bo as us,bp as fs,bq as gs,br as ms,bs as ys,bt as Ts,bu as bs,w as ws,X as xs,J as As,Y as Ps,z as Is,bv as Cs,bw as Vs,bx as Ls,by as Ss,bz as Ms,bA as vs,bB as Us,bC as Rs,bD as Ys,bE as Fs,bF as Es,bG as _s,T as Os,bH as ks,bI as Xs,b as Bs,bJ as Ns,c as Ds,bK as $s,bL as zs,bM as Ws,bN as qs,bO as Gs,bP as Js,bQ as Hs,bR as Zs,bS as Ks,bT as Qs,bU as js,bV as tn,bW as en,bX as sn,bY as nn,bZ as on,b_ as rn,V as an,b$ as ln,c0 as cn,c1 as hn,c2 as pn,c3 as dn}from"./index-CyjCNKhS.js";class It{constructor(t){T(this,"skeletonData");T(this,"animationToMixTime",{});T(this,"defaultMix",0);if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,n){return typeof t=="string"?this.setMix1(t,e,n):this.setMix2(t,e,n)}setMix1(t,e,n){const s=this.skeletonData.findAnimation(t);if(!s)throw new Error(`Animation not found: ${t}`);const i=this.skeletonData.findAnimation(e);if(!i)throw new Error(`Animation not found: ${e}`);this.setMix2(s,i,n)}setMix2(t,e,n){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");const s=`${t.name}.${e.name}`;this.animationToMixTime[s]=n}getMix(t,e){const n=`${t.name}.${e.name}`,s=this.animationToMixTime[n];return s===void 0?this.defaultMix:s}}class Ct{constructor(t,e="",n=new bt,s=new lt){T(this,"textureLoader");T(this,"pathPrefix");T(this,"downloader");T(this,"cache");T(this,"errors",{});T(this,"toLoad",0);T(this,"loaded",0);T(this,"texturePmaInfo",{});this.textureLoader=t,this.pathPrefix=e,this.downloader=n,this.cache=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,n){this.toLoad--,this.loaded++,this.cache.assets[e]=n,this.cache.assetsRefCount[e]=(this.cache.assetsRefCount[e]||0)+1,t&&t(e,n)}error(t,e,n){this.toLoad--,this.loaded++,this.errors[e]=n,t&&t(e,n)}loadAll(){return new Promise((e,n)=>{const s=()=>{if(this.isLoadingComplete()){this.hasErrors()?n(this.errors):e(this);return}requestAnimationFrame(s)};requestAnimationFrame(s)})}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadBinary(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load binary ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}loadText(t,e=()=>{},n=()=>{}){t=this.start(t),this.downloader.downloadText(t,s=>{this.success(e,t,s)},(s,i)=>{this.error(n,t,`Couldn't load text ${t}: status ${s}, ${i}`)})}loadJson(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadJson(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load JSON ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}reuseAssets(t,e=()=>{},n=()=>{}){const s=this.cache.getAsset(t),i=s!==void 0;return i&&(this.cache.assetsLoaded[t]=s.then(o=>(o=o instanceof Image||o instanceof ImageBitmap?this.textureLoader(o):o,this.success(e,t,o),o)).catch(o=>{this.error(n,t,o)})),i}loadTexture(t,e=()=>{},n=()=>{}){if(t=this.start(t),this.reuseAssets(t,e,n))return;const s=this.texturePmaInfo[t];this.cache.assetsLoaded[t]=new Promise((i,o)=>{if(!!!(typeof window<"u"&&typeof navigator<"u"&&window.document))fetch(t,{mode:"cors"}).then(c=>{if(c.ok)return c.blob();const a=`Couldn't load image: ${t}`;this.error(n,t,`Couldn't load image: ${t}`),o(a)}).then(c=>c?createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null).then(c=>{if(c){const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)}});else{const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)},c.onerror=()=>{const a=`Couldn't load image: ${t}`;this.error(n,t,a),o(a)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),c.src=t}})}loadTextureAtlas(t,e=()=>{},n=()=>{},s){const i=t.lastIndexOf("/"),o=i>=0?t.substring(0,i+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((r,l)=>{this.downloader.downloadText(t,c=>{try{const a=this.createTextureAtlas(c,o,t,s);let h=a.pages.length,m=!1;if(h===0){this.success(e,t,a),r(a);return}for(const y of a.pages)this.loadTexture(this.texturePath(o,y.name,s),(A,u)=>{m||(y.setTexture(u),--h===0&&(this.success(e,t,a),r(a)))},(A,u)=>{if(!m){const g=`Couldn't load texture ${t} page image: ${A}`;this.error(n,t,g),l(g)}m=!0})}catch(a){const h=`Couldn't parse texture atlas ${t}: ${a.message}`;this.error(n,t,h),l(h)}},(c,a)=>{const h=`Couldn't load texture atlas ${t}: status ${c}, ${a}`;this.error(n,t,h),l(h)})}))}loadTextureAtlasButNoTextures(t,e=()=>{},n=()=>{}){const s=t.lastIndexOf("/"),i=s>=0?t.substring(0,s+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((o,r)=>{this.downloader.downloadText(t,l=>{try{const c=this.createTextureAtlas(l,i,t);this.success(e,t,c),o(c)}catch(c){const a=`Couldn't parse texture atlas ${t}: ${c.message}`;this.error(n,t,a),r(a)}},(l,c)=>{const a=`Couldn't load texture atlas ${t}: status ${l}, ${c}`;this.error(n,t,a),r(a)})}))}async loadBinaryAsync(t){return new Promise((e,n)=>{this.loadBinary(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadJsonAsync(t){return new Promise((e,n)=>{this.loadJson(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAsync(t){return new Promise((e,n)=>{this.loadTexture(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasAsync(t){return new Promise((e,n)=>{this.loadTextureAtlas(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasButNoTexturesAsync(t){return new Promise((e,n)=>{this.loadTextureAtlasButNoTextures(t,(s,i)=>e(i),(s,i)=>n(i))})}setCache(t){this.cache=t}get(t){return this.cache.assets[this.pathPrefix+t]}require(t){t=this.pathPrefix+t;const e=this.cache.assets[t];if(e)return e;const n=this.errors[t];throw Error(`Asset not found: ${t}${n?` +var ft=Object.defineProperty;var gt=(W,t,e)=>t in W?ft(W,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):W[t]=e;var T=(W,t,e)=>gt(W,typeof t!="symbol"?t+"":t,e);import{f as ht,R as pt,N as dt,ac as ut,Z as mt,b4 as yt,O as rt,b5 as at,U as D,B as Tt}from"./index-9ofazf7F.js";import{$ as Rt,a0 as Yt,a1 as Ft,a2 as Et,y as _t,a3 as Ot,a4 as kt,a5 as Xt,a6 as Bt,a7 as Nt,a8 as Dt,a9 as $t,aa as zt,ab as Wt,ad as qt,H as Gt,ae as Jt,af as Ht,ag as Zt,ah as Kt,ai as Qt,aj as jt,ak as te,al as ee,am as se,an as ne,ao as ie,ap as oe,aq as re,ar as ae,as as le,at as ce,au as he,av as pe,aw as de,ax as ue,ay as fe,az as ge,aA as me,aB as ye,aC as Te,aD as be,aE as we,aF as xe,aG as Ae,aH as Pe,aI as Ie,aJ as Ce,aK as Ve,aL as Le,aM as Se,aN as Me,aO as ve,aP as Ue,aQ as Re,aR as Ye,aS as Fe,aT as Ee,x as _e,aU as Oe,aV as ke,aW as Xe,aX as Be,aY as Ne,aZ as De,a_ as $e,a$ as ze,b0 as We,b1 as qe,b2 as Ge,b3 as Je,b6 as He,b7 as Ze,b8 as Ke,b9 as Qe,ba as je,bb as ts,bc as es,bd as ss,be as ns,bf as is,bg as os,bh as rs,bi as as,bj as ls,bk as cs,bl as hs,bm as ps,bn as ds,bo as us,bp as fs,bq as gs,br as ms,bs as ys,bt as Ts,bu as bs,w as ws,X as xs,J as As,Y as Ps,z as Is,bv as Cs,bw as Vs,bx as Ls,by as Ss,bz as Ms,bA as vs,bB as Us,bC as Rs,bD as Ys,bE as Fs,bF as Es,bG as _s,T as Os,bH as ks,bI as Xs,b as Bs,bJ as Ns,c as Ds,bK as $s,bL as zs,bM as Ws,bN as qs,bO as Gs,bP as Js,bQ as Hs,bR as Zs,bS as Ks,bT as Qs,bU as js,bV as tn,bW as en,bX as sn,bY as nn,bZ as on,b_ as rn,V as an,b$ as ln,c0 as cn,c1 as hn,c2 as pn,c3 as dn}from"./index-9ofazf7F.js";class It{constructor(t){T(this,"skeletonData");T(this,"animationToMixTime",{});T(this,"defaultMix",0);if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,n){return typeof t=="string"?this.setMix1(t,e,n):this.setMix2(t,e,n)}setMix1(t,e,n){const s=this.skeletonData.findAnimation(t);if(!s)throw new Error(`Animation not found: ${t}`);const i=this.skeletonData.findAnimation(e);if(!i)throw new Error(`Animation not found: ${e}`);this.setMix2(s,i,n)}setMix2(t,e,n){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");const s=`${t.name}.${e.name}`;this.animationToMixTime[s]=n}getMix(t,e){const n=`${t.name}.${e.name}`,s=this.animationToMixTime[n];return s===void 0?this.defaultMix:s}}class Ct{constructor(t,e="",n=new bt,s=new lt){T(this,"textureLoader");T(this,"pathPrefix");T(this,"downloader");T(this,"cache");T(this,"errors",{});T(this,"toLoad",0);T(this,"loaded",0);T(this,"texturePmaInfo",{});this.textureLoader=t,this.pathPrefix=e,this.downloader=n,this.cache=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,n){this.toLoad--,this.loaded++,this.cache.assets[e]=n,this.cache.assetsRefCount[e]=(this.cache.assetsRefCount[e]||0)+1,t&&t(e,n)}error(t,e,n){this.toLoad--,this.loaded++,this.errors[e]=n,t&&t(e,n)}loadAll(){return new Promise((e,n)=>{const s=()=>{if(this.isLoadingComplete()){this.hasErrors()?n(this.errors):e(this);return}requestAnimationFrame(s)};requestAnimationFrame(s)})}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadBinary(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load binary ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}loadText(t,e=()=>{},n=()=>{}){t=this.start(t),this.downloader.downloadText(t,s=>{this.success(e,t,s)},(s,i)=>{this.error(n,t,`Couldn't load text ${t}: status ${s}, ${i}`)})}loadJson(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadJson(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load JSON ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}reuseAssets(t,e=()=>{},n=()=>{}){const s=this.cache.getAsset(t),i=s!==void 0;return i&&(this.cache.assetsLoaded[t]=s.then(o=>(o=o instanceof Image||o instanceof ImageBitmap?this.textureLoader(o):o,this.success(e,t,o),o)).catch(o=>{this.error(n,t,o)})),i}loadTexture(t,e=()=>{},n=()=>{}){if(t=this.start(t),this.reuseAssets(t,e,n))return;const s=this.texturePmaInfo[t];this.cache.assetsLoaded[t]=new Promise((i,o)=>{if(!!!(typeof window<"u"&&typeof navigator<"u"&&window.document))fetch(t,{mode:"cors"}).then(c=>{if(c.ok)return c.blob();const a=`Couldn't load image: ${t}`;this.error(n,t,`Couldn't load image: ${t}`),o(a)}).then(c=>c?createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null).then(c=>{if(c){const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)}});else{const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)},c.onerror=()=>{const a=`Couldn't load image: ${t}`;this.error(n,t,a),o(a)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),c.src=t}})}loadTextureAtlas(t,e=()=>{},n=()=>{},s){const i=t.lastIndexOf("/"),o=i>=0?t.substring(0,i+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((r,l)=>{this.downloader.downloadText(t,c=>{try{const a=this.createTextureAtlas(c,o,t,s);let h=a.pages.length,m=!1;if(h===0){this.success(e,t,a),r(a);return}for(const y of a.pages)this.loadTexture(this.texturePath(o,y.name,s),(A,u)=>{m||(y.setTexture(u),--h===0&&(this.success(e,t,a),r(a)))},(A,u)=>{if(!m){const g=`Couldn't load texture ${t} page image: ${A}`;this.error(n,t,g),l(g)}m=!0})}catch(a){const h=`Couldn't parse texture atlas ${t}: ${a.message}`;this.error(n,t,h),l(h)}},(c,a)=>{const h=`Couldn't load texture atlas ${t}: status ${c}, ${a}`;this.error(n,t,h),l(h)})}))}loadTextureAtlasButNoTextures(t,e=()=>{},n=()=>{}){const s=t.lastIndexOf("/"),i=s>=0?t.substring(0,s+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((o,r)=>{this.downloader.downloadText(t,l=>{try{const c=this.createTextureAtlas(l,i,t);this.success(e,t,c),o(c)}catch(c){const a=`Couldn't parse texture atlas ${t}: ${c.message}`;this.error(n,t,a),r(a)}},(l,c)=>{const a=`Couldn't load texture atlas ${t}: status ${l}, ${c}`;this.error(n,t,a),r(a)})}))}async loadBinaryAsync(t){return new Promise((e,n)=>{this.loadBinary(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadJsonAsync(t){return new Promise((e,n)=>{this.loadJson(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAsync(t){return new Promise((e,n)=>{this.loadTexture(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasAsync(t){return new Promise((e,n)=>{this.loadTextureAtlas(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasButNoTexturesAsync(t){return new Promise((e,n)=>{this.loadTextureAtlasButNoTextures(t,(s,i)=>e(i),(s,i)=>n(i))})}setCache(t){this.cache=t}get(t){return this.cache.assets[this.pathPrefix+t]}require(t){t=this.pathPrefix+t;const e=this.cache.assets[t];if(e)return e;const n=this.errors[t];throw Error(`Asset not found: ${t}${n?` ${n}`:""}`)}remove(t){t=this.pathPrefix+t;const e=this.cache.assets[t];return e.dispose&&e.dispose(),delete this.cache.assets[t],delete this.cache.assetsRefCount[t],delete this.cache.assetsLoaded[t],e}removeAll(){for(const t in this.cache.assets){const e=this.cache.assets[t];e.dispose&&e.dispose()}this.cache.assets={},this.cache.assetsLoaded={},this.cache.assetsRefCount={}}isLoadingComplete(){return this.toLoad===0}getToLoad(){return this.toLoad}getLoaded(){return this.loaded}dispose(){this.removeAll()}disposeAsset(t){const e=this.cache.assets[t];if(e instanceof ht){e.dispose();return}this.disposeAssetInternal(t)}hasErrors(){return Object.keys(this.errors).length>0}getErrors(){return this.errors}disposeAssetInternal(t){if(this.cache.assetsRefCount[t]>0&&--this.cache.assetsRefCount[t]===0)return this.remove(t)}createTextureAtlas(t,e,n,s){const i=new ht(t);i.dispose=()=>{var o;if(!(this.cache.assetsRefCount[n]<=0)){this.disposeAssetInternal(n);for(const r of i.pages)(o=r.texture)==null||o.dispose()}};for(const o of i.pages){const r=this.texturePath(e,o.name,s);this.texturePmaInfo[this.pathPrefix+r]=o.pma}return i}createTexture(t,e,n){const s=this.textureLoader(n,e),i=s.dispose.bind(s);return s.dispose=()=>{this.disposeAssetInternal(t)&&i()},s}texturePath(t,e,n){return n?n[e]:t+e}}const nt=class nt{constructor(){T(this,"assets",{});T(this,"assetsRefCount",{});T(this,"assetsLoaded",{})}static getCache(t){const e=nt.AVAILABLE_CACHES.get(t);if(e)return e;const n=new nt;return nt.AVAILABLE_CACHES.set(t,n),n}async addAsset(t,e){return this.assetsLoaded[t]=Promise.resolve(e),this.assets[t]=e,e}getAsset(t){return this.assetsLoaded[t]}};T(nt,"AVAILABLE_CACHES",new Map);let lt=nt;class bt{constructor(){T(this,"callbacks",{});T(this,"rawDataUris",{})}dataUriToString(t){if(!t.startsWith("data:"))throw new Error("Not a data URI.");let e=t.indexOf("base64,");return e!==-1?(e+=7,atob(t.substr(e))):t.substr(t.indexOf(",")+1)}base64ToUint8Array(t){var e=window.atob(t),n=e.length,s=new Uint8Array(n);for(let i=0;i{this.finish(t,i.status,i.responseText)};i.onload=o,i.onerror=o,i.send()}downloadJson(t,e,n){this.downloadText(t,s=>{e(JSON.parse(s))},n)}downloadBinary(t,e,n){if(this.start(t,e,n))return;const s=this.rawDataUris[t];if(s&&!s.includes(".")){try{this.finish(t,200,this.dataUriToUint8Array(s))}catch(r){this.finish(t,400,JSON.stringify(r))}return}const i=new XMLHttpRequest;i.open("GET",s||t,!0),i.responseType="arraybuffer";const o=()=>{this.finish(t,i.status,i.response)};i.onload=()=>{i.status===200||i.status===0?this.finish(t,200,new Uint8Array(i.response)):o()},i.onerror=o,i.send()}start(t,e,n){let s=this.callbacks[t];try{if(s)return!0;this.callbacks[t]=s=[]}finally{s.push(e,n)}}finish(t,e,n){const s=this.callbacks[t];if(delete this.callbacks[t],e===200||e===0)for(let i=0,o=s.length;iD.newFloatArray(16)))}update(t,e){if(!t)throw new Error("skeleton cannot be null.");const n=this.boundingBoxes,s=this.polygons,i=this.polygonPool,o=t.slots,r=o.length;n.length=0,i.freeAll(s),s.length=0;for(let l=0;l=this.minX&&t<=this.maxX&&e>=this.minY&&e<=this.maxY}aabbIntersectsSegment(t,e,n,s){const i=this.minX,o=this.minY,r=this.maxX,l=this.maxY;if(t<=i&&n<=i||e<=o&&s<=o||t>=r&&n>=r||e>=l&&s>=l)return!1;const c=(s-e)/(n-t);let a=c*(i-t)+e;if(a>o&&ao&&ai&&hi&&ht.minX&&this.minYt.minY}containsPoint(t,e){const n=this.polygons;for(let s=0,i=n.length;s=n||a=n){const h=s[l];h+(n-c)/(a-c)*(s[o]-h)=h&&f<=A||f>=A&&f<=h)&&(f>=e&&f<=s||f>=s&&f<=e)){const x=(a*L-c*g)/C;if((x>=m&&x<=u||x>=u&&x<=m)&&(x>=n&&x<=i||x>=i&&x<=n))return!0}h=A,m=u}return!1}getPolygon(t){if(!t)throw new Error("boundingBox cannot be null.");const e=this.boundingBoxes.indexOf(t);return e===-1?null:this.polygons[e]}getWidth(){return this.maxX-this.minX}getHeight(){return this.maxY-this.minY}}class z{constructor(){T(this,"convexPolygons",[]);T(this,"convexPolygonsIndices",[]);T(this,"indicesArray",[]);T(this,"isConcaveArray",[]);T(this,"triangles",[]);T(this,"polygonPool",new at(()=>[]));T(this,"polygonIndicesPool",new at(()=>[]))}triangulate(t){const e=t;let n=t.length>>1;const s=this.indicesArray;s.length=0;for(let r=0;r3;){let r=n-1,l=0,c=1;for(;;){t:if(!i[l]){const m=s[r]<<1,y=s[l]<<1,A=s[c]<<1,u=e[m],g=e[m+1],b=e[y],L=e[y+1],C=e[A],f=e[A+1];for(let x=c+10);r=l>0?l-1:n-1,c=l+10?l-1:n-1,h=l0&&(s.push(r),i.push(o),r=this.polygonPool.obtain(),o=this.polygonIndicesPool.obtain()),r.length=0,r.push(u,g,b,L),r.push(C,f),o.length=0,o.push(m,y,A),c=z.winding(u,g,b,L,C,f),l=m}r.length>0&&(s.push(r),i.push(o));for(let a=0,h=s.length;a=0;a--)r=s[a],r.length===0?(s.splice(a,1),this.polygonPool.free(r),o=i[a],i.splice(a,1),this.polygonIndicesPool.free(o)):r.push(r[0],r[1]);return s}static isConcave(t,e,n,s){const i=s[t>0?t-1:e-1]<<1,o=s[t]<<1,r=s[t+1=0}static winding(t,e,n,s,i,o){return t*(o-s)+n*(e-o)+i*(s-e)>=0?1:-1}}class wt{constructor(){T(this,"triangulator",null);T(this,"clippingPolygon",[]);T(this,"clippingPolygons",[]);T(this,"clipOutput",[]);T(this,"clippedVertices",[]);T(this,"clippedUVs",[]);T(this,"clippedTriangles",[]);T(this,"inverseVertices",[]);T(this,"_clippedVerticesTyped",new Float32Array(1024));T(this,"_clippedUVsTyped",new Float32Array(1024));T(this,"_clippedTrianglesTyped",new Uint16Array(1024));T(this,"clippedVerticesTyped",new Float32Array(0));T(this,"clippedUVsTyped",new Float32Array(0));T(this,"clippedTrianglesTyped",new Uint16Array(0));T(this,"clippedVerticesLength",0);T(this,"clippedUVsLength",0);T(this,"clippedTrianglesLength",0);T(this,"scratch",[]);T(this,"inverse",!1);T(this,"clipAttachment",null)}clipStart(t,e,n){if(this.clipAttachment)return;const s=n.worldVerticesLength;this.clipAttachment=n,this.inverse=n.inverse;const i=D.setArraySize(this.clippingPolygon,s);n.computeWorldVertices(t,e,0,s,i,0,2);const o=this.clippingPolygon,r=this.makeClockwise(o);r||this.inverse||n.convex?(r||this.makeConvex(o),this.clippingPolygon.push(o[0],o[1]),this.clippingPolygons.push(o)):(this.triangulator===null&&(this.triangulator=new z),this.clippingPolygons.push(...this.triangulator.decompose(o,this.triangulator.triangulate(o))))}clipEnd(t){this.clipAttachment&&(t&&this.clipAttachment.endSlot!==t.data||(this.clipAttachment=null,this.clippingPolygons.length=0))}isClipping(){return this.clipAttachment!=null}clipTriangles(t,e,n,s,i,o,r,l){return s&&i&&o&&typeof r=="boolean"&&typeof l=="number"?this.clipTrianglesRender(t,e,n,s,i,o,r,l):this.clipTrianglesNoRender(t,e,n)}clipTrianglesNoRender(t,e,n){const s=this.clippedVertices;s.length=0;const i=this.clippedTriangles;i.length=0;let o=0;if(this.inverse){const h=this.clippingPolygons[0];for(let m=0;m>1,I=s.length;const R=D.setArraySize(s,I+P);D.arrayCopy(f,x,R,I,P),I=i.length;const v=D.setArraySize(i,I+3*(M-2));for(let V=1;V>1;const P=D.setArraySize(s,f+x);D.arrayCopy(a,0,P,f,x),f=i.length;const M=D.setArraySize(i,f+3*(S-2));S--;for(let I=1;I>1;let F=c.length;const N=D.setArraySize(c,F+G*l);for(let X=0;X>1;q===0&&(U=P-v,O=R-S,B=L-R,K=v-C,q=1/(U*B-O*K));const E=D.setArraySize(c,d+_*l);for(let Y=0;Y>1;let Y=this.clippedVerticesLength;const G=Y+k*o,F=this.clippedUVsLength+k*2;r.length>1;J===0&&(O=M-V,B=v-P,K=L-v,q=V-C,J=1/(O*K-B*q));const k=p+E*o;r.length=2?(a=this.clipOutput,h=this.scratch):(a=this.scratch,h=this.clipOutput);const m=r;a.length=8;const y=a;y[0]=t,y[1]=e,y[2]=n,y[3]=s,y[4]=i,y[5]=o,y[6]=t,y[7]=e,h.length=0;const A=r.length-4;for(let u=0;;u+=2){const g=m[u],b=m[u+1],L=g-m[u+2],C=b-m[u+3],f=h.length,x=a;t=x[0],e=x[1];let S=C*(g-t)-L*(b-e);for(let M=2,I=a.length-2;M<=I;M+=2){n=x[M],s=x[M+1];const R=C*(g-n)-L*(b-s);if(S>0)if(R>0)h.push(n,s);else{const v=n-t,V=s-e,w=S/(v*C-V*L);w>=0&&w<=1?(h.push(t+v*w,e+V*w),c=!0):h.push(n,s)}else if(R>0){const v=n-t,V=s-e,w=S/(v*C-V*L);w>=0&&w<=1?(h.push(t+v*w,e+V*w,n,s),c=!0):h.push(n,s)}else c=!0;t=n,e=s,S=R}if(f===h.length)return l.length=0,!0;if(h.push(h[0],h[1]),u===A)break;const P=h;h=a,h.length=0,a=P}if(l!==h){l.length=0;for(let u=0,g=h.length-2;u=2?(c=this.clipOutput,a=this.scratch):(c=this.scratch,a=this.clipOutput),c.length=8;let h=r,m=c;m[0]=t,m[1]=e,m[2]=n,m[3]=s,m[4]=i,m[5]=o,m[6]=t,m[7]=e,a.length=0;for(let y=0;;y+=2){const A=h[y],u=h[y+1],g=A-h[y+2],b=u-h[y+3],L=a.length,C=this.inverseVertices.length;this.inverseVertices.push(0),m=c,t=m[0],e=m[1];let f=b*(A-t)-g*(u-e);for(let P=2,M=c.length-2;P<=M;P+=2){n=m[P],s=m[P+1];const I=b*(A-n)-g*(u-s);if(f>0)if(I>0)a.push(n,s);else{const R=n-t,v=s-e,V=f/(R*b-v*g);if(V>=0&&V<=1){const w=t+R*V,U=e+v*V;a.push(w,U),this.inverseVertices.push(w,U,n,s)}else a.push(n,s)}else if(I>0){const R=n-t,v=s-e,V=f/(R*b-v*g);if(V>=0&&V<=1){const w=t+R*V,U=e+v*V;this.inverseVertices.push(w,U),a.push(w,U,n,s)}else a.push(n,s)}else this.inverseVertices.push(n,s);t=n,e=s,f=I}const x=this.inverseVertices.length-C-1;if(x>=6?this.inverseVertices[C]=x:this.inverseVertices.length=C,L===a.length||(a.push(a[0],a[1]),y===l))break;const S=a;a=c,a.length=0,c=S}}makeClockwise(t){const e=t,n=t.length;let s=!0,i=!0,o=0,r=e[n-2],l=e[n-1],c=e[0],a=e[1];for(let m=2;m=0,r=c,l=a,c=y,a=A}o+=c*e[1]-e[0]*a;const h=(c-r)*(e[1]-a)-(a-l)*(e[0]-c);if(i=i&&h<=0,s=s&&h>=0,o>=0){for(let m=0,y=n-2,A=n>>1;m=0&&(s[a]>l||s[a]===l&&s[a+1]>c);a-=2)s[a+2]=s[a],s[a+3]=s[a+1];s[a+2]=l,s[a+3]=c}n[0]=s[0],n[1]=s[1],n[2]=s[2],n[3]=s[3];let i=4;for(let r=4;r=0&&(i-=2,i!==2););n[i]=l,n[i+1]=c}n[i]=s[e-4],n[i+1]=s[e-3];const o=i;i+=2;for(let r=e-6;r>=0;r-=2,i+=2){const l=s[r],c=s[r+1];for(;(n[i-2]-n[i-4])*(c-n[i-3])-(n[i-1]-n[i-3])*(l-n[i-4])>=0&&(i-=2,i!==o););n[i]=l,n[i+1]=c}t.length=i-2}}class St{constructor(t,e,n={}){T(this,"skeleton");T(this,"adapter");T(this,"positionInheritanceFactorX",0);T(this,"positionInheritanceFactorY",0);T(this,"rotationInheritanceFactor",0);T(this,"hasLastTransform",!1);T(this,"lastX",0);T(this,"lastY",0);T(this,"lastZ",0);T(this,"lastRotation",0);T(this,"currentTransform",{x:0,y:0,z:0,rotation:0});T(this,"currentPosition",{x:0,y:0,z:0});T(this,"lastPosition",{x:0,y:0,z:0});this.skeleton=t,this.adapter=e,this.positionInheritanceFactorX=n.positionInheritanceX??0,this.positionInheritanceFactorY=n.positionInheritanceY??0,this.rotationInheritanceFactor=n.rotationInheritance??0}get positionInheritanceX(){return this.positionInheritanceFactorX}get positionInheritanceY(){return this.positionInheritanceFactorY}setPositionInheritance(t,e){const n=this.positionInheritanceFactorX===0&&this.positionInheritanceFactorY===0,s=t!==0||e!==0;this.positionInheritanceFactorX=t,this.positionInheritanceFactorY=e,n&&s&&this.resetPosition()}get rotationInheritance(){return this.rotationInheritanceFactor}set rotationInheritance(t){const e=this.rotationInheritanceFactor===0;this.rotationInheritanceFactor=t,e&&t!==0&&this.resetRotation()}resetPosition(){const t=this.currentTransform,e=!this.hasLastTransform&&this.rotationInheritanceFactor!==0;this.adapter.readTransform(t,e),this.lastX=t.x,this.lastY=t.y,this.lastZ=t.z,e&&(this.lastRotation=t.rotation),this.hasLastTransform=!0}resetRotation(){const t=this.currentTransform;this.adapter.readTransform(t,!0),this.lastRotation=t.rotation,this.hasLastTransform||(this.lastX=t.x,this.lastY=t.y,this.lastZ=t.z),this.hasLastTransform=!0}resetTransform(){const t=this.currentTransform;this.adapter.readTransform(t,!0),this.setLastTransform(t.x,t.y,t.z,t.rotation)}applyTransformMovement(){const t=this.positionInheritanceFactorX!==0||this.positionInheritanceFactorY!==0,e=this.rotationInheritanceFactor!==0;if(!t&&!e)return;const n=this.currentTransform;this.adapter.readTransform(n,e);const{x:s,y:i,z:o}=n,r=e?n.rotation:this.lastRotation,l=s!==this.lastX||i!==this.lastY||o!==this.lastZ;if(this.hasLastTransform){if(!l&&r===this.lastRotation)return;t&&l&&this.applyPositionMovement(s,i,o),e&&r!==this.lastRotation&&this.applyRotationMovement(r)}this.setLastTransform(s,i,o,r)}applyPositionMovement(t,e,n){const s=this.currentPosition;s.x=t,s.y=e,s.z=n,this.adapter.worldToSkeleton(s);const i=this.lastPosition;i.x=this.lastX,i.y=this.lastY,i.z=this.lastZ,this.adapter.worldToSkeleton(i),this.skeleton.physicsTranslate((s.x-i.x)*this.positionInheritanceFactorX,(s.y-i.y)*this.positionInheritanceFactorY)}applyRotationMovement(t){const e=this.rotationInheritanceFactor;e!==0&&this.skeleton.physicsRotate(0,0,this.getRotationDelta(t,this.lastRotation)*e)}setLastTransform(t,e,n,s){this.lastX=t,this.lastY=e,this.lastZ=n,this.lastRotation=s,this.hasLastTransform=!0}getRotationDelta(t,e){let n=t-e;return n=(n+180)%360-180,n<-180?n+360:n}}class Mt{constructor(){T(this,"commandPool",new xt);T(this,"worldVertices",new Float32Array(12*1024));T(this,"quadIndices",new Uint16Array([0,1,2,2,3,0]));T(this,"clipping",new wt);T(this,"renderCommands",[])}render(t,e=!1,n,s=2,i=0){var c,a;this.commandPool.reset(),this.renderCommands.length=0;const o=this.clipping;let r=0;const l=t.drawOrder.appliedPose;for(let h=0,m=l.length;h>1;const w=u.sequence,U=w.resolveIndex(A);f=w.getUVs(U),x=u.triangles,S=x.length,M=(a=w.regions[U])==null?void 0:a.texture}else if(u instanceof rt){o.clipEnd(y),o.clipStart(t,y,u);continue}else{o.clipEnd(y);continue}if(!M){o.clipEnd(y);continue}const I=t.color;let R,v;if(e){let w;if(n){w=Math.floor(n[3]*I.a*g.a*P.a*255);const U=Math.floor(w*n[0]*I.r*g.r*P.r),O=Math.floor(w*n[1]*I.g*g.g*P.g),B=Math.floor(w*n[2]*I.b*g.b*P.b);R=w<<24|U<<16|O<<8|B}else{w=Math.floor(I.a*g.a*P.a*255);const U=Math.floor(w*I.r*g.r*P.r),O=Math.floor(w*I.g*g.g*P.g),B=Math.floor(w*I.b*g.b*P.b);R=w<<24|U<<16|O<<8|B}if(v=4278190080,A.darkColor){const{r:U,g:O,b:B}=A.darkColor;v=4278190080|Math.floor(U*w)<<16|Math.floor(O*w)<<8|Math.floor(B*w)}}else{if(n){const w=Math.floor(n[3]*I.a*g.a*P.a*255),U=Math.floor(n[0]*I.r*g.r*P.r*255),O=Math.floor(n[1]*I.g*g.g*P.g*255),B=Math.floor(n[2]*I.b*g.b*P.b*255);R=w<<24|U<<16|O<<8|B}else{const w=Math.floor(I.a*g.a*P.a*255),U=Math.floor(I.r*g.r*P.r*255),O=Math.floor(I.g*g.g*P.g*255),B=Math.floor(I.b*g.b*P.b*255);R=w<<24|U<<16|O<<8|B}if(v=0,A.darkColor){const{r:w,g:U,b:O}=A.darkColor;v=Math.floor(w*255)<<16|Math.floor(U*255)<<8|Math.floor(O*255)}}o.isClipping()&&(o.clipTrianglesUnpacked(L,0,x,S,f,s),L=o.clippedVerticesTyped,C=o.clippedVerticesLength/s,f=o.clippedUVsTyped,x=o.clippedTrianglesTyped,S=o.clippedTrianglesLength);const V=this.commandPool.getCommand(C,S,s);if(V.blendMode=y.data.blendMode,V.texture=M,V.positions.set(L.subarray(0,C*s)),s>=3)for(let w=2,U=C*s;w=t*n&&i._indices.length>=e){s=i;break}if(s)this.pool.splice(this.pool.indexOf(s),1),s.next=void 0,s.numVertices=t,s.numIndices=e,s.positions=s._positions.subarray(0,t*n),s.uvs=s._uvs.subarray(0,t<<1),s.colors=s._colors.subarray(0,t),s.darkColors=s._darkColors.subarray(0,t),s.indices=s._indices.subarray(0,e);else{const i=new Float32Array(t*n),o=new Float32Array(t<<1),r=new Uint32Array(t),l=new Uint32Array(t),c=new Uint16Array(e);s={positions:i,uvs:o,colors:r,darkColors:l,indices:c,_positions:i,_uvs:o,_colors:r,_darkColors:l,_indices:c,numVertices:t,numIndices:e,blendMode:Tt.Normal,texture:null}}return this.inUse.push(s),s}reset(){this.pool.push(...this.inUse),this.inUse.length=0}}export{Rt as ATTACH_RETAIN,Yt as ATTACH_SETUP,Ft as AlphaTimeline,Et as Animation,_t as AnimationState,Ot as AnimationStateAdapter,It as AnimationStateData,lt as AssetCache,Ct as AssetManagerBase,Vt as AtlasAttachmentLoader,kt as Attachment,Xt as AttachmentTimeline,Bt as BinaryInput,Tt as BlendMode,Nt as Bone,Dt as BoneData,$t as BonePose,zt as BoneTimeline1,Wt as BoneTimeline2,ut as BoundingBoxAttachment,qt as CURRENT,rt as ClippingAttachment,Gt as Color,Jt as Constraint,Ht as ConstraintData,Zt as ConstraintTimeline1,Kt as CurveTimeline,Qt as CurveTimeline1,jt as DebugUtils,te as DeformTimeline,bt as Downloader,ee as DrawOrder,se as DrawOrderFolderTimeline,ne as DrawOrderTimeline,ie as Event,oe as EventData,re as EventQueue,ae as EventTimeline,le as EventType,ce as FIRST,he as FakeTexture,pe as FromProperty,de as FromRotate,ue as FromScaleX,fe as FromScaleY,ge as FromShearY,me as FromX,ye as FromY,Te as HOLD,be as IkConstraint,we as IkConstraintData,xe as IkConstraintPose,Ae as IkConstraintTimeline,Pe as Inherit,Ie as InheritTimeline,Ce as IntSet,Ve as Interpolation,Le as MODE,Se as MathUtils,dt as MeshAttachment,Me as MixFrom,mt as PathAttachment,ve as PathConstraint,Ue as PathConstraintData,Re as PathConstraintMixTimeline,Ye as PathConstraintPose,Fe as PathConstraintPositionTimeline,Ee as PathConstraintSpacingTimeline,_e as Physics,Oe as PhysicsConstraint,ke as PhysicsConstraintDampingTimeline,Xe as PhysicsConstraintData,Be as PhysicsConstraintGravityTimeline,Ne as PhysicsConstraintInertiaTimeline,De as PhysicsConstraintMassTimeline,$e as PhysicsConstraintMixTimeline,ze as PhysicsConstraintPose,We as PhysicsConstraintResetTimeline,qe as PhysicsConstraintStrengthTimeline,Ge as PhysicsConstraintTimeline,Je as PhysicsConstraintWindTimeline,yt as PointAttachment,at as Pool,He as Posed,Ze as PosedActive,Ke as PosedData,Qe as PositionMode,je as Pow,ts as PowOut,es as Property,ss as RGB2Timeline,ns as RGBA2Timeline,is as RGBATimeline,os as RGBTimeline,pt as RegionAttachment,rs as RotateMode,as as RotateTimeline,ls as SETUP,cs as ScaleTimeline,hs as ScaleXTimeline,ps as ScaleYMode,ds as ScaleYTimeline,us as Sequence,fs as SequenceMode,gs as SequenceModeValues,ms as SequenceTimeline,ys as ShearTimeline,Ts as ShearXTimeline,bs as ShearYTimeline,ws as Skeleton,xs as SkeletonBinary,Lt as SkeletonBounds,wt as SkeletonClipping,As as SkeletonData,Ps as SkeletonJson,St as SkeletonPhysicsMovement,Mt as SkeletonRendererCore,Is as Skin,Cs as SkinEntry,Vs as Slider,Ls as SliderData,Ss as SliderMixTimeline,Ms as SliderPose,vs as SliderTimeline,Us as Slot,Rs as SlotCurveTimeline,Ys as SlotData,Fs as SlotPose,Es as SpacingMode,_s as StringSet,Os as Texture,ht as TextureAtlas,ks as TextureAtlasPage,Xs as TextureAtlasRegion,Bs as TextureFilter,Ns as TextureRegion,Ds as TextureWrap,$s as TimeKeeper,zs as Timeline,Ws as ToProperty,qs as ToRotate,Gs as ToScaleX,Js as ToScaleY,Hs as ToShearY,Zs as ToX,Ks as ToY,Qs as TrackEntry,js as TransformConstraint,tn as TransformConstraintData,en as TransformConstraintPose,sn as TransformConstraintTimeline,nn as TranslateTimeline,on as TranslateXTimeline,rn as TranslateYTimeline,z as Triangulator,D as Utils,an as Vector2,ln as VertexAttachment,cn as WindowedMean,hn as isBoneTimeline,pn as isConstraintTimeline,dn as isSlotTimeline}; diff --git a/dist/assets/index-De2_H8wT.js b/dist/assets/index-D13mN481.js similarity index 99% rename from dist/assets/index-De2_H8wT.js rename to dist/assets/index-D13mN481.js index 502466b..cb6d0db 100644 --- a/dist/assets/index-De2_H8wT.js +++ b/dist/assets/index-D13mN481.js @@ -1,4 +1,4 @@ -var Ae=Object.defineProperty;var Be=(m,o,e)=>o in m?Ae(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var a=(m,o,e)=>Be(m,typeof o!="symbol"?o+"":o,e);import{T as Fe,a as he,b as F,S as ue,M as pe,c as oe,W as ne,B as H,d as z,L as Te,E as O,e as ce,p as q,f as Ee,g as fe,A as Q,h as me,i as De,j as V,s as re,G as we,k as $,l as Y,m as Le,P as Ie,n as Re,o as Ne,C as X,q as be,r as _e,t as Ue,u as Ye,v as Xe,w as ee,x as j,y as ke,z as Ve,D as J,F as ge,V as Ge,H as ae,I as We,J as $e,U as xe,K as E,R as ve,N as ye,O as Pe,Q as Oe,X as He,Y as ze,Z as qe,_ as Ke}from"./index-CyjCNKhS.js";import{$ as bt,a0 as kt,a1 as vt,a2 as yt,a3 as Pt,a4 as St,a5 as Mt,a6 as At,a7 as Bt,a8 as Ft,a9 as Et,aa as Dt,ab as Lt,ac as It,ad as Rt,ae as Nt,af as _t,ag as Ut,ah as Yt,ai as Xt,aj as Vt,ak as Gt,al as Wt,am as $t,an as Ot,ao as Ht,ap as zt,aq as qt,ar as Kt,as as Zt,at as Jt,au as Qt,av as jt,aw as es,ax as ts,ay as ss,az as os,aA as ns,aB as as,aC as rs,aD as is,aE as ls,aF as hs,aG as cs,aH as ds,aI as us,aJ as ps,aK as fs,aL as ms,aM as gs,aN as xs,aO as Cs,aP as Ts,aQ as ws,aR as bs,aS as ks,aT as vs,aU as ys,aV as Ps,aW as Ss,aX as Ms,aY as As,aZ as Bs,a_ as Fs,a$ as Es,b0 as Ds,b1 as Ls,b2 as Is,b3 as Rs,b4 as Ns,b5 as _s,b6 as Us,b7 as Ys,b8 as Xs,b9 as Vs,ba as Gs,bb as Ws,bc as $s,bd as Os,be as Hs,bf as zs,bg as qs,bh as Ks,bi as Zs,bj as Js,bk as Qs,bl as js,bm as eo,bn as to,bo as so,bp as oo,bq as no,br as ao,bs as ro,bt as io,bu as lo,bv as ho,bw as co,bx as uo,by as po,bz as fo,bA as mo,bB as go,bC as xo,bD as Co,bE as To,bF as wo,bG as bo,bH as ko,bI as vo,bJ as yo,bK as Po,bL as So,bM as Mo,bN as Ao,bO as Bo,bP as Fo,bQ as Eo,bR as Do,bS as Lo,bT as Io,bU as Ro,bV as No,bW as _o,bX as Uo,bY as Yo,bZ as Xo,b_ as Vo,b$ as Go,c0 as Wo,c1 as $o,c2 as Oo,c3 as Ho}from"./index-CyjCNKhS.js";import{SkeletonClipping as de,SkeletonPhysicsMovement as Ze,AnimationStateData as Je,AtlasAttachmentLoader as Qe,SkeletonBounds as je}from"./index-Btg_SCRJ.js";import{AssetCache as qo,AssetManagerBase as Ko,Downloader as Zo,SkeletonRendererCore as Jo,Triangulator as Qo}from"./index-Btg_SCRJ.js";if(typeof window<"u"&&window.PIXI){const m=window.require;window.require=o=>{if(m)return m(o);if(o.startsWith("@pixi/"))return window.PIXI}}const _=class _ extends Fe{constructor(e){super(e.resource.source);a(this,"texture");this.texture=he.from(e)}static from(e){return _.textureMap.has(e)?_.textureMap.get(e):new _(e)}setFilters(e,t){this.texture.baseTexture.scaleMode=_.toPixiTextureFilter(e),this.texture.baseTexture.mipmap=_.toPixiMipMap(e)}setWraps(e,t){this.texture.baseTexture.wrapMode=_.toPixiTextureWrap(e)}dispose(){this.texture.destroy()}static toPixiTextureFilter(e){switch(e){case F.Nearest:case F.MipMapNearestLinear:case F.MipMapNearestNearest:return ue.NEAREST;case F.Linear:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return ue.LINEAR;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiMipMap(e){switch(e){case F.Nearest:case F.Linear:return pe.OFF;case F.MipMapNearestLinear:case F.MipMapNearestNearest:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return pe.ON;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiTextureWrap(e){switch(e){case oe.ClampToEdge:return ne.CLAMP;case oe.MirroredRepeat:return ne.MIRRORED_REPEAT;case oe.Repeat:return ne.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(e)}`)}}static toPixiBlending(e){switch(e){case H.Normal:return z.NORMAL;case H.Additive:return z.ADD;case H.Multiply:return z.MULTIPLY;case H.Screen:return z.SCREEN;default:throw new Error(`Unknown blendMode: ${String(e)}`)}}};a(_,"textureMap",new Map);let G=_;const K="spineTextureAtlasLoader",et={extension:O.Asset,resolver:{test:m=>V(m,".atlas"),parse:m=>{var e,t;const o=m.split(".");return{resolution:parseFloat(((t=(e=re.RETINA_PREFIX)==null?void 0:e.exec(m))==null?void 0:t[1])??"1"),format:o[o.length-2],src:m}}},loader:{name:K,extension:{type:O.LoadParser,priority:Te.Normal,name:K},test(m){return V(m,".atlas")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${K}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return await o.text()},testParse(m,o){const e=V(o.src,".atlas"),t=typeof m=="string",s=o.loadParser===K;return Promise.resolve((e||s)&&t)},unload(m){m.dispose()},async parse(m,o,e){var p;const t=o.data||{};let s=q.dirname(o.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const n=new Ee(m);if(t.images instanceof fe||typeof t.images=="string"){const h=t.images;t.images={},t.images[n.pages[0].name]=h}const r=[];let l=!0;for(const h of e.parsers)if(h.name==="loadTextures"){l=(p=h.config)==null?void 0:p.preferCreateImageBitmap;break}Q.setPreferences({preferCreateImageBitmap:!1});for(const h of n.pages){const u=h.name,c=t!=null&&t.images?t.images[u]:void 0;if(c instanceof fe)h.setTexture(G.from(c));else{const i=c??q.normalize([...s.split(q.sep),u].join(q.sep)),g={src:De(i,o.src),data:{...t.imageMetadata,alphaMode:h.pma?me.PMA:me.UNPACK}},x=e.load(g).then(d=>{h.setTexture(G.from(d.baseTexture))});r.push(x)}}return await Promise.all(r),Q.setPreferences({preferCreateImageBitmap:l}),n}}};ce.add(et);const Z="spineSkeletonLoader";function tt(m){return m.hasOwnProperty("bones")}function st(m){return m instanceof Uint8Array}const ot={extension:O.Asset,loader:{name:Z,extension:{type:O.LoadParser,priority:Te.Normal,name:Z},test(m){return V(m,".skel")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${Z}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return new Uint8Array(await o.arrayBuffer())},testParse(m,o){const e=V(o.src,".json")&&tt(m),t=V(o.src,".skel")&&st(m),s=o.loadParser===Z;return Promise.resolve(e||t||s)}}};ce.add(ot);class nt extends we{constructor(o=!1){super();const e=new $(void 0),t=new $(void 0,!0),s=new $(void 0,!0,!0);this.addAttribute("aVertexPosition",e,2,!1,Y.FLOAT),this.addAttribute("aTextureCoord",t,2,!1,Y.FLOAT),this.addIndex(s)}}const at=` +var Ae=Object.defineProperty;var Be=(m,o,e)=>o in m?Ae(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var a=(m,o,e)=>Be(m,typeof o!="symbol"?o+"":o,e);import{T as Fe,a as he,b as F,S as ue,M as pe,c as oe,W as ne,B as H,d as z,L as Te,E as O,e as ce,p as q,f as Ee,g as fe,A as Q,h as me,i as De,j as V,s as re,G as we,k as $,l as Y,m as Le,P as Ie,n as Re,o as Ne,C as X,q as be,r as _e,t as Ue,u as Ye,v as Xe,w as ee,x as j,y as ke,z as Ve,D as J,F as ge,V as Ge,H as ae,I as We,J as $e,U as xe,K as E,R as ve,N as ye,O as Pe,Q as Oe,X as He,Y as ze,Z as qe,_ as Ke}from"./index-9ofazf7F.js";import{$ as bt,a0 as kt,a1 as vt,a2 as yt,a3 as Pt,a4 as St,a5 as Mt,a6 as At,a7 as Bt,a8 as Ft,a9 as Et,aa as Dt,ab as Lt,ac as It,ad as Rt,ae as Nt,af as _t,ag as Ut,ah as Yt,ai as Xt,aj as Vt,ak as Gt,al as Wt,am as $t,an as Ot,ao as Ht,ap as zt,aq as qt,ar as Kt,as as Zt,at as Jt,au as Qt,av as jt,aw as es,ax as ts,ay as ss,az as os,aA as ns,aB as as,aC as rs,aD as is,aE as ls,aF as hs,aG as cs,aH as ds,aI as us,aJ as ps,aK as fs,aL as ms,aM as gs,aN as xs,aO as Cs,aP as Ts,aQ as ws,aR as bs,aS as ks,aT as vs,aU as ys,aV as Ps,aW as Ss,aX as Ms,aY as As,aZ as Bs,a_ as Fs,a$ as Es,b0 as Ds,b1 as Ls,b2 as Is,b3 as Rs,b4 as Ns,b5 as _s,b6 as Us,b7 as Ys,b8 as Xs,b9 as Vs,ba as Gs,bb as Ws,bc as $s,bd as Os,be as Hs,bf as zs,bg as qs,bh as Ks,bi as Zs,bj as Js,bk as Qs,bl as js,bm as eo,bn as to,bo as so,bp as oo,bq as no,br as ao,bs as ro,bt as io,bu as lo,bv as ho,bw as co,bx as uo,by as po,bz as fo,bA as mo,bB as go,bC as xo,bD as Co,bE as To,bF as wo,bG as bo,bH as ko,bI as vo,bJ as yo,bK as Po,bL as So,bM as Mo,bN as Ao,bO as Bo,bP as Fo,bQ as Eo,bR as Do,bS as Lo,bT as Io,bU as Ro,bV as No,bW as _o,bX as Uo,bY as Yo,bZ as Xo,b_ as Vo,b$ as Go,c0 as Wo,c1 as $o,c2 as Oo,c3 as Ho}from"./index-9ofazf7F.js";import{SkeletonClipping as de,SkeletonPhysicsMovement as Ze,AnimationStateData as Je,AtlasAttachmentLoader as Qe,SkeletonBounds as je}from"./index-Cz2cACyM.js";import{AssetCache as qo,AssetManagerBase as Ko,Downloader as Zo,SkeletonRendererCore as Jo,Triangulator as Qo}from"./index-Cz2cACyM.js";if(typeof window<"u"&&window.PIXI){const m=window.require;window.require=o=>{if(m)return m(o);if(o.startsWith("@pixi/"))return window.PIXI}}const _=class _ extends Fe{constructor(e){super(e.resource.source);a(this,"texture");this.texture=he.from(e)}static from(e){return _.textureMap.has(e)?_.textureMap.get(e):new _(e)}setFilters(e,t){this.texture.baseTexture.scaleMode=_.toPixiTextureFilter(e),this.texture.baseTexture.mipmap=_.toPixiMipMap(e)}setWraps(e,t){this.texture.baseTexture.wrapMode=_.toPixiTextureWrap(e)}dispose(){this.texture.destroy()}static toPixiTextureFilter(e){switch(e){case F.Nearest:case F.MipMapNearestLinear:case F.MipMapNearestNearest:return ue.NEAREST;case F.Linear:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return ue.LINEAR;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiMipMap(e){switch(e){case F.Nearest:case F.Linear:return pe.OFF;case F.MipMapNearestLinear:case F.MipMapNearestNearest:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return pe.ON;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiTextureWrap(e){switch(e){case oe.ClampToEdge:return ne.CLAMP;case oe.MirroredRepeat:return ne.MIRRORED_REPEAT;case oe.Repeat:return ne.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(e)}`)}}static toPixiBlending(e){switch(e){case H.Normal:return z.NORMAL;case H.Additive:return z.ADD;case H.Multiply:return z.MULTIPLY;case H.Screen:return z.SCREEN;default:throw new Error(`Unknown blendMode: ${String(e)}`)}}};a(_,"textureMap",new Map);let G=_;const K="spineTextureAtlasLoader",et={extension:O.Asset,resolver:{test:m=>V(m,".atlas"),parse:m=>{var e,t;const o=m.split(".");return{resolution:parseFloat(((t=(e=re.RETINA_PREFIX)==null?void 0:e.exec(m))==null?void 0:t[1])??"1"),format:o[o.length-2],src:m}}},loader:{name:K,extension:{type:O.LoadParser,priority:Te.Normal,name:K},test(m){return V(m,".atlas")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${K}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return await o.text()},testParse(m,o){const e=V(o.src,".atlas"),t=typeof m=="string",s=o.loadParser===K;return Promise.resolve((e||s)&&t)},unload(m){m.dispose()},async parse(m,o,e){var p;const t=o.data||{};let s=q.dirname(o.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const n=new Ee(m);if(t.images instanceof fe||typeof t.images=="string"){const h=t.images;t.images={},t.images[n.pages[0].name]=h}const r=[];let l=!0;for(const h of e.parsers)if(h.name==="loadTextures"){l=(p=h.config)==null?void 0:p.preferCreateImageBitmap;break}Q.setPreferences({preferCreateImageBitmap:!1});for(const h of n.pages){const u=h.name,c=t!=null&&t.images?t.images[u]:void 0;if(c instanceof fe)h.setTexture(G.from(c));else{const i=c??q.normalize([...s.split(q.sep),u].join(q.sep)),g={src:De(i,o.src),data:{...t.imageMetadata,alphaMode:h.pma?me.PMA:me.UNPACK}},x=e.load(g).then(d=>{h.setTexture(G.from(d.baseTexture))});r.push(x)}}return await Promise.all(r),Q.setPreferences({preferCreateImageBitmap:l}),n}}};ce.add(et);const Z="spineSkeletonLoader";function tt(m){return m.hasOwnProperty("bones")}function st(m){return m instanceof Uint8Array}const ot={extension:O.Asset,loader:{name:Z,extension:{type:O.LoadParser,priority:Te.Normal,name:Z},test(m){return V(m,".skel")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${Z}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return new Uint8Array(await o.arrayBuffer())},testParse(m,o){const e=V(o.src,".json")&&tt(m),t=V(o.src,".skel")&&st(m),s=o.loadParser===Z;return Promise.resolve(e||t||s)}}};ce.add(ot);class nt extends we{constructor(o=!1){super();const e=new $(void 0),t=new $(void 0,!0),s=new $(void 0,!0,!0);this.addAttribute("aVertexPosition",e,2,!1,Y.FLOAT),this.addAttribute("aTextureCoord",t,2,!1,Y.FLOAT),this.addIndex(s)}}const at=` attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; diff --git a/dist/assets/index-DCezqRpu.css b/dist/assets/index-DCezqRpu.css new file mode 100644 index 0000000..25be67d --- /dev/null +++ b/dist/assets/index-DCezqRpu.css @@ -0,0 +1 @@ +.help-overlay[data-v-78204b9d]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:72px 24px 28px;box-sizing:border-box;background:#05080fb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-dialog[data-v-78204b9d]{width:min(820px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid #3a4864;border-radius:14px;background:#141a27;color:#b8c3d8;box-shadow:0 22px 70px #0000009e}.help-head[data-v-78204b9d]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 15px;border-bottom:1px solid #2b354a;background:linear-gradient(135deg,#202942,#181e2d)}.help-head h2[data-v-78204b9d]{margin:0;color:#eef2ff;font-size:19px}.help-head p[data-v-78204b9d]{margin:5px 0 0;color:#7786a3;font-size:11px}.help-close[data-v-78204b9d]{width:28px;height:28px;flex:0 0 28px;border:1px solid #43516b;border-radius:6px;background:#273249;color:#ccd7ed;cursor:pointer}.help-close[data-v-78204b9d]:hover{border-color:#7774ff;background:#3b4670;color:#fff}.help-body[data-v-78204b9d]{min-height:0;overflow:auto;padding:18px 20px 21px}.help-section[data-v-78204b9d]{padding:14px 15px;border:1px solid #2c3850;border-radius:10px;background:#181f2e}.help-section h3[data-v-78204b9d]{margin:0 0 11px;color:#9fb2ff;font-size:13px}.help-start ol[data-v-78204b9d]{margin:0;padding-left:21px;color:#aab6cc;font-size:12px;line-height:1.75}.help-start li[data-v-78204b9d]::marker{color:#7774ff;font-weight:700}.help-section b[data-v-78204b9d]{color:#dce4f7}.help-grid[data-v-78204b9d]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;margin-top:12px}.help-list[data-v-78204b9d]{display:grid;gap:0;margin:0}.help-list>div[data-v-78204b9d]{display:grid;grid-template-columns:78px 1fr;gap:9px;padding:7px 0;border-bottom:1px solid #263146}.help-list>div[data-v-78204b9d]:last-child{border-bottom:0}.help-list dt[data-v-78204b9d]{color:#d3dcf0;font-size:11px;font-weight:700}.help-list dd[data-v-78204b9d]{margin:0;color:#8795ae;font-size:11px;line-height:1.5}.shortcut-list[data-v-78204b9d]{display:grid;gap:7px}.shortcut-list>div[data-v-78204b9d]{display:flex;align-items:center;min-height:25px;gap:5px}.shortcut-list kbd[data-v-78204b9d]{min-width:24px;box-sizing:border-box;padding:3px 6px;border:1px solid #465470;border-bottom-width:2px;border-radius:5px;background:#101623;color:#e0e7f6;font:10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center}.shortcut-list span[data-v-78204b9d]{color:#65728b;font-size:10px}.shortcut-list em[data-v-78204b9d]{margin-left:auto;color:#9ca9c1;font-size:11px;font-style:normal}.help-note[data-v-78204b9d]{margin:11px 0 0;padding-top:9px;border-top:1px solid #2a3549;color:#697791;font-size:10px;line-height:1.55}.help-export[data-v-78204b9d]{margin-top:12px}.help-export p[data-v-78204b9d]{margin:0;color:#8997b0;font-size:11px;line-height:1.65}.help-doc-title[data-v-78204b9d]{margin:16px 2px 2px;color:#9fb2ff;font-size:13px;font-weight:700;letter-spacing:.5px}.help-module[data-v-78204b9d]{margin-top:12px}.help-module-head[data-v-78204b9d]{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:0;background:transparent;color:#9fb2ff;font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}.help-module-head[data-v-78204b9d]:hover{color:#fff}.help-module-head .mtitle[data-v-78204b9d]{flex:1;min-width:0}.help-module-head .caret[data-v-78204b9d]{flex:0 0 auto;color:#7b86a2;font-size:12px}.help-module.open .help-module-head[data-v-78204b9d]{color:#fff}.help-module.open .help-module-head .caret[data-v-78204b9d]{color:#9fb2ff}.help-module .mnum[data-v-78204b9d]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,#4a53b8,#6a5fd0);color:#fff;font-size:12px;font-weight:700}.help-module.help-connector[data-v-78204b9d]{border-color:#4a4f8a;background:linear-gradient(135deg,#1d2442,#181d2f)}.help-module.help-connector .help-module-head[data-v-78204b9d]{color:#b8c2ff}.help-module .connector-intro[data-v-78204b9d]{margin:0 0 10px;color:#9aa8c4;font-size:11px;line-height:1.6}.help-module .connector-intro b[data-v-78204b9d]{color:#dce4f7}.help-module .dl-link[data-v-78204b9d]{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;margin:0 10px 6px 0;padding:6px 12px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;font-size:12px;font-weight:700;text-decoration:none}.help-module .dl-link[data-v-78204b9d]:hover{border-color:#8982ff;background:#554dc2}.help-module .dl-link small[data-v-78204b9d]{color:#cfe0ff;font-weight:500;font-size:9px}.help-module-body[data-v-78204b9d]{padding-top:10px}@media(max-width:760px){.help-overlay[data-v-78204b9d]{padding:66px 12px 14px}.help-grid[data-v-78204b9d]{grid-template-columns:1fr}}.topbar[data-v-612a51be]{position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:10px;padding:8px 12px;background:#141420d9;border-radius:10px;border:1px solid rgba(255,255,255,.08);font-size:12px;color:#aab;z-index:5;flex-wrap:wrap}.topbar input[type=range][data-v-612a51be]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px}.tool-group[data-v-612a51be]{display:flex;gap:6px;margin-left:6px;padding-left:12px;border-left:1px solid #2a2a3c}.tool-btn[data-v-612a51be]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.tool-btn[data-v-612a51be]:hover{background:#2b3a5c;color:#fff}.tool-btn.on[data-v-612a51be]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.background-menu[data-v-612a51be]{position:relative;flex:0 0 auto}.background-btn[data-v-612a51be]{height:28px;padding:0 11px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;cursor:pointer}.background-btn[data-v-612a51be]:hover,.background-btn.on[data-v-612a51be]{border-color:#7774ff;background:#343b63;color:#fff}.background-panel[data-v-612a51be]{position:absolute;top:calc(100% + 9px);right:0;width:248px;box-sizing:border-box;padding:10px;border:1px solid #343b50;border-radius:9px;background:#141420fa;color:#aeb8cc;box-shadow:0 8px 24px #0000007a;z-index:12}.background-upload[data-v-612a51be]{width:100%;height:30px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;cursor:pointer}.background-upload[data-v-612a51be]:hover{border-color:#8982ff;background:#554dc2}.background-clear[data-v-612a51be]{width:100%;height:28px;margin-top:6px;border:1px solid #70404a;border-radius:6px;background:#512a33;color:#efb5bd;cursor:pointer}.background-clear[data-v-612a51be]:hover:not(:disabled){border-color:#b65b6a;background:#6a303b;color:#fff}.background-clear[data-v-612a51be]:disabled{opacity:.42;cursor:not-allowed}.background-file-input[data-v-612a51be]{display:none}.background-file-name[data-v-612a51be]{margin:7px 2px 9px;overflow:hidden;color:#737f98;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.background-position-row[data-v-612a51be]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.background-position-row label[data-v-612a51be]{display:flex;align-items:center;gap:5px;color:#8995ad;font-size:11px}.background-position-row input[data-v-612a51be]{width:0;min-width:0;flex:1;box-sizing:border-box;height:28px;padding:0 6px;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2}.background-opacity-row[data-v-612a51be]{display:grid;grid-template-columns:46px 1fr 34px;align-items:center;gap:7px;margin-top:10px;font-size:11px}.background-opacity-row input[data-v-612a51be]{min-width:0;accent-color:#675de0}.background-opacity-row b[data-v-612a51be]{color:#aeb8cc;font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.help-btn[data-v-612a51be]{height:28px;margin-left:auto;padding:0 11px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;font-weight:700;cursor:pointer}.help-btn[data-v-612a51be]:hover,.help-btn.on[data-v-612a51be]{border-color:#7774ff;background:#343b63;color:#fff}.zoom-pct[data-v-612a51be]{margin-left:0;font-variant-numeric:tabular-nums;color:#9aa;min-width:44px;text-align:center}.settings-btn[data-v-612a51be]{height:28px;padding:0 12px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdf;font-size:12px;font-weight:700;cursor:pointer}.settings-btn[data-v-612a51be]:hover{border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-612a51be]{width:30px;height:28px;flex:0 0 30px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdd8ed;font-size:18px;line-height:1;cursor:pointer}.undo-btn[data-v-612a51be]:hover:not(:disabled){border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-612a51be]:disabled{opacity:.38;cursor:not-allowed}.settings-panel[data-v-91f62c22]{position:absolute;top:52px;left:10px;width:240px;z-index:10;background:#141420f7;border:1px solid #2a2a3c;border-radius:10px;padding:10px 12px;font-size:12px;color:#aab;box-shadow:0 6px 20px #0006}.sp-head[data-v-91f62c22]{display:flex;justify-content:space-between;align-items:center;font-weight:700;color:#cdf;margin-bottom:10px}.sp-section-title[data-v-91f62c22]{margin:2px 0 8px;color:#8a93bb;font-size:11px}.sp-switch-row[data-v-91f62c22]{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#aab}.sp-switch-control[data-v-91f62c22]{display:inline-flex;align-items:center;gap:7px}.sp-switch-control input[data-v-91f62c22]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.sp-switch-ui[data-v-91f62c22]{position:relative;width:34px;height:18px;border-radius:999px;background:#39445a;cursor:pointer;transition:background .16s ease}.sp-switch-ui[data-v-91f62c22]:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#f4f6fb;transition:transform .16s ease}.sp-switch-control input:checked+.sp-switch-ui[data-v-91f62c22]{background:#655df0}.sp-switch-control input:checked+.sp-switch-ui[data-v-91f62c22]:after{transform:translate(16px)}.sp-switch-control input:focus-visible+.sp-switch-ui[data-v-91f62c22]{outline:2px solid #8b86ff;outline-offset:2px}.sp-switch-control b[data-v-91f62c22]{min-width:24px;color:#8a93bb;font-size:11px;font-weight:500}.sp-cache-note[data-v-91f62c22]{margin-top:10px;padding-top:9px;border-top:1px solid #2a2a3c;color:#647089;font-size:10px;text-align:center}.sp-divider[data-v-91f62c22]{height:1px;margin:10px 0;background:#2a2a3c}.sp-close[data-v-91f62c22]{background:#2e3a55;border:none;color:#cdf;border-radius:4px;width:18px;height:18px;cursor:pointer;font-size:11px}.sp-row[data-v-91f62c22]{display:flex;align-items:center;gap:8px;margin:8px 0}.sp-row>span[data-v-91f62c22]:first-child{width:76px;flex-shrink:0;color:#8a93bb}.sp-row input[type=range][data-v-91f62c22]{flex:1;background:#1a1a28;accent-color:#3a5a8c}.sp-num[data-v-91f62c22]{width:52px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;padding:2px 4px}.sp-undo-limit[data-v-91f62c22]{margin-left:auto;width:64px;height:26px;box-sizing:border-box}.sp-colr[data-v-91f62c22]{width:26px;height:22px;border:none;background:none;cursor:pointer}.sp-hex[data-v-91f62c22]{font-size:11px;color:#889;font-variant-numeric:tabular-nums}.sp-chk[data-v-91f62c22]{display:flex;align-items:center;gap:6px;margin:8px 0;color:#aab}.stage-wrap[data-v-b4c5a353]{position:relative;width:100%;height:100%;overflow:hidden}.stage-holder[data-v-b4c5a353]{width:100%;height:100%;cursor:grab;touch-action:none;background-color:#0e1219;outline:none}.stage-holder.grid[data-v-b4c5a353]{background:conic-gradient(#141a26 90deg,transparent 90deg 180deg,#141a26 180deg 270deg,#141a26 180deg 270deg,transparent 270deg);background-size:28px 28px}.stage-holder[data-v-b4c5a353]:active{cursor:grabbing}.hud[data-v-b4c5a353]{position:absolute;bottom:12px;left:12px;padding:8px 12px;background:#141420bf;border-radius:8px;font-size:12px;color:#a0a8cc}.hud-number[data-v-b4c5a353]{display:inline-block;box-sizing:border-box;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.hud-system-count[data-v-b4c5a353]{width:3ch}.hud-particle-count[data-v-b4c5a353]{width:7ch;text-align:left}.hud-tip[data-v-b4c5a353]{margin-left:12px;color:#5f6a8a;font-size:11px}b[data-v-b4c5a353]{color:#fc3}.config-management-body[data-v-7ab00fa9]{padding-bottom:2px}.config-toolbar[data-v-7ab00fa9]{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:6px;margin-bottom:10px}.config-toolbar button[data-v-7ab00fa9],.config-toolbar select[data-v-7ab00fa9]{min-width:0;height:30px;box-sizing:border-box;border:1px solid #3b4864;border-radius:6px;background:#263149;color:#d6def0;font-size:11px}.config-toolbar button[data-v-7ab00fa9]{padding:0 9px;cursor:pointer}.config-toolbar button[data-v-7ab00fa9]:hover{border-color:#7169dc;background:#343d68;color:#fff}.config-toolbar select[data-v-7ab00fa9]{padding:0 7px;overflow:hidden;text-overflow:ellipsis}.config-toolbar select[data-v-7ab00fa9]:disabled{color:#68738a;background:#1b2130}.config-message[data-v-7ab00fa9]{margin:-4px 0 9px;color:#83b9a2;font-size:10px}.config-message.error[data-v-7ab00fa9]{color:#e8959e}.group[data-v-7ab00fa9]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-7ab00fa9]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-7ab00fa9]:hover{background:#20202e}.group-body[data-v-7ab00fa9]{padding:8px 10px 12px}.caret[data-v-7ab00fa9]{display:inline-block;width:12px;color:#667;font-size:11px}.ns[data-v-45669c72]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.ns-label[data-v-45669c72]{width:60px;flex-shrink:0;color:#8a93bb}.ns-range[data-v-45669c72]{flex:1;accent-color:#3a7cd6}.ns-num[data-v-45669c72]{width:56px;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;text-align:right}.ns.disabled[data-v-45669c72]{opacity:.55}.ns.disabled .ns-range[data-v-45669c72],.ns.disabled .ns-num[data-v-45669c72]{cursor:not-allowed}.ce[data-v-3c8d1b94]{display:flex;align-items:flex-start;gap:6px;width:100%}.ce-editor[data-v-3c8d1b94]{flex:1;min-width:0}.ce-reset[data-v-3c8d1b94]{flex:0 0 auto;padding:5px 7px;border:1px solid #3b4b65;border-radius:5px;background:#242f42;color:#c4cee2;font-size:10px;cursor:pointer}.ce-reset[data-v-3c8d1b94]:hover{border-color:#7774ff;background:#4f4dc2;color:#fff}.ce-svg[data-v-3c8d1b94]{width:100%;height:110px;display:block;border:1px solid #2a2a3c;border-radius:6px;background:#10101a;cursor:crosshair;touch-action:none}.ce-grid line[data-v-3c8d1b94]{stroke:#1e1e30;stroke-width:1}.ce-frame[data-v-3c8d1b94]{stroke:#2e2e44;stroke-width:1}.ce-line[data-v-3c8d1b94]{stroke:#6ea0e8;stroke-width:2;stroke-linejoin:round}.ce-handles line[data-v-3c8d1b94]{stroke:#8d96b5;stroke-width:1;stroke-dasharray:3 2}.ce-handles circle[data-v-3c8d1b94]{fill:#b7c2dd;stroke:#344d94;stroke-width:1.2;cursor:grab}.ce-handles circle[data-v-3c8d1b94]:active{cursor:grabbing}.ce-node[data-v-3c8d1b94]{fill:#fff;stroke:#3a55aa;stroke-width:1.6;pointer-events:none}.ce-hit[data-v-3c8d1b94]{fill:transparent;stroke:none;cursor:grab}.ce-hit[data-v-3c8d1b94]:active{cursor:grabbing}.ce-nav[data-v-3c8d1b94]{display:flex;justify-content:space-between;margin-top:3px}.ce-tip[data-v-3c8d1b94]{color:#566;font-size:10px}.spine-editor[data-v-3af7b738]{display:grid;gap:10px;color:#c5cbe0}.editor-title[data-v-3af7b738],.section-title[data-v-3af7b738]{color:#dce2f5;font-weight:700}.editor-title[data-v-3af7b738]{padding-bottom:9px;border-bottom:1px solid #30394d}.grid[data-v-3af7b738]{display:grid;gap:8px}.grid.three[data-v-3af7b738]{grid-template-columns:repeat(3,minmax(0,1fr))}.field[data-v-3af7b738]{display:grid;gap:5px;min-width:0;color:#919bb7;font-size:12px}.field input[data-v-3af7b738],.field select[data-v-3af7b738],.asset-name[data-v-3af7b738]{box-sizing:border-box;width:100%;min-width:0;height:35px;padding:0 10px;color:#e2e6f3;background:#101625;border:1px solid #32405b;border-radius:6px}.divider[data-v-3af7b738]{height:1px;background:#30394d;margin:2px 0}.asset-row[data-v-3af7b738]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.asset-name[data-v-3af7b738]{display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#7f8aa7}button[data-v-3af7b738]{height:35px;padding:0 13px;border:1px solid #3b4a67;border-radius:6px;background:#33415b;color:#e2e6f3;cursor:pointer}button[data-v-3af7b738]:hover{filter:brightness(1.13)}button[data-v-3af7b738]:disabled{opacity:.55;cursor:wait}.folder-select[data-v-3af7b738]{width:100%;border-color:#6659c7;background:#4940a8;color:#fff}.folder-hint[data-v-3af7b738]{margin-top:-5px;color:#69758e;font-size:10px;line-height:1.45}.asset-actions[data-v-3af7b738]{display:grid;grid-template-columns:1fr 1fr;gap:5px}.asset-actions .load[data-v-3af7b738]{background:#5543df;border-color:#6959ec}.asset-actions .clear[data-v-3af7b738]{background:#702b34;border-color:#803842}.runtime-note[data-v-3af7b738]{color:#69758e;font-size:11px;text-align:center}.error[data-v-3af7b738]{padding:8px 10px;color:#ffabb2;background:#4b2028;border:1px solid #76323e;border-radius:6px;font-size:12px}.section-box[data-v-3af7b738]{display:grid;gap:8px;padding:10px;background:#182132;border:1px solid #303c54;border-radius:7px}.empty[data-v-3af7b738]{color:#667187;font-size:12px;padding:5px 0}.bone-tree[data-v-3af7b738]{max-height:240px;overflow:auto;padding:4px 0;background:#111827;border-radius:5px}.tree-title-row[data-v-3af7b738]{display:flex;align-items:center;justify-content:space-between;gap:8px}.selected-bone[data-v-3af7b738]{width:auto;min-width:0;max-width:100%;height:24px;flex:0 1 auto;overflow:hidden;padding:0 7px;color:#75819c;background:#182132;border:1px solid transparent;border-radius:5px;font-size:10px;text-align:right;white-space:nowrap;text-overflow:ellipsis}.selected-bone.active[data-v-3af7b738]{color:#aeb9d4;background:#242f44;border-color:#35445e;cursor:pointer}.selected-bone.active[data-v-3af7b738]:hover{border-color:#675ec4;background:#302b57}.selected-bone[data-v-3af7b738]:disabled{opacity:1;cursor:default}.selected-bone strong[data-v-3af7b738]{color:#c5cde3;font-weight:600}.tree-action[data-v-3af7b738]{height:24px;padding:0 8px;color:#9aa7c2;background:#242f44;border-color:#35445e;font-size:10px}.bone-search[data-v-3af7b738]{position:relative}.bone-search input[data-v-3af7b738]{box-sizing:border-box;width:100%;height:30px;padding:0 32px 0 9px;color:#dce2f2;background:#101827;border:1px solid #33415b;border-radius:5px;font-size:11px;outline:none}.bone-search input[data-v-3af7b738]:focus{border-color:#7065df;box-shadow:0 0 0 1px #7065df38}.bone-search button[data-v-3af7b738]{position:absolute;top:3px;right:3px;width:24px;height:24px;padding:0;border:0;color:#8d98b0;background:transparent}.bone[data-v-3af7b738]{display:flex;align-items:center;gap:4px;min-height:25px;color:#aeb8d2;font-size:12px;border-bottom:1px solid rgba(72,84,112,.22);cursor:pointer;outline:none}.bone[data-v-3af7b738]:hover{background:#45567e38}.bone.selected[data-v-3af7b738]{color:#f0edff;background:#6b53dd52;box-shadow:inset 2px 0 #8e72ff}.bone[data-v-3af7b738]:focus-visible{box-shadow:inset 0 0 0 1px #7d72dd}.bone-toggle[data-v-3af7b738]{width:22px;height:22px;padding:0;border:0;background:transparent;color:#9aa7c2}.bone-toggle[data-v-3af7b738]:hover{background:#26324a}.bone-leaf[data-v-3af7b738]{display:inline-flex;width:22px;justify-content:center;color:#58647d}.bone-name[data-v-3af7b738]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media(max-width:430px){.grid.three[data-v-3af7b738]{grid-template-columns:1fr}}.panel[data-v-f97ddd48]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.empty[data-v-f97ddd48],.panel-hint[data-v-f97ddd48]{color:#667;font-size:12px;padding:8px 0}.group[data-v-f97ddd48]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-f97ddd48]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-f97ddd48]:hover{background:#20202e}.scene-head[data-v-f97ddd48]{padding-right:6px}.scene-actions[data-v-f97ddd48]{margin-left:auto;display:flex;align-items:center;gap:4px}.scene-add[data-v-f97ddd48]{height:24px;padding:0 6px;border:1px solid #3a4a6a;border-radius:5px;background:#2e3a55;color:#cdf;font-size:10px;white-space:nowrap;cursor:pointer}.scene-add[data-v-f97ddd48]:hover{border-color:#7774ff;background:#45426f;color:#fff}.scene-add[data-v-f97ddd48]:disabled{opacity:.42;cursor:not-allowed;border-color:#343a4b;background:#252a38;color:#778095}.group-body[data-v-f97ddd48]{padding:8px 10px 12px}.caret[data-v-f97ddd48]{display:inline-block;width:12px;color:#667;font-size:11px}.tree[data-v-f97ddd48]{margin-bottom:8px}.tree-item[data-v-f97ddd48]{display:flex;align-items:center;gap:6px;padding:5px 6px;font-size:12px;color:#bcd;border-radius:6px;margin-bottom:2px}.tree-item.on[data-v-f97ddd48]{background:#26324a;color:#ffe}.tree-item .tdot[data-v-f97ddd48]{color:#fc3;font-size:10px}.tree-item .tdot.dim[data-v-f97ddd48]{color:#556}.tree-item .tdot.collision-dot[data-v-f97ddd48]{color:#ff7070}.tree-item .tdot.path-dot[data-v-f97ddd48]{color:#ff933e;font-size:14px}.tree-item .tdot.spine-dot[data-v-f97ddd48]{color:#c08cff;font-size:11px}.tree-item .tlabel[data-v-f97ddd48]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-tree[data-v-f97ddd48]{padding-bottom:8px;border-bottom:1px solid #2a2a3c}.scene-object-item[data-v-f97ddd48]{min-height:28px;cursor:pointer}.scene-object-item[data-v-f97ddd48]:hover{background:#202b40}.scene-object-kind[data-v-f97ddd48]{color:#75829c;font-size:10px}.scene-object-eye[data-v-f97ddd48]{width:24px;height:22px;padding:3px;flex:0 0 24px;border:1px solid transparent;border-radius:5px;background:transparent;color:#9aa6bf;cursor:pointer}.scene-object-eye[data-v-f97ddd48]:hover{border-color:#4b5972;background:#29354a;color:#e1e7f4}.scene-object-eye.off[data-v-f97ddd48]{color:#59647a}.scene-object-eye svg[data-v-f97ddd48]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.scene-object-eye .eye-slash[data-v-f97ddd48]{stroke:#d47b88;stroke-width:2}.scene-object-delete[data-v-f97ddd48]{width:24px;height:22px;padding:0;border:1px solid #59414a;border-radius:5px;background:#3a272f;color:#efb4bd;font-size:11px;cursor:pointer}.scene-object-delete[data-v-f97ddd48]:hover{border-color:#a45c69;background:#57303a;color:#fff}.object-editor-title[data-v-f97ddd48]{margin:10px 0 8px;padding-top:8px;border-top:1px solid #2a2a3c;color:#cbd4e8;font-weight:700}.field-block[data-v-f97ddd48]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-f97ddd48]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-f97ddd48]{color:#5f6d86;line-height:1.5}.field-grid[data-v-f97ddd48]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-f97ddd48]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-f97ddd48]{width:100%;min-height:30px;box-sizing:border-box}.check-field[data-v-f97ddd48]{align-items:flex-start}.check-field input[data-v-f97ddd48]{width:18px;height:18px;margin:4px 0;accent-color:#4f7ee8}.follow-path[data-v-f97ddd48],.setting-line[data-v-f97ddd48]{display:flex;align-items:center;gap:8px;margin:12px 0 4px;color:#aeb8cf;font-size:12px}.setting-line[data-v-f97ddd48]{justify-content:space-between}.follow-path input[data-v-f97ddd48],.setting-line input[type=checkbox][data-v-f97ddd48]{width:17px;height:17px;accent-color:#4f7ee8}.collider-follow-section[data-v-f97ddd48]{margin-top:12px;padding-top:4px;border-top:1px solid #30394d}.collider-curve-title[data-v-f97ddd48]{display:flex;flex-direction:column;gap:3px;margin:12px 0 6px;color:#aeb8cf;font-size:12px}.collider-curve-title small[data-v-f97ddd48]{color:#67738c;font-size:10px;line-height:1.45}.path-color[data-v-f97ddd48]{width:48px;height:28px;padding:0;border:1px solid #3a4963;background:transparent;cursor:pointer}.path-help[data-v-f97ddd48]{margin:12px 0;color:#7d89a2;font-size:11px;line-height:1.55}.path-help>span[data-v-f97ddd48]{color:#aeb8cf}.path-help ul[data-v-f97ddd48]{margin:6px 0 0;padding-left:20px}.path-help li[data-v-f97ddd48]{margin:3px 0}.path-action[data-v-f97ddd48]{width:100%;height:31px;margin-top:7px;border:0;border-radius:5px;background:#33425b;color:#c9d1e1;cursor:pointer}.path-action[data-v-f97ddd48]:hover{filter:brightness(1.12)}.path-action.primary[data-v-f97ddd48]{background:#f05408;color:#fff}.row[data-v-f97ddd48]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-f97ddd48]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-f97ddd48]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.inp.tiny[data-v-f97ddd48]{width:46px;flex:0 0 46px;text-align:center}.seed-row[data-v-f97ddd48]{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #2d3950}.seed-row label[data-v-f97ddd48]{width:64px;color:#8f9bb5;font-size:12px}.seed-input[data-v-f97ddd48]{min-width:0;flex:1;padding:6px 8px;border:1px solid #344158;border-radius:6px;outline:none;background:#0f1625;color:#e2e7f2;font-size:12px}.seed-input[data-v-f97ddd48]:focus{border-color:#625ff1}.seed-random[data-v-f97ddd48]{width:34px;height:30px;border:1px solid #3a4860;border-radius:6px;background:#2c3950;color:#d7def0;cursor:pointer}.seed-random[data-v-f97ddd48]:hover{background:#394964}.scene-seed[data-v-f97ddd48]{margin-top:10px}.seed-hint[data-v-f97ddd48]{margin:5px 0 1px 72px;color:#657188;font-size:9px;line-height:1.45}.group[data-v-fcf44933]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-fcf44933]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-fcf44933]:hover{background:#20202e}.group-reset[data-v-fcf44933]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-fcf44933]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-fcf44933]{padding:8px 10px 12px}.caret[data-v-fcf44933]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-fcf44933]{height:1px;background:#2a2a3c;margin:8px 0}.row[data-v-fcf44933]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-fcf44933]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-fcf44933]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.segs[data-v-fcf44933]{display:flex;gap:6px;margin:6px 0}.stream-behavior-segs[data-v-fcf44933]{margin-top:10px}.stream-loop-options[data-v-fcf44933]{display:grid;gap:8px;margin:8px 0 4px;padding:9px 10px;border:1px solid #32405a;border-radius:6px;background:#171f2e}.loop-section-row[data-v-fcf44933]{display:flex;min-height:27px;align-items:center;justify-content:space-between;gap:8px}.loop-duration-control[data-v-fcf44933]{display:flex;flex:0 0 auto;align-items:center;gap:7px}.loop-duration-toggle[data-v-fcf44933]{gap:5px;font-size:10px;white-space:nowrap}.loop-duration-toggle .switch-ui[data-v-fcf44933]{width:26px;height:14px}.loop-duration-toggle .switch-ui[data-v-fcf44933]:after{width:10px;height:10px}.loop-duration-toggle input:checked+.switch-ui[data-v-fcf44933]:after{transform:translate(12px)}.loop-section-duration[data-v-fcf44933]{display:flex;flex:0 0 auto;align-items:center;gap:4px;color:#7f8ba4;font-size:11px}.loop-section-duration input[data-v-fcf44933]{position:static;width:54px;height:25px;padding:0 6px;border:1px solid #3a465f;border-radius:5px;outline:none;background:#101725;color:#e4e8f2;text-align:right;opacity:1;pointer-events:auto}.loop-section-duration input[data-v-fcf44933]:focus{border-color:#716eff}.loop-auto-duration[data-v-fcf44933]{min-width:54px;color:#77839a;text-align:right;white-space:nowrap}.seg[data-v-fcf44933]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-fcf44933]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.seg[data-v-fcf44933]{display:flex;gap:6px;margin:6px 0}.inp.tiny[data-v-fcf44933]{width:46px;flex:0 0 46px;text-align:center}.switch-row[data-v-fcf44933]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-fcf44933]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-fcf44933]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-fcf44933]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-fcf44933]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-fcf44933]:after{transform:translate(14px)}.modifier-hint[data-v-fcf44933]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.stream-loop-hint[data-v-fcf44933]{margin:9px 2px 3px;padding:7px 8px;border:1px solid #4a436e;border-radius:5px;background:#211f35;color:#aaa4d7}.switch-row input:disabled+.switch-ui[data-v-fcf44933]{opacity:.45;cursor:not-allowed}.pac[data-v-7a931847]{padding:10px;margin:8px 0;border:1px solid #2c3850;border-radius:7px;background:#171d2a}.pac-head[data-v-7a931847]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.pac-label[data-v-7a931847]{color:#aeb8cf;font-size:12px;font-weight:600;white-space:nowrap}.pac-modes[data-v-7a931847]{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pac-mode[data-v-7a931847]{padding:4px 7px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.pac-mode.on[data-v-7a931847]{border-color:#7774ff;background:#605df0;color:#fff}.pac-curve[data-v-7a931847]{margin-top:8px}.pac-axis[data-v-7a931847]{display:flex;justify-content:space-between;margin-top:3px;color:#5f6b82;font-size:10px}.pac[data-v-7a931847] .ns-label{width:58px}.pac[data-v-7a931847] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.pac[data-v-7a931847] .ce-tip{color:#657188}.group[data-v-909c781b]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-909c781b]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-909c781b]:hover{background:#20202e}.group-reset[data-v-909c781b]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-909c781b]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-909c781b]{padding:8px 10px 12px}.caret[data-v-909c781b]{display:inline-block;width:12px;color:#667;font-size:11px}.row[data-v-909c781b]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-909c781b]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.attr-body[data-v-909c781b]{padding:10px;background:#151b27}.attr-section-title[data-v-909c781b]{margin:2px 0 8px;color:#9ca8c0;font-size:12px;font-weight:700}.attr-section-title.life-title[data-v-909c781b]{margin-top:14px;padding-top:12px;border-top:1px solid #2d3950}.attr-axis-head[data-v-909c781b]{display:flex;align-items:center;justify-content:space-between;margin:10px 1px -2px;color:#aeb8cf;font-size:12px;font-weight:600}.axis-modes[data-v-909c781b]{display:flex;gap:4px}.axis-mode[data-v-909c781b]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-909c781b]{border-color:#7774ff;background:#605df0;color:#fff}.life-item[data-v-909c781b]{padding:9px 0;border-bottom:1px solid #2a3549}.switch-row[data-v-909c781b]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-909c781b]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-909c781b]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-909c781b]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-909c781b]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-909c781b]:after{transform:translate(14px)}.life-axis[data-v-909c781b]{margin:9px 0 2px 42px}.switch-row input:disabled+.switch-ui[data-v-909c781b]{opacity:.45;cursor:not-allowed}.gradient-editor[data-v-8816e4a4]{margin:8px 0 11px 68px}.gradient-bar[data-v-8816e4a4]{position:relative;height:18px;margin-bottom:14px;border:1px solid #465570;border-radius:6px;cursor:crosshair}.gradient-stop[data-v-8816e4a4]{position:absolute;top:15px;width:14px;height:17px;padding:0;transform:translate(-50%);border:2px solid #d8deea;border-radius:2px 2px 5px 5px;background:var(--stop-color);cursor:grab;box-shadow:0 1px 3px #0009}.gradient-stop[data-v-8816e4a4]:before{content:"";position:absolute;left:2px;top:-7px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:5px solid #d8deea}.gradient-stop.selected[data-v-8816e4a4]{outline:2px solid #7774ff;outline-offset:1px;z-index:2}.gradient-stop[data-v-8816e4a4]:active{cursor:grabbing}.gradient-controls[data-v-8816e4a4]{display:flex;align-items:center;gap:5px;margin-top:30px}.gradient-color[data-v-8816e4a4]{width:28px;height:24px;padding:1px;border:1px solid #465570;border-radius:4px;background:#151b27;cursor:pointer}.gradient-hex-input[data-v-8816e4a4]{width:66px;padding:4px 5px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#aeb8cb;font-size:10px;font-family:monospace}.gradient-hex-input[data-v-8816e4a4]:focus{border-color:#7774ff;color:#fff}.gradient-position[data-v-8816e4a4]{display:flex;align-items:center;color:#71809a;font-size:10px}.gradient-position input[data-v-8816e4a4]{width:43px;padding:3px 4px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#dce3ef;text-align:right}.gradient-action[data-v-8816e4a4]{width:25px;height:24px;padding:0;border:1px solid #3a4860;border-radius:4px;background:#273246;color:#cbd4e5;cursor:pointer}.gradient-action[data-v-8816e4a4]:hover:not(:disabled){border-color:#7774ff;color:#fff}.gradient-action.danger[data-v-8816e4a4]{color:#e3a5aa}.gradient-action[data-v-8816e4a4]:disabled{opacity:.35;cursor:not-allowed}.gradient-hint[data-v-8816e4a4]{margin-top:5px;color:#59667b;font-size:9px}.image-card[data-v-7a2d016a]{margin:8px 0;padding:9px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.imgrow[data-v-7a2d016a]{display:flex;align-items:flex-start;gap:8px}.img-thumb[data-v-7a2d016a]{width:48px;height:48px;padding:0;border:1px solid #3a4963;border-radius:6px;background:#1a2232;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;overflow:hidden}.img-thumb[data-v-7a2d016a]:hover{border-color:#7774ff}.img-thumb img[data-v-7a2d016a]{display:block;width:100%;height:100%;object-fit:contain}.img-fields[data-v-7a2d016a]{flex:1;min-width:0}.img-actions[data-v-7a2d016a]{display:flex;flex-direction:column;gap:4px}.row[data-v-7a2d016a]{display:flex;align-items:center;gap:8px;margin:6px 0;color:#aab;font-size:12px}.row>span[data-v-7a2d016a]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-7a2d016a]{min-width:0;flex:1;padding:3px 5px;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;font-size:12px}.mini-btn2[data-v-7a2d016a]{width:26px;height:24px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:5px;color:#aab;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mini-btn2[data-v-7a2d016a]:hover{background:#2b3a5c}.mini-btn2[data-v-7a2d016a]:disabled{opacity:.35;cursor:not-allowed}.thumb-note[data-v-7a2d016a]{margin:4px 0 2px;color:#667;font-size:11px}.sequence-pick[data-v-7a2d016a]{width:100%;margin:2px 0 4px;padding:6px 8px;border:1px solid #4a4a76;border-radius:5px;background:#27264b;color:#d8d7ff;font-size:12px;cursor:pointer}.sequence-pick[data-v-7a2d016a]:hover{border-color:#7774ff;background:#35336a}.sequence-note[data-v-7a2d016a]{margin:0 0 6px;color:#727b9b;font-size:11px;line-height:1.4}.resource-weight-row[data-v-7a2d016a]{display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:7px}.resource-weight-control[data-v-7a2d016a]{width:100%;min-width:0}.resource-weight-control[data-v-7a2d016a] .ns-range{min-width:0}.resource-weight-control[data-v-7a2d016a] .ns-num{flex:0 0 56px;box-sizing:border-box}.weight-lock[data-v-7a2d016a]{width:28px;height:26px;flex:0 0 28px;padding:5px;border:1px solid #35435c;border-radius:5px;background:#202a3b;color:#78859e;cursor:pointer}.weight-lock svg[data-v-7a2d016a]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.weight-lock[data-v-7a2d016a]:hover:not(:disabled){border-color:#7774ff;color:#b8b6ff}.weight-lock.on[data-v-7a2d016a]{border-color:#7774ff;background:#514fd0;color:#fff}.weight-lock[data-v-7a2d016a]:disabled{opacity:.35;cursor:not-allowed}.group[data-v-f3235ea1]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-f3235ea1]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-f3235ea1]:hover{background:#20202e}.group-reset[data-v-f3235ea1]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-f3235ea1]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-f3235ea1]{padding:8px 10px 12px}.caret[data-v-f3235ea1]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-f3235ea1]{height:1px;background:#2a2a3c;margin:8px 0}.row[data-v-f3235ea1]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-f3235ea1]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-f3235ea1]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.colr[data-v-f3235ea1]{width:28px;height:22px;border:none;background:none;cursor:pointer}.seg[data-v-f3235ea1]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-f3235ea1]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.look-title[data-v-f3235ea1]{font-size:12px;font-weight:600;color:#ccd;margin:10px 0 6px;padding-bottom:4px;border-bottom:1px solid #2a2a3c}.look-title[data-v-f3235ea1]:first-child{margin-top:2px}.seg[data-v-f3235ea1]{display:flex;gap:6px;margin:6px 0}.seg-btn[data-v-f3235ea1]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg-btn.active[data-v-f3235ea1]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.curve-wrap[data-v-f3235ea1]{margin:6px 0}.curve-labels[data-v-f3235ea1]{display:flex;justify-content:space-between;color:#566;font-size:10px;margin-top:2px}.image-title[data-v-f3235ea1]{display:flex;align-items:center;justify-content:space-between}.image-add[data-v-f3235ea1]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-f3235ea1]:hover{background:#4542a8;color:#fff}.resource-divider[data-v-f3235ea1]{height:1px;margin:9px 0 7px;background:#2a3549}.resource-color-row .blend-select[data-v-f3235ea1]{max-width:88px}.resource-color-picker .hex[data-v-f3235ea1]{margin-left:0}.random-color-hint[data-v-f3235ea1]{margin:-5px 0 9px 68px;color:#66758e;font-size:9px;line-height:1.45}.hex-input[data-v-f3235ea1]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-f3235ea1]:focus{border-color:#7774ff;color:#fff}.resource-alpha-head[data-v-f3235ea1]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:#8a93bb;font-size:12px}.alpha-modes[data-v-f3235ea1]{display:flex;gap:3px}.alpha-modes button[data-v-f3235ea1]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-f3235ea1]:hover{background:#273246}.alpha-modes button.on[data-v-f3235ea1]{border-color:#7774ff;background:#605df0;color:#fff}.resource-alpha-curve[data-v-f3235ea1]{margin-top:7px}.file-input[data-v-f3235ea1]{display:none}.hex[data-v-f3235ea1]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-f3235ea1]{width:46px;flex:0 0 46px;text-align:center}.empty[data-v-4d0d64ec]{color:#667;font-size:12px;padding:8px 0}.group[data-v-4d0d64ec]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-4d0d64ec]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-4d0d64ec]:hover{background:#20202e}.group-reset[data-v-4d0d64ec]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-4d0d64ec]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-4d0d64ec]{padding:8px 10px 12px}.caret[data-v-4d0d64ec]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-4d0d64ec]{height:1px;background:#2a2a3c;margin:8px 0}.field-block[data-v-4d0d64ec]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-4d0d64ec]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-4d0d64ec]{color:#5f6d86;line-height:1.5}.field-grid[data-v-4d0d64ec]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-4d0d64ec]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-4d0d64ec]{width:100%;min-height:30px;box-sizing:border-box}.tag[data-v-4d0d64ec]{font-size:10px;color:#667;background:#1c1c2a;border-radius:4px;padding:1px 5px}.row[data-v-4d0d64ec]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-4d0d64ec]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-4d0d64ec]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.colr[data-v-4d0d64ec]{width:28px;height:22px;border:none;background:none;cursor:pointer}.placeholder[data-v-4d0d64ec]{color:#667;font-size:11px;padding:6px 0}.image-add[data-v-4d0d64ec]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-4d0d64ec]:hover{background:#4542a8;color:#fff}.resource-divider[data-v-4d0d64ec]{height:1px;margin:9px 0 7px;background:#2a3549}.hex-input[data-v-4d0d64ec]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-4d0d64ec]:focus{border-color:#7774ff;color:#fff}.alpha-modes[data-v-4d0d64ec]{display:flex;gap:3px}.alpha-modes button[data-v-4d0d64ec]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-4d0d64ec]:hover{background:#273246}.alpha-modes button.on[data-v-4d0d64ec]{border-color:#7774ff;background:#605df0;color:#fff}.file-input[data-v-4d0d64ec]{display:none}.hex[data-v-4d0d64ec]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-4d0d64ec]{width:46px;flex:0 0 46px;text-align:center}.axis-mode[data-v-4d0d64ec]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-4d0d64ec]{border-color:#7774ff;background:#605df0;color:#fff}.switch-row[data-v-4d0d64ec]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-4d0d64ec]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-4d0d64ec]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-4d0d64ec]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-4d0d64ec]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-4d0d64ec]:after{transform:translate(14px)}.modifier-item[data-v-4d0d64ec]{padding:8px 0 10px;border-bottom:1px solid #2a3549}.modifier-switch[data-v-4d0d64ec]{font-weight:600}.modifier-params[data-v-4d0d64ec]{margin:8px 0 0 10px;padding:2px 0 2px 10px;border-left:2px solid #344158}.modifier-hint[data-v-4d0d64ec]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.collision-filter-params[data-v-4d0d64ec]{position:relative;padding-top:5px;padding-bottom:5px}.collision-filter-title[data-v-4d0d64ec]{margin-bottom:8px;color:#9ba7bd;font-size:11px;font-weight:600}.collision-filter-tags[data-v-4d0d64ec]{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.collision-filter-tag[data-v-4d0d64ec]{display:inline-flex;min-width:0;align-items:center;gap:6px;padding:5px 5px 5px 8px;border:1px solid #625ff1;border-radius:6px;background:#514dcf;color:#fff;font-size:11px}.collision-filter-tag>span[data-v-4d0d64ec]{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-tag.disabled[data-v-4d0d64ec]{border-color:#4b5364;background:#343b4b;color:#929bad}.collision-filter-tag button[data-v-4d0d64ec]{width:18px;height:18px;padding:0;border:0;border-radius:4px;background:#0b0f1a38;color:inherit;line-height:16px;cursor:pointer}.collision-filter-tag button[data-v-4d0d64ec]:hover{background:#0b0f1a80;color:#fff}.collision-filter-add[data-v-4d0d64ec]{width:30px;height:30px;padding:0;border:1px dashed #536079;border-radius:6px;background:#182131;color:#98a5bd;font-size:18px;line-height:28px;cursor:pointer}.collision-filter-add[data-v-4d0d64ec]:hover,.collision-filter-add.active[data-v-4d0d64ec]{border-color:#7774ff;background:#262c52;color:#fff}.collision-filter-add[data-v-4d0d64ec]:disabled{opacity:.42;cursor:not-allowed}.collision-filter-empty[data-v-4d0d64ec]{margin-top:7px;color:#6f7b91;font-size:10px}.collision-filter-picker[data-v-4d0d64ec]{display:grid;gap:4px;margin-top:7px;padding:5px;border:1px solid #344158;border-radius:6px;background:#101725}.collision-filter-picker button[data-v-4d0d64ec]{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:#c7d0e3;font-size:11px;text-align:left;cursor:pointer}.collision-filter-picker button[data-v-4d0d64ec]:hover{background:#29344a;color:#fff}.collision-filter-picker button span[data-v-4d0d64ec]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-picker button small[data-v-4d0d64ec]{flex:none;color:#68758d;font-size:9px}.switch-row input:disabled+.switch-ui[data-v-4d0d64ec]{opacity:.45;cursor:not-allowed}.bone-follow-target[data-v-4d0d64ec]{margin:7px 0 9px;padding:7px 8px;overflow:hidden;color:#7f8ba3;background:#121a29;border:1px solid #2f3c53;border-radius:5px;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.bone-follow-target strong[data-v-4d0d64ec]{color:#c8d0e4;font-weight:600}.bone-follow-missing[data-v-4d0d64ec]{margin:7px 0 9px;padding:7px 8px;color:#d49aa3;background:#2a1e26;border:1px solid #513540;border-radius:5px;font-size:10px;line-height:1.5}.bone-follow-rebind[data-v-4d0d64ec]{width:100%;min-height:28px;margin:0 0 8px;padding:4px 8px;overflow:hidden;border:1px solid #4a436e;border-radius:5px;background:#2d2947;color:#c8c2ee;font-size:10px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.bone-follow-rebind[data-v-4d0d64ec]:hover{border-color:#7165bd;background:#3a335d;color:#fff}.bone-follow-transform-grid[data-v-4d0d64ec]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.modifier-mode-row[data-v-4d0d64ec]{display:flex;justify-content:flex-end;gap:4px;margin-bottom:6px}.gravity-curve-title[data-v-4d0d64ec]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.gravity-curve-title span[data-v-4d0d64ec]:last-child{color:#657188;font-size:9px}.gravity-curve-axis[data-v-4d0d64ec]{display:flex;justify-content:space-between;margin:3px 34px 0 1px;color:#5f6b82;font-size:9px}.gravity-params[data-v-4d0d64ec] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.trail-params[data-v-4d0d64ec]{padding-right:2px}.trail-section-title[data-v-4d0d64ec]{margin:3px 0 8px;color:#aeb8cf;font-size:12px;font-weight:700}.trail-fixed-color .hex-input[data-v-4d0d64ec]{min-width:0;flex:1}.trail-mode-head[data-v-4d0d64ec]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.trail-sub-switch[data-v-4d0d64ec]{margin:11px 0 7px;padding-top:9px;border-top:1px solid #2a3549}.trail-grid-row[data-v-4d0d64ec]{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.trail-grid-row[data-v-4d0d64ec] .ns{min-width:0;flex-wrap:wrap;align-items:center}.trail-grid-row[data-v-4d0d64ec] .ns-label{width:100%}.trail-grid-row[data-v-4d0d64ec] .ns-range{min-width:0}.trail-grid-row[data-v-4d0d64ec] .ns-num{width:42px}.trail-params[data-v-4d0d64ec] .ce-svg{height:92px;background:#0f1625;border-color:#30405a}.group[data-v-ffed0f1f]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-ffed0f1f]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-ffed0f1f]:hover{background:#20202e}.group-reset[data-v-ffed0f1f]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-ffed0f1f]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-ffed0f1f]{padding:8px 10px 12px}.caret[data-v-ffed0f1f]{display:inline-block;width:12px;color:#667;font-size:11px}.row[data-v-ffed0f1f]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-ffed0f1f]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-ffed0f1f]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.placeholder[data-v-ffed0f1f]{color:#667;font-size:11px;padding:6px 0}.export-settings[data-v-ffed0f1f]{padding-top:3px}.export-field[data-v-ffed0f1f]{display:flex;flex-direction:column;gap:6px;margin:10px 0 13px;color:#9ca8bf;font-size:11px;font-weight:600}.export-input[data-v-ffed0f1f]{width:100%;min-height:34px;box-sizing:border-box;padding:6px 9px;color:#e3e7f2;background:#141a29;border-color:#35445f}.export-fps-row[data-v-ffed0f1f]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.export-fps-field[data-v-ffed0f1f]{margin-bottom:5px}.export-checkbox[data-v-ffed0f1f]{display:flex;align-items:center;gap:7px;min-height:34px;margin-bottom:5px;color:#aeb8cc;font-size:11px;white-space:nowrap}.export-checkbox input[data-v-ffed0f1f]{width:17px;height:17px;margin:0;accent-color:#625ff1}.export-help[data-v-ffed0f1f]{margin:-6px 0 14px;color:#66758e;font-size:10px;line-height:1.5}.export-switches[data-v-ffed0f1f]{display:grid;gap:13px;margin:4px 0 7px;padding-top:2px}.export-switch[data-v-ffed0f1f]{font-weight:600}.export-switch-last[data-v-ffed0f1f]{margin-top:13px}.inp.tiny[data-v-ffed0f1f]{width:46px;flex:0 0 46px;text-align:center}.switch-row[data-v-ffed0f1f]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-ffed0f1f]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-ffed0f1f]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-ffed0f1f]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-ffed0f1f]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-ffed0f1f]:after{transform:translate(14px)}.switch-row input:disabled+.switch-ui[data-v-ffed0f1f]{opacity:.45;cursor:not-allowed}.spine-export-actions[data-v-5f1ec706]{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.export-spine-json[data-v-5f1ec706]{width:100%;padding:9px 8px;flex:0 0 auto;border:1px solid #4f4b9a;border-radius:7px;background:#403b91;color:#f1f0ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-json[data-v-5f1ec706]:hover{border-color:#7774ff;background:#514bc0}.export-spine-json[data-v-5f1ec706]:disabled{cursor:wait;opacity:.68}.export-spine-project[data-v-5f1ec706]{grid-column:1 / -1;width:100%;padding:7px 8px;border:1px solid #287d69;border-radius:7px;background:#196854;color:#edfff9;font-size:12px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.export-spine-project small[data-v-5f1ec706]{color:inherit;font-size:9px;font-weight:500;line-height:1.1}.export-spine-project[data-v-5f1ec706]:hover:not(:disabled){border-color:#47c89f;background:#238267}.export-spine-project[data-v-5f1ec706]:disabled{cursor:not-allowed;opacity:.48}.export-spine-images[data-v-5f1ec706]{width:100%;padding:8px;border:1px solid #3b5f8b;border-radius:7px;background:#243e64;color:#eaf3ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-images[data-v-5f1ec706]:hover:not(:disabled){border-color:#6099dc;background:#315581}.export-spine-images[data-v-5f1ec706]:disabled{cursor:wait;opacity:.55}.connector-status[data-v-5f1ec706]{display:flex;align-items:center;justify-content:center;gap:5px;padding-top:6px;color:#717b99;font-size:10px}.connector-status .connector-dot[data-v-5f1ec706]{width:6px;height:6px;border-radius:50%;background:#66718f}.connector-status.ready[data-v-5f1ec706]{color:#70d8ae}.connector-status.ready .connector-dot[data-v-5f1ec706]{background:#49c993;box-shadow:0 0 5px #49c99388}.connector-status.warning[data-v-5f1ec706]{color:#d4aa67}.connector-status.warning .connector-dot[data-v-5f1ec706]{background:#d4aa67}.connector-status button[data-v-5f1ec706]{padding:0 3px;border:0;background:transparent;color:#8290b6;font-size:10px;cursor:pointer}.connector-status button[data-v-5f1ec706]:hover{color:#c5caff}.connector-status a[data-v-5f1ec706]{padding:0 3px;color:#a8b0ff;font-size:10px;text-decoration:underline}.connector-status a[data-v-5f1ec706]:hover{color:#d8dcff}.export-message[data-v-5f1ec706]{padding:7px 5px 0;color:#70d8ae;font-size:10px;line-height:1.45;text-align:center}.export-message.error[data-v-5f1ec706]{color:#ff858f}.export-message a[data-v-5f1ec706]{display:inline-block;margin-left:5px;color:#9da7ff;text-decoration:underline}.panel[data-v-a28d4278]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.panel-scroll[data-v-a28d4278]{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding-right:2px;scrollbar-width:thin;scrollbar-color:#2e2e44 transparent}.panel-scroll[data-v-a28d4278]::-webkit-scrollbar{width:6px}.panel-scroll[data-v-a28d4278]::-webkit-scrollbar-track{background:transparent}.panel-scroll[data-v-a28d4278]::-webkit-scrollbar-thumb{background:#2e2e44;border-radius:3px}.panel-scroll[data-v-a28d4278]::-webkit-scrollbar-thumb:hover{background:#3a3a55}.panel-header[data-v-a28d4278]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex:0 0 auto;font-weight:700;color:#ccd}.timeline[data-v-e305dee7]{height:100%;background:#12121c;border-top:1px solid #2a2a3c;display:flex;flex-direction:column;padding:6px 10px;gap:4px}.tl-controls[data-v-e305dee7]{display:flex;align-items:center;gap:8px}.tl-btn[data-v-e305dee7]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.tl-btn.on[data-v-e305dee7]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.tl-range[data-v-e305dee7]{display:flex;height:25px;align-items:center;gap:3px;color:#778198;font-size:10px}.tl-range input[data-v-e305dee7]{width:43px;height:25px;padding:0 5px;box-sizing:border-box;border:1px solid #3a3a51;border-radius:5px;outline:none;background:#181824;color:#e1e4ed;font-size:11px;text-align:center}.tl-range input[data-v-e305dee7]:focus{border-color:#716eff}.tl-loop-range[data-v-e305dee7]{height:25px;padding:0 7px;border:1px solid #4e5680;border-radius:5px;background:#252943;color:#bfc8e8;font-size:10px;cursor:pointer;white-space:nowrap}.tl-loop-range[data-v-e305dee7]:hover{border-color:#716eff;color:#fff}.tl-frame[data-v-e305dee7]{display:inline-block;flex:0 0 92px;width:92px;box-sizing:border-box;font-size:12px;color:#aab;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}.tl-frame b[data-v-e305dee7]{display:inline;color:inherit;font-weight:400}.tl-legend[data-v-e305dee7]{display:flex;align-items:center;gap:4px;color:#778198;font-size:10px}.tl-legend i[data-v-e305dee7]{display:inline-block;width:10px;height:7px;border-radius:2px}.legend-emission[data-v-e305dee7]{margin-left:4px;background:#2f8b62}.legend-life[data-v-e305dee7]{margin-left:5px;background:#a54551}.legend-spine[data-v-e305dee7]{margin-left:5px;background:#7448b8}.tl-anim[data-v-e305dee7]{display:flex;align-items:center;gap:6px;font-size:12px;color:#aab}.tl-owner-animation[data-v-e305dee7]{position:relative}.tl-animation-trigger[data-v-e305dee7]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:116px;height:25px;padding:0 7px;overflow:hidden;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;cursor:pointer}.tl-animation-trigger>span[data-v-e305dee7]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-trigger>i[data-v-e305dee7]{flex:0 0 auto;color:#8c96ad;font-style:normal}.tl-animation-trigger[data-v-e305dee7]:disabled{opacity:.5;cursor:not-allowed}.tl-animation-menu[data-v-e305dee7]{position:absolute;z-index:30;right:0;bottom:calc(100% + 6px);width:226px;padding:7px;border:1px solid #3c4760;border-radius:8px;background:#171b29;box-shadow:0 10px 24px #00000073}.tl-animation-menu-title[data-v-e305dee7]{padding:2px 4px 6px;color:#77839c;font-size:10px}.tl-animation-option[data-v-e305dee7]{display:flex;align-items:center;justify-content:space-between;width:100%;height:27px;padding:0 7px;border:0;border-radius:5px;background:transparent;color:#b8c1d5;text-align:left;cursor:pointer}.tl-animation-option>span[data-v-e305dee7]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-option[data-v-e305dee7]:hover{background:#252e42}.tl-animation-option.on[data-v-e305dee7]{background:#34335d;color:#fff}.tl-animation-option>i[data-v-e305dee7]{color:#8d8aff;font-style:normal}.tl-animation-editor[data-v-e305dee7]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;margin-top:7px;padding-top:7px;border-top:1px solid #2b3346}.tl-animation-name[data-v-e305dee7]{min-width:0;height:27px;padding:0 7px;box-sizing:border-box;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2;outline:none}.tl-animation-name[data-v-e305dee7]:focus{border-color:#6865d8}.tl-animation-editor button[data-v-e305dee7],.tl-animation-actions button[data-v-e305dee7]{height:27px;padding:0 8px;border:1px solid #3c4861;border-radius:5px;background:#29344a;color:#cbd3e3;cursor:pointer}.tl-animation-actions[data-v-e305dee7]{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}.tl-animation-actions button[data-v-e305dee7]:last-child{border-color:#5b3942;background:#3b282f;color:#e2a8b2}.tl-animation-actions button[data-v-e305dee7]:disabled{opacity:.4;cursor:not-allowed}.tl-animation-error[data-v-e305dee7]{margin-top:5px;color:#ef8997;font-size:10px}.tl-animation-hint[data-v-e305dee7]{margin-top:5px;color:#69758d;font-size:9px;text-align:center}.tl-sel[data-v-e305dee7]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px;padding:2px 6px;font-size:12px}.tl-sel[data-v-e305dee7]:disabled{opacity:.5;cursor:not-allowed}.tl-spine-preview .tl-sel[data-v-e305dee7]{max-width:190px}.tl-zoom[data-v-e305dee7]{margin-left:auto;font-size:11px;color:#667}.tl-viewport[data-v-e305dee7]{position:relative;flex:1;overflow:hidden;background:#0d0d14;border:1px solid #2a2a3c;border-radius:6px;cursor:ew-resize}.tl-ticks[data-v-e305dee7]{position:absolute;top:0;left:0;right:0;height:18px}.tl-tickline[data-v-e305dee7]{position:absolute;top:0;bottom:0;width:1px;background:#263040}.tl-ticklabel[data-v-e305dee7]{position:absolute;top:2px;transform:translate(-50%);font-size:9px;color:#667}.tl-playhead[data-v-e305dee7]{position:absolute;top:0;bottom:0;width:2px;background:#fc3;z-index:5;pointer-events:none}.tl-lanes[data-v-e305dee7]{position:absolute;top:22px;left:0;right:0;bottom:0}.tl-lane[data-v-e305dee7]{position:relative;height:26px;margin-bottom:4px}.lane-ico[data-v-e305dee7]{position:absolute;left:4px;top:6px;font-size:11px;color:#dde;z-index:2;pointer-events:none}.lane-bar[data-v-e305dee7]{position:absolute;top:4px;height:18px;display:flex;align-items:stretch;cursor:grab;box-sizing:border-box}.lane-bar[data-v-e305dee7]:active{cursor:grabbing}.lane-name[data-v-e305dee7]{position:absolute;left:14px;right:5px;top:2px;z-index:2;pointer-events:none;font-size:11px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-life[data-v-e305dee7]{position:absolute;inset:0 auto 0 0;z-index:0;min-width:1px;border:1px solid #c05a66;border-radius:5px;background:#a54551;box-sizing:border-box}.bar-life.loop-life[data-v-e305dee7]{border-color:#667085;background:#242b39}.bar-emission[data-v-e305dee7]{position:absolute;inset:0 auto 0 0;z-index:1;min-width:1px;border:1px solid #45a97d;border-radius:5px 0 0 5px;background:#2f8b62;box-sizing:border-box}.bar-emission.bar-loop[data-v-e305dee7]{border-radius:0}.bar-loop-transition[data-v-e305dee7]{position:absolute;top:0;bottom:0;z-index:1;border:1px solid #7d8799;background:#50596a;box-sizing:border-box}.bar-loop-start[data-v-e305dee7]{left:0;border-radius:5px 0 0 5px}.bar-loop-end[data-v-e305dee7]{border-radius:0 5px 5px 0}.bar-handle[data-v-e305dee7]{position:absolute;z-index:4;right:-4px;top:-1px;bottom:-1px;width:8px;cursor:ew-resize;background:#ffffff2e}.bar-handle[data-v-e305dee7]:hover{background:#ffffff59}.spine-ico[data-v-e305dee7]{color:#c08cff}.spine-bar[data-v-e305dee7]{position:absolute;top:4px;height:18px;min-width:1px;box-sizing:border-box;border:1px solid #a575ed;border-radius:5px;background:#7448b8;cursor:grab;box-shadow:inset 0 0 0 1px #ffffff0d}.spine-bar[data-v-e305dee7]:active{cursor:grabbing}.tl-empty[data-v-e305dee7]{color:#667;font-size:11px;padding:8px}.transfer-overlay[data-v-016b4c9d]{position:fixed;z-index:2000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:auto;cursor:wait;overscroll-behavior:contain;background:#05080f42;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.transfer-dialog[data-v-016b4c9d]{width:min(420px,calc(100vw - 40px));padding:18px 20px 16px;border:1px solid #414b66;border-radius:10px;box-shadow:0 18px 55px #00000075;background:#171d2b;color:#e7ebf5}.transfer-heading[data-v-016b4c9d]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;font-size:14px;font-weight:700}.transfer-heading strong[data-v-016b4c9d]{color:#a8a6ff;font-size:12px;font-variant-numeric:tabular-nums}.transfer-track[data-v-016b4c9d]{height:9px;overflow:hidden;border:1px solid #35415a;border-radius:999px;background:#0d1422}.transfer-bar[data-v-016b4c9d]{height:100%;border-radius:inherit;background:linear-gradient(90deg,#4d75e8,#7774ff);transition:width .16s ease}.transfer-track.indeterminate .transfer-bar[data-v-016b4c9d]{width:42%;animation:transfer-slide-016b4c9d 1s ease-in-out infinite}.transfer-detail[data-v-016b4c9d]{min-height:17px;margin-top:9px;color:#8895ae;font-size:11px;line-height:1.5}.transfer-dialog.failed[data-v-016b4c9d]{border-color:#754351}.transfer-dialog.failed .transfer-heading strong[data-v-016b4c9d],.transfer-dialog.failed .transfer-detail[data-v-016b4c9d]{color:#e99aa9}.transfer-dialog.failed .transfer-bar[data-v-016b4c9d]{background:#c85d70}.transfer-fade-enter-active[data-v-016b4c9d],.transfer-fade-leave-active[data-v-016b4c9d]{transition:opacity .16s ease}.transfer-fade-enter-from[data-v-016b4c9d],.transfer-fade-leave-to[data-v-016b4c9d]{opacity:0}@keyframes transfer-slide-016b4c9d{0%{transform:translate(-110%)}to{transform:translate(250%)}}.layout[data-v-d7e0e59a]{display:flex;width:100%;height:100%;min-height:0;overflow:clip}.parameter-panel[data-v-d7e0e59a]{flex-shrink:0;height:100%;min-height:0;overflow:clip}.resizer-col[data-v-d7e0e59a]{width:5px;cursor:col-resize;background:#1c1c2a;border-left:1px solid #2a2a3c;border-right:1px solid #2a2a3c;flex-shrink:0}.resizer-col[data-v-d7e0e59a]:hover{background:#3a5a8c}.right[data-v-d7e0e59a]{flex:1;min-width:0;height:100%;min-height:0;overflow:clip;display:flex;flex-direction:column}.panel-right .right[data-v-d7e0e59a]{order:1}.panel-right .resizer-col[data-v-d7e0e59a]{order:2}.panel-right .parameter-panel[data-v-d7e0e59a]{order:3}.stage-area[data-v-d7e0e59a]{flex:1;min-height:0;overflow:clip}.resizer-row[data-v-d7e0e59a]{height:4px;cursor:row-resize;background:#1c1c2a;border-top:1px solid #2a2a3c;border-bottom:1px solid #2a2a3c;flex-shrink:0}.resizer-row[data-v-d7e0e59a]:hover{background:#3a5a8c}.timeline-area[data-v-d7e0e59a]{position:relative;z-index:10;flex-shrink:0;overflow:visible}html,body{width:100%;height:100%;margin:0;padding:0;overflow:clip;overscroll-behavior:none;background:#0b0b12;color:#e8e8f0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body{position:fixed;top:0;right:0;bottom:0;left:0}*{box-sizing:border-box}#app{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;overflow:clip}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none} diff --git a/dist/assets/index-DIRGlEhR.css b/dist/assets/index-DIRGlEhR.css deleted file mode 100644 index f1e9fc0..0000000 --- a/dist/assets/index-DIRGlEhR.css +++ /dev/null @@ -1 +0,0 @@ -.help-overlay[data-v-12773018]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:72px 24px 28px;box-sizing:border-box;background:#05080fb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-dialog[data-v-12773018]{width:min(820px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid #3a4864;border-radius:14px;background:#141a27;color:#b8c3d8;box-shadow:0 22px 70px #0000009e}.help-head[data-v-12773018]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 15px;border-bottom:1px solid #2b354a;background:linear-gradient(135deg,#202942,#181e2d)}.help-head h2[data-v-12773018]{margin:0;color:#eef2ff;font-size:19px}.help-head p[data-v-12773018]{margin:5px 0 0;color:#7786a3;font-size:11px}.help-close[data-v-12773018]{width:28px;height:28px;flex:0 0 28px;border:1px solid #43516b;border-radius:6px;background:#273249;color:#ccd7ed;cursor:pointer}.help-close[data-v-12773018]:hover{border-color:#7774ff;background:#3b4670;color:#fff}.help-body[data-v-12773018]{min-height:0;overflow:auto;padding:18px 20px 21px}.help-section[data-v-12773018]{padding:14px 15px;border:1px solid #2c3850;border-radius:10px;background:#181f2e}.help-section h3[data-v-12773018]{margin:0 0 11px;color:#9fb2ff;font-size:13px}.help-start ol[data-v-12773018]{margin:0;padding-left:21px;color:#aab6cc;font-size:12px;line-height:1.75}.help-start li[data-v-12773018]::marker{color:#7774ff;font-weight:700}.help-section b[data-v-12773018]{color:#dce4f7}.help-grid[data-v-12773018]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;margin-top:12px}.help-list[data-v-12773018]{display:grid;gap:0;margin:0}.help-list>div[data-v-12773018]{display:grid;grid-template-columns:78px 1fr;gap:9px;padding:7px 0;border-bottom:1px solid #263146}.help-list>div[data-v-12773018]:last-child{border-bottom:0}.help-list dt[data-v-12773018]{color:#d3dcf0;font-size:11px;font-weight:700}.help-list dd[data-v-12773018]{margin:0;color:#8795ae;font-size:11px;line-height:1.5}.shortcut-list[data-v-12773018]{display:grid;gap:7px}.shortcut-list>div[data-v-12773018]{display:flex;align-items:center;min-height:25px;gap:5px}.shortcut-list kbd[data-v-12773018]{min-width:24px;box-sizing:border-box;padding:3px 6px;border:1px solid #465470;border-bottom-width:2px;border-radius:5px;background:#101623;color:#e0e7f6;font:10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center}.shortcut-list span[data-v-12773018]{color:#65728b;font-size:10px}.shortcut-list em[data-v-12773018]{margin-left:auto;color:#9ca9c1;font-size:11px;font-style:normal}.help-note[data-v-12773018]{margin:11px 0 0;padding-top:9px;border-top:1px solid #2a3549;color:#697791;font-size:10px;line-height:1.55}.help-export[data-v-12773018]{margin-top:12px}.help-export p[data-v-12773018]{margin:0;color:#8997b0;font-size:11px;line-height:1.65}.help-doc-title[data-v-12773018]{margin:16px 2px 2px;color:#9fb2ff;font-size:13px;font-weight:700;letter-spacing:.5px}.help-module[data-v-12773018]{margin-top:12px}.help-module-head[data-v-12773018]{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:0;background:transparent;color:#9fb2ff;font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}.help-module-head[data-v-12773018]:hover{color:#fff}.help-module-head .mtitle[data-v-12773018]{flex:1;min-width:0}.help-module-head .caret[data-v-12773018]{flex:0 0 auto;color:#7b86a2;font-size:12px}.help-module.open .help-module-head[data-v-12773018]{color:#fff}.help-module.open .help-module-head .caret[data-v-12773018]{color:#9fb2ff}.help-module .mnum[data-v-12773018]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,#4a53b8,#6a5fd0);color:#fff;font-size:12px;font-weight:700}.help-module.help-connector[data-v-12773018]{border-color:#4a4f8a;background:linear-gradient(135deg,#1d2442,#181d2f)}.help-module.help-connector .help-module-head[data-v-12773018]{color:#b8c2ff}.help-module .connector-intro[data-v-12773018]{margin:0 0 10px;color:#9aa8c4;font-size:11px;line-height:1.6}.help-module .connector-intro b[data-v-12773018]{color:#dce4f7}.help-module .dl-link[data-v-12773018]{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;margin:0 10px 6px 0;padding:6px 12px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;font-size:12px;font-weight:700;text-decoration:none}.help-module .dl-link[data-v-12773018]:hover{border-color:#8982ff;background:#554dc2}.help-module .dl-link small[data-v-12773018]{color:#cfe0ff;font-weight:500;font-size:9px}.help-module-body[data-v-12773018]{padding-top:10px}@media(max-width:760px){.help-overlay[data-v-12773018]{padding:66px 12px 14px}.help-grid[data-v-12773018]{grid-template-columns:1fr}}.topbar[data-v-4749834a]{position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:10px;padding:8px 12px;background:#141420d9;border-radius:10px;border:1px solid rgba(255,255,255,.08);font-size:12px;color:#aab;z-index:5;flex-wrap:wrap}.topbar input[type=range][data-v-4749834a]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px}.tool-group[data-v-4749834a]{display:flex;gap:6px;margin-left:6px;padding-left:12px;border-left:1px solid #2a2a3c}.tool-btn[data-v-4749834a]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.tool-btn[data-v-4749834a]:hover{background:#2b3a5c;color:#fff}.tool-btn.on[data-v-4749834a]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.background-menu[data-v-4749834a]{position:relative;flex:0 0 auto}.background-btn[data-v-4749834a]{height:28px;padding:0 11px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;cursor:pointer}.background-btn[data-v-4749834a]:hover,.background-btn.on[data-v-4749834a]{border-color:#7774ff;background:#343b63;color:#fff}.background-panel[data-v-4749834a]{position:absolute;top:calc(100% + 9px);right:0;width:248px;box-sizing:border-box;padding:10px;border:1px solid #343b50;border-radius:9px;background:#141420fa;color:#aeb8cc;box-shadow:0 8px 24px #0000007a;z-index:12}.background-upload[data-v-4749834a]{width:100%;height:30px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;cursor:pointer}.background-upload[data-v-4749834a]:hover{border-color:#8982ff;background:#554dc2}.background-clear[data-v-4749834a]{width:100%;height:28px;margin-top:6px;border:1px solid #70404a;border-radius:6px;background:#512a33;color:#efb5bd;cursor:pointer}.background-clear[data-v-4749834a]:hover:not(:disabled){border-color:#b65b6a;background:#6a303b;color:#fff}.background-clear[data-v-4749834a]:disabled{opacity:.42;cursor:not-allowed}.background-file-input[data-v-4749834a]{display:none}.background-file-name[data-v-4749834a]{margin:7px 2px 9px;overflow:hidden;color:#737f98;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.background-position-row[data-v-4749834a]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.background-position-row label[data-v-4749834a]{display:flex;align-items:center;gap:5px;color:#8995ad;font-size:11px}.background-position-row input[data-v-4749834a]{width:0;min-width:0;flex:1;box-sizing:border-box;height:28px;padding:0 6px;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2}.background-opacity-row[data-v-4749834a]{display:grid;grid-template-columns:46px 1fr 34px;align-items:center;gap:7px;margin-top:10px;font-size:11px}.background-opacity-row input[data-v-4749834a]{min-width:0;accent-color:#675de0}.background-opacity-row b[data-v-4749834a]{color:#aeb8cc;font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.help-btn[data-v-4749834a]{height:28px;margin-left:auto;padding:0 11px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;font-weight:700;cursor:pointer}.help-btn[data-v-4749834a]:hover,.help-btn.on[data-v-4749834a]{border-color:#7774ff;background:#343b63;color:#fff}.zoom-pct[data-v-4749834a]{margin-left:0;font-variant-numeric:tabular-nums;color:#9aa;min-width:44px;text-align:center}.settings-btn[data-v-4749834a]{height:28px;padding:0 12px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdf;font-size:12px;font-weight:700;cursor:pointer}.settings-btn[data-v-4749834a]:hover{border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-4749834a]{width:30px;height:28px;flex:0 0 30px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdd8ed;font-size:18px;line-height:1;cursor:pointer}.undo-btn[data-v-4749834a]:hover:not(:disabled){border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-4749834a]:disabled{opacity:.38;cursor:not-allowed}.settings-panel[data-v-1bba85d9]{position:absolute;top:52px;left:10px;width:240px;z-index:10;background:#141420f7;border:1px solid #2a2a3c;border-radius:10px;padding:10px 12px;font-size:12px;color:#aab;box-shadow:0 6px 20px #0006}.sp-head[data-v-1bba85d9]{display:flex;justify-content:space-between;align-items:center;font-weight:700;color:#cdf;margin-bottom:10px}.sp-section-title[data-v-1bba85d9]{margin:2px 0 8px;color:#8a93bb;font-size:11px}.sp-switch-row[data-v-1bba85d9]{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#aab}.sp-switch-control[data-v-1bba85d9]{display:inline-flex;align-items:center;gap:7px}.sp-switch-control input[data-v-1bba85d9]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.sp-switch-ui[data-v-1bba85d9]{position:relative;width:34px;height:18px;border-radius:999px;background:#39445a;cursor:pointer;transition:background .16s ease}.sp-switch-ui[data-v-1bba85d9]:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#f4f6fb;transition:transform .16s ease}.sp-switch-control input:checked+.sp-switch-ui[data-v-1bba85d9]{background:#655df0}.sp-switch-control input:checked+.sp-switch-ui[data-v-1bba85d9]:after{transform:translate(16px)}.sp-switch-control input:focus-visible+.sp-switch-ui[data-v-1bba85d9]{outline:2px solid #8b86ff;outline-offset:2px}.sp-switch-control b[data-v-1bba85d9]{min-width:24px;color:#8a93bb;font-size:11px;font-weight:500}.sp-cache-note[data-v-1bba85d9]{margin-top:10px;padding-top:9px;border-top:1px solid #2a2a3c;color:#647089;font-size:10px;text-align:center}.sp-divider[data-v-1bba85d9]{height:1px;margin:10px 0;background:#2a2a3c}.sp-close[data-v-1bba85d9]{background:#2e3a55;border:none;color:#cdf;border-radius:4px;width:18px;height:18px;cursor:pointer;font-size:11px}.sp-row[data-v-1bba85d9]{display:flex;align-items:center;gap:8px;margin:8px 0}.sp-row>span[data-v-1bba85d9]:first-child{width:76px;flex-shrink:0;color:#8a93bb}.sp-row input[type=range][data-v-1bba85d9]{flex:1;background:#1a1a28;accent-color:#3a5a8c}.sp-num[data-v-1bba85d9]{width:52px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;padding:2px 4px}.sp-undo-limit[data-v-1bba85d9]{margin-left:auto;width:64px;height:26px;box-sizing:border-box}.sp-colr[data-v-1bba85d9]{width:26px;height:22px;border:none;background:none;cursor:pointer}.sp-hex[data-v-1bba85d9]{font-size:11px;color:#889;font-variant-numeric:tabular-nums}.sp-chk[data-v-1bba85d9]{display:flex;align-items:center;gap:6px;margin:8px 0;color:#aab}.stage-wrap[data-v-384a3641]{position:relative;width:100%;height:100%;overflow:hidden}.stage-holder[data-v-384a3641]{width:100%;height:100%;cursor:grab;touch-action:none;background-color:#0e1219;outline:none}.stage-holder.grid[data-v-384a3641]{background:conic-gradient(#141a26 90deg,transparent 90deg 180deg,#141a26 180deg 270deg,#141a26 180deg 270deg,transparent 270deg);background-size:28px 28px}.stage-holder[data-v-384a3641]:active{cursor:grabbing}.hud[data-v-384a3641]{position:absolute;bottom:12px;left:12px;padding:8px 12px;background:#141420bf;border-radius:8px;font-size:12px;color:#a0a8cc}.hud-number[data-v-384a3641]{display:inline-block;box-sizing:border-box;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.hud-system-count[data-v-384a3641]{width:3ch}.hud-particle-count[data-v-384a3641]{width:7ch;text-align:left}.hud-tip[data-v-384a3641]{margin-left:12px;color:#5f6a8a;font-size:11px}b[data-v-384a3641]{color:#fc3}.config-management-body[data-v-cb52d3e0]{padding-bottom:2px}.config-toolbar[data-v-cb52d3e0]{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:6px;margin-bottom:10px}.config-toolbar button[data-v-cb52d3e0],.config-toolbar select[data-v-cb52d3e0]{min-width:0;height:30px;box-sizing:border-box;border:1px solid #3b4864;border-radius:6px;background:#263149;color:#d6def0;font-size:11px}.config-toolbar button[data-v-cb52d3e0]{padding:0 9px;cursor:pointer}.config-toolbar button[data-v-cb52d3e0]:hover{border-color:#7169dc;background:#343d68;color:#fff}.config-toolbar select[data-v-cb52d3e0]{padding:0 7px;overflow:hidden;text-overflow:ellipsis}.config-toolbar select[data-v-cb52d3e0]:disabled{color:#68738a;background:#1b2130}.config-message[data-v-cb52d3e0]{margin:-4px 0 9px;color:#83b9a2;font-size:10px}.config-message.error[data-v-cb52d3e0]{color:#e8959e}.group[data-v-cb52d3e0]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-cb52d3e0]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-cb52d3e0]:hover{background:#20202e}.group-body[data-v-cb52d3e0]{padding:8px 10px 12px}.caret[data-v-cb52d3e0]{display:inline-block;width:12px;color:#667;font-size:11px}.ns[data-v-7c2fbed0]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.ns-label[data-v-7c2fbed0]{width:60px;flex-shrink:0;color:#8a93bb}.ns-range[data-v-7c2fbed0]{flex:1;accent-color:#3a7cd6}.ns-num[data-v-7c2fbed0]{width:56px;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;text-align:right}.ns.disabled[data-v-7c2fbed0]{opacity:.55}.ns.disabled .ns-range[data-v-7c2fbed0],.ns.disabled .ns-num[data-v-7c2fbed0]{cursor:not-allowed}.ce[data-v-9bfb7b31]{display:flex;align-items:flex-start;gap:6px;width:100%}.ce-editor[data-v-9bfb7b31]{flex:1;min-width:0}.ce-reset[data-v-9bfb7b31]{flex:0 0 auto;padding:5px 7px;border:1px solid #3b4b65;border-radius:5px;background:#242f42;color:#c4cee2;font-size:10px;cursor:pointer}.ce-reset[data-v-9bfb7b31]:hover{border-color:#7774ff;background:#4f4dc2;color:#fff}.ce-svg[data-v-9bfb7b31]{width:100%;height:110px;display:block;border:1px solid #2a2a3c;border-radius:6px;background:#10101a;cursor:crosshair;touch-action:none}.ce-grid line[data-v-9bfb7b31]{stroke:#1e1e30;stroke-width:1}.ce-frame[data-v-9bfb7b31]{stroke:#2e2e44;stroke-width:1}.ce-line[data-v-9bfb7b31]{stroke:#6ea0e8;stroke-width:2;stroke-linejoin:round}.ce-handles line[data-v-9bfb7b31]{stroke:#8d96b5;stroke-width:1;stroke-dasharray:3 2}.ce-handles circle[data-v-9bfb7b31]{fill:#b7c2dd;stroke:#344d94;stroke-width:1.2;cursor:grab}.ce-handles circle[data-v-9bfb7b31]:active{cursor:grabbing}.ce-node[data-v-9bfb7b31]{fill:#fff;stroke:#3a55aa;stroke-width:1.6;pointer-events:none}.ce-hit[data-v-9bfb7b31]{fill:transparent;stroke:none;cursor:grab}.ce-hit[data-v-9bfb7b31]:active{cursor:grabbing}.ce-nav[data-v-9bfb7b31]{display:flex;justify-content:space-between;margin-top:3px}.ce-tip[data-v-9bfb7b31]{color:#566;font-size:10px}.spine-editor[data-v-9257fb45]{display:grid;gap:10px;color:#c5cbe0}.editor-title[data-v-9257fb45],.section-title[data-v-9257fb45]{color:#dce2f5;font-weight:700}.editor-title[data-v-9257fb45]{padding-bottom:9px;border-bottom:1px solid #30394d}.grid[data-v-9257fb45]{display:grid;gap:8px}.grid.three[data-v-9257fb45]{grid-template-columns:repeat(3,minmax(0,1fr))}.field[data-v-9257fb45]{display:grid;gap:5px;min-width:0;color:#919bb7;font-size:12px}.field input[data-v-9257fb45],.field select[data-v-9257fb45],.asset-name[data-v-9257fb45]{box-sizing:border-box;width:100%;min-width:0;height:35px;padding:0 10px;color:#e2e6f3;background:#101625;border:1px solid #32405b;border-radius:6px}.divider[data-v-9257fb45]{height:1px;background:#30394d;margin:2px 0}.asset-row[data-v-9257fb45]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.asset-name[data-v-9257fb45]{display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#7f8aa7}button[data-v-9257fb45]{height:35px;padding:0 13px;border:1px solid #3b4a67;border-radius:6px;background:#33415b;color:#e2e6f3;cursor:pointer}button[data-v-9257fb45]:hover{filter:brightness(1.13)}button[data-v-9257fb45]:disabled{opacity:.55;cursor:wait}.folder-select[data-v-9257fb45]{width:100%;border-color:#6659c7;background:#4940a8;color:#fff}.folder-hint[data-v-9257fb45]{margin-top:-5px;color:#69758e;font-size:10px;line-height:1.45}.asset-actions[data-v-9257fb45]{display:grid;grid-template-columns:1fr 1fr;gap:5px}.asset-actions .load[data-v-9257fb45]{background:#5543df;border-color:#6959ec}.asset-actions .clear[data-v-9257fb45]{background:#702b34;border-color:#803842}.runtime-note[data-v-9257fb45]{color:#69758e;font-size:11px;text-align:center}.error[data-v-9257fb45]{padding:8px 10px;color:#ffabb2;background:#4b2028;border:1px solid #76323e;border-radius:6px;font-size:12px}.section-box[data-v-9257fb45]{display:grid;gap:8px;padding:10px;background:#182132;border:1px solid #303c54;border-radius:7px}.empty[data-v-9257fb45]{color:#667187;font-size:12px;padding:5px 0}.bone-tree[data-v-9257fb45]{max-height:240px;overflow:auto;padding:4px 0;background:#111827;border-radius:5px}.tree-title-row[data-v-9257fb45]{display:flex;align-items:center;justify-content:space-between;gap:8px}.selected-bone[data-v-9257fb45]{width:auto;min-width:0;max-width:100%;height:24px;flex:0 1 auto;overflow:hidden;padding:0 7px;color:#75819c;background:#182132;border:1px solid transparent;border-radius:5px;font-size:10px;text-align:right;white-space:nowrap;text-overflow:ellipsis}.selected-bone.active[data-v-9257fb45]{color:#aeb9d4;background:#242f44;border-color:#35445e;cursor:pointer}.selected-bone.active[data-v-9257fb45]:hover{border-color:#675ec4;background:#302b57}.selected-bone[data-v-9257fb45]:disabled{opacity:1;cursor:default}.selected-bone strong[data-v-9257fb45]{color:#c5cde3;font-weight:600}.tree-action[data-v-9257fb45]{height:24px;padding:0 8px;color:#9aa7c2;background:#242f44;border-color:#35445e;font-size:10px}.bone-search[data-v-9257fb45]{position:relative}.bone-search input[data-v-9257fb45]{box-sizing:border-box;width:100%;height:30px;padding:0 32px 0 9px;color:#dce2f2;background:#101827;border:1px solid #33415b;border-radius:5px;font-size:11px;outline:none}.bone-search input[data-v-9257fb45]:focus{border-color:#7065df;box-shadow:0 0 0 1px #7065df38}.bone-search button[data-v-9257fb45]{position:absolute;top:3px;right:3px;width:24px;height:24px;padding:0;border:0;color:#8d98b0;background:transparent}.bone[data-v-9257fb45]{display:flex;align-items:center;gap:4px;min-height:25px;color:#aeb8d2;font-size:12px;border-bottom:1px solid rgba(72,84,112,.22);cursor:pointer;outline:none}.bone[data-v-9257fb45]:hover{background:#45567e38}.bone.selected[data-v-9257fb45]{color:#f0edff;background:#6b53dd52;box-shadow:inset 2px 0 #8e72ff}.bone[data-v-9257fb45]:focus-visible{box-shadow:inset 0 0 0 1px #7d72dd}.bone-toggle[data-v-9257fb45]{width:22px;height:22px;padding:0;border:0;background:transparent;color:#9aa7c2}.bone-toggle[data-v-9257fb45]:hover{background:#26324a}.bone-leaf[data-v-9257fb45]{display:inline-flex;width:22px;justify-content:center;color:#58647d}.bone-name[data-v-9257fb45]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media(max-width:430px){.grid.three[data-v-9257fb45]{grid-template-columns:1fr}}.panel[data-v-3873124f]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.empty[data-v-3873124f],.panel-hint[data-v-3873124f]{color:#667;font-size:12px;padding:8px 0}.group[data-v-3873124f]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-3873124f]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-3873124f]:hover{background:#20202e}.scene-head[data-v-3873124f]{padding-right:6px}.scene-actions[data-v-3873124f]{margin-left:auto;display:flex;align-items:center;gap:4px}.scene-add[data-v-3873124f]{height:24px;padding:0 6px;border:1px solid #3a4a6a;border-radius:5px;background:#2e3a55;color:#cdf;font-size:10px;white-space:nowrap;cursor:pointer}.scene-add[data-v-3873124f]:hover{border-color:#7774ff;background:#45426f;color:#fff}.scene-add[data-v-3873124f]:disabled{opacity:.42;cursor:not-allowed;border-color:#343a4b;background:#252a38;color:#778095}.group-body[data-v-3873124f]{padding:8px 10px 12px}.caret[data-v-3873124f]{display:inline-block;width:12px;color:#667;font-size:11px}.tree[data-v-3873124f]{margin-bottom:8px}.tree-item[data-v-3873124f]{display:flex;align-items:center;gap:6px;padding:5px 6px;font-size:12px;color:#bcd;border-radius:6px;margin-bottom:2px}.tree-item.on[data-v-3873124f]{background:#26324a;color:#ffe}.tree-item .tdot[data-v-3873124f]{color:#fc3;font-size:10px}.tree-item .tdot.dim[data-v-3873124f]{color:#556}.tree-item .tdot.collision-dot[data-v-3873124f]{color:#ff7070}.tree-item .tdot.path-dot[data-v-3873124f]{color:#ff933e;font-size:14px}.tree-item .tdot.spine-dot[data-v-3873124f]{color:#c08cff;font-size:11px}.tree-item .tlabel[data-v-3873124f]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-tree[data-v-3873124f]{padding-bottom:8px;border-bottom:1px solid #2a2a3c}.scene-object-item[data-v-3873124f]{min-height:28px;cursor:pointer}.scene-object-item[data-v-3873124f]:hover{background:#202b40}.scene-object-kind[data-v-3873124f]{color:#75829c;font-size:10px}.scene-object-eye[data-v-3873124f]{width:24px;height:22px;padding:3px;flex:0 0 24px;border:1px solid transparent;border-radius:5px;background:transparent;color:#9aa6bf;cursor:pointer}.scene-object-eye[data-v-3873124f]:hover{border-color:#4b5972;background:#29354a;color:#e1e7f4}.scene-object-eye.off[data-v-3873124f]{color:#59647a}.scene-object-eye svg[data-v-3873124f]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.scene-object-eye .eye-slash[data-v-3873124f]{stroke:#d47b88;stroke-width:2}.scene-object-delete[data-v-3873124f]{width:24px;height:22px;padding:0;border:1px solid #59414a;border-radius:5px;background:#3a272f;color:#efb4bd;font-size:11px;cursor:pointer}.scene-object-delete[data-v-3873124f]:hover{border-color:#a45c69;background:#57303a;color:#fff}.object-editor-title[data-v-3873124f]{margin:10px 0 8px;padding-top:8px;border-top:1px solid #2a2a3c;color:#cbd4e8;font-weight:700}.field-block[data-v-3873124f]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-3873124f]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-3873124f]{color:#5f6d86;line-height:1.5}.field-grid[data-v-3873124f]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-3873124f]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-3873124f]{width:100%;min-height:30px;box-sizing:border-box}.check-field[data-v-3873124f]{align-items:flex-start}.check-field input[data-v-3873124f]{width:18px;height:18px;margin:4px 0;accent-color:#4f7ee8}.follow-path[data-v-3873124f],.setting-line[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin:12px 0 4px;color:#aeb8cf;font-size:12px}.setting-line[data-v-3873124f]{justify-content:space-between}.follow-path input[data-v-3873124f],.setting-line input[type=checkbox][data-v-3873124f]{width:17px;height:17px;accent-color:#4f7ee8}.collider-follow-section[data-v-3873124f]{margin-top:12px;padding-top:4px;border-top:1px solid #30394d}.collider-curve-title[data-v-3873124f]{display:flex;flex-direction:column;gap:3px;margin:12px 0 6px;color:#aeb8cf;font-size:12px}.collider-curve-title small[data-v-3873124f]{color:#67738c;font-size:10px;line-height:1.45}.path-color[data-v-3873124f]{width:48px;height:28px;padding:0;border:1px solid #3a4963;background:transparent;cursor:pointer}.path-help[data-v-3873124f]{margin:12px 0;color:#7d89a2;font-size:11px;line-height:1.55}.path-help>span[data-v-3873124f]{color:#aeb8cf}.path-help ul[data-v-3873124f]{margin:6px 0 0;padding-left:20px}.path-help li[data-v-3873124f]{margin:3px 0}.path-action[data-v-3873124f]{width:100%;height:31px;margin-top:7px;border:0;border-radius:5px;background:#33425b;color:#c9d1e1;cursor:pointer}.path-action[data-v-3873124f]:hover{filter:brightness(1.12)}.path-action.primary[data-v-3873124f]{background:#f05408;color:#fff}.row[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-3873124f]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-3873124f]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.inp.tiny[data-v-3873124f]{width:46px;flex:0 0 46px;text-align:center}.seed-row[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #2d3950}.seed-row label[data-v-3873124f]{width:64px;color:#8f9bb5;font-size:12px}.seed-input[data-v-3873124f]{min-width:0;flex:1;padding:6px 8px;border:1px solid #344158;border-radius:6px;outline:none;background:#0f1625;color:#e2e7f2;font-size:12px}.seed-input[data-v-3873124f]:focus{border-color:#625ff1}.seed-random[data-v-3873124f]{width:34px;height:30px;border:1px solid #3a4860;border-radius:6px;background:#2c3950;color:#d7def0;cursor:pointer}.seed-random[data-v-3873124f]:hover{background:#394964}.scene-seed[data-v-3873124f]{margin-top:10px}.seed-hint[data-v-3873124f]{margin:5px 0 1px 72px;color:#657188;font-size:9px;line-height:1.45}.group[data-v-59bf8cf4]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-59bf8cf4]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-59bf8cf4]:hover{background:#20202e}.group-reset[data-v-59bf8cf4]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-59bf8cf4]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-59bf8cf4]{padding:8px 10px 12px}.caret[data-v-59bf8cf4]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-59bf8cf4]{height:1px;background:#2a2a3c;margin:8px 0}.row[data-v-59bf8cf4]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-59bf8cf4]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-59bf8cf4]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.segs[data-v-59bf8cf4]{display:flex;gap:6px;margin:6px 0}.stream-behavior-segs[data-v-59bf8cf4]{margin-top:10px}.stream-loop-options[data-v-59bf8cf4]{display:grid;gap:8px;margin:8px 0 4px;padding:9px 10px;border:1px solid #32405a;border-radius:6px;background:#171f2e}.loop-section-row[data-v-59bf8cf4]{display:flex;min-height:27px;align-items:center;justify-content:space-between;gap:8px}.loop-duration-control[data-v-59bf8cf4]{display:flex;flex:0 0 auto;align-items:center;gap:7px}.loop-duration-toggle[data-v-59bf8cf4]{gap:5px;font-size:10px;white-space:nowrap}.loop-duration-toggle .switch-ui[data-v-59bf8cf4]{width:26px;height:14px}.loop-duration-toggle .switch-ui[data-v-59bf8cf4]:after{width:10px;height:10px}.loop-duration-toggle input:checked+.switch-ui[data-v-59bf8cf4]:after{transform:translate(12px)}.loop-section-duration[data-v-59bf8cf4]{display:flex;flex:0 0 auto;align-items:center;gap:4px;color:#7f8ba4;font-size:11px}.loop-section-duration input[data-v-59bf8cf4]{position:static;width:54px;height:25px;padding:0 6px;border:1px solid #3a465f;border-radius:5px;outline:none;background:#101725;color:#e4e8f2;text-align:right;opacity:1;pointer-events:auto}.loop-section-duration input[data-v-59bf8cf4]:focus{border-color:#716eff}.loop-auto-duration[data-v-59bf8cf4]{min-width:54px;color:#77839a;text-align:right;white-space:nowrap}.seg[data-v-59bf8cf4]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-59bf8cf4]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.seg[data-v-59bf8cf4]{display:flex;gap:6px;margin:6px 0}.inp.tiny[data-v-59bf8cf4]{width:46px;flex:0 0 46px;text-align:center}.switch-row[data-v-59bf8cf4]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-59bf8cf4]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-59bf8cf4]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-59bf8cf4]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-59bf8cf4]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-59bf8cf4]:after{transform:translate(14px)}.modifier-hint[data-v-59bf8cf4]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.stream-loop-hint[data-v-59bf8cf4]{margin:9px 2px 3px;padding:7px 8px;border:1px solid #4a436e;border-radius:5px;background:#211f35;color:#aaa4d7}.switch-row input:disabled+.switch-ui[data-v-59bf8cf4]{opacity:.45;cursor:not-allowed}.pac[data-v-238f838c]{padding:10px;margin:8px 0;border:1px solid #2c3850;border-radius:7px;background:#171d2a}.pac-head[data-v-238f838c]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.pac-label[data-v-238f838c]{color:#aeb8cf;font-size:12px;font-weight:600;white-space:nowrap}.pac-modes[data-v-238f838c]{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pac-mode[data-v-238f838c]{padding:4px 7px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.pac-mode.on[data-v-238f838c]{border-color:#7774ff;background:#605df0;color:#fff}.pac-curve[data-v-238f838c]{margin-top:8px}.pac-axis[data-v-238f838c]{display:flex;justify-content:space-between;margin-top:3px;color:#5f6b82;font-size:10px}.pac[data-v-238f838c] .ns-label{width:58px}.pac[data-v-238f838c] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.pac[data-v-238f838c] .ce-tip{color:#657188}.group[data-v-cf6b86a5]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-cf6b86a5]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-cf6b86a5]:hover{background:#20202e}.group-reset[data-v-cf6b86a5]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-cf6b86a5]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-cf6b86a5]{padding:8px 10px 12px}.caret[data-v-cf6b86a5]{display:inline-block;width:12px;color:#667;font-size:11px}.row[data-v-cf6b86a5]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-cf6b86a5]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.attr-body[data-v-cf6b86a5]{padding:10px;background:#151b27}.attr-section-title[data-v-cf6b86a5]{margin:2px 0 8px;color:#9ca8c0;font-size:12px;font-weight:700}.attr-section-title.life-title[data-v-cf6b86a5]{margin-top:14px;padding-top:12px;border-top:1px solid #2d3950}.attr-axis-head[data-v-cf6b86a5]{display:flex;align-items:center;justify-content:space-between;margin:10px 1px -2px;color:#aeb8cf;font-size:12px;font-weight:600}.axis-modes[data-v-cf6b86a5]{display:flex;gap:4px}.axis-mode[data-v-cf6b86a5]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-cf6b86a5]{border-color:#7774ff;background:#605df0;color:#fff}.life-item[data-v-cf6b86a5]{padding:9px 0;border-bottom:1px solid #2a3549}.switch-row[data-v-cf6b86a5]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-cf6b86a5]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-cf6b86a5]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-cf6b86a5]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-cf6b86a5]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-cf6b86a5]:after{transform:translate(14px)}.life-axis[data-v-cf6b86a5]{margin:9px 0 2px 42px}.switch-row input:disabled+.switch-ui[data-v-cf6b86a5]{opacity:.45;cursor:not-allowed}.gradient-editor[data-v-f6ab10bf]{margin:8px 0 11px 68px}.gradient-bar[data-v-f6ab10bf]{position:relative;height:18px;margin-bottom:14px;border:1px solid #465570;border-radius:6px;cursor:crosshair}.gradient-stop[data-v-f6ab10bf]{position:absolute;top:15px;width:14px;height:17px;padding:0;transform:translate(-50%);border:2px solid #d8deea;border-radius:2px 2px 5px 5px;background:var(--stop-color);cursor:grab;box-shadow:0 1px 3px #0009}.gradient-stop[data-v-f6ab10bf]:before{content:"";position:absolute;left:2px;top:-7px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:5px solid #d8deea}.gradient-stop.selected[data-v-f6ab10bf]{outline:2px solid #7774ff;outline-offset:1px;z-index:2}.gradient-stop[data-v-f6ab10bf]:active{cursor:grabbing}.gradient-controls[data-v-f6ab10bf]{display:flex;align-items:center;gap:5px;margin-top:30px}.gradient-color[data-v-f6ab10bf]{width:28px;height:24px;padding:1px;border:1px solid #465570;border-radius:4px;background:#151b27;cursor:pointer}.gradient-hex-input[data-v-f6ab10bf]{width:66px;padding:4px 5px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#aeb8cb;font-size:10px;font-family:monospace}.gradient-hex-input[data-v-f6ab10bf]:focus{border-color:#7774ff;color:#fff}.gradient-position[data-v-f6ab10bf]{display:flex;align-items:center;color:#71809a;font-size:10px}.gradient-position input[data-v-f6ab10bf]{width:43px;padding:3px 4px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#dce3ef;text-align:right}.gradient-action[data-v-f6ab10bf]{width:25px;height:24px;padding:0;border:1px solid #3a4860;border-radius:4px;background:#273246;color:#cbd4e5;cursor:pointer}.gradient-action[data-v-f6ab10bf]:hover:not(:disabled){border-color:#7774ff;color:#fff}.gradient-action.danger[data-v-f6ab10bf]{color:#e3a5aa}.gradient-action[data-v-f6ab10bf]:disabled{opacity:.35;cursor:not-allowed}.gradient-hint[data-v-f6ab10bf]{margin-top:5px;color:#59667b;font-size:9px}.image-card[data-v-68ff5314]{margin:8px 0;padding:9px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.imgrow[data-v-68ff5314]{display:flex;align-items:flex-start;gap:8px}.img-thumb[data-v-68ff5314]{width:48px;height:48px;padding:0;border:1px solid #3a4963;border-radius:6px;background:#1a2232;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;overflow:hidden}.img-thumb[data-v-68ff5314]:hover{border-color:#7774ff}.img-thumb img[data-v-68ff5314]{display:block;width:100%;height:100%;object-fit:contain}.img-fields[data-v-68ff5314]{flex:1;min-width:0}.img-actions[data-v-68ff5314]{display:flex;flex-direction:column;gap:4px}.row[data-v-68ff5314]{display:flex;align-items:center;gap:8px;margin:6px 0;color:#aab;font-size:12px}.row>span[data-v-68ff5314]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-68ff5314]{min-width:0;flex:1;padding:3px 5px;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;font-size:12px}.mini-btn2[data-v-68ff5314]{width:26px;height:24px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:5px;color:#aab;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mini-btn2[data-v-68ff5314]:hover{background:#2b3a5c}.mini-btn2[data-v-68ff5314]:disabled{opacity:.35;cursor:not-allowed}.thumb-note[data-v-68ff5314]{margin:4px 0 2px;color:#667;font-size:11px}.sequence-pick[data-v-68ff5314]{width:100%;margin:2px 0 4px;padding:6px 8px;border:1px solid #4a4a76;border-radius:5px;background:#27264b;color:#d8d7ff;font-size:12px;cursor:pointer}.sequence-pick[data-v-68ff5314]:hover{border-color:#7774ff;background:#35336a}.sequence-note[data-v-68ff5314]{margin:0 0 6px;color:#727b9b;font-size:11px;line-height:1.4}.resource-weight-row[data-v-68ff5314]{display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:7px}.resource-weight-control[data-v-68ff5314]{width:100%;min-width:0}.resource-weight-control[data-v-68ff5314] .ns-range{min-width:0}.resource-weight-control[data-v-68ff5314] .ns-num{flex:0 0 56px;box-sizing:border-box}.weight-lock[data-v-68ff5314]{width:28px;height:26px;flex:0 0 28px;padding:5px;border:1px solid #35435c;border-radius:5px;background:#202a3b;color:#78859e;cursor:pointer}.weight-lock svg[data-v-68ff5314]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.weight-lock[data-v-68ff5314]:hover:not(:disabled){border-color:#7774ff;color:#b8b6ff}.weight-lock.on[data-v-68ff5314]{border-color:#7774ff;background:#514fd0;color:#fff}.weight-lock[data-v-68ff5314]:disabled{opacity:.35;cursor:not-allowed}.group[data-v-d8fe7aad]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-d8fe7aad]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-d8fe7aad]:hover{background:#20202e}.group-reset[data-v-d8fe7aad]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-d8fe7aad]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-d8fe7aad]{padding:8px 10px 12px}.caret[data-v-d8fe7aad]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-d8fe7aad]{height:1px;background:#2a2a3c;margin:8px 0}.row[data-v-d8fe7aad]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-d8fe7aad]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-d8fe7aad]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.colr[data-v-d8fe7aad]{width:28px;height:22px;border:none;background:none;cursor:pointer}.seg[data-v-d8fe7aad]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-d8fe7aad]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.look-title[data-v-d8fe7aad]{font-size:12px;font-weight:600;color:#ccd;margin:10px 0 6px;padding-bottom:4px;border-bottom:1px solid #2a2a3c}.look-title[data-v-d8fe7aad]:first-child{margin-top:2px}.seg[data-v-d8fe7aad]{display:flex;gap:6px;margin:6px 0}.seg-btn[data-v-d8fe7aad]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg-btn.active[data-v-d8fe7aad]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.curve-wrap[data-v-d8fe7aad]{margin:6px 0}.curve-labels[data-v-d8fe7aad]{display:flex;justify-content:space-between;color:#566;font-size:10px;margin-top:2px}.image-title[data-v-d8fe7aad]{display:flex;align-items:center;justify-content:space-between}.image-add[data-v-d8fe7aad]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-d8fe7aad]:hover{background:#4542a8;color:#fff}.resource-divider[data-v-d8fe7aad]{height:1px;margin:9px 0 7px;background:#2a3549}.resource-color-row .blend-select[data-v-d8fe7aad]{max-width:88px}.resource-color-picker .hex[data-v-d8fe7aad]{margin-left:0}.random-color-hint[data-v-d8fe7aad]{margin:-5px 0 9px 68px;color:#66758e;font-size:9px;line-height:1.45}.hex-input[data-v-d8fe7aad]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-d8fe7aad]:focus{border-color:#7774ff;color:#fff}.resource-alpha-head[data-v-d8fe7aad]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:#8a93bb;font-size:12px}.alpha-modes[data-v-d8fe7aad]{display:flex;gap:3px}.alpha-modes button[data-v-d8fe7aad]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-d8fe7aad]:hover{background:#273246}.alpha-modes button.on[data-v-d8fe7aad]{border-color:#7774ff;background:#605df0;color:#fff}.resource-alpha-curve[data-v-d8fe7aad]{margin-top:7px}.file-input[data-v-d8fe7aad]{display:none}.hex[data-v-d8fe7aad]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-d8fe7aad]{width:46px;flex:0 0 46px;text-align:center}.empty[data-v-1798235e]{color:#667;font-size:12px;padding:8px 0}.group[data-v-1798235e]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-1798235e]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-1798235e]:hover{background:#20202e}.group-reset[data-v-1798235e]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-1798235e]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-1798235e]{padding:8px 10px 12px}.caret[data-v-1798235e]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-1798235e]{height:1px;background:#2a2a3c;margin:8px 0}.field-block[data-v-1798235e]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-1798235e]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-1798235e]{color:#5f6d86;line-height:1.5}.field-grid[data-v-1798235e]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-1798235e]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-1798235e]{width:100%;min-height:30px;box-sizing:border-box}.tag[data-v-1798235e]{font-size:10px;color:#667;background:#1c1c2a;border-radius:4px;padding:1px 5px}.row[data-v-1798235e]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-1798235e]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-1798235e]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.colr[data-v-1798235e]{width:28px;height:22px;border:none;background:none;cursor:pointer}.placeholder[data-v-1798235e]{color:#667;font-size:11px;padding:6px 0}.image-add[data-v-1798235e]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-1798235e]:hover{background:#4542a8;color:#fff}.resource-divider[data-v-1798235e]{height:1px;margin:9px 0 7px;background:#2a3549}.hex-input[data-v-1798235e]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-1798235e]:focus{border-color:#7774ff;color:#fff}.alpha-modes[data-v-1798235e]{display:flex;gap:3px}.alpha-modes button[data-v-1798235e]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-1798235e]:hover{background:#273246}.alpha-modes button.on[data-v-1798235e]{border-color:#7774ff;background:#605df0;color:#fff}.file-input[data-v-1798235e]{display:none}.hex[data-v-1798235e]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-1798235e]{width:46px;flex:0 0 46px;text-align:center}.axis-mode[data-v-1798235e]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-1798235e]{border-color:#7774ff;background:#605df0;color:#fff}.switch-row[data-v-1798235e]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-1798235e]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-1798235e]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-1798235e]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-1798235e]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-1798235e]:after{transform:translate(14px)}.modifier-item[data-v-1798235e]{padding:8px 0 10px;border-bottom:1px solid #2a3549}.modifier-switch[data-v-1798235e]{font-weight:600}.modifier-params[data-v-1798235e]{margin:8px 0 0 10px;padding:2px 0 2px 10px;border-left:2px solid #344158}.modifier-hint[data-v-1798235e]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.collision-filter-params[data-v-1798235e]{position:relative;padding-top:5px;padding-bottom:5px}.collision-filter-title[data-v-1798235e]{margin-bottom:8px;color:#9ba7bd;font-size:11px;font-weight:600}.collision-filter-tags[data-v-1798235e]{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.collision-filter-tag[data-v-1798235e]{display:inline-flex;min-width:0;align-items:center;gap:6px;padding:5px 5px 5px 8px;border:1px solid #625ff1;border-radius:6px;background:#514dcf;color:#fff;font-size:11px}.collision-filter-tag>span[data-v-1798235e]{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-tag.disabled[data-v-1798235e]{border-color:#4b5364;background:#343b4b;color:#929bad}.collision-filter-tag button[data-v-1798235e]{width:18px;height:18px;padding:0;border:0;border-radius:4px;background:#0b0f1a38;color:inherit;line-height:16px;cursor:pointer}.collision-filter-tag button[data-v-1798235e]:hover{background:#0b0f1a80;color:#fff}.collision-filter-add[data-v-1798235e]{width:30px;height:30px;padding:0;border:1px dashed #536079;border-radius:6px;background:#182131;color:#98a5bd;font-size:18px;line-height:28px;cursor:pointer}.collision-filter-add[data-v-1798235e]:hover,.collision-filter-add.active[data-v-1798235e]{border-color:#7774ff;background:#262c52;color:#fff}.collision-filter-add[data-v-1798235e]:disabled{opacity:.42;cursor:not-allowed}.collision-filter-empty[data-v-1798235e]{margin-top:7px;color:#6f7b91;font-size:10px}.collision-filter-picker[data-v-1798235e]{display:grid;gap:4px;margin-top:7px;padding:5px;border:1px solid #344158;border-radius:6px;background:#101725}.collision-filter-picker button[data-v-1798235e]{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:#c7d0e3;font-size:11px;text-align:left;cursor:pointer}.collision-filter-picker button[data-v-1798235e]:hover{background:#29344a;color:#fff}.collision-filter-picker button span[data-v-1798235e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-picker button small[data-v-1798235e]{flex:none;color:#68758d;font-size:9px}.switch-row input:disabled+.switch-ui[data-v-1798235e]{opacity:.45;cursor:not-allowed}.bone-follow-target[data-v-1798235e]{margin:7px 0 9px;padding:7px 8px;overflow:hidden;color:#7f8ba3;background:#121a29;border:1px solid #2f3c53;border-radius:5px;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.bone-follow-target strong[data-v-1798235e]{color:#c8d0e4;font-weight:600}.bone-follow-missing[data-v-1798235e]{margin:7px 0 9px;padding:7px 8px;color:#d49aa3;background:#2a1e26;border:1px solid #513540;border-radius:5px;font-size:10px;line-height:1.5}.bone-follow-rebind[data-v-1798235e]{width:100%;min-height:28px;margin:0 0 8px;padding:4px 8px;overflow:hidden;border:1px solid #4a436e;border-radius:5px;background:#2d2947;color:#c8c2ee;font-size:10px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.bone-follow-rebind[data-v-1798235e]:hover{border-color:#7165bd;background:#3a335d;color:#fff}.bone-follow-transform-grid[data-v-1798235e]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.modifier-mode-row[data-v-1798235e]{display:flex;justify-content:flex-end;gap:4px;margin-bottom:6px}.gravity-curve-title[data-v-1798235e]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.gravity-curve-title span[data-v-1798235e]:last-child{color:#657188;font-size:9px}.gravity-curve-axis[data-v-1798235e]{display:flex;justify-content:space-between;margin:3px 34px 0 1px;color:#5f6b82;font-size:9px}.gravity-params[data-v-1798235e] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.trail-params[data-v-1798235e]{padding-right:2px}.trail-section-title[data-v-1798235e]{margin:3px 0 8px;color:#aeb8cf;font-size:12px;font-weight:700}.trail-fixed-color .hex-input[data-v-1798235e]{min-width:0;flex:1}.trail-mode-head[data-v-1798235e]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.trail-sub-switch[data-v-1798235e]{margin:11px 0 7px;padding-top:9px;border-top:1px solid #2a3549}.trail-grid-row[data-v-1798235e]{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.trail-grid-row[data-v-1798235e] .ns{min-width:0;flex-wrap:wrap;align-items:center}.trail-grid-row[data-v-1798235e] .ns-label{width:100%}.trail-grid-row[data-v-1798235e] .ns-range{min-width:0}.trail-grid-row[data-v-1798235e] .ns-num{width:42px}.trail-params[data-v-1798235e] .ce-svg{height:92px;background:#0f1625;border-color:#30405a}.group[data-v-04462c7a]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-04462c7a]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-04462c7a]:hover{background:#20202e}.group-reset[data-v-04462c7a]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-04462c7a]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-04462c7a]{padding:8px 10px 12px}.caret[data-v-04462c7a]{display:inline-block;width:12px;color:#667;font-size:11px}.row[data-v-04462c7a]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-04462c7a]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-04462c7a]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.placeholder[data-v-04462c7a]{color:#667;font-size:11px;padding:6px 0}.export-settings[data-v-04462c7a]{padding-top:3px}.export-field[data-v-04462c7a]{display:flex;flex-direction:column;gap:6px;margin:10px 0 13px;color:#9ca8bf;font-size:11px;font-weight:600}.export-input[data-v-04462c7a]{width:100%;min-height:34px;box-sizing:border-box;padding:6px 9px;color:#e3e7f2;background:#141a29;border-color:#35445f}.export-fps-row[data-v-04462c7a]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.export-fps-field[data-v-04462c7a]{margin-bottom:5px}.export-checkbox[data-v-04462c7a]{display:flex;align-items:center;gap:7px;min-height:34px;margin-bottom:5px;color:#aeb8cc;font-size:11px;white-space:nowrap}.export-checkbox input[data-v-04462c7a]{width:17px;height:17px;margin:0;accent-color:#625ff1}.export-help[data-v-04462c7a]{margin:-6px 0 14px;color:#66758e;font-size:10px;line-height:1.5}.export-switches[data-v-04462c7a]{display:grid;gap:13px;margin:4px 0 7px;padding-top:2px}.export-switch[data-v-04462c7a]{font-weight:600}.export-switch-last[data-v-04462c7a]{margin-top:13px}.inp.tiny[data-v-04462c7a]{width:46px;flex:0 0 46px;text-align:center}.switch-row[data-v-04462c7a]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-04462c7a]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-04462c7a]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-04462c7a]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-04462c7a]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-04462c7a]:after{transform:translate(14px)}.switch-row input:disabled+.switch-ui[data-v-04462c7a]{opacity:.45;cursor:not-allowed}.spine-export-actions[data-v-7ff40afe]{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.export-spine-json[data-v-7ff40afe]{width:100%;padding:9px 8px;flex:0 0 auto;border:1px solid #4f4b9a;border-radius:7px;background:#403b91;color:#f1f0ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-json[data-v-7ff40afe]:hover{border-color:#7774ff;background:#514bc0}.export-spine-json[data-v-7ff40afe]:disabled{cursor:wait;opacity:.68}.export-spine-project[data-v-7ff40afe]{grid-column:1 / -1;width:100%;padding:7px 8px;border:1px solid #287d69;border-radius:7px;background:#196854;color:#edfff9;font-size:12px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.export-spine-project small[data-v-7ff40afe]{color:inherit;font-size:9px;font-weight:500;line-height:1.1}.export-spine-project[data-v-7ff40afe]:hover:not(:disabled){border-color:#47c89f;background:#238267}.export-spine-project[data-v-7ff40afe]:disabled{cursor:not-allowed;opacity:.48}.export-spine-images[data-v-7ff40afe]{width:100%;padding:8px;border:1px solid #3b5f8b;border-radius:7px;background:#243e64;color:#eaf3ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-images[data-v-7ff40afe]:hover:not(:disabled){border-color:#6099dc;background:#315581}.export-spine-images[data-v-7ff40afe]:disabled{cursor:wait;opacity:.55}.connector-status[data-v-7ff40afe]{display:flex;align-items:center;justify-content:center;gap:5px;padding-top:6px;color:#717b99;font-size:10px}.connector-status .connector-dot[data-v-7ff40afe]{width:6px;height:6px;border-radius:50%;background:#66718f}.connector-status.ready[data-v-7ff40afe]{color:#70d8ae}.connector-status.ready .connector-dot[data-v-7ff40afe]{background:#49c993;box-shadow:0 0 5px #49c99388}.connector-status.warning[data-v-7ff40afe]{color:#d4aa67}.connector-status.warning .connector-dot[data-v-7ff40afe]{background:#d4aa67}.connector-status button[data-v-7ff40afe]{padding:0 3px;border:0;background:transparent;color:#8290b6;font-size:10px;cursor:pointer}.connector-status button[data-v-7ff40afe]:hover{color:#c5caff}.connector-status a[data-v-7ff40afe]{padding:0 3px;color:#a8b0ff;font-size:10px;text-decoration:underline}.connector-status a[data-v-7ff40afe]:hover{color:#d8dcff}.export-message[data-v-7ff40afe]{padding:7px 5px 0;color:#70d8ae;font-size:10px;line-height:1.45;text-align:center}.export-message.error[data-v-7ff40afe]{color:#ff858f}.export-message a[data-v-7ff40afe]{display:inline-block;margin-left:5px;color:#9da7ff;text-decoration:underline}.panel[data-v-283ef8eb]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.panel-scroll[data-v-283ef8eb]{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding-right:2px;scrollbar-width:thin;scrollbar-color:#2e2e44 transparent}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar{width:6px}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-track{background:transparent}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-thumb{background:#2e2e44;border-radius:3px}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-thumb:hover{background:#3a3a55}.panel-header[data-v-283ef8eb]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex:0 0 auto;font-weight:700;color:#ccd}.timeline[data-v-8d9981a9]{height:100%;background:#12121c;border-top:1px solid #2a2a3c;display:flex;flex-direction:column;padding:6px 10px;gap:4px}.tl-controls[data-v-8d9981a9]{display:flex;align-items:center;gap:8px}.tl-btn[data-v-8d9981a9]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.tl-btn.on[data-v-8d9981a9]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.tl-range[data-v-8d9981a9]{display:flex;height:25px;align-items:center;gap:3px;color:#778198;font-size:10px}.tl-range input[data-v-8d9981a9]{width:43px;height:25px;padding:0 5px;box-sizing:border-box;border:1px solid #3a3a51;border-radius:5px;outline:none;background:#181824;color:#e1e4ed;font-size:11px;text-align:center}.tl-range input[data-v-8d9981a9]:focus{border-color:#716eff}.tl-loop-range[data-v-8d9981a9]{height:25px;padding:0 7px;border:1px solid #4e5680;border-radius:5px;background:#252943;color:#bfc8e8;font-size:10px;cursor:pointer;white-space:nowrap}.tl-loop-range[data-v-8d9981a9]:hover{border-color:#716eff;color:#fff}.tl-frame[data-v-8d9981a9]{display:inline-block;flex:0 0 92px;width:92px;box-sizing:border-box;font-size:12px;color:#aab;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}.tl-frame b[data-v-8d9981a9]{display:inline;color:inherit;font-weight:400}.tl-legend[data-v-8d9981a9]{display:flex;align-items:center;gap:4px;color:#778198;font-size:10px}.tl-legend i[data-v-8d9981a9]{display:inline-block;width:10px;height:7px;border-radius:2px}.legend-emission[data-v-8d9981a9]{margin-left:4px;background:#2f8b62}.legend-life[data-v-8d9981a9]{margin-left:5px;background:#a54551}.legend-spine[data-v-8d9981a9]{margin-left:5px;background:#7448b8}.tl-anim[data-v-8d9981a9]{display:flex;align-items:center;gap:6px;font-size:12px;color:#aab}.tl-owner-animation[data-v-8d9981a9]{position:relative}.tl-animation-trigger[data-v-8d9981a9]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:116px;height:25px;padding:0 7px;overflow:hidden;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;cursor:pointer}.tl-animation-trigger>span[data-v-8d9981a9]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-trigger>i[data-v-8d9981a9]{flex:0 0 auto;color:#8c96ad;font-style:normal}.tl-animation-trigger[data-v-8d9981a9]:disabled{opacity:.5;cursor:not-allowed}.tl-animation-menu[data-v-8d9981a9]{position:absolute;z-index:30;right:0;bottom:calc(100% + 6px);width:226px;padding:7px;border:1px solid #3c4760;border-radius:8px;background:#171b29;box-shadow:0 10px 24px #00000073}.tl-animation-menu-title[data-v-8d9981a9]{padding:2px 4px 6px;color:#77839c;font-size:10px}.tl-animation-option[data-v-8d9981a9]{display:flex;align-items:center;justify-content:space-between;width:100%;height:27px;padding:0 7px;border:0;border-radius:5px;background:transparent;color:#b8c1d5;text-align:left;cursor:pointer}.tl-animation-option>span[data-v-8d9981a9]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-option[data-v-8d9981a9]:hover{background:#252e42}.tl-animation-option.on[data-v-8d9981a9]{background:#34335d;color:#fff}.tl-animation-option>i[data-v-8d9981a9]{color:#8d8aff;font-style:normal}.tl-animation-editor[data-v-8d9981a9]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;margin-top:7px;padding-top:7px;border-top:1px solid #2b3346}.tl-animation-name[data-v-8d9981a9]{min-width:0;height:27px;padding:0 7px;box-sizing:border-box;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2;outline:none}.tl-animation-name[data-v-8d9981a9]:focus{border-color:#6865d8}.tl-animation-editor button[data-v-8d9981a9],.tl-animation-actions button[data-v-8d9981a9]{height:27px;padding:0 8px;border:1px solid #3c4861;border-radius:5px;background:#29344a;color:#cbd3e3;cursor:pointer}.tl-animation-actions[data-v-8d9981a9]{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}.tl-animation-actions button[data-v-8d9981a9]:last-child{border-color:#5b3942;background:#3b282f;color:#e2a8b2}.tl-animation-actions button[data-v-8d9981a9]:disabled{opacity:.4;cursor:not-allowed}.tl-animation-error[data-v-8d9981a9]{margin-top:5px;color:#ef8997;font-size:10px}.tl-animation-hint[data-v-8d9981a9]{margin-top:5px;color:#69758d;font-size:9px;text-align:center}.tl-sel[data-v-8d9981a9]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px;padding:2px 6px;font-size:12px}.tl-sel[data-v-8d9981a9]:disabled{opacity:.5;cursor:not-allowed}.tl-spine-preview .tl-sel[data-v-8d9981a9]{max-width:190px}.tl-zoom[data-v-8d9981a9]{margin-left:auto;font-size:11px;color:#667}.tl-viewport[data-v-8d9981a9]{position:relative;flex:1;overflow:hidden;background:#0d0d14;border:1px solid #2a2a3c;border-radius:6px;cursor:ew-resize}.tl-ticks[data-v-8d9981a9]{position:absolute;top:0;left:0;right:0;height:18px}.tl-tickline[data-v-8d9981a9]{position:absolute;top:0;bottom:0;width:1px;background:#263040}.tl-ticklabel[data-v-8d9981a9]{position:absolute;top:2px;transform:translate(-50%);font-size:9px;color:#667}.tl-playhead[data-v-8d9981a9]{position:absolute;top:0;bottom:0;width:2px;background:#fc3;z-index:5;pointer-events:none}.tl-lanes[data-v-8d9981a9]{position:absolute;top:22px;left:0;right:0;bottom:0}.tl-lane[data-v-8d9981a9]{position:relative;height:26px;margin-bottom:4px}.lane-ico[data-v-8d9981a9]{position:absolute;left:4px;top:6px;font-size:11px;color:#dde;z-index:2;pointer-events:none}.lane-bar[data-v-8d9981a9]{position:absolute;top:4px;height:18px;display:flex;align-items:stretch;cursor:grab;box-sizing:border-box}.lane-bar[data-v-8d9981a9]:active{cursor:grabbing}.lane-name[data-v-8d9981a9]{position:absolute;left:14px;right:5px;top:2px;z-index:2;pointer-events:none;font-size:11px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-life[data-v-8d9981a9]{position:absolute;inset:0 auto 0 0;z-index:0;min-width:1px;border:1px solid #c05a66;border-radius:5px;background:#a54551;box-sizing:border-box}.bar-life.loop-life[data-v-8d9981a9]{border-color:#667085;background:#242b39}.bar-emission[data-v-8d9981a9]{position:absolute;inset:0 auto 0 0;z-index:1;min-width:1px;border:1px solid #45a97d;border-radius:5px 0 0 5px;background:#2f8b62;box-sizing:border-box}.bar-emission.bar-loop[data-v-8d9981a9]{border-radius:0}.bar-loop-transition[data-v-8d9981a9]{position:absolute;top:0;bottom:0;z-index:1;border:1px solid #7d8799;background:#50596a;box-sizing:border-box}.bar-loop-start[data-v-8d9981a9]{left:0;border-radius:5px 0 0 5px}.bar-loop-end[data-v-8d9981a9]{border-radius:0 5px 5px 0}.bar-handle[data-v-8d9981a9]{position:absolute;z-index:4;right:-4px;top:-1px;bottom:-1px;width:8px;cursor:ew-resize;background:#ffffff2e}.bar-handle[data-v-8d9981a9]:hover{background:#ffffff59}.spine-ico[data-v-8d9981a9]{color:#c08cff}.spine-bar[data-v-8d9981a9]{position:absolute;top:4px;height:18px;min-width:1px;box-sizing:border-box;border:1px solid #a575ed;border-radius:5px;background:#7448b8;cursor:grab;box-shadow:inset 0 0 0 1px #ffffff0d}.spine-bar[data-v-8d9981a9]:active{cursor:grabbing}.tl-empty[data-v-8d9981a9]{color:#667;font-size:11px;padding:8px}.transfer-overlay[data-v-592b922e]{position:fixed;z-index:2000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:auto;cursor:wait;overscroll-behavior:contain;background:#05080f42;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.transfer-dialog[data-v-592b922e]{width:min(420px,calc(100vw - 40px));padding:18px 20px 16px;border:1px solid #414b66;border-radius:10px;box-shadow:0 18px 55px #00000075;background:#171d2b;color:#e7ebf5}.transfer-heading[data-v-592b922e]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;font-size:14px;font-weight:700}.transfer-heading strong[data-v-592b922e]{color:#a8a6ff;font-size:12px;font-variant-numeric:tabular-nums}.transfer-track[data-v-592b922e]{height:9px;overflow:hidden;border:1px solid #35415a;border-radius:999px;background:#0d1422}.transfer-bar[data-v-592b922e]{height:100%;border-radius:inherit;background:linear-gradient(90deg,#4d75e8,#7774ff);transition:width .16s ease}.transfer-track.indeterminate .transfer-bar[data-v-592b922e]{width:42%;animation:transfer-slide-592b922e 1s ease-in-out infinite}.transfer-detail[data-v-592b922e]{min-height:17px;margin-top:9px;color:#8895ae;font-size:11px;line-height:1.5}.transfer-dialog.failed[data-v-592b922e]{border-color:#754351}.transfer-dialog.failed .transfer-heading strong[data-v-592b922e],.transfer-dialog.failed .transfer-detail[data-v-592b922e]{color:#e99aa9}.transfer-dialog.failed .transfer-bar[data-v-592b922e]{background:#c85d70}.transfer-fade-enter-active[data-v-592b922e],.transfer-fade-leave-active[data-v-592b922e]{transition:opacity .16s ease}.transfer-fade-enter-from[data-v-592b922e],.transfer-fade-leave-to[data-v-592b922e]{opacity:0}@keyframes transfer-slide-592b922e{0%{transform:translate(-110%)}to{transform:translate(250%)}}.layout[data-v-42c4fa00]{display:flex;width:100%;height:100%;min-height:0;overflow:clip}.parameter-panel[data-v-42c4fa00]{flex-shrink:0;height:100%;min-height:0;overflow:clip}.resizer-col[data-v-42c4fa00]{width:5px;cursor:col-resize;background:#1c1c2a;border-left:1px solid #2a2a3c;border-right:1px solid #2a2a3c;flex-shrink:0}.resizer-col[data-v-42c4fa00]:hover{background:#3a5a8c}.right[data-v-42c4fa00]{flex:1;min-width:0;height:100%;min-height:0;overflow:clip;display:flex;flex-direction:column}.panel-right .right[data-v-42c4fa00]{order:1}.panel-right .resizer-col[data-v-42c4fa00]{order:2}.panel-right .parameter-panel[data-v-42c4fa00]{order:3}.stage-area[data-v-42c4fa00]{flex:1;min-height:0;overflow:clip}.resizer-row[data-v-42c4fa00]{height:4px;cursor:row-resize;background:#1c1c2a;border-top:1px solid #2a2a3c;border-bottom:1px solid #2a2a3c;flex-shrink:0}.resizer-row[data-v-42c4fa00]:hover{background:#3a5a8c}.timeline-area[data-v-42c4fa00]{position:relative;z-index:10;flex-shrink:0;overflow:visible}html,body{width:100%;height:100%;margin:0;padding:0;overflow:clip;overscroll-behavior:none;background:#0b0b12;color:#e8e8f0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body{position:fixed;top:0;right:0;bottom:0;left:0}*{box-sizing:border-box}#app{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;overflow:clip}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none} diff --git a/dist/downloads/connector/SpineParticleConnector-macos-arm64.zip b/dist/downloads/connector/SpineParticleConnector-macos-arm64.zip deleted file mode 100644 index 83251e75bb318616f57dd4741cc277200709bf38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118639 zcma%hRa_iTu=V2Z?hptN+}#P5Uo-~s>uI&StZ*1PpT zwyTr(y7G1sOSUu1dCcA1cokh;ysTZkJbBezY+QNVoa{ZlN`BO7_VSS``4&Gb4w*=r z%VCztJI{RoQ23rj$wFwNs3~hP{dj7JjnKlPgtlE@_tS|q1aj)9 z68EO1M&6zkIOvmNY1mycM49h(yu&5I3IJktT6>;_E#8AK%rgz>-frm2cV!50q zfDzv-)VN{yt2jN5HvW-$slIGrNHKo*Qv6L5_NPyC3JI2PS=e=y)U%u8Xn$so)xht2 zTv0DN<3H&T*lOSZEzrH-icYrAOm%pVedZ>8*7zx2>*>7!{wc5T=#d= zY%p}*EVr&D>{7&^68rwf{liu4QfG8Ff=_+o%3^TWW6vlm`mE)EF8Isj>7eU`Ou%Uq z)Fj~ee-70_!2#E^>tX<8KsO*11ppz!IQzj%Vk%D!_z4IdymXruJq@{dp81dOBZodkrB@nY(S{ zqj`pg#}z!L667Y=LCPUrL~4Sfku6R^*X<+oqbf5+>xdeIXx$(k7CM9|dGla{)A+$P zQ4|%<>3W725MHZ1Q%bYZvL1DJ4=L&$HB&AF5x81Oeais(yU>Dzew)CvN!8%3U8Jk^ zY1@ZT=I**P))!tn6SXf7oZX5~e_E>OlHerhV83+Lhk-MZs?{%T5Bgf$2fI*pxh{q$ zz3AJTw?Awk?`y0CF?S(v3Wo%J*IVeP3%x15b`!$Q?=6b;HyQrX>JM+~Ls&ml8Bv)0 z;pgR}ljc2Z0xCji@OZCZ_Rel75q(z)yZ`EUi>O?=!0B-6%dtJyQdeBw9yWH&fu7BY zy)#^XrCH0h6(J;W)8WDwP$uT820D1oZClV3t83)z_GrH1H!2+70NmhT&j*3TxxI-y zseIo^&eVifdLja(f!V!ep$HCy(aZ9P_oQ@JuoQTlUjiH|{v$EUHV;V4A({>ne6?j- z|NdF2a)~Qf(mSy2XyqtdI2^9Z+Ml`C$E6D1ap5T-QO9K3Z zorxCDwaO`RPm*BbaUuNiG@Bw_1N@iG+~Hh;^hEc;Pyl^_3&21}nfG6O2=XucV!`Hy zTHAK~|0e#6;Bw+aI(p3cFHa5C=~H9iulbjJKK2Rf=qX_vY3L!Z^TZwG&ZtOW}Vam3H0H5$`WCC0NJZir-;%x^*wY8~bMkw?S*AI|;NJeK^?twsLQ_J>$K7*t~q--G1?P(%GQF zrT;-PZlT6lTR&*FjE;-Im+BGd`4L68hT+i5D%w z8JTg^>nQwd*?Ujq@`*2Yr)JU&!D+V0YZK_E?|gHG0Jv$(jMeigC&|$%7!(Z`-3qBv zjq_Xt<8L?KlK*rqLIT6gdE3^w65WkV4`rbPm~qD07Ch+ zQBMAH5xzxMVMAIxtbQWe6`acNefWSgcC8^@rRXjkDl`;MZ1z17*NUi(jeL$?L}}kT zHO;fi_}@HW=HDOvn!NVJfKf_#PB)85b#1r-5@hDPm))s(>d(UJ+ffvp(^L$K$uz}0 z3;jywH#bUZfOlK>zJ6}}DH!Ae7gOK9(fbqhjdFdem6hiD6iof!3zCn}^Zdtd=^@s4 zqCNR>JzWogA?q=_r+lnUt@9jC0xqs}3<`>2rpZY|!a*2n@^hsS{8F~~-t@p#{c`CA zLnwqDsTg#5RHyec z0^$b7v+NHao^ZRJ+GQ;>7EY&T$$}WFl>(FTbR(v=m!( z>;=Hgq3R38`(hB%%J&jpDqgEulc_5miF1NM7}dPWM!=QB>FDWgGR)#8p`%J1kRJBy zw|zp4;i&*2fya;{RhJ?JpZ3(PMUK78mKe0N5E1FscRLgzPM++q*Ku*JD>t)~)d8x` zoW6+ue!gSkUZwte?2xH(G7&waR<-p3d`D!1| zwqv)cW;WfCDL$8xR^pGS6gYi|!4qddzvf4#kfG)Ito59nkz!g$kpBIMF#5@`gXJe~ zPQF!WjK_AauAIa(pq%!O*ziU{vIVzqphMnReXWPgu@0t-Yk}Zqv^1qQMZ$VUcT}h{ z4m&*pQ!MTT^a_Qwhe*UDYLbx1EP_1626RWPY5*rS>0w&XbNQaEhkc7rp-$LPK=H**~F4SJkZ?lST@sCEtS#E{> zSNG~In)DV_?#b3^qg;y6(4#Mq6?^p4M}9^z?zL@k!kqK9=HiU-Fmmq|>lMZP%_98wb z*Kn~@xF2HKd`K={MmAG{s63aOiG|>AayIE{H(w~WAMw7f5y3k2Mo*!%7t6e+#=-f4 z&Uh1!%1`^FW@SQqbM~J@IJcM+II)a|hP~ocm(=a-9t6bb+|9}^n0hrIJ5T~kL^)n; zq!v?}y{cFf%H|!{>)yD0*Ht6mf|k($uiKSu1%O?XLPExIXkY#RBM=tUiJ)?4R7Zkm z0!AyBMS{kVo$A9UEeFS~Yg{)Le>02u*Z>|E^l~zCHdu5bhCZ4C8t1bIH=8)yX81#H# z{pwgaWid^XUbGBxy?z;`Rj;1qIbd{TJ^M2pnCvjQZ#_{rJfhE7|>hmS9%@EtiaiY zZqas0>-4dcKUJ|ux^B_Fr;VOt)!2qLXPuXyN%(V;h5Rox$V>&R>Hh5)WCoa%!381~ zm}f9P-R(6fB1N%iJ-I!UbJF}rCS{AxBovk3zUdWwNIk>4)uQ9hC~WZNDN4fn7yL8k zSTmJZ=F3|z@iVf0kHvzIv41|bj{&KQO{q77|J$A?gl6!DRcUHYT=Ea z**aD`y=SWk@!5@7)~w3R4!`~AFR!OxS6lr1Tjyur0UE+!NfbtYY90v2TJ)LmRTeQ| zXm_CM9RN?`;hC(xx3M=!H4 zcV6bCg>88?bd%h1g{1+?oZaCOeO7V3fzUO8>6>|Iddc_JZ%^jYmn-rMH9~^J@_C_W z9duJc9?`qTWmGm+c3Iud)tJ|$zab8~p`^iL1@?&oQM#gip%2SLt^4iQYa15gTkoi+ z>t0ZyaMP$k+k7n4YILh{^aJs4P__VlZB~8x_OXK?%6J4vkm_fLc$q-HPYe#V1ZvDd zd**)E9$e)Ob__?@HG?r)yepjQ;I2Rs{9*=xDu(%$zl;NI!u6B?CJ^HCB$k-#+1FQ@ zq(3-`mC!G3`2KdF-W+n1DYs`SKPQxIYyDZ`&tgb1RI0C1>g(9*XCm0G#vcAG6XED+ zkcdgOnHz6raqs41Or~XS5kU zDsV19p>bT^();1xrW`S#m~SGN3lkPFC0(05q-aRxSFU-gBRoPoz`c+!c7n~9oa9C` zfmGs1H9K_`D5d&K*L6#2wlmz`ZbLx6@d|K|@t3~2(B96mPO7$6bzv3dJ4Wa!?(@w+ z_=5+XYG)nzfj46?uXBk<4^O&^|bNO40zW5AM`)QV%vou2W z{H;$BVu&(oi5~9yd(P2dvqVoj4l9QTpRAI>I_yrgY@&r>Q7)XGaPY?3?$F&Y2JL)F zQXU2&xn*#=o!`!(z0lkG+yBkatWbjY2>+ijiwNFe6+ZY?-Vr|sX@JM{A(8FEACcgvTIUR)T5 zL?7MuH3`L*ybn^ogd}GAQb68=GrcztPZp7oMfcIYxxpQ^X}~y#L8$Z^O4!GC`4!-* z@tw?hIy4>>U?GW_qX^1A-gnE8V~3Cbe$G7DWxaISJ?!fUp}`!FcQLKjioPM?T9iKS z%MQCbVl{z}GXiDau8s{eZiRy8V6OolkC#y&|AdXvyr$3TjtKsxdxg>Z`n5o5}WXvk-66()XrHH8k&DtN4>l&r7) z@So^iWinwx%jAkcF`Z(zcIf2|CE_#@ff$!(t@#3%gR^m6{L#^?I3efOKvoeS-0-=&K!=ebW!F}O&iO!1M6{7B5! zb4C$O%rtIxa1tsb^7Wi{9;*D2D<%zH)~wUtZ95;8ZeaL}t~^s6`eaGCSuVPoJc?^j z4u`RD?%LZ}#;sq2-9R~z?->%|H$F20F$J_BuP5%mCHss|xZTe$k^~^?@m_-j{lo#a zZ2L19<*G4de}^QO=|qS1avzvxJe5t#v?q1t6`En-s#$s)d{Lz=i2)Ysi&#o~Uj)qXy@sV$)rRI14+@k?0q)KLm zpCEtgC%5kA5 zA{{vyu^D`=y63rANzy0cP1MTDL2P_jb2gj@?mqo(Gz!;I!BLG~f@Uv@)LXjCJ);Y@ zfiC}Dlz)B4B9X+3vUq+3nC-`%`B8*uCbC@J$U!!(kZq`Z=TvDbzro)18zHSu5Gfs^ zDtS{;Do%=-@JUq8o* z9n%OmgK5rt+JWd>eQh!%ZMP-SN1{Jq09l#K>iBV?rqb7CPm-%qyBv;M?fe415vk4Xki4 zM-P3&xIAJ7>p(9rq2~65Y?7S74taw-Drn<}NS>`IA#Yo;(w<vM)ST0{uV-NBOGaLq-`LIFp~KE%wlUSSZ+4@8mZ`ZhH%=0&-k$8W!0J0y_Jj zIc`EFRY+xqw4jEkt8YkppIAOXl8jFWnw!MhxevX)x}mWx7z52;_b*sTTzN4RYN-1D zP-M2cJglIyZ@`Lwym!SZZs?!e<>zF2-bunR9c^kLz6Sps}^7wa0+yqy25`aBAlS+Tr$EV^hxQT0t2K8+iJV=`_> zU4~RY3SB90gV2*pqc2U>DN??L^gOji?#L1_mPB9Lmdrk^e7ep6sK%}bD*8&3rM*yw zMoNqz3#xLCGfsQt?`IYGQM-BtpPMAOa7x$F6$iXtpWZ7tf**0JiQK8}4}sB-#eWUeKDn`~Y-cd?qyn$m zgc=_8ub22g~3*Ko~Q%5FzuoiXnmw_ znMMSQc$6-V{@G5;f+#|q;{8uF`g9x~6hd{IRBC+=8E1GFdY`uGPKuL~# zP_dO;l0ID9pNZmPikoy}P2?<~q_=9Bld&?KB*SZnzR}VWfjY$>y$KXfMst{Cfz$2^ zCr{rdU%)zb`tok&suFlaN#^KPikF?v(xUD=EhJTk*EqR*I`y=OV1{rWnd1Ctot?tl9=W(sIXMrHrBkrK_NE0flt4s!l;sAzVAc@R35Eo-)$!Phnn3l}LN zMC8p$r^t#1!IPvW8ihe8-3Y{LV_oVs?}tI`ON3eNKSThdJ;{$EA9@K&@3t&@YNB#nmG}=e%Ke3kWqwa z?+MVnn&edO9Y?4Ou;8#dLV|FA+*2^Q{lYc*2-g%TbHyxn= z$5tq`WtJ%Ht01li9*Tp^-3J`AU8-o%uEif$Tl+s=fpiy7JR6+cS?Fr2IQ4YJ{+0yN z3<`r)jdYH+KmklY8$tws!GQFvymv7M(@)p8Q4lC#wO)-8*c{e!%1S6@vcb(T6KN+V zT+aKudg1q`wO=WUGrL!kQ?=3h1y~b&IvBook9H233|kXd0)v%Wu4mwI5(mTHx|err z|ESoP;}%qMLXcg#F_81%26@xR0_1|A2TNen2=bc)&bL^MU#PEQLP{fGL-gU=!L;*1 zx~&f2zHBOj9-a@6__yVqkEgLM?3%6=)^xiY6yoEekAsX`K2=CxlanuU6Oks(C}<@>e^39{Ug$09k9$??14SL zB!YhX+LMC?p~343g6nJX{~nP3pcq*4KA_h7Y;T)apVO>g3o~c#+^TH5GAvLxs4SRD zckyzBY}PLPBAOuBzwi8XUm4vrFy|JWoxAh$j^pM2^`%m`=MQvUC*@CXdkvUH(Vr{I zp9bw7sk(ZbNC!F5x)UMtJ^)D=GI6g*WofT*lA{|JNK@p(&AI=Y$a*m*u#$ga=#`JV zZXTkJ^&|Uu<;^fz5K^a+;Vm0N1Ra^SEiw|}Rk@U$zh(EVBPnmTor1`@b2dg)(-qZz$$t@Q+B2~J{A z)(y!CNz@B8{Y!fjE}ROPCh@-pZ@^Zt;u2|UWrZJ!*`zl;;r89D2x5INTJyosGsxFT zL(D?U)G@Gsx;i#}ZRnYsRE%h*T<(*4^rL6G4!Jyg2=V&-B!{dgqM3x;9{p%?9MU&D zdABTxyVw;J%QZvTj1>ttxCSc`N{CS1wvTPC#ZnUPXrWI#P)oM(wpQiV4yB^3mH>ME z8hEE;Ew737x71L0d&AE-D|v~o2c#M_v*~OI+bz6cRqem&9HBykE`s`AQdD4WR>IY! z>BnZ}`NZ5Ap+VPitCV!y)l@Fbu7qj#%iuz~$JA2sDx3PDRNPenN)N~)Fg98>r}~GU z)7!{~ZK>1;)rqavx8v zQ%U0bvx|iLHiv&D)p?2KJ zM|){(somMevV7O9FMm@{qOs*@3K1EQa9L*znDL*ReC{3{q>{XDQ$;e}ut0V-)&KKo zM7y*eNZ~!DP>V4-#nXn;9^hQiOc_j3V6Ol;7RT^5)C48y@=^s;NXacl^F|?P=#w$X zS9u9|AX@l-J0q}whdTsWkP4vqM{A z{>;E~)qt_;%(RAIHvK||iK{e2=jkD4q6F7tOreZ&lYza-opWur#NUY?jj|-JrG2=x zKM?}$P5_}0l9-}2tn+B$xtF1e4ElnboK?`u$ZaAQFF z+Z+BE`)=x);gz`dteP;?)z{|C^XHEYoE|OJhRI5!!5)Rj!@v)yVbU&^xG954CxCOY zRO-I_sqkP9y8x&VQ-Iaek9YB-Sv!lQD0A>?cZngp!`FRp{sSlIcW`7K`yTIinR`5- zOAf$6DgH!JFg*jr!Z{P{po&hdGyCc;kV{HmS6KRIm z;?Ykro|-HEmLb(&bsGn2Ww8ib0b~_#!lq@y)}?pZ46mixE`n%7zeLtw8StN!+>nNt z!aw4?j6(v;9skjk{j-N517MrtOr^c?Wa~`i^&z#{X(;&5*F6k@} zRK6@qye1&1;17u8_=Ys>(0^jQ+N+bj2=)`-JjzbEJfe%04mNn=?crAC0_akd?I;u( zAYNPf2XJZB$E%I^=xpZOK^gr<385h)X>@$#I5xQQ@mq@)07OAPbm%pY)wXENos>mv zE_L<^e5V68$t;T$4YGR?6Kd~l$dGPx*Ent)dc$W0N-Z`2OVgc>=0XYdbVv{Fh(Z!Q z2;4lM-Da&Zw423&DrHN+7J45WYC{I}awO54lmRA6bVMNx?ah1=RwfRL|2UaRvMiYKPTgYUY#_OGPOAliR^aWRbRd-vp}O3ke1RKCFatNfmtSljSmZ9`|ga> zt6<% z`yT1Aj~@y9HnNNfb-+0_a8{&#*`!S1GZl2HZ&Fl>v`s+n=^S_pW^w*SgsSxwi@Rs0Mm%%0P zXqUl&s;>^P83XuS9;&m?)nTCd_r304Jl5ZTX|DC8f;5Oyv5dqXE=b+6!*C3<%VKn} zjP9PZ-fb{Ytsa9(z?Isooye;X36EzC%$wn#un{guhajNIR(5umx~-7WpK?Yiaa zwQKV>sWWo^b&vhVWo53GJRlQ2Y8e9rrP^%8x%Po?bD2ftnZtmv z=E45E4~MtE=_U)W>MKTUicEw|Bs4X@&+5^tlH$i&y49`#qM6b0bJSczLN#=2YIS~A z9(~#Nx6Bn&IJNq4dY5wbC965Um`+H;y7q6tIuJ`V^vWDJ=0tCA@=2ZK_r0Le4o&Fg z#(+O8Mp_2veU6IWZS^=K9?x@yl)v-V&m#(RY*^&+(j7F5AAcfdB^`5&o(4ra8wO2H zE9GWvdf)GK_?XSY9Nb@Hw2b^&W1dS_&jpt!IB8$ZOPQDLA8-HT;@&11 zSszSu{nJAbbA7ShmTKa~SP~SRw7EocySIBMrgcWEWv%gn!11#Q+-WGABJPVrG+Zip zECtH%dPAQ4995?al9$Zb;M~@mFc@Tc%x$uhP0o7ObatlPb=LJjVqtU>ivLK}d*6l& zF@Dt^Fr_aeM?hDXq|WJy205j^nJe0739 z=vp*~M)K>tb(&7$WahuN_nNSjn)|`cNM<4RMI*W+DUT+CV%OWoF=*BdIswm8$<7#Z1dtb&bS zEMcc(841TEy#ty0KaaPI|B`eqlQtzWLOus-L0ds83t}T3A)GxoH>9VT%+G#;swyH8 zhyl--l1q$xi8E&zQa(k)iCM6uFEz`G4-IbsCa|SZL@21GsTs>Tqg4ys14~O~wNr%q ze++aVdcZwZW}shIgc6>KG@Uqb*j2k;)Y|_Yw1vo9c55f*TI!@tibQ-FD#bu)5h;^I z0td-DXzr>iN=!iGnKY)XMe{n#I2fGKvCP%KkOzHt%cs6mkc5fRo!JOH0usx{b=&Ez zDH2y)!}8$knRI!)IpNw!$%*2WOTZuIigaU%0d-n^J)?UdPliyh8yoG(bOp%=3B&~U z0pr1j*g&K%Cjh2RKw|}L;)>EGnpF8j(Rjgeomv+zK{#5ONeOrCOWHe!LK!Y=k1X&E zCl#|`f( z`NLAMQ&{7&6+(xIV5eu%Q$DX{2Wr*=yaSLAutS?apqRv>eUWOYWJ)*VYZhO5cyD5t zM>S`JQ~s8`G3oxpZd$~WKE6xiDYH=})!aS6Sr6*4ZvPLB6kWx9EZ_}qWHV1=#QLw_ zr|dlyLTh7!hr4r^09ZY@UZSo$D1`!z`8F1;9ZR)-$Tx6_%097lWZVm=dQePFU zwGC_71Nb`^91qikf?k4aoQM_Wp0(TQ*5s7i!xVtS*lGm&%T*m))h-F0^w@^Mh-(!3OO7dsB84L7!A6rxf zOV&N0fPOM$YKVn+OO(^_rRS*K=oW9%TQmlHc;COIgKVL&D`%NGN)+dR1Bf@RqC>+w z+k*y&*)}Z;A|=G8`+)3X)Mtk~q*{Dy`9Sx*R8j=}57F1>BL=?0xz;n`Y$yIjSi2uD zS%2of+uUYC;?0;_W_c?jVqEbD)0uiEQAAKpp5Z{WDoBB9WwE^y3#zz$n%{BQ@kJ}Z znncx>YB2JGd{dFg)HpApxy;!38RtV%mf=-UmEbC=f-%?QSCPom-a0dOTbCtNA9Xkc z>j=8=lpQGD@!vOJ9np(v#s`r3(fV_T{n5G^S9uueP??OZrs=!Q%QT)9tG?BAIJd#> z*@@pQBi6R?Op4>m{7>ho=6h5gu3xtr*Yd~|Cfw~bn|c+r4dJKi)Oq6(r}5VpH=TO6 z-iMVMT?rWHjc9!?g4$hq2%BGl-N>l~1HD`Mx-}j_oepW7r4DI_nvSkSFJ_i4=3xxzzJFgE`|lvs}}_tuAXYApr&`NxP40;l}29;T>>Z&a6X33)58p} z*3{DT0J>SmbCyW#MoK;1pP0xsimEzuk8YiwS@&^Gsn@r*)ddo4hY~ukuos7);vT3k zYoB9O*i5_(4j1}ryWY1X4BU$qKS)w0D^hlZLoP)XKP&RAW+1J07?zZl8JId|^~lpi zyPvIbcA`T1v|f34ABHPDImFAb-j%tUPV<05hzc&|rQWJBkm}*9il+oDjKiX^Ao$~U z$G^J5@Cth!PtF;04-JX2A({o$cc)eou;TN;YHl>6y&~^;cdy*|umw&LZQp@#w@i(% zTvbJ!y4Cl9)B1N6)vomlcDxUCdTTwabFVD%DRQHEmygTbZC>kwM7QsbKM|g(D)z)xs;N$7CbH&v(MAWkBE4UeZeWm zM?UybX<$hnnyb>$2kGc9p^-npvTLx*>M|_mlPryC3H~E&v(}*noV(?*y6}x-6FOGl z554PFPVTv85Prx8+2i*euO_q`zl}Hi7uovu9f33IeqQB+KI23eA2>jS`u4>sX3@lk z`cyz9bW3OzBe-vLxHX*+yrc||>!a){cii{Z`3Z7HjUD*Cjv)00SjDQb*VTcp~qQV!qQ*b{(3+00VSh^*11EUqDJs)dZ2$lB76Wx&wucE zz`jL0-e)JGVQypJcO{K#7bAT+SsukbqnBo|;+%L>l-zCV*`H<2KY6~gG2?c@KLVn- z{-~k51~~^kJdMcfu0#Kh&WjXJ9!4tRn7oOj7fMwkP)f^p{R#it!AUndQR%EItEPY^ zfJJ7dwd2u?h=+%IFe=^uS1SI2L$p<*{B&SX7|*XHEnN`!HX!Tn@gNrXR$shM{+15s zk>|iNyNY(zErA98uCYYBS$_!6Q8DemnCu0qh5c)^{+3vsRe$Wf#*Z5OYCfZMmDwx*R4mIA}(cXG}}G5V@%v+kzX?LgG45%LB zf3M=X8>(Y#BnRHv(;~?)cr*4Io>r8%=|M%*#hIoaqPjPDCp#Zr>kv1nzMhC8iPt-d zO~IlW1__T#{TJOmgRh!|q!FehMpNVGm_TQZimEz(FRkAod4JhtHkJDyHer-6Z6_c7 zouyTwv*VCIv~4Z^U}s&sv@DUv1yN~-sAf{+GTA^sYM76f>HWD7e_HqcobYU)5V)bt zks9W&C40XkM6`>(Ivv56S}EVtVVO7}C%anrIq7CqwEK||7Vts^rt8fL4ftRy3k)ik zEMMbhV=SPf2zudj!QE7@#a}&-y1|cM8tn9zo26a%%X=N8?A~&oo>sP<$us3(WD{pJ z)bwRlusD0$UfPF#-~IWu_Crnr+9}kG^O=~jAcLCI;5Y}P-%8ikIMmMxbzRUwL5x?4 z7EKSklj}=r7XD^HLw`&Ih`~GJay;~ zD4;b~wd7knszl$n!u2W}Q1B%P(=V6(ZRA^@XoiAR7&d(@|F8NpiOOe$QAh)4fL=gZ z{|J?*G(VAjLTh7aWoY)msnR3q08=1$RRoa=-zaMM`(xxp9yT>B*2%jQRotG>-;(6z zI-Pon-LyzUlC^I8-;FTG@alM3DgJbBOm~l87N7f^&^-OGCicWF;Nv`XNcBc$dPN8C zX#D|<(F8Cq5V_OoxjK9RJAR^2*6Q@T4%OB|(BymTdfH z_4{rGIj=jodu{Er21a1jSCAn=G3b=2N;VG1sv@+vK6)D3T897rir>T(@3WaW+@#mD9`Ez2WZe))!4b7BNqG&57ez3HZ{^(h2|R$abEa zR8Pry>SOx(@vnRxoK%{ax1!l@ZAfg5rqw9t-~Z_vyzmQRU7Otouz#E)$i_Jdz(kF& zQ_2;OIR2IDygA=ZsvY125od1@bOy%*A+PSV=$r0qtCN3d@#iwVQAGG_vxv|(i#*N4 zIJu3&i^`=OJ6Cvcyme3KUuVS94NNuXg^3ty{r20-6HvOwF_<+bTClKb3>O)G+=dRa zfv33fs;Qb4Fs_@3tm8j8YTl6}5;XKQLb$QurCrUD472dNNca?74GT{HeOyJhr+-D0 zqFRp(?8?_e0ZbK=O8nYv z7>i)qROPiDTB#4?@K*>#_7XVtc%}i~exlJ0zi6X+7!}s& zMiA{V2q^k`N?nCSLSo4Y39kK(#*f#O7@`#s4}!Ifv~R#P`S*@lXC#8BGFH<|FJsd= zHBAu|$Jnid{l1-wS)u1|ZHZ*j5wJ~Cr$lI`1Jx?d8?vw|U5qye+Q3zj4on#Jt1#zI=gjBKF6ra9 zGccl+?BQI!F)ViOxWIi1@_9@}8f86aFo0>JFa+)H!|vpn=r&O$!zSxwLvy)%JzALH z0G2%sN>7My&Z^*x@4&FgU$K9CVuhy%`h7{cb~#S+QYwk@soXKaqSKpK+{9F642E*= z^~#f;7Kzu@mJNY12{1`_uAqjBF0~K}6a|ve`+&s?Y!ZT%PN3|jL~^Kn01ABdHZJ3X z76K7c?MXa}y{s69)kjR;UVBnwt|7NFiM20J4aL^!$g#0o38BEu{+k9Dcsj!f%XAYu zt$x!Mx!BI7XwC3tBC?3nRX%^NwPq=5MCNXbN9;R41{SL3i_NEcOxywIM`GQ#mo>dC zF3;=sPph{rRsOfyI}w+4Mk%FO(8VPWo!H8P!3BN{Xvd`v@cKzzdwL-JCS|axCy*Nc z(HVDmr0O-8oA~?2PpJknF~QtibIBm6@>6uR70AsgQ|2n&h~cvRbs56~7jt0N!iXDY zAwdbJ1v4v;qBObk5H+ZscZfGB73yFWF2Gibyw`bF?#X)!@Rf(R2bh$Jqy94a4-+i?mYQ_94>D?u-*l?yupE)n$31(;dL=Js@&A=W9RioIxkT5i4KaRvQvC@ zlmfv7?r*^Ac4d!w2*#Zw6-j;Urm}T|w{!rab*B6R7hRD3{T`dp7MfarKy?m~ev@;X z+|$)X3UlLY{0dmu;kjH z?y>Cty|4N6O|)$Ht|Z&gWWq=n*^;>9V#?*6&nErhm0QOI`%~$gV4w>*Plzr5$`Wad zh_LjM0bGbe{mX4&Kf5SGQt6_h+iN<&++LE-rAA})RBdA(VUqmpr|Nk{=SjX8Ge1cb zmw!NPLwNpFa8%6tg?QCC=3F+5buEjAo*~}bmk?(=ZZvV{s$PunEO?V|g_nBQJQEDM z@{E~6q?Yf>#KixVRn7}4VUV}N^*6hse8LF*De|A|q|n6+CZjd==2^g)r}9O6(M7Nz z>#6Q1zpg$p#-yaYk8X8fYL`ku?6Q0%>6g>;UEiX-BxPxaSpR3N=3FxS$LjKCLjX(a z;BGLv!s%M(yNOS%u^H}1J(l)tj3xA_)5E2x!`2$*wHL=}xbVCWTsUqk^%1YB-R?U7 z-&Qc;AthDZDP`-?=~)_t`afO8Il+OeJgf4md%57vgqbK&7_`K>K^II_BWYsFQ8L{$*AVkN2h|V|$cc_5;z#Mq8di?tH-=n; z=;}f`bMJ@8EiMckUL>3syELPZP2(w8uFm@;LgH#XPsiW*=1OEh!y`SnmO~d*2M_99 z9F-^;s_5#bA-VqqHNf>YZz$EUo5`C0=IK|SE+v8fQff&DQ(p52DlebKi_k7*Ce*3= zfgeDQ@;#lR54tec7!?JnmmqFcbJJ8eC%*qY7tS=g?~|NEP%WrJBSj(wLYwO;wc$c; z4hEjglJO@ksm)0l?hMhk$PKh>J-@Q?a6vl_!^UM61@l&agY@ipRep3hIgDcfWen6d zm8<0Od5*Y$eS%-%ryb(=w~(_mdYYS_aj_(5oJ;COGpuj;$uG)oUKu2d$P!$zRt7_& z5yqY5#oTjnW4P|dYG<(It!guh5tXHz|H9S0yT1djCML;weFJ{T4JDWq1$4j;{(uXv zu^sgTn*H|lUokZ!M{%aXg==2bsl3?JItD7!fwwnIja3rFYhTN0O9|qkmilxk4im6x z2$E^=iP}#ak}Hg|(B%503~rW^%H&_+yHxQ(Yx6ql2D3@ZrM%7ebW+>-! zKc~s0fAUE6%MhkA()^*mq=nMKuwMWljQ3&g*wDk7;U75ZB1Jg>T=Q!le6SIJ`8?qA zvw;(fy&(@(ze(AvNYPOnz2rBz31d;LUs3fXfS=Ke-`!YsmRjK8 z-M~&r6M5gQZ)i;8>W{A1e zJKLQLk2xPVs}UdT%NP4;&Lbry{b~_1W;bA#4r=`(4kr%1jdj{0X z7p5Ouvg$MK8%(RR`HSs=yywuHPE_cQt-@ijCGKzm>l0_EEsIhe>t&76hmYwqGZx5A z|IRcNSBKx0@(`#MigfY}Y?-QY8Skk~tE+~5Bjr7Qe#8mbO$CO~$KJv};cU3ZRvaSJ zfUbTy;^)W7x|jDF0q@>FB`S*Y`^)l05$~==41*o51zKzIoEWxIds;H(`a4?PdE=k4 zsNU~ZjG}AN=|%WFAwCu++D`_TIb3+XJik-Gpp;u5F z-9H}W;dXXW7jME=F3#KEF)3K)=QgfhRWRBNgp-P??isT_W~7|7@c%ympg>>0UeK`7 z(y~8yinta}e-OkJEXy)t&q4h@w*Q4?@h*!gMp=7?h<26fkArB71*s*A>F!|}v9}Jy zCJI;go1@>9>Ihu^{csV!F}47-^1rA^Iw!KXA*XKf3Diu86Z8?vwcIIpO9^ zp#r=+qy&GpPItWt%l*Z564T9{Zq6JkXj%Vf7wQxH*e61}SECMBDi17NBo8irSPpp> z%2$_vOV-}gbvN{f+_@SgZ0qDTEq`C#;*f8(z9*@_rte8!#I)yxy9Cp7d37_U3p?E$ zrk%W6jcKjZeew$}zo&p#*HUH?OoF-?E^;tT}J=0?BAlx>NKI_LTOdNtG64ppzovf z#ambF`eL{)Eu(4qXgdn05kBHQb@k|Tx#;mtUaiX~`>L_AAE*m*3iq^b$HzNO@LO1T zuL=58QXfr@m$B|&F5?-WT}fUA(tf&T=`jmWtO5z=FQ(0_K&lPrnSG@TSB*c*i+rCT zNx5qk@?GT4>ak~IAFtB&*?+7A>Drp{XJcBOwVV3JW6W`7G4&N~shb+Yvy!qMa2WeC zPzPe54#b1QS|g5AUy^zP#`)}>k@H!+UymfC?nguhd}n@(ufM*HKujCMPHj5uW|1|-}cNIP`<4f^U~+4n!z8p|||*6aOPYYecUZ1^F@ zg<68shcy9xcl)AzcQIBBtDU^d1eQ@9Mw#yin%VYoxuEaYb@N0N9I=WIf_9)Z~( z8TB%+X|r%FZu(4XjHZzV=iM?QTIt^3u1sD9Qqn4rI*oeBS7}C`wqpFZJZ2GiTe>*$ zw>*Fc@$r?BZ*x4g5~Q*NG2$Oqj{gq9MEfi5-wpYYz^i9hf>h0XmHpOP*U_bs{Z{wN z(fh6US5Ca&x}l#W8{duigyu5hX!(;K(rOZ9Z7ZnBkKh4 zB(BFhC0G-Up*r^wj_1#DP0H`7`CNn#6xc**2x9y#Qm!52TCX z`!#87IL>j_G~x#zm_phwKgFw;8E6~yMD9Ysv#WIQC8Eva&tGx}LIiH)4ul?r=>hfW zl^|98Okc;!c68ngtZz=mj^a?@5q%vi-&G{{%w@!!0bIvSV((l={9d?E{}JiaD@LEb ztS^D)6Z(8vz^ijm4t+#K>yXyi^AQo}t-!q;QP3};5V#;S#W>?P?nk`jF}W|ZCh;{x z_pO+~KOt|WZr4H|g-Zu-!n1TrGyTjXN%5@&>3G#l7dSiS;F){CZ=Amy=XSqbVc3lE zUa`Uxc;{R}Pu(x?MP3SgQ|BwRJE44tNBj#&#~Ve*y6q5Zlp@~t(lmUm+emXlbj$`ke2KfL?) z{Er@#&;JPI^J{qZ{3K8n!#`eK4r*bI9)pW(NqGHu{3EULQWg;dS%m7vT^Zp4jU8D}C=c8N z?ReJ+t~2I-t#KxSJ?jUJHKi_UO<_&?nlc^4^c5&)Omt1jSpkx7M~wK!3XrrcXy-A{ z0V?tjwo``hYi^P?Kd6DTweG$;BA&nV0X(be$8Sra4pU+DX*zKJE36K?_aj~Jcm(_4 z`MLX~8TDbR&+2>-6DsIkfq1jxA1-K(1M7KpfPuEln*b#4^|Bnl#lyzm(8m{fX*uQLPIt*wEx%_buP$3* z@F}JXdDXK5r1w#-UCq4J-6} z3Q?9XFn;HRecM>O^7smn+!#B8z9$$@9(^~Y=jZPF7@hC$T>;Vz0DF;!z|#{o1@A&qssKW$B3`}U2AlV z?2{tAorrvf_dI-}HHP{3(F?jvT#oz7vz_{#e=~VCc7-0-sP9`0c~{7*WCciJ9(v${ zey10fiI1YqeuDa1lCtg}dTd>6RR6=W;`1tykWX-3TmE<5hcH-qBil9Jsi51hodHnY zXcLJoR$VL+Q%{3R*P+28HE^BpfToOm2Q)=FS_RTs<2#@y_dgWgGVYKiVM_ABc52i|$D4NdsnMEt(*DPv4B zTEE*Awgnxl0ttq-*|a`@FjGJKv!@Z?URC@2Vh^A{eWv)&RUidG|K2p(sq6&pRCZ;c z3hh*B!E7hSLPYFTmp%A>>>J-@%vVL-Wqc6i9ya`~Y282J^(xfceP{4KAvy&8zMW<6&6mP%bO2pHc0!7>$zfcF&9`$Eu9 z8@~tj-ei2ot1_Mq5<9)GIb}uzjcdxrI2J<}89WYdyk~VIfup!bIBE3nd$IZ*t(L0D z9j$}L9j!&I-58bc3Qg1rO;yw4fS zou~IX?`oAoQrAQ9npVDz1{(GeLwI(csV{&CFh!~rNJ~@2`{^uv) z!M+h5Y-|eK{*w(JL^#NQxR<+P-0gBHwmF^N)rzuj3a`G6<2Z>|XEV??kfiIwsP~5V zF8GXlm->rmU6QePL0^jlmHOTVdFOHxsQ*%_-|tFgD$A=)l@qVI7(cDg{fFd%g%8Su zixz(~`t+4>Wez=nQ-0uPYUh&OJkoNUzv*_BI znk8Pw`<9o1Sk|L8;(ms{Uz_poiy(1UxpaAeT^sxH95k2={ zY|b8x&GAIxzq%5n{~XpF|M{72N5nPmTS&i}PB+^4aDAMQX=kUq#JE5A0Zik4;h3Jp ztHqTd{hiw1^gG88FG~BFym}9oHE2RQL1fB7{5uQcN331>8-8=U0(E1a#--DH01Uhk zCXLaf`JmvpKiTm9byyp>f6X*_0Ox!7PKRj~AVu_&2tTA4u#+pUe}^FL2Mgk@Uucb2 z7V@&jBvDyiA2nBY-NMVWTkHQXbMGD>RducbziaPIvS$)5NoI265(0{u;0@%G(a`Jw zY6vJY45D}m;4J~IjYq3g(oB+C1A{#s7)(iengFe4kHxA7s`+}(F_E?ho1+!eqsN}M z1}~=x@fHM}jfDOEp0)PQOp*ywPrvi~{@_PuX76=<*IMs-FVE8ioR#Q0N$0v^{B`1r zvrYuI`?5;0PVheR{t;7LW8QxeSA@HYU+P#0{4>}gxlNMWv&7wRsU&>lwfydz9zO7y z(Fl8xz$2hw+8LuU7PtF9&2hg1YmIX}riYQI8C`4Xao5_vSD0%}R(0^@9jX|O>0#xQ z^Emw^fjJ;-Bout(OJOtph&=)CN_il3MH2{hl@n>L!ZQuXYk`j60aesAnEyffW-@`+IiQ7As(Yp&adyUAHM!dDu&yS7FNW!9~rWA zBvPKBomyklPOM1O1|Ln*1`lChBi)!mo_#ht@P#agdp~C{RIJ{0yma-^<29u8@3p~R z5Y=^i6Ek@{;LHl4XRMP*Q)IulS5lg>K6+$X>jj?H45on_s24c{`^ba#;~ax7g8o=G zB}L)+1q-of(>eles?^K8wxAaR8N~k3t-dRC8_#q zi4Hs&!z+tRWQ5!b9X&n{I_KZL)$j2U>vyrpi)squAP_t4 z3Llfx5kt_wlnKs|b;;y|Z9iXEcPKVGvQbiX_uwPlc&3*D!`c-KC9} zf?uU&Ee$A;$r|#UoI$~IV*Ry=I9u7Sbe$Ay+I3MGZ!CV2`X1ry1tvh{?H!(1 z6Cw+gY)Y%Rojg20D2@#c>*otu3g2`O>I1%sD{R@+PMG*L(R#!^;^})}SDRbdTVwHR zi@msSMl7dydbs{>;e+LO!hQzbEe=-d6dM{{2y1#w?!O9HNp80%z3)i*I`*QUY6J2zH4nwQ1IjP-v`FFX_OIgU7^ zLSRW}l5WMaw{iY45zGEC){7aB2j7ET_IrD#+namqNz0mHZ|-@YX@_s`@Bo*jL+V(F z^Xag8R`r^4)9Fw(&nHG>&x{i7!I`QSNmq6BA!9uSGs)E@FpR{V`yk{=QuT+|lJ%xK(l%*26?!3MhKuF>`v=TEUOIQx+&YT@2qHM9<*dpGBm1V8gx z!Br)G+4bjJg!_>JVovbi_!xO*^$FQH#|T<6(Rs`&%)-Gou*a`HH~! zPP=;q#`oJM#`iv^K@W#71$sDmP@s#06D7gYyAM(Dt&feyqld75UE!<$Y&3HI67zl= zxeNRX*ee8Qq=k+5M4!>fF~8T848tGh``6x_u`$0V#K9jvWMY0#FfqTA#5}xn*Kqyz z)S7FwNcq)6dhXFaqfs*F8Exi!_#{>Dx+`k$#QZj=H67VSe-rmLJ;dn7ms1bW29jN$= z>dBcx>6;1`Y2`9i-ST`x)5Fg{$?sjTNA@CrDuE81l~Q~G6snOY$Hki=js=!wwlO>0a~FkBM!aW{_XQ51SHCn4wwYL9z#l>` z>q8FG(;0ZQz!?UtI^=-iJ5>iK4{RoPerz;CuK51#AdcU4QdV{B(FSn0O^hw*rFLL! zS-$<6C?@K6{sP`Ffs6VbD&%_L&F1{CxeIq9BlXtP_bk@V+z%XoArpstqWJG; zKN9m^dMEB}@iDZapIiGQFls-5ynkB#LawR5$J!8)i~NP09*$>2w78HiyDMsEvvQK7 zm~5`__wIt7ZC)YA`FVmB+R2}0&!+ZWIcodMCjLI|cnZhknG{rRen`YXm}kmEb1a^n z_?X;3I%YIJ4x7z6&fM-hDa0{Ix0L7?-YH^A_~)OOaGhrwzC#Rk4z=?boL6d#*1b|! zRPzng?c`_EE{V8qXzkPK1iPzC@K#b7X z{(6DOY_3h__o6Qx^8w?PH#wM9LcuH&cryQSrzf*k)3ddRIzdooAW8|x(P+l&qzj?wjdi4Gn%b$zUTq336Wuf3B(jTx%mIF&f& zwURnHEq74x^ED*W+}skXg1r*Bmbk;!BM*A%mw&AYv%@YO3c6a%nME`q2OekWwPIU>zx$pO;q)*Nvf{=l(ZZo zy$2kqNn(C|W_>8zzL# zd_SJbF^+<29KIeh z!&!Gy=)a_>tr7WAQTa;`r`|DKr@^?T-YLq>llm@s$ML&Z?0ESlu@@i*6!v=HEMojHZhyT)=#S{b)~Tuv ze%WM3Z*1zE8bl6#vYWL05o7tXl->`XbB-DE%GBWDMHDpmNG?CwG4cahnqtb&f1oaK zF_`j`ZOTuLDL=oyBPu_yE)w#yZiM{&>JAE3B&m8%jQrrU)h^`Y0uxaoAw$50Z=R~^ zSqYG#tWjg*i5Z(SGKGQXwdb^usaCT+;P(RVsy%XyUDb9^Y91nj)=wVVn@Chuu z_BP16GvWXnrmF29BvPu)MyWjZNlp*HFK2`Y%;zwUwSywQA9_G8 zrS}8FWlGFvRVJS+LDUbOhR;cmhWb}}KK-kme$M{!95lWcr1N{F&`CyPi_FXU>T@i1 z9X&S*{mkfJXBRq0>{w}&hOZ}85o1e9$WIn)0Oub6yL0NO_0VSRZ#E&DzZ}}%pp&GB zgJ#`++vvKtji`HFf*8w_8-}l~tPyML;|uUXJ!yMbO_s>6NpTDkv zFw86JyU~6SxLx@{2YvQt0doY9=g7GmnB&+nM!wj# z;~6(|1UT-xuI|Xw)g2o#KV~~E+fFIbT-Z%e$G@&8XRI#9?XL-{-oWTUY}uUu&!!If z;ij3oSggJ1?@`X~_2kSq#}4o3=L-zsc;~w~(}gaE*n6C*ZNtt~*U*`&G02LuUvP$q zGt7!dozL%a&VFVXzF$sN^%wcM9sT`N>vwKnaK=6R#%iB+-c8|U2>gk7@9!F>FNiY= zSOVx1+%)x9nNX~-D6bMGl6`$C#kAavCdBl3Y&ryo-Sc+xWeEN>z#!A zGX*=xLmxw|NqYF|Gs0eRDp&NkeyZ9IUOo6|FO~Ry(XOzJaT=2A>HGF*SCc>7)!tbmTdrXD3e=>T*y=O+yU4nhIwheZurgeyq z>nQTq)fTnvB@Zx*V#_#u9%XEeDFZgWhP~v$^G@g|=6k@)-s7Mkbn%h%{S-U*e82i- z{P{-w@(XPAe8V1O%{Oc-|G>wSg0mvX6G#thhLQOO6SkF+oacBhkMjnmhaWGGk4uO( z(35Je0iCM0WBm6}RR?6LovJ#MO<9tJOgy|U=8n(kxw4}d2Fps~-}N7XTw+}j`D!PO zUh8d%LT=dv@?DWY!5T^GpEgnWD|qa$nXkJb3HybmZ(~mo*nYR0->(}d?hv;jUdt?} zV;uRgRv}-wgH!^yYEW?da9Qi4D#Wj0{@Siz^pawu)HaFQ^HPvcCxyRp#%RPo=TF9c ziDQcLIRG}*8u&ie!PluQu+|IOdHFh#Q!LIHC+@fH^KF#+pSu@XVI(q5QT{k0@ z+DG1Zp~oniz&%B-_{eelO(HonCadiu+YVcol{Y`$YQJrG`x!VxHmIJ%Oj&?-%j+oA z8#|xu@}c?6m`LrI(_XV}y;C_CM7v_6m8dVewny*b*egp;8$QTn?#Ha^sBZYamnd`t zYyM>Nzxge54m%}(6F3E?FbcIHFDB-kgp77zzs(Z%HE>-P>r{2IM80B;s=!}Ryq~J} zC_;{u6q?6nAlY0ygH*LXnS56$6#PI=DELse6~IP)4UrQv(V>v9_+wVJCy{*a1o+LQ zel-JmXsV|mbxK-!CskqJEy&JID?dtA>s{n?chbrN1%7sk`#u7@cY6c7_dKwi0q02d zJexWt?OpS|XR~wD-aSfHc^t<)dDF&p^10`wOhOsLS1)mFreolTU{b$7jeN_P>Zy62 zs@5fuujVAH>P#iyDjNm!?V@izO0;j_>&~lIcdoKW`}dyA!my)Z%|2?b3&d~TDJ?n; zdxiBb>=m)&0z11z{vG2+z9YrFBaMCs`&T0Qz2!vC*fEB$V`SOD;2Qbv4V>2jxJOd| zItTeSq5mftU$5wwqL_1<6f>tuX1~Wp+XC!0d>1K#*rW5fefMtf_T76PxQ_X~*E7}g`_w6EhWXy_vvbo7a~^A0%BBJv`8IjRP1-cZ zJgN!gTMmr5ldS5fjCbst0RMm%kYRkAy(FU&iZa9`MnP~NBb>* z<)qMS&e49)H*e><{B!UDTyXo458ye=2at>J93nPtU0rR_y1Kfe8gBm>UcROGcit}6 z_Q$u4g?}sfjx1jb{AwTEF6{F$=kasy&I@AB}+*C%n{t(#!a{ojKy%j<;8hyz`(h{LVvu@29t! z<0S4p&sle#?%Shx9;@%q-bSJPZ*d-tDx6jBR&WE@`>|f~*Ohom8O`U|>8i=E1#AjM z)s=zr!rXaOm5^Qb9h~v;bbk95f0~=9z1aMme}RZQ07sI0U5Urel=*g5^%R3^f|+OB z-&p2I8BvfAxo3vB!z8ds>FwNS@|<X zH(4ncE^wr%dKq|JHdnsnXcc+l&>tXUxz&vG-@vblG1pku0zP-<`}wSJfjvdl-F8*a z-(2yMy;bDKA(jNXB=k{mLmrXG!Uz4#%V&|p1z)fK1QLFYeX46^_@jM_1`P%-KTnb?_i#j3&4%-_x9E^ zPsLibUActPDjz8EZ2Z2e6_ca?!}P5=8^)^~=ly-e|FWDpxRW<{OFX%ZHeoF*Tl{Gi z61CS9U_Tc5WBKNHz}K$8_cMT@NgTU!7*@5N1{O=?+v-)@H>RojGV*&bA-^|8_IvlU zl;%s_KW}bj9Sb{{f8qWT)$>{jc|Mkt3*0tJ-DIQGTsE%%@L6Gp2VNOs@9w`1_M4^J zi4~>VsWsPXM!oRGNADp5+YHa%d7C(+?zk1cCgd#HwbS=Fv`Bffc4|$Ec4EaiZSc|Y z+F-pLeA)15FW2WpvYo2#NkojTjblN5F3aIlro98$VDBX-;!f!?WZ|#wsrMK4)YlgE z)YldD)YtRzH&)pqt^3#!+_hdr9s=5xtLklXPK38@2I&jYwsfKPl29PYNq3w?^!_YWv3eTO(ym=_(ssytDsv_QIysyN;JtCpYIYM}HrY z@4b2!TqlV#5ciZW_&%M$Msvu1Z+>35xuSluD6?%)v(Eq@1Ik;n6J=~A^8JhXKJ+MH zJ}Ig8K!rRtvRTfJJXD|i(tkot&Yt7gZ*I{z|NosrU)(Nxk8#H{m zk4>1({noV;X7fF^dcthPnKVGh-!ox$=S1wGw?rPI{P~Efg3fd>W!-$>e4*|a<+YKX zy4%EfOH(69Z>3O=bgTGWH#zd>TPf6A$Btl5-sHAQ#64t&4@ne4`*_>N34S<>dl2|4 z*7t~)2fiV`Z@cI_{Ct$a`I@BeCmZe0t(LUhYFPswE!q7G`zEQnJsUa6_&!1FsXtUi zwe>}P7pc1aLVPc4#We|l0fl|s#ikqKFNQKAC}FeY+lxJAn3{w(MRp*nU1pOL5QH^<8_O^xijl|p{$)(9EK z0e{`(Nbpt)fq%ZW{^rPwa!%w4)W!F?>$MXruG3DfS*}IOmuaW(Dbvo}zf?00iQFK> zemXBC4QHCYgghHB+M>CcqaU_FcZ@8%tCO2?7o2785BKH$yjf-M7PT_}!s{O^DSWns zJjErm`mrzM8wStSd$IoJ$iupE@Gpju*+?P|3mBWQPXPM>=aj{FV%aFFX*lK$#`IY; zX7A=(;&ItTW9pH|ZYP`#_OOH5yOs?`;~+OxJDR~ox5!4m4ij5($*th_@V{x{^kZ*a zy87sGV5O8MlTV3xKZ^P5>MyI^H54O>c)Zfth|9D0x8YuDQvw+S)!nd7UUn>RNaBt{dE*{ucra{))0eTkqG;MeJDN?^{$w`tLgXP zgP5agpU4x!Pb^YBMk)=|OXU0Pg<2GMd<9c%XU#q#+TcxRyrdue~YOeLxy2+6zZxL(V%2nBM%NV&T^{{gf_pgaq;hy96 zd{rxB_O7zQtB2P3>gwd?a3b!mO21+keC=p+ilXXUnZ3(Bc=b-~1G9Lnu%mxt?KZIv z3Is;>jb=>hDWU_wa8#1WcQ`R4Kz)yP-+N0mE>%hKdo@XE?s=Ltf124ubdf1jtAM){TPel zK}jo4C7tYIOdQ!_O!&Elb81l5iZ3LcYQ^|CE>!h`3rWu%l(pOoNq4waJ$dETky#ig z^PIw10sH&t8G-%%MI94)vB)ExYU(=ENk6-mLOp4!4teXzApP`OA#cd*fd0K}I%!zT z&@U?;s=k$Dy^@Z&Phezhb&y^$o^6JG-70k~EK^i{BXTOgUt8oh_g-MAr6=Hi5sl4%X1blfS1?fB zUCH?tlEZlaIz`o=u#@hO*}I{WZu_pI89Xh}sZv;a*Cv({Ku#y*1@8hwY@9v%uCg9B z!gL-Vf_IWHAPr|*FUOBlM%jk%TnoSNXxaGYUyR0o{EN|eE>2Jv$HaAY6;IsSZ49mqGfbT`=O zU_@r&X`gQCF2UZ-?dMrM$F7s;z}%0vbX&g9d)HFvpyUi-Js@8Mc;9cQWd;gA+S2__ zS~kz4$GaQWQs@gQD-eqt@V&JZ`u6RlZFZ3EG_la)<=9N&V-r93X69dv#%s?pKGwcH zEkWH6xyqd&MJR#x=bn+YdD9kY8O+rWyT{?P!|#LE-_U`e&n!w5xmtra3)|c}NfNqD z4(W$C(2?l7uQn@#OS&Or4%z=^hTGn3;V_p%mZgk9MF#1*oE|PV>b2rz(s%7$%-aE* z=Z!MBH8aBRTlLh*qMn(gzjbWO4y&wrR$0?YZzxdpt=_96m0nwf-*L~8tMtb|i}>RI z`g1g&ahj~^t)`Cg%FR)(cao#J#=qPw&hlT~G`7DC{sPNqyj~IUbe1o(RT2I&cY^9E z-ps1L$ZW}RD-@j18k#7>?|u4af%^b|j|6{Dj@oV;C$CCilm>ZuU(O7#O%OgdmyPsY zR-7vMy632yb5kcj0GknyS$&9c9y7@3o@DUhQs}KjU~i=JeKgj84!^ix5q@{bd7feT ztQfj19z&PGW7=Tr;=ZDT!ry4&neVary?>G^})JyY+uj{#mW!F*YdKaEYA8!~@7S3JF6JkSPTek;kWpN)> z6@UXe@71P)pZMQ&(4OOt&w7r#nPb}pyVcXM*V;d3D~rcbRXvdpTyWbN^a`P4oJ;qd zXSJLB-aE!<_q8$Yo@cgu`WWp-j2--y`JIBN4tLs0vn}xHxPL<{i}R=|U*_#h!}r{G z3On-^JH7c=?0aA-^LsZ+s%Kdzt*p6_s`BA`B4rcuI}7sdlS(>irS%@}0g&N5Mst

CHFN}h4{zZAgcmSIm&tSE6S0{?|n?B5aMF+{BO^r z-p%sxHQ2V7`{n0cVU}_5JnF27QwD6p3bPlq?L};WD||HB?@g2`G}SD(Sn!vAoSng72gzWh$hG<{mXVO96RUUY<2y#{;H zf3m7p#MZpSs-`89FZU>`Voq+u_TGXy-o>hZj^{ef_=6`{Rc9LcDzN7;slNx$GSy?> zoRj9Zv6b#AlvaEfRpmR$$5JUxPQ}?OhqW~n`UeLE8&T$~tP1M_ZP+uBeD9AJ&*U+` zw`C25fN`I@n^m=@Al`vhAx@#*dUaQpKkHCnC~w){h4^bj7^#Yj@uf%pG>}4CtJMvOi8X} zj%4MwtW`>?J-L$Sh6+C`eB85Ar=&Sfw|HyJ@@8e{rq!6`x!I&S1&^_n<=IsAoUtd3pK6 z$}5d2?|>Qq1b z@BP7z6yi8T|5c*DNA#I>rt~?^RVaQ;qzd|zGR!@ z=7~3M>kHtw;=j+1_j~QEVdHxI#+Y#}p!V|_*O7KIKDO+lA>ZlyHx3`~uj`8&S?+6J zquh^gBqhYV=$z{_vL60mo{a6)dJ}I{`Bu24r;p?o# z?*$mEujo%+{!o8*|2@Ykrri3kQSQDQ$!U!X^mIGU1n$#y@G)3w`f$U>{m;OD+FQ(ipzDBvLZY1Ye_BJJ7#HYC@sygf$nHPqedl!j#3+VWL z(^V~l*}E!cmhfDB_@>JEU1p?g#fcM^&g6fyS5kFW87cISA1=>)A8^F~ z?PZBJ?KxxkvXXF5%i_F}c-C#!tuWy?fXu^(5_kM+XGPcl>c8W>#FYEm*C_Yn)#MyG z{>p{nW_yWFpFpH57TrMBUO87dLTKG+u zTKF;>ziH1|!?)e!{4ChwPb)yY15*McWqjm0piETT-T8}58~AXaE$n)CB*2$LD@U~( z@^PW6UBQ&DxfeigoL$8%y&vrp@xKa>YqDbGZ8)#w4B%zWwdBf*$r!o6Tk#rOrSyPX zfxk##NEDql8sp12g_WN!;_{3*pLHYT>yhb;HDGouLQZZb6{nGE)Bd~oU<8xQqH)1Qox_MQKkd1FTq~$;A&yJfz8r2qO1hlSC{o9 z*ZDFy*24PL7_-bU%7cFpJm?Y06*whj1kexLi0{z;Se%e&R#WKV_ayDxQ=?o=OIK6q zk(~Hz+53*sI2In$3E37tB`1V|={1Dig|*OmiC7;>ZJXhvP-|UB5&MAdM{M_=A3Rpn zD*d=9BD=zD!ao)5Ni5#K=lisO&-dB>7Z)+lFRx*q17(cIh^${k!B2e@0$w&gm*8*k z15jiE<`ueU?+n$GJC0SINNUO9TnhVC4Qm2xh}&Jv-*7I@CBIiT|4&&BJ&1yT_EG4; zXC=?MFpMmGyElClS~pz^hCebI*IjAa!oESe?n7Cwa0dA4rkmf-B>i(Ag@$ZqIi#a6 zh{fsfo$sFE48Ol>Y+u4zHQGg@|0u#CX&y=<3a5_o*g>R(S77`**ZKYpC(VkQ)2yMo=2V! zJ^RQL`yK3{{QIZLb7~)PjC8~X9o3H+k>4wM((hj=)avS}K-?mImm@@=wHu*^mSunjhZMH`RK zB45K(SBpN*BHu|9r#-d}7&kogQB8@*&6IxCjW~iOL%tPHwWE3K6iV-ZM&P)Alur8E z=eIXK^!%=-;v^cl>hYGQ$^S~h1?2Y@g3DX*1Hak4cai5#V2DWB{gI1Wa=u8U;ExYc z@X;h1XuS~rv&muml-ovOrabxlwx+!28=Bsga{6DH)5Q6!T748Mmoxf%7nt}bFGlfC zkjvB{n>bMqvdIho6bWB__vy!qzmig*rs3di&-w$Xt5v6d!q zu9dTSn-GiWHhuLCPpRzcJ&C$dzt<;n2@@u+IgNP3`7$j~WSVys&xcv$sgx-VJkzo9hluCk zIy;*@q`xd3rcW)?POK=?POVw0MaoOH)AwAfow@%S&5%V*iX~$mDdgK07VGHC8PvWW zHciCK)iBS=8O+l+g9VL?n8%+c#>|nb>b?8GBfx^wnfii?n57t;^uw!!Y~uWY{r8wb zo|F5?V?0fsj|`Q|YsUogef|$jiW5%VD+SrDXaNI zvYO3h^Q3z$nlU2;;=gBI^Uc>)i&QROWOi=ZYl2rX(DxBYw zsp^lcqR@9fOIpzIRH>MsB=Ys;vf!!MeISeuXmB}(yylSKi$165#q+_tZuNgN`hJnBdsb2C zN4-f4PUe<)8uqH~C#i5~J%y*LJKUQ$@-Vw7e!LyVNeCvG_{3u;9!Hhz#4PdN+WUhU5xi` zMxot%OSLcfcxU$$u-Zn9bMMsHac*py|NM`>a-2PPM90}(F2=baY4kX|Wow*w4~_HH z<~XAt?dDj!pqs?>8J{0E`~9w$LN5``zZLT#yTbaPjClvo8kxQOIym2(V~V;%nL=q> z_p0rI@v6SbuId{%Z+xko**9Vjf-Miau$vXm|LAGI=Oc=|xM}mfFV!&nM&!3tQsMlT zYF5>OxYwuDcD#p}e7uMEUuA_0VB5oQy-)i+4J`8Fw(%k!yKHj>uLn8^XNJr#tl$@E%Yz9}{JQE#{WkA#J@aOK&WP%ntMPde1!sD>p83Z4-AzZwN5#h=P&m)e zYGPe4OG-cZVnvKGgCevJCvUC2=bX7l$ z`{M-Q=uz;SE72dpdk7qI=pf4ABi$T_J2A?|z%jIeHO~a5c*jZ#VejjE+3%@jkr(0r zMVvLT>w!@`7RDs_5sJsrz}`W_2i!u;-;h4S^Lgz7=pwOLpFfM!Mr-Y3f6JXsRaiGT z=ix`Gk;qeXJ9+*9EM%N+DKsSW8cBrt-V3uYkqg7z{jsJ1U~+Ecw3#}%{Nf!eAmog`~PmutXp}0Yv#F? zUw_TS7Fl4;%`p7mm1D2L z*tx+wz~)B$+Rxt_y*4NDu}=@@+%VcNlCx6yMfQ;2TY3Zci*P)S_b7_Taq-HiUnIwz z$0W?-A>fiGX{XjG+KCl*ZSYZtHdrrl{|L_mpGLl|$di7ERr#kOu0`ZoaQ|{51&x{n z&6q_xe3`K47vIN(Z4CFwcB(=iHu9=_90Cskcbi&=z!gO-&--$E_9mI?b(3L>>$qD&tN`*qksAcosf7aB^OJ1BDvVMqr=7 z&TIAq^9fGGUMaG`4jm$k=Jv`g2wPZd8Zb-A*~|U20*|8jAaR`lwsgGDz-w0C>1ms2 zzMm2E{zUTq9Pi_v;i3arpTL6X1@|ITJuaK-sW9((>r;l?>hh*gI_KF!>{HD5d!~x- zowsIPaiD(EBkNva!96qBkv1EJc5%#B3LchN7xH*!P&Wi5O$1YNJWs17P+N13@I#O(>feq>8 z3ppsL<*4n2sgu*bkey*=z&Q9IFm|Pk{%L9CgAB=x(nQ^vVelm=2^8u`rMZx^3Lfh~ z1r><5a8M9A-y6e=Jo$O90^Bh>6Uo;WGtSrBD0CIZd4$}7_v1Uv#FHey_ik{cqTPvN z-t%zBo1yBk^ zvK7d$Am_+-Vf+d>HU@=z(oL?zS%T}3=h@95oy&)8%11Kk*4TkZ54k;P%b$^FQ!dUg z&W*~z`~0UuaBZS5z}!Z@+3!{e-bCol$iMmR3UD+3iR+%N^|wS`Ss`@KwzEbf^odiF z@bBL(N3pn356b79!e%}B;H)VZoHZP`^m>eusy}Pihw@Qh*sQPZtT7+u3!djc73Q1u z@5S@jmj;dbuuVicUrf%L8LGb99RD9(FLbn#`dKNlE(Pm%B7Cc`Ra5x$*!6od&ib7o z*6-)$`sHyY~CCGaH%@v7`2Lhf{8(E7I&09es=tEn>i#$qRMgiJ`n9H`9@(U6KM^5Z_7bXaQ zLB*gUIMN4=1?wCXjEAxF*`U!_Y|8dRDJt8$$^>udFz$2n4tnM~p<{48#neeoU2pP` z8peFsF8K4NtbfYaKzjI->nLQ%>`1J?%97Dp9EU^>f7SWYD~~*1B#!F{S+mZTKb$cd zWA*CaqyGAiBCc0Y7+d#8xj66MBl7wAcnQCdA&as4*`U#Qg2lle;W54}%wv8ZV^zzc zqc3F~e?+m-T*Nr$C6TY;ry@qM;iuF-+l)Qqcsg6n*u@~LI*K^nR`DG6X~aeLAm;5h z#<5vYh7}`-a(d(h9wXQ)Q3$b4h<^lTE#e_-!R^!<^L%Uc`GJVwbF^a7KDbWA4D!#+ z@9nux?9-ynX}rx?-=b}4b5Pd0M2u0?9)TDZ>$7yq$o$61;dxvfUvzwQtgx1NOdrPU zK34TH0Lnl$zuH~Js(9|`W2_1}Fc_PXMDo4wFyrQ!-#ZKa{0*zR4$r?Ta_$ko$H(v; zaSraYM`Q1D@%&b*;&-EerK(Pue2dNBv&{HD*g6p32VBrYiP88zj8VP$8S!Emqs8WD z#Fr^CzaKU2=GO0sH~YbL96KY3{VV@lQ_>K-xIU45`5m+pcRIw{L6&*E9qdn16jKJe zbN)CbS?Q#em5%6hxcgbpZ5mHO_c$dPSTT4Xg}8U4W|UpRqUMq=7iA*K7)~52E%eN+k}q02e>j% zE%JZ^3;7W!lPc#IA|}1HKh{2el5g>bJAORC;4yTWcMvS4XtMPX%S zej(yvwA=k2jUq1|lkH*nq|qMm&xHBC(9u6VfqchgSJ-~mSis*uYs`N}QuR*_BXeZm z8shW~@rzr{zU@sw-<-T}TgT|zR^B%!?^}b}H>(fZcpsdj`mi-lA29FR%sybBI|e=i z-Ulb|L%{3<`oEMSzdSfo)xdQpIAZJp_VXk_`Qz*?hIcdVZZGx0-r>0 zrr?t>Y9tM|4UTn?tm?g&3A_ZOhH2|Iupsy){vEnoO{b?+5xjp5_`kfva~S`Fo6ixM zf2}DKn9Do|`K)$qHNUI1ldsY|yRrWblNr|G8B1oCQiRJ4G4fbrjqfnl&>_Z}59=Ac z2i`68ne(~NApPaDq`fSW&bc+}zgNV$H7-LAqu@WZ`n}cax5;;SSc=R~$6kDqs!zL4 z@Dv{YLhuw$#^>@5PXj*7s-A_@rx#od4H+&*JGAe;sTOQJxHoBO}Sg7zfA3 zy3+y+E@64}yIW4HJ#xlEk#@$emo;!;oaURy0KGJ^jJG1Y=5Qr?}_7jfn^BzU9eg3pOYCpmA*b`q|_J3yw`^ob2 zvx5yR|No~QY}4|;-41r_$Y?v*&8E!Vv~08;>?U&_!4>~~F^@dw<~@q$+-!`Q$D7P~ zy!ssTILy|a6t#bS-FdwDJm+zXHIIp-=kWxe$53=0v&B4G_J82S3tr9;=dW#CChi9O zE}s;=%O{#+Io7;vi!=WEGVxBNY^?m|uZTt4yCi-r+TJDcW6`F6{aCak%SObaP5=6_ zX#ckCe;13UET_=J8xpi{7er&xo?1qsM`p&4Mf=6?&k^g_1`IJr|9gyl)2L&i8+aGM zTwwl%#b-z>Ceo+*JB!>-Rkyp48(v#fyhYNAQ%KL~1TG9Y`#z@^v~bVyO~6rN$z96e zlARxY&R)28^{(U2>Xc^Kb~%A(1cjYWvc~0m}~adrg@AG z;69&k6Zy=*xuB1?bl=a%E+agY_n+wZqRrbRrFp5Hbo4=G{)I0}N^|iR($MzeElg8u zYm4%os$S|M9qqrdlY$RUS2c+_yH+!)%d#aszl=f;ttIVYM|5mgEEC+6@y7P1-y4ma ze?NAt-{0HsciFP@Tl00x{yu)ciOa^`Yj?dddQB&oYg#TFy{F2{%(IdCy|c^W@2Re3 z(LEKuyhj#>$EI|zqI&}B)|6`u~(b< zfRjZY$`9S0Q$-%iw+Jz$IwkqNkD254(^@PVKHY#F>pczFo%s?>|)5Um;=*Zi-^ngX<3%wpfo1NtD_!o!ZZZH!seojPObm zOXIesrtJykTlncR>Hh*wNLl#y!MP&*`&r=|%EWssmX4O^6=f!l3-f!cm&TXp^<`0c z#`BPeqBvz0nPuVbym5@Ou8%3J$Slh}qO54&<_yJYkTN=UA-4bjiJ#E63Yt zWqwmaq_!6o?+ty6J)>lb@wltU+<*gr}DV);k<>~;XU8b4(E|}cn{Ow zWm5~^t<5cbw}d?J?jg_XwJi8)s=#AvVdMH+2Mvxd0^FsI?i7x}Rhn0N+qR($2ZkUPqPes*B&HiH#!{194RWF;Y>dDitc9*3l z2bS7Mw_mQdW1Rgl^H&->&LqYe`I>*Xe({*FbNB22YTf)_)swQ6oQF+0jXhIF$}Z-y zn5ar&ey<(eB&iKeN<~G)n#*{2u_O1yFG|flk@>wBmd4)`?MtJ3BA&;d_`$VfVFX8Q ziZbV@aP^lUrhuING>&`<$JlW8BUhW}Kp;*4eUaAn;6jc?A)~CqXKi= zZs9N}c5A);Li@bev$D<>T}-;v5c$i=-v_e4O&7 zD2{zisf9!23|E?%^<6}tZDN-XVb*7wnDt+Us~qk#8XW^8vEEFK3k&yJ6L}CLF~Wgo z{cnTdm>r#KZRM}4z%T)SfMNJ55>*dy=FvCArB+^(AHXv`-~ljm?kya5E8m_$rhwya zVs~@<{O;Y}t-JR;u#EY=!0vt`bxPXH=6g?=dF`-`U@vn3FK~A9BxMZz?`iN?%8u|X zms$uccla97CdBg3Vyef&BnP&Og-MRM{bcf|aX$d^?agu#cg_7|RgB}F7uZx!`AJrF zEVCu&Xd?NpxVj)vW24!Sts16mnw3aCHUc9Y_ZIGlu#vB(id7+I0r~&Mz?V-D&yU2A z=f3HfGOW2-GiWq68Ac|s&zIUwJb}}OZ`M=)@#~YNaED=JZXYxne=<1Q#{^#vmY3rg>Q<&uI_f_vD`ELF zqY;<_*eAGu5V0Iz8bh2J&s-bj%lIA9XJwu9$K=c47?@Ki{gY3Hoig(6hW0aHA9T`63kybpynY6My5EcZD3nJr zf2V$SF5E7G`HsEHIa$@SCadi~B4Mim77cM@F_~=E6QnBWDL7L&-YqzFfHfog zy$eup98Mf9cCTEY7lco;ZG-A*GtVHmXm5MAjZ)jEQv0yB$DBdg<{1>*e%P~6M%MY% z9fyx6wyZoNXZuvOy=^AX(@kxgN$p1yqp=^|@8b+g?+5w{U}O4Nt>z_`QK+&1it!~A5LcvbN+(oX*m;(Id3#QhrA8~?mPethiuE(Hz} z`MqU%uQttU^1qo(dyXeR$L(9k1h3ri^;hf?F}KPEYJ0w6%*(U+z1SN$W|W<(>dzV+ zFU0snoLQfZ$ld06R5JN2oG|$CIgbfqxg_#AnCe+Nh0>P=X=P0xRb5PeZy>L$>EfUG z-%O!B$5Wo`IlhUdY`b%}dK&v&*~e^U`8cYY&ct4LRJMnEJ~0~CJ1iWoXxklGYI|Ag z~Aa6mGaq2AQpQ=g`N0-{tv|dsI$XyvLb`*KCy|NsRJayoN%V zjOJEsh;lAqUxJSTSe5V*;WP9jv3JFfUmJ;0e$_R?rf}ue=dx=FJ`3On!j4jE)Os68 zakNnO1C7*>gS`_mS#>{P5#Ysdm`Hj}D=^|^-j}XEqw$dqvQ{H85B!Jg>b_T0u~+p} zY+#->bkl-I<_p_UMIG}THgVse7aqpim1wRZxgPj1vn5B^wtyMw;_o|Ox zA4u7AMwVd%{#LKi*poyHDyIXN-p;W%S#@@^rPn^*XEa)6A|7U}=c@aR#-Z^zWAO1P zWi)rJdS3^2_!(m^V!_6G<`+aE^~=xA#*bd^OmQ{cqm8 z0esk5UH4z9Y9D{jUbt`duH&z>30Yu)bQmy$O7ac4iO!KvH#l|Ei62l>aK5F!cOq=JWQt z?M;`LsGhCYsM<8<2uxJTgWT!MC41Mzvx|35{O-8svh~2in%KYiOK}fFd!PIx)4)Gh znIr1jnnU_V@H#U`U>oLLD)DTSm}lcm^Sha(Z!Cas#t~>JARYTz!v^MAO|)R^e9|lG zN<0m9%oFd9Wz;7eIdgxCcKV)iTBLluc52N8?Zk?S+Tf$9+Th}Z;L!=@o?D-=zh{Pj zq0_1A2MULCDST;S(Hb+TJ(e?}r~a{`p8D?>8LN^aJ+c)1gG`~m8D-kBYtdGFz&=>g z-M;=uZ)Sgg&+*M!zdgQtedM^i`kiL?;F9jL&6SbmHorH2PfD{r#qU+z_U4|X5`n`% zC~3K=hz~LI2~7NA!?0;MBl@mV^<%599m3l`wxCRFvr({j4e5Q?s(SJawS7Nx1fCr% z>3+TXo#xjEmvmpY`J0jdIGEDB-IfyA-uGzt$1ElAGNblSC#d=_Y@}bZ`J0jbEG6&@ zd-U&LjT3*jvXnr|fkWDUmeRFoN$dDGyM?u$2XimbKyy&JWh<}#ZjP}cWo_jcw8gxsXN zH*bpcPf+zQlSqG5PVNF%>Aah%eL)rToT;avGezWNf@@)2n&4VkKbw5LYgE0$O$V}) zDAj%$r8#O+R`K{ocFT7PE+=2#Dpj}U2l0-Wqu4pg-;>jv>2@}ME@y_T#{Cd@9mn0&pfRK0=dAY^7Q zVpUhEy48+?!6n`O|6Hn7j&lSqVX9ubC#PAN=WK3a$^E@@LlgK#z-g3UTOLtZaj+*5 z+zku&=MENWxomQz$I-En*pG|)_}ZEhF}^ElMh;|Xp_W@aHPTZD4u^j#>YJ(R_S&ft zR+# zzVr*7&FiMBdXGd05l`6bQ1xAuKfiB+*r%Z{t{%T`zVOA{xy>PVos2aP>26W3g?m3` z$#C5J>?IWH+gGaDnY|x-lY{&_-0qy_{#j+(avL4_2CbYS z^Yfge_6Fn#aE^{yf}^9QM$%ejIb!VYc2H&k*)I8k!>+t9at}l zxp(wjX6krXkp9YI3L(bc|Dkc9=OWVoZ83%1hLPC^9~iTD0n7f?R~nj*Wg=gg9+;mB zJc&vDM}ZIibg5Ph+yFcIj$Kx!EgvlD-d_Dq^Y+0d-Ra{}0{2O(zFo^{esZ1@TnT~L zJt1ZDrU>?fHM5<~z=4M@k6ds34L_*J292RmXxj;}1(p zS1v0aC^>8RzWoC=g8RnTkvae3;WD>n@z;|%_;(<4_bwhTa~!)NliJ@zKKIk59P1r% zlExa+fxm@1kVm-~_j;!4x8nV$OEvJi^==W`s-`l$? zTHh&oQkdtEXR7V_jOO>kcgR%z*aTHy$}$3u3rPcCNqPx+@ILrhPP|>Jpw7*CGev#3g7-@Z<9YLOJ*%ShwH%Alo6M!>4Z!=_?m9$74OFKH650wMu2By=?j09awB>Y=~v3>UH@5^ z`_h+pQ1IA)GAP##&Z zm>oG6f75j)e-r$i&?#VxfKJhK#_;{w&Jr|ifZIB)I{=ZzQnIPw_h&4QTo=8jknr_FqAOb3TkeP_|p z`d5mE@i>9631dY)amp4vPNtka_doIF zY`!ID;BlHk`kX}+`jKH|zFN07;$-%&7TMX~`(jH@AKz~jN1IFwpu1q5Fq?m2&qe-) z_&XPvC=&TP9a}V>8xwQSl!4W;SPD`t1uvE<)VZyiKO+w=*~z~@O2HD8 zO^%!`5qux9&*&xM8UDF$a^z$Qg$|o@YwfdZ3?uVE%;z(5PS}gw$V|1pO^)unmD1!u zdJN~(v5S`d-8iRu?%}xp2NTVG9H05TZ6f_}359xYF+Z1+{_7G7VQj$1b5OoHa=v^# zzbqNf$Mb?YUacrg&W=1=V(rgsv=b|C)K0BgtwqXx+Ua{%X=m>DYKEN1_vbf16#Mi0 zAD&}>zJr1qAsxnL=`hl89j2mWxDIn?iO^x%M(8lVGXs6cLv=b{5wZTV|w829nZcdq~>WU`%jdlYA z!v2^V>67s{>ENA1x!)rSf&2Wy=_Oj_-Ky3kWp}|QQ!YD1>}{mh3x6>3r;>PEqVGOL z6hh2Q+2Ep`*lSB&Elr=NlWrfZ?(VbG!A#C;mKoMn5igcSIf0%#z;Birh|FLb%08|N z?BjAdvmd!vz!rK2SiVL{w~{KxBuiGhB1xnp-~NBp;cYlb6nfP#GE0p`J6ojeey6LY zso`vOw~|N){l}}j|EN-^;q0RBtP~}nq&Ru~;B~@T{Dw-Q2Z5{hI7K4Kq#q{#4i|HF zVXVNn1Akp;IvqJUU0^LD4sbV7C}Ls*f*Y`B25B1-I~J}>r2X$D`4^Vb-9N#*m{&V< z1^Q%r*N{$@OngpXP!V@|t#)F?HQK2)S8I{-CEDqG7HftqY|4N7wbA(BzZPrU!p;8~ z@3*S^86AMX(6T!dqXQGo&wapoWOlwE;Ww4x9-SU;ET+&X{V-YZe_~Ji0WUi}{6z8C zHfsw9J8N1AkIPR*bSjlsn`aaU3XO9RSa$xdBXy8d&#(v>L-Y=o%) zEHnJ3ikMqfe@V&=93Gz?sCbXG1)TTI)vpXL+Nro&njk}35*^GQT-0sJ(LE}Kl$7j% zoiYOsIio)!D`CVeWZ|BaM@MRoiddjyvJwXNcERV>-Pbb;{0GbE!gno<4csA-Z{y(N zZrt1N?W^AL#6WeogN+NkCXEZcUQ5B>*HQ2@IVId~>o;BBS0l?FqewZ+;%j={bkZJ~$+TTOHq;d^R4McbVj2-Ujdcf{7wkKZ zv2Cok{ranUdNO_3J2Lx`vv^8&g_jdKH%~9oiV-i5xnS8{vGb8RSh6#JLT11%yZV7& zJY9D2_6u9CEBsBBLYp0`j%U8Tmo&tiC~Wv#yqZJ@?c*qT<=~?3EIuDuVOgb6MoLaV zp{zikoDnXNT|9>5Rml-po<~QH$r)kfzqK5tff+LS%FOwAjk&t4-(F^nbINWTT-?3f zM!_fgs&_myP~H7IDLL?rl+5Sk7ko~}jX5Vg?hV}RkExO6d_L@AKGu>}Io+C%%qj4{=CdNbeQT1ia-UZ&sq5W94^EjY= z#T0_i$$IYr!)TlYEXBb^J23_>S4&eH_QG^J*m}IW8~XtEVU!Un7O_?HWIFK2@vZ=T z&i^=~yuq_ZBV^Y8M0unyNpQAVzpXKh#>&0I-;tX~1F*Z{jD+4%0enTXf8T;1jrqNg z6pMX6XBytm2v-$T=#jsu8sr!EkhzajFtJ%MI z+$%r#+lu$sjjQ|l>zFsg@F6b)xZ=Igphp)7k%aUEgE3_ z7G8Yn@alNlZilQcNWEDrtLqS}FP1Jd{|@Jr+B*BCrw%V1PTP}@Blcc$VD>e}NC}To zF?HIGKeaxgnDeCYc)WIV|9E7Z;}NcFkBD)w*Tx9M^0~d3I?LOn6Y$giN+PzVJ)GCp zbVuIGCiseB-lCry!ebHLR!Gq+3$ahd`;}(@LxyAaoe_0&v`Hrr_Xauz_$p`L*wz$t zkdn~&M6n*TaX zY5sdkadVq+b91}BsCn-&YJNXOX#Q9b)o%n*#aa#QeXP~OIm7d=VI0Uc^#d<#J8gLUhLQY-wt;E+dNDvt{)HHz&i@xNKy%F)pcQ>FKqKOR&IsGx z^4Ooi(wsLy>`ykAN=RNhpT~|~84>q${6C5NS-*n(^~EHw;k<*T{r@B8=Z|L$9P_iX z&G4;n8z^oPaExpL#|rX0?4;Ws^2&%^>=5Wg`ZjN!!^CrePaM{tz-NZ<>b*6K!4ZKG zbL$L_W&Z^BI&B{T!Y%;lDwZz}Ep*8`+D`cO}=Sntq<{uOVw89dzmVD*Pl1OIcZc4@f+0yJ>ELf#;P~W zV3@$`M%)t*TgnrOl9%DQKQ#lk@2S1cIo!tH@erMO8F4CiO7htSlBx-`9doB9!auWs z`DZ2vItuw(5)_NyJe?Wm?|Ovm5W;K5=ozFPS(NJv?kwg0m`nTn&lyE6!A4Q-S|F(& z!|?SOB^>8!c0bOQU!;~ZuiedYuAs94c37jRV*Uin`?0Qo$sojmDx>@4*PTjLO ze$>)E96ze7iu9mSB3A$-d6uHTP)OS8Mo~q6Z@?e1+^pk|udHL!F`?5tpVS<~@cBhMsHKVEefzZ`;+;mLnTxHgAQ}z8J)baL+IyRkpz=b+O5Bi^lq@8I* z-rVPVC5zcLR^9nD`FF;Up0SnNnf~rmo*sFI|3O&?CDM?mm*`uH%2Zz|n7}aYE%+Dql$qwg!5dWIc4VZH`Y`^Lq|Sx~QYUamE*wC< zg5O9s{~a_=g)TWGfz)~Uw^8hDkR*1_@h$!ZJ`2+!k;?ubJC6N(AO0;BI~y9sPUz_V zdcg3VZM@r$GjZ6PHb}oOY?AH|b;OXqOZ3jzX%zT(O39($&*%7xXO;sWI&uH%%l&I> z!HSrT@a^S(`$5kLi`C)YgU9W1Xl4Iud6Q zd7Rc1wsszx9ua3=^16FO+eXweP4LbLNcV?i$+j`u4m?3#&w_cR<_Zb>cLI-54DZzt zD{t3~7`vk5-?X2vEOcBVzvJgZ2xoARv9Sk&9F26)hc(UFC5Lgdw@l}_*=YOe@*#e` zn)Js^9nx#lNjrzRvh)wGvZ);Nre-Se1V49mOf|7@riBWcmVV|cn`UC;;Q7>HR|lS} z+GJa9s32IhTQ0-(NSj=fi|_q&Z|!u_*t{tmr+z-2&zmGRZ;}F&%z0zWD*u1DHXr@PGf<;K}rs-6q9PhaoAr(UoI|iH7$M71^m}0U_{%g^4uxm&ByP3{$!(- zJOOEzt9&(87F)@)XmJI*hfhvxso04!o2qApU>^`plZ9{6tWcJu$VIEEvJHMXlC3uD zM7ayku(h|_sgvQ=3HIKkDd?-zUfVeG95LJV_NgS-JB?!JPtA69nC*IzwQEFRaKyO1 zotf`%s7?%}Tfu)}U!N41KOOi3`7Y2T!)TXgg)ZGhT2u9Xp(bfWh^+}X?3&Ra`3n6@ z|KRGY`_NEz0Hqau0CjKe1H zY7{#+Es#1t`pEEw8t-O$>D`RSd|KEf-5avSl1>tMOs;>Yln}BlAT`L=ox?8RMKx5r zL!aD4+MU4gT(0P;Qqun0jM5FcE0Q;^zM9{R1iwi#`Azb_#BWjr&TlGG`}xh=H}Sp| zO&k#L9BmGG&ZmW5(K`e6uE9RltaF{1x*xILIIl?x^hl}K;WZ=rc+KbYd5k#lnhulK z05^ZbO`O-Dy=;F_ZriBMC-wY2L;S&N(tpbMPEues#&hXsuG3YdhvlpqhGTlzRd&`W zXgYPD$v^H5J$(~t{-yW379K5PwD9Cjqz%RSrsN4dj(koXcGX-q@?QbwTJ@}u^IKy( z&OfhM|8FAg^sKwt`5o$mb29i>)y!ddGzGA82Sye@8}rUU8&}3CeijpZHsD_dy+Z+ z(|7;Ke|FYG{!saB|M?$3=)d^L1Ae33%H(T|(J)q@U2?|(jukeTjnn6@nghU?y*FfM zZQ3Q5;rkFpk2dMShVPOmB-~_TkA1|k$1cg{IDdrn?vO552<(T~fd&Ax0T-@DWB!PoGyog9Pm+)3KZLGbYyPQ^}zc=(A+5>ESOQ;W%m!&};S~w0`i){9x z1w7Le+A5oU7=2Y5N1N=7=Gbhnnf)4!;{2-7?AN9!9wVgQ?AHoB7b*HivtKI)hw{@R z^Mo8Ag&1B|-@7AivU5-!80v-oyJX~Vg@2Pof!o97n)_GCLW^b6Fh-?B z2}8{9%2n5!nXZE0%jOk!kkDa(25vClP3&veXD*w`yMpZcIm2Q`d!13CeBd)+Jnk_2 z8aTC)P^D&^K!3>pZCvVz8Eeu=8G9C?}F?9Zm$qtFB9%p z{J$3y_V+}{{;m}<8|_x;N^QNi7|5Vpha78D^u7I{H!NBaW8zJ5Y_72G47xmd zN=+T~72&nmX6s*z54*VDOpMTdQKo%ku$uhNO#8;JM!^r-1YUTbP8?^r&{vsp1UAJe z{^xfYzOKw-|DzA``X|mKHJOt4Gt73jZYKnKn7!IR-y`s~kM9w%_J#TUf1CXb+@r_u zBR^u8U@Z)vr~I1rdt%^vb_K8ekKx<RA!H z@fizz%x%3jcK8xfV31AGR||I2ALiOR&3nyp;aFg{-X?1V7TAduhaYxbg#`vVNwjV3 zI!yj1(YEn)qu{Tklk=Y7!d^<)*Bqs0A7i_f# z>}dP;Y)RJ{kL0WNY{}o*vlW};@tCOSKXvzyM|j^Rv+;l*>cBBzivP#(%{Rva%o$QvMxwjI1JM_U4oy4Ngjaa4AXs6DQBn8fy{?lQdXcOXV zE-Ya-bxl%gsG(8le91*x!(ht0*TwfvU2&m;Gear2q5Xj!x42;M_P`FbV;=n3UBG=F zGc_n--=DzZtK%OV@wnSn!%2p{Sp8ZGRXr{EjUm+9RzR9fdC6V2^tB~Pl5=Bn!_VCX z;~JJUR6no-x&)Da=3eO{?I`w^Q9N#M#nUWiPd>AkxOCrP_=E6xH3@-n1*8GP6MdY4 z_?0e(XR#RL`f360lUPjPbI?tck~*w_w7=qv6#i|);X|3oFv=XR{(PXzecDAD!v!_V z8B~Cn6a96(KcbGk#OnwQ^Kc!TE*slVFq^&ycAPCBEjUDJwWrYVqDw+0XeV1pnQEJ1 zk=5GrSXG__!9eu!M_xvERDT!Lni9B}QO9iA=5anV&*#zEW z>YXqTR`=nCYIV#;2{yo`r2ZR`_WSw3f*aA>CZLb{zx{|vi%iS#EQct1T>)ubL%iA25?p*9%fI!vnq`D*DCD5`Vp9>utPjcuoyb^yj7c z{r_{hbi-;Zso9rS91cjd-6q8Ek1=g6*go)^6>suAU|k(_O-=)6@w7ed)QZEd0k~SEMk=Ee1{DK&L2oMoXeCECug`%bMm{AKeQ)JD7ic?7lzz*6``S<@P@VVL#d);<7=FK)FP_W+46u&bC3f z*t>{P3g%FYK$t_M)|z{lCc*1oO>{6z9?w9WTp%Mz-Lm{JpgE)4T<5ioPzGjHm9gL@C!JT1DNZ_bZWzPaqJ=<2-J+`f;Zo5b= zXJa}3zzZVDnuXNu79J;q#ZOvEm8Ay9BS85gc@I64N17vwwgDRlaZfPsfVBhu`#*Vn z--A7RP@vr40*?|U>}(K7^UVP`*PtS7q64lKa1s%%-3V4FGZ{gNzpy|=AIVMLlpf7`J};TIcz)4 z{smUHgqR-v@4|h5ikve^cHvePv3oq|Lm-p{!sbtexsVl_iY;BOy*0_ zoml+lV=t3`u1E~47mT z7WP5gj4aMq+etU3S!C$6!)3o~fi7boiz~_WMHDK)SfK3bpiBNPKR8>_na_&1VF`5c zyMIHTu1rzw*bF}*i;8`H>+6QEr%`DQZY*vsil!;RnsG$a6yTb%e(f$$ZOayhx=N$f z?o6Bq7kv(SJJ?9A7+?GgJ!wy-sP=4Te&^q2ZE~s3WfgsCj!G7m4rSnf?Bm&g-39&s zng7_#{;2rLvxl12G@oo*^YO{xf#WAxKV({D)F1zP2I%*Txuhk&KrKyV<`K8n?L?ne z3$0CqyzXGEw2b#*Vjy*^;X8X(`hVn-mZWk0^Y}LmU&98(4oeD5e}nheYlsW?1&><* zxugp;ykOT1=*@%s6&-r>@OV~CeD=!mJdl0Gc!tL^^u`tSD0rJ_JK}GkJ{`HFy&c8t zBfVkxlqkroNr7auKGiHv-K}!`Xo~N7U(u^Xs?69{Q`hrFF^@%+-;a-9PWE14W%ac4 z|GtteYTCAE>cTQ>`Zlf3f_0Xt^0c)+^)Q84tR(Q1rDp%Ul1rMlj`BLtzYbB(YJS$8 z^^ez=^em;;z{6|ZU-i;5<4=N&_V-i^tzX4T%Z!oXwk8JNd*g~RE7(r79liv}``KL5 z@>oom#6ZUu!?#O7TN49+-eUL$vI#*fRDAz*i{S&_U{|}K{(c(ML2XUnnxiuMZWq+4 zm@5ubpEX_4mzrbN<=|r$EG4}HW9EpKJF?ceo0?x=;#^8QYKXSl{+h$bY$NH$H&JpB zblM)p#_fNjp}VoDpxqZQ8NT4toGwUG^asr{aQ1^Ta1LaYTVzAB$ie!(vTXv+N%zWS z6Ck^Bdg*v}jXT)fM=x7#Q>I)&FJ0649N9aK&;2mX7NM+Z(d_;CkxVa?jWn3|fxkX? zD6rmtGVt>+PG-mSp6rz@s!cEZ&~`)2#)@TGA?E+w9mQ;L;p2I(JxWc9^19DU7BzQ9 z^`TEEY(MGgJ#f;~aQ5WkmiG>wGCnzZ_@=KI+0$KYw{Li)nFD z8WE7KR7p$7gT8{^f!Zu zSwhT*&gila%a#|0?3aFYIO_zhcM7%-7v5@nhFyL9O3h^-1|>;7#Ky$5X_<5flZ}eE zJzqC}TTNY8X_T5WjWpX>#ozM|>Gp4x&{yqI>TM^ako_S=4z~j|R(7H^6g)|x;5&*Q zTt%TCN3YQn$HAqwt+}S2qoHX)*EzmrTv~`fJH!6C7wWnQnB9`9*MSm5~ z^?T$X&W>so{bf9(JUlN~^xxnax?wy&qUd$(|Glyk&zlwfg=wUHfxM?ht0Sh7b^&qD zOu2Thr08p>krpF(*MDVva}wAHb1`oU6ulyr^oput#@`m^aK4qdt){Le2|CJ{UVVY$ zKOd{;O$*6WKZj0KV-GQathQ`gr2S01ziT70STu$a?>9D*ezrYIJ?)5=&tT6i@p6QS znDG0ik=7w5)_(B4XWa|GZf16D9}M;~JGP+X=W}CzNxsXZ_e#8d=;=IfgBSLKQl#- zGW!Q{5n&&LK62Wx>?1Ze9DCW^Sa_sOUWmCMr3Mfi8<g?SS`aI zPEeNF?25c--_PAeLd;^j6~5uOJqf>7jQheN;kEb0x>Ib8w5Y41yzX`@X~A|yx2>EL zst|3pwv~$PC$HNf*cY|A$%FFz)ZZ@X_aKY?%jLsH*x1c<2h8WV`oqGmSzc!67krEK z8=;4+z1@$odHT185C1?W`B!DLgjpD393)ZdUY1rjqs+Q7)TTsOv^WUo@5Na}H`}i}hbY7uQbu>NrKO zsh$(UIQ2M4U%1E_nwvrDzA4zRSk#pnq<%Jqw7IJ+>i4FS7N+x{W0l;~E~sBk`hMRW zxSIC;A6`lOu07DbTi7~zc8a;)gRblMBK~FplfSS(X@1u2{KxBDzI}KtlW+Uvt&xg8 zui5bNbK`x88D9V!!`lTeZ%qLmBR|mbW<|eoDrxX3!nf?Hq$N1Hj%wlShOc2fWU++6 zn%50qLYm@7+*{_KIu5?m-b0WV%Bo2XCX*g2jbgTu+A30mBe@@I!wuxAVPh06+a|7Y z*Tgk13Em^L8uvuY{q0T&{9Ga}SPJ>df_?JV^wSg6-FR2NPwp7Q+i!D(3d%r-_0e+2 zFMi<;z9lYW^3t#yxxBQQbYtlgdeHgcL6i?j<+XV}_Ct8cX%KFCgoCxd4TfiRyh zB3o}$Hpe>++gF_}x5y#MqP}3-#&tySewp$9lt9are%rCLjU)VB?a+gaFfmM%0`{q} z9m{tyS$UQzD`Vc3Ml-tn0qBy?Cq_TN#`Dg0x#tlxX6*t=O*iKrc-mS^KTks(UgyFJ zSD2@Dk0noc=G}f#5ccE$^OH%#oWp$UaVYw2i=81QlhoeHe6BTNKXs;97t%=$O(spL zwx|_m`DH_}C*CX93^8qNaNXG^+lFFYDB*jhBEFX8Z>y>MBa7K$_9bjHGssg^PA3}S zBN_W$o5KH?(r=rlHzxYKHglSXKHD%7{l;d}&y_~2dVREv_esz_PUq!;4+z^Ka4hyBo$Azw6Q$Y`}@as>a|4_PikPA&ol=PwF_)rubc zJ+SD8_>JYHSB&TQJQ*T+*t)r2(d{b)KjJSL#t6UBPCD>N=C0buuy1;P&*Lza8-l;Q zS`69RNUbO(9lC|Nu<4a7>Ku$C_FJDQI=(S%io>LjHu;n@+MHL>p#sQ;?0XgIiHu(M z$Yn>k3^@$_i1oHz(c?^7D(mLFC}s+2R+AT5&2Pb@{F^j|v;=&6M9~S~jJc^b6|i(>>2-t ze;buZ-NnH^-39oJsTaYT%F@hI^gm99J>mm6Upp9izBVrjI?Is(qx#0{p09Pse&63E z3F>cl@U@^@64b#>hL7?7`sjY%e~-!gH;c=R+0ioRd5M9{*ZCT3A8}3H&cQz2PJ5IJ zTk^1Orzw?MaVCR*;p=y1Bh%{~?9=PCM=_mFI87uU*oeNmQqOa6Ks^t1NE?M##0+nG zhsO+GGnusCUgCPr=O%MK=Ssw7Xqv3PHHn=IZZ&n8Tf@4{hRLMu5hwv^Rz;>Myit91 z5uvMUhGusW{7Bk<6Bh&ud6m{J-(yo|H+9rV#{%hE{$w&~>&-Mjh)nZPw)*Hb(#)Go+Rx22rIBg=D@*mD1Kj&jtpYoyDYOxgniC7{mF zAvUo<39AGEmOyF0Zi7@jnQ|lP$Zqobm~9+O2LGf_qFffgeq4yr%O%82H@^wdlvgQG z0%Q-^X+13P^Tfx@?<=DyZ=qRM_XMt65+{>3hA3f9IDhl~#Yv>iCQ6tsP{M-(CHx!g z|A-Q136$^%!^)=w6|r8364sb$i?ezCnXY`ZqW^IcX-kO;u%EhGzC1LEw{5~+!-qBi zKLPcQJWmbVo~<0u^JTHjH!FJkB+|nDv1uI7w`MfYx0NU%Y>(D<1Nv&8+%$^I-)}~o zud?rB&F`=$Y*+N=Nu(j(9_yb>F7LHW;^X`Jq=@nTGD|%;ap3WNZxV~6!t*D}8*KLX zyma2Ln2#?bue*!=d&2EYqg*`ij;LF=gV(JFHi+$t{)Pe)fMx+x)^YUIHO1L$geiZ-r=}DxOhSQJ4JB#|9L|R;AdiFjsuyhh> z_Yoyb508H;&sPhlPci8Mc8Hr59kzy(!+8jlw=dlO5xlM8ebUTH=DHNe)7=u0rZwF5 zq$|_hY^Ldeo#$pnpB7Qy^k~Z49PzwKqP*9__X)g?HLx4rtmqRakv1$`|9Ia1>OI`< zHQcZ166N{A>4)>am^_KJ+rsr6PPvhGg2||xVbcCPiXM;Wa`XEFMIVA^=%MgDNzr35 zHzMQ)D{I>xxdLsgRdi_*X_F(`GcTI*mPX9+|B7hme}>y4Qr@C)-wBlWF6`Mg}w|AOa;cK?z6-_OrJo5=OF_fO>XA1PmajBlBu z`U&*<5i&#v-b)FALla4>nB$epDD-xPY0F~NQmY5wX95#LWHy)cCz6J8!*<7;qA54j z7|qT%rvwaN-`t-_+T5dp8Wc&Z_@a&N4J)2*!`X8|#h5l3HmViB+r?r&!;TbtPRt?L zoi(B^Pq(qyx4=h(UgkG=H>OR7jcQm|^Ag_uZkKGsJ1c*uv34+<1!kAJ&TQXvH*zeH zc|^>9uJ%U$J}Q9t?XZ0q2#3ZN@cRuPNz?+~^lp>kYY=f>lNk7<31C@@Nu}S19Dy9=9ET*mZ(1a5!*2fBiYVQ;V z?Y~{H)!sgsRPW!#Azw#xzp2~PNo`K2ZHUuT+*y7xeNEcLNrgh(5RnQd6-sfF*fl!t zZg#cCJ;JW`xaZh4Htr2}9US)wyAFwa?vj<+hu_udaIy54t@(F#<32iW2<}hd-WvDK zC2Rg&0?Ekh6WmARJ~r+R+}m+KnB{fXVB8Oh`{cYe|E^&q!>$Rj{kmewbBjO;*~gz+ zA3K`0>F$3-d)>#S7=|AL?1JWEIx#nfJoD5eh3RY3eloF8h>MG&f{BGv+(dSbj=PIp zt#LnLS9{!Ac8!hO!mfkkK4#Y;abL6Ru(-HrT;t;=vTI`8UF@11_Y-zaiCfFABjdKP z>*%+&4i_u`qBZ~FO}LMai^Kgk+*{+mzF^INxDEIAxQ}t)iTl{N zEx7N-{a}{Y!zXY*Bz4o|d5A;eg4CCcMG^sm*&vbUxHKd%)WWf6AXDJ`foSU7Ihalyiz3h0 zc2W;?m%DbhQspj@JO@tjdy>d=Ku~1dD;EvV!DvN3VCUt3lU$$b_$^g>Me=++jKAx? zWOxu)!a)5*@_a1~4xnu8FIjm)42vc9v7I_Q4I}x85W{TTk4tfZkE5ycBg063gs9-- zXi|YO2Rmlqqg0s~)tJlB#gvfO{p1AF-Y|@0f3?t=6-~_Fup*i|o2pYotm=~po9M$+IrnK6O1 z^hDZ@`;-Z!wI$GY;DzFOEYd9CzQC*4(FD;QQLoCy@3TbP7B98q4a&{6PNb zf*n~y^&hzJUG)RZ_pWK_pIjAUC?7U_kcsx0eaGy`W-9vb3Ge~=qYHLqn`)o%V~x;S z3?JSxA33CFejX2o-kAWqCXfI0-S_y<&T{)hc@N zXWw(sQ4kAE4Z&X9WAb&xjzB!^hNFgOQ8<>HVR#k_B*P9J>*UK5%y@}7XO!Xt%Nv;v ze_i?=lT^I>G$%rbbr1Ky4(qVkI$8=jCL!={PTxAZ&Rj>=@pUvI@X7?zfDecAei1H@ zt;g|!@zjp)xOejd0yVWU;T^i ztG-To4^QB70<)Wnm@nT04eV^=a>FD=F9uBsRPYc{!t(; z%>!OhU)*kq|C2O{VAKYdtdu5#tIEGvFeAD-kHN?;V^E>0W)nRw#v19q&~gMM+$hG&=&x24tU8} zQyNyyG4X#Lp|^8LdwVx^HZA$W6}-&-aJS`=*#!uB0vsDQVzAJ4~-_#R;HR7HOn`5^seBY*BVMX$g!_CxUHO;z-N z!!z>3bDW~j4UeJe>-!Ms#W0dTf7S54Wf;j9AGvb;j8c22=?Al}-(GQa$Tp}nWPfOv zjCDrX=B+!8{X{0ItH|pfy~prj|Acds8qrp3U#Z9e^5Q&q5n^%*iHaV^`$5}aFa0NC zXPWDlo-Ec8Zvl3X3*&em$b0o7XUJPZsxO=S`pnB9wJw`9@5>f72{c{(Bj~NyU7@!Y z$zzn-)i8Zre1y{n)Bol4?ccslFPx~BWi$QIcX(S~4(Dxh4&P5P9Kjr}&x*@7-(`|I z_;=j*$ew*|JAcG43*(VGf&|^yI@wyHyCgv!agg+Ph}NAuTdW6xwM@WEpA)iII71Ap zedU}`64`166ASWiHfcw0B^^5Hj`h^)T)^WMKXHh3obleCO&YE*i=(Du-&cx$BifF> zMP74pMxUm%3c{GF?f7=pUNX|AAN_>A9fONkR?v?@kYpaRcU4z@|=xoxCAHXlB5BYF!2TW#9Pm4(1|=00&(`6vqB8O$e6AiZdX=%6^*!N(T*j7PFL7CQXs z9(R-frx8AM6=weri2t?4@U7os_^xN897&_2=-c(6b6|Yd#F2iQsHNsr9v2lde-e4! z+XdQ=IBxmmb>Ay++en7pdjp?8I5%-b(Uh~v^{J;Nt?qe&TAIu}5I?Y~@886}e}U2a z0#N~Ern43*z_{<7k)l5D-eH2!Haxu7e5TvYTYq~!f}D{Z?a z8kiKx`y;U^VkpG$5alVqs%vHam=Z|AJT`rgQptO0wlt#l0V$;xdBT>GpE-{REX*eD z$)AvaSq$lqo0z%QY|@rnNDtRpIBUR9M7L%2*R|O&lCO7`X4%5++#~hJ;MZ&|wvhgH z79Z#1PG5i$`n~ zMEQvS2Yu}sNeY}cj z^19Qqxvw7Ldj@|@a?rBt!C(O`3l8zRZD|clf(~ls{*y@o5%G(&NNZp^#iW2Bdfj`o zNK2Er4Rv!CX>7fkFqNH`zUAbyGJDrCg}vM2gglSf5Q={Fdbr7oc+CU*)^Ykf@)L^_J371$p6(4#3hXL$E0}OU*%Bi`9@MbrKBQO z;pr;LKN~V=RkYt&F6hSNf_| z6~)tu%_4a|6H{t~Qc8f$t-;i}N$|SQIZ4|E-$(+!;)undRf;0DNu>RbVRYid%Z3MI z9;W+5O4<)ht@K>-bXN~$vJQNkCGxs6v$$OeV&V1*CwOj-ZIc-W@xm&-;g z>wA_L>mQys@{5X<6RXb~p03A>^{1Vry*WN%thqYro_OQiVzmvm#3KZZ>Ru5GlaFW)+?8~fj1#Bezxhi6w_Vki&o2P_eSLmE) z3mMC;aQ+C92qJb)kEcA{rl{kq^noaZ*@Z7bkN+tmgpr;(wGh0 zk)d+%z_ad!u(7z5s|N3}En_}Q@uF^Q9x9_f!Ctzue$_+OW2IL0%hEyWZ>?-TA58x; zSEVjemyEx%94G2oJyf01!1Npk)17%Lo-+im`z82Y3(RbY=|b0<1tHRw~ag*B2UMBdaBKFdLW-;Rl@He-8%#4rjBAuWfx+h z-)X6YUwcNlyun^~aDkc5p3lld{0B#;wXy;K|HWFlDVjX<&2pS~tZ~;gzrKWx{R!I+ zmQLs8rKNjkKu-Z3EdC8HTi1o3^ZRSFGK_^RG1X z|0C}QoX5Uw)`Pv@#LLCMDBISlgq)qW5O}O;=2sS2bEqP2%gNw@11BrC{Np5O0JQ2@ znBl@0Wp6RZ^9Ok<>OBtQRsTL8_g+O0j3@2fNJTe*2OUkG$A}JYziXuWQ=)^PyYrZ@ z$2nl!0#`bUJRvDLU>i~rvX?7z_GpTawIVh!_Oh^FTU`g58O;225(6kN20lFtNbR|~ znEl`TW~m?l&)Zg0w`$w!I+6XG#Qrs!4Iknf`iWYCl0AU+_XES&-UWRsVgs=CIJp<~ z0VeSO8b)%sZKuIws)w>R!X_Dg;LRX)**NAKc_>kAa0lyu2|ds|uv6U)KekdUTStQ5 zaNE_R@R{m`?{LC?hj7aYamw>`=|Td-?gifpf&QOR)+Y!Fh+$B<2EP0eeK~7{@00Wq`8q?aA?^Z6Nw~>1A`jA20Ur_p67p{eBI6 z`39Hhwqn@nih9uK)Dfp0%nbZ@nw{>(yJ_iRP?W(w*`i>c3sO>@z1xdYcD3?HfhI`Gw3 zVN%TdiHS)e4ZE(*9CUQ3GxDr~U2~D5pTqN!Hn|MX(-i&GIMV)Z7|H!MpNYK%)1I#b zUO>mg9D8v$@H^@U$)VCgD)2nuH^;_l06W^Fs_UT)W6*Txr*T#>%{_(IS08J-=4*|p{!#T6?Ud?N1OkyoD;GU_a}If=-Uw&iuJG! z?uA&=y;01b+l@6dSY*=h5k-G>9BDR5(ZNUT@S|TjCv>jVs`gw>SEoo19_cXGk7E7B zaaYmRDbl;pOcg^8(1??${eg^Ad^-vW! zwrP;HGjC}P=1^;xe*XlYzT^_Udt`|ov`YSj)4yOb>I!1m@cB_*7O z&s`PwQ^9k-)u4vMZTr!e-jwyN;Y=n;> z=7PQU_7mlA#2~t-IQy{w(UdWB(2t^W;TyBggxQX-{-m(X+$jT`NS4_n_~N_Xa@^9y!3%y;ZD_ zx_Z1ZALf(VgE1~0#KzlejyJ{~G*))p$p0~T`7w(M%uwhmL&u`{`QE#VZUtSK^C6gN zQ86blAF_~7Ci4?ub0TAa`Jl7ChDH70hRFGl5;!?PpP)a|lgR^`D-%NRREU&|*pXQa zD;T{YE@33SVUP1KkKHkg3XE9nL4H4$V_D4A4G-#v@~|eb*h$|f&$(k3zWyA89eql# z|5oyxJEG|MR#H=ir2TfmyS~Tx=482K@3q}Zp7L_eug*Ix@`d(j6zh21r z)u_PRH;{G#m`_sio97#o{ax>pj=e=U!;KvoI4Y$EV#bkHwfH6%`n#(=TD`E<@CA#$ z&*bIa&9m8gD0~$#C!b{gEGfMyQ(mfzw4<*m=63Y(N6?Q%$rq}l)K-DEqh8Jd>a{MS zUV7tjf7b?HFVv}9N)2G#zPthTl3l@LQEFFpl=>N~m+ANO#y$R-LTs%~velw~KiyVS zH*4FAb%vPKdm&cQSqv~yk$(+ZNFo>BLtY5}om4vUNgG%j~bZ>J_~R&qwy~v*8Vj zJ{`|h`#8qP`-)zGXU9G{_*Wx;0&rI)=*^M>-6lOw8;krnZg}tJ@Ar-EvTZNGC#849 z6mQ?S0^hbNm;0JH%&`qsS>*GX7IlX?wzi0|ozBK~WFX}RuK%l$ir)-nrue(wCmmzL zb$=;L_xGPSkXF9fIcj-9+6x22Ki?7NCS z%1UaAFsg6diX?k)lY`fPx5;PDS4XK1VN@Rv9H4Yj_(*^|j#xvkl-u-~r$_ z4`QF>xRuY9oLT*RusvE`#`xff-Vsw?ykfotQ^?adR~%9D`F82LbLFmxx`i5t_`8;W zcdoq5>gI9eA55|l6nKOP>e+9qFza9MPmx?};(e@s8z5=`0Wi-%KJYJ4r7-2qBEG72gypMrQvADn$x%X<#?B|=_ z>R&RxSyOEbnLLyAZ*XTdka`yZE#n4uH9OvgY=|@Fw?-AqYSj>NG;#kZUKgVJ|+QjkdL_a_O zIg2u2!_NF!lLAj=lJ;~ax5a@BjJb~f!F&t%(M^|(Jj&60vl{&hjO!NC6rm2u|$J80V4xEqK`8p3dnBk+8TGdB0BJH6> zzDN09zl{>h=iyvduZ0<;CBoOYR?uzVVvY?`os|?yio~pl&;yJHz10@$XBwmY$k$e> zgn~<>Luac5IkLX-_%A{~G9;5Uq>b$Rm(D{@p}>B#pOK!~>cp4mQYJrtX7B6Y=XOEZ zADHiK=G79BHeB}U4AR6*W^c{D!H)ucwCFb`22cG*9DBRASntW;*xL(<5`IXO0G|Q= z&tADKiu1i1U|w%f^e-~Z^&Ic3_Q^Fdp@OHw|5xqdzB|8E^iSD;dl*hT_BRYe1NC37 z=m+o(d0#RZjx(?O9=SpYgZn|7*cv+-J?xP?E|~lj@84DQR=ls;Cp#^n z0{Ak)Z;9uzkNG^FGxLPqSXggRmBD>l!tD(E9KDLXiuTGut66Wzs_+}CSM++b{4%TA zcD#RI(O)wA1kZ9`U+j}>ETMeFr0Q$mWg|Z)qHZ10p@K<~|HB99ec)JeyvXQqeKRfU zJsG5pHJ>xgE3mn5GViBH&s9on8T_0N@8Ktt89^sOloem1FUlZoLijyo?GP}< z_sBM#%h>bHzGd$n=Dzt|MSqC(MgKnf{tUkF%@z1wH>^)_v-ehYqQLnVc-r8Ix>lHV zEz96%XY4(6Bj&kANe0J?W&Kb+RK4q0hOeuU#U#=Yw`VxR7;$L9ClafNSm+db5{xKvjS=JvXPIVJ|l3ODW~Z}f*4KA zheQb5UiIe>o2nrh+@=b)U9hQ&#WViLv#99S4AM>-M)I}nfX z69;tJT5HJRp*~)2d+kbFAV(Bzez+bW8TLR5k1_H|I%$S!4-{Natz`>Htr1Co>1NXZ zD2|@$BRY64rbG{xkP3TU#H?ygCk^LwXQhO|uDG8U?h=cdcZt6)WY}M(z6Ag7vUq3w zF@sve@td;KNrSF6D*&6PglpOj;p_-Bf@{rhINyaW+|G2;BI~g>oiylKkk<|Ad`vg7 zYhqw~8vICbet+%Q&Rs>^mKN*waO7R2$T*X0i#74UDO6A|l3YKBWY8e&2OI*)^%l~v zu!kB1-8`3ju_T3ivbz0z;fLZ(d%8`~S;d&F&F(xS-IK&}E{sM|-- zaN7e5ca%y0RUnK4)@VXtPa0_h<(Ynw#|nha3GxEIBjO@EO?(!|VA6qa!DM>!y74W0 z<($wWF{ZYBF!!Iwd#qb!1AL!F!15h4HH-C~z1E(lw5AKT?8)Z%T}=~Vza{P`MC!0~ z&JQB(ThN|c(s_HJJ6kB)YqQgp*4qV|nw?Iqeb_RpA~z8g6sD8L+C*MAu$sP~-haNI zXV&9}G}7vS^zzqcxw@ zzkoJOTewHlxUbr`Y2W2f*QVwESg&Dv#<}F2v72;R!^k0$)`ZM>YG;>UcnPW~Yp4-9nKNoWu zS1H!tN+WF^;>=t@M?xT-6dkmy8-{P5Y2SR-Fnkp^Gn@8;iZ8fNUnCt=rBMP~OU5Yr zQ)t^4+_n$v+Y{g^*I7GYlZ5s#UCLS|6pW^ptcUm+=7b3fJCnq|{)KHT>%zS5oRkpg zK)fEw7O)R43B~+Kk!Oyk_(9Q%UL{av-L_}y3gEXSrS#rEjbmkn?c27bk%qY6!SVH} zIKS(8tv=NztWE_zrm?fUaBQ*>fyOk_kjFs(&Wj>X4Q#D17~6drz(~fNPYz)1p%|}w zMjE&K0WI6@pu=4=$mX449|61%9+%YdRFvN_3Rm(c*$9~3oPP_jC87Xq!e9g24LdoD zqNg_TSnS}#n5VGY;{3*Y=z8lGVgX!j!w$RfEe_BC!$o1Sn179VZc+58bB1rO`5yLp zFFHuGnDiEv#_X{Ug>8_5QQv2WlgWI7*nbzsTq*a&6Kv{8zem8haofLe{$2-ZUpsiZ zf3R!96+DLF$RfQ!x*}Xnv$nv0IY|4$fqij5O+wFbJ^lo`I~!pOhk0|*!T0zN;A$nE ztX}ti2OmcRxU~zT3}ZLy*A@FY@CZe_oi|Tx0UlrU72diH-q`N z(-MoF8Ghc5>I|9rIw%T~?sp>geYK=&K!u;roq)w6JeU7`Ga_ z35*@`^o&77V$G|jl!&NkrkVe|0^GSuD!QA0WD{QgRF36D% zO8BR?b&=yPI!MFVp$tg#q)#b<-((W|tGIIbL{Ej_m zl%oGSe&F>mlFp7vLV#go_4yi%!Fs&awy97>j2ZX>oQ@~`D0~23eAd1Cj2W9H{$K0Q zrs_F3tKS-VRu8|#NIDABPocx40W~8~e!yvy7|lTkT^=n|TI)6xYFlmIifV zt%uI^qGY?Oy(uA%mt&QKcdm6ikH5Yocvxt49(dLr+$=3KW?SVnFV1zW>YCRK-`RFi zZF*Typ%;XoC3L0O$B?(ZaMw-V88+`Nq2OU|e`(ZPWTVu=WCo$8)ZbNVQQvy?N;{fA zj3Eu@YuX{;#ZSQuE6CX_w7$wnSv8~81XUNo9c%o7k3UeU7!r8R4cvZL4jjJr15 zzocA`Z~Ysj$q zAr}p!6R>edI;Wtt+P_-uUieG^SZ#~b5L3yt*{iXcdg5Z63Y#*fCx-n~Sbx0GrUL7i zz28W>vr-9lEU|?QBZ}Ft9c_yCQ^w*?#-8B-mc9#PGaa7=DJ856Sk9RkzfiZ3JhhnIp zJdrAk&lw*0287=)8XYPq&!WoilZNLX=%d}F`p2}%Ju^cEMK@CA%5#QiuGs&7z{B%t zJ7suY6)7PwM$yX?>BP#@h6in6v@=YRd!yI7b0#!1+POWBkKepg2K*BaFaM}aoXbMc%X^`8fo zTGizo=dm|6;{3E+vh~*NC3fy#Zr1I5eUyB$G)k>A>lS%tpUdi&5cps;X&15Y7jb4k z%->ZDU$0StZu7i;%ox(@ab6Gn%+e@z>uWft`ktHstUKuF!noj$QhvTzekCsWMVx(M zesARe0-qSz;5}x1@L;>hu>3BM=J?>}lj~DIHSxhy$?Ja9#7z0sXcOa22o=-`lv`w_ zZQvEKv8xcdjl=Hu$b+$fUp#PBo*PZt|6VroY*yO#c}7iL1$o^G>Gi4SrFfAb2nf~wnwS=y=M4WJtJ^qW{>7^7?{q{ zJhx|aEsIX9{H$-T=~=^+WxadX9?JRKf1iwP{^(@Rn&T{9+%s{{vN@Ojso_zMk%~EG z1#McHetung*#z}esg>#a@6Zh2|qZ&jpX1ze-da;e!}YT5xemAJ!Y= ziSy(>j5yeBU@ea)@9;0R;{yjBQYz^jI@4pfJzZ|hO7<;|{;7eBY`Keg3 zHP~Bx?f*)x43Cbr`E?f?*RvZ8pG{=z#k#D8F12Qf_(YnpYlhe2oncg4<+G($^|Sfd z+j@rwC9(C~%;MG!L|d0;+=R1yR?eAP(kmW(JcRiO>~55CP7+(sNTmP%D5;PaO5QZF z>r125|Jq>qVAEZ5GWv<8HEZ0#;RJi=b+)}Oj%zBCZp^gFp;D`wR4VYYr;Dw6PH}6I zm6v%In2!%G3o+dEQeLJ$U2GkJ7>5fab^j5>a4~Vpm-h2xV32lO>r;{Lu5dk;*q;C< zy)E9X#|d5!n?$;iV`u#IflQItW2xABA-1@+%B+Vz8}(Qo>S`C&?skdQ+CAtA+uCOjIoE7C+3}A9C(E`RKN&0%bVG`fPnTNNUx^Yg zYqQvTe!tRMZkBa%I?8%71g!t=c8I}e8qpJ9z<_Wr5eW<8FHt*2|1)_QZi z&ksR89u2XWVC@2{$LV8YYu5rkXO1l(^<~%y4JEC6L9}`lGDfVTQ;OH!YbCAwEk(z_ z8#Wof;IS*{dR-sAB5!j}h3gP>nEnp4i}gaRN1J)tkd?(+86f?r{`8y0)?m?xJbh8I zJ^|^MUaxFEN5f+tEdPL~%`DbOBklC-rR8UlVY&@gnRcSqVm%INrR$~T``7S%iR zX!5+ZiaMKCmG5Afn6MjrGF-QK)-L#?`^PAH(T#Ls(`LhixdPjC+Y}}A)!wy-vj6tq zCl~$Wz{w8}e0>tQH$DHp=1|Xp=93?6`RL?rYrj58!foff{ha65j>P$pMZIa8;Zrgx zAMaM9ouyIg|9*izhKUpVT>l&n{*YR*{x=*I)LS+fKINF8E*nW2_yy>e^SUTiv6EKJ zFfwvje2n$$F&Dw31og8Q3?Fo1N*=ZJ{}ZjQ?)xWN{pbb5*Y&*NOUtF)zJC@-syF=4 z0!eLu!SH?kJjdYbc&ZXnVJ)Sp%@9}J7%{^YKxyRc;`WS%{>f@*q`&7dbB^&LM9CVoW z6|)t6-bjAlgT5t!nj3%(rc6^ujU)}ekO|wrub;M1OVAO<^u3$OhmT{d+9mbAZ8dew zNB`v+&@a0|Yc*e(m@`sBVCLYG(3&JZzAtU7shhj)nL0yE={-92r8>-|jU%B;O#ZHZ zP@qa%e0|;a;aZ)xs3P>}C1d+eF}@eLM5htoFRmoCdJfld)>^oq#uM9C*9qISI){|p zD^Bw0c6qssq>y|)jKs<YyU9(mkWF^; z0ttqfKtK=zVKvANP>ru>nik(`g4&W=l^3nmqGchpT_I|&u5QFwqNZ(j4K~`)22D$p zs2fb%NNG*md}M{RT}awSh_Dv}_xGH+v&l^erhk0D-`_uLERA=op<(2cLgPcZTy6ZE!wlXR-W;7vTw}b%OGQ4`E+q zKhrl{t!RDtZhX;2-W^%b=)3V`pIPUo2j9)R*t;WZa^$*;lrhN)gKsNZKKi!XZ{kzj z1bm8IgioRFvx!gPUG?C8(3;Z02gg7?NWf9d8FQ<_>n({Kpte}mQU~(Rwq;??vrOM< zb>lbxS-PQnIQ-r3Kd`KAo41gbPvI{3&eCTqqS62t&FX;*_SfYLJtdc0aZWmePa^Hm zKBp2?$1`ZFgL@f^db(cs--TzEgB;!4;F;y`(@c6SIiQ7;%rRq-hM>Ny>i!7buL{)X zeC`deZ;G6PeZ{ZuC@Fqw&!*5qp+!H!yD4oB@ao6UnfxVRXZTC5n{D_@et9w5puU*~zJ@u97C8eNo__=`A8p6J$UZusVzGhxK+_+zx?^(eZ_`H4lco55t)3Ehx^a%2 zjA!+m*>`&szuWdg_y<`H0DI`1Yyr;U0K|Uw@v);yjq<>p&X#evNizCLNAG?1#xW=Reb^epU6fh(P5@oX1~_2cN{w zZDMCSr}@la=qZTqP6F+7J~OyKk&EK_4#ly4k$UO?q3i9hs&)UVB&zRKjrv}=?xJki z%cI?OYVd0swau%ZHY8AeuY@u99KdH<7pKmT&5c5l){S$+ng%{6>TMkZs<-9c1kvO> z+J<$uXx(!ys)ly*cZ2#&weHuBnDDt9)MLjiYVQ#|k4g<*rs@7+ozYB1qc#=16nr@i z=WSXL?G&7Ke89U&iAo!UXmTNOn`2b^$Ke0034h)2pH)5WF^hVN;qw5}=hzs0c&plb z%)lqXjE`q!G`6-sPVq?&Vq6ibzq*p?uV!&>jB|-NQT>@DMcXt6rw3x+xZN`RovxqY zJM~3%Kh+z(8`OQS(e>RHt1o07u5alC^?e*=w8*y7@BZ|dI=_+zzStSzVzlka`38%Z zkP`ecEju#SFHalon|2A(26=BB_)so9?E)Xp-$lE0{{w{jJgA;l&(kx7#A=2|uW`l^ zSFQWU^6l`Io{~ zvNe&exz~|>ku0Wnh&HOO(SCWqz-M|6X2tn1`Ea%F_cGsK9)3milnZ=qm$WVO@Y@O_ zuPU0C=c8lJ2dc+AA3zzr!3Dm@&+5)k<8KaN{lBi${Q(#1X!#F$=e~WiL25gR_C(0* zW3nCIsYbI_x$$ncgru^p_InU{zBjT`6Y&*MU*ejp!^W;DfyX; z-7VvKxOJHt&PfjFuVSnyPVI)J1#Oct9^y6{i^9wC)bH%4@v8%#ZJ>UqPWPkC?Af-x z(6g-C z!Sgn>!$MsO8`@x@JZtMa&TN6vj&#l&S8HV?r4R8d!g$bcShey?lmObAVI4@n)+F#X zTxpD{x@{|?_qxE>@Ch3;oT7aT=L??_yvIfTVGQ7UH^T+KIXKqN7<%Lf36vI5J%=ml zyeWKI_nYP0t!VF=^`1KvFy_n6F7RDrF16FA3@+=5nus)^^EAxnbPWJSDd=+@wS!o?J2h zB0s6um!NNLq#fNyG8%=qt&C1{fe-k$W#Mg=g^^iz1|mNb0x{Zr;zayKio=u`{{3#c zmqh&UG~=}rG>pY)!oO?UhC<3Si_PWO-f>v>c+9>E=hASzrvsc?_$7U(ZFDW8-)X+N z+$qp7_S!IwV)93tr(_bf*QNT#G`<+M(aJi&Y_#5`zOt#lEB$RpTjnL`qY!14KO;TR zPe0l~p#OjRe88~Lx?RzJPoLkVzOs?mAEeLkyF+NR{I;UKPoGEl<-7Qd-zm?CrSe-R z_||Af?7p{Io`iAzb}HJhSzFTcMq9shf^W}|?xa4i4{+*_cI$rJkH2|NcmB}{zLb{? zUHZi@8M^d~UNUs)lU_1(>F2*>=+gfprb~YnEPk2;2cA<8@gzufQV$4fXCnA&X-r5X zjnWKbmhGlG&y;qdE22y2J-~~K_GGM2x=!OZ55I@ykuEzGZF{UQmm9I2N9sP{u5cS` z-)1M;ih$!iGLnyT>N}=q8r!YF*k`VHg0Gc;V;=!W3mM%H^d)b8rt4jr@!nc&2f%@G z3|z#B;b1PiCIR;19j!cuHdOwU4f*pXC-}+%94C;6jcp5KCSzQOBt^T*3BD7|{@};&Imn61L^(QopYay=LH^}ukfG#m#=+v!dk(_#sep$iHu zus0v`)+^c+C-{CX!d~?Cgzv9i42x}?0h7hB*uvnK^I1XZCvsVINyY{J9FhI|X}NdZ4atVgwQHREjd}l`;j;k8Fpa(W zu3JLg|CkLxR=eAKsWDeSP6Z#vB|)4H)B4||^WHMf*rGlQUR1P$wA=w|3vgk%18y(s z_}{K*Z4BRHe7-`_TIutM4L}R)ckZ0%lK(+}l%wi-*X=#4FG1bvvGkD6>PrT6-HG~w zqx0I`p;^%-2U*N|bKVjHj<1hHuVReV(x+(8rGjrh0mp^(AK`0NsfJwoq~G8-aq@93{hnXkaK6oqz^%OFKST2gOg3NUt;MGr_$2+zIhF#BkMf*6#u<;8qNchH{Z zJEPXr5kC2g6c)=D*QCvg_F4+~?gDUNJeSdZ6V#t$-_VZ`arQ-=yVH{i6hr_D@ZR{$ zQTPaP*hBE#IGNhkqr5k{TKD657#%+XEZ!a)p8_o2YH9=PxUCZFNDn^wyzVdKjXG%T zkWWFqCIx(j%w7lAm{Dsv+F`w@XfazL+#|0zg?9k&yQKs}Z|9q6PssAO0xZTp(y=QW zHekoAb^qx3?+8|;81t~tVaO(4^k=o% z$P*~fx?Rz3NV$+_?Y6?kPc_`Tr3PPdP+Vaqj}GKisJ~*c`4v?r-1LkX~RbA7iQZt_Rb|KW*a<~zEjaM zP3gHQ;HzWrlFxN2LyR4JcBC(#8ccG4Pp?GX#Sy(eJlDx(ao^{d;=V_C)U_l*JWu5D z{Up%v91+hG!~C{FdZzf9q>gu<7`Yo%)PcN<`EEeFCp=$z^=|m6ejR-D@St&~gL}R-pSUCr87S=(XUPa17@NgqwvX4iOa zim^7g$I&)_Gp5Z49T*S6(9zQ?4c%08+_hnU_@;NhFM-sVcIS2cmAfA%rN5K8WoTp1{uQzTwo(KD` zL4A~;E>gFg=K^^4aXc9`{g>cAUJ2^)9MEF@#8?H#c%s(-7@)lE z|J$%$_Gn%5o1fPG=sS0;-`rR%E9%?NYBDHo{lA?360;t zVm$mT8GH?_Jvujk7jO8)w1Otxte{SGR9`c3J5yurG#Kstc}zQ1$>37}x7fmtQq?^a*BRD6ViuTYYTp)64MYQ517ya%h z;5N6p9{X1LjVS%bWAxa~{(WPvYV2d(7U>T<2|U3`}EVYz-Y_7{6;$;Ox4| zfoNHB;Pe_tU~qLx;N0faz`071+Jr=Tj;{M>E*KB#(OeeSD;tb>Ho16Sl?NKip}91E z8Twn0f|FmwIME0bb?Xk@fA(%p#dWLrLGnmN|C1%&#>P#N7jfO<+^6p5RJ5mv-GhJe zptA2#fG&5=BJ!XpiPs!A#zczsg^2m2~6ttyE$Hg2j|2rYUU??xRlR}s^3 zvk>#jlGRlC?K_Hgbn=LP!RU7k8Eibg zfuM6JsHRIZ5NE^X#~gf*8_vA zzZN*XrZf;O`)c6qx{|=q`kMp#0V5XBA150!Ci=t3G})2=c!J-XWZ2XUJo)AR`q7pI z`7z4S7xLt^=;wIPO$Kv3Y^?Kg)}1NPN0PN~+rwx_5C)8VC82l@=A&g1TT5+GdZAIgdDDoBJ{5Jl^*m zk=$o0C3P${dH5;-Ee@l5{Howo(Tm7@B=3%Wm2M*S=sc#;E!;jem@Nn}+t z@)~H%=-t&FfiN$stuN?)^kaeV;hj+nl~q!LM<$`(ibaKYK>de(96DWVq7#_t#C$-F zM~B}{nwSpL{tG&w&Fts#4ucL~jnRR$M9M^Jr;Po=zWk8&rEwDYP!~6HL~=L$^oNHU z5??>*o!fcRi#~*tiKf3Qxg(X5nz9zu=<@g7-4HEMDi0Laq5SuOqBX>^_-Z@X1hBsK zFX;Z`m6A&JaCY0U&XU~U?b#IhDz`6`@Ki~|Q?GBzy^L?s%WOuy(})^5V%!siZ*N;h z>wVi)Z~WJ3y|=z#=nO~7;wYYxJ+GhiCjS0p!&Co08Cgj*Jtxkn?^B{i%2<70W%a#g zuCJ8V_mxK+&z0vO8@@d$zrVUcB1LWSbZ;ZDt_w>#B)F0*B6xYM!gmB=KgUvpIt@m<+JBQX(Xp;pLYQ) zj=YMx0v0v&cilhq&l>}~`LsUI0w_g4^!kIKMfP9qPDk65QwFcef5W@WpAKqlUZ8)z z1}uLkeD*5xNYflxLgzqgP^LTwf+22X4xDik!}czNXu6YVI?jtqNj-B!a$`IdvTIFDnh)Ls>-Aa)=h$qG*v> zMAP-efW8H^@JgP3uWA24SpkCKtRgM4-muvW=MXJy$354GzuO)=_y(;-+UM~_+HNkT zuZ@RNJOjjYCybMWv2oA`0`6&dpNGJ1+;p+Xe4+uZ|ICRDC|t^gN>Jl{UA2 z1<~{ZoU1lB+6?Gd6V~5Jdpyr z2j7u<^OvHml}n=Z&M7v(aITqUupB%1!aG?^&5R;CZji^}IQ$>nd+cmmhH;iL5B&s~ z=PK4id2w>vvhrTf5y0S9u`;5!(~N3O9J0>@4`o37FQ1WXMd6rR}N+T zQ|m#C;J5i6Yil!Ty-7I6+o^nk>q;)({T+D^;~W-5mcQ?A;G+e|7q|B6ezXxa>`g~x z@FLs9Hlks_q8-F`uztJ`d{xoj$LAyOxg&V5_e({47oV{`eBQ5UzfA()QC)X><1Um9 z-%1*h4P$(C&`C5L2cP~&FWsi=&dZ&b^Tmf$`5bGjezlM#oM z=XC#N0FLD6bU)r-;GBo8ZH3{LC`T4WBRko+;{~+@&$P?f8FrX zI??bSI9|UVO&W>$J!yDJQ4kNvwNc%UYqx?hT5wLVz>oNUE$nBL3T^_m~;+(v_Nc%LAt%v7y zDofGyl||a$FkSC3(sBL6^t>Vs=Mi21Fdg?O)Yn{*hWqM2BpCZ{I>*K65{%VGpK*?h z(E_~xbFs8jl@is-L!O56#aJ2e?Ld)}>m-y&Gzd*>pKIf&Nbcf-Y=zSPvzlkNcuG-+BcCbsXw!L-1pOz39he|9J@P z=RkYwPH>+AXhwgU*dBS~c_vpngYP7QZ!hQE+00@EqJ0IfrAYt%_vSCXm_M8&&tB+1 zOKN53$BBw|T_X6*vFWZ(9LLYcc<0rwQRmeoHm=P7)$n9|M_{yV|20WYS$%K1RpY4l+$mojVzz9Ny?f$JU`E5JJ@RscbNUl_|k2lw$; zfyN3rk)deU5@G}6v0zc2FSx=G0TgX%vw7fvpgzezHwfQ^e4EF(A(S% zr}QN_=21_jF#&wk7dhVD^F+n(pv&O<+=Bj&+uX&dQ|MH*R}#SYG|EXlp06s}DLhLx z$!NP0z<26uMSGAybHx}LxMElaHpV1f6B3N`zp@0pn_C?iTzzBU^qLz2(X#6UXV+a9 z7+QaAK<5QIPLrNBcz)kAh92S+^dlU*v(wwCpU>n`ajgv>l(et-Yr=B_YuEZy3i?TSnso7oeV$UdexScAYH{EsG1BUK1Y}TrCIA zZB7WBTgj_~ycqnP7e@Jeiqe?KsQWJl*P-9doD~@3v@hF&<3A;MGQp79N=b3SnRQrc5hH{!WV1|RxC#B_|o4waz3%BAi!cu-2Pmv;p7!H|8<{PU{7VYsOP+dBl{ zJ5JlO^-Vjcm*$h=g0Xd1j;R~(%#5`IwCPAM$~$fd46eRDaC*&kfoR#afwSwb3FwtP z{XWg-R~KMx1?9XxT;~JBb*9of`*hto_RbaKwS;gF?=)iJ;T@;M+Ox`E9#`)a^QVPp zx5&rKfbSECQqVRDN`HM9sL@m8%}2iW+{rZFQ*s;el%S8;u>Hb3!-sHskW4ZBK`Jty zi>3y@ZbhGy$$d%^l!iFPowbo{ti!lwFTlo^&+9bqYWn?3pp4Jx^PJa9i=1ss@%;rd z>e*+|GwFZpy7R9XkC#vGgL8UmF|W97@4(H=XTZjaA-yzrit z<7V%B5%&$nTm8FI?^gmxxQxEKFZ9xPQjPjuGWakJ>;D+#e*yKCQit)k%iw#M;a+ZI zxT~=7Zx&GR;lFye?z~=F!7Fa;2aVIF!p7|LI_(!h*@9EF)Q#9~W?$R6k#^6GR?8C>McZ)~_7VE7A)Z~czorD1laxM;xpbOO2~OwJ7T%K%`@XkL3FupR zj4|ofbs?bNP274Vaq9)K^BdR`es*i&G2XDLM_I)3zV1igIn(FIe-+aWyAUI<^?l@R zYz|vNTO@;TsR&EHI|sCiOO5q2V%?oyv5mMUD=1<3GFV>FIaghXcifKXe+Wi z4zw*C=cYC!9ME%}Ek6(gTecDRmh+atmZQYI51qN4N8#uk@nn1LyIB<5| z)d8J1cvSg0eJ{?(*cxHRr7zy#IVa-q&X)TqT4oKLULyqtSK9*THpd0dRdVVXUI<2b zK8W$1PcxoQBna>lXo3s&A%4af*jAYJm>9_N5O>y)C6E;+?kwQkS*t(;*|Q9)D+@11 zTQgme7e4u(?(e;H?DtIxt{Owjw;BHDHeVYUTzyU8^qS&8wCw7De!$S5FnsJ%+U`Xf zV;plD>oyL2`2K70;KTHCU8l7FIjt`x__H|hWnbX4)9{UWR@eRLyD>U}uTEe5h_6mH zezdR7C*uuYofnHQjBO$A`=5enmIPV~fc6UY!%2e0z2E<%GlBaM`8VRR{@KyKDt$)* z^%FnK=ArcHtDqjMGT)8ya_sB_9Yf;Z7|Mm`!^PXcGxae?vrj^pj9 z6*TNC&hw0HycZ;Wbv*J8K1gE*kFgi~*PV*{^(l}%aHSGBLSW<28&B>^dDFiO?Z}>e zV+W1xx`oT^`~JdOx~DN>i=+pC7!SVPeDe5yN6{x9uV~LxAGwY`g@@9Id9-Iv4QjYv zi;5P~^}Q&Mp{#7o`Sjq1c<^CcZ{)y! zrr8v2HgBA#VLVz7u0eOk{3fJPzX|yc<>=k7q{UX;iDN}f-l|^As!V^E78yw`d-A_ zNlej5a~ z#DRuBqj4Ws#~HSk=+8W6Yx#1VLTxSW&tOaoNASo~{8HTahtgr+uNNx&&_5O0=bpA2 zcKFiESE$mh-;1Jd)yqt;&0hlhXdLks;J%nYSmecMCuXcCslmT}q5HkVHj^u&X}F&7 z$-z$5xLZ!O88P?Jk1oEC@N7`rHUjS0b2cdFfWSF?#&yN4^Mv|NvAZ+ON1Z3sclxuc zJE?!(#~^^~0;XRB(uX#kxuwrQQ zAB!!pca&f96Py3|N1L(klyeY}9L}A%R)s5hwB1)vy-EV8dx`rY{Q$V}&KGznb%AH{ zqX5%r_Sr8XJ#?oDU1=t?x4=5 z!@e^)iuNB}cVd0tvw(JP^EH9N)y09+YpxDN%dQHX#XV@HAwT@`Nn_s~(|pV37n$kTri2Fw5 zJHvgy+wgr7-ImpYYsYTfZxSdS+y);-OukQYH^RIyvr4LgoA=_zoGi(x9k4p!1Z~oP>S@ukgg-KF_1Ul8EO_u?(>LHivIOuvQYgt zL#F)X9NK;=Xp7y9zDjI7>_vMmdVhrcft5RSUiXhD6H!|Pq99*s_A;5sV^OqtRrk}o zZ_$WT5f~?)^Ivq`N#iomyRwu%#1+?^KkB;E{C#5Ih4Kj7=($bhQO;9xP68jE4O0Jo zFBht|YzUa=v?Pq=&CZ5EtiFB;{gfzL?{VFkD=6AESmx$J70*l14-{k@XQf%hcH%qu z44y;d`e)XZXQpY&GmqPhcv)r{IC4(UkG)rpeo)GSFqf@yPYpm_=M@;DlA;|US{jDzC|0_abQrg=q0!}A@9`iHj# zuV1UU%LwTM4oc@qigtqywAXR25YqQ=>+ba6t(QhG%~t{kZJ^z_7y>r{GzV><%_~>j zH>?GB7LY!Lcy_fVKyzaP#z;{ZW5Hni;A`rp!vSF zihH*R8;c|;jp0qt{;W`n_}_chT7Y+<_nC0IPgJz)$$x>5$nX(O_z*>lCq~=%GWu+_ zK`EBG_O#x7J;Nvbxn7E8zP(m)KOw;q%t!iOgS1}@?rYGWod`H5nsaSH;|iedKpvxS zpLKWooLlpv#RRlC8)$vJMB^)=9Fe=$SmUui8-ru?!1k6SJvb;G)t-pF;J;{39BB{F z5^)?C+Z4^VR&irpu{OWG7Th+`@Vy!*f_5!Hb1~A&rf73)Fg#AM-fM2ni{=t+(~woZ zv`+L}N5A=hQKvXkr+L0BXmjH&LfEqd$zzC3dO@f_~{v1`I0&j-Cq`P6SKTZ))&f3;6o--oF2M4!Qrr_%eL3LMfkmjZ!{!j#54~UMZhy$iZCj&sKwm zw4W)8_8Tks%8SaU78R9Gy`-poDqmDS_1mn!NVi|HzT!RF7qq{|xlSER$G-oG@%L7S zn^_(>o>O#xU*3E7{laR~d(mC2+CxOY8@=`C@v{k@SokF#?+PpUu-&U!yH}gr&0elb zaQIL|!iDWZ)4Hj=ece={`kTXT;&{Y5mW*lB!`ht1+ML1Kyp7Rj&Zxd(o9%~k|I0S_ zu{P6&+cfUX|3<%)GZ@F(l-T!3VQnU`HVqt8gKJp1^A-cQ*I2zgtC#vd%SQW^&>^oJ z!!2}3k}rmvGx!XvuIHvBu$LcI%b=F~> zU56^-F8pT2Cc0vs|F#%){)qL>sMAGhOY028@I+tK-G{sk&xz{Cx<6)hueTU?{swNG z`WfRF==c9uI8HK<2c`tCVEwz>V#EpvAK?She+mKmy*^)|9X$ZlFZw=K@2wUiroAyP zGU)tAp9R-aTBiq#V}1BatPlK{K3s@5SzyqmfwiH;aA9Yy_ytPE(juv>%B~ubo%4&#jN^ruOj$X z4?kxF|127I@3H(tBKWRm&#~XHjQL$T<`?PJE`o3Q@Utt}HmY7{uvG+K0ei+@V#?bq zf^VVe`3(_#3)nO2kKx@2$_995gLR6gvOgQuPHONK5q#53&p#1q+z0wRWz4<3QN|H` zP6S^ndrq9-7stvI^qaYYKc>IV;1B69sMBlkj4d^|m3`YS?Aty*3dfWnC*Zva>MJD% zqGd^e(`)R3!PS!j=Qd9coU0V*9@;F&G*o6pH(S8>5J0u>74+eYdRxiChmpq*9g*mH zz%(BHLT}2Sk#^`9=`kK z$sQUzjnOKTwR@BY74?$@&QtOd>sL136~*ISgrd2?a|mJlHt0_T&kU#!3lZ<);j^RG z-Rac#$D@x#AGd(dWd(IV=jvN~UN4Q+jpecaAF}%KUKi6&3gG*^tjK+OmT_)-j`6_H z1?IbODkP(y?9iLf?V`NmWl_BrVBp$mB7XnRR*)xlwJ@3B2>N{+r~haNjr4wAgl3dm zu>SuMz=t-H)DJ0ZvzxVP$Wem&3aht6px=zv@jFJl-?6gzKCW+=77|9j8LrLLc3nUl z&)cKdjIr_DDjGCAx49%RxccV6=`}Y6qGhWCL+fu0=m!L~Q2@sYR_~jpw)V2LJxDj! zme*o@hf~ho={VM267X&WHhL!ecI~1x8PTJfdJ%k3$LwObAkQseeM5a$W8aw)tQ3rS zj?d52yJ<)82Lkx;ZV2Jcf?064zjjCwC&yb90AQ70@mx9(+a z#OCR@1Y<_YJ}D-7=yx;0W@j{IAhEl7l@Q_{?QikD=8cd86DR4tyBf zUFXs72^ToGnGc*hV4VHkEP}6&@uwR_V?O2*Sc1>jir{;@m-$qzTTbt(&xzoh%EsLa z5q#x5H0wG9bm~(hIk*hxB-+#Gfcm{&DqnU{`EpB}8}$}(E?n}4Z`XBf9ORkC29AZl zGd`1veKFa&*Rj5!d@v;7y~)bJ;OZ5q&oB}{k9PzUO|&$>U(McsngieIHNOd%bz0fk zLl;a_wD+)Xeo9be;{|07gWXvIp7E(*DWEcv@=kO-75qP~204AJgBI;GbAuVtTcw*Bof*;_(c^LC@du z45E`a=n&guhDJT71lvbFCkNYTosQtu+=X$xYZz`=hVd6V9(FMN-Y|We*xAr)!pOJ` zu>1wwm)~U>xNt%I*0FaVWo^IAXos=~KEK3hSHpv^o2T=#NxC^%%>ww$MLbmR`fc9O z)kgcZ74+^Of?0PM`nhM86SsB@R6mP_Wwr~9>E~Mb5&hgVIYJvp7&Ukpvh%X_$=LjDI^~ifDbHI|%(SJn_sFvq+f8AZ6etHbl73e=K z2h^$5$CiWAvk2#b$*0IC_gsoKhFnX>xlPd)GkO|p zg+;}+#~91#BRVB`fbprz*zZ!_IMc$pG#C$BD~J7Lye3Q0TBt9y0RzM z?(||d87L#h?v2cLE18sz@3?a%qy9P$d{?sk%T2$rcad&Q&*}dC7T8#H-neVujkJo* zZJVM+Idh+_>MLwrOr3{!+M|729cA-o8XIqfAAN3!YXjz=WIo|=-qJlJ2fpnb`1a|# zGZeFR;8TMUZp4?z$hlcc@F)kqM>z1kr|ZsRj~n)YSRQ#h=Kqz^wVVDrf@K8ld^{!N z-Q#@1gAZf1V)?((?_kWuYmec**2sMg-aFy%r#u(Ld!{Z993Yv}6i`3JG})9^4(j`u zW;dmIKz#?(9Hz87P+Kw0Wu$Q~;|v-yjc4BKDS3k%=PnKXn}g@j9u9ovuNZI;;cW)| zbA<0Q;Ch5t81TyoUt++qKGt&J&?|+HqGgGJ(`%9fgRAXQiP|PS1=! z%GTjCsHas4YIe8ok395TN%7Zywh7N8(KphtEo+WvnVw?{WD{Xe_H55G{X3uyuYJsq z(OXB^nm0+&aP7yjvx$vEoX@s1RGbkaCHCP z1urjDuVQ76R)UJYg2!89k+)zRzKslro4L{BH=d1O%5zv-KVfUYT>PyBwH57i_>`cV zl_|hEZ(38|Mt$<5MD@^LP=A2Gh*P(rlY=vS9pZEBS7N_{sazbxT^fUX6~k3v@phj88cY0w zwGYBXEhZQj9@MMw9n<~C#~*qie24BYCy>A82Ydkad{xx+YJyno9~I89|Zxh{f}V~6fn z2;|3&gHxWV9+}l+*`Yh5WvzkJYe-u3Wf}0dlo9w|6a0V) z-eiIwHo@OF!9Os;+f49}Oz;j9{FDiP#soiaf_ItVpPAsG34YTAzh#2oHNo$j;DaXk z_a^v|3I4MQ{;LW8!~`ET!T&J9Crt236MWhPpEbefO)yt90$WUQ+%Vi^Pc*@kO>n9S zPB+0*P4Fcqc%})SV}dU=!3$0B5)*v63BJ+3BJ<=-(`Zo zWrFWD!4H_=O(ytZ6a0M>yv+pv$OP{&!B3gsXH4+(CU}<#{)q{G#RUJ%1P4v(4D*C0`<*8EQWLz;1TQhcmz&@# zP4Eg6e3c2l)&$>Wg1=>gA27k2Oz^`d`1>aK2PSx%3I34@-eH2DGQrQ7;O9;7E))C{ z6a0z^{+S65n&8(>@S7(1S0?x^Gi`_YK$Crm3BKF}Uul9@nBc2S@Qo(8!~}oc1m9+Y z?=-=8nc&}=aC_GTzi)yMn&97?;6o<(&nEbr0df=03O-^03Yi* zd~TS5Woi&0LtHWy)gvvb_GD;KXknz1n`RrfSdlQ>-Tj4 zyjlTJ_fK7KI|%U2bpYKbbiMT;z|IPQ!zXmT<{&`%IsoX?_56bX4^{vSozQiA2SD*U z13ugVaC-$n^n|YG9t2ph&VYM509IB244%;S?ht@$odMT&0OX-!%?Vwv2m!!41J3UN zNUi|rKcVa45J1~{1IB*+W<5aUgs!)B0Car|p!bBXKhyzmY#l%t@i_?a)Aay7Cv-hV zw`2qk0zCOGLuMQ50H|Vcv;)A);K2@n?F=610H|bee+R%1864>V*umi54uBsqINSm7 zeFkHHr!ly@1K@rJBYiR%+|>b4&fv}t0D-}w4uG2(+>YOx!Ps9ngIhZQI=^YaEgb+M z2FLn44*;4v0Ip@_8#@55VQ@nSz;z6+?*O=r!F3$~ix`aGWi6|-rUT$>4EA*ZB(XBp z9RNIot2zKg275vPGg$e@Isgbuf5cQCzZb{g4IKb`Sa}?WFEbd&`Ev}urvu=ldkna| z1K@p@en$tuMh4%~0q{)*mv#WGWAIHK0QC&Mz5^i0;NlK|#SC860Wh1v3XVwz7j^*L z%GzDp0k9=ThYtWAWN@yjEu4?HGdQ~gU^Rm?ar`sb)d5hzV27zKoJUyp*t;zufc3}+039v?{E)#-A%OQ7jC{t)$|IloD@(5r0sMj0Sr-DBRAIoi zA%F~4rUv-~OZS<|SBC%+S$b6n;1o;uh5%k;@b(bEiFG66@Fy(&u@FF*r9Tn^_%%y^ zCo6 zh{44nfLRP)g>+!B5&}qKaA635XYkSxz?r)YI6nl?$KVAafFlf^8v^(vgL9GpGk7}k ze+FkG|7UP!2;fx)yFvgMtQh~$(cVr5+d}|b7%YbX9%Qf-0$9gjAp~$cgCPX4n!!UK z0IXzi^aFqb1`mD!kjLPG4*;?ltm`BdJRE?Bv$t?i&B=8f)N%`0ULq_2Sb*1{H`Nf9 zW-pbiIcOzP4}o@4PSch{y9J=#BGo5Ar=^DgG)Piy0yIge)Mb-u5}?Lb%>gvTOLYm* z6u$wWPL_NL&>+)_^%oO}SRvODLYo2o#WZ4{Ywse&OXS0Z_{b^%BMbBwClT8!xt)-k z9*HIDFZL61lt5DwKvR<3IRjcJ$&E8%V6xmb6SgO3cF%GLS59pGm45vS%g< zx#X5v;7yagGf7>V?41Q|X>!dh(wWw51@KIh+GjxRCHCf7(0GYlI}2Jbv3Jgd&P(Lx znb32IyX}fLBUjCYnj8l}V~*TA16mO5%#p)0pc}#d9Jyx(L=mi- zE_cs>+UfST8PGUgZkPcr)3NY$xoZY=BiKJ(4$Xk*^h^NX47q*=)Xiw*MrfduJiMJM z&21Fmv3mf*MD_`=os;@`sORh<9=f>PAr7KkC`Mmlu3Sn+-rqDpi99auY|)<;ta+;c_~WArl}| zDun5C8C{mjcbLlytK^5i>{+}|ZW`6Dm&gqqsV8#1sohD$vYp8Nv4XL8i{b5bo2jokKF{}PC}Y81}bK`#f; z%SoM9XceR`E3^x!-_v#!q0D?sI*4JeUDJ8EqHE=}u@T0PRE$ zOE@BWBxpoRMY!yCn&oFAa{vktI&>XnpN;xVLJ{w0C=1{ zZkp3(Uie~&kQP!+`;a za&-dq@(xb|cm=sy78?aADnqkyy*Cj&Vm?5#DEG<`6{Sc#cr5lV8CookkPJ0exlM+8 ztD{ARE^B6c0#r$Il`IZQawVUAT_wB=rutmw<=Pff|zAPoRyIvb?L>IH@fjLL4eO)e2H)Jk$%weY-`e zH6E%Zxho!OB^N-m@dU)dF z%SW$!W`2xv60{P4R=U`Puw%nzC#vhq-u-{d1Cz3|8wlL9poV~tG6P*F$rN>|#scM1 zzX%l}G4`$tz$Gn(?78DU=Yp32c!?t-LL*r)AVLqR<@n zf&8W8)-$OTM{*sp_j1rgaDo`^&)MKm#XqanOY07Mi)Gv9gJ9AHaR~ zP7WUHjmcUQwYv(+0m|(IJZxAB&_L|{JhYH(9QyVs4-t|NP|Mi|Q6eY?8072`9=7w@ z0QJ1RmxpHl7KT60@oFLsA&;pyedjUldx-4epo-v%K;LV$0yJ9fEp}+N*4ReoALAvI zPZTrR$ViiVQBaV>Jhb4DhIalARu_9G%t0qYA9yK|XrBY6bqBzMsH6yafjldA<7;&3m;V?r;F zd|xN?po;)>5vj!j-MD78aZ zhhzfO5}}?z0}+}DX(T2_iF{~*R18b0>^X_p44&;9;qgrz`8iibq{d9*BZY{JT%Ad3 zIeE}UnmFmOi*#{vO(q%SWN#*E>+S}4dgVj-;Mp~`* zsx%Ujgn@L@7BAIhl2AOZmURhI%M{X(fYgd6O3j(XlT;26PLjK(kSe>wJB8HQ?c1l2 z?ny#RCTVa;ZJDIWA+=5+QKuZ4LcA^^lu4>xLTe_ep>Ul`Xv`!HE}=e?G`WPjOw!_# z2hvHqYd{2Oo@(!$3hh&6fUc=R&s1_4!QpXvp?rDax-<59Jb7Xg;CV(55vq6ylM$JD z65!4{M5HJOU8Hk3y^_E!0Jjw5=9w(*m!O)nM+9;CUqK`NR=ZkH`)o__u#n}hui-$QWJYVeLUm;>mp$`DpCET%DjpW(!u8|I23 zm((y%45!KU^Thr%d)+*7C{3=NC$^-^HSZvz1EfT|1(TjDK+_O+@&yt%K ziGx{EbfH*1O{%|4teLg}zip?|SNS+v( zDR<|IHM8u!d1BWrIh-f<%*qAWo-5Zb6037vwfSO0t{tEySFXNHY)9~Lu3UAQ7|wN7 zFA|4xg{noOXSN*;MCINEV(n~Kc!Ah5Tj;t>Y{lfx*>cMQv3oX-g8@wN%#rICh*fi3 zT?@qeId*{NIdcD8v2BhkGFR-GBh)Mqd*=wg1!4puFzbuHqQajlqc8E z6VrxSr*9;p$g7{{FC*kY@=xJ^-I&_f3XIo7`iE7Mt8{hr>3< zfF1g6a=RU(Ho4UfzBs9OGIYgB)srC{XK$Sh-gv1gnbgYCfF0^(6i*uy|L!yXf7)mKUp=F__&J(Rrd8xO z^Uy_Z!P9xXmKoxtW*+K!p%IVk=@Mk@WioTC30Za1$UWW7WF zlkAO`L2a^qD9_sMut)M>z%jjRKJ=v82NyzrYIg5JsBt1(n=Jv-}lbFFzTpdQITm8nVIr$01*-Y!k{Pu0$Le$z06!-beKEcxr1o# z?zCA_VNqdGkx^MoWky9tMaAyAySB@2Y)iY=+UBzlD7NmCPhYmReQ^7|&b?<~1_ra% z=V|x1b9lXY&-r}L=X1{aoPVEt&bc!{*VRdflTka{+%yM`vrWLB*`_1OXq(M7CZl7v z>0mOtW^;!V(KDNCwBYb;QgJe^%t7OvXyUqYJ#)}D zhdkxPMQu++dt6*yA_n5jg9+Fk9|bhV8~YQ`5pV8JKwAQLFagbpTuUOqC-DUDZ)x^s zpnU_*c&=k7TT9(cR4v(gwv#@vkVyqO$lA^r4;z>|#@uCK1{m&$foWiqdJW70mh6A*^U`=sdhm3;H04To3pwUeW^ujJb%w=&(UB74o|Q@MP{6jRgk z$et-tr&jW<=b7r4M;-yG-m{S3eu=qz3Ey~$ zxnTj{a*4TfA>T61RG-7|nQl6`l5e=ocw{+$=rZ$x<$PC+sV670_Hxs~oX7*0n>unL z`!6@O=0tYJn!55LYp*c+to*?%qWiP?{wqv}viX54OzqjcZ$?yOHotd<=~Nbfc!sGv zi?6@Z)VLtB?MhSQ62A9JW5+`N#Fa*04&OY}v^R_Im}zXx;s<6L`}6pwt4xE-_yboN zTeA35SD72K_{Lf0mWBM@S*HF)yzlC$LyP#1tD|}r@jX|^HCy@m*{1GAeADcxu0?#; z?5Ng7eDCaO^^5rKIi|Wr{NXuKwTt+HIn(+V^1X3Uy$kulxLHkBzAZlL$U?p=KCaQq z*CtG>wem+2%*_k=lL_Xgg}g5@dN7kekZ3-*IC3!2)Ui0SHObtS#h*$twJwfquozEd z^0g_(rX~D=6yu%+e9K&Oe15S)ML(=5!LC;gcXM30Wn7Bh^pFXaK zT>FUXGN4_%{Be*ar+7qWEt9js)W*YU+8aTW+~>g4$zu8kde&iEy>gUvKGOeYRY|8yK;t_50Icgu7%8_0cF z&e(V{+Bjpw#bl$q_F^333LB@Rg|`EB5vIXt^heaP9n&#rjOw`r_2Z%sT!I7RO&ynD z&je%pbnKl#c3$?HOnWau_e4|UrPwps*ftfdlcVY`LA^Qq&$r!ZsSXl4veu@qE%W+f3l0)!k1H zWXUO;HeBj_T{6+eJIyR>F#CqcNX}Dt)P;bJc3nmzZeF_=AscSH=e%;gRF#k|p9N&XM2e+Z0az*hh6ku?yEx?#|uR=U0M7 z@YuP!-4Dw=r2dzsUFB6YP;H2SS2}VW`-836<^cO7n*|wwgdE4hRp?gEtc=nX{zX7K z=BiXLx>V50aLF3J1B18eJY^j5BFowh1K|iLxPKednoK!|oSHA^Gd%a3--!5+gSk@L zyaIfeXiC6pAXX1>Ue&^m-6LIDN}K@qj+XtA<&cSe^?R-uxf`ol{u?SO;mmhxJn|Jy zYA6!hOO}NC@=gnmdgY%4wtUu-)a`jAQ92>5lTnh8tvwAy9kQS;tyn>~BF1ooyYrp=6}E6PjKJAUKyoEsV88MY)zl_SK;VKo7Cr>=)w zWJQ6$lRL5fTXzg&o?Yj}dx)2G$)9mEV&fy1ml{6?M%koCk;fMaCODJLuJb~N#2=Dd z%;QZUCCr#{xGVG;m|AR@-4jf#QTK5(xjLcq4W`0U#T=P->0N$05@^ za-1G4R-{wp3Lhh<_l-l*hANw%I^n?dE%A$7ef-yCaqUzUrtoKJt1Dqf(Z!yU*!g6f zm7uABxj4C)9$obGq#OZDUUBOhvnWY+%Dzw{?iy%M`q z9JSZ|weo%$tKy_6>@($0T`1m90aRll!icQzs+tt9YI$1!r$@X`BCUUxis z9p>vCe2c?83c@0isV^+f9QUoKZ2b_IbPHiSESe`bInhyVLI)h8y;N4^u>)Z?JxiZ@==gay}Xw;&)$bWNtYQu!Je& zZ!3RTCRlsGCwdZ;w)tAOscGl7c3$gzM#hpjE-z_zvzK7vXX5WZzJ(#7{VYCxU%40j zG>Qvb^ohB&L86n{h>6FPFAMmz_v1IXs%~$*iswpkVEfcSjU?SMkj;8@WkNM_u_7 zM1Dlz$=W6w=0mL^$e}dH+~27tNj?x3d<)QjwMD=i`$=$m@oWJQi$~algnmX+R|Idd zmo|c3ds*OSkNXQRp1}3)&!#WAAG5rUY~UD=D4?XP+FckOJ??K@9PZ!81)SH-RfT#+ zrtyhpcx~vHm&FQDFxf3FwFmDlp*gU`u2-db?W886Ow4@%(`Um$TUq(sy`?}@S(%8d zIFYhl&wFmoOtUqg%s5}lUBr#=U;@Q;L7OjVBlCu`SKwIJnpCBGTV7%W`Coi!41(Ma&TC~&;nbpYgZ89H;nXt0`V7YItw8_+Cp4fi%&3dTsdYP_}&N;Kdldz7S z=0pkdsr&kL2B*9FNy(E7pa4kHrw3%uBw35KH2Yb8RyxiKWhS?IYyV)k!nGEZC3)(+ zm^xFHR;sYT_Mi%=$J4BRdncH-7initQJp1eklM9I>&`Qo;Q!z z?n1t-IT&3FG#6eWdUzi;6tlQUV&As+W%8ydUq<^-YRc#_6D9RGOQCy8*wbx`zF;EQ zBBZO?kstg_(COIaSCM-%T=Xg0AO?XwLPfL6w(&CxabasCxY|&EH96#b-um?lyx6F`47_b*V0{WpJk{C7Rs0&LI~^vMik za``wqCDa^aDiV3m-A6)wwWCMkJDK?52N)H!8-@~xUF5P#)TD=hm4bHBGg${fDvY$O z8WQnXaew-#1}c6_5U`%%W9 zbJW5{ILze!sAuzP7X}#mIKJr*k@)R?X?JX=*H!Hi@u_3ygO=FXOi`y)`ms2m zP3G*v@6BOh2qks)-C=$vQ}Mp3n>YcW;~y`y$d1wYU0*`@!jpl0M!s%-F0hW%q_skA zKn-A1XlICfmMmyv7xl$R`KMJ`R2#`g#MG=At=!yF7+Ra86FE58(obh?Tp{beQn38j zX67Ubdyvds*&$A}`BE*@A4u4-FmxD4TNv-*EP& zJ>8vqR&%ERqdMK!HlJ%qezE7oY`Zr^{BMTKoU@x!wr6jbzT=MD+pB|w?d?gP<4+ya zZ-c6BSSN@jQz)M&Z~mVM)sGvGw>PlaU)q+n7u)UfK12O#u(tIyeA%_Sh=%uBeD&7v zt;1bEQe^{B&aHkI^%se#;b5-b#<%5);eL6|?kc=$($Oj8zPf5REp~wNJDfd=$Zd>? z`J9n$5*W*YcNDg{g6cB9=O9 zzi4>U(>7Z7QTm3SVup#97z+3JviQq1K>{LHu}Z^q!-kfObd!w3I4;SDhuZa0HaaqT zUt9EuL50Qv;IX6{OJr_dKyBI@T%ij4%+oHm06oN$7iU&*1ijho!s_z<&m^1qewoHm zUKa?bksIP&Ida(sbs2waGXsYddo#j8)Le;Fbr2mgV9+M-OEc8NPZP1BC^{&h!D#9)1D`g+jUaolQZ_Kw3R67u#hz+ zbwKS@lJ{k|-G3qB?+WW~Z=uce>{UZWsaB)t834(ck@uN& zGdpcw(i9u|^*M4H=OBfNaRpg_>N>Y8cc4rc>rb?qR^2bfxEYbVWDndrk)gnGT@;AYuUNpfS zA=k)3{5fk`Mm&p8*cRuUMagC}iLmz=f?su)+xyNd81|}HJPHwoLc$>igZg9X%yv-F z?Ix&f*awEI?MTR+AH2`>cDcX0rMNoh?>SaDv?Z+a*6V{ZIkF~vIbqN2&&}5LvD`Vg zRn?qsm#^+d{kj9UNz2+1andIlDN! z`8{)&KOX5J?Nbb$w-0`yTzG$Mj3{=lbhT$@npYfzrU>65H)vt&Y4%A$9k4MT@0ysufAn_QrA&EAjoyK zo3BI8L??jvq9X{pak^_ppL6E?nN@B0`D!fYir8j&FO)!Tx%%aL_}j zg|Df$y|MDZL%7{)XKZPMt(MVPw|YEx^Ih$Wg1I*2ZM)HCmUtgTM4?hIwcsU_mG%40zjk3;1{rA|aAtem&m{{;cxcTf$m$6ZlZ>r;pSu z>}=TWNKOBW=vafGI2?)p&^qWgJ z*yT;;=06|60TPny{>t5E+Vtb|MiGhOEo-;`QL&w`e{CAsckDykXW zgVhQRCCRiOEoMHbw7dXRfuuaL73k)&?{1^xjN{DM479;N)LR!A`+(m$t$Dm0oa>C_ zvv3M}nUW$6is_a|?pnlE;>5*WgjPmtBg!hqw8Ih53fSEyEmJ4r250cYw5)@FIJ$d5 ztx$$;Ph$O+aYm$KO;$zKZ<5hQE9+2L*l}x-EL58O8*KJ-kt{cgK|8OGa!JxAqe2=> zB|3*LPwc@8i#WOFd$4LUcSI7%>T`5{gf>`-vaCr)#LXUUw4-br#1%^?-X@IZ%mWoJ ze=luV$xACeOvRs>=GRsBJQ8F=t{Ysj8BCUxZH_118!kTC1_kI7B_}ACL$gn(P>-`& z2kw*lpK7iJC5n_ewfv@2UZGflj%{X868K@BCWP8er=PaibNOR!Jik+IgW-&5h8f=N*6T%2~-T~=TgrJi5pic*Jgkc{le~Na;Ll}CpXLFJH{nSnJ(O<=INCUHa_<`SZ1tDZtr@2@+LjInSUM4n5+cx%Gcy*F8 z>R1vv3~fh9+iKa4B9hW}duGMycF5J}xZXx4K+E33tN+3Q5I3LSN-yTAWFIM3^?^c;83hLS6;sguiqtBx)4n}?J+ny zjx$0O;OIJ*mfP+zc(x^agPyb#w(*?{2&S$>o~0IBA~L{Aoa^qG^oTs zr0jvgQ~%Rj%-@XA^J}wGS2#tewXm?H-bGzK2ir*R^T1g6s!oHY z#}25VMD!np^TM4z=7{%g<5fTAaXZQ$YK&hkxlvnx$~*~rHQu~CG0M`xGie_u z24O#+!^oacZ$X2-mxguvxA`eMU%VQ#u{9G97SIv!x+{Xe6TmA);mTDicC(TTw``KF zJCUPl$L$2e1KzGg$TUy@R4~#}Z*0?tZI!Xo^b`SJ?uL$j+pA}m`t_Z!@>hJ`1RSA!5z0l9zA45^Q_}vD|91$ASS11s&h>Rby|=rx*+;u z@_xY?{tk2eHui$d>+nU8luD$!@`LwnKif!ZP;T%Uu#V`FaAt=gzOo-~^oB2UfJ*|T zN3m0bi*Cos8LU6+!TVs6B+Y3PBj&RDK}o)11C`mWrrggM)R9Y8$vBF@HLx2$IQ&CM zA+$t>UOZ)k)=LAR%QiU7S(AvYm`k=~Co+=OLPleNBgq{qrJ{K@RVS_r^G&8w8;EH| zw8B4+#IpX})+$Y3nOt6o7)J!Cs|V@sfFhKFbZBX1HyjjU#M?WUbu}*HxGdvj0C{9> zcIYcKb(T;IAUhp?Jp=1XDV1b&KjdGsVPx@@7>q#%K9pL+mo=8M`!8M6idu(>(vY(G zDkm3dSY)xbgf^5b=~Hpi3xlW(AUZToq z?oXm&l30^?n@vOq0H3jQ(H>{PXbzgPbUr$ToZd`$s}RQ3ym_DO%_Fyz!f~a%Y65BE zF^VchTK#hRbrJg@TKYULX}wq_L$X?(>F&t2+GsigT(y!LU=ppZgBUR4 zzC6N}sXO5^YVbxEt|Lc`FHNK&TPCeA9&FCVpE1eq9;sYfSyg@RM4_Ea=0%ah*JfzO ze?CT$u19ID4J~WIf3BUBS1w9dvyx%3OC7T)lqi{<0WTp@0a63NalxdHNlxbUo?{`u z(F{m{hLm^U^=lfdMp4ndrx1!po8-$WQ@HiD?btvs?H}`+3MJl)u5{t@Y zy8tO>UD@d*ruf2#lqF%HQa?oDGHOBIAap>f3u^PbTu0$SS;2k;vHBEUB;gCRV#+;C zXt7qER}#DXpfN_MmBv591(fg3<1s(~=AQlJA$|QL`RIXOhX{&SSCX9U5yazKDVLWt zs1vDT-hK6VlH@&Ez>pAZZi_3_iTeH?CI#Zr zVo0ScOi5n!b(FF4&Ml3mcs@NxGBc`h;bXZV{Au)(fU7L0Jlapbt+mhsNzG$6UJRA)xw`z{z~7S#Pu#CAdl0I9t;18-w-R+RGZ2{EFhsE!;n zptxQvS%iSQEYrngTtL{AdLf-+U@cauUc7*g;kCDPqCn+}Amy!71SSBBhzVZ1ARTqe zrqK>3^ZL&MXp>eDB){0?ej9eNH{)id`$7>^pW&$`YkgHjQvUEF@6KnZ>qf?FbX!5S zChbsMfMY6cG@LS<_mzzrRR5Rb-6>HHj~Fn4uCJX`cOG9y1k^x*)vkxcbHk%9Kr@vh zw^035jiuSOn5x@h#}Orm^?U6B{ z4F;a6e!umH?6mth@may1C1i35lvVqG}dKBllRjkWE|doO~bN{7I+TFpeYn65@Fd_08P6ep4kS&-dF+dP&$rouP2f$shjn~l`h#7i6-qE50nn$c2+9{hZ+UemiB7fI%M4sDr~@5- zt=u&f(@oK|ZGI0bKvTT!&DcKtz7O*dgBHau9nX)1m*0djsM5q|_Hb``np<)Sgyse* z5X?yDpYM3IyNSkB#95M7`q=oy@B+7BZ>VQBlqNP1sVY+r$`I9yV*0N4KH2I}h|OF@ zkyL(uH*NTbO5Y&D=`KC@!fQGfT2rxAxj|=M;&MY1cB-zo`Yqp3cSOm&8-tZ?K_^Au zfU&I~xXsXrW$D&E|89tq%Kb;tXh~i=wz@>Hd9*5*z>jT(`=+{Om>F3s^jnGd%=Q)v z!S1zc4Fm5lfQsZRx-5QGO+kFD)~-}$k};qUlxX(q3~-@KE}%jhN-m%<#Y@T={kr2t z7=7p0LSkpwZZtQ-%fOj=O2ajOZ?LS%hrbuYh?{5nShZ10&4PD?w044OEdxyx)k3x$ z^H$wF1%s?Yaf5jQOdl{Aihj0SQUa%#BA@S%==Z)l@NGW~o)A}#XFgBgnh(SPaw&OwE=^y({5zrsO=6(;MKS0A}ywIE&beyd3K@)QPQhY$&fkF#;V zAJbKqOv`^5rV@EiMPc#57tu`z(CP8LR<|B;<4SDK@~6?4xdqL;Rp8;f*?v2> z1=J^KZQB_u0+1VYjH1ITvCS5HauueSz7>`HBulN3Y?d|xI?i*EV`kXX`^mFbW+O94 z*5=arCEMehCF~5ZG`iBXBP%+S+7=^;-^O9^m)Z6o;-Cm$^~1O&{`8tP52o5t#zMiZ z5fiVp4L!#fD;q3{yo9qB;}<7^lR;~1k69@U=65Jjft^SYiN?qyyL<0DE`N*lb65p6 zs4?K-FB&p}ShyW)?a>(Nc;rsL0~^n8R4VEktArv z=X6)g><0B(!_3=ZU#JGY+F?%|LHN{Z6Y`K)OM2gz-!h>UMHHjUHk@qvcE+)Ue)UUI499U53OS zTTfSpgbj8MljTetw4LGPzeFSs2FqGOg5~;*0eJf9ri{=uNH<1HV?$&@?aAN{m;e{v zNS#}gcX({}+rYnA45ylqk5~+J2!ZzWTH@6Z_!>1md`467*mH}JkQ4^+{rhz^ooF>j zby}p~AX^!H4RYKmBYPQpB9a(Zo4#ocm@Ga8rl~WeIl{`^YW=l=@F0#<?ePuyc>BeY-t@u>IMbYodFnbq##{InpAoMg(WiIbRM4nl$ofNnw1p8tfg zVm6yufONyD)4D}-Du|Of8R{7k#V#F!*u%%B7lJ6NG*0bI?5*Hg!)<%^wNAJ|i)-NS>@9oqiJlRLCkBb~qUx z2X-w>tm(8yf1Vp*2&A|_dPo)-_M{a|rvyWbEFK~%SPrHhsO>h$UV~HrN7i^+X?)j+ zDkNlp!50B9gU-TOuRoC9c&6izh#MS&hfqjZBg1$o;$xM0tp`#Fq^)+peqW9oQRKff zTsz$%6G_^Tm|qMQ3oK3sLuA$nA%kaH=bcF+o8H)+Yj}xOmaJ#)Fo30c9<8w)bI8a^ zemplvqZxmkkWC~8i;amN`ex3@4lrJ1kp-4`W~*BB0z)~|gJeD=AsPgcU>rP#+WKR^ z2$8JJ(9-CjwaL7FEEpmF6IjI43x@FkqiLnyypQi8oIX6f1xAAR!-LvcV$o*VQ6t?h;qQ5 zykP*XGw==754+X#@CFSuI$-VVAOi&1V#&?a` zq-O~oNs znX$uJh%AK&ER&u8$sK)*;&1#f!;6&+A3J17<$7X_rOFa-S!}Fl$s&YR7fsm~n%|U{ z45VT74$`Z+)N}e(j&{QI-%=w?M=kE)Bf1=2t+8)A5n4S(l(073rZ%)i7(&rxdY~0F zS~NV*oyIl015DEfV%04+u6H*Il{ddqD-l|FQy+^H0a=?PtciP%Q5&T1edZsAR)jFY zUxCilh>RW~wq@bDmj>chEhu^uOf0bO#-bM?ENLYFenZ9vvtGfZHxTUAd4w=-Ah}(_ z_!x03-Qq5f4jI|mNSfUxup9~^aR@>VJ~KpJOa<>`L9V?JZf_zq?RXho35ioR2DdjM zp_yH}T*A(EksvW5n+d!P9QU@Iu-10dMzFjjH_26jiywLeUxir|GGu zsXN?R|0*c*MR5CFknE8#Ecb&P7ugR{Y$PDi8jOM~6H5wugW|cj6o35WCc_tkblqpi zm4WSPKN5M?&F6l3Y+`OWm0m30qA!6NDuGwiJG@6P-fuBj9vM!Xwu-;zOZ zlw;b+b%-YW;5`M^tr>b>q84t`;6Ii_voKd?bFvr)b5BET)4vwxEsJ^5Eb?mXM z9GEP6dsI|)DXrYLVe2tW8w}x{Z1d7VJTsN6l*%GvB;cmd{0Z<=4tVX})5nIS&TA^JRX^ih0d z?r{5#T+j93ul7nduraJn#*qx0XtR%rnrkl()$#P!RqzK(XhPY>u+^!)Ml&pNg=T8G zl8!wynUJUFYg@3S9i+&au3*h+Jr~t7aA$`4@!49nMM*p!RNSz^P^$j9!iqo-5xE=r zM@smA%1$=d-;?Gb8$|OHo+V~pfQlXAp^cnRiydhsAkA02cQhfZ8@^O6{&V4?wVshJQ<94 zjnNLObOh&tyP{S+C%fAmY)eWH1#*%ZBb!*ncc$=tQabS!QOF<~6wr`ZJDFadvIdZ=`y?+Rj`(QeA# z2mzl|?Q&WocOfxJ3YMjBNP#G-zQ0W{2Bc^&i=J@@EP%19zQMZ*m`_T+z}-2_fSvfVXZV2+OvA!ug&R&_wW@E33G4tjZI{H2 zJunk9K>9`sGobTSWkH^CRgEZy;Oc9c};;GeGV}6Egr%8@bC&1J2mx z|D-;Mm8`_$f`QYbyWXmRp8BE z;!8b145X&Pwjr|A%8osKd-&s$hI0BUWA#b}?3{v5nX4`aPxiPV&0)z1vjzJj6=vfr zqX-J|Z9V>YLoBW)%FjTm4r4mHGu>Yk49n_ez3<=;%R2UO6AWGLVa*REGeD?3>K>Y| z4?0cFMdD%Cp#|NADtTA6&^Kfydx$Qb39brDoocg(WhJO7UcEICb{D!A@u(<1;Cjyn zRDJC^p`hqkynNF>?VUv+7JGG+dp1A>UwIU3ddw^Ru&>-IhzUD1&CU}>e8*hkCzSK} z61RHPH|>pnCVJNTh?9FJ@dyw*sg2DoPCXp~YbkaIlksxH7h102dcO|Q#PWmSN{CRGr{tbtNj(&(-k)i6OTG{c(I}qa9>fpPOvM|9IaFgD zg)h2pediC@c(~8D?F7GqL%8&N&gY6)|N5;qe6LqbXEJ_#P`%AuMv;n=gV zC3u$$_<%`3!=++ZG%Rls@*bAGNp#Nr7myJZ>k%?1v5`O2XpO+yO`T5H7eaVts~86m~}JY6Xwq*3$}`Ao}wixSA#kA8}<)MUi&f zA$kc5U(r9G(FFX%^~E_L7}|cL5w<}D*Bka;<-U)zKEFI=wSHVAk_c*iws5zA8L8^_ zOvAkLVjO@Q_@^RU^xwms{-28@dEC?02+_59?C}*I&*j$!(sDxz7g;TM)`?T=#d}E{ z4tXclJ~C4L64Vk&Uv_(0(2~A8M}BPzWR97hVeidO6zJcxag^k`)__E9^8f29yd$?p>`MuNc_eXau(E-xVyX<@x z0vK%_NmK9a+sltv0m;cJyU_FS6)8h>Sh9~&wPta~Q4Sp7id~DHu z#Zkzdx{9wa)ayaO{kw32-{;d>>^n8-b0_M@8i906^h|(iGPvqo>96Qew($6F@PQ-@ z2-J~R7t|Gd3!NFz@7G2wN_n-uOxqnaDXdQZoRrvo)iv!)eW0lXZbI|rKA>0oj6w5F zx^>LIeTv;)QUW8Wfgz%^Ir^#Zn7o>YC689j%7&H;_V_u#gAPPEs)C{FJRvrfELDsnZKP$qP}U2Y0S~gTBBgZm&!*ZROE7 z9WZADp`=a~dfF$mbw~E@e*@hD1$zT(LOVM~K6ZI6sk<&ZC`r2pKvKfN%kb6Wo9NuQ}o9T4aK6+0j) zJ~7DsD|MGD{X&%J;7#YL_cD|aK=?8=RVzspdzp73bAtuc$3&TS^K0lrQF{F`a7U8! z5ma&|5xThUGimW_8u>>J9^Lyf9t0+t9*CxEpxtmd(dG3apTy8 zTDQ#D9XtM(*dF)nbFrGDVDyp-n8fP+7rtTvPmsyCiP%EVsRX{wCMhZEfzN_xr~_fC zJxA`dXVX<759N%HmKbQv?3@e!^rG(c#Vd}&HQEmx4*#grmt(jz;R9hAXYzxTIq+`5 zfzFrrAMFHOcoP>o<{z|X44zs0GDUYwIWtyn{aA2?8#tr=q)FnJzo7*ZC3XXggry$} zp3g*HzPjZ$8W1@6sqn(dAryOSm~)eD{ep>H`D?}v>jzk5_WEi@>}?h5ub=J!R?CO#=~q~>!|&aNuF6jD)3e(=4M~D9uTOyZYJKjEo9LBP zx6R|F*^{kr*tj}4^`r+Mue}-C-ASj_W@2Z;t@q=verb9BfpI=x9vg|{N_Z)V~)-t<3GLI&~1Y@)b)nQ9!@=|%ML3i56KXM zKQJD91KY?3hz@6JPH)A*Z+3Jo^RhjqDS@`_Q0pVIJ%tL8OFT&H@z&cGa4{I?_sN$5k_a!=p8QVq4_N!fD4-piN{=Wr(HL^26w*#WP&s=j@$8I;b2pf}0j zlvLkykp+D@%;1zz1(V{+*>Yuwba_(Vn`#-d#z&Chh1^nn6v#dlw1y9RX+_AxNxTmB zbn=4R2LJufL4~X(O590?tfd&E_ZMaGTeY~8YC;bq;9D~*oSqnZOA4sx7iExe5|q&3 zH~$D|-&E*#55{ehn!tdKZ{R=B??>3zdTh@nX4kAE+Zdo;OR5mVR78J$HcuZmPfEOZ zkA&W>OhoXG+4U4vh;STY7d4)*BinP3*)owJ$rQ$$G z0K``Ow=R0<_Z`e@YLy<8qCoBR+S1TB$_e8h&mA;jksTYybhr>ip07%b}^QKolL1IM+}IglMFjZ+Sk8z--rGE}c9 z`W`$0(xdVw{4I}|VmtN)vcT3YEcsqW#;2xOHDNQsjD2YPh@q}c3T124+GpOpS{BSP zfi$mn$SAC9PD`v_s{vakgZ0}bma=qxCs9CGpiC|4^edPw3;KZylC1zu(sfFpVrpxI z)?-VfK{c01GpYZWsYeIodo2?I%~Z|J$5sHmh4|s}ZhQb!TJ^j;y8;!8ln=Yv3C09E z!m4@zuOX_P3sxzcHTGCX4-94*(d^;0yj3GinF6`}Nur9BZmP?nk03~iX_aC@C($s2 zf`b2C1b&vNPKxG#Akd)&eC7n|Dit~m3a$T)F(@SBlPb(?cj(fy6V4O$uxtt^N1G5M zDaH)cM0@QE2}RIAX+ zUs3L0*;R&PtkKspCwcjI#5sC_-{-Nd-+k(YbQy7rKl5di*ahn9H4 zo#uEb13ZqeP*?w~DdL#9pxU!)d6E*Xw=9|0MUYm zYSrsBKK9BEX+csdWt3;a1_Lj_O1Z=7p>>Rlbd2wN_!|a_g-TSbT-u*EX)%Q9Thb9) zc8oge0-8KHz~HjPJbF^uvA>aBoa*kfIsxm?jS`SW{q;Db$c+16^a=`%Xwt;Pc)hZ^ z(DBa!TG5rIvtC%~PA5887x9Q(hJSt{6Fe1MhTrv zNuHti5u*A2js3$K*}`fz6AKt$z<8KKX@$J7_)LWf&FRdW?ZV#_D)b{za`dHM6dF=a zWy(wyl&P5AGF8dLbD4`s48ey>ItYL})#f3pwUG6!8E+Nn-b3}U4{$YgCewE=33PSZ zZMzq!KqUtsUGp+u6(*89xgVASVt_wrFiP@x)SugQ1jEMhA#?X4 z*=@?i-jj$X1uK;54eDVg(KKrUekR|Ik8_LvC1M7hJA60K>m1L8&l{@}T;(|jiMmS; zcc2xxNV6oJKWZU}-5#!HfJ(F=JL6y6B2ok`oA)O)&20vLpl}50VWf3X2A;cT{lbWH z=s?e<0MOKa*Rb6w+vUi$Qor#HAW3CjSf=1kb^0h|(l{yysT?>(log=KxQGeD>V#W_S|RUeC4nCV)4K<{9Z;{;uT6hqEqZ#KDgjG#{Yqy>Foakc&(m7 zifEm!o;$6Cl8x+D&NgZ|+?J$6wU^jYwQn?RmZ^y~?Lp_t+}o*iFfo=&VcDnu2~=X@ z%jm_dZ1`O;s^C>GZdXL{UEcBfr=!7!>_l6&~Kx&~0$O6R57ca>BwBBdheFmg!avHSxS{zY+gZ)OtqyKa*`2p}(zWU#>G=q~buB5yUH zPG^%?-5K=FTTLSA0#zE1)DD}dY>o9b!;Ci7E=140S*#9_PDBjYBBekf=yQENX38We zlU>Vvtvg*MY)}VLA^vjSh2Y8Pm#B94Bz*OfPRpt6{B7moxn6)HD|7h;muuB1PddMR zD;=BFS8-7RQPR>j8wsxH%VR+8b{vAHPJ#nGtH#}vR=Qgi#oXD-Ig5F?1G?nhTN|cI z=>_Y?(hNJ~h8Yc*rro|K4*q5yT^a+XeH?^Rg^@i{<$t>Z|E7U?zTFY@FPE2v*n9 z{uwPco|dlJp-`j6nIGq}4?kdQrCet}umrbq3HpI^OVF%g)6xhI)uE?c*ZCB!Od@os z49Hz1Gl#3z{iLgum?Z0~e5jt)ajmr6!9i#Js7SDr1fR8rTlZb&8brr;?FgI_z^J)I zNzM^elsxO?=1@d5=*(z0=!n#sGxgf(-ZUP~iU=T3v#z^+M#-m`2qMJ(AJI+_;pu;i zmbF=-%yzq(QU6;^B7osCt)FnMaI&;c zOBufOYCzjM2js8YN}z(zh+ z%(vcm8XiVayR0&xaZ-}(La1O}FuH42IhU94K&Jq4RZHj_K!(k;E&^`;2z}prqfl&H z*uo2J9;tGX3jKT-4bdyqIl!cdm3PZd82tdcj_z+pCr38o3uf&8f^(3dda9fhfpJ4r zJ;N-9dl@MG)@y8Wyf&u+E3_|==idYvEqWSk73-strQZ8Kv@=i6a3by#apV0NPH-yo zDhnz-`ls|H*_N57!$hwRZZ;)}+E>z4WOLxnMOsm8==CQ1#_~M0mMO`%4IE_XSwYV5 zHq|LSuHzSrkrgo7XZh*Rmqx^fdQy#?{+r6Q@z^a6_KrYX5fgL8jKz6`}-RM1|h~} zgko;usAk$jqG)?&SWQ3IJ=&?>Oc)2)OfYx7-Qq=Dt49_RUV-M#%?sPsE$r`~d|sA} z87tmv|;I7i4cj|}?UV7>|L72RaV5pW2PTz5{iGf-!61#Nnt^_z7P zMD1pVkZrQEN(9ia)vD*=P2XlATs+Bf`u!JQ4-k zKEdrQ!#gl*YcqdnFUQ!!`ZuKo6T&`i$dy zh9my799MDQ_>JNgZITWf(jb}NBjo<`ZF+4eW5#*!m4P_ZSH-ZfDz)iEcouxBxnYz9o{DZl zry?-2-^S?0jH7JZdQ*XTZd#CSHg~*Q4kDFLuzX}T@= zx$oD8d_Ovh#7NBt<8bi=yai)>o=hdH#+CKSQ`3%23f`TahQ`k204stu;rcXMszzZE z7EUJux5&|Kj|3Z21?`N^n&Z712Xe2UlostTwcVXTPFbM4R{@4NF4j!tkB$)%>w!-~f3j-Nda^oaWv{;QyIh^{+qbe`Dzcf_KO;p*5k*LA&tJhG3h`x; zpZ{e4^Os0}^swW!S#m(%pB0~ma&9rUcdj#}E4sGNANl;X{Z3ww`uVRM`{MQ3x#0WW zLbFsx5g*+JBW3=l0&V5T_AK#l&8wgdY=`DjvwBaXh2Zjx!^6YD+0G_W_sSxz?||D) z(tV>X$QSo+E0>7hnpq(mWS^Bc=I_5ORFvD_?v%4kUZ0AudVi}d5|CT5ZN_Z!<*(#t zUA3;6*Ru1H{cCg5lqq5e$jTzmc3f{WYR(GFYClVFUR&R+mrB;n5%oAuD)-Lv&T3!n zIAmY_mYIos!Z*djV$#*sa`A6?-!kJSG_$-ryw9}dEFBk=a`m`9j@w++%gz^-az#`d zwdUVymgH8>-mK2iHA>i;YE++p(KtAs@;FId&|6sYb8yo7-2nUmHAUEkKXlB{}&uceiGo zCcHC2JHeL9zl(PEPqut`{_D-FgR5cGx8KtaTbi=74XB%s|9o@f@6i0#;qmS7H~!Vh zRikb)+ba)W4^}=LqVVbYs(8J!%0&&kU23^PmLa^_XuZ-z4ExzbPs_i}YlZ9*h1KU@ z=e^>s78V}kqwG{m&ylh%qsu&LpF?Z9Jsa|ATM8-aIzwCDJ_^uBaUdNwb zl5?1~KW(ou_t0=yxb`?JN-pZ;dp34=cMs@R$5XgBymt3(sq{ZRBJZut(DOr9tvsChF9{#o?^;^HlhGDim#BP2t7|M042j4V#8 zShT2EjGt_GLLdOH-k&$xu_ot|SV!#%_x)^t2yXKxa&Whj!D3Vr%z#U9tKpw6z`016 z_u$6^7LXSUoD#M^JF!vPaQ%Q7S?JsM=fuC>&ym~~J52h|SD5BN%v9eOCN7zfifkHzAN<-Z7VU4DkZ2j46 zY`v8b1j@lG)2ZX={rrY=8Ik)}%Fb|^z!RQRTlK*-& zhQ#h9LM26KUP7kZ^1c5Ph6^lX$w`JjyqyYDE$_Q*4Q+o@mqSd@t?Jur;E`m&VPf$-k8>gn!h4kr*;g+?j@$2 z+@9mypp`B?eZOI!K(q#pG3~E`T{$bxc*k3$6WV>ET7?Km|1>v2I~k;(6xIe!Gy>65 zi34s(?SmUn2x$y3C2^7g8AUbVn_bxh84$V{G4PoP&I?=ps}mqzlWv!(Jy2;Z`-Ddm zWbV}W+%?43kAp1zl1Prz-wC*pbq|)&B?i3HxmVD|znc&`>|-zuL8Z(Xhag&Adcbyq zJh#1AOOIa8PZ6x!x7!}Dc0u#|&T<+^dv;=;cN;LUPYivtE$rS!$chzC0OJ7lv5&kE zWLCqZ?kL*E<%IG~DE*%OQZW5UtJcEdcvGQ)Khpc4>p!nT7(h$I6RQ2-)?GvpU;s?U zH5?EOCv^N_94_ZS=J(+6kw7G!igr&+=*f*r6(-cSdp0o-v4Q<`a()Vp@7n@jZt*}j zf?z$;{$t*!QU>|A@4I0&G#S2|QSe8(g?w1v)5L0L0!=T^7P{(FtoOu*kP$vl;41)) z)RRHT?uqIFbUPr>^yR|T6YSOJi?k0|a&8E3f9alx`*<+E9jkY+1?fM_7zY&it@8Gw zPlu@L#@vZ=sYcjAFt;6Ggl%$i2UU+>17On5)Cg?onRC3#7fvYgxm-Yhk%?e#dO}MC z#KkZZ(9eow5hcL`X_yIU1a(9e#3)8x6S4s#1o4agCVQMmz3lH)HHq_oyYKbEjYF&r z0N;R#-C+tHkQ^*TB)mA|okp5^ipM-aG*Y&RsN$`;I72-AGZcaS&$(c+?Qd)}6Kn&S zQ1cf^Gwij{=johozL{~zAjScQM^N7Ay)wv|%B^-dfhG#cO7lllDWM6R+phs!1im@# zwrKE1uFOAGz9{>czT3c+Hw3`c;dLj9&R+7b{RTKEtcktj-;52wIcT??Y4;+azMBb7 z@B?MWv~QBPKR=vUwE@;TIs7ac_OQc!fCj?yBdiL{@fJ6@M00zU93=deKyFpWt@wsxWoqPZB#l>q*+_Pp{i%0L$Y!2Ncpb5q>ROfWfi56()38e8@ z_bw#g(g^eR4j1}@GjW4AA=&+7cOU0ql(S(Ub6b16yE7x%*sNwb77>Uw4E}VGSLxy( zG!B9E7WL?YTa4da=!PJ~f*OF3yu5q`(*F$WCEKSMM9k=sZL+Y#J!-f8=D3Hu zetHJMvGzX*LcQHqXy56iqqwek%8iQ5&e?= zyW6Rh8PL9^-odU{z*~VU90_kaH@q(NnlPGx2;HUJ_C3QCNk0f<+NLlJFMHY5^#j}$ zB!Xb>Dh9ZfO@4ey&QOP3OH2$pU$0EGg2f-WB?(R*d7UDl{c_urs2R!^5JdPm1PJBc zLLctq?0ec)-R`eD@ISC+GNaY;D(P9Emr^t)$c1({gt(v9^PM@}KK08AkI z%U(3ic@OF(7~0f1v(kb@voV%X0}|DG?fL4y2e=ADRLNVBuR`YQm~ zLJ0oXnGNw?4BH3~3Z@y*gwgceLDVIr5ioRTR53h8x(v<`bBHhG8w~C&(RIly)zM5> z{7wS5mU`6h96G_uVbRjRrj`j9@P))KoM9!-C2qk`Kr~%wj!S(81jBuD+n<~P#PBbm zS7H=E{I%_Vb7%kHGO%Dj{+$E}(1o%XYZ)*J03r%FCGPZv01_x`+vlQ*G%#J5fzWHC zH}N6qee>Izb;O%*jPV5faFFAqT1Jd{0AXC%R*(a-gqWKbiZtubIK>2UK?HrMkY(Hh zh_iqgR!jfAGx}*zCFEo~))}u0Ctv^|*);^%1RW^%z_xQ?KxE4>Zi5g>?c@^ZH9w|9 z=6PKt2HIgV%gB1DH04}>WlTWx<08m|I5WM!d;6u|=g!~QXB*im?%o^Vd2J4Mk)NYF zh2p_Dgs3H6sRnr@XIKwBZL@BJK(BM~Byl?-&~0xR28g!{brbIejV83HN9rkI(2r=H z0QhPcjO_X_`ei)*ZQ(k!>5xhY1I!FWi5#!-YC{MH){w$x!gm|Ob^q=j{Wcg5d0j^d z#9sohz^s-r1p7!~Mj#-ScxF491ga4_LBtZc9frS*aS?W6vLP5r6BktEmVpW8hJ6&G zmMnX`!Kf+ov$5p2w)VjSG8p*5Ueln0^8|nGq+XV$?vK z=^)NCGru3J0jlI1CgTA_3}?U{o-qP8>`dB)Y4qv^eQAKnZ@3HPoS-%= z88Qh&YkQsdnkLk`->{T>I?No>X)2Bo%E77)fq(Gd&=crVyXebl{j-u>2n*^mNc zi@!tmR5XITI5-Xv-x%L|0B%Z&c;EFZfXoQR>4$cI{=*#33$9l?$z9~&nCp}^5qL14 zWweVQoZ+_vC0v9Vwc*o0E;3zcV8OC`SE^jeH$^r_j#lNJP+d=*@jOjS1G& z4`_e-fCr2X#Ouf2h0{Z<(!#|V#tQ*#zt&oS!kq7rZnifuIe)A@g+9EF3)1cj**1iI z0sV;e<`Khg>Cbc)J`HyYuG}7kq1?%XObOw7AYO#T`m2jzUy`DLALfua-)|By3TF;6 z5+jWG@RKv4{OucO?k>C@s!hD<2!a8Efmz;6?S5`pHtZEhGza(Pl{I+JdO;EvRfm?3 zS{tmsJ?YHoheoz-#4rJDqw%8_BdtMBA65HKAn6bXm@mu`1W=-y=wq<3$S&v%>>_Ldiy}E(9OmGx#C$B-MuR}1BIrf69uS52-2s;Iyw>A)vCi?F!ttC@ z?SpRz0N`1bg+L^G{YAdHiVz?Gx24~1TjWk0$q?E-cLwDz+vII0uc`83na%<^uhzD4 zb%Hs=Dj~WsvpW$Gg&#o|&p30P!PlK@UKwx%%a2GCJOcm4|r|s@?a96n34)i7!OQZXjy0NRh0B^%G|a zgu<8nLzX08I{1e+k^qdFU^&Fl`Z?o47>oo&dKx4d4Cw0xk3*J2CbGBdVbicw*oq*p zB%W%xWRNwO>1hgqCPwj$;t7`976BcK9dMdZA^>8TJ=<@QQ%j{g^*hJ54R+-8jT?sP zOoX7!!OVBhKpLU{aEd6Sw%T7Zmw=DTEnf+mJQB8aEmgPW&FpVfe!0$`z=T+|4bx2Q zZqqtT7!WM=6}?y(y$1B*!3^%+cafae1D8ZWuMo&)JHH3G@#o+!4WM*U^Z=29BgkBU zi{{4-tX&5DkDv#w<_8qXh{-TLkYE=;LJ>^$L z1+_uGU6Wn!fUg2^Rl@?qHtN2O8{mjSe2@}au#2!1oH_>OtcsYP<&F=L8z6Ol-Sw&m zwYa@khRW8SO>~F;OEHRMmG6(A6QX zZ-k!iWl|I5aTYWXbN{fk)?FiTXEZVff0cO5qVDjcy5nz z6NBF-q_7-IhoixB`ZB?&lxc!5dJGHfK-ZT)=@idEjtK`o@NI=S>sD8*eo-gLxs?AQfx8BQog`t2^!vvC^N{hhts%o?u^OKe*+1H+QBXb-j`CIDoUA z4H3EX0-+l$qsqp9S^M+iNZ02Fn}w$-Yf{V9D;e(%Z_}hFVz2PB@On+32ax5 zv7REV!0m!Xz2wNT&L$&$BlKC^8BYwyDC`E%cWthF|9}?X_)F4)1Wu9uE09j9wCF{` zKywJeEar~^cV^$|jJYQQtyo+OhF}_mJvWLRgtT&LgX!b%^+AA#5D)v|^^z=h&LB*& z;k2#S(8AtXLJ(IPQ>%69lf`cUIHas@KMQ}t=S=1C7P zbLJBh$P#`uJ4l5E_ppg?i10Y|-#Vb0$`Kq;ZZAtrC~j*SW-Rp$Ze;p;NIjc8Mr`}A zZDA>HWDtO}2{)s1Gj9h%wg;Wx8DOeL%o9HIBFDOB9Jp8;Hsc)-IR>#0=wk`?IrZag zb8d@|^x|~v+yOG2B9;i`UN}I2G0qmst0Ja2W02t0EfBPHbhw2x9oE`64ts(~v|)_< zy35`7OG9|K<(&a-BvYYIL6~6Gfq95B%o$XB%HoQ)MXXi5T+B@XEVXA^8%jF^fh^+^yT%Ew;rE=O__U|KLv$kQ0u(R_fHhn1x&t`>X6e;v|oSe`mg%v z6X!_7R-*FA>uawElSqWtJ;3henm2wAv|8Q$^sL{{ z9vH3ryp#QWwwFe8;1?{x)dkO7<1bBzTUg~zM+*f`-cw2cf(vc+-OEn-3g?^SUeiyJ zBKIW_s8A!9AOY8@JvP^#BzSjDAY@%!V#a4GS$J#Uo_p#WmVuA(lJoP=M%u(R8svId zLYR4mY--w>aWqK4C2#s3b!tNmC3mPj*i9TtBa|=5HZz!$?);qL){4`1?QArGeBPSS z%hde>BuE7!7UsqPWfF4QLGVJ8<}>1NXdB)<)!qAEx5n0#f0g zQUU?le9pL^Wb_@PH|ZFs(zx3FdzR&{obYJzJ2T1{jmr*`P95{r_l7i9|2TkYT7j*TX9P+ zr+42k)Gfj#=v;uK&fkr(6(KeyEzIN!>=(|3gOJsyx-S;uMr(~}9R>fJ|gd1@3o`IdVvN^PBmgq`yRaH-MgjG+<=r7S#R$77w5?Ug<3QtQA zL?SE^HGEPW(btpOM55NDB}^hAL=RSbKPX$g`|p@`oMdz^X=B2s+r z0*oS$A#n+wB2ud-Z;pP^(d)^5k)x)~bq{r4B%G6#`=U)vyWt*sJwrIBE;oWDBBioG zIHxE#B9DX?30;52C6H6omL0!|nkOWxrK6XZ`_d4XKtfFmb`Lf9MQ70#mp~};kdvK& z;}IG&N63Suo)z~tIWB=)0+MQjd#J_9o6IUYdO5jB zUAZqcaS74xp?gPfG7IS}Dv$|}Py-~C6_;=%BE|8SkVjfB@)zBo!lLQFSoOzm>W|(K zdW4c3zhRyuRI8%A-^7>UqqzxW{4V; z6h~ayX;p2pycHBj=JlkskkDtvkw!hKyd@&FT82Gg2blYQ#20dzh8oS!Bw&g{#FKr+LiSLwsMekKDaM z!LhqY$c+IoKbtee!^I*TK_|fbOJO6=Tkea`n2&DKSDfoTwS}>xSI08ei`)XpXBVHuN6(rzSQw zruHn(qweqeTF$m`y3d487#XQ`#cAZa?x1R~#q=+`6}qM&*=Pkws=On^IAd8Tto(TH z$ErqslgqJcbBVn2{Lc!G7GHFw&+qKHOFwGrpGp>#ueyp1e&2O3>DPMG?&co$<4Jn9 z$o?%zemDm{vQx_GNWWB;e$8 z$WiZazxer%**hokwYYK5-QJd_xUG)a?+;Ex`@2n!F^{cz4#SokceU)*yRD8fyibDM z|6KG0hhFrjTXq{95ld-{m->Q3+0WU%2%&09;^%7XH5XmMXFJ7{J7iMnMVa?Sa4GgU zxgRIk)z<4%-jHF2g^EY#CC%(ky-@WIz2ff-$IF!BDV9cO@lB>ob?QPnwdd8g`qd8+ z8!R+JW0u#3Jv&RYmPy48u36)dtB(QHyRIzB$qc8AlCzR88|QvQw_BFI;lhX{inIuNcuz z5QHlJgFXp5il|ZwFoNH|s<_tscDmHed$Gt;xK-XN9Nn|)bdA_xw$f3K z3igwkt!b7@dJkfVmI)NNcdFg2%vwCYX6l{#Q?MlXCU|&XN^sFxAd(oZbr2bx{AKE_ zKu}(WN}yA&=86@(Hb$$pTul~Hq-N4B1YTiLabF$KFL*dHTahhB@1(cro6#}ob1 zE?LAEh>LP47+QJiWAZe|k z#Djx%)yvC6jiFu&{&o8_s?GNDLtoRFArcs^&6k?iB3vvJy{0@}R5};`MJMq~hTlf~ z*MWE7pZ^V6f-#d~ne9HQ1N>RPtNn+0Hle zoX4sDt4V!Y#%fO)qJ5>}KQ=4%DKxj>w^2V(JelLrr8wC?QR0GTvr>{AX&bCb%F7GDm83Vsc)2?hufwI#Cdea6}ccGAyPxio>+`p{ZE z;qSfoepp0sr0Myy3mC6uZe}Y6 z|24hz*$@Bv56!Ocb;|o~GX-@WtJJ%qEaNG;{Jt!Q;J+WDWR)kC*pv&E(YNF}P#kow z*2>-lw=VAx9^IO!5%nLlxG6Mg9uiU)4ziB*3iP5IA2Y}PPRsTQp8TMTvdDFu$juQU z?Z{d;1VXAs*3gsAW0Q+Aw|-Ij*VjyiROjS;v7ey@g(jyWGNk*U;1;=RHVP z{$t%T_Gyxd%h*<+@0q|X9Z05q^Ua$E7ci)Eo+GnCGo3*PS%>CVPO-(?L>E`#UZaYM z20f}03V#D@zP_~2U0AmkF~n!I4~&z#-bmGa;>v7b${-HQ!8#z>;!gUYHB z2Evw3^h*OGPW4w)(62b#dq{?ha&V+uM3gEh+x40fFCxtbNo~j9vlGjHty#oO6^xRQ zY}C@w!9H!oyS8au*GbIBe&cCfpy!OhOG5?CB4k&-#)tJq&>b?pvbrlHB)h{JXoFK-=1hJkX+cT;E-_N z`Yzano#Rr0A$W3!xvUoJu)rb_6Z8vDyZaL*5uiryf+i>4xdl6Rejuz!DTVr+=cTOF)(oW_D)IjF}*Bn;jl zBE&vbp(Mmcdd24WpcC!jNl>7Snx&zix%OpG4%!&?^}B}xzEu85>f6;GvRq`^%u6V8 zyUv$kR$eE>phopbl(K$7FXkn!VzX=tp>1 zTh@l^hAh8Q{*`6NyEcmMUcOQUxgBwkvF_*_BZfdhi*Wqt)VKx_Wt4aSKhLrBW#50K%Sl(A<=fk?eKJ96e)+mp@kO2p zq3{Tc!V+SEoW67VT^-=It~OoYv-+9?bZeMwM?uTY#Eu)QfMR zJzIoy7xC{?eAyg>dRiWAZR#H4RL_NKU)unshObIUwDtzP?!_1m6n zbS%k(0tPz%o00f%UHx<3lK2RFrIBvNvh@h1ZnjMJrn=c-m9w&C* z^kC^%Cs^egoqf{72Aa(eE$sU#OL@YZ0i%t`$@Xwii?@ zhF-%2vU~hO?#EnaU9Nvso~t@MiA5JkI-J&gP**y9{cUr9s0n>zbnmTbCe@+}W96Ae zgBcSOm7K55^;wJo_^IgM%}1I)pKir+q=iok*C%4+OWjQ;WRvGyc^eq9e41(SY$f0Q z4T!NTRebfBr|^-NUO*rhk=IOd7vaEoN#cajrNm(c}2?=px+Xe=+TPTqbx(yC*a%knVw8faO~_=v$^tl zF58ylbQ(eNkAF%HGYi=S8}N5$B~j5bA~t6kdx}iw{^(?mkyN%44nrige*xMeI06xy zX$O(+Q<(Q1+vyo~w|yV$Lg$}pT^mAL1#b@h&+K@HM;!uwHymMk6;oE;9rOS4tFB_z zjT8PfQnFN@mVbE~a+*ol9(XJIR<_K->nDEAj$%DhMRJbi75{rtrTA6W#JAnSu7|%r zr27^&7$@xPYtEF-2;0UNkdl`2v}v6isQl;e=Ki4AynT||HZ(8S9QfB|Hl_$q@cdxI z=-AUD1{wR59-Fx8fP@yM74mY?zz8X~!~;^v@zBi0Jc9-K(^xAN8(sHj{o@?4iKNQj zR}IAkW;Cg2Qzv~`(LYLIBMpu=)K8UG4<-DTB&LVsU;Zh(rX58bl!PM3e~^Imo?B^+VGDA@U6lA)R1TT zj>LZny_Q%lI^sP3ZHY(HatHcipZvXr%y}5FtCE_=(3P~Ut1;C-f%L;-ijLU7s=H}9 zcb=-;Pib@;DhA#-JseQk1&p~+t zV$nLI`ak8`M4Lj(2L<*#qFF}J zIQAdxR=MjrWcHwFJB;HxTRYp3JJHhzTEm zoJOOqLL@llh))G? z#Yw7zH@K>Zb-uIwb|wZc3a~h=TM1&9l@IhtOFMj=H4#hlJ1O&fHF0ZK8i=lJsB;)m zz(*2)$nN&Vb*tH6D_idwresn{Cc-9rO3wb>U)y#oGN?qjNio(~D4@NNr&xpXqCMuP zZ%s?Ykyl|$+pd?;g+kVu*k*;3gg#OKw+EsRTnA}>n1l!1X>4!Exzt@!ntu^@8-F~G zu*pg^dWF(i8Sa5CDAB|W(>WBp4>pEFKT3eOnvMyH&v^c*owR&uN}OMaz4*u|P~&0a zV4uG%Q`x<+^H!$z?~bE+GMmZ;PV;Y6I?8fJq5?s2YCCL0_Vv?|7;$nf#o-@m_;@1D zxKjdvs;eVy9p*yJ0;gZYm;)hB{Vk>vDOWf(E?o_E z|BAvW-F)X7s=>D7Fu@c^)AF9vd)@n%s<+^+1kQoFR$Qj1(SV@lsyn@=-(#la=PjnB zhTGi%8FDpaC2Y&>RRFZ;Nk$s-fa>>lm8iHNf)w6<`;?QhQp|zU;NW0$c&;7{AIQE+ zo9fnyPFb0=263YPY||<{PZTC_Uf=}!Gt?2T&meoHld~xW@DB*atgcqHRR<)Sd>g$z z;Lw)OT=P1frIn$~F0GFDYBF)q{Nu2-HFG(}{>u0twqtyE%4Vq?+v*p7ULw7v0DB*t zWe`b)SVYlZ#X4!NoVB`2opkqx(19JR8u752c_YA^&9QgdM0s%} z?>6AJjlHrzWg{gdCTuNOft`IIHH$kYSJAP9?Jhjh8gp0aUOgvxQLynagi0@5rT(MF z+Sx~e+N^^PShVPP4qNEjJ0X!Us#zWttV<2A!*g zRnwaRn_~m|^f(O_Oxo5jh1%ViNn;8K!)jZ}5|~jDn$=gk7908LqV3$00b#<`fI&M$ z_152icie^dTWf_&1tdo7{qB6KHlaiOLtjvn?CiXQ(IceaQk(sL04jgI(0p635dH5J zS-0AJvVz?SZ&D8h0d(WP@vOhP!bei8Z3|TI{E9arsy!cBmq@hg*xm}CWIrjeEhsAg zOBy1fw=6}u2kPA@L%;vil{|sc)MdA0&@Pex)1M*h?JP+Si6kSS6g*t+uEslLBPLg= zY%~lIW$YcjVU=;qdEdIY3^=_id*9?(D9!W-=Z=NQoQ0$bG3fPkXRvi`zghc@N_uNm z-=kO8E2nQ)$-(q57YbsEzQM6^e+Z}6Oq48mIyEUV{kh%+yuDVCcaq#gYFoSLS9wNd z=ll$u&!HC4xqrn^{!4vs~zM3jQr8^|#AtK;4_`dZy zz+2#PCqDp`_2puO-5xt%0M7@YVw{y0Qvi4%4FiC-~ zkyhc0=H5?lf=K8etz^f@>6Sk2(vRlS`D}2Mr7N#7k>j4W>RJ|RtBD^VTE9^~^-I2z zmHQ*0)I~CLFSI=J_DZ(@O-`r|2bI(ljgb> zEqTGVpWc#xIUG=0+7^KFq>vqFU_FJ;A7iA>I0B{#>x2$zop~3o<}m?N#jT}zl(GG* z%fR=u$QaIrC0rp>iSrNULHl2DVRiEM=|`} ztgdfJU#(@3V@rfjR6Rq?C)^f0BrKQhmeSq3OQ@36n`jT|FTfv`mbQ`qXY#ru=Q@fq zdJ32kKlaTH+#_q#1x^~~QIDZ_fYB(t^R^n}E~D8e6wS&#n|Q0umMVhaDMsqP7wkq` zJ9U4cC=d>_vKjfFT*U#kpQWP?(>EmxUwcVoA#&pzpXVKyF8F=3it7Tlw!LpNWf8A$ zhpZk|-CUV8_8hF$=aO*{g|xuu2TC5jgz){7$YYJ7=Q&n5iI2kK@L@44wREl(cSgr` za?ikTj>?!uibo577m2oB#m2^N3-J9^`egi$+1R%({fGHsfenzgyxWCWV2U-5wrQtX z|Iem1#KnTXfvvzsgRA3~B3L-?IdI%~aj>x&RqfY$=X=hab;omE4Sf_v-mI+69T(Z} zgE!q_zFsMEuW;r*+8oq)xJPy_&Q5N4#~)mDz0|a8qe?__DTd2DkW4$eEOQczUo}l$ z!FGg+QHE8;IKnN8n2UDt=i}zcF!h<4{=D6*CeK_JGcu7Twtke9`1Q20{LVcXA1(tS z#~q-)UsohS0E8s?P1#%5#+=42TWT#>BLZ|`)f~S><)QB-t zV>)u2So+`9=Hmj%F>Sqpr#h(=ILoqEG=jtKg=Rb`*JovAm|iUrXeC1gtlpIzM~|K z$I%Ga773V}@&btG5#`G;NqY$oz7TXKoJnG~cvIbC9JQ@77|)-#i8JGl_Ed%|%Vg|a zb_!}mjEV`=O`l(;AY?{&n28vgXHnvZH@L}{pX(mmRswG=6h1j!3}hQ(sa}WlPDX(b zfb|RfqQ6MV7v1H0nr5N66jJ6D=&QB;j-(Mf8;-8eO+!1%9-Z^D5jqx$e{>>B{&UA= zz1C3}G;Kl`nK*WB69aSLwFDr~8`^W0`##Vp^=r4ZZQyrm<~fUOI8vH>t#%J)rty?D zFQ2nv_hibkT}N)3HCiN&b@gi}8_3Gy6Glswf>}jmDlI(Ma?N0=d-!E5WWR-Egwj^b z4*3!PmJLo>+?HKsRe$FO93(108^@YJCI9cpBoFC+KvrMpwQ{{ERct@nR-pmDpbYT+ z!8Yy8l&JY>A()IM!G24Dwn3hwP07b14109FN$-%aq&+8TcpoN^&bH-4JJxn-LcvZm zTp*>iyNKrj8ZFZu@wcoDo#2hvI1rdEYo4^w+x6*}rZlTA|6Uc&u}?$6%JOhv+;g~p zM6++pU)U(QgBP(O@#oleIh=eMJ-Sm`QRbp=<(c(qL!SScPK~fE%M|NMrZ4Dzu$FGR zj5G)sKg@w&^w1As$zawi`GqOhHEv!;^K0(?_+Y~C*~*g7G=A~_+f9`E-8#Z1;_$>V zHo6x$N}X(o3`D-(NwJbAD{t)(xrf{5Hq>)`^w*N_` z){{l@p2MCcdQXx2*4N}Q%2;P8J-uu~c-FEJW@BT23hRy5N*B|!wW_o4zxjGunNr~s zW7==uUY~sCx?G)VTR8(?5>3QsKJkpSYL^Aj*A2NzTSC5H^30l+MyS+tm#fmD^h7|_IpyR37 zZ^HQ9g?v+vjZwBoBhC$8DgRc?YIF)(j?n7o_9*}R>~JqLd(uo2)t`=rCHRZItS6)S zKh3mR?YTh?Wbl=`3T;bjV|^vdsK8wX4;S+gO$X*!&Um9s&9sBD)<#<#$|jM$C8=6jw6-I3u}^tPdT{Z| zn)UkCBn#iXt&YdNPW(p^%@ay*7qV<2@xv>s+0vGT4FSSWBk#l|ln>?dpP;2G3cOgv z%I&)ibCbb(sGT-9r#V&YRZUe&`<}@Yr#qBW9l9&mtPH({cJeazyJ???;tGa9L!~7U z@woTe@5AZ$RY%A2)kq{MZhq$P#Ej+dq)0Nb1pE~I7^oIbT8qmnVRWw^e8prLgEdA@ zobs4azCJ8t*+G=b&B$V|q+#V=$WxS@a-^U(lu6Ws?+>~ zw(94neKd`sjH>lBl2mi4+I9I5qy46t%7smzX0Qqaesh*_$+2KLl@CU$`Lv0~d3Ap| zQN%X}{M16h@{|hNPx~mPYLOVJ#~Z)YVlYx&`RFV5x)uB#zi33!$y*{_e0YZ_@H>6| z4aJjZ@y;stB-DOXW-!*kmn<@(i1=3G%3q=R>2vCsdbN=nGu)ZQEY;3|oU~pqwjwEh z?DX44HWv|asbbvHuhLVnsxoFQvq)`(MVrDBTVu*L6`A&~QQI>Wpx6c5${y1#*J;?` zvfO^#U)K_j1>33oHpEEjFZ&px`iXEDmTP z3YQcbW7EIX^e|E%Uxkdt{`gd)gU5o0Egh`jUobcJeIA{8Jz8}cfRWl%&PN~PV+s14 zy8GYFhhMH#M zf9h(!j=7h7oKG$E+%5D}FK`Y0y+DDHDj>gBBg(SGooc4tJygDl_9tQ~L7N#%I!S?w zWzhVK)@bEk8&P{e2uGu9g&@dvJ5Y+Nl0q}Q*%K`yA; z@^3@U6wCR8RR9$R${uE4E&WWDM@JpVriwERf~AzSC(t*8qgqo$sh?%E4XO|+T4N13 zPAts(Q=y{%#DNJIN(;s7^RVH6&=v>B1d!v+47i_l%0Fg*@+{`Ke0$6z#XOjmKBFw=gZ;DSd65jh+~9O$GTU0rpxDG42pA(*6Pa4u3gtqZ(2?ciccII6tt~l zkHZE&JkQ+Bqjm?jsk5ggAB*l!bU*VZ?(x&e7$J=dVqjY1I2RomgqybB)t!D;O^%IS zX~rJBdOh++%YfsUx}^!b8wT;BzxoHw1>6a<;SO*qL3$o3&M7-fQM#g3u&m+Y?VJF?lRD`#7&|Ec|GTZPMt~WO@_I-5B`%{)Vg(=@KPq2M9V5r60ly9GB zK!=Ib!i|$|Z?21rGK9jkCLPc)n?dMmvw68zJQ3-a%(E*r6>GlsF71)Tsx(f(Qs9R5 zwCvEmyg@3GBbLR^&7bJ$k;e)rlj0!ZiAwkOGwtn;z52*hx^OA?L7k|+YfyMAq1l^y z!HS^D+WfRkTLD2wbFzo9(*%*(l;)*0m{8j@3V}Be`ULYOa=XYW)Tl#7iI%rk}mY4>eMcl0!8<}M!BC7 ziL~1O@8o#qoix7qpWl?{@{|wmxgULg%B<-`RQ5@^#rPgjS`%0IaApwi(!prcm{)e3 z0s7c79hB)YlcH($=!?CL$kRvVj{qFBf6cn|g^I5F^s8xKS6YjJ#^wE2M_O@QJ9xK5 z$$x^cDo&x?F)NZr<~hj$_fnW##9h}#EG$iB(^xxXTFtF38IawIiyA1%@de3=`efm-W} zC2g$UDff;`dp>*kKqrm?KIuliCyz@QJpq4Vmp9tg$~rIIk54_tPtu~*g9KLV8-Z|r z8tBAI^5x`CYnlr6CA6AyvrY0OFzvx+zc;6YzaoU$XOSA9IBI@ zW0&P_yL-{z?s%KYAX_4foEF^>f40v}Mm!ff z@k9gfO~Ft87i>KE-IkA>4_-!rg}2d|T0PJE`$MLwR`7>s!CY~l<@q!kR--8*5vsg* zYu4)(tQ^am9&;LSVQC{T9Z5Y6f7M6drSHU0NnekM@Qu_mYH~)gjYr&Jyo+;{eArL# ziTwLa)Ns#M$>+&|_*{<&O!h~OYur=2PFP+;>%UuH#*3v|;JuP{XZ3Bo+*E+&whb>| z*@;RIqQFb^T&Q-du*S}@>+JUMfzBycf7MA}nknLUgp1FMmpbrpk&78V))heWH&T#v z^ZAsR4*R?{Z>#oSR^wP6P#3GU{|Y^61Hlw&Q4P&k`s^O`Lxck?<0GG`475J3HQ*+(*1vWUmnbfvvKhDo1tJ`_0#p8!gJ#$ z>s1!pet(7)3yYj$ZI66R^S93a(!hRF`Bq)O8DuT+sCRgW??ydMC7s6D#%%ExM~aIK z+Ia1{TbJA9GfiMIO_G)zHt)=E z)u1r0#d<-sabit+^Lz1F4=TsjdtJFA%AyT41UJk#>esrZnM3=DW)&>k0*kb-=BLPV zjIV#b!P{O7I5OU8;rUT%f;d#%7 ztvoEw2%A+g(faXp>(bAbH$LzEroo#)kV{0_`wa*(*Lq&rk;+hKWa;MBxqaLh#ho@E zYJ~8I1##Dp4``Rva|VF>48b|yt_4=KtO=6agR$r~Pc_ULVID39=H8EnC5f(0Ib20Y zv={f$5^H_<8c+*Wtd?`jkLow;7Lt~sk0B3r3EXB(f6 zDPlQdIwY_xw~ZGHc9me1NHtwvU0FaLSbEz#6Q3`cw|1tf&KDgfj6evm^|Y6F*L(q4 zp7g0_E%Y_KJ8su!fsK9zJ|{(tE9Y@79|z69kjYpTWv%cQ@<@B_C=pE16~^zOyZP|U z)JyTs)waFCWWPTLt7c&pW>s3i;pp0 zYcE#Tv?uD6LH4fMGCSi!w(<8?2!w>vfPwTD6TWykeE-&KgCTVt6g|yWB5crR_RpfY zbzB1~EHT1VuVD*|-7(yX(xRP>87dp|vXT$-{jd?5^J;(lV-(_WEaQygz<|<&Uz?7# zGe7EBtt=bpor@1i1dmvIc{i?R0t9ws%(tV%B*tLE@r7rG7ueltLaNb6_15&l6 z_Bo*VX&~n8x7tVhK{uCJ8Pj!rz9=aA`!wq>g_4PVbb@3-yOL9Kgtal?Ruu^=G8P^e z&cKlA=;3;P64?p&I6}hG^li^?4Ed-L@m0_?eAKvlId6%dJUdgQX=bcGDS?STj=s5< zU+sDZJbeeXe(>&8+bSG%bTMuH&s&nd;h{2WuCj2c^5sdOu3-aB)FAtkStE zi^~f+@S$^F&&cm!Q>+0qRwbj(;kd1^EwyZ0^A%B(JweA6bjGC1`vM08c(x zxqV44i|yuIVPCMQ*iql5sFRoIx&6Lyo8oP#o3s(Ib&Ne9tA zcO3FQO}d^lRU^XmgGErVlOaoDQC#sIm+7QtyQ>g&aHEfX^}uq*PBMb7UNT&}LOfMK zwUq3SU0{Fr#(e#^R(%5p@&mq`>(R9uYcXSyY10~Xlms4$ORWX5v7%W{sSC$yR>p4a z1b<3esR34fM~k)Qeh>?h-akomwX3PKold1rK!w(6Fztq)TNQ)jw!eO5HBf?LM{ZcX zaR$En_@Z$K1S*rXuM6NitZU3-HHC=FI2*fV>%Woj OZg%hHERk*^z5WH!*4q96 diff --git a/dist/downloads/connector/SpineParticleConnector-macos-universal.zip b/dist/downloads/connector/SpineParticleConnector-macos-universal.zip new file mode 100644 index 0000000000000000000000000000000000000000..3d0b9698e30ba742bd2aade31339119b6030ecb4 GIT binary patch literal 261630 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

NKO`?cf91^4jlGDj52*~RVp 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≈k12;Fn;hVM12cPQd0oM9cByL_ z|7YCc_w_TQ%j}#w5JTSqk$ET+Q$E-RN?V>eMQNKJN6Va6=RV&+%jA7O!xQMzX)Af( z1UyoN^-WK>%wO1(;4()>4Y59`MHcKYgeC;DqT*8nkXExe{MCC;3WaA5gXzEErKrmesLsZ{hwvbDO$ zi0VAX?aZAp9ih=uwe_*1eSci)}L1hYrQnZUh|7+~Tk#1kVg24P59GOI2oZY>Z8<0{(|^~RL3TyHAxc^bSU4ar2 zp+QHV0U8wB_r35yah8MLMH0q(-Gn_m;}+`m)}-fHu3mWy$*=$hq8Wn-ct#+a{*miX zgHJf*mUMi=%v%!psB%dEdZaO1;RKO9Tb2HfW-H(Cdd^lPj`wOwv(=l(PkKnBh>8LI zncp#Qj6akTo$R#hNnmKVfS#{;KT9S^(jBDFEw&{4r(uDD)Mt1ReY8!=-|#HK#!%GcF#`3?HV)Dg%A>L=l!EJ z0i4&v{#T$btb}THUh&9PAOv?)B{33=3Jn9j${WB)>J~wRAq>1znqe}9w=qu#C@m8S z;Ziz8Xumo!mqbudwC$)W*oZ`yY+vy{vp*5@2(|_T zRhoB(F`R{@=t58*$)i7lX^b}FOSV5*vr_-$W|r4DEx!ae%;ATjU{{aP%sPr{Dq4RN zQc0yXD|!DPkWu{6Mc0Tsj{+Z=12@{L=SKR5wEP)5l_o$}z!v;FP503uCnGHq4k+4_6B{tM&75 zrl3_;XdPM`i_lrv1hHu|Xp2!-;n$K@vnEMjfS!PY-00BV$r5AmHhnqb4fvq zlr1V?~{aCs(6WRwzt+Z%k1o9_6`!Doz5imXRJu5q z_g~2w{xE8PNu6s!4k!%GyMvYq=x`JakHSKtASF5xeWznTXl9u%*eMXEV+QsRFfQv~;K4RL#wY&6*qbipYccpm zM!c(MmLNLa;8xbhyPb=)I2&faI-G;ZcwTc~$od$_Fk*Ptylo zDzuUpyiFj9V4%UI@g)H*PeiF=6%+*F>_E>upeXdaJ6qp#6FHKg3=j~>6G&ffO?NgB zgGV#PXcNdypiY+v3<*`)Hcm6YLxpm>OB)Qspuy@a-kVaNa^C9r2>+EnvX=8Xjy-Mg zZ}uM1yUFabeJHoOY&&>=C2(pOQ9txAKk7b1d~lbJOh(c>|5kL3vbrd&qU>K;aos>b0trVZAVT6QumS-*u!jajju4K_e0B6OIq=*4 zK7W$we*KPm_3G8DSFc`GXuGrS>IC`L<1iGioBt|-`PT}DGM1xy&yA=jJFkZe@ zf$=@+l1>1l6^ilh$vC;&V4R9XWg%x#aOS)h0IfCI$wpFR!n|3|s?&h~YG>6k!2cO% z(NVzvZ9A9%PmhyF`JJ$v0J+40&VXCsKWaase?OtWj?iBRBL(QM^&HEFsocMLJWkjP z#Ly}PG$f|(Bl9=Maz_!Z) zvtvgi1#Fb&+JWuXC_B){Vm#@Q1tlL5gq?dZ8sx+7a&U~{FaLh-v+ayv`Mr|OU}|Avj((gj$D zVH{C-CxIqgI-M=~og;q_JB;Fdyaxbu@h!4CUv@2W)XX+GYSqyQWa3aE2wgz$?p`j* z@4|b4Q1UF)r#yZe63z*1(ps&SAWKZ%?X0>Q;Y{6A&M4138n$BU5wQ)#-!cp<_#TA2 z2#~^Sv!xx_&fPG>V|aNBj+oa`l;dh~&K6xt$e)~z#=Doo_s_o0PN_3Y9So!n5>dc& z3fVB-c7`>lS2nB)=rU}(@{iwPW0zt2!D?5lMv&;RX5iA=k23->-)+znh|nm}jx!XVKrH z+xH?|N)X)su+6hMrQJ#zL2#_OtHhK_@AOu3rP~Cj&n-Yk_yeOS&{Y7uO$eiR81^jgC!EPJuc~sFBK`#) zHb8tgfviR$CuH*cK*Khg!kedP_qCk9xL8q&i^WLpP(S?9;$1;DC3biA5o9CTUQ?oeclLlEiX7h119b=fMw2EQ=H4=>Gf24C%*Xqo!b_>xz z#yijhm%n9c9k{$31}?X!G??Y_*7wl#>dc{71BO07>p9tWF(#w+&%kj2Nnxw$`0kZFLHc`F8m8fK9ZX zRT7;oF9CprVtW4i=@t%O5_>B#aA096Un^+{#ufOY?m%Z0Dm*oxnMyr=JcKsG-`t}4 zze~nnzf$~ZF#LXZ8<2KF`&RUA(@mqEoe{^=09yH!hn8v+>dCkaorF39S5i%4Ft90 zs7v<1X8$5;Xa7VB(*i}5CmleJe$&m(oYejkUW*D2ScEsK&|}&ttMEo;LXFyv-0XTj zA|tJ#)C0uE{J#f7ZTlxxXd_X9TF4g1GcfAz1u*J;ZsCA+-b$A|{M0;PNkV22$7(&I zyr{8JDB9nNZfv2yjQscvIV!QldxpSY{ww@|=;^sz9fz`Nm}8Cf3eA6W09oU&$=b~{ zFDfFPMPFH6(wZ}L%CU;nl-kXz@0E(1$$|3?FoM(w;Ip&n^Rh0p(qj+c6-IV8T>K7o zqk?tMWoJmA+=S-Eq=!bwLy1<=SBhs(y1&6kNWD3-pf&I zny4KRk@_*U3-;cx!Um+QmOuu1_s1Z)^g~}DT62lk;!3=7Sb=$z^GQ}6G)0Ujm=2h| zIcoIAXZEI$dQ*0Q38O@L_9{6|EYbThX{p``m(hvt(1}DoW+GRKB?Nvy2H#Vn6m(|T zaaXwv0eAfn4!EO)phl8grlcp~0B1m$zh+dc_?8xac0_sjgXqytzU~DNPvze^*sCGn zMIJtqz7WEYo@7!MW>`&gjf^bN^`I#s(rDCh^pz4A5zMUoaGCsHmPj>;UT1PBe!Gbz8ULS#Cm}i+(EbyYg!WS)nvG;g1IzDy8J7uG6Nf zH;rq_F>C3>wb;29{H}b=wa^)sT*j4^(w6~7MN_$=JhP&``BYIY{Z!z0<#Dcvy{VRQ zeWmo}KsUXjLau13S<$Opk<1n0ccmv+l*bim-dX9(t42jDxT3XYMJ}%B92 zCai#3xUy18c6P%P6FlZ~)QYLw@^5BioD92=$B1O#(CKJq4DQWE-8R26ssxclVo?X9f}x@nut*af&hpZ0T3}j5;R2&k_6G^LLVx$ zvmI_1qfQyZMPnkYV4BYqmz-Dwa{O#oqnw~6Un)(Y1ENXLgNZd-7ouuf^Z~XHH5gAK zJNdjb^@#f^v_6oI0lywSyG1+$(TA6T?gd_86FRp;iNT-76Bwli67UarzBA)b;0(qp zJEPMs_peUhBD*pIVLpzyQe&Zwf0Iuf)Kbp|oO=`aJh9gB!_qDhzt65gw_1XCbu4<| z#essC&teUCyn?raUJCh3HNE8Um#^t%Du1b`m!bUS1ihs3mj-%45{H)v^7M-{hCGv3 z;9OH)yn({Cg>$v1Z$N??eJ&3;QA#4kk7DKMMP*;2&W56F#I=YGX+EP$T=EPF`sf+1 zrnm4J)y(yJj~g_h-?2}pzA7yc*oN~#luw!aJ(_Wbo>XK(- z)ghtyL=-vDXFh{|b(g~aV}94b0Zi|2!Du002}^cGF?ZU0C+!JOC@&{i@v^FiLOpqU zrq`Wz$pun&>V^6J0vBSisIG7GEX6B$FCC@0DFw@baS{N@N_O&TXKFRjGwf4>fRr6E zNFKo+`Mm)nx0e7l%2QT?H0^Py6LU@b`ZI_cmpqkFQ{GEcqoDcw)d70YhPBS3-N2V; ztRT}FMnbmr7xO-~|9axh!zkF^YO80&s7T?Z1iVsSu=09Vb3*Tw^tw}H3SSts0+J%h z0L!ydy`#Ckzi;;HwN__QQ-tu6!u?&FUU(N2K<^P5g)a;a!87{YcFK;RGxU`+bq91= zffCT=qtT?*=#k%Nj2uPtw1jPE<>k-PdUVP&QoRTDgw*GS&HCJklfh>6xzJg(7y3+m z5SAp=u%O0g1qvkJ*~pq=m6pwBx(ir{_J+R8s;t%7(-sRYo3 z;$?IpTjRW*70QtFxMq>>Y$B&Fx+wvyT%7|CLhhy7(lstZU%FbDNn=cDdHAQZi8-%< zALY)`;p+tV?tA5*otiV{JAkm+&H?$dX8pjdnO>lYsag}rpz&Zmu$nmZZ069XH4bfR zLtq1VjQm=KGwS`ql0(kW&W!7OO#|giLhnyWX}}!Yn$D4C7(rgMe1SqGeAHt z33Bb!rb3(i8@8HOp|kD(%D;ESW1U^n8ypsjKT}{=7WBjTGl)uL;MBx8IcgD%J^?C6 zK{ra{>9J28q8|gQ;1Doh*Ze@G^fSDd<2T~6S=2Jb(X=8vs_9?=rudIf58qU;u5ZwNVbuM)lRV(oBUYOo6mgD!l*r?pm z7xBmTiin-mb3$=Jh&)+)`k|hQrR_)(w)?hNfA6=6bfObdj_wcAX5qlEcy~vjIYrCt z|I#vB*9Tg84?rd`rR4~nvZ)Vt=Zw)EvfKEm52FS8;=UbmqjjQ#+FysiOE~-s`f&WA z0vc3hW*_q1FD~A$G&jbevABm?p9CD7YytnS6v^M^c=?|K__Boue&4@67r=>xC&#qIe6O2Nvz^noRS z;^0O4V8ahy`jEhK!fE&rxB!2YJ=MXGI$C+q4?njnQ-M*aLlh^zB`IgC;Aem`65o0$ zx8YA$Wf1z#wM1S!~w2Z*B zX$@Fv+Wow`M0?jN#`q@cDlJVLIXt@xd}3u>k~oRE3~>@2FdO3Jzv)F2CmZNR6DK2Z zs_NooCwkGu$zJrLiIX?dizZI~j$X7L+{}1IkuuPYM`NvWeb2CYG9M33?jp@Wb)Y{3 zOjElZP3?wwI?JdDMB%92j+ri7C{rM){Wf4%kuRw|@b#dUd>&Ie242%%KecFd#i1s8 zX+81Wu1BF5Lw$yQ4qTa0c zW|(2Xw$QE)&<2J4-mX=;#G~I^Z7OK|JJ`e8nnMSAn5vM1I7D*`_EytFQyxqpf#afb zj1q=VMejts1RxvjECoZ#?jC5jNp}jiDO-B5Qn2VcRtnC2CwOiDHd;923C+V9$E&wA zxA$%;r{Q@rFwmG4qR1&?_(tc$X!#^VMFBkeRs0Muc7eDO9!%3YSm=X_W&$<^J&pjf#+c=>@Db)jLSES%viXW$v>kU0~-+7GP$RMoP?GU z(xv}m|BB8@n#n)aSRL+PV`%^SqFq^d9q(Upjri{-qG(%*gjyJq?Jc@hN0OUWr(C;q_J=$gA1O zCtZ;<%Cl2{aZjNkL}i4ApZ|XR{P9>(xc;HME05nu@=%I)ijEo{KTYHCR@XLT^c7x( z@$0>j#*fIM9g)MVuEbu}DpN=Ba8B$@UWF{J#xtjUasqk*#RAFOCp)C=6rF7!i1w?G zU|ATq=#3xZtg(f6})IcpnMEP(LCkCd{== z>EdP(1z=O5%!Z_*nkY;`-$T+?NP7s<{E>LdSe+3C``di>qMHHRfDAnTwfMc8j_`g$ z>Dt9=aZcaunia6@dV3@uH_EFjkA#|!r>~%9qa^{^>TzXLS5kkx*smeOhR&%MKW`6( z?zSw@;=_s3R;9v@zLRldhs|sxuisS&dTOKFp{xYN!T1&QMAaRFF(}0foE;yPXQ8C} z8bED@^6XxBPZvZy)dXoNUn>i6++Zbu1hpHVSFn#?YmF3 zL`UvDpmLv#bxSoxM;8?}E^^zwm7Zu}-3~RnBhn%|?u(9F#iNDh`d*4`NLI->&S9j( z9*!REtoc(NzUxu#lt~~5dUHP@2YT@z@N)AE< zj^?!mHj6th+c(>eTetIetG1m-T*GM99?|bKdx?@|(b|CFDdc5D*EJX_nZNkZjS-Em z$Rh=bkd4N#9hlje@lPZUC3lF zhRngGixkw$bcc<`7V;!3o7#_N{~Y25gAkG%jq%wJ<8xWuXpRpa^&9@N`=fOx4B~?M z#;D|VY~?2VDzR{1%s46Pvb%O{+e`KrXq5Nn=grPzwfI`{ zlmm$CWLgai6bt$Q1b~i`CuITe(V6kCu65t;fG$5o|89k`4rx=J&s1u)GZmLS`r^Z+ zwhKON2;j(ApGzk4DkuF99U{5-q?1qO-|axUlQh~my?WkwG&ooH2F6g{TqBMyb^N9LaV^xXS8_~1)`5n>(V%5&6GN5 zN3yg-o|&23I`A!|178g;&yA=7 z`#S}NqzaMCqP{SR@@Z#c>J6f=w1m`FUkk-cD0kUX9w|Ef`kx)aP&HvF#_z3ypFwkS z0D$FuYD~NF&D)*<5**#0kbh({As^FI8k93O?7N6|wX9(zjjSo8RnyiiUMwG!KQSZc zPL~sa#3O#c7h@;gKhZJ1+S`Q45am+b<+XLTNT-R~$ZkMUM^O^>W4~7CqB_1W{ zY)}O6+z51fXcd;^lKQ?( zG?wWDGE-*i%sz`w3i4ReIgk;JM?oogO9IySaV$!wGy7;nD@}&oXpBDZeIUZLqr(g~ zDCywz#RN_vdJqPjPIVC|S^lED1l1@-@F!4D1zBf2Ce~^UYjHAvApVm~A9#q1`|<}= zo-6iPQzPWWLDS#Cf+5~|XX+8h4xhvXvIrmJ2OquIErUkpMm8Ze?q48;*c z+I!?gq^kG&@oN8`%jmQ;@VCq8ay0N)_)%Vnp&<>7qkZU(z)b#aHAT-yo0bJ5`lB2~ zxmrxGJ<)9_?>A7<<(M^ny;U0$k6jxA&mc!}$URNHLm!?$MjON9{!vAvO-D*dPxzNU zR!>BuL%EPU$xz|_-D2opDI6fii)p_U!Os7UADH`{q1V5=8J&OV_ zTUfohLtm{HYT&3(A;D`MFN$In*^X8;@oki;6WhSLVkY7RHYJsgIa&`iT+b>bzjJ@;PeDiweqNPdcB^*;c#c8EY{<_$-$^yvuz6YWv)!04(0$ zeZb)>=%d6!$J0~&Lh(~{%Rj_k#Vw1ui^uIRZa4Sz#i_aV0P8K#fy&>d&5u6gv3Wg=o?#{@bc47yr>fx{O+O-vkMD z(O7MR`ze?#i|*w;**3^cHz-VhMt;P{Cl23&KCn}VHMB7jyYK0U`*zyq{v2uL7;JzC zdwBo1QU9}`|0B=~_<8jocz_g3;m=i}MSSzmt!g(Ihq4^qKvKB_V8MI5p0zZ9*8{kE zcv(YCQQNCFUC5`KZCd6F9AsIUWocm_(n>y0m%asQxe^_?75NuB{V%W9G$Yyai*{g1 z!~V)_%PDn2Ugea=F4TjXpsbDJP9*>e1udFZCEfqB4Z}<@ODkI0s(gCUSFmvOO)o_T zwGDXqqjsnKVmxXsm3yqTb4?dIk4?irL-7xY&e0v-vT7kt#@e&x+#F1&KT{pjoIF~| zJeA5I3vWnfY=-5p#g#J2uMVSaOjIJPhNddx5prmrOfJ8*5Z}ChCG$-rurnbG2i6T} z_4W)|+Q8=n_apk`=(kqrEM5@h#}+bg&sqpyvftEMb(Xy$D@SjCkA)cd9dDR@Lrf_5 zFep@?2Fi>OjVSrbe#FvzzLWhcw9>(mhA&)gZ^{->;I&G1%W|^eci4Q z*<|(5+DA(IDae!aNEjS~e5X-T{Nb*c|>Wnv<}#ZE+qQNgemS5Sc{51xIEjxOVAKhTOMgjyU7KUf6sF>3;83^!mA*l(e5Xix$}~dRCFvQtg`3pbBVz@}uxZ zrF@$=BCJt)RAdKtWP-A)iFaAykp@-Lj9qNfa*Illt3!eni#23MCR#ml$}#vx`Y`oV z?eSs4>blo1~5r>?A6K-B!AAQvDr^2N=z%`puTO* z$3v7y-;xC@OV0ako!_99HwHGn4)&JGB8Q)>#gJ#oj!JbD9ff$mb_;kOLd(o|>w_UR zvD#7DODw-XZ`Pa{In(Arkt(qq9^A90KQjZ~s;eD)aG6>y!b+&@_Xk5^w&1G)`B1)# zSpNGVciw#W^`q{>^0|J;&KJ-ss$g|`gWu{FT)r9Q=%NUX);g)_>2<%r0{=JE84V}X zGf$=3X=z4v)UA&>LpxCC-Y-K~7j^5Xgn1`ulrO?Q{O-%Bn`jJq_N(7PiPdVq7WBH2 zy`tbk=)Ft<*;fNDdZL%v!h*jIb{|obThP;_wTKTOK2Le!U4z}5aR92<0Zv9hq0ai* zj9_=HhV7_&Lv>^`JY`tJ@str$ozW@WOkTc%(LLFcx1d~k@rq7p%@#>PkC}KA7E=2( z525I6UdNqRn7{^KLi>=G`j>K&2^w&%64piEzT1k9WQ#ww>N_+%r>$n2AI`T!?Pt)&jVKHyaP`A0Tv(UbqV;xeUe7-g`9dphhR|qLue7%zu~;bFQbvpCj;R zxQ)JD_wPr7u&231Hzg-wm*AoezgcU5vYW!X- zg8!*Ep+sDRz(H6Eb*tj4No6mlVxUU73d3)%ps#Onxe@27h5VFAhYd!ylThCc8VYY=K8gP0aIIWEv%P$>Sn2a9bV zxOu4eYwzdXCRRb3_~{az%^(ru5m$Q*(441)&XaZ*YXs&?6fUI$t=g$MpjoR)6}Z9y znKq*eq*;S1bYfLzEod9&*Ul5nE~#QDv?LUl@ye_O@)`71+Iwnq&~FCNL297t(O4Y$ zK&h<(y)I=+XX{Ro*ZQfj9O50&#F=Uo-akrTZxvH_d4^GeE*b=|@ON>_?!;*-NIDf( zN^ze?Pw08diSx)-F+dU(F@QdF4*3&o#2IMs@E$mFh438b_b!H?S+l1-2_xr)#~Jz6 z-X#}s?WC^9@z81+XlNlrY#6r4zt8-(X=VC3q7}D;YDzazDPuwBqE)}#C8k^iG3JtJ-7kjriqfWU8?m9qm(kmp`({zjvpS_lXO(i7Go{f5 z@{Y?|?X-eiQ2Z^Ss;DwTEZQ2OewJR5K<5z45#M+W23!Z-9(FVRQ~aDB`bsFS>SEE+ z52Ekm0IBk)Gc>=DBo3X?gkqqJKsv0}7;=seTI4()aSM+2)C;#q0C zDyO{VFQmU|6swd-apQoFUnk)I;>GXlPR!bh6(;+|x&Vrx?9q5*pl9yi9-bRfM!t=Q zX>Fv`+#_j^Qk7U0=*yR{qp`$*Ix(dRwP969JBu4FmJd&b7VUdh98e3Tq^iZo7HkQ{ zidDx3Qm#E>)#+Qrls$M-g_Q96FSxZR#pi~tR*-bhz__3Xn6h|8m9NweKj=fvQg;H# ztK9`YQpBQHPGM0H_%Kjo>Ccos2PDDLqx@)ZiNz9m1%2^y2APUT<6`L=f9YD9X!_*R zW}Z@gI2h9AhT#3Pg^qyuWfi@o@yloQGL>H{=miN3UUpjAm~oY-$!Y2Z&AzAV6b_NM zrWpjv!BZT&f*U$R)fGR`M5huK%j5}=tTs(n4 z+C00zIf*hq30|y%Blcuh zcAX;jgs@X+bmULity~I_POFiKt5G(rD>-URx>TKBcRE|16U|q4KCo+7c1H5RCeyIs zA(@6phvige$r@sqas^Fu=?ZQ-=Hg9lT&yOm4@uqx`k*wsXSzwdXL=0J!G@e7sh%$~ zt)ez0FH^@FWYb#Ld{h&xjH_^Ebds=nR#BjEhCk|#!B6GS&CT#<-Vrs&qJvw>;MQv3 z3hSr?e8(PU+j49JeoL_t(fXaf21xbF+IAsR(krbbSdJ?G)(z zL0qWwsnQ1l=mRt{^Cqj4T8_|WZG?VBIY(Bt5!wSIRMy4_$z>~v__kX;f77d#^KgtX z99!l|x?_^rKWfg5bbnO;!62fgS7-K*`Hw~lfG7(eDfGC)BZYhV7+b56@|7LXK0f#F zpe_#qRJcvTaYF@hnzH6Z_^_3q|8Iuv*%NIH+wZwTlud<`-U#D+up0M7w_}5{Bv6E>LMQ29jwyP0}tJ|5vhOZ21Xk#KWs+j|L22*;P(oh_o z0FTjvw@=6a_r|_$XY6-82~df0p3R^%`RTxUmY=ZCYA;w3a6bf4Q8q@rG8OjFDF9HnU)GWM4AAF!a+%XO`gDFhH9(W?uMlikS#rOX4p ze8olMfH#N1rxaM^u&tEyC{_;NSZJKn@=97Z6`860Gw(U)Dwf|Mz(SK%_{x@2M@Whm zh0HTZiY3G}bW&7ajBd>_8kEL;#s&doo5G*l5Yq-KZ4j7UvHZuPIcXxEYFjj~`B~e> zor>W;-|-~xU=C~V>z~9Kl7O)d0f#fsquJedp?EWVPC4je$X)UpT$0rO&GnVeqU{N; zk*lzbP%OtFz}O3$-;2YZH_bh>+PeesNu2t)h81N7i+gD-W`k5W;tr6_?(W(KYTEzY z25K%G*IViaBSI9m;fZPPX=A44&k!YBu0PFo`)$?UFI%^)b~Z#p6!80egap~5$+wQT z(d0|VX|m14wr-(yTSRw85kk=@bog%FCN91L?>3?69-B#0xY7biS^jI1(u6V`*Q7`$ zY9=RC1%CKVFr>F|l!^9?*+N=)3pw0EdRPmh-a^^Y3#=5Zjvzaoq4fF-x@4fIv&!gi z@QU3p%AbEg-v6ywbQzYMm9eBEqgAKBd6Ac?qznlaFY>0V*&sju)?Hro`bMFmdGEy6 zd6}5k*ysm6x!_%1+i_HVMhyJ^X1y!*Wk;4j3K+SsmuzAVv^6|M2q=> zN-!7G3bw_%=Kq2-`3Tm5yz1EZZ2E&&?za43NQa*L8ff&bo<}v&)AN)jva$&X0{!I= zbhVpy*LaQr!WBwT?p&8|4U(EVy~TL~%bIUcGgQ0#uaJo3r7Zfv5OUpb>H_XlKNy0t z=a1?eEzUC>Qd4@}scdZl#SK~0#9z|{iPFV=A6j@73oj`j&ff-dHc z@kiY<1b0no+G^KLpItthQEErLpF}GjO*S7-r)Jz!UnkZbH8!D0&S)x_Oyod*?TtIh zxk8e*rR~frMV~j1dy#~BljW(5yF3kdPT$L@-*t|B8IM8o^YKD5O$ib2Qd9k%p(S2E z{WOz^WpswM)t{EcP1>m`XfiDxC0Qi#*ZejYhv|mm97mY!zr8-g*0l>J>6jjuC-`fw0JwJ>BG)a z{yX*S!s%_V+xDZ{x{X_Att+1A(7ct2ppay=B>I3eDG%4@d}I_CjDC<_M|pV?i9&Tl z*!c@$Vo<$7f||@{(Pv}J9sK9kKo6omUYqn)s{-3o9(g-l9ZpFz?;{)93naJT6xQSx zlmk$1@n2xMg=gdurRMQq$d?npnRMqe>(0-*2Nqolc?QDZJh#Yznmj*Lhq~4IGvY~a zo&=fPHz4<_fv9)@coqKhY;7pOP-~ZsFY{f7RrmoJ_K2Ti=`RG?i$R+a-o>o zhreFm>Z{0=4&zD><#DA$vC?~?Qe~?Y3W>}PD+p*6#Bv2^^QeM%vC6hOz)YwhfY*uwkK)rqu_WW5dF-Uv zHh9~uhm1X+lHd-8)DBwio7lAvQ(HqcaX_TD0Ggf!W=H7NdOrs^1DBv_wQ~Tkwg-+Q z7^5Pz`{9@cbyahNHF@F#iP1)_ zJ)?P0hCv=BiAZoc%Ptjo#2RRfG_szKYW4Maq)80Ld!oX6^0me6$;yA@7+S)+?JYob z{Uyq%{58$)@nguV4%8A~&=TLo3P>E#vp?P%mho8QlP13I)(Ss_g&#K4Z;CR>VFBK` z5{+8pv?4cR5j28uxY+>MB48x*#E6%VUVPoh;^XNddS^4D%b3#nk zCq&(TC~=RL<3NOo&hq`hXHwKehVq5*Df?LjqxQ@F+T7F9{~TfLI(RDMx|g@#+#|&4 zdxS^!n|p*feUC79zp+O!cP1(O+ZOA3?hg~|t}=m=SZCR=o$)+2up?}sHiYp%Ya41k@4hyAmAB6TloAQZNA?+NeM%&i{@8tOpf6=# z8|<;qKJ&aT;@g&_+)AE3^{qvhCY58eQI*j`X5IZQv!m1BqG}*=wbc_e`K=7rmN;x@Q72|r_6gWh(1Ey_s|thztUwQomr1W%|tFd0{|X-^UGZ5 z<}=48`tt0EnQ5;EHJ7~ckAz=yUhs|1@4rhV`=nabqzr^qJmr@?wODxR*Bs*4H+`IqhP=zPmdwoDgFq#Bf5akr2xXHY35t3GIx8c0&MO*HAkpw>Og8bG{BnLI+NWGZNxBp`($| zkrO%@37t4WFcJhvaMu7@_8Lic%CpzROJ`0n@zRA8OuTgE1QRdaIKjlrb(~=0r8_5> zc!Nf~XPB1ajixW(Y^yUN;BYil*#7JLGFfr1P69^+hadi{yoim5_9}?Jv zC$Si+ek!u*s(9_nr?gir`nge*ZyS*-j2IBTr#s%4p4+igNBX_4JOB3W$G-z_w@Z|qj{+b;eVVSI})zkSKyB8_j6=C|GaEz0;7Wq$jLzeOA0qRnr6_*;ze z4JaRy{ghl8i^)Q9ceJC;w8st!#L-^(lHi>}{&}ZVw$SGZ>l~GD1gV~daM;?Dg zM~v%g>H>u?bgUfW8778y%2Dk~Fn;l6_3PZFMsW4#NTi!oTlhlz&=5~M3Y?x@qkbw? zt+wV0zf=PEY~_JaaG=$4ohUda)nG^g_Tq@Tuo-HQoK9;FdzDGM4fm|3-@k-C7IHeO zr0hn;56CZ9BD9pQdP;!hIQ9 z#CmRnzNAb3FmIk`0B#3H*Sw!ZHUt2ji?PK7h34G@IRZUNZxe6en#^ziX$}C0SZDO> zpEM53@SCHAmP^Mnw4R54I!ew7iz3zj(-+O+kjv1n!U_oN=Zq3k{1{7@%=8Psi-pW3t zq$2NMGjTROo(VhQ~XoxkS2uvX;UZ28H9N(o~iD@-Y7w$sZX+coacadSZ z=hnchLxmLTAnJvF)6XobRQ(Iide0hacJ2MO_m;6*DDT0fn`(GX!VO->wySph z(+~b&l|BAN^Jm3l=Jm%Hs~Hbd{p6EaS-Qi-hZe_mQM?|sH$n0EX;0>frKZr+DTX@5 z$H2qzsm=R$nuEY;%^d`GSMP2X?@;KC^3Gr#;j$-wuA8TsB#t{ zR%(#z@chpwVJ~~YJW=L!#$yv@jLiFpdM4iqXquxpbpfx#(lIn9?GA0AZi>3 z^sU>P9TePjA$De}%lAbgt!LDko@z$R_>FD$=l1H>{kdN2&+`ji(&t#Gg7*#^GNxKR zgBmhK^hud9)atprAtT=E5zU|~Cw9<)n>YVxxBblyEGv>vO4x1hpx2>RcNOik*U@Xd z)m=_I?2mTvXnv}$!zoze3^t2LKP6Bd47KpLv-o5V?eWl4j_o1+T8aYXG!$6!YLL=5 z;`K%4nR2q0Tis-wk=HcQ8Tl*3tNs~X+r-XG%zI2I!+ousBS9y6)FX!N57yz*0v>2a zKWzS34j+_^TB7OSKVn$>V1DJ5ZM-)w*-mG7Qzq+YcZw&27ia7Txdh_XX2W(iN|1+N z?8e&KBU?#ZyX!$(9`YY#HxK^pxI8Gkw-e{Xl()8{0vb!)zg5!!FbpN-begY>+S)2! zQ@P=cP>X??yw_P3ifZQE@G{vUW3aqUR_$^eMpd?p$$Kb(mGJ3VQI5Oam3qu2WF0f2 zJ7J_lmymH3BNz6j;xAeGyc~noqhG^K+bnwQghgW2u_%{(t8Idu_=L0S$0!U3>w5s^ z$3z>3Cc_Y8Hoi9=+cwamozSB`Md8T|G=J{oG&7J%$ z?9OaNACjjw8>2yQ!NJB@VtQz|N!*ui^Tn#~qeN>Rh)5|rTi6?MyflU?u9MI?&W3iZ zot*y6P8^u1bEYi;1M+p!VVl^=04}prJZ2>Dv>-(@t6mliv=SwN@L@p(Q@2Y*+t*jcyZ*|1b6q8gX%50OFy@& zH#E2Bh#`H~xloQMO7$25;f-ych?EBM<>jey4|e*p;+-S25t+gE}Aqt8w}swNYTqRE#-Tp5Nc+ z_@*RM48fvwB=D}K)qU-3-|epCb57|nEVDuh8pmVc*YMaNd=MMDTTHDnVo5H-5CiBs ztRosL{a8ssZ^#c>w)H1yF})6%Rq#GfLNIqShqDxv2hcrJOLv*mWO5Owdyc@!ofL(^^;UEXb-^Hj)hdSwm?U{aI=FJ7rrN_uK#5{Or#lrSfGArj-d(l)WJK27JJa(zlY< zw=_h?jn1OGER2%tw=gHYQTv^@1)Ir8V=8-oD7u;uQ;)cXa-3e!QBQkftK|ulLBN+# zq80h$O&PerP=7Tj?la*6F39lsDj6PmOPlb#zM0{8Q~UjXvk8yp;w@8OzhXkI)_?uJ zxl`H;>w@Dx)7jfPVXd{H$|`u*BbSi&rArq8tStx=U6g5!0+?P-%ixAB+687uWwoO!A~(Hihb=c#n!VNU*uKbO!97uBru6eh zT7s5t#=Bjf&XBN~5>!fXXG4Or2)ii{e?Z_}%DheF>qH)YtClcr6FY0`I1gQ}_}Ymh zvugz}xgT$SYuh<}I|dkZ$rvXZhR>ftl;cW;ov<;4v1$i>{6gIT%5g)1*C*hG^Xr`Q z*aQrPc%3M97X3tAYP{$tfmjt>QYw-=a+F{wCw{H<}HpONJ8285ku&;T$@melSQd)?Lp*b(PJls zT`cyd9X29l9j06KXAaSih2QM_lW>@nUqcUTzUCzFh{I%RI{7f&xyK)r(fDm9=U%Ag zhH~|xPz_BOZ(2QN!5^%J-*W0%w^py&s3m)kausLv24(LtZbCVPZnRu-1^Vzrt5!%( z*(p_g0A;0JwHTn#%J2O5bBGrM7{9vcscPFSQ5xsb!!tkY3qno zxCjvi6YtK&BRaP4*xub4R$q)yoV-;mx*S#TFLi(`^(aOVl&W3Hr^O=RYHw_{?JB$s z%;Qiyx=%;$c6|g2%!HJk%JMIeWM8~%AT3*lcis=mQ7I z!$WxgZw1t{95n^)`FSZV#0?FE8tn}BFxtOuppCgu{AZfFULNHjvg__2`Gs20mPgr;u~Nr6Gn&f$ubY? zc=V!%6|ir)lm>N(kNTiBC=c(^fwVa|?#f@*lOjS6rwMezc!Z)5)MID6;{G1XFhh=-?S_lk->!m@7@YqFXk(p5oM<))1pSUQQRY#n=0H`UA-0i0UoMb}$Na|OfU!v4M= z9=XzJK&9mJuf2vkr|)*a7UEL5H6Q&J(m1)~{1FWqBX}PvDt}#1RU#hIPZD4b(SQPf zuI}Hsfxxl42jFQnJSlV5VchgyL+cT7nAnXFH)qCl_bh;<4pN}1f5Q)6!#;RK zLl|MIl!=iMwjhsv#FM?FmMiDNsag)zavuY1pDl{L}}=RvKU{O~aPVn6;oe zEM7kJ$&9Ubbc|Y!*O38XTH-JrVOO3t5e9;Ek$(ixDmvg&F8;HP&i{TL>F0@p?1N}a z`jpM8Cv7B$W{op~AzvAhJ*-gnGM&y6G;EL$82q#sGs;70tX3i2Exv@x#TUoRuc5$M zbh)FjWHGVAj&Xh9XL`5SMC-25_gr0fal@EtPbAzo<5`bWic3uQXC}saX5_m!cAz5i zZpcIa1s7jJMl2ND>3KIid**T#-NX&!=Oz&GV-!TJ^2UDB zg3lM>*)xc1xKXf2A0`)dZv@jE$W+=hv9?bt7jNal_cT^B$k|#1qs5%xjyY_BK9_ zpX*K-JJ&PE`1k~k5mdAbGN>-j7zK2T;7l0Dr%bZE4ZjZNuQvlUKg4Lzh#O|iOK{Aa zH+P;>awT@$cpc~8hfIR>38=tsm`;@OFci{`t^CUO)9Gr|LBkvbCs@aSk_ia&Kjwz1 z+xRdN7CK(<2E7#|cffH_n|gfzfK_vqF>>EdJ{Cb-4 z`AmO)0aE8+l<`z_E8{sIxSRAl!-qwi6Nq*O>mLt>GJR`4Agq)fV9tS&4{n#Ko7f5~q-{ zFH`yj7VZ7XD8d{#8mg1_T!2^8S znYs_)afHEx3lXH|r{EzP&V6eG#w9V}+0XDi90rfmx(DHb56WW%Li7`34ZRt2*5zqO z4ZRsX%F*#zhJRCDS>uly>U4NgmVQP$vrC!HvH_}z)5Uy7a`w2fhQf`Q-te`&#P;}% zbn*3uE*_cbT~uQ;*=7au4;B>m~H1;>c-=lVP^Y(hFylZcsq*2&Ej=cpg60%wU(^C2&T1Y?S+XiQ6kmt z`9S@j00LKZrAK}bIj(n!TuF?(tO|cp6^yh?=0aijYqx0k zYcJtWWYAjuI#g}FaUF`p32Au^FF!C3QFCz#a;8^D^+Q_Y<&(t@=?FVCUa*GTd>gpO z`joAo>OQmzS+rhSZ^SI1N+KsKIE|>HdgbsM(t3WtUN|sS*-lB}K8#7nN#7cQvk062 z<>GmW4m;}keC_$QIH|)N85eIN`M;U`T4;cZKq);wB^q8m-t_28l`bD~$e>|*l%pq_ z#ECPo!D}}LKj9GCzx|yCfB2YY+3?5`=j)ii6AiyQ-gM=Q$q%hz8ovMUWZ-z1F5JI| z#@8R7XV2sHbO-%L6tbLkO5vtxOzG$u4ZLE>DCJiw1FtV% z$0G-WU}9by4&WC&2(o{&X^ z6TLRASvDL59PNrvXb{?Gn}dMK-+au2u;&wU`chAW@LdxO!ZA7sShE_DODqGk|L}=P z$-X?rWewt9xyQ$BYv3Dx@NN*JQy#S8n%``O3b`VQn{jv|4_-CZKjB>uE!78R}axYS2Psk9vT$Lt2K%}aGl zK4v#?l6N6-DY{!nHAxkDBsx|OdI)q%@-45WAGrp9tp8>=8nCaa zB4q3%4+g)ALgsfEca!;yyIby3VckgO6#$5I09`<$zvA%8a~gMptk?61B?T#meO?#JG^pZoZo*>(d_+Leb|JCd2G(cUW`%g+X%cgq<>! zA=DU*8!a7orq;WJjB^|Y`XQSZ20EU?KobZ+f`6+g-;FRUCpo3_S{UfI1&8w==~J@Y z6dag@%huA*aSbS%l4q3-t7$$Cr%eRPPns0P?&T3hr618yQ+=!q!1_=b0MkyFy@lf8 z(Zmz6+rXOQ>J;Wl@5EAR>N)ZxUo7z?L;;=rR6CRFx$_HS&CbW&ULtenEB?k4-ZK_m zk~Hsmh1T-`PUXuV>QlMgoXTN6*8p`|53v&f?EI#W=q~vkmXw3)b=XImG?TUP;P()h zCpajiGmxr`HK`GG0WtMUVaf0KUJ7Q|d?RgOzEfs>fWK8p0fZ(D5#EhLgs=J=34iD2 z_X%WCKyU&J#$R~p4tih3q+cT@A3&sp#|Q6A7qMjGreX9E#V0K-Wr=#W<4K*u2)ae3xh?zEzW)d%XpLqr}7`y$}XXGVfoU-24$Oz)K4E6i_~&j2c#p=2`r&B&J5~%CP-RMs>bh> zE>o_tK&*OSUm(^VHWmnG`uYN~f>)rmhud5rRv&Dsm29;@j4&1m+|Vg+KFUhA<_m=V zePe;Jn+t@+SRgFg05EG0UvZXT zdLOZTx~W(urdRGB^o*`p{uG5n@A`Vyldi5eH^UE1({7COdSz5yzmm>HXy2T=&3zkT z4^5)Acrhz^WMNhpLYY$Bug;G*&lLja&xJx55}}lLvRk8|14qM{`_}n41lDr&IXa?9 ztrcD(3pbxk$19SIXEDU!_c0TbtiQqFYdsUyCt*?_prz?I_0OIO{R~Y|ksB^K%f9ENdSJ2};8VbJ7WLl%mGX~v zkaMc?^tfP1eMmWvKldr8@MoOz0RChuN5)b3?E~W|{B|Aw3{iHCqww3q#!>j~P2(v1 z_P}uze*5p^DExL0{E1dpj6(y3z(Vu--xu2D)yntKKOX!EeE%!@bHySWP_>_fz z#&D@X4Bpbkz>k4aJehigqjd9}7|hp}N&S$4we`i!HY}ckwFRwO^ktfYLh)zBKX@8; zeb1PN>}nNF7^{txKXF!?oXWe#dshzy5W@ZOC#ZO1k%CKTVU z1;fF$8KbMK1twNew65fiZHh2a>aB?g!`L?wCe!mC!lC>j!W@bz%T0NEOJF`;Lhpk; zy2t1dR-^3t3zYjmJ{3JGvo6V25a~~Pn+i~lRM%1 zRu+DOiFS^XI#Du>`t;Meb&?mp1xBNy+i7heLI zI25^7$1PeNYF|j?Kk;D&jdsUl6VG82PV<8816Cf^0sTn;L3b3Eu)4eJ@O8#kZ2>%w zGV2zKLp;H${?mZrz-c`L({6Dl*_!fJ@2j`NSi=bZK&;`PZ<{n-d@FyTCG?%QO`c&W zmtLmC77DUw-!`;x%A`Nj-@hmr8u*Yf#xw!5+{aN*nvzWkZWYBD{3UWAt%<(&w&oc44f!|UE? zC!J_oy{9QpEz@kNe6RQShkw(@(_o7zPh zjEDRd#rzWel^5|Mj4=MFBjuE8UrP3+S@9IXcrqqNsyeiL9j)$YZss*VL{h1vo4tGj}dVR`HHF|>) z?4Y*n0KcS;F_j?LW4~^ zf^hE}%$x4!#*{ls$wrYbEj+5*t|^M$!k@eS$&3$Ygc|BEVmu}b`Ix_@jW$mGiQ72% zhS{OLZ)m2V&HIC#Exfw!bgSb};pi>JT6mIQBc7BwfA`Y;`U@DXjYs~8H+Y)`1AH&l zI;EER-MBYc3es+th*G>unrTb-MJ1+VWHR5P1hNlC6HGfz3_F_VJEgH{YG>R(6jdiU zrTJ;}35t3ufs~%7F({}>X>duuDuYVNAW~>)9Vicf=C}pzAy2%{?gjkhLm|jlG(Q3; z(H)3i?XShFF8vclW=lvgh|LvP}t$dCZ7!MEFS)CE!=l2M3y$W#s6Nx1mjl zV=W-A+$DR~!l2etd|}+S=KL!ZLOo1D?Qh`<c@Zu9dG^EMfN2xnH+!FTMDrLPGm~ShYALO`Or4+G>iM8|U|a20wG>%|e%N zW$-v_PPKP^kdzpIn2Is%;aPbj2jl^H!c6qLHlQJG1fHnjO3gy{(k5NVE^H#7vwnI2 zD(waf0Zf2A5l_tUa?QbUXf}g&vgAb}Kld%g>nU`x>yDzv7@-(eJ4;ccO(_0>9y$r$ z4zLw1pO7=rnLaGby1_YN{Qc>}CPcNXf;}PZ{nT492wSYD2QFwEG25`tn=#X{XCvF~ zb9cnAk)CJpt2)LhXC~TNZh;4MvTmct1gAeUk&LR-{ZWa#Y5J5Q(0IY_^TFu03%8l_ z1go&V^Ww8v4%{v{BZ_{VnA@(-{RaTP0|1W>ohMk)p))o)0-J0r`_quUH+IpRqE)&$ zHD|*869umi7qK2#JWB9VBvz<`KYHc?mL?2ssIq#p3NN+yOowtQYL=cTcu{>@c&VG< zor_yj_!#)WLa5cg&yT|I?L9Biw*}a8(V`L2o?g&K+QuPy(`F6p3_wN|{W`B*oltxN zG8k}5xYd)htcyo5oX_EQw6_N5Gx*V$W!FFcK9ZWv8oC-n zG=x5!L{-*E`mky!f9Q3LuUihJ21?NaiZ!fjn@Gc2*<_sYQ3}tV4HyAJd2K3sFchIk z`WC$V;Yw|EcLRxo{QGf)T$gm5+!u=4JsF=jDJ)}Uc*fI|G0Dhi3(NRcc*X|GXfrb6 z&0#&`95W-wEArE4&R7#{;cGE1EH`%yN+42>TJ&@!F4Poa#*!e|qklPqI|5=b)fAl_ zP3vmt4gXsF-lKYR%NN2^IXAb>JrI}*heD6OJcwG=0;5l*Ru4$akJ3AVi-t~wZ00b5 z|G_hWGg=vC<5h$R^K}!;r+M5nfz|y1iUfjW-iqPeXFO5uJs0G_Iw1lpUPssR$>Ct# z3N4aH28lzr%hA7Q==iNHO^1$dzRPPUikMt66TzA{jn$G(sFoCp2lAO)9vVpWj^*jl z!IK1YC{5geQ(^ktIrGI~HkcRqG-IAy9F`L)w%a8XFQsD}#Bmp~eEfuokByx$31j4Z z#y#2qKbepLQPoc@KmN+9pI&|c$8yLp4WTSAmw#Hb?5Dr1M%Upq6nQ)_rE94ZGLen! z)fnIAH$bRXyu-+-qsiDWV~-MiWG1qqUznlRD}DIR;^OT}L^E40;xmFb<_b^uR=mc0 z@-lL)MdE+3Eb)?Ly+>23w^&T1KO#2$Ij+#2VrX%#oTb=Y6@gPQQg#tI>ni~Ls$~ePWP4)B_E+fN_1kpeF?4?y&JZn z4T*|QkDKr$^6>mVfx*3z*}hju5`rqc)UP*Q#QUg(WGU}51SnZ?C96QPqL85-Z=v-a z9&fp%H8@+eQ!e6|av9>9Pq`-k)+yJWl5X-=88r0zL^cwIWOwvzy{Rz>2)VXhR&IK$R%X_z+S0G_R_pk;~8sW z2@N4kxAY*MvHs|}SAEzCTLbCbZ+V-ZQ=*?d<^+wCN2*9#B{D;F;mvm%QaXJ6UKuLU zf$Km^7#}1iJ$yNco;l0a5|p!bchUP>=L|?@}uWVyqP8=L5ZO%;f+c>-;w*I zX;V%pMv@E&O%&oY$fw8%bl`nHSfruEbCcJpZW>cEDA?{yKExxrDBc{&xWp2T`A{ur zP~cMW))P_mZw%%8FY7~@XAUK=eye6OIZ+?1_1ZYjT!JUaKj|mP3Fg|OJWui|J{p5) zAaw||^M#ePz8V7hUxnUwx{58G(*zXdIWJX8YtfXKwb*kpya}1k--u?WJwgjYT96ln z2sR8u(hD@U2dVc;q^BKlAOw!g8V%-41OL8PHxEUuq69*n7=6P;t3_!j##8%&>mRUM zFc5KZFqZ5-u&Q*)pI-M1nKxA=@#G(XKZ2udDAmw+F_coXH2qh$@0r9T44E@DI~7oO z!YPc|k1;ZO0V+~e(?hw{JlbDd+ zu*2&4XL{W!r~E?V0QH}+aQ22)$Tt4*SaNtjJpnlYV3cf6rYE7Xd!Q%0)F~+qqPH?l zD6Q6pO8NObF6p?qcGDsUj-Bg)(H{_^1rTlU=D?DEONdsB)%JS$fkAQNNFhmuNO$J1McOnq6g{6#!MD};ibc&4u zM2(qJL5Wj3?2>0J6_Q8-#elm_eB{tXQp(h(YYV7aZCF70wgF&vEX8{oGxwp)=6EgF z?^u}+kQS`2cB}>%D_I_j50{6ohZS!bBkg_$k>3bz6ojT!qQ3j8Auxh?fjKskK%9_+ zaFp_Axsa9mxSVdr`z^|`fy6W#=`&TLyfP>l@;NFEsT5_{|GmLz81Jrv49lQ4IF|k& z_TD@`ilTWO?%CZ*CdnqV$&wJRkU-FYqFjLl2qwV71`|aDMFnpGFF?o&%7X@y2F1ZhxWx0hAj%44e>Y3fmf%G19*=r=xfhM%HEie(rvgHA+|MkBWN1fcg#)&^K5T?Wv#e{_ zN3U{f{Lo}L$b2E9o@r9E9+4;&8}x@LFz7{lICR$isra7Ek#=|%Z?`eq3bY{gLPjf(QMzWH1ocrg1d{4y*403YswDKHOnn1uX4`o$05{>Pn z3JaISRc{zXEq=$#E_t;oD}QhXF(Ny()BAZ zzt20Q-S5%05*exFPfMc(B?1rbQ;K$OvC~ph)Mn5HC`)v8XI&Dh5E}s2` zpJdc6#Wb+!fXhK9@omDBio?NYIA{Vel|W`)_tQ)qpnM6Vk!}wbb?b2VamXYbhg96d zrwix3hcgKS;$u~#5>G%}xmw}zv6i~unHC(TM~3Y6_PVXhl-vLDE)J)9=dD^*)Lb0a zEIfRtbh|=*4#b2N=V6Zt^=r`hxqPzq?HsR!OAyQ@v{+<%J99)%ihe5ZN zbJHW|y&gzw4rgP$;>Xv=Jau-Z755}X;Cckh5>X$OrET=T-LZSQ;VJUSDl_eU*4L3;-ul{1AS+IN@WCN%x)i0h z#fqXDa;PJqvp?b?1!Ykax=-1wa>#HhLzX*JCOizb$@Bm5+D|^6^gBhya-(X}73vAl z98rFN7q0Ob;T)Nya#wkB4Ax+`-slaI%sV=zrb@V+TY`Ss{LZNreZ>tme*KH>x%5HxZ)EO5J?7mco^f(fEIBjMijY@hXV* zRRPKmPCm*B;@M4V6(H}!Sy5^$yuT%b>x&F$vxMKh>yudZ`H*SOak;C!#t_?eqM=i| zr#L;w)5>;Ao0NI=U1Gn~3)uh1yWW9;oHvW_4eL!Uh#Qg#^iH)WT~qN|L7a(J9wO4| z8{A0)r-F{^IBr&u@ND6!4sWMaG~+Y8N-Bz4qNZ96 zsmd7CK-UnjGP>+lMyLqV)(EaV8b(dA@*xb>lG*~Mw5#+eP2Pdm-?McuAGF|y!X`k% z+k?0fsv3;yCDaw=6~ZVT2S9SJ2d8Dh7?*Qf^NqbU1aK@taddSPsR$Q~nWl}DCFd&e zWTdZCqu3i`uurTuAc=T~E-^q)5!HIj^3i-52i_ET-=HC?934%Y#=OnNgk{@~pF1P> z>}1vYWaX12J~fZ#;XhB}qwf{JT0iNk@L-oAsdbLhQ+bqTb>G~{mv?`EyB2afj%L+N z45jBo)UEW`>3sv;$~SM*I3^bUhG^S|=2v>R56vb<4>#4=fz+8}L8D3O;zEg8O~x1A zS9+8>1l9fJ`zB@SDB$tLdo2@(33#xBuu~@K_MWpEebf4MiQQl&y z+S*sT0i$Y^?$s`I*m>QrKDy>BRp=@{Li>+2x11&=Y82@aQ>FL#0U}iIB4Cw#083QK zc@Ba0)nnsyE#RBOzWBx4h?P#1RpR7dd~?bP6m=J~01vM#f5vz_9XWS4-`PtY&seAw z*C!C6`5nR%W;n&)>-rgdQ~3P1>USvCTm94lb$T03z0uVz#&&i6O}*zei*dBqVr=ED z12i&}Yc{Xi<-P|H_c0r*){m^m#L5Iv9JnWieATv6*4g+}F;Pi-sxgHeuCHZ|etJ|b zbM)9rxUzr~$>*^2iL-hLEYp6&rSLmTNk|^I`3VUh4tRy61JRkd?q^?Xn*3*l$FCu+ z=7&g0`#?ilGqRS3bR~8QZ4uN}iL79&qkjUl{8sJ&^aDIRE+hF=ru}S&-1Roi zMv;TapR>? zj*@=rkG=RiBQ*nrONjUpp2y`20qB^nQo9`Jm^G(3wv6VI1zTN^J~CMNUh7zrzCgDb zn4Q4;CSoIdppx6r-K==R00cC{K87DD5aZR;-26O&7zvN*4tSAbCIXHs-5$U#V4@Ko zLH>|B*SB;R>p`m{&16jmb-KxR&6?ckP&YvvvDg9u)ed;JdP4W$k0WJkH;!&qI-mDf zchT5JRM|x{Xau(&o*hAk(WO){j7r`D{`>}kHJO^#SPO{a&qY2dm~*N^Qx;xZW@BAH z#dFVfpW-n9W>@5O@3N)x(px?mtNTtR?c?b8mVXyVum01Cx|Rt=-Z#*-q!0HR34Gat zsmm5MI+LMAzWK%5!@Q}6ds97MODb=XXximml&?s6&+GiG#W!@`1|{bv&7gpu^}5b?`c#_w7F1f9aG;@p?yM zNWfO_o7QD&^((D?B{X?U$ZF%ukgYzYb86^aOs=Y_HqSd6;jQwoMb-M~C?|=J%S$>^RJ)g_merxEV!qYi^Ea&6$SPqFZkd^+{0f z_ot|ZQ0I3NUbq&X@->-V{$Eb6@O`;%sGrxjE&RolM0#B-?(=#dZX@FU138Hf zxm=s@0LhC&^$f@XShc8v8d2&%0_vRGDKwZ^^aj>Bo<=zmggbIDgGuOO?_)#F^xWjk zonr9WIj>{-TugvxMqK^xmI}}R^AyRD!W~xiBfeIVV&JwyUBroNyskzV7%=eYYm~5i zEqPTlPkw#;V2((am3KV!X_Y9Y1S ztVWa9sqb8w40`*c*L>4Ad2}*uWi6suZSZ&EHLqd;R&p6a<>I=(22q-}>#8-z!CL#s z`-u6lwIt_#!~BRsmkzF&K<{LO^3rQQ1-PPSbLB6-)WkaRHJ@hu)ZO4NZ8gi| z(@lE+(hcD+NOhij)kkCQ0RDpbvFlYYy|w|a5dk%spkk{JiQEOXa#zj`#+QrTHPWhc zYYoWNHCN5gLx!&40B`elM^_VtlcIX)tJd0(b9ah9ewq>4Mof^;?y4}V^$o{{`1-;< zP&jwwUDENvR8ws*wE)uH^;@oJn`(-7%-z4$%(4EgQd@aa7Vm^|zbV|M1nvX1BLY*> z4Eea)p_J9fAXTi+HTS*zYT;U{)Hk~Mbue+1NQv87i-K4@xRyTli@`qIa!dkYpt-N> zgM9oQ>8bE=^+eiv9|q`M(e(=kxM$Y28H0@&tkbLK-ds!dcVPu3zDpIT;_;ZlCmz=Z zAyW)@NrFn$ieJQN`m^@-*idVa^9I$_$)JqxNd#r&c?J9N8d6(rDY08P$Xi%-GR`W~ zLWpO$2&jC*VO-5qayU$WH%5i{`2Bi_&$5&&D?BR&x2Y=D)_>qJV62aaXt>MmlT#HH zV2M=!GShy(#+udlui$3HGqs|nX|bt*O6xC@wf-XK72FkDJ&F36?O?6g$l&e;*wj5j zuELs~NO_GYvBzuN3buetNX_eXZg#1YXsK? zpB|g~GMYt#>XxOJa!~^qL8S0)5}jyhE>AAZ{lnHGx6pPEx@|;@GiOT)c}7KhO#Rl* z-z0Cb9nz+QN1cYcYfiTox|}r%l%BKoIPye*3^SAO*e+?!anMWX=vUBu@Ydv{*P<$7 zUW>}L+HY4EU=7(pC)c>L59dcYaW|fe;o;4JZtYtgeX!WF*Ar!}03&hLE#;LCd|s+h66$>F(`cOpYzm+yA|QXPm0BFH%Fh$^Wf#>IJmL5o3eDX(P@T zd^JAyImYs9@lQ}jPE-OG3Rz+4jvhEsWHY%G=3RTi_L$)uBk^^go`@0enJ%^z@)aLT ziMrg=Wu14qCt;o6a*u7D)!DBQ_hCOtHQ~ z+DV&grwG@1PZ1j8(;YG$BiyDQBMeNp%ju4G@#I^jvH_hVjK=$_a*C61qtboPRq-G6 z#`AQvMJlosO2w8%E zRpJ^}DcbqEwG=Jq+5b|}KCV~2Xum9j{G0=-6s>%qRK94RNwE6oPv2jyf%Q(xGGQ63Cg>k&l_U3XXdBd z_tRbcgC(o8Ctoq^3HC})34UWWml^gBMV5kS|Es<&%Zn}F_kCyhD@B%#xJEFVcFy!G zz;1JIBrHby)g zR#)Spb`iC631mC;Y2;x6XHB7U@EP3A4T|0})#|j&PIo*i0TbZ&Nhou_h3LG&obG&5 z!u!$F?RAMAI=6v;KehlwWU4anH?p&MiERaZ87XyF1zs8+OO9~(#P^%eU@Lyc$bqRtj^HPJJ_9$-H%9Vk6a18b=YP@>{O*vBu`23oUeR#6T2lm%r>No zpMzpWIa-0sh3+=|Y;S>b_A1y<Fh(Bgl)gmoJ;1<|0#X6CWTf>96)@biUTn zvz0%kBXRL-)@`Ep22$Fs6|KX0-ENJ1nrSCQk*2;tQ*Hhrl2o754)Np#rk#|_aK8Uf zk~q7nB+eQQ==Hx@tqm9c+Ya$Uohlt7 zNT7K+i_pj(zHfNUIctfld2_g_NPhqXA4LWX5*>M0X*vbavr6eegc7qah<*u{EZf9^4Q)F zgt4~{ehV`k&sV?XL(tk!OF-6r;>g(U6UW4H7eSfO^t&~&+8<8Hu)oyGj}#r|>ky~8 znRYtH7Qx$xzgHKfQ-8GbuzA#>qwanf3ZLW+0QZk!16bUz=K0P90SAZM((S*cX-7Pp zyS;*2rlZBXu6W=DN3pU=hYmq-iU^}6t78Nj#&qha@Fkbzi=}nbuLAtI2(% zWe4tlL;s9YF>PUfY1qrJ6y?3*p+i%n`7Y*szKeNvX{F!3>ib|EMQX{OcbO21&CAI| z=TECK7rwpPmY)Ht3|-Enr$lUKd8wqIOo6yT4~eb=N>NJ3>nxmnXRR}wwsEPrDC(>2 zxRrToSh3~HH(wb!ve+_xof=WD9u4U%&@zZhBs;E;W#DZepk0M+{9c`WjFDe zGH;IBCT60s%rccr!$M_6KUB~8RaX0#miZGpTHQg+E2505OWlNrjCl(Y&_Tc|I9@BO zSy;aVgJr~dbteO&X+dbPj;o+)T2{SQ2@QV7(U`nwXg=jsUuquzQGCrKk{=vPsOo)J zsn?GNcb3*3_q(b$pSgXsIdJqz=UR^eA180A#_Rze>}phxe?Q&iYa5vVN)98v%9H0S zJZWnMcL2|(Mv*)8rLtk6l>6XY@(P>5rGUP#R<^*tILMfXuQQXc$&(Ayq+(lR+7F$c zQ&d9Uk#FL=KW&$AgtsMcw@t!w?Rbp0_%-`0?sA?xn&!s$SnV`Y1qOCH>uv2g4TYoU zbsu@~Fwzp-{7)w@8`SjV9vV*|%4?-@SK2;+i=L^voXbgr zf=bfl$wlaq4MvMIaA1mvvVt-kl+qnwv0qBtbt&EXoSvU93kYNU^28*5+<@eum>;La ze}7CQr_I0>JaCCSoktMHr=h-(0(XBig~VDxBOVX*+WXnO6%-gH9VnsW<^u_jc_ zz*ASw`4)2S<}^Gsk?J?Yxg^{}q|14DHr(|)tuI8=d|C|fHkxJ-YFW*7*S9*R#M0Z< z2^GG1=Tc*(Hn(ky0|c#n2#$LZU;}cUrHPy={6eJFsT>EsQ9i=0DJ6pHz3^^)8~>Pg zKnmqkWgivFt~zPf?$&&yk9PI5yoQSHaAK+LPMr91IO`C+lIWO1DY?im6l@Rh!-S4J z{w03Hx6ay~tN1JqzlVY*Dxmw(PHR^xB_Wk`YP*!qgKVVj*1tUBS1T=y-ddp(e>G|Z z@9O_s28`?dZyAvJ*#89sN^3A+7cpQjX8`XVHXhd)P^vPZIG8iww?}aUGG=N5#`uS43R(T|cxy$UgbnjT)sM9$sINlVb-63k&B z)T)h$}x$D!gc@W=0WS`+bC1XZf1 zny3WBY*~O6O7Iqy;2n;9?8GwS6vuqrhq=@rv+BM4xQh8}#B7;OXkUGE_^=UKXrmTc zzD0!V%JQrg9HEmSY)0w!M`4V^ya@TpsMYF`6{SxQnhyO+|Ka>T*2edAO-$=o$=09= zJ?9ku+R4-=iIlIyrCDWtM~s<4@ALl1%E)l6UdQ)MrY9e@MY|uY>K`?yNP+mQh_tdE zijZ|V-SJ+zQk)4k;TiSd1|F@&7O^4|E!}m3oVSB?(IqxtjBV;^0oS}#Q z{NW-!r1FPb^pLPS7z{0Ue_eg@v* zq&;Bht)`8nok<+d)qi%Sdg1Jv8CWZ2TLiwn8hC=W;rfdP0b@&)-!s%A<+h~pC0M_k zGt{!>#`CDD%CZb!A#)q>*lgv?3}0z;BPf=i+{(`Il{`0qzrZtE%HRwi7jkd$d1O2u zs63M4<4EpB{(^e+#0(#I@=n4JcYD}5Lz{PAKabI##TR>Fi4rr9;ZJ1QQQn{Tg6~|t zC3HM_G;P<#Oy|&m^qdONY#nHs+{rsWngE9Qx+7CmD;-Y=s6D8KUFbe>30Hd?x!Nns za4ezSyrY4!Sud!v?S8KN#CbBcccqF#{6STSCvZMw_``HjPd~ zwRo-gQ!D<24ClfU%Y~&?rMK-3_Zxb=`vFx$0w4?W#WFl+WlGS4)lCyRedOfG;as}5vI9Nmcy;lFeoH{#PCIr zXc*1HSmlufNP_-~AMrXV3n4{$ zxCnxWugd93s-#gCE)e5^i)gJ;HP_C3qSk`1w^yhgLX6rW00Fp1T6*I(|T#_8_`N?(#{vs!{+7)7@-NX0>kGaU2$6YC(c za56*F+)m!T@-QlWBp>7VB=otF4+MQQuQzLFrJQ>PfW6RuLGr_VW2qieHPfnwH*s)v44z0ExF~ zNz?5XQ?2=>JI6+AG}YBkE%5#xBe8eB4|t|7(Gx{$h1%uQu3o_DODQo_zq2_QoIQ<(>7#?BDUp2{kt_NcnN!h-EnZ?dQTmf19} zd+DHeU@Yg=Cj(!B!7+~is(Qe}CZJ5Q(1oXjbt*)n)ud!weCw|tX)A=UQzYeY%XWYG zx7T<-Y|*aq=2kOZ_raUhYQIhbx1;Bc!2Wy;7T_jmFV{v_n-gPJV68Q=SSxnWm^Bkp#=T?*d6w(f})`tskdN9T0%2-#oW4tF^Dqkp4Ak zZ3ZRL-ATE6sRH_9b(CO*5q>0;ZT<|eZK*uAns$IVR;#xJQREMmG!>zqGQ$E#bydB$ zCzkIcPR!ZIIdQ!kzZ$T}9ZomV^3A>tExDeo1bn}?o1ZbW19u0+Xj{z&bwj=7u^sTf z|Bmk@KvG;^suw+f&VND2xK8@O^LYL9QbFBg*O;?`1)~d*+yO1m7R88NW@7rbmv2RIg^?mo$+6OZDnMTN_Q!cB!Ffho<`U?Cy8@tojpOh*;8?kEHrE=4MS} zCa3x|<{Ee5Ki)68PupK%wcASUmc3a48ID1cJ0Q)z6%P+VmT#tE_tM$G{iv)XPH%&U zD7+(dR5UF<=&i-wOx*DIbf4I%b)mb>-_CH%dI+$1poO-@;}#kAF_Oi8Bf~jTNGmJG z%U&*{bI8Lzk4a*VI- zsrS@%qr>rj3wk-5aY3)fd?{z{br2rfgX>Jh`<}r98C)>r6%?%d| z9^&GYyk%~g-=Caw8FynBBWYJ6-- zru~e{BddPkR1^ig4C|KCstZX%7Z}i63Zd++a|<&ZHZV8_=4bVh*OcsXW&bC%Fw~ZA z^=x+$V@s8A_}X=t z&l(LU>uB{557#kKfv6?9st+Pnf4UP{r{qExtkb62u)`{E>PDlEaNo`~=-Gbm$hSpkKQmqil&)>FL|amw{xV zRehy%GWBBxN{3GBrjMVgpb4G49hYshdpq61$DdZYH{9iZd96L-4t# zY*vgf|1|l>4p^3$WK@sE@RqJtqa5r0g8oyssQmC0B=K;I)!@y zq46$^<1xK0CvDTkptPJnh0NqT^5nwq(q&sDu{S-16 z^y#>*Q>)gZR-#>ee3E=7s}PXd$mHu!NVh?x&F%iyZ>LRdIgCr@cA~8VT~2p0q zIoki5jl50nRAv>Yfd42YAJEw2fD%EKQg~C{-+M4YOuie zGkA<&-ruYs{p5bruxiTCuJK`FC3px5mqS)1>mS%Dw@W(D?HlQ%<7sqnYSD)+FI zWH@3u8}7)t3jl?Gdm{P5{4(47=lLC(x4VORVF7z=+%HT*M^J;KthA28 zWKABEV3jS!M1Z{_BRNUVT}jI8c-puUl+Et;ZqXTzk$5>epZTz47g_T0?zE|RV;b%> zfNpD@Ivv)V4-TK_(_ycYG2)~PquFS>79{0roTL;+w-nUnr(lH3sV3MOvad?0MBbv_5W{) zu0(_J#}hOuSA|%7k+zQPs$-{Xr}u0-nl`h&oar1Uba%WI?ZP`Oz$Pe3cXYuoL3Y7z zENn+K;s!Ns0=6iJv;vRqQ4a$XzL&$h^)Bl6JbJbpQq*lUlp$v#TKbM5Nnjohe7b?h|OnOdH5@`35tp0Q@S|u*`S)G|+-d2;e?6?h0uijwrmDR4tjcM*rtL=TI0rN=O z%5my2KM8Z=LEP|q*YRQ!SiB3ZcA(2X7L4VdkQS`nWKhzUbvS;^8qr-|^Ij~B8WL!~ zMBPls5Gmc!-$X-*C>TOyI0wbKBk69<{xsOjI+x*i4;1Ghys|UXelb(-dV|VO^TaQ- zsd;f{_g&eygbWAdh;5=p20A6VLEGDsTgkas8TY2}GHBR*5{gu^P_Ma%;^tucK#g?) zD(Xu$FQ?c|{gMqd`r8uV;uGdxeB@*3y6Z5t*2`7wNA$Rro*W2cn5=8S1Z2dpSdA0I z64D*-x1uEv;KccK=Ws#g#QSk{pYXX%$Me9g;ik;w^ZfGCy~^{gIhALsGXQ!gVt|~t zPA##Sx_vvyP%#KwrK?EmUG1%C&k>gs7|@`v7#mb$7{B=z%21Pj+qH~NV`pbQ0wows zcb#ShXF3K$2}ZSY2NLz8;(TP1-MzY1O;U-W8mYE$B=cUCOd!#H4{n{M5mJ?XhOWJM zhYly5oVHVEnN+2-%)ZNf#$N6jieDg-^q@Lm#JfEtZH@xQmQW-^ykLt=chGfA7F!BMc7`pc`@helH ze+tCO`X?lub{Xi}r}*#hg6~PwK(5@0memnJ-`aOsn{Tpix+z-iMFU-rG3`7L_mAT2 z#uXuq7wvjX;>0A!@PyOnI@OVmpF-+$fGeay_d$X0s*gZZj-8E`01VRQ+#g7qf5yx7 zHYuItybYu@_klp*R?|(VL`2-IC7-{-9lUrAmsNml2gI9bOB$%L4ErlkX|I4ajVjGD z5q>cqdbz1Eyt$FpC+!ChbyIH^y2GKV#X`l$k_^DhM7pCnt=K~IJ!y{TqH*2pAiOR> zrA`*u6jT+`uh)%-`kBNW9aYQv9u-dlJe07>_K4w zyoa~v67@WQM0^Zdk>hFYc*c=Xn+#cs0&+4nCgd=vj{Ug`QF`QFn$G{le%n&t05Cbkc+B z8H=cVbszQI(bYEHk6c!BKCE~4`_atytQD^Zay)9vaKvRelF+VySi5F);C^?^psMu! z%lk%~swD2@&fBWca&{@w!mXaGo^sSfSJlmg0;Xb_YWYrB-wi7&6SZ(7!9Uf&CJocIAQT_5eJu z0lGm_emYa(N%x>;9O(M9 zc@2MIe5L7Nb5wGn^XUdGi7vK8S>)54nmq&(pGO}AP)*u_ zhRbUBL*E%r-kOphfp+kyWR<&b!q=LVo9y>Zf-T0+)+V(Xnv z@VE62Civ!oRs9-fwO>X4H?-mbMT85p>hbwk`)18vusV8CC52` zT7l4dd%8ogCYR!wrgX_|PPYeHlW)P3BTaIPP&E5*U|98vwkBWAO3QFO0SNj4fIj$D3ZX zJO*;m#%g~{Lf>%)tNjs3@D^y-5m;brav0EC*vnoA`s84%{V{kcS(ASQs>-cUR(t{; z1!un#E%1G-bld?75}f@mMs3DXRVwC_YO*Gm%ei=QNcQMxCe!GT*7yAAN7}mkXd3~w z)A}Fjf_fsttUk)XgfSr%p;!rIBJSYa@h1RrK#sq6sUK}Xl3)u$3hBmCBmsL=UX}nX zi>)K_n|}{HvlD)xt1IM;v#5`mT9;Xqb##%u-FVe%Ps7FqFE--_@lANm7*<2-#J8fU zfL){cHI9yOtDR@_cgO_S$0Yu0k;*m+St*#@N7KJU^Uown|3}5ECVyIcO~GX+t26Q1 zU-;7~aw47%Kcu|Xj86-Mi(_a%f8rbTBfg10cJWzyN-6#f)y5&U{iZZyzJIlxH{J<` z688A}GaMz#VjZ7#_V$aKXBvOz~=_WZmBOU@nJoF=; z$oJOr4GE6K`!CZb0iePYIbwJ1*YKUghFl*xPsw9}_zg#Y;Z+2JwR4f>g9zhFhT`udSxY z3m54bdRtHA2_AJ)ivou1TuqAJ6Zz|EiUc;qA{&Saf$=nyz+x8>&V}07vsUwal{UoQ z)nBbPpGQ~0+Hu27n>D_J5LAA`rfxb+=?oRGjBV=OpNjJ*31a1|IH_XE2C~~CQxen{ znb}^(tjBJRdo{HegJSbU-dv?JHZky`PcBZaQi(sgirDbi1$yU++_8#_Q;VirvW0lE z&>5Mwm0m!(wWJGHaeR)%)$oZY@)I@br6yX^c^4>#`2CiaY`8bsdz7rdnrxjn+1nS? ztWvZzoxN##QJQ!)O|CahFD*@w`s!7BWtmOs@2sSos(&3qvr;NMe;cB)GiC2Z-rfj# z@k);2-X`jvf<_hRYv(qwrNtI%iQu^Ph`x_#o> zt{P47`ct$TM1(;-#9@SGTm)3Pb^-Rce@utQY1t_417A5hbN9HUZ8>>T1!Yg*RQgcT4IhrQxk6-W@@dc`{< zZFPi>aUm}f|HIkIKXLMf17G!C{7KEb4EnugJnx7YZ#`a8NM&289wGlvmQl9RRkE#L zCEGfGo8L^o{JN_7&28k(?|q(Ms+M14o?pq!{`r0PvVVSymA}jH5x@L)FXj2QX{1TQ zXoVyp{U=ot3YK~)xsIp!u)d~KTpkx?%R;T9@>FDJ8mi}*ECp7F$|#(+Rm)(3am_#& zu%^7?qNW!{Irdvf4k$g552;vYHPrff%vTfZxTR{}9=lXEaq2GR{CLTqA78!X&yOF@ z{vAKw`_adb%}aRZO&V%)I?*rlZO zsd(x2SNM9inhx)BbbC|2kFP$(s91bC8KEe5fIGsibBAekJ-x_FCE(7$r=f22r0sr- zZ=2AtwZ>Ni@kJsAoiXT+LAv&ZyvVP*b&LF}`}%i29lqRH>G4+3;qSBx+Wnnh1#SDz zOO!`B99h$zEvEukKqbDo$Y;+w8sVNz-1-(d2GQYk2wsGM5wCrRdz@I>Dj{u+fIf&V ztxqdcf<3e_>qxxswAz@vey8fcXw^ly$TpBZs<(kwW34h~lo)bKZFmvisX#atpiwYK zM0u8d%W*xyado%P>rUz*@xm!px9$Cw$VA747U>${+5Rp1p4cj6wWcEz0^R*j=X#VU z&ZEoL83@xEv4ylyJp*}0J9f2v-&6BFT32hr=pY(Kq_*{{J{X{W@k3p0q`3a1%78TW z)ttJT_B(sRXH7T#mP#4_EmwkjkmNlmI(tB!2An44()bi=ftw3Co~P=nd!jGFtG*}k z)lv0T7jN#Xv@BpWRJc%8NaBwRRRM+^>!0+MZ>E~QGD<5Sx+sP^TK&Ds*Z(Y3_0*V! zWaGSXiYVK70<(WkP5x7qmomg^RihV1X;j7dQPqMFiTA0**|&H=48+q5y(&b`t3y{k z-ry_gXP!!K!x4t(-ZirjL&y!Z<3Q}7ce4H zCPz{{Ugg-!(fKm)sJs0n^nVLz2W@8Zb=!8HIcRGuUqA;6+ti@Y6M1pIMv?6Us+BYI zF%=cmL8ofbHOvQ$JcG>Rr{PGdVRYZ*IMq8|_YgUMKIcb3B=MuW{rD~gn~GKLegKLH zZS~q(l7mp3wUN7HLv3+Pm4sL4tH6-?zI^xv#WSf8fe% zzaOP+2CY@aEmXs8oKNCbah$~MiDM{km(??mz3WsFw}WbQave?FmL2tp+lG0nTEP>O z?y>003hdtFxZrvky`m=GI*Pa_t4OYy@g_is-a=W9RilrXwJeE$gVg9EvzBFNzbviu z2)jIa3uT-JkGX$j%9b)JS(|yjt@K81E4?Lx8pY9hRXfu1Y8~l&5oFuBb}`K)hw(r3 zRqk-@X)iwA3s2~mHjFad1W~S8Ol9oKZ!}e)j%(&(M7CeVr-)*N_LPH9FT3O2t=x~` zLe^96d+DXSx7*}yNMAu0JrKXrYeYQid%EG4++I>Ud_(q(^0E8hmgn_8o9d`zjU zF{M>F|2$si7A@Y*B=Z@X8uK&i-oo23B-nlgiwYKC;n%$D>dqI9Jdw-3rmkxtbP3QP z=6p@);SJ4r6)Umtlk(Vggk-W0jnHu(j34@0p~u#hbsyiwgjcE^rwMlF*it3HNRvKK z9z|oURLJTF!>Qx$$F+Pra6;r<80fO<>D6z{bPm#1O6yl+37w>&>p({(;^AzSOs{4Mu2ws89xoiGS;*kI z>XdD!}D1EXorijNpc$jK($V%0WUdE$i53A3!@HwYk zu#JV-2rbq=hcn70YmM9UhpL{2s;_p+T9y&}u03K&UNE`8v5~p>s5Sf_{^1RtzChKHP9;^q6T~F~rI!ypW!N$)frZqjJa+j0J$$WOUPi;Isn^*MP zA%C~tKLo2Br%T&%w9^mLxq^k%-CGJgks-4=A72ln_a9NVxR4L*zch=#do+yyriE$M z@a7@4hJKkvO)bOOa&A95tU|{Q-k{rJ%FE@P9Re4robtLOBhe!{Kg9r@UWQ}rI$K9~ zkLnk~{G^_Gxrrw9w?@D73%>~&xQPlzz?hbAd&5PIcSAJ~z&XZhQA{1`)42(1!B zCm!UErb|%q#L3t~<-rr&G2myUSLk*<#c>-?501^pyU>)K!M+!5=+J877CNptb|H%W zZ!@v&dfm`oCSPwfn!}s?bHAqE*_N%21{=BTtj2t|Ha>jKe|)$ggpUtXK8D&-mKe2G z={Z0GlTe^C|IwLLXP0?&Yi%|siAR5XKz&Y_sRH)`;5Ok6(lqWIn60FQ@SXow$G`&h zCdU>b>en}CkmB*b?N6y#Lq`v2UcU~l=oh(rXw9Ky21h36Hs&YfN|htPKv%eWCeOq8 zFO3W+t;X9YJQbdt+k%ZeS?vi{%bW5Elt5V;qNxSO%lYauwfMbfP$PegYD7Cs0sYZF z)tUu0+j0h%TxW>J!!7%LlM?a_wWwh;h-0JntF}wobQQQh9sRLjA@+e?=n_5T7>&{# zn$FjCv;_|Mx){H%k6&M>W01wluTHueku=G-(}^kTKo4>VTHloET!Sn}2j1HHJ8iD@ zTaO2ALW;Z5b96EkOt2@W^PV=EAKmdpTBcJuaZiwI`zVixHV1jv`yD-TZ4~jI}x9p#?+~R1Io`5msBS|(YUxL9k$2e$bv=RwV}0J zIzb9QL--Fh=3)zNHiqAP`Yzlu6?YiJ-#WkD#mD(g9G87Jaqt@==oTL3covyKalcbz zn7bFPnDbxq29zObz1C-YnKr5R+m|$GDBnw^_@17y1&*Sm%hjaelGcC+@Ab9JNnff> z>@$vJ1H4l<2Wp>oCzrlc_$?RE)?emdy|S15bX2Mbo2Fn%+|YMSIYH;Z6Mx-}Id@QV z{vy!ZU+wX=`g&ig^Ptg$GqLqLOUheWbfVQ0d3>t+c0Zjp zRNcmp&DRJcXAa2FVZ_I3{SWS^Ak6)c~U!V^ALhqxQ0uM(@2-ecbaB+0l=v7;YddP4t|B z_4R54t9gFYI<6QUfheO4B>%mYp$2Z9f5@3KgQUek_>wuk5ggyUD!!LU zC{y0}g8Ga|#FxeKy|5QsyMqvF_?(Du1jpBf<9m$=N_>WX!~rDrVkW0D-~*!ar$K-< zhGTsgF|_AYR@X;Reta8Ih2E2Uc=`9J<=?~0pToY-iQ(tNMP--Wm3vE%u^x z`)~Y62HxI5J~UGm^p2QTW?^bXg7OkY7~<6klhTJy)OPA_A1PJa!pQy&edZeUF;BA} zSAn`|R!HGy3b#^NL}3YqJ1G2x!krYBQn;JKy%g@F@BoE}C_GHzQ3{V!c#^`?6#hw} zLg6_I&r^7j!pjt1rSKYsWfYcEc#Fb26joBmR%586&_H1Tg%X9q6dEZEqtHZQ1ch}d zjG{1_!uk|8q%elUSPGj^7*F9n6edvEg2MYLe1O7M6tFOro$Og`FwvLSZU} zT`BBNVGjze6!xMpgThBB>`h@G3j0#{1cm)6e44@m6h2Gg^Ax^F;mZ^bqVT{ZsxJx; zQ+RaJ|0Mn)6uw5`8x#(ua5#k{D9obpZ3;(I_%4P2q3}Hlvnd=;VJ?LqP&kpo4=MbJ z!jCD;r|>fhCsX)2g;Oc~io)p>&ZKZQg>xzVhQj$2E~M}~3Kvtjl)?fES5UZ$!Zj4G zqi{WiKT!B1g@qJurf@5TMHH4$xP!u9DBMY5DTTXNV|&hUHhOF)XoAN*&2D}Q_T3PS zbp7c;187JT!iP9K2;rR^#!Z^8%^XJc>{`QNBVLH|9fz$5&*X3}!k=+?1;QV2_$0#b zau^T)yM}TYb(8Bw4(B8M1cx^w+>65}5bnZZ0X;Rf;c!!g@8K|NZ&!T|FF`nr!m(X9G-&kTn?W__;U`Y z2BObF4o^n-Jr18ncm#)Ap+CDp93F-6(;Qxj@FN^9L%1u4JEIrC_8fj6;T9a;fN%_l zZy+4O;kG#Z3gGZ0gm2N6k3-fWe38R6Dm}?zF$4#99KIjn9UOif;U76X8sQZjUXJj5 z4j)GND;19seH3!IHNxXL{4Bz6a~MbRuGctx72#(&+%pv5J{+Eja1RcjL%1V{TZ94p z0Ee>>Zo=VB2uE=^L`H{i9DWhu$~y#)L-;C(=OX+khkr!)5Qp6e@8q!2g!0ef<_NFh zFrLwLeaGQh2+!m&?rnE{#^DnPf572Ngx}?GmvEGS4!?l#iyY2H_z4bgK)4r&4!^;uYarjq+%We~V2H|rYu0;4Khr`S${~Uf0;UW%q zM|eGlpG9~nhu=ncE{7)}{5gl0Ap9YRwV3Br$XxD&!% zIh=`bdk#N?a0?EEXv>YB;nJqUls;oAs*z~MS|QT{m`hwxAiCn5YIhx;P@1czTh zxEF_qBHV?;V-Rk`;SUkMhr=@vuFv762#0YPy;i$)9R3C2vT}m|K=>So6@-rx48y@F z_7U_qAL&d#>DY8#=pr5aR)^k)@Ld>d!B~sNrv;Xdog2lOIvSliwpEb+5ZEt5KZ@(Z z)<9pdCP11U%6<$$pRS(3km;f9LunXeHznz-P&O{;cgSX6hy+^hXvpJ?EjNZt4P`$V z-y^)!LIrW4>0?2lY~Z<`Ah(p)3&Pm&&4Tc;(3vqowbMP*!iAtV!CwnP=V4l`XIiNs z6bY;x)O&fb@slQOO^AFsRwxY#Jr&2wL&C1a3FE>eoN;VjgmGaUD~V{ZB#zn5fj`Cy z1?CVXR`|^vay(WzWWEd?(2j=2HL>iMMkZ$ycDRx8W*ocF$TUBWRWvew7RNr0F*)Mc z%oyXHShg(2bSswq6k{xpWk1J6Gj=K_q$rmC6=PZz%W@hUXUDQn8bkDg#vwn%vK5U% z0*f1mtdC{85j@*CWL+$~+PE=epT>sFjAhefC+NHd1-{jEf~U zML*;tiS0E=Hv(C%_&&f>0!-gYY+iuza|x=_G+AOr0mjcHwm-m>FR`-$#*Za-J-~E3 zkmUs$Zw9hY1EC1>14AkT*~&oE^+2{I(D+v%+ZAZK639*j8ZQO13xWM9&j#!W*d<5w zA)gqSq6dCt8$z50<}k!i-8BQ^b^_Hqg^=4i;f!F+(X*|(fG_mI4qZPVKWfNGq!99E z_yV1|`6MXUk-}Md6@qXtKj0{A+Zb%Yq(p=?Ji{Ny@53iwh@Z(jU+XX-6|19hVAS@Fi06ZXw<$`cTc!aSd)!EQ_%$u~cC1yzVPQ+ra1i z%J48N1eyzV(qW0s7Nye?TPS{yIRwZb1hLBjQR9Nxmx1CPiLDJZuaMY|Kxn%kNb+`& zFbOo|B1wdl1=2WyK=H&pjdp^3B9@iML>-7_A2$X=Z$@KzUo2bPIBG8- zZERctX)*d(V>vgLU2Oc*UD}LCc$sa3ciRNx*uwHa zzv=512D97x`X_?e6hr-EL2Q$u{`?^JhoSyAL7-*o&XL$O(L76H#Q`QrwV%3*sgelD zW=N-Xs?KV|Seqw56_{O!<1+ZFFtD|8SAdujy)r;_2w@8Y#4iQ&tN`(_U>+AB=If-( zqBvV8?G?pcx;lpf#5+3aswn2`LjW$-n?0hKZHQeSAg(op9~8wB!*0mxt3dIaKsGBd znhHEt7^{{$YCs57(C2~#0y0;)?@xjKD)jWW1%LfItwa#k2?avP$7WU{NaYc%R0sj1 z@MoR*csM(%tN&X#`$Qi;!vwjTJQ3nygVAAPiov`xoZU9mpBv5=i{VpE;$hMFRX9_` zr+QkKhf^O*#g>GNx@QG-0T`iiDt9 zdiI-Obm)ORBfxug0W0;wA>9l9y5!&Xf7SaTps_v!l9R*ob?jmJV;%cU2>d`Nd?`4D zD)_7Eez3_*><4)I0UL*~RfzTLoBu7&zr*qWnSPb)HTgndgX2CF*hJtt#hF=q#@Yu@ z4PZ|PUl!TR+eA%vVAxY9v;&K4Uh8uLn*{ky62iY1LGGGv6xlw(4ia?C5WZGq9z**L zB3mssq;Dm;NhWLkV6Awb>wiTvXdY;+i*+bk>vXrhylZBY%5-e(J7{W3$91ey z=*!q{od}T!bs|I@)g@`)hOxI8dn@c49eaPBHa7UDe7m#f8GGJzRnLaEgsw<1mFd|M z0mc~nh0tqyb{cDVh0b(Y&o=AegG;*5i+XlP*99tDA9`NTiuGMp`l0&ZFL0cW%@n5j z^;y;OUmzGi&_T7F64Z424Um~3_=K6AFnlHZWQN-n0p|s1e5tBl`WfPW7J?4yLDT~G z>)A(o4>WrM*_A*ed{YrPLA8(CGA!RTLH^3X=IVL@?`G?zKlN<8UIKWRK9I2k zdU3je9n*^taa!Mpr)$dYfE3=*%M&Gb$PnZXWTy;x*l~Jb(EdO+FVG>>PVfIzxuJ`K zcUy$$@jCVg8d`VZbM%AF{%I?vvQ9DT7@7f@ zDW>thexg7pEYM97q#v3>n|gw=D}s4OQ=wRAx*a2cZGJdL08yCNRQO46n$lGGzz}*S zMwo7p_QVJW3{mAxglh)V2SPIS|{qWc;U}FQTg%0x+rmLQ(F1_Gegml}UU0@3FUJehV#Ga7g}E_eQB&btf(v3qDDv7E5$OIgMue=k#TX&mT`}bW zjBRfgr z@F&gFv#Y{BZ~ShFm!g4rpd)%;*KNmu8aV75tToEyyc=wc=Xvuu6L!eF*eFHQlI zT@MvH$slJ3v$=-*AknV|D9|B;Tp7e%hMo{nAVN>LTa*Bt7GVA}h;0inpAKRb0Z}J| z*e*#t8pQTV?=n^zWIP_k4hIb-nHeh#>)2?9%${sKO$Pf6!F@s`z~AZR4`nvdV4NPx z78}CPg|Ur>$mL;>P4tdXc0|1Qn^1NmFdWRq-z8~_%#KKnR>&+bs4l=ugUs84#R*+!M})9e6QgOd}zaEXH#?!{H2FR z*Wjj}ZPkZd0;5XbUDNp)##;h(Jas$*a|`|NS}*_JcD&m-a$0NQUe!p@gJC#Z2)QkQ z;vB=+e4V%itr>BnPFU@4$k3e08;rdXTBK+BIvMouZk@DM&kpInQT2Am*Ni(wKv{2( z$QBDw6gFQk0enFpS!rP74bV}qH<-crC^a;jBC;C>5nkRg*afw%i^3dngV5-Y&f-m> z;rcG(Ze7&D&f*t(c|&J$zTUjPllX@|d~=fMFw|L)EUqzxPf8a5G?+i_B(4(WPdbUG zMX5MNye8J&mLe(vva^#oD^OaTEJ8blf@IU(u`#B zN~~0zBp!^5826Cqj*D_WB<^VvQS^{_rir}!A<-T$J5t4|@e$5c(H$?(NEL6z*PE3p zPHHwVKTW*c3`TF4?g?9#D$c&w1QCbsm3F0yB`u`YUBuEB9|LJe?=v3gA{Mrk$9EBL zJrF)MSv>Qgd1I2exmEOrB=Jxy^P(j2+t$Wy9mLhG&Eu0qS8I812l0zGros;5mNt>U zbr5sghVSSgPHCIS*p9Yxd8&A@Z4~hF5-y31YbVd>BIdUP%Vt(Pd0H27X}hTNsp9r_ z;<;3DXFK@fcsu!Aig>AA)R`3V!$k2;7x9xsh@O)uFG&##5~Dy8iZJ3pqC7Q4JewE= zm0W=lpR|{6Cy6uLN0lXs-?tZ`4z{!xf#W6Z;pL(B@=>6*ebmk*(bFCp%;z2C`AOou z4pATx8#>GatLsoFIlr^$>J*jRS@d**vC-F^#U(w&g`JN|jD28{S6bK$xq zqh*3nqpjCrpnu*q9}!r-&}^*$)^exX#^uum;WL5V3S#glPmW|Cg~%JtY+8tEgP9eE zG&pExr$bENn%T9Gm^o%vV3gKHvX4Wh>5*(fXvDTiwl7rL7%8~IB>3`5*o%zqk>y2^ z?4)eIRfo+oC2Xm~icL`JgC_ILNOs<2{nQFZ)WeSG-;(fsJY(YOCJw*NmFoB!{)?|;XA|2yvcpC0$s zoX7g#vEcttW5NI0{8^L7+k+%*5%PpRdRC%?#=KA;3^6FWtJ0$JnZtN4e@uoDk#?-&48`~5f4KZiKjSEuP)`;NG zy0N|H;QVgvf?0z21$Cu09oe$FpvjNcZEz)tEsd6!cVZi(mULL zu5>VN=*T=BL?G{jBqJc3oMZ&@W+&ALxk?hZCb6HAK8KF<_Z0J)RHmdfIhV?2buk}L zWh=UXS+=2z{BtV1(8atQqEp3hQ`z`5@uM_xLfS>0R@pi*Y?$FSpIp|mmREBOH!WFc zO~Mi6(Fwy%S9HQ2K|f9}ToUfh(F>pJ@XCQzdU1mu1Wo)|FKp5KkLCY<-2Oi~zWeXB zRVgC&W!9z#!7=PU#_p4j3#>yhugB^O8hk7>FZC669S{p^cU9#t`{yp9e71D z@9r<|3kv_OZ{Y2q2IHR=uLXzi=o|Q1i1EAr;`hcTzYG*lg&HsR6%U!D@17A)nzrJ| zHA0&AjJPzSBW{&9Ul<@>iIggy5^qL=@wOt$yzCj#6D4iwCr+qqoYPPIx~_4;<6>o9 z;}1`XN9q|r=`WVlkJ#2XP^oV`{G@oTzIoY`;-Ll+g?$4THZJd0KA^1W+@mxZKl78Zm=Eh6u;_Md2bLryZ7RJ4OMOTaZ`+AF0?+gC1w|MzJ zX~qEY%lnP?-r}D7gLm~7C$+4zy0`dS%c!CZ5nA`k4DnjaxY-%vln2bt3~}KD=35Vo z#SfS#rHh9iXz)>{Sn+^)eGf7J!3IC3i^m=`E=m^*TbZY(i~CxcXTz7R>pLG79c|1L z9~Nh}X*&CHabFvA&cmXsO=M*+aamjQ!CvC#w(_c8;;MG$Wxd4WcINMTiHF+#KkR)8 zU{lr7@VQyK7XnnpJ=Ep#R3I&FDFq~j7N~5YEsF@GX>!{J(j;b~1@*lmTa_&eC<>D5$tsrKR{(@?60M{yF!|O_STCROCH=Ke^CMX3m^Bb7tnunR|0{ z)A@Lja#MDST{hblYCvwjDeq{WYIbDJy<2Ux}e(N~pyxcDT9vS~$ zZntAa$}e*-xxYmDK>u#vLErwDtSM18^}lLyiSnL-Nw1Dl{yb2*b%gS@YrAb4q5S09 zv^gV`D+ed6AECT&aLT`jD>n}A);wIfXYe`C4Ojj$xZ7>Rm7BC_dxj}r$nUmLr+hpA zqA$iOR}AU)`dHm41lrz+PCQ+_l> z`Q)&a<2NX`4f`i7;$NqBds9z5(;)fWGp+MxJ!zPBn2CHF%DIYxgUba(tp z?z;rCKS3*=_e7qb_TnzP{sC?Yy@@CFXE}LQcFtFF@~}L)QO>;pHKLsSOKu3y70|y& zd_lx{RODy1mm2TpmMY15+1=b?C6qMX7Aj%)RLxhCALQ%-N2|wk!-_kfP!huh3**U4 zT-STzlnZ4kKPt&`S+|el$YEKR6>-X6WtTn^N7l%@-ycUlkdN3GuY5<*Wm%l^K4q8N zC2asSK}z<{rJvxJ;11JQxBcnl z-qb}f?7GgKA4w-$I-h%gI@zyE`1W%0p^BaieA}g)Kb^eYE&0e5Jt<2}gNY2CM_ zlONBS@ayH|^>d$rzH`s-_DnkY?tJC*J;NxU@BITYq zIFIVGG>*(uo_l*7xmQ^Zjmng7<4AqnEU|xkpRe~M^vc~lj^6LFf;;~+de)orv5b5# zoO!+?OZZR*r=HmYZ`aja&RPWt$TA*MkU4l`573kET6 z(&RqmDz-k(9h~qTN49faj&bBGP6_Y7;c{E^ziM50{#TZ%=7it-6|?UN?sDNapTBOC z5sMK{JKp0`9+yG#fHRZtxfCGGkr^=uK*sO+S8&7)!}rij(1Th3N96?0RR@l2Nh5b~ zDX*r{B}QO{bpgU&PW5sc#9<;msp$@cxw4d((#SFy5LU@3;W=62Khq#af$*BFyFZP5 zEjwoy@X0lVY?gQWJdM06&+|bSMe0Lo5WjFn@s5I$4=M(E)5wF$^X^Y0+mwCj^K&Tq zm~zmXG~$m-xi^ix7S|0@O>EYyqE}@y^)ymZ8vf(vD14XBk4TYWg3!F_ID#&lIW)k zFD9h{{r#l#{?U#6Cn*sqYm+m#!yc4;;pT2+MM~xqASUI)hr5w^shO+05r68?uhPh- zPUqbYyH%%@U%HY{I#D?*I%fhs&^hJbUCD=?shlr6cLB<;ozHu}D_NluB&#k1%A2a> zmw`v1{Gdt(%A76_a)3P474q6^T_2+FzwQR7eI%Gx0`LEEPO9Lml`;YaFyCccDp|=T zexCy22lL&)r2%0dm-uZ8`H-gk<6O#~6gb(Xb~rMhaOXznqYb z@=nmWTYll|DX{!gUQHnj6qJ3fLiIul*`k2D=T!w|c~5cPvnk{!MaouSQJM&Bt=)H~ zki~JAZ%-j##$C236}F_SZ%ZYw#3us#@%XeCQ^>A_#K&OAO`w$T6DVbQqH1*tc{q_$ zo=fZml)Z`P-JU`YC#D=oCf^J6yOKJ+kWAJm(bio_Y0b&x!=#i~lF8Re-Jx|s@^C_4 zPp*QuPp4cDZcj~xx2sddI;Jn7cQDW45|_)#?OZgua!4+nfUrzP?_qC{bpncC zmNG{U(Q07*)MNl516*&*$g^CRmt~=DGn;(>1KXX>h2N2Gh)N(SYKV6?*j$6VJ zu;S(CdzGZ%oK;G4eOE$eR4tDOH;ji}U6y!AL7tVRe5p{rEbG~zRK6uwHYv!b@_yeb zpazF?l8+V2WRDB;uf=aOb!nibeyDl!}vpBLb4m|vPTp|!&iGx_) z7pMFvjvR=Cl`tn>xhOtu%XITnVDhuV5ez&|QPfP+Hg@dkH`O`-HnR@io^NI(_}zxWs$T-%}mG z?7Qjq>~+S&53e-cpIQGwr?uNYoOQ|Jw;Sua`=_Lx*# zFaAdDn?B;kXTSY8f7iTQ_P>9@zYl&?J?`oK-@P<{-`okSEZzJKGfcCOmH+zX%lz$Q zr*LWSS>lYwL7jj4J~d&7MdQ;Tx&%e0cq!H=lS?^WK$tF>7mxNOhn3HPjg?v2jtc5b_Wo2+L-y;8sFy_6R(Kb*XA;mx)_T}D++dg5Zk^MiU- zJmbm#aAw?%A8_pY_4bk5=5M_5(x;z^TX%5x1AX^zYkBD9_}Z*vr1R2-#Jjq$ z>h$UM)aifkHK;n_Zj0#-Zi=z_yKysSlp8D;9nkRe$B^=GzFHY)xoI7D;q%`m+&Xbj z=kH&9&&TTyZ|(ZUwq1*Eu7CEIPcHtbyr|dv=X`tfzQz2g{Xb7KY#RNqaZl&D$c~3U z(`?_LzwVRk-d%ZMQ1zZS*Z%z7JNu>|HV^&fJ!{sm`pWfzZDsE}dnpQh60Bx&RQ@wXH#?;L#V;e>@% z-*A^4e<991bz=FCuU7JPH|AK*KNL5^I`hK)#~ZKSciZII@2g(B?xRZEC(j-`c4XJm zp}V%8_x4g>S@JHhbG=8?N4XQ|^V&q^w^0 z)}5)l-fr4@`0z|pVs(nHN&@d zZ=Re`Z=c@z#47{hDyAfJT~6H3FEei_Kf3S43`5}?mUC-AOY(mGR_eQ@a}{G=*evgF zxU%xmAI~idj2><-`k=;o?RC@N-0Un^ZxB0|NV_k!w;W$ zT657iJ9pmx!gH@^mTxY3cHCwN*GQ?=4#7?A5@KSAX8LL2xS^9FfOK;_C+9;7LG6_LsHX5A#$t7zd zIvH&ii(sFVsh=6%P3nnqgK>u5!B=!p2da3eONTYkw04p@tK0z%yi3p5+8w;pX|`EU zZU?FZUum|&v>Y=a9-Z#;@a|!pIcy=Gj4wxUusy;y{V+;hH8vKAPHD4)xAO*<5UFi? zL&z8`u#m0N2+k1Kh1F)I14LN?8DRkw(STK<`P8by)+0EWmU5w)lp9R?3b)nh0;}ka z(5;nMBRRqxD)z`>Z;K|6>2I`It-KLN%*YukzAfP$GtEXm8>Z=S6&4Gw4KGVOtbbwO z%k?mRKYdZj5J)t`#z4Nw$QGonwIIiYN>mO&STWFUinJA-v|ke-il5QE-oNqcT&yV@LyYfT8t zqVw13QIA@rYZ+{ujX1UwltYF{`j<%LW4r(6$aWDY{Uv%_qb1jsj2)wHUh_ngZ&%a$ zRZVLen%3TXaOXWu3+6X%c$T%Y_XoEvY1**3dF2*jbz3aN<#6+)!eDXo$h7|M!}mRO zc;T|dT>qEptPd;*R+onT1o@?^m(X?Y_)3U9Srl!U7n>GQ*-?LR=aNG^H>lz5Z6r@k^2n5QI4vbp z%E^=pGQ~=!ILH(inc^n-LxvU<4jVqA=(>@kMvob*8&_OXI)1{$N!L#{lpCR3sjMm!_d*ELFfvRR zXzCL10k38Q9lpl{@kDy}CVhJM?i0?t^{J*^^KjS_UD23A{m`*v#uN@M9a~J_4J#T> zMwwv~b<869cDn_3ahl%LC2qUj=5Ub`J5(Mz$Vg_Rg%9N_0tu|bT-kfN(`F?!@zn69 zu?{nAsZQdgJql}iquXUDxA3I5tJ+Se0-IMhEx4y?{<@ak_ct$H*K|+A;rY}vZL}I& zTr?btNHVPo5~p);UY|Za2j@+>;Ra2w{`tLz8G2RZ^`3h5l&Lr0kl$;vq1S96_wF_I z>c0Y09_5*OQ^qyfxBPYRfPG!O)#dCn+F%@8!WzQ8;v^wnBJvV}mo*Swe(4C&*7d8Kwm+v9=<1eT z%VB{W+VJ4vIm^X%&r?meH;C=KS08Fvge?cRFKt?T*WtMhO>@>XuYag%=kli8mV}%Z z!HOJ9yoXja9D3rZrezPSGyCOc^;I9bcOGLrvSV?}Q(K!Ku4{f^-J#9f4{d*-`M$Xj zt)yw|Cfcy^Rwg6FeQ@W32uTOGFM&LEc;W5MD|V4yRvqc(GM5h3<&j=a3Pu%`lopO5 zecVn*A7{DQ+Q;IwRWLM!MZ_?f(kJh#!RZ69y_rnw*>_6s+?%te^oF?UJC#Pzl-^TJ zSJT*m^w_-OspiFVU?ym!L$}p8uX*ywj(dsISjATxCh!hg2S%{Ann{=&Tb#r>gP!Er ztk==y!h{Lg3wpN9-HFRNCu{VO@WzM?A}lI`oz}DL8KD;A5LIHMvzCL~mNJ1Ny5!)t zx|W4oh`HKO$zw>VS?(fshiy8n@G*vJSh&LK?#+ho+dDU65vwDnv8DO$XIQ==Ntgy9 z_+5q}P$K1Ik)|apn|62^Jz~y%Ghxn{HtV)Gt$h@7egp&5>LIJp?QF#Z&Gnw8DG zXxh1w8M&7oL#Y?(6|vYt8Zd)kpFSpjW*@i1U^UsQBTN`!ws1M%rKUB$<~2*2Zhw$O zEC#x09(sbUH&`o8%bo%~fe01}4c@%|VJK@_c6(YLTucnD$)gW-=KwV=9i6;uklR(! zD_6`Sy-H`BFLIIjTN?%x9JhnLfn)GTo<$+*tTTc94Npnb$Tit%pnqer~$2 zjz#6bK0pp@V@vGNraPO~d!Tw~*>wkaS6~`wzqWbRQ%#;nn&!`G*|6>4wnb2j!g@Hg z^NvGL+|%Nl3*iAl)Vv1sKMfV%f~E~~+4`X=O{^fBmppWE+jHuH)brP}RDESoT|t*E z?(Pm34-N_LT-*un5Zr>h!^Pd*-3jjQuEB!a#ex%@Vcxu&sqe@6(Pww{>FVCyXIJ;y zYc&hi#|0QcI+~6`L%*z^#7Bo2HHuW%^Hwe|3ruZ(qu)gHHtATWc=T27U|YPifzPaQ zYn8hQdL&9Vpz-*oZx?dMK~Jh^6yww3RocG?7Y$+Gz5%O^m9hKz2R)bVO`ZPb`KH6w z8R$!ZPcI_Xn+hIDO~w+{Xwx??I5$}BI)ZHZXgW8TZ+d=@$3$n&!m+(rxF%JDqI@y&E6~Cd}YHe@OQy#!Pg=}Sa?gXpRg!s z8*{rI8=3fmw6U{TmX~Yh-r~P89nvO^sw+b|g+vrsGdMn^Y$uxxy=>0ZgGbWP&Qe~| zdO=w7frN@xIp%;0`BR#^3r>_aZ$$4D=`Y_hjO`w<@GXc(Y?j!0Zet|J9J|4mXjvti z#>^-q|A-)Yp$VkZ1N&em$x7*z2G*zo8(hVV9TAJs-s)cqRd%={ihXoQ{}DyWga(!~ z@r8Mo_QP7=)DmTxNV?Ff0LH$rlv^Db7U5xQs=dz-th-?08=jr29#*zUb3;_sq$TA_ z#TV=V49-81F>GtmE~J%KWj62wMBE^+Qe=JO?v5!IWPdxYOr+tlKA~#6{6$V=k@o3t zXQfE-IcW(db?W>Uy!t+_tgW6R%>^x*F>42v6O-dht2U7C0f9G8JKaQ1m39G}MjZVS zdIsirO+bp?* zDyM&NRj{6AWu+w84TKt?1&^P9UOkw8-*O0SC-f=3#!Iykqx@QKKxpj5iN*USrt@1Z zL*EB9c79_^mB-r$cH=1^WnJ19Tbxw5^KzuBb)2)I?&0>q|G0eKZ z6R^CVB4%78Z><9njg-6$VCnSzX%;2>N330MXqzWfS6(V7hZp3>l;PclR|Ss0NOy-_ z-Z%Z}jxJ98Zugv?h_$OG@RnJy65VbdWYE@i*wUEOao1oIDRa`4Q5|BpQN4)Ke|55= z_vITQ5EixwTQFNQ!LoEq~oztFHlW(pl}4g-it zC)A-L=+b1U3njfe`_)6_pcNfF@d?HcKaX#cZ&L-ZJ~@*a*s?-J%|5l!ir-0(TC`-N z(Q;eAkNo~w-1@6U!+uYjb6|-fM1pT>N>{$n+(j#}Z~c}OZLs>PC0=$vN=hR0NBt6k z=bdw^>=-LmK1TD^Ou}n*7eP^|jg{LeNz1x+u?q>$#4g-mt0Qc>$+sw8hA(j-D`u@o zhHrs?ucshtW-N{h4T$Wr5Nn#8@(Jt97p#kNMmj1z;IrTO3dT(t9MfjM-Ew-meD8vs zu%c4J?)bv`BekjRo9^bT$CZpwiiO+sg!9$6PyImKhuASi+Qy22va|YhcCl`0(y7+n zAAY1nX3-Jmnz%Iuw;p`W1f)?p!`X^wH~`>D)I*89p0A zDm+SDVvtI}<|VFR`wj0d(wQ|%1^oW+!_n{qQ6NFyhGp~P8kf8n#S)W^Keg8q^I17| z<0U@Lf*k_kZiv04d&A4Ayy9+0%YBbDT~X#-7P*ZR8bw8Re8DNL(x&ak@AaW4Zr1Lo z&8vS(6U;Rc-*ysbAi30_1sh||RiQ=y{M2gNWogR&wnLwV_5+`3lZ!=U5P;FR+{K2& zYDbLJQ+Y5-6obdjY`-pxeqDb6V@AM48%|P|T%`aPV@qbt)r^VK$f2oI#K^U!gIfY0 z)g@gy&13S--c<@?^!uf5$il$V$Yy+nUVMg!D&%9?ve4caBU^*aAOh!ALK7Ho#G%^Z zWOP^=&Ye4|TJ0k6p$N}zu(*y#5iwR;h(S!$LR3lik6cL>CcrUFo{Mig9YYC)}M`6}Yk}RLVMeu?_KZ9M&VwlTTDzoG7HpMuc7R6HS_NsqQR^_YYj4I09BB-$#Vg6_$ z$X4_S(HDo;RnK)`Csw4%Dd8f*<0|jGkgmZzqL#|Ig(*(EZIUC16x254NR>) z7CvZ!m7uqg6gsu6B2>k4>4MM_M)FFz4(G_JL6{A(5Qts-`Z;bYM z-=dvPVueF{rO?))7SQ7GT(n5k^Lprb;oQ2V#++bbe)Yl39^)B|zSv<5sEEW3$0;F) z%jy%XA>uVc4onh(3teClqKgF%?K-n|~BB6*ZVcb+8Imv+yO5+qF zOAg}{+BwPwdjl@W9P0Ud%Yy>dx4`>K5&Due(lrsa zumUE~7ss6;GH&X^XVkiewXhVRxr)2iNrbs{&hJyg?ZuQ8uh2v(R`wgT z)cI9y&gMU>kyssl@f_Jl&?ppvY`;ah-yLMx?SGU{YG@NaXDfwc3Gn~O&-qSBm_0xS z^Iii&{iDG8gy4E1f0~OFR->b(#kZRL=#iDFIDw$Bkg1Y@Qtx+aEX^UQFC(^~BU(#xSXD>I1sg~nt17}}LjTjWhPC?jA)!&+BOq~B~<3^3rxvF++n z*4^8tEyE5VmVmg3u=EHLaI=A{Zcw_+;iiIRA$?Orx16k$1{9P<%;_~*6|h5|dO z9f53lw~UxPUy$oN;6 zTs*79YB)cF;1@g+wCJAhy61qrEm@euy23L%O_H%MN(W6t5tqKezFb*wi-8C(Y!kyL z=Xs$fy@i_kwDT|NU=o4yG=60*ik zH7fq=%GMZ4+qiJhV#&H0p)r)z^;M0DNg@Qh*>)W(4&+DpNqX!2t+S=Ht-KK%Z%;lIKwSXITw}3tVjPII<*y z#3KTzupbRrpWoHbMUP_&>Y0S9neIp~@=+>D^3Y9)KbyIEbZ3b)lf)C~{HD81Ov?e5 zMz|vAB<_h9hgbnAg+oyr*%4ppNrpl+>Ce}+?%*#HckN+}d3^Ip-z1;2l9Ko7BZ5B! z!)-}+aGc;2XIy18=6W5k{79POkS!0W)5XFiW%7xrP5Z1La@GOAizWoB{pv@z?Y_Yakei-;lO2<>P<@ z{(wNpJ9iqHQEKztFz83e5WEmaIeC-f37 z)&h3EH36UlnEuSb_4Q>v84oz8CT$)sbz9=H?CI)aoaiNLi^kv&aOf7D(4I8nY zB;TH43O~O)JKhswQa+!&&j=Q*bbSJ<_JZ1h607yZ0!QskA?LfZ15hC*1&kW*Aug%K zk(C?aURxp8FQEk?*H?n{0%Fb(wB=4vLFcgLn{dw%Ox|eE!mtkbQ|S5b+<+1YXg{%^ zrH{xU56c&_9eD5)-QyhmgD0j#KxP_(%o@T)U7ruc=|jH{MCBHs7=pqIrV~QVAL$0- z87)Zoi{V!=^xO;XD!CDc5wgg~3I%@tv3LCVE~xvwD9vZ0LOu9w94NMEONt4CdV7S5M4h zNg%+R=r`^`Z(F<4&>|n5MoIyv=sXL~=ySq*;jsg8{fZFKF>`2h?_Z=0prw;J8a^cE zgvoZ~=7b?#APJt4shS}Kfu_ZfMpS*>IIPJD ztdPHP$EEvi*k-=%_>w+DpTD!#JGV!-K|C{xxCbyaM%zMbaqCNJTm)ZNijs-Mp}Ih< zB3uCjDv8Yw=tYG4KyOCJI)vj;;2at%RR}NhV7&mdTjRf%A}>D(2_ISR453^CI?O1@ zjUbGmMP6hH30*}b!I#}7@$=alUwmG&f*mv;d9mt(Pk=}VK1h_B!wE3z0@brH;U_cV zCnxee&5>hW4Edt(s;)E~`kDhNuCQA_sb@A~=$oxTi=r&lnqq(cQOo4!ir2m|%2=K& zV5t+vQ*i(||Amk&ra5dejrqp^n{Yy~m<2fbqa|29i{|->lYx30^pqQgqu0niZlnv% zArfBTFlNw|IpfEgppB~o*=CFemQiW18JMr;UwJ_E0Q8CT!F<+(&tqNi*C6W0$Z$#r zQkjKV>g)Fe&|+-pQ*5B;8O1+QzeeCsswBuQ5gapBQMxflYetnvTWUo+y6h1}9Jgob z&fZ`$e>%j6_IQ&cOfv_vh{jp?EGB4u0r8XIKN_D)reB>}#+6mYOEXwdGij)U)2Nd( zU|VW0_+M~NH?`s|g-U!gbSfsso6$qQRJuj9&FnVY||cu=N@UEWjUkmG!gs& z(SXWs@d7`>qg$c~&0a{8zf?{yLUT642`d-y8{G<~@2&kxm+?Fwoz%b11=IIOse7t1 zZ5O3YdnB)B%fxG6l80c0Xb?X$(ODFzYilDMa%l^%nnbqoz_+lg``hAVkK75%zOYw} zl#DN#)Yc!+*SCUqFM(sk{uGWqi6`17!@+x?0Rffko_4D6ISQ1>0li&Yl%OmqH zZ3RbZmN?&VJQneOb093U?85T+7;s$gbwILHioLxDH9O+ct@P*pV^A#Z%v62$>QC?9 z^(BwJ{kQw6L0(3Yp{J*fSGHvCtVfZhYU#wQ?ErBw9H`eIIr$~%iDW(+s*B(t)yc8v zdmr6^N0Mlr)!g=wBLj9CnA_2b6Mg?STc8g}R(rVT(#TV5i+8m>G*5Sqv00N{XvxrGDKQd-5D&0@Mrvs`XsMncQ(~&${f6t?WP;cd=IqKu^iiPgZlYNJ)g}< zl4H*dxvO5N=N>3$j~LbRk7375f6+XMCRmX;ZqcKxt9OMt6Y{Y@pR*UpqkCxliiEG9f?fMY`};<9`}xkF*nHm; zA!<1!bLgoM5-yCJRK?P{*rf5(k@3XWeG2=SFcL1&QUpD8PdlW8*$R#f3xjW0DJ*+R@7|%9T1_y$&KKk3K8REJGM}}`gbd@fp>T~KC&S?q9 zVHP4%Y_{MGnMGXV=-U3d;{%WPe-s}--qY`L7hD5GT4$O4H*j!CD4 z+;0GPR45cEly{a1=mq4)5XKkw(R<(VfhyL6~xgGM_;;kk5cgD8+Icdj4&$ku{bd?Sdy({7@D5 zYey-ySEom^%(^dDwjbU|$cgJ;?*y+mjSp_=w{9!*&3FKo*@eF zJAqRoQPCuCq?1}+K{w{JP!!8?CV^8^JHd8d5jlEccJTb6d=#Kei2J!~2*_aJh{6k* zysz%SG=s4)%TaXF$R3*g_s!8@wGOj@mZc;6h`?#$dGyK~g%{tSNM8|p;@VgkYc`)n zs3Y5t{QyQKmLc$-5eSwGXR+`?;cfSvKQ57pW;qTda5`01)Mq$576r@2uvplj@Oqno zi>6~)j?W03)S!PnGJbw1Pa@4kiZ|DfKp3I99mVUm4S|;iiP`ll@-V8+0%8K+ zIQn&wgThN_1ua^Lb<`r^Nm<|QOH>5M|zj5DC07#{HMU2QSbjyaYMxZvZJPo+15*&%?{< z^tRVKMJ)f-E%>FuW2-pU;v(~LyKLM4#fRQf;>}iTlwyg32?+irF;nEmHWHXL?}{*q z;f3*x@r((F0f$+smvFzB0#D`0zus=`VCv^U8ofk^5yuvBO(XM4*}`q&jV|+IV2jQr z@vmz2qtf)ZFpZ=)WJ}qIB`d$o$J#0xeo;5s1}^(u-ZRyrAs_s&j~w>rs0$m#h4-;f zk6z6sDe`4)p&PRFC*PQjn$JxhSYQ0nWRX+sOVolMJ?}?R^7i;dw9z?gsaYnuKFSUK z#GDR~Nmk!<ODa|Q?&ZG$t09$-dz zLoft-K% zMfr-gs{)D)oBu#y6I5brBj14&WkmBjkyQ144CQTcUpLLlu{Y-mjNsX_UN_T9dr{4OP2H(xuXulMY5Wz`1RtF>8MBrn$#--*a`8?1LbYs1bllv58gMxG3l}2>(FJ~ zReIs%6TB36@!BSMMgDO`Y;t8t66`<7I)7qfa)llT_~;>cZTxYi`{T-=6qu*^W3D$6 z@bN@&SBBwFxSK%m*q%dGQ0i>@f*|u!gFr6wDDXLt&T1%V$`TJ%B0do?k^8oiueu;j zH{<$ZITzn!m!}WtNUpfl-o{;f`9guyjxT+0>X~%4lFyke33p-fJ#u2)`LD&b33n%B ztkY5cQ6?V3h#xhwo=dL&qzm}ckLaTkD~+lGgDWzRsMH-oVJh$Dh#%mh`F$@b6yCI9 zi8N>ah@Zz&4u6hmUTv@rR7QOf4tr^K^MYKg$lj_r_}-ATUEb;xqZO6pqibgi3B0y^ zm^wDMqWgs@g!sDI;XYOgUblyLdZ|L+tz_m;HcZAmg-6=(hvIu#;67prTvSn>71$5x zhUc7(qdk4Gf$u=}149zvdl>uU=;+QiVQ{Y@$~*bzh?!imhO@KQ5+B)sx-k_c!9WiL zV<)0u4UpU-<;xrLwK*u#nV<`t4ZcGGsZ#qmV+hd&{`f!_|CB3!Nc-SQF6b@X92Jdw z3b>;_XMJsx_3AN?94dj|M4t`oCG-&bhrOO5bS6!Je^zX8%)#gTfElvDmneiBG2qxR z)>bqtS*TnRUA$;PqtYfi@CkFI1_LT)!HvlvN9tF|V!2r*fyryH81Y#Alaul|55LuL zmmJFPei$dLjtQ@oxE_MyWaD*`&$bfOy?7_uiEpZ5cgNH>7t$Xhl)Y#t$8s~X-O{Y7 zS1<8?h_U>*Zv-M8NcYtuUQ`QJG|%t}ehEWDrZh8}0(DZn48>Kuaa#?=gD*)fyPo5= z2Su|3h5tVD(H^k=(BVt3Pu6!oTi!h|*!E&=Xv(f%tmX#ZbSFOO*s}J$E6J{()o(_= z7h)JKpD!Q|*_&Tbk;T2os(B3oT0U)4w(;-adLGIKl7s_}IMcLi-wL@@#|1 zZwt0(k6Zfjj&VB{7&+#%S7+*BxMV_fsuJhu0r|P(t|<4WgdbB1p%`;4cmw{9-jjvh z4BvlQZ^wG-9dPx-ov~-RiSoQqSvoVg?jV{NPkfZnn=Rb-6MIFp#lKBS#~&7;IV#B+ z>pc`dc*ecWYZH>x+oySXZds7-@)M)p3h*G@>qope z*!pL#=hcedkeidwP#vX%zPGZ=_vydmO!6miBH2M?*y^&`W@s`> z2G2q*1L1dpCdC9c$axvy=>g)yU#LVjfWJ?VU;&T6SdTuZP_Nb_w~&9=)%vq0<&|{B zulGV}BOsl8po;9xWXG`*9?ZJBtJUTOVo6#;LnklEEA>Yx4*Hi)1U|R$r{wpP`{%ky z`>%R#evW~HkbgL_rbr&_rPtblBgbi|^cg#(3bb zcV6lZFRv`h2KI<<2yj*(*=2cRmgkz zxrz>UgxC1AXRjAm^?4RiTqtk-+}~GL6}NvC7%Enut+jC8?OZ?L8qG4$xiToNaM?XN zujT8vwgflk1y$(cCh~UFf9th-+4}t}P{p1x@8{C(vfBz%cfvb|;2M-#pw>k-({2sz zo^k}vwUn@~<1Rd&pcRG1O?m=NZI73)ByE=(vEB$ncR!z;;a|6t8lRY9+ry~n5MD1q z!%1S~sL^Eb%Si}%U+IC^cl`WdHo)7H&T~}X&UAGqLvWP?EjW8hM^2A04=cPwH3=S~Yx|AWdGom(eKR$kSRH>4dw zaqfRaWz1TskeEI$Jg8;z2V;P0`T=BIQ6JQOH6cp{` zE`h?XJ)^Brls}`i5dO&gqhWe(3?DBJ^qb_A8W|naYiH;(@uaqX)w=v=`-QV)=Ge$U+WwrPgFY(&|$8fzsI^9^DJO}~K1ShP!6$7vPaxwThB`eHB0h}0fHxdhquQd`D~U@}N; zS7Eu$IffG91N+@H&3n!+<4}V~LUZr}#f^+Jr|tB%1W(j25S{gcY~0iWhT-VO18x`l z;tm^eHA{EDcmF>pb+)WW$Wu>&=hyFB`li);_9(TVO^Tn|rsd-6m~Ryst}EUpbWzoBv84 zLnuMMgiQQsO(CbT)vBhW=AmMmt|WYxZS6OPDzr)+hB0+-?;$yrC(HKxx#5+`LbP{x zguoGsMr_>}L{Sx`o;OezjlY=JcW5R0_sZZ@>Fh7&?Cro;VKwg`)#;Wcmg8eEk!x1w z!VbvOMv}Q$3g%@wsnK0U;0~2#A~rI8eo9yA+LYNPOO9`ug}*5Dio$a5;IX2>FM8dU zw`WMzhqR{=stkSfUo2>64<5K9g$L4INz+N!L%~t9p=Swo_RakUYTxtWk&LwQwBT@< zO?{G0xzkA{s0ihZ!TG$6iLEzib2HL0rw+vW#*Ia{;{k~38|F7PDEZ1Vzx;5rJig?J z8HZB*G-v0rwXNuJ=qfR7=u!6H)cS_TX)|A*i1-{W)=#e%N9jAxqgK+V<<#BNXHYpm zsI8-XbWi8;rY~S2_>W&e%0}Xdzi3+MjQbfa64QYUdmeBZ7?JUEN}EI5>e}bpL|pCT zT$1u`{zyI>%v(cdx){&W<=1vKKub92K4m{llhhYX)bCE}u(_HTZ7X=YO+D|sp~L-Q zx7qF8zPL9XEqq4#x?MKQ=U)Y_WQg~+$afW&Bk>i9f2X5S`wl%(;_F9s)YXUV|5}j$ z*YfhNjlcVm!t`9`xq}w*6C?u47#-G>UcJZ? z_r^?H|9`-Hgv58+PJcNk?vz5i-nq@1a)lrejjCxuLBt3j9uU>Tn0q_)#Al~WYl`WW zaSE^JEz8$07C?b~Szf`jreKO%uu;<@j&ICgfzT_z{{N8oJpT>C7ux7{viD7FHK=4@ zTUjNc^=+TF<0K?$T)$5E2qRdWMpMFPXU3y32|(|O1AHxWB?V7Q5*_@)-N;&RX{;Gp zAAzZ9t@`Y42_TTP9cK>BHUtpUbCUsVcZfOKijpXMN2x0#9GUbj~*GKE#G;a~3WL=mS-7puD zU2bZ??|)ZLUt<*uir74cn;QVq?c~d2y&zNfm;73qz!+^2%O9LTGK_Zpf_3E9GYfHk z&;C$2Mbd(=PE7Ju#IvkZ;Lq}ah^!2HNA{y^V{?vB5B9v&|e<7cplDECf!9F zcvMFY{GLx7Tq(V*NFzcO9!kHm|H2tt+H^ruvt;@BWyI*0Y%~`Dud2G-o{C+EcQ*y@ z-o6Te_DPZcwyg;S4ZY3~4dfB%Z&jpX^bgM8zfR+d%N@5s@#%c#%}Y*lLNX!3A;OEQR~#0O$cDk9^RM zSkJB@*T0FrPNBGYyK^d4AYvK<1e?zUv~ejK=RQe=BjeLxOTxYaf!wUeOl47ZGY!Og z>S7X5)N}D=+eef$e@RbZbKO^McLtTYU8OoilSqT+P8U>@UC-ANVtILT$Img4O0=u% zN`b!2J~bKU21I4C*1;k7(-$J!Js4imx*L#xZ2{*5AK_?M|H{%hswzZ5oExlvwx2W1 zduWgTqCtZx;ri??&6}T1zBfI*H$j!N5qN4AI0(l0*2VEm7IJjv__6H=yl#F9rK(p(H~X51*-HtNi>DJ(*MbqPgsv_a4VqQ6LL(oi)vJOmV?qVe}8>a^e$9UjGs$NS@2$xJHO!N0e zg)EDmTJoSmIitAo>kEUGw@+}tl(%0rjp49JMp-{A)k%v^cb5T631<*UYX_{CzB=%k z4wPEvq6*HxGp?FXn+=*PhR6Nm#0RsnIm1wJ&Vo}) zE`Z8`N>d*$*Kn`4HNQv|M+4LbRipXReH%r5sW!n=NTcz+KNK6`hh>M&NQW(Yu=|+I zTjNA)jIuC{Ez`cj5f`5k8*?pVDS`OvHTWeQ<6?(DqzBKUKt@`#?Dq=O0ga4dSig0H zIuQ0V3-7>DNnm*vE`($`*Js`#@F6`~ON%tzbfT0Tsbe**C*%fZKs0=0gv-ZPYN>H{ zcj%(E#FtB@IUf|WtnDyzvBwC!-No4d#qF1#y@ugOv`D`D5opO|eA2WFTM&=yn0oGrY;O7>$<|sScyiAUKPwd0tOe>D zpF@VVDsYgD7)JJ01Yr=O(qY2m6m87wEKA|;@kd}h{}R#~9}Y`-q+7PteG#k3pcb3% zx;^;uMu&+^Ck%03liBk1vio8Zt7$BR`Xs+9Ay*@#CZFTYltfeS<;___GuKB0o{vHX zq1{1-M*F#ZfJliU+5pMHy>FE{Au*dJ>(Kp>L%%tmB^dL^TBCA90Orc=JpDB9Pa8&H zP9bw}y7ej5dcD!?7$|~RzL8=+Fuq4)mzUcmMT(c# zk>Dxf$nt>q9mAV;Z=)^zH_M?rT`NYq5nR}4N(}hLk5q>INsLTsaNESI)bPWF0y4UE2c)#i=v&({QTU`3Bw5$p6^aIaMA0T}SPB`1Ip zQ8B$(q6xyP#1v{~!!Vim%~ zt`gaabcsVoL15HFt}r%bxh%Z>n4i*bLA@n*1!aSQt-2d*KCrB#A>{xa-)y#C>tN^5 zK|5SNZ-R>ZH5y#FuZ)G-(8V&ksJ>2!tA_dE=2rOxz6>$?BEC2!O1zjT3YaFi=ej}a zuv0%w*8i5IkK4`SFiB%R$MdzM(`#Vv*_xIw(|{K#jd1aJGO$o6^SOBB@a6m1Mp2B9 zu5k(?MA91rcs&g)Z$WGTN)5#Fs4z|7&YWMzOZ{8ukF7&DEjj|GpQ3{H;bE;E zRi17VR!v!(RrKi`Lw#f>>DvslYBXSfG+Dg2iC#HCJtv4## zG%TwEjIi6(0bef6J1LkcD71JQi4+|ac?d@w*FB5c2bc&t5?UhWmj^KLdOzvSJX_#m zIY2@ZiVjMYz?^!kjn%{od};NcY2zAH1mjc~ws*m_{Z~+@PFh;>o|vv{Fi)sBCG#|^ zag?0#+1j>Pib@aiRClBIK9{8fHiBJP8IN-X1$%Z7Pj23jTJ4E5eC)4~sVcmDjM6(# z9`Q$OqK0Q~3oCujcgx6i;*!p78MHQ8K`?}~ZV5tRMX1QUg;Qfj+Q3H`7)xv`X31^& z=}@Kv2i%UKO|@5^M$7d2)~0r|f(ugQ;U)xI-6T`-jXsX`++3nCEO$ulfiKegerQYR ze+%kjym`|>5%{v>iw-i65`^}G`V9t2n7qxRpRwZ+MHR0AdWKy~Yb5$+oE&rNC7VWu z#m!)TXlf*maQN-yAGE04E}GzW)>IY#F2#$TZYhsmf!KA^nrIA~WCh$K+3T;V-H{BM z%@VWxF>o(d8Gm|l@UledXN+(NjC!Hmn7cQPi{ixiQK5J2)-6fPl}Gxl5JGBV=9P-` z;k*rZztt1JR{UflY6MQ2(^Dl$!V=iBa%S1{a~2%ubKuCH4@Orn8kh6$T{y6yzZf<@ zimq*5@6=tm7+r26F4-`iRH1KSx3_KmRO*A(BvB2FWg$@#Q^Z}GPc1)7{F4F!d0QE6 zPBAa?&0tzGw^}CMsy_YXFvdwRn{zR)SusoytAELlsH~qZOkvXFKf=e%>$)QV9^%o{u!>nC2k96Z?f1 z6<0vN;m&dFdCuzNGTGPWyZ-`04}wQU+?#@nio_?2IeGVnjHZ|~!&|Y=Wm8s7m$J2( z`uCp&%!Z{wqsF3Q)#s3TLB72*)26$tp)a2qCvz37FIuYtS)-6_AjPmd)SQE%B&CBP zZVZF2v_J{aETM6(uxkr3$&B0a+`Ow_VPiH-Z3rY3{v1B1uS^)eKe~0VD&9shRu9rm zCzm~2qyucYZxpp=+a$G=AxJX>RF`mY8dwqUoBkBSko-@3^vXBhF@cI9eT{~#y92qx z_$2BWN^B3Qx>zNog?hUJygZlInVRJ9%9-G+Z;=SCADFQ|DtDnOb)ow2<@{^!#>XF_ zR(Jk(-&9xVf2vh5C$@qEowpgjryUUw+Ve5%#|}EYPkhtjJqlSev8D6pvO=es+R}as zNl7C<^faq))MWti-pg!-qY5Y60q9l0v#>HM&6e|2a~bd<>9|i4FMpY0^Xu4%vxwOJ ziB|Vz9`eSFMf?a3A$5GVOpD6|Wz6w|^O}~OE0N@?4;i)W>J|lFT`{YUPFP#jh4Mu8 zU%w99%L_Ef1gT+U)^92vHxxI!+4b4(IGJM+e*wKy{N#0f)6}gw=%RCZ9E)ik@A*2s z*#Qfvk3NjuOFT)o!g=!^!OivAwgTJdOW49Lw~J&3&sh1aJ?}L|)6|AJ?5MwIlQ@w9^cMU74}3mdHU(D(!48HwTLM8&nsUf)JxJeT#1zlvTl@2U7QUl6Q*e zIAo-8ez1z{61so{aN)y?*Riwu=*GBGMj= z(O(BX+ZuGyu_MR7zPpMQ#QpK&pxhfGd-I+p%Xb2#P(%?vQ6)QygMda@ClwSkYw_(H z?7<}U$sF{is4U1(Nbup;|uKDUGmwg5WB%-48eg2d18| z5DkQz!zg@&Z*cN*uWqFiVcIi&RMH{q;6s~zxh7NxUlNbQ_MIih3NhDA?J%pq-zcaE z-(0xHw~e1Bc({Md_=?2UcM0q7qhP3scsA%R9xkGlEdHcRHg**^&z{?JbpzhM2@m0x z9QDW@*eII)1H=|0K*hsMRDbh_xkOg!`sZy;bsDE6)p~mcsvBu}sR!AQ=AIWIjE>~K z0ubm%#9ongY6^3cLQ-cM91BKCs!62mdmsJOXfx`H*nfFti(U5#Cl<_7c_)>~yp!)M z0u%iSC9f`J&CecU9Lp|#NuEXGM)JSQa2mEG_4u8a)zv{uba=k%khFVFF`x7uIqJ$B z9Q~>mFKD}jC-`KATkmX{S-FnytiT$!i$9h(f45BY(Dzj*slv1WUXFL?=usWXd|rmjU1?M z3vem$4NseFP_GJ%VGp~UX=yLGojo=bv+^2H{v`F5YaB1zx61Ue78Bmfl5UNK#vZOQ zS)q2QiRaS+rQ7)B_H3~*4PMk!`)~Yqe0?U+9qk(LH9Kqbb&9ST{Q5LyN9wMiK~IL? z)uUBE&j1MReV5|+Noqse+UWXC-pc)KmF>_}cQo}2-8Nrt7L<(6TxFnFt?QYGnYHB^ zf_#bYXzAJ4h`d;ttqfVyy~f9}BgZ|U>)472Ij{vUHF00n>~7TAENNVSv9julMc6D{R-H9Kq9EkU$bu1lBmBJbX>KoT(NX2IWx%VL=>Y@wa7VfYAU2n z(HyIa7^YLQ?9~oYrv4NlSEl;Jf=u5eG?R6%>T#IdKdAzk+n~F3V91fw)iD1jX5Y)y zx2zIW$)dQw3)LWL`Om=sV=u+Z#SAh-1NWed!<$r-?%$k7hA=z*Kl2ZTu#F>LeaD+TjyiWZ3Rqgii*LmiZ>0y=I+#OuUh zQ!DmgZ}L&h57J)D7+AZ&K2D@siYGDw{~&)yt;Zvk2k)L981Px^rRPXtCRe!R ziuVpE4Kw&6PT{e6E0-#kE?7cwV5s~qM{w%k;4GJ1R{!RtqhB<@TBo`+{_4o)l_|^# zVXn$G0ev&_nEwZUKfrs!2rHMdpFsqT+S61gZ=wnzU}WliY0DK!NzX_t{x%PJIzLkh z?&l4CKrJMGN(B@W>oFrlSTOs6P70B2?V^{d!3^4sdM<~3p;E!^m*DHI-T;Uix-BYn zh63!I9!*5m{J{L%am#8L0Ngh*p9+^4N3$Ju76(O&Wjca+@;a#N0)L0(rxc>}&f02u z6MR2(K35JvnuF`mN(2U)1NI(u%9Y`yfK?``-_ALi4y|cDMRb z3~NW9D7V)79EA6xCJ4zy1h$5*DE6E^v+GiK=@>9(E!v8(4pEICxrSVUgj>y#yJq3X zRDXe8P}h<}nv}IfBMy0lhp1BCN)~NiFoTy_fwvObTFOFuz8G{8D6A5C!H*iq&+yln z%iuT_ln)C|n^vlK)Rv@qlss#Rw-L5i=pkPdM<3#eMfO+PA?Wblz&2l!=h@f?alN>< z%Jkh25k1v`tKO~f2MHg%J)t2(Nj>$6tG{Rm^2RAv(FR4R&gWJ%rZLEL!atx+X)OH8%!ef-3NnU+aOaI~K$1-$QrS@By2Irli zd_0;TDJ?6YT>2spc5{FAq1vm|Wg~kJy$*f64SzXi>$==_>}LA$h%z)OfZ~sO-N8@5 zQZ?uy^(s5WX+zM1;dtSTvK_(WnY{ZUsu$*w$6JoRC$M)47b+ax27e9x*-fQx-2F@T zP;}8h!H;5?{v`Y8*CTWUxm@_8y0cfZnA?3<@EGXN1n+>oz-bg=f3h3_p9XB zL_^K|Z12Ml`Y6JnHh1p9oYq|rzff`sy%(s#ux+x4I;lTVZElzo+k;occv5>`)AGCD zBW`Fung0mlSUFyuhd5b{g|tI&42&O{!(TA`NgXe3Ed9}+_YLXE9cPJA{4pJ0vQRGF z;Gf;eN02|A4PWl6jONjA$TyrkY3IaUa_=ep1=F31Oym`Dh#1o!{hDI0^pL0b4MjMp zjp%wqGrt#OrCR(2Kqm4h_R$^dwXl=&8Vd1e(#|CHqZi_P0*q1*KUS}7P@MQ5##p-k z%ha7tnn!#r0V{RtE!7~U#2sYnM?S=N%DtHIk02h;tX-4Keh;7z=U$~d!8^@fKQzj0 zH~xmO_y?6D5uqQ!HOJ6Pt)#zyv z`@?*Yds{%^o6QSfS@7b_3S9MEF$jEjYnQ_YsjH~MaByB2f8O@!ue!Qp3Vi>@D9cRG z_|;o*!9bMx?w(0Oo{^cElQT}X33;}9DPQfq*Yl`#MPQa?(zyHGFgI@h#`lxkWa{-O z*CLm2f-#})P4-F3bkIH-zE=EYY!)D;SJt(C^9pCyt6q+NAQcb&p5FztrW|?_r59c8 zL!9>!@sJReP)9lXF5!7#o$McWqkVvYp3#@HV)Q8RMM**^x{J^=1pm-5z7Fuu5B|_o zH8(IjtP8ar=84ZqL~sK59&;_48=(j4BFv~#dO~tyx*4=#7k*aG4b2Yk!fZ#-)(Cj# z&L;us1-+s;{h*pSPH3l19>pu{i8mCT0SZOyf&SQ$IuTD~jIG3T1K^vANb0u|w#8#D zmDb#YsaVBhFQnV=J7c>L+S{-X_s7B#-nIvCRx@sp4hnxJZ{Qnycq?xO=q)AP6vu$K zp_5rD;qOYbyAki#;%)$@wZdk-ANk&<*q_xE#)cu2&+JDY8R>OjI%x zkR7-)lgO{xFirqtMY$+g#SH>|AfI#)4k0(@eCZF<;&0=(%^p<`unzJFYU{_4i(Yr! z?mhq$)(2f-Uydo$DC|XI2}GVO4#W@8_}To%;;4=Ry^(q#AIJ>i@WTt==npC|xsxsR zAuV~nAG~U;I2XmN6pN%#%z0VyAA7nH3xrfDWb`5dM|>xg((N$tyUK+9e^K?-L2*1! zyx)WX!4ur!aCdiicX!utxVyW%y9aj&5a4i!-~kQ`ez?E;y+2;ntGe3Sy}g^A`ShoI zdS++3Ni*Y01e~~qNR+!YS%r>h#{lqEEbk!tq*=fVr8;rvSaK$rD{a~&Ucf84^md#d z57udEU)3dT8Z~*NOyw&ju&w|C^P=(rH_-^dQ7qqlHBb9MhOYjIvZlS1Opwe747naJ z??va`qny|Y6dQ~6_DY=5 zWHh#p5Xb=xk8x8WaNRl$15HKf1@GS_?m^TntH78l2~>skhiL!4hdI`JAh!4m?0e7??34}qL|K#Ogq@R{D zIRqp@nP~fdIcNvX)3lt_%7dYcvEM97IjK0~PU(Q24V5SN`a0rUdUB z@~CqB?guoMa|k3k*OvC-8T*bm8@PX|5(v5^A5#+bFC2MISL%A;RWKGj5QuOl<<6D! z{^yO125|@LkdHq2=FPGfe+a82NEY0a|0CgjrCwqNrWUFSgN(^=$OklIZW=+#2EU#R zz}q-3?;wRIZVO?sGLxwfDR*BSq?raD0B@nLBxS^!4-^7!BTu{}V-yy@#*Vy+O`JEF z1n5aTeFy)^q^V6pBNvX(dq6x0h0@?s2MqA+j=7dj5OHeH0-`sQ0GWVaAUBV@$hwxflXilIsnm#7OG?;qpi9NCU6-4>Lb$!i# zSxzpLJly^TxhCkAMipTaGn%?W1zX9h?hKR$Bo#^;1-~KzTexZMP4kwQke)wXsuYBu zMZTf~zd`80rXc+!9I{JkqX<7ZZ+?g-I26=Okf!~b+sq6x1;Z!FCy|KtC%n=C*Yzf% zL0up!Fd5hyYIt@;gra+iyD+`Efp`#Ai^9(n!ekwiOyc*_PHw3{T%a{r$AT9~2IOe| z^yC6<)Ht;5g<|iYc+t9$pB%wf;b|RY4bFXNi8qyq})n zAPg3TzzJ^C! zBs1&3N;il&^?qMGRi4@b2_}ao4JVZ*OOp{KVI*4va+7h$j>sCNpwOaseT70r0)?1&o0Z@!`)C@*xt~=3xo@734&+X6&EtUCV_S<^GbCjNe|@QjlUoxcx}TNs14L872U zD830$eDgwjk-g!d!pBK=1~iH}y?#Haht^40JVELm)teCF41M;U0PU=pQ(|7^CYm=a z#01JT^JFyWE=p)KxgeI{Oz1xcLJ5E3OrkZTJ|RJ&I!Z<(-;ucAlI|+Tu?z&yfSN#` zprQ^y?v)SWsDyIn2-=25QKQ&i z7^sl|KuLTA^?-In?w@0Tp%GA5N(ss@AovqV4x9|yPhLz~gaUH}Rn&o)-Y;GMc{4(o zz-C}_sJ{{@@ebET*oE9BOTKi(I$@Z+K?Y9_4?vTIY8vrcoB-_F<(CRHNKhl~fJIYc zFFMpd1^&+>#R)(tR*pcY$;{vHBX0S^4~khWhab`=lct4D-fhYD`M9TdQ6~jqx8u$# ziwuGZgX?VNppW&j5GOrwg$laFfiP4so{pkW_F;g^L5<|_Vd~p4dGSzQ zlHymukHv~PV>}6OANz?lkf#brQ#I<>O{JOT|oKk zA-={{v*Uvoi00y3u*@4pKtdA5vuQBbpt()DdE z=#>b_1q@9{b4?l!&TS990#qg)odY}D`KB77<_i`|CA5;4pKcS@UptOEzgp;0PwXf8 z0;tIn#b%^tBxXbdFracXf*SWXe)a8yS8O0Fu#_pS3weS)**_^z`d(b=q4fXu6DZz( z+7oaV5TYf2$6~_LcONKc5-E@a37G~T9zfImrM+Kx;dxc0c<=QMjDyc21+dnF?r)M@ zubzBC(VYcbi!kTZs#*YQs(l|tB;nXo@#MyGl?XerzgS4L$|C*u0u9pQN`82&u0F+q zwNUpIM{(#b6*L{U&#?rerwv;#8X5{nmWk*ReFPH+!+y_j`J$&>b#x!_2=m9ta z1cv5?zT!Y75^0t74(&71$d$#I#0nUHplV}^b~z(Wtg_iW@oc0t8*}*gw_+WbwF=jv zSfZ|~zboSh4;TFHVEPwiD!DL zpBqWILB!hz9_am#@J?ti_8YUbknM>wJx${9yZIL&Eszb!es(Dc?b{B{rG(FWO*#fn+d)DOHkfVqAu-)=0}?UP)-VL{tX>%MY_E5fA=QnHV!d}*H+{eB54DIo^=upqTY$bjiT-^NjpZ4{NYskW8RfT5`G;?f!k<4V29YM!g%XG;7xoZ zPD8cOzFkc6^scbJvJPA0_K*LF4gS2;^7BJv>?jmBAZ~X&O^{I_)BByu5)H}OtN=Rb z_m$cvn%G{s650c8(fI1>j9vLe448I~lS(I;c;OG9;t7pj5k-ti^E5~AmLp%9J~9kj zB6mc&frXHz+4DeG@W>?Ak5t2saQr}lVV{Tx_D!;hRa(i^3uRcC<&1S9ITV+8>pW{-5kTYE&_48urx0g1bbctXQh&dA(~ zCb!d9A`#N;0`a?8$b}}4Y{SHfyg=)SLK829;W0cX)|KQ9_RaWRBV>4$_WQ^^8vPf7 zapX$&i$e2)fe8WQ$t%=|0gFcgC|H}1F47mjehLpK3S8j!?;$B7I%B%iYY?a>X8&$eP}IsBjoYk!*_*o8%#Rid8GRjce#)~%{r-v5hF;< zyjX^Z@e-^bqg@hC(kFg!L2+$_?&KLhf`S8;DnYy__yQTt5(+QgKGA;W@DJi)dt9Tj zE2)SM*52IRSv;Ycs}AH3&=pohp!Fj*J&9Ss=P6m1%3pbKu5eS_CjGECL|H8+a=-F! zC{EK&6krdfS;|eAg1WvOB4!!?GJv_E&)WI*dLetX; zJ)*3AJGY#s*dobs!w3PnU5HDo{p!40!?F~LO+jHX=O5JhHezDY5@K78O4~}?2pf0& zdpDy=tGc==h0+A&m8!e(HsF0{nw#RNVG2{EuzG9t?Xg*MJJ|Nn?P{}33-2Q4h_8<> zyAqIewV9PIs#L0NuTY_PML6rxM3_c2lo*4yH{N(|`fau{3;fAq$8pguRX3HGqDqn; zFbIkA zLgMKS->J2~#p5&oR^Nw2{j-Z8{as_O*576qpIW1AfkywU6TdLqFk2d6TN7uIZ^1|h zgk;v|UCod2guHBheK}Uv(acscPb=r4N(|Mr)Dg zSrBed^om}x`D!S$BX*U-3t%QFq;`U7z+f5AZHqZ8n;)U}nkh;{1tC^=$s>Bo>XIgK zX|7ie5pe$Ec7$l_QQTw)e^682F!*a@VuHMG+dZhJ4@H?XH1-;`h?U9>RO1msI4XVAUKs8`Ty^P|Gztj*;MwdFSib-CYXD^~jSx#4KHpwH^Q9%ynxem7=xe6ZMh6wcLqaN5GHb0c5-_iwaE zmpg)>6~B#2-oBasc<4DO3^z9YKQd#%aBe%bs1*q`M*0=TUEIB&&04KNh5)0%3mP@l zlX`ahI6S%*sWX7UauTe!m9?_F&l{#@j#RpWYw%E&?6Sp%B@6=f3B~?(P27oDFyf?o zO7`!>U17!UL4hq@ug|va6tNkpZ0cnAK$}`tOo{rk2UIXZ&Y`GH=Qdwl*SKzj_ij*NGL&@=~W={upVFTJr3f zPEM!z8MC~xiw3q@I<5#YK6}-IAWkJXW!7Lb=DSO6=;s=xMS`bWg?!!GMXMS@;IcOg~iJ4;gs8&wdNl`GxUgZWqK@9loYttXH@Gf%&k5&HnY}* z-CI~&JjtA<>Xgd~*iX%==fxvl*9SiUzHC<( zrGXVlYM47X_{h3o@{1&X;_G-BUb)<=MCfX=I=ki+^^}QXC2P)zXMI9B@kvosvKm8x zR0eeQ4eAU>E+vEXiMvnf@x?d)2p*o&aLt9i4LC)qIy!M^#M5XT#NuO*5ULFUiQ0L} z*aCruX_*ykS-(EVo4mvdJQgN)ad!0P+yuXoHytVLr!b^$nCz3=+KcZqE3-Z7-{&MB z|GD|fHZ)U?M<$_wa2y0^8SkIg_l%x5w2E_KI?jYn+#E>|lcCvfZ=Cppq~U0K@vL5y z;|%!`M1@n@q>39kw*$XzwWz$@ z9#z_M>Na%aW6uNl0M@Y4ZE?y&vceRSl1Jr}Q<6<#3}D(3mAUOjlMwzM||6I9i2FJ8ebuJL!vjo3+U(Yk#2Pt3C5`NmDsK1X$XQ^!CV%5XrLuiVY*D<-vquz8-i!eX--{xk&b`O zC@{4|*d>TkIa=m5!2-B&!-<2~?RFBXSKP?!H00G&Adp_}r(g=_BO-KtFw0bm$Z}#3 z=}Kx_KxbITX@&1&oUFX z{`TDMWMgfiqjF=5>$s-bAWHV-ix4148Txjzn|x2)3uLyN!GJAgMZQFr>aYFVXO;=U zF_kw%W>~PwbD<5KU;Ja(sVQa)IqX&qV>RF1mb-yJN@>-j)1i6I{R=uHy`HIcrGw{r zWksDQ5p`5u2kf$*R&nw4K(aCICsnWRJYS10kzzu+#-ffaXS{oHqU|TY2(qZg6_aM4gaam`9`3(21?IQB zx{~x27DR916`GIZWWs(+Ni=znrOp&3GC3o*Y8-QLsh;#dsuwG=rqqint*6K?oxOx? zBSx#J1FKpz1+>sDR=M^2ic}%3$aBmDryzfi-HguL}~xgQb7D- z<2n)-m|D*oLah&N=)<$KjFvCH^ zvkQwrp@_JxplY2pIFN>ESb?CCTEcC^21;~6l;$Y=OiN1@Z-w|SB3G8hnS^*nKSlqe z?4y1>i|Q4>)x2Oz4@JwVcqs$aPT+Ad)d6vJliSU+67Cyt70m0c0=*XIFf0O{TG2< z*=|}+Bk@++B+ilKsUdqQ{;1Zcy|aMkKfY1!b>H2b%Ni|GCD*iMk)hh06o@B{pv$T%MXp=})tSaN0`VEDT11msrE_N~X%uH^QgZi|ElnRV3 z`-$e9FD2m0ekGJXC5*5T7Pf!_2yr9A+p?xYz*7XJaOQT#rfe`S6ID~H-%O=BDPm*( zk;ickss0<8Kq$xqq?k?oZ2HMUouz8p-2$$dZFXz(%aoI}a(#O{*@#DOK63+h{TH7jMz@aGanF{vo~cQPT+C;BT$}obL1jS*FKj-u%Hw-ILxC;J*SY|Y z;O+lxt=#C^BADdZk{R>HNx7|f+P)(R&qvH71a4>M!`LKzc}8`SFS&G3-olmoTu)GxU5&orw%_6@<}&ll%`If!Wl;a?igcFagPc0c{+jFOIMz3 zV85*Ajq?~rZ>MB!HjWohO2ck#4aggrjIS5Noys|^k+*bKGA((q@%e+@xFbR&g7_?} zc-X7cd~(iXBX#3aN$Ah}sh0iKxHZ%Luw|8qtPo|mSx!=NXgIT}*{J9W6-gtVG&P96 zk>NeChDrxdI3+UBsfH@-w_a(nxJdzOQ<&_*Iw9s_2f?ld95lT!gS@5rp7_(FOb;kh z?3*;zI4t#GQH>1xsY>1WF@Y2>3Y#G+8n#*G@=%GC{-^fB>xR}={w4?G_49g}^m{$T z_DQ*k6L6wI*6Sd*b{p>txzN~uHEyO#znNzEQVmz!xjhja;n<~_d+F5a_J_TzGpj7t zDbxC8Yb6LQoY4M#ZK2vY<8hIs`hr~cDfDmkl2v>%cXHwz+fvSi*FyMzcz&oki`uzVG*~s~^_Ewo zWbb8KYQ7-OK8ZEbO;nd(g&{gKsHvr`-P1B`Dz5PLQ#NLk!1c*yohSqgn-Su`EhRAT zW?N)zEdyKWCfJi~1xz98`UH@n+eH>H)HaDI|BmTv*lG!NvOD7R^QLX2=@zm-T>3fL z#o<25g(cajTPqra;Xh%J8s zq2*k5=ea^TN1HBN#whpg&=%&RO9>4j`-c!N2L~NdA0G8@uHQ`UZvRQ|$rtKsNNm5W zIVLrb&JP(T417b#WJPuTzRyw(&5Xi6I{Z<9yK{%x==4gdW?(b)FxO-ZPP&W_zoM*m121YD zrHk?T+{P002xY}$28(Kcp7mQ*-J+6mLf}1_6K#&xPx{Vz3;1TR>02Lv74Hz&)?ICv z`@>lyJY9-SfiA_gL?)p#(yaQYgw!$dtM(RYE~gr5HiRwW6B>zg^lmkY4O_*s@OjMy&um_w=_MdSm3>mINE zqE!oZO|h8dg`#sAk+TaSxRBzC;llv21`wOr{UYLvU0hIHjCy3!q}d`vU|i5ZnC^dD zTM(Z3J6suX=`ltK*w#bNv|sW^)}yC=DoNylM%kGx$+2KOcFwrwgNU6AlJ6}yKhfW9 zE%BNDkkDQ#RSa3!K6Eq*<5YF+Avi?1GvuE3ND9ZIy}fqttYs zly|>obm?UTBg>t;F3R8ImEKNW^%G$!FQ2yx1cCBpzpYc9x?H(Nzy;>iH?mH=83h6< z{0hX$iEwnboOW~hfJyZ5aj$5qMcM0GGs^vn+MFkEoI5c!aa?~{&XA!8o*|?zTQTt? zmKfxH$JjHM<=%8fiXUy?l@^kb+rlt*60S8G2)2s!=2e!r6SZrwBzZ_|ujzB7XcBta zVi%KA6T)YD3{5r@fbBQi9f53jeqT~zc#Xn- zjL|CQIk#<|RQ*huQ7RK%YX#mTthw!Jx#~jPsf5#$&j*X0_?kr}Y{0D#EYE!oAtnQS zCSSVV^<(TUdl3B+r_kL*QCkl-^m59#bO7*WutEIq%HL@tD%-DL z-dbLg!bLmQ>Lw2FT4k{>r4J*di-)iSEiQ7Wgea0Uv9D%#rw7UtO&%PZ-hhgu||D=gjES~qE^=;f{8{vm~%LqAXL`QFI=h(BlMwzHo%?-+iyS)cI}9Cq;&c&~c| zQ6ebREpCUhjSFfsz5Qf#c&X$%w_Lm{M2_+5+7ZUWG>yGLF7U%hKqq8h5XNs8>Bjrs zCU;*-(IcH^0w39d~WvdvS@Fnu4C3>doBMT1-P+Lda6vGl5nRu!ig z6{I4zsw3mGG#6WyY2)1bzS=15I59TgHiw{~Y@;ity>2*}(10lfT;oIAWGJHfvThNn zc^XVsM)?(-N;sst|85#p@5@t?;xm}PowhhJl+X6}!j_~2cIcuTgYnvBu~;AWPkgB{ zh27J{mdvdSy*pS*txHgBczsUcH}3S%oU(v3A?h++n=BG$SBe8P)px=-2}F&aB-*f9 z7j%Z&AAip96zVIEHL5uh*PRLMxXs6X#&6X@9ZoBbC5!t~JpG>EGEA8DZ{%D8ec6I2XLBAtq#$|hWI`8zo z+C!qBj#n3i>k-e;Guid>nP@v&G`8;BKe-<9<&=~>w{6Eu7W-Buq0R-#3C-9fiM56h z^XTUDetT}Uo>4iZU3*+{SoQyO=y$KQBWNX^6*6@ex7K$X`UgV2-P;5jy!{Mc=x>D?{vDu59q;2+?vzV3D9P9%CF$rhZO^ca<~33? zXfD8}Mp@~#|K7jdJH+MZ!e>)0`oqpJyi7P0<3d;cVo#+irVpFVuW>D&A|_xmg+X5(tk7G7k*UbPYLkNrw$!(6tkN;!ObsNH=G?b z=sOo13|!Z@Jv0F~==nm~1h<|hhi`Ao^rp>B+l;wo>b`>OFS99)EdMAiWq8#d{AK!; z%};gWsJv;=5#GL~*AZ@tG_u5MeNqjZD)FU^vB^AeJl*l4&&yRq#eGx5vOeeL!2JR< zET_YK`SjQNGub!0U4Q?)=7`0<721CT_OK#F%hF^rRap4&wl^(_K?OgV}8*m%;vS66BhSrg-xRJtiM5M`}Bny}E^ zMlM^Wczb5b_N~LUKe+?z; zR(3A=85)6U>W*zlmsH`NA0E-TBp@Vz>TXUYQl~fGc!yn_-}_duogKz%%b9Xvu^Do> zw^WW?OUB>$7KNKEO5_I7+|geH>8?1=2FER=Wju{C_lw;ZYYzUL+%~1b>=#{15mx1FzbBJH-EOr&kNo3e8-4#T*h9`}swit_sd zN5+$E^X;tomnUom$Q0hsNUFL&QXJ{27-m(wij*aP)6^TyaRAz zWUj8*q(jLmACR#0l&U`bLF}mnAkm0ST60L(J)y`h8;DGw=)Pb8)r54~&9Z0=BCV33 z!Y{y@1UFy@EoV3BADYh^Ux{CI9NX&R(PNa6s~1ftsvmtM zvQjIz0Tss$QDfa+x!?qJcbW6IVD)8h&%a2c~AQ`VBf3FEOwQ2zkped~pE9%k78&CZQ;{>mC9!z$5$_w<&Bsrn;N~HdRKyFcsvE4DEx6F} zVt7fz5IqZ+7}Sb%(>Dh!iJp1ZxRH&y;K-#!?#Vu}!Xc&N$+7de)9@CnNm6SVc-UQq z7~%a1Mf>(1m5)twYIkIliyrpIwiVx1qQ{Ds9ODf#jON`Mc1=5FECHdeP&})s*Q%L; z2J@F^ku=E3Q$PRaN7Pa-+H|Lvp_HIC+lx@ZsIh_92;OHV_h5#*^>co+?q6 z7~X#r3}NaY{0Wo&Ek)1>W?T#WZ8-U^iB>B?8~Ib}W(ApGpKad$(#?DfTbKh|PiEn! zzV#DIrCs{hV)ixDp>E^8`LJ@mG7M_NEs<&(Sgj^sA|5=xYYV09#c6u(=Vobt-_1BqSEA94)mSP| z!mqvhLk>)E-gbNftQ_;I#|jGZ>VNc%s?jLW;dMB$T^JJJ28s>TdHK0N_Y*pH$elyAe*+dx++;}0j+JR|Mu z`7Xw=ueKF8n{1#)Qrxo&aBvREZ`AZlp_a50iIFDcr)n3&!Q8AjPz{w}%5A(@QXwq= z>DOlU@bu;ur_N82i--#~M8<>H=CUB1LdCOhjJ4cKUvy8Ti#xQ8M9bNmhJ0hYE7d$H z!e)c;)sHjeRl!V4lr3qT8pr^N`COJ%25Klz#GsU{-(Iz6jz3@VT98 z$rB^C-LsUB8mYawBmlj=Fs|2pjNA?|N@lnV>m6ntVV$|jX`f2k4*S0;i%|+z4~=f8 ze<7bkNABRhXt+CXp+r3?i3jhnq}AyO;*jwL+GDhiq+;BPqr1 zfE;n=xhI|Bi!f#RKOg~dWM_Rs%aW5n%8o2Q(1c7Cw`D>BdZmkHV%~R))hQg^k!o=@ zZqwpr@Xtwljf(^%IpC=PwTiX6SrK?T06T9-9UHEj-W-ii%nB7+aDM}>V;Lfw5x&iA z7keqyNEK`ONUr9gLaM91mA_q$QfQ(<#PFBEs_APu$B5A`N>f_5x{16)u>`xE(KeJG z+_B0NcK2}veDm%MzaUK6gdarEfa@fY*JVQVa+Tb+DO>2bom!PGF)kNm@=2#+@W(B# z2o{Rt-|D3@&*Wt4MpBSC5fHdjzzo_cdyXpxkqE>h?4|6Q*bK3PIJOSc458tEXL4qk z=Bt|b=rP%oooe(Z2tw{g6!NPvhAqJn$xh z9*fP-%CimcuC7XJ7buZh8)*OX!O(%O2`hOkbbQSFi+fcf(mGcRKD zn2}PFyJx7*T9hXo5S8nCmh1W-^Nf-~$67^Ve)KAS^b&6LGK3AJO?A*u5$Sck$u%Pa z$;dn^_6sgqf_W5A6=3g2c$7c#cj&d2Ta?axG4wjd9~sM@OoK2=rRkC7|9*Z%>ziHg z?tP8sq)C?jJx;C_$Iq)xrcC#{1aptDm<;!Nj7NUV00(S=5&J+*(7<5b6|9g z0Wrm{^v^I7^lIiz86EE`iBOv41PBX)Fol{LQ*s*gY%5Zh^EY}xnEY>YgCXN+IRj#* zUFXg)CCVBP$)F{{=zYO`BBw{)JeE>6&7q^lC|XLM zEC!twb28=FQL}bA4Wx$NHCB(URs!l-T$ks7T}JHiMJds6@u1hF&>&5=q$G?PrYx=! zX|qg3n6pHQyys$fRRNN|}7<#F2-d|Du zGtJc*`;e)!==bk9Ul^h2?L-NB8dg^I^W+lWRNB3-n!aq526U6MD05{wBHX#G9q{Jp zU7b!WTEl}`5`L7x2m>+_n$HwDMAgBW65$kEU*wjB)uyu~FmNfB3p4PGWI3wQv4X@( z;8bMX)N8njwEM23_))?nF8||$7Z4tN0tfzFuR_)MbNF&D)SevM->wRW#1`%-uy;9v z#V3dF<~gk0(jhBG1B*7Mb$>rouY**AZl|oFQ6Gi)O$Y;_HToN&{)1@8h~OWic-d@P zO{6+aWT&HI_r84i(z+U+n3@uDcvu@ln*ZvP7$x(hc4Qss*Lo%R+MRgK%=NR$J5qCb zF}ANyguNrUa_Pt}2@B;fWa(q#z~l91_9@n_%?H1y7ga}|8*cs7s6>KiloPDNw0Ad| zUCOqEtz)m#1y$wq*e>!dC==p(Dy3POh-RbF$Clm{pYS@;&--U|Jo{$5OD#7dwiGNV zIySI3zB{)w&UoGHTd<3|cO$gx#JsgnPA%p*pi^x*t%zW5IB6-TZA?daHR8K8^p5eF zus-~l``GT^KOP(|eN0XcO(%c)(>ae&3eA)b_7$1IW2}n-ngSM_wiuXBTupPCPAwSk zf9i%{%104mm4it%sgMbXh?o&W=zB`dG0M)zAmrwI`2wZQRbPcn{puFV3tc7v*A3=| z-v4d6PKAL4rEz;}YO^Ei)I1f6%Fd|R(Sn)H~=-b#1WjXq28_fTxs z7cIfc$Sv+*!fmh!#e#XO`}EvlrP#iZ!opO;<>QQilFa|_Lvr#!ca~uRzrHY!cc*@+7~MOrHomAu@F1c>nb*da`rOO3Qql@+lQya zKT}HTC#~at8C21g^cMERJt_iQ`eaU?Tf*8K%IMmB+^_B()ZgVKvnlqTxSt&^8_8Hg z9Sp@hJpU?!WAO|8R_fjR&N>grpF6xy{mMDD66F$JZhA&X2v?8U##{;r`+S0~gM6uZ z@dl-YgNTN5dC`~?g!U7H@gkjwk9yla1rQsU&*V?C|AJ&H)GJ?7)BO7Hu3M{q@wO!* zQ{MZ&$Ew!oIIuw+bhNQ3Y&`H0%=}>JAapSAJ}?sq99k|5?CY}VHr}ps&#A~>L+Xoc zq=_NmUi^OHTZTH{t=qU!BS#t^R7A*KaK`-uL%? zTvsy3fquO9XyiFuz~S2KB=^o8m+;-ExWbb6X)g+ z{=SXX_*rC*K7l8Zl@NXsMwu5EcWUKJO@uAaov((Toc7?qKmBWWayo$46APt_o)H7S zTfHOZ`w{huio>`2z{#Jff<6w5Mf*};)O?d??IHNgz#aj<_RGVOd3y9w36y_@Pr8Lk zr;17pUS~~vxm^Sv!i2g7;2o!rNBYpdqjJj*|04Bq(~*IF94uqSPWBo{?b&5Ky27v{ zVxs5uX6sqWtut>fm%HE#b7x#@EHGznXPf&nlCg9kAB}h62ZHy-V!!MCv%kCf_8xb< zJYPRw+fj9IK_fTcT34toa5s0-T2O$mXSc~yf9D#>b^;cy!1XF(brY+ZYw*2v;h*q4 z73BJEz@tC#D6aV=(jVnzSkD>ZQs-(Vk(bhzq!FLpSL!kW<q)|7hEdM@v@^YDyprMOS*;Jb!W}T8-{)$u7lqw}B-TEF!)2Ywa0j$dOZef4-L<$%x4zy)x%t929>&bb?&gerSOr9q(2waprdy~m8d z^G8^Wr?a#NZ9EUF)d8xbhusUeUZcFf<$IEv_fmF2VO_M~(!ou`Mu1P%-Ed{BkWmpX zyScmXR`XF$oZ->Z801#vjcvou<7h^)2VMS>*blN^VqAj>%qe8 zzR&Z8FHehkte`S;LUz~Td*23|>!Fu{osipt#M{mOtU{o-k=X=!2Qd#Owx{nj4*c5; zQ+_^K;mgfL%7XPJnE8Eo;>I960~`m7%c*DH6Q* z&Fs~jTZJtyKX4^2p5#CrU!PTFM_sn_(Xuk9K-1e@StF|7_T71(v0L`TVFLuBP8p~` z^gaK1=C3KiJyFk-nTpX743=}lI=j!}oO@TZs`ZEe-rPEQeoBD9>%~v?BTaIl>)g_S z6P+cD)qqX!qph?_+q>-o$lm&bwfj0e>g%=2g*yFYu5qk$*X>@-4%;fpj3MjQR#4$+ zg#k#oN3eBq7!4M-rVst0U`EKR#syOOZ+bTG<+Z0^TN+6MIk-)rq)(|I%v zHIQyE&htcTxWN+79M0gWE6{kBe1qDdlc!X2X=OFn%_iV^e@QF6est>|7cv#oR4r}| zU;jXyN}(_G+yl!f&o%w(58BK)z{%Y40go)=tsV(1dD^HxHFFj7w^$c$*83j2HF~2= z>fOHC>8So{oY7fwX*~Qc`}OOmG-~ZKF~&1!=lrLM;^6Zq<`0h1{eSSo z9YO-u+uOzgjxGjUOh=^IJa(T1;vro+^a*|Bi&6_s`nq{T zeiu)R=kCz?>}h~Xl>=XoBRrM1cv=0zSWiL0a}|p_^7?avr(@s_ezaxcEc}=0yR$-e zCyBzBW#``!vrN_cl*F;ZynknT*LNn4oHx4yW=^${j0Gzd@ZFqNqgmEw#RGX>6lJDP znd^=*Zg(M}ncMjI+*fyvPK^Irqy@zK&kS z8VSb3nLIde&pJACAi5afzOIbs=M(gDz3<4?>TC75IfPC-NDw>T|5(6b4m7UPzgg2B z&1;-!_&>y*_cvVK+s2c4kVFvCqIVL4L@&drL9~d3=s~oIUWX~sqYgqu8=^~;=-ou` zMvKnqeT*`UI`j4Z74KSmoxRrn@vO7=z0SR_>-w)GHh<5xLntLdA$f-vX9V@GEz`^nF^~Yygw^&-tu2&7O&ORf0q8lCbOSXu6feNj&{^z)( zh_X(=VUIC9iwUM;oTHcFyED=rZ89OeL)slg-50Noj#deWc<;z?bugRhj>4>Gr$m-hC45g^!pu5i)Lqq?nP{OV4dZy z)63ctv6D#<4=bZNTBvooUwy4Jf$|{hjkHB>BOGUw_NTI23s$6BTQsX$hqCV>zmG$px6IO^Ry1M z$bg9PhS*w#lMa%hssMO8P8rWpi$u!*bWrFT>$8NfpIS0`t_0&T*4HsE9GIHR3fWYG zfl&8V@)eYDvA3QjJnR0k)3$1kzzqZjw&j-r)v;Ij{%U>u!MK25hhErq3Dj9iA@QtT z@uHl8_|9~~#mx|wKZebpb_);HIj;ZLw6K-+5@Q};v-YZO(61J9gqaK5EuVnNKbgX* zO*F_)h5I&$fiQ;F7zfwBOy8w$Sz>c3(vDymuwI^`k6}pES17US12owT>LsXfTH}>{7?0)!Juu#xPM4q&%0~mLHLo`2gZO7RY$927^w0y~3;- z5u5jaHSLr&{{H`)ez`-=H)#k4m|E<^m_Y{waq3B<9Ok1)*NIO>!NtxZ$9NnU3+fjC-(?5*6UF*|4 zsPw^9E&jrzK@axe=ExJ5&!Q;ub;;UBful2t*x~FKuX^PHi2mrZ8<@%RxPY$F+?~Gu zV?zT_q@vVmnYm?ScSgZ@+8{Sb)>IJdslZb8boGhoyV6?uhPdQH@z)^r`z(Q)uPS>D z$8|GG_nwrm&b>vnHpF5?jimIYW~5Uw(*~A{_JXMLir5zOaM5wQv#6-z=6mdMd*%p9 z1+ll=%n8lmfyI}_!Y+Gqt-*jAJv%X)ppxcPfud$>-@S0aBgJFy5E*cwfu#-!OVjt1 zRAnmXr5dKE0eU6KZoapcYN{+v{i1o6eW#qBIXtx7=S8ErD+Xx-{{ln1_%~K=2#=~! z*5X{O#Q{y9x{3inXPW@IB#JlYi=OUTWdaEkX<@4#YDZTe-y-b3DYu^5r(yTl)t;Y=sK}vBu9iWWQPR5l`eQfM z%wKOEgRiWB0JI1TJaL7RRez37H4H&BC!hDi7j>934Zhht8i;%Uy_(q$FSZtTj6|dqOR31qzZBp z`@fg>QB3wvZgZ!QsVl7 z=N2Y8!T&F|=4HGnLx3j%8t=#gXsCVt{u&sL-mkXcw8I~$>zDm^Kd%3s{Kp#z;Y|=1SP?Axm&Gu-B%%g)=Uzvdc27ecYr*8 zi*(hm$V$zWs}Y@TDHjc#B5Q&5b(TuDZ3%Ef|bFA0Q!y~_f2cb z8wiKvy7syO#DrPi+l^|Y=i?IBiTi!@Dw&?s4xd)9lv(l4LNoLEe2CKf`mKY)BG>E1x)w57 z+Q-fHp}QZ-2h{eb-mzXOL{K1SG6$@lt=7)>c(gW9@<{olc3#g8hzp2J$TQB@J;jmX zrQ39iHP#At7wky+P8yCLp(evNl}YH#y z>fgI6tDyi+NK!3J1Me-9pO>}60B8p2vEYq1u;azmEA6u|_m|2tWUBt$Tp5>>iO)Bb z9{>JzoGLkSJ`0|bb9+aU2@gFx^XMYEhH&>o!1bO*4CGXeUGz$4r11Mi31XchE@)g%Li%8Uyrdy3$EnkJ4*Vqged(wrhdOXst0fzhf z{r?QjZ_@=@ZNXE@OYNBG4Jvu2G*l58_nh{%#^wtD z!Tk35vL{a&_@{IVc6I1FU|&yN<=$HC8%-oFVt$3fO@j`HprctNpO+>xfhbSXqr$^F z8vewSbFo`|)D_80@wjIUU>OOl{CY$=E76wa-ImoI4D4E>?nQ}`BLBntk%gK6E^<_z z$C1f44{naV`r{R7FR_+dbmwbbyfL?(xq-3Q>eVC36m(VdHCGGlmQ4C599wXv@{3q@Pc)JaxDsE@15~plPrkM7ePB ze2NR=`UR3>_D19@$F;1x##Q^({=LJj`}n9PgN16xHsNr>v}Bgo$q`FY{S~^c46gIt zO78BFKm*6jbF@I>0P;Y}_;n*#-=F!ORo2&|5YU$EgSA-AU+~U0b0}gRYRu6FGcguH za?ERAX?{mOg1Vt}zC7}d+da1G=dYBuMZ_* zDwVF*-A(a{Tfu-g*Jx$jFdVQyRzIDF9bCrRa=jCY_4O%(c z31I0mPI9O~u>97YE#fUmaK&lT8`}MT#p<=p)%qRGV)Aj~tKZE6W_v64^%33y>Q0cl%Qn_Jc2g zC6fb(UyNtVl+b@9z}*l8m{Zh$4UNNvHZO5aToYV)e7z4h3fO=3@OeA^)r~y}Li5j0 zB$6G>Wu*W5q_XqQ#M+eSYjhfgzK*7s!FX^6k@?T|GME}5KsCB z5Ups_!|6^e(AaMeW|*ja}*7K z=4tqJqNi!s!%);`<575DCn1ZJsCxN5?7J#J5V2M;?2O{Osz|3G((cWFMv-QbUH|oe z_O-Lz86t9f=hwmGC(bR^x)Ske{llEq zJM~k$tY_qnn0^IhwU}%mvsbH1%fnH%uUNp{ETPMRH1}4uIu+9efysY1+NPMF%gmFR z6n!r6Wz!i6q_&Xjju?D1W${j?C{!fpbAv{YHZ-;&l*)W~^o{;Vm!ZVaD=v5fa>kn? z#QXR#R3fB0BOJ+ti1rZ-65;{nVM_bza+eZPm8nB$dnfKcr z%CmC)1TCjjEJj~XE_o4{_NTBv2g#J1<$|rWIk6I4>yPGpKe91SH_egnGfb@>3A?5! z46Td0UAN~SFPf_`eaniIDmcd+&(SBIW5oRl0VHNn9*CAU)S2?Ulx8R2f-k^itH5$m zz2$*W`9qxNrMl~3;g5Zol6j%hEOjt6B&)C#{AZhBWGl5WM`!;oaUY};kUo}BGJW;sykV{XP2zi1{}B3m#|q&QxrHd9(AiR`?mLkc)z{z z_gCm^ZkIXWt;;D5*j<<82N#5lk?<-Pai>kMpB8o45Q&2j!pgJRaQ;OOgVufZ9z{)4 zg<0}ZWN&T0FhzQ^=G+GBgAPn;!b3DXw00(<8lK&hC^ax=Hj}e&Z*{0_~J-yD3dvP7B}>_#?v~z11yncwXWJ1f zHG=IA_jbIjHCA*IZADDk-LySI)(-%8cFt^%>v=9W59gGnJ%L3O5c`7UeF(4kKvy0-*G0lS9_vl&6P>3tzN?^Kzpn| zE}1=}-TcR7=1Z`8tl4gn9%ruvsk}5ngIfI{UY!P|MMEVPSIV<9@b^t=l^z!4$6x3qbK69|u&JVmNA^5AXA>N?l&Y zD^eO$L43X%4I8-qByd6!zlT}4ZqhxJb}n7@5J5_ZN|!274zQ2>yatnmnvGaVZBgI9 zIZb}xl@?4ZQbJ^u=N(j<5d|Km50)*i48C2>!~$0;;z=b-8iL;QdvGZw?LL z9aOH07RP(NzQRHt#o=CvCi^QQai@cA52;3^w_=8GlFj&#o16+Sl>;(DaA&D`Bxed> zt|4m1AmQb=K~ysm+$R{ZE#r94Lsi2f`3mYIxq0mnkBEnsTZXTRE>4bzW~^=|)*|)S zZ0$+Bt5nod8c8r}+j5S^5iraB##K(e&*rYEc}hF>ZjE?~Q&hbSIc!G%)m4WFcr zYue>Ms05ij;<0O1yKm(4{aO|zekHo&T3)>w%!KGtQdnffjdoQX=D&OWT}0LF>3qmh zC=Up)B^L@vfAVh(N}GAA`r3an=%+izFU z;;6>l$=aYOU67#bGeAe&gr^P?Igl;@(#<)UTrNy`kT$emHo)*W{5JeLONrpbQJe&NNl zH-2wEDaRZp2EE;2!O1Gv1b%b>1g0M5r|kTsQ2J5{V#}xq8|gAF`#i@d7Jm5I``*rM zsL8`g#o()#DUAy~eCBt~)dV1#K*}{#kUM_+;(YAs!~KtUrKcto=Q**yT}EOYZ+EmV z*&g_S`BDY@{IZWVbJZ^NeR$ApiHt?B7p zzJZDh-?3^S@*{Ib_c{%MwalaShiJ~PqED+@W>dlvkL2oG>YFXURInk#YGWyt7)=MM zJ1s=kBCc7JE08Ylw>V8Yv^VEG?@@BW%-h|^y~o0bW;%3}YrZ@W6c-DB?dL|l{HVa+ zy*1yZUq$rpHuXAV`!QE9vFF&m(U!gJ$Ew8#j)EwqL1&#sHkTB?P01nvmj6O?)8Z0v zPGhBo2t7g`X?ZLj_>aW`K(~&1)GFp&X%}u{F|$y*51ZHkKNA7>PE4i_KO*k-b51zr zv9@X+DeIdl{+No;-V#^^vmH-_{gLJHGSmPlpL}WnGVLD&Jq;Q4I6)@8xe_qt0NxN0 ztvR*&x%K;z-~i>`LLQNKngh-6x%!cWI`S}cm4>_rAi~=OrT&;DJSs%x8KD?fruj8g z(Pj!F94foHy*>i_`y#7Opw6GX(`1CH(~lk}TN03V=NwB`?Z*DGB++Xk@$}=o$%~%c zFF3zf)~wCVT-!b848B27bCFZjSCJ0o{V7a#xi>IoTwpzv@jj^9dYO}HD7Taoo`@$4 zB@cXPadG$1mAAuFyPvMt^w#-=m_AT_@_ldl$NhyIYVJUpwJD)&iUXdBMe2r#AviqA z{7wRvhsREvWs-E3Sms`i3;Y!=F%nkG0+Rkf;mp|d=agoV@_qa4mx6?clhv;}UMBimuVWMtm;!}zXKL^KPLP5U!tn-0Q zO?$mNAI^uj~4AP4=(mt6?rc9#EWIXl_Mx; z&0QU?xL8q;e>~KZBtZY=&ZxvscF03qJ^RiWe|8VKGMvIrw*;c7eWleZaK!M1D)Lzl zviqTB^q#Aj#telf^Fp@I)0owj#```pkWJP37)~EC596-qrS6(@U)>*xtkl*$qqo*a+AsUX*%#l(szgAA2HyQ`|`s)VESAA?45z$5#95B>?C#oCL&bGEWC)m>y0 zsy{W}7papId*+&YG)ydZS1&VDdBwj`tU;H>?)hs4rv%4Gs~nR}sEpKh`TBN&n@qc?8!b zE5)cQ@VC^dMT#9gj-a$uIW+u7x}KTsm!RC(ckQj%?KrmJWI&b)fStA4@9U0kMxe1} zvTitN3iBAp%J}=s1uxSxIUqysxuh48WoAJ1(k%TGN7SF)EWx7cETa-M>|ntAS;z|N00VVrNKJ6OJ?OgI`p+ zSrp+Hp!e;0vhPmDuPkG+>R6s41a}g(fwEnDE^QeuHVRf&US<*H26xD8(S(2q3o6o`g z^204>hApA<^pp1vyDDeQN3U79JHL~p{A%&F_|Io!${!A~{fY0?-F%tX$>8CVPnW2Hr-PxvHCqEfn}yg~sEEN&&^G1lxCuOo;^EG3`N|{5z1g z<^?`paZ1Oprypl15WJ06zF6lOgNNn;gK>)CA4$|RqEWSu*fH=93@INFmA zI5QDLdH76dSSD@u7d~MA+mKyC^Y>V5Mbs(sp}hRFU&1auw24sgUAfVqBgprp4b~mI zLIF^(t&GGnI{nJAn8y;Z)lU=Vile#4zZRhFyISu~oyosA5ErlZ;rYO&HpSXxfye98 z6Ba%8Wy{9fwVPBUo$L5O0alC%(x2y?aC`yT@z9;2=ZDuqy(uyHSBPWOWU(8>!!=Qk z)<-gIns5u4Ufp)3$ha{V4BH6>!a*o$RPw}3)EfOx zM#op9sq4iri!r&tAZVtL&6T(4PPK!8hJdrvC>xyDyj(b4CgeHz)^ot~;mkjnogV{d zt?ghW@0(V1G+wdUFYoI>TrS7j?~QWWsRm9zX=`Xxp?6(l^+ZSVQrE!L?YK4Z7aGEU zNf9jd@TI^)qbADdPuu*cJ^mx23!!907Em|L=r=~mVvheesD<67ECp>*vyi099@%Vp z=^MU>mDIeXK)G-*!60?O=f77Ie(cul+!Mq6qJfBZUn;J#?OwgcpjPuJ7mIDD84Cr| zE3p}r)!?pqs}q@2C@=3dO`Zca1}S*$u6ZGt=a9DT^ou~PI)+saNJ}L&y-y_+#^aje z6&H2T+5JeC#MZmpr!*%>nnY;sXW+5lytb^>)3Z^$e z^3Q1xa~co!gsZiF$Nq=cbaJTI#9RVG7IAFqyHbGe7SFSpA_X&i_)62-Nd;N?ZA8y> zDDdJ`q|esS(p{73%)PBzVWqK=)h=+1V_EO3`gwFso5dPwfkJ_WaY~#-Nj`hws}ANF zb>>Mj=E*OT2R&Ly7(eRkaDumsNKJc7!!r{IVB2il(|6R3Pg`C>we^ zx9rvj#c;zvPG4_*=BEGrJ@didPN(Vg*Xo77oLUkLlBu}6cAjIphSAB5NBB#%>%@s~ z-i{e&Gsps_mPYHeuDKiX?1XF#F=dnUTT%lD9%9e*3Y<~r%jdcWd_|XtpXn~GCG^l`;kR?=Z5tR( zD<)kWIWCvdH1}%KA_70e*<(|EHh%TAB(#T6wUP&19=+%|Mc-r3C+6OeVE_ul;>L=4 zSLUygWyx|HO?N*Jr&BEo7@VQW;r}4MLxF4tE9+$)&Wo3;wx5ujvYwuAJiV~G?aunI zoD>z`9q&tdi?dBPWetwV<5?P0SBu|BALon>l`!u?_#IId6d-x#8zt%ORq$tpt+VSj z6d^lznAgcGAvnM|H}0FhP_!U zb_uyRD{(Je0tc(z>Y3e}?jJNgs`g|*dmsseNbOASN_m$>v55GgKy{OWlE53h^Wdd!H##ml$h zf5Fx3g&fMY1y^@-q<2Chit)kCY$O-%G)F*q!>@aXJRcg&bF(_H#|I>Pry1PpCEX|D z4Ju!BuianRt;svd`xIxNBH4gs#Bs9yQ6x=W{txo%*0E$X5APtFTygO})Cb8|ie!5( zS{K!B#{YE~d8=?Pht4&#@=hx{z(3yK_T_<`@ zMiPGde_%WLNIhg#S+XkAU*0{RVD%}LyLsY7(pvbfe2`&=;m*Z@Ia`Duf~9AfvG}v& z%ax;IKChO-6h`W09IXI}u-Sop%7W1t_GM{z`a#7K~UMrm!y2Dp;&{;2{#VP*{-WS zgBoKu=e4xgF5c3w(*Nq7vLuyqUjH{-GBZx|Y3k0ru#4&p(Me*qe$0_a7mo#dSI2z2 z3oaAeWPJYXkqyHX={BUM8Wr5^HQ)}4xPq~{f6OcS*3lrRac!})_j2d)rfrK&EM502 z#jX{W-@+Gx&)t%(n+)g+7Pdsk%T#NAhlqT^%OBg#+AZE!MKhEw=GrPE{o;rVv^&(r-eN6G#i#uzRFPk_o_4$N7SY7|Kz?9} zq>`740{ww=~;+N~62BWiliHnpy zGo7?NTYKA`FSb9c+dh`N{G&|LBP17SWg9o5cb_uqPKfZdT$UBJq*rf>8O+f~ z5WyqB-<9GDA2OHHqfZwA0$GBed^Vb1Pc){wr4A+?Ar#8yQ+To!JZSM%-(l3 zyvkIu&27tiPev0n`DXK&8mLB{3Q9Fn=ihTd5Q(8J4Ng_hoM?hvAm> zc`gnXWiS4;Z-p!r%mT^$Gdo!`EA?=(l2i9o5A?nt#IXfrJwdanVvCO~#y*hXb+RH= z{t_U)reOv)oV(*nCQqPgpjPgBk>R02%I#HyvU=sx)yo%)w9?n@@?f{>%SsLg+9Fy# z)8D|wmsTY<^q78 zV>6d6_>f;Yo_iJT{=% z=1y5Hx_v*SqpO>&b4F^|mLEhRf&>tlM=-TV{-m z`D0O;2-XWei(51M3EAi|(+PQC4EjyQxk9I#6LJps)X4W5T|yogdqDjI7>=E|@;cL7 zkb21>)`442dC5^QMUAI5k;xGyS}i96UuG%#!S}}vUuN07#BB#xEZP1Iy83!8l{@sb z5ooKHUNS%^dVKXeuv&i*`KH_@CZI`UBCuaLk(F^9>X0Uf{z(`IB^-=X*%rHuL8{*g z)&(K%pmznixqE;_1y<};s}2se_0 z=LbETit+&{IsDDf$I$rLk*!jC`9GV0daSx_DcE1?`7Z5mz7*U(t#dW}NN>+Ls)eOy zn!UEgVjNMGNtN`^sp488i@bmFzpUo>dF$#S?7~-oKVFF5L9Z1g4Z0}s*{Dr=CUCMj z_H17>=UVe~6_4&2u(tbR@s0xEuIcyu5aU~f490TXp+ux-iyOH)t5dieDW*-7yL|sZ zcD^g@pQ$Or7GQ0k;&gf#n!4Zszqi4dX6bm=_5{}SV#f<%yqB++r1(T#>P2P%r@-uc zQL$q$@_vf`nv#5+_#LHF**QtK$uGaZh-o?Agd=-#QeyMLz?!wqMfU*4N&Pw575!Hx z71EMkh!lw*$L3yEijx5c5SBICR^q*Kay;vFdNyqG3%DLT=DPsK9)i598X-{?Eok zs$7$X@XxSh@q|I+nCn2gvoFy^xKuLbF7XY{fq99L!I!`3T8(_*aZ6hO8v!+0YNq!;1`P{-GV?2O8|qm! zcGblq&npW}>8(`e!X(hwTZRdexkzk#?SqtuH4)IU@77b3cJZ+O&e^xk-cf^QVa+8x z=9aVmZ``Kwpr!TiPup|P9`2RnPD%}>j9T0%ob*SzQ1(st@pp_vCnX~Y8w(7(A5!wI zrF!yYy+tts<^Q3pVU-8ih!U;2akO%+qVmFBy!oIX{Ul(0h1S1ZX>M-^_aHRuf{HbV2f zK~W9r+WsT$!TAj3`FXKiO-l7dYBi|-fdXDL+fD-LdYFuUMs_QrvU5(23nkH~|L->5 zNl5R9p@RW^yXsI9;B8_#4MrkJ07eY}rGz2@Vud*eIyH(QT;CP8jxYL0!k63rg)Zw0&R{m(#Pc#Ktx@orNEf>Yw`iPga{C0zuaDB9BEOA12rIJ zDP!z=*2!CzlV@LF`>ImB)~F3R_Xhd^$5nQE)!B}D-Xnk6O6c9aQ8ah^j{)+^A+t+D zJ-qDGkbi!!H#7&#sAa>dz153zk^_0fjwhGRBwJ6IaOuZQE8RjZ&#LxIgowNw0!fH( z-x&caY2}Xo|41inXVQ(Eoezzyhdj}LR8zwA+%Q%BWV!WL(O6iVh2zq{?+7u}dqIJJ>Kwb`flB$CbRalcsmg6Ro6MEkWSbctx&BR@hePsXHrx9Co=hC(4tz9wm+Ip{V)xV2!!k4~_CR83 zNt{HRTS{e;FgRQ{-9cgN>c0wzsC% z>R427t;d#!D=<5rs_b!b6c)XIug_&gdJ4b(jw4Lj1OD|ZUa!*ZGd<14-(IT|sI76; za&%HKF_f&o&{LhFW;!KuOEl?N4Be}3GiIg-rg$LBK{iCP zE4PvE7l`0Iv|dTH_fh?sA3N-$_`rOXt?KSvMf-7_s{g4q(AI2@TkUF`iiW6D@|F1R zq%!!}`8&PZ3Z4dG%OQh(hY32issXsS{hlNj0s903Fqt-&LP4-<)eRHQ-O`sW*G0QI zJ88jb5x8Na3igvul~9k;88jj zWSXZCf4Q)F(+5`8HWlCHCwf0iYt~Afp!|4C<1u;}A1`Fwd!*HBl(czvhJhB=$JKJP z?vj5Q;!tAz5`u7dU@1%?!aE%{Y>}xcayV@HyDK9G9}}4N>1Wtuu#it}l@HPU;uBwS z6~cFIK+2oVXEAv^2}xK@Qy>ykm?;|uFVpBuJDd$5~0xFv4NUk5Q{%H4R? zth5vvoytk?U9eX2mY0~68V)g^z)k&Ui+I|F^g)HUwtJHKw9yg-7gf1RI<&Nb(S@40(VN_T`f0P{ zm<&KICeOKeyt?U)FlfnR%{Y+xC$l@rq)m0vvmyttQ1=q*sIcn#OPQy+MaTww zyW8sna^Sgeh0iJ9e94xmU1E;E&3}d~nFV(GjKZC!y3`z}x(Mau<+Al}p8t|? zb}(J*jr4y%S-RwMHngnQJDM@f>N57=0G!E#igG0_H6sC^iyv6qG&SMgEvYb}V)nB8YdNXfik z9j}-u^#v)i7o)^pQ0bjs?teid`<}l=VE$j1Z(2MIrvEIbna}ZFs{cTf9kblQADUe(yLH1o& zggK0VgnP9zJd*k;5>CT$)E|+rLm2Koi}yVa)CBiBOckBQZ&M#PukjBOWB-P*e4)1c z8@;RStljdL_Gz>_^Cll_&!Hp_nEAEUkU)Q-_5HE#m7&&WYz?+UTjJefOGB^n(6^x6 z)XuBd4u<~S_1kM^PZ4)!Jt4p@!``Y(0v$ruwee*0DSH`ZceHJ$akgIf3zAZ%56$KL z2zf=mPvz?kt8gXxFSJSd79{bgUiq`+efVZ%wQ?a*4D|N9b%w!?>tkTJT$tij`fl?> z%#~^x<^XJ3?{gj@`N^UcKQdh*eNVc_MKGLV+2gUq*zI~<9v%P1@RJUR46~`Jg>=S&q}*Eu(`~A+$yqX!LS+ySm#j|pynnqsEDm}uTmuu_I%6oN*1~u=J-zN5 z&tg3aYwGv~UhYjP4IO+mOg)^WzBBp6vW+Pxs#do zoS)+_+nMcky+IF&G20uf!TIWQ*v&9{3YQi05nWfjOcmk)dcO@Uz6ckHo1T)ZZHzj( zJ+L6yTKTk)^p26+&39XMX2Iy>%iTKEaf$9cvi$8M53vlW5FMXdci6H;KWZ6Y_D*Sx zsxiGp_%P{P{QaTdZuQXz7d@9BJJS>)`mC?77~u{f+EI9Uio^{Io0vULsKpZTQmFdjL&W@&pPROAJC=JRzqOu7@OMZlR7VFaa9!l|=5ldVF$ z!*I3lP+vE`^bxh?3Wt)$1#Q>N%R<< zUR+y@{-B7~?7v=H9vb}?8X?CS=kRn3M;0@Op|hh$TvzP^E5WLtdm9B9Y@=!-uioRf zZO%Dp{7SFjQD*!^HV>9{nD@NzIR^{A;EID0A9)3bN5?L~Z05U;fU^6h=UL2kI)uU= zmn0(XO6>qq%fqc7W;|bs$~~%&C_Amc|M9Xg_sGa?)l1F%S(e{{tl&QFnpsN(Dz0Ao zycv$#qRyf|kd<=f$s#`k=uI{;KmUj>Tle}eYZRy`f0n_@II#I%v9KF*=W$uwrdPmx zI#_Q*{9<6!TTwr1u6I)l?Azr6jN5!>aF!9;P-Qj1XczKVp-G#Uy-90%k=p8$3&ww& zymUH*jNy4J#ah}qRfSjPznSLO>C;ygJ~{9Jv9a1sE`eI7ID*d78eXEsohYhSs&9sF zd?0gf6;J-u3i>Jbu;p6`V?8unL1pK31x$>2NRk}i_k`mG+sU4D$b4YD)KR=k7Vx#@ z$Ydmhyt(t3WXB|X@7OT}b+N6)v?B^${5eac6SKU9E;i1N8E_+4f^TouXI)o~AO*X7 zYSBH@c7bQZ;)NKh3b>+B6Qu<&3icd*35|Bc-%Wr!P_K*b(12dPDbw9cIb8VTTMR4^ ze)%uNW`LsiILIiT*k=C1YvJRbD)J%8l5oHIXwLV5pQ^_=a`f4WZT^?bu~VDoTmb0F zEM!oS3|z69qvMjIr|_{7?rYVQX_NgPL#b-l^btVix6Q>QZN^)H=!nt(?@YK0pSV3# zI<7>$g@jErvx(`CUbnjr(ppnAETc0Er+5gNpeQPF{ZUVZ*c#v`Y|{OhZb3h=U8;F&Tlf|j5p`*vX8Y9ci8U?a+-S6;a<`2l0q+$V17)&O*4evF-E2Gez~J=D zlippK%OU)Q2(74oVA-_1RrJ0`M)6Jh4A##|3H|j4BKm-E_~1|sf)=@Lb!z02NRByr zCTY#IVbjE5Sjl#Il};@ZcyeCi{OU*f<71E600UQM_fqLbXDWPC2dy`8c_1`Pj$uc` zm5Oe?PlonQPyC+zGIjMDz;MqZ?f2;n>DIt9{F&%EB4DR?ySPF&VxKV+!ngzN55lQ` zG$-%&%N8jZSV45Ww+nJ=hu!tDclNRxDi&p*XA!tsFjU*T)Tf}vx3P?zZhPb$SNjBG ze`w>0eTfrQoX@d`LX&cJMyjV<#NLZHD7QfPh-d|t`|m65b|?_*AwQP+=B6wIsbIX8 zzZ!ny@1E$B{#{p0x*;-2=GaJc_*p_ypAc~T9Kt&W5K!o z6aT_ud)NH&#HEf}D=H`=baUGyU^B8ctpZJ~wzG3VILfZkrd z?kfHrZKM=#Po(7$Dp`F8Kr0b;cu%fIb_YVWxEotNaBeP52vAfFpH^wsx-&chdzX*; zaKVEH!%->WS|~~_WISe18rM6H(_0k@dr)OztV!grgaJe)jzbu22n|bN`~LwI^rv~T z=N3HZBrIbfmhL+{Q?7aK_&Y~5Q}3?s#I+lMv-WCBhx24a#26~!$mQN@a`Y&h1|VI$ zMV0g}ZEtFC&Qnj7gGyl8D44;weU@As3F;(urtn&ue?NB-Eekh zDNWw0n#jp8fOxH1o%&cBzFA-4UE_Z7@a5Q)9RCl9{pWkfAWFn|Nil`wDnxQo(iZSO z*Np11%y5(7%@eAxX{LSHOzV7J&wms*s?Xu?wM;U>0VWYcO>teCQ!s5Y_o`6bT<@j$ zQ|ns%c_5ZJ!L?V2qS(^JCm^o^S*7Y{%J}eVw#1bN_Zpm)_vu`hL;7){bWJPwcEB$zs9N4}&k#VN zRaYQUXlj^lB8sBWkyjo*A@RG1{ZuG7wdQa3`c!$_FMsV-|GqAKx*YX#W{?KbIDWc* ziCdt7*ktY*Ke|X($gv{%{SIjqiu*meHTAwRgRy;9;E8->>Qbo@vmzPpZckqnG~TB`|X`&DVl;f|2;4Lp(%S>l51K{+y4P*K$pK_UL9IW zPmyNpKWw27p6=gkN$<(gY|ouHQN^Hp2=5Ax>0#kG6L6dvrS@#vybfAzzROnA{x?nX zTbE%hzq2G_53%)w9+z#fSek1@OnL|$v^htMZhpfO-Td1I;n}F!dOig&-yTu7{pr}(o_9wSZEuKec>XO-ll*xd#zKB~ z8hFNq$)bSuZNqo^H19X;p1Ljeo-X`&{z*Tn53P3e-R4^>`>oEE)fqF>Y`(`0AKNsM z(VT3xHMeDg@0UDoVsnnw!acReh4$}=B=3|4-pS(2Mf*;)@6wWG`{^R7nQ%~d10>2e z7NNaemZavRn8#z%*Cnwh8T|JhpwTK{lJ5rOIex3~`kg`E==ZBggVIQEllmYdl%ws} z(RPm|riU=C!~0^qFZ}yMo0|Z;y@1_@df|B!@FVQpfL#M%*ACb{9RfSb1Uv`fxmTOO zc#N}G(x>&9hxu;dSzr~-IjD_ zQ!mExA;!^#alD3cjJK$9(3hWU@EWv#H`*^ZaEWw+^+%&0v~Q#=OuLLsP2tpW1E&tH z;(a8^A-I&}``fDUewQY#SOECgtomvuyJmZjeJj%plEhm76*rdKN zO>=J^4E*zm;2B_5nrA2KPselN{V^WU>48~Rx3n9G2OhaZT0iL7ushmz-k(vh>ve74 zx$bByS`~}~w)2@nZ@V>pF!YYL|5~N)XzRHD)&laYzQ$Vy&AY?Ts13`uH8Qk4L{%ki@u1 z)^82AS*T-fYVGFvCS;;^wDDu~aVPR{|K~TZ`zKe5Eh`|ywm057cmmJ61DAVuH%=Io zJixEgWVtC5u_m10W1rDvOs#GB_9Fe(4IQn_`?oX?_u?tn2v0BbS}mU5XH;C!|72dq zRGMJqotf^TUS-P7!t;CN?U-uW*NglI@U2zWtLz13-c9N9tY*qZ!t)05wj=KW<9vvG zA#LXAm(p?cgMuc;ECPSf&HwV(3hg%h7wsvW&;P)l!X_K@{kfo<@8C!55qQ7e*K@9f9@MnCM4 zgL&kMBz(`PG2d;BnXyX_@!ZGk2irRxkg)GF#$RcSpLzclnpeR@&WnT7Vl$Z zd@b6NO50Ss?q%5@9p@QelCJ=DY?FJI@|~;0`#8gQD;v-CW?F>1bmfZCXL-T9auR(v zuOQxq*!qt+8ymmU@Hard)5}MnjRhK=``G{av_V>?Y-BqcCl2zgq@qD=mv>8IZT#V`>V+`e|PoVz3OO+qRG329NpQBzc^dWDN=B%O4O14oMJLK#|! zaP&`s>_!{rLm@WI^kJqybNd~_^D%MUL0n1pB>-3Wjeb{s=J?Kx7+)>McNF6*503B1 zKSqx)#u(p5jBlo<#&_oLftD_z#uxt&-q9g^6=?4-_XD<946{exl(Q{H*(1|muF;62 zTyE%`rt1FHD~!1_=JqJ&FLZu+e*RFH`F#UzRbYM>pnON;ZG*C{W%RR9{t=9&5B&6m zo*$lGuFel1MVa#rxejY-CS!?AHQpzv0&|`bA_rz+eh8mFBhJ#-P*;+X zR&Nor28?@7w&9ugbwr!>o7w#agtn03%7mvtKR4>(nSjQJ0N)5XZo zvCkK(U!()1Cwq)?ay=VqnfHgYBQowq1g*(Yu~2H~8@7YA%XED#{N~!S{|?WmTRSQN z`+n3_m!Zk~B&#mBbcW7VwT1T?YM!e1m7T+z4$KMu8!VG%kVja}`#Z&GKSWKNJmZ7= z!^>Eqc2f@HpLK#54&i|554FI+fo@~2KD=-A9b2LO<^8PY_=GMze+yIROry@94)rfc zAH&I;_Ww5MWt{H+70Rrzd>Q$3f5FRl1m(|N_YappUm628=d>HO#_nT(2IpBk!|8Fx zV4yC}8(1U!$v2ahr1bMnDC)ilXVRc!tA!u^@tCm|`qt=v+7t6m!Vc~S+F*XWrE5-y z6SSiluyeWRNPpo*tBkQw;Z%AV;`=ryX^_n`aFlexCjE8J93U?LihFckZ=>#i2;=*Z za>)It4{h0`4#xd1`{dwx`BbYXP#5dHg>mmN8pMns=kVvMosmug?HXxKAbSlx4~8s-l6U9a}_%Js$GUd+`` zj&fhenDG2lb4;g$W2!aA^hIOoYkN)6iiNs=3hD4c&GSE}Q8)gx@1tz1`Dmw6B<%fD zCKxskM%?0~<+eh|>Ym39S)eM6y+-2wO3z1|jib+ur)`1Xl&3!gt~Mflcgnp+jf9&!X2D3pT&E@i()HOMPEcctt%NY2y**MIQ262b#Yo@#*%X z25e?$c=&$7eIc<(uRuE!g0V=6YZ4Z~wf%DJHd*FCqvmO_xl3cI&uBEoT zig_<1alfwExUcX^g9m%u;K6L3J3phXnY*+vU@bflu*x_O<)5*PLHjS%{V&`X+*gNi z0C~;*RN}xDqLVSexX-%&Dec!l+Y{BEigx6liaG1M9((E($VOIk-%XORA^p?PPDMkc zX9fNPQ$=SQ{(Dm~zJrQ)E8zFK@!kODs&9XN;UU2D@TFJt{Az%AKXOm0GR8GU*qa}Y zA{_(V4=Ubk8pnaT>5ia`AbEU+3-~{#MV?M;S$dy~>{C;4u^PuZ2;cAttN zOnSc1_@86i`ypQu(hKQFM0*^;`;;$X)FIh1h~Fmw53ZMs zkl)1Ndp=cku~H~_%XqwicYm#lIiO@YgXRJ5f5&$dhsr-y@iv(!HUu`?H1e#8zUIFv zzxSw+@tgGGJ=8-y;ojyxsO&0#dvADt>bRlHclAlT&`tIONyGV!cd%EwBR!Q^Z%?7# zx)g(tnqlx!#`+xMquv#AZLYz(;lArNZ1%EtJkiSU4VH;BrbLa+Q#IE93p^F-`>{oA z$)*n}Xn@K8h+0Jh?yprm)y8{A^Hj2o(f46v%@m&RhpDswURCF!+R;2!pwYVT^m04a znFH(1i9SaoEe7qyqCKle))m6bjI>*o`Y;<~49WXcH`%p#=`XVa&s&}z@5!Dl@}69z zd+Fap+taE=LBFJ$3v};H+His%b5DN%4%(`x%Ghvw7b%;$HzL&>EC7Au9mWSBhwU}y zC3DAgm$^vt9HB3F_&Uh9uF zp5Ju8muI6|lDsz|W%@el*Og5_9)tHdv0D@}-uWtwkMdBrF}@!}saWa9?+wOEKVig5 zFSaH%o3YSIO9M4|@;>4e^#4#I?My`N6!gE^n8TWoIV=~B{sY)Ec&`HU9bU|P71p;_ z53RMwTT5!CKgrCFNU>wfl&02|Q`<65oCxIYWSnAr<2%3Kh;O{hn&-wRjtBCdr~ObI z>aeLeFF*Y}&~p6G#a=UxS=Si&cRku<9?r>0;2?d|Xp?lv=>Op`ICy9X2U}XrvyX`e z4zeENALZ7QMvS$iQEeGAW;*HI1l|7>=MgZNg?;u|qT+wa=bEw#pDC*}K~~vf$SSlo zX}(vOBt*Q2ZM7c=%+z=`Trkmde6jLTtNUx9h4PF1zGdA?v>UPNsRtGU>$@UD#cygK?|C{9_>8_u3q$&UE1v)NY#{aXkCh&k`&mBWhdQa_ z+6ZXvjvL0(?7S;;modwrPqT~z1uao33>qOnL zQhKjiCoIqSJG7~;Gvr;`RZ%u^L*8W^(kdDM&pk)VCRQcu5P9!*w3@B9dwEOe4x(C zSbv3qfXy3NjQ>Xb@=cp~vAy^4`q_(7*JAfL$a?l>-ZO2(x*2x?&tr7IJPV34<8ax1 z4=p$O0CoSmdEdIkNB4NoMx?iYE`0#;K2ELG%n6hsO7DuI+=uUtYgpkp?E_{ zkeRk<>Wm{>Q!u^+b5{3NBTh%GT3^&TQ09~|FXvueXvUFcoFc~ReII?Ox;o^0p8EdI zJx0Gr#4u{PCp>R`-0<%_ZpdcQ5`U6?tmj?)4gd$29|*>y{7rz*dpbJr84g#|E=a;R zoxVUtD#rRnN;Z6ZnbfWNSCm{`X!^J@Pen;&VVgxPrA|+tyI8dC6_M^a9CJH(m?j}+ znqz*-7<1L!$inKUul80?5&pWXBMa-!MtZAe0Jh{WHIZM1{MC189`bCo-L9AcI@l2D zW!~>`4yQ0)wY!w{P=;c9#pU1yn3iXxA@8|#r=hX*WLzhqZ5KB89LQ)dlh>{KUU4U5 z+cEZ2#aDHIJNnN#J%2fU{8W4u#viQup4J&|eiw}~zg+t(G1lD|h=GInz6$VM0lIvn zMa*15cwkJlA*;gpvDO)5p_H)U_bTM=27DNQhvQv1V!SGbVzTe55im;8M4k!fa5%&^ zc25xl?XNYpvfi>Yft~DM^qD}}iaa$(yvKel|1_Zk7ox;Y!t{iBrWk@pO<$EUUw4v^ zUIiEgB1LVqMcrA#JiUhg5_EDF`B&a4=|-8pNA$<-Yg4ucz$a^a+FH4HR$*+!D}`&; z?G+Zwc8PNqu^scWxoR$LwnqDGvA)~xQ8?^w`0ecahBs$dL|V4H8{We6+jzF(xf{=W z@htHC2A+HHtZnDn)?qDtd`LU!L6gQ z6pP&RE#uv#B`hB~Z#(Mc6{#dhk#dB4=id!>fUvy%qd z|30DQS2>U4vBv=Sn?z>5JtB>9uu8uLysCbh{xix)MAErgLv$`d#{aX4>Aah~0{yxJ zYoKa|iY=Cttoti5hIydZf3q?UZPELR-@=+jzGO}GEdHvBStM=wmr)K)mN66CfG2L? zAb8?h`rvRK{t@Y2kz!UJ*T@u`M?}os-Wz4vE+XdP-->@7{{sKT_}8{`&2SBFQ?VLK ztDjc(+?hhflMf+x(adA8V_qd9wKUT5D*`_3x76Arwq)f_8h z$J^-N$NI8#dC!8n-||Xt&YsL>o+l?6_PvHJe<{a;dF`RT^{2}WoaWsQjki;Fc_&nM zDF!ckX3av(V+rtL0eB%LtGrBoQq%-5UkmX!stUzmI1f&rNt}{cb6`RU)So4bC*WPxJzr|*S9XMsUEDZsTr)+9L-BF(7e@;SiHQ?rv`1W z!@8+S0L(0D`P2{4XN$fznVMdBud>feSV7#2)BStT23|f~Bs>dvha&4q5Pp`Of7X>p z+fm-LVL!vTI>nDSQBubhvd+-BfR4R9TtGY0>@m`Zwp8i(!ry1cHnU?5oc;><5-k%rjr9QBBK>lmF9xPErXF!TLivQR znnJjVq*W=pfAwVDPyKGHVaH#0*5a+3tYEYX{7pC3J%rSKtNvv1uEuw}Mez%ZGqA3W zu{{I+|6rZ)RM~`Q@%L0LDZs1n4$xaGaD8zGZA2~o+l)KasB_{w>5qxS)F&}cA@R1C zaUF%yl|6GeX=zfw7KwfveW33;+wQg2XH1hc6!c%l2>_2{W4v3<_w7*n9jox;Z&QWm zStx_=5|Xw208lkX0EZtZIbNoR=&}ozDqXh8+j^IVmA&2>OF#abFm+Bf z>U?tPaJlHkrRS8r#_abCVcKvSZLA&9Mhn^qSS?teHoz(Z-y+do6!skIzl1+9RTMrG zLEh2o>pQBwRCU7>N9Nyf;7FYSjfmhma_}6aFEUm7%{47m`e^V~Ub_|hxW&Gew5!)@ z_4YAF+EmTUyWIQeTmOtG~={*=1{jMDliTg_;%zKhFwDU*+3rc z4c_k$w9uyTgw&O!_$s8|z}GOAt1+glfUj4A)+rrB`#*v)euiRO&r>q-sz{~3u^M(X zU#|&|r}j*}u)`wqY3uO>em4MTpNtIJ5D;f+_p{&7p>_jj-@ha1b91?Yv*hDIv;9w? z-C1McZP@lJ^ulf-^1|h>ep>e?qt2Q5jitZKFxnrc-?05_`i(6$!}S~IqVw!?@@?+I zGNJV+YlE-oG4vOpk8!f^FzRA_#08qV<(evJc~DNJoi^CTjdTTzW3G|b$(hUah>=Rp01aEG&(l;h8l&VP1Pe} zgJU13O*-wmhuf1Xn=^i&|G?w~@C?@#eIjc6fRlFW9-o@zacbhllG^h;3(p3|UsGLO zu+$OLT%oz%m+9Lkd3c^IpVKFMCYaBACwbD$=L3^G$>#I#C&_ybnR4J3Rj$&q)@@Jx1Q15qZzARx-Z4!%{wj zevHspjn>mOl$vxU9Di!Iy{kHS-vHsladW?WvD&czs}ftb{AILXSg5Ya^|0`|u&>Cu z1|4aN6aHh2@oCDHLfV;>LbiLE^oaM?-hgN7#-zUF{Gh&sGWUtpwv1!eEv-+0c6Jzb z(Dt-rC~xvmUdkR%3X#ux-^czzpK`O^3L|!RM3{E8i7LL4hH;wtvrYw+{w61w@2xO# z&0eTx%+#Pw_g1|Byjt0r5FXxYwWc2j?5_HYx|1Q?84dS-?)ypS>E2n8le}l=J$@M9 zYQPWVuXS!!akK6H9Z`$}tY95&*ZoV8cj=jVkJlj2!Vq7#{-ffh=X||K=pR+UyBJf2 z-}J%n01dZCDIffmq+f;~A#DU5pqsr@99#Pug*R=gV{7k0&D)LfF^+5(_y+O|-3IT_ zXV`e`0gv$JA@B%Oi@hr@(7l6+x}Rf60q>M5l6zFlX?0fqR<-i!Tz#wXJ^-GDI>WC^ z7^RGPmm=*+o;PetLSs39wQ98OMADB*r<3|A%b54Z70c^T+i4d&v&>q4HruKGiuMc)5yoJ$|A;{C+rbHN{u zgS<3V@vpx)7-*4qW`Zt+-rtum@63!D`_9a9VeapH-MBMzoN;Gnl$wX%RSiFvI&st0 znCGj8&Zpur$1{w1W}iEZKL1Zu&?brV-)qSL^m2>$)Do*V9G^}4 zbke+UKH6RSYL#(5b-nNgARDH*2?H~Rda|#YXDif?%@c((&h18h&=CpV?XP-a26%y` zxpTecR#E#c@BpiKJSophX-m|{xGy&9i5)(9r$CtaxIf&nzLoLC+N=}$pSo;ot9iE( z?^Cg1-s`Lr!^X)KGIo2K(Z_V3A7fx0;qo$GjTdvd7xHC?5xbr7qN$@;2|Q2KgrD)s zsDG3+A2xt{17>r4bXIazc*0gWd2!s0-dH z_7GrY-YfPH_&M_BWybuMR`D#GvD=ePJ{k75`gf>a_DIWVRE0wQ?v8Sw@Vct_8{!YtotcO?r zbnZR(*GnXi@FHV0PFkXTU*!8&6c3QbZ}k1n5S^08d98kS#cK_-!7FugZ+it}c)}u@ zO`j)@D^VyN#vWnXl?>na{vgyICvDxH7M@?9RZ*O$n1#TV_{($rZd z`HNd%eWMGp#Sq zhyCnJV+iGcd2cz}2=WHNT}sd#u|r zPu(x%j#BM`-pD))mbCq=(=SacPo)KX2Tn@Tc0qpL7F%>J0pO?XDpH?47Idr(y*DbRtg` z%4dY&PgPW~UyLJ09WP`mi9@_sbu03v*@#1FqhM1Q0-MuFV;u5rrxZ^8htVG=`onw6 z9NDAs>J2GVoclh%aOcvB53}?$uA+J0X$SHCL525(*CT8nG|cf!cd1=-I9=NKTHgCH zY@X^Ts(C`+?7Aq-9MM0p;%FdWHHaG<>y{S{G1=ieeld_;tZ z?=^f_4l)*rk&kfXxs}B@(|3tPc?K{k%KI z4;?0bi%__^Ylyz3$of4-+wO?bZLc5Ec7;vB^60mRudTEZYpeg;!L^khW?dcp_PN(p z<*9%H+p+2AU(&xkuRs{j6 ze2ICQ^l#47BVRC2|NAB9X(TUk`cB15>_Hpn-6?sAO$INq$>b&Cz8&Nxn4j$)Tr9S* zzJqs)q`rsU3E4t)%KOWW-%@-x&nBzxq#f;^jt}rn#6YeTG8U&_1DrC2OXknEVNVp| zvz*FYk5hd1Zm#BRrd@!%`&e@xJ`8w-_MLfhkVopf{rcuC{J!&TllKVfcIFFdXYwxF zcoprdd7luxPtj)BGlkUcpuPuvGwo+HhjgVuebN6#JzLlx19mK*ovrSC3V+X$lJ7{r zsaxls+A(ZTO&;1)y_z})S9fl!J{-CV~-?H;?ie+rM% zDOh|{ELq)MaCFOa@A_J+`lD1XH)*fa-T*&?00@4-?NE)of-eYEO%=0 zmnioI{8FXlHMC*6T9Z#Dd?5q(Qx7O%>Cj}XVAndWmN8c4+Kr?xN%Q?-v7#|mM%_8| z7u_>i-r?%VtnZ*6YQtilsdvqGH`LE=ds-AG7&4Pt$NzkZI@W~LL7iR`>S6vQ@+U?) z+N5lA3J-blk@F2X`JD5;_w(@cO}n?3w9)gOsRieox|RDSJcVb@G5Yg^H$)%a(Ufk5 zXDF5s|4Qb&?3mJl)!h;PJ_W9U-gsjT_(kmoi^Bab;!-Etj5ct|qHtp6;-K7{3;302 zS)P*O@UlK*y~uTie%Fs1z1BM-72aw{y9~HcXTf?Lug)vjrWt1}KZ^9i|S+W3uD}kgxjwHx0H!`=g7XFG+@U5$C>?)7~X%4cW&RI7j|p* zeD+&IpZh}RGi%z=e5Q;Sot)D?qi=na<=vf~Xzx0<7hKz;X*g+RF?bN-r0Wx{_JBW7 z_GqNy4b1toV&A>jn8Q8bTX+ZLB;YdeVwg^YINC*eo2K+@IT%Y3aP=b0Wsz6Z^1jKU z?V@&@UEz^EM$D2p5N)g-^raHdm)U8{XUqM&H6oWfYT7OmC%RCs2z}fJSm)SyZf5D% zQ>d%f3v=TqC6w8^zG1E?z*X?w(Vxpvw;SmfD9^HWciHb1rPzH2nbXVwc} zK)L-!xff7w{{dw?U!+AZtw}`rSuqn>hq9fp$e7ZHd7meq-3g*>A?m2xA!;EvmDL^B zYWHA`UXQ%l4mGx3dvI*^c+Og@KYqOo#?AH0 zaoO$0oJNJrX_PVU*kE56GoIf<;XwbzyD=Ya#(dn3`Dnv@6r=o7&VeI1j~g(L8!(U8 zVjjPaKD>=`0i)d8C>Jp1u}+Iwnv1oxv@mwU(lO>y$3A=wW8-5Spid~{SlVn=^Jupi z)sx#?|8^r3(wU)tW^5>Vf*m` zSIB;x;%h;kF6_s>=tEb-9{e}V-uv`i@1duyUf$WpxFEbk)vo0XcB7uY3xxkzspvdj zs>yvjb;Q0Mj#iD7d3IMCG7swgs3N?~v#&BJ^XxXp{w(rl-&?F~P!obPNq`ZiEr;F=|BZRsTsagPtj^E>b@2j7Z}_w4hO-2rWhb5OTK zv*$TbFYR(^M=JNYf3ePyIAWK+UXzs!W77sNuav&>pP6!vwD*V%%4>wN2qO!9QN8E= z8}(jWDUxz9mfRS1XT2VwU@7mpvQ``5eHXM*qWv_# z72zAtCabLl`A*bV!h3fgtbWzmuHxO1e;|&bthDFlxh7%m)zb3i+!^JwwSs&H%IBbb z_JdWgI@(nX8`_d&8+U)uSBkMP97cU+IkVmQDCd;roI~XdTMP8XzO*l@EyK}{KI6Gw z#^-gv%XyUcGk`~qF{jz*np3Q?A^*Kh-M<2IY14?auBM^0t|a5EA<4Ix< zVa<1RZ;^2J|2=VC#vO6GjH7sve!E)649et9rJyUCkhcDI%rVB@ zSQWod<=r1b-nlXCjxC26mzdQ0x#w&z z)(hV(7KNW!qjPgG=B4<#wAlXcvq}%oIP0{91fp&^vt|KcIUjWOYhJ+CW8Uu;;@2zl zmRG1f>RaVJYhtVshxgPHCungr%Eq9MSjW!^ADpVDN_~(tm?eFx6uul*W=fKU!#P7;QENc_Gh$xl(k;b3_Xxb_jgz` z24&x-3V#9nmT2@fRrqJ({pZ$O2kWdEudaCSa__3f34^`X2|jzwZG#TTZ#9j#4VGy3 zo)W;gA241D7?-S#-kJp(bO`hGVWZ{&Pa*4|-BTjq`~&g+h< zbxh?wlC1B_$63cZ#hR& z#XB~Ri!Xxgz*y0*{PRKYtx+OAV42X*yDiEu759;D%&&{N-le52Jq%uRb)&Yg!dgDq zZmt;z?K)EBTI&P9?^-u*`m!^DGS_3{rpt5d`f<}Gja@r#I_*rF$m4GtH+|1|($H@W zt`ymMw5cM`^m0r^9^;d04-iF&1ye*Rl{{kH7wcMuO8zv5ZfcL%zZ6D|4U8$?2 z-9xJHb-;lAlYNUd{U%iZ7#G(3PCs|v%fRm)7d|BSM+^E%-!J+Fxz<{|uC-P#@6izs z_nbo$Aorv*b{N0gyuFRD&ldHKvkzT}@8|Qo)mv0&^X6Eu8qB@^szK*<5rd8#-hruk z*hgs_Z{XCFF>vaca)nb}M*|Y4+VH*=V=PoT znKptQk;%;tq}hd|*=^WEu6OEwCw(a@z`It80iLZ%|4q>DXpF(M&t$vbnEpiT+q}ne zhVK2;I?lIou3i|37Xyu$tIv)5{b zn)hPM6ybj#b6$~Pyr&5NyNgE4H6wX;=8<<+LT)>CyVxRQhJ$Cf z;NRrg|F$T|v#UCje4V$Cwx8H-)TLR#|Bq4EzL2_h8+AQ<``CU|J4g6YnQQ%Jto7YS z+`M*Ut+!*XKY=>ijkVs6weDG@*1G9ewQ*5+{}lRsj67dcw!*zf9ND_J1o%~Q=BlAJ zegoFHFOssWz2EMju1~G27_6&x$eV+_qyy8Wt+2DdrhdIz2f6BQuNw`U)D!48@1C$j zrtXeRX%>gpyjQa*XqRe_ahG~6_N~1?5ngwszP%gInV`vTXV;ue(BkzO;N?M!+a9ra z-3_nL&IBD^|H75twnuFES-l%duNu4v^fz}q=rQQ;p=UI&X^WZ#S|M#wqjf)HC=s4+ z`Xm9iv{?;>YmouhuCofRS8%RFY)E5XDOXd)fqSEqJ9$lMuBDL5~AyG^hz++ss(1C@49$2awtZQ>}=# zwx_2AZBHjeEq7)RnBVj4z2D3vBxpVTp3m=(d?xSv?#tS1t-aRTd#}A#oy<{#XWpHK zy;_I=%Ln3*_NS%qb#|X~<3pFcBYa;>Pr9+~aJucgy(it?yg!bODJ{`JZ6=Q{I-}+e0+q*2W?Q2l(DSY=@jC#(KmKg30#X>cYkQHInXQ8Z1 z?3ywY^K%JfAw5=IkfmiW<1Zvc2pKcd^v!>1q+Qm_M!gD|CoFOUs=P`#G#vTV8Ej8lmD|Jp8)@7{o0rpT`+am4}CP@Df)``7Xc&OWaGVZ9;LX4PkO5doX`jKwoCW2z?^wgmS*+RpV{ z51Rke2BJMPHA>x``|>umH@DDYQMOE)2(&F0`$Bd1Zm^x5zMnh>zWE?I%f7+PAGL_Q zY(X8!kpSjoVX($i7%Ku#ZJH+G;GXAAR{t9kM`k~(tg4^U(Eo=XUTd~B$7~BSsx}*P z26~{PB+@U}xPACRoA`?PSos&*J`UY4&9JJtHMB8)d0Xi2lCXwsjW=#ny8N|U`#&$^ zd4YLmyvU~f>CCgtW}7-M%ZhM03s)G+PNg)ZW!Z!~*Qjk2$yFskzD>nzlFYKU*1Z z1>@wIo1x1A2JW*N5&fS9U2ikvdnI|xZqw`kThF(<7Tu=GErJbKcdN9!-q&{5`=;G> z&ut;QYmuf^@vXi0x0SD>OP^WT-Qvc=PO&T->ysIodmFP~sQMsAY&;rsxZ^0+J*zK% z)^(cuwf4`A8w&@BWi`A@c#%k0W6-WpHpYc)&j}{nj1AKd+*gOeJwd~r)(_nDvEzBA zW4DSo!8L7#hJ|N3S#M)JnPQp4D&dUhdwF)sedY=4N*oh5FQ37fB4}gQZgFGfB`C|Y zCt+L4`?lE*`>-OsH|y<|XYCemrXg}{!(FW`*T!=z<9xgO=|1EBD7bm%D$m!+n~xjI z?&4YU5Mvp~lYX7COu)WOzuj0?9VbdT7e2Z5!gFC1#@zs(8_WHL|2CHKJSF{I{MzWJ zVJu^QHMaBqSF~eAJCC9r`o*yPuf9gVE37@|V9O?XElC2$y>RiLVA}u~E(zr1TykGcl;BCA&hKP9U5b9Q|cO&4sCq}p% z*ydjJWl=C}94tyd9jMA=VtzEB9CP!fKMT0x=bQ${9J%KWhpv>kt-8N+t z-c{n=H2se9>JhyA0p5+$?>J{G@$No#w_CwKP{AKF828%E7QLtMxQHl9d0v* zjkiAvIW$x(Ta5XXb)u<+W07aRfRS^0HtNTsev__0Tc2mL{!G-Lh5D7OA1g}7puWSf z#lrTBwcVaN*EYl+TM?zsxEIE#Gwv~HF9z*Z>h{KiXYB{hhl0Qq;c-^_y59G`|e>ivbVjKx~~68|xTii>0icW+=Rk zC+!9bH*Hv}MZM#i{xZBDiFcO@^_}smNDInC;-9f~Nz+uxt5qe*(sr&Y;aLso$g`JJ zq4Yblyx#k_V8Jn zvq1SQHS?S{O7Djz$#`0FkFAZ8)p7KKO+f5bj zaSP;m%=_kfObgb6&3&H7BzbRJpyPkua=tBa#{#{d!<@di^sQ6BzaXSj?^vL8>eaXO zwO`ni4z(6VhpFLo*nMeFI%waQp&D;_ec`S85}sSh?_>M=zHxL9y#Do;FuZ1q)~|!t zKF-YEw}JlV+3D|Z>51?E#aUdBc6WY*c73<>j=f`e&2wtXV3l)Wmy*;t*~HaXj0b#ej;H=#iKno3@B0Srz5qO#c%hwc zr%sS(x-k+5GxQlQ$M3Ky-{G(F1L$tY_08JpW1O$p$lrRLlW);+^8fev>(TBd-=N(& zz+Zp+Z8nGUPsi|-*#HW(v4?=rK!KggBt`G51jkS<~E?)(Pr`fkP??S+3E@NX|teksI%%q84=i)qig ztjMzzbf`3JU0$xedhsLZbz}_a!W^`pS#93yl3e-U!{1J0;L?p)udInwdsf+~mrZ{M z!&cv$$9wAm+hA8~mSd{k1Mhie%YD5&BY2i0Zafce@(19a0Dj52n0%86zDejBW0?Nl zHtE-7`pA#Cg}&;^-VCm%G+&uM8NKDZ>90{|NvO}V@w`aIkSKsX(KnBSRxeJK{7gTe zg}wOe!I9HEjM*`jcXCriz6)}*!aLQ;_Z$nqy#@X?@Qr?P_a;LJSrgkm%qJdg<`Yls zGY>Z7Puyf>Og!a>zx-ykcf&o)q+V@BM1FN!PfMFGS;kr@yO}sk@v=Rh4>E?J-;z{+ z(vn=yaYXidXULr8p*SJGLj4Cmv3Twu5y~Mw9q%4Y>w7M*+8=D_FFw|BYb59y;XNgN z*0k*)@76ig{IFHG9GNfHH$#^je-(Gj_?J&STF`8HuD}mij6u&AY>X=0vhgv2KV!=q zQw`_q*BH)iGY#n@!aRNlQQtR8`EuvZS23X&GeyQnW(JOm3`R9S=k^NlOoxB zz@lP_Fov4U=ep_+|2ydS^|!>nmgRrR_nlKQ-QLE#<6-AzyXW_PKEV6*<~^h_7IhEl z_4$ljLEn@p&*|?(17|i*@3_I;XFI0;#ae3h&!;-eNI$GIW28T*UHY@r<~g`oIFllG zIZymlIBS2R<}c~oTR(K5T==_#I$lu+>YdyyWG*xM2BAIoTQQ7nQ&sY$Mdhq0kMrlX z#EG2xk=J@`My!m98FRL19es~Ff9fJ^M`k|S)VLI|-F2ia|GV^uGvbzJ7}x!v!-=(; zUASkW4EF|Wy$Z&IV?=4~Pp(#D#Q!IBKDBTdh&Pt`tg^@no!aHfq94KZ?z0u=%9ssx zSW9)ir1GtOmLLKPwytTsZ|hTyh0)^3AY&!`VY=sHl-qtRxP2IN{BS=ghOs}v1L;OL4;a08z@)d-E2r@>+b=VE*i)f+&Hl1t%&TiXXYRhHJ9e|lW4q!okGyIgeK|_BF0v>eNMEJl z1n)UJ!F$0=4QExn!dc7^SHQQK`Th*|NW=9iL;!Wxg?*ASN3g-#Tu^{Ht zXF-?b*Ik1|>9KnZPdLv`?&jI4if5xm;5P7VC;Ga7Yh7a{c<@2+?NH6P^uLOhygIA^ zT|lD0>$K)oCwLWh-jNJ>);qLMUR|eowbC-YYw`H!WczP5Wz-Q5}z+ECgwxp}%LY3s9%xm%xZECar71zroZEFeystZ8!oKL?wcd1mDN?h3D+(^YNTzHSzpxH=gg%c;+}-HLe-sJuYm_e11TW z`%m-4`W+beZKMb42mTzKxcyu(#kYBv%u^q8k!!8(A`xE)8q@>-OM(9-zg9`c~ z8qyZdGV*gj`)QT)GvR+@>598{z~)@S`z;mdrwL^kOT7+qlJ)45&w8xC*T~P~-X6dC zP`}pjzp;9t^2eUJqFnYv8)UNf+2;RsXp^wA9^Vu8)^jSqO}PBoJWtsjO{M4G!C!P{s@VcRX`_&}ST48Gq9e@~57z<2TRz`th3|n5W}6 zUjw^orU=}F=Wv_wZam+6g|^Yge|;Nm(Y*6*wANg7?-&F&nU8m#Fxq!oY+Z|^=%=CLr0iTEj_^F}M5S<^8pU`^I*t4aIF9UP?&jZ#QC#weZffJoC@ay2@e@c7fMCA|c zjguQSPAbm{PbFx}++DSpCoNWy!(3{#U3`$CZCpPNVjMl;zFm%I*A(UkW1Mx`Ahxp) z?ziiFgJupznfq#|%qb>wfxU@(lzp8$tDF^>_dNflpEYyNF=ljsF(#SU5M_^Sf<9*4 zLej6>9+CHX?e(-p!ef0l_W`3h_bK1f$BAW}H`MbyN5R;gm3Ii|hm1`fC1XS!q5Xz( zM>c90NyAS-!*(6N8nW0~iS^EJ@OzxL<%&!3ygdTz$gJ^x%JwN#yp zY=pjX&6VdOPwI1#?z?H(rJ-|?R87ZV3FkTEl12kI8(_4fU94woEb@Fr-UH8oUgJIK z`;28(8T4yW_blZ3GVIx4WrQaJ> zxT5ss`IKi>uve)2|4KZjxmr_)43D>2)5bF<9@oRQJU3pZ^tnGl-x!I^|7}98S6vOwfoS%#Z;Ty&C9~aj9E@!!3=Pios zxmTA7xP{Ie5&nMT2=zYkw$usRYKA?y@GZl=ag?#IB~q+^if5X@XPd=n=RKY=Y4ih1 zY_|;&`#66(@t4iDVW%2HHee{j7@DEW+ESq#BU#SwJq5lCZ>K9I)Xwqnc3OM2!3NT{09QgfT%Hzp*X4_zwb zQLi;+G;^600(-6fg4}+9JgI zT|-0;`K(;}I*9CY`dgqa-uYgF^`#>-DVuA|-M~#t7@p?<&y$JgUVO)Voj))X@6m?+ zHeev#ZBdHunURX_-0R`IbDs`2WYNwFPWJ4q8SX!hzKN@5eNMxy$ zo4fIt?7bZQ1=%!^bofW8!=<;j=_4 z7zbL#dfMp6fj82s4YXnzGak+H5+#S`$=n9?S)2*EF$40W7_#kJ=t6bRi!gB>Hlwep zCA?oD5_`i%{AC+jE+y=m(h&^SYvm9;D=9*jmzbsLi`ThkL5KAk|4-hiY_#6?Suymkjq`Uf&sMEcP9F=OzbE>bzk}5LJ*MZc z^eY(%-mNj^bb_3}51kD*bRMX3)?qDWA1HE21CFCJ#TBR(^K68fU;xdusFy57&&mkJSD@N54>LIi3pH;~v4nX0DZpk6=R3Be*PzF5P&S6NQ?yNTp1OuwnoP@lD>;>*h}=|ZC2$dr|B2jVO4&SjLpI}OdmnE(_xK}K7!4l z9ethX|HzoN^oOjrsC;DiLEn8&xS_k`-BI9?cVLK{ zBIw{xW3=BKU}GLG`VL;l@_W^td;0H59R5-1!OixN?_D~}*TMee+US>Oamck~;LK()2VIA9$ zy0rE2^^MXuP5a0F+YL&N6lwT5ju`D9C+E1K_TY#s!hcZ56d?R_PX-$ZKj-ufCslsx zaGJk;JlMc|2EB6`^tglBqHNraj4K1V%G}kwAHg<7MQ%QQ(p&DR;@a~K=218RJ+K+{ zxB}l9cb?CS!3(?#Rg5{!*!Y8FFT8<&{yfM`EF$U6o zwH^cI+#%*8kYh-cW2o0-;P__<|LfaFyFAQM&waH`7JEI0q z%U{@7Z8o(hVTreGiXEdjKCV)#5La$ z*G3=pdY56nW}QQ$Md#4ic}~Elfu6Uham(BqV|j;Bc$#=OOOLzG9JfV{yAArExl_46 zJPdPJzB?6^xhqm`Q1)#tpJ7)f+@SVl9D2VhO4l2p>zR2v>^E@lA(SV>%#jhTV~jJ$ z#=_Go7TlRRp?9~Q<~mL1qe6eDt`FtTko!SG^?T%crQ<)J(|0~p-XG}pOQBwjlWSmU zQ<*+8W}d|69_O7ZhZ)zq$J51%X4p6fCkvGy3UX!99jOz{e6&j^$x=yh+n>$_41y zW3M|pwEy)@>6raB>G;(3nvPND)A6{Z5F8|SfKK_r-QFRVq*Wdl-ukc0NG`(+MG`#QA7j5J>_eJ~NoL;_YBfq&X z+Arq(?|jiRf$IkrM|kef4*8;OM4Jze?%Nmbz}^e^`n52I7<4&sm?3se$zr?<##}I} zrWBqLoq%UoClR3%+^(2UE4@s$yxJMez2r*b&V5& zFRteuk?KA(<6MZ(AKw4nIm-93``&+4RS98UZLw{b0k}B^7hrz_&xH>Q4`DBS*zmXj zw*zA+#uy0yO@JLV^jJW%d4{Fk+)H`~?ccXRcpiue;dbU6l`FI_+|~lOp1uA1`u(fV z{Vt#L_2&GBIsck-zt}nb%i6c!Ie$(EuTyjS%h~74R72YZTo+_r*SAbfm=ltz#vCP6 zeQ4`K_qJ1-U7jFisKmDpZim(XMu54RzO3B8?>h6|_E5=l@?LgSO8v)Csr6=G;diko%~5x; z9}MH4|3DiLNdD>jF7c_hU_&Z+$c&-KICFOT5=V*~vj>9)z+KkLmo^kvWckDWk1tq0 z>!l5h`%2#?N0D%b*Sk=x{1etFFXLbZbR4YH;MFh9d`On6lE*2l^?ktMkuqlb`&kEv zs(UEk7akdBKDw%;M&s?dk*-#s;GKrc+!ee#MBjmng(vkc!;>~x1crYrGArdu(VFzW z(%J0eUeuL!s;^MK1~-Rd)ic*0W7u*&)<%mVwIfCAh2qU0)AIX99ZO^0Y`ym+LU$@` zRuT9Gb3$6x**7%Vlx-G7q7x&ZF?69^b>9#UwpYQjf#&&tPpN6oV@4FB_{%`8j|No+&f6Nw%S;Eyy zKmTluyLgDLzHsHBaf>44xkdmy?zS5u5c3N2*2i^qUD}kEF>dDRJv>{(b1d4t3~+pF z-0ag`(M@Uefy)>&^YlpQ5z`lbX{5-Jck(bFq`m`R*>QW)6w1p8-7EuXME% z&sAacD-OrAPgX!ggF{gKV@zraOkz zHrmR|{l&d>S9lw}W#WlhS|*~6i)QsL6QgH`WFpH`CjNP5e=&kXdx};==N+O?fk^BU z__fIx8;M=Kt1a(9&`*H>N8taBLi#dq#5_)#o>gDI*yXH^P%+NiX32Y=ttpXW$O9wP zy-UVBKLj{u8rj|P&QtWA&+z-0vKbnjee;W*Es4~rh|C^^qqS%j=Oo^-XKpgj(cP%{&(H8&z96Z zyK(s}@HAt0KaP4kb-l;+z4lC*yV1ThhVcT&#SXLe6aPDd=atqN@0cW4K4ZD_tdTI$ zmwyb}He-@Awu>2)oPPVUqAFgV1Mt4RZkK-7@|+CgW!!Vn#aVX3Sat~GJ%}~SgsZdb zDKb*5tU5kp>{O^3B%(q=wr(+Hiw z*ymW+sdxg=BddYG)jAIT<^9FM4+H^Y%+eU(Vd=y;89$wNL!riBC-AomZLdKeFPuI9 zjEQGC4{?aXjI&vU<3iXOb-19ST|A z3LVtaj}98Dbx=6`+|Obg$zP}MKJxK|x0Q*uS^-DPXn9X}NXux^dN3;F`?3F1>Y#)! z#$SoA5uRJZ@`fCn(F^}!c|-adgYNG}_IFDA>2a^QrH777()p?xud44DX{Y~( z{yi!E#{C-L>s#Mc89nEBu|>`AnV8>W8mm5t6&sJnz9RRx4mEe@Fb>VX!X)K$YrELh z>IeoWW=2+(P&Ue#QFgJc26BsYH~59pS%-Vw-InpFz|Ur!unrkh9m8#!cZS+i7+-v$eJz#G zg7E{nk5U}0E~yo^m?klFd4s4;qwJ(l)~Y8AKjXzO9xMWt&5RLmm1Aj#ZS>$`tEbXp zIC*}!aMdFP<(pj2^2LU8zPLH>!CbXBRKCh^w&}QUvsN{Id{tYX#JOK#$16NmV3)rl>0mIE@DJpx;070Ao@exm3fR`z~?I1 z8G&QQt1IR`b(CkCf3*x9-@A=S#@}Kt_Gpn;F_LlV?K1YJv2y4J)2{sy@L{$|f0+Kt ztwgzQe4GhNd=!HR`s?>S#tuId%*nU_Y%gPct}ml=8P_qqU-J%?vC`h%|LtM@(=Ubn zmq+&B|Ig7s=6w#^rT(t9)HQOSqyjQ=Nt!FbJHnmOO=%V218GZ-7J-Uvp6S@Tc=wY0 zkfHBR_1DK0z^ynNofppg{mIAv+V~#l*6HXx`Udo!KR6V3|CHWud@vQ`$Z&ZWce^+& zo znGZX){q9LF&*y0SyJ-78V^I5hX!E_512+5v^$wujFRIrxz6YERGzQjRQIYNc-e{L6 z%NQu*vu2^(dnm^^tb0)|OUCB0*FOO~@%>)tDYm~C?V9Be>+<$hYZ|XCayjd+ad|TE zZZPyI?@nK7v9}LCH*MYE9}d_sa}i@<4epxurCNs(-lzX$c$j~#B2D#Gmj+rhuQS?M zO}bl(oU1|aC8PB_(0oZY&t`y!Y^gVYHJ@oe;`Ww6Ad;Z^UkK3>&GOm72=R^BHH{$Ad z8lv?dgIs}^LF3EueGA^bY!Cha<^c77Gyad;w#S2a;MeKv78wJ&pc4Y**V_&S8xCR2 z?APSi`XRCPu@QhbMYN{MSYucp03NIX_ss%KO99hTz;xM)rTzuL!4gl}hMAH04!G8! z+R8nN|RjH$yl^o_=mPrnG33g9mS^?kDdL#Ej0n&n_ddP$MtdDZc>*l*Qtc+b8u?2(j z9suVXpSd0@j#T!2iv|764fS`@I?OBYkb`~>*tkBP9ish1n6opC zndcA0wT!DEV{Kxr7YTRPk(FynL*lPvnu>2fqO%-yp+ zumj{;X42o)ozGc+S8=cV%(;R&oq_M+IafGWcj|b*$EVZBFA8==Jlan{KZ)os3H>I+ zu1JAB80q#+L-}C7XJ^e&e{h}3yCkZs3g~|#s#nRmDXJeSNXI-(gUzvERLJJwx+nmf z(2wAAsJUWKC%Q{i^gGUt)ZJcq=`h zG%|BHt>QhI|9a5Fdx_0Sg7M;p*r4z2GH(<2=ob9IdlA-Nj59W<%%3;S*mt4)P1ouC zO+4qMP2tk{n>wJ=|63?szGxWl0jm5>jOkB)PO^ve8e^Mp!`Q-e5-q)2)Z@GN1^HxERJWkBlL>+Od z(h-$r9w)2T4HJ}ZsI0^~8@6Tzbi+7{~^4afw2@Dk^VDSSCQ`+!-IRI z+iGt1Qw~61>|;Cz?ltB|0s^dE{uK)HZEywvR>9$k^_5kLN zTlI692<*f&al?E(+kvmIn~!Jf^q%>6woEs3Z=o%W-!t8m&+{QCZ-Ts>2f0}a`8gNz zxx@o`D&_MBe^c`L)4yFnK7$W;{H>RK2CZMiJM!t@|EA6dR!_T-U#3ghD3LsiMA;{% z`s-Jf`R{^Fumx+j0a&wr7i+f1v1VJd@?B}WB*Aw1Idt9i&|Pb`4B9XlYmld%gEvsu zD;wtBFdJqNY?#5_HcXOf!&rLSFn3PxX~UFFS2j#bFB|4{ZNrrRMCF6IcN6c+_H84~ zK^rVb8-aTr|BQ`L9{=@o(|CfxhI>D9d8n(YpQ*dYP7mpBej~5&TdgIj-3HxlgYIsz z*klYWGdIo1Zri^OW#cltY4zz~6Vk@yyc{-Z%dN?8W;-sd=V+jK5wUzrj?P7b1%xjk7JvB}Fi=~RRdhn;mCQ|DCqYMw*K0HmuJ}$GS zbn)&LV+*~+SiZrc{k9ZT+yiU}`?f7;tgEZYTjeeKcf@ar%c2|Rj(=pelVVncNROBA8p zm;%p(^>gQDwNI$>dVqfnuA>vY|2`G#liv1WtjhmMnN&AT@z|qN``@!R<6x&|6iL7A zMOeSwx4`9T13%BOsJKyFE7{H#*W1n(tqXu=zaMC8PqC`l2%+<{6mQow`rNt#J1i;n zZ3BnamwzHWdAze>P3p3Nmu#RRdB_tjwhui!b-&3+|AuVIn_xAR?-VH~*=ur4_}Z9muTcXh5@`#9Q;F$UDX zYZ*}g9(3pLRtfiEYn-%i$~&Dol_;t^N}9`&J}=-W$xc3 zJoGoQ89iyS7qqYs5bjB!N2;Vps@Fihr1L^f-ify#Lk& zx{Siyo~h~au94Jke%lF}FsJNl&;)Bl_v4_+OKATcOKkm1_#;hTmNXgAFHNN18^&`N zmYtMo`hIicCuwOQn@rvu|A77?rvcm&DfL!)HQReqSw$Ufu%t==T-LVNY zSTfKh_nu~fX3QJeEsw2s=?AnCzVGuK&8RB5f2xx6X&J1a?7a)m5B|mFA^&n6k^>ohoOy(x2Y7bRSYR^# z>P^DquqL&ySYmkCj}fc-VcQw8Vq0JS!SrD-ovPxA*?#2mJJ2@A!M-TFTv*Q(!q%nl zPaAYF^HlbdU;8P$@*rcHd&#a}0Pa@EtwZ!_gx$_Lk_J2%2UqT|#T;>g$0tu!=aA4z z`;(w|vd~U|u{lArR*Stp3p`hdIl+C8IPiL{ky3Aij7rB`*uwK`@sf^n%oZA-*H}kLZ zUJYaLGKVtPZHMID$z4;%*hBeNvlaJflbYiZ)SaD9??{JK(hn{+P ze?>g(&d(o~G`gi98o5jw6^VVe&mUf!Sfpf3BRP4dpSkUH(IiMv~7PpodK)Ov_`ZZ>HVxw}9_Ru^!c%J z!#xGwRnESAcT3FW)h(>IQTi<^S}g2`7PBz6yNs2uZh;&a2)Rq&o)U7=K zw2Z(0H2v)3L|lCnbiSqPy3>0C!P1uk(Rtiwmpb`x(8<7Qj8HmxpfKDoTMVg_4;nw* z@~ORY%io5$w)}l)(U#rDRa^Gh3%9&IL~QxZP-Dw`hQ<94{83kL)V|fmsbJ}w;3YfY z%LaTefv@8LAMcqA5cc|?13u!o3HW7=Kpo#82WXDY0b1Uj12ioEr_1!aRk=S0$#@Ot=l+y)X{vDEvsmSh zt`5uld8xQ?-p{6$!qZeFoNJWqkahnra(*s$^_}x`Tx8Ce4ZxZ7e*}Un1HywT2 zZmV)KcQNGVk<6`Cjp;g`3-82H|6KF?U_~`U-yKGI#j4yt^95Spm>)ppo>~^steW-BCeS~R@xf5Dr*lttz z31cEcv2T19vF(^X<9`h8GH0_-ufLmN2m0>R>to=*rBKBnDAzFoj`DdF?{A1@jIYC3 zZNgr3x+A42P2ck@F>P=zVAI9twLS4KyDH{0>K%ivZ^c&^cP(y-YKz z)}9Xj<7lvQ5Nr~`eY{u1^bzjKE*TT}mDGFU=u3Gd$yz1jxIg2f?|WL8;|}FxpMIM- zvWa;rcUqk%@3gwtW4+9|QyX?aGf&>nO!5A@Q0Wq%rRde;qXv39?pAvUrq0Mk+Xt59 z?NQ3?8>k8;LH#y2-$KaTQjulgOvY|t=% zrzeappBnqBP=5?y^c=e-pD=E+-s1mC7{~3J(o%Dazc-8<(cUTz3+3x9>)syyb6l&TxO;vckK7`leB!yS* z!T$bS2(MlfuUqRH_a=yK!OAF4aIy%brvh=4MrOQ5pvd~{6p=)g{YqjocMtQ~=c~`b; zc!DXq>@QFj^Lk{WaG%|evYRdYno*wT9B;{Xg(oQYkc3;7|1e#aJ<77vP!{F6NB0KG zo&;TaCQg6TX6qjcTC6ww+d$J@;FX=hJkL&RivJIbReZ%04>3M;QhVLGkZ#R`?&RHG zb&vd@)QN2_?sFumeU5JX-QG2$x~}mMbf;I^?=f9Y*oCG(hS9l=dnArRtiPj&O5OSX zRbhGNLGw0@v=dl0A$&HdJkz6zMbM+x##2j z;_)ixP3?Hb6Z|N@ZM=?sGXc-{{64>Uf{u;D=VSZx+xT3$+iAF&?2Qu8KR&YNWKtU@(!Y!g+!B6HqsKQ=V~4e;bsdfxPPr+vj$Y8}kG z?Au2I0eicTIm6gU4t(Rh zD2nEJV6yk-DQb_Q<=C_NjHyJPtG!&5ZbKOv2T#^d?)vmHb;jkfB)6+|x4kO`>%5>P zt*aQ{f_JDfzHv`#{tm$P0LC~_`R>RuJ{!&P4fPgXrS3~RFupf7=XsjJAJvxRdNU9E zR^oDLUVh6x&*U@yYYSsU+r_d|;Kv8R*PEk7sn*or3du5 zUO$$c{|4sg{d!z&dR)&$E4syo(e3q7xu9E;KQo&0H$}$deCR61AIQxoPs$kWfX5Hq zx76I^Z?UHOrB1kH*OX>!LxBfnx?vye&vQWkw+)0$q&&eGpFB&Mc$22@P2Kd(8X&gq z4378gtV!@wMup3mKYpNP7uwi}Z!fgLPKS(kS<9Q0uO)AW8cN=j zr-kIrwkZm?799tKGH3lAlsO+3R6!mR?pm%>HO!5cw07otQ?e!*vL@{UvL>}#)_k;B z<%pxKY16WXar2*;qGS!nE7u2Qwhil1_VnCA9v|e+{X)eud4%+YOgRpGnRZsKq2x;O z$sm4j((+@Te+9~V?zuU?;*&zj3-{r9FwZxwrT*n?2X$)C1#@3y%r)?{<8W|0&p&(U zf0R2u|9W|TM|gNn#`{&ZcgT1&dGvE4I z>vf(3`twZDIHYZL>{bzQPGOv_Jx&{AbKdO=OvLjs;CDaf7vp<&%yI>;WEu2XdnTCM zai=SA8Oxyl+%v)LtXq68n8!L3U}GJx{Q9t@nXsVlG0-Y`3fClez*fE;HuG(;oo|H= zy})zk?pr*tsil2Q8pTafc6!^pDpr_H(&?l8+INGJrV&$A?6Bf@RZMrG`N78TpzE0e z9eeDzD)yMaK-2lRK{>CE7wEWU{C=q`aG1}~K{h@Yx&oi^8M>&g9nTY70Uw@kJr_)Q zv^ChkyM{k*RWT?p-4Se{jM|82`mtY)XX4{|Jk!qHfM1?{KijHe@ebRe&d4Y4Pg@c(fa?EV}HzdB>5%({Y1a>1>bVECHke^yazCC7NHpUa$OUx)-}HC{pnP$Iw z{YqQt+bBmGO~bcA`n#*w?^SZILjCX5zx0FT9tL^f68-Lq?r{OI6dSz&ndpX%B1@_HBTlA~e}4YHiJ3nyr&s>Gugdvyda};>qI2b)ocz!GE13E+ z@n)Cj50=FC&M@0QAGW5~YjXvb!VX^weY^x^W`)J(GWX87m**S@ zn+9tdQy1H8Azi$0vf4MZgzbHaQT7ecgB}NdJ2o30@+RYjckhYw4A&<2KV%+(jnF|^ zzkvQ3RphyMfr38?YlIY$(%#g)Mo5I-PWf7E1f~1b8lhI}ZOZv(jc3L^df+DEVGfh> zusB4|OjdhT7xF9k@bzHBiP!a6%_!lX{ejY(Kbq8k9v71~+(YY~`?Pdr?1t4*ykibK z+s?a$!W##=)S;ZZ57Ymi<~&Uo6${MP)e;>R3kL&3d5C-}WimWPmmois@vJ zdZgriA>JRn1UlMM_)##{wJ*3w?DJc#-c$Piw7DnR#&{s#RX%ks)--?fW@F#0=&yNz zn0VV{wRY+l=+8SbSmZSCxn;-H$@F)-We3Nxi1%G5Gw$<<@!)+aADCbLYWYs(-L8xm zPWp>AJt6#+KQuhSL8A3Fz;AOsTT*<_PnRcK9UD@bA1%on-MqXR?Q$={A|5GeL>r%Q zZ5g5R_Ll!p=IqIp{t{CB>Ml^WEsz5De3ymB>tZ)a{`~@ z-o!NFw&UI3ct$GZnX!}g7^5tIa;P2drr z#aQ5=p&K-GUnuq!@3Fr)$;{^hxi2!@Z#l*K-HfAB;0nCOI4X(Cj@*uN_fp3Jws$!$ z(6$}FY-3$`8&w(Zt^KsYzV6g*{6e=uKV1I*8u)18RM!s1)7&wMdA3|TNO#{II+i43 zQ(|76vZ&m34fs|rL=M-JKcVc=`%at(b=`48*EdQZCHeq^j^Bcw`@>?!f=lh%Z4gJH zZ@1%HcwHIK680APp<_^0N%bU^3nNXOSxcF{;YY%MCP4(450LFKW)flj67Vn{@Rw-k z%&4iJCg_XJ=Yplj(AHDdg!W%RFV#U8WuINS-)j}yZAL%f1kd{wOh8ymUT z&B(;ZV#+m!`z~S|O95}R|u&BMn1i2@&k>!pVo&fN1>~wG&ai58I z%;WT}?aH=&WV^C$BeeggnWst4-$C-O(Y6kZFFyP|+PQd=(h;#vmA5KNe~ay-9m(HX zCK-a zE`f6yyASyM#MwvezJV$A9}kqV`(&TtvHNCCIzM(_yYs@a`)t5-7XEtYC15@Q;B5WD zQAP5c=2&!78fErMt7-f6%nfiM`5m-I?>kR6*QEJ_!5B}lOzy=#nfd-GH*LU?`NG}! z9_&Eq5I!^B&1{U}_+*S1>lWrYs~sVh^Zpd+%QeheCu4|+S-4Dx7jD`UD{YJcF2TFcTMR?shYxjf4&Jq#;pG2ddMQ1*me;1a0hVqF4lVG z^cfFYoGouZUSf-BUhaEIv~u5xwioktEPUqil6=6rit#5O2L9Atv=17*6R2Mc-Qe44b(XJQUDDF#S?>E(FgNaD+w-H`q>b-x5eTlcI_3S-bjYAj zg*=PdG}3V237DGS!tMNZ#6uGW))F>b7b**W4>BP9RxjiW^<)QmqlAPVXL=QGcH}~ zlIloNN}7>ZrlO4p@|B;Qv`rW@fNLJe75c2Tz%Jo>k9R6gLk>A0rvjME=)X1HNL)G_ zHstElL991if#P6r`y}vyh^Q)gEuXfn@a7B`t&C&q#CoEL{-G8%|BL;>ZH(7egm!m^ zt=Eg_eK@RliwFYKh8Ga7v*%*?JvOd!cPqM?fH7|L8!e4;)-Wr z#h(@CmT^xC>(u4>YTv8)3$^d{JwAhnY&4w>UQa4)Dy>@R;)L8a(q}h*j6; zoe-JBNvOO#SK<49A#w?0aiqfgrMfKfZIyF2p-X`Fz31%Md^Kk!TzVh!qVPQ$z~Qhe zILtj6j;AXxv{w*L?_rv!VUMm~6s7F6KN~%15})65KVe|LT9?G+T_|@a{q}$-{M|@- z6$_q-W4vrv;OUW!vw?LjWD*4F;q`|y+zt3W^>n6;t52V7dGCy|^wM3ex1ztD7O|A^ zk)$6b=F}~Cw<|_Ww1Z|I=G3&>y_8RTF-Lfh!xpRJ{}&pm(#M;=CiJ&#=KS7OUt(ME z`tn4~+2`_T?rWzYk#2`>iB2O-mFA3g(o%9cq z?gZx;*4vDuW6OB1q~$-+hAw+L7r4XkV750`wf6|x+h!Hpq+WYwq}*#cgL0##-K568 z3-;tT8J{mv=FhnZZ}+spxC$++R>*XNmwN9sMaaC=b3Y1C~@*KPbDw{O4AliJUZyej3! z?i{z>P&`%fM6^G>R0QY)WP{u@T*`;!YS5!;6>~~e#n;9dt>H4P4swt(toAAq_}FsM z_&?y=sS@bnslv^368bA-pg!-Ao}};Iz()&qSqiu8vOHf9F7sG+S5(!Mk4N&Js5-mf zj4?1L_EkH~+%@O>8POIVq;2Bb7u4M2IZ6Tg42Qvz7m|~dk!){$uEJG9p0b-S&pkh$ zZ}?a_PU5W=c(RM0GMjr&w&zs;3$vmB^Lol_c`ib~irn6CBzTwSsyTlo*Q9^{aYer= zJpSCi;rT@$@XXQhyxR+&zvqH~!{9OXv$SCVQv&9^18`+YxDvc|fQx!E94?s`_k|E# zAM^v)(|y3@$TjzD6g)rve*n+V`+;Y9AMiwIcxrm#>3P6KzpcLSh=lxXI|^wRCCGh} zFD6nixMZv=nYU8Q6Ub)gPAyMbv^?1v#k*EjA3U&0xKoX)wf^8gj!N4EWA9i}?zg?D z;tA3>-p-iKam*>;az@F0RFun7v1MU1jbpA?+i^k;JzwQ0N)kp);5!v3>oxLPv}TXtSIj(V=; zOrJ8!u{%(P^NC>399d&PM>DT@U%3Trx2e77T0`V;&BFYa zT(@vvglA)x2v=Yebci98Z2r;f>TIk9I;IZ#DeLNsX~#JohRiD+aNOwf`{oKiY-XqF zvzPlHDu<8huNTE}a}9)ga^17?Vzur;{n|lzpCDHFcA7Z{id4=4v{kybuJOLDwE$m0 zpudgVfsd21if&JXx7K5wzdcIjVU+oKtHrWuK^5;oQrcdA&99VkoN=@ZywBVl(--$I>BSe#RNwTbhoec+`04uuoWRpO+) z1nZSt;G|5R*{Jg_i$5=Xjbz?=;9YW=D=GZ@tI5vJkqdNZDrv87|(BLyeu525!vx3%(osV7}sTc477BtAvkcV-L$ zO>Fg_>|y?-s*>2xWNhNxqi z^1&hxb7v%3lU3fM7*Wcc87;6Y?*o0(yYJp4bo&eaH}FxpWMaOV(~3N1-Ve}u-X-4V zq1^Fdt^n-QZO7BqUiA$Vc`kk(a5oz`oCVo16Ew9-nzr=e^EZ>UuoS&|-zMQ%2tJWM zx`3(r%V6mN@+keKGUDCrtNC~^M?DX5S99<5#f!<;C0D!)90h}~h{G4V57K`H-=_wH zPfiuWoln~8Hm=40>(M6nW5-TZ`|z+A-xrCONE@8C+>nXf!-OqoReRPm!4rvi-p&0X zwO9M3+N(|SIwz|2!iQVK?vU!fMr)pm$lPs_TSS%EBG2s9+jl%eRWxZ;Tt-@99u`yMj5kMzE6#%Lu^ z(SPt*B;>HgZT9_Y6#W5yE%mZ*=UYB_S7zv;xc&dnkKo9D@_%sjVaMR|9fPtcc)6M{Zip6A1|9NO+Kr_0zhKFYuM z_y;X(wj6C)^WIV4yPqGGc=$BZDScK^_KTmKkM~6wd(u;4TZ_-55mW_lQ?)*!U%5j_<%DYx3>|Kn(-1(*|cL?<}wyth8&q6Y{ zu5YZ%kv^Tvjz>48?Z+6owxcY$N8`ti@9Y0vOl*^T9fmV&%i|?kpZ#n(^m?oJt|v+k zwTl(O4Th8B?*z^d0pG#@GRKyrjDFBgv?1l{FC1>k-*}f5rTtul@-z8(f}&Z+Fhw)pWZ2!L*?|aWTh^MA zmMuS9?zl(nkTg5uP&8Wyn!Oz1^pQ^?LrAxMk!V+rE7IL~7IgTb>O*j!K=(nPLiR!b z!XR)G+=F>s_O{bEhWnzwayl-f&8GOJ?eR4wzAa(=GUbXM{L*nOLh}8H32N?}Jo_U1 z!Z*G@t?pZ7vkvFI_iz9Hfp@LvsQ1yo9Lx=D)|!Sa;DUL@Zn|KkCt}5d$hFqk zkDl0LaX$@MKl=IQa!==sHP!2khF!IcXXlvDw9Nol0bw3xb$^Sn;+HntDxMkMb-DYO z<3s!GzK5WLCx`agJD_)|(_6yJ)bqSHRHl~kTrmcJ^mC2n4?XO!c<4dDt$NYg?E5O$ z78^G2>U%8iS!bv1zwE{84`!#mc=TsQe>xiX;=!X!SN?Xx(z8YT<1S_F#JCMh9$MlD zZ!NEjZ)(gkV%~8?7Qa*eP=Vim_V)c*N5oo(VSA_I8ry3A&S+4-VoUKmKHy-Sq=~*O zF?N=;iHcwoE#68SA;SF-;J01u@^ro|0`|i${~_Rc#u2OE4!$~Xg6w{j2ol<(hmIwJge zSl6^}M*kf@1>VrsLA3P-o|~;g`eT(JRepEz7{imaSJt@#gXDP7K6Aw1>I%g28U6U^ zlUM`&&u8|>=X+cME1%JCIiJ7d3IxZqJo@MJW>?@#JpYAlgHM;?|I^U-#oC^AVZI#0 zyBMq=4`Kb-QS++;7w64bl)=0yt}K%BZN?ZSw{`P_713$ccXj<9&vV}{-LoY@_di^)Pj|Xp5RMD%G7d6|429QWWD|yC9{ct z%8!RY%VKTAyK0L3uZ~wT!&OsVK$%foWATT}3`eYz8Rhux6DMihhpAfY0}grruXy2w z@$%gN5-$-ZUbd`}xY+w|Pn6iNQ261Uv3~|PclW|g4spZ#3AAAnxJTd$EYbMs#53<) z5JwJsFS%;bauxhP12VsY^T0aPTR1?-{N5v}Yrv25$)7CuA@~#gJ{Qj~oCAO2+YS1g z@3{Il8_)Dd=C>JUy|e1u)p%w>q5040qg?=Kmy}oXr z%tJw&kb49&c2&*Zf{wYs;e5y$(BpFYv((SF0?=eK8kGd3X&>tjnW3WN$Zhsc^c7%J(xGx|EM#iP;{4g8;Czh(%R8^xz=`g@| z27T4m2)7Tmh9A03`Xa8+3g#~v&3t+TAC<=(|b*~%`$S|d27XS;W?4cH89_u|)R z8~@tr8?JTXMgF|bQFCM*61gUFsWs8m%P}rvSUvafY+~c`N~^7F)#dbkPGURTUU9u%9ml@&p8R6@MEk`>$_ELVRGIXsqP+)92dHK zbaHcwr{hiTbEN7V7|GtX<9PQdH(%PsbG1#(`DRu8`0|yCZ{%D7-`K{{pBOj?jFesf z85xpYo!~)7MR~p{yE4HK2Z3{oVYIW(?P$xxy)`}0!sl4kDB(W4Tg`(O?k8fNagN=B zI#o4M?%!UiY>eVTT=Tx|tR19mpteE!?%H6=ex(-~ub28N7kK_-R7fw%JAETXX7Jgyd0kZ(>hq z--9|-*16slxaLaw&D`RbWyAbt7A12pGR+&DcKHQ;XAZ_*0Eni-+MP|4(Yuc@F34I&ApqJG|?KX_ih*?=EOP~ zhyHN)z75KMBIT;8(_{V8H*R80SHk8Bh>Dn0VEpQ;$7EMtsC z8Ssm3w7S!D7VoRfZ;@i+_YLKD!23N*4dr)mpZ;DQAtsjVzII=x_KudLj}bi2GuzPb z@51|A@ooXi6W(v(|7G~Q3IE?sKP~*Z@%K3X*66yK*$Vy^4gWQ0;~pXMxMu2YPZsL2 zy^M7X$1uAOe+l!>(xOXMyKTDND^b_PNA+mcZtX>?-B!Fe?=fw>gt+>(vt_ulw_gqO z!;s%E*59Mm_cXLSNq^ftO4)Z8Yx)ikr|;p>?n(X7_wuna|E6jKHg%lFcTuLoYcjsa zv#slkJiju>_y2MB?(tC-=l}Sey(F6piI95&Bq1t+C@7aCDY8q_)|$ASfu&PfL(mqo@V6w@X#5lgcXM=5Pu7a)3tzbKh_D1x9zaveIKVs>#4OR7@ zM!q0vCg5&y@YxOTKQ5`|6_iu>?N&n%}4nct@4A^Sgb<1 zsn+-mM4dHSFAjV3lcUrgE#I+6*N#$qw0y@N{gY8@kCyM)qaPim_F;=}cyN^B8>-ni z@C`r4`z5yi%trs_+t&E~wtmjF#>*kb&#~acIQ~D|nBHmiE3x+)y}1vZl@=UA!ExOv zb;c#%0q?X?`ix8W`>IjB`Qq|X>KwM^Vuk;9{$c{Zfrps)E8d+(d5H0&l->r*R^MLh ztq|e2s(+?_j56>ek$lG?>EDpu0vzG*> zp&V@+t@D@|rlAfG(q=6x3p->Vq#lB_WjuYc>Rb0kN*{B!)@wUm?l<6?Ec zS<8FRFN&njKJQVtAbmXVQMDh-FyKzZ`X|vWd{Vmcr={*Ab)OeSr ztBEq(_4vGjdd(^BohR=<4?N;Pz&8kRreHi$F&=IiTkr_RgT80jZ{GE>->vCN$D`Sq zBjW(DpQ{!dJI`BZHUu7+q5LF_ew=dWyiG{2*ziK*9LOe1QpCnC)HgX_9Naq^vQU{g zSRSk5VO@0ar_UuAiS^eSiQA_cp89D6gunJHNAdx;^0hGy^4QvZv4Lk;Wjkk{%wLu_ zYV<@SDcK=PMo)Amjh6rJr0eB>Y|{PmKQ8H6`Ja&Vy8IuI^hf!hob>FeSZPyy-Ok)n zS^jiv@pT=1b|)qC`5>QTlm3Hz*BQdgy8g&#H=j`-pX2yEK-P8L06r%t{jnR*1BI8i zFpLM^o*=5Oz+N@->z_QAFhut0`hTNOUpwQa&q?~bTZ?g+6)&o0`*%-7zwR4_ekHj? z$tb`zO8&c(u9N?`JbD#{6uUqZIb8ub4z9WCu57}uI95lDT&V;_#B&b0Qu%_ z<#Sxpr+nVYXTZbf4n7Z%b6HRY}fJG&1b;J=Quv6B_;8B0G~6G4qzPT z4&-xI(x-e*<1^spa~7Y6BrWIj5I*N7eR>qn`NI1fIqvaYs|Sm!Td-!Dfsb(-A1BNE z$QK&#hTJ_Je7@(#h|LdDJ!j+L;_YFGl$*B|pLMsAuPv0l;^cs5%fQ z{GW8pEZx!~=Cwj@{^X!~2Cb?31a0uychamv{oYUFRQvzQXv)q-{k6#d=|Gj%amuV> zEJBm;A^iZ_VcV1~WqU|x{OM2Q#Lk^a+l_b1OJ6&af|%!>A0rKWSqYx~^h-|LSNhbf z(Q%EqmZfb0b<2vx%GW8-BW(oAl9#N;Kka{J&M7SA_*NLDC2iQR_d7i!i{{*2TJu{K z^SXlh9>^&TqAY!ByteqZaQ#5BG3dN4d=18Y8T#LZytU{L=g6|p;XJWD&Kb`zL#S7t zVS*0v+-lKQv%&IL^?Xrp-SHaGH2T|FiuC+6v5C(M@w_!vY+{TFzAs~$JC(nxr||rO z5Gytv$nYOuETnEc>rKCiaeAf&_K&_gKs&EIW4er~%(h4eTOF;F+EcU*P?3to*^$6= zY{UQQZ|Hl<5ioOjk0|`F#4Fp6s;#_3)A~!J%k?=-gFc5b{Bw%5oq@i42uphH2~Lyy zR%S3SfjkvtloOC?3&6i2{ZBkk*rN7V37hmC@V8RxhOJusSLLr|@vYKdOY;MNFRcbY zM!h`7iW+y38at^QM*kld(Qm-tN~s&Ry8h7s_lTF#7p6(SDl9L31KbwA;3DcORbjul z5&K3Z_KzC^C-46r_BXfk-?8}n;lZpAWw@Wyr$gtC+>!+PVZ>VN)O4Nk25SsY*Qz~c z)!kP7Z>*m=pcN6VZD9`Ix*=$z)gu}+a zJcD;IEhQHTsn2W=H1O*qY<;TJeVSLK z@lZr1a6Q!u*DR(Vst2ht#Dm1dldCD4m+|^vfB-nx{TTN2=77r+z&3M@QMnLj^8=AWbO8me~*c@K54)okGZBFEq{q-QVVow{_E-t{cr zALjX53}fh+lOy~0u|YhK(Y&Z7_p#0){|h?9w)NRN%RV+z-EsYUq~cd&MxJS#AQE+K zw?XJrk&*)}Kci6?qP7HQ^C|LqAD<$OPoZoo(u0gIG)uIe1>7VN0+!EzB~FK+H-pFAXdgz^)9`CEarpo_P>h5a{H;c6XlHEyBL8$>$z#k?;^hEkuUMdLP8e$-^mnX_a^b)4U5&e|lVp3u-`|Y@?!FS^ zpEQzZ^*`iUeJ>vhv%$9kcE5!iC-2|Z<1^uwk!nAXdq72z|Dh4`OzaGrUOiIL^tmII z9Lcn*k?IU@!U&xPc-U|Dr+7sF_E4e2;*I8DyUl;f6+Qk_Zu)7$%R%iwr8%B{NtNA3 z)Q8Fy{rFI!Pdep8<>pK48jk_*=;yG_BdXeB((A?7Klv87rv)6Im#JUz zXZ+KT8g(q1o)CfBMO!D+2F$Pu(r_bX-VLLNUI_`Jywn;7f67|%BuO3zWocey~}jb-<846?-$ z=gLOx^BbFW9UU@8hLtz1CogUDUxds+9_d(&C;^|b%W9Y3(zR_(-*%|yv)~n9fOp%B zd-HIHDCN2MBgprtGh=&Ptk`gcn>P9x+wJ}e<3;#6<)`B3jV*EpCTLW z&v0he-|Eb&XPvzFQuoT4!3gp_exC?DhBL=@Jwn7?z~ zo2~t&(p9&g6_ZBE{Ref=()0X-LaEE@#h&_{#|8X4=?JiVe`$U9Gf%Av-dz;Wiubip zHzk34AfD?`_k*C9<1kl*yIT8)NYQO(;NOQ|O}2)K-2=lmV zE8~Q`D-X-qgnjnM_Lt2D!q5g7&e&@`3Z{RJP%zzj7MKncDwq!8KS#r4Z(|$A`D}K* z&D68dG@N=Ko|C&hsJECg;xCbVnlpGr$7m-^rAYVTM?Wv`@i#)+>0ByY^wlJS;aJhK zHwApW*;L6r;7R=69HIQV&|WKam+*#ST5k)Lh{r<7wUwT{Rr5o+qDA@GNe?1gHer%>_6GVSwGGHpm9`FF+-l=if}d>yQg6;)@m zb!~gX_dICj^|n5ANc}fy*TZ^v z&haOQw2SMBPift|N?$~$n>>t*v%XO6M|@sesP1cq^Pj#;F&@o@jD>-{#uS0HYXtpc z?kHc8>esf#yRICeY>OWR9xP`J#zH-2Rpb043!`$$Y6r(OB{=zI<#Wnz+p(mOz7W)V zkBtZRw&@;uPVJxJQ8-sqsCcdg!>v6rCHUxY#(O=J-%15OOZ;+*V&+ZbIl!9@Q3 z^lncx)&T#j<@vAb3weT<*haEwA)d8jpP-G{p0UDzXStH|ua>X~|L8*Xe+m9sPv}%^ zNq>Bjf>Zb})UaPO{9F8K)je6c9(dHtpO$mr&W;pi0~E(S6~7?zOarb>!~6yr$F?RR za1v`w+E+Q9YnM*p*}iM7Sri{wy2kLEH3I_sYZ3$dlNq}{DG;AkTe-hTv~;f#{wjt=sv?1-np4|@En8)#$@43?9)H~bmtr+5a zu5&?IjQ6-`^UmY}7-@C*?Dw??-z2nA*x?7z>HFPhN^PbArQ% zQ)Vqw=Q%~nKETIV1ZeMld~2f)SyL?P5#M+=UFxUJd}kMJ%YEU_DQu-4f1yD%OCVbd^~qR+TJON{(XQyEf%;xajQHR^3+ZVAJykVzaOq_wnNA#u56to zY8Ouo<&;M}wXU$a`#i6?_&jf@=>vH$(%$8ZY$m+BcW8OFJhBn*QqK)}L!UfTIfwcb zabx_U8$FLn`=b;`#C#3k(4P?C?gbyx_5#LzXq!5ua$LT-)Gylc?ZV#eG!jna|L2Ql zgUmN>jGynr(6)~@6h*!k7xIvXVJy7tJMAjT7lrUG_u80w|E7M)q?mcXVO-yQ=e*V! z{9o#vw;DVteW2{YIJZ5syfXBr^D#NzEn}pv-i^eYPh#iIWw{$-=B)y+k^4~0ybkc9 z!yKxdw9i?r=jlgdRXhXCkI1i`#5>a5vY2`8*iQ%teV+}p+8cm!cj|I!V`Y1c5tzF( zcHS!H|3~b+)oAYy-A>^(%PQ;E{${?M`-7g%vYdOIY%dRO@mzvuuFM;nv!pV##`)O! zNVD3jOSH8&NwvpVYIo@G&Fhv`Rxe+t>Yu0U|EC%U-o3t};gIQTRX>@RZF_e5!i76M zVbWNKuCF4vY*%&Cxpq?%#)q1H{$bIm1dhM>~J1=ko_+{Dk|HU(!#~2WsAd zZ-X(X$8&rUlQDxZ4&aBs*>qp3|6%<9`SvkVfAhHXM}hAcuQ2#DPjY!UZl=#W5^E{} zvKncKA$8T3G!kbv{*pE~X+gHP0nhZ8-FbPL%-{9KlmPS3#u{9N`~jIaUFQ82o;&;T zXVK2{(;j~o8C}PoUF2(0x91vH9CTdzLSw#>D&xD5Zq*V0AN4(#iZt3mEu+6T z+gN^hp|qt`ZPhH4ZFPbMv2Mm_!wHQg7Pd!h1EQ+G=FgRZ_%*>hE#QvRU-3-4di7fg?iXIfXu*cTe< zSI%><^3neu{X8}$dc#u~=Ota*!O6MmM_=~l3#0n7q34ZAJNAU*&l*~1R>k&v|3c-j zza9A1fjYTXKRCd3_putQ`m)I77m~lt37B7Dy>=;I0{gkgAivLutDkX!JWp7ke?EPc zCHku_IMXK;d1rn*dI9+>w6!Sm`HX zXXj+lUVI}R=ic9idTwfsRk{b@kHt(CgFY_H7dgs(5kJN}$s^BQa79Z9Jc5P8iNwu} z@<<2v$kU3*cszG3j`5Fmo#~V8ZK-pead)kK z&Ub4aqR)Jh#tY<}uZYfhqMGv$*590 zgLmoA5Nl)k`Dd<+h?F~G{G)rVi>%=L2hLm<9FzPEQANC~Fv4#`ju_X8J#ECCYKe1< zV{gYf$~)hA{*a$BMJSIID6o>5S|0;M>fZif(o1#&~IuNq(ZAR z?fUc8WlDdZ_6L#OF7JuOE`N(5HW9AEe&BN0;EHHFGr~ofIsg;rZJvb7TN(m>Q1>`T z!lmtdUcWIg-AJhSI6d`~r7Tm|cnf$D(~;hFBEc7tF{2$mZ!&QqU6eANyhG?K;TH%0 zI8pMDv={p|c6yXCh|~jf9Po;_p%N=?=5io_ic0fU!i{l@Yh)`#qV=nSv>zS z&GUai90eT?4R^>kB+vgxpW^vzV!UQS40!(crH)c)^84yuc=zv>&ybowNS`6p@AHJr zVk+vlzvhd)aX#10`%>?!y~!6@cfPVUllQ{ULw4jl%1WOhANV4_I$!DIhyH06U&J^a zPM?Z3rSY+;fc2H@xxKn)ZXet5B5hE*GB2&|nODX`X&$F+OLFzxhS861;K^n^w;tQv zPLOk(6Rba9ods57Zo>sxf%XqXgma?K0kh;eU^nv2yr;C3G|hhB_Aues3acNEp5l9a2;iI1xAC<0$;#*^~Yj_Kf|_`Oh;T- zXq1fyK%XM$6W7whes}=O2IMBd7ST2!$92C#7+=HSTFR00N|Z5igM zOwUP0X1F8_SlAa|Cg7{NO4;LYkJ{riHgg^566x4h7vmCT2FDaA+mleuQ<8RYUJ5T1 zRmTc6?bxn-A1%HBX~2O_N9J~qktyR6WnH?Y*E(%J-?mOcL%Olv`&*~hTxQzlGNS1R z=W?qfv%X!g)2HQJdP_+=R%<+S7bt#-w2x=sq1>l1%p8Yvy8z#^EMe{)10f|e^1kyZqS8XV{i`*?5_`B71;ZrXpQQ_;GRC* ztouM3L>fSPv+7sMkAhq)MYlxhAYgw?(!orum!I`oFQF{RmeyLy1$>|#=UOYRHrT>z zk^}7v&Ri>_^;!uPxMZxl#|amnLr)u$&+fqU-hxE`zTCtfI`tn1>cx7opG{bF>K6r? zPDvW5&nDi~bgIeiHK(|}p_<=wzCe$Dujo}%FM3rxjr8ehUt}ri3G(o+g)wBF;(L>( zSD;^u3KYF+`^xO0ZQSR7f^^cj5Y~XTrls#$;O|2P>U?Gn@8y0v#viKDK3A~b3a#^* z4rkb$5#yC~8tdRo%6_1OQa|Sd#_Cpmy~FBjvRq?bw1we0h~=Mkc!9Ea_N-W4$us$Y zP<#^4n%)A>Mn7ho27$LR>*d;`uc3-W?7wRg)Y@B6hI-Sw)+8VeJZXlJ){D**CiJE= zVM%AwB%MhxuBAS!EEbf(Oi))N=(wE`t)*k!Q7f+*drUHr79n{|slVLQzXZCNbo zCGY#dw^i}nA@l&pC0)k7>U&=IL4iK61KwY}&aA4XEto#9yJnb*i^Q@VGx<%%Td1wP zVVKg9{Sn6RBGj>}$!wrLO)LJXlm9#XQ%9o_|J3t*r-`zPcfkpAp@j-f#1LI`zL<;bUg{!UtZ(6JbsVyd}Iy%Rf^zb4|u==+IOV~ z|1?bDQ{Cm@v(=g8j{NnP_>byyiodKd8;+{;I=N2UhxI(&j^-}hbOCy%=g_0gxWCr<72&9R6j}9^XR1#u0J7fTAnXJ zKHu{V*I1&zaGnUK+kH{k&I6VWllESbqib9N*6W$)3x^(XhmX}5UOT*tn9p`r@&w+W z#m_$WFLskp5y94&?&@h1{F+PAy*ih&5x91k-p^f%Z>x(BmpozR z2i=r5JD`nIhH2X9P(E|`+)VgECnpY5bdu*4@jbBr-dm0DUzut=Wd75pq`jV#ik^-d zrs?SkO;1lMdRjP4@qvXg;S$;~-EY-NUa;FNKCbJ$O{Y^n`)9tgWwH7x;YJ&2!xYaM ziq&wFSEaoW_|GKWenqVAJJUgLJ$g*|?(G>1yvKx#!&ZOTKkN%dHrU$S;gZqz{BBhr z&s!~jvd6Ss*8+IY*YCshKVvyvrk^L+@Wi9>WKX`j^J6;gV+w3|5^^g%`5W?FWTlhW z4x4hmJrTuY@61dL}BqoO(wqShg5t7a9KF(qHsQ)?@hJ5lUyMP}`0$rZ07bfafKB z>!(i96ZuM~h`LSGDSA9#=@c;*3h(P5#`_`OL7&w>X>Z@8+;2X}v-u`X&~cAMxTMJ; zyiM9SX`S{>+7zSxq+2?1i9BCc`!)IHc<{^gF<87|X(N5-J(4GVM|~sD26=9sv$?|g;}YfjG&Q&=Px&G3TW9`B6%*a^pGrT2^mSUO{fFcZ5E1%eki01V z`E4Y=-R+34pE*F;do!K%wxXZ!w+O~889Jt~@6=G|1~{f^vRkC%#F4q-CYb|FF>UE80u^ z4(`P(68$HT=aW3fi&y17%A+3j*5;i^o88AxEA4OcG1lxu#55abYyHGyc&@%&>f@GF zf2r(|?CaondCF(&tf9WhyPU@_m7WsU=i7NoPw8y2QK(Tql)JF~k&!<({s7t#6arfiR~B%A9jPu@#dv3N6soEO&7U*6fk=Q`?2o-j8x z45QCh4xcul@v>3j7bvxTv*`s$!cy-wiNY=`vc5D}R7ZotfT zb{;nyX6bb58f{0uD>WWY$&8_d>j|zw`5~m2Hk_oKB>R3AnoGPpX4C88dK#3c zWRzv7kNz$N#|SB>juLoNLj;lD(vcxpjY>1lpElyMLG$C2;%!I61@^Fj2Bdcs)WEgf2yjr$r84cHVc->!>hhh-4jU#4MMntLV=o}ruO z@ zdGYPxC4KyIY}G!3Ej+UD=ZRd61G?_n#9Nn&>#<6=(N|aRN{n~rG3r5|D_&FLPWo5p zna@eAyWaiH3QIp9)G@erd1c|(znLHU%xEe6BUx_R<029HScbmL96ekGXGNSAI#gDNIlikD6B>lRv*fq zZ?%uQ%8YZ@MY~Xsv$R;|A1Dqk)cJukE%E!8RNlQbIG=vhW_jpOMYlOn`CpU1!s&}1 z<*2XAa)l@thjMdJ4t&}@d5j^d^^fX2`kd=px1ahk@|=sh9M<{QLrBkctMjjyMWhgN zcH4XpL@Jlm#o4pX<=>0B3^@k}YsY{tCs3}`GRbydI2xLHL#XDj{g zAxIw~=5-u0tNzU~LV5t{ozuf5lP?zY79#&FM>K!1O4YOVuvzshqzAz-;r-ykBW4x* zAaQ3P=FYvmvgo3<5_hI0srj3YGCa3a{(ha_wy&S5Y`Yh0=}jU1{l2}&@Q3a(9y^(! zYy*k=-^Vzm-Ymv9U#{*(g5^=4vOF)VzDY=aN1e&12d^EX_P^%K7s+!$@-xi$A?AEW z4Ek5D&efdTMb#1VHO}nS9|#jD4CN>^YYQUUXw_U()`&`a9DeGt_>jJtWW$ zoLMOE^wfDa=Utx3qaN!_K5qzdL*MHa{V;l-jXVpKKf11L+x^c>z*hIZkoT4|HEi8Y zF7L@HE`Otj&3@-NPQsQNOhDTwc?Ra-o#VhjJAJbPS32~4;{tqd;(a4Q*YZ(*#!%(AxI3dM z`*ZELI2$?HyeIDs+}_AG-fQIaoD+Nc8Rrc{)O{4kIlLw%(Ec*diF5Q_RAw+A{h!Qx zgKhL9=km|RI7>KlwSNkXLE{kR7hay3=zB-G)<$5h{i$cIMX=T$>w16ruA+avdMIJ- z$A^lReJ$f7FHL$zuDSfr%_`qs;pdu~ggU!p<@w@@{HhWD!#s<`Z)?5T@W>+U-Ao@h z-rp@_4P^x1MLP35>M+!|EBGx_@?;zF?Xg8Vy^877Pt6Lh(`6oaIMlcQ8ZUk9HP=&L zB7;0pMEcJ{o;wyf{A*}S1Rf-GPkE1zD(Ta`qg4CzqA#p$$)BZ&+Chi!akPY{pDS;c z%zJn`@)eycU#7}egnS9-%9o+?B_Ll{+1c}u_8W(0XM8Poetr$6~0^oyeXCqEFS z$Ml)l!I+sSx6OiMe%zz zEPXAaPQq~ld2U+c@YBEk@4lcfHu_<7_^;(y%YG+5>RJBGuEJ&O4z>OJlS38jzCIM1 zY(z|Fy!Qy&`nkiY+Ir2=(!Jf+GE=v8l77W+dmL@iubxA;)r~waFLL@xx5TA7e&se5 zzcPx;hKxN}hV~0F*QD8n^O7H}#-3L_MR;YOM-|UbAk!rYsmjxmtI7MpjQ!A0`N7fh7^l$Wk92IhvdBFw|G>H0 z&We`Be1>LzsLB?UMSj4t6V6pOJz5qx8LH8`Zn0&NYgyKLuChvgwbq-R$G)6p>wRZ0 zyUi9$ppng-b@_oq!kF6K5l}RLYYxx1WBen;`liDxoz<|vuDxm?M3 zwZoK*=Q&@?c-dOUdtO9_0=}jsF^_Vpnd<`Y;q==5Sgp!YG44Wg{}5{-!+s;$WBrvm zQit!G)N9KlM`AE1xt1@|>m`5q2;h;GWTQQ<-SOnNI=f= z#`3-^%12e?NINt+rXr{Joo88&x(BRyUg=0o!h6F>GlMZWkBk-(FTZa;3r(=?6Otxu z7cF*QVIx^K;cWaubU%}26O0zS&Oi>!7M-nZbWaXVKT94PuW;mD&?)-m+G3+qj&Gq; z##!hTbvJEvig#^Cwus1ovVp^(Egu2bD;#QVHP_Wu0zcKB|EJ64{@0E*Yu3klIp?8l zr90I#?=9OVwJxfgDD&q}K4YFe2g}32gK+K_;tctE7Uuo3Sgy&8;K$jdZ?XQ`#lpX2 z3GEJCl1EDXAJ7uo;s_yS8=hIlXWQ=K3$T|b+kE&+IwkxitV7DHF6kq?@Y;3rLx)96 z#k!@H70cJoZyV#e?<=9|uraxoz^EzGmd0jO^`FUMEg8sJYTcT9?c_kk7@$-6( z!80Myi775Gw4Z2?&BZ}+v znMO~{lD``*a-6N0C6H0g2V%VzAA2yX_d0om_vT^MBj7GcUPCz-95JSff(Vhc@Oj&c*XC3&5Ewk)NCdD z6%G%Vv}P-u2|W)O4~s|%{h~t7zZH2XSIhRdZkr_gvZUDGzNmJhyrU4clf;JBiDG^2 z#N4?GUo84?X^iSyMTP3yWQVjng=}-a^yz(5o${xzWHX09c^_rqD7_w+t^Lv4*6V1b zy-gb#+a2^s_9Iu*g9*OKh1qhyT%Ui$ko+Xq@l6RB7kzGHo#`CIf7@~qZUP^86wh0d z9ATdCNEp{&;y=vTG5vGuaX+s~F)@JEB-r?+-r>#$)d!D+&W`opwL)y{I-u1ndrFpE+T|M=!jn=om zzxw_XmSeFZ|00*1_w9Y^d=hn9XN1x|q2Pzg-#h5gw#?o>HXqAU`=flv{`gRq(wEp1 zFIJK-yom2uzrXgI4fh#(9jzDgOkwfU8jf#-qyaT}?@PDaFR!iq*sb?#`V+@~{R7mQ zN&Pj;*EM9oCA4vweOb@mxo2C{KeipdYYA`fJ#l@neN*p=a?hQvd|k`3IpF`Z6x~tw zK)%Rj62DxsFIW$QrUJj~wBMpyXL)!GzPAp8Ebm-2F|@`PsdGBRea;8g_jf)(9{fv; z^H00YjE;mG0<8a8$ZESYsbkWxtL~zA4>fyQ578ciwEj(=2Y|QZooX07An%sra(Pau z_`q8?{H(DPeR~kR7tc&X$afU`V8|sl9zVz3@_2o>e6ze;PL*+!d4Bp}*0;h%!>BF|ileW!NO;)(Qk(hx5q8y(7bQ{2>Yd7e(0We(_a z+*Aj?`69e4BkVVzJn#PG9dwL{90%S}H;eZLg>keYAwL_})v4_o>4#<{>YQn$brHTY z%x@v;oHfiBpsft+;Q0M-GWO`p6;7>MG$kBBADh2y?TJ74YNoP1UXv;JyB*x`X5e`i z*WGcY2MZpms*L&%p$T%`YU?+bgA{y7EtSD1H^Vw#~ZNh&A z>*Zd9v^#%pHk8u`>gI`(W|GE#lwsq4AgfSrvFN*mVcaCiD{Zvr!yL5^i{|Tr4FHQk zbie!9Z5lRD67`b7S0|~M57oakiyxq#6xx+?q#mPoj1l`ToY?0vkD=kW2SUGc1+1}2 zmGHYI3}Y?$!^M6p_DZ82t|{Qza{Ivl6R)J1Pula{+1nRfU%85FDH@l?;eYfTeV1)~ zahW>nv*!b^!dP-WV`T9k7^8tM#eYbhZO)^i#z@(iyeED9N_{mF{2LDW!|(&g@OkjZA&cUSvv|cM5&DB?7)4 zb$4f|Z=OTy+p!GQmghy))*-yFg{&m~^)JQt1K*Rw`ZKU$0cU zz>8NZUEnnmM-vBV*In<#duDA(rE;xP94Ve<0P^2=Yp~7RGJ(!q429&k6qh@ zaIw4x0NfvIxGPLk#*ytQ*Ccf|WnZ>geYq^$I}dTytM-1WW=LQB#hQmMDTxuA#_=2a@&kN(+buR-qVZz(criZC zp`Hyq$LQzPQ0k%zWFtbtlzYHq#Zn6(<$lIFYXChNZ)NT=%E9sTIHT>~d)tPGi$BsawC&%D(Z`$n8Lx^9)qH#oSVkkynd2X&YunQm zUurz7Xio2ZTNR#z=i8coCZ3Z{gftJ>($9D9rCrM*Unlq?2}jL_@AvuM-De!QW`2!& z=<}1lJhS`IhIpIaW#4hNc=iVN2krgmNN-uxpWd6EKa;NZ|L$1DpI@QJVGH2h)2IF~ z`@_khYK#}4++l0|Wr^`4488vFe4&0`ohil_=;ty#=jrE;3^9I)eqM;@Z2g>%=M4Rf zaUY+mpJ(HFpjAJfllqJgY3?Av^GCq5{mgwp;`#OI%735r&04Q6q~Bsox9&z-pHneR zqH~lJ9OzKIS+Ya<4Ibc7=Sc|;HKuX=2QM*qx!UJkw(>GY-xS0DkEhjr)SbxV?(_Ww zea_g<2ZyCoPa!ABd|}49vDXD2q;fg$*tRLV1klCwbY){>&nLeNrN`eJ7MH(Vp224Z z&$pEs)vM3hK`-$bvUiF6&kT;2{~5ut{70WJ#s3&v8QKHf(`!$S(#Zp93KyFb6)x__ z`yI$TweL6qA9I!~e;~964P`WCrx>CnBt!}CjgRjUI|;*DgXhL6(l(g<-cuOcWQ~(s zU1I!`7JlM+p{)(paob|nksUP9&P=DOL&iqv5dIp#HBs9eT+#=hLN0|*mMsHi zO`v51l-|yd@GVt;N4w+i(9cGqvSIll(i8-#q?C*%wp;;M)mrXk6(2kGSU{0I^?9Tr4i(L z;+1LAH(8{DXOLUBO=^cs&u7mmZHL+CJP|U4pE{6>w5=HJHh8|Y=1#Hmmv@Ps4dX9B|8ui_|c7?ZX%*i|pHyn4UBC+!f#6cA08>M}E}++4lH8Z6Clp$MR6B zt?f_Pc5QS#hr~w5b1TNP732BiZ*O~;)%JR2dzap)?LX?aKhtfuQ=YWi{Kx;lHr>`( zuZWdxMpAmW`9>;j5R{G{a8Bx`+T%s_`0}=uc{Nq*|E4g8h-2rmTVhZ?7P#sOoN_v( zPwJyOo(j(%CJ!*eanFcwO_GSvr{V4-M|hS)v@D_B#BSkTGVMZi^}SBR|I4RIBR#?GhxOQMyT&ak%AdaF zpZih3{F+1FkND&Ag`d7+08s5-^UiWV+tTVM$fS-Md z>H>(C4%%m102pVy{|py$IVw%am*?;}Yq* zHmy+dtBe(68<#P9E|(r+TdBc|Qu^0F_gvCH{IrvreMc1j>M^3l?uR=&wYMK^OPBn8 zz)e4(eSLshad_%@7h?10OnU;}EAZ^CdHI>RB=3f5gtrd3)QY3xY;nBDx?}sp# z=8af01uBkg4=&M<%o^d}*CeFR&eFqr&3w-zafxFhea~zE^#82 zup^viv#GV?C(F_g>4U=@fzaXdaP=Wa_@OTWr>)I(DavQHoZ~)v>~>$JmY>p(Q`A0v zMDP2S-Icx0m$YvF!Gj9No*zUUW9*@Uf$qBo1;R5^P-iOYP6HmK0}tHNCL|0x!aef% z8TgPLF4QrJ@`Q@TQRq>zILL<<%GgV^7xx7BKaVzLYz4!AY@ylEeW%0EeXHUDz+_xOw!}#`~rN_2iw48Xr*YXnD^{(;yEnP0!2Ncd&5SBFIPNhq80(l?U zgK{%pS zmQ{uT7uM2dbEeZv9kI+Zt>fl2TDm7h^}WK=3D4tU#x1evNH_Ax7}+Sd7wPm}cOP}C zkQS0Ukt&wD|1^0b&g}y~U{9%^YaQ}ORkge?cl78PS}=r~wET9DFOr`U z)i3B>CN+3Ay@FJhnb1#}KD012Q{$1-7l~z=2l|w;&4bdzVi|odTi}ay4lMg%AS{Y#*9rd!lJc$ zEN^=@N`Hy>zd21Dbohg()!YxLHyh}`z>2q+CS$Kg`}qlACeAwRmE3RTA%5EXwhj4? zA#FG0i{|vE>_W&N4@kKqCHO4bs?k1)tahweXm1WwHZ}kC-{$|G6N=_kL`8)PfU*S9_3y42~|J+Oj_%rYY=tc-TpQ=_LAgP^V{wozd6ex#)Z&V z!PpoBX`|aaMmAw$n_CzooA-UYJ>KJsJ^oD&u_;rI!5_SBJPTtT3%5>ep8@)?usqB- z)Rf_x`|$^K!=PwP=unOkX-_dCM>FUX(6Wn63$~J$-aWqbXi8aRPexfJG`742JYh@4 z*y}fk#>Q->4?V_dIGT_i=)BX{()obV(mD33%~QuZ@y+e!nS4k6ZGm>s+@|LkyI%T? zRd5>HCNeg+$G9TQ*xZxk-PI2QjJLZId1;5wa=bHIL7Q>zX@jV@g0l3b-`_Y*vyGFm zjg$6a)89BGe}{2+;ya83ZDx-qq^fba(HaM1Gvgl1GhL_Z%MW#5x&XgN`pETon_vC! zUCl}B4%J=s@u52ULj?@x8jm*w*wcU$;mLpS{uSfqTfA-JD)N6HV2#A<*iiMi1X$nI zsJ9dOr5;XG9P6ws{ABI?(2b6kwgJm4o0qSfUwEk#G(S$&n-6-uTip}1&uE<_>wVW& zZ^F&8-bVuv@e7nN32M&d%0M3GVRbL0{o2l!&QP=mHy}l}0-w><5 z+yq%);o7x_JO@5GRKfaYpuWAjzSW>dnCl$ExkbwLC9|BWUaU)7|9>d!jU|4eoLLhS zFei|&roR`D-(fiYPP7-H&tJxjM*1Fkx1SnZoL*a5{b%sFV||fv4zclQNmT!9p|*$O zGxx&gL%T~i-63|?>9`CFFn^3AMSq<~N<`$5f#k2Yd+P@BOnSSwjsIId@_Gg_w)jWh z3jUiPdh7V#^r5$n|C2xTdQ#}0qs?2v|L3oeegN`DgO(MPwbWfA#)sB8B^~_hzd%pF zx-QV<%<8JWL{!nIHshs-wp{JartQgLMQg@EZg0qr#)qeWvF1yZA0NhtxBKiVmTMqA zc-=td7og1%T?5Cl2BhsB-c3B4To)M6XNWvm>?s zL+~7NapJKLf3&|xke;XU_?SS;9rItD(-s?=4*;m&ewr|kypUp zmWy?EzmC<8{9NyLpPe~)KN4FOIhs%wX>z1>wK_!=&j5Mu#F!t9^WpK(mbG?L(`gZC zqTF@T2;`=U2;+W;+J!RqhX?OXr;R{UI`X!HcSf5l-xGe;NxMYpV+ge6PTuPiM)dQ2 zz<3OEAD(=bSH_lG?C_dqe8Aj`f2Y%H-i5lfFZA~3pPu+vS7}M>BG9`OwRXu%9zkDu zhSq);`gtDDiGVu?OsQMGkMF>p3cg=o7HQ`@aLB{=DP@r__zqlZ`x@^hWs$$~9XM6T z_oA}M=X?ilRq!3-xZ^xEcJyD#vHKYB^kb=Lhv6^vV+{ZvDdUFeM@dLO*}rX8YbFgc ztvMQVRfON-IIlSY|0P_jcy`8n&8rRF-+^mupIbOFWa|6k*DG}_x)&N{oIP2ur+zQm za-sf5K2Y-IS@UD9+VdB-fp!9Zi4(xdM)c!ojxX{M1FKNK5M|3#2;Jwp(kAzL6`kL{-ym;$THG_;{?5V}Lo=nbx&RDBnsQ zdX03U?cH~eD&A+y~p#a^HiKMtNn7eKUT*z293KM?}x#Y ze?}YZ`&FFSCh&(=Tqx>1Q~#N9p=xzps9HyE_!5+R;XTk!9T$r9v*>0De*S z8TIo%aE&kGmTTpGZ;1DLZ~7vJTuW$=?^}G4Q^{iG9>84}e0t+(p-NoR=HOM%~dydBU30B-g6)T#04wO~;>({%<(RjsHJaDf0H*L?q!!z$ep6ofR(lPab z<4>dfLqe30r@+6A7t)Zd_nZ{9=lo2UYY@>GJwEW3{8o#9xu)G}?L3gI)=ukrV&jF# z&p1B!F%5ZJPn&YR-JPt~8}B+8$1=l$73K1rV$&lQoEYzlWHsJa+I$g}0q;dU_v!Z^ z+tTks`ds_D3E?|omau-2sMhpUrgQ&0rS`wnWWE0}oid7B%^&6Jgd`<*%QcSlQmao~akoNy>)lx_#;lY}Wuy!%iz2wj)W?u+wJA zv2*z7Ijrx(jzS*y{J`hU!k!$*`ylXnB`TI|@F|Y%e}4K#w?ov^#(Iy7wk{$#bA~t= zU~JxmGi9u|&_3m>cU}>JRSxQGi{M|dN7IkV7Vu_UkoL~)!h0O!K!1RfC13fX<|{LT zL(%3YM@Icd9ruj(72HcRk-i0c>Dm0@+*l9(qOV`D|JCQmNxsNZz-5oK^;A+nem?p; zug;8~SId3Jc3y4Se#rCcY|+x+`Sg&5W`pT;?L2vZJYY=#%!z<~0P-ZEo#eo&ZBE$^ z_~3}7kv|?N>$h$Ew*jsk|`K^KelT(yFDgE{4 zC5fu)+iSfQBK#J0I_U?rZh-O~LjU8GaVrKWIhgsBPk@x*7VQ(DR;YN9(pM<>n+F~A z(@Xv*P5K1Lq~9@TcGsdLoBvo-cq8=R*^mF&%OqZ82QNudHsBS~*RnIvo}v1%(2>?- z2i}yV?ZC}i>Fd0%kFRqBe3|scj`ljy9%Z)uIgCvtHg;x!&oJWa?>RWLv<7*}r!aOj zW9v?yQ;0f!;NOjanIa;J|11x9hWMUSJm|}c2c4pMR*e5X@NsU;!AwCKX2n}B(>&|X zd*UsRTN!378B>Gr_zNy(w8#t?oo#GFac>tW9YB7)muTGLcrgF zv}egDIeESce&snuODrDkZ}@)rYV0@YZ*?CYxVnc2P6=9mUcNs-o&UWsfOm7(1Lv*- z?p+HUyau>99lX)B0B}>{>Efk|=FeQJ^bm*Od9Zb72N>z6FvWh4*Q9*t$-eU62IuR# z-5>ssx_1gBDt(;*$I4Vb^w{552WTD?w2J)UVZCpKK+CBoWiEE^?7k}w@Wun~1i+t& zH8TL~+vz{zbc1%edii?_JB5^I_Tk%I2K^zGGhSm?UW|}>+LcL)XR9(QN{-)kWq@{n zT-P0rRxjcFGvK5@Jf<^#v;YlQ<4CVpG$<{&4|E88l;nMme|1&hbMd_rwzmsuowBXC zu6)Rj<4}L!y0`SHTgLj8dxwbJIl!Vt*P@Ttps&->=V_RusgO6Fa(*_RzP^OM;eDsg zo;rg)b*9TYyD(;b?_3#kqKz_qhUl@^yjr(6CGp%b!VYVHT0FZY9iJ(jT`t2{(mGI7 zy$zWn3_0pi$Wd8X=eGf;>Ejae>lxpa57g|SF+}+V{7E9uMbm>f#|nAo>;s*_Uf|80 zXUtp07)>u>{i2_g>$30l1!g*Px@z%WmeE?u@^cfZXP+a_qz|Ca|Hs&(&Xg{Jv9EAq zt!@=JOuj(Ot3GK~6=IDCFZ4n7igvX4Teo zReu%gXBzAO3;BN+^_9|l;J*gnAJ(wXiqo+B#k{`*j{kDr*u4s{Rs#<9L&luKw>+fr z-EgYdnCbJ_?%=N0Q_*&dWxIowehzIuej(=h7;9>wF^^~7Z_S?~%jBJmmKk9y^LNIP zLEm%P_inR_^zFlV;h$`z$n%YnhR-`4-{VKT^YXN#CKp8`Fa4JF~|87xv~y z7Wo2Zjg#^6yr$_2n0MlTF@7c1`HfiH{`|s;d!5Rrp1jDkZDs>~=bS$};l{mA6_4He zCVo%arq?j``?lUNT??2Vafp()fR~SD`&u|pw7Z~RuvzIMawWdg zR-`FjL~0xkue2d?2zjnk^MpH41K4X$#{_Ej;QuNW&-m1W>6n*kn4hVbrwYv9)#!tw zQL|2&n+|CGRz+)~u#8MpH0Qzu-q|{KhG)j24iD;z!yIFt7d!mNLC-^=IY;Gvt)l6M zM+BT65piXT7Q&}+V9~_fpST0LwT3tMWK1Bp9sk1N&AkF+msmSVtXMqpY-4L5SJJ|r z@0ktzM)jTFv|wGIvFuK;X!JC|JQc84p#SLmHl;stRQDHSyNP4WnC9Gb_Q$Ju+xt9b5zj{Uz9lzt^`$MVkb*{OUZcAI7ceK&@`#aHKN2~l62I}&>P>ijrC`RY7dtklC& z1`xq5%SAXB;|zH$@`_98f>rE${IiS!j_q+$ru9XxUe?=J<;p#R`iTc2zgF!5Kel(V ziYeZq_e#h~%4a?Lf<1o|bq_2(lng`Z5OjdQoBR_IC`8*^ZN4(=PMXqB=2qG$N!r2w z_8;R^-buzN-e*9al8ctb6VD9r-3D;f5$Lb)#J4?|8}^m!JSUI$f=1UWCuxT>DC3{@ zu^0RLcAs}0p1-*qG!eYu$qmmmroGY7NISCUH!PKLDr-RV9v}1bMkT*wNncWXFb_@G zqx$tbN}qVZofoC=-_$N2+JD$dd*<|Dgz_2MZ8ObHgXP^)mR|GO!B0>p+v?YsKqBLz zqz1#wec|sXvaU?5Db!`Cy6!|>5j97t>}M8u#}Q6-p2pakwcLYlxBMn#NxupIF7^ek z!&v+gY2O1(Ci57US)<)9Z!uuVJAUW`?x-?pR~0MEu~NX)Zp&r&Qi+#ZQw259^-4F ze=6GN9*dQB_&YrL6a1cA9|=>pYPHsDYp4`0GA44l@Se>d>`|wR6`=N$^x)r5m<@G3 zHk0My@5ifs=$A{?-7=VK8DETkbXlIyBLvp1A-vXmp75Ol|96V-+*j;6PtrFU@_Wz*c!VhqKlf2{itui86K9>l>XQpT ztB4VsqI#kjv;7M`ON&?g&Mb!rcv3U!xmUF>cG7m=e|U`%pzbB*A#rOGojlP5GMxNu4 zh5rM5WPOjsFn;+|^rr&-x*Gkv3V3`a?-S*`5C3l^cU$^z>RdM?IO7C$euRHK#t*bI z67`##8vM+o^t;b4zX6x>eBNfKD0v9${Vn`%#=i1)jEccQxsi0Ir|)}}?~^e2YVI9P zlsD1mBa6h&kj?i=;R5UYE49b>3HNQr00*xbc|FeJmCoe#E#2T-equJ9ZJkQEXZgG# z@UC-S@deUR?|4J;&-8nk0eBx}tVj*-UjXkh32&N&_jAD8W`oz$54`8{$$SZ5n=Bk% zwXvA*#ndhBJFW`fI7cqIRvCXbrK=XQ+QMO23z`@DuA|z9 z`!l55=f|2C{wBxuUfYr%b<|cOeI?HZ=g^ivf1*DwPXz31+T)6T8-Z_DeMNEfQ{s#4 z>ohY8@jsP$2GUnlob*>L^3+)=-uK_bcTu~mU;oSz-*fr+{Uc7r`?2%Dp;P8KtK2O5 zL1~}l@2`$j?OVEvXK3Xr76bRoy33VMVo7Tye+^mHbLJUwEqLtXNM}Btxz~cnKI~EV zo1nXq{lJS4F$e5tA==n)0J6k|*GO%W98(Rm6jlUTn#!bg>1mNM_aW1~|OfjBqV4Pfr zuX`2v%6OzrH^?J+q`gwbt<_;GEfIN{&Ug~buzurE$4vaD1Ma!_ehvC`4PaOb7})2z z_jB+U@6K@pRMlc>908f>GepPi?k-B zl_AZ7Tb})44HN#myJJgu7dqDl(_ECj#`q5KxHUX(8$8I9V5qk5*5k7<4s9XNv}5MR zYcxFVN6jkcnS=Kw9#PEi9N(!Nd;F%-pB?I-N}NF(j4MFffg(M=U4UWatwrGqz!{J9 zF5na6!;p_CoUQhF))%Lrt?^)clQ|y1i(c)yNejM1d+um^4vD9pU8jmv5P;Ujt3VBE3f4Z&Ssi+rg0&OZ@<(zfWZ=Ia;?@*^ZTBm)zOFB^KWBiOA z`R%d(!>7&l4>-uHqyz_fWW1Ce`MyE^$&8_kbx5A25VWDyGz0=-TU>}Kg_MbIPi=_)oTQ&d7?3Y zdSd^e{1qNmZ@I45=TU9{Dn_jADtZ@VXxw{d%pCA^7_+JPjl?ejKg9<-f@Ad<%6|UB z7ss2RaeR2_uP55WKkLvutw70v8?S8(idBB-E??-K(#Y(dO@W6@JGy_s6L^9`0#V-I*sQs5bA? zZT?8l$5pz`yJIanpk(*DIF)aPhV2Vo?<`%f8V|zOwyQ4Df~{?rC-H2sWdyhBIKaq@SmoNr_7A%L>{#VP zpD?t&(@4?u}7>Q*~wr4Xe%p zS7|s6xgP5@oZnVI>-OlnKaNp%{t7mSe^|VQ4_U#lxHshpsk1p(=WmTsu>#t6I|Jdb zTmd;>YkiSD+l2IszTczrLB^CZxfNdI$n{U31;38re|GTI7~O|}HP((keK-?t;}SJ4 zf75OJ!h%JgwZ0pt>RukB=6ko!_k2&jRGDvsN9B7mre}ZNH8D;-zoKczQ@RYl4bb&I ziZr=D7)p-jzV)I<`2w65qj2v27==ss#`Lzm{me~%0Wz{fY&;&T^k7ZM!j@h;pJi<0 zL%U0lYn`Tc$dK>5wO%{Q9*u=u=~i^%rWiF(H^!)a?gq9uTFZ84*glWJ-G0N`U`aT-(SL=7{|H?l9Q~LaKyz)_Q za?g8aa7eFuGlE%oFVXKM`rh37HVEIw*xr-yeu;jk{uu8@$Q#7!J9oD&ud`P>=|K}? zk#BoH;g)e9~kwz+2dAvX;1ih#+DxZ(yiw9 z3%8ov|8v`6ObcG_;=PG$XZKx6n9pR)>v@>pf#72X1x_t?Ng2Ajm;F{w_%|LI=W3(W z^}w^|t~zB4~hG$oqlzG;PlJb8UyPZAJS`Q zy@q#*rWKoXx$z!3h6gE!W*Dg>nfFzED~T7yN0LM_&-#YHPd%D4b(b+*(fnIL^Ly@D zoyJ<$U9MsJAGgH=2|sm#T-4u^!s&&Feqg?U!zjTQba)c-hbR#|m3KkNUyuAg_POnVS@{CR*VJ_@*x4Oi!+mDc{R z;cFf$Qs|eu?Tr^2)wsp@@5cYM)o%LXK3HxnX;kzjH8_iYCHss4ePxqQidTJ+w;=!D zq3gfht#nD*=EXYgR^6tQsq$QY@|wl^TV>B0PYI6DY1g_fUOX-MZ_Qs%cB{FZq;YV9 zThVE@f1@rp*=_NPDRO^f+GTD_9!d>%dKkA}!Iot0|85&^yUOL?q51LxTm2_uRo>yY z`cLcm9%ie5rvC9f ze@Zaqpo~agEDq38$h_OsdE^g)m#Z}Gye(GI&O$>JOIaN6FYc4Rh*wZnU|JmJlIK5Z zADIoc4l&L&MZioJ5yqV3-N5_XC7-)q^0_swUg}ShMhx4qvhg;J8~@LSFT{@{vC%a} zfAOmAv znS8vWCoyu|7wB()Lmjy;aga7bd>^9g9H`e@K)(-gMP;syI?dy<_LcPDul1O8I~8pV zJJs4g=Irg~;@BY49$D&2J2>y=Ag2NBHufzn4lKH2a__6mQ4j{Rk~gS7OK z6P;0g9@G3bJMgzLnEo8qy{{tL{2Ep2ab}eam!ket^&8Tw>$Vgx>b4*+Sc=I?l9B z_{^dBc!}qmbt~c>!%axPayyM$eZ(!;(z5iqxP+LLXT_2q1M_=gLX}| zmHpjYQO0W(YMZ2a%QTI0RiL5D~c9$T7E`2WqcL|fV{;4ah7 zv!&Gv{~o5L+R|1D|38?PsnQ&o>dajXR`1T(+R9yye(nz2rJti+pQ4}tAA9cu7e{sV z51%_bvpc|$OyU|zLgGqDf(e8_Ap{9YNJ5Y(NiZRrDoPgE1kCcsWl2bkEh;LuMAwSC znpIJ;T`MXo>S{KTTH4ZAF) z@7#0mx&O{R_uScG+4r={e?|EnDsQJeU*$ige6z~mp*%w6{yv^U{pauGe>a>r3vF;V zrpZ_ro=>*$4+Ne|!iOJY`|p?Zy)^uJxf{;`_J?+5?)ia@K7Xa(1vUD+yGyFqpI;L6 zoQd!+m@Y?t5WX7S1KIaBeftx(_r00+RUY$Q4>CKX>-nfZ-aMszR_mbeZE@I^7GBL; z%lYGEqxxL~%&v}btlW>&zB<72e1diAnGKKMYpHLce|K;{YlDpov|nKMTfq6Bw_Nrlrmwx7?^#93>&u^7>hB12x2ZzXH{<>T6Z zKWi(`{=V?Npp4^$y$^cH1Di4LKI~r_3H+?Ls2kU}CcpB1Hcy8>kaFkwNA?j&{LZ&^ z&(Yrt*jUF6_kMle0fUJTyz}+>LHhSpZe_Z@N7Qw?^3F+g-4Xi0a@19==;D|zGOT=0 zlPT>hzpf%pyB6K4uJubM)Avs30~et_6Y2{>RN5q`j<)Gqre{BElYTNC*gtNxO;h)8 zi>6J(cc^Xp{Eo@n^tU_CKZ0YM=(}TLo8mQk&M-Z_h{Jhav>WnVV5}_QUcmo|exK8q z?E9R=aCMI|LE2YyQCItEW&`N&XVLqc#=f&E81E}N_{ts(Z~EiRFRsJ(=d~$*vmD1= zrth$Dm#SQ^;lUa{OT*`C_&g0?py7)(JVL{lY4{2aU!~y*8lI%#DH^^(!#8VqhK66I z;X5>Zmxf=f;n!>UO&XrB;rliGW(_aZaGQo7((t1i{%sAvL&NXZ@b7B)eH#9K4S!g} zAJgzBH2i4||AB`8NW)*$@K-eabq#+@!%u7YI~x8o4gaNv|3<^#)$sQ<{0|!bk%oVw z;b%1bQw{%{hJUW%UugJ0H2iA~=Qe5VU&Dhne3pjK)$n;5zCgnlYj}i)FVpZ98oo-y z6Er+Y!&5YTgNAR`@C*&VO2c<(_%4-aYiuuDV|&>e+shtrd)I38T(99bX?VVd@7M5~ zHM~^AZ5n<^!;fnCw>A6@4ZmB%zpLT*Y54aw{9z4$Ov9hh@TWEW2O9n(4S!L?U(xW_ zHT*3NKds^KX!y@G{FfU38x4O~!{68NKWO+z8vcofpV9D7HT-WH{<(&Kq2d3~@UJzT z+pJkH8Xm0Svow6JhR@UR1sc9s!y`0&nTD^>@KqX~py5dxo}%F!G<>s$XK46U8ooor zcWL;w8h*Wo-=yLBDt`cDf%yE;2L`Wv`#EJD*+$n?7(KTFUX;_{SD(i?{f>nFjMLu* zbus=Q$lqi9Q{)m+`B~(djMKmKUc)&3-H}%q{|NafjMLwh+rp{58+ifazenz1{9WXy z82>H(4jslj=hZ$&=HIQ<>0Y+mJWA%BYTH|Tkiar(P* znS#n+Mt*|v7m=dX>A8Kg9U6$j>tVH1afq%AZ7D&$tV@kMT#5$B8O`82Mqw zA4L8t;|}_L(~KWSo*Ja`?;`&WXW;_Y` zX~tJ0|10Bh)Xrs<$I$mo8DD`sgYo6apJY4|`P+7` zn;Cxv`P+=YM8}QsCggu${5j+L0-!E&B*U$`~dPt7%xQrI^$;Ke`fq9rjhqfBlk@s@1I6KFpYe08u`#P^5JRZBh$zstrR8hO+-^5|*ganr~Xr;#U5BTt=1o;HmyZDm1nWXxg#2AhPejfm@5A&s+CUo+m0{2z?BA^(E$R^3rE4PeXnwVw~E!f$>D-TbRx``8$A>$_G^H~0HAPEt;mlvJw?<%u=GMr{(Z=+S$ZyV3rpXNd=cY0$a7g9 zYKJmQ&qBV7rDr0)oTaBDznZ0|QM+aRO-24a#;IRA#dsp}ml=7$50H|Ihd^@+%l0 zLLS5TAo9x?A3%OFs2pUBa2Cn2>&>LR3`qyrGv<`Z*BP`cDcNOqM!@%)JaLOvnT zJRA3i*;2<+@XnE%mcig$sdE|BTom5D4B9RdyOxr{i=>)mq|PW+FC*dni5nY(^JFD`(U{OwFap}1gAl67QtYM77_37D6MB8#FKV@X*YMVM$)<=Any^RNA?egriyEj!&dsj&u;o$3X)p4s*oK zb@HZaJ$U$D zLd$O=Nl~9b+~elb!}0wnqjand=gAxxz}o>F zE*%UL_gFtd3KKgy;w02yh&F#C+Fc_jx^&RQ)sV5iqzClnYQUMoAF;y#US8}pKpRir z6YmzJAp`h?umJ3N?48ui8o16o-s`boXyF+jBe&A@5kv82nO7z*lJmMAvqpiojw zS!~lmH;02%qmx>6;LwFN>%gr`Wp!T;%~-0L6t?rw%1LcJba18?9%^-zJ9Sbs4~;s{ zXj>=qVREYILJvsF(F0adx$R_I*gJx9DGL6gZ$zat|uIvVUjBxy2D(=84g49(YU%7NFA7IL0CKLSRkWU zS}3()#)V<6xCR$W4dKwb5R*F>N<#~wXJPAj8A4?qJ&$U<`c`gqFG7u} zIWB^86s6jrgxEk04yn{#`v%pQn=2>WwQr9f>%91A(_g14j6ug||l!SVncqhi=+;TN5BhY* znot}Jsa_JAcyUC+!N{tc1=T_#`a(hKmta^B2ST7)FXIW-qc?U)*i@-af<}YUD?z6r zygd}^M9Cou!=mJo1b2|sfNFwdmjq40l4q9C6vCs*<`A6I))1*$f{u`|;SlhJICX(t zp12>MCl@Eg$u_`2SJr(v~pr=2pTzk`Ps#b9UoMpK=lzokJU4>ey1W$q^#Aa8So(YW6A2x6euHI5JFgG;q8d9S_HQ zIMS@~07@O*bifGj<)DYyY1tSOfldmjqpH=>9dVF~B;?K19TN{%r1c@+bPpWA57Ds# zjIYw=ULAFrJvvga+ZVXkYJEM8%>c~+f9M9+PCGW5cRF1cD*M0cM`xQ%C@hS___JPd zD42GU(sa?OhkfFJ07dPBzbu+=n3xQv=t=LRpcd>w4NF}dmH0_1NLDg-`tq<2`UyHb7bg$VXag705GVKR zaNEZWjXK$f%Rsl6wV(O}2N7|-Ix+f!sp_xB|8Z3kx~nMVnlQL;GRPh@M1wPEZ2d96 zqxh6e7LTcEqK^h45}LG!nl!ZOa+xkxrkBGq%~Q5vz1`Rlf(y8gbA><;?;v>R(&yk! zgCTPy7zPcIR3Jtn_XNpJ!B8JeOSpsUM|CDDzjaqnj2JAtxN0&;LmIJzhe4eQxr4{5 zygZLlbsNuPLOZ`tDYpcwG2X7`jc7r*+jSYBgC9^fSg93bG<^q|yv_epefN*6$;qJw z=S(@) z$Db|N*+FnYqq}nvzL9R!xEGTq zA_c^-Vw{)>$B6&Q7;*4Y|3cEp%e@Optspjr6Ni8bIs~aEoD2)b-mHC7aAr-k_GDt) zwrv{|+s?$cZRd-fys>TDww=7O&42!zb9-*iuG+P#Z@OyN>eahz^#kxCdBztyA`gU9 zO`+SS^_~Ei^Vq?MNJNF)hw+G=HI6(kIHwDr0}d?whsaf;)oIEv62Z2BrmzV3{UZL5 z>r{9^fjP2c_`*C+E_q8x()qdtdv{~;jChee#|i@pe1mRdgv;zc|Nf9In$F;#Mx{pv zlEE~ouV^V-tlhXP*u(Dqq4L`>CW6jOgv0vnX(K-MW9X#1jTWZI^SK7iYfU)YXh$ku z%m@DHKdT4xN;zy2Ic+yFy?IzVbIsy;fJdYr`EYA9y6arfN1_G!Tdo+?1?EgYN)VSQ zZ`QNG95TcRESrfhj|8AtUW6pTfv*eEVLzA+26)G{TOisR%PU1Ya^}NEKV-t_({+Sy zlu)Y87xV{uCm{|Bh2Sj5%d1E-Z=OgbD{z$5x04wD^lax?a63=X5tmwqokKc--em8L zESUp2^w1K#P)^+l$zW)JUq1tYawHPJMA8WP%aL()#ODQ_+o}53=s@;wJEZL>24v4*hN;QI z%@JQWBuSjvK_6AjcuH7;Py!d7Dml5|p2}sUBXOGjq5~C&p*Zq(@#qdceDxxjl&)1M zw_AFI^d2rw{!Me0NgaiuJo;App_G*6mMKhQ(brr?A!)dWAq-7vY9h`0czt|c>zMRS zIAo(VMtun@gtTmtBOPiYwh4S_q+G#8*H{1w&GRT^oScIFD3oUX(vYtZ($1qW&N8iLSGG=B`zm!PC#gM`bxKgfX6+Y#R zBy}9fhkhy9nG}=k+KW!$abzMbCa~F6t~V{7>r}n3MmtaaQ%xJXVygTgZRC(~sYl(G zCX<^YGU?>P&Ocd9ywuDGCt1$}gXj@QRW2y+ptONT{&oPSpsFdzK^yf#4z>O7E?oM4 z1X@(dD3`0>k^3eN^ZcwbB{oeajtlVSWCeM}2KaEYBvZfDBakRfr&y{^*l_rz5z;IH zOHb>O4RQlR0NLdV?yFfRVikqqr5?h*XHm^m5UoiaTZMM65eDFAtA0GlJU1Y3Hx31; z8O3P=7%=eVROog))Ggw!mQ3;!$=Z|h86xeagHFgYcM^w!cv}`y%vW5~Loj&74ui_% zJFJ#{y#_My;zJNo-a~a>Nmpk>ONh!PM~Gz3QvtMNTvUTX2_c(b4hcso%$F#>&Hz?T zm#JYn-RGIm4W#-vl7mFCsdcJ(re11Qt4!EjMNbceSCPVv6QOOo%QoxOqfFRqEvH4i z(@b=BxF9d3%DIC{^nI!y7Sm63qhvhRIsc+Z6JKGfjj4MGaT43E$eK7t> zC)-BE=r~DvB&c@^$`r396XA*&;qmC3tK8is$!!&Ds4!|o%Wfb(@0 z_sewl$2UH(CvvvdY$oU@?ccisv`9lIZ^<`J=zc`SdjD?=iqcr5FwVY!a9k|*{Vo5N ziZ8sxJlkI z!pdFfhLn({0@a>uYIK{wI`fZ9fsUk~2(IKPM-3;kb-zQjm7Ny6Xoth9RT*Z1j)rI{ z(Ms)ziM*~g2^(0bCo?~nEf=zt$N&7O0aI+=x z&Zh137#)AdQ4zZv%Gn9dPsYY@856Aw;kzX~Ey&?;Nxh8${<*r{IAOpH2-N&Ll!@&J zaRWNGSxNTohvF76i(x2Mj15e~fxX``C;&_1-B@@{tQ~B`nqlJ~X$xIhTccBDM?>-$ zU1?zH4@*4{4g_Oi@OqONo)$E{%-oE3nv|a790B!;n5a3K6<*vB7SefY81LQgF_yf@ zg;Tp_@f<2SLJgQfa?XgS;}^7IuZWw8IPDxxriK*gS{1sF$?vAxgbtK^Z}440*zR-` z#4lPhPJ}@i0&nf^#L*R_qVSGvT5=n`Lup;tofIEN^(GWx7xl(zL}<&Yg*lz-=vZ_8 zUPS+19kT?UHux2@(=3gJ-mrUhLA{|2-AE8Bef@yVOnvCz^4Dk7o7Nylybm;b%b%Z*;Gv8D$x zSqZHV^BzUkSYfFgIwUg{+tVBoRd<}|Y~u7iWT?22MY7pb8lrq^o#5GdI3rL&^>CzEWCN^ChCA+0!c3I@g#$;MeWb)E%!Lzxaa&mAJjBl>JhRtP~8Nq;@Z8il@ z183tT>K}UNyWMz`qu=>IRp(;BA<2BZ+-Zjt&J-F>?1DoWV3Nw!3`P!91{53OW>`X! zg8vcTfO=`B@?@ii!(*Um2QJvTXDP=NE1j`LpBio&bDK(^XvGG73%2N;4FK+$xu<7{ zw?XB?kl>3Ox&yAfD#75m?E*v4ehGo0wAX(H#~oPWkrwvk0_0#5^6v&_(Wwa7QXtlV5=}DqYwa-(0b3{JssrhH6oXq#@{?`S#LDPJzK2~I$ zlP$WoaZL9`Xk5AlP#xf==5eJCa8KE))5p>!?_7aht~Vkr7tyKO>X~Okq4ng%$viwl zuu;ff>Y7(1WJD-}X|5F4$ee4@wi#m9C4DJ{$z^x)u9$0-cr1qLVK1Om!_p>gE`nM9 zBVk@KmrRCOjoOj;_l5^xTFus_Wua$%xlIRGm9ohRJ3VgvWCmc>y51p!qnsqQ6mgG= zcv#2^qWw!Ge!j&JQ*=9XB{I!Z&M)Iog_{vQ+JNu$An!20Yhb-Y%;O$pE~)t>kG0j0 zcoUGC)8$^;-^i+c5tM9wWM(Q?rPNYih8)u_<&yI&*yX9oX}Qf7NC<}sSm7&OSe-#{sS$y4@n4loMgQ97;Y4uA^YnXxe=3$$7#A6! zy7Bl2;T%Wg`8H1%Af80{8JnShL-14w%?-CY1nMwXe-JRJRTzi`r+kZ_Dl-|{pG<5= z=L?7DlpTu$eIA>QzkF~KR%XKO1UB2Dwtm~4yLwrY!M#5pesq{odfUID1dx1PSfH2Os#$mo&@eY zxo-Y%z3=+UFy54kk5Gz}^H)>Vu%f)DBf;STO6f=Fb9Lp=o}St362b%WoUqN`jeDU2 zG6p48`1P^DRwyeIMsx}aSyy6@3!I4JY?TrWvBx<&q6NICt8c@AuNKExzb|5TvW92@ z4Ct%J)XyB`r8q#);vC~j_f>Q5j-f++>Uq=W2rvXW5V z?BRQ&(iwVD|N0z5(aTIpAWXiB>_ysH=X_2hvsr%_+_|Z28OIoYW4{rSuqV4cM-xtw z{$*hQ8VfEbak(RhouJbN9v1Uhx<2K^Q)54QRQdv0$qIl$sit27tT=A!w|xR18*E3= z0;E|WD_4yd!Xp^2w^_eo-4-)!g=iUpxfD%_d+6AX)*dXt3qs_tEH?CiS!TjHVk+mw z4ziZ1WSHlw$~@%ADjm!MeOWt-TQ<06?20=)S$2f%&WZnd1INyF`G?98>PfLmBi+GN z(!#z-+4|*%It(A{_9sr3kikU7>|ld%W=`RMGh$wkz$dVBK!~z?{dU3OX=jDvaq%%h za-pFftWj85Qy#24j-`S;g8ombz^0`Zlz)8%#DeJq5)1k`dR z9&x;P6l}?+$^PfhuLsjsQ`mS{gfF>D7WOn6 zsVr*;Bv!LKCWajqplk&xq)!wV+(WwXh?y($(k}zb=5#4m9$I^rEsC?>wxOCTjZTVy`~~$Ma|tCzQa6iemX5@Q-d$B@;z}Ca|7?YJ&>`g zNio~QY>Rf;pwWM-PqzvYnkY4!VT?7Zqn1y64~u&i*{e4GX+pZ$Om8+gkH%H&IJsRH z(3xzeB&cQEvu?)qmE1d7I|i=n>#AFA=xOQen>7wz-ybN;w5*#kGSq3eB&VcSs2C`! zcl5sYRbVy@;aPy{`=s@-yU%B2%vI!cw&=Cnj@q@AkJ&NSuBD^k;x;przl7l)7}u$!T|WXiiq+&bG0fp%*7IVmt$ z)3D!N`A2Ht3Ek9`i-If7l<)FArpgO)U!{aY;7-rOr8C>#`3Bb>K}4?xmeKZmSuXx!1f;hP&OPl9cpBw3Ciq`!?Mlmk*3j+dnbXMz&4|R*UPS zR!cE?o)_;1UWZex%jUU0&zF^yv$;O^Q-|&a%_6(FwTk_d?qxg@&L8sI`1#}R_gwGw z&M!VMvR{@F)YD;D-i|Y=muL~?`3cRo?lUX+NIF_Z(bZ#&46)7X$yXZok~hC?u$)X( z)NNvJ44s^T?i(myvWRGvC1rBLs{$~^CSM$rR{hOV-j z2Yw+I(9sx%>MM4e3pFm`eN&V-SEA$r1=IjP&uz0R+x`l$Xldz)n(2QsRCmFTTN<() zLvNVU_6F3{Uuc@omn#!NG3u%Fap}zoJoTP9k*2nYaC*19)^&~kNQd+sB0hQIEu(oRXHq_pQpFV)H3{jHB$H8pRod2_Wz2G|Rz#IjW?7WFJpSRE)J`Bsf;%h7J zdd10U{3W^e@~j8Utv_Ob;05 z*!b-#q?xfMG6`6d&T4O}t0FUm0u7U^gfuUoUG^Dq?Yiky5biV1k3KmAEdDv~1Y4anENR{DvK2I}trG zu55r^kG8>}i%K#1tN7=IY0)oP3kD#&-fC#>Hq(;RcA?wO4rz=yJc^+;rEa5t@UKcE zNAtiwwd8ba?E=4xQ-xY#m^3z`73YOjKy7&4{0Y8tRT%FP-OZV{R*^E!zesk`tS6_@?KDjqW zbWs=km*tQ%0zVf14>=YD7GmbQQ$H#ymOY&}!@SE+qI#KvL43}imU%#W6`Gtk_;YQA zST#G%Uw0WV<4bE!+QpfW>6(AG49sYmQ#9*tLN7=s9PMM6GEzJZ2mz05#-dh^mY&7i zeXItZPTQ2Y5cvUY(L_okUH1CK`JWK{Usk>szRL zr{Pqd3_#3na0)%oY;)(IF2vC?B)8shA9^Wo`@iqj-01ioaXuTz1{fCk#^k9WfF{*464!F?pj5w&lJ6wgUfFKtjxtF1m&T@yy` zxglANmgEbNaRBhK7j!*&PMdqm^`4sl8T&%2@Dpe=Y4vs0*Z28EKOgUs<P z3BvDG5~HV`wPVHHq-{aB*^aW*m{TF|NMOO0TkCLDoy56%6X<)%5!ckWO8{hH2Prfv27HE%U`^Q3D$tF2Fg?%nRdX88;8>g(W8 z$=-<{U>_sh?skSu459WDIQWJ6&tb2~@ZnX-f-C3vuvU-Uho61tao<0j?3r@yU{`SI|b`d-D)@#lNq^!hy;HIjd9;W`UGWq;IUdbfoO$;QzQ&Bjj7^?kT!*kNq(}{d%zz(C9Kf8eABP*#Kp9@p}FOkc27R z=oIPXq@jNn8sNcxshrb`JjZi5PMUHbJ#JH+VagcLc3dxaPRI)DeeC)yn14@K)e3Zs zzeOW5#yhxiw6+PpzL8%Te63so=qp!_bG;71FLbI)c=>~ec|BKwgg2ibfl0l*4mmH7{tLY= zcjrYKEI)NDO}y4dw=xF0#WEZ2$-9q9v(LU=z(dgM*=yQZL8lI`!fUmMT8yps-OXFO z^@SpZC^vo=&GR`uY^VEaPhGJ~7NglSSNktEnxiG!-QFHka{q_Qc0s?(0FQN)RJvXtlUU7QQcZ8xHJH9v9(|ImmzOT!I=qWpI;WGaGH;-4G zblwlqf`oPqygtXcM&>n`)|2+RzTasVj~~vWW7!W1n%9he%>J+450KM3{?<7fPk$T+ zcX!~wh=B5bqrA1}HB5}Ww}XtptBWl^)4LWy0)}me<>_AUdf@wu;1=P%ar;B4{<5FF)ii?_rI}4g z0o{i4({Bxajf~BFsUbn7?%~AnHDi1Hifr zVqX69=shq_cOc)JHU0$j!XO{M2t`&v((L#XW0u@$RxW?CHDxRqST?XeneM9k`sn8t zHzDDZKp?6fVUismryT4Q$Vo>`PF4zurw(*Eb<)S%3U4-8!c(;-CvV2bP#2Utnyj~8 z$&YPj)^P}d+HsvoSK`lG^^2qjo8bU`Q^@3kn|UZ}-*DAgIR;SKVxk<-CJ@rpk5W>! zDgLV&pQL3`ATA0von}qL*z0Gg1*>FiIZ)>m2)_#Awg7jrpPeiv4p?^+%b5ntIu0nd znmB7pO~Ge7d~0;r*n)mlh+NlK45{Wy4DXlLFF(Ewks$kErIrW@^!(Qun05pSWx}YZ zIb_v)Ky4ZxnFWgtySGXG+O30c+AkFEafCe>fr-tl^1+3nd*+i-Ylj~si}@%egxr9D z9Vz-pf)j3%;;77mdS#aNc^&|`S;aMY<1`+KZrVfTZOlK0N z+@4D=)JcD*}tdo(slvf+cujZlE0cO>DnnX=qv^NF_x%l8*r9^1Pkl=og!NzllQ zjyp9)F}zCeU7M{Qeg0Wa&N zu5fY}IKpgB6nRUB3FQ6$zEW%^5l+M~)kml~a8A&L7(d=0h z_V;y^ZGnNwhm&TSH6OLU|J9@B`FM(%s$lPaV@2Q5Ayx@aH0H>#%l1br;L{hdd!GjK zx;WF#S+=2HCq!UNE@bESEu1p{TyfbdBbWbdH4Ktz6~u|AgDdm%DN!LT_jY+|;Fjee zTqW);7qXn*xM#TJn)715TyZS0$*(?|4nY&Y4miEy%PU?sTeOC(sC8dvSn12)A)!^@lojlq>@FTIY;Wo&kIj0CIWa3tLy zXZg4bBfBo3&7!VCa>@s`BsJQ+nrL~~3XH^U5$JjeE4#2l&}%bwSvl((^0z*749ISZ z!0&XYRmVo|CijwjZ1#*gR!^-&jB-vDy9vt9LMTUBZdn$|N^$lVdt?z;WqRk+kqhq{ z94-zu4F{!NL+=*=g@5^~yFlM|5$r z86GV}B}_#HQ?4>$SmpFYz3Mt^6#a^b|D;8;bP&z%-^Pr13)4cmjYe8p2P%#@!WcB1 z4*b4p%0*pmi)K|_Tkb>_@#+nA42{2=6BThnGwfVSEz)?e&?qGW!Uqe$`sQk;qs+;?uS+;u7Mmi@j8jz9uKAIHoBVq8kcMb}Y3UOQ9S%Lic*n9x z%VgfQ0-)MtB*^5f(kCrB>eY8g_=O}H1N5>A_88zyXv*Z0*WI+FCoWU*O`i|GzT;EN zqpFiqcTB14&~>t)c$DuJhotbj?9ouqE$vP`Rb&1dpE2mDK03x zbl^xa&61&CaqOU}|7i<5TikN`z_8Xb-CrJl-hQML`>5MC=3GQn2c5)|AnnQ5k{#=A zcF_(lTyL0nb1b6V0B><%-LQ!iFP~u1Zvh9M2bh`*2R0{$^`bV%pD5+1aMYBc@NKNq zi~uwDgh7WhhC@-&OlqSLljV2n_>0Apk`?J0nVPHi_S|GFO@$8Rc|M9KlCB1z7h`iL z;&R88)8igkIRw5Hh)QQ<^b#_)9s*5;p0_PJR|e!#o>^j+qb8e9!(SeNS8C1r-f=WFaV;gqiLfa&VurH>>GY#UKVANj~dfbGvEvUJ^Y*XeCT7A zL3?SXrgKU;7;tKTozO9g2DxKp}4lrOM?=SoRkMS1IvJLZnr= zqrvTDQG=Xj?o5MbrYzAfuE6f#d=!HEqg<`DEH9!&C@}PTOwo{CLv^pWE&A`FdP+f; zjG7s3`51MfnNk?!Hd=b!biKlK?Jz%7G7Kl-y0*5KG2lb`3}ge(b!p-^u9{+Gu=W6j zw}@;&jVikDLkyQST{f0MLB*Ot`H6^(-*KRejCf#mo9^3VjpE=uQS`60ww&hx-=*-6 zSbp)hI+M=!149`8sl^lni**HedH)kQQyXRxp$ASK>UJF3t#*G{e0{IZZRJG!`dA9h z6pKGO|H0^TQJ;^}TD@aT1a|+YXe=O=woI`kA-FMKH$Ph)P(wIu01D4UMD&df%RNEQ z!IRcGk8tWqZ7MRbuQb@6Pe+tBEg~APm+G{PyGVZUa=Uq%ng}y(xJmcHtnwcY(SnZG z4DHYvw)KDTtqBLp5ISWUb7NNCT7Y#J^b=8xWhz>SW@?41hLMp{k$Hg6fheoy%OaFD zYNMS5V)=J9oW=|?`+t52TJ<>s__U+N)n!=pOgJ*sty%Pv^efvg2cvf7lR`bix*f%3 zaQsqU^>SyD%-fC4zguD#iyW;b|Hzu(m3o=564tEoJ*6K6N_lH6_{_)N_g5LoWwg94ea<(N>Py~>K8JEJPjbB^OMr}Hw)uIZ{r zm4@*h95z|xG#c_DAyEy2Vf^8)-6hK`q@q}$N;>o8F?KHAK6ugrPt1+ zLSaKD=tM&sAoo8B`rx|~dmQtJn!`^YFI!Vms9ojOFR1Y_x^ zDo#x$t&`J7MIoYXytRfOWyng~p9~-oEDo*Z9~xR^>N;EL!tbmd)vxNMuQSvR5oCzZ zPl@9{`A6unz9eoIx3r4pfZWncO6PJ5zuL^k3TG#4Y?^L@G>KaHjb5&2BF<^NivV6U z7gFEw{VWCs=Mz%miArV?|H3w%%Z7QuGtFVjp6Lgfd>h{fURlc5t-1ci{2l{^R|-v@ zVl=4Qp(H80PLx>`!jFu3o|y@XuJ4e38tJC}Vigl(hoggx%~BKV#)7JmfH|w@Rw#*`+fFBmP5m+m`>gJpHluVhvFHwR@woWf zrpb=|$3g&aLhMnbF!~y2`gMd7eSx>Sl}bzxXL*AlHdec@&MJ-P<5J|XpefSQs&#Za zf@9R*+HQpUwWRTp5kuwD#YQJ4y=rmSK^}DE@8wC>^uymno|6NLtDFWT#Bu`TY|H$= zmtCj;W;EM3Yt0wQoZFB%!ptI7qrHWt^pUa(>h}T(5oDajY?jfZ6Q1Hf;5gTRs}XLK zK$2MhNUl)$96sqs$jOMr7EXG-lTceH?os&T4M-&J1PjV7;y``Y$+C{*zxAOkTauz3 zN9Ub>z(1<#zJuF7=6)~Z%OCR@wL%QZ+)0*x-+Ii>s+*#DCf{N1`_i7~gQOHg|5BrB zx>5E|` zs|AT@a!lyNpcS_frW2cz1wR$G+5W{Oa%`Di8w7eoK^M-|giQon?+7czV64s40$LAp zhh@B`9>608SpdsS37QXG|1KTCF?25*U?*mYDkgLly9fg1-}aOn2y(CBg%|Cdt4 zpgRZ`67Mz0?cC!B$a!Vm7s6D$<_ps^u9C}v2mXHk8FPTkkQC>+WYag)Bq>K%z?Cqb z7jix*a}D+=?)(c&fJbt0rUu9aa-}|~g%F(={^-j;jwQqlt?`Ub8D#xFeln^07urSX zD=wb@(EIMeE73|%_+c>B7lDvK*wq(l3uHY3Go+&d;<jqKS?hum*aBJ}#}UIzi>ZG(fhU5VcN$N>EMTvEm8wIGa3iI_!H3vs@% zwa9cjWF|k{V`u2U#Hj{B$4K1~u@U1B&>qOvNW4gu7|5sMRXVbUP|OQr0Y3;EtEOPG z5q3jdVmBNY{{eeedV~1=6rl{U60hmX4%lV*J;D!$g3OBqi|kxOt{BG^ zpefo*U@Cah33@?If)vK38}mfuH38*;)QE^I)q{Ff1T#r2JqqB|EGEer$TL)cs6=RtA)Mt2btNC} zD`tb~Krbi@gk0q_Zi=uKvVrawAW;uJ+!74BlB{wo(94>GICW286#k}q4=>iFG@fzN zwN}W-7e7oV=`c|wJb*H$Fm|DPMz1HFk2{qea3gxI8Rj5rAtRNn+6i&q3OGy)`QMD!SZP=8G1#RzGv3&Qh4Lsa51*NzhK zKoP*;&hD@u*$1ow+1|r}I!LOsK>=eY8qg+Edu5Ffj2-W5CJSEk28YU_7J9A;Cc5Au z(jNl2_Q~K1->g9$NZ~{hrF0PG4NP+u!rB1!dDcg|=m8H~!X;|z#0pYD4C*-}0^6Jv!mIjq&=TC#3KMck zdMXniAn;Cgd%Y=aA(jW>ez3L_RCC&?x%x8qf(I$jgCO$b_>Z0xCvYS%b@NN~5j4Nn z7mI6m(D2knWUdbNQ9SC^NVW2n0 z>os9e%{IKqv~yo8+rCHlFJfE9AmU1Fkv(=Ity&OsU-+O3Yy0I*_bzH?fFzYgAhed%x}+}jNy3P*?vX1pUq zsS$!&eqaHsG~Rf3@V>GxuX_Xf_XoS15rH*`kFMr@Ob!@N*`Qy0+}VZBNMwF6KG(qX z7w5T`Z_3lKFd_3#6qh(7BL2aAXFqrmoOjtmp^!16f*UvzGQRZFY~qktkq8F5WULNz z)a?LSse3#WJb^R^c4z3D?g*rLDXF;sgpP(oa7B98F(le<-$Kx)DZ{cu!Lp;FSG&`} z$PJ`}Hs=Jx=!to_6Tu!PBLUn|x5j+?SxFH_9`y4%Ns()*B0-(2sLYLGt6RV}Du7RCN)M~(%xp4kq~@u>YDVEfv6M2&zztZW73o>S}r?p$KB z24r6c(i2Ovj(tL;{x8vi(q2)acj$T3pJcG*Pc+krnmiOFe~BP#Kl!n-S!mT()SM4Y zE{@6OH~!mFpwyXhPXq_UnP;>ZFWfKTD3h!HnnivpX3wPuN`AL7Qp&b`hC2=a_&yk=fcu{%%evabFw;p?NeZndpm z(B_FzxBQP)`x4ueZvoC#)(sd3-EgU_`A}xi;wblXX5(n%FAE3^LzQtJ>FUt ztM=La)=q8br!305SABFm{@ce@HuoDV%btUv8%{iRcKrH(=6@SCy2(nKRbZ{$o!-#! z77@oB)J}`Sk7xA>TK`B&npK%p2|QDZ4SZpb4SZ1HtDQ#$J&nIW*x^OiIgY`u>f7g+mx*rgx0)bJg+gtM^Bz9CZ^Ay3=w&wLc5aMz~dWptW^$A-n48un>0Z^ z!?SD0v%Cf`ozbU4*C?;IJg}9E-Uj$2;LX?7(UmMOw`cbZ_2XYR`5H=p82)bA_~;Z| zBbk8LX?EmS>B^2cJ1MI0eJ8{s^?^ew5BFPCpL$ z&WwZ`-2js=Jk4SFOZLV;OuuHwpM1DOb4f}@?}{^fa{(Wd<4;op?CrTH)EkH0$+8uc zCNTViDyP`#A_{M4Ue94=FQRGX$4;cGHYTUBWFTI-gr%c-*MH9}i38uiUY=ys_(|bP z?*(&+lRh2>Op{(N(*8*)1AbtVC~h>+7gZYR>I{G-7C!=(_s?ym7KrX%|6=htke1ua ziC;zmGR_$tOn(_*<+X|2>@%Z;Zmq?4F6l2on6zoHR-e^OnKV9$EpmGFBGXIo;1_(ou;u4}>*1Sv$9>D?VNinm>Ad=I&kH{=UgM56!Wh&IYlhoq4g~i3 zHZJ=SL~AToVy`egGF=+3jn_pRAr3ZyF&OIhdhjykN~_!ud%NZPOWDKQD3l5ho23%) z+3A1Y=P|#T9{$TA!S~b=P|yEukFe6o62_A(DO{ddA*4FNu8P+G6?PfLqN8w`E^~qnxch)@V!|>rcvEQ)}{{QZ=)3=jkZeffy z&6HupGiVdm4i}BJfvwJ3Wpes=ZLBT>kY>a?$Pm^I2Z@EidgQ$R&lwTU9BY{AKO>w$ zx-f5S3>G?bj~FBRL9Z})xGXF$tQO|WziWeadH>3;?Z0WkL8h?(;101$Sf>7_4>}Nv z(hkyuvBTlR>A`Ko>0q_6{L9(&+^9psK9uMk1;-DZ99$tb1*@!i`ZQCT5wa-npjDVF zTn-#AHV5k?i;el(a9!H|uR)_QAA&6Zuzk2fED9D`lk{N+#zB#=W4L(cDpSqbxAFxO+ChY{ zZ8%>zNbEQ!v}qe%;V-?E5`?GkZjO~Wd324sU2{vr`{2uOKR5q~&<% zkGTCbxM4)iuR{mi!B9f5b1jZ*fz<8VFQVHWgC99UumToIre|-iLXB1$gFYtPs1MM? z+h@mn$u?%7Y#!|>*6 zOW*i*vPw$xt_aO4E~kp~`y*&iKfEtK4?Hhqa*MxMaQM4@W)9tVX1!vZbhaXt@ZblbhDf}_^xe;ee?|eR{HQh&hL!APFHhfu!rv`CA(4cOOTfWn) zHS@8rGkbsD1y==r)&zrw2kT3B@_sQ;jrm>~MMBZuD|C@BRKLSN^@T3cj&?I~&nKQm zoFD2?yu58-CkBOIZ_$Q3&=2*FQ)vUAreppFOa>4S(+)r7hCO&Ed3|3RL7tdX@m?5r zH_`0oR}8$QZ@)Lzj}s2P0|lM;Z^oH=F{=i;FuJZizdu2?ez0d7Z}DJXAcG(`XBb)T zZ_|i+y%Kr>KGzNf+oA%q)o3#}3Wq-5(OWxuP(P?p;fUXS;6Jec`LTO^Ln(k?*Yr8B zKh&Sy;pF;{J{S!h((}a&@#IFDGv|_f%=9~d!`7b>Oyuc#Jd<=`3<148v<+gW<3sl_ z_-cnA2>ATtfsGzLF~D#Szfj<5+T6^3MzlF}Zi>gs{(1;-*uyX8Rv)|vdA9S`=l87O z{u{@D|F4B^%=epvH|ku218yG^n|9a~1J>Nd+w5R-+FXr8PuASZTe#);($xp^2j@>u zviqmMLqO7_i>o<%AuqispALjs?>irY>u-4X!TesFYs8?BL(#Wj7mLt0YQU!te~W(T zxk?#9==p3rl>1X&Lal#@j{``q`M^$K>(JR6LnUZ&pvny zevi4X_xIboz>!zq?7k=CJco85_*=%HXF@xXN?lf+&-^tX-Jn-~7`%AQsLuw3d!rvGN}t9g&HuQiyG*iYeb z{nr<*!SSql|MH#$A7cLlTAMeRjWEwPOfJa7(_UU6e8MJ}ALNO9KzvX;_Iu|ACXWW; zxy-uf=N*K=_ZYESa#6O;qXO-$93R7aq~AsE$4z4q!TH#YossTRH&H4l$LRgL)Ai4% zVq10O;3o82<>8u6yJD^&@!Q46e?Le^K-rYd&5dkLKXE*F(O$sroc$^1Bknu=SD4@b z!7%N57eHyp?&W+!$kFb0@448$-kfAT!6U2X9NhB=`7)y8E?MmN3y(Fyo3aj%zs(tVrjWhcXnOrlRYwxsgFQ>?454J^ z!>pnIy^Qrlx7N;GbFtEoT(1An(R%Si9*g`->Qb^NEtT|6J$q8O$=j|o^$z)jEKJ3! zL(S}5q<GIrv+uYjb>bSSu+p%;m;b;7{2KgJ*0r*B4tW~bX zUJp;mz2gN3mvS{ zwjka~#?Gy@PyGQ0>N|9yipm7?Mm6lrN_=l5$T4j^#|#vLMT!fQmTf{~oqUDe z`_`)@{y=4DIi1@g44*u#Z)oMCU#rESV~94cmvU6tqJU(U7w??7Z%{kYvC>?jsWqV=t(*cY%p(Ueftg zqIx=jx+6ml${`F1r6b4fjFnyaN&BM^tc|X}WO8`31gnu`MPSYLTS&}JueeIBE-LJgnpBkH z?rm<&onB7iS*@@f6fU?(vttiB~-;R4%$~Y9G4u8 zw2~qv-913zgER=zEh$|BqZtUONJ|fp?(W`18b)^w5hgvD;OPIp=l46m|Jga)vz=%6 zz0ZAazVE%y&9$tcC^c#oG(2K;H69%uOIB#CEfZ_v;BM|n{}a3VcqYlCbo6*BxZT{d zWjRzgSN{9*QNY4!l6rFcE*09__;t&3mZU*{z*@H6*L$iGh6#y1#VoP1Fc)x>N4oh1PWQaNJbp z>vQ#oRq-@`{F{GpFi!Lt+uJ*!pN4|tIZ!S0mHu_AWpnuV(6+XXg6j*9TV$3(5V!pKX>DCX$S_?X^!I-tRuVVO(3Ktv^7AtV?C45!wmL z8jf@H&TKoBTY5AQSb=lCThz|V37pJswoJ2`R>-*b8JFj}>E}AzjF5dB`aX$#rlZz9 z{%RE#T$(?W!IvJ*@z?&naT3}6CXM7%$G2lZPwL+kC@SZt{0ow<(Fbo=o~^fIF!`eP z@+&}|E{^Xon~Fa&^O2MLVixMd`+dPU(d&~!?B6L(<4@|n@8xx zA?|P3yeorFHI0epdV9~DCc)1&_V9{Dd8UoYD*1-fUE5cjfFOyVUrauIVW1n82^vP% zmIVmy+9qZMYB+4vnEUnpKzn(Y(qd;i!GTiG}%KVm@;xh4=5+SYqn`0n6#{H~#UEZv3Ht5*pS`H`≥;&Ns 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 E0l$KK9smFU literal 0 HcmV?d00001 diff --git a/dist/index.html b/dist/index.html index 14b5948..d7e4426 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,17 +1,17 @@ - - - - - - Spine粒子编辑器 + + + + + + Spine粒子编辑器 - - - - -
- - + + + + + +
+ + diff --git a/public/downloads/connector/SpineParticleConnector-macos-arm64.zip b/public/downloads/connector/SpineParticleConnector-macos-arm64.zip deleted file mode 100644 index 83251e75bb318616f57dd4741cc277200709bf38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118639 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 OZg%hHERk*^z5WH!*4q96 diff --git a/public/downloads/connector/SpineParticleConnector-macos-universal.zip b/public/downloads/connector/SpineParticleConnector-macos-universal.zip new file mode 100644 index 0000000000000000000000000000000000000000..3d0b9698e30ba742bd2aade31339119b6030ecb4 GIT binary patch literal 261630 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

NKO`?cf91^4jlGDj52*~RVp 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≈k12;Fn;hVM12cPQd0oM9cByL_ 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≥;&Ns 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 E0l$KK9smFU literal 0 HcmV?d00001 diff --git a/release/connector/macos-arm64/Spine粒子连接器.app/Contents/Info.plist b/release/connector/macos-arm64/Spine粒子连接器.app/Contents/Info.plist deleted file mode 100644 index 29633a2..0000000 --- a/release/connector/macos-arm64/Spine粒子连接器.app/Contents/Info.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - -CFBundleDisplayNameSpine粒子连接器 -CFBundleExecutableSpineParticleConnector -CFBundleIdentifiercom.spineparticle.connector -CFBundleInfoDictionaryVersion6.0 -CFBundleNameSpine粒子连接器 -CFBundlePackageTypeAPPL -CFBundleShortVersionString2.0.0 -CFBundleVersion2.0.0 -LSMinimumSystemVersion11.0 -NSHighResolutionCapable - diff --git a/release/connector/macos-arm64/Spine粒子连接器.app/Contents/MacOS/SpineParticleConnector b/release/connector/macos-arm64/Spine粒子连接器.app/Contents/MacOS/SpineParticleConnector deleted file mode 100755 index b53b900db6b470f46415931b88ad25d8462d27ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347800 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

_@=HtI0wh>a##S6h!?f%!1ktwhh<*N&a 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 diff --git a/release/connector/macos-arm64/使用说明.md b/release/connector/macos-arm64/使用说明.md deleted file mode 100644 index 8885558..0000000 --- a/release/connector/macos-arm64/使用说明.md +++ /dev/null @@ -1,21 +0,0 @@ -# Spine粒子连接器(桌面版) - -连接器是原生桌面应用,**无需安装 Node.js**。 - -## 使用 - -1. 正常安装并激活 Spine;连接器不会包含或替代 Spine 软件。 -2. macOS 打开“Spine粒子连接器.app”;Windows 打开“Spine粒子连接器.exe”。打开应用即启动连接器。 -3. 回到网页,等待导出区域显示“连接器可用 · Spine 已就绪”。 -4. 首次使用生产网站时,点击网页中的“授权当前网站”,在打开的本机页面确认完整域名后点击“允许此网站”。 -5. 可在应用内点击“断开连接”,或直接关闭应用来停止连接器。 - -若状态显示“未找到 Spine”,可在路径输入框中直接输入路径,或点击“选择 Spine.com”。Windows 请选择 `Spine.com`;macOS 请选择 `Spine.app/Contents/MacOS/Spine`。保存后下次启动仍然有效;“恢复自动检测”会清除手动路径。 - -连接器仅监听 `127.0.0.1:27843`,不会对局域网或公网开放。授权按完整来源区分,例如 `https://editor.example.com` 与 `https://editor.example.com:8443` 需要分别授权。 - -## 分发说明 - -- macOS 请完整分发 `.app`;Windows 可直接分发 `.exe` 和本说明。 -- macOS 版本只适用于其标记的 CPU 架构(Apple Silicon 或 Intel)。Windows 版本也需在 Windows 上构建。 -- 面向其他 Mac 分发时,建议使用 Apple Developer ID 签名并公证,避免 Gatekeeper 提示。 diff --git a/release/connector/连接器.zip b/release/connector/连接器.zip deleted file mode 100644 index 632357fba52dbd3e37e15126607ea53d78107fb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120435 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

8_=oV@St1_Xz&|q{+$i7e)ZGO`xm?DXYCF%H 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%0Dn>}N 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 diff --git a/src/views/HelpDialog.vue b/src/views/HelpDialog.vue index 6656829..b2965a4 100644 --- a/src/views/HelpDialog.vue +++ b/src/views/HelpDialog.vue @@ -179,7 +179,7 @@

前置
电脑已安装并激活 Spine;并已启动桌面版连接器APP。
网页端
导出区状态显示“连接器可用 · Spine 已就绪”后,点击“导出 .spine 包”。
首次授权
生产网站首次连接会显示“授权当前网站”;点击后在本机确认页核对完整来源(协议 + 域名 + 端口),再点“允许此网站”。授权一次后本机会保存白名单。本地 127.0.0.1:5173 默认允许。