modern-canvas 0.4.26 → 0.4.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(g,et){typeof exports=="object"&&typeof module<"u"?et(exports):typeof define=="function"&&define.amd?define(["exports"],et):(g=typeof globalThis<"u"?globalThis:g||self,et(g.modernCanvas={}))})(this,function(g){"use strict";var CB=Object.defineProperty;var QB=(g,et,Lt)=>et in g?CB(g,et,{enumerable:!0,configurable:!0,writable:!0,value:Lt}):g[et]=Lt;var u=(g,et,Lt)=>QB(g,typeof et!="symbol"?et+"":et,Lt);var MA,IA;var et=typeof document<"u"?document.currentScript:null;const Lt=Math.PI,tt=Lt*2;let ph=0;function Zn(r){var A;return((A=r==null?void 0:r.__SPECTOR_Object_TAG)==null?void 0:A.id)??++ph}function fs(r){return!(r&r-1)&&!!r}const Ch=/([\w-]+)\((.+?)\)/g,Qh=/[^,]+/g,yh=/([-e.\d]+)(.*)/;function ds(r){return Array.isArray(r)?r.map(A=>({name:A.name,args:A.args.map(e=>({...e,normalizedIntValue:e.normalizedDefaultIntValue}))})):{...r,normalizedIntValue:r.normalizedDefaultIntValue}}function fi(r,A,e={}){const t=di(A,e);return t.length?t:$n(r,A,e)}function di(r,A={}){const e=[];let t;for(;(t=Ch.exec(r))!==null;){const[,i,s]=t;i&&e.push({name:i,args:mh(i,s,A)})}return e}function mh(r,A,e={}){const t=[];let i,s=0;for(;(i=Qh.exec(A))!==null;)t.push($n(r,i[0],{...e,index:s++}));return t}function $n(r,A,e={}){const{width:t=1,height:i=1,index:s=0}=e,n=A.match(yh),o={unit:(n==null?void 0:n[2])??null,value:A,intValue:Number(n==null?void 0:n[1]),normalizedIntValue:0,normalizedDefaultIntValue:0};switch(r){case"scale":case"scaleX":case"scaleY":case"scale3d":o.normalizedDefaultIntValue=1;break}switch(o.unit){case"%":o.normalizedIntValue=o.intValue/100;break;case"rad":o.normalizedIntValue=o.intValue/tt;break;case"deg":o.normalizedIntValue=o.intValue/360;break;case"px":switch(s){case 0:o.normalizedIntValue=o.intValue/t;break;case 1:o.normalizedIntValue=o.intValue/i;break}break;case"turn":case"em":case"rem":default:o.normalizedIntValue=o.intValue;break}return o}const eo="WebGL2RenderingContext"in globalThis,to="ImageBitmap"in globalThis,Ao="ResizeObserver"in globalThis,PA="PointerEvent"in globalThis,io="WheelEvent"in globalThis,wh="MouseEvent"in globalThis,Gt="ontouchstart"in globalThis,ro="onclick"in globalThis,Is="createImageBitmap"in globalThis,Bs="AudioContext"in globalThis,Es="webkitAudioContext"in globalThis,ps="OfflineAudioContext"in globalThis,so="webkitOfflineAudioContext"in globalThis,no=Bs||Es,Ii=typeof window<"u",Cs=globalThis.devicePixelRatio||1,Qs=r=>r!==null&&typeof r=="object"&&r.nodeType===1,oo=r=>Qs(r)&&r.tagName==="VIDEO",vh=r=>Qs(r)&&r.tagName==="IMG";function ao(r){return typeof r=="object"&&r!==null&&r.nodeType===1&&r.tagName==="CANVAS"}function lo(r){return eo&&r instanceof globalThis.WebGL2RenderingContext}function ho(){if(Ii)return globalThis.document.createElement("canvas")}function go(r,A=globalThis.location){if(r.startsWith("data:"))return"";A=A||globalThis.location;const e=new URL(r,document.baseURI);return e.hostname!==A.hostname||e.port!==A.port||e.protocol!==A.protocol?"anonymous":""}function co(r,A,e){e===null&&!A.startsWith("data:")?r.crossOrigin=go(A):e!==!1&&(r.crossOrigin=typeof e=="string"?e:"anonymous")}class UA{constructor(){u(this,"_map",new WeakMap)}_toRaw(A){if(A&&typeof A=="object"){const e=A.__v_raw;e&&(A=this._toRaw(e))}return A}delete(A){return this._map.delete(this._toRaw(A))}get(A){return this._map.get(this._toRaw(A))}has(A){return this._map.has(this._toRaw(A))}set(A,e){return this._map.set(this._toRaw(A),this._toRaw(e)),this}}const uo=new UA;function ir(r){let A=uo.get(r);if(!A){const e=Object.getPrototypeOf(r);A=new Map(e?ir(e):void 0),uo.set(r,A)}return A}function Bi(r,A,e={}){ir(r).set(A,e);const{default:t,alias:i}=e;let s=Object.getOwnPropertyDescriptor(r.prototype,A);if(!s){const n=i??Symbol.for(String(A));s={get(){return this[n]},set(o){this[n]=o}}}Object.defineProperty(r.prototype,A,{get(){var n;return((n=s.get)==null?void 0:n.call(this))??t},set(n){var a,l,h;const o=((a=s.get)==null?void 0:a.call(this))??t;(l=s.set)==null||l.call(this,n),(h=this.requestUpdate)==null||h.call(this,A,o,e)},configurable:!0,enumerable:!0})}function M(r){return function(A,e){Bi(A.constructor,e,r)}}const rr=new Map;function ee(r,A){return function(e){Object.defineProperty(e.prototype,"tag",{value:r,enumerable:!0,configurable:!0}),A&&Object.keys(A).forEach(t=>{Bi(e,t,{default:A[t]})}),rr.set(r,e)}}function Be(r){return M({...r,protected:!0})}function _h(r="node",A={}){const e=rr.get(r);if(!e)throw new Error(`Failed to createNode, tag: ${r}`);return new e().setProperties(A)}class xe{static get currentTime(){return this._currentTime}static get elapsed(){return this._elapsed}static on(A,e={}){const{sort:t=0,once:i=!1}=e;this._queue[t]||(this._queue[t]=[]),this._queue[t].push({cb:A,once:i})}static off(A,e={}){const{sort:t=0}=e,i=this._queue[t];if(!i)return;const s=[];for(let n=i.length,o=0;o<n;o++){const a=i[o];a.cb!==A&&s.push(a)}s.length?this._queue[t]=s:this._queue.splice(t,1)}static start(){"requestAnimationFrame"in globalThis&&(this._currentTime=performance.now(),this._requestId=requestAnimationFrame(A=>this._update(A)))}static stop(){this._requestId&&(cancelAnimationFrame(this._requestId),this._requestId=void 0)}static _update(A){this._elapsed=A-this._currentTime,this._currentTime=A,this._requestId=requestAnimationFrame(e=>this._update(e)),this._performUpdate()}static _performUpdate(){const A=this._queue,e=[];for(let t=A.length,i=t;i>=0;i--){const s=A[i];if(!s)continue;const n=[];for(let o=s.length,a=0;a<o;a++){const l=s[a];try{l.cb()}catch(h){console.warn(h)}l.once||n.push(l)}n.length&&(e[i]=n)}this._queue=e}}u(xe,"_queue",[]),u(xe,"_currentTime",0),u(xe,"_elapsed",0),u(xe,"_requestId"),xe.start();async function ys(r){return new Promise(A=>{xe.on(()=>{r==null||r(),A()},{sort:1,once:!0})})}let Ot=class{constructor(){u(this,"eventListeners",new Map)}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(A){return this.eventListeners.has(A)}on(A,e,t){const i={value:e,options:t},s=this.eventListeners.get(A);return s?Array.isArray(s)?s.push(i):this.eventListeners.set(A,[s,i]):this.eventListeners.set(A,i),this}once(A,e){return this.on(A,e,{once:!0})}off(A,e,t){var s,n;if(!e)return this.eventListeners.delete(A),this;const i=this.eventListeners.get(A);if(!i)return this;if(Array.isArray(i)){const o=[];for(let a=0,l=i.length;a<l;a++){const h=i[a];(h.value!==e||typeof t=="object"&&(t!=null&&t.once)&&(typeof h.options=="boolean"||!((s=h.options)!=null&&s.once)))&&o.push(h)}o.length?this.eventListeners.set(A,o.length===1?o[0]:o):this.eventListeners.delete(A)}else i.value===e&&(typeof t=="boolean"||!(t!=null&&t.once)||typeof i.options=="boolean"||(n=i.options)!=null&&n.once)&&this.eventListeners.delete(A);return this}emit(A,...e){var i,s;const t=this.eventListeners.get(A);if(t){if(Array.isArray(t))for(let n=t.length,o=0;o<n;o++){const a=t[o];typeof a.options=="object"&&((i=a.options)!=null&&i.once)&&this.off(A,a.value,a.options),a.value.apply(this,e)}else typeof t.options=="object"&&((s=t.options)!=null&&s.once)&&this.off(A,t.value,t.options),t.value.apply(this,e);return!0}else return!1}},Dh=0;class Ht extends Ot{constructor(){super(...arguments);u(this,"instanceId",++Dh);u(this,"_defaultProperties");u(this,"_updatedProperties",new Map);u(this,"_changedProperties",new Set);u(this,"_updatingPromise",Promise.resolve());u(this,"_updating",!1)}is(e){return!!(e&&this.instanceId===e.instanceId)}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await ys(),this._updating&&(this.update(),this._updating=!1)}update(){this._update(this._updatedProperties),this._updatedProperties=new Map}_update(e){}_updateProperty(e,t,i,s){}isDirty(e){return this._updatedProperties.has(e)}getPropertyDeclarations(){return ir(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}getDefaultProperties(){if(!this._defaultProperties){this._defaultProperties={};for(const[e,t]of this.getPropertyDeclarations())!t.protected&&!t.alias&&(this._defaultProperties[e]=t.default)}return this._defaultProperties}getProperty(e){return this[e]}setProperty(e,t){return this[e]=t,this}getProperties(e){const t={};for(const[i,s]of this.getPropertyDeclarations())!s.protected&&!s.alias&&(!e||e.includes(i))&&(t[i]=this.getProperty(i));return t}setProperties(e){if(e)for(const[t]of this.getPropertyDeclarations())t in e&&this.setProperty(t,e[t]);return this}requestUpdate(e,t,i){if(e!==void 0){const s=this[e];if(!Object.is(s,t))this._updatedProperties.set(e,t),this._changedProperties.add(e),i??(i=this.getPropertyDeclaration(e)),this._updateProperty(e,s,t,i),this.emit("updateProperty",e,s,t,i);else return}this._updating||(this._updatingPromise=this._enqueueUpdate())}toJSON(){return this.getProperties(Array.from(this._changedProperties))}clone(){return new this.constructor(this.toJSON())}free(){this.removeAllListeners()}}class fo extends Ht{}class sr{constructor(){u(this,"bubbles",!0);u(this,"cancelable",!1);u(this,"which");u(this,"cancelBubble",!0);u(this,"returnValue");u(this,"srcElement");u(this,"composed",!1);u(this,"currentTarget");u(this,"defaultPrevented",!1);u(this,"eventPhase",sr.prototype.NONE);u(this,"isTrusted");u(this,"target");u(this,"timeStamp");u(this,"type");u(this,"nativeEvent");u(this,"originalEvent");u(this,"propagationStopped",!1);u(this,"propagationImmediatelyStopped",!1);u(this,"path");u(this,"detail");u(this,"view");u(this,"layer",{x:0,y:0});u(this,"page",{x:0,y:0});u(this,"NONE",0);u(this,"CAPTURING_PHASE",1);u(this,"AT_TARGET",2);u(this,"BUBBLING_PHASE",3)}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}initEvent(...A){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(...A){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}composedPath(){return this.path}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}class ms extends sr{constructor(){super(...arguments);u(this,"altKey");u(this,"button");u(this,"buttons");u(this,"ctrlKey");u(this,"metaKey");u(this,"relatedTarget");u(this,"shiftKey");u(this,"client",{x:0,y:0});u(this,"movement",{x:0,y:0});u(this,"offset",{x:0,y:0});u(this,"global",{x:0,y:0});u(this,"screen",{x:0,y:0})}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getModifierState(e){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(e)}initMouseEvent(...e){throw new Error("Method not implemented.")}}class Io extends ms{constructor(){super(...arguments);u(this,"width",0);u(this,"height",0);u(this,"isPrimary",!1);u(this,"pointerType");u(this,"pressure");u(this,"tangentialPressure");u(this,"tiltX");u(this,"tiltY");u(this,"twist")}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class Ei extends ms{constructor(){super(...arguments);u(this,"deltaMode");u(this,"deltaX");u(this,"deltaY");u(this,"deltaZ");u(this,"DOM_DELTA_PIXEL",0);u(this,"DOM_DELTA_LINE",1);u(this,"DOM_DELTA_PAGE",2)}}u(Ei,"DOM_DELTA_PIXEL",0),u(Ei,"DOM_DELTA_LINE",1),u(Ei,"DOM_DELTA_PAGE",2);const bh={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"};class Bo extends Ot{constructor(){super(...arguments);u(this,"target");u(this,"cursor","default");u(this,"cursorStyles",{default:"inherit",pointer:"pointer"});u(this,"setuped",!1);u(this,"event");u(this,"enableMoveEvent",!0);u(this,"enableWheelEvent",!0);u(this,"enableClickEvent",!0);u(this,"onPointerDown",e=>{if(Gt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointerdown",this.event=this.clonePointerEvent(t[i]));this.setCursor(this.cursor)});u(this,"onPointerOver",e=>{if(!this.enableClickEvent||Gt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointerover",this.event=this.clonePointerEvent(t[i]))});u(this,"onPointerMove",e=>{if(!this.enableMoveEvent||Gt&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("pointermove",this.event=this.clonePointerEvent(t[i]))});u(this,"onPointerUp",e=>{if(!this.enableClickEvent||Gt&&e.pointerType==="touch")return;let t=e.target;e.composedPath&&e.composedPath().length>0&&(t=e.composedPath()[0]);const i=t!==this.target?"outside":"",s=this.normalize(e);for(let n=0,o=s.length;n<o;n++){const a=this.clonePointerEvent(s[n]);a.type+=i,this.emit("pointerup",this.event=a)}});u(this,"onWheel",e=>{if(!this.enableWheelEvent)return;const t=this.normalize(e);for(let i=0,s=t.length;i<s;i++)this.emit("wheel",this.event=this.cloneWheelEvent(t[i]))})}setTarget(e){this.removeEventListeners(),this.target=e,this.addEventListeners()}removeEventListeners(){if(!this.setuped||!this.target)return;const e=this.target.style;globalThis.navigator.msPointerEnabled?(e.msContentZooming="",e.msTouchAction=""):PA&&(e.touchAction=""),PA?(this.target.removeEventListener("pointerdown",this.onPointerDown),this.target.removeEventListener("pointerleave",this.onPointerOver),this.target.removeEventListener("pointerover",this.onPointerOver),this.target.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.target.ownerDocument.removeEventListener("pointerup",this.onPointerUp)):(this.target.removeEventListener("mousedown",this.onPointerDown),this.target.removeEventListener("mouseout",this.onPointerOver),this.target.removeEventListener("mouseover",this.onPointerOver),this.target.ownerDocument.removeEventListener("mousemove",this.onPointerMove),this.target.ownerDocument.removeEventListener("mouseup",this.onPointerUp)),Gt&&(this.target.removeEventListener("touchstart",this.onPointerDown),this.target.removeEventListener("touchmove",this.onPointerMove),this.target.removeEventListener("touchend",this.onPointerUp)),this.target.removeEventListener("wheel",this.onWheel),this.target=void 0,this.setuped=!1}addEventListeners(){if(this.setuped||!this.target)return;const e=this.target.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="none",e.msTouchAction="none"):PA&&(e.touchAction="none")),PA?(this.target.addEventListener("pointerdown",this.onPointerDown),this.target.addEventListener("pointerleave",this.onPointerOver),this.target.addEventListener("pointerover",this.onPointerOver),this.target.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.target.ownerDocument.addEventListener("pointerup",this.onPointerUp)):(this.target.addEventListener("mousedown",this.onPointerDown),this.target.addEventListener("mouseout",this.onPointerOver),this.target.addEventListener("mouseover",this.onPointerOver),this.target.ownerDocument.addEventListener("mousemove",this.onPointerMove),this.target.ownerDocument.addEventListener("mouseup",this.onPointerUp)),Gt&&(this.target.addEventListener("touchstart",this.onPointerDown),this.target.addEventListener("touchmove",this.onPointerMove),this.target.addEventListener("touchend",this.onPointerUp)),this.target.addEventListener("wheel",this.onWheel),this.setuped=!0}normalize(e){const t=[];if(Gt&&e instanceof globalThis.TouchEvent)for(let i=0,s=e.changedTouches.length;i<s;i++){const n=e.changedTouches[i];typeof n.button>"u"&&(n.button=0),typeof n.buttons>"u"&&(n.buttons=1),typeof n.isPrimary>"u"&&(n.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof n.width>"u"&&(n.width=n.radiusX||1),typeof n.height>"u"&&(n.height=n.radiusY||1),typeof n.tiltX>"u"&&(n.tiltX=0),typeof n.tiltY>"u"&&(n.tiltY=0),typeof n.pointerType>"u"&&(n.pointerType="touch"),typeof n.pointerId>"u"&&(n.pointerId=n.identifier||0),typeof n.pressure>"u"&&(n.pressure=n.force||.5),typeof n.twist>"u"&&(n.twist=0),typeof n.tangentialPressure>"u"&&(n.tangentialPressure=0),typeof n.layerX>"u"&&(n.layerX=n.offsetX=n.clientX),typeof n.layerY>"u"&&(n.layerY=n.offsetY=n.clientY),n.type=e.type,t.push(n)}else if(io&&e instanceof globalThis.WheelEvent)t.push(e);else if(PA&&e instanceof globalThis.PointerEvent)t.push(e);else{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=1),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),t.push(i)}return t}cloneWheelEvent(e){const t=new Ei;return this.copyMouseEvent(t,e),t.wheelDeltaY=e.wheelDeltaY,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.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.nativeEvent=e,t.type=e.type,t}clonePointerEvent(e){const t=new Io;return t.originalEvent=null,t.nativeEvent=e,t.pointerId=e.pointerId,t.width=e.width,t.height=e.height,t.isPrimary=e.isPrimary,t.pointerType=e.pointerType,t.pressure=e.pressure,t.tangentialPressure=e.tangentialPressure,t.tiltX=e.tiltX,t.tiltY=e.tiltY,t.twist=e.twist,t.isTrusted=e.isTrusted,this.copyMouseEvent(t,e),this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.type==="pointerleave"?t.type="pointerout":t.type.startsWith("mouse")?t.type=t.type.replace("mouse","pointer"):t.type.startsWith("touch")&&(t.type=bh[t.type]||t.type),t}copyMouseEvent(e,t){e.preventDefault=t.preventDefault.bind(t),e.stopPropagation=t.stopPropagation.bind(t),e.isTrusted=t.isTrusted,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}setCursor(e){if(!this.target||(e=e||"default",this.cursor===e))return;this.cursor=e;const t=!(globalThis.OffscreenCanvas&&this.target instanceof OffscreenCanvas),i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.target.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.target.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.target.style.cursor=e)}mapPositionToPoint(e,t,i){if(!this.target)return;const s=Number(this.target.getAttribute("width"))||0,n=Number(this.target.getAttribute("height"))||0,o=Number(this.target.getAttribute("data-pixel-ratio"))||1,a=this.target.isConnected?this.target.getBoundingClientRect():{width:s,height:n,left:0,top:0},l=1/o;e.x=(t-a.left)*(s/a.width)*l,e.y=(i-a.top)*(n/a.height)*l}}class Jt extends fo{}var xh={grad:.9,turn:360,rad:360/(2*Math.PI)},Kt=function(r){return typeof r=="string"?r.length>0:typeof r=="number"},Ue=function(r,A,e){return A===void 0&&(A=0),e===void 0&&(e=Math.pow(10,A)),Math.round(e*r)/e+0},ft=function(r,A,e){return A===void 0&&(A=0),e===void 0&&(e=1),r>e?e:r>A?r:A},Eo=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},po=function(r){return{r:ft(r.r,0,255),g:ft(r.g,0,255),b:ft(r.b,0,255),a:ft(r.a)}},ws=function(r){return{r:Ue(r.r),g:Ue(r.g),b:Ue(r.b),a:Ue(r.a,3)}},Sh=/^#([0-9a-f]{3,8})$/i,nr=function(r){var A=r.toString(16);return A.length<2?"0"+A:A},Co=function(r){var A=r.r,e=r.g,t=r.b,i=r.a,s=Math.max(A,e,t),n=s-Math.min(A,e,t),o=n?s===A?(e-t)/n:s===e?2+(t-A)/n:4+(A-e)/n:0;return{h:60*(o<0?o+6:o),s:s?n/s*100:0,v:s/255*100,a:i}},Qo=function(r){var A=r.h,e=r.s,t=r.v,i=r.a;A=A/360*6,e/=100,t/=100;var s=Math.floor(A),n=t*(1-e),o=t*(1-(A-s)*e),a=t*(1-(1-A+s)*e),l=s%6;return{r:255*[t,o,n,n,a,t][l],g:255*[a,t,t,o,n,n][l],b:255*[n,n,a,t,t,o][l],a:i}},yo=function(r){return{h:Eo(r.h),s:ft(r.s,0,100),l:ft(r.l,0,100),a:ft(r.a)}},mo=function(r){return{h:Ue(r.h),s:Ue(r.s),l:Ue(r.l),a:Ue(r.a,3)}},wo=function(r){return Qo((e=(A=r).s,{h:A.h,s:(e*=((t=A.l)<50?t:100-t)/100)>0?2*e/(t+e)*100:0,v:t+e,a:A.a}));var A,e,t},pi=function(r){return{h:(A=Co(r)).h,s:(i=(200-(e=A.s))*(t=A.v)/100)>0&&i<200?e*t/100/(i<=100?i:200-i)*100:0,l:i/2,a:A.a};var A,e,t,i},Mh=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Rh=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ph=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Uh=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,vs={string:[[function(r){var A=Sh.exec(r);return A?(r=A[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:r.length===4?Ue(parseInt(r[3]+r[3],16)/255,2):1}:r.length===6||r.length===8?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:r.length===8?Ue(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var A=Ph.exec(r)||Uh.exec(r);return A?A[2]!==A[4]||A[4]!==A[6]?null:po({r:Number(A[1])/(A[2]?100/255:1),g:Number(A[3])/(A[4]?100/255:1),b:Number(A[5])/(A[6]?100/255:1),a:A[7]===void 0?1:Number(A[7])/(A[8]?100:1)}):null},"rgb"],[function(r){var A=Mh.exec(r)||Rh.exec(r);if(!A)return null;var e,t,i=yo({h:(e=A[1],t=A[2],t===void 0&&(t="deg"),Number(e)*(xh[t]||1)),s:Number(A[3]),l:Number(A[4]),a:A[5]===void 0?1:Number(A[5])/(A[6]?100:1)});return wo(i)},"hsl"]],object:[[function(r){var A=r.r,e=r.g,t=r.b,i=r.a,s=i===void 0?1:i;return Kt(A)&&Kt(e)&&Kt(t)?po({r:Number(A),g:Number(e),b:Number(t),a:Number(s)}):null},"rgb"],[function(r){var A=r.h,e=r.s,t=r.l,i=r.a,s=i===void 0?1:i;if(!Kt(A)||!Kt(e)||!Kt(t))return null;var n=yo({h:Number(A),s:Number(e),l:Number(t),a:Number(s)});return wo(n)},"hsl"],[function(r){var A=r.h,e=r.s,t=r.v,i=r.a,s=i===void 0?1:i;if(!Kt(A)||!Kt(e)||!Kt(t))return null;var n=function(o){return{h:Eo(o.h),s:ft(o.s,0,100),v:ft(o.v,0,100),a:ft(o.a)}}({h:Number(A),s:Number(e),v:Number(t),a:Number(s)});return Qo(n)},"hsv"]]},vo=function(r,A){for(var e=0;e<A.length;e++){var t=A[e][0](r);if(t)return[t,A[e][1]]}return[null,void 0]},kh=function(r){return typeof r=="string"?vo(r.trim(),vs.string):typeof r=="object"&&r!==null?vo(r,vs.object):[null,void 0]},_s=function(r,A){var e=pi(r);return{h:e.h,s:ft(e.s+100*A,0,100),l:e.l,a:e.a}},Ds=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},_o=function(r,A){var e=pi(r);return{h:e.h,s:e.s,l:ft(e.l+100*A,0,100),a:e.a}},bs=function(){function r(A){this.parsed=kh(A)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return this.parsed!==null},r.prototype.brightness=function(){return Ue(Ds(this.rgba),2)},r.prototype.isDark=function(){return Ds(this.rgba)<.5},r.prototype.isLight=function(){return Ds(this.rgba)>=.5},r.prototype.toHex=function(){return A=ws(this.rgba),e=A.r,t=A.g,i=A.b,n=(s=A.a)<1?nr(Ue(255*s)):"","#"+nr(e)+nr(t)+nr(i)+n;var A,e,t,i,s,n},r.prototype.toRgb=function(){return ws(this.rgba)},r.prototype.toRgbString=function(){return A=ws(this.rgba),e=A.r,t=A.g,i=A.b,(s=A.a)<1?"rgba("+e+", "+t+", "+i+", "+s+")":"rgb("+e+", "+t+", "+i+")";var A,e,t,i,s},r.prototype.toHsl=function(){return mo(pi(this.rgba))},r.prototype.toHslString=function(){return A=mo(pi(this.rgba)),e=A.h,t=A.s,i=A.l,(s=A.a)<1?"hsla("+e+", "+t+"%, "+i+"%, "+s+")":"hsl("+e+", "+t+"%, "+i+"%)";var A,e,t,i,s},r.prototype.toHsv=function(){return A=Co(this.rgba),{h:Ue(A.h),s:Ue(A.s),v:Ue(A.v),a:Ue(A.a,3)};var A},r.prototype.invert=function(){return Ct({r:255-(A=this.rgba).r,g:255-A.g,b:255-A.b,a:A.a});var A},r.prototype.saturate=function(A){return A===void 0&&(A=.1),Ct(_s(this.rgba,A))},r.prototype.desaturate=function(A){return A===void 0&&(A=.1),Ct(_s(this.rgba,-A))},r.prototype.grayscale=function(){return Ct(_s(this.rgba,-1))},r.prototype.lighten=function(A){return A===void 0&&(A=.1),Ct(_o(this.rgba,A))},r.prototype.darken=function(A){return A===void 0&&(A=.1),Ct(_o(this.rgba,-A))},r.prototype.rotate=function(A){return A===void 0&&(A=15),this.hue(this.hue()+A)},r.prototype.alpha=function(A){return typeof A=="number"?Ct({r:(e=this.rgba).r,g:e.g,b:e.b,a:A}):Ue(this.rgba.a,3);var e},r.prototype.hue=function(A){var e=pi(this.rgba);return typeof A=="number"?Ct({h:A,s:e.s,l:e.l,a:e.a}):Ue(e.h)},r.prototype.isEqual=function(A){return this.toHex()===Ct(A).toHex()},r}(),Ct=function(r){return r instanceof bs?r:new bs(r)},Do=[],Nh=function(r){r.forEach(function(A){Do.indexOf(A)<0&&(A(bs,vs),Do.push(A))})};function Fh(r,A){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},t={};for(var i in e)t[e[i]]=i;var s={};r.prototype.toName=function(n){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,a,l=t[this.toHex()];if(l)return l;if(n!=null&&n.closest){var h=this.toRgb(),c=1/0,f="black";if(!s.length)for(var d in e)s[d]=new r(e[d]).toRgb();for(var I in e){var C=(o=h,a=s[I],Math.pow(o.r-a.r,2)+Math.pow(o.g-a.g,2)+Math.pow(o.b-a.b,2));C<c&&(c=C,f=I)}return f}},A.string.push([function(n){var o=n.toLowerCase(),a=o==="transparent"?"#0000":e[o];return a?new r(a).toRgb():null},"name"])}Nh([Fh]);class Yt{get value(){return this._value}set value(A){if(A===void 0||this._value===A)return;this._value=A;let e;typeof A=="number"?e={r:A>>24&255,g:A>>16&255,b:A>>8&255,a:(A&255)/255}:e=A;const t=Ct(e);t.isValid()?this._colord=t:(this._colord=Ct("#000000"),console.warn(`Unable to convert color ${A}`))}get r8(){return this._colord.rgba.r}get g8(){return this._colord.rgba.g}get b8(){return this._colord.rgba.b}get a8(){return this._colord.rgba.a*255&255}get r(){return this.r8/255}get g(){return this.g8/255}get b(){return this.b8/255}get a(){return this._colord.rgba.a}get rgb(){return(this.r8<<16)+(this.g8<<8)+this.b8}get bgr(){return(this.b8<<16)+(this.g8<<8)+this.r8}get abgr(){return(this.a8<<24)+this.bgr}constructor(A=0){this.value=A}toArgb(A=this.a,e=!0){if(A===1)return(255<<24)+this.rgb;if(A===0)return e?0:this.rgb;let t=this.r8,i=this.g8,s=this.b8;return e&&(t=t*A+.5|0,i=i*A+.5|0,s=s*A+.5|0),(A*255<<24)+(t<<16)+(i<<8)+s}toHex(){return this._colord.toHex()}toArray(){return[this.r,this.g,this.b,this.a]}}class Qt extends Ot{constructor(e){super();u(this,"_array",[]);this.dim=e}get length(){return this.dim}_operate(e,t,i){const{dim:s,_array:n}=this;let o;typeof t=="number"?o=Array.from({length:s},()=>t):t instanceof Dt||t instanceof Qt?o=t.toArray():o=t;let a,l=[];if(i?i instanceof Qt?a=i:l=i:a=this,t instanceof Dt){const{cols:h}=t;switch(e){case"*":for(let c=0;c<s;c++){let f=0;for(let d=0;d<s;d++)f+=n[c]*o[d*h+c];l[c]=f}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"+":for(let h=0;h<s;h++)l[h]=n[h]+o[h];break;case"-":for(let h=0;h<s;h++)l[h]=n[h]-o[h];break;case"*":for(let h=0;h<s;h++)l[h]=n[h]*o[h];break;case"/":for(let h=0;h<s;h++)l[h]=n[h]/o[h];break;case"rot":{const h=Math.cos(o[0]),c=Math.sin(o[0]);l[0]=n[0]*h-n[1]*c,l[1]=n[1]*h+n[0]*c;break}case"==":{let h=!0;for(let c=0;c<s;c++)h=h&&n[c]===o[c];return h}case"=":for(let h=0;h<s;h++){const c=o[h];c!==void 0&&(n[h]=c)}return this._onUpdate(n),this.emit("update",n),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Vector'`)}return(a==null?void 0:a.set(l))??l}add(e,t){return this._operate("+",e,t)}sub(e,t){return this._operate("-",e,t)}multiply(e,t){return this._operate("*",e,t)}divide(e,t){return this._operate("/",e,t)}rotate(e){return this._operate("rot",e)}set(e,...t){return t.length&&typeof e=="number"&&(e=[e,...t]),this._operate("=",e)}equals(e){return this._operate("==",e)}copy(e){return this.set(e)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}_onUpdate(e){}toArray(){return this._array.slice()}toName(){return`Vector${this.dim}`}}class Dt extends Ot{constructor(e,t,i){super();u(this,"_array",[]);u(this,"dirtyId",0);this.rows=e,this.cols=t,i?this.set(i):this.identity()}get length(){return this.cols*this.rows}_operate(e,t,i){const{cols:s,rows:n,length:o,_array:a}=this;let l;typeof t=="number"?l=Array.from({length:o},()=>t):t instanceof Qt||t instanceof Dt?l=t.toArray():l=t;let h,c=[];if(i?i instanceof Qt||i instanceof Dt?h=i:c=i:t instanceof Qt?h=new t.constructor:h=this,t instanceof Qt){const{dim:f}=t;switch(e){case"*":for(let d=0;d<f;d++){let I=0;for(let C=0;C<s;C++)C<f&&(I+=a[d*s+C]*(l[C]??0));c[d]=I}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"*":for(let f=0;f<s;f++)for(let d=0;d<n;d++){const I=d*s;let C=0;for(let B=0;B<n;B++){const P=I+B,S=B*s+f;C+=a[P]*(l[S]??0)}c[I+f]=C}break;case"=":for(let f=0;f<o;f++){const d=l[f];d!==void 0&&(a[f]=d)}return this._onUpdate(a),this.emit("update",a),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Matrix2'`)}return(h==null?void 0:h.set(c))??c}identity(){const{cols:e,rows:t}=this,i=[];for(let s=0;s<e;s++)for(let n=0;n<t;n++){const o=n*e,a=s+o;i[a]=n+o===a?1:0}return this.set(i)}set(e){return this._operate("=",e)}copy(e){return this.set(e)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}multiply(e,t){return this._operate("*",e,t)}_onUpdate(e){this.dirtyId++}toArray(e=!1){const{cols:t,rows:i,_array:s}=this;if(e){const n=[];for(let o=0;o<i;o++)for(let a=0;a<t;a++)n[o+a*t]=s[a+o*t];return n}return s.slice()}toName(){return`Matrix${this.rows}(${this.rows}x${this.cols})`}toJSON(){return this._array}}class bo extends Dt{constructor(A){super(4,4,A)}}const xo=Lt/180,Th=180/Lt;function bt(r,A,e){return Math.max(r,Math.min(A,e))}function Se(r,A,e){return(1-e)*r+e*A}const Lh={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(r,A=20){if(!this.adaptive||!r||Number.isNaN(r))return A;let e=Math.ceil(r/this.maxLength);return e<this.minSegments?e=this.minSegments:e>this.maxSegments&&(e=this.maxSegments),e}};class So extends Qt{constructor(A=0,e=0,t=0,i=0){super(4),this.set([A,e,t,i])}}class xs extends Dt{constructor(A){super(4,5,A)}hueRotate(A=0){const e=Math.sin(A),t=Math.cos(A),i=.213,s=.715,n=.072;return this.multiply([i+t*(1-i)+e*-.213,s+t*-.715+e*-.715,n+t*-.072+e*(1-n),0,0,i+t*-.213+e*.143,s+t*(1-s)+e*.14,n+t*-.072+e*-.283,0,0,i+t*-.213+e*-.787,s+t*-.715+e*s,n+t*(1-n)+e*n,0,0,0,0,0,1,0])}saturate(A=1){const e=(A-1)*2/3+1,t=(e-1)*-.5;return this.multiply([e,t,t,0,0,t,e,t,0,0,t,t,e,0,0,0,0,0,1,0])}brightness(A=1){const e=A;return this.multiply([e,0,0,0,0,0,e,0,0,0,0,0,e,0,0,0,0,0,1,0])}contrast(A=1){const e=A,t=-128*(e-1);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}invert(A=1){const e=Se(1,-1,A),t=Se(0,255,A);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}sepia(A=1){const e=bt(0,A,1);return this.multiply([Se(1,.393,e),Se(0,.7689999,e),Se(0,.18899999,e),0,0,Se(0,.349,e),Se(1,.6859999,e),Se(0,.16799999,e),0,0,Se(0,.272,e),Se(0,.5339999,e),Se(1,.13099999,e),0,0,0,0,0,1,0])}opacity(A=1){return this.multiply([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,A,0])}grayscale(A=1){const e=bt(0,A,1),t=Se(1,.3,e),i=Se(0,.3,e),s=Se(1,.59,e),n=Se(0,.59,e),o=Se(1,.11,e),a=Se(0,.11,e);return this.multiply([t,n,a,0,0,i,s,a,0,0,i,n,o,0,0,0,0,0,1,0])}multiply(A){const e=A,t=this._array;return this.set([t[0]*e[0]+t[1]*e[5]+t[2]*e[10]+t[3]*e[15],t[0]*e[1]+t[1]*e[6]+t[2]*e[11]+t[3]*e[16],t[0]*e[2]+t[1]*e[7]+t[2]*e[12]+t[3]*e[17],t[0]*e[3]+t[1]*e[8]+t[2]*e[13]+t[3]*e[18],t[0]*e[4]+t[1]*e[9]+t[2]*e[14]+t[3]*e[19]+t[4],t[5]*e[0]+t[6]*e[5]+t[7]*e[10]+t[8]*e[15],t[5]*e[1]+t[6]*e[6]+t[7]*e[11]+t[8]*e[16],t[5]*e[2]+t[6]*e[7]+t[7]*e[12]+t[8]*e[17],t[5]*e[3]+t[6]*e[8]+t[7]*e[13]+t[8]*e[18],t[5]*e[4]+t[6]*e[9]+t[7]*e[14]+t[8]*e[19]+t[9],t[10]*e[0]+t[11]*e[5]+t[12]*e[10]+t[13]*e[15],t[10]*e[1]+t[11]*e[6]+t[12]*e[11]+t[13]*e[16],t[10]*e[2]+t[11]*e[7]+t[12]*e[12]+t[13]*e[17],t[10]*e[3]+t[11]*e[8]+t[12]*e[13]+t[13]*e[18],t[10]*e[4]+t[11]*e[9]+t[12]*e[14]+t[13]*e[19]+t[14],t[15]*e[0]+t[16]*e[5]+t[17]*e[10]+t[18]*e[15],t[15]*e[1]+t[16]*e[6]+t[17]*e[11]+t[18]*e[16],t[15]*e[2]+t[16]*e[7]+t[17]*e[12]+t[18]*e[17],t[15]*e[3]+t[16]*e[8]+t[17]*e[13]+t[18]*e[18],t[15]*e[4]+t[16]*e[9]+t[17]*e[14]+t[18]*e[19]+t[19]])}toMatrix4(){const A=this._array;return new bo([A[0],A[1],A[2],A[3],A[5],A[6],A[7],A[8],A[10],A[11],A[12],A[13],A[15],A[16],A[17],A[18]])}toVector4(){const A=this._array;return new So(A[4]/255,A[9]/255,A[14]/255,A[19]/255)}}class Gh extends Dt{constructor(A){super(2,2,A)}}let Ss=class extends Dt{constructor(A){super(3,3,A)}invert(){const[A,e,t,i,s,n,o,a,l]=this._array,h=l*s-n*a,c=n*o-l*i,f=a*i-s*o,d=A*h+e*c+t*f;if(d===0)return this.set([0,0,0,0,0,0,0,0,0]);const I=1/d;return this.set([h*I,(t*a-l*e)*I,(n*e-t*s)*I,c*I,(l*A-t*o)*I,(t*i-n*A)*I,f*I,(e*o-a*A)*I,(s*A-e*i)*I])}};class Mo extends Ss{constructor(A=0,e=0,t=0,i=0,s=!1){super(),this._x=A,this._y=e,this._width=t,this._height=i,this._flipY=s,this._performUpdateArray()}flipY(A){return this._flipY!==A&&(this._flipY=A,this._performUpdateArray()),this}translate(A,e){return(this._x!==A||this._y!==e)&&(this._x=A,this._y=e,this._performUpdateArray()),this}resize(A,e){return(this._width!==A||this._height!==e)&&(this._width=A,this._height=e,this._performUpdateArray()),this}_performUpdateArray(){const A=this._width,e=this._height;if(!A||!e)return;const t=this._x,i=this._y,s=this._flipY?-1:1,n=1/A*2,o=s*(1/e*2),a=-1-t*n,l=-s-i*o;this.set([n,0,a,0,o,l,0,0,1])}}let yt=class us extends Qt{get x(){return this._array[0]}set x(A){const[e,t]=this._array;e!==A&&this.set(A,t)}get y(){return this._array[1]}set y(A){const[e,t]=this._array;t!==A&&this.set(e,A)}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}get left(){return this.x}set left(A){this.x=A}get top(){return this.y}set top(A){this.y=A}constructor(A=0,e){super(2),this.set(typeof A=="number"?[A,e??A]:A)}update(A,e){const[t,i]=this._array;return(t!==A||i!==e)&&this.set(A,e),this}getLength(){const[A,e]=this._array;return Math.sqrt(A*A+e*e)}getAngle(){const[A,e]=this._array;return Math.atan2(-A,-e)+Math.PI}distanceTo(A){return Math.hypot(A.x-this.x,A.y-this.y)}normalize(){const[A,e]=this._array,t=1/(this.getLength()||1);return this.set(A*t,e*t),this}static lerp(A,e,t){return new us(e).clone().sub(new us(A)).multiply(t).add(new us(A))}};class Ms{constructor(...A){u(this,"end",new yt);u(this,"position");u(this,"size");const e=new yt,t=new yt;switch(A.length){case 0:break;case 1:e.set(A[0].position),t.set(A[0].size);break;case 2:e.set(A[0]),t.set(A[1]);break;default:e.set(A[0],A[1]),t.set(A[2],A[3]);break}this.update=this.update.bind(this),this.position=e.on("update",this.update),this.size=t.on("update",this.update),this.update()}get x(){return this.position.x}get y(){return this.position.y}get left(){return this.position.x}get top(){return this.position.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get width(){return this.size.x}get height(){return this.size.y}update(){return this.end.set(this.position.x+this.size.x,this.position.y+this.size.y),this}toArray(){return[this.x,this.y,this.width,this.height]}}const dA=class dA extends Ss{premultiply(A){return A.multiply(this,this)}skewX(A){return this.skew(A,1)}skewY(A){return this.skew(1,A)}skew(A,e){return this.premultiply(dA._t2d.makeSkew(A,e))}makeSkew(A,e){const t=Math.cos(e),i=Math.sin(e),s=-Math.sin(-A),n=Math.cos(-A);return this.set([t,s,0,i,n,0,0,0,1]),this}translateX(A){return this.translate(A,0)}translateY(A){return this.translate(0,A)}translateZ(A){return this.translate(0,0,A)}translate3d(A,e,t){return this.translate(A,e,t)}translate(A,e,t=0){return this.premultiply(dA._t2d.makeTranslation(A,e,t))}makeTranslation(A,e,t=0){return this.set([1,0,A,0,1,e,0,0,1]),this}scaleX(A){return this.scale(A,1)}scaleY(A){return this.scale(1,A)}scale3d(A,e,t=1){return this.scale(A,e,t)}scale(A,e,t=1){return this.premultiply(dA._t2d.makeScale(A,e,t))}makeScale(A,e,t=1){return this.set([A,0,0,0,e,0,0,0,t]),this}rotateX(A){return this.scaleY(this._rotateToScale(A))}rotateY(A){return this.scaleX(this._rotateToScale(A))}rotateZ(A){return this.rotate(A)}rotate(A){return this.premultiply(dA._t2d.makeRotation(A))}rotate3d(A,e,t,i){const[s,n,o]=this._rotate3d(A,e,t,i);return s&&this.rotateX(s),n&&this.rotateY(n),o&&this.rotateZ(o),this}_rotateToScale(A){const e=A/tt;return e<=.5?e*-4+1:(e-1)*4+1}_rotate3d(A,e,t,i){if(A===1&&e===0&&t===0)return[i,0,0];if(A===0&&e===1&&t===0)return[0,i,0];if(A===0&&e===0)return[0,0,i];{const s=Math.cos(i),n=Math.sin(i),o=s+A*A*(1-s),a=A*e*(1-s)-t*n,l=A*t*(1-s)+e*n,h=s+e*e*(1-s),c=e*t*(1-s)-A*n,f=s+t*t*(1-s),d=-Math.atan2(-c,h),I=-Math.atan2(l,Math.sqrt(c*c+f*f)),C=-Math.atan2(-a,o);return[d,I,C]}}makeRotation(A){const e=Math.cos(A),t=Math.sin(A);return this.set([e,-t,0,t,e,0,0,0,1]),this}applyToPoint(A,e){const{a:t,c:i,tx:s,b:n,d:o,ty:a}=this.toObject();return[t*A+i*e+s,n*A+o*e+a]}inverse(){return this.clone().invert()}isIdentity(){const{a:A,b:e,c:t,d:i,tx:s,ty:n}=this.toObject();return A===1&&e===0&&t===0&&i===1&&s===0&&n===0}toObject(){const[A,e,t,i,s,n,,,o]=this._array;return{a:A,c:e,tx:t,b:i,d:s,ty:n,tz:o}}};u(dA,"_t2d",new dA);let dt=dA;class Oh extends Qt{constructor(){super(3)}}var Hh=Object.defineProperty,Ro=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Hh(A,e,i),i};class or extends Ht{constructor(){super();u(this,"_starting",!1);u(this,"_nextDeltaTime",0);this._onNextTick=this._onNextTick.bind(this)}get starting(){return this._starting}get spf(){return this.fps?Math.floor(1e3/this.fps):0}start(e){this._starting||(this._starting=!0,this.off("process"),this.on("process",e),xe.on(this._onNextTick,{sort:0}))}stop(){this._starting&&(this._starting=!1,xe.off(this._onNextTick,{sort:0}))}_onNextTick(){const e=xe.elapsed*this.speed;if((this._nextDeltaTime-=e)<=0){const i=(this._nextDeltaTime=this.spf)||e;this.emit("process",i)}}free(){super.free(),this.stop()}}Ro([M({default:24})],or.prototype,"fps"),Ro([M({default:1})],or.prototype,"speed");class Po{constructor(){u(this,"view");u(this,"pixelRatio",Cs);u(this,"screen",{x:0,y:0,width:0,height:0});u(this,"related",new UA)}getRelated(A,e){let t=this.related.get(A);return t||(e?(this.related.set(A,t=e()),t):(console.warn("Failed to get related",A),null))}resize(A,e,t=!0){this.view&&(this.view.width=Math.floor(A*this.pixelRatio),this.view.height=Math.floor(e*this.pixelRatio)),this.screen.width=A,this.screen.height=e,t&&this.view&&(this.view.style.width=`${A}px`,this.view.style.height=`${e}px`)}}var kA=(r=>(r.NORMAL="normal",r.ADD="add",r.MULTIPLY="multiply",r.SCREEN="screen",r.NONE="none",r.NORMAL_NPM="normal_npm",r.ADD_NPM="add_npm",r.SCREEN_NPM="screen_npm",r.SRC_IN="src_in",r.SRC_OUT="src_out",r.SRC_ATOP="src_atop",r.DST_OVER="dst_over",r.DST_IN="dst_in",r.DST_OUT="dst_out",r.DST_ATOP="dst_atop",r.XOR="xor",r.SUBTRACT="subtract",r))(kA||{});function Uo(r){return{normal:[r.ONE,r.ONE_MINUS_SRC_ALPHA],add:[r.ONE,r.ONE],multiply:[r.DST_COLOR,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],screen:[r.ONE,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],none:[0,0],normal_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA],add_npm:[r.SRC_ALPHA,r.ONE,r.ONE,r.ONE],screen_npm:[r.SRC_ALPHA,r.ONE_MINUS_SRC_COLOR,r.ONE,r.ONE_MINUS_SRC_ALPHA],src_in:[r.DST_ALPHA,r.ZERO],src_out:[r.ONE_MINUS_DST_ALPHA,r.ZERO],src_atop:[r.DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],dst_over:[r.ONE_MINUS_DST_ALPHA,r.ONE],dst_in:[r.ZERO,r.SRC_ALPHA],dst_out:[r.ZERO,r.ONE_MINUS_SRC_ALPHA],dst_atop:[r.ONE_MINUS_DST_ALPHA,r.SRC_ALPHA],xor:[r.ONE_MINUS_DST_ALPHA,r.ONE_MINUS_SRC_ALPHA],subtract:[r.ONE,r.ONE,r.ONE,r.ONE,r.FUNC_REVERSE_SUBTRACT,r.FUNC_ADD]}}class It{get gl(){return this._renderer.gl}install(A){this._renderer=A}onUpdateContext(){}flush(){}reset(){}free(){}}const jr=class jr{constructor(A){u(this,"_blendMode",kA.NORMAL);u(this,"_polygonOffset",0);u(this,"bitmap",0);if(A)for(const e in A)this[e]=A[e]}static _init(){this._properties.forEach((A,e)=>{Object.defineProperty(this.prototype,A,{get(){return!!(this.bitmap&1<<e)},set(t){!!(this.bitmap&1<<e)!==t&&(this.bitmap^=1<<e)},enumerable:!0,configurable:!0})})}static for2D(){const A=new jr;return A.depthTest=!1,A.blend=!0,A}get blendMode(){return this._blendMode}set blendMode(A){this.blend=A!==kA.NONE,this._blendMode=A}get polygonOffset(){return this._polygonOffset}set polygonOffset(A){this.offsets=!!A,this._polygonOffset=A}};u(jr,"_properties",["blend","offsets","culling","depthTest","clockwiseFrontFace","depthMask"]);let pA=jr;pA._init();class ko extends It{constructor(){super(...arguments);u(this,"_blendEq",!1);u(this,"_setters",pA._properties.map(e=>this[`set${e.replace(/^\S/,t=>t.toUpperCase())}`]));u(this,"boundStateBitmap",0);u(this,"boundBlendMode");u(this,"blendModes");u(this,"defaultState",new pA({blend:!0}))}install(e){super.install(e),e.state=this}onUpdateContext(){super.onUpdateContext(),this.blendModes=Uo(this._renderer.gl)}toggle(e,t){this._renderer.gl[t?"enable":"disable"](e)}setBlend(e){this.toggle(this._renderer.gl.BLEND,e)}setOffsets(e){this.toggle(this._renderer.gl.POLYGON_OFFSET_FILL,e)}setCulling(e){this.toggle(this._renderer.gl.CULL_FACE,e)}setDepthTest(e){this.toggle(this._renderer.gl.DEPTH_TEST,e)}setDepthMask(e){this._renderer.gl.depthMask(e)}setClockwiseFrontFace(e){const t=this._renderer.gl;t.frontFace(t[e?"CW":"CCW"])}setBlendMode(e){if(e===this.boundBlendMode)return;this.boundBlendMode=e;const t=this.blendModes[e],i=this._renderer.gl;t.length===2?i.blendFunc(t[0],t[1]):i.blendFuncSeparate(t[0],t[1],t[2],t[3]),t.length===6?(this._blendEq=!0,i.blendEquationSeparate(t[4],t[5])):this._blendEq&&(this._blendEq=!1,i.blendEquationSeparate(i.FUNC_ADD,i.FUNC_ADD))}setPolygonOffset(e,t){this._renderer.gl.polygonOffset(e,t)}bind(e){var t;if(this.boundStateBitmap!==e.bitmap){let i=this.boundStateBitmap^e.bitmap,s=0;for(;i;)i&1&&((t=this._setters[s])==null||t.call(this,!!(e.bitmap&1<<s))),i=i>>1,s++;this.boundStateBitmap=e.bitmap}e.blend&&this.setBlendMode(e.blendMode),e.offsets&&this.setPolygonOffset(1,e.polygonOffset)}reset(){super.reset();const e=this._renderer.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!1),this.bind(this.defaultState),this._blendEq=!0,this.setBlendMode(kA.NORMAL)}}class No extends It{constructor(){super(...arguments);u(this,"_state",pA.for2D());u(this,"_batchSize",4096*4);u(this,"_drawCallUid",0);u(this,"_defaultModulate",4294967295);u(this,"_defaultBackgroundColor",0);u(this,"_defaultColorMatrixOffset",[0,0,0,0]);u(this,"_defaultColorMatrix",[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);u(this,"_batchables",[]);u(this,"_vertexCount",0);u(this,"_indexCount",0);u(this,"_attributeBuffer",[]);u(this,"_indexBuffers",[]);u(this,"_shaders",new Map);u(this,"_attributes",{aTextureId:{size:1,normalized:!0,type:"float"},aPosition:{size:2,normalized:!1,type:"float"},aUv:{size:2,normalized:!1,type:"float"},aModulate:{size:4,normalized:!0,type:"unsigned_byte"},aBackgroundColor:{size:4,normalized:!0,type:"unsigned_byte"},aDisableWrapMode:{size:4,normalized:!0,type:"float"},aColorMatrixOffset:{size:4,normalized:!1,type:"float"},aColorMatrix:{size:4,normalized:!1,type:"float"}});u(this,"_vertexSize",31)}install(e){super.install(e),e.batch2D=this}_getShader(e){let t=this._shaders.get(e);return t||this._shaders.set(e,t=this._createShader(e)),t}_createShader(e){const t=this._renderer,i=t.program.create({vert:`precision highp float;
1
+ (function(c,et){typeof exports=="object"&&typeof module<"u"?et(exports):typeof define=="function"&&define.amd?define(["exports"],et):(c=typeof globalThis<"u"?globalThis:c||self,et(c.modernCanvas={}))})(this,function(c){"use strict";var QB=Object.defineProperty;var yB=(c,et,Gt)=>et in c?QB(c,et,{enumerable:!0,configurable:!0,writable:!0,value:Gt}):c[et]=Gt;var u=(c,et,Gt)=>yB(c,typeof et!="symbol"?et+"":et,Gt);var RA,BA;var et=typeof document<"u"?document.currentScript:null;const Gt=Math.PI,tt=Gt*2;let Ch=0;function jn(s){var A;return((A=s==null?void 0:s.__SPECTOR_Object_TAG)==null?void 0:A.id)??++Ch}function fs(s){return!(s&s-1)&&!!s}const Qh=/([\w-]+)\((.+?)\)/g,yh=/[^,]+/g,mh=/([-e.\d]+)(.*)/;function ds(s){return Array.isArray(s)?s.map(A=>({name:A.name,args:A.args.map(e=>({...e,normalizedIntValue:e.normalizedDefaultIntValue}))})):{...s,normalizedIntValue:s.normalizedDefaultIntValue}}function Ii(s,A,e={}){const t=Bi(A,e);return t.length?t:Zn(s,A,e)}function Bi(s,A={}){const e=[];let t;for(;(t=Qh.exec(s))!==null;){const[,i,r]=t;i&&e.push({name:i,args:wh(i,r,A)})}return e}function wh(s,A,e={}){const t=[];let i,r=0;for(;(i=yh.exec(A))!==null;)t.push(Zn(s,i[0],{...e,index:r++}));return t}function Zn(s,A,e={}){const{width:t=1,height:i=1,index:r=0}=e,n=A.match(mh),o={unit:(n==null?void 0:n[2])??null,value:A,intValue:Number(n==null?void 0:n[1]),normalizedIntValue:0,normalizedDefaultIntValue:0};switch(s){case"scale":case"scaleX":case"scaleY":case"scale3d":o.normalizedDefaultIntValue=1;break}switch(o.unit){case"%":o.normalizedIntValue=o.intValue/100;break;case"rad":o.normalizedIntValue=o.intValue/tt;break;case"deg":o.normalizedIntValue=o.intValue/360;break;case"px":switch(r){case 0:o.normalizedIntValue=o.intValue/t;break;case 1:o.normalizedIntValue=o.intValue/i;break}break;case"turn":case"em":case"rem":default:o.normalizedIntValue=o.intValue;break}return o}const $n="WebGL2RenderingContext"in globalThis,eo="ImageBitmap"in globalThis,to="ResizeObserver"in globalThis,UA="PointerEvent"in globalThis,Ao="WheelEvent"in globalThis,vh="MouseEvent"in globalThis,Ot="ontouchstart"in globalThis,io="onclick"in globalThis,Is="createImageBitmap"in globalThis,Bs="AudioContext"in globalThis,Es="webkitAudioContext"in globalThis,ps="OfflineAudioContext"in globalThis,ro="webkitOfflineAudioContext"in globalThis,so=Bs||Es,Ei=typeof window<"u",Cs=globalThis.devicePixelRatio||1,Qs=s=>s!==null&&typeof s=="object"&&s.nodeType===1,no=s=>Qs(s)&&s.tagName==="VIDEO",_h=s=>Qs(s)&&s.tagName==="IMG";function oo(s){return typeof s=="object"&&s!==null&&s.nodeType===1&&s.tagName==="CANVAS"}function ao(s){return $n&&s instanceof globalThis.WebGL2RenderingContext}function lo(){if(Ei)return globalThis.document.createElement("canvas")}function ho(s,A=globalThis.location){if(s.startsWith("data:"))return"";A=A||globalThis.location;const e=new URL(s,document.baseURI);return e.hostname!==A.hostname||e.port!==A.port||e.protocol!==A.protocol?"anonymous":""}function go(s,A,e){e===null&&!A.startsWith("data:")?s.crossOrigin=ho(A):e!==!1&&(s.crossOrigin=typeof e=="string"?e:"anonymous")}class kA{constructor(){u(this,"_map",new WeakMap)}_toRaw(A){if(A&&typeof A=="object"){const e=A.__v_raw;e&&(A=this._toRaw(e))}return A}delete(A){return this._map.delete(this._toRaw(A))}get(A){return this._map.get(this._toRaw(A))}has(A){return this._map.has(this._toRaw(A))}set(A,e){return this._map.set(this._toRaw(A),this._toRaw(e)),this}}const co=new kA;function rr(s){let A=co.get(s);if(!A){const e=Object.getPrototypeOf(s);A=new Map(e?rr(e):void 0),co.set(s,A)}return A}function pi(s,A,e={}){rr(s).set(A,e);const{default:t,alias:i}=e;let r=Object.getOwnPropertyDescriptor(s.prototype,A);if(!r){const n=i??Symbol.for(String(A));r={get(){return this[n]},set(o){this[n]=o}}}Object.defineProperty(s.prototype,A,{get(){var n;return((n=r.get)==null?void 0:n.call(this))??t},set(n){var a,l,h;const o=((a=r.get)==null?void 0:a.call(this))??t;(l=r.set)==null||l.call(this,n),(h=this.requestUpdate)==null||h.call(this,A,o,e)},configurable:!0,enumerable:!0})}function S(s){return function(A,e){pi(A.constructor,e,s)}}const sr=new Map;function te(s,A){return function(e){Object.defineProperty(e.prototype,"tag",{value:s,enumerable:!0,configurable:!0}),A&&Object.keys(A).forEach(t=>{pi(e,t,{default:A[t]})}),sr.set(s,e)}}function Be(s){return S({...s,protected:!0})}function Dh(s="node",A={}){const e=sr.get(s);if(!e)throw new Error(`Failed to createNode, tag: ${s}`);return new e().setProperties(A)}class xe{static get currentTime(){return this._currentTime}static get elapsed(){return this._elapsed}static on(A,e={}){const{sort:t=0,once:i=!1}=e;this._queue[t]||(this._queue[t]=[]),this._queue[t].push({cb:A,once:i})}static off(A,e={}){const{sort:t=0}=e,i=this._queue[t];if(!i)return;const r=[];for(let n=i.length,o=0;o<n;o++){const a=i[o];a.cb!==A&&r.push(a)}r.length?this._queue[t]=r:this._queue.splice(t,1)}static start(){"requestAnimationFrame"in globalThis&&(this._currentTime=performance.now(),this._requestId=requestAnimationFrame(A=>this._update(A)))}static stop(){this._requestId&&(cancelAnimationFrame(this._requestId),this._requestId=void 0)}static _update(A){this._elapsed=A-this._currentTime,this._currentTime=A,this._requestId=requestAnimationFrame(e=>this._update(e)),this._performUpdate()}static _performUpdate(){const A=this._queue,e=[];for(let t=A.length,i=t;i>=0;i--){const r=A[i];if(!r)continue;const n=[];for(let o=r.length,a=0;a<o;a++){const l=r[a];try{l.cb()}catch(h){console.warn(h)}l.once||n.push(l)}n.length&&(e[i]=n)}this._queue=e}}u(xe,"_queue",[]),u(xe,"_currentTime",0),u(xe,"_elapsed",0),u(xe,"_requestId"),xe.start();async function ys(s){return new Promise(A=>{xe.on(()=>{s==null||s(),A()},{sort:1,once:!0})})}let Ht=class{constructor(){u(this,"eventListeners",new Map)}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(A){return this.eventListeners.has(A)}on(A,e,t){const i={value:e,options:t},r=this.eventListeners.get(A);return r?Array.isArray(r)?r.push(i):this.eventListeners.set(A,[r,i]):this.eventListeners.set(A,i),this}once(A,e){return this.on(A,e,{once:!0})}off(A,e,t){var r,n;if(!e)return this.eventListeners.delete(A),this;const i=this.eventListeners.get(A);if(!i)return this;if(Array.isArray(i)){const o=[];for(let a=0,l=i.length;a<l;a++){const h=i[a];(h.value!==e||typeof t=="object"&&(t!=null&&t.once)&&(typeof h.options=="boolean"||!((r=h.options)!=null&&r.once)))&&o.push(h)}o.length?this.eventListeners.set(A,o.length===1?o[0]:o):this.eventListeners.delete(A)}else i.value===e&&(typeof t=="boolean"||!(t!=null&&t.once)||typeof i.options=="boolean"||(n=i.options)!=null&&n.once)&&this.eventListeners.delete(A);return this}emit(A,...e){var i,r;const t=this.eventListeners.get(A);if(t){if(Array.isArray(t))for(let n=t.length,o=0;o<n;o++){const a=t[o];typeof a.options=="object"&&((i=a.options)!=null&&i.once)&&this.off(A,a.value,a.options),a.value.apply(this,e)}else typeof t.options=="object"&&((r=t.options)!=null&&r.once)&&this.off(A,t.value,t.options),t.value.apply(this,e);return!0}else return!1}},bh=0;class Jt extends Ht{constructor(){super(...arguments);u(this,"instanceId",++bh);u(this,"_defaultProperties");u(this,"_updatedProperties",new Map);u(this,"_changedProperties",new Set);u(this,"_updatingPromise",Promise.resolve());u(this,"_updating",!1)}is(e){return!!(e&&this.instanceId===e.instanceId)}async _enqueueUpdate(){this._updating=!0;try{await this._updatingPromise}catch(e){Promise.reject(e)}await ys(),this._updating&&(this.update(),this._updating=!1)}update(){this._update(this._updatedProperties),this._updatedProperties=new Map}_update(e){}_updateProperty(e,t,i,r){}isDirty(e){return this._updatedProperties.has(e)}getPropertyDeclarations(){return rr(this.constructor)}getPropertyDeclaration(e){return this.getPropertyDeclarations().get(e)}getDefaultProperties(){if(!this._defaultProperties){this._defaultProperties={};for(const[e,t]of this.getPropertyDeclarations())!t.protected&&!t.alias&&(this._defaultProperties[e]=t.default)}return this._defaultProperties}getProperty(e){return this[e]}setProperty(e,t){return this[e]=t,this}getProperties(e){const t={};for(const[i,r]of this.getPropertyDeclarations())!r.protected&&!r.alias&&(!e||e.includes(i))&&(t[i]=this.getProperty(i));return t}setProperties(e){if(e)for(const[t]of this.getPropertyDeclarations())t in e&&this.setProperty(t,e[t]);return this}requestUpdate(e,t,i){if(e!==void 0){const r=this[e];if(!Object.is(r,t))this._updatedProperties.set(e,t),this._changedProperties.add(e),i??(i=this.getPropertyDeclaration(e)),this._updateProperty(e,r,t,i),this.emit("updateProperty",e,r,t,i);else return}this._updating||(this._updatingPromise=this._enqueueUpdate())}toJSON(){return this.getProperties(Array.from(this._changedProperties))}clone(){return new this.constructor(this.toJSON())}free(){this.removeAllListeners()}}class uo extends Jt{}class nr{constructor(){u(this,"bubbles",!0);u(this,"cancelable",!1);u(this,"which");u(this,"cancelBubble",!0);u(this,"returnValue");u(this,"srcElement");u(this,"composed",!1);u(this,"currentTarget");u(this,"defaultPrevented",!1);u(this,"eventPhase",nr.prototype.NONE);u(this,"isTrusted");u(this,"target");u(this,"timeStamp");u(this,"type");u(this,"nativeEvent");u(this,"originalEvent");u(this,"propagationStopped",!1);u(this,"propagationImmediatelyStopped",!1);u(this,"path");u(this,"detail");u(this,"view");u(this,"layer",{x:0,y:0});u(this,"page",{x:0,y:0});u(this,"NONE",0);u(this,"CAPTURING_PHASE",1);u(this,"AT_TARGET",2);u(this,"BUBBLING_PHASE",3)}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}initEvent(...A){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(...A){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}composedPath(){return this.path}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}class ms extends nr{constructor(){super(...arguments);u(this,"altKey");u(this,"button");u(this,"buttons");u(this,"ctrlKey");u(this,"metaKey");u(this,"relatedTarget");u(this,"shiftKey");u(this,"client",{x:0,y:0});u(this,"movement",{x:0,y:0});u(this,"offset",{x:0,y:0});u(this,"global",{x:0,y:0});u(this,"screen",{x:0,y:0})}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getModifierState(e){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(e)}initMouseEvent(...e){throw new Error("Method not implemented.")}}class fo extends ms{constructor(){super(...arguments);u(this,"width",0);u(this,"height",0);u(this,"isPrimary",!1);u(this,"pointerType");u(this,"pressure");u(this,"tangentialPressure");u(this,"tiltX");u(this,"tiltY");u(this,"twist")}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw new Error("getPredictedEvents is not supported!")}}class Ci extends ms{constructor(){super(...arguments);u(this,"deltaMode");u(this,"deltaX");u(this,"deltaY");u(this,"deltaZ");u(this,"DOM_DELTA_PIXEL",0);u(this,"DOM_DELTA_LINE",1);u(this,"DOM_DELTA_PAGE",2)}}u(Ci,"DOM_DELTA_PIXEL",0),u(Ci,"DOM_DELTA_LINE",1),u(Ci,"DOM_DELTA_PAGE",2);const xh={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"};class Io extends Ht{constructor(){super(...arguments);u(this,"target");u(this,"cursor","default");u(this,"cursorStyles",{default:"inherit",pointer:"pointer"});u(this,"setuped",!1);u(this,"event");u(this,"enableMoveEvent",!0);u(this,"enableWheelEvent",!0);u(this,"enableClickEvent",!0);u(this,"onPointerDown",e=>{if(Ot&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,r=t.length;i<r;i++)this.emit("pointerdown",this.event=this.clonePointerEvent(t[i]));this.setCursor(this.cursor)});u(this,"onPointerOver",e=>{if(!this.enableClickEvent||Ot&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,r=t.length;i<r;i++)this.emit("pointerover",this.event=this.clonePointerEvent(t[i]))});u(this,"onPointerMove",e=>{if(!this.enableMoveEvent||Ot&&e.pointerType==="touch")return;const t=this.normalize(e);for(let i=0,r=t.length;i<r;i++)this.emit("pointermove",this.event=this.clonePointerEvent(t[i]))});u(this,"onPointerUp",e=>{if(!this.enableClickEvent||Ot&&e.pointerType==="touch")return;let t=e.target;e.composedPath&&e.composedPath().length>0&&(t=e.composedPath()[0]);const i=t!==this.target?"outside":"",r=this.normalize(e);for(let n=0,o=r.length;n<o;n++){const a=this.clonePointerEvent(r[n]);a.type+=i,this.emit("pointerup",this.event=a)}});u(this,"onWheel",e=>{if(!this.enableWheelEvent)return;const t=this.normalize(e);for(let i=0,r=t.length;i<r;i++)this.emit("wheel",this.event=this.cloneWheelEvent(t[i]))})}setTarget(e){this.removeEventListeners(),this.target=e,this.addEventListeners()}removeEventListeners(){if(!this.setuped||!this.target)return;const e=this.target.style;globalThis.navigator.msPointerEnabled?(e.msContentZooming="",e.msTouchAction=""):UA&&(e.touchAction=""),UA?(this.target.removeEventListener("pointerdown",this.onPointerDown),this.target.removeEventListener("pointerleave",this.onPointerOver),this.target.removeEventListener("pointerover",this.onPointerOver),this.target.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.target.ownerDocument.removeEventListener("pointerup",this.onPointerUp)):(this.target.removeEventListener("mousedown",this.onPointerDown),this.target.removeEventListener("mouseout",this.onPointerOver),this.target.removeEventListener("mouseover",this.onPointerOver),this.target.ownerDocument.removeEventListener("mousemove",this.onPointerMove),this.target.ownerDocument.removeEventListener("mouseup",this.onPointerUp)),Ot&&(this.target.removeEventListener("touchstart",this.onPointerDown),this.target.removeEventListener("touchmove",this.onPointerMove),this.target.removeEventListener("touchend",this.onPointerUp)),this.target.removeEventListener("wheel",this.onWheel),this.target=void 0,this.setuped=!1}addEventListeners(){if(this.setuped||!this.target)return;const e=this.target.style;e&&(globalThis.navigator.msPointerEnabled?(e.msContentZooming="none",e.msTouchAction="none"):UA&&(e.touchAction="none")),UA?(this.target.addEventListener("pointerdown",this.onPointerDown),this.target.addEventListener("pointerleave",this.onPointerOver),this.target.addEventListener("pointerover",this.onPointerOver),this.target.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.target.ownerDocument.addEventListener("pointerup",this.onPointerUp)):(this.target.addEventListener("mousedown",this.onPointerDown),this.target.addEventListener("mouseout",this.onPointerOver),this.target.addEventListener("mouseover",this.onPointerOver),this.target.ownerDocument.addEventListener("mousemove",this.onPointerMove),this.target.ownerDocument.addEventListener("mouseup",this.onPointerUp)),Ot&&(this.target.addEventListener("touchstart",this.onPointerDown),this.target.addEventListener("touchmove",this.onPointerMove),this.target.addEventListener("touchend",this.onPointerUp)),this.target.addEventListener("wheel",this.onWheel),this.setuped=!0}normalize(e){const t=[];if(Ot&&e instanceof globalThis.TouchEvent)for(let i=0,r=e.changedTouches.length;i<r;i++){const n=e.changedTouches[i];typeof n.button>"u"&&(n.button=0),typeof n.buttons>"u"&&(n.buttons=1),typeof n.isPrimary>"u"&&(n.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof n.width>"u"&&(n.width=n.radiusX||1),typeof n.height>"u"&&(n.height=n.radiusY||1),typeof n.tiltX>"u"&&(n.tiltX=0),typeof n.tiltY>"u"&&(n.tiltY=0),typeof n.pointerType>"u"&&(n.pointerType="touch"),typeof n.pointerId>"u"&&(n.pointerId=n.identifier||0),typeof n.pressure>"u"&&(n.pressure=n.force||.5),typeof n.twist>"u"&&(n.twist=0),typeof n.tangentialPressure>"u"&&(n.tangentialPressure=0),typeof n.layerX>"u"&&(n.layerX=n.offsetX=n.clientX),typeof n.layerY>"u"&&(n.layerY=n.offsetY=n.clientY),n.type=e.type,t.push(n)}else if(Ao&&e instanceof globalThis.WheelEvent)t.push(e);else if(UA&&e instanceof globalThis.PointerEvent)t.push(e);else{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=1),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),t.push(i)}return t}cloneWheelEvent(e){const t=new Ci;return this.copyMouseEvent(t,e),t.wheelDeltaY=e.wheelDeltaY,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.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.nativeEvent=e,t.type=e.type,t}clonePointerEvent(e){const t=new fo;return t.originalEvent=null,t.nativeEvent=e,t.pointerId=e.pointerId,t.width=e.width,t.height=e.height,t.isPrimary=e.isPrimary,t.pointerType=e.pointerType,t.pressure=e.pressure,t.tangentialPressure=e.tangentialPressure,t.tiltX=e.tiltX,t.tiltY=e.tiltY,t.twist=e.twist,t.isTrusted=e.isTrusted,this.copyMouseEvent(t,e),this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.x=t.screen.x,t.global.y=t.screen.y,t.offset.x=t.screen.x,t.offset.y=t.screen.y,t.type==="pointerleave"?t.type="pointerout":t.type.startsWith("mouse")?t.type=t.type.replace("mouse","pointer"):t.type.startsWith("touch")&&(t.type=xh[t.type]||t.type),t}copyMouseEvent(e,t){e.preventDefault=t.preventDefault.bind(t),e.stopPropagation=t.stopPropagation.bind(t),e.isTrusted=t.isTrusted,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}setCursor(e){if(!this.target||(e=e||"default",this.cursor===e))return;this.cursor=e;const t=!(globalThis.OffscreenCanvas&&this.target instanceof OffscreenCanvas),i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.target.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.target.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.target.style.cursor=e)}mapPositionToPoint(e,t,i){if(!this.target)return;const r=Number(this.target.getAttribute("width"))||0,n=Number(this.target.getAttribute("height"))||0,o=Number(this.target.getAttribute("data-pixel-ratio"))||1,a=this.target.isConnected?this.target.getBoundingClientRect():{width:r,height:n,left:0,top:0},l=1/o;e.x=(t-a.left)*(r/a.width)*l,e.y=(i-a.top)*(n/a.height)*l}}class Kt extends uo{}var Sh={grad:.9,turn:360,rad:360/(2*Math.PI)},Yt=function(s){return typeof s=="string"?s.length>0:typeof s=="number"},Ue=function(s,A,e){return A===void 0&&(A=0),e===void 0&&(e=Math.pow(10,A)),Math.round(e*s)/e+0},ft=function(s,A,e){return A===void 0&&(A=0),e===void 0&&(e=1),s>e?e:s>A?s:A},Bo=function(s){return(s=isFinite(s)?s%360:0)>0?s:s+360},Eo=function(s){return{r:ft(s.r,0,255),g:ft(s.g,0,255),b:ft(s.b,0,255),a:ft(s.a)}},ws=function(s){return{r:Ue(s.r),g:Ue(s.g),b:Ue(s.b),a:Ue(s.a,3)}},Mh=/^#([0-9a-f]{3,8})$/i,or=function(s){var A=s.toString(16);return A.length<2?"0"+A:A},po=function(s){var A=s.r,e=s.g,t=s.b,i=s.a,r=Math.max(A,e,t),n=r-Math.min(A,e,t),o=n?r===A?(e-t)/n:r===e?2+(t-A)/n:4+(A-e)/n:0;return{h:60*(o<0?o+6:o),s:r?n/r*100:0,v:r/255*100,a:i}},Co=function(s){var A=s.h,e=s.s,t=s.v,i=s.a;A=A/360*6,e/=100,t/=100;var r=Math.floor(A),n=t*(1-e),o=t*(1-(A-r)*e),a=t*(1-(1-A+r)*e),l=r%6;return{r:255*[t,o,n,n,a,t][l],g:255*[a,t,t,o,n,n][l],b:255*[n,n,a,t,t,o][l],a:i}},Qo=function(s){return{h:Bo(s.h),s:ft(s.s,0,100),l:ft(s.l,0,100),a:ft(s.a)}},yo=function(s){return{h:Ue(s.h),s:Ue(s.s),l:Ue(s.l),a:Ue(s.a,3)}},mo=function(s){return Co((e=(A=s).s,{h:A.h,s:(e*=((t=A.l)<50?t:100-t)/100)>0?2*e/(t+e)*100:0,v:t+e,a:A.a}));var A,e,t},Qi=function(s){return{h:(A=po(s)).h,s:(i=(200-(e=A.s))*(t=A.v)/100)>0&&i<200?e*t/100/(i<=100?i:200-i)*100:0,l:i/2,a:A.a};var A,e,t,i},Rh=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ph=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Uh=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,kh=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,vs={string:[[function(s){var A=Mh.exec(s);return A?(s=A[1]).length<=4?{r:parseInt(s[0]+s[0],16),g:parseInt(s[1]+s[1],16),b:parseInt(s[2]+s[2],16),a:s.length===4?Ue(parseInt(s[3]+s[3],16)/255,2):1}:s.length===6||s.length===8?{r:parseInt(s.substr(0,2),16),g:parseInt(s.substr(2,2),16),b:parseInt(s.substr(4,2),16),a:s.length===8?Ue(parseInt(s.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(s){var A=Uh.exec(s)||kh.exec(s);return A?A[2]!==A[4]||A[4]!==A[6]?null:Eo({r:Number(A[1])/(A[2]?100/255:1),g:Number(A[3])/(A[4]?100/255:1),b:Number(A[5])/(A[6]?100/255:1),a:A[7]===void 0?1:Number(A[7])/(A[8]?100:1)}):null},"rgb"],[function(s){var A=Rh.exec(s)||Ph.exec(s);if(!A)return null;var e,t,i=Qo({h:(e=A[1],t=A[2],t===void 0&&(t="deg"),Number(e)*(Sh[t]||1)),s:Number(A[3]),l:Number(A[4]),a:A[5]===void 0?1:Number(A[5])/(A[6]?100:1)});return mo(i)},"hsl"]],object:[[function(s){var A=s.r,e=s.g,t=s.b,i=s.a,r=i===void 0?1:i;return Yt(A)&&Yt(e)&&Yt(t)?Eo({r:Number(A),g:Number(e),b:Number(t),a:Number(r)}):null},"rgb"],[function(s){var A=s.h,e=s.s,t=s.l,i=s.a,r=i===void 0?1:i;if(!Yt(A)||!Yt(e)||!Yt(t))return null;var n=Qo({h:Number(A),s:Number(e),l:Number(t),a:Number(r)});return mo(n)},"hsl"],[function(s){var A=s.h,e=s.s,t=s.v,i=s.a,r=i===void 0?1:i;if(!Yt(A)||!Yt(e)||!Yt(t))return null;var n=function(o){return{h:Bo(o.h),s:ft(o.s,0,100),v:ft(o.v,0,100),a:ft(o.a)}}({h:Number(A),s:Number(e),v:Number(t),a:Number(r)});return Co(n)},"hsv"]]},wo=function(s,A){for(var e=0;e<A.length;e++){var t=A[e][0](s);if(t)return[t,A[e][1]]}return[null,void 0]},Nh=function(s){return typeof s=="string"?wo(s.trim(),vs.string):typeof s=="object"&&s!==null?wo(s,vs.object):[null,void 0]},_s=function(s,A){var e=Qi(s);return{h:e.h,s:ft(e.s+100*A,0,100),l:e.l,a:e.a}},Ds=function(s){return(299*s.r+587*s.g+114*s.b)/1e3/255},vo=function(s,A){var e=Qi(s);return{h:e.h,s:e.s,l:ft(e.l+100*A,0,100),a:e.a}},bs=function(){function s(A){this.parsed=Nh(A)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return s.prototype.isValid=function(){return this.parsed!==null},s.prototype.brightness=function(){return Ue(Ds(this.rgba),2)},s.prototype.isDark=function(){return Ds(this.rgba)<.5},s.prototype.isLight=function(){return Ds(this.rgba)>=.5},s.prototype.toHex=function(){return A=ws(this.rgba),e=A.r,t=A.g,i=A.b,n=(r=A.a)<1?or(Ue(255*r)):"","#"+or(e)+or(t)+or(i)+n;var A,e,t,i,r,n},s.prototype.toRgb=function(){return ws(this.rgba)},s.prototype.toRgbString=function(){return A=ws(this.rgba),e=A.r,t=A.g,i=A.b,(r=A.a)<1?"rgba("+e+", "+t+", "+i+", "+r+")":"rgb("+e+", "+t+", "+i+")";var A,e,t,i,r},s.prototype.toHsl=function(){return yo(Qi(this.rgba))},s.prototype.toHslString=function(){return A=yo(Qi(this.rgba)),e=A.h,t=A.s,i=A.l,(r=A.a)<1?"hsla("+e+", "+t+"%, "+i+"%, "+r+")":"hsl("+e+", "+t+"%, "+i+"%)";var A,e,t,i,r},s.prototype.toHsv=function(){return A=po(this.rgba),{h:Ue(A.h),s:Ue(A.s),v:Ue(A.v),a:Ue(A.a,3)};var A},s.prototype.invert=function(){return Ct({r:255-(A=this.rgba).r,g:255-A.g,b:255-A.b,a:A.a});var A},s.prototype.saturate=function(A){return A===void 0&&(A=.1),Ct(_s(this.rgba,A))},s.prototype.desaturate=function(A){return A===void 0&&(A=.1),Ct(_s(this.rgba,-A))},s.prototype.grayscale=function(){return Ct(_s(this.rgba,-1))},s.prototype.lighten=function(A){return A===void 0&&(A=.1),Ct(vo(this.rgba,A))},s.prototype.darken=function(A){return A===void 0&&(A=.1),Ct(vo(this.rgba,-A))},s.prototype.rotate=function(A){return A===void 0&&(A=15),this.hue(this.hue()+A)},s.prototype.alpha=function(A){return typeof A=="number"?Ct({r:(e=this.rgba).r,g:e.g,b:e.b,a:A}):Ue(this.rgba.a,3);var e},s.prototype.hue=function(A){var e=Qi(this.rgba);return typeof A=="number"?Ct({h:A,s:e.s,l:e.l,a:e.a}):Ue(e.h)},s.prototype.isEqual=function(A){return this.toHex()===Ct(A).toHex()},s}(),Ct=function(s){return s instanceof bs?s:new bs(s)},_o=[],Fh=function(s){s.forEach(function(A){_o.indexOf(A)<0&&(A(bs,vs),_o.push(A))})};function Th(s,A){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},t={};for(var i in e)t[e[i]]=i;var r={};s.prototype.toName=function(n){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,a,l=t[this.toHex()];if(l)return l;if(n!=null&&n.closest){var h=this.toRgb(),g=1/0,f="black";if(!r.length)for(var I in e)r[I]=new s(e[I]).toRgb();for(var d in e){var C=(o=h,a=r[d],Math.pow(o.r-a.r,2)+Math.pow(o.g-a.g,2)+Math.pow(o.b-a.b,2));C<g&&(g=C,f=d)}return f}},A.string.push([function(n){var o=n.toLowerCase(),a=o==="transparent"?"#0000":e[o];return a?new s(a).toRgb():null},"name"])}Fh([Th]);class Wt{get value(){return this._value}set value(A){if(A===void 0||this._value===A)return;this._value=A;let e;typeof A=="number"?e={r:A>>24&255,g:A>>16&255,b:A>>8&255,a:(A&255)/255}:e=A;const t=Ct(e);t.isValid()?this._colord=t:(this._colord=Ct("#000000"),console.warn(`Unable to convert color ${A}`))}get r8(){return this._colord.rgba.r}get g8(){return this._colord.rgba.g}get b8(){return this._colord.rgba.b}get a8(){return this._colord.rgba.a*255&255}get r(){return this.r8/255}get g(){return this.g8/255}get b(){return this.b8/255}get a(){return this._colord.rgba.a}get rgb(){return(this.r8<<16)+(this.g8<<8)+this.b8}get bgr(){return(this.b8<<16)+(this.g8<<8)+this.r8}get abgr(){return(this.a8<<24)+this.bgr}constructor(A=0){this.value=A}toArgb(A=this.a,e=!0){if(A===1)return(255<<24)+this.rgb;if(A===0)return e?0:this.rgb;let t=this.r8,i=this.g8,r=this.b8;return e&&(t=t*A+.5|0,i=i*A+.5|0,r=r*A+.5|0),(A*255<<24)+(t<<16)+(i<<8)+r}toHex(){return this._colord.toHex()}toArray(){return[this.r,this.g,this.b,this.a]}}class Qt extends Ht{constructor(e){super();u(this,"_array",[]);this.dim=e}get length(){return this.dim}_operate(e,t,i){const{dim:r,_array:n}=this;let o;typeof t=="number"?o=Array.from({length:r},()=>t):t instanceof Dt||t instanceof Qt?o=t.toArray():o=t;let a,l=[];if(i?i instanceof Qt?a=i:l=i:a=this,t instanceof Dt){const{cols:h}=t;switch(e){case"*":for(let g=0;g<r;g++){let f=0;for(let I=0;I<r;I++)f+=n[g]*o[I*h+g];l[g]=f}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"+":for(let h=0;h<r;h++)l[h]=n[h]+o[h];break;case"-":for(let h=0;h<r;h++)l[h]=n[h]-o[h];break;case"*":for(let h=0;h<r;h++)l[h]=n[h]*o[h];break;case"/":for(let h=0;h<r;h++)l[h]=n[h]/o[h];break;case"rot":{const h=Math.cos(o[0]),g=Math.sin(o[0]);l[0]=n[0]*h-n[1]*g,l[1]=n[1]*h+n[0]*g;break}case"==":{let h=!0;for(let g=0;g<r;g++)h=h&&n[g]===o[g];return h}case"=":for(let h=0;h<r;h++){const g=o[h];g!==void 0&&(n[h]=g)}return this._onUpdate(n),this.emit("update",n),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Vector'`)}return(a==null?void 0:a.set(l))??l}add(e,t){return this._operate("+",e,t)}sub(e,t){return this._operate("-",e,t)}multiply(e,t){return this._operate("*",e,t)}divide(e,t){return this._operate("/",e,t)}rotate(e){return this._operate("rot",e)}set(e,...t){return t.length&&typeof e=="number"&&(e=[e,...t]),this._operate("=",e)}equals(e){return this._operate("==",e)}copy(e){return this.set(e)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}_onUpdate(e){}toArray(){return this._array.slice()}toName(){return`Vector${this.dim}`}}class Dt extends Ht{constructor(e,t,i){super();u(this,"_array",[]);u(this,"dirtyId",0);this.rows=e,this.cols=t,i?this.set(i):this.identity()}get length(){return this.cols*this.rows}_operate(e,t,i){const{cols:r,rows:n,length:o,_array:a}=this;let l;typeof t=="number"?l=Array.from({length:o},()=>t):t instanceof Qt||t instanceof Dt?l=t.toArray():l=t;let h,g=[];if(i?i instanceof Qt||i instanceof Dt?h=i:g=i:t instanceof Qt?h=new t.constructor:h=this,t instanceof Qt){const{dim:f}=t;switch(e){case"*":for(let I=0;I<f;I++){let d=0;for(let C=0;C<r;C++)C<f&&(d+=a[I*r+C]*(l[C]??0));g[I]=d}break;default:throw new Error(`Not support operator in '${this.toName()} ${e} ${t.toName()}'`)}}else switch(e){case"*":for(let f=0;f<r;f++)for(let I=0;I<n;I++){const d=I*r;let C=0;for(let B=0;B<n;B++){const M=d+B,R=B*r+f;C+=a[M]*(l[R]??0)}g[d+f]=C}break;case"=":for(let f=0;f<o;f++){const I=l[f];I!==void 0&&(a[f]=I)}return this._onUpdate(a),this.emit("update",a),this;default:throw new Error(`Not support operator in '${this.toName()} ${e} Matrix2'`)}return(h==null?void 0:h.set(g))??g}identity(){const{cols:e,rows:t}=this,i=[];for(let r=0;r<e;r++)for(let n=0;n<t;n++){const o=n*e,a=r+o;i[a]=n+o===a?1:0}return this.set(i)}set(e){return this._operate("=",e)}copy(e){return this.set(e)}clone(){const e=new this.constructor;return e.set(this.toArray()),e}multiply(e,t){return this._operate("*",e,t)}_onUpdate(e){this.dirtyId++}toArray(e=!1){const{cols:t,rows:i,_array:r}=this;if(e){const n=[];for(let o=0;o<i;o++)for(let a=0;a<t;a++)n[o+a*t]=r[a+o*t];return n}return r.slice()}toName(){return`Matrix${this.rows}(${this.rows}x${this.cols})`}toJSON(){return this._array}}class Do extends Dt{constructor(A){super(4,4,A)}}const bo=Gt/180,Lh=180/Gt;function bt(s,A,e){return Math.max(s,Math.min(A,e))}function Se(s,A,e){return(1-e)*s+e*A}const Gh={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(s,A=20){if(!this.adaptive||!s||Number.isNaN(s))return A;let e=Math.ceil(s/this.maxLength);return e<this.minSegments?e=this.minSegments:e>this.maxSegments&&(e=this.maxSegments),e}};class xo extends Qt{constructor(A=0,e=0,t=0,i=0){super(4),this.set([A,e,t,i])}}class xs extends Dt{constructor(A){super(4,5,A)}hueRotate(A=0){const e=Math.sin(A),t=Math.cos(A),i=.213,r=.715,n=.072;return this.multiply([i+t*(1-i)+e*-.213,r+t*-.715+e*-.715,n+t*-.072+e*(1-n),0,0,i+t*-.213+e*.143,r+t*(1-r)+e*.14,n+t*-.072+e*-.283,0,0,i+t*-.213+e*-.787,r+t*-.715+e*r,n+t*(1-n)+e*n,0,0,0,0,0,1,0])}saturate(A=1){const e=(A-1)*2/3+1,t=(e-1)*-.5;return this.multiply([e,t,t,0,0,t,e,t,0,0,t,t,e,0,0,0,0,0,1,0])}brightness(A=1){const e=A;return this.multiply([e,0,0,0,0,0,e,0,0,0,0,0,e,0,0,0,0,0,1,0])}contrast(A=1){const e=A,t=-128*(e-1);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}invert(A=1){const e=Se(1,-1,A),t=Se(0,255,A);return this.multiply([e,0,0,0,t,0,e,0,0,t,0,0,e,0,t,0,0,0,1,0])}sepia(A=1){const e=bt(0,A,1);return this.multiply([Se(1,.393,e),Se(0,.7689999,e),Se(0,.18899999,e),0,0,Se(0,.349,e),Se(1,.6859999,e),Se(0,.16799999,e),0,0,Se(0,.272,e),Se(0,.5339999,e),Se(1,.13099999,e),0,0,0,0,0,1,0])}opacity(A=1){return this.multiply([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,A,0])}grayscale(A=1){const e=bt(0,A,1),t=Se(1,.3,e),i=Se(0,.3,e),r=Se(1,.59,e),n=Se(0,.59,e),o=Se(1,.11,e),a=Se(0,.11,e);return this.multiply([t,n,a,0,0,i,r,a,0,0,i,n,o,0,0,0,0,0,1,0])}multiply(A){const e=A,t=this._array;return this.set([t[0]*e[0]+t[1]*e[5]+t[2]*e[10]+t[3]*e[15],t[0]*e[1]+t[1]*e[6]+t[2]*e[11]+t[3]*e[16],t[0]*e[2]+t[1]*e[7]+t[2]*e[12]+t[3]*e[17],t[0]*e[3]+t[1]*e[8]+t[2]*e[13]+t[3]*e[18],t[0]*e[4]+t[1]*e[9]+t[2]*e[14]+t[3]*e[19]+t[4],t[5]*e[0]+t[6]*e[5]+t[7]*e[10]+t[8]*e[15],t[5]*e[1]+t[6]*e[6]+t[7]*e[11]+t[8]*e[16],t[5]*e[2]+t[6]*e[7]+t[7]*e[12]+t[8]*e[17],t[5]*e[3]+t[6]*e[8]+t[7]*e[13]+t[8]*e[18],t[5]*e[4]+t[6]*e[9]+t[7]*e[14]+t[8]*e[19]+t[9],t[10]*e[0]+t[11]*e[5]+t[12]*e[10]+t[13]*e[15],t[10]*e[1]+t[11]*e[6]+t[12]*e[11]+t[13]*e[16],t[10]*e[2]+t[11]*e[7]+t[12]*e[12]+t[13]*e[17],t[10]*e[3]+t[11]*e[8]+t[12]*e[13]+t[13]*e[18],t[10]*e[4]+t[11]*e[9]+t[12]*e[14]+t[13]*e[19]+t[14],t[15]*e[0]+t[16]*e[5]+t[17]*e[10]+t[18]*e[15],t[15]*e[1]+t[16]*e[6]+t[17]*e[11]+t[18]*e[16],t[15]*e[2]+t[16]*e[7]+t[17]*e[12]+t[18]*e[17],t[15]*e[3]+t[16]*e[8]+t[17]*e[13]+t[18]*e[18],t[15]*e[4]+t[16]*e[9]+t[17]*e[14]+t[18]*e[19]+t[19]])}toMatrix4(){const A=this._array;return new Do([A[0],A[1],A[2],A[3],A[5],A[6],A[7],A[8],A[10],A[11],A[12],A[13],A[15],A[16],A[17],A[18]])}toVector4(){const A=this._array;return new xo(A[4]/255,A[9]/255,A[14]/255,A[19]/255)}}class Oh extends Dt{constructor(A){super(2,2,A)}}let Ss=class extends Dt{constructor(A){super(3,3,A)}invert(){const[A,e,t,i,r,n,o,a,l]=this._array,h=l*r-n*a,g=n*o-l*i,f=a*i-r*o,I=A*h+e*g+t*f;if(I===0)return this.set([0,0,0,0,0,0,0,0,0]);const d=1/I;return this.set([h*d,(t*a-l*e)*d,(n*e-t*r)*d,g*d,(l*A-t*o)*d,(t*i-n*A)*d,f*d,(e*o-a*A)*d,(r*A-e*i)*d])}};class So extends Ss{constructor(A=0,e=0,t=0,i=0,r=!1){super(),this._x=A,this._y=e,this._width=t,this._height=i,this._flipY=r,this._performUpdateArray()}flipY(A){return this._flipY!==A&&(this._flipY=A,this._performUpdateArray()),this}translate(A,e){return(this._x!==A||this._y!==e)&&(this._x=A,this._y=e,this._performUpdateArray()),this}resize(A,e){return(this._width!==A||this._height!==e)&&(this._width=A,this._height=e,this._performUpdateArray()),this}_performUpdateArray(){const A=this._width,e=this._height;if(!A||!e)return;const t=this._x,i=this._y,r=this._flipY?-1:1,n=1/A*2,o=r*(1/e*2),a=-1-t*n,l=-r-i*o;this.set([n,0,a,0,o,l,0,0,1])}}let yt=class us extends Qt{get x(){return this._array[0]}set x(A){const[e,t]=this._array;e!==A&&this.set(A,t)}get y(){return this._array[1]}set y(A){const[e,t]=this._array;t!==A&&this.set(e,A)}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}get left(){return this.x}set left(A){this.x=A}get top(){return this.y}set top(A){this.y=A}constructor(A=0,e){super(2),this.set(typeof A=="number"?[A,e??A]:A)}update(A,e){const[t,i]=this._array;return(t!==A||i!==e)&&this.set(A,e),this}getLength(){const[A,e]=this._array;return Math.sqrt(A*A+e*e)}getAngle(){const[A,e]=this._array;return Math.atan2(-A,-e)+Math.PI}distanceTo(A){return Math.hypot(A.x-this.x,A.y-this.y)}normalize(){const[A,e]=this._array,t=1/(this.getLength()||1);return this.set(A*t,e*t),this}static lerp(A,e,t){return new us(e).clone().sub(new us(A)).multiply(t).add(new us(A))}};class Ms{constructor(...A){u(this,"end",new yt);u(this,"position");u(this,"size");const e=new yt,t=new yt;switch(A.length){case 0:break;case 1:e.set(A[0].position),t.set(A[0].size);break;case 2:e.set(A[0]),t.set(A[1]);break;default:e.set(A[0],A[1]),t.set(A[2],A[3]);break}this.update=this.update.bind(this),this.position=e.on("update",this.update),this.size=t.on("update",this.update),this.update()}get x(){return this.position.x}get y(){return this.position.y}get left(){return this.position.x}get top(){return this.position.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get width(){return this.size.x}get height(){return this.size.y}update(){return this.end.set(this.position.x+this.size.x,this.position.y+this.size.y),this}toArray(){return[this.x,this.y,this.width,this.height]}}const IA=class IA extends Ss{premultiply(A){return A.multiply(this,this)}skewX(A){return this.skew(A,1)}skewY(A){return this.skew(1,A)}skew(A,e){return this.premultiply(IA._t2d.makeSkew(A,e))}makeSkew(A,e){const t=Math.cos(e),i=Math.sin(e),r=-Math.sin(-A),n=Math.cos(-A);return this.set([t,r,0,i,n,0,0,0,1]),this}translateX(A){return this.translate(A,0)}translateY(A){return this.translate(0,A)}translateZ(A){return this.translate(0,0,A)}translate3d(A,e,t){return this.translate(A,e,t)}translate(A,e,t=0){return this.premultiply(IA._t2d.makeTranslation(A,e,t))}makeTranslation(A,e,t=0){return this.set([1,0,A,0,1,e,0,0,1]),this}scaleX(A){return this.scale(A,1)}scaleY(A){return this.scale(1,A)}scale3d(A,e,t=1){return this.scale(A,e,t)}scale(A,e,t=1){return this.premultiply(IA._t2d.makeScale(A,e,t))}makeScale(A,e,t=1){return this.set([A,0,0,0,e,0,0,0,t]),this}rotateX(A){return this.scaleY(this._rotateToScale(A))}rotateY(A){return this.scaleX(this._rotateToScale(A))}rotateZ(A){return this.rotate(A)}rotate(A){return this.premultiply(IA._t2d.makeRotation(A))}rotate3d(A,e,t,i){const[r,n,o]=this._rotate3d(A,e,t,i);return r&&this.rotateX(r),n&&this.rotateY(n),o&&this.rotateZ(o),this}_rotateToScale(A){const e=A/tt;return e<=.5?e*-4+1:(e-1)*4+1}_rotate3d(A,e,t,i){if(A===1&&e===0&&t===0)return[i,0,0];if(A===0&&e===1&&t===0)return[0,i,0];if(A===0&&e===0)return[0,0,i];{const r=Math.cos(i),n=Math.sin(i),o=r+A*A*(1-r),a=A*e*(1-r)-t*n,l=A*t*(1-r)+e*n,h=r+e*e*(1-r),g=e*t*(1-r)-A*n,f=r+t*t*(1-r),I=-Math.atan2(-g,h),d=-Math.atan2(l,Math.sqrt(g*g+f*f)),C=-Math.atan2(-a,o);return[I,d,C]}}makeRotation(A){const e=Math.cos(A),t=Math.sin(A);return this.set([e,-t,0,t,e,0,0,0,1]),this}applyToPoint(A,e){const{a:t,c:i,tx:r,b:n,d:o,ty:a}=this.toObject();return[t*A+i*e+r,n*A+o*e+a]}inverse(){return this.clone().invert()}isIdentity(){const{a:A,b:e,c:t,d:i,tx:r,ty:n}=this.toObject();return A===1&&e===0&&t===0&&i===1&&r===0&&n===0}toObject(){const[A,e,t,i,r,n,,,o]=this._array;return{a:A,c:e,tx:t,b:i,d:r,ty:n,tz:o}}};u(IA,"_t2d",new IA);let dt=IA;class Hh extends Qt{constructor(){super(3)}}var Jh=Object.defineProperty,Mo=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&Jh(A,e,i),i};class ar extends Jt{constructor(){super();u(this,"_starting",!1);u(this,"_nextDeltaTime",0);this._onNextTick=this._onNextTick.bind(this)}get starting(){return this._starting}get spf(){return this.fps?Math.floor(1e3/this.fps):0}start(e){this._starting||(this._starting=!0,this.off("process"),this.on("process",e),xe.on(this._onNextTick,{sort:0}))}stop(){this._starting&&(this._starting=!1,xe.off(this._onNextTick,{sort:0}))}_onNextTick(){const e=xe.elapsed*this.speed;if((this._nextDeltaTime-=e)<=0){const i=(this._nextDeltaTime=this.spf)||e;this.emit("process",i)}}free(){super.free(),this.stop()}}Mo([S({default:24})],ar.prototype,"fps"),Mo([S({default:1})],ar.prototype,"speed");class Ro{constructor(){u(this,"view");u(this,"pixelRatio",Cs);u(this,"screen",{x:0,y:0,width:0,height:0});u(this,"related",new kA)}getRelated(A,e){let t=this.related.get(A);return t||(e?(this.related.set(A,t=e()),t):(console.warn("Failed to get related",A),null))}resize(A,e,t=!0){this.view&&(this.view.width=Math.floor(A*this.pixelRatio),this.view.height=Math.floor(e*this.pixelRatio)),this.screen.width=A,this.screen.height=e,t&&this.view&&(this.view.style.width=`${A}px`,this.view.style.height=`${e}px`)}}var NA=(s=>(s.NORMAL="normal",s.ADD="add",s.MULTIPLY="multiply",s.SCREEN="screen",s.NONE="none",s.NORMAL_NPM="normal_npm",s.ADD_NPM="add_npm",s.SCREEN_NPM="screen_npm",s.SRC_IN="src_in",s.SRC_OUT="src_out",s.SRC_ATOP="src_atop",s.DST_OVER="dst_over",s.DST_IN="dst_in",s.DST_OUT="dst_out",s.DST_ATOP="dst_atop",s.XOR="xor",s.SUBTRACT="subtract",s))(NA||{});function Po(s){return{normal:[s.ONE,s.ONE_MINUS_SRC_ALPHA],add:[s.ONE,s.ONE],multiply:[s.DST_COLOR,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],screen:[s.ONE,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],none:[0,0],normal_npm:[s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],add_npm:[s.SRC_ALPHA,s.ONE,s.ONE,s.ONE],screen_npm:[s.SRC_ALPHA,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],src_in:[s.DST_ALPHA,s.ZERO],src_out:[s.ONE_MINUS_DST_ALPHA,s.ZERO],src_atop:[s.DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],dst_over:[s.ONE_MINUS_DST_ALPHA,s.ONE],dst_in:[s.ZERO,s.SRC_ALPHA],dst_out:[s.ZERO,s.ONE_MINUS_SRC_ALPHA],dst_atop:[s.ONE_MINUS_DST_ALPHA,s.SRC_ALPHA],xor:[s.ONE_MINUS_DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],subtract:[s.ONE,s.ONE,s.ONE,s.ONE,s.FUNC_REVERSE_SUBTRACT,s.FUNC_ADD]}}class It{get gl(){return this._renderer.gl}install(A){this._renderer=A}onUpdateContext(){}flush(){}reset(){}free(){}}const jr=class jr{constructor(A){u(this,"_blendMode",NA.NORMAL);u(this,"_polygonOffset",0);u(this,"bitmap",0);if(A)for(const e in A)this[e]=A[e]}static _init(){this._properties.forEach((A,e)=>{Object.defineProperty(this.prototype,A,{get(){return!!(this.bitmap&1<<e)},set(t){!!(this.bitmap&1<<e)!==t&&(this.bitmap^=1<<e)},enumerable:!0,configurable:!0})})}static for2D(){const A=new jr;return A.depthTest=!1,A.blend=!0,A}get blendMode(){return this._blendMode}set blendMode(A){this.blend=A!==NA.NONE,this._blendMode=A}get polygonOffset(){return this._polygonOffset}set polygonOffset(A){this.offsets=!!A,this._polygonOffset=A}};u(jr,"_properties",["blend","offsets","culling","depthTest","clockwiseFrontFace","depthMask"]);let CA=jr;CA._init();class Uo extends It{constructor(){super(...arguments);u(this,"_blendEq",!1);u(this,"_setters",CA._properties.map(e=>this[`set${e.replace(/^\S/,t=>t.toUpperCase())}`]));u(this,"boundStateBitmap",0);u(this,"boundBlendMode");u(this,"blendModes");u(this,"defaultState",new CA({blend:!0}))}install(e){super.install(e),e.state=this}onUpdateContext(){super.onUpdateContext(),this.blendModes=Po(this._renderer.gl)}toggle(e,t){this._renderer.gl[t?"enable":"disable"](e)}setBlend(e){this.toggle(this._renderer.gl.BLEND,e)}setOffsets(e){this.toggle(this._renderer.gl.POLYGON_OFFSET_FILL,e)}setCulling(e){this.toggle(this._renderer.gl.CULL_FACE,e)}setDepthTest(e){this.toggle(this._renderer.gl.DEPTH_TEST,e)}setDepthMask(e){this._renderer.gl.depthMask(e)}setClockwiseFrontFace(e){const t=this._renderer.gl;t.frontFace(t[e?"CW":"CCW"])}setBlendMode(e){if(e===this.boundBlendMode)return;this.boundBlendMode=e;const t=this.blendModes[e],i=this._renderer.gl;t.length===2?i.blendFunc(t[0],t[1]):i.blendFuncSeparate(t[0],t[1],t[2],t[3]),t.length===6?(this._blendEq=!0,i.blendEquationSeparate(t[4],t[5])):this._blendEq&&(this._blendEq=!1,i.blendEquationSeparate(i.FUNC_ADD,i.FUNC_ADD))}setPolygonOffset(e,t){this._renderer.gl.polygonOffset(e,t)}bind(e){var t;if(this.boundStateBitmap!==e.bitmap){let i=this.boundStateBitmap^e.bitmap,r=0;for(;i;)i&1&&((t=this._setters[r])==null||t.call(this,!!(e.bitmap&1<<r))),i=i>>1,r++;this.boundStateBitmap=e.bitmap}e.blend&&this.setBlendMode(e.blendMode),e.offsets&&this.setPolygonOffset(1,e.polygonOffset)}reset(){super.reset();const e=this._renderer.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!1),this.bind(this.defaultState),this._blendEq=!0,this.setBlendMode(NA.NORMAL)}}class ko extends It{constructor(){super(...arguments);u(this,"_state",CA.for2D());u(this,"_batchSize",4096*4);u(this,"_drawCallUid",0);u(this,"_defaultModulate",4294967295);u(this,"_defaultBackgroundColor",0);u(this,"_defaultColorMatrixOffset",[0,0,0,0]);u(this,"_defaultColorMatrix",[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);u(this,"_batchables",[]);u(this,"_vertexCount",0);u(this,"_indexCount",0);u(this,"_attributeBuffer",[]);u(this,"_indexBuffers",[]);u(this,"_shaders",new Map);u(this,"_attributes",{aTextureId:{size:1,normalized:!0,type:"float"},aPosition:{size:2,normalized:!1,type:"float"},aUv:{size:2,normalized:!1,type:"float"},aModulate:{size:4,normalized:!0,type:"unsigned_byte"},aBackgroundColor:{size:4,normalized:!0,type:"unsigned_byte"},aDisableWrapMode:{size:4,normalized:!0,type:"float"},aColorMatrixOffset:{size:4,normalized:!1,type:"float"},aColorMatrix:{size:4,normalized:!1,type:"float"}});u(this,"_vertexSize",31)}install(e){super.install(e),e.batch2D=this}_getShader(e){let t=this._shaders.get(e);return t||this._shaders.set(e,t=this._createShader(e)),t}_createShader(e){const t=this._renderer,i=t.program.create({vert:`precision highp float;
2
2
  attribute float aTextureId;
3
3
  attribute vec2 aPosition;
4
4
  attribute vec2 aUv;
@@ -50,11 +50,11 @@ void main(void) {
50
50
  if (vTextureId < 0.0)
51
51
  {
52
52
  color = vec4(0.0, 0.0, 0.0, 0.0);
53
- }${Array.from({length:e},(h,c)=>{let f=" ";return c>=0&&(f+=`
54
- else `),c<e-1&&(f+=`
55
- if (vTextureId < ${c}.5)`),`${f}
53
+ }${Array.from({length:e},(h,g)=>{let f=" ";return g>=0&&(f+=`
54
+ else `),g<e-1&&(f+=`
55
+ if (vTextureId < ${g}.5)`),`${f}
56
56
  {
57
- color = texture2D(samplers[${c}], vUv);
57
+ color = texture2D(samplers[${g}], vUv);
58
58
  }`}).join("")}
59
59
 
60
60
  color += (1.0 - color.a) * vBackgroundColor;
@@ -64,9 +64,9 @@ void main(void) {
64
64
  color += vColorMatrixOffset;
65
65
  }
66
66
  gl_FragColor = color;
67
- }`}),s=t.buffer.create({target:"array_buffer",data:new Float32Array(1),usage:"dynamic_draw"}),n=t.buffer.create({target:"element_array_buffer",data:new Uint16Array(1),usage:"dynamic_draw"}),o={attributes:Object.fromEntries(Object.entries(this._attributes).map(([h,c])=>[h,{...c,buffer:s}])),elementArrayBuffer:n},a=t.vertexArray.create(i,o),l=new Int32Array(Array.from({length:e},(h,c)=>c));return{update:(h,c)=>{t.vertexArray.bind(a??o),t.buffer.update(s,{target:"array_buffer",data:h}),t.buffer.update(n,{target:"element_array_buffer",data:c})},draw:h=>{const c=this._renderer;c.program.bind(i),c.program.updateUniforms(i,{samplers:l,modulate:[1,1,1,1],translationMatrix:[1,0,0,0,1,0,0,0,1],...c.program.uniforms}),c.vertexArray.bind(a??o),c.draw(h)}}}render(e){const{vertices:t,indices:i}=e,s=t.length/2;this._vertexCount+s>this._batchSize&&this.flush(),this._vertexCount+=s,this._indexCount+=i.length,this._batchables.push(e)}flush(){if(super.flush(),this._vertexCount===0)return;const e=this._vertexCount,t=this._indexCount,i=this._batchables;this._batchables=[],this._vertexCount=0,this._indexCount=0;const s=this._renderer.texture.maxUnits,n=this._getAttributeBuffer(e),o=new Float32Array(n),a=new Uint32Array(n),l=this._getIndexBuffer(t);let h=0,c=0;const f=[];for(let I=i.length,C={id:++this._drawCallUid},B=[],P=new Map,S=0,_=0,R=0;R<I;R++){const v=i[R].texture,w=R===I-1;if(!v||P.has(v)){if(!w)continue}else B.push(v),P.set(v,S++);if(w||S>=s){C.textures=B,C.textureLocationMap=P,S=0,C.first=c;for(let D=_;D<=R;D++){const{indices:x,vertices:L,uvs:Z=[],texture:Y,modulate:T=this._defaultModulate,backgroundColor:X=this._defaultBackgroundColor,colorMatrix:k=this._defaultColorMatrix,colorMatrixOffset:j=this._defaultColorMatrixOffset,blendMode:te=kA.NORMAL,disableWrapMode:J=!1}=i[D],H=(Y?P.get(Y):-1)??-1;_<D&&C.blendMode!==te&&(C.count=c-C.first,f.push(C),_=D,C={id:++this._drawCallUid},C.textures=B,C.first=c);const ne=h/this._vertexSize;for(let q=L.length,W=0;W<q;W+=2){o[h++]=H,o[h++]=L[W],o[h++]=L[W+1],o[h++]=Z[W]??0,o[h++]=Z[W+1]??0,a[h++]=T,a[h++]=X,o[h++]=J?1:0,o[h++]=0,o[h++]=0,o[h++]=0;for(let oe=0;oe<4;oe++)o[h++]=j[oe]??0;for(let oe=0;oe<16;oe++)o[h++]=k[oe]??0}for(let q=x.length,W=0;W<q;W++)l[c++]=ne+x[W];C.blendMode=te}_=R+1,C.count=c-C.first,f.push(C),C={id:++this._drawCallUid},B=[],P=new Map}}const d=this._getShader(s);d.update(n,l);for(let I=f.length,C=0;C<I;C++){const B=f[C],{first:P=0,textures:S,textureLocationMap:_}=B;for(let R=S.length,v=0;v<R;v++){const w=S[v],D=_.get(w);D!==void 0&&this._renderer.texture.bind({target:"texture_2d",location:D,value:w})}this._state.blendMode=B.blendMode,this._renderer.state.bind(this._state),d.draw({mode:"triangles",count:B.count,first:P,bytesPerElement:2})}}_getAttributeBuffer(e){const t=Rs(Math.ceil(e/8)),i=Ps(t),s=t*8;this._attributeBuffer.length<=i&&(this._indexBuffers.length=i+1);let n=this._attributeBuffer[s];return n||(this._attributeBuffer[s]=n=new ArrayBuffer(s*this._vertexSize*4)),n}_getIndexBuffer(e){const t=Rs(Math.ceil(e/12)),i=Ps(t),s=t*12;this._indexBuffers.length<=i&&(this._indexBuffers.length=i+1);let n=this._indexBuffers[i];return n||(this._indexBuffers[i]=n=new Uint16Array(s)),n}}function Rs(r){return r+=r===0?1:0,--r,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r+1}function Ps(r){let A=(r>65535?1:0)<<4;r>>>=A;let e=(r>255?1:0)<<3;return r>>>=e,A|=e,e=(r>15?1:0)<<2,r>>>=e,A|=e,e=(r>3?1:0)<<1,r>>>=e,A|=e,A|r>>1}class Fo extends It{constructor(){super(...arguments);u(this,"boundArrayBuffer",null);u(this,"boundTarget","array_buffer")}install(e){super.install(e),e.buffer=this}create(e){const t=this.gl.createBuffer();if(!t)throw new Error("failed to create");return e&&(this.bind({target:e.target,value:t}),this.update(e)),t}getMeta(e){return this._renderer.getRelated(e,()=>({id:Zn(e),length:0,byteLength:0,bytesPerElement:0}))}update(...e){if(e.length>1){this.bind({target:e[1].target,value:e[0]}),this.update(e[1]);return}const t=e[0],i=(t.target??this.boundTarget)==="array_buffer"?this.boundArrayBuffer:this._renderer.vertexArray.boundVertexArray.elementArrayBuffer;if(!i)return;const s=this.getMeta(i);Object.assign(s,{target:t.target,usage:t.usage});const n=s.target??this.boundTarget,o=s.usage??"static_draw",a=t.data,l=this.gl;let h;Array.isArray(a)?n==="array_buffer"?h=new Float32Array(a):h=new Uint32Array(a):h=a;const c=this._renderer.getBindPoint(n);h&&h.byteLength<=s.byteLength?l.bufferSubData(c,0,h):(l.bufferData(c,h,this._renderer.getBindPoint(o)),s.length=(h==null?void 0:h.length)??0,s.byteLength=(h==null?void 0:h.byteLength)??0,s.bytesPerElement=s.length?s.byteLength/s.length:0)}bind(e){let{target:t,value:i}=e;if(i){const n=this.getMeta(i);t??(t=n.target??this.boundTarget),n.target=t}else t??(t=this.boundTarget);const s=this._renderer.getBindPoint(t);this._renderer.gl.bindBuffer(s,i),t==="array_buffer"?this.boundArrayBuffer=i:this._renderer.vertexArray.boundVertexArray.elementArrayBuffer=i,this.boundTarget=t}unbind(e){return this.bind({target:e,value:null})}reset(){super.reset(),this.boundArrayBuffer=null,this.boundTarget="array_buffer"}}class To extends It{constructor(){super(...arguments);u(this,"boundFramebuffer",null);u(this,"_msaaSamples",[]);u(this,"_hasMRT",!0);u(this,"_writeDepthTexture",!0)}install(e){super.install(e),e.framebuffer=this}onUpdateContext(){if(this._hasMRT=!0,this._writeDepthTexture=!0,this._renderer.version===1){const e=this._renderer.gl,t=this._renderer.extensions.drawBuffers,i=this._renderer.extensions.depthTexture;t?e.drawBuffers=s=>t.drawBuffersWEBGL(s):(this._hasMRT=!1,e.drawBuffers=()=>{}),i||(this._writeDepthTexture=!1)}else{const e=this._renderer.gl;this._msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}}create(e){const t=this._renderer.gl.createFramebuffer();if(!t)throw new Error("Unable to create framebuffer");return e&&(this.bind(t),this.update(e)),t}getMeta(e){return this._renderer.getRelated(e,()=>({width:0,height:0,mipLevel:0,stencil:!1,depth:!1,depthTexture:null,colorTextures:[],multisample:0}))}update(...e){if(e.length>1)return this.bind(e[0]),this.update(e[1]);const t=this.boundFramebuffer;if(!t)return;const i=e[0],s=this.getMeta(t);Object.assign(s,{...i});const n=this._renderer.gl;let o=s.colorTextures.length;"drawBuffers"in n||(o=Math.min(o,1));for(let a=0;a<o;a++){const l=s.colorTextures[a];this._renderer.texture.bind({location:0,target:"texture_2d",value:l,forceUpdateLocation:!0}),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+a,n.TEXTURE_2D,l,s.mipLevel),this._renderer.texture.unbind(l)}if(o>1&&n.drawBuffers(s.colorTextures.map((a,l)=>n.COLOR_ATTACHMENT0+l)),s.depthTexture&&(this._renderer.version>1||this._renderer.extensions.depthTexture)&&(this._renderer.texture.bind({location:0,target:"texture_2d",value:s.depthTexture,forceUpdateLocation:!0}),n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,s.depthTexture,s.mipLevel),this._renderer.texture.unbind(s.depthTexture)),(s.stencilBuffer||s.stencil||s.depth)&&!(s.depthTexture&&this._writeDepthTexture)){s.stencilBuffer??(s.stencilBuffer=n.createRenderbuffer()),n.bindRenderbuffer(n.RENDERBUFFER,s.stencilBuffer);const{attachment:a,format:l}=this._getAttachmentAndFormat(s);s.msaaBuffer?n.renderbufferStorageMultisample(n.RENDERBUFFER,s.multisample,l,s.width,s.height):n.renderbufferStorage(n.RENDERBUFFER,l,s.width*this._renderer.pixelRatio,s.height*this._renderer.pixelRatio),n.framebufferRenderbuffer(n.FRAMEBUFFER,a,n.RENDERBUFFER,s.stencilBuffer)}else s.stencilBuffer&&(n.deleteRenderbuffer(s.stencilBuffer),s.stencilBuffer=null)}_getAttachmentAndFormat(e){const t=this.gl;let i,s;return this._renderer.version===1?(i=t.DEPTH_STENCIL_ATTACHMENT,s=t.DEPTH_STENCIL):e.depth&&e.stencil?(i=t.DEPTH_STENCIL_ATTACHMENT,s=t.DEPTH24_STENCIL8):e.depth?(i=t.DEPTH_ATTACHMENT,s=t.DEPTH_COMPONENT24):(i=t.STENCIL_ATTACHMENT,s=t.STENCIL_INDEX8),{attachment:i,format:s}}resize(e,t,i){const s=this.gl,n=this.getMeta(e);if(Object.assign(n,{width:t,height:i}),n.stencil){const{format:a}=this._getAttachmentAndFormat(n);s.bindRenderbuffer(s.RENDERBUFFER,n.stencil),n.msaaBuffer?s.renderbufferStorageMultisample(s.RENDERBUFFER,n.multisample,a,n.width,n.height):s.renderbufferStorage(s.RENDERBUFFER,a,n.width,n.height)}let o=n.colorTextures.length;s.drawBuffers||(o=Math.min(o,1));for(let a=0;a<o;a++){const l=n.colorTextures[a];this._renderer.texture.update(l,{value:{pixels:null,width:n.width,height:n.height}}),a===0&&n.msaaBuffer&&(s.bindRenderbuffer(s.RENDERBUFFER,n.msaaBuffer),s.renderbufferStorageMultisample(s.RENDERBUFFER,n.multisample,s.RGBA,n.width,n.height))}n.depthTexture&&this._renderer.texture.update(n.depthTexture,{value:{pixels:null,width:n.width,height:n.height}})}bind(e){const t=this._renderer.gl,i=e;if({value:this.boundFramebuffer!==i}.value&&(t.bindFramebuffer(t.FRAMEBUFFER,i),this.boundFramebuffer=i),i){const o=this.getMeta(i);for(let h=0;h<o.colorTextures.length;h++)this._renderer.texture.unbind(o.colorTextures[h]);o.depthTexture&&this._renderer.texture.unbind(o.depthTexture);const a=o.width>>o.mipLevel,l=o.height>>o.mipLevel;this._renderer.viewport.bind({x:0,y:0,width:a*this._renderer.pixelRatio,height:l*this._renderer.pixelRatio})}else this._renderer.viewport.bind({x:0,y:0,width:this._renderer.screen.width*this._renderer.pixelRatio,height:this._renderer.screen.height*this._renderer.pixelRatio})}forceStencil(){const e=this.boundFramebuffer;if(!e)return;const t=this.getMeta(e);if(!t||t.stencilBuffer)return;const i=this._renderer.gl;t.stencilBuffer=i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,t.stencilBuffer);let s,n;this._renderer.version===1?(s=i.DEPTH_STENCIL_ATTACHMENT,n=i.DEPTH_STENCIL):t.depth?(s=i.DEPTH_STENCIL_ATTACHMENT,n=i.DEPTH24_STENCIL8):(s=i.STENCIL_ATTACHMENT,n=i.STENCIL_INDEX8),t.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,t.multisample,n,t.width*this._renderer.pixelRatio,t.height*this._renderer.pixelRatio):i.renderbufferStorage(i.RENDERBUFFER,n,t.width*this._renderer.pixelRatio,t.height*this._renderer.pixelRatio),i.framebufferRenderbuffer(i.FRAMEBUFFER,s,i.RENDERBUFFER,t.stencilBuffer)}reset(){super.reset(),this.boundFramebuffer=null}}class Lo extends It{constructor(){super(...arguments);u(this,"stack",[])}install(e){super.install(e),e.mask=this}get length(){return this.stack.length}get last(){return this.stack[this.length-1]}push(e,t){const i={source:e,mask:t};this.stack.push(i),typeof i.mask=="number"?this.pushColorMask(i):"render"in i.mask?this._renderer.stencil.push(i):this._renderer.scissor.push(i)}pop(e){const t=this.stack.pop();!t||t.source!==e||(typeof t.mask=="number"?this.popColorMask(t):"render"in t.mask?this._renderer.stencil.pop(t):this._renderer.scissor.pop(t))}pushColorMask(e){const t=e.preComputedColor??15,i=e.preComputedColor=t&e.mask;i!==t&&this.useColorMask(i)}popColorMask(e){const t=e.preComputedColor??15,i=this.length>0?this.last.preComputedColor??15:15;i!==t&&this.useColorMask(i)}useColorMask(e){this._renderer.gl.colorMask((e&1)!==0,(e&2)!==0,(e&4)!==0,(e&8)!==0)}}class Go extends It{constructor(){super(...arguments);u(this,"boundProgram",null);u(this,"uniforms",{projectionMatrix:[1,0,0,0,1,0,0,0,1]})}install(e){super.install(e),e.program=this}create(e){const t=this.gl.createProgram();if(!t)throw new Error("Unable to create program");return e&&this.update(t,e),t}getMeta(e){return this._renderer.getRelated(e,()=>({attributes:new Map,uniforms:new Map,boundUniforms:new UA}))}update(...e){if(e.length>1){const l=this.boundProgram;this.boundProgram=e[0],this.update(e[1]),this.boundProgram=l;return}const t=e[0],i=this.boundProgram;if(!i)return;const s=this.gl,n=this.getMeta(i),o=this.createShader(t.vert,"vertex_shader"),a=this.createShader(t.frag,"fragment_shader");if(s.attachShader(i,o),s.attachShader(i,a),s.linkProgram(i),s.deleteShader(o),s.deleteShader(a),!s.getProgramParameter(i,s.LINK_STATUS))throw new Error(`Unable to link program: ${s.getProgramInfoLog(i)}`);n.attributes.clear(),n.uniforms.clear();for(let l=s.getProgramParameter(i,s.ACTIVE_ATTRIBUTES),h=0;h<l;h++){const c=s.getActiveAttrib(i,h);if(!c||c.name.startsWith("gl_"))continue;const f=this._renderer.bindPoints.get(c.type)??String(c.type);n.attributes.set(c.name,{type:f,name:c.name,size:Jh(f),location:s.getAttribLocation(i,c.name)})}for(let l=s.getProgramParameter(i,s.ACTIVE_UNIFORMS),h=0;h<l;h++){const c=s.getActiveUniform(i,h);if(!c)continue;const f=c.name.replace(/\[.*?\]$/,"");let d=s.getUniformLocation(i,f);d||(d=s.getUniformLocation(i,c.name)),n.uniforms.set(f,{name:f,index:h,type:this._renderer.bindPoints.get(c.type)??String(c.type),size:c.size,isArray:f!==c.name,location:d})}}bind(e){const t=this.gl;({value:this.boundProgram!==e}).value&&(t.useProgram(e),this.boundProgram=e)}createShader(e,t){const i=this.gl,s=i.createShader(this._renderer.getBindPoint(t));if(!s)throw new Error("Unable to create shader");if(i.shaderSource(s,e),i.compileShader(s),!i.getShaderParameter(s,i.COMPILE_STATUS))throw new Error(`Unable to compiling shader :
67
+ }`}),r=t.buffer.create({target:"array_buffer",data:new Float32Array(1),usage:"dynamic_draw"}),n=t.buffer.create({target:"element_array_buffer",data:new Uint16Array(1),usage:"dynamic_draw"}),o={attributes:Object.fromEntries(Object.entries(this._attributes).map(([h,g])=>[h,{...g,buffer:r}])),elementArrayBuffer:n},a=t.vertexArray.create(i,o),l=new Int32Array(Array.from({length:e},(h,g)=>g));return{update:(h,g)=>{t.vertexArray.bind(a??o),t.buffer.update(r,{target:"array_buffer",data:h}),t.buffer.update(n,{target:"element_array_buffer",data:g})},draw:h=>{const g=this._renderer;g.program.bind(i),g.program.updateUniforms(i,{samplers:l,modulate:[1,1,1,1],translationMatrix:[1,0,0,0,1,0,0,0,1],...g.program.uniforms}),g.vertexArray.bind(a??o),g.draw(h)}}}render(e){const{vertices:t,indices:i}=e,r=t.length/2;this._vertexCount+r>this._batchSize&&this.flush(),this._vertexCount+=r,this._indexCount+=i.length,this._batchables.push(e)}flush(){if(super.flush(),this._vertexCount===0)return;const e=this._vertexCount,t=this._indexCount,i=this._batchables;this._batchables=[],this._vertexCount=0,this._indexCount=0;const r=this._renderer.texture.maxUnits,n=this._getAttributeBuffer(e),o=new Float32Array(n),a=new Uint32Array(n),l=this._getIndexBuffer(t);let h=0,g=0;const f=[];for(let d=i.length,C={id:++this._drawCallUid},B=[],M=new Map,R=0,_=0,P=0;P<d;P++){const v=i[P].texture,w=P===d-1;if(!v||M.has(v)){if(!w)continue}else B.push(v),M.set(v,R++);if(w||R>=r){C.textures=B,C.textureLocationMap=M,R=0,C.first=g;for(let D=_;D<=P;D++){const{indices:x,vertices:L,uvs:$=[],texture:K,modulate:J=this._defaultModulate,backgroundColor:Z=this._defaultBackgroundColor,colorMatrix:Y=this._defaultColorMatrix,colorMatrixOffset:O=this._defaultColorMatrixOffset,blendMode:Ae=NA.NORMAL,disableWrapMode:G=!1}=i[D],W=(K?M.get(K):-1)??-1;_<D&&C.blendMode!==Ae&&(C.count=g-C.first,f.push(C),_=D,C={id:++this._drawCallUid},C.textures=B,C.first=g);const oe=h/this._vertexSize;for(let q=L.length,j=0;j<q;j+=2){o[h++]=W,o[h++]=L[j],o[h++]=L[j+1],o[h++]=$[j]??0,o[h++]=$[j+1]??0,a[h++]=J,a[h++]=Z,o[h++]=G?1:0,o[h++]=0,o[h++]=0,o[h++]=0;for(let se=0;se<4;se++)o[h++]=O[se]??0;for(let se=0;se<16;se++)o[h++]=Y[se]??0}for(let q=x.length,j=0;j<q;j++)l[g++]=oe+x[j];C.blendMode=Ae}_=P+1,C.count=g-C.first,f.push(C),C={id:++this._drawCallUid},B=[],M=new Map}}const I=this._getShader(r);I.update(n,l);for(let d=f.length,C=0;C<d;C++){const B=f[C],{first:M=0,textures:R,textureLocationMap:_}=B;for(let P=R.length,v=0;v<P;v++){const w=R[v],D=_.get(w);D!==void 0&&this._renderer.texture.bind({target:"texture_2d",location:D,value:w})}this._state.blendMode=B.blendMode,this._renderer.state.bind(this._state),I.draw({mode:"triangles",count:B.count,first:M,bytesPerElement:2})}}_getAttributeBuffer(e){const t=Rs(Math.ceil(e/8)),i=Ps(t),r=t*8;this._attributeBuffer.length<=i&&(this._indexBuffers.length=i+1);let n=this._attributeBuffer[r];return n||(this._attributeBuffer[r]=n=new ArrayBuffer(r*this._vertexSize*4)),n}_getIndexBuffer(e){const t=Rs(Math.ceil(e/12)),i=Ps(t),r=t*12;this._indexBuffers.length<=i&&(this._indexBuffers.length=i+1);let n=this._indexBuffers[i];return n||(this._indexBuffers[i]=n=new Uint16Array(r)),n}}function Rs(s){return s+=s===0?1:0,--s,s|=s>>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s+1}function Ps(s){let A=(s>65535?1:0)<<4;s>>>=A;let e=(s>255?1:0)<<3;return s>>>=e,A|=e,e=(s>15?1:0)<<2,s>>>=e,A|=e,e=(s>3?1:0)<<1,s>>>=e,A|=e,A|s>>1}class No extends It{constructor(){super(...arguments);u(this,"boundArrayBuffer",null);u(this,"boundTarget","array_buffer")}install(e){super.install(e),e.buffer=this}create(e){const t=this.gl.createBuffer();if(!t)throw new Error("failed to create");return e&&(this.bind({target:e.target,value:t}),this.update(e)),t}getMeta(e){return this._renderer.getRelated(e,()=>({id:jn(e),length:0,byteLength:0,bytesPerElement:0}))}update(...e){if(e.length>1){this.bind({target:e[1].target,value:e[0]}),this.update(e[1]);return}const t=e[0],i=(t.target??this.boundTarget)==="array_buffer"?this.boundArrayBuffer:this._renderer.vertexArray.boundVertexArray.elementArrayBuffer;if(!i)return;const r=this.getMeta(i);Object.assign(r,{target:t.target,usage:t.usage});const n=r.target??this.boundTarget,o=r.usage??"static_draw",a=t.data,l=this.gl;let h;Array.isArray(a)?n==="array_buffer"?h=new Float32Array(a):h=new Uint32Array(a):h=a;const g=this._renderer.getBindPoint(n);h&&h.byteLength<=r.byteLength?l.bufferSubData(g,0,h):(l.bufferData(g,h,this._renderer.getBindPoint(o)),r.length=(h==null?void 0:h.length)??0,r.byteLength=(h==null?void 0:h.byteLength)??0,r.bytesPerElement=r.length?r.byteLength/r.length:0)}bind(e){let{target:t,value:i}=e;if(i){const n=this.getMeta(i);t??(t=n.target??this.boundTarget),n.target=t}else t??(t=this.boundTarget);const r=this._renderer.getBindPoint(t);this._renderer.gl.bindBuffer(r,i),t==="array_buffer"?this.boundArrayBuffer=i:this._renderer.vertexArray.boundVertexArray.elementArrayBuffer=i,this.boundTarget=t}unbind(e){return this.bind({target:e,value:null})}reset(){super.reset(),this.boundArrayBuffer=null,this.boundTarget="array_buffer"}}class Fo extends It{constructor(){super(...arguments);u(this,"boundFramebuffer",null);u(this,"_msaaSamples",[]);u(this,"_hasMRT",!0);u(this,"_writeDepthTexture",!0)}install(e){super.install(e),e.framebuffer=this}onUpdateContext(){if(this._hasMRT=!0,this._writeDepthTexture=!0,this._renderer.version===1){const e=this._renderer.gl,t=this._renderer.extensions.drawBuffers,i=this._renderer.extensions.depthTexture;t?e.drawBuffers=r=>t.drawBuffersWEBGL(r):(this._hasMRT=!1,e.drawBuffers=()=>{}),i||(this._writeDepthTexture=!1)}else{const e=this._renderer.gl;this._msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}}create(e){const t=this._renderer.gl.createFramebuffer();if(!t)throw new Error("Unable to create framebuffer");return e&&(this.bind(t),this.update(e)),t}getMeta(e){return this._renderer.getRelated(e,()=>({width:0,height:0,mipLevel:0,stencil:!1,depth:!1,depthTexture:null,colorTextures:[],multisample:0}))}update(...e){if(e.length>1)return this.bind(e[0]),this.update(e[1]);const t=this.boundFramebuffer;if(!t)return;const i=e[0],r=this.getMeta(t);Object.assign(r,{...i});const n=this._renderer.gl;let o=r.colorTextures.length;"drawBuffers"in n||(o=Math.min(o,1));for(let a=0;a<o;a++){const l=r.colorTextures[a];this._renderer.texture.bind({location:0,target:"texture_2d",value:l,forceUpdateLocation:!0}),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+a,n.TEXTURE_2D,l,r.mipLevel),this._renderer.texture.unbind(l)}if(o>1&&n.drawBuffers(r.colorTextures.map((a,l)=>n.COLOR_ATTACHMENT0+l)),r.depthTexture&&(this._renderer.version>1||this._renderer.extensions.depthTexture)&&(this._renderer.texture.bind({location:0,target:"texture_2d",value:r.depthTexture,forceUpdateLocation:!0}),n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,r.depthTexture,r.mipLevel),this._renderer.texture.unbind(r.depthTexture)),(r.stencilBuffer||r.stencil||r.depth)&&!(r.depthTexture&&this._writeDepthTexture)){r.stencilBuffer??(r.stencilBuffer=n.createRenderbuffer()),n.bindRenderbuffer(n.RENDERBUFFER,r.stencilBuffer);const{attachment:a,format:l}=this._getAttachmentAndFormat(r);r.msaaBuffer?n.renderbufferStorageMultisample(n.RENDERBUFFER,r.multisample,l,r.width,r.height):n.renderbufferStorage(n.RENDERBUFFER,l,r.width*this._renderer.pixelRatio,r.height*this._renderer.pixelRatio),n.framebufferRenderbuffer(n.FRAMEBUFFER,a,n.RENDERBUFFER,r.stencilBuffer)}else r.stencilBuffer&&(n.deleteRenderbuffer(r.stencilBuffer),r.stencilBuffer=null)}_getAttachmentAndFormat(e){const t=this.gl;let i,r;return this._renderer.version===1?(i=t.DEPTH_STENCIL_ATTACHMENT,r=t.DEPTH_STENCIL):e.depth&&e.stencil?(i=t.DEPTH_STENCIL_ATTACHMENT,r=t.DEPTH24_STENCIL8):e.depth?(i=t.DEPTH_ATTACHMENT,r=t.DEPTH_COMPONENT24):(i=t.STENCIL_ATTACHMENT,r=t.STENCIL_INDEX8),{attachment:i,format:r}}resize(e,t,i){const r=this.gl,n=this.getMeta(e);if(Object.assign(n,{width:t,height:i}),n.stencil){const{format:a}=this._getAttachmentAndFormat(n);r.bindRenderbuffer(r.RENDERBUFFER,n.stencil),n.msaaBuffer?r.renderbufferStorageMultisample(r.RENDERBUFFER,n.multisample,a,n.width,n.height):r.renderbufferStorage(r.RENDERBUFFER,a,n.width,n.height)}let o=n.colorTextures.length;r.drawBuffers||(o=Math.min(o,1));for(let a=0;a<o;a++){const l=n.colorTextures[a];this._renderer.texture.update(l,{value:{pixels:null,width:n.width,height:n.height}}),a===0&&n.msaaBuffer&&(r.bindRenderbuffer(r.RENDERBUFFER,n.msaaBuffer),r.renderbufferStorageMultisample(r.RENDERBUFFER,n.multisample,r.RGBA,n.width,n.height))}n.depthTexture&&this._renderer.texture.update(n.depthTexture,{value:{pixels:null,width:n.width,height:n.height}})}bind(e){const t=this._renderer.gl,i=e;if({value:this.boundFramebuffer!==i}.value&&(t.bindFramebuffer(t.FRAMEBUFFER,i),this.boundFramebuffer=i),i){const o=this.getMeta(i);for(let h=0;h<o.colorTextures.length;h++)this._renderer.texture.unbind(o.colorTextures[h]);o.depthTexture&&this._renderer.texture.unbind(o.depthTexture);const a=o.width>>o.mipLevel,l=o.height>>o.mipLevel;this._renderer.viewport.bind({x:0,y:0,width:a*this._renderer.pixelRatio,height:l*this._renderer.pixelRatio})}else this._renderer.viewport.bind({x:0,y:0,width:this._renderer.screen.width*this._renderer.pixelRatio,height:this._renderer.screen.height*this._renderer.pixelRatio})}forceStencil(){const e=this.boundFramebuffer;if(!e)return;const t=this.getMeta(e);if(!t||t.stencilBuffer)return;const i=this._renderer.gl;t.stencilBuffer=i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,t.stencilBuffer);let r,n;this._renderer.version===1?(r=i.DEPTH_STENCIL_ATTACHMENT,n=i.DEPTH_STENCIL):t.depth?(r=i.DEPTH_STENCIL_ATTACHMENT,n=i.DEPTH24_STENCIL8):(r=i.STENCIL_ATTACHMENT,n=i.STENCIL_INDEX8),t.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,t.multisample,n,t.width*this._renderer.pixelRatio,t.height*this._renderer.pixelRatio):i.renderbufferStorage(i.RENDERBUFFER,n,t.width*this._renderer.pixelRatio,t.height*this._renderer.pixelRatio),i.framebufferRenderbuffer(i.FRAMEBUFFER,r,i.RENDERBUFFER,t.stencilBuffer)}reset(){super.reset(),this.boundFramebuffer=null}}class To extends It{constructor(){super(...arguments);u(this,"stack",[])}install(e){super.install(e),e.mask=this}get length(){return this.stack.length}get last(){return this.stack[this.length-1]}push(e,t){const i={source:e,mask:t};this.stack.push(i),typeof i.mask=="number"?this.pushColorMask(i):"render"in i.mask?this._renderer.stencil.push(i):this._renderer.scissor.push(i)}pop(e){const t=this.stack.pop();!t||t.source!==e||(typeof t.mask=="number"?this.popColorMask(t):"render"in t.mask?this._renderer.stencil.pop(t):this._renderer.scissor.pop(t))}pushColorMask(e){const t=e.preComputedColor??15,i=e.preComputedColor=t&e.mask;i!==t&&this.useColorMask(i)}popColorMask(e){const t=e.preComputedColor??15,i=this.length>0?this.last.preComputedColor??15:15;i!==t&&this.useColorMask(i)}useColorMask(e){this._renderer.gl.colorMask((e&1)!==0,(e&2)!==0,(e&4)!==0,(e&8)!==0)}}class Lo extends It{constructor(){super(...arguments);u(this,"boundProgram",null);u(this,"uniforms",{projectionMatrix:[1,0,0,0,1,0,0,0,1]})}install(e){super.install(e),e.program=this}create(e){const t=this.gl.createProgram();if(!t)throw new Error("Unable to create program");return e&&this.update(t,e),t}getMeta(e){return this._renderer.getRelated(e,()=>({attributes:new Map,uniforms:new Map,boundUniforms:new kA}))}update(...e){if(e.length>1){const l=this.boundProgram;this.boundProgram=e[0],this.update(e[1]),this.boundProgram=l;return}const t=e[0],i=this.boundProgram;if(!i)return;const r=this.gl,n=this.getMeta(i),o=this.createShader(t.vert,"vertex_shader"),a=this.createShader(t.frag,"fragment_shader");if(r.attachShader(i,o),r.attachShader(i,a),r.linkProgram(i),r.deleteShader(o),r.deleteShader(a),!r.getProgramParameter(i,r.LINK_STATUS))throw new Error(`Unable to link program: ${r.getProgramInfoLog(i)}`);n.attributes.clear(),n.uniforms.clear();for(let l=r.getProgramParameter(i,r.ACTIVE_ATTRIBUTES),h=0;h<l;h++){const g=r.getActiveAttrib(i,h);if(!g||g.name.startsWith("gl_"))continue;const f=this._renderer.bindPoints.get(g.type)??String(g.type);n.attributes.set(g.name,{type:f,name:g.name,size:Kh(f),location:r.getAttribLocation(i,g.name)})}for(let l=r.getProgramParameter(i,r.ACTIVE_UNIFORMS),h=0;h<l;h++){const g=r.getActiveUniform(i,h);if(!g)continue;const f=g.name.replace(/\[.*?\]$/,"");let I=r.getUniformLocation(i,f);I||(I=r.getUniformLocation(i,g.name)),n.uniforms.set(f,{name:f,index:h,type:this._renderer.bindPoints.get(g.type)??String(g.type),size:g.size,isArray:f!==g.name,location:I})}}bind(e){const t=this.gl;({value:this.boundProgram!==e}).value&&(t.useProgram(e),this.boundProgram=e)}createShader(e,t){const i=this.gl,r=i.createShader(this._renderer.getBindPoint(t));if(!r)throw new Error("Unable to create shader");if(i.shaderSource(r,e),i.compileShader(r),!i.getShaderParameter(r,i.COMPILE_STATUS))throw new Error(`Unable to compiling shader :
68
68
  ${e}
69
- ${i.getShaderInfoLog(s)}`);return s}updateUniforms(...e){if(e.length>1){this.bind(e[0]),this.updateUniforms(e[1]);return}const t=this.boundProgram;if(!t)return;const i=this.gl,s=e[0],{uniforms:n,boundUniforms:o}=this.getMeta(t);for(const a in s){const l=s[a],h=n.get(a);if(!h)continue;const{type:c,isArray:f,location:d}=h;if(!(!d||o.get(d)===l))switch(o.set(d,l),c){case"float":f?i.uniform1fv(d,l):i.uniform1f(d,l);break;case"unsigned_int":f?i.uniform1uiv(d,l):i.uniform1ui(d,l);break;case"bool":case"int":case"sampler_2d":case"sampler_cube":case"sampler_2d_array":f?i.uniform1iv(d,l):i.uniform1i(d,l);break;case"bool_vec2":case"int_vec2":i.uniform2iv(d,l);break;case"unsigned_int_vec2":i.uniform2uiv(d,l);break;case"float_vec2":i.uniform2fv(d,l);break;case"bool_vec3":case"int_vec3":i.uniform3iv(d,l);break;case"unsigned_int_vec3":i.uniform3uiv(d,l);break;case"float_vec3":i.uniform3fv(d,l);break;case"bool_vec4":case"int_vec4":i.uniform4iv(d,l);break;case"unsigned_int_vec4":i.uniform4uiv(d,l);break;case"float_vec4":i.uniform4fv(d,l);break;case"float_mat2":i.uniformMatrix2fv(d,!1,l);break;case"float_mat3":i.uniformMatrix3fv(d,!1,l);break;case"float_mat4":i.uniformMatrix4fv(d,!1,l);break}}}reset(){super.reset(),this.boundProgram=null,this.uniforms={}}free(){super.free(),this.bind(null)}}function Jh(r){switch(r){case"float":case"int":case"unsigned_int":case"bool":case"sampler_2d":return 1;case"float_vec2":case"int_vec2":case"unsigned_int_vec2":case"bool_vec2":return 2;case"float_vec3":case"int_vec3":case"unsigned_int_vec3":case"bool_vec3":return 3;case"float_vec4":case"int_vec4":case"unsigned_int_vec4":case"bool_vec4":case"float_mat2":return 4;case"float_mat3":return 9;case"float_mat4":return 16;default:return 1}}class Oo extends It{install(A){super.install(A),A.scissor=this}get length(){var A;return((A=this._renderer.mask.last)==null?void 0:A.scissorCounter)??0}push(A){const e=this._renderer.gl;e.enable(e.SCISSOR_TEST),A.scissorCounter??(A.scissorCounter=0),A.scissorCounter++,this.use()}pop(A){if(this.length>0)this.use();else{const e=this._renderer.gl;e.disable(e.SCISSOR_TEST)}}use(){const A=this._renderer,{pixelRatio:e,mask:t,viewport:i,screen:s,gl:n}=A,o=t.last.mask;let a;i.boundViewport?a=i.boundViewport.height-(o.height+o.y)*e:a=(s.height-(o.height+o.y))*e,n.scissor(o.x*e,a,o.width*e,o.height*e)}}class Ho extends It{install(A){super.install(A),A.stencil=this}get length(){var A;return((A=this._renderer.mask.last)==null?void 0:A.stencilCounter)??0}push(A){const e=this._renderer.gl,t=A.mask,i=A.stencilCounter??(A.stencilCounter=0);A.stencilCounter===0&&(this._renderer.framebuffer.forceStencil(),e.clearStencil(0),e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST)),A.stencilCounter++;const s=A.color;s&&(A.color=0,e.colorMask(!1,!1,!1,!1)),e.stencilFunc(e.EQUAL,i,4294967295),e.stencilOp(e.KEEP,e.KEEP,e.INCR),t.render(this._renderer),this._renderer.flush(),s&&(A.color=s,e.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)),this.use()}pop(A){const e=this._renderer.gl,t=A.mask;if(!this.length)e.disable(e.STENCIL_TEST);else{const i=this._renderer.mask.last,s=(i==null?void 0:i.color)??15;s!==0&&(i.color=0,e.colorMask(!1,!1,!1,!1)),e.stencilOp(e.KEEP,e.KEEP,e.DECR),t.render(this._renderer),this._renderer.flush(),s!==0&&(i.color=s,e.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)),this.use()}}use(){const A=this._renderer.gl;A.stencilFunc(A.EQUAL,this.length,4294967295),A.stencilOp(A.KEEP,A.KEEP,A.KEEP)}}function Kh(r,A){const e=new Set([...Object.keys(r),...Object.keys(A)]),t={};return e.forEach(i=>{t[i]=r[i]!==A[i]}),t}class Jo extends It{constructor(){super(...arguments);u(this,"maxUnits",0);u(this,"boundLocation",0);u(this,"boundTarget","texture_2d");u(this,"boundTextures",[]);u(this,"emptyTextures",{texture_2d:null,texture_cube_map:null})}install(e){super.install(e),e.texture=this}onUpdateContext(){super.onUpdateContext();const e=this.gl;this.maxUnits=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);for(let s=0;s<this.maxUnits;s++)this.boundTextures[s]={texture_2d:null,texture_cube_map:null};const t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,new Uint8Array(4));const i=e.createTexture();e.bindTexture(e.TEXTURE_CUBE_MAP,i);for(let s=0;s<6;s++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MIN_FILTER,e.LINEAR),this.emptyTextures={texture_2d:t,texture_cube_map:i};for(let s=this.boundTextures.length,n=0;n<s;n++)this.unbind(n)}create(e){const t=this.gl.createTexture();if(!t)throw new Error("Unable to create texture");return e&&(this.bind({location:e.location,target:e.target,value:t,forceUpdateLocation:!0}),this.update({filterMode:"linear",wrapMode:"repeat",...e})),t}getMeta(e){return this._renderer.getRelated(e,()=>({}))}update(...e){if(e.length>1){this.bind({location:e[1].location,target:e[1].target,value:e[0],forceUpdateLocation:!0}),this.update(e[1]);return}const t=e[0],{value:i,...s}=t,n=this.boundTextures[this.boundLocation][t.target??this.boundTarget];if(!n)return;const o=this.gl,a=this.getMeta(n),l=Kh(a,s);Object.assign(a,s);const h=this._renderer.getBindPoint(a.target??this.boundTarget);if(i!==void 0&&(i===null?o.texImage2D(h,0,o.RGBA,1,1,0,o.RGBA,o.UNSIGNED_BYTE,null):"pixels"in i?o.texImage2D(h,0,o.RGBA,i.width,i.height,0,o.RGBA,o.UNSIGNED_BYTE,i.pixels):o.texImage2D(h,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,i)),l.wrapMode&&a.wrapMode){const f=this._renderer.getBindPoint(a.wrapMode);o.texParameteri(h,o.TEXTURE_WRAP_S,f),o.texParameteri(h,o.TEXTURE_WRAP_T,f)}const c=a.filterMode;if(l.filterMode&&c){const f=this._renderer.getBindPoint(c.split("_")[0]);c.includes("_")?o.texParameteri(h,o.TEXTURE_MIN_FILTER,this._renderer.getBindPoint(c)):o.texParameteri(h,o.TEXTURE_MIN_FILTER,f),o.texParameteri(h,o.TEXTURE_MAG_FILTER,f)}if(a.anisoLevel&&c==="linear"&&this._renderer.extensions.anisotropicFiltering&&l.anisoLevel){const{MAX_TEXTURE_MAX_ANISOTROPY_EXT:f,TEXTURE_MAX_ANISOTROPY_EXT:d}=this._renderer.extensions.anisotropicFiltering;o.texParameterf(h,d,Math.min(a.anisoLevel,o.getParameter(f)))}}bind(e){const t=this.gl;let i,s,n,o;if(e&&"value"in e?{target:s,value:i,location:n,forceUpdateLocation:o}=e:i=e,i){const I=this.getMeta(i);I.target=s??(s=I.target??"texture_2d"),I.location=n??(n=I.location??0)}else s??(s="texture_2d"),n??(n=0);let a=this.boundTextures[n];a||(this.boundTextures[n]=a={texture_2d:null,texture_cube_map:null});const l=a[s]??null,h=this.boundLocation,c=i!==l,f={location:n!==h&&(c||o),texture:c},d=this._renderer.getBindPoint(s);f.location&&(t.activeTexture(t.TEXTURE0+n),this.boundLocation=n),f.texture&&(t.bindTexture(d,i??this.emptyTextures[s]),a[s]=i),this.boundTarget=s}unbind(e,t="texture_2d"){const i=this._renderer.gl;if(typeof e=="number")this.bind({value:null,target:t,location:e});else{const s=this.getMeta(e),{target:n=this.boundTarget}=s,o=this._renderer.getBindPoint(n);for(let a=0;a<this.boundTextures.length;a++)this.boundTextures[a][n]===e&&(this.boundLocation!==a&&(i.activeTexture(i.TEXTURE0+a),this.boundLocation=a),i.bindTexture(o,this.emptyTextures[n]),this.boundTextures[a][n]=null)}}reset(){super.reset(),this.boundLocation=0,this.boundTarget="texture_2d",this.boundTextures=[],this.maxUnits=0}}class Ko extends It{constructor(){super(...arguments);u(this,"boundVertexArrayNull",{attributes:{},elementArrayBuffer:null});u(this,"boundVertexArrayObject",null);u(this,"boundVertexArray",this.boundVertexArrayNull)}install(e){super.install(e),e.vertexArray=this}enableVertexAttrib(e,t,i,s=1){const{buffer:n,size:o=0,type:a="float",normalized:l=!1,stride:h=0,offset:c=0,divisor:f}=i,d=this._renderer.gl;this._renderer.buffer.bind({target:"array_buffer",value:n});for(let I=0;I<s;I++)d.enableVertexAttribArray(t+I),d.vertexAttribPointer(t+I,o,this._renderer.getBindPoint(a),l,h,c+(h-c)/s*I);f&&("vertexAttribDivisor"in d?d.vertexAttribDivisor(t,f):console.warn("Failed to active vertex array object, GPU Instancing is not supported on this device")),this.boundVertexArray.attributes[e]={enable:!0,...i}}create(...e){const t=this._renderer.gl;if(!("createVertexArray"in t))return null;const i=t.createVertexArray();if(!i)throw new Error("Unable to create vertex array");return e.length===2?this.update(e[0],i,e[1]):e.length===1&&this.update(i,e[0]),i}getVertexArrayMeta(e){return this._renderer.getRelated(e,()=>({attributes:{},elementArrayBuffer:null}))}update(...e){var n,o,a;if(e.length>2){this._renderer.program.bind(e[0]),this.update(e[1],e[2]);return}else if(e.length===2)if(e[0]){const l=e[0],h=e[1],c=this.getVertexArrayMeta(l);this.bind(l),this.update(h),c.attributes=this.boundVertexArray.attributes,c.elementArrayBuffer=this.boundVertexArray.elementArrayBuffer,this.unbind(),this._renderer.buffer.unbind("array_buffer");return}else return this.update(e[1]);const t=this._renderer.program.boundProgram;if(!t)return;const i=e[0];if(i.attributes){const l=this._renderer.program.getMeta(t),h={},c={};for(const d in i.attributes){const I=i.attributes[d],C=l.attributes.get(d);let B;"buffer"in I?B={...I}:B={buffer:I},B.size=B.size||(C==null?void 0:C.size)||0;const P=this._renderer.buffer.getMeta(B.buffer),S=Number(((n=C==null?void 0:C.type.match(/mat(\d)/))==null?void 0:n[1])??1);let _;switch(B.type){case"unsigned_byte":_=B.size;break;case"unsigned_short":_=B.size*2;break;case"float":default:_=B.size*4;break}_*=S,h[o=P.id]??(h[o]=0),h[P.id]+=_,c[d]={attrib:B,meta:P,info:C,byteLength:_,dimension:S}}const f={};for(const d in c){const{attrib:I,meta:C,info:B,byteLength:P,dimension:S}=c[d];(B==null?void 0:B.location)!==void 0&&(f[a=C.id]??(f[a]=0),I.offset??(I.offset=f[C.id]),I.stride??(I.stride=h[C.id]===P?0:h[C.id]),this.enableVertexAttrib(d,B.location,I,S),f[C.id]+=P)}}const s=i.elementArrayBuffer??null;this._renderer.buffer.bind({target:"element_array_buffer",value:s}),this.boundVertexArray.elementArrayBuffer=s}bind(e){const t=this._renderer.gl;if(e&&"attributes"in e)this.update(e);else if("bindVertexArray"in t){const i=this.boundVertexArrayObject;({value:e!==i}).value&&(t.bindVertexArray(e),this.boundVertexArrayObject=e,e?this.boundVertexArray={...this.getVertexArrayMeta(e)}:this.boundVertexArray=this.boundVertexArrayNull)}}unbind(){return this.bind(null)}reset(){super.reset(),this.boundVertexArrayNull={attributes:{},elementArrayBuffer:null},this.boundVertexArray=this.boundVertexArrayNull,this.boundVertexArrayObject=null}}class Yo extends It{constructor(){super(...arguments);u(this,"boundViewport",{x:0,y:0,width:0,height:0})}install(e){super.install(e),e.viewport=this}bind(e){const t=this.boundViewport,i=Math.floor(e.x),s=Math.floor(e.y),n=Math.floor(e.width),o=Math.floor(e.height);t.x===i&&t.y===s&&t.width===n&&t.height===o||(this._renderer.gl.viewport(i,s,n,o),t.x=i,t.y=s,t.width=n,t.height=o)}reset(){super.reset(),this.boundViewport={x:0,y:0,width:0,height:0}}}class Wo extends Po{constructor(e=ho(),t){super();u(this,"_modules",[new Jo,new Fo,new To,new Go,new Ko,new Yo,new ko,new Lo,new Oo,new Ho,new No]);u(this,"bindPoints",new Map);if(!e)throw new Error("Failed to createHTMLCanvas");ao(e)?this._setupContext(e,t):(this.gl=e,this.version=lo(this.gl)?2:1),this._setupBindPoints()._setupExtensions()._setupPolyfill(),this.gl.pixelStorei(this.gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),this._modules.forEach(i=>i.install(this)),this._modules.forEach(i=>i.onUpdateContext())}_setupContext(e,t){this.view=e;let i=e.getContext("webgl2",t)||e.getContext("experimental-webgl2",t),s=2;if(i||(i=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),s=1),!i)throw new Error("Unable to getContext");return this.gl=i,this.version=s,this._onContextLost=this._onContextLost.bind(this),this._onContextRestored=this._onContextRestored.bind(this),e.addEventListener("webglcontextlost",this._onContextLost,!1),e.addEventListener("webglcontextrestored",this._onContextRestored,!1),this}_setupExtensions(){const e=this.gl,t={loseContext:e.getExtension("WEBGL_lose_context"),anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tcSRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc")};return this.version===1?(t.instancedArrays=e.getExtension("ANGLE_instanced_arrays"),t.drawBuffers=e.getExtension("WEBGL_draw_buffers"),t.depthTexture=e.getExtension("WEBGL_depth_texture"),t.vertexArrayObject=e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),t.uint32ElementIndex=e.getExtension("OES_element_index_uint"),t.floatTexture=e.getExtension("OES_texture_float"),t.textureHalfFloat=e.getExtension("OES_texture_half_float"),t.textureHalfFloatLinear=e.getExtension("OES_texture_half_float_linear")):this.version===2&&(t.colorBufferFloat=e.getExtension("EXT_color_buffer_float")),this.extensions=t,this}_setupBindPoints(){for(const e in this.gl)if(e===e.toUpperCase()){const t=this.gl[e];typeof t=="number"&&this.bindPoints.set(t,e.toLowerCase())}return this}_setupPolyfill(){if(this.version===1){const{instancedArrays:e,vertexArrayObject:t,drawBuffers:i}=this.extensions,s=this.gl;t&&(s.createVertexArray=()=>t.createVertexArrayOES(),s.bindVertexArray=n=>t.bindVertexArrayOES(n),s.deleteVertexArray=n=>t.deleteVertexArrayOES(n)),e&&(s.vertexAttribDivisor=(n,o)=>e.vertexAttribDivisorANGLE(n,o),s.drawElementsInstanced=(n,o,a,l,h)=>e.drawElementsInstancedANGLE(n,o,a,l,h),s.drawArraysInstanced=(n,o,a,l)=>e.drawArraysInstancedANGLE(n,o,a,l)),i&&(s.drawBuffers=n=>i.drawBuffersWEBGL(n))}return this}_onContextLost(e){e.preventDefault(),setTimeout(()=>{var t;this.gl.isContextLost()&&((t=this.extensions.loseContext)==null||t.restoreContext())},0)}_onContextRestored(){}getBindPoint(e){return this.gl[e.toUpperCase()]}clear(e=this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT){this.gl.clear(e)}draw(e={}){const{mode:t="triangles",first:i=0,instanceCount:s}=e;let{count:n=0,bytesPerElement:o=0}=e;if(!n||!o){const l=this.vertexArray.boundVertexArray.elementArrayBuffer??Object.values(this.vertexArray.boundVertexArray.attributes)[0];if(l){const h=this.buffer.getMeta(l);n||(n=h.length),o||(o=h.bytesPerElement)}}const a=this.getBindPoint(t);if(o)if(o===2||o===4&&this.extensions.uint32ElementIndex){const l=o===2?this.gl.UNSIGNED_SHORT:this.gl.UNSIGNED_INT;s&&"drawElementsInstanced"in this.gl?this.gl.drawElementsInstanced(a,n,l,i*o,s):this.gl.drawElements(a,n,l,i*o)}else console.warn("Unsupported index buffer type: uint32");else s&&"drawArraysInstanced"in this.gl?this.gl.drawArraysInstanced(a,i,n,s):this.gl.drawArrays(a,i,n)}reset(){this._modules.forEach(e=>e.reset())}flush(){this._modules.forEach(e=>e.flush())}free(){var e,t,i;this._modules.forEach(s=>s.free()),(e=this.view)==null||e.removeEventListener("webglcontextlost",this._onContextLost,!1),(t=this.view)==null||t.removeEventListener("webglcontextrestored",this._onContextRestored,!1),(i=this.extensions.loseContext)==null||i.loseContext()}toPixels(){const e=this.gl.drawingBufferWidth,t=this.gl.drawingBufferHeight,i=e*t*4,s=e*4,n=(t-1)*s,o=new Uint8Array(i),a=new Uint8ClampedArray(i);this.gl.readPixels(0,0,e,t,this.gl.RGBA,this.gl.UNSIGNED_BYTE,o);for(let l=0;l<i;l+=s)a.set(o.subarray(l,l+s),n-l);return a}}class tA{}class zo extends tA{install(A){const e=async t=>{const{parseFont:i}=await Promise.resolve().then(()=>nd);return await A.fetch(t).then(s=>s.arrayBuffer()).then(s=>i(s))};return this.load=t=>A.loadBy(t,()=>e(t)),["woff","ttf","otf"].forEach(t=>{A.register(t,e)}),A.font=this,this}}const Vo={brightness:1,contrast:1,grayscale:0,"hue-rotate":0,invert:0,opacity:1,saturate:1,sepia:0};function qo(r){const A=new xs;if(r==="none")return A;const e=di(r).reduce((t,{name:i,args:s})=>(t[i]=s[0].normalizedIntValue,t),{});Object.keys(Vo).forEach(t=>{e[t]=e[t]??Vo[t]});for(const t in e){const i=e[t];switch(t){case"hue-rotate":A.hueRotate(i*tt);break;case"saturate":A.saturate(i);break;case"brightness":A.brightness(i);break;case"contrast":A.contrast(i);break;case"invert":A.invert(i);break;case"sepia":A.sepia(i);break;case"opacity":A.opacity(i);break;case"grayscale":A.grayscale(i);break}}return A}function Xo(r,A,e,t=new dt){return r=!r||r==="none"?"":r,di(r,{width:A,height:e}).forEach(({name:i,args:s})=>{const n=s.map(o=>o.normalizedIntValue);switch(i){case"translate":t.translate(n[0]*A,(n[1]??n[0])*e);break;case"translateX":t.translateX(n[0]*A);break;case"translateY":t.translateY(n[0]*e);break;case"translateZ":t.translateZ(n[0]);break;case"translate3d":t.translate3d(n[0]*A,(n[1]??n[0])*e,n[2]??n[1]??n[0]);break;case"scale":t.scale(n[0],n[1]??n[0]);break;case"scaleX":t.scaleX(n[0]);break;case"scaleY":t.scaleY(n[0]);break;case"scale3d":t.scale3d(n[0],n[1]??n[0],n[2]??n[1]??n[0]);break;case"rotate":t.rotate(n[0]*tt);break;case"rotateX":t.rotateX(n[0]*tt);break;case"rotateY":t.rotateY(n[0]*tt);break;case"rotateZ":t.rotateZ(n[0]*tt);break;case"rotate3d":t.rotate3d(n[0]*tt,(n[1]??n[0])*tt,(n[2]??n[1]??n[0])*tt,(n[3]??n[2]??n[1]??n[0])*tt);break;case"skew":t.skew(n[0],n[0]??n[1]);break;case"skewX":t.skewX(n[0]);break;case"skewY":t.skewY(n[0]);break;case"matrix":t.set(n);break}}),t}function jo(r){const[A,e=A]=r.split(" ");return[A,e].map(t=>{switch(t=t.trim(),t){case"left":case"top":return 0;case"center":return .5;case"right":case"bottom":return 1;default:return Number(t)}})}class ar extends Jt{constructor(e={}){super();u(this,"vertexAttributes");u(this,"indexBuffer");u(this,"instanceCount");u(this,"mode");u(this,"_materialWeakMap",new UA);this.vertexAttributes=new Map(Object.entries((e==null?void 0:e.vertexAttributes)??{})),this.indexBuffer=e==null?void 0:e.indexBuffer,this.instanceCount=e==null?void 0:e.instanceCount,this.mode=(e==null?void 0:e.mode)??"triangles"}_glVertexArray(e){var t;return{attributes:Object.fromEntries(Array.from(this.vertexAttributes).map(([i,s])=>[i,{buffer:s.buffer._glBuffer(e),size:s.size,type:s.type,normalized:s.normalized,stride:s.stride,offset:s.offset,divisor:s.divisor}])),elementArrayBuffer:(t=this.indexBuffer)==null?void 0:t._glBuffer(e)}}_glVertexArrayObject(e,t){let i=this._materialWeakMap.get(t);return i||(i={material:t.instanceId,geometry:this.instanceId},this._materialWeakMap.set(t,i)),e.getRelated(i,()=>e.vertexArray.create(t._glProgram(e),this._glVertexArray(e)))}draw(e,t,i){var a;e.flush(),t.activate(e,i);const s=this._glVertexArrayObject(e,t);let n=!1,o;this.vertexAttributes.forEach(l=>{(o==null?void 0:o.instanceId)!==l.buffer.instanceId&&(o=l.buffer,o.upload(e)&&(n=!0)),l.upload()&&(n=!0)}),(a=this.indexBuffer)!=null&&a.upload(e)&&(n=!0),n&&s&&e.vertexArray.update(t._glProgram(e),s,this._glVertexArray(e)),e.vertexArray.bind(s??this._glVertexArray(e)),e.draw({mode:this.mode,instanceCount:this.instanceCount}),e.vertexArray.unbind()}}var Yh=Object.defineProperty,Zo=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Yh(A,e,i),i};class NA extends Jt{constructor(e){super();u(this,"needsUpload",!1);this.setProperties(e)}_glBufferOptions(){return{target:"element_array_buffer",data:this.data,usage:this.dynamic?"dynamic_draw":"static_draw"}}_glBuffer(e){return e.getRelated(this,()=>e.buffer.create(this._glBufferOptions()))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"data":case"dynamic":this.needsUpload=!0;break}}upload(e){const t=this.needsUpload;return t&&(this.needsUpload=!1,e.buffer.update(this._glBuffer(e),this._glBufferOptions())),t}}Zo([Be({default:null})],NA.prototype,"data"),Zo([Be({default:!1})],NA.prototype,"dynamic");var Wh=Object.defineProperty,$o=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Wh(A,e,i),i};class Wt extends Jt{constructor(e){super();u(this,"needsUpload",!1);this.setProperties(e)}_glBufferOptions(){return{target:"array_buffer",data:this.data,usage:this.dynamic?"dynamic_draw":"static_draw"}}_glBuffer(e){return e.getRelated(this,()=>e.buffer.create(this._glBufferOptions()))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"data":case"dynamic":this.needsUpload=!0;break}}upload(e){const t=this.needsUpload;return t&&(this.needsUpload=!1,e.buffer.update(this._glBuffer(e),this._glBufferOptions())),t}}$o([Be({default:null})],Wt.prototype,"data"),$o([Be({default:!1})],Wt.prototype,"dynamic");var zh=Object.defineProperty,CA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&zh(A,e,i),i};class lt extends Jt{constructor(e){super();u(this,"stride");u(this,"offset");u(this,"divisor");u(this,"needsUpload",!1);this.setProperties({buffer:new Wt,...e})}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"buffer":case"size":case"normalized":case"type":case"stride":case"offset":case"divisor":this.needsUpload=!0;break}}upload(){const e=this.needsUpload;return e&&(this.needsUpload=!1),e}}CA([Be()],lt.prototype,"buffer"),CA([Be({default:0})],lt.prototype,"size"),CA([Be({default:!1})],lt.prototype,"normalized"),CA([Be({default:"float"})],lt.prototype,"type"),CA([Be()],lt.prototype,"stride"),CA([Be()],lt.prototype,"offset"),CA([Be()],lt.prototype,"divisor");class Vh extends ar{constructor(){super({vertexAttributes:{position:new lt({buffer:new Wt({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new NA({data:new Uint16Array([0,1,3,2]),dynamic:!1}),mode:"triangle_strip"})}}const Zr=class Zr extends Jt{constructor(e={}){super();u(this,"vert");u(this,"frag");u(this,"uniforms");this.vert=e.vert??`precision highp float;
69
+ ${i.getShaderInfoLog(r)}`);return r}updateUniforms(...e){if(e.length>1){this.bind(e[0]),this.updateUniforms(e[1]);return}const t=this.boundProgram;if(!t)return;const i=this.gl,r=e[0],{uniforms:n,boundUniforms:o}=this.getMeta(t);for(const a in r){const l=r[a],h=n.get(a);if(!h)continue;const{type:g,isArray:f,location:I}=h;if(!(!I||o.get(I)===l))switch(o.set(I,l),g){case"float":f?i.uniform1fv(I,l):i.uniform1f(I,l);break;case"unsigned_int":f?i.uniform1uiv(I,l):i.uniform1ui(I,l);break;case"bool":case"int":case"sampler_2d":case"sampler_cube":case"sampler_2d_array":f?i.uniform1iv(I,l):i.uniform1i(I,l);break;case"bool_vec2":case"int_vec2":i.uniform2iv(I,l);break;case"unsigned_int_vec2":i.uniform2uiv(I,l);break;case"float_vec2":i.uniform2fv(I,l);break;case"bool_vec3":case"int_vec3":i.uniform3iv(I,l);break;case"unsigned_int_vec3":i.uniform3uiv(I,l);break;case"float_vec3":i.uniform3fv(I,l);break;case"bool_vec4":case"int_vec4":i.uniform4iv(I,l);break;case"unsigned_int_vec4":i.uniform4uiv(I,l);break;case"float_vec4":i.uniform4fv(I,l);break;case"float_mat2":i.uniformMatrix2fv(I,!1,l);break;case"float_mat3":i.uniformMatrix3fv(I,!1,l);break;case"float_mat4":i.uniformMatrix4fv(I,!1,l);break}}}reset(){super.reset(),this.boundProgram=null,this.uniforms={}}free(){super.free(),this.bind(null)}}function Kh(s){switch(s){case"float":case"int":case"unsigned_int":case"bool":case"sampler_2d":return 1;case"float_vec2":case"int_vec2":case"unsigned_int_vec2":case"bool_vec2":return 2;case"float_vec3":case"int_vec3":case"unsigned_int_vec3":case"bool_vec3":return 3;case"float_vec4":case"int_vec4":case"unsigned_int_vec4":case"bool_vec4":case"float_mat2":return 4;case"float_mat3":return 9;case"float_mat4":return 16;default:return 1}}class Go extends It{install(A){super.install(A),A.scissor=this}get length(){var A;return((A=this._renderer.mask.last)==null?void 0:A.scissorCounter)??0}push(A){const e=this._renderer.gl;e.enable(e.SCISSOR_TEST),A.scissorCounter??(A.scissorCounter=0),A.scissorCounter++,this.use()}pop(A){if(this.length>0)this.use();else{const e=this._renderer.gl;e.disable(e.SCISSOR_TEST)}}use(){const A=this._renderer,{pixelRatio:e,mask:t,viewport:i,screen:r,gl:n}=A,o=t.last.mask;let a;i.boundViewport?a=i.boundViewport.height-(o.height+o.y)*e:a=(r.height-(o.height+o.y))*e,n.scissor(o.x*e,a,o.width*e,o.height*e)}}class Oo extends It{install(A){super.install(A),A.stencil=this}get length(){var A;return((A=this._renderer.mask.last)==null?void 0:A.stencilCounter)??0}push(A){const e=this._renderer.gl,t=A.mask,i=A.stencilCounter??(A.stencilCounter=0);A.stencilCounter===0&&(this._renderer.framebuffer.forceStencil(),e.clearStencil(0),e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST)),A.stencilCounter++;const r=A.color;r&&(A.color=0,e.colorMask(!1,!1,!1,!1)),e.stencilFunc(e.EQUAL,i,4294967295),e.stencilOp(e.KEEP,e.KEEP,e.INCR),t.render(this._renderer),this._renderer.flush(),r&&(A.color=r,e.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this.use()}pop(A){const e=this._renderer.gl,t=A.mask;if(!this.length)e.disable(e.STENCIL_TEST);else{const i=this._renderer.mask.last,r=(i==null?void 0:i.color)??15;r!==0&&(i.color=0,e.colorMask(!1,!1,!1,!1)),e.stencilOp(e.KEEP,e.KEEP,e.DECR),t.render(this._renderer),this._renderer.flush(),r!==0&&(i.color=r,e.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this.use()}}use(){const A=this._renderer.gl;A.stencilFunc(A.EQUAL,this.length,4294967295),A.stencilOp(A.KEEP,A.KEEP,A.KEEP)}}function Yh(s,A){const e=new Set([...Object.keys(s),...Object.keys(A)]),t={};return e.forEach(i=>{t[i]=s[i]!==A[i]}),t}class Ho extends It{constructor(){super(...arguments);u(this,"maxUnits",0);u(this,"boundLocation",0);u(this,"boundTarget","texture_2d");u(this,"boundTextures",[]);u(this,"emptyTextures",{texture_2d:null,texture_cube_map:null})}install(e){super.install(e),e.texture=this}onUpdateContext(){super.onUpdateContext();const e=this.gl;this.maxUnits=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);for(let r=0;r<this.maxUnits;r++)this.boundTextures[r]={texture_2d:null,texture_cube_map:null};const t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,new Uint8Array(4));const i=e.createTexture();e.bindTexture(e.TEXTURE_CUBE_MAP,i);for(let r=0;r<6;r++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MIN_FILTER,e.LINEAR),this.emptyTextures={texture_2d:t,texture_cube_map:i};for(let r=this.boundTextures.length,n=0;n<r;n++)this.unbind(n)}create(e){const t=this.gl.createTexture();if(!t)throw new Error("Unable to create texture");return e&&(this.bind({location:e.location,target:e.target,value:t,forceUpdateLocation:!0}),this.update({filterMode:"linear",wrapMode:"repeat",...e})),t}getMeta(e){return this._renderer.getRelated(e,()=>({}))}update(...e){if(e.length>1){this.bind({location:e[1].location,target:e[1].target,value:e[0],forceUpdateLocation:!0}),this.update(e[1]);return}const t=e[0],{value:i,...r}=t,n=this.boundTextures[this.boundLocation][t.target??this.boundTarget];if(!n)return;const o=this.gl,a=this.getMeta(n),l=Yh(a,r);Object.assign(a,r);const h=this._renderer.getBindPoint(a.target??this.boundTarget);if(i!==void 0&&(i===null?o.texImage2D(h,0,o.RGBA,1,1,0,o.RGBA,o.UNSIGNED_BYTE,null):"pixels"in i?o.texImage2D(h,0,o.RGBA,i.width,i.height,0,o.RGBA,o.UNSIGNED_BYTE,i.pixels):o.texImage2D(h,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,i)),l.wrapMode&&a.wrapMode){const f=this._renderer.getBindPoint(a.wrapMode);o.texParameteri(h,o.TEXTURE_WRAP_S,f),o.texParameteri(h,o.TEXTURE_WRAP_T,f)}const g=a.filterMode;if(l.filterMode&&g){const f=this._renderer.getBindPoint(g.split("_")[0]);g.includes("_")?o.texParameteri(h,o.TEXTURE_MIN_FILTER,this._renderer.getBindPoint(g)):o.texParameteri(h,o.TEXTURE_MIN_FILTER,f),o.texParameteri(h,o.TEXTURE_MAG_FILTER,f)}if(a.anisoLevel&&g==="linear"&&this._renderer.extensions.anisotropicFiltering&&l.anisoLevel){const{MAX_TEXTURE_MAX_ANISOTROPY_EXT:f,TEXTURE_MAX_ANISOTROPY_EXT:I}=this._renderer.extensions.anisotropicFiltering;o.texParameterf(h,I,Math.min(a.anisoLevel,o.getParameter(f)))}}bind(e){const t=this.gl;let i,r,n,o;if(e&&"value"in e?{target:r,value:i,location:n,forceUpdateLocation:o}=e:i=e,i){const d=this.getMeta(i);d.target=r??(r=d.target??"texture_2d"),d.location=n??(n=d.location??0)}else r??(r="texture_2d"),n??(n=0);let a=this.boundTextures[n];a||(this.boundTextures[n]=a={texture_2d:null,texture_cube_map:null});const l=a[r]??null,h=this.boundLocation,g=i!==l,f={location:n!==h&&(g||o),texture:g},I=this._renderer.getBindPoint(r);f.location&&(t.activeTexture(t.TEXTURE0+n),this.boundLocation=n),f.texture&&(t.bindTexture(I,i??this.emptyTextures[r]),a[r]=i),this.boundTarget=r}unbind(e,t="texture_2d"){const i=this._renderer.gl;if(typeof e=="number")this.bind({value:null,target:t,location:e});else{const r=this.getMeta(e),{target:n=this.boundTarget}=r,o=this._renderer.getBindPoint(n);for(let a=0;a<this.boundTextures.length;a++)this.boundTextures[a][n]===e&&(this.boundLocation!==a&&(i.activeTexture(i.TEXTURE0+a),this.boundLocation=a),i.bindTexture(o,this.emptyTextures[n]),this.boundTextures[a][n]=null)}}reset(){super.reset(),this.boundLocation=0,this.boundTarget="texture_2d",this.boundTextures=[],this.maxUnits=0}}class Jo extends It{constructor(){super(...arguments);u(this,"boundVertexArrayNull",{attributes:{},elementArrayBuffer:null});u(this,"boundVertexArrayObject",null);u(this,"boundVertexArray",this.boundVertexArrayNull)}install(e){super.install(e),e.vertexArray=this}enableVertexAttrib(e,t,i,r=1){const{buffer:n,size:o=0,type:a="float",normalized:l=!1,stride:h=0,offset:g=0,divisor:f}=i,I=this._renderer.gl;this._renderer.buffer.bind({target:"array_buffer",value:n});for(let d=0;d<r;d++)I.enableVertexAttribArray(t+d),I.vertexAttribPointer(t+d,o,this._renderer.getBindPoint(a),l,h,g+(h-g)/r*d);f&&("vertexAttribDivisor"in I?I.vertexAttribDivisor(t,f):console.warn("Failed to active vertex array object, GPU Instancing is not supported on this device")),this.boundVertexArray.attributes[e]={enable:!0,...i}}create(...e){const t=this._renderer.gl;if(!("createVertexArray"in t))return null;const i=t.createVertexArray();if(!i)throw new Error("Unable to create vertex array");return e.length===2?this.update(e[0],i,e[1]):e.length===1&&this.update(i,e[0]),i}getVertexArrayMeta(e){return this._renderer.getRelated(e,()=>({attributes:{},elementArrayBuffer:null}))}update(...e){var n,o,a;if(e.length>2){this._renderer.program.bind(e[0]),this.update(e[1],e[2]);return}else if(e.length===2)if(e[0]){const l=e[0],h=e[1],g=this.getVertexArrayMeta(l);this.bind(l),this.update(h),g.attributes=this.boundVertexArray.attributes,g.elementArrayBuffer=this.boundVertexArray.elementArrayBuffer,this.unbind(),this._renderer.buffer.unbind("array_buffer");return}else return this.update(e[1]);const t=this._renderer.program.boundProgram;if(!t)return;const i=e[0];if(i.attributes){const l=this._renderer.program.getMeta(t),h={},g={};for(const I in i.attributes){const d=i.attributes[I],C=l.attributes.get(I);let B;"buffer"in d?B={...d}:B={buffer:d},B.size=B.size||(C==null?void 0:C.size)||0;const M=this._renderer.buffer.getMeta(B.buffer),R=Number(((n=C==null?void 0:C.type.match(/mat(\d)/))==null?void 0:n[1])??1);let _;switch(B.type){case"unsigned_byte":_=B.size;break;case"unsigned_short":_=B.size*2;break;case"float":default:_=B.size*4;break}_*=R,h[o=M.id]??(h[o]=0),h[M.id]+=_,g[I]={attrib:B,meta:M,info:C,byteLength:_,dimension:R}}const f={};for(const I in g){const{attrib:d,meta:C,info:B,byteLength:M,dimension:R}=g[I];(B==null?void 0:B.location)!==void 0&&(f[a=C.id]??(f[a]=0),d.offset??(d.offset=f[C.id]),d.stride??(d.stride=h[C.id]===M?0:h[C.id]),this.enableVertexAttrib(I,B.location,d,R),f[C.id]+=M)}}const r=i.elementArrayBuffer??null;this._renderer.buffer.bind({target:"element_array_buffer",value:r}),this.boundVertexArray.elementArrayBuffer=r}bind(e){const t=this._renderer.gl;if(e&&"attributes"in e)this.update(e);else if("bindVertexArray"in t){const i=this.boundVertexArrayObject;({value:e!==i}).value&&(t.bindVertexArray(e),this.boundVertexArrayObject=e,e?this.boundVertexArray={...this.getVertexArrayMeta(e)}:this.boundVertexArray=this.boundVertexArrayNull)}}unbind(){return this.bind(null)}reset(){super.reset(),this.boundVertexArrayNull={attributes:{},elementArrayBuffer:null},this.boundVertexArray=this.boundVertexArrayNull,this.boundVertexArrayObject=null}}class Ko extends It{constructor(){super(...arguments);u(this,"boundViewport",{x:0,y:0,width:0,height:0})}install(e){super.install(e),e.viewport=this}bind(e){const t=this.boundViewport,i=Math.floor(e.x),r=Math.floor(e.y),n=Math.floor(e.width),o=Math.floor(e.height);t.x===i&&t.y===r&&t.width===n&&t.height===o||(this._renderer.gl.viewport(i,r,n,o),t.x=i,t.y=r,t.width=n,t.height=o)}reset(){super.reset(),this.boundViewport={x:0,y:0,width:0,height:0}}}class Yo extends Ro{constructor(e=lo(),t){super();u(this,"_modules",[new Ho,new No,new Fo,new Lo,new Jo,new Ko,new Uo,new To,new Go,new Oo,new ko]);u(this,"bindPoints",new Map);if(!e)throw new Error("Failed to createHTMLCanvas");oo(e)?this._setupContext(e,t):(this.gl=e,this.version=ao(this.gl)?2:1),this._setupBindPoints()._setupExtensions()._setupPolyfill(),this.gl.pixelStorei(this.gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),this._modules.forEach(i=>i.install(this)),this._modules.forEach(i=>i.onUpdateContext())}_setupContext(e,t){this.view=e;let i=e.getContext("webgl2",t)||e.getContext("experimental-webgl2",t),r=2;if(i||(i=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),r=1),!i)throw new Error("Unable to getContext");return this.gl=i,this.version=r,this._onContextLost=this._onContextLost.bind(this),this._onContextRestored=this._onContextRestored.bind(this),e.addEventListener("webglcontextlost",this._onContextLost,!1),e.addEventListener("webglcontextrestored",this._onContextRestored,!1),this}_setupExtensions(){const e=this.gl,t={loseContext:e.getExtension("WEBGL_lose_context"),anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tcSRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc")};return this.version===1?(t.instancedArrays=e.getExtension("ANGLE_instanced_arrays"),t.drawBuffers=e.getExtension("WEBGL_draw_buffers"),t.depthTexture=e.getExtension("WEBGL_depth_texture"),t.vertexArrayObject=e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),t.uint32ElementIndex=e.getExtension("OES_element_index_uint"),t.floatTexture=e.getExtension("OES_texture_float"),t.textureHalfFloat=e.getExtension("OES_texture_half_float"),t.textureHalfFloatLinear=e.getExtension("OES_texture_half_float_linear")):this.version===2&&(t.colorBufferFloat=e.getExtension("EXT_color_buffer_float")),this.extensions=t,this}_setupBindPoints(){for(const e in this.gl)if(e===e.toUpperCase()){const t=this.gl[e];typeof t=="number"&&this.bindPoints.set(t,e.toLowerCase())}return this}_setupPolyfill(){if(this.version===1){const{instancedArrays:e,vertexArrayObject:t,drawBuffers:i}=this.extensions,r=this.gl;t&&(r.createVertexArray=()=>t.createVertexArrayOES(),r.bindVertexArray=n=>t.bindVertexArrayOES(n),r.deleteVertexArray=n=>t.deleteVertexArrayOES(n)),e&&(r.vertexAttribDivisor=(n,o)=>e.vertexAttribDivisorANGLE(n,o),r.drawElementsInstanced=(n,o,a,l,h)=>e.drawElementsInstancedANGLE(n,o,a,l,h),r.drawArraysInstanced=(n,o,a,l)=>e.drawArraysInstancedANGLE(n,o,a,l)),i&&(r.drawBuffers=n=>i.drawBuffersWEBGL(n))}return this}_onContextLost(e){e.preventDefault(),setTimeout(()=>{var t;this.gl.isContextLost()&&((t=this.extensions.loseContext)==null||t.restoreContext())},0)}_onContextRestored(){}getBindPoint(e){return this.gl[e.toUpperCase()]}clear(e=this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT){this.gl.clear(e)}draw(e={}){const{mode:t="triangles",first:i=0,instanceCount:r}=e;let{count:n=0,bytesPerElement:o=0}=e;if(!n||!o){const l=this.vertexArray.boundVertexArray.elementArrayBuffer??Object.values(this.vertexArray.boundVertexArray.attributes)[0];if(l){const h=this.buffer.getMeta(l);n||(n=h.length),o||(o=h.bytesPerElement)}}const a=this.getBindPoint(t);if(o)if(o===2||o===4&&this.extensions.uint32ElementIndex){const l=o===2?this.gl.UNSIGNED_SHORT:this.gl.UNSIGNED_INT;r&&"drawElementsInstanced"in this.gl?this.gl.drawElementsInstanced(a,n,l,i*o,r):this.gl.drawElements(a,n,l,i*o)}else console.warn("Unsupported index buffer type: uint32");else r&&"drawArraysInstanced"in this.gl?this.gl.drawArraysInstanced(a,i,n,r):this.gl.drawArrays(a,i,n)}reset(){this._modules.forEach(e=>e.reset())}flush(){this._modules.forEach(e=>e.flush())}free(){var e,t,i;this._modules.forEach(r=>r.free()),(e=this.view)==null||e.removeEventListener("webglcontextlost",this._onContextLost,!1),(t=this.view)==null||t.removeEventListener("webglcontextrestored",this._onContextRestored,!1),(i=this.extensions.loseContext)==null||i.loseContext()}toPixels(){const e=this.gl.drawingBufferWidth,t=this.gl.drawingBufferHeight,i=e*t*4,r=e*4,n=(t-1)*r,o=new Uint8Array(i),a=new Uint8ClampedArray(i);this.gl.readPixels(0,0,e,t,this.gl.RGBA,this.gl.UNSIGNED_BYTE,o);for(let l=0;l<i;l+=r)a.set(o.subarray(l,l+r),n-l);return a}}class AA{}class Wo extends AA{install(A){const e=async t=>{const{parseFont:i}=await Promise.resolve().then(()=>od);return await A.fetch(t).then(r=>r.arrayBuffer()).then(r=>i(r))};return this.load=t=>A.loadBy(t,()=>e(t)),["woff","ttf","otf"].forEach(t=>{A.register(t,e)}),A.font=this,this}}const zo={brightness:1,contrast:1,grayscale:0,"hue-rotate":0,invert:0,opacity:1,saturate:1,sepia:0};function Vo(s){const A=new xs;if(s==="none")return A;const e=Bi(s).reduce((t,{name:i,args:r})=>(t[i]=r[0].normalizedIntValue,t),{});Object.keys(zo).forEach(t=>{e[t]=e[t]??zo[t]});for(const t in e){const i=e[t];switch(t){case"hue-rotate":A.hueRotate(i*tt);break;case"saturate":A.saturate(i);break;case"brightness":A.brightness(i);break;case"contrast":A.contrast(i);break;case"invert":A.invert(i);break;case"sepia":A.sepia(i);break;case"opacity":A.opacity(i);break;case"grayscale":A.grayscale(i);break}}return A}function qo(s,A,e,t=new dt){return s=!s||s==="none"?"":s,Bi(s,{width:A,height:e}).forEach(({name:i,args:r})=>{const n=r.map(o=>o.normalizedIntValue);switch(i){case"translate":t.translate(n[0]*A,(n[1]??n[0])*e);break;case"translateX":t.translateX(n[0]*A);break;case"translateY":t.translateY(n[0]*e);break;case"translateZ":t.translateZ(n[0]);break;case"translate3d":t.translate3d(n[0]*A,(n[1]??n[0])*e,n[2]??n[1]??n[0]);break;case"scale":t.scale(n[0],n[1]??n[0]);break;case"scaleX":t.scaleX(n[0]);break;case"scaleY":t.scaleY(n[0]);break;case"scale3d":t.scale3d(n[0],n[1]??n[0],n[2]??n[1]??n[0]);break;case"rotate":t.rotate(n[0]*tt);break;case"rotateX":t.rotateX(n[0]*tt);break;case"rotateY":t.rotateY(n[0]*tt);break;case"rotateZ":t.rotateZ(n[0]*tt);break;case"rotate3d":t.rotate3d(n[0]*tt,(n[1]??n[0])*tt,(n[2]??n[1]??n[0])*tt,(n[3]??n[2]??n[1]??n[0])*tt);break;case"skew":t.skew(n[0],n[0]??n[1]);break;case"skewX":t.skewX(n[0]);break;case"skewY":t.skewY(n[0]);break;case"matrix":t.set(n);break}}),t}function Xo(s){const[A,e=A]=s.split(" ");return[A,e].map(t=>{switch(t=t.trim(),t){case"left":case"top":return 0;case"center":return .5;case"right":case"bottom":return 1;default:return Number(t)}})}class lr extends Kt{constructor(e={}){super();u(this,"vertexAttributes");u(this,"indexBuffer");u(this,"instanceCount");u(this,"mode");u(this,"_materialWeakMap",new kA);this.vertexAttributes=new Map(Object.entries((e==null?void 0:e.vertexAttributes)??{})),this.indexBuffer=e==null?void 0:e.indexBuffer,this.instanceCount=e==null?void 0:e.instanceCount,this.mode=(e==null?void 0:e.mode)??"triangles"}_glVertexArray(e){var t;return{attributes:Object.fromEntries(Array.from(this.vertexAttributes).map(([i,r])=>[i,{buffer:r.buffer._glBuffer(e),size:r.size,type:r.type,normalized:r.normalized,stride:r.stride,offset:r.offset,divisor:r.divisor}])),elementArrayBuffer:(t=this.indexBuffer)==null?void 0:t._glBuffer(e)}}_glVertexArrayObject(e,t){let i=this._materialWeakMap.get(t);return i||(i={material:t.instanceId,geometry:this.instanceId},this._materialWeakMap.set(t,i)),e.getRelated(i,()=>e.vertexArray.create(t._glProgram(e),this._glVertexArray(e)))}draw(e,t,i){var a;e.flush(),t.activate(e,i);const r=this._glVertexArrayObject(e,t);let n=!1,o;this.vertexAttributes.forEach(l=>{(o==null?void 0:o.instanceId)!==l.buffer.instanceId&&(o=l.buffer,o.upload(e)&&(n=!0)),l.upload()&&(n=!0)}),(a=this.indexBuffer)!=null&&a.upload(e)&&(n=!0),n&&r&&e.vertexArray.update(t._glProgram(e),r,this._glVertexArray(e)),e.vertexArray.bind(r??this._glVertexArray(e)),e.draw({mode:this.mode,instanceCount:this.instanceCount}),e.vertexArray.unbind()}}var Wh=Object.defineProperty,jo=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&Wh(A,e,i),i};class FA extends Kt{constructor(e){super();u(this,"needsUpload",!1);this.setProperties(e)}_glBufferOptions(){return{target:"element_array_buffer",data:this.data,usage:this.dynamic?"dynamic_draw":"static_draw"}}_glBuffer(e){return e.getRelated(this,()=>e.buffer.create(this._glBufferOptions()))}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"data":case"dynamic":this.needsUpload=!0;break}}upload(e){const t=this.needsUpload;return t&&(this.needsUpload=!1,e.buffer.update(this._glBuffer(e),this._glBufferOptions())),t}}jo([Be({default:null})],FA.prototype,"data"),jo([Be({default:!1})],FA.prototype,"dynamic");var zh=Object.defineProperty,Zo=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&zh(A,e,i),i};class zt extends Kt{constructor(e){super();u(this,"needsUpload",!1);this.setProperties(e)}_glBufferOptions(){return{target:"array_buffer",data:this.data,usage:this.dynamic?"dynamic_draw":"static_draw"}}_glBuffer(e){return e.getRelated(this,()=>e.buffer.create(this._glBufferOptions()))}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"data":case"dynamic":this.needsUpload=!0;break}}upload(e){const t=this.needsUpload;return t&&(this.needsUpload=!1,e.buffer.update(this._glBuffer(e),this._glBufferOptions())),t}}Zo([Be({default:null})],zt.prototype,"data"),Zo([Be({default:!1})],zt.prototype,"dynamic");var Vh=Object.defineProperty,QA=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&Vh(A,e,i),i};class lt extends Kt{constructor(e){super();u(this,"stride");u(this,"offset");u(this,"divisor");u(this,"needsUpload",!1);this.setProperties({buffer:new zt,...e})}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"buffer":case"size":case"normalized":case"type":case"stride":case"offset":case"divisor":this.needsUpload=!0;break}}upload(){const e=this.needsUpload;return e&&(this.needsUpload=!1),e}}QA([Be()],lt.prototype,"buffer"),QA([Be({default:0})],lt.prototype,"size"),QA([Be({default:!1})],lt.prototype,"normalized"),QA([Be({default:"float"})],lt.prototype,"type"),QA([Be()],lt.prototype,"stride"),QA([Be()],lt.prototype,"offset"),QA([Be()],lt.prototype,"divisor");class qh extends lr{constructor(){super({vertexAttributes:{position:new lt({buffer:new zt({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new FA({data:new Uint16Array([0,1,3,2]),dynamic:!1}),mode:"triangle_strip"})}}const Zr=class Zr extends Kt{constructor(e={}){super();u(this,"vert");u(this,"frag");u(this,"uniforms");this.vert=e.vert??`precision highp float;
70
70
  attribute vec2 position;
71
71
  uniform mat3 projectionMatrix;
72
72
  uniform mat3 modelViewMatrix;
@@ -77,13 +77,13 @@ void main(void) {
77
77
  gl_FragColor = tint;
78
78
  }`,this.uniforms=new Map(Object.entries(e.uniforms??{projectionMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),modelViewMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),tint:new Float32Array([1,1,1,1])}))}_glProgram(e){return e.getRelated(this,()=>{let t=this.vert,i=this.frag;return i.includes("precision")||(i=`precision mediump float;
79
79
  ${i}`),t.includes("precision")||(t=`precision mediump float;
80
- ${t}`),e.program.create({vert:t,frag:i})})}activate(e,t){e.program.bind(this._glProgram(e)),(t||this.uniforms.size>0)&&e.program.updateUniforms({...Object.fromEntries(this.uniforms.entries()),...t})}};u(Zr,"instance",new Zr);let pe=Zr;const qh=/^uniform \w+ (.+?);\s*\/\/\s*=\s*([^;]+?)[\s;]*$/gm,Xh=/vec(\d)\((.*)\)/;function jh(r){r=r.trim();const A=r.match(Xh);if(A){const e=Array.from({length:Number(A[1])},()=>0);return A[2].split(",").forEach((t,i)=>{e[i]=Number(t.trim())}),e}return Number(r)}const $i=class $i extends pe{constructor(e){super();u(this,"vert",`attribute vec2 position;
80
+ ${t}`),e.program.create({vert:t,frag:i})})}activate(e,t){e.program.bind(this._glProgram(e)),(t||this.uniforms.size>0)&&e.program.updateUniforms({...Object.fromEntries(this.uniforms.entries()),...t})}};u(Zr,"instance",new Zr);let pe=Zr;const Xh=/^uniform \w+ (.+?);\s*\/\/\s*=\s*([^;]+?)[\s;]*$/gm,jh=/vec(\d)\((.*)\)/;function Zh(s){s=s.trim();const A=s.match(jh);if(A){const e=Array.from({length:Number(A[1])},()=>0);return A[2].split(",").forEach((t,i)=>{e[i]=Number(t.trim())}),e}return Number(s)}const er=class er extends pe{constructor(e){super();u(this,"vert",`attribute vec2 position;
81
81
  attribute vec2 uv;
82
82
  varying vec2 vUv;
83
83
  void main() {
84
84
  gl_Position = vec4(position, 0.0, 1.0);
85
85
  vUv = uv;
86
- }`);u(this,"uniforms",new Map([["ratio",0],["from",0],["to",1],["progress",0]]));u(this,"has",{getColor:!1,getFromColor:!1,getToColor:!1,transform:!1,transition:!1});const t=this.has;for(const s in $i.RE)t[s]=$i.RE[s].test(e);this.frag=`precision highp float;
86
+ }`);u(this,"uniforms",new Map([["ratio",0],["from",0],["to",1],["progress",0]]));u(this,"has",{getColor:!1,getFromColor:!1,getToColor:!1,transform:!1,transition:!1});const t=this.has;for(const r in er.RE)t[r]=er.RE[r].test(e);this.frag=`precision highp float;
87
87
  varying vec2 vUv;
88
88
  uniform float ratio;
89
89
  uniform float progress;
@@ -96,7 +96,7 @@ vec4 getFromColor(vec2 uv) { return texture2D(from, uv); }
96
96
  vec4 getToColor(vec2 uv) { return texture2D(to, uv); }`:""}
97
97
  ${e}${t.transform?`
98
98
  void main(void) { gl_FragColor = transform(vUv); }`:t.transition?`
99
- void main(void) { gl_FragColor = transition(vUv); }`:""}`;const i=e.matchAll(qh);for(const s of i)s[1]&&s[2]&&s[1].split(",").forEach(n=>{this.uniforms.set(n.trim(),jh(s[2]))})}};u($i,"RE",{getColor:/\sgetColor\s*\(/,getFromColor:/\sgetFromColor\s*\(/,getToColor:/\sgetToColor\s*\(/,transform:/\stransform\s*\(/,transition:/\stransition\s*\(/});let lr=$i;class FA extends pe{static get instance(){return this._instance??(this._instance=new this)}constructor(){super({vert:`precision highp float;
99
+ void main(void) { gl_FragColor = transition(vUv); }`:""}`;const i=e.matchAll(Xh);for(const r of i)r[1]&&r[2]&&r[1].split(",").forEach(n=>{this.uniforms.set(n.trim(),Zh(r[2]))})}};u(er,"RE",{getColor:/\sgetColor\s*\(/,getFromColor:/\sgetFromColor\s*\(/,getToColor:/\sgetToColor\s*\(/,transform:/\stransform\s*\(/,transition:/\stransition\s*\(/});let hr=er;class TA extends pe{static get instance(){return this._instance??(this._instance=new this)}constructor(){super({vert:`precision highp float;
100
100
  attribute vec2 position;
101
101
  attribute vec2 uv;
102
102
  uniform mat3 projectionMatrix;
@@ -110,7 +110,7 @@ uniform sampler2D sampler;
110
110
  uniform vec4 tint;
111
111
  void main(void) {
112
112
  gl_FragColor = texture2D(sampler, vUv) * tint;
113
- }`,uniforms:{sampler:0,projectionMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),modelViewMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),tint:new Float32Array([1,1,1,1])}})}}u(FA,"_instance");class ce extends ar{static get instance(){return this._instance??(this._instance=new this)}static draw(A,e=FA.instance,t){this.instance.draw(A,e,t)}constructor(){super({vertexAttributes:{position:new lt({buffer:new Wt({data:new Float32Array([-1,-1,1,-1,1,1,-1,1]),dynamic:!1}),size:2,normalized:!1,type:"float"}),uv:new lt({buffer:new Wt({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new NA({data:new Uint16Array([0,1,2,0,2,3]),dynamic:!1})})}}u(ce,"_instance");class Zh extends ar{constructor(){const e=new Wt({data:new Float32Array,dynamic:!0}),t=new Wt({data:new Float32Array,dynamic:!0});super({vertexAttributes:{position:new lt({buffer:e,size:2,normalized:!1,type:"float"}),uv:new lt({buffer:t,size:2,normalized:!1,type:"float"})},indexBuffer:new NA({data:new Uint16Array,dynamic:!0})});u(this,"positionBuffer");u(this,"uvBuffer");this.positionBuffer=e,this.uvBuffer=t}}var $h=Object.defineProperty,TA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&$h(A,e,i),i};class ve extends Jt{constructor(e){super();u(this,"_isPowerOfTwo",!1);u(this,"_needsUpload",!1);this.source=e,this._updateSize()}static get EMPTY(){return new this({width:1,height:1,pixels:null})}static get WHITE(){return new this({width:1,height:1,pixels:new Uint8Array([255,255,255,255])})}static get BLACK(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,0,255])})}static get RED(){return new this({width:1,height:1,pixels:new Uint8Array([255,0,0,255])})}static get GREEN(){return new this({width:1,height:1,pixels:new Uint8Array([0,255,0,255])})}static get BLUE(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,255,255])})}get valid(){return!!(this.width&&this.height)}get realWidth(){return Math.round(this.width*this.pixelRatio)}get realHeight(){return Math.round(this.height*this.pixelRatio)}_glTextureOptions(e,t){let i=this.wrapMode;return e.version===1&&!this._isPowerOfTwo&&(i="clamp_to_edge"),{value:this.source,target:"texture_2d",location:0,filterMode:this.filterMode,wrapMode:i,...t}}_glTexture(e,t){return e.getRelated(this,()=>e.texture.create(this._glTextureOptions(e,t)))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"width":case"height":this._updatePOT();break;case"source":this._updateSize();break;case"filterMode":case"wrapMode":case"pixelRatio":this.requestUpload();break}}_updatePOT(){this._isPowerOfTwo=fs(this.realWidth)&&fs(this.realHeight),this.requestUpload()}_updateSize(){const e=this.source;"pixels"in e?(this.width=e.width/this.pixelRatio,this.height=e.height/this.pixelRatio):(this.width=Number(e.naturalWidth||e.videoWidth||e.width||0)/this.pixelRatio,this.height=Number(e.naturalHeight||e.videoHeight||e.height||0)/this.pixelRatio),this.requestUpload()}requestUpload(){this._needsUpload=!0}upload(e,t){return this._needsUpload&&this.valid?(this._needsUpload=!1,e.texture.update(this._glTexture(e,t),this._glTextureOptions(e,t)),!0):!1}activate(e,t=0){return this.valid?(e.texture.bind({target:"texture_2d",value:this._glTexture(e,{location:t}),location:t}),this.upload(e,{location:t}),!0):!1}inactivate(e){e.texture.unbind(this._glTexture(e))}free(){to&&this.source instanceof ImageBitmap&&this.source.close()}}TA([Be()],ve.prototype,"source"),TA([M({default:0})],ve.prototype,"width"),TA([M({default:0})],ve.prototype,"height"),TA([M({default:"linear"})],ve.prototype,"filterMode"),TA([M({default:"clamp_to_edge"})],ve.prototype,"wrapMode"),TA([M({default:1})],ve.prototype,"pixelRatio");class hr extends Jt{constructor(e){super();u(this,"frames");let t;if(Array.isArray(e))t=e;else if(e instanceof ve)t=[{texture:e,duration:0}];else throw new TypeError("Failed new AnimatedTexture");this.frames=t,this.updateDuration()}updateDuration(){return this.duration=this.frames.reduce((e,t)=>t.duration+e,0),this}free(){this.frames.forEach(e=>{e.texture.free()})}}var eg=Object.defineProperty,tg=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&eg(A,e,i),i};class LA extends ve{constructor(A=document.createElement("canvas")){super(A)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.max(1,Math.ceil(e*this.pixelRatio));break;case"height":this.source.height=Math.max(1,Math.ceil(e*this.pixelRatio));break}super._updateProperty(A,e,t,i)}}tg([M({default:2})],LA.prototype,"pixelRatio");class Us extends ve{constructor(A){const e=new Yt(A);super({width:1,height:1,pixels:new Uint8Array([e.r8,e.g8,e.b8,e.a8])})}}function Ag(r){return{autoLoad:!!((r==null?void 0:r.autoLoad)??!0),useBitmap:!!((r==null?void 0:r.useBitmap)??!0)&&Is,crossorigin:(r==null?void 0:r.crossorigin)??null}}class ig extends ve{constructor(e,t){const i=Ag(t);super(e);u(this,"bitmap");u(this,"useBitmap");u(this,"preserveBitmap",!1);u(this,"_loadSource");u(this,"_loadBitmap");const s=e.src,n=s.includes(".svg")||s.startsWith("data:image/svg+xml");this.useBitmap=i.useBitmap&&!n,i.autoLoad&&this.load()}async load(){return this._loadSource||(this._loadSource=new Promise(e=>{this._loadSource=void 0;const t=this.source,i=()=>{t.onload=null,t.onerror=null},s=()=>{i(),this.requestUpload(),this.useBitmap?this.genBitmap().finally(()=>e(this)):e(this)},n=o=>{i(),console.warn(`Failed to load ImageTexture, src: ${t.src}`,o),this.emit("error",o),e(this)};t.complete&&t.src?s():(t.onload=s,t.onerror=n)})),this._loadSource}genBitmap(){if(this._loadBitmap)return this._loadBitmap;if(this.bitmap||!Is)return Promise.resolve(this);const e=this.source,t=!e.crossOrigin||e.crossOrigin==="anonymous";return this._loadBitmap=fetch(e.src,{mode:t?"cors":"no-cors"}).then(i=>i.blob()).then(i=>createImageBitmap(i,0,0,e.width,e.height,{premultiplyAlpha:"premultiply"})).then(i=>(this.bitmap=i,this.requestUpload(),this._loadBitmap=void 0,this)).catch(i=>(console.warn("Failed to genBitmap",i),this)),this._loadBitmap}_glTextureOptions(e){return{...super._glTextureOptions(e),value:this.bitmap??this.source}}upload(e){if(this.useBitmap){if(!this.bitmap)return this.genBitmap(),!1}else{const i=this.source;if(Ii&&i instanceof HTMLImageElement&&(!i.complete||i.naturalWidth===0))return!1}const t=super.upload(e);return this.preserveBitmap&&this.bitmap&&(this.bitmap.close(),this.bitmap=void 0),t}}class ks extends ve{constructor(A,e=1,t=1){const i={width:e,height:t,pixels:null};A&&(ArrayBuffer.isView(A)?i.pixels=new Uint8Array(A.buffer):i.pixels=new Uint8Array(A)),super(i)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.round(this.width*this.pixelRatio);break;case"height":this.source.height=Math.round(this.height*this.pixelRatio);break;case"pixelRatio":this.source.width=Math.round(this.width*this.pixelRatio),this.source.height=Math.round(this.height*this.pixelRatio);break}super._updateProperty(A,e,t,i)}}var rg=Object.defineProperty,ea=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&rg(A,e,i),i};function sg(r){return{autoLoad:!!((r==null?void 0:r.autoLoad)??!0),autoPlay:!!((r==null?void 0:r.autoPlay)??!1),fps:Number((r==null?void 0:r.fps)??0),crossorigin:(r==null?void 0:r.crossorigin)??null,loop:!!((r==null?void 0:r.loop)??!1),muted:!!((r==null?void 0:r.muted)??!1),playsinline:!!((r==null?void 0:r.playsinline)??!0)}}const Ns=(MA=class extends ve{constructor(e,t){const i=sg(t);if(!oo(e)){typeof e=="string"&&(e=[e]);const s=e[0].src||e[0],n=document.createElement("video");i.autoLoad&&n.setAttribute("preload","auto"),i.playsinline&&(n.setAttribute("webkit-playsinline",""),n.setAttribute("playsinline","")),i.muted&&(n.setAttribute("muted",""),n.muted=!0),i.loop&&n.setAttribute("loop",""),i.autoPlay&&n.setAttribute("autoplay",""),co(n,s,i.crossorigin);for(let o=0;o<e.length;++o){let{src:a,mime:l}=e[o];if(a=a||e[o],a.startsWith("data:"))l=a.slice(5,a.indexOf(";"));else if(!a.startsWith("blob:")){const c=a.split("?").shift().toLowerCase(),f=c.slice(c.lastIndexOf(".")+1);l=l||MA.mimeTypes.get(f)||`video/${f}`}const h=document.createElement("source");h.src=a,l&&(h.type=l),n.appendChild(h)}e=n}super(e);u(this,"_spf",0);u(this,"_autoPlay",!1);u(this,"_sourceLoad");u(this,"_nextTime",0);u(this,"_connected",!1);u(this,"_requestId");u(this,"_resolve");u(this,"_reject");u(this,"_onPlayStart",()=>{this.valid||this._onCanPlay(),this._setupAutoUpdate()});u(this,"_onPlayStop",()=>{this._setupAutoUpdate()});u(this,"_onCanPlay",()=>{const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._nextTime=0,this._updateSize(),this.requestUpload(),this._nextTime=0,!t&&this._resolve&&(this._resolve(this),this._sourceLoad=void 0,this._resolve=void 0,this._reject=void 0),this.isPlaying?this._onPlayStart():this._autoPlay&&e.play()});u(this,"_onError",e=>{this.source.removeEventListener("error",this._onError,!0),this.emit("error",e),this._reject&&(this._reject(e),this._reject=void 0,this._resolve=void 0)});u(this,"_onSeeked",()=>{this.autoUpdate&&!this.isPlaying&&(this._nextTime=0,this.requestUpload(),this._nextTime=0)});u(this,"_videoFrameRequestCallback",()=>{this.requestUpload(),this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)});u(this,"requestUpload",()=>{const e=Math.floor(xe.elapsed*this.source.playbackRate);this._nextTime-=e,(!this._spf||this._nextTime<=0)&&(super.requestUpload(),this._nextTime=this._spf||0)});this.fps=i.fps,this._autoPlay=i.autoPlay,i.autoPlay&&this.load(),this._setupAutoUpdate()}get isReady(){return this.source.readyState>2}get isPlaying(){return!this.source.paused&&!this.source.ended&&this.isReady}get duration(){return this.source.duration}get seeking(){return this.source.seeking}get currentTime(){return this.source.currentTime}set currentTime(e){this.source.currentTime=e}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"fps":this._spf=t?Math.floor(1e3/t):0,this._setupAutoUpdate();break;case"autoUpdate":this._setupAutoUpdate();break}}_setupAutoUpdate(){this.autoUpdate&&this.isPlaying?!this.fps&&this.source.requestVideoFrameCallback?(this._connected&&(xe.off(this.requestUpload),this._connected=!1,this._nextTime=0),this._requestId===void 0&&(this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected||(xe.on(this.requestUpload),this._connected=!0,this._nextTime=0)):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected&&(xe.off(this.requestUpload),this._connected=!1,this._nextTime=0))}async load(){if(!this._sourceLoad){const e=this.source;(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this.isReady?this._onCanPlay():(e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlay),e.addEventListener("error",this._onError,!0)),this._sourceLoad=new Promise((t,i)=>{this.valid?(this._sourceLoad=void 0,t(this)):(this._resolve=t,this._reject=i,e.load())})}return this._sourceLoad}free(){this._setupAutoUpdate();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())}},u(MA,"mimeTypes",new Map(Object.entries({ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"}))),MA);ea([Be({default:!0})],Ns.prototype,"autoUpdate"),ea([Be({default:0})],Ns.prototype,"fps");let ta=Ns;class Fs extends ks{}var ng=Object.defineProperty,og=Object.getOwnPropertyDescriptor,QA=(r,A,e,t)=>{for(var i=t>1?void 0:t?og(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ng(A,e,i),i};const Aa={};function ag(r){let A=Aa[r]??0;return A++,Aa[r]=A,A}g.Node=class extends Ht{constructor(e,t=[]){super();u(this,"_readyed",!1);u(this,"_tree");u(this,"_parent");u(this,"_children",[]);u(this,"_meta",new Map);this._onTreeEnter=this._onTreeEnter.bind(this),this._onTreeExit=this._onTreeExit.bind(this),this._onParented=this._onParented.bind(this),this._onUnparented=this._onUnparented.bind(this),this._onReady=this._onReady.bind(this),this._onProcess=this._onProcess.bind(this),this.setProperties({name:`${this.tag}:${ag(this.tag)}`,...e}).append(t),this.on("treeEnter",this._onTreeEnter).on("treeExit",this._onTreeExit).on("parented",this._onParented).on("unparented",this._onUnparented).on("ready",this._onReady).on("process",this._onProcess)}getName(){return this.name}setName(e){return this.name=e,this}get tree(){return this.getTree()}set tree(e){this.setTree(e)}getTree(){return this._tree}getViewport(){var e;return(e=this._tree)==null?void 0:e.getCurrentViewport()}getWindow(){var e;return(e=this._tree)==null?void 0:e.root}isInsideTree(){return!!this._tree}setTree(e){const t=this._tree;if(!(e!=null&&e.is(t))){t&&this.emit("treeExit",t),this._tree=e,e&&this.emit("treeEnter",e);for(let i=this._children.length,s=0;s<i;s++){const n=this._children[s];!e&&this.emit("childExitingTree",n),n.setTree(e),e&&this.emit("childEnteredTree",n)}e&&(this.emit("treePostEnter",e),this._readyed||(this._readyed=!0,this.emit("ready")))}return this}get parent(){return this._parent}set parent(e){this.setParent(e)}hasParent(){return!!this._parent}getParent(){return this._parent}setParent(e){var t;if(!((t=this._parent)!=null&&t.is(e))){const i=this._parent;i&&this.emit("unparented",i),this._parent=e,e&&this.emit("parented",e),this.setTree(e==null?void 0:e._tree)}return this}get siblingIndex(){return this.getIndex()}set siblingIndex(e){var t;(t=this._parent)==null||t.moveChild(this,e)}get previousSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[this.getIndex()-1]}get nextSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[this.getIndex()+1]}get firstSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[0]}get lastSibling(){var t;const e=(t=this._parent)==null?void 0:t.getChildren();return e?e[e.length-1]:void 0}hasMeta(e){return this._meta.has(e)}getMeta(e,t){return this._meta.get(e)??t}setMeta(e,t){this._meta.set(e,t)}deleteMeta(e){this._meta.delete(e)}clearMeta(){this._meta.clear()}canProcess(){var e;if(!this._tree)return!1;switch(this.processMode){case"inherit":return((e=this._parent)==null?void 0:e.canProcess())??!0;case"pausable":return!this._tree.processPaused;case"when_paused":return this._tree.processPaused;case"always":return!0;case"disabled":default:return!1}}canRender(){var e;if(!this._tree)return!1;switch(this.renderMode){case"inherit":return((e=this._parent)==null?void 0:e.canRender())??!0;case"always":return!0;case"disabled":default:return!1}}_update(e){super._update(e)}_updateProperty(e,t,i,s){super._updateProperty(e,t,i,s)}_onTreeEnter(e){this._treeEnter(e),this.emit("treeEntered",e)}_onTreeExit(e){this.emit("treeExiting",e),this._treeExit(e),this.emit("treeExited",e)}_onParented(e){this._parented(e)}_onUnparented(e){this._unparented(e)}_onReady(){this._ready()}_onProcess(e=0){const t=this._tree,i=this.canRender(),s=this.canProcess(),n=[],o=[];for(let l=this._children.length,h=0;h<l;h++){const c=this._children[h];switch(c.processSortMode){case"default":o.push(c);break;case"parent_before":n.push(c);break}}n.forEach(l=>{l.emit("process",e)}),s&&(t==null||t.emit("nodeProcessing",this),this.emit("processing",e),this._process(e));let a;if(i){const l=t.renderStack.push(this);a=t.renderStack.currentCall,t.renderStack.currentCall=l}if(this.mask instanceof g.Node)this.getNode("__$mask")||(this.mask.processMode="disabled",this.appendChild(this.mask,"front"));else{const l=this.getNode("__$mask");l&&this.removeChild(l)}o.forEach(l=>{l.emit("process",e)}),i&&(t.renderStack.currentCall=a),s&&(this.emit("processed",e),t==null||t.emit("nodeProcessed",this))}render(e,t){const i=this.mask;i&&(e.flush(),e.mask.push(this,i)),this._render(e),t==null||t(),i&&(e.flush(),e.mask.pop(this))}input(e,t){for(let i=this._children.length-1;i>=0;i--)this._children[i].input(e,t);this._input(e,t)}getChildren(e=!1){switch(e){case!0:return this._children;case!1:return this._children.filter(t=>t.internalMode==="default");default:return this._children.filter(t=>t.internalMode===e)}}getIndex(e=!1){var t;return((t=this._parent)==null?void 0:t.getChildren(e).indexOf(this))??0}getNode(e){return this._children.find(t=>t.name===e)}removeNode(e){var t;(t=this.getNode(e))==null||t.remove()}addSibling(e){return this.is(e)||!this.hasParent()||e.hasParent()?this:(e.internalMode=this.internalMode,this._parent.moveChild(e,this.getIndex(!0)+1),this)}prepend(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{this.moveChild(i,0)})}append(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{this.appendChild(i)})}before(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{var s;(s=this._parent)==null||s.moveChild(i,this.getIndex(!0))})}after(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{var s;(s=this._parent)==null||s.moveChild(i,this.getIndex(!0)+1)})}insertBefore(e,t){return!t.hasParent()||!this.is(t.parent)||this.moveChild(e,t.getIndex(!0)),e}appendChild(e,t=e.internalMode){if(this.is(e)||e.hasParent())return e;switch(t){case"default":case"front":{const i=t==="default"?"back":"front",s=this._children.findIndex(n=>n.internalMode===i);s>-1?this._children.splice(s,0,e):this._children.push(e);break}case"back":this._children.push(e);break}return e.internalMode=t,e.setParent(this),this.emit("appendChild",e),e}moveChild(e,t,i=e.internalMode){if(this.is(e)||e.hasParent()&&!this.is(e.parent))return this;e.internalMode=i;const s=this._children.indexOf(e);let n=this._children.findIndex(l=>{switch(i){case"default":return l.internalMode!=="front";case"back":return l.internalMode==="back";case"front":default:return!0}});n=n>-1?n:Math.max(0,this._children.length-1);let o=this._children.slice(n).findIndex(l=>{switch(i){case"front":return l.internalMode!=="front";case"default":return l.internalMode==="back";case"back":default:return!1}});o=o>-1?n+o:Math.max(0,this._children.length);const a=bt(n,t>-1?t:o,o);return a!==s&&(s>-1&&this._children.splice(s,1),e.setParent(this),a>-1&&a<this._children.length?this._children.splice(a,0,e):this._children.push(e),s>-1?this.emit("moveChild",e,a,s):this.emit("appendChild",e)),this}removeChild(e){const t=e.getIndex(!0);return this.is(e.parent)&&t>-1&&(this._children.splice(t,1),e.setParent(void 0),this.emit("removeChild",e,t)),e}removeChildren(){this.getChildren().forEach(e=>this.removeChild(e))}remove(){var e;(e=this._parent)==null||e.removeChild(this)}forEach(e){return this.getChildren().forEach(e),this}deepForEach(e){return this.getChildren().forEach(t=>{e(t),t.deepForEach(e)}),this}_ready(){}_treeEnter(e){}_treeExit(e){}_parented(e){}_unparented(e){}_process(e){}_input(e,t){}_render(e){}clone(){return new this.constructor(this.toJSON().props,this.getChildren(!0))}toJSON(){return{tag:this.tag,props:{name:this.name,...super.toJSON()},meta:Object.fromEntries(this._meta.entries()),children:this.getChildren().map(e=>e.toJSON())}}static parse(e){if(Array.isArray(e))return e.map(a=>this.parse(a));const{tag:t,props:i,children:s}=e,n=rr.get(t)??g.Node,o=new n(i);return s==null||s.forEach(a=>o.appendChild(this.parse(a))),o}},QA([Be()],g.Node.prototype,"name",2),QA([M()],g.Node.prototype,"mask",2),QA([M({default:"inherit"})],g.Node.prototype,"processMode",2),QA([M({default:"default"})],g.Node.prototype,"processSortMode",2),QA([M({default:"inherit"})],g.Node.prototype,"renderMode",2),QA([M({default:"default"})],g.Node.prototype,"internalMode",2),g.Node=QA([ee("Node")],g.Node);var lg=Object.defineProperty,hg=Object.getOwnPropertyDescriptor,Ci=(r,A,e,t)=>{for(var i=t>1?void 0:t?hg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&lg(A,e,i),i};g.TimelineNode=class extends g.Node{constructor(e,t=[]){super();u(this,"computedDuration",0);u(this,"_currentTime",0);u(this,"_startTime",0);this.setProperties(e).append(t)}get timeline(){var e;return(e=this._tree)==null?void 0:e.timeline}get timelineCurrentTime(){var e;return((e=this.timeline)==null?void 0:e.currentTime)??0}get parentStartTime(){var e;return((e=this._parent)==null?void 0:e.startTime)??0}get currentTime(){return bt(0,this._currentTime,this.computedDuration)}get startTime(){return this._startTime}set startTime(e){this.delay=e-this.parentStartTime,this._updateCurrentTime(!0)}get endTime(){return this._startTime+this.computedDuration}get currentTimeProgress(){return this.computedDuration?bt(0,this._currentTime/this.computedDuration,1):0}isInsideTimeRange(){const e=this._currentTime;return this.computedDuration?e>=0&&e<=this.computedDuration:e>=0}_updateCurrentTime(e=!1){if(e||!this.paused){const t=this._parent;this._startTime=this.delay+this.parentStartTime,this.computedDuration=t!=null&&t.computedDuration?Math.min(this._startTime+this.duration,t.endTime)-this._startTime:this.duration,this._currentTime=this.timelineCurrentTime-this._startTime,this.emit("updateCurrentTime",this._currentTime),this.insideTimeRange=this.isInsideTimeRange()}}_process(e){super._process(e),this._updateCurrentTime()}},Ci([M({default:0})],g.TimelineNode.prototype,"delay",2),Ci([M({default:0})],g.TimelineNode.prototype,"duration",2),Ci([M({default:!1})],g.TimelineNode.prototype,"paused",2),Ci([Be()],g.TimelineNode.prototype,"insideTimeRange",2),g.TimelineNode=Ci([ee("TimelineNode")],g.TimelineNode);var gg=Object.defineProperty,cg=Object.getOwnPropertyDescriptor,Qi=(r,A,e,t)=>{for(var i=t>1?void 0:t?cg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&gg(A,e,i),i};g.Viewport=class extends g.Node{constructor(e=!1){super();u(this,"_projection",new Mo);u(this,"_framebufferIndex",0);u(this,"_framebuffers",[{texture:new Fs,needsUpload:!1},{texture:new Fs,needsUpload:!1}]);this.flipY=e,this._projection.flipY(e)}get valid(){return!!(this.width&&this.height)}get framebuffer(){return this._framebuffers[this._framebufferIndex]}get texture(){return this.framebuffer.texture}_glFramebufferOptions(e){const{width:t,height:i}=this,{pixelRatio:s}=e;return this._framebuffers.forEach(n=>{const o=n.texture;o.width=t,o.height=i,o.pixelRatio=s,o.upload(e)}),{width:t,height:i,colorTextures:[this.texture._glTexture(e)]}}_glFramebuffer(e){return e.getRelated(this.framebuffer,()=>e.framebuffer.create(this._glFramebufferOptions(e)))}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"x":case"y":this.requestUpload(),this._projection.translate(this.x,this.y),this.emit("updateRect");break;case"width":case"height":this.requestUpload(),this._projection.resize(this.width,this.height),this.emit("updateRect");break}}requestUpload(){this._framebuffers.forEach(e=>e.needsUpload=!0)}resize(e,t){this.width=e,this.height=t}upload(e){const t=this.framebuffer;return t.needsUpload&&this.valid?(t.needsUpload=!1,e.framebuffer.update(this._glFramebuffer(e),this._glFramebufferOptions(e)),!0):!1}activate(e){var t;return this.valid?(e.flush(),(t=this._tree)==null||t.setCurrentViewport(this),this.upload(e),e.framebuffer.bind(this._glFramebuffer(e)),!0):!1}redraw(e,t){if(this.valid){e.flush();const i=this.framebuffer.texture;return this._framebufferIndex=(this._framebufferIndex+1)%this._framebuffers.length,this.activate(e),e.clear(),i.activate(e,0),t(),!0}return!1}activateWithCopy(e,t){this.resize(t.width,t.height),this.activate(e)&&(e.clear(),t.texture.activate(e,0),ce.draw(e,FA.instance,{sampler:0}))}render(e,t){var s,n;const i=(s=this._tree)==null?void 0:s.getCurrentViewport();this.activate(e),e.clear(),super.render(e,t),e.flush(),i?i.activate(e):(e.framebuffer.bind(null),(n=this._tree)==null||n.setCurrentViewport(void 0))}getRect(){return new Ms(this.x,this.y,this.width,this.height)}toProjectionArray(e=!1){return this._projection.toArray(e)}},Qi([M({default:0})],g.Viewport.prototype,"x",2),Qi([M({default:0})],g.Viewport.prototype,"y",2),Qi([M({default:0})],g.Viewport.prototype,"width",2),Qi([M({default:0})],g.Viewport.prototype,"height",2),g.Viewport=Qi([ee("Viewport")],g.Viewport);var ug=Object.defineProperty,fg=Object.getOwnPropertyDescriptor,yi=(r,A,e,t)=>{for(var i=t>1?void 0:t?fg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ug(A,e,i),i};g.Effect=class extends g.TimelineNode{constructor(e,t=[]){super();u(this,"viewport1",new g.Viewport);u(this,"viewport2",new g.Viewport);u(this,"_renderId",0);u(this,"_renderViewport");u(this,"_previousSibling");u(this,"_nextSibling");this._onProcessing=this._onProcessing.bind(this),this._onNodeProcessed=this._onNodeProcessed.bind(this),this.setProperties(e).append(t)}get _effectMode(){return this.effectMode??"parent"}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"glsl":{const n=new lr(t);!this.effectMode&&n.has.transition&&(this.effectMode="transition"),this.material=n;break}case"glslSrc":{t?Nt.text.load(t).then(n=>this.glsl=n):this.glsl="";break}}}_treeEnter(e){e.on("processing",this._onProcessing),e.on("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(e),this.viewport2.setTree(e)}_treeExit(e){e.off("processing",this._onProcessing),e.off("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(void 0),this.viewport2.setTree(void 0)}_onProcessing(){if(this.canProcess())switch(this._updateCurrentTime(),this._effectMode){case"transition":this._previousSibling=this.previousSibling,this._nextSibling=this.nextSibling;break;default:this._previousSibling=void 0,this._nextSibling=void 0;break}}_onNodeProcessed(e){var i;if(!this.canProcess()||!this.isInsideTimeRange())return;const t=(i=this._tree)==null?void 0:i.renderStack;if(t)switch(this._effectMode){case"transition":e.is(this._previousSibling)?(this._previousSibling=void 0,t.push(this)):e.is(this._nextSibling)&&(this._nextSibling=void 0,t.push(this));break}}_processParent(){var o,a;const e=(o=this._tree)==null?void 0:o.renderStack;if(!e)return;const t=(a=e.currentCall)==null?void 0:a.parentCall;if(!t)return;const i=t.calls;let s,n;i.forEach((l,h)=>{var c;(l.renderable.is(this._parent)||(c=l.renderable.parent)!=null&&c.is(this._parent))&&(s=s??h,n=h)}),!(s===void 0||n===void 0)&&(i.splice(n+1,0,e.createCall(this)),i.splice(s,0,e.createCall(this)))}_processChildren(){var e;this._children.length&&(super.emit("process"),(e=this._tree)==null||e.renderStack.push(this))}_onProcess(e=0){if(this.canProcess())switch(this._renderId=0,this._effectMode){case"before":super._onProcess(e);break;case"parent":this._processParent();break;case"children":this._processChildren();break}}_renderBefore(e){var i;const t=(i=this._tree)==null?void 0:i.getCurrentViewport();t&&this.apply(e,t,{redraw:!0})}_renderTransition(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&(this.viewport1.activateWithCopy(e,this._renderViewport),this.viewport2.resize(this._renderViewport.width,this._renderViewport.height)),this.viewport2.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(i.activate(e),e.clear(),this.viewport1.texture.activate(e,0),this.viewport2.texture.activate(e,1),this.apply(e,i,{from:this.viewport1,to:this.viewport2}),e.texture.unbind(0),e.texture.unbind(1))}}_renderParentOrChildren(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&this.viewport1.resize(this._renderViewport.width,this._renderViewport.height),this.viewport1.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(this.viewport1.activate(e),this.apply(e,this.viewport1,{redraw:!0,target:this._effectMode==="parent"?this._parent??void 0:void 0,targetArea:this._parseTargetArea()}),i.activate(e),this.viewport1.texture.activate(e,0),ce.draw(e))}}_parseTargetArea(){if(this._effectMode==="parent"&&this._parent&&"getRect"in this._parent){const e=this._parent.getRect();if(e)return[e.left/this.viewport1.width,e.top/this.viewport1.height,e.width/this.viewport1.width,e.height/this.viewport1.height]}}_render(e){switch(this._effectMode){case"before":this._renderBefore(e);break;case"transition":this._renderTransition(e);break;case"parent":case"children":default:this._renderParentOrChildren(e);break}this._renderId++}apply(e,t,i){this.material&&(i!=null&&i.redraw?t.redraw(e,()=>{ce.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:t.width/t.height})}):ce.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:i!=null&&i.from?i.from.width/i.from.height:0}))}},yi([Be()],g.Effect.prototype,"material",2),yi([M()],g.Effect.prototype,"effectMode",2),yi([M({default:""})],g.Effect.prototype,"glsl",2),yi([M({default:""})],g.Effect.prototype,"glslSrc",2),g.Effect=yi([ee("Effect")],g.Effect);var ia=Object.defineProperty,dg=Object.getOwnPropertyDescriptor,Ig=(r,A,e)=>A in r?ia(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,zt=(r,A,e,t)=>{for(var i=t>1?void 0:t?dg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ia(A,e,i),i},Bg=(r,A,e)=>Ig(r,A+"",e);g.ColorAdjustEffect=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){e.redraw(A,()=>{ce.draw(A,g.ColorAdjustEffect.material,{sampler:0,saturation:this.saturation,contrast:this.contrast,brightness:this.brightness,red:this.red,green:this.green,blue:this.blue,alpha:this.alpha,gamma:Math.max(this.gamma??1,1e-4)})})}},Bg(g.ColorAdjustEffect,"material",new pe({vert:`precision mediump float;
113
+ }`,uniforms:{sampler:0,projectionMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),modelViewMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),tint:new Float32Array([1,1,1,1])}})}}u(TA,"_instance");class ce extends lr{static get instance(){return this._instance??(this._instance=new this)}static draw(A,e=TA.instance,t){this.instance.draw(A,e,t)}constructor(){super({vertexAttributes:{position:new lt({buffer:new zt({data:new Float32Array([-1,-1,1,-1,1,1,-1,1]),dynamic:!1}),size:2,normalized:!1,type:"float"}),uv:new lt({buffer:new zt({data:new Float32Array([0,0,1,0,1,1,0,1]),dynamic:!1}),size:2,normalized:!1,type:"float"})},indexBuffer:new FA({data:new Uint16Array([0,1,2,0,2,3]),dynamic:!1})})}}u(ce,"_instance");class $h extends lr{constructor(){const e=new zt({data:new Float32Array,dynamic:!0}),t=new zt({data:new Float32Array,dynamic:!0});super({vertexAttributes:{position:new lt({buffer:e,size:2,normalized:!1,type:"float"}),uv:new lt({buffer:t,size:2,normalized:!1,type:"float"})},indexBuffer:new FA({data:new Uint16Array,dynamic:!0})});u(this,"positionBuffer");u(this,"uvBuffer");this.positionBuffer=e,this.uvBuffer=t}}var eg=Object.defineProperty,LA=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&eg(A,e,i),i};class ve extends Kt{constructor(e){super();u(this,"_isPowerOfTwo",!1);u(this,"_needsUpload",!1);this.source=e,this._updateSize()}static get EMPTY(){return new this({width:1,height:1,pixels:null})}static get WHITE(){return new this({width:1,height:1,pixels:new Uint8Array([255,255,255,255])})}static get BLACK(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,0,255])})}static get RED(){return new this({width:1,height:1,pixels:new Uint8Array([255,0,0,255])})}static get GREEN(){return new this({width:1,height:1,pixels:new Uint8Array([0,255,0,255])})}static get BLUE(){return new this({width:1,height:1,pixels:new Uint8Array([0,0,255,255])})}get valid(){return!!(this.width&&this.height)}get realWidth(){return Math.round(this.width*this.pixelRatio)}get realHeight(){return Math.round(this.height*this.pixelRatio)}_glTextureOptions(e,t){let i=this.wrapMode;return e.version===1&&!this._isPowerOfTwo&&(i="clamp_to_edge"),{value:this.source,target:"texture_2d",location:0,filterMode:this.filterMode,wrapMode:i,...t}}_glTexture(e,t){return e.getRelated(this,()=>e.texture.create(this._glTextureOptions(e,t)))}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"width":case"height":this._updatePOT();break;case"source":this._updateSize();break;case"filterMode":case"wrapMode":case"pixelRatio":this.requestUpload();break}}_updatePOT(){this._isPowerOfTwo=fs(this.realWidth)&&fs(this.realHeight),this.requestUpload()}_updateSize(){const e=this.source;"pixels"in e?(this.width=e.width/this.pixelRatio,this.height=e.height/this.pixelRatio):(this.width=Number(e.naturalWidth||e.videoWidth||e.width||0)/this.pixelRatio,this.height=Number(e.naturalHeight||e.videoHeight||e.height||0)/this.pixelRatio),this.requestUpload()}requestUpload(){this._needsUpload=!0}upload(e,t){return this._needsUpload&&this.valid?(this._needsUpload=!1,e.texture.update(this._glTexture(e,t),this._glTextureOptions(e,t)),!0):!1}activate(e,t=0){return this.valid?(e.texture.bind({target:"texture_2d",value:this._glTexture(e,{location:t}),location:t}),this.upload(e,{location:t}),!0):!1}inactivate(e){e.texture.unbind(this._glTexture(e))}free(){eo&&this.source instanceof ImageBitmap&&this.source.close()}}LA([Be()],ve.prototype,"source"),LA([S({default:0})],ve.prototype,"width"),LA([S({default:0})],ve.prototype,"height"),LA([S({default:"linear"})],ve.prototype,"filterMode"),LA([S({default:"clamp_to_edge"})],ve.prototype,"wrapMode"),LA([S({default:1})],ve.prototype,"pixelRatio");class gr extends Kt{constructor(e){super();u(this,"frames");let t;if(Array.isArray(e))t=e;else if(e instanceof ve)t=[{texture:e,duration:0}];else throw new TypeError("Failed new AnimatedTexture");this.frames=t,this.updateDuration()}updateDuration(){return this.duration=this.frames.reduce((e,t)=>t.duration+e,0),this}free(){this.frames.forEach(e=>{e.texture.free()})}}var tg=Object.defineProperty,Ag=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&tg(A,e,i),i};class GA extends ve{constructor(A=document.createElement("canvas")){super(A)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.max(1,Math.ceil(e*this.pixelRatio));break;case"height":this.source.height=Math.max(1,Math.ceil(e*this.pixelRatio));break}super._updateProperty(A,e,t,i)}}Ag([S({default:2})],GA.prototype,"pixelRatio");class Us extends ve{constructor(A){const e=new Wt(A);super({width:1,height:1,pixels:new Uint8Array([e.r8,e.g8,e.b8,e.a8])})}}function ig(s){return{autoLoad:!!((s==null?void 0:s.autoLoad)??!0),useBitmap:!!((s==null?void 0:s.useBitmap)??!0)&&Is,crossorigin:(s==null?void 0:s.crossorigin)??null}}class rg extends ve{constructor(e,t){const i=ig(t);super(e);u(this,"bitmap");u(this,"useBitmap");u(this,"preserveBitmap",!1);u(this,"_loadSource");u(this,"_loadBitmap");const r=e.src,n=r.includes(".svg")||r.startsWith("data:image/svg+xml");this.useBitmap=i.useBitmap&&!n,i.autoLoad&&this.load()}async load(){return this._loadSource||(this._loadSource=new Promise(e=>{this._loadSource=void 0;const t=this.source,i=()=>{t.onload=null,t.onerror=null},r=()=>{i(),this.requestUpload(),this.useBitmap?this.genBitmap().finally(()=>e(this)):e(this)},n=o=>{i(),console.warn(`Failed to load ImageTexture, src: ${t.src}`,o),this.emit("error",o),e(this)};t.complete&&t.src?r():(t.onload=r,t.onerror=n)})),this._loadSource}genBitmap(){if(this._loadBitmap)return this._loadBitmap;if(this.bitmap||!Is)return Promise.resolve(this);const e=this.source,t=!e.crossOrigin||e.crossOrigin==="anonymous";return this._loadBitmap=fetch(e.src,{mode:t?"cors":"no-cors"}).then(i=>i.blob()).then(i=>createImageBitmap(i,0,0,e.width,e.height,{premultiplyAlpha:"premultiply"})).then(i=>(this.bitmap=i,this.requestUpload(),this._loadBitmap=void 0,this)).catch(i=>(console.warn("Failed to genBitmap",i),this)),this._loadBitmap}_glTextureOptions(e){return{...super._glTextureOptions(e),value:this.bitmap??this.source}}upload(e){if(this.useBitmap){if(!this.bitmap)return this.genBitmap(),!1}else{const i=this.source;if(Ei&&i instanceof HTMLImageElement&&(!i.complete||i.naturalWidth===0))return!1}const t=super.upload(e);return this.preserveBitmap&&this.bitmap&&(this.bitmap.close(),this.bitmap=void 0),t}}class ks extends ve{constructor(A,e=1,t=1){const i={width:e,height:t,pixels:null};A&&(ArrayBuffer.isView(A)?i.pixels=new Uint8Array(A.buffer):i.pixels=new Uint8Array(A)),super(i)}_updateProperty(A,e,t,i){switch(A){case"width":this.source.width=Math.round(this.width*this.pixelRatio);break;case"height":this.source.height=Math.round(this.height*this.pixelRatio);break;case"pixelRatio":this.source.width=Math.round(this.width*this.pixelRatio),this.source.height=Math.round(this.height*this.pixelRatio);break}super._updateProperty(A,e,t,i)}}var sg=Object.defineProperty,$o=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&sg(A,e,i),i};function ng(s){return{autoLoad:!!((s==null?void 0:s.autoLoad)??!0),autoPlay:!!((s==null?void 0:s.autoPlay)??!1),fps:Number((s==null?void 0:s.fps)??0),crossorigin:(s==null?void 0:s.crossorigin)??null,loop:!!((s==null?void 0:s.loop)??!1),muted:!!((s==null?void 0:s.muted)??!1),playsinline:!!((s==null?void 0:s.playsinline)??!0)}}const Ns=(RA=class extends ve{constructor(e,t){const i=ng(t);if(!no(e)){typeof e=="string"&&(e=[e]);const r=e[0].src||e[0],n=document.createElement("video");i.autoLoad&&n.setAttribute("preload","auto"),i.playsinline&&(n.setAttribute("webkit-playsinline",""),n.setAttribute("playsinline","")),i.muted&&(n.setAttribute("muted",""),n.muted=!0),i.loop&&n.setAttribute("loop",""),i.autoPlay&&n.setAttribute("autoplay",""),go(n,r,i.crossorigin);for(let o=0;o<e.length;++o){let{src:a,mime:l}=e[o];if(a=a||e[o],a.startsWith("data:"))l=a.slice(5,a.indexOf(";"));else if(!a.startsWith("blob:")){const g=a.split("?").shift().toLowerCase(),f=g.slice(g.lastIndexOf(".")+1);l=l||RA.mimeTypes.get(f)||`video/${f}`}const h=document.createElement("source");h.src=a,l&&(h.type=l),n.appendChild(h)}e=n}super(e);u(this,"_spf",0);u(this,"_autoPlay",!1);u(this,"_sourceLoad");u(this,"_nextTime",0);u(this,"_connected",!1);u(this,"_requestId");u(this,"_resolve");u(this,"_reject");u(this,"_onPlayStart",()=>{this.valid||this._onCanPlay(),this._setupAutoUpdate()});u(this,"_onPlayStop",()=>{this._setupAutoUpdate()});u(this,"_onCanPlay",()=>{const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._nextTime=0,this._updateSize(),this.requestUpload(),this._nextTime=0,!t&&this._resolve&&(this._resolve(this),this._sourceLoad=void 0,this._resolve=void 0,this._reject=void 0),this.isPlaying?this._onPlayStart():this._autoPlay&&e.play()});u(this,"_onError",e=>{this.source.removeEventListener("error",this._onError,!0),this.emit("error",e),this._reject&&(this._reject(e),this._reject=void 0,this._resolve=void 0)});u(this,"_onSeeked",()=>{this.autoUpdate&&!this.isPlaying&&(this._nextTime=0,this.requestUpload(),this._nextTime=0)});u(this,"_videoFrameRequestCallback",()=>{this.requestUpload(),this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)});u(this,"requestUpload",()=>{const e=Math.floor(xe.elapsed*this.source.playbackRate);this._nextTime-=e,(!this._spf||this._nextTime<=0)&&(super.requestUpload(),this._nextTime=this._spf||0)});this.fps=i.fps,this._autoPlay=i.autoPlay,i.autoPlay&&this.load(),this._setupAutoUpdate()}get isReady(){return this.source.readyState>2}get isPlaying(){return!this.source.paused&&!this.source.ended&&this.isReady}get duration(){return this.source.duration}get seeking(){return this.source.seeking}get currentTime(){return this.source.currentTime}set currentTime(e){this.source.currentTime=e}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"fps":this._spf=t?Math.floor(1e3/t):0,this._setupAutoUpdate();break;case"autoUpdate":this._setupAutoUpdate();break}}_setupAutoUpdate(){this.autoUpdate&&this.isPlaying?!this.fps&&this.source.requestVideoFrameCallback?(this._connected&&(xe.off(this.requestUpload),this._connected=!1,this._nextTime=0),this._requestId===void 0&&(this._requestId=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected||(xe.on(this.requestUpload),this._connected=!0,this._nextTime=0)):(this._requestId!==void 0&&(this.source.cancelVideoFrameCallback(this._requestId),this._requestId=void 0),this._connected&&(xe.off(this.requestUpload),this._connected=!1,this._nextTime=0))}async load(){if(!this._sourceLoad){const e=this.source;(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this.isReady?this._onCanPlay():(e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlay),e.addEventListener("error",this._onError,!0)),this._sourceLoad=new Promise((t,i)=>{this.valid?(this._sourceLoad=void 0,t(this)):(this._resolve=t,this._reject=i,e.load())})}return this._sourceLoad}free(){this._setupAutoUpdate();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())}},u(RA,"mimeTypes",new Map(Object.entries({ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"}))),RA);$o([Be({default:!0})],Ns.prototype,"autoUpdate"),$o([Be({default:0})],Ns.prototype,"fps");let ea=Ns;class Fs extends ks{}var og=Object.defineProperty,ag=Object.getOwnPropertyDescriptor,yA=(s,A,e,t)=>{for(var i=t>1?void 0:t?ag(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&og(A,e,i),i};const ta={};function lg(s){let A=ta[s]??0;return A++,ta[s]=A,A}c.Node=class extends Jt{constructor(e,t=[]){super();u(this,"_readyed",!1);u(this,"_tree");u(this,"_parent");u(this,"_children",[]);u(this,"_meta",new Map);this._onTreeEnter=this._onTreeEnter.bind(this),this._onTreeExit=this._onTreeExit.bind(this),this._onParented=this._onParented.bind(this),this._onUnparented=this._onUnparented.bind(this),this._onReady=this._onReady.bind(this),this._onProcess=this._onProcess.bind(this),this.setProperties({name:`${this.tag}:${lg(this.tag)}`,...e}).append(t),this.on("treeEnter",this._onTreeEnter).on("treeExit",this._onTreeExit).on("parented",this._onParented).on("unparented",this._onUnparented).on("ready",this._onReady).on("process",this._onProcess)}getName(){return this.name}setName(e){return this.name=e,this}get tree(){return this.getTree()}set tree(e){this.setTree(e)}getTree(){return this._tree}getViewport(){var e;return(e=this._tree)==null?void 0:e.getCurrentViewport()}getWindow(){var e;return(e=this._tree)==null?void 0:e.root}isInsideTree(){return!!this._tree}setTree(e){const t=this._tree;if(!(e!=null&&e.is(t))){t&&this.emit("treeExit",t),this._tree=e,e&&this.emit("treeEnter",e);for(let i=this._children.length,r=0;r<i;r++){const n=this._children[r];!e&&this.emit("childExitingTree",n),n.setTree(e),e&&this.emit("childEnteredTree",n)}e&&(this.emit("treePostEnter",e),this._readyed||(this._readyed=!0,this.emit("ready")))}return this}get parent(){return this._parent}set parent(e){this.setParent(e)}hasParent(){return!!this._parent}getParent(){return this._parent}setParent(e){var t;if(!((t=this._parent)!=null&&t.is(e))){const i=this._parent;i&&this.emit("unparented",i),this._parent=e,e&&this.emit("parented",e),this.setTree(e==null?void 0:e._tree)}return this}get siblingIndex(){return this.getIndex()}set siblingIndex(e){var t;(t=this._parent)==null||t.moveChild(this,e)}get previousSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[this.getIndex()-1]}get nextSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[this.getIndex()+1]}get firstSibling(){var e;return(e=this._parent)==null?void 0:e.getChildren()[0]}get lastSibling(){var t;const e=(t=this._parent)==null?void 0:t.getChildren();return e?e[e.length-1]:void 0}hasMeta(e){return this._meta.has(e)}getMeta(e,t){return this._meta.get(e)??t}setMeta(e,t){this._meta.set(e,t)}deleteMeta(e){this._meta.delete(e)}clearMeta(){this._meta.clear()}canProcess(){var e;if(!this._tree)return!1;switch(this.processMode){case"inherit":return((e=this._parent)==null?void 0:e.canProcess())??!0;case"pausable":return!this._tree.processPaused;case"when_paused":return this._tree.processPaused;case"always":return!0;case"disabled":default:return!1}}canRender(){var e;if(!this._tree)return!1;switch(this.renderMode){case"inherit":return((e=this._parent)==null?void 0:e.canRender())??!0;case"always":return!0;case"disabled":default:return!1}}_update(e){super._update(e)}_updateProperty(e,t,i,r){super._updateProperty(e,t,i,r)}_onTreeEnter(e){this._treeEnter(e),this.emit("treeEntered",e)}_onTreeExit(e){this.emit("treeExiting",e),this._treeExit(e),this.emit("treeExited",e)}_onParented(e){this._parented(e)}_onUnparented(e){this._unparented(e)}_onReady(){this._ready()}_onProcess(e=0){const t=this._tree,i=this.canRender(),r=this.canProcess(),n=[],o=[];for(let l=this._children.length,h=0;h<l;h++){const g=this._children[h];switch(g.processSortMode){case"default":o.push(g);break;case"parent_before":n.push(g);break}}n.forEach(l=>{l.emit("process",e)}),r&&(t==null||t.emit("nodeProcessing",this),this.emit("processing",e),this._process(e));let a;if(i){const l=t.renderStack.push(this);a=t.renderStack.currentCall,t.renderStack.currentCall=l}if(this.mask instanceof c.Node)this.getNode("__$mask")||(this.mask.processMode="disabled",this.appendChild(this.mask,"front"));else{const l=this.getNode("__$mask");l&&this.removeChild(l)}o.forEach(l=>{l.emit("process",e)}),i&&(t.renderStack.currentCall=a),r&&(this.emit("processed",e),t==null||t.emit("nodeProcessed",this))}render(e,t){const i=this.mask;i&&(e.flush(),e.mask.push(this,i)),this._render(e),t==null||t(),i&&(e.flush(),e.mask.pop(this))}input(e,t){for(let i=this._children.length-1;i>=0;i--)this._children[i].input(e,t);this._input(e,t)}getChildren(e=!1){switch(e){case!0:return this._children;case!1:return this._children.filter(t=>t.internalMode==="default");default:return this._children.filter(t=>t.internalMode===e)}}getIndex(e=!1){var t;return((t=this._parent)==null?void 0:t.getChildren(e).indexOf(this))??0}getNode(e){return this._children.find(t=>t.name===e)}removeNode(e){var t;(t=this.getNode(e))==null||t.remove()}addSibling(e){return this.is(e)||!this.hasParent()||e.hasParent()?this:(e.internalMode=this.internalMode,this._parent.moveChild(e,this.getIndex(!0)+1),this)}prepend(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{this.moveChild(i,0)})}append(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{this.appendChild(i)})}before(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{var r;(r=this._parent)==null||r.moveChild(i,this.getIndex(!0))})}after(...e){let t;Array.isArray(e[0])?t=e[0]:t=e,t.forEach(i=>{var r;(r=this._parent)==null||r.moveChild(i,this.getIndex(!0)+1)})}insertBefore(e,t){return!t.hasParent()||!this.is(t.parent)||this.moveChild(e,t.getIndex(!0)),e}appendChild(e,t=e.internalMode){if(this.is(e)||e.hasParent())return e;switch(t){case"default":case"front":{const i=t==="default"?"back":"front",r=this._children.findIndex(n=>n.internalMode===i);r>-1?this._children.splice(r,0,e):this._children.push(e);break}case"back":this._children.push(e);break}return e.internalMode=t,e.setParent(this),this.emit("appendChild",e),e}moveChild(e,t,i=e.internalMode){if(this.is(e)||e.hasParent()&&!this.is(e.parent))return this;e.internalMode=i;const r=this._children.indexOf(e);let n=this._children.findIndex(l=>{switch(i){case"default":return l.internalMode!=="front";case"back":return l.internalMode==="back";case"front":default:return!0}});n=n>-1?n:Math.max(0,this._children.length-1);let o=this._children.slice(n).findIndex(l=>{switch(i){case"front":return l.internalMode!=="front";case"default":return l.internalMode==="back";case"back":default:return!1}});o=o>-1?n+o:Math.max(0,this._children.length);const a=bt(n,t>-1?t:o,o);return a!==r&&(r>-1&&this._children.splice(r,1),e.setParent(this),a>-1&&a<this._children.length?this._children.splice(a,0,e):this._children.push(e),r>-1?this.emit("moveChild",e,a,r):this.emit("appendChild",e)),this}removeChild(e){const t=e.getIndex(!0);return this.is(e.parent)&&t>-1&&(this._children.splice(t,1),e.setParent(void 0),this.emit("removeChild",e,t)),e}removeChildren(){this.getChildren().forEach(e=>this.removeChild(e))}remove(){var e;(e=this._parent)==null||e.removeChild(this)}forEach(e){return this.getChildren().forEach(e),this}deepForEach(e){return this.getChildren().forEach(t=>{e(t),t.deepForEach(e)}),this}_ready(){}_treeEnter(e){}_treeExit(e){}_parented(e){}_unparented(e){}_process(e){}_input(e,t){}_render(e){}clone(){return new this.constructor(this.toJSON().props,this.getChildren(!0))}toJSON(){return{tag:this.tag,props:{name:this.name,...super.toJSON()},meta:Object.fromEntries(this._meta.entries()),children:this.getChildren().map(e=>e.toJSON())}}static parse(e){if(Array.isArray(e))return e.map(a=>this.parse(a));const{tag:t,props:i,children:r}=e,n=sr.get(t)??c.Node,o=new n(i);return r==null||r.forEach(a=>o.appendChild(this.parse(a))),o}},yA([Be()],c.Node.prototype,"name",2),yA([S()],c.Node.prototype,"mask",2),yA([S({default:"inherit"})],c.Node.prototype,"processMode",2),yA([S({default:"default"})],c.Node.prototype,"processSortMode",2),yA([S({default:"inherit"})],c.Node.prototype,"renderMode",2),yA([S({default:"default"})],c.Node.prototype,"internalMode",2),c.Node=yA([te("Node")],c.Node);var hg=Object.defineProperty,gg=Object.getOwnPropertyDescriptor,yi=(s,A,e,t)=>{for(var i=t>1?void 0:t?gg(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&hg(A,e,i),i};c.TimelineNode=class extends c.Node{constructor(e,t=[]){super();u(this,"computedDuration",0);u(this,"_currentTime",0);u(this,"_startTime",0);this.setProperties(e).append(t)}get timeline(){var e;return(e=this._tree)==null?void 0:e.timeline}get timelineCurrentTime(){var e;return((e=this.timeline)==null?void 0:e.currentTime)??0}get parentStartTime(){var e;return((e=this._parent)==null?void 0:e.startTime)??0}get currentTime(){return bt(0,this._currentTime,this.computedDuration)}get startTime(){return this._startTime}set startTime(e){this.delay=e-this.parentStartTime,this._updateCurrentTime(!0)}get endTime(){return this._startTime+this.computedDuration}get currentTimeProgress(){return this.computedDuration?bt(0,this._currentTime/this.computedDuration,1):0}isInsideTimeRange(){const e=this._currentTime;return this.computedDuration?e>=0&&e<=this.computedDuration:e>=0}_updateCurrentTime(e=!1){if(e||!this.paused){const t=this._parent;this._startTime=this.delay+this.parentStartTime,this.computedDuration=t!=null&&t.computedDuration?Math.min(this._startTime+this.duration,t.endTime)-this._startTime:this.duration,this._currentTime=this.timelineCurrentTime-this._startTime,this.emit("updateCurrentTime",this._currentTime),this.insideTimeRange=this.isInsideTimeRange()}}_process(e){super._process(e),this._updateCurrentTime()}},yi([S({default:0})],c.TimelineNode.prototype,"delay",2),yi([S({default:0})],c.TimelineNode.prototype,"duration",2),yi([S({default:!1})],c.TimelineNode.prototype,"paused",2),yi([Be()],c.TimelineNode.prototype,"insideTimeRange",2),c.TimelineNode=yi([te("TimelineNode")],c.TimelineNode);var cg=Object.defineProperty,ug=Object.getOwnPropertyDescriptor,mi=(s,A,e,t)=>{for(var i=t>1?void 0:t?ug(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&cg(A,e,i),i};c.Viewport=class extends c.Node{constructor(e=!1){super();u(this,"_projection",new So);u(this,"_framebufferIndex",0);u(this,"_framebuffers",[{texture:new Fs,needsUpload:!1},{texture:new Fs,needsUpload:!1}]);this.flipY=e,this._projection.flipY(e)}get valid(){return!!(this.width&&this.height)}get framebuffer(){return this._framebuffers[this._framebufferIndex]}get texture(){return this.framebuffer.texture}_glFramebufferOptions(e){const{width:t,height:i}=this,{pixelRatio:r}=e;return this._framebuffers.forEach(n=>{const o=n.texture;o.width=t,o.height=i,o.pixelRatio=r,o.upload(e)}),{width:t,height:i,colorTextures:[this.texture._glTexture(e)]}}_glFramebuffer(e){return e.getRelated(this.framebuffer,()=>e.framebuffer.create(this._glFramebufferOptions(e)))}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"x":case"y":this.requestUpload(),this._projection.translate(this.x,this.y),this.emit("updateRect");break;case"width":case"height":this.requestUpload(),this._projection.resize(this.width,this.height),this.emit("updateRect");break}}requestUpload(){this._framebuffers.forEach(e=>e.needsUpload=!0)}resize(e,t){this.width=e,this.height=t}upload(e){const t=this.framebuffer;return t.needsUpload&&this.valid?(t.needsUpload=!1,e.framebuffer.update(this._glFramebuffer(e),this._glFramebufferOptions(e)),!0):!1}activate(e){var t;return this.valid?(e.flush(),(t=this._tree)==null||t.setCurrentViewport(this),this.upload(e),e.framebuffer.bind(this._glFramebuffer(e)),!0):!1}redraw(e,t){if(this.valid){e.flush();const i=this.framebuffer.texture;return this._framebufferIndex=(this._framebufferIndex+1)%this._framebuffers.length,this.activate(e),e.clear(),i.activate(e,0),t(),!0}return!1}activateWithCopy(e,t){this.resize(t.width,t.height),this.activate(e)&&(e.clear(),t.texture.activate(e,0),ce.draw(e,TA.instance,{sampler:0}))}render(e,t){var r,n;const i=(r=this._tree)==null?void 0:r.getCurrentViewport();this.activate(e),e.clear(),super.render(e,t),e.flush(),i?i.activate(e):(e.framebuffer.bind(null),(n=this._tree)==null||n.setCurrentViewport(void 0))}getRect(){return new Ms(this.x,this.y,this.width,this.height)}toProjectionArray(e=!1){return this._projection.toArray(e)}},mi([S({default:0})],c.Viewport.prototype,"x",2),mi([S({default:0})],c.Viewport.prototype,"y",2),mi([S({default:0})],c.Viewport.prototype,"width",2),mi([S({default:0})],c.Viewport.prototype,"height",2),c.Viewport=mi([te("Viewport")],c.Viewport);var fg=Object.defineProperty,dg=Object.getOwnPropertyDescriptor,wi=(s,A,e,t)=>{for(var i=t>1?void 0:t?dg(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&fg(A,e,i),i};c.Effect=class extends c.TimelineNode{constructor(e,t=[]){super();u(this,"viewport1",new c.Viewport);u(this,"viewport2",new c.Viewport);u(this,"_renderId",0);u(this,"_renderViewport");u(this,"_previousSibling");u(this,"_nextSibling");this._onProcessing=this._onProcessing.bind(this),this._onNodeProcessed=this._onNodeProcessed.bind(this),this.setProperties(e).append(t)}get _effectMode(){return this.effectMode??"parent"}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"glsl":{const n=new hr(t);!this.effectMode&&n.has.transition&&(this.effectMode="transition"),this.material=n;break}case"glslSrc":{t?Ft.text.load(t).then(n=>this.glsl=n):this.glsl="";break}}}_treeEnter(e){e.on("processing",this._onProcessing),e.on("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(e),this.viewport2.setTree(e)}_treeExit(e){e.off("processing",this._onProcessing),e.off("nodeProcessed",this._onNodeProcessed),this.viewport1.setTree(void 0),this.viewport2.setTree(void 0)}_onProcessing(){if(this.canProcess())switch(this._updateCurrentTime(),this._effectMode){case"transition":this._previousSibling=this.previousSibling,this._nextSibling=this.nextSibling;break;default:this._previousSibling=void 0,this._nextSibling=void 0;break}}_onNodeProcessed(e){var i;if(!this.canProcess()||!this.isInsideTimeRange())return;const t=(i=this._tree)==null?void 0:i.renderStack;if(t)switch(this._effectMode){case"transition":e.is(this._previousSibling)?(this._previousSibling=void 0,t.push(this)):e.is(this._nextSibling)&&(this._nextSibling=void 0,t.push(this));break}}_processParent(){var o,a;const e=(o=this._tree)==null?void 0:o.renderStack;if(!e)return;const t=(a=e.currentCall)==null?void 0:a.parentCall;if(!t)return;const i=t.calls;let r,n;i.forEach((l,h)=>{var g;(l.renderable.is(this._parent)||(g=l.renderable.parent)!=null&&g.is(this._parent))&&(r=r??h,n=h)}),!(r===void 0||n===void 0)&&(i.splice(n+1,0,e.createCall(this)),i.splice(r,0,e.createCall(this)))}_processChildren(){var e;this._children.length&&(super.emit("process"),(e=this._tree)==null||e.renderStack.push(this))}_onProcess(e=0){if(this.canProcess())switch(this._renderId=0,this._effectMode){case"before":super._onProcess(e);break;case"parent":this._processParent();break;case"children":this._processChildren();break}}_renderBefore(e){var i;const t=(i=this._tree)==null?void 0:i.getCurrentViewport();t&&this.apply(e,t,{redraw:!0})}_renderTransition(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&(this.viewport1.activateWithCopy(e,this._renderViewport),this.viewport2.resize(this._renderViewport.width,this._renderViewport.height)),this.viewport2.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(i.activate(e),e.clear(),this.viewport1.texture.activate(e,0),this.viewport2.texture.activate(e,1),this.apply(e,i,{from:this.viewport1,to:this.viewport2}),e.texture.unbind(0),e.texture.unbind(1))}}_renderParentOrChildren(e){var t;if(this._renderId%2===0)this._renderViewport=(t=this._tree)==null?void 0:t.getCurrentViewport(),this._renderViewport&&this.viewport1.resize(this._renderViewport.width,this._renderViewport.height),this.viewport1.activate(e),e.clear();else{const i=this._renderViewport;this._renderViewport=void 0,i&&(this.viewport1.activate(e),this.apply(e,this.viewport1,{redraw:!0,target:this._effectMode==="parent"?this._parent??void 0:void 0,targetArea:this._parseTargetArea()}),i.activate(e),this.viewport1.texture.activate(e,0),ce.draw(e))}}_parseTargetArea(){if(this._effectMode==="parent"&&this._parent&&"getRect"in this._parent){const e=this._parent.getRect();if(e)return[e.left/this.viewport1.width,e.top/this.viewport1.height,e.width/this.viewport1.width,e.height/this.viewport1.height]}}_render(e){switch(this._effectMode){case"before":this._renderBefore(e);break;case"transition":this._renderTransition(e);break;case"parent":case"children":default:this._renderParentOrChildren(e);break}this._renderId++}apply(e,t,i){this.material&&(i!=null&&i.redraw?t.redraw(e,()=>{ce.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:t.width/t.height})}):ce.draw(e,this.material,{from:0,to:1,progress:this.currentTimeProgress,ratio:i!=null&&i.from?i.from.width/i.from.height:0}))}},wi([Be()],c.Effect.prototype,"material",2),wi([S()],c.Effect.prototype,"effectMode",2),wi([S({default:""})],c.Effect.prototype,"glsl",2),wi([S({default:""})],c.Effect.prototype,"glslSrc",2),c.Effect=wi([te("Effect")],c.Effect);var Aa=Object.defineProperty,Ig=Object.getOwnPropertyDescriptor,Bg=(s,A,e)=>A in s?Aa(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,Vt=(s,A,e,t)=>{for(var i=t>1?void 0:t?Ig(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Aa(A,e,i),i},Eg=(s,A,e)=>Bg(s,A+"",e);c.ColorAdjustEffect=class extends c.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){e.redraw(A,()=>{ce.draw(A,c.ColorAdjustEffect.material,{sampler:0,saturation:this.saturation,contrast:this.contrast,brightness:this.brightness,red:this.red,green:this.green,blue:this.blue,alpha:this.alpha,gamma:Math.max(this.gamma??1,1e-4)})})}},Eg(c.ColorAdjustEffect,"material",new pe({vert:`precision mediump float;
114
114
  attribute vec2 position;
115
115
  attribute vec2 uv;
116
116
  varying vec2 vUv;
@@ -141,7 +141,7 @@ void main(void) {
141
141
  c.rgb *= c.a;
142
142
  }
143
143
  gl_FragColor = c * alpha;
144
- }`})),zt([M({default:1})],g.ColorAdjustEffect.prototype,"saturation",2),zt([M({default:1})],g.ColorAdjustEffect.prototype,"contrast",2),zt([M({default:1})],g.ColorAdjustEffect.prototype,"brightness",2),zt([M({default:1})],g.ColorAdjustEffect.prototype,"red",2),zt([M({default:1})],g.ColorAdjustEffect.prototype,"green",2),zt([M({default:1})],g.ColorAdjustEffect.prototype,"blue",2),zt([M({default:1})],g.ColorAdjustEffect.prototype,"alpha",2),zt([M({default:1})],g.ColorAdjustEffect.prototype,"gamma",2),g.ColorAdjustEffect=zt([ee("ColorAdjustEffect")],g.ColorAdjustEffect);var ra=Object.defineProperty,Eg=Object.getOwnPropertyDescriptor,pg=(r,A,e)=>A in r?ra(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,sa=(r,A,e,t)=>{for(var i=t>1?void 0:t?Eg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ra(A,e,i),i},Cg=(r,A,e)=>pg(r,A+"",e);g.ColorFilterEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"_colorMatrix",new xs);this.setProperties(e).append(t)}apply(e,t){if(!this.filter)return;const i=di(this.filter),s=this._colorMatrix.identity();i.forEach(({name:n,args:o})=>{const a=o.map(l=>l.normalizedIntValue);switch(n){case"hue-rotate":case"hueRotate":s.hueRotate(a[0]*tt);break;case"saturate":s.saturate(a[0]);break;case"brightness":s.brightness(a[0]);break;case"contrast":s.contrast(a[0]);break;case"invert":s.invert(a[0]);break;case"sepia":s.sepia(a[0]);break;case"opacity":s.opacity(a[0]);break;case"grayscale":s.grayscale(a[0]);break}}),t.redraw(e,()=>{ce.draw(e,g.ColorFilterEffect.material,{sampler:0,m:s.toArray()})})}},Cg(g.ColorFilterEffect,"material",new pe({vert:`precision mediump float;
144
+ }`})),Vt([S({default:1})],c.ColorAdjustEffect.prototype,"saturation",2),Vt([S({default:1})],c.ColorAdjustEffect.prototype,"contrast",2),Vt([S({default:1})],c.ColorAdjustEffect.prototype,"brightness",2),Vt([S({default:1})],c.ColorAdjustEffect.prototype,"red",2),Vt([S({default:1})],c.ColorAdjustEffect.prototype,"green",2),Vt([S({default:1})],c.ColorAdjustEffect.prototype,"blue",2),Vt([S({default:1})],c.ColorAdjustEffect.prototype,"alpha",2),Vt([S({default:1})],c.ColorAdjustEffect.prototype,"gamma",2),c.ColorAdjustEffect=Vt([te("ColorAdjustEffect")],c.ColorAdjustEffect);var ia=Object.defineProperty,pg=Object.getOwnPropertyDescriptor,Cg=(s,A,e)=>A in s?ia(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,ra=(s,A,e,t)=>{for(var i=t>1?void 0:t?pg(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ia(A,e,i),i},Qg=(s,A,e)=>Cg(s,A+"",e);c.ColorFilterEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"_colorMatrix",new xs);this.setProperties(e).append(t)}apply(e,t){if(!this.filter)return;const i=Bi(this.filter),r=this._colorMatrix.identity();i.forEach(({name:n,args:o})=>{const a=o.map(l=>l.normalizedIntValue);switch(n){case"hue-rotate":case"hueRotate":r.hueRotate(a[0]*tt);break;case"saturate":r.saturate(a[0]);break;case"brightness":r.brightness(a[0]);break;case"contrast":r.contrast(a[0]);break;case"invert":r.invert(a[0]);break;case"sepia":r.sepia(a[0]);break;case"opacity":r.opacity(a[0]);break;case"grayscale":r.grayscale(a[0]);break}}),t.redraw(e,()=>{ce.draw(e,c.ColorFilterEffect.material,{sampler:0,m:r.toArray()})})}},Qg(c.ColorFilterEffect,"material",new pe({vert:`precision mediump float;
145
145
  attribute vec2 position;
146
146
  attribute vec2 uv;
147
147
  varying vec2 vUv;
@@ -164,7 +164,7 @@ void main(void) {
164
164
  m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14] / 255.0,
165
165
  m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19] / 255.0
166
166
  );
167
- }`})),sa([M()],g.ColorFilterEffect.prototype,"filter",2),g.ColorFilterEffect=sa([ee("ColorFilterEffect")],g.ColorFilterEffect);var na=Object.defineProperty,Qg=Object.getOwnPropertyDescriptor,yg=(r,A,e)=>A in r?na(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Ts=(r,A,e,t)=>{for(var i=t>1?void 0:t?Qg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&na(A,e,i),i},mg=(r,A,e)=>yg(r,A+"",e);const mi=50;g.ColorOverlayEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"_color",new Yt);this.setProperties(e).append(t)}apply(e,t){t.redraw(e,()=>{const i=this.colors.map(s=>{this._color.value=s;const n=this._color.toArray();return n[3]=this.alpha,n});for(;i.length<mi;)i.push([0,0,0,0]);ce.draw(e,g.ColorOverlayEffect.material,{sampler:0,colors:i.slice(0,mi).flatMap(s=>s)})})}},mg(g.ColorOverlayEffect,"material",new pe({vert:`precision mediump float;
167
+ }`})),ra([S()],c.ColorFilterEffect.prototype,"filter",2),c.ColorFilterEffect=ra([te("ColorFilterEffect")],c.ColorFilterEffect);var sa=Object.defineProperty,yg=Object.getOwnPropertyDescriptor,mg=(s,A,e)=>A in s?sa(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,Ts=(s,A,e,t)=>{for(var i=t>1?void 0:t?yg(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&sa(A,e,i),i},wg=(s,A,e)=>mg(s,A+"",e);const vi=50;c.ColorOverlayEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"_color",new Wt);this.setProperties(e).append(t)}apply(e,t){t.redraw(e,()=>{const i=this.colors.map(r=>{this._color.value=r;const n=this._color.toArray();return n[3]=this.alpha,n});for(;i.length<vi;)i.push([0,0,0,0]);ce.draw(e,c.ColorOverlayEffect.material,{sampler:0,colors:i.slice(0,vi).flatMap(r=>r)})})}},wg(c.ColorOverlayEffect,"material",new pe({vert:`precision mediump float;
168
168
  attribute vec2 position;
169
169
  attribute vec2 uv;
170
170
  varying vec2 vUv;
@@ -173,7 +173,7 @@ void main() {
173
173
  vUv = uv;
174
174
  }`,frag:`precision mediump float;
175
175
  uniform sampler2D sampler;
176
- uniform vec4 colors[${mi}];
176
+ uniform vec4 colors[${vi}];
177
177
  varying vec2 vUv;
178
178
 
179
179
  float calcWidth() {
@@ -182,7 +182,7 @@ float calcWidth() {
182
182
 
183
183
  int calcCount() {
184
184
  int count = 0;
185
- for (int i = 0; i < ${mi}; i++) {
185
+ for (int i = 0; i < ${vi}; i++) {
186
186
  if (colors[i] != vec4(0,0,0,0)){
187
187
  count++;
188
188
  }
@@ -194,7 +194,7 @@ vec4 calcColor(float x) {
194
194
  float perUnit = calcWidth() / float(calcCount());
195
195
  int index = int(x / perUnit);
196
196
 
197
- for(int i=0; i<${mi}; i++){
197
+ for(int i=0; i<${vi}; i++){
198
198
  if(i==index){
199
199
  return colors[i];
200
200
  }
@@ -207,7 +207,7 @@ void main(void) {
207
207
  vec4 color = texture2D(sampler, vUv);
208
208
  vec4 mask = calcColor(vUv.x);
209
209
  gl_FragColor = vec4(mix(color.rgb, mask.rgb, color.a * mask.a), color.a);
210
- }`})),Ts([M({default:[]})],g.ColorOverlayEffect.prototype,"colors",2),Ts([M({default:.5})],g.ColorOverlayEffect.prototype,"alpha",2),g.ColorOverlayEffect=Ts([ee("ColorOverlayEffect")],g.ColorOverlayEffect);var oa=Object.defineProperty,wg=Object.getOwnPropertyDescriptor,vg=(r,A,e)=>A in r?oa(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Ls=(r,A,e,t)=>{for(var i=t>1?void 0:t?wg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&oa(A,e,i),i},_g=(r,A,e)=>vg(r,A+"",e);g.ColorRemoveEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"_color",new Yt);this.setProperties(e).append(t)}apply(e,t){const s=new Float32Array(150),n=this.colors.map(o=>(this._color.value=o,this._color.toArray().slice(0,3)));for(;n.length<50;)n.push([-1,0,0]);n.slice(0,50).forEach((o,a)=>{s[a*3]=o[0],s[a*3+1]=o[1],s[a*3+2]=o[2]}),t.redraw(e,()=>{ce.draw(e,g.ColorRemoveEffect.material,{sampler:0,epsilon:this.epsilon,originalColors:s})})}},_g(g.ColorRemoveEffect,"material",new pe({vert:`precision mediump float;
210
+ }`})),Ts([S({default:[]})],c.ColorOverlayEffect.prototype,"colors",2),Ts([S({default:.5})],c.ColorOverlayEffect.prototype,"alpha",2),c.ColorOverlayEffect=Ts([te("ColorOverlayEffect")],c.ColorOverlayEffect);var na=Object.defineProperty,vg=Object.getOwnPropertyDescriptor,_g=(s,A,e)=>A in s?na(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,Ls=(s,A,e,t)=>{for(var i=t>1?void 0:t?vg(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&na(A,e,i),i},Dg=(s,A,e)=>_g(s,A+"",e);c.ColorRemoveEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"_color",new Wt);this.setProperties(e).append(t)}apply(e,t){const r=new Float32Array(150),n=this.colors.map(o=>(this._color.value=o,this._color.toArray().slice(0,3)));for(;n.length<50;)n.push([-1,0,0]);n.slice(0,50).forEach((o,a)=>{r[a*3]=o[0],r[a*3+1]=o[1],r[a*3+2]=o[2]}),t.redraw(e,()=>{ce.draw(e,c.ColorRemoveEffect.material,{sampler:0,epsilon:this.epsilon,originalColors:r})})}},Dg(c.ColorRemoveEffect,"material",new pe({vert:`precision mediump float;
211
211
  attribute vec2 position;
212
212
  attribute vec2 uv;
213
213
  varying vec2 vUv;
@@ -236,7 +236,7 @@ void main(void) {
236
236
  }
237
237
 
238
238
  gl_FragColor = color;
239
- }`})),Ls([M({default:[]})],g.ColorRemoveEffect.prototype,"colors",2),Ls([M({default:.5})],g.ColorRemoveEffect.prototype,"epsilon",2),g.ColorRemoveEffect=Ls([ee("ColorRemoveEffect")],g.ColorRemoveEffect);var aa=Object.defineProperty,Dg=Object.getOwnPropertyDescriptor,bg=(r,A,e)=>A in r?aa(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Gs=(r,A,e,t)=>{for(var i=t>1?void 0:t?Dg(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&aa(A,e,i),i},xg=(r,A,e)=>bg(r,A+"",e);const wi=50;g.ColorReplaceEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"_color",new Yt);this.setProperties(e).append(t)}apply(e,t){const i=this.colors.map(a=>{this._color.value=a[0];const l=this._color.toArray().slice(0,3);this._color.value=a[1];const h=this._color.toArray().slice(0,3);return[l,h]}),s=this.epsilon,n=new Float32Array(wi*3),o=new Float32Array(wi*3);for(;i.length<wi;)i.push([[-1,0,0],[0,0,0,1]]);i.slice(0,wi).forEach(([a,l],h)=>{n[h*3]=a[0],n[h*3+1]=a[1],n[h*3+2]=a[2],o[h*3]=l[0],o[h*3+1]=l[1],o[h*3+2]=l[2]}),t.redraw(e,()=>{ce.draw(e,g.ColorReplaceEffect.material,{sampler:0,epsilon:s,originalColors:n,targetColors:o})})}},xg(g.ColorReplaceEffect,"material",new pe({vert:`precision mediump float;
239
+ }`})),Ls([S({default:[]})],c.ColorRemoveEffect.prototype,"colors",2),Ls([S({default:.5})],c.ColorRemoveEffect.prototype,"epsilon",2),c.ColorRemoveEffect=Ls([te("ColorRemoveEffect")],c.ColorRemoveEffect);var oa=Object.defineProperty,bg=Object.getOwnPropertyDescriptor,xg=(s,A,e)=>A in s?oa(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,Gs=(s,A,e,t)=>{for(var i=t>1?void 0:t?bg(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&oa(A,e,i),i},Sg=(s,A,e)=>xg(s,A+"",e);const _i=50;c.ColorReplaceEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"_color",new Wt);this.setProperties(e).append(t)}apply(e,t){const i=this.colors.map(a=>{this._color.value=a[0];const l=this._color.toArray().slice(0,3);this._color.value=a[1];const h=this._color.toArray().slice(0,3);return[l,h]}),r=this.epsilon,n=new Float32Array(_i*3),o=new Float32Array(_i*3);for(;i.length<_i;)i.push([[-1,0,0],[0,0,0,1]]);i.slice(0,_i).forEach(([a,l],h)=>{n[h*3]=a[0],n[h*3+1]=a[1],n[h*3+2]=a[2],o[h*3]=l[0],o[h*3+1]=l[1],o[h*3+2]=l[2]}),t.redraw(e,()=>{ce.draw(e,c.ColorReplaceEffect.material,{sampler:0,epsilon:r,originalColors:n,targetColors:o})})}},Sg(c.ColorReplaceEffect,"material",new pe({vert:`precision mediump float;
240
240
  attribute vec2 position;
241
241
  attribute vec2 uv;
242
242
  varying vec2 vUv;
@@ -246,7 +246,7 @@ void main() {
246
246
  }`,frag:`varying vec2 vUv;
247
247
  uniform sampler2D sampler;
248
248
  uniform float epsilon;
249
- const int MAX_COLORS = ${wi};
249
+ const int MAX_COLORS = ${_i};
250
250
  uniform vec3 originalColors[MAX_COLORS];
251
251
  uniform vec3 targetColors[MAX_COLORS];
252
252
 
@@ -272,8 +272,8 @@ void main(void) {
272
272
  return;
273
273
  }
274
274
  }
275
- }`})),Gs([M({default:[]})],g.ColorReplaceEffect.prototype,"colors",2),Gs([M({default:.05})],g.ColorReplaceEffect.prototype,"epsilon",2),g.ColorReplaceEffect=Gs([ee("ColorReplaceEffect")],g.ColorReplaceEffect);function Sg(r,A,e=2){const t=A&&A.length,i=t?A[0]*e:r.length;let s=la(r,0,i,e,!0);const n=[];if(!s||s.next===s.prev)return n;let o,a,l;if(t&&(s=kg(r,A,s,e)),r.length>80*e){o=1/0,a=1/0;let h=-1/0,c=-1/0;for(let f=e;f<i;f+=e){const d=r[f],I=r[f+1];d<o&&(o=d),I<a&&(a=I),d>h&&(h=d),I>c&&(c=I)}l=Math.max(h-o,c-a),l=l!==0?32767/l:0}return vi(s,n,e,o,a,l,0),n}function la(r,A,e,t,i){let s;if(i===Wg(r,A,e,t)>0)for(let n=A;n<e;n+=t)s=ua(n/t|0,r[n],r[n+1],s);else for(let n=e-t;n>=A;n-=t)s=ua(n/t|0,r[n],r[n+1],s);return s&&GA(s,s.next)&&(bi(s),s=s.next),s}function yA(r,A){if(!r)return r;A||(A=r);let e=r,t;do if(t=!1,!e.steiner&&(GA(e,e.next)||ye(e.prev,e,e.next)===0)){if(bi(e),e=A=e.prev,e===e.next)break;t=!0}else e=e.next;while(t||e!==A);return A}function vi(r,A,e,t,i,s,n){if(!r)return;!n&&s&&Gg(r,t,i,s);let o=r;for(;r.prev!==r.next;){const a=r.prev,l=r.next;if(s?Rg(r,t,i,s):Mg(r)){A.push(a.i,r.i,l.i),bi(r),r=l.next,o=l.next;continue}if(r=l,r===o){n?n===1?(r=Pg(yA(r),A),vi(r,A,e,t,i,s,2)):n===2&&Ug(r,A,e,t,i,s):vi(yA(r),A,e,t,i,s,1);break}}}function Mg(r){const A=r.prev,e=r,t=r.next;if(ye(A,e,t)>=0)return!1;const i=A.x,s=e.x,n=t.x,o=A.y,a=e.y,l=t.y,h=Math.min(i,s,n),c=Math.min(o,a,l),f=Math.max(i,s,n),d=Math.max(o,a,l);let I=t.next;for(;I!==A;){if(I.x>=h&&I.x<=f&&I.y>=c&&I.y<=d&&_i(i,o,s,a,n,l,I.x,I.y)&&ye(I.prev,I,I.next)>=0)return!1;I=I.next}return!0}function Rg(r,A,e,t){const i=r.prev,s=r,n=r.next;if(ye(i,s,n)>=0)return!1;const o=i.x,a=s.x,l=n.x,h=i.y,c=s.y,f=n.y,d=Math.min(o,a,l),I=Math.min(h,c,f),C=Math.max(o,a,l),B=Math.max(h,c,f),P=Os(d,I,A,e,t),S=Os(C,B,A,e,t);let _=r.prevZ,R=r.nextZ;for(;_&&_.z>=P&&R&&R.z<=S;){if(_.x>=d&&_.x<=C&&_.y>=I&&_.y<=B&&_!==i&&_!==n&&_i(o,h,a,c,l,f,_.x,_.y)&&ye(_.prev,_,_.next)>=0||(_=_.prevZ,R.x>=d&&R.x<=C&&R.y>=I&&R.y<=B&&R!==i&&R!==n&&_i(o,h,a,c,l,f,R.x,R.y)&&ye(R.prev,R,R.next)>=0))return!1;R=R.nextZ}for(;_&&_.z>=P;){if(_.x>=d&&_.x<=C&&_.y>=I&&_.y<=B&&_!==i&&_!==n&&_i(o,h,a,c,l,f,_.x,_.y)&&ye(_.prev,_,_.next)>=0)return!1;_=_.prevZ}for(;R&&R.z<=S;){if(R.x>=d&&R.x<=C&&R.y>=I&&R.y<=B&&R!==i&&R!==n&&_i(o,h,a,c,l,f,R.x,R.y)&&ye(R.prev,R,R.next)>=0)return!1;R=R.nextZ}return!0}function Pg(r,A){let e=r;do{const t=e.prev,i=e.next.next;!GA(t,i)&&ga(t,e,e.next,i)&&Di(t,i)&&Di(i,t)&&(A.push(t.i,e.i,i.i),bi(e),bi(e.next),e=r=i),e=e.next}while(e!==r);return yA(e)}function Ug(r,A,e,t,i,s){let n=r;do{let o=n.next.next;for(;o!==n.prev;){if(n.i!==o.i&&Jg(n,o)){let a=ca(n,o);n=yA(n,n.next),a=yA(a,a.next),vi(n,A,e,t,i,s,0),vi(a,A,e,t,i,s,0);return}o=o.next}n=n.next}while(n!==r)}function kg(r,A,e,t){const i=[];for(let s=0,n=A.length;s<n;s++){const o=A[s]*t,a=s<n-1?A[s+1]*t:r.length,l=la(r,o,a,t,!1);l===l.next&&(l.steiner=!0),i.push(Hg(l))}i.sort(Ng);for(let s=0;s<i.length;s++)e=Fg(i[s],e);return e}function Ng(r,A){let e=r.x-A.x;if(e===0&&(e=r.y-A.y,e===0)){const t=(r.next.y-r.y)/(r.next.x-r.x),i=(A.next.y-A.y)/(A.next.x-A.x);e=t-i}return e}function Fg(r,A){const e=Tg(r,A);if(!e)return A;const t=ca(e,r);return yA(t,t.next),yA(e,e.next)}function Tg(r,A){let e=A;const t=r.x,i=r.y;let s=-1/0,n;if(GA(r,e))return e;do{if(GA(r,e.next))return e.next;if(i<=e.y&&i>=e.next.y&&e.next.y!==e.y){const c=e.x+(i-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(c<=t&&c>s&&(s=c,n=e.x<e.next.x?e:e.next,c===t))return n}e=e.next}while(e!==A);if(!n)return null;const o=n,a=n.x,l=n.y;let h=1/0;e=n;do{if(t>=e.x&&e.x>=a&&t!==e.x&&ha(i<l?t:s,i,a,l,i<l?s:t,i,e.x,e.y)){const c=Math.abs(i-e.y)/(t-e.x);Di(e,r)&&(c<h||c===h&&(e.x>n.x||e.x===n.x&&Lg(n,e)))&&(n=e,h=c)}e=e.next}while(e!==o);return n}function Lg(r,A){return ye(r.prev,r,A.prev)<0&&ye(A.next,r,r.next)<0}function Gg(r,A,e,t){let i=r;do i.z===0&&(i.z=Os(i.x,i.y,A,e,t)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==r);i.prevZ.nextZ=null,i.prevZ=null,Og(i)}function Og(r){let A,e=1;do{let t=r,i;r=null;let s=null;for(A=0;t;){A++;let n=t,o=0;for(let l=0;l<e&&(o++,n=n.nextZ,!!n);l++);let a=e;for(;o>0||a>0&&n;)o!==0&&(a===0||!n||t.z<=n.z)?(i=t,t=t.nextZ,o--):(i=n,n=n.nextZ,a--),s?s.nextZ=i:r=i,i.prevZ=s,s=i;t=n}s.nextZ=null,e*=2}while(A>1);return r}function Os(r,A,e,t,i){return r=(r-e)*i|0,A=(A-t)*i|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,r|A<<1}function Hg(r){let A=r,e=r;do(A.x<e.x||A.x===e.x&&A.y<e.y)&&(e=A),A=A.next;while(A!==r);return e}function ha(r,A,e,t,i,s,n,o){return(i-n)*(A-o)>=(r-n)*(s-o)&&(r-n)*(t-o)>=(e-n)*(A-o)&&(e-n)*(s-o)>=(i-n)*(t-o)}function _i(r,A,e,t,i,s,n,o){return!(r===n&&A===o)&&ha(r,A,e,t,i,s,n,o)}function Jg(r,A){return r.next.i!==A.i&&r.prev.i!==A.i&&!Kg(r,A)&&(Di(r,A)&&Di(A,r)&&Yg(r,A)&&(ye(r.prev,r,A.prev)||ye(r,A.prev,A))||GA(r,A)&&ye(r.prev,r,r.next)>0&&ye(A.prev,A,A.next)>0)}function ye(r,A,e){return(A.y-r.y)*(e.x-A.x)-(A.x-r.x)*(e.y-A.y)}function GA(r,A){return r.x===A.x&&r.y===A.y}function ga(r,A,e,t){const i=cr(ye(r,A,e)),s=cr(ye(r,A,t)),n=cr(ye(e,t,r)),o=cr(ye(e,t,A));return!!(i!==s&&n!==o||i===0&&gr(r,e,A)||s===0&&gr(r,t,A)||n===0&&gr(e,r,t)||o===0&&gr(e,A,t))}function gr(r,A,e){return A.x<=Math.max(r.x,e.x)&&A.x>=Math.min(r.x,e.x)&&A.y<=Math.max(r.y,e.y)&&A.y>=Math.min(r.y,e.y)}function cr(r){return r>0?1:r<0?-1:0}function Kg(r,A){let e=r;do{if(e.i!==r.i&&e.next.i!==r.i&&e.i!==A.i&&e.next.i!==A.i&&ga(e,e.next,r,A))return!0;e=e.next}while(e!==r);return!1}function Di(r,A){return ye(r.prev,r,r.next)<0?ye(r,A,r.next)>=0&&ye(r,r.prev,A)>=0:ye(r,A,r.prev)<0||ye(r,r.next,A)<0}function Yg(r,A){let e=r,t=!1;const i=(r.x+A.x)/2,s=(r.y+A.y)/2;do e.y>s!=e.next.y>s&&e.next.y!==e.y&&i<(e.next.x-e.x)*(s-e.y)/(e.next.y-e.y)+e.x&&(t=!t),e=e.next;while(e!==r);return t}function ca(r,A){const e=Hs(r.i,r.x,r.y),t=Hs(A.i,A.x,A.y),i=r.next,s=A.prev;return r.next=A,A.prev=r,e.next=i,i.prev=e,t.next=e,e.prev=t,s.next=t,t.prev=s,t}function ua(r,A,e,t){const i=Hs(r,A,e);return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function bi(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function Hs(r,A,e){return{i:r,x:A,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Wg(r,A,e,t){let i=0;for(let s=A,n=e-t;s<e;s+=t)i+=(r[n]-r[s])*(r[s+1]+r[n+1]),n=s;return i}function zg(r,A,e,t={}){const{radius:i=1}=t;r.moveTo(A,e),r.arc(A,e,i,0,Math.PI*2)}const Vg={arcs:"bevel",bevel:"bevel",miter:"miter","miter-clip":"miter",round:"round"};function Js(r,A){const{fill:e="#000",stroke:t="none",strokeWidth:i=t==="none"?0:1,strokeLinecap:s="round",strokeLinejoin:n="miter",strokeMiterlimit:o=0,strokeDasharray:a=[],strokeDashoffset:l=0,shadowOffsetX:h=0,shadowOffsetY:c=0,shadowBlur:f=0,shadowColor:d="rgba(0, 0, 0, 0)"}=A;r.fillStyle=e,r.strokeStyle=t,r.lineWidth=i,r.lineCap=s,r.lineJoin=Vg[n],r.miterLimit=o,r.setLineDash(a),r.lineDashOffset=l,r.shadowOffsetX=h,r.shadowOffsetY=c,r.shadowBlur=f,r.shadowColor=d}class G{constructor(A=0,e=0){this.x=A,this.y=e}static get MAX(){return new G(1/0,1/0)}static get MIN(){return new G(-1/0,-1/0)}get array(){return[this.x,this.y]}set(A,e){return this.x=A,this.y=e,this}add(A){return this.x+=A.x,this.y+=A.y,this}sub(A){return this.x-=A.x,this.y-=A.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}divide(A){return this.x/=A.x,this.y/=A.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}rotate(A,e={x:0,y:0}){const t=-A/180*Math.PI,i=this.x-e.x,s=-(this.y-e.y),n=Math.sin(t),o=Math.cos(t);return this.set(e.x+(i*o-s*n),e.y-(i*n+s*o)),this}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const e=this.x-A.x,t=this.y-A.y;return e*e+t*t}lengthSquared(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.lengthSquared())}scale(A,e=A,t={x:0,y:0}){const i=A<0?t.x-this.x+t.x:this.x,s=e<0?t.y-this.y+t.y:this.y;return this.x=i*Math.abs(A),this.y=s*Math.abs(e),this}skew(A,e=0,t={x:0,y:0}){const i=this.x-t.x,s=this.y-t.y;return this.x=t.x+(i+Math.tan(A)*s),this.y=t.y+(s+Math.tan(e)*i),this}min(...A){return this.x=Math.min(this.x,...A.map(e=>e.x)),this.y=Math.min(this.y,...A.map(e=>e.y)),this}max(...A){return this.x=Math.max(this.x,...A.map(e=>e.x)),this.y=Math.max(this.y,...A.map(e=>e.y)),this}normalize(){return this.scale(1/(this.length()||1))}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this}multiplyVectors(A,e){return this.x=A.x*e.x,this.y=A.y*e.y,this}divideVectors(A,e){return this.x=A.x/e.x,this.y=A.y/e.y,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this}equals(A){return this.x===A.x&&this.y===A.y}applyMatrix3(A){const e=this.x,t=this.y,i=A.elements;return this.x=i[0]*e+i[3]*t+i[6],this.y=i[1]*e+i[4]*t+i[7],this}copy(A){return this.x=A.x,this.y=A.y,this}clone(){return new G(this.x,this.y)}}class ue{constructor(A=0,e=0,t=0,i=0){this.left=A,this.top=e,this.width=t,this.height=i}get x(){return this.left}set x(A){this.left=A}get y(){return this.top}set y(A){this.top=A}get right(){return this.left+this.width}get bottom(){return this.top+this.height}get center(){return new G((this.left+this.right)/2,(this.top+this.bottom)/2)}get array(){return[this.left,this.top,this.width,this.height]}static from(...A){if(A.length===0)return new ue;if(A.length===1)return A[0].clone();const e=A[0],t=A.slice(1).reduce((i,s)=>(i.left=Math.min(i.left,s.left),i.top=Math.min(i.top,s.top),i.right=Math.max(i.right,s.right),i.bottom=Math.max(i.bottom,s.bottom),i),{left:(e==null?void 0:e.left)??0,top:(e==null?void 0:e.top)??0,right:(e==null?void 0:e.right)??0,bottom:(e==null?void 0:e.bottom)??0});return new ue(t.left,t.top,t.right-t.left,t.bottom-t.top)}translate(A,e){return this.left+=A,this.top+=e,this}copy(A){return this.left=A.left,this.top=A.top,this.width=A.width,this.height=A.height,this}clone(){return new ue(this.left,this.top,this.width,this.height)}}class ze{constructor(A=1,e=0,t=0,i=0,s=1,n=0,o=0,a=0,l=1){u(this,"elements",[]);this.set(A,e,t,i,s,n,o,a,l)}set(A,e,t,i,s,n,o,a,l){const h=this.elements;return h[0]=A,h[1]=i,h[2]=o,h[3]=e,h[4]=s,h[5]=a,h[6]=t,h[7]=n,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const e=this.elements,t=A.elements;return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,e){const t=A.elements,i=e.elements,s=this.elements,n=t[0],o=t[3],a=t[6],l=t[1],h=t[4],c=t[7],f=t[2],d=t[5],I=t[8],C=i[0],B=i[3],P=i[6],S=i[1],_=i[4],R=i[7],v=i[2],w=i[5],D=i[8];return s[0]=n*C+o*S+a*v,s[3]=n*B+o*_+a*w,s[6]=n*P+o*R+a*D,s[1]=l*C+h*S+c*v,s[4]=l*B+h*_+c*w,s[7]=l*P+h*R+c*D,s[2]=f*C+d*S+I*v,s[5]=f*B+d*_+I*w,s[8]=f*P+d*R+I*D,this}invert(){const A=this.elements,e=A[0],t=A[1],i=A[2],s=A[3],n=A[4],o=A[5],a=A[6],l=A[7],h=A[8],c=h*n-o*l,f=o*a-h*s,d=l*s-n*a,I=e*c+t*f+i*d;if(I===0)return this.set(0,0,0,0,0,0,0,0,0);const C=1/I;return A[0]=c*C,A[1]=(i*l-h*t)*C,A[2]=(o*t-i*n)*C,A[3]=f*C,A[4]=(h*e-i*a)*C,A[5]=(i*s-o*e)*C,A[6]=d*C,A[7]=(t*a-l*e)*C,A[8]=(n*e-t*s)*C,this}transpose(){let A;const e=this.elements;return A=e[1],e[1]=e[3],e[3]=A,A=e[2],e[2]=e[6],e[6]=A,A=e[5],e[5]=e[7],e[7]=A,this}scale(A,e){return this.premultiply(Ks.makeScale(A,e)),this}rotate(A){return this.premultiply(Ks.makeRotation(-A)),this}translate(A,e){return this.premultiply(Ks.makeTranslation(A,e)),this}makeTranslation(A,e){return this.set(1,0,A,0,1,e,0,0,1),this}makeRotation(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,-t,0,t,e,0,0,0,1),this}makeScale(A,e){return this.set(A,0,0,0,e,0,0,0,1),this}fromArray(A,e=0){for(let t=0;t<9;t++)this.elements[t]=A[t+e];return this}clone(){return new this.constructor().fromArray(this.elements)}}const Ks=new ze;function fa(r,A,e,t){const i=r*e+A*t,s=Math.sqrt(r*r+A*A)*Math.sqrt(e*e+t*t);let n=Math.acos(Math.max(-1,Math.min(1,i/s)));return r*t-A*e<0&&(n=-n),n}function qg(r,A,e,t,i,s,n,o){if(A===0||e===0){r.lineTo(o.x,o.y);return}t=t*Math.PI/180,A=Math.abs(A),e=Math.abs(e);const a=(n.x-o.x)/2,l=(n.y-o.y)/2,h=Math.cos(t)*a+Math.sin(t)*l,c=-Math.sin(t)*a+Math.cos(t)*l;let f=A*A,d=e*e;const I=h*h,C=c*c,B=I/f+C/d;if(B>1){const Z=Math.sqrt(B);A=Z*A,e=Z*e,f=A*A,d=e*e}const P=f*C+d*I,S=(f*d-P)/P;let _=Math.sqrt(Math.max(0,S));i===s&&(_=-_);const R=_*A*c/e,v=-_*e*h/A,w=Math.cos(t)*R-Math.sin(t)*v+(n.x+o.x)/2,D=Math.sin(t)*R+Math.cos(t)*v+(n.y+o.y)/2,x=fa(1,0,(h-R)/A,(c-v)/e),L=fa((h-R)/A,(c-v)/e,(-h-R)/A,(-c-v)/e)%(Math.PI*2);r.ellipse(w,D,A,e,t,x,x+L,s===0)}const _e={WHITESPACE:/[ \t\r\n]/,DIGIT:/\d/,SIGN:/[-+]/,POINT:/\./,COMMA:/,/,EXP:/e/i,FLAGS:/[01]/};function xt(r,A,e=0){let o=0,a=!0,l="",h="";const c=[];function f(B,P,S){const _=new SyntaxError(`Unexpected character "${B}" at index ${P}.`);throw _.partial=S,_}function d(){l!==""&&(h===""?c.push(Number(l)):c.push(Number(l)*10**Number(h))),l="",h=""}let I;const C=r.length;for(let B=0;B<C;B++){if(I=r[B],Array.isArray(A)&&A.includes(c.length%e)&&_e.FLAGS.test(I)){o=1,l=I,d();continue}if(o===0){if(_e.WHITESPACE.test(I))continue;if(_e.DIGIT.test(I)||_e.SIGN.test(I)){o=1,l=I;continue}if(_e.POINT.test(I)){o=2,l=I;continue}_e.COMMA.test(I)&&(a&&f(I,B,c),a=!0)}if(o===1){if(_e.DIGIT.test(I)){l+=I;continue}if(_e.POINT.test(I)){l+=I,o=2;continue}if(_e.EXP.test(I)){o=3;continue}_e.SIGN.test(I)&&l.length===1&&_e.SIGN.test(l[0])&&f(I,B,c)}if(o===2){if(_e.DIGIT.test(I)){l+=I;continue}if(_e.EXP.test(I)){o=3;continue}_e.POINT.test(I)&&l[l.length-1]==="."&&f(I,B,c)}if(o===3){if(_e.DIGIT.test(I)){h+=I;continue}if(_e.SIGN.test(I)){if(h===""){h+=I;continue}h.length===1&&_e.SIGN.test(h)&&f(I,B,c)}}_e.WHITESPACE.test(I)?(d(),o=0,a=!1):_e.COMMA.test(I)?(d(),o=0,a=!0):_e.SIGN.test(I)?(d(),o=1,l=I):_e.POINT.test(I)?(d(),o=2,l=I):f(I,B,c)}return d(),c}function OA(r,A){return r-(A-r)}function da(r,A){const e=new G,t=new G;for(let i=0,s=r.length;i<s;i++){const n=r[i];if(n.type==="m"||n.type==="M")n.type==="m"?e.add(n):e.copy(n),A.moveTo(e.x,e.y),t.copy(e);else if(n.type==="h"||n.type==="H")n.type==="h"?e.x+=n.x:e.x=n.x,A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="v"||n.type==="V")n.type==="v"?e.y+=n.y:e.y=n.y,A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="l"||n.type==="L")n.type==="l"?e.add(n):e.copy(n),A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="c"||n.type==="C")n.type==="c"?(A.bezierCurveTo(e.x+n.x1,e.y+n.y1,e.x+n.x2,e.y+n.y2,e.x+n.x,e.y+n.y),t.x=e.x+n.x2,t.y=e.y+n.y2,e.add(n)):(A.bezierCurveTo(n.x1,n.y1,n.x2,n.y2,n.x,n.y),t.x=n.x2,t.y=n.y2,e.copy(n));else if(n.type==="s"||n.type==="S")n.type==="s"?(A.bezierCurveTo(OA(e.x,t.x),OA(e.y,t.y),e.x+n.x2,e.y+n.y2,e.x+n.x,e.y+n.y),t.x=e.x+n.x2,t.y=e.y+n.y2,e.add(n)):(A.bezierCurveTo(OA(e.x,t.x),OA(e.y,t.y),n.x2,n.y2,n.x,n.y),t.x=n.x2,t.y=n.y2,e.copy(n));else if(n.type==="q"||n.type==="Q")n.type==="q"?(A.quadraticCurveTo(e.x+n.x1,e.y+n.y1,e.x+n.x,e.y+n.y),t.x=e.x+n.x1,t.y=e.y+n.y1,e.add(n)):(A.quadraticCurveTo(n.x1,n.y1,n.x,n.y),t.x=n.x1,t.y=n.y1,e.copy(n));else if(n.type==="t"||n.type==="T"){const o=OA(e.x,t.x),a=OA(e.y,t.y);t.x=o,t.y=a,n.type==="t"?(A.quadraticCurveTo(o,a,e.x+n.x,e.y+n.y),e.add(n)):(A.quadraticCurveTo(o,a,n.x,n.y),e.copy(n))}else if(n.type==="a"||n.type==="A"){const o=e.clone();if(n.type==="a"){if(n.x===0&&n.y===0)continue;e.add(n)}else{if(e.equals(n))continue;e.copy(n)}t.copy(e),qg(A,n.rx,n.ry,n.angle,n.largeArcFlag,n.sweepFlag,o,e)}else n.type==="z"||n.type==="Z"?(A.startPoint&&e.copy(A.startPoint),A.closePath()):console.warn("Unsupported commands",n)}}function Xg(r){let A,e;const t=[];for(let i=0,s=r.length;i<s;i++){const n=r[i];switch(n.type){case"m":case"M":if(n.x.toFixed(4)===(e==null?void 0:e.x.toFixed(4))&&n.y.toFixed(4)===(e==null?void 0:e.y.toFixed(4)))continue;t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y},A={x:n.x,y:n.y};break;case"h":case"H":t.push(`${n.type} ${n.x}`),e={x:n.x,y:(e==null?void 0:e.y)??0};break;case"v":case"V":t.push(`${n.type} ${n.y}`),e={x:(e==null?void 0:e.x)??0,y:n.y};break;case"l":case"L":t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"c":case"C":t.push(`${n.type} ${n.x1} ${n.y1} ${n.x2} ${n.y2} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"s":case"S":t.push(`${n.type} ${n.x2} ${n.y2} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"q":case"Q":t.push(`${n.type} ${n.x1} ${n.y1} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"t":case"T":t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"a":case"A":t.push(`${n.type} ${n.rx} ${n.ry} ${n.angle} ${n.largeArcFlag} ${n.sweepFlag} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"z":case"Z":t.push(n.type),A&&(e={x:A.x,y:A.y});break}}return t.join(" ")}const jg=/[a-df-z][^a-df-z]*/gi;function Ia(r){const A=[],e=r.match(jg);if(!e)return A;for(let t=0,i=e.length;t<i;t++){const s=e[t],n=s.charAt(0),o=s.slice(1).trim();let a;switch(n){case"m":case"M":a=xt(o);for(let l=0,h=a.length;l<h;l+=2)l===0?A.push({type:n,x:a[l],y:a[l+1]}):A.push({type:n==="m"?"l":"L",x:a[l],y:a[l+1]});break;case"h":case"H":a=xt(o);for(let l=0,h=a.length;l<h;l++)A.push({type:n,x:a[l]});break;case"v":case"V":a=xt(o);for(let l=0,h=a.length;l<h;l++)A.push({type:n,y:a[l]});break;case"l":case"L":a=xt(o);for(let l=0,h=a.length;l<h;l+=2)A.push({type:n,x:a[l],y:a[l+1]});break;case"c":case"C":a=xt(o);for(let l=0,h=a.length;l<h;l+=6)A.push({type:n,x1:a[l],y1:a[l+1],x2:a[l+2],y2:a[l+3],x:a[l+4],y:a[l+5]});break;case"s":case"S":a=xt(o);for(let l=0,h=a.length;l<h;l+=4)A.push({type:n,x2:a[l],y2:a[l+1],x:a[l+2],y:a[l+3]});break;case"q":case"Q":a=xt(o);for(let l=0,h=a.length;l<h;l+=4)A.push({type:n,x1:a[l],y1:a[l+1],x:a[l+2],y:a[l+3]});break;case"t":case"T":a=xt(o);for(let l=0,h=a.length;l<h;l+=2)A.push({type:n,x:a[l],y:a[l+1]});break;case"a":case"A":a=xt(o,[3,4],7);for(let l=0,h=a.length;l<h;l+=7)A.push({type:n,rx:a[l],ry:a[l+1],angle:a[l+2],largeArcFlag:a[l+3],sweepFlag:a[l+4],x:a[l+5],y:a[l+6]});break;case"z":case"Z":A.push({type:n});break;default:console.warn(s)}}return A}function Ba(r,A,e,t,i){const s=(t-A)*.5,n=(i-e)*.5,o=r*r,a=r*o;return(2*e-2*t+s+n)*a+(-3*e+3*t-2*s-n)*o+s*r+e}function Zg(r,A){const e=1-r;return e*e*e*A}function $g(r,A){const e=1-r;return 3*e*e*r*A}function ec(r,A){return 3*(1-r)*r*r*A}function tc(r,A){return r*r*r*A}function Ea(r,A,e,t,i){return Zg(r,A)+$g(r,e)+ec(r,t)+tc(r,i)}function pa(r,A={}){let{vertices:e=[],indices:t=[],holes:i=[],verticesStride:s=2,verticesOffset:n=e.length/s,indicesOffset:o=t.length}=A;const a=Sg(r,i,2);if(a){for(let h=0;h<a.length;h+=3)t[o++]=a[h]+n,t[o++]=a[h+1]+n,t[o++]=a[h+2]+n;let l=n*s;for(let h=0;h<r.length;h+=2)e[l]=r[h],e[l+1]=r[h+1],l+=s}return{vertices:e,indices:t}}const Ac=8,ur=11920929e-14,ic=1;function rc(r,A,e,t,i,s,n,o,a=.5,l=[]){const c=Math.min(.99,Math.max(0,a));let f=(ic-c)/1;return f*=f,Ys(r,A,e,t,i,s,n,o,l,f,0),l.push(n,o),l}function Ys(r,A,e,t,i,s,n,o,a,l,h){if(h>Ac)return;const c=(r+e)/2,f=(A+t)/2,d=(e+i)/2,I=(t+s)/2,C=(i+n)/2,B=(s+o)/2,P=(c+d)/2,S=(f+I)/2,_=(d+C)/2,R=(I+B)/2,v=(P+_)/2,w=(S+R)/2;if(h>0){let D=n-r,x=o-A;const L=Math.abs((e-n)*x-(t-o)*D),Z=Math.abs((i-n)*x-(s-o)*D);if(L>ur&&Z>ur){if((L+Z)*(L+Z)<=l*(D*D+x*x)){a.push(v,w);return}}else if(L>ur){if(L*L<=l*(D*D+x*x)){a.push(v,w);return}}else if(Z>ur){if(Z*Z<=l*(D*D+x*x)){a.push(v,w);return}}else if(D=v-(r+n)/2,x=w-(A+o)/2,D*D+x*x<=l){a.push(v,w);return}}Ys(r,A,c,f,P,S,v,w,a,l,h+1),Ys(v,w,_,R,C,B,n,o,a,l,h+1)}const sc=8,nc=11920929e-14,oc=1;function ac(r,A,e,t,i,s,n=.5,o=[]){const l=Math.min(.99,Math.max(0,n));let h=(oc-l)/1;return h*=h,Ws(o,r,A,e,t,i,s,h,0),o.push(i,s),o}function Ws(r,A,e,t,i,s,n,o,a){if(a>sc)return;const l=(A+t)/2,h=(e+i)/2,c=(t+s)/2,f=(i+n)/2,d=(l+c)/2,I=(h+f)/2;let C=s-A,B=n-e;const P=Math.abs((t-s)*B-(i-n)*C);if(P>nc){if(P*P<=o*(C*C+B*B)){r.push(d,I);return}}else if(C=d-(A+s)/2,B=I-(e+n)/2,C*C+B*B<=o){r.push(d,I);return}Ws(r,A,e,l,h,d,I,o,a+1),Ws(r,d,I,c,f,s,n,o,a+1)}function lc(r,A){const e=1-r;return e*e*A}function hc(r,A){return 2*(1-r)*r*A}function gc(r,A){return r*r*A}function Ca(r,A,e,t){return lc(r,A)+hc(r,e)+gc(r,t)}const cc=1e-4,Qa=1e-4;function uc(r,A={}){const{vertices:e=[],indices:t=[],lineStyle:i={alignment:.5,cap:"butt",join:"miter",width:1,miterLimit:10},flipAlignment:s=!1,closed:n=!0}=A,o=cc;if(r.length===0)return{vertices:e,indices:t};const a=i;let l=a.alignment;if(i.alignment!==.5){let q=fc(r);s&&(q*=-1),l=(l-.5)*q+.5}const h={x:r[0],y:r[1]},c={x:r[r.length-2],y:r[r.length-1]},f=n,d=Math.abs(h.x-c.x)<o&&Math.abs(h.y-c.y)<o;if(f){r=r.slice(),d&&(r.pop(),r.pop(),c.x=r[r.length-2],c.y=r[r.length-1]);const q=(h.x+c.x)*.5,W=(c.y+h.y)*.5;r.unshift(q,W),r.push(q,W)}const I=e,C=r.length/2;let B=r.length;const P=I.length/2,S=a.width/2,_=S*S,R=a.miterLimit*a.miterLimit;let v=r[0],w=r[1],D=r[2],x=r[3],L=0,Z=0,Y=-(w-x),T=v-D,X=0,k=0,j=Math.sqrt(Y*Y+T*T);Y/=j,T/=j,Y*=S,T*=S;const te=l,J=(1-te)*2,H=te*2;f||(a.cap==="round"?B+=mA(v-Y*(J-H)*.5,w-T*(J-H)*.5,v-Y*J,w-T*J,v+Y*H,w+T*H,I,!0)+2:a.cap==="square"&&(B+=ya(v,w,Y,T,J,H,!0,I))),I.push(v-Y*J,w-T*J),I.push(v+Y*H,w+T*H);for(let q=1;q<C-1;++q){v=r[(q-1)*2],w=r[(q-1)*2+1],D=r[q*2],x=r[q*2+1],L=r[(q+1)*2],Z=r[(q+1)*2+1],Y=-(w-x),T=v-D,j=Math.sqrt(Y*Y+T*T),Y/=j,T/=j,Y*=S,T*=S,X=-(x-Z),k=D-L,j=Math.sqrt(X*X+k*k),X/=j,k/=j,X*=S,k*=S;const W=D-v,oe=w-x,Ae=D-L,ae=Z-x,ie=W*Ae+oe*ae,le=oe*Ae-ae*W,V=le<0;if(Math.abs(le)<.001*Math.abs(ie)){I.push(D-Y*J,x-T*J),I.push(D+Y*H,x+T*H),ie>=0&&(a.join==="round"?B+=mA(D,x,D-Y*J,x-T*J,D-X*J,x-k*J,I,!1)+4:B+=2,I.push(D-X*H,x-k*H),I.push(D+X*J,x+k*J));continue}const Ie=(-Y+v)*(-T+x)-(-Y+D)*(-T+w),nt=(-X+L)*(-k+x)-(-X+D)*(-k+Z),ot=(W*nt-Ae*Ie)/le,Oe=(ae*Ie-oe*nt)/le,he=(ot-D)*(ot-D)+(Oe-x)*(Oe-x),me=D+(ot-D)*J,He=x+(Oe-x)*J,We=D-(ot-D)*H,be=x-(Oe-x)*H,$e=Math.min(W*W+oe*oe,Ae*Ae+ae*ae),Tt=V?J:H,is=$e+Tt*Tt*_;he<=is?a.join==="bevel"||he/_>R?(V?(I.push(me,He),I.push(D+Y*H,x+T*H),I.push(me,He),I.push(D+X*H,x+k*H)):(I.push(D-Y*J,x-T*J),I.push(We,be),I.push(D-X*J,x-k*J),I.push(We,be)),B+=2):a.join==="round"?V?(I.push(me,He),I.push(D+Y*H,x+T*H),B+=mA(D,x,D+Y*H,x+T*H,D+X*H,x+k*H,I,!0)+4,I.push(me,He),I.push(D+X*H,x+k*H)):(I.push(D-Y*J,x-T*J),I.push(We,be),B+=mA(D,x,D-Y*J,x-T*J,D-X*J,x-k*J,I,!1)+4,I.push(D-X*J,x-k*J),I.push(We,be)):(I.push(me,He),I.push(We,be)):(I.push(D-Y*J,x-T*J),I.push(D+Y*H,x+T*H),a.join==="round"?V?B+=mA(D,x,D+Y*H,x+T*H,D+X*H,x+k*H,I,!0)+2:B+=mA(D,x,D-Y*J,x-T*J,D-X*J,x-k*J,I,!1)+2:a.join==="miter"&&he/_<=R&&(V?(I.push(We,be),I.push(We,be)):(I.push(me,He),I.push(me,He)),B+=2),I.push(D-X*J,x-k*J),I.push(D+X*H,x+k*H),B+=2)}v=r[(C-2)*2],w=r[(C-2)*2+1],D=r[(C-1)*2],x=r[(C-1)*2+1],Y=-(w-x),T=v-D,j=Math.sqrt(Y*Y+T*T),Y/=j,T/=j,Y*=S,T*=S,I.push(D-Y*J,x-T*J),I.push(D+Y*H,x+T*H),f||(a.cap==="round"?B+=mA(D-Y*(J-H)*.5,x-T*(J-H)*.5,D-Y*J,x-T*J,D+Y*H,x+T*H,I,!1)+2:a.cap==="square"&&(B+=ya(D,x,Y,T,J,H,!1,I)));const ne=Qa*Qa;for(let q=P;q<B+P-2;++q)v=I[q*2],w=I[q*2+1],D=I[(q+1)*2],x=I[(q+1)*2+1],L=I[(q+2)*2],Z=I[(q+2)*2+1],!(Math.abs(v*(x-Z)+D*(Z-w)+L*(w-x))<ne)&&t.push(q,q+1,q+2);return{vertices:e,indices:t}}function fc(r){const A=r.length;if(A<6)return 1;let e=0;for(let t=0,i=r[A-2],s=r[A-1];t<A;t+=2){const n=r[t],o=r[t+1];e+=(n-i)*(o+s),i=n,s=o}return e<0?-1:1}function ya(r,A,e,t,i,s,n,o){const a=r-e*i,l=A-t*i,h=r+e*s,c=A+t*s;let f,d;n?(f=t,d=-e):(f=-t,d=e);const I=a+f,C=l+d,B=h+f,P=c+d;return o.push(I,C),o.push(B,P),2}function mA(r,A,e,t,i,s,n,o){const a=e-r,l=t-A;let h=Math.atan2(a,l),c=Math.atan2(i-r,s-A);o&&h<c?h+=Math.PI*2:!o&&h>c&&(c+=Math.PI*2);let f=h;const d=c-h,I=Math.abs(d),C=Math.sqrt(a*a+l*l),B=(15*I*Math.sqrt(C)/Math.PI>>0)+1,P=d/B;if(f+=P,o){n.push(r,A),n.push(e,t);for(let S=1,_=f;S<B;S++,_+=P)n.push(r,A),n.push(r+Math.sin(_)*C,A+Math.cos(_)*C);n.push(r,A),n.push(i,s)}else{n.push(e,t),n.push(r,A);for(let S=1,_=f;S<B;S++,_+=P)n.push(r+Math.sin(_)*C,A+Math.cos(_)*C),n.push(r,A);n.push(i,s),n.push(r,A)}return B*2}class HA{constructor(){u(this,"arcLengthDivision",200);u(this,"_arcLengths")}getPointAt(A,e=new G){return this.getPoint(this.getUToTMapping(A),e)}isClockwise(){const A=this.getPoint(1),e=this.getPoint(.5),t=this.getPoint(1);return(e.x-A.x)*(t.y-e.y)-(e.y-A.y)*(t.x-e.x)<0}getControlPointRefs(){return[]}applyTransform(A){return this.getControlPointRefs().forEach(e=>{e.applyMatrix3(A)}),this}getUnevenPointArray(A=5,e=[]){const t=new G;for(let i=0,s=Math.max(1,A)-1;i<=s;i++)this.getPoint(i/s,t),e.push(t.x,t.y);return e}getSpacedPointArray(A=5,e=[]){const t=new G;for(let i=0,s=Math.max(1,A)-1;i<=s;i++)this.getPointAt(i/s,t),e.push(t.x,t.y);return e}getAdaptivePointArray(A=[]){return this.getUnevenPointArray(5,A)}_pointArrayToPoint(A,e=[]){for(let t=0,i=A.length;t<i;t+=2){const s=A[t],n=A[t+1];e.push(new G(s,n))}return e}getSpacedPoints(A,e=[]){const t=this.getSpacedPointArray(A);return this._pointArrayToPoint(t,e),e}getUnevenPoints(A,e=[]){const t=this.getUnevenPointArray(A);return this._pointArrayToPoint(t,e),e}getAdaptivePoints(A=[]){const e=this.getAdaptivePointArray();return this._pointArrayToPoint(e,A),A}getPoints(A,e=[]){let t;return A?t=this.getUnevenPointArray(A):t=this.getAdaptivePointArray(),this._pointArrayToPoint(t,e),e}getLength(){const A=this.getLengths();return A[A.length-1]}getLengths(){return(!this._arcLengths||this._arcLengths.length!==this.arcLengthDivision+1)&&this.updateLengths(),this._arcLengths}updateLengths(){const A=this.arcLengthDivision,e=[0];for(let t=0,i=this.getPoint(0),s=1;s<=A;s++){const n=this.getPoint(s/A);t+=n.distanceTo(i),e.push(t),i=n}this._arcLengths=e}getUToTMapping(A,e){const t=this.getLengths(),i=t.length,s=e??A*t[i-1];if(i<2)return s/t[0];let n=0,o=0,a=i-1,l;for(;o<=a;)if(n=Math.floor(o+(a-o)/2),l=t[n]-s,l<0)o=n+1;else if(l>0)a=n-1;else{a=n;break}if(n=a,t[n]===s)return n/(i-1);const h=t[n],f=t[n+1]-h,d=(s-h)/f;return(n+d)/(i-1)}getTangent(A,e=new G){const i=Math.max(0,A-1e-4),s=Math.min(1,A+1e-4);return e.copy(this.getPoint(s).sub(this.getPoint(i)).normalize())}getTangentAt(A,e){return this.getTangent(this.getUToTMapping(A),e)}getNormal(A,e=new G){return this.getTangent(A,e),e.set(-e.y,e.x).normalize()}getNormalAt(A,e){return this.getNormal(this.getUToTMapping(A),e)}getTForPoint(A,e=.001){let t=0,i=1,s=(t+i)/2;for(;i-t>e;){s=(t+i)/2;const n=this.getPoint(s);if(n.distanceTo(A)<e)return s;n.x<A.x?t=s:i=s}return s}getMinMax(A=G.MAX,e=G.MIN){const t=this.getPoints();for(let i=0,s=t.length;i<s;i++){const n=t[i];A.min(n),e.max(n)}return{min:A,max:e}}getBoundingBox(){const{min:A,max:e}=this.getMinMax();return new ue(A.x,A.y,e.x-A.x,e.y-A.y)}fillTriangulate(A){return pa(this.getAdaptivePointArray(),A)}strokeTriangulate(A){return uc(this.getAdaptivePointArray(),A)}toTriangulatedSVGString(A=this.fillTriangulate(),e=0){const{vertices:t,indices:i}=A,s={x:-e,y:-e},n={x:e,y:e},o=h=>{const c=t[h*2],f=t[h*2+1];return s.x=Math.min(s.x,c+e),n.x=Math.max(n.x,c+e),s.y=Math.min(s.y,f+e),n.y=Math.max(n.y,f+e),[c,f]};let a="";for(let h=0,c=i.length;h<c;h+=3){const f=o(i[h]),d=o(i[h+1]),I=o(i[h+2]);a+=`<polygon points="${f.join(",")} ${d.join(",")} ${I.join(",")}" fill="none" stroke="black" />`}const l=[s.x,s.y,n.x-s.x,n.y-s.y];return`<svg width="${l[2]}" height="${l[3]}" viewBox="${l.join(" ")}" xmlns="http://www.w3.org/2000/svg">${a}</svg>`}toTriangulatedSVG(A,e){return new DOMParser().parseFromString(this.toTriangulatedSVGString(A,e),"image/svg+xml").documentElement}toCommands(){const A=[],e=this.getPoints();for(let t=0,i=e.length;t<i;t++){const s=e[t];t===0?A.push({type:"M",x:s.x,y:s.y}):A.push({type:"L",x:s.x,y:s.y})}return A}toData(){return Xg(this.toCommands())}drawTo(A){return this.toCommands().forEach(e=>{switch(e.type){case"M":A.moveTo(e.x,e.y);break;case"L":A.lineTo(e.x,e.y);break}}),this}copy(A){return this.arcLengthDivision=A.arcLengthDivision,this}clone(){return new this.constructor().copy(this)}}const dc=new ze,ma=new ze,wa=new ze,fr=new G;class zs extends HA{constructor(A=new G,e=new G,t=new G,i=0,s=0,n=Math.PI*2,o=!1){super(),this._center=A,this._radius=e,this._diff=t,this.rotate=i,this.startAngle=s,this.endAngle=n,this.clockwise=o}get cx(){return this._center.x}set cx(A){this._center.x=A}get cy(){return this._center.y}set cy(A){this._center.y=A}get rx(){return this._radius.x}set rx(A){this._radius.x=A}get ry(){return this._radius.y}set ry(A){this._radius.y=A}get dx(){return this._diff.x}set dx(A){this._diff.x=A}get dy(){return this._diff.y}set dy(A){this._diff.y=A}isClockwise(){return this.clockwise}_getDeltaAngle(){const A=Math.PI*2;let e=this.endAngle-this.startAngle;const t=Math.abs(e)<Number.EPSILON;return e=(e%A+A)%A,t?e=0:this.clockwise||(e=e===0?-A:e-A),e}getPoint(A,e=new G){const t=this._getDeltaAngle(),i=this.startAngle+A*t;let s=this.cx+this.rx*Math.cos(i),n=this.cy+this.ry*Math.sin(i);if(this.rotate!==0){const o=Math.cos(this.rotate),a=Math.sin(this.rotate),l=s-this.cx,h=n-this.cy;s=l*o-h*a+this.cx,n=l*a+h*o+this.cy}return e.set(s,n)}toCommands(){const{cx:A,cy:e,rx:t,ry:i,startAngle:s,endAngle:n,clockwise:o,rotate:a}=this,l=A+t*Math.cos(s)*Math.cos(a)-i*Math.sin(s)*Math.sin(a),h=e+t*Math.cos(s)*Math.sin(a)+i*Math.sin(s)*Math.cos(a),c=Math.abs(s-n),f=c>Math.PI?1:0,d=o?1:0,I=a*180/Math.PI;if(c>=2*Math.PI){const C=s+Math.PI,B=A+t*Math.cos(C)*Math.cos(a)-i*Math.sin(C)*Math.sin(a),P=e+t*Math.cos(C)*Math.sin(a)+i*Math.sin(C)*Math.cos(a);return[{type:"M",x:l,y:h},{type:"A",rx:t,ry:i,angle:I,largeArcFlag:0,sweepFlag:d,x:B,y:P},{type:"A",rx:t,ry:i,angle:I,largeArcFlag:0,sweepFlag:d,x:l,y:h}]}else{const C=A+t*Math.cos(n)*Math.cos(a)-i*Math.sin(n)*Math.sin(a),B=e+t*Math.cos(n)*Math.sin(a)+i*Math.sin(n)*Math.cos(a);return[{type:"M",x:l,y:h},{type:"A",rx:t,ry:i,angle:I,largeArcFlag:f,sweepFlag:d,x:C,y:B}]}}drawTo(A){const{cx:e,cy:t,rx:i,ry:s,rotate:n,startAngle:o,endAngle:a,clockwise:l}=this;return A.ellipse(e,t,i,s,n,o,a,!l),this}applyTransform(A){return fr.set(this.cx,this.cy),fr.applyMatrix3(A),this.cx=fr.x,this.cy=fr.y,Ec(A)?Ic(this,A):Bc(this,A),this}getControlPointRefs(){return[this._center]}getAdaptivePointArray(A=[]){const{cx:e,cy:t,rx:i,ry:s,dx:n,dy:o}=this;if(!(i>=0&&s>=0&&n>=0&&o>=0))return A;const a=Math.ceil(2.3*Math.sqrt(i+s)),l=e,h=t,c=a*8+(n?4:0)+(o?4:0);if(c===0)return A;if(a===0)return A[0]=A[6]=l+n,A[1]=A[3]=h+o,A[2]=A[4]=l-n,A[5]=A[7]=h-o,A;let f=0,d=a*4+(n?2:0)+2,I=d,C=c,B=n+i,P=o,S=l+B,_=l-B,R=h+P;if(A[f++]=S,A[f++]=R,A[--d]=R,A[--d]=_,o){const w=h-P;A[I++]=_,A[I++]=w,A[--C]=w,A[--C]=S}for(let w=1;w<a;w++){const D=Math.PI/2*(w/a),x=n+Math.cos(D)*i,L=o+Math.sin(D)*s,Z=l+x,Y=l-x,T=h+L,X=h-L;A[f++]=Z,A[f++]=T,A[--d]=T,A[--d]=Y,A[I++]=Y,A[I++]=X,A[--C]=X,A[--C]=Z}B=n,P=o+s,S=l+B,_=l-B,R=h+P;const v=h-P;return A[f++]=S,A[f++]=R,A[--C]=v,A[--C]=S,n&&(A[f++]=_,A[f++]=R,A[--C]=v,A[--C]=_),A}fillTriangulate(A={}){let{vertices:e=[],indices:t=[],verticesStride:i=2,verticesOffset:s=e.length/i,indicesOffset:n=t.length}=A;const o=this.getAdaptivePointArray();if(o.length===0)return{vertices:e,indices:t};let a=0,l=0;for(let f=0;f<o.length;f+=2)a+=o[f],l+=o[f+1];a/=o.length/2,l/=o.length/2;let h=s;e[h*i]=a,e[h*i+1]=l;const c=h++;for(let f=0;f<o.length;f+=2)e[h*i]=o[f],e[h*i+1]=o[f+1],f>0&&(t[n++]=h,t[n++]=c,t[n++]=h-1),h++;return t[n++]=c+1,t[n++]=c,t[n++]=h-1,{vertices:e,indices:t}}getMinMax(A=G.MAX,e=G.MIN){const{cx:t,cy:i,rx:s,ry:n,rotate:o}=this,a=Math.cos(o),l=Math.sin(o),h=Math.sqrt(s*s*a*a+n*n*l*l),c=Math.sqrt(s*s*l*l+n*n*a*a);return A.x=Math.min(A.x,t-h),A.y=Math.min(A.y,i-c),e.x=Math.max(e.x,t+h),e.y=Math.max(e.y,i+c),{min:A,max:e}}copy(A){return super.copy(A),this.cx=A.cx,this.cy=A.cy,this.rx=A.rx,this.ry=A.ry,this.dx=A.dx,this.dy=A.dy,this.startAngle=A.startAngle,this.endAngle=A.endAngle,this.clockwise=A.clockwise,this.rotate=A.rotate,this}}function Ic(r,A){const e=r.rx,t=r.ry,i=Math.cos(r.rotate),s=Math.sin(r.rotate),n=new G(e*i,e*s),o=new G(-t*s,t*i),a=n.applyMatrix3(A),l=o.applyMatrix3(A),h=dc.set(a.x,l.x,0,a.y,l.y,0,0,0,1),c=ma.copy(h).invert(),I=wa.copy(c).transpose().multiply(c).elements,C=pc(I[0],I[1],I[4]),B=Math.sqrt(C.rt1),P=Math.sqrt(C.rt2);if(r.rx=1/B,r.ry=1/P,r.rotate=Math.atan2(C.sn,C.cs),!((r.endAngle-r.startAngle)%(2*Math.PI)<Number.EPSILON)){const _=ma.set(B,0,0,0,P,0,0,0,1),R=wa.set(C.cs,C.sn,0,-C.sn,C.cs,0,0,0,1),v=_.multiply(R).multiply(h),w=D=>{const{x,y:L}=new G(Math.cos(D),Math.sin(D)).applyMatrix3(v);return Math.atan2(L,x)};r.startAngle=w(r.startAngle),r.endAngle=w(r.endAngle),va(A)&&(r.clockwise=!r.clockwise)}}function Bc(r,A){const e=_a(A),t=Da(A);r.rx*=e,r.ry*=t;const i=e>Number.EPSILON?Math.atan2(A.elements[1],A.elements[0]):Math.atan2(-A.elements[3],A.elements[4]);r.rotate+=i,va(A)&&(r.startAngle*=-1,r.endAngle*=-1,r.clockwise=!r.clockwise)}function va(r){const A=r.elements;return A[0]*A[4]-A[1]*A[3]<0}function Ec(r){const A=r.elements,e=A[0]*A[3]+A[1]*A[4];if(e===0)return!1;const t=_a(r),i=Da(r);return Math.abs(e/(t*i))>Number.EPSILON}function _a(r){const A=r.elements;return Math.sqrt(A[0]*A[0]+A[1]*A[1])}function Da(r){const A=r.elements;return Math.sqrt(A[3]*A[3]+A[4]*A[4])}function pc(r,A,e){let t,i,s,n,o;const a=r+e,l=r-e,h=Math.sqrt(l*l+4*A*A);return a>0?(t=.5*(a+h),o=1/t,i=r*o*e-A*o*A):a<0?i=.5*(a-h):(t=.5*h,i=-.5*h),l>0?s=l+h:s=l-h,Math.abs(s)>2*Math.abs(A)?(o=-2*A/s,n=1/Math.sqrt(1+o*o),s=o*n):Math.abs(A)===0?(s=1,n=0):(o=-.5*s/A,s=1/Math.sqrt(1+o*o),n=o*s),l>0&&(o=s,s=-n,n=o),{rt1:t,rt2:i,cs:s,sn:n}}class Cc extends zs{constructor(A=0,e=0,t=1,i=0,s=Math.PI*2,n=!1){super(new G(A,e),new G(t,t),new G,0,i,s,n)}drawTo(A){const{cx:e,cy:t,rx:i,startAngle:s,endAngle:n,clockwise:o}=this;return A.arc(e,t,i,s,n,!o),this}getAdaptivePointArray(A=[]){const{cx:e,cy:t,rx:i,startAngle:s,endAngle:n,clockwise:o}=this;let a=Math.abs(s-n);(!o&&s>n||o&&n>s)&&(a=2*Math.PI-a);let l=Math.max(6,Math.floor(6*i**(1/3)*(a/Math.PI)));l=Math.max(l,3);let h=a/l,c=s;h*=o?1:-1;for(let f=0;f<l+1;f++){const d=Math.cos(c),I=Math.sin(c),C=e+d*i,B=t+I*i;A.push(C,B),c+=h}return A}}class Vt extends HA{constructor(A=new G,e=new G){super(),this.p1=A,this.p2=e}static from(A,e,t,i){return new Vt(new G(A,e),new G(t,i))}getPoint(A,e=new G){return A===1?e.copy(this.p2):e.copy(this.p2).sub(this.p1).scale(A).add(this.p1),e}getPointAt(A,e=new G){return this.getPoint(A,e)}getTangent(A,e=new G){return e.subVectors(this.p2,this.p1).normalize()}getTangentAt(A,e=new G){return this.getTangent(A,e)}getControlPointRefs(){return[this.p1,this.p2]}getAdaptivePointArray(A=[]){return A.push(this.p1.x,this.p1.y,this.p2.x,this.p2.y),A}getMinMax(A=G.MAX,e=G.MIN){const{p1:t,p2:i}=this;return A.x=Math.min(A.x,t.x,i.x),A.y=Math.min(A.y,t.y,i.y),e.x=Math.max(e.x,t.x,i.x),e.y=Math.max(e.y,t.y,i.y),{min:A,max:e}}toCommands(){const{p1:A,p2:e}=this;return[{type:"M",x:A.x,y:A.y},{type:"L",x:e.x,y:e.y}]}fillTriangulate(A={}){let{vertices:e=[],indices:t=[],verticesStride:i=2,verticesOffset:s=e.length/i,indicesOffset:n=t.length}=A;const o=this.p1.x,a=this.p1.y,l=this.p2.x-this.p1.x||1,h=this.p2.y-this.p2.y||1,c=[o,a,o+l,a,o+l,a+h,o,a+h];let f=0;s*=i,e[s+f]=c[0],e[s+f+1]=c[1],f+=i,e[s+f]=c[2],e[s+f+1]=c[3],f+=i,e[s+f]=c[6],e[s+f+1]=c[7],f+=i,e[s+f]=c[4],e[s+f+1]=c[5],f+=i;const d=s/i;return t[n++]=d,t[n++]=d+1,t[n++]=d+2,t[n++]=d+1,t[n++]=d+3,t[n++]=d+2,{vertices:e,indices:t}}drawTo(A){const{p1:e,p2:t}=this;return A.lineTo(e.x,e.y),A.lineTo(t.x,t.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.p2.copy(A.p2),this}}class xi extends HA{constructor(A=[]){super(),this.curves=A}getFlatCurves(){return this.curves.flatMap(A=>A instanceof xi?A.getFlatCurves():A)}addCurve(A){return this.curves.push(A),this}getPoint(A,e=new G){const t=A*this.getLength(),i=this.getLengths();let s=0;for(;s<i.length;){if(i[s]>=t){const n=i[s]-t,o=this.curves[s],a=o.getLength();return o.getPointAt(a===0?0:1-n/a,e)}s++}return e}updateLengths(){const A=[];for(let e=0,t=0,i=this.curves.length;e<i;e++)t+=this.curves[e].getLength(),A.push(t);this._arcLengths=A}getControlPointRefs(){return this.curves.flatMap(A=>A.getControlPointRefs())}_removeNextPointIfEqualPrevPoint(A,e){return A[e-1]===A[e+1]&&A[e]===A[e+2]&&A.splice(e+1,2),A}getSpacedPointArray(A=5,e=[]){let t;return this.curves.forEach(i=>{i.getSpacedPointArray(A,e),t&&this._removeNextPointIfEqualPrevPoint(e,t),t=e.length-1}),e}getAdaptivePointArray(A=[]){let e;return this.curves.forEach(t=>{t.getAdaptivePointArray(A),e&&this._removeNextPointIfEqualPrevPoint(A,e),e=A.length-1}),A}fillTriangulate(A){const e=(A==null?void 0:A.indices)??[],t=(A==null?void 0:A.vertices)??[],i=[],s=()=>{if(i.length){const n=[];i.forEach(o=>{const a=o.p1.x,l=o.p1.y;(n[n.length-2]!==a||n[n.length-1]!==l)&&n.push(a,l),n.push(o.p2.x,o.p2.y)}),pa(n,{...A,indices:e,vertices:t}),i.length=0}};return this.curves.forEach(n=>{n instanceof Vt?i.push(n):(s(),n.fillTriangulate({...A,indices:e,vertices:t}))}),s(),{indices:e,vertices:t}}applyTransform(A){return this.curves.forEach(e=>e.applyTransform(A)),this}getMinMax(A=G.MAX,e=G.MIN){return this.curves.forEach(t=>t.getMinMax(A,e)),{min:A,max:e}}getBoundingBox(){const{min:A,max:e}=this.getMinMax();return new ue(A.x,A.y,e.x-A.x,e.y-A.y)}toCommands(){return this.curves.flatMap(A=>A.toCommands())}drawTo(A){var t;const e=(t=this.curves[0])==null?void 0:t.getPoint(0);return e&&A.moveTo(e.x,e.y),this.curves.forEach(i=>i.drawTo(A)),this}copy(A){return super.copy(A),this.curves=A.curves.map(e=>e.clone()),this}}class Vs extends HA{constructor(A=new G,e=new G,t=new G,i=new G){super(),this.p1=A,this.cp1=e,this.cp2=t,this.p2=i}static from(A,e,t,i,s,n,o,a){return new Vs(new G(A,e),new G(t,i),new G(s,n),new G(o,a))}getPoint(A,e=new G){const{p1:t,cp1:i,cp2:s,p2:n}=this;return e.set(Ea(A,t.x,i.x,s.x,n.x),Ea(A,t.y,i.y,s.y,n.y))}getAdaptivePointArray(A=[]){return rc(this.p1.x,this.p1.y,this.cp1.x,this.cp1.y,this.cp2.x,this.cp2.y,this.p2.x,this.p2.y,.5,A)}getControlPointRefs(){return[this.p1,this.cp1,this.cp2,this.p2]}_solveQuadratic(A,e,t){const i=e*e-4*A*t;if(i<0)return[];const s=Math.sqrt(i),n=(-e+s)/(2*A),o=(-e-s)/(2*A);return[n,o].filter(a=>a>=0&&a<=1)}getMinMax(A=G.MAX,e=G.MIN){const{p1:t,cp1:i,cp2:s,p2:n}=this,o=this._solveQuadratic(3*(i.x-t.x),6*(s.x-i.x),3*(n.x-s.x)),a=this._solveQuadratic(3*(i.y-t.y),6*(s.y-i.y),3*(n.y-s.y)),l=[0,1,...o,...a];return((c,f)=>{for(const d of c)for(let I=0;I<=f;I++){const C=I/f-.5,B=Math.min(1,Math.max(0,d+C)),P=this.getPoint(B);A.x=Math.min(A.x,P.x),A.y=Math.min(A.y,P.y),e.x=Math.max(e.x,P.x),e.y=Math.max(e.y,P.y)}})(l,10),{min:A,max:e}}toCommands(){const{p1:A,cp1:e,cp2:t,p2:i}=this;return[{type:"M",x:A.x,y:A.y},{type:"C",x1:e.x,y1:e.y,x2:t.x,y2:t.y,x:i.x,y:i.y}]}drawTo(A){const{p1:e,cp1:t,cp2:i,p2:s}=this;return A.lineTo(e.x,e.y),A.bezierCurveTo(t.x,t.y,i.x,i.y,s.x,s.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.cp1.copy(A.cp1),this.cp2.copy(A.cp2),this.p2.copy(A.p2),this}}class Qc extends zs{constructor(A=0,e=0,t=1,i=1,s=0,n=0,o=Math.PI*2,a=!1){super(new G(A,e),new G(t,i),new G,s,n,o,a)}drawTo(A){return A.ellipse(this.cx,this.cy,this.rx,this.ry,this.rotate,this.startAngle,this.endAngle,!this.clockwise),this}}class yc extends xi{}class qs extends HA{constructor(A=new G,e=new G,t=new G){super(),this.p1=A,this.cp=e,this.p2=t}static from(A,e,t,i,s,n){return new qs(new G(A,e),new G(t,i),new G(s,n))}getPoint(A,e=new G){const{p1:t,cp:i,p2:s}=this;return e.set(Ca(A,t.x,i.x,s.x),Ca(A,t.y,i.y,s.y)),e}getControlPointRefs(){return[this.p1,this.cp,this.p2]}getAdaptivePointArray(A=[]){return ac(this.p1.x,this.p1.y,this.cp.x,this.cp.y,this.p2.x,this.p2.y,.5,A)}getMinMax(A=G.MAX,e=G.MIN){const{p1:t,cp:i,p2:s}=this,n=.5*(t.x+i.x),o=.5*(t.y+i.y),a=.5*(t.x+s.x),l=.5*(t.y+s.y);return A.x=Math.min(A.x,t.x,s.x,n,a),A.y=Math.min(A.y,t.y,s.y,o,l),e.x=Math.max(e.x,t.x,s.x,n,a),e.y=Math.max(e.y,t.y,s.y,o,l),{min:A,max:e}}toCommands(){const{p1:A,cp:e,p2:t}=this;return[{type:"M",x:A.x,y:A.y},{type:"Q",x1:e.x,y1:e.y,x:t.x,y:t.y}]}drawTo(A){const{p1:e,cp:t,p2:i}=this;return A.lineTo(e.x,e.y),A.quadraticCurveTo(t.x,t.y,i.x,i.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.cp.copy(A.cp),this.p2.copy(A.p2),this}}class mc extends yc{constructor(A=0,e=0,t=0,i=0){super(),this.x=A,this.y=e,this.width=t,this.height=i,this.update()}update(){const{x:A,y:e,width:t,height:i}=this,s=[new G(A,e),new G(A+t,e),new G(A+t,e+i),new G(A,e+i)];return this.curves=[new Vt(s[0],s[1]),new Vt(s[1],s[2]),new Vt(s[2],s[3]),new Vt(s[3],s[0])],this}drawTo(A){return A.rect(this.x,this.y,this.width,this.height),this}fillTriangulate(A={}){let{vertices:e=[],indices:t=[],verticesStride:i=2,verticesOffset:s=e.length/i,indicesOffset:n=t.length}=A;const{x:o,y:a,width:l,height:h}=this,c=[o,a,o+l,a,o+l,a+h,o,a+h];let f=0;s*=i,e[s+f]=c[0],e[s+f+1]=c[1],f+=i,e[s+f]=c[2],e[s+f+1]=c[3],f+=i,e[s+f]=c[6],e[s+f+1]=c[7],f+=i,e[s+f]=c[4],e[s+f+1]=c[5],f+=i;const d=s/i;return t[n++]=d,t[n++]=d+1,t[n++]=d+2,t[n++]=d+1,t[n++]=d+3,t[n++]=d+2,{vertices:e,indices:t}}copy(A){return super.copy(A),this.x=A.x,this.y=A.y,this.width=A.width,this.height=A.height,this.update(),this}}class wc extends zs{constructor(A=0,e=0,t=1,i=1,s=1){super(),this.x=A,this.y=e,this.width=t,this.height=i,this.radius=s,this.update()}update(){const{x:A,y:e,width:t,height:i,radius:s}=this,n=t/2,o=i/2,a=A+n,l=e+o,h=Math.max(0,Math.min(s,Math.min(n,o))),c=h;return this._center=new G(a,l),this._radius=new G(h,c),this._diff=new G(n-h,o-c),this}drawTo(A){const{x:e,y:t,width:i,height:s,radius:n}=this;return A.roundRect(e,t,i,s,n),this}copy(A){return super.copy(A),this.x=A.x,this.y=A.y,this.width=A.width,this.height=A.height,this.radius=A.radius,this.update(),this}}class vc extends HA{constructor(A=[]){super(),this.points=A}getPoint(A,e=new G){const{points:t}=this,i=(t.length-1)*A,s=Math.floor(i),n=i-s,o=t[s===0?s:s-1],a=t[s],l=t[s>t.length-2?t.length-1:s+1],h=t[s>t.length-3?t.length-1:s+2];return e.set(Ba(n,o.x,a.x,l.x,h.x),Ba(n,o.y,a.y,l.y,h.y)),e}getControlPointRefs(){return this.points}copy(A){super.copy(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++)this.points.push(A.points[e].clone());return this}}class dr extends xi{constructor(e){super();u(this,"startPoint");u(this,"currentPoint");u(this,"autoClose",!1);e&&this.addPoints(e)}addPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,i=e.length;t<i;t++){const{x:s,y:n}=e[t];this.lineTo(s,n)}return this}addCommands(e){return da(e,this),this}addData(e){return this.addCommands(Ia(e)),this}_closePointArray(e){return this.autoClose&&e.length>=4&&e[0]!==e[e.length-2]&&e[1]!==e[e.length-1]&&e.push(e[0],e[1]),e}getUnevenPointArray(e=40,t=[]){return this._closePointArray(super.getUnevenPointArray(e,t))}getSpacedPointArray(e=40,t=[]){return this._closePointArray(super.getSpacedPointArray(e,t))}getAdaptivePointArray(e=[]){return this._closePointArray(super.getAdaptivePointArray(e))}_setCurrentPoint(e){return this.currentPoint=new G(e.x,e.y),this.startPoint||(this.startPoint=this.currentPoint.clone()),this}_connetLineTo(e){if(this.curves.length>0){const t=e.getPoint(0);(!this.currentPoint||!t.equals(this.currentPoint))&&this.lineTo(t.x,t.y)}return this}closePath(){const e=this.startPoint;if(e){const t=this.currentPoint;t&&!e.equals(t)&&(this.curves.push(new Vt(t.clone(),e.clone())),t.copy(e)),this.startPoint=void 0}return this}moveTo(e,t){return this.currentPoint=new G(e,t),this.startPoint=this.currentPoint.clone(),this}lineTo(e,t){const i=this.currentPoint;return i!=null&&i.equals({x:e,y:t})||this.curves.push(Vt.from((i==null?void 0:i.x)??0,(i==null?void 0:i.y)??0,e,t)),this._setCurrentPoint({x:e,y:t}),this}bezierCurveTo(e,t,i,s,n,o){const a=this.currentPoint;return a!=null&&a.equals({x:n,y:o})||this.curves.push(Vs.from((a==null?void 0:a.x)??0,(a==null?void 0:a.y)??0,e,t,i,s,n,o)),this._setCurrentPoint({x:n,y:o}),this}quadraticCurveTo(e,t,i,s){const n=this.currentPoint;return n!=null&&n.equals({x:i,y:s})||this.curves.push(qs.from((n==null?void 0:n.x)??0,(n==null?void 0:n.y)??0,e,t,i,s)),this._setCurrentPoint({x:i,y:s}),this}arc(e,t,i,s,n,o){const a=new Cc(e,t,i,s,n,!o);return this._connetLineTo(a),this.curves.push(a),this._setCurrentPoint(a.getPoint(1)),this}relativeArc(e,t,i,s,n,o){var a,l;return e+=((a=this.currentPoint)==null?void 0:a.x)??0,t+=((l=this.currentPoint)==null?void 0:l.y)??0,this.arc(e,t,i,s,n,o),this}arcTo(e,t,i,s,n){return console.warn("Method arcTo not supported yet"),this}ellipse(e,t,i,s,n,o,a,l=!0){const h=new Qc(e,t,i,s,n,o,a,!l);return this._connetLineTo(h),this.curves.push(h),this._setCurrentPoint(h.getPoint(1)),this}relativeEllipse(e,t,i,s,n,o,a,l){var h,c;return e+=((h=this.currentPoint)==null?void 0:h.x)??0,t+=((c=this.currentPoint)==null?void 0:c.y)??0,this.ellipse(e,t,i,s,n,o,a,l),this}rect(e,t,i,s){const n=new mc(e,t,i,s);return this._connetLineTo(n),this.curves.push(n),this._setCurrentPoint({x:e,y:t}),this}roundRect(e,t,i,s,n){const o=new wc(e,t,i,s,n);return this._connetLineTo(o),this.curves.push(o),this._setCurrentPoint({x:e,y:t}),this}splineThru(e){const t=this.currentPoint??new G;return this.curves.push(new vc([t].concat(e))),this._setCurrentPoint(e[e.length-1]),this}drawTo(e){var i;const t=(i=this.curves[0])==null?void 0:i.getPoint(0);return t&&e.moveTo(t.x,t.y),this.curves.forEach(s=>s.drawTo(e)),this.autoClose&&e.closePath(),this}copy(e){var t;return super.copy(e),this.autoClose=e.autoClose,this.currentPoint=(t=e.currentPoint)==null?void 0:t.clone(),this}}function _c(r){return r.replace(/[^a-z0-9]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase()}function Dc(r,A,e,t){const i=A.clone().sub(r),s=t.clone().sub(e),n=e.clone().sub(r),o=i.cross(s);if(o===0)return new G((r.x+e.x)/2,(r.y+e.y)/2);const a=n.cross(s)/o;return Math.abs(a)>1?new G((r.x+e.x)/2,(r.y+e.y)/2):new G(r.x+a*i.x,r.y+a*i.y)}class ke extends xi{constructor(e,t={}){super();u(this,"currentCurve",new dr);u(this,"style");this.curves.push(this.currentCurve),this.style=t,e&&(e instanceof ke?this.addPath(e):Array.isArray(e)?this.addCommands(e):this.addData(e))}get startPoint(){return this.currentCurve.startPoint}get currentPoint(){return this.currentCurve.currentPoint}get strokeWidth(){return this.style.strokeWidth??((this.style.stroke??"none")==="none"?0:1)}addPath(e){const t=this.curves.findIndex(i=>i===this.currentCurve);return t>-1&&this.curves.splice(t,1),e instanceof ke?this.curves.push(...e.curves.filter(i=>i.curves.length).map(i=>i.clone())):e.curves.length&&this.curves.push(e),this.curves.push(this.currentCurve),this}closePath(){const e=this.startPoint;return e&&(this.currentCurve.closePath(),this.currentCurve.curves.length&&(this.currentCurve=new dr().moveTo(e.x,e.y),this.curves.push(this.currentCurve))),this}moveTo(e,t){var i;return(i=this.currentCurve.currentPoint)!=null&&i.equals({x:e,y:t})||(this.currentCurve.curves.length&&(this.currentCurve=new dr,this.curves.push(this.currentCurve)),this.currentCurve.moveTo(e,t)),this}lineTo(e,t){return this.currentCurve.lineTo(e,t),this}bezierCurveTo(e,t,i,s,n,o){return this.currentCurve.bezierCurveTo(e,t,i,s,n,o),this}quadraticCurveTo(e,t,i,s){return this.currentCurve.quadraticCurveTo(e,t,i,s),this}arc(e,t,i,s,n,o){return this.currentCurve.arc(e,t,i,s,n,o),this}arcTo(e,t,i,s,n){return this.currentCurve.arcTo(e,t,i,s,n),this}ellipse(e,t,i,s,n,o,a,l){return this.currentCurve.ellipse(e,t,i,s,n,o,a,l),this}rect(e,t,i,s){return this.currentCurve.rect(e,t,i,s),this}roundRect(e,t,i,s,n){return this.currentCurve.roundRect(e,t,i,s,n),this}reset(){return this.currentCurve=new dr,this.curves=[this.currentCurve],this.style={},this}addCommands(e){return da(e,this),this}addData(e){return this.addCommands(Ia(e)),this}splineThru(e){return this.currentCurve.splineThru(e),this}scale(e,t=e,i={x:0,y:0}){return this.getControlPointRefs().forEach(s=>{s.scale(e,t,i)}),this}skew(e,t=0,i={x:0,y:0}){return this.getControlPointRefs().forEach(s=>{s.skew(e,t,i)}),this}rotate(e,t={x:0,y:0}){return this.getControlPointRefs().forEach(i=>{i.rotate(e,t)}),this}bold(e){if(e===0)return this;const t=this.getFlatCurves(),i=[],s=[],n=[];t.forEach((a,l)=>{const h=a.getControlPointRefs(),c=a.isClockwise();n[l]=h,s[l]=c;const f=h[0],d=h[h.length-1]??f;i.push({start:c?d:f,end:c?f:d,index:l})});const o=[];return i.forEach((a,l)=>{o[l]=[],i.forEach((h,c)=>{var f;h.start&&a.end&&c!==l&&((f=h.start)!=null&&f.equals(a.end))&&o[l].push(h.index)})}),t.forEach((a,l)=>{const h=s[l];n[l].forEach(c=>{c.add(a.getNormal(a.getTForPoint(c)).scale(h?e:-e))})}),o.forEach((a,l)=>{const h=n[l];a.forEach(c=>{const f=n[c],d=Dc(h[h.length-1],h[h.length-2]??h[h.length-1],f[0],f[1]??f[0]);d&&(h[h.length-1].copy(d),f[0].copy(d))})}),this}getMinMax(e=G.MAX,t=G.MIN,i=!0){const s=this.strokeWidth;return this.curves.forEach(n=>{if(n.getMinMax(e,t),i&&s>1){const o=s/2,a=n.isClockwise(),l=[];for(let h=0;h<=1;h+=1/n.arcLengthDivision){const c=n.getPoint(h),f=n.getNormal(h),d=f.clone().scale(a?o:-o),I=f.clone().scale(a?-o:o);l.push(c.clone().add(d),c.clone().add(I),c.clone().add({x:o,y:0}),c.clone().add({x:-o,y:0}),c.clone().add({x:0,y:o}),c.clone().add({x:0,y:-o}),c.clone().add({x:o,y:o}),c.clone().add({x:-o,y:-o}))}e.min(...l),t.max(...l)}}),{min:e,max:t}}strokeTriangulate(e){const t=(e==null?void 0:e.indices)??[],i=(e==null?void 0:e.vertices)??[];return this.curves.forEach(s=>{s.strokeTriangulate({...e,indices:t,vertices:i})}),{indices:t,vertices:i}}getBoundingBox(e=!0){const{min:t,max:i}=this.getMinMax(void 0,void 0,e);return new ue(t.x,t.y,i.x-t.x,i.y-t.y)}drawTo(e,t={}){t={...this.style,...t};const{fill:i="#000",stroke:s="none"}=t;return e.beginPath(),e.save(),Js(e,t),this.curves.forEach(n=>{n.drawTo(e)}),i!=="none"&&e.fill(),s!=="none"&&e.stroke(),e.restore(),this}drawControlPointsTo(e,t={}){t={...this.style,...t};const{fill:i="#000",stroke:s="none"}=t;return e.beginPath(),e.save(),Js(e,t),this.getControlPointRefs().forEach(n=>{zg(e,n.x,n.y,{radius:4})}),i!=="none"&&e.fill(),s!=="none"&&e.stroke(),e.restore(),this}toCommands(){return this.curves.flatMap(e=>e.toCommands())}toData(){return this.curves.filter(e=>e.curves.length).map(e=>e.toData()).join(" ")}toSVGPathString(){const e={...this.style,fill:this.style.fill??"#000",stroke:this.style.stroke??"none"},t={};for(const s in e)e[s]!==void 0&&(t[_c(s)]=e[s]);Object.assign(t,{"stroke-width":`${this.strokeWidth}px`});let i="";for(const s in t)t[s]!==void 0&&(i+=`${s}:${t[s]};`);return`<path d="${this.toData()}" style="${i}"></path>`}copy(e){return super.copy(e),this.currentCurve=e.currentCurve.clone(),this.style={...e.style},this}}class Ir{constructor(A=[],e){this.paths=A,this.viewBox=e}getBoundingBox(A=!0){if(!this.paths.length)return;const e=G.MAX,t=G.MIN;return this.paths.forEach(i=>i.getMinMax(e,t,A)),new ue(e.x,e.y,t.x-e.x,t.y-e.y)}toSVGString(){const{x:A,y:e,width:t,height:i}=this.getBoundingBox(),s=this.paths.map(n=>n.toSVGPathString()).join("");return`<svg viewBox="${A} ${e} ${t} ${i}" width="${t}px" height="${i}px" xmlns="http://www.w3.org/2000/svg">${s}</svg>`}toSVGUrl(){return`data:image/svg+xml;base64,${btoa(this.toSVGString())}`}toSVG(){return new DOMParser().parseFromString(this.toSVGString(),"image/svg+xml").documentElement}toCanvas(A={}){const{pixelRatio:e=2,...t}=A,{left:i,top:s,width:n,height:o}=this.getBoundingBox(),a=document.createElement("canvas");a.width=n*e,a.height=o*e,a.style.width=`${n}px`,a.style.height=`${o}px`;const l=a.getContext("2d");return l&&(l.scale(e,e),l.translate(-i,-s),this.paths.forEach(h=>{h.drawTo(l,t)})),a}}const ba="data:image/svg+xml;",xa=`${ba}base64,`,Sa=`${ba}charset=utf8,`;function Xs(r){if(typeof r=="string"){let A;r.startsWith(xa)?(r=r.substring(xa.length,r.length),A=atob(r)):r.startsWith(Sa)?(r=r.substring(Sa.length,r.length),A=decodeURIComponent(r)):A=r;const e=new DOMParser().parseFromString(A,"text/xml"),t=e.querySelector("parsererror");if(t)throw new Error(`${t.textContent??"parser error"}
276
- ${A}`);return e.documentElement}else return r}const bc="px",xc=90,Ma=["mm","cm","in","pt","pc","px"],Ra={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{px:1}};function Ee(r){let A="px";if(typeof r=="string"||r instanceof String)for(let t=0,i=Ma.length;t<i;t++){const s=Ma[t];if(r.endsWith(s)){A=s,r=r.substring(0,r.length-s.length);break}}let e;return e=Ra[A][bc],e<0&&(e=Ra[A].in*xc),e*Number.parseFloat(r)}const Sc=new ze,Br=new ze,Pa=new ze,Ua=new ze;function Mc(r,A,e){if(!(r.hasAttribute("transform")||r.nodeName==="use"&&(r.hasAttribute("x")||r.hasAttribute("y"))))return null;const t=Rc(r);return e.length>0&&t.premultiply(e[e.length-1]),A.copy(t),e.push(t),t}function Rc(r){const A=new ze,e=Sc;if(r.nodeName==="use"&&(r.hasAttribute("x")||r.hasAttribute("y"))&&A.translate(Ee(r.getAttribute("x")),Ee(r.getAttribute("y"))),r.hasAttribute("transform")){const t=r.getAttribute("transform").split(")");for(let i=t.length-1;i>=0;i--){const s=t[i].trim();if(s==="")continue;const n=s.indexOf("("),o=s.length;if(n>0&&n<o){const a=s.slice(0,n),l=xt(s.slice(n+1));switch(e.identity(),a){case"translate":if(l.length>=1){const h=l[0];let c=0;l.length>=2&&(c=l[1]),e.translate(h,c)}break;case"rotate":if(l.length>=1){let h=0,c=0,f=0;h=l[0]*Math.PI/180,l.length>=3&&(c=l[1],f=l[2]),Br.makeTranslation(-c,-f),Pa.makeRotation(h),Ua.multiplyMatrices(Pa,Br),Br.makeTranslation(c,f),e.multiplyMatrices(Br,Ua)}break;case"scale":l.length>=1&&e.scale(l[0],l[1]??l[0]);break;case"skewX":l.length===1&&e.set(1,Math.tan(l[0]*Math.PI/180),0,0,1,0,0,0,1);break;case"skewY":l.length===1&&e.set(1,0,0,Math.tan(l[0]*Math.PI/180),1,0,0,0,1);break;case"matrix":l.length===6&&e.set(l[0],l[2],l[4],l[1],l[3],l[5],0,0,1);break}}A.premultiply(e)}}return A}function Pc(r){return new ke().arc(Ee(r.getAttribute("cx")||0),Ee(r.getAttribute("cy")||0),Ee(r.getAttribute("r")||0),0,Math.PI*2)}function Uc(r,A){if(!(!r.sheet||!r.sheet.cssRules||!r.sheet.cssRules.length))for(let e=0;e<r.sheet.cssRules.length;e++){const t=r.sheet.cssRules[e];if(t.type!==1)continue;const i=t.selectorText.split(/,/g).filter(Boolean).map(n=>n.trim()),s={};for(let n=t.style.length,o=0;o<n;o++){const a=t.style.item(o);s[a]=t.style.getPropertyValue(a)}for(let n=0;n<i.length;n++)A[i[n]]=Object.assign(A[i[n]]||{},{...s})}}function kc(r){return new ke().ellipse(Ee(r.getAttribute("cx")||0),Ee(r.getAttribute("cy")||0),Ee(r.getAttribute("rx")||0),Ee(r.getAttribute("ry")||0),0,0,Math.PI*2)}function Nc(r){return new ke().moveTo(Ee(r.getAttribute("x1")||0),Ee(r.getAttribute("y1")||0)).lineTo(Ee(r.getAttribute("x2")||0),Ee(r.getAttribute("y2")||0))}function Fc(r){const A=new ke,e=r.getAttribute("d");return!e||e==="none"?null:(A.addData(e),A)}const Tc=/([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;function Lc(r){var t;const A=new ke;let e=0;return(t=r.getAttribute("points"))==null||t.replace(Tc,(i,s,n)=>{const o=Ee(s),a=Ee(n);return e===0?A.moveTo(o,a):A.lineTo(o,a),e++,i}),A.currentCurve.autoClose=!0,A}const Gc=/([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;function Oc(r){var t;const A=new ke;let e=0;return(t=r.getAttribute("points"))==null||t.replace(Gc,(i,s,n)=>{const o=Ee(s),a=Ee(n);return e===0?A.moveTo(o,a):A.lineTo(o,a),e++,i}),A.currentCurve.autoClose=!1,A}function Hc(r){const A=Ee(r.getAttribute("x")||0),e=Ee(r.getAttribute("y")||0),t=Ee(r.getAttribute("rx")||r.getAttribute("ry")||0),i=Ee(r.getAttribute("ry")||r.getAttribute("rx")||0),s=Ee(r.getAttribute("width")),n=Ee(r.getAttribute("height")),o=1-.551915024494,a=new ke;return a.moveTo(A+t,e),a.lineTo(A+s-t,e),(t!==0||i!==0)&&a.bezierCurveTo(A+s-t*o,e,A+s,e+i*o,A+s,e+i),a.lineTo(A+s,e+n-i),(t!==0||i!==0)&&a.bezierCurveTo(A+s,e+n-i*o,A+s-t*o,e+n,A+s-t,e+n),a.lineTo(A+t,e+n),(t!==0||i!==0)&&a.bezierCurveTo(A+t*o,e+n,A,e+n-i*o,A,e+n-i),a.lineTo(A,e+i),(t!==0||i!==0)&&a.bezierCurveTo(A,e+i*o,A+t*o,e,A+t,e),a}function St(r,A,e){A=Object.assign({},A);let t={};if(r.hasAttribute("class")){const l=r.getAttribute("class").split(/\s/).filter(Boolean).map(h=>h.trim());for(let h=0;h<l.length;h++)t=Object.assign(t,e[`.${l[h]}`])}r.hasAttribute("id")&&(t=Object.assign(t,e[`#${r.getAttribute("id")}`]));for(let l=r.style.length,h=0;h<l;h++){const c=r.style.item(h),f=r.style.getPropertyValue(c);A[c]=f,t[c]=f}function i(l,h,c=s){r.hasAttribute(l)&&(A[h]=c(r.getAttribute(l))),t[l]&&(A[h]=c(t[l]))}function s(l){return l.startsWith("url")&&console.warn("url access in attributes is not implemented."),l}function n(l){return Math.max(0,Math.min(1,Ee(l)))}function o(l){return Math.max(0,Ee(l))}function a(l){return l.split(" ").filter(h=>h!=="").map(h=>Ee(h))}return i("fill","fill"),i("fill-opacity","fillOpacity",n),i("fill-rule","fillRule"),i("opacity","opacity",n),i("stroke","stroke"),i("stroke-opacity","strokeOpacity",n),i("stroke-width","strokeWidth",o),i("stroke-linecap","strokeLinecap"),i("stroke-linejoin","strokeLinejoin"),i("stroke-miterlimit","strokeMiterlimit",o),i("stroke-dasharray","strokeDasharray",a),i("stroke-dashoffset","strokeDashoffset",Ee),i("visibility","visibility"),A}function js(r,A,e=[],t={}){var c;if(r.nodeType!==1)return e;let i=!1,s=null,n={...A};switch(r.nodeName){case"svg":n=St(r,n,t);break;case"style":Uc(r,t);break;case"g":n=St(r,n,t);break;case"path":n=St(r,n,t),r.hasAttribute("d")&&(s=Fc(r));break;case"rect":n=St(r,n,t),s=Hc(r);break;case"polygon":n=St(r,n,t),s=Lc(r);break;case"polyline":n=St(r,n,t),s=Oc(r);break;case"circle":n=St(r,n,t),s=Pc(r);break;case"ellipse":n=St(r,n,t),s=kc(r);break;case"line":n=St(r,n,t),s=Nc(r);break;case"defs":i=!0;break;case"use":{n=St(r,n,t);const d=(r.getAttributeNS("http://www.w3.org/1999/xlink","href")||r.getAttribute("href")||"").substring(1),I=(c=r.viewportElement)==null?void 0:c.getElementById(d);I?js(I,n,e,t):console.warn(`'use node' references non-existent node id: ${d}`);break}default:console.warn(r);break}if(n.display==="none")return e;const o=new ze,a=[],l=Mc(r,o,a);s&&(s.applyTransform(o),e.push(s),s.style={...n});const h=r.childNodes;for(let f=0,d=h.length;f<d;f++){const I=h[f];i&&I.nodeName!=="style"&&I.nodeName!=="defs"||js(I,n,e,t)}return l&&(a.pop(),a.length>0?o.copy(a[a.length-1]):o.identity()),e}function Zs(r){var e;const A=Xs(r);return new Ir(js(A,{}),(e=A.getAttribute("viewBox"))==null?void 0:e.trim().split(" ").map(t=>Number(t)))}class ka extends ke{constructor(){super(...arguments);u(this,"textureTransform");u(this,"fillStyle");u(this,"strokeStyle");u(this,"lineCap");u(this,"lineJoin");u(this,"lineWidth");u(this,"miterLimit");u(this,"_defaultStyle",ve.EMPTY);u(this,"_draws",[])}stroke(e){let t=this._defaultStyle;this.strokeStyle&&(this.strokeStyle instanceof ve?t=this.strokeStyle:t=new Us(this.strokeStyle)),this.curves.length&&(this._draws.push({...e,type:"stroke",path:new ke(this),texture:t,textureTransform:this.textureTransform,style:{alignment:.5,cap:this.lineCap??"butt",join:this.lineJoin??"miter",width:this.lineWidth??1,miterLimit:this.miterLimit??10}}),super.reset())}fillRect(e,t,i,s){this.rect(e,t,i,s).fill()}strokeRect(e,t,i,s){this.rect(e,t,i,s).stroke()}fill(e){let t=this._defaultStyle;this.fillStyle&&(this.fillStyle instanceof ve?t=this.fillStyle:t=new Us(this.fillStyle)),this._draws.push({...e,type:"fill",path:new ke(this),texture:t,textureTransform:this.textureTransform}),super.reset()}copy(e){return super.copy(e),this.strokeStyle=e.strokeStyle,this.fillStyle=e.fillStyle,this.textureTransform=e.textureTransform,this.lineCap=e.lineCap,this.lineJoin=e.lineJoin,this.lineWidth=e.lineWidth,this.miterLimit=e.miterLimit,this._draws=e._draws.slice(),this}reset(){return super.reset(),this.strokeStyle=void 0,this.fillStyle=void 0,this.textureTransform=void 0,this.lineCap=void 0,this.lineJoin=void 0,this.lineWidth=void 0,this.miterLimit=void 0,this._draws.length=0,this}buildUvs(e,t,i,s,n){if(s){const o=s.width,a=s.height;for(let l=t.length,h=e;h<l;h+=2){const c=t[h],f=t[h+1];let d,I;n?[d,I]=n==null?void 0:n.applyToPoint(c,f):[d,I]=[c/o,f/a],i.push(d,I)}}else for(let o=t.length,a=e;a<o;a+=2)i.push(0,0)}toBatchables(){const e=[];let t=[],i=[],s=[],n;const o=l=>{e.push({vertices:t,indices:i,uvs:s,texture:n,type:l.type,disableWrapMode:l.disableWrapMode}),t=[],i=[],s=[],n=void 0};for(let l=this._draws.length,h=0;h<l;h++){const c=this._draws[h],f=this._draws[h-1];t.length&&f&&(f==null?void 0:f.type)!==c.type&&o(f);const d=n;d||(n=c.texture),t.length&&d!==c.texture&&!(d!=null&&d.is(c.texture))&&(o(c),n=c.texture);const I=t.length;c.type==="fill"?(c.path.fillTriangulate({vertices:t,indices:i}),this.buildUvs(I,t,s,c.texture,c.textureTransform)):(c.path.strokeTriangulate({vertices:t,indices:i,lineStyle:c.style,flipAlignment:!1,closed:!0}),this.buildUvs(I,t,s,c.texture,c.textureTransform))}const a=this._draws[this._draws.length-1];return a&&t.length&&o(a),e}}var Jc=Object.defineProperty,Kc=Object.getOwnPropertyDescriptor,Si=(r,A,e,t)=>{for(var i=t>1?void 0:t?Kc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Jc(A,e,i),i};g.CanvasItem=class extends g.TimelineNode{constructor(e,t=[]){super();u(this,"_parentGlobalVisible");u(this,"_globalVisible");u(this,"_parentGlobalOpacity");u(this,"_globalOpacity");u(this,"_modulate",new Yt(4294967295));u(this,"context",new ka);u(this,"_resetContext",!0);u(this,"_redrawing",!1);u(this,"_relayouting",!1);u(this,"_repainting",!1);u(this,"_originalBatchables",[]);u(this,"_layoutedBatchables",[]);u(this,"_batchables",[]);this.setProperties(e).append(t)}get globalVisible(){return this._globalVisible??!0}get globalOpacity(){return this._globalOpacity??1}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"modulate":this._modulate.value=t,this.requestRepaint();break;case"blendMode":this.requestRepaint();break;case"opacity":this._updateGlobalOpacity();break;case"visible":case"insideTimeRange":this._updateGlobalVisible();break}}show(){this.visible=!0}hide(){this.visible=!1}isVisibleInTree(){return this.globalOpacity>0&&this.globalVisible}canRender(){return super.canRender()&&this.isVisibleInTree()}requestRedraw(){this._redrawing=!0,this.requestUpdate()}requestRelayout(){this._relayouting=!0,this.requestUpdate()}requestRepaint(){this._repainting=!0,this.requestUpdate()}_updateGlobalVisible(){var e;this._parentGlobalVisible=(e=this.getParent())==null?void 0:e.globalVisible,this._globalVisible=(this._parentGlobalVisible??!0)&&this.visible&&this.insideTimeRange}_updateGlobalOpacity(){var t;this._parentGlobalOpacity=(t=this.getParent())==null?void 0:t.opacity;const e=bt(0,this.opacity,1)*(this._parentGlobalOpacity??1);this._globalOpacity!==e&&(this._globalOpacity=e,this.requestRepaint())}_draw(){this.emit("draw")}_redraw(){var e;return(e=this._tree)==null||e.log(this.name,"redrawing"),this._draw(),this.context.toBatchables()}_relayout(e){var t;return(t=this._tree)==null||t.log(this.name,"relayouting"),e}_repaint(e){var t;return(t=this._tree)==null||t.log(this.name,"repainting"),e.map(i=>({...i,modulate:this._modulate.toArgb(this.globalOpacity,!0),blendMode:this.blendMode}))}_process(e){super._process(e);const t=this.getParent();this._parentGlobalVisible!==(t==null?void 0:t.globalVisible)&&this.requestUpdate(),this._parentGlobalOpacity!==(t==null?void 0:t.globalOpacity)&&this.requestUpdate()}_update(){const e=this.getParent();this._parentGlobalVisible!==(e==null?void 0:e.globalVisible)&&this._updateGlobalVisible(),this._parentGlobalOpacity!==(e==null?void 0:e.globalOpacity)&&this._updateGlobalOpacity();const t=this._redrawing;let i=this._relayouting,s=this._repainting,n;t&&(this._originalBatchables=this._redraw(),i=!0),i&&(this._layoutedBatchables=this._relayout(this._originalBatchables),s=!0),s&&(n=this._repaint(this._layoutedBatchables)),t&&this._resetContext&&this.context.reset(),n&&(this._batchables=n,this._redrawing=!1,this._relayouting=!1,this._repainting=!1)}_render(e){this._batchables.forEach(t=>{var i,s;(i=t.texture)==null||i.upload(e),e.batch2D.render({...t,texture:(s=t.texture)==null?void 0:s._glTexture(e)})}),super._render(e)}},Si([M()],g.CanvasItem.prototype,"modulate",2),Si([M()],g.CanvasItem.prototype,"blendMode",2),Si([Be({default:!0})],g.CanvasItem.prototype,"visible",2),Si([Be({default:1})],g.CanvasItem.prototype,"opacity",2),g.CanvasItem=Si([ee("CanvasItem")],g.CanvasItem);class Yc{constructor(){u(this,"currentCall");u(this,"calls",[])}createCall(A){return{renderable:A,parentCall:this.currentCall,fn:A.render.bind(A),calls:[]}}push(A){var t;const e=this.createCall(A);return(((t=this.currentCall)==null?void 0:t.calls)??this.calls).push(e),e}render(A){this.calls.forEach(function e(t){t.fn(A,()=>{t.calls.forEach(e)})}),this.calls=[]}}var Wc=Object.defineProperty,zc=Object.getOwnPropertyDescriptor,Mi=(r,A,e,t)=>{for(var i=t>1?void 0:t?zc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Wc(A,e,i),i};g.Timeline=class extends g.Node{static from(A,e=!1){const[t,i]=A?Array.isArray(A)?A:[0,A]:[];return new g.Timeline({startTime:t,endTime:i,loop:e})}constructor(A){super(),this.setProperties(A)}_updateProperty(A,e,t){switch(super._updateProperty(A,e,t),A){case"startTime":this.startTime=Math.min(e,this.endTime);break;case"endTime":this.endTime=e||Number.MAX_SAFE_INTEGER;break}}addTime(A){const e=this.startTime,t=this.endTime;let i=this.currentTime;return i=i+A,this.loop&&i>t&&(i=e+i%t),i=bt(e,i,t),this.currentTime=i,this.emit("updateCurrentTime",i,A),this}_process(A){super._process(A),this.addTime(A)}},Mi([M({default:0})],g.Timeline.prototype,"startTime",2),Mi([M({default:0})],g.Timeline.prototype,"currentTime",2),Mi([M({default:Number.MAX_SAFE_INTEGER})],g.Timeline.prototype,"endTime",2),Mi([M({default:!1})],g.Timeline.prototype,"loop",2),g.Timeline=Mi([ee("Timeline")],g.Timeline);var Vc=Object.defineProperty,$s=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Vc(A,e,i),i};class Ri extends or{constructor(e=new g.Timeline){super();u(this,"input",new Bo);u(this,"renderStack",new Yc);u(this,"root",new g.Viewport(!0).setTree(this));u(this,"timeline");u(this,"_backgroundColor",new Yt);u(this,"_currentViewport");this.timeline=e.setTree(this)}getCurrentViewport(){return this._currentViewport}setCurrentViewport(e){this._currentViewport=e}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"backgroundColor":this._backgroundColor.value=t;break}}log(...e){this.debug&&console.log("[modern-canvas]",...e)}_process(e=0){this.timeline.emit("process",e),this.emit("processing"),this.root.emit("process",e),this.emit("processed")}_render(e){this.emit("rendering"),e.program.uniforms.projectionMatrix=this.root.toProjectionArray(!0),this.renderStack.render(e),this._renderScreen(e),this.emit("rendered")}_renderScreen(e){e.state.reset(),e.framebuffer.bind(null),e.viewport.bind({x:0,y:0,width:this.root.width*e.pixelRatio,height:this.root.height*e.pixelRatio}),this.backgroundColor&&e.gl.clearColor(...this._backgroundColor.toArray()),e.clear(),this.backgroundColor&&e.gl.clearColor(0,0,0,0);const t=this.root.texture;t.activate(e,0),ce.draw(e),e.texture.unbind(t)}free(){super.free(),this.root.getChildren(!0).forEach(e=>this.root.removeChild(e)),this.input.removeEventListeners()}}$s([M({default:!1})],Ri.prototype,"processPaused"),$s([M()],Ri.prototype,"backgroundColor"),$s([Be({default:!1})],Ri.prototype,"debug");var qc=Object.getOwnPropertyDescriptor,Xc=(r,A,e,t)=>{for(var i=t>1?void 0:t?qc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.Transition=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},g.Transition=Xc([ee("Transition",{effectMode:"transition",processMode:"pausable",duration:2e3})],g.Transition);var Na=Object.defineProperty,jc=Object.getOwnPropertyDescriptor,Zc=(r,A,e)=>A in r?Na(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,en=(r,A,e,t)=>{for(var i=t>1?void 0:t?jc(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Na(A,e,i),i},Fa=(r,A,e)=>Zc(r,typeof A!="symbol"?A+"":A,e);const Ta=`varying vec2 vUv[9];
275
+ }`})),Gs([S({default:[]})],c.ColorReplaceEffect.prototype,"colors",2),Gs([S({default:.05})],c.ColorReplaceEffect.prototype,"epsilon",2),c.ColorReplaceEffect=Gs([te("ColorReplaceEffect")],c.ColorReplaceEffect);function Mg(s,A,e=2){const t=A&&A.length,i=t?A[0]*e:s.length;let r=aa(s,0,i,e,!0);const n=[];if(!r||r.next===r.prev)return n;let o,a,l;if(t&&(r=Ng(s,A,r,e)),s.length>80*e){o=1/0,a=1/0;let h=-1/0,g=-1/0;for(let f=e;f<i;f+=e){const I=s[f],d=s[f+1];I<o&&(o=I),d<a&&(a=d),I>h&&(h=I),d>g&&(g=d)}l=Math.max(h-o,g-a),l=l!==0?32767/l:0}return Di(r,n,e,o,a,l,0),n}function aa(s,A,e,t,i){let r;if(i===zg(s,A,e,t)>0)for(let n=A;n<e;n+=t)r=ca(n/t|0,s[n],s[n+1],r);else for(let n=e-t;n>=A;n-=t)r=ca(n/t|0,s[n],s[n+1],r);return r&&OA(r,r.next)&&(Si(r),r=r.next),r}function mA(s,A){if(!s)return s;A||(A=s);let e=s,t;do if(t=!1,!e.steiner&&(OA(e,e.next)||ye(e.prev,e,e.next)===0)){if(Si(e),e=A=e.prev,e===e.next)break;t=!0}else e=e.next;while(t||e!==A);return A}function Di(s,A,e,t,i,r,n){if(!s)return;!n&&r&&Og(s,t,i,r);let o=s;for(;s.prev!==s.next;){const a=s.prev,l=s.next;if(r?Pg(s,t,i,r):Rg(s)){A.push(a.i,s.i,l.i),Si(s),s=l.next,o=l.next;continue}if(s=l,s===o){n?n===1?(s=Ug(mA(s),A),Di(s,A,e,t,i,r,2)):n===2&&kg(s,A,e,t,i,r):Di(mA(s),A,e,t,i,r,1);break}}}function Rg(s){const A=s.prev,e=s,t=s.next;if(ye(A,e,t)>=0)return!1;const i=A.x,r=e.x,n=t.x,o=A.y,a=e.y,l=t.y,h=Math.min(i,r,n),g=Math.min(o,a,l),f=Math.max(i,r,n),I=Math.max(o,a,l);let d=t.next;for(;d!==A;){if(d.x>=h&&d.x<=f&&d.y>=g&&d.y<=I&&bi(i,o,r,a,n,l,d.x,d.y)&&ye(d.prev,d,d.next)>=0)return!1;d=d.next}return!0}function Pg(s,A,e,t){const i=s.prev,r=s,n=s.next;if(ye(i,r,n)>=0)return!1;const o=i.x,a=r.x,l=n.x,h=i.y,g=r.y,f=n.y,I=Math.min(o,a,l),d=Math.min(h,g,f),C=Math.max(o,a,l),B=Math.max(h,g,f),M=Os(I,d,A,e,t),R=Os(C,B,A,e,t);let _=s.prevZ,P=s.nextZ;for(;_&&_.z>=M&&P&&P.z<=R;){if(_.x>=I&&_.x<=C&&_.y>=d&&_.y<=B&&_!==i&&_!==n&&bi(o,h,a,g,l,f,_.x,_.y)&&ye(_.prev,_,_.next)>=0||(_=_.prevZ,P.x>=I&&P.x<=C&&P.y>=d&&P.y<=B&&P!==i&&P!==n&&bi(o,h,a,g,l,f,P.x,P.y)&&ye(P.prev,P,P.next)>=0))return!1;P=P.nextZ}for(;_&&_.z>=M;){if(_.x>=I&&_.x<=C&&_.y>=d&&_.y<=B&&_!==i&&_!==n&&bi(o,h,a,g,l,f,_.x,_.y)&&ye(_.prev,_,_.next)>=0)return!1;_=_.prevZ}for(;P&&P.z<=R;){if(P.x>=I&&P.x<=C&&P.y>=d&&P.y<=B&&P!==i&&P!==n&&bi(o,h,a,g,l,f,P.x,P.y)&&ye(P.prev,P,P.next)>=0)return!1;P=P.nextZ}return!0}function Ug(s,A){let e=s;do{const t=e.prev,i=e.next.next;!OA(t,i)&&ha(t,e,e.next,i)&&xi(t,i)&&xi(i,t)&&(A.push(t.i,e.i,i.i),Si(e),Si(e.next),e=s=i),e=e.next}while(e!==s);return mA(e)}function kg(s,A,e,t,i,r){let n=s;do{let o=n.next.next;for(;o!==n.prev;){if(n.i!==o.i&&Kg(n,o)){let a=ga(n,o);n=mA(n,n.next),a=mA(a,a.next),Di(n,A,e,t,i,r,0),Di(a,A,e,t,i,r,0);return}o=o.next}n=n.next}while(n!==s)}function Ng(s,A,e,t){const i=[];for(let r=0,n=A.length;r<n;r++){const o=A[r]*t,a=r<n-1?A[r+1]*t:s.length,l=aa(s,o,a,t,!1);l===l.next&&(l.steiner=!0),i.push(Jg(l))}i.sort(Fg);for(let r=0;r<i.length;r++)e=Tg(i[r],e);return e}function Fg(s,A){let e=s.x-A.x;if(e===0&&(e=s.y-A.y,e===0)){const t=(s.next.y-s.y)/(s.next.x-s.x),i=(A.next.y-A.y)/(A.next.x-A.x);e=t-i}return e}function Tg(s,A){const e=Lg(s,A);if(!e)return A;const t=ga(e,s);return mA(t,t.next),mA(e,e.next)}function Lg(s,A){let e=A;const t=s.x,i=s.y;let r=-1/0,n;if(OA(s,e))return e;do{if(OA(s,e.next))return e.next;if(i<=e.y&&i>=e.next.y&&e.next.y!==e.y){const g=e.x+(i-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(g<=t&&g>r&&(r=g,n=e.x<e.next.x?e:e.next,g===t))return n}e=e.next}while(e!==A);if(!n)return null;const o=n,a=n.x,l=n.y;let h=1/0;e=n;do{if(t>=e.x&&e.x>=a&&t!==e.x&&la(i<l?t:r,i,a,l,i<l?r:t,i,e.x,e.y)){const g=Math.abs(i-e.y)/(t-e.x);xi(e,s)&&(g<h||g===h&&(e.x>n.x||e.x===n.x&&Gg(n,e)))&&(n=e,h=g)}e=e.next}while(e!==o);return n}function Gg(s,A){return ye(s.prev,s,A.prev)<0&&ye(A.next,s,s.next)<0}function Og(s,A,e,t){let i=s;do i.z===0&&(i.z=Os(i.x,i.y,A,e,t)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==s);i.prevZ.nextZ=null,i.prevZ=null,Hg(i)}function Hg(s){let A,e=1;do{let t=s,i;s=null;let r=null;for(A=0;t;){A++;let n=t,o=0;for(let l=0;l<e&&(o++,n=n.nextZ,!!n);l++);let a=e;for(;o>0||a>0&&n;)o!==0&&(a===0||!n||t.z<=n.z)?(i=t,t=t.nextZ,o--):(i=n,n=n.nextZ,a--),r?r.nextZ=i:s=i,i.prevZ=r,r=i;t=n}r.nextZ=null,e*=2}while(A>1);return s}function Os(s,A,e,t,i){return s=(s-e)*i|0,A=(A-t)*i|0,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,s|A<<1}function Jg(s){let A=s,e=s;do(A.x<e.x||A.x===e.x&&A.y<e.y)&&(e=A),A=A.next;while(A!==s);return e}function la(s,A,e,t,i,r,n,o){return(i-n)*(A-o)>=(s-n)*(r-o)&&(s-n)*(t-o)>=(e-n)*(A-o)&&(e-n)*(r-o)>=(i-n)*(t-o)}function bi(s,A,e,t,i,r,n,o){return!(s===n&&A===o)&&la(s,A,e,t,i,r,n,o)}function Kg(s,A){return s.next.i!==A.i&&s.prev.i!==A.i&&!Yg(s,A)&&(xi(s,A)&&xi(A,s)&&Wg(s,A)&&(ye(s.prev,s,A.prev)||ye(s,A.prev,A))||OA(s,A)&&ye(s.prev,s,s.next)>0&&ye(A.prev,A,A.next)>0)}function ye(s,A,e){return(A.y-s.y)*(e.x-A.x)-(A.x-s.x)*(e.y-A.y)}function OA(s,A){return s.x===A.x&&s.y===A.y}function ha(s,A,e,t){const i=ur(ye(s,A,e)),r=ur(ye(s,A,t)),n=ur(ye(e,t,s)),o=ur(ye(e,t,A));return!!(i!==r&&n!==o||i===0&&cr(s,e,A)||r===0&&cr(s,t,A)||n===0&&cr(e,s,t)||o===0&&cr(e,A,t))}function cr(s,A,e){return A.x<=Math.max(s.x,e.x)&&A.x>=Math.min(s.x,e.x)&&A.y<=Math.max(s.y,e.y)&&A.y>=Math.min(s.y,e.y)}function ur(s){return s>0?1:s<0?-1:0}function Yg(s,A){let e=s;do{if(e.i!==s.i&&e.next.i!==s.i&&e.i!==A.i&&e.next.i!==A.i&&ha(e,e.next,s,A))return!0;e=e.next}while(e!==s);return!1}function xi(s,A){return ye(s.prev,s,s.next)<0?ye(s,A,s.next)>=0&&ye(s,s.prev,A)>=0:ye(s,A,s.prev)<0||ye(s,s.next,A)<0}function Wg(s,A){let e=s,t=!1;const i=(s.x+A.x)/2,r=(s.y+A.y)/2;do e.y>r!=e.next.y>r&&e.next.y!==e.y&&i<(e.next.x-e.x)*(r-e.y)/(e.next.y-e.y)+e.x&&(t=!t),e=e.next;while(e!==s);return t}function ga(s,A){const e=Hs(s.i,s.x,s.y),t=Hs(A.i,A.x,A.y),i=s.next,r=A.prev;return s.next=A,A.prev=s,e.next=i,i.prev=e,t.next=e,e.prev=t,r.next=t,t.prev=r,t}function ca(s,A,e,t){const i=Hs(s,A,e);return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function Si(s){s.next.prev=s.prev,s.prev.next=s.next,s.prevZ&&(s.prevZ.nextZ=s.nextZ),s.nextZ&&(s.nextZ.prevZ=s.prevZ)}function Hs(s,A,e){return{i:s,x:A,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function zg(s,A,e,t){let i=0;for(let r=A,n=e-t;r<e;r+=t)i+=(s[n]-s[r])*(s[r+1]+s[n+1]),n=r;return i}function Vg(s,A,e,t={}){const{radius:i=1}=t;s.moveTo(A,e),s.arc(A,e,i,0,Math.PI*2)}const qg={arcs:"bevel",bevel:"bevel",miter:"miter","miter-clip":"miter",round:"round"};function Js(s,A){const{fill:e="#000",stroke:t="none",strokeWidth:i=t==="none"?0:1,strokeLinecap:r="round",strokeLinejoin:n="miter",strokeMiterlimit:o=0,strokeDasharray:a=[],strokeDashoffset:l=0,shadowOffsetX:h=0,shadowOffsetY:g=0,shadowBlur:f=0,shadowColor:I="rgba(0, 0, 0, 0)"}=A;s.fillStyle=e,s.strokeStyle=t,s.lineWidth=i,s.lineCap=r,s.lineJoin=qg[n],s.miterLimit=o,s.setLineDash(a),s.lineDashOffset=l,s.shadowOffsetX=h,s.shadowOffsetY=g,s.shadowBlur=f,s.shadowColor=I}class F{constructor(A=0,e=0){this.x=A,this.y=e}static get MAX(){return new F(1/0,1/0)}static get MIN(){return new F(-1/0,-1/0)}get array(){return[this.x,this.y]}set(A,e){return this.x=A,this.y=e,this}add(A){return this.x+=A.x,this.y+=A.y,this}sub(A){return this.x-=A.x,this.y-=A.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}divide(A){return this.x/=A.x,this.y/=A.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}rotate(A,e={x:0,y:0}){const t=-A/180*Math.PI,i=this.x-e.x,r=-(this.y-e.y),n=Math.sin(t),o=Math.cos(t);return this.set(e.x+(i*o-r*n),e.y-(i*n+r*o)),this}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const e=this.x-A.x,t=this.y-A.y;return e*e+t*t}lengthSquared(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.lengthSquared())}scale(A,e=A,t={x:0,y:0}){const i=A<0?t.x-this.x+t.x:this.x,r=e<0?t.y-this.y+t.y:this.y;return this.x=i*Math.abs(A),this.y=r*Math.abs(e),this}skew(A,e=0,t={x:0,y:0}){const i=this.x-t.x,r=this.y-t.y;return this.x=t.x+(i+Math.tan(A)*r),this.y=t.y+(r+Math.tan(e)*i),this}min(...A){return this.x=Math.min(this.x,...A.map(e=>e.x)),this.y=Math.min(this.y,...A.map(e=>e.y)),this}max(...A){return this.x=Math.max(this.x,...A.map(e=>e.x)),this.y=Math.max(this.y,...A.map(e=>e.y)),this}normalize(){return this.scale(1/(this.length()||1))}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this}multiplyVectors(A,e){return this.x=A.x*e.x,this.y=A.y*e.y,this}divideVectors(A,e){return this.x=A.x/e.x,this.y=A.y/e.y,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this}equals(A){return this.x===A.x&&this.y===A.y}applyMatrix3(A){const e=this.x,t=this.y,i=A.elements;return this.x=i[0]*e+i[3]*t+i[6],this.y=i[1]*e+i[4]*t+i[7],this}copy(A){return this.x=A.x,this.y=A.y,this}clone(){return new F(this.x,this.y)}}class ue{constructor(A=0,e=0,t=0,i=0){this.left=A,this.top=e,this.width=t,this.height=i}get x(){return this.left}set x(A){this.left=A}get y(){return this.top}set y(A){this.top=A}get right(){return this.left+this.width}get bottom(){return this.top+this.height}get center(){return new F((this.left+this.right)/2,(this.top+this.bottom)/2)}get array(){return[this.left,this.top,this.width,this.height]}static from(...A){if(A.length===0)return new ue;if(A.length===1)return A[0].clone();const e=A[0],t=A.slice(1).reduce((i,r)=>(i.left=Math.min(i.left,r.left),i.top=Math.min(i.top,r.top),i.right=Math.max(i.right,r.right),i.bottom=Math.max(i.bottom,r.bottom),i),{left:(e==null?void 0:e.left)??0,top:(e==null?void 0:e.top)??0,right:(e==null?void 0:e.right)??0,bottom:(e==null?void 0:e.bottom)??0});return new ue(t.left,t.top,t.right-t.left,t.bottom-t.top)}translate(A,e){return this.left+=A,this.top+=e,this}copy(A){return this.left=A.left,this.top=A.top,this.width=A.width,this.height=A.height,this}clone(){return new ue(this.left,this.top,this.width,this.height)}}class Je{constructor(A=1,e=0,t=0,i=0,r=1,n=0,o=0,a=0,l=1){u(this,"elements",[]);this.set(A,e,t,i,r,n,o,a,l)}set(A,e,t,i,r,n,o,a,l){const h=this.elements;return h[0]=A,h[1]=i,h[2]=o,h[3]=e,h[4]=r,h[5]=a,h[6]=t,h[7]=n,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const e=this.elements,t=A.elements;return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,e){const t=A.elements,i=e.elements,r=this.elements,n=t[0],o=t[3],a=t[6],l=t[1],h=t[4],g=t[7],f=t[2],I=t[5],d=t[8],C=i[0],B=i[3],M=i[6],R=i[1],_=i[4],P=i[7],v=i[2],w=i[5],D=i[8];return r[0]=n*C+o*R+a*v,r[3]=n*B+o*_+a*w,r[6]=n*M+o*P+a*D,r[1]=l*C+h*R+g*v,r[4]=l*B+h*_+g*w,r[7]=l*M+h*P+g*D,r[2]=f*C+I*R+d*v,r[5]=f*B+I*_+d*w,r[8]=f*M+I*P+d*D,this}invert(){const A=this.elements,e=A[0],t=A[1],i=A[2],r=A[3],n=A[4],o=A[5],a=A[6],l=A[7],h=A[8],g=h*n-o*l,f=o*a-h*r,I=l*r-n*a,d=e*g+t*f+i*I;if(d===0)return this.set(0,0,0,0,0,0,0,0,0);const C=1/d;return A[0]=g*C,A[1]=(i*l-h*t)*C,A[2]=(o*t-i*n)*C,A[3]=f*C,A[4]=(h*e-i*a)*C,A[5]=(i*r-o*e)*C,A[6]=I*C,A[7]=(t*a-l*e)*C,A[8]=(n*e-t*r)*C,this}transpose(){let A;const e=this.elements;return A=e[1],e[1]=e[3],e[3]=A,A=e[2],e[2]=e[6],e[6]=A,A=e[5],e[5]=e[7],e[7]=A,this}scale(A,e){return this.premultiply(Ks.makeScale(A,e)),this}rotate(A){return this.premultiply(Ks.makeRotation(-A)),this}translate(A,e){return this.premultiply(Ks.makeTranslation(A,e)),this}makeTranslation(A,e){return this.set(1,0,A,0,1,e,0,0,1),this}makeRotation(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,-t,0,t,e,0,0,0,1),this}makeScale(A,e){return this.set(A,0,0,0,e,0,0,0,1),this}fromArray(A,e=0){for(let t=0;t<9;t++)this.elements[t]=A[t+e];return this}clone(){return new this.constructor().fromArray(this.elements)}}const Ks=new Je;function ua(s,A,e,t){const i=s*e+A*t,r=Math.sqrt(s*s+A*A)*Math.sqrt(e*e+t*t);let n=Math.acos(Math.max(-1,Math.min(1,i/r)));return s*t-A*e<0&&(n=-n),n}function Xg(s,A,e,t,i,r,n,o){if(A===0||e===0){s.lineTo(o.x,o.y);return}t=t*Math.PI/180,A=Math.abs(A),e=Math.abs(e);const a=(n.x-o.x)/2,l=(n.y-o.y)/2,h=Math.cos(t)*a+Math.sin(t)*l,g=-Math.sin(t)*a+Math.cos(t)*l;let f=A*A,I=e*e;const d=h*h,C=g*g,B=d/f+C/I;if(B>1){const $=Math.sqrt(B);A=$*A,e=$*e,f=A*A,I=e*e}const M=f*C+I*d,R=(f*I-M)/M;let _=Math.sqrt(Math.max(0,R));i===r&&(_=-_);const P=_*A*g/e,v=-_*e*h/A,w=Math.cos(t)*P-Math.sin(t)*v+(n.x+o.x)/2,D=Math.sin(t)*P+Math.cos(t)*v+(n.y+o.y)/2,x=ua(1,0,(h-P)/A,(g-v)/e),L=ua((h-P)/A,(g-v)/e,(-h-P)/A,(-g-v)/e)%(Math.PI*2);s.ellipse(w,D,A,e,t,x,x+L,r===0)}const _e={WHITESPACE:/[ \t\r\n]/,DIGIT:/\d/,SIGN:/[-+]/,POINT:/\./,COMMA:/,/,EXP:/e/i,FLAGS:/[01]/};function xt(s,A,e=0){let o=0,a=!0,l="",h="";const g=[];function f(B,M,R){const _=new SyntaxError(`Unexpected character "${B}" at index ${M}.`);throw _.partial=R,_}function I(){l!==""&&(h===""?g.push(Number(l)):g.push(Number(l)*10**Number(h))),l="",h=""}let d;const C=s.length;for(let B=0;B<C;B++){if(d=s[B],Array.isArray(A)&&A.includes(g.length%e)&&_e.FLAGS.test(d)){o=1,l=d,I();continue}if(o===0){if(_e.WHITESPACE.test(d))continue;if(_e.DIGIT.test(d)||_e.SIGN.test(d)){o=1,l=d;continue}if(_e.POINT.test(d)){o=2,l=d;continue}_e.COMMA.test(d)&&(a&&f(d,B,g),a=!0)}if(o===1){if(_e.DIGIT.test(d)){l+=d;continue}if(_e.POINT.test(d)){l+=d,o=2;continue}if(_e.EXP.test(d)){o=3;continue}_e.SIGN.test(d)&&l.length===1&&_e.SIGN.test(l[0])&&f(d,B,g)}if(o===2){if(_e.DIGIT.test(d)){l+=d;continue}if(_e.EXP.test(d)){o=3;continue}_e.POINT.test(d)&&l[l.length-1]==="."&&f(d,B,g)}if(o===3){if(_e.DIGIT.test(d)){h+=d;continue}if(_e.SIGN.test(d)){if(h===""){h+=d;continue}h.length===1&&_e.SIGN.test(h)&&f(d,B,g)}}_e.WHITESPACE.test(d)?(I(),o=0,a=!1):_e.COMMA.test(d)?(I(),o=0,a=!0):_e.SIGN.test(d)?(I(),o=1,l=d):_e.POINT.test(d)?(I(),o=2,l=d):f(d,B,g)}return I(),g}function HA(s,A){return s-(A-s)}function fa(s,A){const e=new F,t=new F;for(let i=0,r=s.length;i<r;i++){const n=s[i];if(n.type==="m"||n.type==="M")n.type==="m"?e.add(n):e.copy(n),A.moveTo(e.x,e.y),t.copy(e);else if(n.type==="h"||n.type==="H")n.type==="h"?e.x+=n.x:e.x=n.x,A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="v"||n.type==="V")n.type==="v"?e.y+=n.y:e.y=n.y,A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="l"||n.type==="L")n.type==="l"?e.add(n):e.copy(n),A.lineTo(e.x,e.y),t.copy(e);else if(n.type==="c"||n.type==="C")n.type==="c"?(A.bezierCurveTo(e.x+n.x1,e.y+n.y1,e.x+n.x2,e.y+n.y2,e.x+n.x,e.y+n.y),t.x=e.x+n.x2,t.y=e.y+n.y2,e.add(n)):(A.bezierCurveTo(n.x1,n.y1,n.x2,n.y2,n.x,n.y),t.x=n.x2,t.y=n.y2,e.copy(n));else if(n.type==="s"||n.type==="S")n.type==="s"?(A.bezierCurveTo(HA(e.x,t.x),HA(e.y,t.y),e.x+n.x2,e.y+n.y2,e.x+n.x,e.y+n.y),t.x=e.x+n.x2,t.y=e.y+n.y2,e.add(n)):(A.bezierCurveTo(HA(e.x,t.x),HA(e.y,t.y),n.x2,n.y2,n.x,n.y),t.x=n.x2,t.y=n.y2,e.copy(n));else if(n.type==="q"||n.type==="Q")n.type==="q"?(A.quadraticCurveTo(e.x+n.x1,e.y+n.y1,e.x+n.x,e.y+n.y),t.x=e.x+n.x1,t.y=e.y+n.y1,e.add(n)):(A.quadraticCurveTo(n.x1,n.y1,n.x,n.y),t.x=n.x1,t.y=n.y1,e.copy(n));else if(n.type==="t"||n.type==="T"){const o=HA(e.x,t.x),a=HA(e.y,t.y);t.x=o,t.y=a,n.type==="t"?(A.quadraticCurveTo(o,a,e.x+n.x,e.y+n.y),e.add(n)):(A.quadraticCurveTo(o,a,n.x,n.y),e.copy(n))}else if(n.type==="a"||n.type==="A"){const o=e.clone();if(n.type==="a"){if(n.x===0&&n.y===0)continue;e.add(n)}else{if(e.equals(n))continue;e.copy(n)}t.copy(e),Xg(A,n.rx,n.ry,n.angle,n.largeArcFlag,n.sweepFlag,o,e)}else n.type==="z"||n.type==="Z"?(A.startPoint&&e.copy(A.startPoint),A.closePath()):console.warn("Unsupported commands",n)}}function jg(s){let A,e;const t=[];for(let i=0,r=s.length;i<r;i++){const n=s[i];switch(n.type){case"m":case"M":if(n.x.toFixed(4)===(e==null?void 0:e.x.toFixed(4))&&n.y.toFixed(4)===(e==null?void 0:e.y.toFixed(4)))continue;t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y},A={x:n.x,y:n.y};break;case"h":case"H":t.push(`${n.type} ${n.x}`),e={x:n.x,y:(e==null?void 0:e.y)??0};break;case"v":case"V":t.push(`${n.type} ${n.y}`),e={x:(e==null?void 0:e.x)??0,y:n.y};break;case"l":case"L":t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"c":case"C":t.push(`${n.type} ${n.x1} ${n.y1} ${n.x2} ${n.y2} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"s":case"S":t.push(`${n.type} ${n.x2} ${n.y2} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"q":case"Q":t.push(`${n.type} ${n.x1} ${n.y1} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"t":case"T":t.push(`${n.type} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"a":case"A":t.push(`${n.type} ${n.rx} ${n.ry} ${n.angle} ${n.largeArcFlag} ${n.sweepFlag} ${n.x} ${n.y}`),e={x:n.x,y:n.y};break;case"z":case"Z":t.push(n.type),A&&(e={x:A.x,y:A.y});break}}return t.join(" ")}const Zg=/[a-df-z][^a-df-z]*/gi;function da(s){const A=[],e=s.match(Zg);if(!e)return A;for(let t=0,i=e.length;t<i;t++){const r=e[t],n=r.charAt(0),o=r.slice(1).trim();let a;switch(n){case"m":case"M":a=xt(o);for(let l=0,h=a.length;l<h;l+=2)l===0?A.push({type:n,x:a[l],y:a[l+1]}):A.push({type:n==="m"?"l":"L",x:a[l],y:a[l+1]});break;case"h":case"H":a=xt(o);for(let l=0,h=a.length;l<h;l++)A.push({type:n,x:a[l]});break;case"v":case"V":a=xt(o);for(let l=0,h=a.length;l<h;l++)A.push({type:n,y:a[l]});break;case"l":case"L":a=xt(o);for(let l=0,h=a.length;l<h;l+=2)A.push({type:n,x:a[l],y:a[l+1]});break;case"c":case"C":a=xt(o);for(let l=0,h=a.length;l<h;l+=6)A.push({type:n,x1:a[l],y1:a[l+1],x2:a[l+2],y2:a[l+3],x:a[l+4],y:a[l+5]});break;case"s":case"S":a=xt(o);for(let l=0,h=a.length;l<h;l+=4)A.push({type:n,x2:a[l],y2:a[l+1],x:a[l+2],y:a[l+3]});break;case"q":case"Q":a=xt(o);for(let l=0,h=a.length;l<h;l+=4)A.push({type:n,x1:a[l],y1:a[l+1],x:a[l+2],y:a[l+3]});break;case"t":case"T":a=xt(o);for(let l=0,h=a.length;l<h;l+=2)A.push({type:n,x:a[l],y:a[l+1]});break;case"a":case"A":a=xt(o,[3,4],7);for(let l=0,h=a.length;l<h;l+=7)A.push({type:n,rx:a[l],ry:a[l+1],angle:a[l+2],largeArcFlag:a[l+3],sweepFlag:a[l+4],x:a[l+5],y:a[l+6]});break;case"z":case"Z":A.push({type:n});break;default:console.warn(r)}}return A}function Ia(s,A,e,t,i){const r=(t-A)*.5,n=(i-e)*.5,o=s*s,a=s*o;return(2*e-2*t+r+n)*a+(-3*e+3*t-2*r-n)*o+r*s+e}function $g(s,A){const e=1-s;return e*e*e*A}function ec(s,A){const e=1-s;return 3*e*e*s*A}function tc(s,A){return 3*(1-s)*s*s*A}function Ac(s,A){return s*s*s*A}function Ba(s,A,e,t,i){return $g(s,A)+ec(s,e)+tc(s,t)+Ac(s,i)}function Ea(s,A={}){let{vertices:e=[],indices:t=[],holes:i=[],verticesStride:r=2,verticesOffset:n=e.length/r,indicesOffset:o=t.length}=A;const a=Mg(s,i,2);if(a){for(let h=0;h<a.length;h+=3)t[o++]=a[h]+n,t[o++]=a[h+1]+n,t[o++]=a[h+2]+n;let l=n*r;for(let h=0;h<s.length;h+=2)e[l]=s[h],e[l+1]=s[h+1],l+=r}return{vertices:e,indices:t}}const ic=8,fr=11920929e-14,rc=1;function sc(s,A,e,t,i,r,n,o,a=.5,l=[]){const g=Math.min(.99,Math.max(0,a));let f=(rc-g)/1;return f*=f,Ys(s,A,e,t,i,r,n,o,l,f,0),l.push(n,o),l}function Ys(s,A,e,t,i,r,n,o,a,l,h){if(h>ic)return;const g=(s+e)/2,f=(A+t)/2,I=(e+i)/2,d=(t+r)/2,C=(i+n)/2,B=(r+o)/2,M=(g+I)/2,R=(f+d)/2,_=(I+C)/2,P=(d+B)/2,v=(M+_)/2,w=(R+P)/2;if(h>0){let D=n-s,x=o-A;const L=Math.abs((e-n)*x-(t-o)*D),$=Math.abs((i-n)*x-(r-o)*D);if(L>fr&&$>fr){if((L+$)*(L+$)<=l*(D*D+x*x)){a.push(v,w);return}}else if(L>fr){if(L*L<=l*(D*D+x*x)){a.push(v,w);return}}else if($>fr){if($*$<=l*(D*D+x*x)){a.push(v,w);return}}else if(D=v-(s+n)/2,x=w-(A+o)/2,D*D+x*x<=l){a.push(v,w);return}}Ys(s,A,g,f,M,R,v,w,a,l,h+1),Ys(v,w,_,P,C,B,n,o,a,l,h+1)}const nc=8,oc=11920929e-14,ac=1;function lc(s,A,e,t,i,r,n=.5,o=[]){const l=Math.min(.99,Math.max(0,n));let h=(ac-l)/1;return h*=h,Ws(o,s,A,e,t,i,r,h,0),o.push(i,r),o}function Ws(s,A,e,t,i,r,n,o,a){if(a>nc)return;const l=(A+t)/2,h=(e+i)/2,g=(t+r)/2,f=(i+n)/2,I=(l+g)/2,d=(h+f)/2;let C=r-A,B=n-e;const M=Math.abs((t-r)*B-(i-n)*C);if(M>oc){if(M*M<=o*(C*C+B*B)){s.push(I,d);return}}else if(C=I-(A+r)/2,B=d-(e+n)/2,C*C+B*B<=o){s.push(I,d);return}Ws(s,A,e,l,h,I,d,o,a+1),Ws(s,I,d,g,f,r,n,o,a+1)}function hc(s,A){const e=1-s;return e*e*A}function gc(s,A){return 2*(1-s)*s*A}function cc(s,A){return s*s*A}function pa(s,A,e,t){return hc(s,A)+gc(s,e)+cc(s,t)}const uc=1e-4,Ca=1e-4;function fc(s,A={}){const{vertices:e=[],indices:t=[],lineStyle:i={alignment:.5,cap:"butt",join:"miter",width:1,miterLimit:10},flipAlignment:r=!1,closed:n=!0}=A,o=uc;if(s.length===0)return{vertices:e,indices:t};const a=i;let l=a.alignment;if(i.alignment!==.5){let q=dc(s);r&&(q*=-1),l=(l-.5)*q+.5}const h={x:s[0],y:s[1]},g={x:s[s.length-2],y:s[s.length-1]},f=n,I=Math.abs(h.x-g.x)<o&&Math.abs(h.y-g.y)<o;if(f){s=s.slice(),I&&(s.pop(),s.pop(),g.x=s[s.length-2],g.y=s[s.length-1]);const q=(h.x+g.x)*.5,j=(g.y+h.y)*.5;s.unshift(q,j),s.push(q,j)}const d=e,C=s.length/2;let B=s.length;const M=d.length/2,R=a.width/2,_=R*R,P=a.miterLimit*a.miterLimit;let v=s[0],w=s[1],D=s[2],x=s[3],L=0,$=0,K=-(w-x),J=v-D,Z=0,Y=0,O=Math.sqrt(K*K+J*J);K/=O,J/=O,K*=R,J*=R;const Ae=l,G=(1-Ae)*2,W=Ae*2;f||(a.cap==="round"?B+=wA(v-K*(G-W)*.5,w-J*(G-W)*.5,v-K*G,w-J*G,v+K*W,w+J*W,d,!0)+2:a.cap==="square"&&(B+=Qa(v,w,K,J,G,W,!0,d))),d.push(v-K*G,w-J*G),d.push(v+K*W,w+J*W);for(let q=1;q<C-1;++q){v=s[(q-1)*2],w=s[(q-1)*2+1],D=s[q*2],x=s[q*2+1],L=s[(q+1)*2],$=s[(q+1)*2+1],K=-(w-x),J=v-D,O=Math.sqrt(K*K+J*J),K/=O,J/=O,K*=R,J*=R,Z=-(x-$),Y=D-L,O=Math.sqrt(Z*Z+Y*Y),Z/=O,Y/=O,Z*=R,Y*=R;const j=D-v,se=w-x,X=D-L,ae=$-x,ie=j*X+se*ae,le=se*X-ae*j,z=le<0;if(Math.abs(le)<.001*Math.abs(ie)){d.push(D-K*G,x-J*G),d.push(D+K*W,x+J*W),ie>=0&&(a.join==="round"?B+=wA(D,x,D-K*G,x-J*G,D-Z*G,x-Y*G,d,!1)+4:B+=2,d.push(D-Z*W,x-Y*W),d.push(D+Z*G,x+Y*G));continue}const Ie=(-K+v)*(-J+x)-(-K+D)*(-J+w),nt=(-Z+L)*(-Y+x)-(-Z+D)*(-Y+$),ot=(j*nt-X*Ie)/le,Oe=(ae*Ie-se*nt)/le,he=(ot-D)*(ot-D)+(Oe-x)*(Oe-x),me=D+(ot-D)*G,He=x+(Oe-x)*G,ze=D-(ot-D)*W,be=x-(Oe-x)*W,$e=Math.min(j*j+se*se,X*X+ae*ae),Lt=z?G:W,is=$e+Lt*Lt*_;he<=is?a.join==="bevel"||he/_>P?(z?(d.push(me,He),d.push(D+K*W,x+J*W),d.push(me,He),d.push(D+Z*W,x+Y*W)):(d.push(D-K*G,x-J*G),d.push(ze,be),d.push(D-Z*G,x-Y*G),d.push(ze,be)),B+=2):a.join==="round"?z?(d.push(me,He),d.push(D+K*W,x+J*W),B+=wA(D,x,D+K*W,x+J*W,D+Z*W,x+Y*W,d,!0)+4,d.push(me,He),d.push(D+Z*W,x+Y*W)):(d.push(D-K*G,x-J*G),d.push(ze,be),B+=wA(D,x,D-K*G,x-J*G,D-Z*G,x-Y*G,d,!1)+4,d.push(D-Z*G,x-Y*G),d.push(ze,be)):(d.push(me,He),d.push(ze,be)):(d.push(D-K*G,x-J*G),d.push(D+K*W,x+J*W),a.join==="round"?z?B+=wA(D,x,D+K*W,x+J*W,D+Z*W,x+Y*W,d,!0)+2:B+=wA(D,x,D-K*G,x-J*G,D-Z*G,x-Y*G,d,!1)+2:a.join==="miter"&&he/_<=P&&(z?(d.push(ze,be),d.push(ze,be)):(d.push(me,He),d.push(me,He)),B+=2),d.push(D-Z*G,x-Y*G),d.push(D+Z*W,x+Y*W),B+=2)}v=s[(C-2)*2],w=s[(C-2)*2+1],D=s[(C-1)*2],x=s[(C-1)*2+1],K=-(w-x),J=v-D,O=Math.sqrt(K*K+J*J),K/=O,J/=O,K*=R,J*=R,d.push(D-K*G,x-J*G),d.push(D+K*W,x+J*W),f||(a.cap==="round"?B+=wA(D-K*(G-W)*.5,x-J*(G-W)*.5,D-K*G,x-J*G,D+K*W,x+J*W,d,!1)+2:a.cap==="square"&&(B+=Qa(D,x,K,J,G,W,!1,d)));const oe=Ca*Ca;for(let q=M;q<B+M-2;++q)v=d[q*2],w=d[q*2+1],D=d[(q+1)*2],x=d[(q+1)*2+1],L=d[(q+2)*2],$=d[(q+2)*2+1],!(Math.abs(v*(x-$)+D*($-w)+L*(w-x))<oe)&&t.push(q,q+1,q+2);return{vertices:e,indices:t}}function dc(s){const A=s.length;if(A<6)return 1;let e=0;for(let t=0,i=s[A-2],r=s[A-1];t<A;t+=2){const n=s[t],o=s[t+1];e+=(n-i)*(o+r),i=n,r=o}return e<0?-1:1}function Qa(s,A,e,t,i,r,n,o){const a=s-e*i,l=A-t*i,h=s+e*r,g=A+t*r;let f,I;n?(f=t,I=-e):(f=-t,I=e);const d=a+f,C=l+I,B=h+f,M=g+I;return o.push(d,C),o.push(B,M),2}function wA(s,A,e,t,i,r,n,o){const a=e-s,l=t-A;let h=Math.atan2(a,l),g=Math.atan2(i-s,r-A);o&&h<g?h+=Math.PI*2:!o&&h>g&&(g+=Math.PI*2);let f=h;const I=g-h,d=Math.abs(I),C=Math.sqrt(a*a+l*l),B=(15*d*Math.sqrt(C)/Math.PI>>0)+1,M=I/B;if(f+=M,o){n.push(s,A),n.push(e,t);for(let R=1,_=f;R<B;R++,_+=M)n.push(s,A),n.push(s+Math.sin(_)*C,A+Math.cos(_)*C);n.push(s,A),n.push(i,r)}else{n.push(e,t),n.push(s,A);for(let R=1,_=f;R<B;R++,_+=M)n.push(s+Math.sin(_)*C,A+Math.cos(_)*C),n.push(s,A);n.push(i,r),n.push(s,A)}return B*2}class JA{constructor(){u(this,"arcLengthDivision",200);u(this,"_arcLengths")}getPointAt(A,e=new F){return this.getPoint(this.getUToTMapping(A),e)}isClockwise(){const A=this.getPoint(1),e=this.getPoint(.5),t=this.getPoint(1);return(e.x-A.x)*(t.y-e.y)-(e.y-A.y)*(t.x-e.x)<0}getControlPointRefs(){return[]}applyTransform(A){return this.getControlPointRefs().forEach(e=>{e.applyMatrix3(A)}),this}getUnevenPointArray(A=5,e=[]){const t=new F;for(let i=0,r=Math.max(1,A)-1;i<=r;i++)this.getPoint(i/r,t),e.push(t.x,t.y);return e}getSpacedPointArray(A=5,e=[]){const t=new F;for(let i=0,r=Math.max(1,A)-1;i<=r;i++)this.getPointAt(i/r,t),e.push(t.x,t.y);return e}getAdaptivePointArray(A=[]){return this.getUnevenPointArray(5,A)}_pointArrayToPoint(A,e=[]){for(let t=0,i=A.length;t<i;t+=2){const r=A[t],n=A[t+1];e.push(new F(r,n))}return e}getSpacedPoints(A,e=[]){const t=this.getSpacedPointArray(A);return this._pointArrayToPoint(t,e),e}getUnevenPoints(A,e=[]){const t=this.getUnevenPointArray(A);return this._pointArrayToPoint(t,e),e}getAdaptivePoints(A=[]){const e=this.getAdaptivePointArray();return this._pointArrayToPoint(e,A),A}getPoints(A,e=[]){let t;return A?t=this.getUnevenPointArray(A):t=this.getAdaptivePointArray(),this._pointArrayToPoint(t,e),e}getLength(){const A=this.getLengths();return A[A.length-1]}getLengths(){return(!this._arcLengths||this._arcLengths.length!==this.arcLengthDivision+1)&&this.updateLengths(),this._arcLengths}updateLengths(){const A=this.arcLengthDivision,e=[0];for(let t=0,i=this.getPoint(0),r=1;r<=A;r++){const n=this.getPoint(r/A);t+=n.distanceTo(i),e.push(t),i=n}this._arcLengths=e}getUToTMapping(A,e){const t=this.getLengths(),i=t.length,r=e??A*t[i-1];if(i<2)return r/t[0];let n=0,o=0,a=i-1,l;for(;o<=a;)if(n=Math.floor(o+(a-o)/2),l=t[n]-r,l<0)o=n+1;else if(l>0)a=n-1;else{a=n;break}if(n=a,t[n]===r)return n/(i-1);const h=t[n],f=t[n+1]-h,I=(r-h)/f;return(n+I)/(i-1)}getTangent(A,e=new F){const i=Math.max(0,A-1e-4),r=Math.min(1,A+1e-4);return e.copy(this.getPoint(r).sub(this.getPoint(i)).normalize())}getTangentAt(A,e){return this.getTangent(this.getUToTMapping(A),e)}getNormal(A,e=new F){return this.getTangent(A,e),e.set(-e.y,e.x).normalize()}getNormalAt(A,e){return this.getNormal(this.getUToTMapping(A),e)}getTForPoint(A,e=.001){let t=0,i=1,r=(t+i)/2;for(;i-t>e;){r=(t+i)/2;const n=this.getPoint(r);if(n.distanceTo(A)<e)return r;n.x<A.x?t=r:i=r}return r}getMinMax(A=F.MAX,e=F.MIN){const t=this.getPoints();for(let i=0,r=t.length;i<r;i++){const n=t[i];A.min(n),e.max(n)}return{min:A,max:e}}getBoundingBox(){const{min:A,max:e}=this.getMinMax();return new ue(A.x,A.y,e.x-A.x,e.y-A.y)}fillTriangulate(A){return Ea(this.getAdaptivePointArray(),A)}strokeTriangulate(A){return fc(this.getAdaptivePointArray(),A)}toTriangulatedSVGString(A=this.fillTriangulate(),e=0){const{vertices:t,indices:i}=A,r={x:-e,y:-e},n={x:e,y:e},o=h=>{const g=t[h*2],f=t[h*2+1];return r.x=Math.min(r.x,g+e),n.x=Math.max(n.x,g+e),r.y=Math.min(r.y,f+e),n.y=Math.max(n.y,f+e),[g,f]};let a="";for(let h=0,g=i.length;h<g;h+=3){const f=o(i[h]),I=o(i[h+1]),d=o(i[h+2]);a+=`<polygon points="${f.join(",")} ${I.join(",")} ${d.join(",")}" fill="none" stroke="black" />`}const l=[r.x,r.y,n.x-r.x,n.y-r.y];return`<svg width="${l[2]}" height="${l[3]}" viewBox="${l.join(" ")}" xmlns="http://www.w3.org/2000/svg">${a}</svg>`}toTriangulatedSVG(A,e){return new DOMParser().parseFromString(this.toTriangulatedSVGString(A,e),"image/svg+xml").documentElement}toCommands(){const A=[],e=this.getPoints();for(let t=0,i=e.length;t<i;t++){const r=e[t];t===0?A.push({type:"M",x:r.x,y:r.y}):A.push({type:"L",x:r.x,y:r.y})}return A}toData(){return jg(this.toCommands())}drawTo(A){return this.toCommands().forEach(e=>{switch(e.type){case"M":A.moveTo(e.x,e.y);break;case"L":A.lineTo(e.x,e.y);break}}),this}copy(A){return this.arcLengthDivision=A.arcLengthDivision,this}clone(){return new this.constructor().copy(this)}}const Ic=new Je,ya=new Je,ma=new Je,dr=new F;class zs extends JA{constructor(A=new F,e=new F,t=new F,i=0,r=0,n=Math.PI*2,o=!1){super(),this._center=A,this._radius=e,this._diff=t,this.rotate=i,this.startAngle=r,this.endAngle=n,this.clockwise=o}get cx(){return this._center.x}set cx(A){this._center.x=A}get cy(){return this._center.y}set cy(A){this._center.y=A}get rx(){return this._radius.x}set rx(A){this._radius.x=A}get ry(){return this._radius.y}set ry(A){this._radius.y=A}get dx(){return this._diff.x}set dx(A){this._diff.x=A}get dy(){return this._diff.y}set dy(A){this._diff.y=A}isClockwise(){return this.clockwise}_getDeltaAngle(){const A=Math.PI*2;let e=this.endAngle-this.startAngle;const t=Math.abs(e)<Number.EPSILON;return e=(e%A+A)%A,t?e=0:this.clockwise||(e=e===0?-A:e-A),e}getPoint(A,e=new F){const t=this._getDeltaAngle(),i=this.startAngle+A*t;let r=this.cx+this.rx*Math.cos(i),n=this.cy+this.ry*Math.sin(i);if(this.rotate!==0){const o=Math.cos(this.rotate),a=Math.sin(this.rotate),l=r-this.cx,h=n-this.cy;r=l*o-h*a+this.cx,n=l*a+h*o+this.cy}return e.set(r,n)}toCommands(){const{cx:A,cy:e,rx:t,ry:i,startAngle:r,endAngle:n,clockwise:o,rotate:a}=this,l=A+t*Math.cos(r)*Math.cos(a)-i*Math.sin(r)*Math.sin(a),h=e+t*Math.cos(r)*Math.sin(a)+i*Math.sin(r)*Math.cos(a),g=Math.abs(r-n),f=g>Math.PI?1:0,I=o?1:0,d=a*180/Math.PI;if(g>=2*Math.PI){const C=r+Math.PI,B=A+t*Math.cos(C)*Math.cos(a)-i*Math.sin(C)*Math.sin(a),M=e+t*Math.cos(C)*Math.sin(a)+i*Math.sin(C)*Math.cos(a);return[{type:"M",x:l,y:h},{type:"A",rx:t,ry:i,angle:d,largeArcFlag:0,sweepFlag:I,x:B,y:M},{type:"A",rx:t,ry:i,angle:d,largeArcFlag:0,sweepFlag:I,x:l,y:h}]}else{const C=A+t*Math.cos(n)*Math.cos(a)-i*Math.sin(n)*Math.sin(a),B=e+t*Math.cos(n)*Math.sin(a)+i*Math.sin(n)*Math.cos(a);return[{type:"M",x:l,y:h},{type:"A",rx:t,ry:i,angle:d,largeArcFlag:f,sweepFlag:I,x:C,y:B}]}}drawTo(A){const{cx:e,cy:t,rx:i,ry:r,rotate:n,startAngle:o,endAngle:a,clockwise:l}=this;return A.ellipse(e,t,i,r,n,o,a,!l),this}applyTransform(A){return dr.set(this.cx,this.cy),dr.applyMatrix3(A),this.cx=dr.x,this.cy=dr.y,pc(A)?Bc(this,A):Ec(this,A),this}getControlPointRefs(){return[this._center]}getAdaptivePointArray(A=[]){const{cx:e,cy:t,rx:i,ry:r,dx:n,dy:o}=this;if(!(i>=0&&r>=0&&n>=0&&o>=0))return A;const a=Math.ceil(2.3*Math.sqrt(i+r)),l=e,h=t,g=a*8+(n?4:0)+(o?4:0);if(g===0)return A;if(a===0)return A[0]=A[6]=l+n,A[1]=A[3]=h+o,A[2]=A[4]=l-n,A[5]=A[7]=h-o,A;let f=0,I=a*4+(n?2:0)+2,d=I,C=g,B=n+i,M=o,R=l+B,_=l-B,P=h+M;if(A[f++]=R,A[f++]=P,A[--I]=P,A[--I]=_,o){const w=h-M;A[d++]=_,A[d++]=w,A[--C]=w,A[--C]=R}for(let w=1;w<a;w++){const D=Math.PI/2*(w/a),x=n+Math.cos(D)*i,L=o+Math.sin(D)*r,$=l+x,K=l-x,J=h+L,Z=h-L;A[f++]=$,A[f++]=J,A[--I]=J,A[--I]=K,A[d++]=K,A[d++]=Z,A[--C]=Z,A[--C]=$}B=n,M=o+r,R=l+B,_=l-B,P=h+M;const v=h-M;return A[f++]=R,A[f++]=P,A[--C]=v,A[--C]=R,n&&(A[f++]=_,A[f++]=P,A[--C]=v,A[--C]=_),A}fillTriangulate(A={}){let{vertices:e=[],indices:t=[],verticesStride:i=2,verticesOffset:r=e.length/i,indicesOffset:n=t.length}=A;const o=this.getAdaptivePointArray();if(o.length===0)return{vertices:e,indices:t};let a=0,l=0;for(let f=0;f<o.length;f+=2)a+=o[f],l+=o[f+1];a/=o.length/2,l/=o.length/2;let h=r;e[h*i]=a,e[h*i+1]=l;const g=h++;for(let f=0;f<o.length;f+=2)e[h*i]=o[f],e[h*i+1]=o[f+1],f>0&&(t[n++]=h,t[n++]=g,t[n++]=h-1),h++;return t[n++]=g+1,t[n++]=g,t[n++]=h-1,{vertices:e,indices:t}}getMinMax(A=F.MAX,e=F.MIN){const{cx:t,cy:i,rx:r,ry:n,rotate:o}=this,a=Math.cos(o),l=Math.sin(o),h=Math.sqrt(r*r*a*a+n*n*l*l),g=Math.sqrt(r*r*l*l+n*n*a*a);return A.x=Math.min(A.x,t-h),A.y=Math.min(A.y,i-g),e.x=Math.max(e.x,t+h),e.y=Math.max(e.y,i+g),{min:A,max:e}}copy(A){return super.copy(A),this.cx=A.cx,this.cy=A.cy,this.rx=A.rx,this.ry=A.ry,this.dx=A.dx,this.dy=A.dy,this.startAngle=A.startAngle,this.endAngle=A.endAngle,this.clockwise=A.clockwise,this.rotate=A.rotate,this}}function Bc(s,A){const e=s.rx,t=s.ry,i=Math.cos(s.rotate),r=Math.sin(s.rotate),n=new F(e*i,e*r),o=new F(-t*r,t*i),a=n.applyMatrix3(A),l=o.applyMatrix3(A),h=Ic.set(a.x,l.x,0,a.y,l.y,0,0,0,1),g=ya.copy(h).invert(),d=ma.copy(g).transpose().multiply(g).elements,C=Cc(d[0],d[1],d[4]),B=Math.sqrt(C.rt1),M=Math.sqrt(C.rt2);if(s.rx=1/B,s.ry=1/M,s.rotate=Math.atan2(C.sn,C.cs),!((s.endAngle-s.startAngle)%(2*Math.PI)<Number.EPSILON)){const _=ya.set(B,0,0,0,M,0,0,0,1),P=ma.set(C.cs,C.sn,0,-C.sn,C.cs,0,0,0,1),v=_.multiply(P).multiply(h),w=D=>{const{x,y:L}=new F(Math.cos(D),Math.sin(D)).applyMatrix3(v);return Math.atan2(L,x)};s.startAngle=w(s.startAngle),s.endAngle=w(s.endAngle),wa(A)&&(s.clockwise=!s.clockwise)}}function Ec(s,A){const e=va(A),t=_a(A);s.rx*=e,s.ry*=t;const i=e>Number.EPSILON?Math.atan2(A.elements[1],A.elements[0]):Math.atan2(-A.elements[3],A.elements[4]);s.rotate+=i,wa(A)&&(s.startAngle*=-1,s.endAngle*=-1,s.clockwise=!s.clockwise)}function wa(s){const A=s.elements;return A[0]*A[4]-A[1]*A[3]<0}function pc(s){const A=s.elements,e=A[0]*A[3]+A[1]*A[4];if(e===0)return!1;const t=va(s),i=_a(s);return Math.abs(e/(t*i))>Number.EPSILON}function va(s){const A=s.elements;return Math.sqrt(A[0]*A[0]+A[1]*A[1])}function _a(s){const A=s.elements;return Math.sqrt(A[3]*A[3]+A[4]*A[4])}function Cc(s,A,e){let t,i,r,n,o;const a=s+e,l=s-e,h=Math.sqrt(l*l+4*A*A);return a>0?(t=.5*(a+h),o=1/t,i=s*o*e-A*o*A):a<0?i=.5*(a-h):(t=.5*h,i=-.5*h),l>0?r=l+h:r=l-h,Math.abs(r)>2*Math.abs(A)?(o=-2*A/r,n=1/Math.sqrt(1+o*o),r=o*n):Math.abs(A)===0?(r=1,n=0):(o=-.5*r/A,r=1/Math.sqrt(1+o*o),n=o*r),l>0&&(o=r,r=-n,n=o),{rt1:t,rt2:i,cs:r,sn:n}}class Qc extends zs{constructor(A=0,e=0,t=1,i=0,r=Math.PI*2,n=!1){super(new F(A,e),new F(t,t),new F,0,i,r,n)}drawTo(A){const{cx:e,cy:t,rx:i,startAngle:r,endAngle:n,clockwise:o}=this;return A.arc(e,t,i,r,n,!o),this}getAdaptivePointArray(A=[]){const{cx:e,cy:t,rx:i,startAngle:r,endAngle:n,clockwise:o}=this;let a=Math.abs(r-n);(!o&&r>n||o&&n>r)&&(a=2*Math.PI-a);let l=Math.max(6,Math.floor(6*i**(1/3)*(a/Math.PI)));l=Math.max(l,3);let h=a/l,g=r;h*=o?1:-1;for(let f=0;f<l+1;f++){const I=Math.cos(g),d=Math.sin(g),C=e+I*i,B=t+d*i;A.push(C,B),g+=h}return A}}class qt extends JA{constructor(A=new F,e=new F){super(),this.p1=A,this.p2=e}static from(A,e,t,i){return new qt(new F(A,e),new F(t,i))}getPoint(A,e=new F){return A===1?e.copy(this.p2):e.copy(this.p2).sub(this.p1).scale(A).add(this.p1),e}getPointAt(A,e=new F){return this.getPoint(A,e)}getTangent(A,e=new F){return e.subVectors(this.p2,this.p1).normalize()}getTangentAt(A,e=new F){return this.getTangent(A,e)}getControlPointRefs(){return[this.p1,this.p2]}getAdaptivePointArray(A=[]){return A.push(this.p1.x,this.p1.y,this.p2.x,this.p2.y),A}getMinMax(A=F.MAX,e=F.MIN){const{p1:t,p2:i}=this;return A.x=Math.min(A.x,t.x,i.x),A.y=Math.min(A.y,t.y,i.y),e.x=Math.max(e.x,t.x,i.x),e.y=Math.max(e.y,t.y,i.y),{min:A,max:e}}toCommands(){const{p1:A,p2:e}=this;return[{type:"M",x:A.x,y:A.y},{type:"L",x:e.x,y:e.y}]}fillTriangulate(A={}){let{vertices:e=[],indices:t=[],verticesStride:i=2,verticesOffset:r=e.length/i,indicesOffset:n=t.length}=A;const o=this.p1.x,a=this.p1.y,l=this.p2.x-this.p1.x||1,h=this.p2.y-this.p2.y||1,g=[o,a,o+l,a,o+l,a+h,o,a+h];let f=0;r*=i,e[r+f]=g[0],e[r+f+1]=g[1],f+=i,e[r+f]=g[2],e[r+f+1]=g[3],f+=i,e[r+f]=g[6],e[r+f+1]=g[7],f+=i,e[r+f]=g[4],e[r+f+1]=g[5],f+=i;const I=r/i;return t[n++]=I,t[n++]=I+1,t[n++]=I+2,t[n++]=I+1,t[n++]=I+3,t[n++]=I+2,{vertices:e,indices:t}}drawTo(A){const{p1:e,p2:t}=this;return A.lineTo(e.x,e.y),A.lineTo(t.x,t.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.p2.copy(A.p2),this}}class Mi extends JA{constructor(A=[]){super(),this.curves=A}getFlatCurves(){return this.curves.flatMap(A=>A instanceof Mi?A.getFlatCurves():A)}addCurve(A){return this.curves.push(A),this}getPoint(A,e=new F){const t=A*this.getLength(),i=this.getLengths();let r=0;for(;r<i.length;){if(i[r]>=t){const n=i[r]-t,o=this.curves[r],a=o.getLength();return o.getPointAt(a===0?0:1-n/a,e)}r++}return e}updateLengths(){const A=[];for(let e=0,t=0,i=this.curves.length;e<i;e++)t+=this.curves[e].getLength(),A.push(t);this._arcLengths=A}getControlPointRefs(){return this.curves.flatMap(A=>A.getControlPointRefs())}_removeNextPointIfEqualPrevPoint(A,e){return A[e-1]===A[e+1]&&A[e]===A[e+2]&&A.splice(e+1,2),A}getSpacedPointArray(A=5,e=[]){let t;return this.curves.forEach(i=>{i.getSpacedPointArray(A,e),t&&this._removeNextPointIfEqualPrevPoint(e,t),t=e.length-1}),e}getAdaptivePointArray(A=[]){let e;return this.curves.forEach(t=>{t.getAdaptivePointArray(A),e&&this._removeNextPointIfEqualPrevPoint(A,e),e=A.length-1}),A}fillTriangulate(A){const e=(A==null?void 0:A.indices)??[],t=(A==null?void 0:A.vertices)??[],i=[],r=()=>{if(i.length){const n=[];i.forEach(o=>{const a=o.p1.x,l=o.p1.y;(n[n.length-2]!==a||n[n.length-1]!==l)&&n.push(a,l),n.push(o.p2.x,o.p2.y)}),Ea(n,{...A,indices:e,vertices:t}),i.length=0}};return this.curves.forEach(n=>{n instanceof qt?i.push(n):(r(),n.fillTriangulate({...A,indices:e,vertices:t}))}),r(),{indices:e,vertices:t}}applyTransform(A){return this.curves.forEach(e=>e.applyTransform(A)),this}getMinMax(A=F.MAX,e=F.MIN){return this.curves.forEach(t=>t.getMinMax(A,e)),{min:A,max:e}}getBoundingBox(){const{min:A,max:e}=this.getMinMax();return new ue(A.x,A.y,e.x-A.x,e.y-A.y)}toCommands(){return this.curves.flatMap(A=>A.toCommands())}drawTo(A){var t;const e=(t=this.curves[0])==null?void 0:t.getPoint(0);return e&&A.moveTo(e.x,e.y),this.curves.forEach(i=>i.drawTo(A)),this}copy(A){return super.copy(A),this.curves=A.curves.map(e=>e.clone()),this}}class Vs extends JA{constructor(A=new F,e=new F,t=new F,i=new F){super(),this.p1=A,this.cp1=e,this.cp2=t,this.p2=i}static from(A,e,t,i,r,n,o,a){return new Vs(new F(A,e),new F(t,i),new F(r,n),new F(o,a))}getPoint(A,e=new F){const{p1:t,cp1:i,cp2:r,p2:n}=this;return e.set(Ba(A,t.x,i.x,r.x,n.x),Ba(A,t.y,i.y,r.y,n.y))}getAdaptivePointArray(A=[]){return sc(this.p1.x,this.p1.y,this.cp1.x,this.cp1.y,this.cp2.x,this.cp2.y,this.p2.x,this.p2.y,.5,A)}getControlPointRefs(){return[this.p1,this.cp1,this.cp2,this.p2]}_solveQuadratic(A,e,t){const i=e*e-4*A*t;if(i<0)return[];const r=Math.sqrt(i),n=(-e+r)/(2*A),o=(-e-r)/(2*A);return[n,o].filter(a=>a>=0&&a<=1)}getMinMax(A=F.MAX,e=F.MIN){const{p1:t,cp1:i,cp2:r,p2:n}=this,o=this._solveQuadratic(3*(i.x-t.x),6*(r.x-i.x),3*(n.x-r.x)),a=this._solveQuadratic(3*(i.y-t.y),6*(r.y-i.y),3*(n.y-r.y)),l=[0,1,...o,...a];return((g,f)=>{for(const I of g)for(let d=0;d<=f;d++){const C=d/f-.5,B=Math.min(1,Math.max(0,I+C)),M=this.getPoint(B);A.x=Math.min(A.x,M.x),A.y=Math.min(A.y,M.y),e.x=Math.max(e.x,M.x),e.y=Math.max(e.y,M.y)}})(l,10),{min:A,max:e}}toCommands(){const{p1:A,cp1:e,cp2:t,p2:i}=this;return[{type:"M",x:A.x,y:A.y},{type:"C",x1:e.x,y1:e.y,x2:t.x,y2:t.y,x:i.x,y:i.y}]}drawTo(A){const{p1:e,cp1:t,cp2:i,p2:r}=this;return A.lineTo(e.x,e.y),A.bezierCurveTo(t.x,t.y,i.x,i.y,r.x,r.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.cp1.copy(A.cp1),this.cp2.copy(A.cp2),this.p2.copy(A.p2),this}}class yc extends zs{constructor(A=0,e=0,t=1,i=1,r=0,n=0,o=Math.PI*2,a=!1){super(new F(A,e),new F(t,i),new F,r,n,o,a)}drawTo(A){return A.ellipse(this.cx,this.cy,this.rx,this.ry,this.rotate,this.startAngle,this.endAngle,!this.clockwise),this}}class mc extends Mi{}class qs extends JA{constructor(A=new F,e=new F,t=new F){super(),this.p1=A,this.cp=e,this.p2=t}static from(A,e,t,i,r,n){return new qs(new F(A,e),new F(t,i),new F(r,n))}getPoint(A,e=new F){const{p1:t,cp:i,p2:r}=this;return e.set(pa(A,t.x,i.x,r.x),pa(A,t.y,i.y,r.y)),e}getControlPointRefs(){return[this.p1,this.cp,this.p2]}getAdaptivePointArray(A=[]){return lc(this.p1.x,this.p1.y,this.cp.x,this.cp.y,this.p2.x,this.p2.y,.5,A)}getMinMax(A=F.MAX,e=F.MIN){const{p1:t,cp:i,p2:r}=this,n=.5*(t.x+i.x),o=.5*(t.y+i.y),a=.5*(t.x+r.x),l=.5*(t.y+r.y);return A.x=Math.min(A.x,t.x,r.x,n,a),A.y=Math.min(A.y,t.y,r.y,o,l),e.x=Math.max(e.x,t.x,r.x,n,a),e.y=Math.max(e.y,t.y,r.y,o,l),{min:A,max:e}}toCommands(){const{p1:A,cp:e,p2:t}=this;return[{type:"M",x:A.x,y:A.y},{type:"Q",x1:e.x,y1:e.y,x:t.x,y:t.y}]}drawTo(A){const{p1:e,cp:t,p2:i}=this;return A.lineTo(e.x,e.y),A.quadraticCurveTo(t.x,t.y,i.x,i.y),this}copy(A){return super.copy(A),this.p1.copy(A.p1),this.cp.copy(A.cp),this.p2.copy(A.p2),this}}class wc extends mc{constructor(A=0,e=0,t=0,i=0){super(),this.x=A,this.y=e,this.width=t,this.height=i,this.update()}update(){const{x:A,y:e,width:t,height:i}=this,r=[new F(A,e),new F(A+t,e),new F(A+t,e+i),new F(A,e+i)];return this.curves=[new qt(r[0],r[1]),new qt(r[1],r[2]),new qt(r[2],r[3]),new qt(r[3],r[0])],this}drawTo(A){return A.rect(this.x,this.y,this.width,this.height),this}fillTriangulate(A={}){let{vertices:e=[],indices:t=[],verticesStride:i=2,verticesOffset:r=e.length/i,indicesOffset:n=t.length}=A;const{x:o,y:a,width:l,height:h}=this,g=[o,a,o+l,a,o+l,a+h,o,a+h];let f=0;r*=i,e[r+f]=g[0],e[r+f+1]=g[1],f+=i,e[r+f]=g[2],e[r+f+1]=g[3],f+=i,e[r+f]=g[6],e[r+f+1]=g[7],f+=i,e[r+f]=g[4],e[r+f+1]=g[5],f+=i;const I=r/i;return t[n++]=I,t[n++]=I+1,t[n++]=I+2,t[n++]=I+1,t[n++]=I+3,t[n++]=I+2,{vertices:e,indices:t}}copy(A){return super.copy(A),this.x=A.x,this.y=A.y,this.width=A.width,this.height=A.height,this.update(),this}}class vc extends zs{constructor(A=0,e=0,t=1,i=1,r=1){super(),this.x=A,this.y=e,this.width=t,this.height=i,this.radius=r,this.update()}update(){const{x:A,y:e,width:t,height:i,radius:r}=this,n=t/2,o=i/2,a=A+n,l=e+o,h=Math.max(0,Math.min(r,Math.min(n,o))),g=h;return this._center=new F(a,l),this._radius=new F(h,g),this._diff=new F(n-h,o-g),this}drawTo(A){const{x:e,y:t,width:i,height:r,radius:n}=this;return A.roundRect(e,t,i,r,n),this}copy(A){return super.copy(A),this.x=A.x,this.y=A.y,this.width=A.width,this.height=A.height,this.radius=A.radius,this.update(),this}}class _c extends JA{constructor(A=[]){super(),this.points=A}getPoint(A,e=new F){const{points:t}=this,i=(t.length-1)*A,r=Math.floor(i),n=i-r,o=t[r===0?r:r-1],a=t[r],l=t[r>t.length-2?t.length-1:r+1],h=t[r>t.length-3?t.length-1:r+2];return e.set(Ia(n,o.x,a.x,l.x,h.x),Ia(n,o.y,a.y,l.y,h.y)),e}getControlPointRefs(){return this.points}copy(A){super.copy(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++)this.points.push(A.points[e].clone());return this}}class Ir extends Mi{constructor(e){super();u(this,"startPoint");u(this,"currentPoint");u(this,"autoClose",!1);e&&this.addPoints(e)}addPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,i=e.length;t<i;t++){const{x:r,y:n}=e[t];this.lineTo(r,n)}return this}addCommands(e){return fa(e,this),this}addData(e){return this.addCommands(da(e)),this}_closePointArray(e){return this.autoClose&&e.length>=4&&e[0]!==e[e.length-2]&&e[1]!==e[e.length-1]&&e.push(e[0],e[1]),e}getUnevenPointArray(e=40,t=[]){return this._closePointArray(super.getUnevenPointArray(e,t))}getSpacedPointArray(e=40,t=[]){return this._closePointArray(super.getSpacedPointArray(e,t))}getAdaptivePointArray(e=[]){return this._closePointArray(super.getAdaptivePointArray(e))}_setCurrentPoint(e){return this.currentPoint=new F(e.x,e.y),this.startPoint||(this.startPoint=this.currentPoint.clone()),this}_connetLineTo(e){if(this.curves.length>0){const t=e.getPoint(0);(!this.currentPoint||!t.equals(this.currentPoint))&&this.lineTo(t.x,t.y)}return this}closePath(){const e=this.startPoint;if(e){const t=this.currentPoint;t&&!e.equals(t)&&(this.curves.push(new qt(t.clone(),e.clone())),t.copy(e)),this.startPoint=void 0}return this}moveTo(e,t){return this.currentPoint=new F(e,t),this.startPoint=this.currentPoint.clone(),this}lineTo(e,t){const i=this.currentPoint;return i!=null&&i.equals({x:e,y:t})||this.curves.push(qt.from((i==null?void 0:i.x)??0,(i==null?void 0:i.y)??0,e,t)),this._setCurrentPoint({x:e,y:t}),this}bezierCurveTo(e,t,i,r,n,o){const a=this.currentPoint;return a!=null&&a.equals({x:n,y:o})||this.curves.push(Vs.from((a==null?void 0:a.x)??0,(a==null?void 0:a.y)??0,e,t,i,r,n,o)),this._setCurrentPoint({x:n,y:o}),this}quadraticCurveTo(e,t,i,r){const n=this.currentPoint;return n!=null&&n.equals({x:i,y:r})||this.curves.push(qs.from((n==null?void 0:n.x)??0,(n==null?void 0:n.y)??0,e,t,i,r)),this._setCurrentPoint({x:i,y:r}),this}arc(e,t,i,r,n,o){const a=new Qc(e,t,i,r,n,!o);return this._connetLineTo(a),this.curves.push(a),this._setCurrentPoint(a.getPoint(1)),this}relativeArc(e,t,i,r,n,o){var a,l;return e+=((a=this.currentPoint)==null?void 0:a.x)??0,t+=((l=this.currentPoint)==null?void 0:l.y)??0,this.arc(e,t,i,r,n,o),this}arcTo(e,t,i,r,n){return console.warn("Method arcTo not supported yet"),this}ellipse(e,t,i,r,n,o,a,l=!0){const h=new yc(e,t,i,r,n,o,a,!l);return this._connetLineTo(h),this.curves.push(h),this._setCurrentPoint(h.getPoint(1)),this}relativeEllipse(e,t,i,r,n,o,a,l){var h,g;return e+=((h=this.currentPoint)==null?void 0:h.x)??0,t+=((g=this.currentPoint)==null?void 0:g.y)??0,this.ellipse(e,t,i,r,n,o,a,l),this}rect(e,t,i,r){const n=new wc(e,t,i,r);return this._connetLineTo(n),this.curves.push(n),this._setCurrentPoint({x:e,y:t}),this}roundRect(e,t,i,r,n){const o=new vc(e,t,i,r,n);return this._connetLineTo(o),this.curves.push(o),this._setCurrentPoint({x:e,y:t}),this}splineThru(e){const t=this.currentPoint??new F;return this.curves.push(new _c([t].concat(e))),this._setCurrentPoint(e[e.length-1]),this}drawTo(e){var i;const t=(i=this.curves[0])==null?void 0:i.getPoint(0);return t&&e.moveTo(t.x,t.y),this.curves.forEach(r=>r.drawTo(e)),this.autoClose&&e.closePath(),this}copy(e){var t;return super.copy(e),this.autoClose=e.autoClose,this.currentPoint=(t=e.currentPoint)==null?void 0:t.clone(),this}}function Dc(s){return s.replace(/[^a-z0-9]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase()}function bc(s,A,e,t){const i=A.clone().sub(s),r=t.clone().sub(e),n=e.clone().sub(s),o=i.cross(r);if(o===0)return new F((s.x+e.x)/2,(s.y+e.y)/2);const a=n.cross(r)/o;return Math.abs(a)>1?new F((s.x+e.x)/2,(s.y+e.y)/2):new F(s.x+a*i.x,s.y+a*i.y)}class ke extends Mi{constructor(e,t={}){super();u(this,"currentCurve",new Ir);u(this,"style");this.curves.push(this.currentCurve),this.style=t,e&&(e instanceof ke?this.addPath(e):Array.isArray(e)?this.addCommands(e):this.addData(e))}get startPoint(){return this.currentCurve.startPoint}get currentPoint(){return this.currentCurve.currentPoint}get strokeWidth(){return this.style.strokeWidth??((this.style.stroke??"none")==="none"?0:1)}addPath(e){const t=this.curves.findIndex(i=>i===this.currentCurve);return t>-1&&this.curves.splice(t,1),e instanceof ke?this.curves.push(...e.curves.filter(i=>i.curves.length).map(i=>i.clone())):e.curves.length&&this.curves.push(e),this.curves.push(this.currentCurve),this}closePath(){const e=this.startPoint;return e&&(this.currentCurve.closePath(),this.currentCurve.curves.length&&(this.currentCurve=new Ir().moveTo(e.x,e.y),this.curves.push(this.currentCurve))),this}moveTo(e,t){var i;return(i=this.currentCurve.currentPoint)!=null&&i.equals({x:e,y:t})||(this.currentCurve.curves.length&&(this.currentCurve=new Ir,this.curves.push(this.currentCurve)),this.currentCurve.moveTo(e,t)),this}lineTo(e,t){return this.currentCurve.lineTo(e,t),this}bezierCurveTo(e,t,i,r,n,o){return this.currentCurve.bezierCurveTo(e,t,i,r,n,o),this}quadraticCurveTo(e,t,i,r){return this.currentCurve.quadraticCurveTo(e,t,i,r),this}arc(e,t,i,r,n,o){return this.currentCurve.arc(e,t,i,r,n,o),this}arcTo(e,t,i,r,n){return this.currentCurve.arcTo(e,t,i,r,n),this}ellipse(e,t,i,r,n,o,a,l){return this.currentCurve.ellipse(e,t,i,r,n,o,a,l),this}rect(e,t,i,r){return this.currentCurve.rect(e,t,i,r),this}roundRect(e,t,i,r,n){return this.currentCurve.roundRect(e,t,i,r,n),this}reset(){return this.currentCurve=new Ir,this.curves=[this.currentCurve],this.style={},this}addCommands(e){return fa(e,this),this}addData(e){return this.addCommands(da(e)),this}splineThru(e){return this.currentCurve.splineThru(e),this}scale(e,t=e,i={x:0,y:0}){return this.getControlPointRefs().forEach(r=>{r.scale(e,t,i)}),this}skew(e,t=0,i={x:0,y:0}){return this.getControlPointRefs().forEach(r=>{r.skew(e,t,i)}),this}rotate(e,t={x:0,y:0}){return this.getControlPointRefs().forEach(i=>{i.rotate(e,t)}),this}bold(e){if(e===0)return this;const t=this.getFlatCurves(),i=[],r=[],n=[];t.forEach((a,l)=>{const h=a.getControlPointRefs(),g=a.isClockwise();n[l]=h,r[l]=g;const f=h[0],I=h[h.length-1]??f;i.push({start:g?I:f,end:g?f:I,index:l})});const o=[];return i.forEach((a,l)=>{o[l]=[],i.forEach((h,g)=>{var f;h.start&&a.end&&g!==l&&((f=h.start)!=null&&f.equals(a.end))&&o[l].push(h.index)})}),t.forEach((a,l)=>{const h=r[l];n[l].forEach(g=>{g.add(a.getNormal(a.getTForPoint(g)).scale(h?e:-e))})}),o.forEach((a,l)=>{const h=n[l];a.forEach(g=>{const f=n[g],I=bc(h[h.length-1],h[h.length-2]??h[h.length-1],f[0],f[1]??f[0]);I&&(h[h.length-1].copy(I),f[0].copy(I))})}),this}getMinMax(e=F.MAX,t=F.MIN,i=!0){const r=this.strokeWidth;return this.curves.forEach(n=>{if(n.getMinMax(e,t),i&&r>1){const o=r/2,a=n.isClockwise(),l=[];for(let h=0;h<=1;h+=1/n.arcLengthDivision){const g=n.getPoint(h),f=n.getNormal(h),I=f.clone().scale(a?o:-o),d=f.clone().scale(a?-o:o);l.push(g.clone().add(I),g.clone().add(d),g.clone().add({x:o,y:0}),g.clone().add({x:-o,y:0}),g.clone().add({x:0,y:o}),g.clone().add({x:0,y:-o}),g.clone().add({x:o,y:o}),g.clone().add({x:-o,y:-o}))}e.min(...l),t.max(...l)}}),{min:e,max:t}}strokeTriangulate(e){const t=(e==null?void 0:e.indices)??[],i=(e==null?void 0:e.vertices)??[];return this.curves.forEach(r=>{r.strokeTriangulate({...e,indices:t,vertices:i})}),{indices:t,vertices:i}}getBoundingBox(e=!0){const{min:t,max:i}=this.getMinMax(void 0,void 0,e);return new ue(t.x,t.y,i.x-t.x,i.y-t.y)}drawTo(e,t={}){t={...this.style,...t};const{fill:i="#000",stroke:r="none"}=t;return e.beginPath(),e.save(),Js(e,t),this.curves.forEach(n=>{n.drawTo(e)}),i!=="none"&&e.fill(),r!=="none"&&e.stroke(),e.restore(),this}drawControlPointsTo(e,t={}){t={...this.style,...t};const{fill:i="#000",stroke:r="none"}=t;return e.beginPath(),e.save(),Js(e,t),this.getControlPointRefs().forEach(n=>{Vg(e,n.x,n.y,{radius:4})}),i!=="none"&&e.fill(),r!=="none"&&e.stroke(),e.restore(),this}toCommands(){return this.curves.flatMap(e=>e.toCommands())}toData(){return this.curves.filter(e=>e.curves.length).map(e=>e.toData()).join(" ")}toSVGPathString(){const e={...this.style,fill:this.style.fill??"#000",stroke:this.style.stroke??"none"},t={};for(const r in e)e[r]!==void 0&&(t[Dc(r)]=e[r]);Object.assign(t,{"stroke-width":`${this.strokeWidth}px`});let i="";for(const r in t)t[r]!==void 0&&(i+=`${r}:${t[r]};`);return`<path d="${this.toData()}" style="${i}"></path>`}copy(e){return super.copy(e),this.currentCurve=e.currentCurve.clone(),this.style={...e.style},this}}class iA{constructor(A=[],e){this.paths=A,this.viewBox=e}getBoundingBox(A=!0){if(!this.paths.length)return;const e=F.MAX,t=F.MIN;return this.paths.forEach(i=>i.getMinMax(e,t,A)),new ue(e.x,e.y,t.x-e.x,t.y-e.y)}toSVGString(){const{x:A,y:e,width:t,height:i}=this.getBoundingBox(),r=this.paths.map(n=>n.toSVGPathString()).join("");return`<svg viewBox="${A} ${e} ${t} ${i}" width="${t}px" height="${i}px" xmlns="http://www.w3.org/2000/svg">${r}</svg>`}toSVGUrl(){return`data:image/svg+xml;base64,${btoa(this.toSVGString())}`}toSVG(){return new DOMParser().parseFromString(this.toSVGString(),"image/svg+xml").documentElement}toCanvas(A={}){const{pixelRatio:e=2,...t}=A,{left:i,top:r,width:n,height:o}=this.getBoundingBox(),a=document.createElement("canvas");a.width=n*e,a.height=o*e,a.style.width=`${n}px`,a.style.height=`${o}px`;const l=a.getContext("2d");return l&&(l.scale(e,e),l.translate(-i,-r),this.paths.forEach(h=>{h.drawTo(l,t)})),a}}const Da="data:image/svg+xml;",ba=`${Da}base64,`,xa=`${Da}charset=utf8,`;function Xs(s){if(typeof s=="string"){let A;s.startsWith(ba)?(s=s.substring(ba.length,s.length),A=atob(s)):s.startsWith(xa)?(s=s.substring(xa.length,s.length),A=decodeURIComponent(s)):A=s;const e=new DOMParser().parseFromString(A,"text/xml"),t=e.querySelector("parsererror");if(t)throw new Error(`${t.textContent??"parser error"}
276
+ ${A}`);return e.documentElement}else return s}const xc="px",Sc=90,Sa=["mm","cm","in","pt","pc","px"],Ma={mm:{mm:1,cm:.1,in:1/25.4,pt:72/25.4,pc:6/25.4,px:-1},cm:{mm:10,cm:1,in:1/2.54,pt:72/2.54,pc:6/2.54,px:-1},in:{mm:25.4,cm:2.54,in:1,pt:72,pc:6,px:-1},pt:{mm:25.4/72,cm:2.54/72,in:1/72,pt:1,pc:6/72,px:-1},pc:{mm:25.4/6,cm:2.54/6,in:1/6,pt:72/6,pc:1,px:-1},px:{px:1}};function Ee(s){let A="px";if(typeof s=="string"||s instanceof String)for(let t=0,i=Sa.length;t<i;t++){const r=Sa[t];if(s.endsWith(r)){A=r,s=s.substring(0,s.length-r.length);break}}let e;return e=Ma[A][xc],e<0&&(e=Ma[A].in*Sc),e*Number.parseFloat(s)}const Mc=new Je,Br=new Je,Ra=new Je,Pa=new Je;function Rc(s,A,e){if(!(s.hasAttribute("transform")||s.nodeName==="use"&&(s.hasAttribute("x")||s.hasAttribute("y"))))return null;const t=Pc(s);return e.length>0&&t.premultiply(e[e.length-1]),A.copy(t),e.push(t),t}function Pc(s){const A=new Je,e=Mc;if(s.nodeName==="use"&&(s.hasAttribute("x")||s.hasAttribute("y"))&&A.translate(Ee(s.getAttribute("x")),Ee(s.getAttribute("y"))),s.hasAttribute("transform")){const t=s.getAttribute("transform").split(")");for(let i=t.length-1;i>=0;i--){const r=t[i].trim();if(r==="")continue;const n=r.indexOf("("),o=r.length;if(n>0&&n<o){const a=r.slice(0,n),l=xt(r.slice(n+1));switch(e.identity(),a){case"translate":if(l.length>=1){const h=l[0];let g=0;l.length>=2&&(g=l[1]),e.translate(h,g)}break;case"rotate":if(l.length>=1){let h=0,g=0,f=0;h=l[0]*Math.PI/180,l.length>=3&&(g=l[1],f=l[2]),Br.makeTranslation(-g,-f),Ra.makeRotation(h),Pa.multiplyMatrices(Ra,Br),Br.makeTranslation(g,f),e.multiplyMatrices(Br,Pa)}break;case"scale":l.length>=1&&e.scale(l[0],l[1]??l[0]);break;case"skewX":l.length===1&&e.set(1,Math.tan(l[0]*Math.PI/180),0,0,1,0,0,0,1);break;case"skewY":l.length===1&&e.set(1,0,0,Math.tan(l[0]*Math.PI/180),1,0,0,0,1);break;case"matrix":l.length===6&&e.set(l[0],l[2],l[4],l[1],l[3],l[5],0,0,1);break}}A.premultiply(e)}}return A}function Uc(s){return new ke().arc(Ee(s.getAttribute("cx")||0),Ee(s.getAttribute("cy")||0),Ee(s.getAttribute("r")||0),0,Math.PI*2)}function kc(s,A){if(!(!s.sheet||!s.sheet.cssRules||!s.sheet.cssRules.length))for(let e=0;e<s.sheet.cssRules.length;e++){const t=s.sheet.cssRules[e];if(t.type!==1)continue;const i=t.selectorText.split(/,/g).filter(Boolean).map(n=>n.trim()),r={};for(let n=t.style.length,o=0;o<n;o++){const a=t.style.item(o);r[a]=t.style.getPropertyValue(a)}for(let n=0;n<i.length;n++)A[i[n]]=Object.assign(A[i[n]]||{},{...r})}}function Nc(s){return new ke().ellipse(Ee(s.getAttribute("cx")||0),Ee(s.getAttribute("cy")||0),Ee(s.getAttribute("rx")||0),Ee(s.getAttribute("ry")||0),0,0,Math.PI*2)}function Fc(s){return new ke().moveTo(Ee(s.getAttribute("x1")||0),Ee(s.getAttribute("y1")||0)).lineTo(Ee(s.getAttribute("x2")||0),Ee(s.getAttribute("y2")||0))}function Tc(s){const A=new ke,e=s.getAttribute("d");return!e||e==="none"?null:(A.addData(e),A)}const Lc=/([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;function Gc(s){var t;const A=new ke;let e=0;return(t=s.getAttribute("points"))==null||t.replace(Lc,(i,r,n)=>{const o=Ee(r),a=Ee(n);return e===0?A.moveTo(o,a):A.lineTo(o,a),e++,i}),A.currentCurve.autoClose=!0,A}const Oc=/([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/g;function Hc(s){var t;const A=new ke;let e=0;return(t=s.getAttribute("points"))==null||t.replace(Oc,(i,r,n)=>{const o=Ee(r),a=Ee(n);return e===0?A.moveTo(o,a):A.lineTo(o,a),e++,i}),A.currentCurve.autoClose=!1,A}function Jc(s){const A=Ee(s.getAttribute("x")||0),e=Ee(s.getAttribute("y")||0),t=Ee(s.getAttribute("rx")||s.getAttribute("ry")||0),i=Ee(s.getAttribute("ry")||s.getAttribute("rx")||0),r=Ee(s.getAttribute("width")),n=Ee(s.getAttribute("height")),o=1-.551915024494,a=new ke;return a.moveTo(A+t,e),a.lineTo(A+r-t,e),(t!==0||i!==0)&&a.bezierCurveTo(A+r-t*o,e,A+r,e+i*o,A+r,e+i),a.lineTo(A+r,e+n-i),(t!==0||i!==0)&&a.bezierCurveTo(A+r,e+n-i*o,A+r-t*o,e+n,A+r-t,e+n),a.lineTo(A+t,e+n),(t!==0||i!==0)&&a.bezierCurveTo(A+t*o,e+n,A,e+n-i*o,A,e+n-i),a.lineTo(A,e+i),(t!==0||i!==0)&&a.bezierCurveTo(A,e+i*o,A+t*o,e,A+t,e),a}function St(s,A,e){A=Object.assign({},A);let t={};if(s.hasAttribute("class")){const l=s.getAttribute("class").split(/\s/).filter(Boolean).map(h=>h.trim());for(let h=0;h<l.length;h++)t=Object.assign(t,e[`.${l[h]}`])}s.hasAttribute("id")&&(t=Object.assign(t,e[`#${s.getAttribute("id")}`]));for(let l=s.style.length,h=0;h<l;h++){const g=s.style.item(h),f=s.style.getPropertyValue(g);A[g]=f,t[g]=f}function i(l,h,g=r){s.hasAttribute(l)&&(A[h]=g(s.getAttribute(l))),t[l]&&(A[h]=g(t[l]))}function r(l){return l.startsWith("url")&&console.warn("url access in attributes is not implemented."),l}function n(l){return Math.max(0,Math.min(1,Ee(l)))}function o(l){return Math.max(0,Ee(l))}function a(l){return l.split(" ").filter(h=>h!=="").map(h=>Ee(h))}return i("fill","fill"),i("fill-opacity","fillOpacity",n),i("fill-rule","fillRule"),i("opacity","opacity",n),i("stroke","stroke"),i("stroke-opacity","strokeOpacity",n),i("stroke-width","strokeWidth",o),i("stroke-linecap","strokeLinecap"),i("stroke-linejoin","strokeLinejoin"),i("stroke-miterlimit","strokeMiterlimit",o),i("stroke-dasharray","strokeDasharray",a),i("stroke-dashoffset","strokeDashoffset",Ee),i("visibility","visibility"),A}function js(s,A,e=[],t={}){var g;if(s.nodeType!==1)return e;let i=!1,r=null,n={...A};switch(s.nodeName){case"svg":n=St(s,n,t);break;case"style":kc(s,t);break;case"g":n=St(s,n,t);break;case"path":n=St(s,n,t),s.hasAttribute("d")&&(r=Tc(s));break;case"rect":n=St(s,n,t),r=Jc(s);break;case"polygon":n=St(s,n,t),r=Gc(s);break;case"polyline":n=St(s,n,t),r=Hc(s);break;case"circle":n=St(s,n,t),r=Uc(s);break;case"ellipse":n=St(s,n,t),r=Nc(s);break;case"line":n=St(s,n,t),r=Fc(s);break;case"defs":i=!0;break;case"use":{n=St(s,n,t);const I=(s.getAttributeNS("http://www.w3.org/1999/xlink","href")||s.getAttribute("href")||"").substring(1),d=(g=s.viewportElement)==null?void 0:g.getElementById(I);d?js(d,n,e,t):console.warn(`'use node' references non-existent node id: ${I}`);break}default:console.warn(s);break}if(n.display==="none")return e;const o=new Je,a=[],l=Rc(s,o,a);r&&(r.applyTransform(o),e.push(r),r.style={...n});const h=s.childNodes;for(let f=0,I=h.length;f<I;f++){const d=h[f];i&&d.nodeName!=="style"&&d.nodeName!=="defs"||js(d,n,e,t)}return l&&(a.pop(),a.length>0?o.copy(a[a.length-1]):o.identity()),e}function Zs(s){var e;const A=Xs(s);return new iA(js(A,{}),(e=A.getAttribute("viewBox"))==null?void 0:e.trim().split(" ").map(t=>Number(t)))}class Ua extends ke{constructor(){super(...arguments);u(this,"textureTransform");u(this,"fillStyle");u(this,"strokeStyle");u(this,"lineCap");u(this,"lineJoin");u(this,"lineWidth");u(this,"miterLimit");u(this,"_defaultStyle",ve.EMPTY);u(this,"_draws",[])}stroke(e){let t=this._defaultStyle;this.strokeStyle&&(this.strokeStyle instanceof ve?t=this.strokeStyle:t=new Us(this.strokeStyle)),this.curves.length&&(this._draws.push({...e,type:"stroke",path:new ke(this),texture:t,textureTransform:this.textureTransform,style:{alignment:.5,cap:this.lineCap??"butt",join:this.lineJoin??"miter",width:this.lineWidth??1,miterLimit:this.miterLimit??10}}),super.reset())}fillRect(e,t,i,r){this.rect(e,t,i,r).fill()}strokeRect(e,t,i,r){this.rect(e,t,i,r).stroke()}fill(e){let t=this._defaultStyle;this.fillStyle&&(this.fillStyle instanceof ve?t=this.fillStyle:t=new Us(this.fillStyle)),this._draws.push({...e,type:"fill",path:new ke(this),texture:t,textureTransform:this.textureTransform}),super.reset()}copy(e){return super.copy(e),this.strokeStyle=e.strokeStyle,this.fillStyle=e.fillStyle,this.textureTransform=e.textureTransform,this.lineCap=e.lineCap,this.lineJoin=e.lineJoin,this.lineWidth=e.lineWidth,this.miterLimit=e.miterLimit,this._draws=e._draws.slice(),this}reset(){return super.reset(),this.strokeStyle=void 0,this.fillStyle=void 0,this.textureTransform=void 0,this.lineCap=void 0,this.lineJoin=void 0,this.lineWidth=void 0,this.miterLimit=void 0,this._draws.length=0,this}buildUvs(e,t,i,r,n){if(r){const o=r.width,a=r.height;for(let l=t.length,h=e;h<l;h+=2){const g=t[h],f=t[h+1];let I,d;n?[I,d]=n==null?void 0:n.applyToPoint(g,f):[I,d]=[g/o,f/a],i.push(I,d)}}else for(let o=t.length,a=e;a<o;a+=2)i.push(0,0)}toBatchables(){const e=[];let t=[],i=[],r=[],n;const o=l=>{e.push({vertices:t,indices:i,uvs:r,texture:n,type:l.type,disableWrapMode:l.disableWrapMode}),t=[],i=[],r=[],n=void 0};for(let l=this._draws.length,h=0;h<l;h++){const g=this._draws[h],f=this._draws[h-1];t.length&&f&&(f==null?void 0:f.type)!==g.type&&o(f);const I=n;I||(n=g.texture),t.length&&I!==g.texture&&!(I!=null&&I.is(g.texture))&&(o(g),n=g.texture);const d=t.length;g.type==="fill"?(g.path.fillTriangulate({vertices:t,indices:i}),this.buildUvs(d,t,r,g.texture,g.textureTransform)):(g.path.strokeTriangulate({vertices:t,indices:i,lineStyle:g.style,flipAlignment:!1,closed:!0}),this.buildUvs(d,t,r,g.texture,g.textureTransform))}const a=this._draws[this._draws.length-1];return a&&t.length&&o(a),e}}var Kc=Object.defineProperty,Yc=Object.getOwnPropertyDescriptor,Ri=(s,A,e,t)=>{for(var i=t>1?void 0:t?Yc(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Kc(A,e,i),i};c.CanvasItem=class extends c.TimelineNode{constructor(e,t=[]){super();u(this,"_parentGlobalVisible");u(this,"_globalVisible");u(this,"_parentGlobalOpacity");u(this,"_globalOpacity");u(this,"_modulate",new Wt(4294967295));u(this,"context",new Ua);u(this,"_resetContext",!0);u(this,"_redrawing",!1);u(this,"_relayouting",!1);u(this,"_repainting",!1);u(this,"_originalBatchables",[]);u(this,"_layoutedBatchables",[]);u(this,"_batchables",[]);this.setProperties(e).append(t)}get globalVisible(){return this._globalVisible??!0}get globalOpacity(){return this._globalOpacity??1}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"modulate":this._modulate.value=t,this.requestRepaint();break;case"blendMode":this.requestRepaint();break;case"opacity":this._updateGlobalOpacity();break;case"visible":case"insideTimeRange":this._updateGlobalVisible();break}}show(){this.visible=!0}hide(){this.visible=!1}isVisibleInTree(){return this.globalOpacity>0&&this.globalVisible}canRender(){return super.canRender()&&this.isVisibleInTree()}requestRedraw(){this._redrawing=!0,this.requestUpdate()}requestRelayout(){this._relayouting=!0,this.requestUpdate()}requestRepaint(){this._repainting=!0,this.requestUpdate()}_updateGlobalVisible(){var e;this._parentGlobalVisible=(e=this.getParent())==null?void 0:e.globalVisible,this._globalVisible=(this._parentGlobalVisible??!0)&&this.visible&&this.insideTimeRange}_updateGlobalOpacity(){var t;this._parentGlobalOpacity=(t=this.getParent())==null?void 0:t.opacity;const e=bt(0,this.opacity,1)*(this._parentGlobalOpacity??1);this._globalOpacity!==e&&(this._globalOpacity=e,this.requestRepaint())}_draw(){this.emit("draw")}_redraw(){var e;return(e=this._tree)==null||e.log(this.name,"redrawing"),this._draw(),this.context.toBatchables()}_relayout(e){var t;return(t=this._tree)==null||t.log(this.name,"relayouting"),e}_repaint(e){var t;return(t=this._tree)==null||t.log(this.name,"repainting"),e.map(i=>({...i,modulate:this._modulate.toArgb(this.globalOpacity,!0),blendMode:this.blendMode}))}_process(e){super._process(e);const t=this.getParent();this._parentGlobalVisible!==(t==null?void 0:t.globalVisible)&&this.requestUpdate(),this._parentGlobalOpacity!==(t==null?void 0:t.globalOpacity)&&this.requestUpdate()}_update(){const e=this.getParent();this._parentGlobalVisible!==(e==null?void 0:e.globalVisible)&&this._updateGlobalVisible(),this._parentGlobalOpacity!==(e==null?void 0:e.globalOpacity)&&this._updateGlobalOpacity();const t=this._redrawing;let i=this._relayouting,r=this._repainting,n;t&&(this._originalBatchables=this._redraw(),i=!0),i&&(this._layoutedBatchables=this._relayout(this._originalBatchables),r=!0),r&&(n=this._repaint(this._layoutedBatchables)),t&&this._resetContext&&this.context.reset(),n&&(this._batchables=n,this._redrawing=!1,this._relayouting=!1,this._repainting=!1)}_render(e){this._batchables.forEach(t=>{var i,r;(i=t.texture)==null||i.upload(e),e.batch2D.render({...t,texture:(r=t.texture)==null?void 0:r._glTexture(e)})}),super._render(e)}},Ri([S()],c.CanvasItem.prototype,"modulate",2),Ri([S()],c.CanvasItem.prototype,"blendMode",2),Ri([Be({default:!0})],c.CanvasItem.prototype,"visible",2),Ri([Be({default:1})],c.CanvasItem.prototype,"opacity",2),c.CanvasItem=Ri([te("CanvasItem")],c.CanvasItem);class Wc{constructor(){u(this,"currentCall");u(this,"calls",[])}createCall(A){return{renderable:A,parentCall:this.currentCall,fn:A.render.bind(A),calls:[]}}push(A){var t;const e=this.createCall(A);return(((t=this.currentCall)==null?void 0:t.calls)??this.calls).push(e),e}render(A){this.calls.forEach(function e(t){t.fn(A,()=>{t.calls.forEach(e)})}),this.calls=[]}}var zc=Object.defineProperty,Vc=Object.getOwnPropertyDescriptor,Pi=(s,A,e,t)=>{for(var i=t>1?void 0:t?Vc(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&zc(A,e,i),i};c.Timeline=class extends c.Node{static from(A,e=!1){const[t,i]=A?Array.isArray(A)?A:[0,A]:[];return new c.Timeline({startTime:t,endTime:i,loop:e})}constructor(A){super(),this.setProperties(A)}_updateProperty(A,e,t){switch(super._updateProperty(A,e,t),A){case"startTime":this.startTime=Math.min(e,this.endTime);break;case"endTime":this.endTime=e||Number.MAX_SAFE_INTEGER;break}}addTime(A){const e=this.startTime,t=this.endTime;let i=this.currentTime;return i=i+A,this.loop&&i>t&&(i=e+i%t),i=bt(e,i,t),this.currentTime=i,this.emit("updateCurrentTime",i,A),this}_process(A){super._process(A),this.addTime(A)}},Pi([S({default:0})],c.Timeline.prototype,"startTime",2),Pi([S({default:0})],c.Timeline.prototype,"currentTime",2),Pi([S({default:Number.MAX_SAFE_INTEGER})],c.Timeline.prototype,"endTime",2),Pi([S({default:!1})],c.Timeline.prototype,"loop",2),c.Timeline=Pi([te("Timeline")],c.Timeline);var qc=Object.defineProperty,$s=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&qc(A,e,i),i};class Ui extends ar{constructor(e=new c.Timeline){super();u(this,"input",new Io);u(this,"renderStack",new Wc);u(this,"root",new c.Viewport(!0).setTree(this));u(this,"timeline");u(this,"_backgroundColor",new Wt);u(this,"_currentViewport");this.timeline=e.setTree(this)}getCurrentViewport(){return this._currentViewport}setCurrentViewport(e){this._currentViewport=e}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"backgroundColor":this._backgroundColor.value=t;break}}log(...e){this.debug&&console.log("[modern-canvas]",...e)}_process(e=0){this.timeline.emit("process",e),this.emit("processing"),this.root.emit("process",e),this.emit("processed")}_render(e){this.emit("rendering"),e.program.uniforms.projectionMatrix=this.root.toProjectionArray(!0),this.renderStack.render(e),this._renderScreen(e),this.emit("rendered")}_renderScreen(e){e.state.reset(),e.framebuffer.bind(null),e.viewport.bind({x:0,y:0,width:this.root.width*e.pixelRatio,height:this.root.height*e.pixelRatio}),this.backgroundColor&&e.gl.clearColor(...this._backgroundColor.toArray()),e.clear(),this.backgroundColor&&e.gl.clearColor(0,0,0,0);const t=this.root.texture;t.activate(e,0),ce.draw(e),e.texture.unbind(t)}free(){super.free(),this.root.getChildren(!0).forEach(e=>this.root.removeChild(e)),this.input.removeEventListeners()}}$s([S({default:!1})],Ui.prototype,"processPaused"),$s([S()],Ui.prototype,"backgroundColor"),$s([Be({default:!1})],Ui.prototype,"debug");var Xc=Object.getOwnPropertyDescriptor,jc=(s,A,e,t)=>{for(var i=t>1?void 0:t?Xc(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};c.Transition=class extends c.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},c.Transition=jc([te("Transition",{effectMode:"transition",processMode:"pausable",duration:2e3})],c.Transition);var ka=Object.defineProperty,Zc=Object.getOwnPropertyDescriptor,$c=(s,A,e)=>A in s?ka(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,en=(s,A,e,t)=>{for(var i=t>1?void 0:t?Zc(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ka(A,e,i),i},Na=(s,A,e)=>$c(s,typeof A!="symbol"?A+"":A,e);const Fa=`varying vec2 vUv[9];
277
277
  uniform sampler2D sampler;
278
278
 
279
279
  void main(void) {
@@ -307,7 +307,7 @@ void main(void) {
307
307
  gl_FragColor += texture2D(sampler, vUv[7]) * 0.067234;
308
308
  gl_FragColor += texture2D(sampler, vUv[8]) * 0.028532;
309
309
  }
310
- }`;g.GaussianBlurEffect=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){const t=1/e.width,i=1/e.height,s=Math.max(this.quality,1);for(let n=0;n<s;n++)e.redraw(A,()=>{ce.draw(A,g.GaussianBlurEffect.materialX,{sampler:0,uStrength:t*(this.strength/s)})});for(let n=0;n<s;n++)e.redraw(A,()=>{ce.draw(A,g.GaussianBlurEffect.materialY,{sampler:0,uStrength:i*(this.strength/s)})})}},Fa(g.GaussianBlurEffect,"materialX",new pe({vert:`attribute vec2 position;
310
+ }`;c.GaussianBlurEffect=class extends c.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){const t=1/e.width,i=1/e.height,r=Math.max(this.quality,1);for(let n=0;n<r;n++)e.redraw(A,()=>{ce.draw(A,c.GaussianBlurEffect.materialX,{sampler:0,uStrength:t*(this.strength/r)})});for(let n=0;n<r;n++)e.redraw(A,()=>{ce.draw(A,c.GaussianBlurEffect.materialY,{sampler:0,uStrength:i*(this.strength/r)})})}},Na(c.GaussianBlurEffect,"materialX",new pe({vert:`attribute vec2 position;
311
311
  attribute vec2 uv;
312
312
  uniform float uStrength;
313
313
  varying vec2 vUv[9];
@@ -323,7 +323,7 @@ void main(void) {
323
323
  vUv[6] = uv + vec2(2.0 * uStrength, 0.0);
324
324
  vUv[7] = uv + vec2(3.0 * uStrength, 0.0);
325
325
  vUv[8] = uv + vec2(4.0 * uStrength, 0.0);
326
- }`,frag:Ta})),Fa(g.GaussianBlurEffect,"materialY",new pe({vert:`attribute vec2 position;
326
+ }`,frag:Fa})),Na(c.GaussianBlurEffect,"materialY",new pe({vert:`attribute vec2 position;
327
327
  attribute vec2 uv;
328
328
  uniform float uStrength;
329
329
  varying vec2 vUv[9];
@@ -339,7 +339,7 @@ void main(void) {
339
339
  vUv[6] = uv + vec2(0.0, 2.0 * uStrength);
340
340
  vUv[7] = uv + vec2(0.0, 3.0 * uStrength);
341
341
  vUv[8] = uv + vec2(0.0, 4.0 * uStrength);
342
- }`,frag:Ta})),en([M({default:4})],g.GaussianBlurEffect.prototype,"strength",2),en([M({default:3})],g.GaussianBlurEffect.prototype,"quality",2),g.GaussianBlurEffect=en([ee("GaussianBlurEffect")],g.GaussianBlurEffect);var La=Object.defineProperty,$c=Object.getOwnPropertyDescriptor,eu=(r,A,e)=>A in r?La(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,JA=(r,A,e,t)=>{for(var i=t>1?void 0:t?$c(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&La(A,e,i),i},tu=(r,A,e)=>eu(r,A+"",e);g.DropShadowEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"blurEffect",new g.GaussianBlurEffect);u(this,"viewport3",new g.Viewport);u(this,"_color",new Yt);this.setProperties(e).append(t)}apply(e,t){this.viewport3.activateWithCopy(e,t),this.viewport3.redraw(e,()=>{this._color.value=this.color,ce.draw(e,g.DropShadowEffect.material,{sampler:0,uAlpha:this._color.a,uColor:this._color.toArray().slice(0,3),uOffset:[-this.offsetX,this.offsetY],uInputSize:[t.width,t.height,1/t.width,1/t.height]})}),this.blurEffect.strength=this.blur,this.blurEffect.apply(e,this.viewport3),t.redraw(e,()=>{this.viewport3.texture.activate(e,1),ce.draw(e,FA.instance,{sampler:1}),this.shadowOnly||ce.draw(e,FA.instance,{sampler:0}),e.texture.unbind(1)})}},tu(g.DropShadowEffect,"material",new pe({vert:`precision mediump float;
342
+ }`,frag:Fa})),en([S({default:4})],c.GaussianBlurEffect.prototype,"strength",2),en([S({default:3})],c.GaussianBlurEffect.prototype,"quality",2),c.GaussianBlurEffect=en([te("GaussianBlurEffect")],c.GaussianBlurEffect);var Ta=Object.defineProperty,eu=Object.getOwnPropertyDescriptor,tu=(s,A,e)=>A in s?Ta(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,KA=(s,A,e,t)=>{for(var i=t>1?void 0:t?eu(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ta(A,e,i),i},Au=(s,A,e)=>tu(s,A+"",e);c.DropShadowEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"blurEffect",new c.GaussianBlurEffect);u(this,"viewport3",new c.Viewport);u(this,"_color",new Wt);this.setProperties(e).append(t)}apply(e,t){this.viewport3.activateWithCopy(e,t),this.viewport3.redraw(e,()=>{this._color.value=this.color,ce.draw(e,c.DropShadowEffect.material,{sampler:0,uAlpha:this._color.a,uColor:this._color.toArray().slice(0,3),uOffset:[-this.offsetX,this.offsetY],uInputSize:[t.width,t.height,1/t.width,1/t.height]})}),this.blurEffect.strength=this.blur,this.blurEffect.apply(e,this.viewport3),t.redraw(e,()=>{this.viewport3.texture.activate(e,1),ce.draw(e,TA.instance,{sampler:1}),this.shadowOnly||ce.draw(e,TA.instance,{sampler:0}),e.texture.unbind(1)})}},Au(c.DropShadowEffect,"material",new pe({vert:`precision mediump float;
343
343
  attribute vec2 position;
344
344
  attribute vec2 uv;
345
345
  varying vec2 vUv;
@@ -359,7 +359,7 @@ void main(void) {
359
359
  sample.rgb = uColor.rgb * sample.a;
360
360
  sample *= uAlpha;
361
361
  gl_FragColor = sample;
362
- }`})),JA([M({default:0})],g.DropShadowEffect.prototype,"color",2),JA([M({default:4})],g.DropShadowEffect.prototype,"blur",2),JA([M({default:4})],g.DropShadowEffect.prototype,"offsetX",2),JA([M({default:4})],g.DropShadowEffect.prototype,"offsetY",2),JA([M({default:!1})],g.DropShadowEffect.prototype,"shadowOnly",2),g.DropShadowEffect=JA([ee("DropShadowEffect")],g.DropShadowEffect);var Ga=Object.defineProperty,Au=Object.getOwnPropertyDescriptor,iu=(r,A,e)=>A in r?Ga(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Oa=(r,A,e,t)=>{for(var i=t>1?void 0:t?Au(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ga(A,e,i),i},ru=(r,A,e)=>iu(r,A+"",e);g.EmbossEffect=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){e.redraw(A,()=>{ce.draw(A,g.EmbossEffect.material,{sampler:0,strength:this.strength,inputSize:[e.width,e.height,1/e.width,1/e.height]})})}},ru(g.EmbossEffect,"material",new pe({vert:`precision mediump float;
362
+ }`})),KA([S({default:0})],c.DropShadowEffect.prototype,"color",2),KA([S({default:4})],c.DropShadowEffect.prototype,"blur",2),KA([S({default:4})],c.DropShadowEffect.prototype,"offsetX",2),KA([S({default:4})],c.DropShadowEffect.prototype,"offsetY",2),KA([S({default:!1})],c.DropShadowEffect.prototype,"shadowOnly",2),c.DropShadowEffect=KA([te("DropShadowEffect")],c.DropShadowEffect);var La=Object.defineProperty,iu=Object.getOwnPropertyDescriptor,ru=(s,A,e)=>A in s?La(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,Ga=(s,A,e,t)=>{for(var i=t>1?void 0:t?iu(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&La(A,e,i),i},su=(s,A,e)=>ru(s,A+"",e);c.EmbossEffect=class extends c.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){e.redraw(A,()=>{ce.draw(A,c.EmbossEffect.material,{sampler:0,strength:this.strength,inputSize:[e.width,e.height,1/e.width,1/e.height]})})}},su(c.EmbossEffect,"material",new pe({vert:`precision mediump float;
363
363
  attribute vec2 position;
364
364
  attribute vec2 uv;
365
365
  varying vec2 vUv;
@@ -381,7 +381,7 @@ void main(void) {
381
381
  color.rgb = vec3((color.r + color.g + color.b) / 3.0);
382
382
  float alpha = texture2D(sampler, vUv).a;
383
383
  gl_FragColor = vec4(color.rgb * alpha, alpha);
384
- }`})),Oa([M({default:5})],g.EmbossEffect.prototype,"strength",2),g.EmbossEffect=Oa([ee("EmbossEffect")],g.EmbossEffect);var Ha=Object.defineProperty,su=Object.getOwnPropertyDescriptor,nu=(r,A,e)=>A in r?Ha(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Mt=(r,A,e,t)=>{for(var i=t>1?void 0:t?su(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ha(A,e,i),i},ou=(r,A,e)=>nu(r,A+"",e);g.GlitchEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"_canvas");u(this,"_texture");u(this,"_sizes");u(this,"_offsets");u(this,"_needsRedraw",!1);this.setProperties(e).append(t),this._canvas=document.createElement("canvas"),this._canvas.width=4,this._canvas.height=this.sampleSize,this._texture=new ve(this._canvas),this._sizes=new Float32Array(this.slices),this._offsets=new Float32Array(this.slices)}redraw(){const e=this.sampleSize,t=this._texture,i=this._canvas.getContext("2d");i.clearRect(0,0,8,e);let s,n=0;for(let o=0;o<this.slices;o++){s=Math.floor(this._offsets[o]*256);const a=this._sizes[o]*e,l=s>0?s:0,h=s<0?-s:0;i.fillStyle=`rgba(${l}, ${h}, 0, 1)`,i.fillRect(0,n>>0,e,a+1>>0),n+=a}t.requestUpload()}apply(e,t){this._needsRedraw||(this._needsRedraw=!0,this.redraw());const i=t.width,s=t.height,n=this.direction*(Math.PI/180),o=Math.sin(n),a=Math.cos(n);t.redraw(e,()=>{this._texture.activate(e,1),ce.draw(e,g.GlitchEffect.material,{sampler:0,filterClamp:[0,0,1,1],filterArea:[i,s,0,0],dimensions:[i,s],aspect:s/i,displacementMap:1,offset:this.offset,sinDir:o,cosDir:a,fillMode:this.fillMode,seed:this.seed,red:this.red,green:this.green,blue:this.blue})})}},ou(g.GlitchEffect,"material",new pe({vert:`precision mediump float;
384
+ }`})),Ga([S({default:5})],c.EmbossEffect.prototype,"strength",2),c.EmbossEffect=Ga([te("EmbossEffect")],c.EmbossEffect);var Oa=Object.defineProperty,nu=Object.getOwnPropertyDescriptor,ou=(s,A,e)=>A in s?Oa(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,Mt=(s,A,e,t)=>{for(var i=t>1?void 0:t?nu(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Oa(A,e,i),i},au=(s,A,e)=>ou(s,A+"",e);c.GlitchEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"_canvas");u(this,"_texture");u(this,"_sizes");u(this,"_offsets");u(this,"_needsRedraw",!1);this.setProperties(e).append(t),this._canvas=document.createElement("canvas"),this._canvas.width=4,this._canvas.height=this.sampleSize,this._texture=new ve(this._canvas),this._sizes=new Float32Array(this.slices),this._offsets=new Float32Array(this.slices)}redraw(){const e=this.sampleSize,t=this._texture,i=this._canvas.getContext("2d");i.clearRect(0,0,8,e);let r,n=0;for(let o=0;o<this.slices;o++){r=Math.floor(this._offsets[o]*256);const a=this._sizes[o]*e,l=r>0?r:0,h=r<0?-r:0;i.fillStyle=`rgba(${l}, ${h}, 0, 1)`,i.fillRect(0,n>>0,e,a+1>>0),n+=a}t.requestUpload()}apply(e,t){this._needsRedraw||(this._needsRedraw=!0,this.redraw());const i=t.width,r=t.height,n=this.direction*(Math.PI/180),o=Math.sin(n),a=Math.cos(n);t.redraw(e,()=>{this._texture.activate(e,1),ce.draw(e,c.GlitchEffect.material,{sampler:0,filterClamp:[0,0,1,1],filterArea:[i,r,0,0],dimensions:[i,r],aspect:r/i,displacementMap:1,offset:this.offset,sinDir:o,cosDir:a,fillMode:this.fillMode,seed:this.seed,red:this.red,green:this.green,blue:this.blue})})}},au(c.GlitchEffect,"material",new pe({vert:`precision mediump float;
385
385
  attribute vec2 position;
386
386
  attribute vec2 uv;
387
387
  varying vec2 vUv;
@@ -482,7 +482,7 @@ void main(void) {
482
482
  gl_FragColor.g = texture2D(sampler, coord + green * (1.0 - seed * 0.3) / filterArea.xy).g;
483
483
  gl_FragColor.b = texture2D(sampler, coord + blue * (1.0 - seed * 0.2) / filterArea.xy).b;
484
484
  gl_FragColor.a = texture2D(sampler, coord).a;
485
- }`})),Mt([M({default:10})],g.GlitchEffect.prototype,"slices",2),Mt([M({default:512})],g.GlitchEffect.prototype,"sampleSize",2),Mt([M({default:100})],g.GlitchEffect.prototype,"offset",2),Mt([M({default:0})],g.GlitchEffect.prototype,"direction",2),Mt([M({default:2})],g.GlitchEffect.prototype,"fillMode",2),Mt([M({default:0})],g.GlitchEffect.prototype,"seed",2),Mt([M({default:[2,2]})],g.GlitchEffect.prototype,"red",2),Mt([M({default:[-10,4]})],g.GlitchEffect.prototype,"green",2),Mt([M({default:[10,-4]})],g.GlitchEffect.prototype,"blue",2),g.GlitchEffect=Mt([ee("GlitchEffect")],g.GlitchEffect);var Ja=Object.defineProperty,au=Object.getOwnPropertyDescriptor,lu=(r,A,e)=>A in r?Ja(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,AA=(r,A,e,t)=>{for(var i=t>1?void 0:t?au(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ja(A,e,i),i},hu=(r,A,e)=>lu(r,A+"",e);const gu=`vec3 mod289(vec3 x)
485
+ }`})),Mt([S({default:10})],c.GlitchEffect.prototype,"slices",2),Mt([S({default:512})],c.GlitchEffect.prototype,"sampleSize",2),Mt([S({default:100})],c.GlitchEffect.prototype,"offset",2),Mt([S({default:0})],c.GlitchEffect.prototype,"direction",2),Mt([S({default:2})],c.GlitchEffect.prototype,"fillMode",2),Mt([S({default:0})],c.GlitchEffect.prototype,"seed",2),Mt([S({default:[2,2]})],c.GlitchEffect.prototype,"red",2),Mt([S({default:[-10,4]})],c.GlitchEffect.prototype,"green",2),Mt([S({default:[10,-4]})],c.GlitchEffect.prototype,"blue",2),c.GlitchEffect=Mt([te("GlitchEffect")],c.GlitchEffect);var Ha=Object.defineProperty,lu=Object.getOwnPropertyDescriptor,hu=(s,A,e)=>A in s?Ha(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,rA=(s,A,e,t)=>{for(var i=t>1?void 0:t?lu(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ha(A,e,i),i},gu=(s,A,e)=>hu(s,A+"",e);const cu=`vec3 mod289(vec3 x)
486
486
  {
487
487
  return x - floor(x * (1.0 / 289.0)) * 289.0;
488
488
  }
@@ -576,7 +576,7 @@ float turb(vec3 P, vec3 rep, float lacunarity, float gain)
576
576
  totalgain *= gain;
577
577
  }
578
578
  return abs(sum);
579
- }`;g.GodrayEffect=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){const t=this.angle*(Math.PI/180),i=this.parallel?[Math.cos(t),Math.sin(t)]:this.center;e.redraw(A,()=>{ce.draw(A,g.GodrayEffect.material,{sampler:0,uDimensions:[e.width,e.height],uParallel:this.parallel?1:0,uLight:i,uAspect:e.height/e.width,uTime:this.time,uRay:[this.gain,this.lacunarity,this.alpha],uInputSize:[e.width,e.height,0,0]})})}},hu(g.GodrayEffect,"material",new pe({vert:`precision mediump float;
579
+ }`;c.GodrayEffect=class extends c.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){const t=this.angle*(Math.PI/180),i=this.parallel?[Math.cos(t),Math.sin(t)]:this.center;e.redraw(A,()=>{ce.draw(A,c.GodrayEffect.material,{sampler:0,uDimensions:[e.width,e.height],uParallel:this.parallel?1:0,uLight:i,uAspect:e.height/e.width,uTime:this.time,uRay:[this.gain,this.lacunarity,this.alpha],uInputSize:[e.width,e.height,0,0]})})}},gu(c.GodrayEffect,"material",new pe({vert:`precision mediump float;
580
580
  attribute vec2 position;
581
581
  attribute vec2 uv;
582
582
  varying vec2 vUv;
@@ -594,7 +594,7 @@ uniform float uTime;
594
594
  uniform vec3 uRay;
595
595
  uniform vec4 uInputSize;
596
596
 
597
- ${gu}
597
+ ${cu}
598
598
 
599
599
  void main(void) {
600
600
  bool uParallel = uParallel > 0.5;
@@ -625,7 +625,7 @@ void main(void) {
625
625
 
626
626
  vec4 color = texture2D(sampler, vUv);
627
627
  gl_FragColor = vec4(color.rgb + mist.rgb, color.a);
628
- }`})),AA([M({default:0})],g.GodrayEffect.prototype,"time",2),AA([M({default:30})],g.GodrayEffect.prototype,"angle",2),AA([M({default:.5})],g.GodrayEffect.prototype,"gain",2),AA([M({default:2.5})],g.GodrayEffect.prototype,"lacunarity",2),AA([M({default:!0})],g.GodrayEffect.prototype,"parallel",2),AA([M({default:[0,0]})],g.GodrayEffect.prototype,"center",2),AA([M({default:1})],g.GodrayEffect.prototype,"alpha",2),g.GodrayEffect=AA([ee("GodrayEffect")],g.GodrayEffect);var cu=Object.defineProperty,uu=Object.getOwnPropertyDescriptor,Er=(r,A,e,t)=>{for(var i=t>1?void 0:t?uu(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&cu(A,e,i),i};const Ka=`varying vec2 vUv;
628
+ }`})),rA([S({default:0})],c.GodrayEffect.prototype,"time",2),rA([S({default:30})],c.GodrayEffect.prototype,"angle",2),rA([S({default:.5})],c.GodrayEffect.prototype,"gain",2),rA([S({default:2.5})],c.GodrayEffect.prototype,"lacunarity",2),rA([S({default:!0})],c.GodrayEffect.prototype,"parallel",2),rA([S({default:[0,0]})],c.GodrayEffect.prototype,"center",2),rA([S({default:1})],c.GodrayEffect.prototype,"alpha",2),c.GodrayEffect=rA([te("GodrayEffect")],c.GodrayEffect);var uu=Object.defineProperty,fu=Object.getOwnPropertyDescriptor,Er=(s,A,e,t)=>{for(var i=t>1?void 0:t?fu(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&uu(A,e,i),i};const Ja=`varying vec2 vUv;
629
629
  uniform sampler2D sampler;
630
630
  uniform vec2 uOffset;
631
631
 
@@ -637,7 +637,7 @@ void main(void) {
637
637
  color += texture2D(sampler, vec2(vUv.x - uOffset.x, vUv.y - uOffset.y));
638
638
  color *= 0.25;
639
639
  gl_FragColor = color;
640
- }`,Ya=`precision highp float;
640
+ }`,Ka=`precision highp float;
641
641
  varying vec2 vUv;
642
642
  uniform sampler2D sampler;
643
643
  uniform vec2 uOffset;
@@ -650,14 +650,14 @@ void main(void) {
650
650
  color += texture2D(sampler, clamp(vec2(vUv.x - uOffset.x, vUv.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));
651
651
  color *= 0.25;
652
652
  gl_FragColor = color;
653
- }`;g.KawaseBlurEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"material");u(this,"_kernels",[0]);this.material=new pe({vert:`precision mediump float;
653
+ }`;c.KawaseBlurEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"material");u(this,"_kernels",[0]);this.material=new pe({vert:`precision mediump float;
654
654
  attribute vec2 position;
655
655
  attribute vec2 uv;
656
656
  varying vec2 vUv;
657
657
  void main() {
658
658
  gl_Position = vec4(position, 0.0, 1.0);
659
659
  vUv = uv;
660
- }`,frag:e!=null&&e.clamp?Ya:Ka}),this.setProperties(e).append(t),this._generateKernels()}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"quality":case"strength":this._generateKernels();break}}_generateKernels(){const e=Math.max(1,Math.round(this.strength)),t=Math.max(1,Math.round(this.quality)),i=[e];if(e>0){let s=e;const n=e/t;for(let o=1;o<t;o++)s-=n,i.push(s)}this._kernels=i}apply(e,t){const i=this.pixelSize[0]/t.width,s=this.pixelSize[1]/t.height;this._kernels.forEach(n=>{const o=n+.5;t.redraw(e,()=>{ce.draw(e,this.material,{sampler:0,uOffset:[o*i,o*s],uInputClamp:[0,0,1,1]})})})}},Er([M({default:4})],g.KawaseBlurEffect.prototype,"strength",2),Er([M({default:3})],g.KawaseBlurEffect.prototype,"quality",2),Er([M({default:[1,1]})],g.KawaseBlurEffect.prototype,"pixelSize",2),g.KawaseBlurEffect=Er([ee("KawaseBlurEffect")],g.KawaseBlurEffect);var Wa=Object.defineProperty,fu=Object.getOwnPropertyDescriptor,du=(r,A,e)=>A in r?Wa(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,tn=(r,A,e,t)=>{for(var i=t>1?void 0:t?fu(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Wa(A,e,i),i},Iu=(r,A,e)=>du(r,A+"",e);g.MaskEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"texture");this.setProperties(e).append(t)}async load(){this.texture=void 0,this.src&&(this.texture=await Nt.texture.load(this.src))}_updateProperty(e,t,i,s){var n;switch(super._updateProperty(e,t,i,s),e){case"src":this.load();break;case"texture":(n=i==null?void 0:i.free)==null||n.call(i);break}}apply(e,t,i){this.texture&&i.targetArea&&t.redraw(e,()=>{var s;this.texture.activate(e,1),ce.draw(e,g.MaskEffect.material,{sampler:0,mask:1,area:i.targetArea,rotation:((s=i.target)==null?void 0:s.globalRotation)??0}),e.texture.unbind(1)})}},Iu(g.MaskEffect,"material",new pe({vert:`precision mediump float;
660
+ }`,frag:e!=null&&e.clamp?Ka:Ja}),this.setProperties(e).append(t),this._generateKernels()}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"quality":case"strength":this._generateKernels();break}}_generateKernels(){const e=Math.max(1,Math.round(this.strength)),t=Math.max(1,Math.round(this.quality)),i=[e];if(e>0){let r=e;const n=e/t;for(let o=1;o<t;o++)r-=n,i.push(r)}this._kernels=i}apply(e,t){const i=this.pixelSize[0]/t.width,r=this.pixelSize[1]/t.height;this._kernels.forEach(n=>{const o=n+.5;t.redraw(e,()=>{ce.draw(e,this.material,{sampler:0,uOffset:[o*i,o*r],uInputClamp:[0,0,1,1]})})})}},Er([S({default:4})],c.KawaseBlurEffect.prototype,"strength",2),Er([S({default:3})],c.KawaseBlurEffect.prototype,"quality",2),Er([S({default:[1,1]})],c.KawaseBlurEffect.prototype,"pixelSize",2),c.KawaseBlurEffect=Er([te("KawaseBlurEffect")],c.KawaseBlurEffect);var Ya=Object.defineProperty,du=Object.getOwnPropertyDescriptor,Iu=(s,A,e)=>A in s?Ya(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,tn=(s,A,e,t)=>{for(var i=t>1?void 0:t?du(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ya(A,e,i),i},Bu=(s,A,e)=>Iu(s,A+"",e);c.MaskEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"texture");this.setProperties(e).append(t)}async load(){this.texture=void 0,this.src&&(this.texture=await Ft.texture.load(this.src))}_updateProperty(e,t,i,r){var n;switch(super._updateProperty(e,t,i,r),e){case"src":this.load();break;case"texture":(n=i==null?void 0:i.free)==null||n.call(i);break}}apply(e,t,i){this.texture&&i.targetArea&&t.redraw(e,()=>{var r;this.texture.activate(e,1),ce.draw(e,c.MaskEffect.material,{sampler:0,mask:1,area:i.targetArea,rotation:((r=i.target)==null?void 0:r.globalRotation)??0}),e.texture.unbind(1)})}},Bu(c.MaskEffect,"material",new pe({vert:`precision mediump float;
661
661
  attribute vec2 position;
662
662
  attribute vec2 uv;
663
663
  varying vec2 vUv;
@@ -700,7 +700,7 @@ void main(void) {
700
700
  } else {
701
701
  gl_FragColor = vec4(0.);
702
702
  }
703
- }`})),tn([Be()],g.MaskEffect.prototype,"texture",2),tn([M({default:""})],g.MaskEffect.prototype,"src",2),g.MaskEffect=tn([ee("MaskEffect")],g.MaskEffect);var za=Object.defineProperty,Bu=Object.getOwnPropertyDescriptor,Eu=(r,A,e)=>A in r?za(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,iA=(r,A,e,t)=>{for(var i=t>1?void 0:t?Bu(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&za(A,e,i),i},Va=(r,A,e)=>Eu(r,typeof A!="symbol"?A+"":A,e);const pu=`precision highp float;
703
+ }`})),tn([Be()],c.MaskEffect.prototype,"texture",2),tn([S({default:""})],c.MaskEffect.prototype,"src",2),c.MaskEffect=tn([te("MaskEffect")],c.MaskEffect);var Wa=Object.defineProperty,Eu=Object.getOwnPropertyDescriptor,pu=(s,A,e)=>A in s?Wa(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,sA=(s,A,e,t)=>{for(var i=t>1?void 0:t?Eu(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Wa(A,e,i),i},za=(s,A,e)=>pu(s,typeof A!="symbol"?A+"":A,e);const Cu=`precision highp float;
704
704
  varying vec2 vUv;
705
705
  uniform sampler2D sampler;
706
706
  uniform vec2 uThickness;
@@ -734,14 +734,14 @@ void main(void) {
734
734
  float outlineAlpha = uAlpha * outlineMaxAlphaAtPos(vUv.xy) * (1.-sourceColor.a);
735
735
  vec4 outlineColor = vec4(vec3(uColor) * outlineAlpha, outlineAlpha);
736
736
  gl_FragColor = contentColor + outlineColor;
737
- }`;g.OutlineEffect=class extends g.Effect{constructor(e,t=[]){super();u(this,"material");u(this,"_color",new Yt);this.setProperties(e).append(t),this.material=new pe({vert:`precision mediump float;
737
+ }`;c.OutlineEffect=class extends c.Effect{constructor(e,t=[]){super();u(this,"material");u(this,"_color",new Wt);this.setProperties(e).append(t),this.material=new pe({vert:`precision mediump float;
738
738
  attribute vec2 position;
739
739
  attribute vec2 uv;
740
740
  varying vec2 vUv;
741
741
  void main() {
742
742
  gl_Position = vec4(position, 0.0, 1.0);
743
743
  vUv = uv;
744
- }`,frag:pu.replace(/\{ANGLE_STEP\}/,g.OutlineEffect.getAngleStep(this.quality).toFixed(7))})}static getAngleStep(e){return Number.parseFloat((Math.PI*2/Math.max(e*g.OutlineEffect.MAX_SAMPLES,g.OutlineEffect.MIN_SAMPLES)).toFixed(7))}apply(e,t){t.redraw(e,()=>{this._color.value=this.color,ce.draw(e,this.material,{sampler:0,uThickness:[this.width/t.width,this.width/t.height],uColor:this._color.toArray().slice(0,3),uAlpha:this.opacity!==1?this.opacity:this._color.a,uAngleStep:g.OutlineEffect.getAngleStep(this.quality),uKnockout:this.knockout?1:0,uInputClamp:[0,0,1,1]})})}},Va(g.OutlineEffect,"MIN_SAMPLES",1),Va(g.OutlineEffect,"MAX_SAMPLES",100),iA([M({default:0})],g.OutlineEffect.prototype,"color",2),iA([M({default:1})],g.OutlineEffect.prototype,"width",2),iA([M({default:"solid"})],g.OutlineEffect.prototype,"style",2),iA([M()],g.OutlineEffect.prototype,"image",2),iA([M({default:1})],g.OutlineEffect.prototype,"opacity",2),iA([M({default:.1})],g.OutlineEffect.prototype,"quality",2),iA([M({default:!1})],g.OutlineEffect.prototype,"knockout",2),g.OutlineEffect=iA([ee("OutlineEffect")],g.OutlineEffect);var qa=Object.defineProperty,Cu=Object.getOwnPropertyDescriptor,Qu=(r,A,e)=>A in r?qa(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Xa=(r,A,e,t)=>{for(var i=t>1?void 0:t?Cu(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&qa(A,e,i),i},yu=(r,A,e)=>Qu(r,A+"",e);g.PixelateEffect=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){e.redraw(A,()=>{ce.draw(A,g.PixelateEffect.material,{sampler:0,uSize:[this.strength,this.strength],uInputSize:[e.width,e.height,1/e.width,1/e.height]})})}},yu(g.PixelateEffect,"material",new pe({vert:`precision mediump float;
744
+ }`,frag:Cu.replace(/\{ANGLE_STEP\}/,c.OutlineEffect.getAngleStep(this.quality).toFixed(7))})}static getAngleStep(e){return Number.parseFloat((Math.PI*2/Math.max(e*c.OutlineEffect.MAX_SAMPLES,c.OutlineEffect.MIN_SAMPLES)).toFixed(7))}apply(e,t){t.redraw(e,()=>{this._color.value=this.color,ce.draw(e,this.material,{sampler:0,uThickness:[this.width/t.width,this.width/t.height],uColor:this._color.toArray().slice(0,3),uAlpha:this.opacity!==1?this.opacity:this._color.a,uAngleStep:c.OutlineEffect.getAngleStep(this.quality),uKnockout:this.knockout?1:0,uInputClamp:[0,0,1,1]})})}},za(c.OutlineEffect,"MIN_SAMPLES",1),za(c.OutlineEffect,"MAX_SAMPLES",100),sA([S({default:0})],c.OutlineEffect.prototype,"color",2),sA([S({default:1})],c.OutlineEffect.prototype,"width",2),sA([S({default:"solid"})],c.OutlineEffect.prototype,"style",2),sA([S()],c.OutlineEffect.prototype,"image",2),sA([S({default:1})],c.OutlineEffect.prototype,"opacity",2),sA([S({default:.1})],c.OutlineEffect.prototype,"quality",2),sA([S({default:!1})],c.OutlineEffect.prototype,"knockout",2),c.OutlineEffect=sA([te("OutlineEffect")],c.OutlineEffect);var Va=Object.defineProperty,Qu=Object.getOwnPropertyDescriptor,yu=(s,A,e)=>A in s?Va(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,qa=(s,A,e,t)=>{for(var i=t>1?void 0:t?Qu(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Va(A,e,i),i},mu=(s,A,e)=>yu(s,A+"",e);c.PixelateEffect=class extends c.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e){e.redraw(A,()=>{ce.draw(A,c.PixelateEffect.material,{sampler:0,uSize:[this.strength,this.strength],uInputSize:[e.width,e.height,1/e.width,1/e.height]})})}},mu(c.PixelateEffect,"material",new pe({vert:`precision mediump float;
745
745
  attribute vec2 position;
746
746
  attribute vec2 uv;
747
747
  varying vec2 vUv;
@@ -774,7 +774,7 @@ void main(void) {
774
774
  coord = pixelate(coord, uSize);
775
775
  coord = unmapCoord(coord);
776
776
  gl_FragColor = texture2D(sampler, coord);
777
- }`})),Xa([M({default:10})],g.PixelateEffect.prototype,"strength",2),g.PixelateEffect=Xa([ee("PixelateEffect")],g.PixelateEffect);var ja=Object.defineProperty,mu=Object.getOwnPropertyDescriptor,wu=(r,A,e)=>A in r?ja(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,Pi=(r,A,e,t)=>{for(var i=t>1?void 0:t?mu(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ja(A,e,i),i},vu=(r,A,e)=>wu(r,A+"",e);g.ZoomBlurEffect=class extends g.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e,t){let i=this.center;t.targetArea&&(i=[(t.targetArea[0]+t.targetArea[2]/2)*e.width,(t.targetArea[1]+t.targetArea[3]/2)*e.height]),e.redraw(A,()=>{ce.draw(A,g.ZoomBlurEffect.material,{sampler:0,uCenter:i??[e.width/2,e.height/2],uInnerRadius:this.innerRadius,uRadius:this.radius,uStrength:this.strength,uInputSize:[e.width,e.height,1/e.width,1/e.height]})})}},vu(g.ZoomBlurEffect,"material",new pe({vert:`attribute vec2 position;
777
+ }`})),qa([S({default:10})],c.PixelateEffect.prototype,"strength",2),c.PixelateEffect=qa([te("PixelateEffect")],c.PixelateEffect);var Xa=Object.defineProperty,wu=Object.getOwnPropertyDescriptor,vu=(s,A,e)=>A in s?Xa(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,ki=(s,A,e,t)=>{for(var i=t>1?void 0:t?wu(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Xa(A,e,i),i},_u=(s,A,e)=>vu(s,A+"",e);c.ZoomBlurEffect=class extends c.Effect{constructor(A,e=[]){super(),this.setProperties(A).append(e)}apply(A,e,t){let i=this.center;t.targetArea&&(i=[(t.targetArea[0]+t.targetArea[2]/2)*e.width,(t.targetArea[1]+t.targetArea[3]/2)*e.height]),e.redraw(A,()=>{ce.draw(A,c.ZoomBlurEffect.material,{sampler:0,uCenter:i??[e.width/2,e.height/2],uInnerRadius:this.innerRadius,uRadius:this.radius,uStrength:this.strength,uInputSize:[e.width,e.height,1/e.width,1/e.height]})})}},_u(c.ZoomBlurEffect,"material",new pe({vert:`attribute vec2 position;
778
778
  attribute vec2 uv;
779
779
  varying vec2 vUv;
780
780
  void main() {
@@ -854,13 +854,13 @@ void main() {
854
854
  color /= total;
855
855
 
856
856
  gl_FragColor = color;
857
- }`})),Pi([M()],g.ZoomBlurEffect.prototype,"center",2),Pi([M({default:20})],g.ZoomBlurEffect.prototype,"innerRadius",2),Pi([M({default:-1})],g.ZoomBlurEffect.prototype,"radius",2),Pi([M({default:.1})],g.ZoomBlurEffect.prototype,"strength",2),g.ZoomBlurEffect=Pi([ee("ZoomBlurEffect")],g.ZoomBlurEffect);var _u=Object.defineProperty,KA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&_u(A,e,i),i};class rA extends Ht{constructor(e,t){super();u(this,"_image");this.parent=e,this.setProperties(t)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"color":case"dpi":case"rotateWithShape":case"tile":this.parent.requestRedraw();break;case"image":this._updateImage();break}}async loadImage(){if(this.image&&this.image!=="none")return await Nt.texture.load(this.image)}async _updateImage(){this._image=await this.loadImage(),this.parent.requestRedraw()}canDraw(){return!!(this._image||this.color)}draw(){const e=this.parent.context;if(this._image){const{width:t,height:i}=this._image,{width:s,height:n}=this.parent.size,o=new dt;if(this.tile){const{translateX:a=0,translateY:l=0,scaleX:h=1,scaleY:c=1}=this.tile;o.scale(1/t,1/i).scale(1/h,1/c).translate(-a/t,-l/i)}else if(this.stretch){const{left:a=0,top:l=0,right:h=0,bottom:c=0}=this.stretch.rect??{},f=Math.abs(1+(-a+-h))*s,d=Math.abs(1+(-l+-c))*n,I=1/f,C=1/d,B=-a*s*I,P=-l*n*C;o.scale(I,C).translate(B,P)}else o.scale(1/s,1/n);e.textureTransform=o,e.fillStyle=this._image,e.fill({disableWrapMode:!0})}else e.fillStyle=this.color,e.fill()}}KA([M()],rA.prototype,"color"),KA([M()],rA.prototype,"image"),KA([M()],rA.prototype,"dpi"),KA([M()],rA.prototype,"rotateWithShape"),KA([M()],rA.prototype,"tile"),KA([M()],rA.prototype,"stretch");var Du=Object.defineProperty,pr=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Du(A,e,i),i};class YA extends Ht{constructor(e,t){super();u(this,"_path2DSet",new Ir);this.parent=e,this.setProperties(t),this._updatePath2DSet()}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"svg":case"data":case"viewBox":this._updatePath2DSet(),this.parent.requestRedraw();break}}_updatePath2DSet(){let e;if(this.svg){const o=Xs(this.svg);this._path2DSet=Zs(o),e=this._path2DSet.viewBox??this.viewBox}else e=this.viewBox,this.data.forEach((o,a)=>{const{data:l,...h}=o,c=new ke;c.style=h,c.addData(l),this._path2DSet.paths[a]=c});const[t,i,s,n]=e;this._path2DSet.paths.forEach(o=>{o.applyTransform(new ze().translate(-t,-i).scale(1/s,1/n))})}draw(){if(this._path2DSet.paths.length){const e=this.parent.context,{width:t,height:i}=this.parent.size;this._path2DSet.paths.forEach(s=>{e.addPath(s.clone().applyTransform(new ze().scale(t,i)))})}else this.drawRect()}drawRect(){const e=this.parent.context,{width:t,height:i}=this.parent.size,{borderRadius:s}=this.parent.style;t&&i&&(s?e.roundRect(0,0,t,i,s):e.rect(0,0,t,i))}}pr([M()],YA.prototype,"name"),pr([M()],YA.prototype,"svg"),pr([M({default:[0,0,1,1]})],YA.prototype,"viewBox"),pr([M({default:[]})],YA.prototype,"data");var bu=Object.defineProperty,Ui=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&bu(A,e,i),i};class wA extends Ht{constructor(A,e){super(),this.parent=A,this.setProperties(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"color":case"width":case"style":case"image":case"opacity":this.parent.requestRedraw();break}}canDraw(){return!!(this.width||this.color)}draw(){const A=this.parent.context;A.lineWidth=this.width,A.strokeStyle=this.color,A.stroke()}}Ui([M({default:0})],wA.prototype,"color"),Ui([M({default:0})],wA.prototype,"width"),Ui([M({default:"solid"})],wA.prototype,"style"),Ui([M()],wA.prototype,"image"),Ui([M({default:1})],wA.prototype,"opacity");var xu=Object.defineProperty,Cr=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&xu(A,e,i),i};class WA extends Ht{constructor(A,e){super(),this.parent=A,this.setProperties(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"color":case"blur":case"offsetX":case"offsetY":this.updateEffect();break}}updateEffect(){const A="__$shadow";let e=this.parent.getNode(A);this.blur||this.offsetX||this.offsetY?(e||(e=new g.DropShadowEffect({name:A}),this.parent.appendChild(e,"back")),e.setProperties(this.getProperties())):e&&this.parent.removeChild(e)}}Cr([M({default:"#000000"})],WA.prototype,"color"),Cr([M({default:0})],WA.prototype,"blur"),Cr([M({default:0})],WA.prototype,"offsetY"),Cr([M({default:0})],WA.prototype,"offsetX");function Su(){return{overflow:"visible",direction:void 0,display:void 0,boxSizing:void 0,width:void 0,height:void 0,maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,position:void 0,left:0,top:0,right:void 0,bottom:void 0,borderTop:void 0,borderLeft:void 0,borderRight:void 0,borderBottom:void 0,borderWidth:0,border:void 0,flex:void 0,flexBasis:void 0,flexDirection:void 0,flexGrow:void 0,flexShrink:void 0,flexWrap:void 0,justifyContent:void 0,gap:void 0,alignContent:void 0,alignItems:void 0,alignSelf:void 0,marginTop:void 0,marginLeft:void 0,marginRight:void 0,marginBottom:void 0,margin:void 0,paddingTop:void 0,paddingLeft:void 0,paddingRight:void 0,paddingBottom:void 0,padding:void 0}}function Mu(){return{boxShadow:"none"}}function Ru(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function Pu(){return{...Su(),...Ru(),...Mu(),backgroundImage:"none",backgroundColor:"none",borderRadius:0,borderColor:"none",borderStyle:"solid",outlineWidth:0,outlineOffset:0,outlineColor:"#000000",outlineStyle:"none",visibility:"visible",filter:"none",opacity:1,pointerEvents:"auto",maskImage:"none"}}function Uu(){return{writingMode:"horizontal-tb",verticalAlign:"baseline",lineHeight:1.2,letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textWrap:"wrap",textAlign:"start",textIndent:0,textTransform:"none",textOrientation:"mixed",textDecoration:"none",textStrokeWidth:0,textStrokeColor:"black",color:"black",listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside",highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function Za(){return{...Pu(),...Uu()}}class ki extends Jt{constructor(A){super(),this.setProperties(A)}}const zA=Za();delete zA.top,delete zA.left,delete zA.width,delete zA.height;for(const r in zA)Bi(ki,r,{default:zA[r]});var Ve=Uint8Array,ht=Uint16Array,An=Int32Array,Qr=new Ve([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),yr=new Ve([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),rn=new Ve([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),$a=function(r,A){for(var e=new ht(31),t=0;t<31;++t)e[t]=A+=1<<r[t-1];for(var i=new An(e[30]),t=1;t<30;++t)for(var s=e[t];s<e[t+1];++s)i[s]=s-e[t]<<5|t;return{b:e,r:i}},el=$a(Qr,2),tl=el.b,sn=el.r;tl[28]=258,sn[258]=28;for(var Al=$a(yr,0),ku=Al.b,il=Al.r,nn=new ht(32768),Ce=0;Ce<32768;++Ce){var sA=(Ce&43690)>>1|(Ce&21845)<<1;sA=(sA&52428)>>2|(sA&13107)<<2,sA=(sA&61680)>>4|(sA&3855)<<4,nn[Ce]=((sA&65280)>>8|(sA&255)<<8)>>1}for(var Rt=function(r,A,e){for(var t=r.length,i=0,s=new ht(A);i<t;++i)r[i]&&++s[r[i]-1];var n=new ht(A);for(i=1;i<A;++i)n[i]=n[i-1]+s[i-1]<<1;var o;if(e){o=new ht(1<<A);var a=15-A;for(i=0;i<t;++i)if(r[i])for(var l=i<<4|r[i],h=A-r[i],c=n[r[i]-1]++<<h,f=c|(1<<h)-1;c<=f;++c)o[nn[c]>>a]=l}else for(o=new ht(t),i=0;i<t;++i)r[i]&&(o[i]=nn[n[r[i]-1]++]>>15-r[i]);return o},nA=new Ve(288),Ce=0;Ce<144;++Ce)nA[Ce]=8;for(var Ce=144;Ce<256;++Ce)nA[Ce]=9;for(var Ce=256;Ce<280;++Ce)nA[Ce]=7;for(var Ce=280;Ce<288;++Ce)nA[Ce]=8;for(var Ni=new Ve(32),Ce=0;Ce<32;++Ce)Ni[Ce]=5;var Nu=Rt(nA,9,0),Fu=Rt(nA,9,1),Tu=Rt(Ni,5,0),Lu=Rt(Ni,5,1),on=function(r){for(var A=r[0],e=1;e<r.length;++e)r[e]>A&&(A=r[e]);return A},mt=function(r,A,e){var t=A/8|0;return(r[t]|r[t+1]<<8)>>(A&7)&e},an=function(r,A){var e=A/8|0;return(r[e]|r[e+1]<<8|r[e+2]<<16)>>(A&7)},ln=function(r){return(r+7)/8|0},rl=function(r,A,e){return(e==null||e>r.length)&&(e=r.length),new Ve(r.subarray(A,e))},Gu=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],wt=function(r,A,e){var t=new Error(A||Gu[r]);if(t.code=r,Error.captureStackTrace&&Error.captureStackTrace(t,wt),!e)throw t;return t},Ou=function(r,A,e,t){var i=r.length,s=0;if(!i||A.f&&!A.l)return e||new Ve(0);var n=!e,o=n||A.i!=2,a=A.i;n&&(e=new Ve(i*3));var l=function(Oe){var he=e.length;if(Oe>he){var me=new Ve(Math.max(he*2,Oe));me.set(e),e=me}},h=A.f||0,c=A.p||0,f=A.b||0,d=A.l,I=A.d,C=A.m,B=A.n,P=i*8;do{if(!d){h=mt(r,c,1);var S=mt(r,c+1,3);if(c+=3,S)if(S==1)d=Fu,I=Lu,C=9,B=5;else if(S==2){var w=mt(r,c,31)+257,D=mt(r,c+10,15)+4,x=w+mt(r,c+5,31)+1;c+=14;for(var L=new Ve(x),Z=new Ve(19),Y=0;Y<D;++Y)Z[rn[Y]]=mt(r,c+Y*3,7);c+=D*3;for(var T=on(Z),X=(1<<T)-1,k=Rt(Z,T,1),Y=0;Y<x;){var j=k[mt(r,c,X)];c+=j&15;var _=j>>4;if(_<16)L[Y++]=_;else{var te=0,J=0;for(_==16?(J=3+mt(r,c,3),c+=2,te=L[Y-1]):_==17?(J=3+mt(r,c,7),c+=3):_==18&&(J=11+mt(r,c,127),c+=7);J--;)L[Y++]=te}}var H=L.subarray(0,w),ne=L.subarray(w);C=on(H),B=on(ne),d=Rt(H,C,1),I=Rt(ne,B,1)}else wt(1);else{var _=ln(c)+4,R=r[_-4]|r[_-3]<<8,v=_+R;if(v>i){a&&wt(0);break}o&&l(f+R),e.set(r.subarray(_,v),f),A.b=f+=R,A.p=c=v*8,A.f=h;continue}if(c>P){a&&wt(0);break}}o&&l(f+131072);for(var q=(1<<C)-1,W=(1<<B)-1,oe=c;;oe=c){var te=d[an(r,c)&q],Ae=te>>4;if(c+=te&15,c>P){a&&wt(0);break}if(te||wt(2),Ae<256)e[f++]=Ae;else if(Ae==256){oe=c,d=null;break}else{var ae=Ae-254;if(Ae>264){var Y=Ae-257,ie=Qr[Y];ae=mt(r,c,(1<<ie)-1)+tl[Y],c+=ie}var le=I[an(r,c)&W],V=le>>4;le||wt(3),c+=le&15;var ne=ku[V];if(V>3){var ie=yr[V];ne+=an(r,c)&(1<<ie)-1,c+=ie}if(c>P){a&&wt(0);break}o&&l(f+131072);var Ie=f+ae;if(f<ne){var nt=s-ne,ot=Math.min(ne,Ie);for(nt+f<0&&wt(3);f<ot;++f)e[f]=t[nt+f]}for(;f<Ie;++f)e[f]=e[f-ne]}}A.l=d,A.p=oe,A.b=f,A.f=h,d&&(h=1,A.m=C,A.d=I,A.n=B)}while(!h);return f!=e.length&&n?rl(e,0,f):e.subarray(0,f)},qt=function(r,A,e){e<<=A&7;var t=A/8|0;r[t]|=e,r[t+1]|=e>>8},Fi=function(r,A,e){e<<=A&7;var t=A/8|0;r[t]|=e,r[t+1]|=e>>8,r[t+2]|=e>>16},hn=function(r,A){for(var e=[],t=0;t<r.length;++t)r[t]&&e.push({s:t,f:r[t]});var i=e.length,s=e.slice();if(!i)return{t:al,l:0};if(i==1){var n=new Ve(e[0].s+1);return n[e[0].s]=1,{t:n,l:1}}e.sort(function(v,w){return v.f-w.f}),e.push({s:-1,f:25001});var o=e[0],a=e[1],l=0,h=1,c=2;for(e[0]={s:-1,f:o.f+a.f,l:o,r:a};h!=i-1;)o=e[e[l].f<e[c].f?l++:c++],a=e[l!=h&&e[l].f<e[c].f?l++:c++],e[h++]={s:-1,f:o.f+a.f,l:o,r:a};for(var f=s[0].s,t=1;t<i;++t)s[t].s>f&&(f=s[t].s);var d=new ht(f+1),I=gn(e[h-1],d,0);if(I>A){var t=0,C=0,B=I-A,P=1<<B;for(s.sort(function(w,D){return d[D.s]-d[w.s]||w.f-D.f});t<i;++t){var S=s[t].s;if(d[S]>A)C+=P-(1<<I-d[S]),d[S]=A;else break}for(C>>=B;C>0;){var _=s[t].s;d[_]<A?C-=1<<A-d[_]++-1:++t}for(;t>=0&&C;--t){var R=s[t].s;d[R]==A&&(--d[R],++C)}I=A}return{t:new Ve(d),l:I}},gn=function(r,A,e){return r.s==-1?Math.max(gn(r.l,A,e+1),gn(r.r,A,e+1)):A[r.s]=e},sl=function(r){for(var A=r.length;A&&!r[--A];);for(var e=new ht(++A),t=0,i=r[0],s=1,n=function(a){e[t++]=a},o=1;o<=A;++o)if(r[o]==i&&o!=A)++s;else{if(!i&&s>2){for(;s>138;s-=138)n(32754);s>2&&(n(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(n(i),--s;s>6;s-=6)n(8304);s>2&&(n(s-3<<5|8208),s=0)}for(;s--;)n(i);s=1,i=r[o]}return{c:e.subarray(0,t),n:A}},Ti=function(r,A){for(var e=0,t=0;t<A.length;++t)e+=r[t]*A[t];return e},nl=function(r,A,e){var t=e.length,i=ln(A+2);r[i]=t&255,r[i+1]=t>>8,r[i+2]=r[i]^255,r[i+3]=r[i+1]^255;for(var s=0;s<t;++s)r[i+s+4]=e[s];return(i+4+t)*8},ol=function(r,A,e,t,i,s,n,o,a,l,h){qt(A,h++,e),++i[256];for(var c=hn(i,15),f=c.t,d=c.l,I=hn(s,15),C=I.t,B=I.l,P=sl(f),S=P.c,_=P.n,R=sl(C),v=R.c,w=R.n,D=new ht(19),x=0;x<S.length;++x)++D[S[x]&31];for(var x=0;x<v.length;++x)++D[v[x]&31];for(var L=hn(D,7),Z=L.t,Y=L.l,T=19;T>4&&!Z[rn[T-1]];--T);var X=l+5<<3,k=Ti(i,nA)+Ti(s,Ni)+n,j=Ti(i,f)+Ti(s,C)+n+14+3*T+Ti(D,Z)+2*D[16]+3*D[17]+7*D[18];if(a>=0&&X<=k&&X<=j)return nl(A,h,r.subarray(a,a+l));var te,J,H,ne;if(qt(A,h,1+(j<k)),h+=2,j<k){te=Rt(f,d,0),J=f,H=Rt(C,B,0),ne=C;var q=Rt(Z,Y,0);qt(A,h,_-257),qt(A,h+5,w-1),qt(A,h+10,T-4),h+=14;for(var x=0;x<T;++x)qt(A,h+3*x,Z[rn[x]]);h+=3*T;for(var W=[S,v],oe=0;oe<2;++oe)for(var Ae=W[oe],x=0;x<Ae.length;++x){var ae=Ae[x]&31;qt(A,h,q[ae]),h+=Z[ae],ae>15&&(qt(A,h,Ae[x]>>5&127),h+=Ae[x]>>12)}}else te=Nu,J=nA,H=Tu,ne=Ni;for(var x=0;x<o;++x){var ie=t[x];if(ie>255){var ae=ie>>18&31;Fi(A,h,te[ae+257]),h+=J[ae+257],ae>7&&(qt(A,h,ie>>23&31),h+=Qr[ae]);var le=ie&31;Fi(A,h,H[le]),h+=ne[le],le>3&&(Fi(A,h,ie>>5&8191),h+=yr[le])}else Fi(A,h,te[ie]),h+=J[ie]}return Fi(A,h,te[256]),h+J[256]},Hu=new An([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),al=new Ve(0),Ju=function(r,A,e,t,i,s){var n=s.z||r.length,o=new Ve(t+n+5*(1+Math.ceil(n/7e3))+i),a=o.subarray(t,o.length-i),l=s.l,h=(s.r||0)&7;if(A){h&&(a[0]=s.r>>3);for(var c=Hu[A-1],f=c>>13,d=c&8191,I=(1<<e)-1,C=s.p||new ht(32768),B=s.h||new ht(I+1),P=Math.ceil(e/3),S=2*P,_=function(He){return(r[He]^r[He+1]<<P^r[He+2]<<S)&I},R=new An(25e3),v=new ht(288),w=new ht(32),D=0,x=0,L=s.i||0,Z=0,Y=s.w||0,T=0;L+2<n;++L){var X=_(L),k=L&32767,j=B[X];if(C[k]=j,B[X]=k,Y<=L){var te=n-L;if((D>7e3||Z>24576)&&(te>423||!l)){h=ol(r,a,0,R,v,w,x,Z,T,L-T,h),Z=D=x=0,T=L;for(var J=0;J<286;++J)v[J]=0;for(var J=0;J<30;++J)w[J]=0}var H=2,ne=0,q=d,W=k-j&32767;if(te>2&&X==_(L-W))for(var oe=Math.min(f,te)-1,Ae=Math.min(32767,L),ae=Math.min(258,te);W<=Ae&&--q&&k!=j;){if(r[L+H]==r[L+H-W]){for(var ie=0;ie<ae&&r[L+ie]==r[L+ie-W];++ie);if(ie>H){if(H=ie,ne=W,ie>oe)break;for(var le=Math.min(W,ie-2),V=0,J=0;J<le;++J){var Ie=L-W+J&32767,nt=C[Ie],ot=Ie-nt&32767;ot>V&&(V=ot,j=Ie)}}}k=j,j=C[k],W+=k-j&32767}if(ne){R[Z++]=268435456|sn[H]<<18|il[ne];var Oe=sn[H]&31,he=il[ne]&31;x+=Qr[Oe]+yr[he],++v[257+Oe],++w[he],Y=L+H,++D}else R[Z++]=r[L],++v[r[L]]}}for(L=Math.max(L,Y);L<n;++L)R[Z++]=r[L],++v[r[L]];h=ol(r,a,l,R,v,w,x,Z,T,L-T,h),l||(s.r=h&7|a[h/8|0]<<3,h-=7,s.h=B,s.p=C,s.i=L,s.w=Y)}else{for(var L=s.w||0;L<n+l;L+=65535){var me=L+65535;me>=n&&(a[h/8|0]=l,me=n),h=nl(a,h+1,r.subarray(L,me))}s.i=n}return rl(o,0,t+ln(h)+i)},ll=function(){var r=1,A=0;return{p:function(e){for(var t=r,i=A,s=e.length|0,n=0;n!=s;){for(var o=Math.min(n+2655,s);n<o;++n)i+=t+=e[n];t=(t&65535)+15*(t>>16),i=(i&65535)+15*(i>>16)}r=t,A=i},d:function(){return r%=65521,A%=65521,(r&255)<<24|(r&65280)<<8|(A&255)<<8|A>>8}}},Ku=function(r,A,e,t,i){if(!i&&(i={l:1},A.dictionary)){var s=A.dictionary.subarray(-32768),n=new Ve(s.length+r.length);n.set(s),n.set(r,s.length),r=n,i.w=s.length}return Ju(r,A.level==null?6:A.level,A.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(r.length)))*1.5):20:12+A.mem,e,t,i)},hl=function(r,A,e){for(;e;++A)r[A]=e,e>>>=8},Yu=function(r,A){var e=A.level,t=e==0?0:e<6?1:e==9?3:2;if(r[0]=120,r[1]=t<<6|(A.dictionary&&32),r[1]|=31-(r[0]<<8|r[1])%31,A.dictionary){var i=ll();i.p(A.dictionary),hl(r,2,i.d())}},Wu=function(r,A){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&wt(6,"invalid zlib data"),(r[1]>>5&1)==1&&wt(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2};function zu(r,A){A||(A={});var e=ll();e.p(r);var t=Ku(r,A,A.dictionary?6:2,4);return Yu(t,A),hl(t,t.length-4,e.d()),t}function Vu(r,A){return Ou(r.subarray(Wu(r),-4),{i:2},A,A)}var qu=typeof TextDecoder<"u"&&new TextDecoder,Xu=0;try{qu.decode(al,{stream:!0}),Xu=1}catch{}const ju="modern-font";function Li(r,A){if(!r)throw new Error(`[${ju}] ${A}`)}function Zu(r){if("buffer"in r){const A=r.buffer;return r.byteOffset>0||r.byteLength<r.buffer.byteLength?A.slice(r.byteOffset,r.byteOffset+r.byteLength):A}else return r}function VA(r){return"buffer"in r?new DataView(r.buffer,r.byteOffset,r.byteLength):new DataView(r)}function $u(r){let A="";for(let e=0,t=r.length,i;e<t;e++)i=r.charCodeAt(e),i!==0&&(A+=String.fromCharCode(i));return A}function mr(r){r=$u(r);const A=[];for(let e=0,t=r.length,i;e<t;e++)i=r.charCodeAt(e),A.push(i>>8),A.push(i&255);return A}function ef(r){let A="";for(let e=0,t=r.length;e<t;e++)r[e]<127?A+=String.fromCharCode(r[e]):A+=`%${(256+r[e]).toString(16).slice(1)}`;return unescape(A)}function tf(r){let A="";for(let e=0,t=r.length;e<t;e+=2)A+=String.fromCharCode((r[e]<<8)+r[e+1]);return A}var Af=Object.defineProperty,qe=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Af(A,e,i),i};const Gi={int8:1,int16:2,int32:4,uint8:1,uint16:2,uint32:4,float32:4,float64:8,fixed:4,longDateTime:8,char:1};function Xe(){return function(r,A){Object.defineProperty(r.constructor.prototype,A,{get(){if(typeof A=="string"){if(A.startsWith("read"))return(...e)=>this.read(A.substring(4).toLowerCase(),...e);if(A.startsWith("write"))return(...e)=>this.write(A.substring(5).toLowerCase(),...e)}},configurable:!0,enumerable:!0})}}class Ne extends DataView{constructor(e,t,i,s){super(Zu(e),t,i);u(this,"cursor",0);this.littleEndian=s}readColumn(e){if(e.size){const t=Array.from({length:e.size},(i,s)=>this.read(e.type,e.offset+s));switch(e.type){case"char":return t.join("");default:return t}}else return this.read(e.type,e.offset)}writeColumn(e,t){e.size?Array.from({length:e.size},(i,s)=>{this.write(e.type,t[s],e.offset+s)}):this.write(e.type,t,e.offset)}read(e,t=this.cursor,i=this.littleEndian){var l;switch(e){case"char":return this.readChar(t);case"fixed":return this.readFixed(t,i);case"longDateTime":return this.readLongDateTime(t,i)}const s=`get${e.replace(/^\S/,h=>h.toUpperCase())}`,n=this,o=(l=n[s])==null?void 0:l.bind(n),a=o==null?void 0:o(t,i);return this.cursor+=Gi[e],a}readUint24(e=this.cursor){const[t,i,s]=this.readBytes(e,3);return(t<<16)+(i<<8)+s}readBytes(e,t){t==null&&(t=e,e=this.cursor);const i=[];for(let s=0;s<t;++s)i.push(this.getUint8(e+s));return this.cursor=e+t,i}readString(e,t){const i=this.readBytes(e,t);let s="";for(let n=0,o=i.length;n<o;n++)s+=String.fromCharCode(i[n]);return s}readFixed(e,t){const i=this.readInt32(e,t)/65536;return Math.ceil(i*1e5)/1e5}readLongDateTime(e=this.cursor,t){const i=this.readUint32(e+4,t),s=new Date;return s.setTime(i*1e3+-20775456e5),s}readChar(e){return this.readString(e,1)}write(e,t,i=this.cursor,s=this.littleEndian){var h;switch(e){case"char":return this.writeChar(t,i);case"fixed":return this.writeFixed(t,i);case"longDateTime":return this.writeLongDateTime(t,i)}const n=`set${e.replace(/^\S/,c=>c.toUpperCase())}`,o=this,a=(h=o[n])==null?void 0:h.bind(o),l=a==null?void 0:a(i,t,s);return this.cursor+=Gi[e.toLowerCase()],l}writeString(e="",t=this.cursor){const i=e.replace(/[^\x00-\xFF]/g,"11").length;this.seek(t);for(let s=0,n=e.length,o;s<n;++s)o=e.charCodeAt(s)||0,o>127?this.writeUint16(o):this.writeUint8(o);return this.cursor+=i,this}writeChar(e,t){return this.writeString(e,t)}writeFixed(e,t){return this.writeInt32(Math.round(e*65536),t),this}writeLongDateTime(e,t=this.cursor){typeof e>"u"?e=-20775456e5:typeof e.getTime=="function"?e=e.getTime():/^\d+$/.test(e)?e=+e:e=Date.parse(e);const s=Math.round((e- -20775456e5)/1e3);return this.writeUint32(0,t),this.writeUint32(s,t+4),this}writeBytes(e,t=this.cursor){let i;if(Array.isArray(e)){i=e.length;for(let s=0;s<i;++s)this.setUint8(t+s,e[s])}else{const s=VA(e);i=s.byteLength;for(let n=0;n<i;++n)this.setUint8(t+n,s.getUint8(n))}return this.cursor=t+i,this}seek(e){return this.cursor=e,this}}qe([Xe()],Ne.prototype,"readInt8"),qe([Xe()],Ne.prototype,"readInt16"),qe([Xe()],Ne.prototype,"readInt32"),qe([Xe()],Ne.prototype,"readUint8"),qe([Xe()],Ne.prototype,"readUint16"),qe([Xe()],Ne.prototype,"readUint32"),qe([Xe()],Ne.prototype,"readFloat32"),qe([Xe()],Ne.prototype,"readFloat64"),qe([Xe()],Ne.prototype,"writeInt8"),qe([Xe()],Ne.prototype,"writeInt16"),qe([Xe()],Ne.prototype,"writeInt32"),qe([Xe()],Ne.prototype,"writeUint8"),qe([Xe()],Ne.prototype,"writeUint16"),qe([Xe()],Ne.prototype,"writeUint32"),qe([Xe()],Ne.prototype,"writeFloat32"),qe([Xe()],Ne.prototype,"writeFloat64");const gl=new WeakMap;function y(r){const A=typeof r=="object"?r:{type:r},{size:e=1,type:t}=A;return(i,s)=>{if(typeof s!="string")return;let n=gl.get(i);n||(n={columns:[],byteLength:0},gl.set(i,n));const o={...A,name:s,byteLength:e*Gi[t],offset:A.offset??n.columns.reduce((a,l)=>a+l.byteLength,0)};n.columns.push(o),n.byteLength=n.columns.reduce((a,l)=>a+Gi[l.type]*(l.size??1),0),Object.defineProperty(i.constructor.prototype,s,{get(){return this.view.readColumn(o)},set(a){this.view.writeColumn(o,a)},configurable:!0,enumerable:!0})}}class gt{constructor(A,e,t,i){u(this,"view");this.view=new Ne(A,e,t,i)}}class wr extends gt{get buffer(){return this.view.buffer}toBuffer(){return this.view.buffer.slice(this.view.byteOffset,this.view.byteOffset+this.view.byteLength)}toBlob(){return new Blob([new Uint8Array(this.view.buffer,this.view.byteOffset,this.view.byteLength)],{type:this.mimeType})}toFontFace(A){return new FontFace(A,this.view.buffer)}}var rf=Object.defineProperty,At=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&rf(A,e,i),i};const it=class dh extends wr{constructor(){super(...arguments);u(this,"format","EmbeddedOpenType");u(this,"mimeType","application/vnd.ms-fontobject")}static from(e){const t=e.sfnt,s=t.name.names,n=mr(s.fontFamily||""),o=n.length,a=mr(s.fontStyle||""),l=a.length,h=mr(s.version||""),c=h.length,f=mr(s.fullName||""),d=f.length,I=86+o+4+l+4+c+4+d+2+e.view.byteLength,C=new dh(new ArrayBuffer(I),0,I,!0);C.EOTSize=C.view.byteLength,C.FontDataSize=e.view.byteLength,C.Version=131073,C.Flags=0,C.Charset=1,C.MagicNumber=20556,C.Padding1=0,C.CheckSumAdjustment=t.head.checkSumAdjustment;const B=t.os2;return B&&(C.FontPANOSE=B.fontPANOSE,C.Italic=B.fsSelection,C.Weight=B.usWeightClass,C.fsType=B.fsType,C.UnicodeRange=B.ulUnicodeRange,C.CodePageRange=B.ulCodePageRange),C.view.writeUint16(o),C.view.writeBytes(n),C.view.writeUint16(0),C.view.writeUint16(l),C.view.writeBytes(a),C.view.writeUint16(0),C.view.writeUint16(c),C.view.writeBytes(h),C.view.writeUint16(0),C.view.writeUint16(d),C.view.writeBytes(f),C.view.writeUint16(0),C.view.writeUint16(0),C.view.writeBytes(e.view),C}};At([y("uint32")],it.prototype,"EOTSize"),At([y("uint32")],it.prototype,"FontDataSize"),At([y("uint32")],it.prototype,"Version"),At([y("uint32")],it.prototype,"Flags"),At([y({type:"uint8",size:10})],it.prototype,"FontPANOSE"),At([y("uint8")],it.prototype,"Charset"),At([y("uint8")],it.prototype,"Italic"),At([y("uint32")],it.prototype,"Weight"),At([y("uint16")],it.prototype,"fsType"),At([y("uint16")],it.prototype,"MagicNumber"),At([y({type:"uint8",size:16})],it.prototype,"UnicodeRange"),At([y({type:"uint8",size:8})],it.prototype,"CodePageRange"),At([y("uint32")],it.prototype,"CheckSumAdjustment"),At([y({type:"uint8",size:16})],it.prototype,"Reserved"),At([y("uint16")],it.prototype,"Padding1");var sf=Object.defineProperty,vr=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&sf(A,e,i),i};class qA extends gt{constructor(A,e){super(A,e,16)}}vr([y({type:"char",size:4})],qA.prototype,"tag"),vr([y("uint32")],qA.prototype,"checkSum"),vr([y("uint32")],qA.prototype,"offset"),vr([y("uint32")],qA.prototype,"length");const cn=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],nf=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];class un{constructor(A){u(this,"index");u(this,"name");u(this,"isComposite",!1);u(this,"components",[]);u(this,"pathCommands",[]);const e={...A};if(this.index=e.index??0,e.name===".notdef"?e.unicode=void 0:e.name===".null"&&(e.unicode=0),e.unicode===0&&e.name!==".null")throw new Error('The unicode value "0" is reserved for the glyph name ".null" and cannot be used by any other glyph.');this.name=e.name??null,e.unicode&&(this.unicode=e.unicode),e.unicodes?this.unicodes=e.unicodes:e.unicode&&(this.unicodes=[e.unicode])}getPathCommands(A=0,e=0,t=72,i={},s){const n=1/((s==null?void 0:s.unitsPerEm)??1e3)*t,{xScale:o=n,yScale:a=n}=i,l=this.pathCommands,h=[];for(let c=0,f=l.length;c<f;c+=1){const d=l[c];d.type==="M"?h.push({type:"M",x:A+d.x*o,y:e+-d.y*a}):d.type==="L"?h.push({type:"L",x:A+d.x*o,y:e+-d.y*a}):d.type==="Q"?h.push({type:"Q",x1:A+d.x1*o,y1:e+-d.y1*a,x:A+d.x*o,y:e+-d.y*a}):d.type==="C"?h.push({type:"C",x1:A+d.x1*o,y1:e+-d.y1*a,x2:A+d.x2*o,y2:e+-d.y2*a,x:A+d.x*o,y:e+-d.y*a}):d.type==="Z"&&h.push({type:"Z"})}return h}}class of extends un{parse(A,e,t){const i=this,{nominalWidthX:s,defaultWidthX:n,gsubrsBias:o,subrsBias:a}=A,l=A.topDict.paintType,h=this.index;let c,f,d,I;const C=[],B=[];let P=0,S=!1,_=!1,R=n,v=0,w=0;function D(k,j){C.push({type:"L",x:k,y:j})}function x(k,j,te,J,H,ne){C.push({type:"C",x1:k,y1:j,x2:te,y2:J,x:H,y:ne})}function L(k,j){_&&l!==2&&Z(),_=!0,C.push({type:"M",x:k,y:j})}function Z(){C.push({type:"Z"})}function Y(k){C.push(...k)}function T(){B.length%2!==0&&!S&&(R=B.shift()+s),P+=B.length>>1,B.length=0,S=!0}function X(k){let j,te,J,H,ne,q,W,oe,Ae,ae,ie,le,V=0;for(;V<k.length;){let Ie=k[V++];switch(Ie){case 1:T();break;case 3:T();break;case 4:B.length>1&&!S&&(R=B.shift()+s,S=!0),w+=B.pop(),L(v,w);break;case 5:for(;B.length>0;)v+=B.shift(),w+=B.shift(),D(v,w);break;case 6:for(;B.length>0&&(v+=B.shift(),D(v,w),B.length!==0);)w+=B.shift(),D(v,w);break;case 7:for(;B.length>0&&(w+=B.shift(),D(v,w),B.length!==0);)v+=B.shift(),D(v,w);break;case 8:for(;B.length>0;)c=v+B.shift(),f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),v=d+B.shift(),w=I+B.shift(),x(c,f,d,I,v,w);break;case 10:ne=B.pop()+a,q=A.subrs[ne],q&&X(q);break;case 11:return;case 12:switch(Ie=k[V],V+=1,Ie){case 35:c=v+B.shift(),f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),W=d+B.shift(),oe=I+B.shift(),Ae=W+B.shift(),ae=oe+B.shift(),ie=Ae+B.shift(),le=ae+B.shift(),v=ie+B.shift(),w=le+B.shift(),B.shift(),x(c,f,d,I,W,oe),x(Ae,ae,ie,le,v,w);break;case 34:c=v+B.shift(),f=w,d=c+B.shift(),I=f+B.shift(),W=d+B.shift(),oe=I,Ae=W+B.shift(),ae=I,ie=Ae+B.shift(),le=w,v=ie+B.shift(),x(c,f,d,I,W,oe),x(Ae,ae,ie,le,v,w);break;case 36:c=v+B.shift(),f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),W=d+B.shift(),oe=I,Ae=W+B.shift(),ae=I,ie=Ae+B.shift(),le=ae+B.shift(),v=ie+B.shift(),x(c,f,d,I,W,oe),x(Ae,ae,ie,le,v,w);break;case 37:c=v+B.shift(),f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),W=d+B.shift(),oe=I+B.shift(),Ae=W+B.shift(),ae=oe+B.shift(),ie=Ae+B.shift(),le=ae+B.shift(),Math.abs(ie-v)>Math.abs(le-w)?v=ie+B.shift():w=le+B.shift(),x(c,f,d,I,W,oe),x(Ae,ae,ie,le,v,w);break;default:console.warn(`Glyph ${h}: unknown operator ${1200+Ie}`),B.length=0}break;case 14:if(B.length>=4){const nt=cn[B.pop()],ot=cn[B.pop()],Oe=B.pop(),he=B.pop();if(nt&&ot){i.isComposite=!0,i.components=[];const me=A.charset.indexOf(nt),He=A.charset.indexOf(ot);i.components.push({glyphIndex:He,dx:0,dy:0}),i.components.push({glyphIndex:me,dx:he,dy:Oe}),Y(t.get(He).pathCommands);const We=JSON.parse(JSON.stringify(t.get(me).pathCommands));for(let be=0;be<We.length;be+=1){const $e=We[be];$e.type!=="Z"&&($e.x+=he,$e.y+=Oe),($e.type==="Q"||$e.type==="C")&&($e.x1+=he,$e.y1+=Oe),$e.type==="C"&&($e.x2+=he,$e.y2+=Oe)}Y(We)}}else B.length>0&&!S&&(R=B.shift()+s,S=!0);_&&l!==2&&(Z(),_=!1);break;case 18:T();break;case 19:case 20:T(),V+=P+7>>3;break;case 21:B.length>2&&!S&&(R=B.shift()+s,S=!0),w+=B.pop(),v+=B.pop(),L(v,w);break;case 22:B.length>1&&!S&&(R=B.shift()+s,S=!0),v+=B.pop(),L(v,w);break;case 23:T();break;case 24:for(;B.length>2;)c=v+B.shift(),f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),v=d+B.shift(),w=I+B.shift(),x(c,f,d,I,v,w);v+=B.shift(),w+=B.shift(),D(v,w);break;case 25:for(;B.length>6;)v+=B.shift(),w+=B.shift(),D(v,w);c=v+B.shift(),f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),v=d+B.shift(),w=I+B.shift(),x(c,f,d,I,v,w);break;case 26:for(B.length%2&&(v+=B.shift());B.length>0;)c=v,f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),v=d,w=I+B.shift(),x(c,f,d,I,v,w);break;case 27:for(B.length%2&&(w+=B.shift());B.length>0;)c=v+B.shift(),f=w,d=c+B.shift(),I=f+B.shift(),v=d+B.shift(),w=I,x(c,f,d,I,v,w);break;case 28:j=k[V],te=k[V+1],B.push((j<<24|te<<16)>>16),V+=2;break;case 29:ne=B.pop()+o,q=A.gsubrs[ne],q&&X(q);break;case 30:for(;B.length>0&&(c=v,f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),v=d+B.shift(),w=I+(B.length===1?B.shift():0),x(c,f,d,I,v,w),B.length!==0);)c=v+B.shift(),f=w,d=c+B.shift(),I=f+B.shift(),w=I+B.shift(),v=d+(B.length===1?B.shift():0),x(c,f,d,I,v,w);break;case 31:for(;B.length>0&&(c=v+B.shift(),f=w,d=c+B.shift(),I=f+B.shift(),w=I+B.shift(),v=d+(B.length===1?B.shift():0),x(c,f,d,I,v,w),B.length!==0);)c=v,f=w+B.shift(),d=c+B.shift(),I=f+B.shift(),v=d+B.shift(),w=I+(B.length===1?B.shift():0),x(c,f,d,I,v,w);break;default:Ie<32?console.warn(`Glyph ${h}: unknown operator ${Ie}`):Ie<247?B.push(Ie-139):Ie<251?(j=k[V],V+=1,B.push((Ie-247)*256+j+108)):Ie<255?(j=k[V],V+=1,B.push(-(Ie-251)*256-j-108)):(j=k[V],te=k[V+1],J=k[V+2],H=k[V+3],V+=4,B.push((j<<24|te<<16|J<<8|H)/65536))}}}X(e),this.pathCommands=C,S&&(this.advanceWidth=R)}}class fn{constructor(A){u(this,"_items",[]);this._sfnt=A}get(A){const e=this._items[A];let t;if(e)t=e;else{t=this._get(A);const i=this._sfnt.hmtx.metrics[A];i&&(t.advanceWidth=t.advanceWidth||i.advanceWidth,t.leftSideBearing=t.leftSideBearing||i.leftSideBearing);const s=this._sfnt.cmap.glyphIndexToUnicodesMap.get(A);s&&(t.unicode??(t.unicode=s[0]),t.unicodes??(t.unicodes=s)),this._items[A]=t}return t}}class af extends fn{get length(){return this._sfnt.cff.charStringsIndex.offsets.length-1}_get(A){const e=this._sfnt.cff,t=new of({index:A});return t.parse(e,e.charStringsIndex.get(A),this),t.name=e.charset[A],t}}var lf=Object.defineProperty,cl=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&lf(A,e,i),i};class _r extends gt{constructor(e,t,i,s){super(e,t,i,s);u(this,"_offsets");u(this,"_objects");this._init()}get offsets(){return this._offsets??(this._offsets=this.readOffsets())}get objects(){return this._objects??(this._objects=this.readObjects())}_init(){const e=this.view,t=this.count,i=this.offsetSize;this.objectOffset=(t+1)*i+2,this.endOffset=e.byteOffset+this.objectOffset+this.offsets[t]}readOffsets(){const e=this.view,t=this.count,i=this.offsetSize;e.seek(3);const s=[];for(let n=0,o=t+1;n<o;n++){const a=this.view;let l=0;for(let h=0;h<i;h++)l<<=8,l+=a.readUint8();s.push(l)}return s}readObjects(){const e=[];for(let t=0,i=this.count;t<i;t++)e.push(this.get(t));return e}get(e){const t=this.offsets,i=this.objectOffset,s=i+t[e],o=i+t[e+1]-s;return this._isString?this.view.readString(s,o):this.view.readBytes(s,o)}}cl([y("uint16")],_r.prototype,"count"),cl([y("uint8")],_r.prototype,"offsetSize");class Dr extends _r{constructor(){super(...arguments);u(this,"_isString",!1)}}class ul extends _r{constructor(){super(...arguments);u(this,"_isString",!0)}}const hf=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","266 ff","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],gf=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],cf=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],uf=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"];function br(r,A){return A<=390?hf[A]:r[A-391]}function Qe(r,A="number",e){return(t,i)=>{if(typeof i!="string")return;const s={type:A,operator:r,default:e??A==="number"?0:void 0};Object.defineProperty(t.constructor.prototype,i,{get(){return this._getProp(s)},set(n){this._setProp(s,n)},configurable:!0,enumerable:!0})}}class fl extends gt{constructor(){super(...arguments);u(this,"_dict");u(this,"_stringIndex")}get dict(){return this._dict??(this._dict=this._readDict())}setStringIndex(e){return this._stringIndex=e,this}_readFloatOperand(){const e=this.view;let t="";const i=15,s=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"];for(;;){const n=e.readUint8(),o=n>>4,a=n&15;if(o===i||(t+=s[o],a===i))break;t+=s[a]}return Number.parseFloat(t)}_readOperand(e){const t=this.view;let i,s,n,o;if(e===28)return i=t.readUint8(),s=t.readUint8(),i<<8|s;if(e===29)return i=t.readUint8(),s=t.readUint8(),n=t.readUint8(),o=t.readUint8(),i<<24|s<<16|n<<8|o;if(e===30)return this._readFloatOperand();if(e>=32&&e<=246)return e-139;if(e>=247&&e<=250)return i=t.readUint8(),(e-247)*256+i+108;if(e>=251&&e<=254)return i=t.readUint8(),-(e-251)*256-i-108;throw new Error(`invalid b0 ${e}, at: ${t.cursor}`)}_readDict(){const e=this.view;e.seek(0);let t=[];const i=e.cursor+e.byteLength,s={};for(;e.cursor<i;){let n=e.readUint8();n<=21?(n===12&&(n=1200+e.readUint8()),s[n]=t,t=[]):t.push(this._readOperand(n))}return s}_getProp(e){var i;const t=this.dict[e.operator]??e.default;switch(e.type){case"number":return t[0];case"string":return br(((i=this._stringIndex)==null?void 0:i.objects)??[],t[0]);case"number[]":return t}return t}_setProp(e,t){}}var ff=Object.defineProperty,dn=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&ff(A,e,i),i};class xr extends fl{}dn([Qe(19)],xr.prototype,"subrs"),dn([Qe(20)],xr.prototype,"defaultWidthX"),dn([Qe(21)],xr.prototype,"nominalWidthX");var df=Object.defineProperty,De=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&df(A,e,i),i};class we extends fl{}De([Qe(0,"string")],we.prototype,"version"),De([Qe(1,"string")],we.prototype,"notice"),De([Qe(1200,"string")],we.prototype,"copyright"),De([Qe(2,"string")],we.prototype,"fullName"),De([Qe(3,"string")],we.prototype,"familyName"),De([Qe(4,"string")],we.prototype,"weight"),De([Qe(1201)],we.prototype,"isFixedPitch"),De([Qe(1202)],we.prototype,"italicAngle"),De([Qe(1203,"number",-100)],we.prototype,"underlinePosition"),De([Qe(1204,"number",50)],we.prototype,"underlineThickness"),De([Qe(1205)],we.prototype,"paintType"),De([Qe(1206,"number",2)],we.prototype,"charstringType"),De([Qe(1207,"number[]",[.001,0,0,.001,0,0])],we.prototype,"fontMatrix"),De([Qe(13)],we.prototype,"uniqueId"),De([Qe(5,"number[]",[0,0,0,0])],we.prototype,"fontBBox"),De([Qe(1208)],we.prototype,"strokeWidth"),De([Qe(14)],we.prototype,"xuid"),De([Qe(15)],we.prototype,"charset"),De([Qe(16)],we.prototype,"encoding"),De([Qe(17)],we.prototype,"charStrings"),De([Qe(18,"number[]",[0,0])],we.prototype,"private");function Je(r,A=r){return e=>{vA.tableDefinitions.set(r,{tag:r,prop:A,class:e}),Object.defineProperty(vA.prototype,A,{get(){return this.get(r)},set(t){return this.set(r,t)},configurable:!0,enumerable:!0})}}const RA=class RA{constructor(A){u(this,"tables",new Map);u(this,"tableViews",new Map);(A instanceof Map?A:new Map(Object.entries(A))).forEach((t,i)=>{this.tableViews.set(i,new DataView(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)))})}get hasGlyf(){return this.tableViews.has("glyf")}get names(){return this.name.names}get unitsPerEm(){return this.head.unitsPerEm}get ascender(){return this.hhea.ascent}get descender(){return this.hhea.descent}get createdTimestamp(){return this.head.created}get modifiedTimestamp(){return this.head.modified}get numGlyphs(){return this.maxp.numGlyphs}get unicodes(){return this.cmap.glyphIndexToUnicodesMap}get glyphs(){return this.hasGlyf?this.glyf.glyphs:this.cff.glyphs}charToGlyphIndex(A){let e=this.cmap.unicodeToGlyphIndexMap.get(A.codePointAt(0));if(e===void 0&&!this.hasGlyf){const{encoding:t,charset:i}=this.cff;e=i.indexOf(t[A.codePointAt(0)])}return e??0}charToGlyph(A){return this.glyphs.get(this.charToGlyphIndex(A))}textToGlyphIndexes(A){const e=[];for(const t of A)e.push(this.charToGlyphIndex(t));return e}textToGlyphs(A){const e=this.glyphs,t=this.textToGlyphIndexes(A),i=t.length,s=Array.from({length:i}),n=e.get(0);for(let o=0;o<i;o+=1)s[o]=e.get(t[o])||n;return s}getPathCommands(A,e,t,i,s){const n=[];return this.forEachGlyph(A,e,t,i,s,(o,a,l,h,c)=>{n.push(...o.getPathCommands(a,l,h,c,this))}),n}getAdvanceWidth(A,e,t){return this.forEachGlyph(A,0,0,e,t,()=>{})}forEachGlyph(A,e=0,t=0,i=72,s={},n){const o=1/this.unitsPerEm*i,a=this.textToGlyphs(A);for(let l=0;l<a.length;l+=1){const h=a[l];n.call(this,h,e,t,i,s),h.advanceWidth&&(e+=h.advanceWidth*o),s.letterSpacing?e+=s.letterSpacing*i:s.tracking&&(e+=s.tracking/1e3*i)}return e}clone(){return new RA(this.tableViews)}delete(A){const e=RA.tableDefinitions.get(A);return e?(this.tableViews.delete(A),this.tables.delete(e.prop),this):this}set(A,e){const t=RA.tableDefinitions.get(A);return t&&this.tables.set(t.prop,e),this.tableViews.set(A,e.view),this}get(A){const e=RA.tableDefinitions.get(A);if(!e)return;let t=this.tables.get(e.prop);if(!t){const i=e.class;if(i){const s=this.tableViews.get(A);if(!s)return;t=new i(s.buffer,s.byteOffset,s.byteLength).setSFNT(this),this.tables.set(e.prop,t)}}return t}};u(RA,"tableDefinitions",new Map);let vA=RA;class je extends gt{setSFNT(A){return this._sfnt=A,this}getSFNT(){return this._sfnt}}var If=Object.defineProperty,Bf=Object.getOwnPropertyDescriptor,Oi=(r,A,e,t)=>{for(var i=t>1?void 0:t?Bf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&If(A,e,i),i};let _A=class extends je{constructor(A,e,t,i){super(A,e,t,i);u(this,"_glyphs");u(this,"privateDict");u(this,"subrsIndex");this._init()}get glyphs(){return this._glyphs??(this._glyphs=new af(this._sfnt))}get gsubrs(){return this.globalSubrIndex.objects}get gsubrsBias(){return this._calcSubroutineBias(this.globalSubrIndex.objects)}get defaultWidthX(){var A;return((A=this.privateDict)==null?void 0:A.defaultWidthX)??0}get nominalWidthX(){var A;return((A=this.privateDict)==null?void 0:A.nominalWidthX)??0}get subrs(){var A;return((A=this.subrsIndex)==null?void 0:A.objects)??[]}get subrsBias(){return this._calcSubroutineBias(this.subrs)}_init(){const A=this.view,{buffer:e,byteOffset:t}=A,i=t+4;this.nameIndex=new ul(e,i),this.topDictIndex=new Dr(e,this.nameIndex.endOffset),this.stringIndex=new ul(e,this.topDictIndex.endOffset),this.globalSubrIndex=new Dr(e,this.stringIndex.endOffset),this.topDict=new we(new Uint8Array(this.topDictIndex.objects[0]).buffer).setStringIndex(this.stringIndex);const s=this.topDict.private[0],n=this.topDict.private[1];s&&(this.privateDict=new xr(e,t+n,s).setStringIndex(this.stringIndex),this.privateDict.subrs&&(this.subrsIndex=new Dr(e,t+n+this.privateDict.subrs))),this.charStringsIndex=new Dr(e,t+this.topDict.charStrings);const o=this.charStringsIndex.offsets.length-1;this.topDict.charset===0?this.charset=gf:this.topDict.charset===1?this.charset=cf:this.topDict.charset===2?this.charset=uf:this.charset=this._readCharset(t+this.topDict.charset,o,this.stringIndex.objects),this.topDict.encoding===0?this.encoding=cn:this.topDict.encoding===1?this.encoding=nf:this.encoding=this._readEncoding(t+this.topDict.encoding)}_readCharset(A,e,t){const i=this.view;i.seek(A);let s,n,o;e-=1;const a=[".notdef"],l=i.readUint8();if(l===0)for(s=0;s<e;s+=1)n=i.readUint16(),a.push(br(t,n));else if(l===1)for(;a.length<=e;)for(n=i.readUint16(),o=i.readUint8(),s=0;s<=o;s+=1)a.push(br(t,n)),n+=1;else if(l===2)for(;a.length<=e;)for(n=i.readUint16(),o=i.readUint16(),s=0;s<=o;s+=1)a.push(br(t,n)),n+=1;else throw new Error(`Unknown charset format ${l}`);return a}_readEncoding(A){const e=this.view;e.seek(A);let t,i;const s={},n=e.readUint8();if(n===0){const o=e.readUint8();for(t=0;t<o;t+=1)i=e.readUint8(),s[i]=t}else if(n===1){const o=e.readUint8();for(i=1,t=0;t<o;t+=1){const a=e.readUint8(),l=e.readUint8();for(let h=a;h<=a+l;h+=1)s[h]=i,i+=1}}else console.warn(`unknown encoding format:${n}`);return s}_calcSubroutineBias(A){let e;return A.length<1240?e=107:A.length<33900?e=1131:e=32768,e}};Oi([y("uint8")],_A.prototype,"majorVersion",2),Oi([y("uint8")],_A.prototype,"minorVersion",2),Oi([y("uint8")],_A.prototype,"headerSize",2),Oi([y("uint8")],_A.prototype,"offsetSize",2),_A=Oi([Je("CFF ","cff")],_A);var Ef=Object.defineProperty,Sr=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Ef(A,e,i),i};const Hi=class Ih extends gt{constructor(A=new ArrayBuffer(262),e){super(A,e,262)}static from(A){const e=new Ih;return e.format=0,e.length=e.view.byteLength,e.language=0,A.forEach((t,i)=>{i<256&&t<256&&e.view.writeUint8(t,6+i)}),e}getUnicodeToGlyphIndexMap(){const A=new Map;return this.glyphIndexArray.forEach((e,t)=>{A.set(t,e)}),A}};Sr([y("uint16")],Hi.prototype,"format"),Sr([y("uint16")],Hi.prototype,"length"),Sr([y("uint16")],Hi.prototype,"language"),Sr([y({type:"uint8",size:256})],Hi.prototype,"glyphIndexArray");let In=Hi;var pf=Object.defineProperty,Bn=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&pf(A,e,i),i};class Ji extends gt{get subHeaderKeys(){return this.view.seek(6),Array.from({length:256},()=>this.view.readUint16()/8)}get maxSubHeaderKey(){return this.subHeaderKeys.reduce((A,e)=>Math.max(A,e),0)}get subHeaders(){const A=this.maxSubHeaderKey;return this.view.seek(6+256*2),Array.from({length:A},(e,t)=>({firstCode:this.view.readUint16(),entryCount:this.view.readUint16(),idDelta:this.view.readUint16(),idRangeOffset:(this.view.readUint16()-(A-t)*8-2)/2}))}get glyphIndexArray(){const A=this.maxSubHeaderKey,e=6+256*2+A*8;this.view.seek(e);const t=(this.view.byteLength-e)/2;return Array.from({length:t},()=>this.view.readUint16())}getUnicodeToGlyphIndexMap(A){const e=new Map,t=this.subHeaderKeys,i=this.maxSubHeaderKey,s=this.subHeaders,n=this.glyphIndexArray,o=t.findIndex(l=>l===i);let a=0;for(let l=0;l<256;l++)if(t[l]===0)l>=o||l<s[0].firstCode||l>=s[0].firstCode+s[0].entryCount||s[0].idRangeOffset+(l-s[0].firstCode)>=n.length?a=0:(a=n[s[0].idRangeOffset+(l-s[0].firstCode)],a!==0&&(a=a+s[0].idDelta)),a!==0&&a<A&&e.set(l,a);else{const h=t[l];for(let c=0,f=s[h].entryCount;c<f;c++)if(s[h].idRangeOffset+c>=n.length?a=0:(a=n[s[h].idRangeOffset+c],a!==0&&(a=a+s[h].idDelta)),a!==0&&a<A){const d=(l<<8|c+s[h].firstCode)%65535;e.set(d,a)}}return e}}Bn([y("uint16")],Ji.prototype,"format"),Bn([y("uint16")],Ji.prototype,"length"),Bn([y("uint16")],Ji.prototype,"language");function dl(r){return r>32767?r-65536:r<-32767?r+65536:r}function En(r,A){let e;const t=[];let i={};return r.forEach((s,n)=>{A&&n>A||((!e||n!==e.unicode+1||s!==e.glyphIndex+1)&&(e?(i.end=e.unicode,t.push(i),i={start:n,startId:s,delta:dl(s-n)}):(i.start=Number(n),i.startId=s,i.delta=dl(s-n))),e={unicode:n,glyphIndex:s})}),e&&(i.end=e.unicode,t.push(i)),t}var Cf=Object.defineProperty,DA=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Cf(A,e,i),i};const oA=class Bh extends gt{get endCode(){const A=this.segCountX2;return this.view.seek(14),Array.from({length:A/2},()=>this.view.readUint16())}set endCode(A){this.view.seek(14),A.forEach(e=>this.view.writeUint16(e))}get reservedPad(){return this.view.readUint16(14+this.segCountX2)}set reservedPad(A){this.view.writeUint16(A,14+this.segCountX2)}get startCode(){const A=this.segCountX2;return this.view.seek(14+A+2),Array.from({length:A/2},()=>this.view.readUint16())}set startCode(A){this.view.seek(14+this.segCountX2+2),A.forEach(e=>this.view.writeUint16(e))}get idDelta(){const A=this.segCountX2;return this.view.seek(14+A+2+A),Array.from({length:A/2},()=>this.view.readUint16())}set idDelta(A){const e=this.segCountX2;this.view.seek(14+e+2+e),A.forEach(t=>this.view.writeUint16(t))}get idRangeOffsetCursor(){const A=this.segCountX2;return 14+A+2+A*2}get idRangeOffset(){const A=this.segCountX2;return this.view.seek(this.idRangeOffsetCursor),Array.from({length:A/2},()=>this.view.readUint16())}set idRangeOffset(A){this.view.seek(this.idRangeOffsetCursor),A.forEach(e=>this.view.writeUint16(e))}get glyphIndexArrayCursor(){const A=this.segCountX2;return 14+A+2+A*3}get glyphIndexArray(){const A=this.glyphIndexArrayCursor;this.view.seek(A);const e=(this.view.byteLength-A)/2;return Array.from({length:e},()=>this.view.readUint16())}static from(A){const e=En(A,65535),t=e.length+1,i=Math.floor(Math.log(t)/Math.LN2),s=2*2**i,n=new Bh(new ArrayBuffer(24+e.length*8));return n.format=4,n.length=n.view.byteLength,n.language=0,n.segCountX2=t*2,n.searchRange=s,n.entrySelector=i,n.rangeShift=2*t-s,n.endCode=[...e.map(o=>o.end),65535],n.reservedPad=0,n.startCode=[...e.map(o=>o.start),65535],n.idDelta=[...e.map(o=>o.delta),1],n.idRangeOffset=Array.from({length:t},()=>0),n}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.segCountX2/2,t=(this.glyphIndexArrayCursor-this.idRangeOffsetCursor)/2,i=this.startCode,s=this.endCode,n=this.idRangeOffset,o=this.idDelta,a=this.glyphIndexArray;for(let l=0;l<e;++l)for(let h=i[l],c=s[l];h<=c;++h)if(n[l]===0)A.set(h,(h+o[l])%65536);else{const f=l+n[l]/2+(h-i[l])-t,d=a[f];d!==0?A.set(h,(d+o[l])%65536):A.set(h,0)}return A.delete(65535),A}};DA([y("uint16")],oA.prototype,"format"),DA([y("uint16")],oA.prototype,"length"),DA([y("uint16")],oA.prototype,"language"),DA([y("uint16")],oA.prototype,"segCountX2"),DA([y("uint16")],oA.prototype,"searchRange"),DA([y("uint16")],oA.prototype,"entrySelector"),DA([y("uint16")],oA.prototype,"rangeShift");let pn=oA;var Qf=Object.defineProperty,Ki=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Qf(A,e,i),i};class bA extends gt{get glyphIndexArray(){return this.view.seek(12),Array.from({length:this.entryCount},()=>this.view.readUint16())}getUnicodeToGlyphIndexMap(){const A=this.glyphIndexArray,e=new Map;return A.forEach((t,i)=>{e.set(i,t)}),e}}Ki([y("uint16")],bA.prototype,"format"),Ki([y("uint16")],bA.prototype,"length"),Ki([y("uint16")],bA.prototype,"language"),Ki([y("uint16")],bA.prototype,"firstCode"),Ki([y("uint16")],bA.prototype,"entryCount");var yf=Object.defineProperty,Yi=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&yf(A,e,i),i};const XA=class Eh extends gt{get groups(){const A=this.nGroups;return this.view.seek(16),Array.from({length:A},()=>({startCharCode:this.view.readUint32(),endCharCode:this.view.readUint32(),startGlyphCode:this.view.readUint32()}))}static from(A){const e=En(A),t=new Eh(new ArrayBuffer(16+e.length*12));return t.format=12,t.reserved=0,t.length=t.view.byteLength,t.language=0,t.nGroups=e.length,e.forEach(i=>{t.view.writeUint32(i.start),t.view.writeUint32(i.end),t.view.writeUint32(i.startId)}),t}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.groups;for(let t=0,i=e.length;t<i;t++){const s=e[t];let n=s.startGlyphCode,o=s.startCharCode;const a=s.endCharCode;for(;o<=a;)A.set(o++,n++)}return A}};Yi([y("uint16")],XA.prototype,"format"),Yi([y("uint16")],XA.prototype,"reserved"),Yi([y("uint32")],XA.prototype,"length"),Yi([y("uint32")],XA.prototype,"language"),Yi([y("uint32")],XA.prototype,"nGroups");let Cn=XA;var mf=Object.defineProperty,Qn=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&mf(A,e,i),i};class Wi extends gt{getVarSelectorRecords(){const A=this.numVarSelectorRecords;return this.view.seek(10),Array.from({length:A},()=>{const e={varSelector:this.view.readUint24(),defaultUVSOffset:this.view.readUint32(),unicodeValueRanges:[],nonDefaultUVSOffset:this.view.readUint32(),uVSMappings:[]};if(e.defaultUVSOffset){this.view.seek(e.defaultUVSOffset);const t=this.view.readUint32();e.unicodeValueRanges=Array.from({length:t},()=>({startUnicodeValue:this.view.readUint24(),additionalCount:this.view.readUint8()}))}if(e.nonDefaultUVSOffset){this.view.seek(e.nonDefaultUVSOffset);const t=this.view.readUint32();e.uVSMappings=Array.from({length:t},()=>({unicodeValue:this.view.readUint24(),glyphID:this.view.readUint16()}))}return e})}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.getVarSelectorRecords();for(let t=0,i=e.length;t<i;t++){const{uVSMappings:s}=e[t];s.forEach(n=>{A.set(n.unicodeValue,n.glyphID)})}return A}}Qn([y("uint16")],Wi.prototype,"format"),Qn([y("uint32")],Wi.prototype,"length"),Qn([y("uint32")],Wi.prototype,"numVarSelectorRecords");var wf=Object.defineProperty,vf=Object.getOwnPropertyDescriptor,yn=(r,A,e,t)=>{for(var i=t>1?void 0:t?vf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&wf(A,e,i),i};let jA=class extends je{constructor(){super(...arguments);u(this,"_unicodeToGlyphIndexMap");u(this,"_glyphIndexToUnicodesMap")}static from(A){const e=Array.from(A.keys()).some(c=>c>65535),t=pn.from(A),i=In.from(A),s=e?Cn.from(A):void 0,n=4+(s?32:24),o=n+t.view.byteLength,a=o+i.view.byteLength,l=[{platformID:0,platformSpecificID:3,offset:n},{platformID:1,platformSpecificID:0,offset:o},{platformID:3,platformSpecificID:1,offset:n},s&&{platformID:3,platformSpecificID:10,offset:a}].filter(Boolean),h=new jA(new ArrayBuffer(4+8*l.length+t.view.byteLength+i.view.byteLength+((s==null?void 0:s.view.byteLength)??0)));return h.numberSubtables=l.length,h.view.seek(4),l.forEach(c=>{h.view.writeUint16(c.platformID),h.view.writeUint16(c.platformSpecificID),h.view.writeUint32(c.offset)}),h.view.writeBytes(t.view,n),h.view.writeBytes(i.view,o),s&&h.view.writeBytes(s.view,a),h}get unicodeToGlyphIndexMap(){return this._unicodeToGlyphIndexMap??(this._unicodeToGlyphIndexMap=this.readunicodeToGlyphIndexMap())}get glyphIndexToUnicodesMap(){if(!this._glyphIndexToUnicodesMap){const A=new Map,e=this.unicodeToGlyphIndexMap,t=Array.from(e.keys());for(let i=0,s=t.length;i<s;i++){const n=t[i],o=e.get(n);A.has(o)?A.get(o).push(n):A.set(o,[n])}this._glyphIndexToUnicodesMap=A}return this._glyphIndexToUnicodesMap}readSubtables(){const A=this.numberSubtables;return this.view.seek(4),Array.from({length:A},()=>({platformID:this.view.readUint16(),platformSpecificID:this.view.readUint16(),offset:this.view.readUint32()})).map(e=>{this.view.seek(e.offset);const t=this.view.readUint16();let i;switch(t){case 0:i=new In(this.view.buffer,e.offset);break;case 2:i=new Ji(this.view.buffer,e.offset,this.view.readUint16());break;case 4:i=new pn(this.view.buffer,e.offset,this.view.readUint16());break;case 6:i=new bA(this.view.buffer,e.offset,this.view.readUint16());break;case 12:i=new Cn(this.view.buffer,e.offset,this.view.readUint32(e.offset+4));break;case 14:default:i=new Wi(this.view.buffer,e.offset,this.view.readUint32());break}return{...e,format:t,view:i}})}readunicodeToGlyphIndexMap(){var o,a,l,h,c;const A=this.readSubtables(),e=(o=A.find(f=>f.format===0))==null?void 0:o.view,t=(a=A.find(f=>f.platformID===3&&f.platformSpecificID===3&&f.format===2))==null?void 0:a.view,i=(l=A.find(f=>f.platformID===3&&f.platformSpecificID===1&&f.format===4))==null?void 0:l.view,s=(h=A.find(f=>f.platformID===3&&f.platformSpecificID===10&&f.format===12))==null?void 0:h.view,n=(c=A.find(f=>f.platformID===0&&f.platformSpecificID===5&&f.format===14))==null?void 0:c.view;return new Map([...(e==null?void 0:e.getUnicodeToGlyphIndexMap())??[],...(t==null?void 0:t.getUnicodeToGlyphIndexMap(this._sfnt.maxp.numGlyphs))??[],...(i==null?void 0:i.getUnicodeToGlyphIndexMap())??[],...(s==null?void 0:s.getUnicodeToGlyphIndexMap())??[],...(n==null?void 0:n.getUnicodeToGlyphIndexMap())??[]])}};yn([y("uint16")],jA.prototype,"version",2),yn([y("uint16")],jA.prototype,"numberSubtables",2),jA=yn([Je("cmap")],jA);class _f extends un{_parseContours(A){const e=[];let t=[];for(let i=0;i<A.length;i+=1){const s=A[i];t.push(s),s.lastPointOfContour&&(e.push(t),t=[])}return Li(t.length===0,"There are still points left in the current contour."),e}_transformPoints(A,e){const t=[];for(let i=0;i<A.length;i+=1){const s=A[i],n={x:e.xScale*s.x+e.scale10*s.y+e.dx,y:e.scale01*s.x+e.yScale*s.y+e.dy,onCurve:s.onCurve,lastPointOfContour:s.lastPointOfContour};t.push(n)}return t}_parseGlyphCoordinate(A,e,t,i,s){let n;return(e&i)>0?(n=A.view.readUint8(),(e&s)===0&&(n=-n),n=t+n):(e&s)>0?n=t:n=t+A.view.readInt16(),n}parse(A,e,t){A.view.seek(e);const i=this.numberOfContours=A.view.readInt16();if(this.xMin=A.view.readInt16(),this.yMin=A.view.readInt16(),this.xMax=A.view.readInt16(),this.yMax=A.view.readInt16(),i>0){const o=this.endPointIndices=[];for(let C=0;C<i;C++)o.push(A.view.readUint16());const a=this.instructionLength=A.view.readUint16();Li(a<5e3,`Bad instructionLength:${a}`);const l=this.instructions=[];for(let C=0;C<a;++C)l.push(A.view.readUint8());const h=A.view.byteOffset,c=o[o.length-1]+1;Li(c<2e4,`Bad numberOfCoordinates:${h}`);const f=[];let d,I=0;for(;I<c;)if(d=A.view.readUint8(),f.push(d),I++,d&8&&I<c){const C=A.view.readUint8();for(let B=0;B<C;B++)f.push(d),I++}if(Li(f.length===c,`Bad flags length: ${f.length}, numberOfCoordinates: ${c}`),o.length>0){const C=[];let B;if(c>0){for(let _=0;_<c;_+=1)d=f[_],B={},B.onCurve=!!(d&1),B.lastPointOfContour=o.includes(_),C.push(B);let P=0;for(let _=0;_<c;_+=1)d=f[_],B=C[_],B.x=this._parseGlyphCoordinate(A,d,P,2,16),P=B.x;let S=0;for(let _=0;_<c;_+=1)d=f[_],B=C[_],B.y=this._parseGlyphCoordinate(A,d,S,4,32),S=B.y}this.points=C}else this.points=[]}else if(i===0)this.points=[];else{this.isComposite=!0,this.points=[],this.components=[];let o,a=!0;for(;a;){o=A.view.readUint16();const l={glyphIndex:A.view.readUint16(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(o&1)>0?(o&2)>0?(l.dx=A.view.readInt16(),l.dy=A.view.readInt16()):l.matchedPoints=[A.view.readUint16(),A.view.readUint16()]:(o&2)>0?(l.dx=A.view.readInt8(),l.dy=A.view.readInt8()):l.matchedPoints=[A.view.readUint8(),A.view.readUint8()],(o&8)>0?l.xScale=l.yScale=A.view.readInt16()/16384:(o&64)>0?(l.xScale=A.view.readInt16()/16384,l.yScale=A.view.readInt16()/16384):(o&128)>0&&(l.xScale=A.view.readInt16()/16384,l.scale01=A.view.readInt16()/16384,l.scale10=A.view.readInt16()/16384,l.yScale=A.view.readInt16()/16384),this.components.push(l),a=!!(o&32)}if(o&256){this.instructionLength=A.view.readUint16(),this.instructions=[];for(let l=0;l<this.instructionLength;l+=1)this.instructions.push(A.view.readUint8())}}if(this.isComposite)for(let o=0;o<this.components.length;o+=1){const a=this.components[o],l=t.get(a.glyphIndex);if(l.getPathCommands(),l.points){let h;if(a.matchedPoints===void 0)h=this._transformPoints(l.points,a);else{Li(a.matchedPoints[0]>this.points.length-1||a.matchedPoints[1]>l.points.length-1,`Matched points out of range in ${this.name}`);const c=this.points[a.matchedPoints[0]];let f=l.points[a.matchedPoints[1]];const d={xScale:a.xScale,scale01:a.scale01,scale10:a.scale10,yScale:a.yScale,dx:0,dy:0};f=this._transformPoints([f],d)[0],d.dx=c.x-f.x,d.dy=c.y-f.y,h=this._transformPoints(l.points,d)}this.points=this.points.concat(h)}}const s=[],n=this._parseContours(this.points);for(let o=0,a=n.length;o<a;++o){const l=n[o];let h=l[l.length-1],c=l[0];h.onCurve?s.push({type:"M",x:h.x,y:h.y}):c.onCurve?s.push({type:"M",x:c.x,y:c.y}):s.push({type:"M",x:(h.x+c.x)*.5,y:(h.y+c.y)*.5});for(let f=0,d=l.length;f<d;++f)if(h=c,c=l[(f+1)%d],h.onCurve)s.push({type:"L",x:h.x,y:h.y});else{let I=c;c.onCurve||(I={x:(h.x+c.x)*.5,y:(h.y+c.y)*.5}),s.push({type:"Q",x1:h.x,y1:h.y,x:I.x,y:I.y})}s.push({type:"Z"})}this.pathCommands=s}}class Df extends fn{get length(){return this._sfnt.loca.locations.length}_get(A){const e=this._sfnt.loca.locations,t=e[A],i=new _f({index:A});return t!==e[A+1]&&i.parse(this._sfnt.glyf,t,this),i}}var bf=Object.getOwnPropertyDescriptor,xf=(r,A,e,t)=>{for(var i=t>1?void 0:t?bf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Mr=class extends je{constructor(){super(...arguments);u(this,"_glyphs")}static from(A){const e=A.reduce((i,s)=>i+s.byteLength,0),t=new Mr(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeBytes(i)}),t}get glyphs(){return this._glyphs??(this._glyphs=new Df(this._sfnt))}};Mr=xf([Je("glyf")],Mr);var Sf=Object.getOwnPropertyDescriptor,Mf=(r,A,e,t)=>{for(var i=t>1?void 0:t?Sf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let mn=class extends je{};mn=Mf([Je("GPOS","gpos")],mn);var Rf=Object.defineProperty,Pf=Object.getOwnPropertyDescriptor,xA=(r,A,e,t)=>{for(var i=t>1?void 0:t?Pf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Rf(A,e,i),i};let Xt=class extends je{};xA([y("uint16")],Xt.prototype,"majorVersion",2),xA([y("uint16")],Xt.prototype,"minorVersion",2),xA([y("uint16")],Xt.prototype,"scriptListOffset",2),xA([y("uint16")],Xt.prototype,"featureListOffset",2),xA([y("uint16")],Xt.prototype,"lookupListOffset",2),xA([y("uint16")],Xt.prototype,"featureVariationsOffset",2),Xt=xA([Je("GSUB","gsub")],Xt);var Uf=Object.defineProperty,kf=Object.getOwnPropertyDescriptor,Fe=(r,A,e,t)=>{for(var i=t>1?void 0:t?kf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Uf(A,e,i),i};let Me=class extends je{constructor(r=new ArrayBuffer(54),A){super(r,A,Math.min(54,r.byteLength-(A??0)))}};Fe([y("fixed")],Me.prototype,"version",2),Fe([y("fixed")],Me.prototype,"fontRevision",2),Fe([y("uint32")],Me.prototype,"checkSumAdjustment",2),Fe([y("uint32")],Me.prototype,"magickNumber",2),Fe([y("uint16")],Me.prototype,"flags",2),Fe([y("uint16")],Me.prototype,"unitsPerEm",2),Fe([y({type:"longDateTime"})],Me.prototype,"created",2),Fe([y({type:"longDateTime"})],Me.prototype,"modified",2),Fe([y("int16")],Me.prototype,"xMin",2),Fe([y("int16")],Me.prototype,"yMin",2),Fe([y("int16")],Me.prototype,"xMax",2),Fe([y("int16")],Me.prototype,"yMax",2),Fe([y("uint16")],Me.prototype,"macStyle",2),Fe([y("uint16")],Me.prototype,"lowestRecPPEM",2),Fe([y("int16")],Me.prototype,"fontDirectionHint",2),Fe([y("int16")],Me.prototype,"indexToLocFormat",2),Fe([y("int16")],Me.prototype,"glyphDataFormat",2),Me=Fe([Je("head")],Me);var Nf=Object.defineProperty,Ff=Object.getOwnPropertyDescriptor,rt=(r,A,e,t)=>{for(var i=t>1?void 0:t?Ff(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Nf(A,e,i),i};let Ke=class extends je{constructor(r=new ArrayBuffer(36),A){super(r,A,Math.min(36,r.byteLength-(A??0)))}};rt([y("fixed")],Ke.prototype,"version",2),rt([y("int16")],Ke.prototype,"ascent",2),rt([y("int16")],Ke.prototype,"descent",2),rt([y("int16")],Ke.prototype,"lineGap",2),rt([y("uint16")],Ke.prototype,"advanceWidthMax",2),rt([y("int16")],Ke.prototype,"minLeftSideBearing",2),rt([y("int16")],Ke.prototype,"minRightSideBearing",2),rt([y("int16")],Ke.prototype,"xMaxExtent",2),rt([y("int16")],Ke.prototype,"caretSlopeRise",2),rt([y("int16")],Ke.prototype,"caretSlopeRun",2),rt([y("int16")],Ke.prototype,"caretOffset",2),rt([y({type:"int16",size:4})],Ke.prototype,"reserved",2),rt([y("int16")],Ke.prototype,"metricDataFormat",2),rt([y("uint16")],Ke.prototype,"numOfLongHorMetrics",2),Ke=rt([Je("hhea")],Ke);var Tf=Object.getOwnPropertyDescriptor,Lf=(r,A,e,t)=>{for(var i=t>1?void 0:t?Tf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Rr=class extends je{constructor(){super(...arguments);u(this,"_metrics")}static from(A){const e=A.length*4,t=new Rr(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeUint16(i.advanceWidth),t.view.writeUint16(i.leftSideBearing)}),t}get metrics(){return this._metrics??(this._metrics=this.readMetrics())}readMetrics(){const A=this._sfnt.maxp.numGlyphs,e=this._sfnt.hhea.numOfLongHorMetrics;let t=0;const i=this.view;return i.seek(0),Array.from({length:A}).map((s,n)=>(n<e&&(t=i.readUint16()),{advanceWidth:t,leftSideBearing:i.readUint16()}))}};Rr=Lf([Je("hmtx")],Rr);var Gf=Object.getOwnPropertyDescriptor,Of=(r,A,e,t)=>{for(var i=t>1?void 0:t?Gf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let wn=class extends je{};wn=Of([Je("kern","kern")],wn);var Hf=Object.getOwnPropertyDescriptor,Jf=(r,A,e,t)=>{for(var i=t>1?void 0:t?Hf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let Pr=class extends je{constructor(){super(...arguments);u(this,"_locations")}static from(A,e=1){const t=A.length*(e?4:2),i=new Pr(new ArrayBuffer(t));return A.forEach(s=>{e?i.view.writeUint32(s):i.view.writeUint16(s/2)}),i}get locations(){return this._locations??(this._locations=this.readLocations())}readLocations(){const A=this._sfnt.maxp.numGlyphs,e=this._sfnt.head.indexToLocFormat,t=this.view;return t.seek(0),Array.from({length:A}).map(()=>e?t.readUint32():t.readUint16()*2)}};Pr=Jf([Je("loca")],Pr);var Kf=Object.defineProperty,Yf=Object.getOwnPropertyDescriptor,Ze=(r,A,e,t)=>{for(var i=t>1?void 0:t?Yf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Kf(A,e,i),i};let Te=class extends je{constructor(r=new ArrayBuffer(32),A){super(r,A,Math.min(32,r.byteLength-(A??0)))}};Ze([y("fixed")],Te.prototype,"version",2),Ze([y("uint16")],Te.prototype,"numGlyphs",2),Ze([y("uint16")],Te.prototype,"maxPoints",2),Ze([y("uint16")],Te.prototype,"maxContours",2),Ze([y("uint16")],Te.prototype,"maxComponentPoints",2),Ze([y("uint16")],Te.prototype,"maxComponentContours",2),Ze([y("uint16")],Te.prototype,"maxZones",2),Ze([y("uint16")],Te.prototype,"maxTwilightPoints",2),Ze([y("uint16")],Te.prototype,"maxStorage",2),Ze([y("uint16")],Te.prototype,"maxFunctionDefs",2),Ze([y("uint16")],Te.prototype,"maxInstructionDefs",2),Ze([y("uint16")],Te.prototype,"maxStackElements",2),Ze([y("uint16")],Te.prototype,"maxSizeOfInstructions",2),Ze([y("uint16")],Te.prototype,"maxComponentElements",2),Ze([y("uint16")],Te.prototype,"maxComponentDepth",2),Te=Ze([Je("maxp")],Te);var Wf=Object.defineProperty,zf=Object.getOwnPropertyDescriptor,Ur=(r,A,e,t)=>{for(var i=t>1?void 0:t?zf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Wf(A,e,i),i};const Il={0:"copyright",1:"fontFamily",2:"fontSubFamily",3:"uniqueSubFamily",4:"fullName",5:"version",6:"postScriptName",7:"tradeMark",8:"manufacturer",9:"designer",10:"description",11:"urlOfFontVendor",12:"urlOfFontDesigner",13:"licence",14:"urlOfLicence",16:"preferredFamily",17:"preferredSubFamily",18:"compatibleFull",19:"sampleText"},vn={Macintosh:1,Microsoft:3},Vf={Default:0},Bl={UCS2:1};let ZA=class extends je{constructor(){super(...arguments);u(this,"_names")}get names(){return this._names??(this._names=this.readNames())}readNames(){const A=this.count;this.view.seek(6);const e=[];for(let a=0;a<A;++a)e.push({platform:this.view.readUint16(),encoding:this.view.readUint16(),language:this.view.readUint16(),nameId:this.view.readUint16(),length:this.view.readUint16(),offset:this.view.readUint16()});const t=this.stringOffset;for(let a=0;a<A;++a){const l=e[a];l.name=this.view.readBytes(t+l.offset,l.length)}let i=vn.Macintosh,s=Vf.Default,n=0;e.some(a=>a.platform===vn.Microsoft&&a.encoding===Bl.UCS2&&a.language===1033)&&(i=vn.Microsoft,s=Bl.UCS2,n=1033);const o={};for(let a=0;a<A;++a){const l=e[a];l.platform===i&&l.encoding===s&&l.language===n&&Il[l.nameId]&&(o[Il[l.nameId]]=n===0?ef(l.name):tf(l.name))}return o}};Ur([y("uint16")],ZA.prototype,"format",2),Ur([y("uint16")],ZA.prototype,"count",2),Ur([y("uint16")],ZA.prototype,"stringOffset",2),ZA=Ur([Je("name")],ZA);var qf=Object.defineProperty,Xf=Object.getOwnPropertyDescriptor,se=(r,A,e,t)=>{for(var i=t>1?void 0:t?Xf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&qf(A,e,i),i};let re=class extends je{get fontPANOSE(){return[this.bFamilyType,this.bSerifStyle,this.bWeight,this.bProportion,this.bContrast,this.bStrokeVariation,this.bArmStyle,this.bLetterform,this.bMidline,this.bXHeight]}};se([y("uint16")],re.prototype,"version",2),se([y("int16")],re.prototype,"xAvgCharWidth",2),se([y("uint16")],re.prototype,"usWeightClass",2),se([y("uint16")],re.prototype,"usWidthClass",2),se([y("uint16")],re.prototype,"fsType",2),se([y("uint16")],re.prototype,"ySubscriptXSize",2),se([y("uint16")],re.prototype,"ySubscriptYSize",2),se([y("uint16")],re.prototype,"ySubscriptXOffset",2),se([y("uint16")],re.prototype,"ySubscriptYOffset",2),se([y("uint16")],re.prototype,"ySuperscriptXSize",2),se([y("uint16")],re.prototype,"ySuperscriptYSize",2),se([y("uint16")],re.prototype,"ySuperscriptXOffset",2),se([y("uint16")],re.prototype,"ySuperscriptYOffset",2),se([y("uint16")],re.prototype,"yStrikeoutSize",2),se([y("uint16")],re.prototype,"yStrikeoutPosition",2),se([y("uint16")],re.prototype,"sFamilyClass",2),se([y({type:"uint8"})],re.prototype,"bFamilyType",2),se([y({type:"uint8"})],re.prototype,"bSerifStyle",2),se([y({type:"uint8"})],re.prototype,"bWeight",2),se([y({type:"uint8"})],re.prototype,"bProportion",2),se([y({type:"uint8"})],re.prototype,"bContrast",2),se([y({type:"uint8"})],re.prototype,"bStrokeVariation",2),se([y({type:"uint8"})],re.prototype,"bArmStyle",2),se([y({type:"uint8"})],re.prototype,"bLetterform",2),se([y({type:"uint8"})],re.prototype,"bMidline",2),se([y({type:"uint8"})],re.prototype,"bXHeight",2),se([y({type:"uint8",size:16})],re.prototype,"ulUnicodeRange",2),se([y({type:"char",size:4})],re.prototype,"achVendID",2),se([y("uint16")],re.prototype,"fsSelection",2),se([y("uint16")],re.prototype,"usFirstCharIndex",2),se([y("uint16")],re.prototype,"usLastCharIndex",2),se([y("int16")],re.prototype,"sTypoAscender",2),se([y("int16")],re.prototype,"sTypoDescender",2),se([y("int16")],re.prototype,"sTypoLineGap",2),se([y("uint16")],re.prototype,"usWinAscent",2),se([y("uint16")],re.prototype,"usWinDescent",2),se([y({offset:72,type:"uint8",size:8})],re.prototype,"ulCodePageRange",2),se([y({offset:72,type:"int16"})],re.prototype,"sxHeight",2),se([y("int16")],re.prototype,"sCapHeight",2),se([y("uint16")],re.prototype,"usDefaultChar",2),se([y("uint16")],re.prototype,"usBreakChar",2),se([y("uint16")],re.prototype,"usMaxContext",2),re=se([Je("OS/2","os2")],re);var jf=Object.defineProperty,Zf=Object.getOwnPropertyDescriptor,Pt=(r,A,e,t)=>{for(var i=t>1?void 0:t?Zf(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&jf(A,e,i),i};let Bt=class extends je{constructor(r=new ArrayBuffer(32),A,e){super(r,A,e)}};Pt([y("fixed")],Bt.prototype,"format",2),Pt([y("fixed")],Bt.prototype,"italicAngle",2),Pt([y("int16")],Bt.prototype,"underlinePosition",2),Pt([y("int16")],Bt.prototype,"underlineThickness",2),Pt([y("uint32")],Bt.prototype,"isFixedPitch",2),Pt([y("uint32")],Bt.prototype,"minMemType42",2),Pt([y("uint32")],Bt.prototype,"maxMemType42",2),Pt([y("uint32")],Bt.prototype,"minMemType1",2),Pt([y("uint32")],Bt.prototype,"maxMemType1",2),Bt=Pt([Je("post")],Bt);var $f=Object.defineProperty,ed=Object.getOwnPropertyDescriptor,st=(r,A,e,t)=>{for(var i=t>1?void 0:t?ed(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&$f(A,e,i),i};let Ye=class extends je{constructor(r=new ArrayBuffer(36),A){super(r,A,Math.min(36,r.byteLength-(A??0)))}};st([y("fixed")],Ye.prototype,"version",2),st([y("int16")],Ye.prototype,"vertTypoAscender",2),st([y("int16")],Ye.prototype,"vertTypoDescender",2),st([y("int16")],Ye.prototype,"vertTypoLineGap",2),st([y("int16")],Ye.prototype,"advanceHeightMax",2),st([y("int16")],Ye.prototype,"minTopSideBearing",2),st([y("int16")],Ye.prototype,"minBottomSideBearing",2),st([y("int16")],Ye.prototype,"yMaxExtent",2),st([y("int16")],Ye.prototype,"caretSlopeRise",2),st([y("int16")],Ye.prototype,"caretSlopeRun",2),st([y("int16")],Ye.prototype,"caretOffset",2),st([y({type:"int16",size:4})],Ye.prototype,"reserved",2),st([y("int16")],Ye.prototype,"metricDataFormat",2),st([y("int16")],Ye.prototype,"numOfLongVerMetrics",2),Ye=st([Je("vhea")],Ye);var td=Object.getOwnPropertyDescriptor,Ad=(r,A,e,t)=>{for(var i=t>1?void 0:t?td(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};let kr=class extends je{constructor(){super(...arguments);u(this,"_metrics")}static from(A){const e=A.length*4,t=new kr(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeUint16(i.advanceHeight),t.view.writeInt16(i.topSideBearing)}),t}get metrics(){return this._metrics??(this._metrics=this.readMetrics())}readMetrics(){var s;const A=this._sfnt.maxp.numGlyphs,e=((s=this._sfnt.vhea)==null?void 0:s.numOfLongVerMetrics)??0,t=this.view;t.seek(0);let i=0;return Array.from({length:A}).map((n,o)=>(o<e&&(i=t.readUint16()),{advanceHeight:i,topSideBearing:t.readUint8()}))}};kr=Ad([Je("vmtx")],kr);var id=Object.defineProperty,zi=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&id(A,e,i),i};class Et extends wr{constructor(){super(...arguments);u(this,"format","TrueType");u(this,"mimeType","font/ttf");u(this,"_sfnt")}get sfnt(){return this._sfnt||(this._sfnt=this.createSFNT()),this._sfnt}static is(e){return typeof e=="number"?this.signature.has(e):this.signature.has(VA(e).getUint32(0))}static checksum(e){const t=VA(e);let i=t.byteLength;for(;i%4;)i++;let s=0;for(let n=0,o=i/4;n<o;n+=4)n*4<i-4&&(s+=t.getUint32(n*4,!1));return s&4294967295}static from(e){const t=f=>f+3&-4,i=e.tableViews.size,s=Array.from(e.tableViews.values()).reduce((f,d)=>f+t(d.byteLength),0),n=new this(new ArrayBuffer(12+i*16+s));n.scalerType=65536,n.numTables=i;const o=Math.log(2);n.searchRange=Math.floor(Math.log(i)/o)*16,n.entrySelector=Math.floor(n.searchRange/o),n.rangeShift=i*16-n.searchRange;let a=12+i*16,l=0;const h=n.getDirectories();e.tableViews.forEach((f,d)=>{const I=h[l++];I.tag=d,I.checkSum=this.checksum(f),I.offset=a,I.length=f.byteLength,n.view.writeBytes(f,a),a+=t(I.length)});const c=n.createSFNT().head;return c.checkSumAdjustment=0,c.checkSumAdjustment=2981146554-this.checksum(n.view),n}getDirectories(){let e=this.view.byteOffset+12;return Array.from({length:this.numTables},()=>{const t=new qA(this.view.buffer,e);return e+=t.view.byteLength,t})}createSFNT(){return new vA(this.getDirectories().reduce((e,t)=>(e[t.tag]=new DataView(this.view.buffer,this.view.byteOffset+t.offset,t.length),e),{}))}}u(Et,"signature",new Set([65536,1953658213,1954115633])),zi([y("uint32")],Et.prototype,"scalerType"),zi([y("uint16")],Et.prototype,"numTables"),zi([y("uint16")],Et.prototype,"searchRange"),zi([y("uint16")],Et.prototype,"entrySelector"),zi([y("uint16")],Et.prototype,"rangeShift");class Nr extends Et{constructor(){super(...arguments);u(this,"format","OpenType");u(this,"mimeType","font/otf")}static from(e){return super.from(e)}}u(Nr,"signature",new Set([1330926671]));var rd=Object.defineProperty,Vi=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&rd(A,e,i),i};class SA extends gt{constructor(A,e){super(A,e,20)}}Vi([y({type:"char",size:4})],SA.prototype,"tag"),Vi([y("uint32")],SA.prototype,"offset"),Vi([y("uint32")],SA.prototype,"compLength"),Vi([y("uint32")],SA.prototype,"origLength"),Vi([y("uint32")],SA.prototype,"origChecksum");var sd=Object.defineProperty,ct=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&sd(A,e,i),i};const at=(IA=class extends wr{constructor(){super(...arguments);u(this,"format","WOFF");u(this,"mimeType","font/woff");u(this,"_sfnt")}get subfontFormat(){return Et.is(this.flavor)?"TrueType":Nr.is(this.flavor)?"OpenType":"Open"}get sfnt(){return this._sfnt||(this._sfnt=this.createSFNT()),this._sfnt}static is(e){return typeof e=="number"?this.signature.has(e):this.signature.has(VA(e).getUint32(0))}static checkSum(e){const t=VA(e),i=t.byteLength,s=Math.floor(i/4);let n=0,o=0;for(;o<s;)n+=t.getUint32(4*o++,!1);let a=i-s*4;if(a){let l=s*4;for(;a>0;)n+=t.getUint8(l)<<a*8,l++,a--}return n%4294967296}static from(e,t=new ArrayBuffer(0)){const i=f=>f+3&-4,s=[];e.tableViews.forEach((f,d)=>{const I=VA(zu(new Uint8Array(f.buffer,f.byteOffset,f.byteLength)));s.push({tag:d,view:I.byteLength<f.byteLength?I:f,rawView:f})});const n=s.length,o=s.reduce((f,d)=>f+i(d.view.byteLength),0),a=new IA(new ArrayBuffer(44+20*n+o+t.byteLength));a.signature=2001684038,a.flavor=65536,a.length=a.view.byteLength,a.numTables=n,a.totalSFNTSize=12+16*n+s.reduce((f,d)=>f+i(d.rawView.byteLength),0);let l=44+n*20,h=0;const c=a.getDirectories();return s.forEach(f=>{const d=c[h++];d.tag=f.tag,d.offset=l,d.compLength=f.view.byteLength,d.origChecksum=IA.checkSum(f.rawView),d.origLength=f.rawView.byteLength,a.view.writeBytes(f.view,l),l+=i(d.compLength)}),a.view.writeBytes(t),a}getDirectories(){let e=44;return Array.from({length:this.numTables},()=>{const t=new SA(this.view.buffer,e);return e+=t.view.byteLength,t})}createSFNT(){return new vA(this.getDirectories().reduce((e,t)=>{const i=t.tag,s=this.view.byteOffset+t.offset,n=t.compLength,o=t.origLength,a=s+n;return e[i]=n>=o?new DataView(this.view.buffer,s,n):new DataView(Vu(new Uint8Array(this.view.buffer.slice(s,a))).buffer),e},{}))}},u(IA,"signature",new Set([2001684038])),IA);ct([y("uint32")],at.prototype,"signature"),ct([y("uint32")],at.prototype,"flavor"),ct([y("uint32")],at.prototype,"length"),ct([y("uint16")],at.prototype,"numTables"),ct([y("uint16")],at.prototype,"reserved"),ct([y("uint32")],at.prototype,"totalSFNTSize"),ct([y("uint16")],at.prototype,"majorVersion"),ct([y("uint16")],at.prototype,"minorVersion"),ct([y("uint32")],at.prototype,"metaOffset"),ct([y("uint32")],at.prototype,"metaLength"),ct([y("uint32")],at.prototype,"metaOrigLength"),ct([y("uint32")],at.prototype,"privOffset"),ct([y("uint32")],at.prototype,"privLength");let Fr=at;function El(r,A=!0){if(Et.is(r))return new Et(r);if(Nr.is(r))return new Nr(r);if(Fr.is(r))return new Fr(r);if(A)throw new Error("Failed to parseFont")}function pl(r,A=!0){const e=El(r,!1);if(e)return e;if(A)throw new Error("Failed to parseFont")}const $r=class $r{constructor(){u(this,"fallbackFont");u(this,"loading",new Map);u(this,"loaded",new Map);u(this,"familyToUrl",new Map)}_createRequest(A,e){const t=new AbortController;return{url:A,when:fetch(A,{...$r.defaultRequestInit,...e,signal:t.signal}).then(i=>i.arrayBuffer()),cancel:()=>t.abort()}}injectFontFace(A,e){return document.fonts.add(new FontFace(A,e)),this}injectStyleTag(A,e){const t=document.createElement("style");return t.appendChild(document.createTextNode(`@font-face {
857
+ }`})),ki([S()],c.ZoomBlurEffect.prototype,"center",2),ki([S({default:20})],c.ZoomBlurEffect.prototype,"innerRadius",2),ki([S({default:-1})],c.ZoomBlurEffect.prototype,"radius",2),ki([S({default:.1})],c.ZoomBlurEffect.prototype,"strength",2),c.ZoomBlurEffect=ki([te("ZoomBlurEffect")],c.ZoomBlurEffect);var Du=Object.defineProperty,YA=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&Du(A,e,i),i};class nA extends Jt{constructor(e,t){super();u(this,"_image");this.parent=e,this.setProperties(t)}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"color":case"dpi":case"rotateWithShape":case"tile":this.parent.requestRedraw();break;case"image":this._updateImage();break}}async loadImage(){if(this.image&&this.image!=="none")return await Ft.texture.load(this.image)}async _updateImage(){this._image=await this.loadImage(),this.parent.requestRedraw()}canDraw(){return!!(this._image||this.color)}draw(){const e=this.parent.context;if(this._image){const{width:t,height:i}=this._image,{width:r,height:n}=this.parent.size,o=new dt;if(this.tile){const{translateX:a=0,translateY:l=0,scaleX:h=1,scaleY:g=1}=this.tile;o.scale(1/t,1/i).scale(1/h,1/g).translate(-a/t,-l/i)}else if(this.stretch){const{left:a=0,top:l=0,right:h=0,bottom:g=0}=this.stretch.rect??{},f=Math.abs(1+(-a+-h))*r,I=Math.abs(1+(-l+-g))*n,d=1/f,C=1/I,B=-a*r*d,M=-l*n*C;o.scale(d,C).translate(B,M)}else o.scale(1/r,1/n);e.textureTransform=o,e.fillStyle=this._image,e.fill({disableWrapMode:!0})}else e.fillStyle=this.color,e.fill()}}YA([S()],nA.prototype,"color"),YA([S()],nA.prototype,"image"),YA([S()],nA.prototype,"dpi"),YA([S()],nA.prototype,"rotateWithShape"),YA([S()],nA.prototype,"tile"),YA([S()],nA.prototype,"stretch");var bu=Object.defineProperty,pr=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&bu(A,e,i),i};class WA extends Jt{constructor(e,t){super();u(this,"_path2DSet",new iA);this.parent=e,this.setProperties(t),this._updatePath2DSet()}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"svg":case"data":case"viewBox":this._updatePath2DSet(),this.parent.requestRedraw();break}}_updatePath2DSet(){let e;if(this.svg){const o=Xs(this.svg);this._path2DSet=Zs(o),e=this._path2DSet.viewBox??this.viewBox}else e=this.viewBox,this.data.forEach((o,a)=>{const{data:l,...h}=o,g=new ke;g.style=h,g.addData(l),this._path2DSet.paths[a]=g});const[t,i,r,n]=e;this._path2DSet.paths.forEach(o=>{o.applyTransform(new Je().translate(-t,-i).scale(1/r,1/n))})}draw(){if(this._path2DSet.paths.length){const e=this.parent.context,{width:t,height:i}=this.parent.size;this._path2DSet.paths.forEach(r=>{e.addPath(r.clone().applyTransform(new Je().scale(t,i)))})}else this.drawRect()}drawRect(){const e=this.parent.context,{width:t,height:i}=this.parent.size,{borderRadius:r}=this.parent.style;t&&i&&(r?e.roundRect(0,0,t,i,r):e.rect(0,0,t,i))}}pr([S()],WA.prototype,"name"),pr([S()],WA.prototype,"svg"),pr([S({default:[0,0,1,1]})],WA.prototype,"viewBox"),pr([S({default:[]})],WA.prototype,"data");var xu=Object.defineProperty,Ni=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&xu(A,e,i),i};class vA extends Jt{constructor(A,e){super(),this.parent=A,this.setProperties(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"color":case"width":case"style":case"image":case"opacity":this.parent.requestRedraw();break}}canDraw(){return!!(this.width||this.color)}draw(){const A=this.parent.context;A.lineWidth=this.width,A.strokeStyle=this.color,A.stroke()}}Ni([S({default:0})],vA.prototype,"color"),Ni([S({default:0})],vA.prototype,"width"),Ni([S({default:"solid"})],vA.prototype,"style"),Ni([S()],vA.prototype,"image"),Ni([S({default:1})],vA.prototype,"opacity");var Su=Object.defineProperty,Cr=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&Su(A,e,i),i};class zA extends Jt{constructor(A,e){super(),this.parent=A,this.setProperties(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"color":case"blur":case"offsetX":case"offsetY":this.updateEffect();break}}updateEffect(){const A="__$shadow";let e=this.parent.getNode(A);this.blur||this.offsetX||this.offsetY?(e||(e=new c.DropShadowEffect({name:A}),this.parent.appendChild(e,"back")),e.setProperties(this.getProperties())):e&&this.parent.removeChild(e)}}Cr([S({default:"#000000"})],zA.prototype,"color"),Cr([S({default:0})],zA.prototype,"blur"),Cr([S({default:0})],zA.prototype,"offsetY"),Cr([S({default:0})],zA.prototype,"offsetX");function Mu(){return{overflow:"visible",direction:void 0,display:void 0,boxSizing:void 0,width:void 0,height:void 0,maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,position:void 0,left:0,top:0,right:void 0,bottom:void 0,borderTop:void 0,borderLeft:void 0,borderRight:void 0,borderBottom:void 0,borderWidth:0,border:void 0,flex:void 0,flexBasis:void 0,flexDirection:void 0,flexGrow:void 0,flexShrink:void 0,flexWrap:void 0,justifyContent:void 0,gap:void 0,alignContent:void 0,alignItems:void 0,alignSelf:void 0,marginTop:void 0,marginLeft:void 0,marginRight:void 0,marginBottom:void 0,margin:void 0,paddingTop:void 0,paddingLeft:void 0,paddingRight:void 0,paddingBottom:void 0,padding:void 0}}function Ru(){return{boxShadow:"none"}}function Pu(){return{rotate:0,scaleX:1,scaleY:1,skewX:0,skewY:0,translateX:0,translateY:0,transform:"none",transformOrigin:"center"}}function Uu(){return{...Mu(),...Pu(),...Ru(),backgroundImage:"none",backgroundColor:"none",borderRadius:0,borderColor:"none",borderStyle:"solid",outlineWidth:0,outlineOffset:0,outlineColor:"#000000",outlineStyle:"none",visibility:"visible",filter:"none",opacity:1,pointerEvents:"auto",maskImage:"none"}}function ku(){return{writingMode:"horizontal-tb",verticalAlign:"baseline",lineHeight:1.2,letterSpacing:0,wordSpacing:0,fontSize:14,fontWeight:"normal",fontFamily:"",fontStyle:"normal",fontKerning:"normal",textWrap:"wrap",textAlign:"start",textIndent:0,textTransform:"none",textOrientation:"mixed",textDecoration:"none",textStrokeWidth:0,textStrokeColor:"black",color:"black",listStyleType:"none",listStyleImage:"none",listStyleColormap:"none",listStyleSize:"cover",listStylePosition:"outside",highlightImage:"none",highlightReferImage:"none",highlightColormap:"none",highlightLine:"none",highlightSize:"cover",highlightThickness:"100%"}}function ja(){return{...Uu(),...ku()}}class Fi extends Kt{constructor(A){super(),this.setProperties(A)}}const VA=ja();delete VA.top,delete VA.left,delete VA.width,delete VA.height;for(const s in VA)pi(Fi,s,{default:VA[s]});var Ve=Uint8Array,ht=Uint16Array,An=Int32Array,Qr=new Ve([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),yr=new Ve([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),rn=new Ve([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Za=function(s,A){for(var e=new ht(31),t=0;t<31;++t)e[t]=A+=1<<s[t-1];for(var i=new An(e[30]),t=1;t<30;++t)for(var r=e[t];r<e[t+1];++r)i[r]=r-e[t]<<5|t;return{b:e,r:i}},$a=Za(Qr,2),el=$a.b,sn=$a.r;el[28]=258,sn[258]=28;for(var tl=Za(yr,0),Nu=tl.b,Al=tl.r,nn=new ht(32768),Ce=0;Ce<32768;++Ce){var oA=(Ce&43690)>>1|(Ce&21845)<<1;oA=(oA&52428)>>2|(oA&13107)<<2,oA=(oA&61680)>>4|(oA&3855)<<4,nn[Ce]=((oA&65280)>>8|(oA&255)<<8)>>1}for(var Rt=function(s,A,e){for(var t=s.length,i=0,r=new ht(A);i<t;++i)s[i]&&++r[s[i]-1];var n=new ht(A);for(i=1;i<A;++i)n[i]=n[i-1]+r[i-1]<<1;var o;if(e){o=new ht(1<<A);var a=15-A;for(i=0;i<t;++i)if(s[i])for(var l=i<<4|s[i],h=A-s[i],g=n[s[i]-1]++<<h,f=g|(1<<h)-1;g<=f;++g)o[nn[g]>>a]=l}else for(o=new ht(t),i=0;i<t;++i)s[i]&&(o[i]=nn[n[s[i]-1]++]>>15-s[i]);return o},aA=new Ve(288),Ce=0;Ce<144;++Ce)aA[Ce]=8;for(var Ce=144;Ce<256;++Ce)aA[Ce]=9;for(var Ce=256;Ce<280;++Ce)aA[Ce]=7;for(var Ce=280;Ce<288;++Ce)aA[Ce]=8;for(var Ti=new Ve(32),Ce=0;Ce<32;++Ce)Ti[Ce]=5;var Fu=Rt(aA,9,0),Tu=Rt(aA,9,1),Lu=Rt(Ti,5,0),Gu=Rt(Ti,5,1),on=function(s){for(var A=s[0],e=1;e<s.length;++e)s[e]>A&&(A=s[e]);return A},mt=function(s,A,e){var t=A/8|0;return(s[t]|s[t+1]<<8)>>(A&7)&e},an=function(s,A){var e=A/8|0;return(s[e]|s[e+1]<<8|s[e+2]<<16)>>(A&7)},ln=function(s){return(s+7)/8|0},il=function(s,A,e){return(e==null||e>s.length)&&(e=s.length),new Ve(s.subarray(A,e))},Ou=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],wt=function(s,A,e){var t=new Error(A||Ou[s]);if(t.code=s,Error.captureStackTrace&&Error.captureStackTrace(t,wt),!e)throw t;return t},Hu=function(s,A,e,t){var i=s.length,r=0;if(!i||A.f&&!A.l)return e||new Ve(0);var n=!e,o=n||A.i!=2,a=A.i;n&&(e=new Ve(i*3));var l=function(Oe){var he=e.length;if(Oe>he){var me=new Ve(Math.max(he*2,Oe));me.set(e),e=me}},h=A.f||0,g=A.p||0,f=A.b||0,I=A.l,d=A.d,C=A.m,B=A.n,M=i*8;do{if(!I){h=mt(s,g,1);var R=mt(s,g+1,3);if(g+=3,R)if(R==1)I=Tu,d=Gu,C=9,B=5;else if(R==2){var w=mt(s,g,31)+257,D=mt(s,g+10,15)+4,x=w+mt(s,g+5,31)+1;g+=14;for(var L=new Ve(x),$=new Ve(19),K=0;K<D;++K)$[rn[K]]=mt(s,g+K*3,7);g+=D*3;for(var J=on($),Z=(1<<J)-1,Y=Rt($,J,1),K=0;K<x;){var O=Y[mt(s,g,Z)];g+=O&15;var _=O>>4;if(_<16)L[K++]=_;else{var Ae=0,G=0;for(_==16?(G=3+mt(s,g,3),g+=2,Ae=L[K-1]):_==17?(G=3+mt(s,g,7),g+=3):_==18&&(G=11+mt(s,g,127),g+=7);G--;)L[K++]=Ae}}var W=L.subarray(0,w),oe=L.subarray(w);C=on(W),B=on(oe),I=Rt(W,C,1),d=Rt(oe,B,1)}else wt(1);else{var _=ln(g)+4,P=s[_-4]|s[_-3]<<8,v=_+P;if(v>i){a&&wt(0);break}o&&l(f+P),e.set(s.subarray(_,v),f),A.b=f+=P,A.p=g=v*8,A.f=h;continue}if(g>M){a&&wt(0);break}}o&&l(f+131072);for(var q=(1<<C)-1,j=(1<<B)-1,se=g;;se=g){var Ae=I[an(s,g)&q],X=Ae>>4;if(g+=Ae&15,g>M){a&&wt(0);break}if(Ae||wt(2),X<256)e[f++]=X;else if(X==256){se=g,I=null;break}else{var ae=X-254;if(X>264){var K=X-257,ie=Qr[K];ae=mt(s,g,(1<<ie)-1)+el[K],g+=ie}var le=d[an(s,g)&j],z=le>>4;le||wt(3),g+=le&15;var oe=Nu[z];if(z>3){var ie=yr[z];oe+=an(s,g)&(1<<ie)-1,g+=ie}if(g>M){a&&wt(0);break}o&&l(f+131072);var Ie=f+ae;if(f<oe){var nt=r-oe,ot=Math.min(oe,Ie);for(nt+f<0&&wt(3);f<ot;++f)e[f]=t[nt+f]}for(;f<Ie;++f)e[f]=e[f-oe]}}A.l=I,A.p=se,A.b=f,A.f=h,I&&(h=1,A.m=C,A.d=d,A.n=B)}while(!h);return f!=e.length&&n?il(e,0,f):e.subarray(0,f)},Xt=function(s,A,e){e<<=A&7;var t=A/8|0;s[t]|=e,s[t+1]|=e>>8},Li=function(s,A,e){e<<=A&7;var t=A/8|0;s[t]|=e,s[t+1]|=e>>8,s[t+2]|=e>>16},hn=function(s,A){for(var e=[],t=0;t<s.length;++t)s[t]&&e.push({s:t,f:s[t]});var i=e.length,r=e.slice();if(!i)return{t:ol,l:0};if(i==1){var n=new Ve(e[0].s+1);return n[e[0].s]=1,{t:n,l:1}}e.sort(function(v,w){return v.f-w.f}),e.push({s:-1,f:25001});var o=e[0],a=e[1],l=0,h=1,g=2;for(e[0]={s:-1,f:o.f+a.f,l:o,r:a};h!=i-1;)o=e[e[l].f<e[g].f?l++:g++],a=e[l!=h&&e[l].f<e[g].f?l++:g++],e[h++]={s:-1,f:o.f+a.f,l:o,r:a};for(var f=r[0].s,t=1;t<i;++t)r[t].s>f&&(f=r[t].s);var I=new ht(f+1),d=gn(e[h-1],I,0);if(d>A){var t=0,C=0,B=d-A,M=1<<B;for(r.sort(function(w,D){return I[D.s]-I[w.s]||w.f-D.f});t<i;++t){var R=r[t].s;if(I[R]>A)C+=M-(1<<d-I[R]),I[R]=A;else break}for(C>>=B;C>0;){var _=r[t].s;I[_]<A?C-=1<<A-I[_]++-1:++t}for(;t>=0&&C;--t){var P=r[t].s;I[P]==A&&(--I[P],++C)}d=A}return{t:new Ve(I),l:d}},gn=function(s,A,e){return s.s==-1?Math.max(gn(s.l,A,e+1),gn(s.r,A,e+1)):A[s.s]=e},rl=function(s){for(var A=s.length;A&&!s[--A];);for(var e=new ht(++A),t=0,i=s[0],r=1,n=function(a){e[t++]=a},o=1;o<=A;++o)if(s[o]==i&&o!=A)++r;else{if(!i&&r>2){for(;r>138;r-=138)n(32754);r>2&&(n(r>10?r-11<<5|28690:r-3<<5|12305),r=0)}else if(r>3){for(n(i),--r;r>6;r-=6)n(8304);r>2&&(n(r-3<<5|8208),r=0)}for(;r--;)n(i);r=1,i=s[o]}return{c:e.subarray(0,t),n:A}},Gi=function(s,A){for(var e=0,t=0;t<A.length;++t)e+=s[t]*A[t];return e},sl=function(s,A,e){var t=e.length,i=ln(A+2);s[i]=t&255,s[i+1]=t>>8,s[i+2]=s[i]^255,s[i+3]=s[i+1]^255;for(var r=0;r<t;++r)s[i+r+4]=e[r];return(i+4+t)*8},nl=function(s,A,e,t,i,r,n,o,a,l,h){Xt(A,h++,e),++i[256];for(var g=hn(i,15),f=g.t,I=g.l,d=hn(r,15),C=d.t,B=d.l,M=rl(f),R=M.c,_=M.n,P=rl(C),v=P.c,w=P.n,D=new ht(19),x=0;x<R.length;++x)++D[R[x]&31];for(var x=0;x<v.length;++x)++D[v[x]&31];for(var L=hn(D,7),$=L.t,K=L.l,J=19;J>4&&!$[rn[J-1]];--J);var Z=l+5<<3,Y=Gi(i,aA)+Gi(r,Ti)+n,O=Gi(i,f)+Gi(r,C)+n+14+3*J+Gi(D,$)+2*D[16]+3*D[17]+7*D[18];if(a>=0&&Z<=Y&&Z<=O)return sl(A,h,s.subarray(a,a+l));var Ae,G,W,oe;if(Xt(A,h,1+(O<Y)),h+=2,O<Y){Ae=Rt(f,I,0),G=f,W=Rt(C,B,0),oe=C;var q=Rt($,K,0);Xt(A,h,_-257),Xt(A,h+5,w-1),Xt(A,h+10,J-4),h+=14;for(var x=0;x<J;++x)Xt(A,h+3*x,$[rn[x]]);h+=3*J;for(var j=[R,v],se=0;se<2;++se)for(var X=j[se],x=0;x<X.length;++x){var ae=X[x]&31;Xt(A,h,q[ae]),h+=$[ae],ae>15&&(Xt(A,h,X[x]>>5&127),h+=X[x]>>12)}}else Ae=Fu,G=aA,W=Lu,oe=Ti;for(var x=0;x<o;++x){var ie=t[x];if(ie>255){var ae=ie>>18&31;Li(A,h,Ae[ae+257]),h+=G[ae+257],ae>7&&(Xt(A,h,ie>>23&31),h+=Qr[ae]);var le=ie&31;Li(A,h,W[le]),h+=oe[le],le>3&&(Li(A,h,ie>>5&8191),h+=yr[le])}else Li(A,h,Ae[ie]),h+=G[ie]}return Li(A,h,Ae[256]),h+G[256]},Ju=new An([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),ol=new Ve(0),Ku=function(s,A,e,t,i,r){var n=r.z||s.length,o=new Ve(t+n+5*(1+Math.ceil(n/7e3))+i),a=o.subarray(t,o.length-i),l=r.l,h=(r.r||0)&7;if(A){h&&(a[0]=r.r>>3);for(var g=Ju[A-1],f=g>>13,I=g&8191,d=(1<<e)-1,C=r.p||new ht(32768),B=r.h||new ht(d+1),M=Math.ceil(e/3),R=2*M,_=function(He){return(s[He]^s[He+1]<<M^s[He+2]<<R)&d},P=new An(25e3),v=new ht(288),w=new ht(32),D=0,x=0,L=r.i||0,$=0,K=r.w||0,J=0;L+2<n;++L){var Z=_(L),Y=L&32767,O=B[Z];if(C[Y]=O,B[Z]=Y,K<=L){var Ae=n-L;if((D>7e3||$>24576)&&(Ae>423||!l)){h=nl(s,a,0,P,v,w,x,$,J,L-J,h),$=D=x=0,J=L;for(var G=0;G<286;++G)v[G]=0;for(var G=0;G<30;++G)w[G]=0}var W=2,oe=0,q=I,j=Y-O&32767;if(Ae>2&&Z==_(L-j))for(var se=Math.min(f,Ae)-1,X=Math.min(32767,L),ae=Math.min(258,Ae);j<=X&&--q&&Y!=O;){if(s[L+W]==s[L+W-j]){for(var ie=0;ie<ae&&s[L+ie]==s[L+ie-j];++ie);if(ie>W){if(W=ie,oe=j,ie>se)break;for(var le=Math.min(j,ie-2),z=0,G=0;G<le;++G){var Ie=L-j+G&32767,nt=C[Ie],ot=Ie-nt&32767;ot>z&&(z=ot,O=Ie)}}}Y=O,O=C[Y],j+=Y-O&32767}if(oe){P[$++]=268435456|sn[W]<<18|Al[oe];var Oe=sn[W]&31,he=Al[oe]&31;x+=Qr[Oe]+yr[he],++v[257+Oe],++w[he],K=L+W,++D}else P[$++]=s[L],++v[s[L]]}}for(L=Math.max(L,K);L<n;++L)P[$++]=s[L],++v[s[L]];h=nl(s,a,l,P,v,w,x,$,J,L-J,h),l||(r.r=h&7|a[h/8|0]<<3,h-=7,r.h=B,r.p=C,r.i=L,r.w=K)}else{for(var L=r.w||0;L<n+l;L+=65535){var me=L+65535;me>=n&&(a[h/8|0]=l,me=n),h=sl(a,h+1,s.subarray(L,me))}r.i=n}return il(o,0,t+ln(h)+i)},al=function(){var s=1,A=0;return{p:function(e){for(var t=s,i=A,r=e.length|0,n=0;n!=r;){for(var o=Math.min(n+2655,r);n<o;++n)i+=t+=e[n];t=(t&65535)+15*(t>>16),i=(i&65535)+15*(i>>16)}s=t,A=i},d:function(){return s%=65521,A%=65521,(s&255)<<24|(s&65280)<<8|(A&255)<<8|A>>8}}},Yu=function(s,A,e,t,i){if(!i&&(i={l:1},A.dictionary)){var r=A.dictionary.subarray(-32768),n=new Ve(r.length+s.length);n.set(r),n.set(s,r.length),s=n,i.w=r.length}return Ku(s,A.level==null?6:A.level,A.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(s.length)))*1.5):20:12+A.mem,e,t,i)},ll=function(s,A,e){for(;e;++A)s[A]=e,e>>>=8},Wu=function(s,A){var e=A.level,t=e==0?0:e<6?1:e==9?3:2;if(s[0]=120,s[1]=t<<6|(A.dictionary&&32),s[1]|=31-(s[0]<<8|s[1])%31,A.dictionary){var i=al();i.p(A.dictionary),ll(s,2,i.d())}},zu=function(s,A){return((s[0]&15)!=8||s[0]>>4>7||(s[0]<<8|s[1])%31)&&wt(6,"invalid zlib data"),(s[1]>>5&1)==1&&wt(6,"invalid zlib data: "+(s[1]&32?"need":"unexpected")+" dictionary"),(s[1]>>3&4)+2};function Vu(s,A){A||(A={});var e=al();e.p(s);var t=Yu(s,A,A.dictionary?6:2,4);return Wu(t,A),ll(t,t.length-4,e.d()),t}function qu(s,A){return Hu(s.subarray(zu(s),-4),{i:2},A,A)}var Xu=typeof TextDecoder<"u"&&new TextDecoder,ju=0;try{Xu.decode(ol,{stream:!0}),ju=1}catch{}const Zu="modern-font";function Oi(s,A){if(!s)throw new Error(`[${Zu}] ${A}`)}function $u(s){if("buffer"in s){const A=s.buffer;return s.byteOffset>0||s.byteLength<s.buffer.byteLength?A.slice(s.byteOffset,s.byteOffset+s.byteLength):A}else return s}function qA(s){return"buffer"in s?new DataView(s.buffer,s.byteOffset,s.byteLength):new DataView(s)}function ef(s){let A="";for(let e=0,t=s.length,i;e<t;e++)i=s.charCodeAt(e),i!==0&&(A+=String.fromCharCode(i));return A}function mr(s){s=ef(s);const A=[];for(let e=0,t=s.length,i;e<t;e++)i=s.charCodeAt(e),A.push(i>>8),A.push(i&255);return A}function tf(s){let A="";for(let e=0,t=s.length;e<t;e++)s[e]<127?A+=String.fromCharCode(s[e]):A+=`%${(256+s[e]).toString(16).slice(1)}`;return unescape(A)}function Af(s){let A="";for(let e=0,t=s.length;e<t;e+=2)A+=String.fromCharCode((s[e]<<8)+s[e+1]);return A}var rf=Object.defineProperty,qe=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&rf(A,e,i),i};const Hi={int8:1,int16:2,int32:4,uint8:1,uint16:2,uint32:4,float32:4,float64:8,fixed:4,longDateTime:8,char:1};function Xe(){return function(s,A){Object.defineProperty(s.constructor.prototype,A,{get(){if(typeof A=="string"){if(A.startsWith("read"))return(...e)=>this.read(A.substring(4).toLowerCase(),...e);if(A.startsWith("write"))return(...e)=>this.write(A.substring(5).toLowerCase(),...e)}},configurable:!0,enumerable:!0})}}class Ne extends DataView{constructor(e,t,i,r){super($u(e),t,i);u(this,"cursor",0);this.littleEndian=r}readColumn(e){if(e.size){const t=Array.from({length:e.size},(i,r)=>this.read(e.type,e.offset+r));switch(e.type){case"char":return t.join("");default:return t}}else return this.read(e.type,e.offset)}writeColumn(e,t){e.size?Array.from({length:e.size},(i,r)=>{this.write(e.type,t[r],e.offset+r)}):this.write(e.type,t,e.offset)}read(e,t=this.cursor,i=this.littleEndian){var l;switch(e){case"char":return this.readChar(t);case"fixed":return this.readFixed(t,i);case"longDateTime":return this.readLongDateTime(t,i)}const r=`get${e.replace(/^\S/,h=>h.toUpperCase())}`,n=this,o=(l=n[r])==null?void 0:l.bind(n),a=o==null?void 0:o(t,i);return this.cursor+=Hi[e],a}readUint24(e=this.cursor){const[t,i,r]=this.readBytes(e,3);return(t<<16)+(i<<8)+r}readBytes(e,t){t==null&&(t=e,e=this.cursor);const i=[];for(let r=0;r<t;++r)i.push(this.getUint8(e+r));return this.cursor=e+t,i}readString(e,t){const i=this.readBytes(e,t);let r="";for(let n=0,o=i.length;n<o;n++)r+=String.fromCharCode(i[n]);return r}readFixed(e,t){const i=this.readInt32(e,t)/65536;return Math.ceil(i*1e5)/1e5}readLongDateTime(e=this.cursor,t){const i=this.readUint32(e+4,t),r=new Date;return r.setTime(i*1e3+-20775456e5),r}readChar(e){return this.readString(e,1)}write(e,t,i=this.cursor,r=this.littleEndian){var h;switch(e){case"char":return this.writeChar(t,i);case"fixed":return this.writeFixed(t,i);case"longDateTime":return this.writeLongDateTime(t,i)}const n=`set${e.replace(/^\S/,g=>g.toUpperCase())}`,o=this,a=(h=o[n])==null?void 0:h.bind(o),l=a==null?void 0:a(i,t,r);return this.cursor+=Hi[e.toLowerCase()],l}writeString(e="",t=this.cursor){const i=e.replace(/[^\x00-\xFF]/g,"11").length;this.seek(t);for(let r=0,n=e.length,o;r<n;++r)o=e.charCodeAt(r)||0,o>127?this.writeUint16(o):this.writeUint8(o);return this.cursor+=i,this}writeChar(e,t){return this.writeString(e,t)}writeFixed(e,t){return this.writeInt32(Math.round(e*65536),t),this}writeLongDateTime(e,t=this.cursor){typeof e>"u"?e=-20775456e5:typeof e.getTime=="function"?e=e.getTime():/^\d+$/.test(e)?e=+e:e=Date.parse(e);const r=Math.round((e- -20775456e5)/1e3);return this.writeUint32(0,t),this.writeUint32(r,t+4),this}writeBytes(e,t=this.cursor){let i;if(Array.isArray(e)){i=e.length;for(let r=0;r<i;++r)this.setUint8(t+r,e[r])}else{const r=qA(e);i=r.byteLength;for(let n=0;n<i;++n)this.setUint8(t+n,r.getUint8(n))}return this.cursor=t+i,this}seek(e){return this.cursor=e,this}}qe([Xe()],Ne.prototype,"readInt8"),qe([Xe()],Ne.prototype,"readInt16"),qe([Xe()],Ne.prototype,"readInt32"),qe([Xe()],Ne.prototype,"readUint8"),qe([Xe()],Ne.prototype,"readUint16"),qe([Xe()],Ne.prototype,"readUint32"),qe([Xe()],Ne.prototype,"readFloat32"),qe([Xe()],Ne.prototype,"readFloat64"),qe([Xe()],Ne.prototype,"writeInt8"),qe([Xe()],Ne.prototype,"writeInt16"),qe([Xe()],Ne.prototype,"writeInt32"),qe([Xe()],Ne.prototype,"writeUint8"),qe([Xe()],Ne.prototype,"writeUint16"),qe([Xe()],Ne.prototype,"writeUint32"),qe([Xe()],Ne.prototype,"writeFloat32"),qe([Xe()],Ne.prototype,"writeFloat64");const hl=new WeakMap;function y(s){const A=typeof s=="object"?s:{type:s},{size:e=1,type:t}=A;return(i,r)=>{if(typeof r!="string")return;let n=hl.get(i);n||(n={columns:[],byteLength:0},hl.set(i,n));const o={...A,name:r,byteLength:e*Hi[t],offset:A.offset??n.columns.reduce((a,l)=>a+l.byteLength,0)};n.columns.push(o),n.byteLength=n.columns.reduce((a,l)=>a+Hi[l.type]*(l.size??1),0),Object.defineProperty(i.constructor.prototype,r,{get(){return this.view.readColumn(o)},set(a){this.view.writeColumn(o,a)},configurable:!0,enumerable:!0})}}class gt{constructor(A,e,t,i){u(this,"view");this.view=new Ne(A,e,t,i)}}class wr extends gt{get buffer(){return this.view.buffer}toBuffer(){return this.view.buffer.slice(this.view.byteOffset,this.view.byteOffset+this.view.byteLength)}toBlob(){return new Blob([new Uint8Array(this.view.buffer,this.view.byteOffset,this.view.byteLength)],{type:this.mimeType})}toFontFace(A){return new FontFace(A,this.view.buffer)}}var sf=Object.defineProperty,At=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&sf(A,e,i),i};const it=class Ih extends wr{constructor(){super(...arguments);u(this,"format","EmbeddedOpenType");u(this,"mimeType","application/vnd.ms-fontobject")}static from(e){const t=e.sfnt,r=t.name.names,n=mr(r.fontFamily||""),o=n.length,a=mr(r.fontStyle||""),l=a.length,h=mr(r.version||""),g=h.length,f=mr(r.fullName||""),I=f.length,d=86+o+4+l+4+g+4+I+2+e.view.byteLength,C=new Ih(new ArrayBuffer(d),0,d,!0);C.EOTSize=C.view.byteLength,C.FontDataSize=e.view.byteLength,C.Version=131073,C.Flags=0,C.Charset=1,C.MagicNumber=20556,C.Padding1=0,C.CheckSumAdjustment=t.head.checkSumAdjustment;const B=t.os2;return B&&(C.FontPANOSE=B.fontPANOSE,C.Italic=B.fsSelection,C.Weight=B.usWeightClass,C.fsType=B.fsType,C.UnicodeRange=B.ulUnicodeRange,C.CodePageRange=B.ulCodePageRange),C.view.writeUint16(o),C.view.writeBytes(n),C.view.writeUint16(0),C.view.writeUint16(l),C.view.writeBytes(a),C.view.writeUint16(0),C.view.writeUint16(g),C.view.writeBytes(h),C.view.writeUint16(0),C.view.writeUint16(I),C.view.writeBytes(f),C.view.writeUint16(0),C.view.writeUint16(0),C.view.writeBytes(e.view),C}};At([y("uint32")],it.prototype,"EOTSize"),At([y("uint32")],it.prototype,"FontDataSize"),At([y("uint32")],it.prototype,"Version"),At([y("uint32")],it.prototype,"Flags"),At([y({type:"uint8",size:10})],it.prototype,"FontPANOSE"),At([y("uint8")],it.prototype,"Charset"),At([y("uint8")],it.prototype,"Italic"),At([y("uint32")],it.prototype,"Weight"),At([y("uint16")],it.prototype,"fsType"),At([y("uint16")],it.prototype,"MagicNumber"),At([y({type:"uint8",size:16})],it.prototype,"UnicodeRange"),At([y({type:"uint8",size:8})],it.prototype,"CodePageRange"),At([y("uint32")],it.prototype,"CheckSumAdjustment"),At([y({type:"uint8",size:16})],it.prototype,"Reserved"),At([y("uint16")],it.prototype,"Padding1");var nf=Object.defineProperty,vr=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&nf(A,e,i),i};class XA extends gt{constructor(A,e){super(A,e,16)}}vr([y({type:"char",size:4})],XA.prototype,"tag"),vr([y("uint32")],XA.prototype,"checkSum"),vr([y("uint32")],XA.prototype,"offset"),vr([y("uint32")],XA.prototype,"length");const cn=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],of=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];class un{constructor(A){u(this,"index");u(this,"name");u(this,"isComposite",!1);u(this,"components",[]);u(this,"pathCommands",[]);const e={...A};if(this.index=e.index??0,e.name===".notdef"?e.unicode=void 0:e.name===".null"&&(e.unicode=0),e.unicode===0&&e.name!==".null")throw new Error('The unicode value "0" is reserved for the glyph name ".null" and cannot be used by any other glyph.');this.name=e.name??null,e.unicode&&(this.unicode=e.unicode),e.unicodes?this.unicodes=e.unicodes:e.unicode&&(this.unicodes=[e.unicode])}getPathCommands(A=0,e=0,t=72,i={},r){const n=1/((r==null?void 0:r.unitsPerEm)??1e3)*t,{xScale:o=n,yScale:a=n}=i,l=this.pathCommands,h=[];for(let g=0,f=l.length;g<f;g+=1){const I=l[g];I.type==="M"?h.push({type:"M",x:A+I.x*o,y:e+-I.y*a}):I.type==="L"?h.push({type:"L",x:A+I.x*o,y:e+-I.y*a}):I.type==="Q"?h.push({type:"Q",x1:A+I.x1*o,y1:e+-I.y1*a,x:A+I.x*o,y:e+-I.y*a}):I.type==="C"?h.push({type:"C",x1:A+I.x1*o,y1:e+-I.y1*a,x2:A+I.x2*o,y2:e+-I.y2*a,x:A+I.x*o,y:e+-I.y*a}):I.type==="Z"&&h.push({type:"Z"})}return h}}class af extends un{parse(A,e,t){const i=this,{nominalWidthX:r,defaultWidthX:n,gsubrsBias:o,subrsBias:a}=A,l=A.topDict.paintType,h=this.index;let g,f,I,d;const C=[],B=[];let M=0,R=!1,_=!1,P=n,v=0,w=0;function D(Y,O){C.push({type:"L",x:Y,y:O})}function x(Y,O,Ae,G,W,oe){C.push({type:"C",x1:Y,y1:O,x2:Ae,y2:G,x:W,y:oe})}function L(Y,O){_&&l!==2&&$(),_=!0,C.push({type:"M",x:Y,y:O})}function $(){C.push({type:"Z"})}function K(Y){C.push(...Y)}function J(){B.length%2!==0&&!R&&(P=B.shift()+r),M+=B.length>>1,B.length=0,R=!0}function Z(Y){let O,Ae,G,W,oe,q,j,se,X,ae,ie,le,z=0;for(;z<Y.length;){let Ie=Y[z++];switch(Ie){case 1:J();break;case 3:J();break;case 4:B.length>1&&!R&&(P=B.shift()+r,R=!0),w+=B.pop(),L(v,w);break;case 5:for(;B.length>0;)v+=B.shift(),w+=B.shift(),D(v,w);break;case 6:for(;B.length>0&&(v+=B.shift(),D(v,w),B.length!==0);)w+=B.shift(),D(v,w);break;case 7:for(;B.length>0&&(w+=B.shift(),D(v,w),B.length!==0);)v+=B.shift(),D(v,w);break;case 8:for(;B.length>0;)g=v+B.shift(),f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),v=I+B.shift(),w=d+B.shift(),x(g,f,I,d,v,w);break;case 10:oe=B.pop()+a,q=A.subrs[oe],q&&Z(q);break;case 11:return;case 12:switch(Ie=Y[z],z+=1,Ie){case 35:g=v+B.shift(),f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),j=I+B.shift(),se=d+B.shift(),X=j+B.shift(),ae=se+B.shift(),ie=X+B.shift(),le=ae+B.shift(),v=ie+B.shift(),w=le+B.shift(),B.shift(),x(g,f,I,d,j,se),x(X,ae,ie,le,v,w);break;case 34:g=v+B.shift(),f=w,I=g+B.shift(),d=f+B.shift(),j=I+B.shift(),se=d,X=j+B.shift(),ae=d,ie=X+B.shift(),le=w,v=ie+B.shift(),x(g,f,I,d,j,se),x(X,ae,ie,le,v,w);break;case 36:g=v+B.shift(),f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),j=I+B.shift(),se=d,X=j+B.shift(),ae=d,ie=X+B.shift(),le=ae+B.shift(),v=ie+B.shift(),x(g,f,I,d,j,se),x(X,ae,ie,le,v,w);break;case 37:g=v+B.shift(),f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),j=I+B.shift(),se=d+B.shift(),X=j+B.shift(),ae=se+B.shift(),ie=X+B.shift(),le=ae+B.shift(),Math.abs(ie-v)>Math.abs(le-w)?v=ie+B.shift():w=le+B.shift(),x(g,f,I,d,j,se),x(X,ae,ie,le,v,w);break;default:console.warn(`Glyph ${h}: unknown operator ${1200+Ie}`),B.length=0}break;case 14:if(B.length>=4){const nt=cn[B.pop()],ot=cn[B.pop()],Oe=B.pop(),he=B.pop();if(nt&&ot){i.isComposite=!0,i.components=[];const me=A.charset.indexOf(nt),He=A.charset.indexOf(ot);i.components.push({glyphIndex:He,dx:0,dy:0}),i.components.push({glyphIndex:me,dx:he,dy:Oe}),K(t.get(He).pathCommands);const ze=JSON.parse(JSON.stringify(t.get(me).pathCommands));for(let be=0;be<ze.length;be+=1){const $e=ze[be];$e.type!=="Z"&&($e.x+=he,$e.y+=Oe),($e.type==="Q"||$e.type==="C")&&($e.x1+=he,$e.y1+=Oe),$e.type==="C"&&($e.x2+=he,$e.y2+=Oe)}K(ze)}}else B.length>0&&!R&&(P=B.shift()+r,R=!0);_&&l!==2&&($(),_=!1);break;case 18:J();break;case 19:case 20:J(),z+=M+7>>3;break;case 21:B.length>2&&!R&&(P=B.shift()+r,R=!0),w+=B.pop(),v+=B.pop(),L(v,w);break;case 22:B.length>1&&!R&&(P=B.shift()+r,R=!0),v+=B.pop(),L(v,w);break;case 23:J();break;case 24:for(;B.length>2;)g=v+B.shift(),f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),v=I+B.shift(),w=d+B.shift(),x(g,f,I,d,v,w);v+=B.shift(),w+=B.shift(),D(v,w);break;case 25:for(;B.length>6;)v+=B.shift(),w+=B.shift(),D(v,w);g=v+B.shift(),f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),v=I+B.shift(),w=d+B.shift(),x(g,f,I,d,v,w);break;case 26:for(B.length%2&&(v+=B.shift());B.length>0;)g=v,f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),v=I,w=d+B.shift(),x(g,f,I,d,v,w);break;case 27:for(B.length%2&&(w+=B.shift());B.length>0;)g=v+B.shift(),f=w,I=g+B.shift(),d=f+B.shift(),v=I+B.shift(),w=d,x(g,f,I,d,v,w);break;case 28:O=Y[z],Ae=Y[z+1],B.push((O<<24|Ae<<16)>>16),z+=2;break;case 29:oe=B.pop()+o,q=A.gsubrs[oe],q&&Z(q);break;case 30:for(;B.length>0&&(g=v,f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),v=I+B.shift(),w=d+(B.length===1?B.shift():0),x(g,f,I,d,v,w),B.length!==0);)g=v+B.shift(),f=w,I=g+B.shift(),d=f+B.shift(),w=d+B.shift(),v=I+(B.length===1?B.shift():0),x(g,f,I,d,v,w);break;case 31:for(;B.length>0&&(g=v+B.shift(),f=w,I=g+B.shift(),d=f+B.shift(),w=d+B.shift(),v=I+(B.length===1?B.shift():0),x(g,f,I,d,v,w),B.length!==0);)g=v,f=w+B.shift(),I=g+B.shift(),d=f+B.shift(),v=I+B.shift(),w=d+(B.length===1?B.shift():0),x(g,f,I,d,v,w);break;default:Ie<32?console.warn(`Glyph ${h}: unknown operator ${Ie}`):Ie<247?B.push(Ie-139):Ie<251?(O=Y[z],z+=1,B.push((Ie-247)*256+O+108)):Ie<255?(O=Y[z],z+=1,B.push(-(Ie-251)*256-O-108)):(O=Y[z],Ae=Y[z+1],G=Y[z+2],W=Y[z+3],z+=4,B.push((O<<24|Ae<<16|G<<8|W)/65536))}}}Z(e),this.pathCommands=C,R&&(this.advanceWidth=P)}}class fn{constructor(A){u(this,"_items",[]);this._sfnt=A}get(A){const e=this._items[A];let t;if(e)t=e;else{t=this._get(A);const i=this._sfnt.hmtx.metrics[A];i&&(t.advanceWidth=t.advanceWidth||i.advanceWidth,t.leftSideBearing=t.leftSideBearing||i.leftSideBearing);const r=this._sfnt.cmap.glyphIndexToUnicodesMap.get(A);r&&(t.unicode??(t.unicode=r[0]),t.unicodes??(t.unicodes=r)),this._items[A]=t}return t}}class lf extends fn{get length(){return this._sfnt.cff.charStringsIndex.offsets.length-1}_get(A){const e=this._sfnt.cff,t=new af({index:A});return t.parse(e,e.charStringsIndex.get(A),this),t.name=e.charset[A],t}}var hf=Object.defineProperty,gl=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&hf(A,e,i),i};class _r extends gt{constructor(e,t,i,r){super(e,t,i,r);u(this,"_offsets");u(this,"_objects");this._init()}get offsets(){return this._offsets??(this._offsets=this.readOffsets())}get objects(){return this._objects??(this._objects=this.readObjects())}_init(){const e=this.view,t=this.count,i=this.offsetSize;this.objectOffset=(t+1)*i+2,this.endOffset=e.byteOffset+this.objectOffset+this.offsets[t]}readOffsets(){const e=this.view,t=this.count,i=this.offsetSize;e.seek(3);const r=[];for(let n=0,o=t+1;n<o;n++){const a=this.view;let l=0;for(let h=0;h<i;h++)l<<=8,l+=a.readUint8();r.push(l)}return r}readObjects(){const e=[];for(let t=0,i=this.count;t<i;t++)e.push(this.get(t));return e}get(e){const t=this.offsets,i=this.objectOffset,r=i+t[e],o=i+t[e+1]-r;return this._isString?this.view.readString(r,o):this.view.readBytes(r,o)}}gl([y("uint16")],_r.prototype,"count"),gl([y("uint8")],_r.prototype,"offsetSize");class Dr extends _r{constructor(){super(...arguments);u(this,"_isString",!1)}}class cl extends _r{constructor(){super(...arguments);u(this,"_isString",!0)}}const gf=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","266 ff","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],cf=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],uf=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],ff=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"];function br(s,A){return A<=390?gf[A]:s[A-391]}function Qe(s,A="number",e){return(t,i)=>{if(typeof i!="string")return;const r={type:A,operator:s,default:e??A==="number"?0:void 0};Object.defineProperty(t.constructor.prototype,i,{get(){return this._getProp(r)},set(n){this._setProp(r,n)},configurable:!0,enumerable:!0})}}class ul extends gt{constructor(){super(...arguments);u(this,"_dict");u(this,"_stringIndex")}get dict(){return this._dict??(this._dict=this._readDict())}setStringIndex(e){return this._stringIndex=e,this}_readFloatOperand(){const e=this.view;let t="";const i=15,r=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"];for(;;){const n=e.readUint8(),o=n>>4,a=n&15;if(o===i||(t+=r[o],a===i))break;t+=r[a]}return Number.parseFloat(t)}_readOperand(e){const t=this.view;let i,r,n,o;if(e===28)return i=t.readUint8(),r=t.readUint8(),i<<8|r;if(e===29)return i=t.readUint8(),r=t.readUint8(),n=t.readUint8(),o=t.readUint8(),i<<24|r<<16|n<<8|o;if(e===30)return this._readFloatOperand();if(e>=32&&e<=246)return e-139;if(e>=247&&e<=250)return i=t.readUint8(),(e-247)*256+i+108;if(e>=251&&e<=254)return i=t.readUint8(),-(e-251)*256-i-108;throw new Error(`invalid b0 ${e}, at: ${t.cursor}`)}_readDict(){const e=this.view;e.seek(0);let t=[];const i=e.cursor+e.byteLength,r={};for(;e.cursor<i;){let n=e.readUint8();n<=21?(n===12&&(n=1200+e.readUint8()),r[n]=t,t=[]):t.push(this._readOperand(n))}return r}_getProp(e){var i;const t=this.dict[e.operator]??e.default;switch(e.type){case"number":return t[0];case"string":return br(((i=this._stringIndex)==null?void 0:i.objects)??[],t[0]);case"number[]":return t}return t}_setProp(e,t){}}var df=Object.defineProperty,dn=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&df(A,e,i),i};class xr extends ul{}dn([Qe(19)],xr.prototype,"subrs"),dn([Qe(20)],xr.prototype,"defaultWidthX"),dn([Qe(21)],xr.prototype,"nominalWidthX");var If=Object.defineProperty,De=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&If(A,e,i),i};class we extends ul{}De([Qe(0,"string")],we.prototype,"version"),De([Qe(1,"string")],we.prototype,"notice"),De([Qe(1200,"string")],we.prototype,"copyright"),De([Qe(2,"string")],we.prototype,"fullName"),De([Qe(3,"string")],we.prototype,"familyName"),De([Qe(4,"string")],we.prototype,"weight"),De([Qe(1201)],we.prototype,"isFixedPitch"),De([Qe(1202)],we.prototype,"italicAngle"),De([Qe(1203,"number",-100)],we.prototype,"underlinePosition"),De([Qe(1204,"number",50)],we.prototype,"underlineThickness"),De([Qe(1205)],we.prototype,"paintType"),De([Qe(1206,"number",2)],we.prototype,"charstringType"),De([Qe(1207,"number[]",[.001,0,0,.001,0,0])],we.prototype,"fontMatrix"),De([Qe(13)],we.prototype,"uniqueId"),De([Qe(5,"number[]",[0,0,0,0])],we.prototype,"fontBBox"),De([Qe(1208)],we.prototype,"strokeWidth"),De([Qe(14)],we.prototype,"xuid"),De([Qe(15)],we.prototype,"charset"),De([Qe(16)],we.prototype,"encoding"),De([Qe(17)],we.prototype,"charStrings"),De([Qe(18,"number[]",[0,0])],we.prototype,"private");function Ke(s,A=s){return e=>{_A.tableDefinitions.set(s,{tag:s,prop:A,class:e}),Object.defineProperty(_A.prototype,A,{get(){return this.get(s)},set(t){return this.set(s,t)},configurable:!0,enumerable:!0})}}const PA=class PA{constructor(A){u(this,"tables",new Map);u(this,"tableViews",new Map);(A instanceof Map?A:new Map(Object.entries(A))).forEach((t,i)=>{this.tableViews.set(i,new DataView(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)))})}get hasGlyf(){return this.tableViews.has("glyf")}get names(){return this.name.names}get unitsPerEm(){return this.head.unitsPerEm}get ascender(){return this.hhea.ascent}get descender(){return this.hhea.descent}get createdTimestamp(){return this.head.created}get modifiedTimestamp(){return this.head.modified}get numGlyphs(){return this.maxp.numGlyphs}get unicodes(){return this.cmap.glyphIndexToUnicodesMap}get glyphs(){return this.hasGlyf?this.glyf.glyphs:this.cff.glyphs}charToGlyphIndex(A){let e=this.cmap.unicodeToGlyphIndexMap.get(A.codePointAt(0));if(e===void 0&&!this.hasGlyf){const{encoding:t,charset:i}=this.cff;e=i.indexOf(t[A.codePointAt(0)])}return e??0}charToGlyph(A){return this.glyphs.get(this.charToGlyphIndex(A))}textToGlyphIndexes(A){const e=[];for(const t of A)e.push(this.charToGlyphIndex(t));return e}textToGlyphs(A){const e=this.glyphs,t=this.textToGlyphIndexes(A),i=t.length,r=Array.from({length:i}),n=e.get(0);for(let o=0;o<i;o+=1)r[o]=e.get(t[o])||n;return r}getPathCommands(A,e,t,i,r){const n=[];return this.forEachGlyph(A,e,t,i,r,(o,a,l,h,g)=>{n.push(...o.getPathCommands(a,l,h,g,this))}),n}getAdvanceWidth(A,e,t){return this.forEachGlyph(A,0,0,e,t,()=>{})}forEachGlyph(A,e=0,t=0,i=72,r={},n){const o=1/this.unitsPerEm*i,a=this.textToGlyphs(A);for(let l=0;l<a.length;l+=1){const h=a[l];n.call(this,h,e,t,i,r),h.advanceWidth&&(e+=h.advanceWidth*o),r.letterSpacing?e+=r.letterSpacing*i:r.tracking&&(e+=r.tracking/1e3*i)}return e}clone(){return new PA(this.tableViews)}delete(A){const e=PA.tableDefinitions.get(A);return e?(this.tableViews.delete(A),this.tables.delete(e.prop),this):this}set(A,e){const t=PA.tableDefinitions.get(A);return t&&this.tables.set(t.prop,e),this.tableViews.set(A,e.view),this}get(A){const e=PA.tableDefinitions.get(A);if(!e)return;let t=this.tables.get(e.prop);if(!t){const i=e.class;if(i){const r=this.tableViews.get(A);if(!r)return;t=new i(r.buffer,r.byteOffset,r.byteLength).setSFNT(this),this.tables.set(e.prop,t)}}return t}};u(PA,"tableDefinitions",new Map);let _A=PA;class je extends gt{setSFNT(A){return this._sfnt=A,this}getSFNT(){return this._sfnt}}var Bf=Object.defineProperty,Ef=Object.getOwnPropertyDescriptor,Ji=(s,A,e,t)=>{for(var i=t>1?void 0:t?Ef(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Bf(A,e,i),i};let DA=class extends je{constructor(A,e,t,i){super(A,e,t,i);u(this,"_glyphs");u(this,"privateDict");u(this,"subrsIndex");this._init()}get glyphs(){return this._glyphs??(this._glyphs=new lf(this._sfnt))}get gsubrs(){return this.globalSubrIndex.objects}get gsubrsBias(){return this._calcSubroutineBias(this.globalSubrIndex.objects)}get defaultWidthX(){var A;return((A=this.privateDict)==null?void 0:A.defaultWidthX)??0}get nominalWidthX(){var A;return((A=this.privateDict)==null?void 0:A.nominalWidthX)??0}get subrs(){var A;return((A=this.subrsIndex)==null?void 0:A.objects)??[]}get subrsBias(){return this._calcSubroutineBias(this.subrs)}_init(){const A=this.view,{buffer:e,byteOffset:t}=A,i=t+4;this.nameIndex=new cl(e,i),this.topDictIndex=new Dr(e,this.nameIndex.endOffset),this.stringIndex=new cl(e,this.topDictIndex.endOffset),this.globalSubrIndex=new Dr(e,this.stringIndex.endOffset),this.topDict=new we(new Uint8Array(this.topDictIndex.objects[0]).buffer).setStringIndex(this.stringIndex);const r=this.topDict.private[0],n=this.topDict.private[1];r&&(this.privateDict=new xr(e,t+n,r).setStringIndex(this.stringIndex),this.privateDict.subrs&&(this.subrsIndex=new Dr(e,t+n+this.privateDict.subrs))),this.charStringsIndex=new Dr(e,t+this.topDict.charStrings);const o=this.charStringsIndex.offsets.length-1;this.topDict.charset===0?this.charset=cf:this.topDict.charset===1?this.charset=uf:this.topDict.charset===2?this.charset=ff:this.charset=this._readCharset(t+this.topDict.charset,o,this.stringIndex.objects),this.topDict.encoding===0?this.encoding=cn:this.topDict.encoding===1?this.encoding=of:this.encoding=this._readEncoding(t+this.topDict.encoding)}_readCharset(A,e,t){const i=this.view;i.seek(A);let r,n,o;e-=1;const a=[".notdef"],l=i.readUint8();if(l===0)for(r=0;r<e;r+=1)n=i.readUint16(),a.push(br(t,n));else if(l===1)for(;a.length<=e;)for(n=i.readUint16(),o=i.readUint8(),r=0;r<=o;r+=1)a.push(br(t,n)),n+=1;else if(l===2)for(;a.length<=e;)for(n=i.readUint16(),o=i.readUint16(),r=0;r<=o;r+=1)a.push(br(t,n)),n+=1;else throw new Error(`Unknown charset format ${l}`);return a}_readEncoding(A){const e=this.view;e.seek(A);let t,i;const r={},n=e.readUint8();if(n===0){const o=e.readUint8();for(t=0;t<o;t+=1)i=e.readUint8(),r[i]=t}else if(n===1){const o=e.readUint8();for(i=1,t=0;t<o;t+=1){const a=e.readUint8(),l=e.readUint8();for(let h=a;h<=a+l;h+=1)r[h]=i,i+=1}}else console.warn(`unknown encoding format:${n}`);return r}_calcSubroutineBias(A){let e;return A.length<1240?e=107:A.length<33900?e=1131:e=32768,e}};Ji([y("uint8")],DA.prototype,"majorVersion",2),Ji([y("uint8")],DA.prototype,"minorVersion",2),Ji([y("uint8")],DA.prototype,"headerSize",2),Ji([y("uint8")],DA.prototype,"offsetSize",2),DA=Ji([Ke("CFF ","cff")],DA);var pf=Object.defineProperty,Sr=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&pf(A,e,i),i};const Ki=class Bh extends gt{constructor(A=new ArrayBuffer(262),e){super(A,e,262)}static from(A){const e=new Bh;return e.format=0,e.length=e.view.byteLength,e.language=0,A.forEach((t,i)=>{i<256&&t<256&&e.view.writeUint8(t,6+i)}),e}getUnicodeToGlyphIndexMap(){const A=new Map;return this.glyphIndexArray.forEach((e,t)=>{A.set(t,e)}),A}};Sr([y("uint16")],Ki.prototype,"format"),Sr([y("uint16")],Ki.prototype,"length"),Sr([y("uint16")],Ki.prototype,"language"),Sr([y({type:"uint8",size:256})],Ki.prototype,"glyphIndexArray");let In=Ki;var Cf=Object.defineProperty,Bn=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&Cf(A,e,i),i};class Yi extends gt{get subHeaderKeys(){return this.view.seek(6),Array.from({length:256},()=>this.view.readUint16()/8)}get maxSubHeaderKey(){return this.subHeaderKeys.reduce((A,e)=>Math.max(A,e),0)}get subHeaders(){const A=this.maxSubHeaderKey;return this.view.seek(6+256*2),Array.from({length:A},(e,t)=>({firstCode:this.view.readUint16(),entryCount:this.view.readUint16(),idDelta:this.view.readUint16(),idRangeOffset:(this.view.readUint16()-(A-t)*8-2)/2}))}get glyphIndexArray(){const A=this.maxSubHeaderKey,e=6+256*2+A*8;this.view.seek(e);const t=(this.view.byteLength-e)/2;return Array.from({length:t},()=>this.view.readUint16())}getUnicodeToGlyphIndexMap(A){const e=new Map,t=this.subHeaderKeys,i=this.maxSubHeaderKey,r=this.subHeaders,n=this.glyphIndexArray,o=t.findIndex(l=>l===i);let a=0;for(let l=0;l<256;l++)if(t[l]===0)l>=o||l<r[0].firstCode||l>=r[0].firstCode+r[0].entryCount||r[0].idRangeOffset+(l-r[0].firstCode)>=n.length?a=0:(a=n[r[0].idRangeOffset+(l-r[0].firstCode)],a!==0&&(a=a+r[0].idDelta)),a!==0&&a<A&&e.set(l,a);else{const h=t[l];for(let g=0,f=r[h].entryCount;g<f;g++)if(r[h].idRangeOffset+g>=n.length?a=0:(a=n[r[h].idRangeOffset+g],a!==0&&(a=a+r[h].idDelta)),a!==0&&a<A){const I=(l<<8|g+r[h].firstCode)%65535;e.set(I,a)}}return e}}Bn([y("uint16")],Yi.prototype,"format"),Bn([y("uint16")],Yi.prototype,"length"),Bn([y("uint16")],Yi.prototype,"language");function fl(s){return s>32767?s-65536:s<-32767?s+65536:s}function En(s,A){let e;const t=[];let i={};return s.forEach((r,n)=>{A&&n>A||((!e||n!==e.unicode+1||r!==e.glyphIndex+1)&&(e?(i.end=e.unicode,t.push(i),i={start:n,startId:r,delta:fl(r-n)}):(i.start=Number(n),i.startId=r,i.delta=fl(r-n))),e={unicode:n,glyphIndex:r})}),e&&(i.end=e.unicode,t.push(i)),t}var Qf=Object.defineProperty,bA=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&Qf(A,e,i),i};const lA=class Eh extends gt{get endCode(){const A=this.segCountX2;return this.view.seek(14),Array.from({length:A/2},()=>this.view.readUint16())}set endCode(A){this.view.seek(14),A.forEach(e=>this.view.writeUint16(e))}get reservedPad(){return this.view.readUint16(14+this.segCountX2)}set reservedPad(A){this.view.writeUint16(A,14+this.segCountX2)}get startCode(){const A=this.segCountX2;return this.view.seek(14+A+2),Array.from({length:A/2},()=>this.view.readUint16())}set startCode(A){this.view.seek(14+this.segCountX2+2),A.forEach(e=>this.view.writeUint16(e))}get idDelta(){const A=this.segCountX2;return this.view.seek(14+A+2+A),Array.from({length:A/2},()=>this.view.readUint16())}set idDelta(A){const e=this.segCountX2;this.view.seek(14+e+2+e),A.forEach(t=>this.view.writeUint16(t))}get idRangeOffsetCursor(){const A=this.segCountX2;return 14+A+2+A*2}get idRangeOffset(){const A=this.segCountX2;return this.view.seek(this.idRangeOffsetCursor),Array.from({length:A/2},()=>this.view.readUint16())}set idRangeOffset(A){this.view.seek(this.idRangeOffsetCursor),A.forEach(e=>this.view.writeUint16(e))}get glyphIndexArrayCursor(){const A=this.segCountX2;return 14+A+2+A*3}get glyphIndexArray(){const A=this.glyphIndexArrayCursor;this.view.seek(A);const e=(this.view.byteLength-A)/2;return Array.from({length:e},()=>this.view.readUint16())}static from(A){const e=En(A,65535),t=e.length+1,i=Math.floor(Math.log(t)/Math.LN2),r=2*2**i,n=new Eh(new ArrayBuffer(24+e.length*8));return n.format=4,n.length=n.view.byteLength,n.language=0,n.segCountX2=t*2,n.searchRange=r,n.entrySelector=i,n.rangeShift=2*t-r,n.endCode=[...e.map(o=>o.end),65535],n.reservedPad=0,n.startCode=[...e.map(o=>o.start),65535],n.idDelta=[...e.map(o=>o.delta),1],n.idRangeOffset=Array.from({length:t},()=>0),n}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.segCountX2/2,t=(this.glyphIndexArrayCursor-this.idRangeOffsetCursor)/2,i=this.startCode,r=this.endCode,n=this.idRangeOffset,o=this.idDelta,a=this.glyphIndexArray;for(let l=0;l<e;++l)for(let h=i[l],g=r[l];h<=g;++h)if(n[l]===0)A.set(h,(h+o[l])%65536);else{const f=l+n[l]/2+(h-i[l])-t,I=a[f];I!==0?A.set(h,(I+o[l])%65536):A.set(h,0)}return A.delete(65535),A}};bA([y("uint16")],lA.prototype,"format"),bA([y("uint16")],lA.prototype,"length"),bA([y("uint16")],lA.prototype,"language"),bA([y("uint16")],lA.prototype,"segCountX2"),bA([y("uint16")],lA.prototype,"searchRange"),bA([y("uint16")],lA.prototype,"entrySelector"),bA([y("uint16")],lA.prototype,"rangeShift");let pn=lA;var yf=Object.defineProperty,Wi=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&yf(A,e,i),i};class xA extends gt{get glyphIndexArray(){return this.view.seek(12),Array.from({length:this.entryCount},()=>this.view.readUint16())}getUnicodeToGlyphIndexMap(){const A=this.glyphIndexArray,e=new Map;return A.forEach((t,i)=>{e.set(i,t)}),e}}Wi([y("uint16")],xA.prototype,"format"),Wi([y("uint16")],xA.prototype,"length"),Wi([y("uint16")],xA.prototype,"language"),Wi([y("uint16")],xA.prototype,"firstCode"),Wi([y("uint16")],xA.prototype,"entryCount");var mf=Object.defineProperty,zi=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&mf(A,e,i),i};const jA=class ph extends gt{get groups(){const A=this.nGroups;return this.view.seek(16),Array.from({length:A},()=>({startCharCode:this.view.readUint32(),endCharCode:this.view.readUint32(),startGlyphCode:this.view.readUint32()}))}static from(A){const e=En(A),t=new ph(new ArrayBuffer(16+e.length*12));return t.format=12,t.reserved=0,t.length=t.view.byteLength,t.language=0,t.nGroups=e.length,e.forEach(i=>{t.view.writeUint32(i.start),t.view.writeUint32(i.end),t.view.writeUint32(i.startId)}),t}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.groups;for(let t=0,i=e.length;t<i;t++){const r=e[t];let n=r.startGlyphCode,o=r.startCharCode;const a=r.endCharCode;for(;o<=a;)A.set(o++,n++)}return A}};zi([y("uint16")],jA.prototype,"format"),zi([y("uint16")],jA.prototype,"reserved"),zi([y("uint32")],jA.prototype,"length"),zi([y("uint32")],jA.prototype,"language"),zi([y("uint32")],jA.prototype,"nGroups");let Cn=jA;var wf=Object.defineProperty,Qn=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&wf(A,e,i),i};class Vi extends gt{getVarSelectorRecords(){const A=this.numVarSelectorRecords;return this.view.seek(10),Array.from({length:A},()=>{const e={varSelector:this.view.readUint24(),defaultUVSOffset:this.view.readUint32(),unicodeValueRanges:[],nonDefaultUVSOffset:this.view.readUint32(),uVSMappings:[]};if(e.defaultUVSOffset){this.view.seek(e.defaultUVSOffset);const t=this.view.readUint32();e.unicodeValueRanges=Array.from({length:t},()=>({startUnicodeValue:this.view.readUint24(),additionalCount:this.view.readUint8()}))}if(e.nonDefaultUVSOffset){this.view.seek(e.nonDefaultUVSOffset);const t=this.view.readUint32();e.uVSMappings=Array.from({length:t},()=>({unicodeValue:this.view.readUint24(),glyphID:this.view.readUint16()}))}return e})}getUnicodeToGlyphIndexMap(){const A=new Map,e=this.getVarSelectorRecords();for(let t=0,i=e.length;t<i;t++){const{uVSMappings:r}=e[t];r.forEach(n=>{A.set(n.unicodeValue,n.glyphID)})}return A}}Qn([y("uint16")],Vi.prototype,"format"),Qn([y("uint32")],Vi.prototype,"length"),Qn([y("uint32")],Vi.prototype,"numVarSelectorRecords");var vf=Object.defineProperty,_f=Object.getOwnPropertyDescriptor,yn=(s,A,e,t)=>{for(var i=t>1?void 0:t?_f(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&vf(A,e,i),i};let ZA=class extends je{constructor(){super(...arguments);u(this,"_unicodeToGlyphIndexMap");u(this,"_glyphIndexToUnicodesMap")}static from(A){const e=Array.from(A.keys()).some(g=>g>65535),t=pn.from(A),i=In.from(A),r=e?Cn.from(A):void 0,n=4+(r?32:24),o=n+t.view.byteLength,a=o+i.view.byteLength,l=[{platformID:0,platformSpecificID:3,offset:n},{platformID:1,platformSpecificID:0,offset:o},{platformID:3,platformSpecificID:1,offset:n},r&&{platformID:3,platformSpecificID:10,offset:a}].filter(Boolean),h=new ZA(new ArrayBuffer(4+8*l.length+t.view.byteLength+i.view.byteLength+((r==null?void 0:r.view.byteLength)??0)));return h.numberSubtables=l.length,h.view.seek(4),l.forEach(g=>{h.view.writeUint16(g.platformID),h.view.writeUint16(g.platformSpecificID),h.view.writeUint32(g.offset)}),h.view.writeBytes(t.view,n),h.view.writeBytes(i.view,o),r&&h.view.writeBytes(r.view,a),h}get unicodeToGlyphIndexMap(){return this._unicodeToGlyphIndexMap??(this._unicodeToGlyphIndexMap=this.readunicodeToGlyphIndexMap())}get glyphIndexToUnicodesMap(){if(!this._glyphIndexToUnicodesMap){const A=new Map,e=this.unicodeToGlyphIndexMap,t=Array.from(e.keys());for(let i=0,r=t.length;i<r;i++){const n=t[i],o=e.get(n);A.has(o)?A.get(o).push(n):A.set(o,[n])}this._glyphIndexToUnicodesMap=A}return this._glyphIndexToUnicodesMap}readSubtables(){const A=this.numberSubtables;return this.view.seek(4),Array.from({length:A},()=>({platformID:this.view.readUint16(),platformSpecificID:this.view.readUint16(),offset:this.view.readUint32()})).map(e=>{this.view.seek(e.offset);const t=this.view.readUint16();let i;switch(t){case 0:i=new In(this.view.buffer,e.offset);break;case 2:i=new Yi(this.view.buffer,e.offset,this.view.readUint16());break;case 4:i=new pn(this.view.buffer,e.offset,this.view.readUint16());break;case 6:i=new xA(this.view.buffer,e.offset,this.view.readUint16());break;case 12:i=new Cn(this.view.buffer,e.offset,this.view.readUint32(e.offset+4));break;case 14:default:i=new Vi(this.view.buffer,e.offset,this.view.readUint32());break}return{...e,format:t,view:i}})}readunicodeToGlyphIndexMap(){var o,a,l,h,g;const A=this.readSubtables(),e=(o=A.find(f=>f.format===0))==null?void 0:o.view,t=(a=A.find(f=>f.platformID===3&&f.platformSpecificID===3&&f.format===2))==null?void 0:a.view,i=(l=A.find(f=>f.platformID===3&&f.platformSpecificID===1&&f.format===4))==null?void 0:l.view,r=(h=A.find(f=>f.platformID===3&&f.platformSpecificID===10&&f.format===12))==null?void 0:h.view,n=(g=A.find(f=>f.platformID===0&&f.platformSpecificID===5&&f.format===14))==null?void 0:g.view;return new Map([...(e==null?void 0:e.getUnicodeToGlyphIndexMap())??[],...(t==null?void 0:t.getUnicodeToGlyphIndexMap(this._sfnt.maxp.numGlyphs))??[],...(i==null?void 0:i.getUnicodeToGlyphIndexMap())??[],...(r==null?void 0:r.getUnicodeToGlyphIndexMap())??[],...(n==null?void 0:n.getUnicodeToGlyphIndexMap())??[]])}};yn([y("uint16")],ZA.prototype,"version",2),yn([y("uint16")],ZA.prototype,"numberSubtables",2),ZA=yn([Ke("cmap")],ZA);class Df extends un{_parseContours(A){const e=[];let t=[];for(let i=0;i<A.length;i+=1){const r=A[i];t.push(r),r.lastPointOfContour&&(e.push(t),t=[])}return Oi(t.length===0,"There are still points left in the current contour."),e}_transformPoints(A,e){const t=[];for(let i=0;i<A.length;i+=1){const r=A[i],n={x:e.xScale*r.x+e.scale10*r.y+e.dx,y:e.scale01*r.x+e.yScale*r.y+e.dy,onCurve:r.onCurve,lastPointOfContour:r.lastPointOfContour};t.push(n)}return t}_parseGlyphCoordinate(A,e,t,i,r){let n;return(e&i)>0?(n=A.view.readUint8(),(e&r)===0&&(n=-n),n=t+n):(e&r)>0?n=t:n=t+A.view.readInt16(),n}parse(A,e,t){A.view.seek(e);const i=this.numberOfContours=A.view.readInt16();if(this.xMin=A.view.readInt16(),this.yMin=A.view.readInt16(),this.xMax=A.view.readInt16(),this.yMax=A.view.readInt16(),i>0){const o=this.endPointIndices=[];for(let C=0;C<i;C++)o.push(A.view.readUint16());const a=this.instructionLength=A.view.readUint16();Oi(a<5e3,`Bad instructionLength:${a}`);const l=this.instructions=[];for(let C=0;C<a;++C)l.push(A.view.readUint8());const h=A.view.byteOffset,g=o[o.length-1]+1;Oi(g<2e4,`Bad numberOfCoordinates:${h}`);const f=[];let I,d=0;for(;d<g;)if(I=A.view.readUint8(),f.push(I),d++,I&8&&d<g){const C=A.view.readUint8();for(let B=0;B<C;B++)f.push(I),d++}if(Oi(f.length===g,`Bad flags length: ${f.length}, numberOfCoordinates: ${g}`),o.length>0){const C=[];let B;if(g>0){for(let _=0;_<g;_+=1)I=f[_],B={},B.onCurve=!!(I&1),B.lastPointOfContour=o.includes(_),C.push(B);let M=0;for(let _=0;_<g;_+=1)I=f[_],B=C[_],B.x=this._parseGlyphCoordinate(A,I,M,2,16),M=B.x;let R=0;for(let _=0;_<g;_+=1)I=f[_],B=C[_],B.y=this._parseGlyphCoordinate(A,I,R,4,32),R=B.y}this.points=C}else this.points=[]}else if(i===0)this.points=[];else{this.isComposite=!0,this.points=[],this.components=[];let o,a=!0;for(;a;){o=A.view.readUint16();const l={glyphIndex:A.view.readUint16(),xScale:1,scale01:0,scale10:0,yScale:1,dx:0,dy:0};(o&1)>0?(o&2)>0?(l.dx=A.view.readInt16(),l.dy=A.view.readInt16()):l.matchedPoints=[A.view.readUint16(),A.view.readUint16()]:(o&2)>0?(l.dx=A.view.readInt8(),l.dy=A.view.readInt8()):l.matchedPoints=[A.view.readUint8(),A.view.readUint8()],(o&8)>0?l.xScale=l.yScale=A.view.readInt16()/16384:(o&64)>0?(l.xScale=A.view.readInt16()/16384,l.yScale=A.view.readInt16()/16384):(o&128)>0&&(l.xScale=A.view.readInt16()/16384,l.scale01=A.view.readInt16()/16384,l.scale10=A.view.readInt16()/16384,l.yScale=A.view.readInt16()/16384),this.components.push(l),a=!!(o&32)}if(o&256){this.instructionLength=A.view.readUint16(),this.instructions=[];for(let l=0;l<this.instructionLength;l+=1)this.instructions.push(A.view.readUint8())}}if(this.isComposite)for(let o=0;o<this.components.length;o+=1){const a=this.components[o],l=t.get(a.glyphIndex);if(l.getPathCommands(),l.points){let h;if(a.matchedPoints===void 0)h=this._transformPoints(l.points,a);else{Oi(a.matchedPoints[0]>this.points.length-1||a.matchedPoints[1]>l.points.length-1,`Matched points out of range in ${this.name}`);const g=this.points[a.matchedPoints[0]];let f=l.points[a.matchedPoints[1]];const I={xScale:a.xScale,scale01:a.scale01,scale10:a.scale10,yScale:a.yScale,dx:0,dy:0};f=this._transformPoints([f],I)[0],I.dx=g.x-f.x,I.dy=g.y-f.y,h=this._transformPoints(l.points,I)}this.points=this.points.concat(h)}}const r=[],n=this._parseContours(this.points);for(let o=0,a=n.length;o<a;++o){const l=n[o];let h=l[l.length-1],g=l[0];h.onCurve?r.push({type:"M",x:h.x,y:h.y}):g.onCurve?r.push({type:"M",x:g.x,y:g.y}):r.push({type:"M",x:(h.x+g.x)*.5,y:(h.y+g.y)*.5});for(let f=0,I=l.length;f<I;++f)if(h=g,g=l[(f+1)%I],h.onCurve)r.push({type:"L",x:h.x,y:h.y});else{let d=g;g.onCurve||(d={x:(h.x+g.x)*.5,y:(h.y+g.y)*.5}),r.push({type:"Q",x1:h.x,y1:h.y,x:d.x,y:d.y})}r.push({type:"Z"})}this.pathCommands=r}}class bf extends fn{get length(){return this._sfnt.loca.locations.length}_get(A){const e=this._sfnt.loca.locations,t=e[A],i=new Df({index:A});return t!==e[A+1]&&i.parse(this._sfnt.glyf,t,this),i}}var xf=Object.getOwnPropertyDescriptor,Sf=(s,A,e,t)=>{for(var i=t>1?void 0:t?xf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};let Mr=class extends je{constructor(){super(...arguments);u(this,"_glyphs")}static from(A){const e=A.reduce((i,r)=>i+r.byteLength,0),t=new Mr(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeBytes(i)}),t}get glyphs(){return this._glyphs??(this._glyphs=new bf(this._sfnt))}};Mr=Sf([Ke("glyf")],Mr);var Mf=Object.getOwnPropertyDescriptor,Rf=(s,A,e,t)=>{for(var i=t>1?void 0:t?Mf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};let mn=class extends je{};mn=Rf([Ke("GPOS","gpos")],mn);var Pf=Object.defineProperty,Uf=Object.getOwnPropertyDescriptor,SA=(s,A,e,t)=>{for(var i=t>1?void 0:t?Uf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Pf(A,e,i),i};let jt=class extends je{};SA([y("uint16")],jt.prototype,"majorVersion",2),SA([y("uint16")],jt.prototype,"minorVersion",2),SA([y("uint16")],jt.prototype,"scriptListOffset",2),SA([y("uint16")],jt.prototype,"featureListOffset",2),SA([y("uint16")],jt.prototype,"lookupListOffset",2),SA([y("uint16")],jt.prototype,"featureVariationsOffset",2),jt=SA([Ke("GSUB","gsub")],jt);var kf=Object.defineProperty,Nf=Object.getOwnPropertyDescriptor,Fe=(s,A,e,t)=>{for(var i=t>1?void 0:t?Nf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&kf(A,e,i),i};let Me=class extends je{constructor(s=new ArrayBuffer(54),A){super(s,A,Math.min(54,s.byteLength-(A??0)))}};Fe([y("fixed")],Me.prototype,"version",2),Fe([y("fixed")],Me.prototype,"fontRevision",2),Fe([y("uint32")],Me.prototype,"checkSumAdjustment",2),Fe([y("uint32")],Me.prototype,"magickNumber",2),Fe([y("uint16")],Me.prototype,"flags",2),Fe([y("uint16")],Me.prototype,"unitsPerEm",2),Fe([y({type:"longDateTime"})],Me.prototype,"created",2),Fe([y({type:"longDateTime"})],Me.prototype,"modified",2),Fe([y("int16")],Me.prototype,"xMin",2),Fe([y("int16")],Me.prototype,"yMin",2),Fe([y("int16")],Me.prototype,"xMax",2),Fe([y("int16")],Me.prototype,"yMax",2),Fe([y("uint16")],Me.prototype,"macStyle",2),Fe([y("uint16")],Me.prototype,"lowestRecPPEM",2),Fe([y("int16")],Me.prototype,"fontDirectionHint",2),Fe([y("int16")],Me.prototype,"indexToLocFormat",2),Fe([y("int16")],Me.prototype,"glyphDataFormat",2),Me=Fe([Ke("head")],Me);var Ff=Object.defineProperty,Tf=Object.getOwnPropertyDescriptor,rt=(s,A,e,t)=>{for(var i=t>1?void 0:t?Tf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ff(A,e,i),i};let Ye=class extends je{constructor(s=new ArrayBuffer(36),A){super(s,A,Math.min(36,s.byteLength-(A??0)))}};rt([y("fixed")],Ye.prototype,"version",2),rt([y("int16")],Ye.prototype,"ascent",2),rt([y("int16")],Ye.prototype,"descent",2),rt([y("int16")],Ye.prototype,"lineGap",2),rt([y("uint16")],Ye.prototype,"advanceWidthMax",2),rt([y("int16")],Ye.prototype,"minLeftSideBearing",2),rt([y("int16")],Ye.prototype,"minRightSideBearing",2),rt([y("int16")],Ye.prototype,"xMaxExtent",2),rt([y("int16")],Ye.prototype,"caretSlopeRise",2),rt([y("int16")],Ye.prototype,"caretSlopeRun",2),rt([y("int16")],Ye.prototype,"caretOffset",2),rt([y({type:"int16",size:4})],Ye.prototype,"reserved",2),rt([y("int16")],Ye.prototype,"metricDataFormat",2),rt([y("uint16")],Ye.prototype,"numOfLongHorMetrics",2),Ye=rt([Ke("hhea")],Ye);var Lf=Object.getOwnPropertyDescriptor,Gf=(s,A,e,t)=>{for(var i=t>1?void 0:t?Lf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};let Rr=class extends je{constructor(){super(...arguments);u(this,"_metrics")}static from(A){const e=A.length*4,t=new Rr(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeUint16(i.advanceWidth),t.view.writeUint16(i.leftSideBearing)}),t}get metrics(){return this._metrics??(this._metrics=this.readMetrics())}readMetrics(){const A=this._sfnt.maxp.numGlyphs,e=this._sfnt.hhea.numOfLongHorMetrics;let t=0;const i=this.view;return i.seek(0),Array.from({length:A}).map((r,n)=>(n<e&&(t=i.readUint16()),{advanceWidth:t,leftSideBearing:i.readUint16()}))}};Rr=Gf([Ke("hmtx")],Rr);var Of=Object.getOwnPropertyDescriptor,Hf=(s,A,e,t)=>{for(var i=t>1?void 0:t?Of(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};let wn=class extends je{};wn=Hf([Ke("kern","kern")],wn);var Jf=Object.getOwnPropertyDescriptor,Kf=(s,A,e,t)=>{for(var i=t>1?void 0:t?Jf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};let Pr=class extends je{constructor(){super(...arguments);u(this,"_locations")}static from(A,e=1){const t=A.length*(e?4:2),i=new Pr(new ArrayBuffer(t));return A.forEach(r=>{e?i.view.writeUint32(r):i.view.writeUint16(r/2)}),i}get locations(){return this._locations??(this._locations=this.readLocations())}readLocations(){const A=this._sfnt.maxp.numGlyphs,e=this._sfnt.head.indexToLocFormat,t=this.view;return t.seek(0),Array.from({length:A}).map(()=>e?t.readUint32():t.readUint16()*2)}};Pr=Kf([Ke("loca")],Pr);var Yf=Object.defineProperty,Wf=Object.getOwnPropertyDescriptor,Ze=(s,A,e,t)=>{for(var i=t>1?void 0:t?Wf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Yf(A,e,i),i};let Te=class extends je{constructor(s=new ArrayBuffer(32),A){super(s,A,Math.min(32,s.byteLength-(A??0)))}};Ze([y("fixed")],Te.prototype,"version",2),Ze([y("uint16")],Te.prototype,"numGlyphs",2),Ze([y("uint16")],Te.prototype,"maxPoints",2),Ze([y("uint16")],Te.prototype,"maxContours",2),Ze([y("uint16")],Te.prototype,"maxComponentPoints",2),Ze([y("uint16")],Te.prototype,"maxComponentContours",2),Ze([y("uint16")],Te.prototype,"maxZones",2),Ze([y("uint16")],Te.prototype,"maxTwilightPoints",2),Ze([y("uint16")],Te.prototype,"maxStorage",2),Ze([y("uint16")],Te.prototype,"maxFunctionDefs",2),Ze([y("uint16")],Te.prototype,"maxInstructionDefs",2),Ze([y("uint16")],Te.prototype,"maxStackElements",2),Ze([y("uint16")],Te.prototype,"maxSizeOfInstructions",2),Ze([y("uint16")],Te.prototype,"maxComponentElements",2),Ze([y("uint16")],Te.prototype,"maxComponentDepth",2),Te=Ze([Ke("maxp")],Te);var zf=Object.defineProperty,Vf=Object.getOwnPropertyDescriptor,Ur=(s,A,e,t)=>{for(var i=t>1?void 0:t?Vf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&zf(A,e,i),i};const dl={0:"copyright",1:"fontFamily",2:"fontSubFamily",3:"uniqueSubFamily",4:"fullName",5:"version",6:"postScriptName",7:"tradeMark",8:"manufacturer",9:"designer",10:"description",11:"urlOfFontVendor",12:"urlOfFontDesigner",13:"licence",14:"urlOfLicence",16:"preferredFamily",17:"preferredSubFamily",18:"compatibleFull",19:"sampleText"},vn={Macintosh:1,Microsoft:3},qf={Default:0},Il={UCS2:1};let $A=class extends je{constructor(){super(...arguments);u(this,"_names")}get names(){return this._names??(this._names=this.readNames())}readNames(){const A=this.count;this.view.seek(6);const e=[];for(let a=0;a<A;++a)e.push({platform:this.view.readUint16(),encoding:this.view.readUint16(),language:this.view.readUint16(),nameId:this.view.readUint16(),length:this.view.readUint16(),offset:this.view.readUint16()});const t=this.stringOffset;for(let a=0;a<A;++a){const l=e[a];l.name=this.view.readBytes(t+l.offset,l.length)}let i=vn.Macintosh,r=qf.Default,n=0;e.some(a=>a.platform===vn.Microsoft&&a.encoding===Il.UCS2&&a.language===1033)&&(i=vn.Microsoft,r=Il.UCS2,n=1033);const o={};for(let a=0;a<A;++a){const l=e[a];l.platform===i&&l.encoding===r&&l.language===n&&dl[l.nameId]&&(o[dl[l.nameId]]=n===0?tf(l.name):Af(l.name))}return o}};Ur([y("uint16")],$A.prototype,"format",2),Ur([y("uint16")],$A.prototype,"count",2),Ur([y("uint16")],$A.prototype,"stringOffset",2),$A=Ur([Ke("name")],$A);var Xf=Object.defineProperty,jf=Object.getOwnPropertyDescriptor,ne=(s,A,e,t)=>{for(var i=t>1?void 0:t?jf(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Xf(A,e,i),i};let re=class extends je{get fontPANOSE(){return[this.bFamilyType,this.bSerifStyle,this.bWeight,this.bProportion,this.bContrast,this.bStrokeVariation,this.bArmStyle,this.bLetterform,this.bMidline,this.bXHeight]}};ne([y("uint16")],re.prototype,"version",2),ne([y("int16")],re.prototype,"xAvgCharWidth",2),ne([y("uint16")],re.prototype,"usWeightClass",2),ne([y("uint16")],re.prototype,"usWidthClass",2),ne([y("uint16")],re.prototype,"fsType",2),ne([y("uint16")],re.prototype,"ySubscriptXSize",2),ne([y("uint16")],re.prototype,"ySubscriptYSize",2),ne([y("uint16")],re.prototype,"ySubscriptXOffset",2),ne([y("uint16")],re.prototype,"ySubscriptYOffset",2),ne([y("uint16")],re.prototype,"ySuperscriptXSize",2),ne([y("uint16")],re.prototype,"ySuperscriptYSize",2),ne([y("uint16")],re.prototype,"ySuperscriptXOffset",2),ne([y("uint16")],re.prototype,"ySuperscriptYOffset",2),ne([y("uint16")],re.prototype,"yStrikeoutSize",2),ne([y("uint16")],re.prototype,"yStrikeoutPosition",2),ne([y("uint16")],re.prototype,"sFamilyClass",2),ne([y({type:"uint8"})],re.prototype,"bFamilyType",2),ne([y({type:"uint8"})],re.prototype,"bSerifStyle",2),ne([y({type:"uint8"})],re.prototype,"bWeight",2),ne([y({type:"uint8"})],re.prototype,"bProportion",2),ne([y({type:"uint8"})],re.prototype,"bContrast",2),ne([y({type:"uint8"})],re.prototype,"bStrokeVariation",2),ne([y({type:"uint8"})],re.prototype,"bArmStyle",2),ne([y({type:"uint8"})],re.prototype,"bLetterform",2),ne([y({type:"uint8"})],re.prototype,"bMidline",2),ne([y({type:"uint8"})],re.prototype,"bXHeight",2),ne([y({type:"uint8",size:16})],re.prototype,"ulUnicodeRange",2),ne([y({type:"char",size:4})],re.prototype,"achVendID",2),ne([y("uint16")],re.prototype,"fsSelection",2),ne([y("uint16")],re.prototype,"usFirstCharIndex",2),ne([y("uint16")],re.prototype,"usLastCharIndex",2),ne([y("int16")],re.prototype,"sTypoAscender",2),ne([y("int16")],re.prototype,"sTypoDescender",2),ne([y("int16")],re.prototype,"sTypoLineGap",2),ne([y("uint16")],re.prototype,"usWinAscent",2),ne([y("uint16")],re.prototype,"usWinDescent",2),ne([y({offset:72,type:"uint8",size:8})],re.prototype,"ulCodePageRange",2),ne([y({offset:72,type:"int16"})],re.prototype,"sxHeight",2),ne([y("int16")],re.prototype,"sCapHeight",2),ne([y("uint16")],re.prototype,"usDefaultChar",2),ne([y("uint16")],re.prototype,"usBreakChar",2),ne([y("uint16")],re.prototype,"usMaxContext",2),re=ne([Ke("OS/2","os2")],re);var Zf=Object.defineProperty,$f=Object.getOwnPropertyDescriptor,Pt=(s,A,e,t)=>{for(var i=t>1?void 0:t?$f(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Zf(A,e,i),i};let Bt=class extends je{constructor(s=new ArrayBuffer(32),A,e){super(s,A,e)}};Pt([y("fixed")],Bt.prototype,"format",2),Pt([y("fixed")],Bt.prototype,"italicAngle",2),Pt([y("int16")],Bt.prototype,"underlinePosition",2),Pt([y("int16")],Bt.prototype,"underlineThickness",2),Pt([y("uint32")],Bt.prototype,"isFixedPitch",2),Pt([y("uint32")],Bt.prototype,"minMemType42",2),Pt([y("uint32")],Bt.prototype,"maxMemType42",2),Pt([y("uint32")],Bt.prototype,"minMemType1",2),Pt([y("uint32")],Bt.prototype,"maxMemType1",2),Bt=Pt([Ke("post")],Bt);var ed=Object.defineProperty,td=Object.getOwnPropertyDescriptor,st=(s,A,e,t)=>{for(var i=t>1?void 0:t?td(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&ed(A,e,i),i};let We=class extends je{constructor(s=new ArrayBuffer(36),A){super(s,A,Math.min(36,s.byteLength-(A??0)))}};st([y("fixed")],We.prototype,"version",2),st([y("int16")],We.prototype,"vertTypoAscender",2),st([y("int16")],We.prototype,"vertTypoDescender",2),st([y("int16")],We.prototype,"vertTypoLineGap",2),st([y("int16")],We.prototype,"advanceHeightMax",2),st([y("int16")],We.prototype,"minTopSideBearing",2),st([y("int16")],We.prototype,"minBottomSideBearing",2),st([y("int16")],We.prototype,"yMaxExtent",2),st([y("int16")],We.prototype,"caretSlopeRise",2),st([y("int16")],We.prototype,"caretSlopeRun",2),st([y("int16")],We.prototype,"caretOffset",2),st([y({type:"int16",size:4})],We.prototype,"reserved",2),st([y("int16")],We.prototype,"metricDataFormat",2),st([y("int16")],We.prototype,"numOfLongVerMetrics",2),We=st([Ke("vhea")],We);var Ad=Object.getOwnPropertyDescriptor,id=(s,A,e,t)=>{for(var i=t>1?void 0:t?Ad(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};let kr=class extends je{constructor(){super(...arguments);u(this,"_metrics")}static from(A){const e=A.length*4,t=new kr(new ArrayBuffer(e));return A.forEach(i=>{t.view.writeUint16(i.advanceHeight),t.view.writeInt16(i.topSideBearing)}),t}get metrics(){return this._metrics??(this._metrics=this.readMetrics())}readMetrics(){var r;const A=this._sfnt.maxp.numGlyphs,e=((r=this._sfnt.vhea)==null?void 0:r.numOfLongVerMetrics)??0,t=this.view;t.seek(0);let i=0;return Array.from({length:A}).map((n,o)=>(o<e&&(i=t.readUint16()),{advanceHeight:i,topSideBearing:t.readUint8()}))}};kr=id([Ke("vmtx")],kr);var rd=Object.defineProperty,qi=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&rd(A,e,i),i};class Et extends wr{constructor(){super(...arguments);u(this,"format","TrueType");u(this,"mimeType","font/ttf");u(this,"_sfnt")}get sfnt(){return this._sfnt||(this._sfnt=this.createSFNT()),this._sfnt}static is(e){return typeof e=="number"?this.signature.has(e):this.signature.has(qA(e).getUint32(0))}static checksum(e){const t=qA(e);let i=t.byteLength;for(;i%4;)i++;let r=0;for(let n=0,o=i/4;n<o;n+=4)n*4<i-4&&(r+=t.getUint32(n*4,!1));return r&4294967295}static from(e){const t=f=>f+3&-4,i=e.tableViews.size,r=Array.from(e.tableViews.values()).reduce((f,I)=>f+t(I.byteLength),0),n=new this(new ArrayBuffer(12+i*16+r));n.scalerType=65536,n.numTables=i;const o=Math.log(2);n.searchRange=Math.floor(Math.log(i)/o)*16,n.entrySelector=Math.floor(n.searchRange/o),n.rangeShift=i*16-n.searchRange;let a=12+i*16,l=0;const h=n.getDirectories();e.tableViews.forEach((f,I)=>{const d=h[l++];d.tag=I,d.checkSum=this.checksum(f),d.offset=a,d.length=f.byteLength,n.view.writeBytes(f,a),a+=t(d.length)});const g=n.createSFNT().head;return g.checkSumAdjustment=0,g.checkSumAdjustment=2981146554-this.checksum(n.view),n}getDirectories(){let e=this.view.byteOffset+12;return Array.from({length:this.numTables},()=>{const t=new XA(this.view.buffer,e);return e+=t.view.byteLength,t})}createSFNT(){return new _A(this.getDirectories().reduce((e,t)=>(e[t.tag]=new DataView(this.view.buffer,this.view.byteOffset+t.offset,t.length),e),{}))}}u(Et,"signature",new Set([65536,1953658213,1954115633])),qi([y("uint32")],Et.prototype,"scalerType"),qi([y("uint16")],Et.prototype,"numTables"),qi([y("uint16")],Et.prototype,"searchRange"),qi([y("uint16")],Et.prototype,"entrySelector"),qi([y("uint16")],Et.prototype,"rangeShift");class Nr extends Et{constructor(){super(...arguments);u(this,"format","OpenType");u(this,"mimeType","font/otf")}static from(e){return super.from(e)}}u(Nr,"signature",new Set([1330926671]));var sd=Object.defineProperty,Xi=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&sd(A,e,i),i};class MA extends gt{constructor(A,e){super(A,e,20)}}Xi([y({type:"char",size:4})],MA.prototype,"tag"),Xi([y("uint32")],MA.prototype,"offset"),Xi([y("uint32")],MA.prototype,"compLength"),Xi([y("uint32")],MA.prototype,"origLength"),Xi([y("uint32")],MA.prototype,"origChecksum");var nd=Object.defineProperty,ct=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&nd(A,e,i),i};const at=(BA=class extends wr{constructor(){super(...arguments);u(this,"format","WOFF");u(this,"mimeType","font/woff");u(this,"_sfnt")}get subfontFormat(){return Et.is(this.flavor)?"TrueType":Nr.is(this.flavor)?"OpenType":"Open"}get sfnt(){return this._sfnt||(this._sfnt=this.createSFNT()),this._sfnt}static is(e){return typeof e=="number"?this.signature.has(e):this.signature.has(qA(e).getUint32(0))}static checkSum(e){const t=qA(e),i=t.byteLength,r=Math.floor(i/4);let n=0,o=0;for(;o<r;)n+=t.getUint32(4*o++,!1);let a=i-r*4;if(a){let l=r*4;for(;a>0;)n+=t.getUint8(l)<<a*8,l++,a--}return n%4294967296}static from(e,t=new ArrayBuffer(0)){const i=f=>f+3&-4,r=[];e.tableViews.forEach((f,I)=>{const d=qA(Vu(new Uint8Array(f.buffer,f.byteOffset,f.byteLength)));r.push({tag:I,view:d.byteLength<f.byteLength?d:f,rawView:f})});const n=r.length,o=r.reduce((f,I)=>f+i(I.view.byteLength),0),a=new BA(new ArrayBuffer(44+20*n+o+t.byteLength));a.signature=2001684038,a.flavor=65536,a.length=a.view.byteLength,a.numTables=n,a.totalSFNTSize=12+16*n+r.reduce((f,I)=>f+i(I.rawView.byteLength),0);let l=44+n*20,h=0;const g=a.getDirectories();return r.forEach(f=>{const I=g[h++];I.tag=f.tag,I.offset=l,I.compLength=f.view.byteLength,I.origChecksum=BA.checkSum(f.rawView),I.origLength=f.rawView.byteLength,a.view.writeBytes(f.view,l),l+=i(I.compLength)}),a.view.writeBytes(t),a}getDirectories(){let e=44;return Array.from({length:this.numTables},()=>{const t=new MA(this.view.buffer,e);return e+=t.view.byteLength,t})}createSFNT(){return new _A(this.getDirectories().reduce((e,t)=>{const i=t.tag,r=this.view.byteOffset+t.offset,n=t.compLength,o=t.origLength,a=r+n;return e[i]=n>=o?new DataView(this.view.buffer,r,n):new DataView(qu(new Uint8Array(this.view.buffer.slice(r,a))).buffer),e},{}))}},u(BA,"signature",new Set([2001684038])),BA);ct([y("uint32")],at.prototype,"signature"),ct([y("uint32")],at.prototype,"flavor"),ct([y("uint32")],at.prototype,"length"),ct([y("uint16")],at.prototype,"numTables"),ct([y("uint16")],at.prototype,"reserved"),ct([y("uint32")],at.prototype,"totalSFNTSize"),ct([y("uint16")],at.prototype,"majorVersion"),ct([y("uint16")],at.prototype,"minorVersion"),ct([y("uint32")],at.prototype,"metaOffset"),ct([y("uint32")],at.prototype,"metaLength"),ct([y("uint32")],at.prototype,"metaOrigLength"),ct([y("uint32")],at.prototype,"privOffset"),ct([y("uint32")],at.prototype,"privLength");let Fr=at;function Bl(s,A=!0){if(Et.is(s))return new Et(s);if(Nr.is(s))return new Nr(s);if(Fr.is(s))return new Fr(s);if(A)throw new Error("Failed to parseFont")}function El(s,A=!0){const e=Bl(s,!1);if(e)return e;if(A)throw new Error("Failed to parseFont")}const $r=class $r{constructor(){u(this,"fallbackFont");u(this,"loading",new Map);u(this,"loaded",new Map);u(this,"familyToUrl",new Map)}setFallbackFont(A){this.fallbackFont=A}async loadFallbackFont(A,e={}){this.fallbackFont=await this.load(A,e)}_createRequest(A,e){const t=new AbortController;return{url:A,when:fetch(A,{...$r.defaultRequestInit,...e,signal:t.signal}).then(i=>i.arrayBuffer()),cancel:()=>t.abort()}}injectFontFace(A,e){return document.fonts.add(new FontFace(A,e)),this}injectStyleTag(A,e){const t=document.createElement("style");return t.appendChild(document.createTextNode(`@font-face {
858
858
  font-family: "${A}";
859
859
  src: url(${e});
860
- }`)),document.head.appendChild(t),this}_parseUrls(A){const e=Array.from(new Set([...A.split(","),A]));return Array.from(new Set(e.map(t=>this.familyToUrl.get(t.trim())??this.familyToUrl.get(t)??t)))}get(A){let e;return A&&(e=this._parseUrls(A).reduce((i,s)=>i||this.loaded.get(s),void 0)),e??this.fallbackFont}set(A,e){return this.familyToUrl.set(A,e.src),this.loaded.set(e.src,e),this}delete(A){return this._parseUrls(A).forEach(e=>{this.familyToUrl.delete(e),this.loaded.delete(e)}),this}clear(){return this.familyToUrl.clear(),this.loading.clear(),this.loaded.clear(),this}async load(A,e={}){const{cancelOther:t,injectFontFace:i=!0,injectStyleTag:s=!0,...n}=e,{src:o}=A;if(this.loaded.has(o))return t&&(this.loading.forEach(f=>f.cancel()),this.loading.clear()),h(this.loaded.get(o));let a=this.loading.get(o);return a||(a=this._createRequest(o,n),this.loading.set(o,a)),t&&this.loading.forEach((f,d)=>{f!==a&&(f.cancel(),this.loading.delete(d))}),a.when.then(f=>{if(this.loaded.has(o))return h(this.loaded.get(o));{const d=c(f);return e.noAdd||this.loaded.set(A.src,d),d.familySet.forEach(I=>{this.familyToUrl.set(I,o),typeof document<"u"&&(i&&this.injectFontFace(I,f),s&&this.injectStyleTag(I,o))}),d}}).catch(f=>{if(f instanceof DOMException&&f.message==="The user aborted a request.")return c();throw f}).finally(()=>{this.loading.delete(o)});function l(){return A.family?Array.isArray(A.family)?A.family:[A.family]:[]}function h(f){return l().forEach(d=>{f.familySet.add(d)}),f}function c(f=new ArrayBuffer(0)){let d;function I(){return d||(d=f.byteLength?pl(f,!1):void 0),d}function C(){const B=I();if(B instanceof Et||B instanceof Fr)return B.sfnt}return{...A,buffer:f,familySet:new Set(l()),getFont:I,getSFNT:C}}}async waitUntilLoad(){await Promise.all(Array.from(this.loading.values()).map(A=>A.when))}};u($r,"defaultRequestInit",{cache:"force-cache"});let Tr=$r;const Cl=new Tr,nd=Object.freeze(Object.defineProperty({__proto__:null,BaseFont:wr,get Cff(){return _A},get Cmap(){return jA},CmapSubtableFormat0:In,CmapSubtableFormat12:Cn,CmapSubtableFormat14:Wi,CmapSubtableFormat2:Ji,CmapSubtableFormat4:pn,CmapSubtableFormat6:bA,FontDataObject:gt,FontDataView:Ne,Fonts:Tr,get Glyf(){return Mr},Glyph:un,GlyphSet:fn,get Gpos(){return mn},get Gsub(){return Xt},get Head(){return Me},get Hhea(){return Ke},get Hmtx(){return Rr},get Kern(){return wn},get Loca(){return Pr},get Maxp(){return Te},get Name(){return ZA},get Os2(){return re},get Post(){return Bt},SFNT:vA,TTF:Et,TableDirectory:qA,get Vhea(){return Ye},get Vmtx(){return kr},WOFF:Fr,WOFFTableDirectoryEntry:SA,createCmapSegments:En,dataTypeToByteLength:Gi,defineColumn:y,defineSFNTTable:Je,fonts:Cl,parseFont:pl,parseSFNTFont:El},Symbol.toStringTag,{value:"Module"}));function _n(r,A,e){if(typeof A=="string"&&A.startsWith("linear-gradient")){const{x0:t,y0:i,x1:s,y1:n,stops:o}=od(A,e.left,e.top,e.width,e.height),a=r.createLinearGradient(t,i,s,n);return o.forEach(l=>a.addColorStop(l.offset,l.color)),a}return A}function Lr(r,A,e){r!=null&&r.color&&(r.color=_n(e,r.color,A)),r!=null&&r.backgroundColor&&(r.backgroundColor=_n(e,r.backgroundColor,A)),r!=null&&r.textStrokeColor&&(r.textStrokeColor=_n(e,r.textStrokeColor,A))}function od(r,A,e,t,i){var d;const s=((d=r.match(/linear-gradient\((.+)\)$/))==null?void 0:d[1])??"",n=s.split(",")[0],o=n.includes("deg")?n:"0deg",a=s.replace(o,"").matchAll(/(#|rgba|rgb)(.+?) ([\d.]+%)/gi),h=(Number(o.replace("deg",""))||0)*Math.PI/180,c=t*Math.sin(h),f=i*Math.cos(h);return{x0:A+t/2-c,y0:e+i/2+f,x1:A+t/2+c,y1:e+i/2-f,stops:Array.from(a).map(I=>{let C=I[2];return C.startsWith("(")?C=C.split(",").length>3?`rgba${C}`:`rgb${C}`:C=`#${C}`,{offset:Number(I[3].replace("%",""))/100,color:C}})}}function qi(r){const{ctx:A,path:e,fontSize:t,clipRect:i}=r;A.save(),A.beginPath();const s=e.style,n={...s,fill:r.color??s.fill,stroke:r.textStrokeColor??s.stroke,strokeWidth:r.textStrokeWidth?r.textStrokeWidth*t:s.strokeWidth,strokeLinecap:"round",strokeLinejoin:"round",shadowOffsetX:(r.shadowOffsetX??0)*t,shadowOffsetY:(r.shadowOffsetY??0)*t,shadowBlur:(r.shadowBlur??0)*t,shadowColor:r.shadowColor};i&&(A.rect(i.left,i.top,i.width,i.height),A.clip(),A.beginPath()),e.drawTo(A,n),A.restore()}function ad(r,A,e){const{left:t,top:i,width:s,height:n}=e,o=r.canvas;o.dataset.viewBox=`${t} ${i} ${s} ${n}`,o.dataset.pixelRatio=String(A);const a=s,l=n;o.width=Math.max(1,Math.ceil(a*A)),o.height=Math.max(1,Math.ceil(l*A)),o.style.width=`${a}px`,o.style.height=`${l}px`,r.clearRect(0,0,o.width,o.height),r.scale(A,A),r.translate(-t,-i)}function ld(r,A){const{paragraphs:e,computedStyle:t,glyphBox:i}=A;Lr(t,i,r),e.forEach(s=>{Lr(s.computedStyle,s.lineBox,r),s.fragments.forEach(n=>{Lr(n.computedStyle,n.inlineBox,r)})})}const hd=new Set(["©","®","÷"]),gd=new Set(["—","…","“","”","﹏","﹋","﹌","‘","’","˜"]),cd={1:"italic",32:"bold"},ud={1:"italic",2:"bold"},Ql={100:-.2,200:-.1,300:0,400:0,normal:0,500:.1,600:.2,700:.3,bold:.3,800:.4,900:.5};class fd{constructor(A,e,t){u(this,"path",new ke);u(this,"lineBox",new ue);u(this,"inlineBox",new ue);u(this,"glyphBox");u(this,"advanceWidth",0);u(this,"advanceHeight",0);u(this,"underlinePosition",0);u(this,"underlineThickness",0);u(this,"strikeoutPosition",0);u(this,"strikeoutSize",0);u(this,"ascender",0);u(this,"descender",0);u(this,"typoAscender",0);u(this,"typoDescender",0);u(this,"typoLineGap",0);u(this,"winAscent",0);u(this,"winDescent",0);u(this,"xHeight",0);u(this,"capHeight",0);u(this,"baseline",0);u(this,"centerDiviation",0);u(this,"fontStyle");this.content=A,this.index=e,this.parent=t}get center(){var A;return(A=this.glyphBox)==null?void 0:A.center}get computedStyle(){return this.parent.computedStyle}get isVertical(){return this.computedStyle.writingMode.includes("vertical")}get fontSize(){return this.computedStyle.fontSize}get fontHeight(){return this.fontSize*this.computedStyle.lineHeight}_getFontSFNT(A){const e=this.computedStyle.fontFamily,t=A??Cl,i=e?t.get(e):t.fallbackFont;return i==null?void 0:i.getSFNT()}updateGlyph(A=this._getFontSFNT()){if(!A)return this;const{hhea:e,os2:t,post:i,head:s}=A,n=s.unitsPerEm,o=e.ascent,a=e.descent,{content:l,computedStyle:h,isVertical:c}=this,{fontSize:f}=h,d=n/f,I=A.getAdvanceWidth(l,f),C=(o+Math.abs(a))/d,B=o/d;return this.advanceWidth=I,this.advanceHeight=C,this.inlineBox.width=c?C:I,this.inlineBox.height=c?I:C,this.underlinePosition=(o-i.underlinePosition)/d,this.underlineThickness=i.underlineThickness/d,this.strikeoutPosition=(o-t.yStrikeoutPosition)/d,this.strikeoutSize=t.yStrikeoutSize/d,this.ascender=o/d,this.descender=a/d,this.typoAscender=t.sTypoAscender/d,this.typoDescender=t.sTypoDescender/d,this.typoLineGap=t.sTypoLineGap/d,this.winAscent=t.usWinAscent/d,this.winDescent=t.usWinDescent/d,this.xHeight=t.sxHeight/d,this.capHeight=t.sCapHeight/d,this.baseline=B,this.centerDiviation=C/2-B,this.fontStyle=cd[t.fsSelection]??ud[s.macStyle],this}update(A){const e=this._getFontSFNT(A);if(!e)return this;this.updateGlyph(e);const{isVertical:t,content:i,computedStyle:s,baseline:n,inlineBox:o,ascender:a,descender:l,typoAscender:h,fontStyle:c,advanceWidth:f,advanceHeight:d}=this,{left:I,top:C}=o,B=s.fontStyle==="italic"&&c!=="italic";let P=I,S=C+n,_;const R=new ke;if(t&&(P+=(d-f)/2,Math.abs(f-d)>.1&&(S-=(a-h)/(a+Math.abs(l))*d),_=void 0),t&&!hd.has(i)&&(i.codePointAt(0)<=256||gd.has(i))){R.addCommands(e.getPathCommands(i,P,C+n-(d-f)/2,s.fontSize));const w={y:C-(d-f)/2+d/2,x:P+f/2};B&&this._italic(R,t?{x:w.x,y:C-(d-f)/2+n}:void 0),R.rotate(90,w)}else _!==void 0?(R.addCommands(e.glyphs.get(_).getPathCommands(P,S,s.fontSize)),B&&this._italic(R,t?{x:P+f/2,y:C+h/(a+Math.abs(l))*d}:void 0)):(R.addCommands(e.getPathCommands(i,P,S,s.fontSize)),B&&this._italic(R,t?{x:P+d/2,y:S}:void 0));const v=s.fontWeight??400;return v in Ql&&(v===700||v==="bold")&&c!=="bold"&&R.bold(Ql[v]*s.fontSize*.05),R.style={fill:s.color,stroke:s.textStrokeWidth?s.textStrokeColor:"none",strokeWidth:s.textStrokeWidth?s.textStrokeWidth*s.fontSize*.03:0},this.path=R,this.glyphBox=this.getGlyphBoundingBox(),this}_italic(A,e){A.skew(-.24,0,e||{y:this.inlineBox.top+this.baseline,x:this.inlineBox.left+this.inlineBox.width/2})}getGlyphMinMax(A,e,t){var i;if((i=this.path.curves[0])!=null&&i.curves.length)return this.path.getMinMax(A,e,t)}getGlyphBoundingBox(A){const e=this.getGlyphMinMax(void 0,void 0,A);if(!e)return;const{min:t,max:i}=e;return new ue(t.x,t.y,i.x-t.x,i.y-t.y)}drawTo(A,e={}){const t=this.computedStyle,i={ctx:A,path:this.path,fontSize:t.fontSize,color:t.color,...e};if(this.glyphBox)qi(i);else{A.save(),A.beginPath();const s=this.path.style,n={...s,fill:i.color??s.fill,stroke:i.textStrokeColor??s.stroke,strokeWidth:i.textStrokeWidth?i.textStrokeWidth*i.fontSize:s.strokeWidth,shadowOffsetX:(i.shadowOffsetX??0)*i.fontSize,shadowOffsetY:(i.shadowOffsetY??0)*i.fontSize,shadowBlur:(i.shadowBlur??0)*i.fontSize,shadowColor:i.shadowColor};Js(A,n),A.font=`${i.fontSize}px ${i.fontFamily}`,this.isVertical?(A.textBaseline="middle",A.fillText(this.content,this.inlineBox.left,this.inlineBox.top+this.inlineBox.height/2)):(A.textBaseline="alphabetic",A.fillText(this.content,this.inlineBox.left,this.inlineBox.top+this.baseline)),A.restore()}}}function Dn(r,A){return typeof r=="number"?r:r.endsWith("%")?(r=r.substring(0,r.length-1),Math.ceil(Number(r)/100*A.total)):r.endsWith("rem")?(r=r.substring(0,r.length-3),Number(r)*A.fontSize):r.endsWith("em")?(r=r.substring(0,r.length-2),Number(r)*A.fontSize):Number(r)}function yl(r){const A=aA(r)?{}:r;return Object.keys(A).reduce((e,t)=>{let i=A[t];const s=ml(t),n=ml(i);return s&&(t=s),n&&(i=n),e[t]=i,e},{})}function aA(r){return!r||r==="none"}function dd(r,A){const e=Object.keys(r),t=Object.keys(A);return Array.from(new Set([...e,...t])).every(s=>$A(r[s],A[s]))}function $A(r,A){const e=typeof r;return e===typeof A?e==="object"?dd(r,A):r===A:!1}function ml(r){const A=r.startsWith("#")?r.slice(1):r;if(!/^(?:[0-9A-F]{3}|[0-9A-F]{6})$/i.test(A))return null;const t=A.length===3?A.split("").map(o=>o+o).join(""):A,i=Number.parseInt(t.slice(0,2),16),s=Number.parseInt(t.slice(2,4),16),n=Number.parseInt(t.slice(4,6),16);return`rgb(${i}, ${s}, ${n})`}function bn(r){if(!r)return r;const A={};for(const e in r)r[e]!==""&&r[e]!==void 0&&(A[e]=r[e]);return A}function xn(r){return r.startsWith("http://")||r.startsWith("https://")||r.startsWith("blob://")}class Id{constructor(A,e={},t){u(this,"inlineBox",new ue);this.content=A,this.style=e,this.parent=t,this.updateComputedStyle().initCharacters()}get computedContent(){const A=this.computedStyle;return A.textTransform==="uppercase"?this.content.toUpperCase():A.textTransform==="lowercase"?this.content.toLowerCase():this.content}updateComputedStyle(){return this.computedStyle={...this.parent.computedStyle,...bn(this.style)},this}initCharacters(){const A=[];let e=0;for(const t of this.computedContent)A.push(new fd(t,e++,this));return this.characters=A,this}}class Xi{constructor(A,e){u(this,"lineBox",new ue);u(this,"fragments",[]);this.style=A,this.parentStyle=e,this.updateComputedStyle()}updateComputedStyle(){return this.computedStyle={...bn(this.parentStyle),...bn(this.style)},this}addFragment(A,e){const t=new Id(A,e,this);return this.fragments.push(t),t}}function yB(r){return r}const gi=class gi{_styleToDomStyle(A){const e={};for(const t in A){const i=A[t];gi.notZeroStyles.has(t)&&i===0||(typeof i=="number"&&gi.pxStyles.has(t)?e[t]=`${i}px`:e[t]=i)}return e}createParagraphDom(A,e){const t=document.createDocumentFragment(),i=document.createElement("section"),s={...e},n=e.writingMode.includes("horizontal");switch(e.textAlign){case"start":case"left":s.justifyContent="flex-start";break;case"center":s.justifyContent="center";break;case"end":case"right":s.justifyContent="flex-end";break}switch(e.verticalAlign){case"top":s.alignItems="flex-start";break;case"middle":s.alignItems="center";break;case"bottom":s.alignItems="flex-end";break}const o=!!(s.justifyContent||s.alignItems);Object.assign(i.style,{...this._styleToDomStyle({...s,boxSizing:s.boxSizing??"border-box",display:s.display??(o?"inline-flex":void 0),width:s.width??"max-content",height:s.height??"max-content"}),whiteSpace:"pre-wrap",wordBreak:"break-all",position:"fixed",visibility:"hidden"});const a=document.createElement("ul");return Object.assign(a.style,{verticalAlign:"inherit",listStyleType:"inherit",padding:"0",margin:"0",width:o&&n?"100%":void 0,height:o&&!n?"100%":void 0}),A.forEach(l=>{const h=document.createElement("li");Object.assign(h.style,{verticalAlign:"inherit",...this._styleToDomStyle(l.style)}),l.fragments.forEach(c=>{const f=document.createElement("span");Object.assign(f.style,{verticalAlign:"inherit",...this._styleToDomStyle(c.style)}),f.appendChild(document.createTextNode(c.content)),h.appendChild(f)}),a.appendChild(h)}),i.appendChild(a),t.appendChild(i),document.body.appendChild(t),{dom:i,destory:()=>{var l;return(l=i.parentNode)==null?void 0:l.removeChild(i)}}}measureDomText(A){const e=document.createRange();e.selectNodeContents(A);const t=A.data??"";let i=0;return Array.from(t).map(s=>{var c;const n=i+=t.substring(i).indexOf(s),o=n+s.length;i+=s.length,e.setStart(A,Math.max(n,0)),e.setEnd(A,o);const a=((c=e.getClientRects)==null?void 0:c.call(e))??[e.getBoundingClientRect()];let l=a[a.length-1];a.length>1&&l.width<2&&(l=a[a.length-2]);const h=e.toString();if(h!==""&&l&&l.width+l.height!==0)return{content:h,top:l.top,left:l.left,height:l.height,width:l.width}}).filter(Boolean)}measureDom(A){const e=[],t=[],i=[];return A.querySelectorAll("li").forEach((s,n)=>{const o=s.getBoundingClientRect();e.push({paragraphIndex:n,left:o.left,top:o.top,width:o.width,height:o.height}),s.querySelectorAll(":scope > *").forEach((a,l)=>{const h=a.getBoundingClientRect();t.push({paragraphIndex:n,fragmentIndex:l,left:h.left,top:h.top,width:h.width,height:h.height});let c=0;!a.children.length&&a.firstChild instanceof window.Text?this.measureDomText(a.firstChild).forEach(f=>{i.push({...f,newParagraphIndex:-1,paragraphIndex:n,fragmentIndex:l,characterIndex:c++,textWidth:-1,textHeight:-1})}):a.querySelectorAll(":scope > *").forEach(f=>{f.firstChild instanceof window.Text&&this.measureDomText(f.firstChild).forEach(d=>{i.push({...d,newParagraphIndex:-1,paragraphIndex:n,fragmentIndex:l,characterIndex:c++,textWidth:-1,textHeight:-1})})})})}),{paragraphs:e,fragments:t,characters:i}}measureParagraphDom(A,e){const t=e.getBoundingClientRect(),i=this.measureDom(e);i.paragraphs.forEach(o=>{const a=A[o.paragraphIndex];a.lineBox.left=o.left-t.left,a.lineBox.top=o.top-t.top,a.lineBox.width=o.width,a.lineBox.height=o.height}),i.fragments.forEach(o=>{const a=A[o.paragraphIndex].fragments[o.fragmentIndex];a.inlineBox.left=o.left-t.left,a.inlineBox.top=o.top-t.top,a.inlineBox.width=o.width,a.inlineBox.height=o.height});const s=[];let n=0;return i.characters.forEach(o=>{const{paragraphIndex:a,fragmentIndex:l,characterIndex:h}=o;s.push({...o,newParagraphIndex:a,left:o.left-t.left,top:o.top-t.top});const c=A[a].fragments[l].characters[h],{fontHeight:f,isVertical:d}=c,I=s[n];c.inlineBox.left=I.left,c.inlineBox.top=I.top,c.inlineBox.width=I.width,c.inlineBox.height=I.height,d?(c.lineBox.left=I.left+(I.width-f)/2,c.lineBox.top=I.top,c.lineBox.width=f,c.lineBox.height=I.height):(c.lineBox.left=I.left,c.lineBox.top=I.top+(I.height-f)/2,c.lineBox.width=I.width,c.lineBox.height=f),n++}),{paragraphs:A,boundingBox:new ue(0,0,t.width,t.height)}}measure(A,e,t){let i;t||({dom:t,destory:i}=this.createParagraphDom(A,e));const s=this.measureParagraphDom(A,t);return i==null||i(),s}};u(gi,"notZeroStyles",new Set(["width","height"])),u(gi,"pxStyles",new Set(["width","height","fontSize","letterSpacing","textStrokeWidth","textIndent","shadowOffsetX","shadowOffsetY","shadowBlur","marginLeft","marginTop","marginRight","marginBottom","paddingLeft","paddingTop","paddingRight","paddingBottom"]));let Sn=gi;class Bd{constructor(){u(this,"eventListeners",new Map)}addEventListener(A,e,t){const i={value:e,options:t},s=this.eventListeners.get(A);return s?Array.isArray(s)?s.push(i):this.eventListeners.set(A,[s,i]):this.eventListeners.set(A,i),this}removeEventListener(A,e,t){var s,n;if(!e)return this.eventListeners.delete(A),this;const i=this.eventListeners.get(A);if(!i)return this;if(Array.isArray(i)){const o=[];for(let a=0,l=i.length;a<l;a++){const h=i[a];(h.value!==e||typeof t=="object"&&(t!=null&&t.once)&&(typeof h.options=="boolean"||!((s=h.options)!=null&&s.once)))&&o.push(h)}o.length?this.eventListeners.set(A,o.length===1?o[0]:o):this.eventListeners.delete(A)}else i.value===e&&(typeof t=="boolean"||!(t!=null&&t.once)||typeof i.options=="boolean"||(n=i.options)!=null&&n.once)&&this.eventListeners.delete(A);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(A){return this.eventListeners.has(A)}dispatchEvent(A,e){var i,s;const t=this.eventListeners.get(A);if(t){if(Array.isArray(t))for(let n=t.length,o=0;o<n;o++){const a=t[o];typeof a.options=="object"&&((i=a.options)!=null&&i.once)&&this.off(A,a.value,a.options),a.value.apply(this,[e])}else typeof t.options=="object"&&((s=t.options)!=null&&s.once)&&this.off(A,t.value,t.options),t.value.apply(this,[e]);return!0}else return!1}on(A,e,t){return this.addEventListener(A,e,t)}once(A,e){return this.addEventListener(A,e,{once:!0})}off(A,e,t){return this.removeEventListener(A,e,t)}emit(A,e){this.dispatchEvent(A,e)}}function Ed(){return{name:"background"}}function Mn(r){const{highlight:A,highlightImage:e,highlightReferImage:t,highlightColormap:i,highlightLine:s,highlightSize:n,highlightThickness:o}=r;return{image:(A==null?void 0:A.image)??e??"none",referImage:(A==null?void 0:A.referImage)??t??"none",colormap:(A==null?void 0:A.colormap)??i??"none",line:(A==null?void 0:A.line)??s??"none",size:(A==null?void 0:A.size)??n??"cover",thickness:(A==null?void 0:A.thickness)??o??"100%"}}function pd(){const r=[],A=[],e=new Map,t=new Map;async function i(n){if(!e.has(n)){e.set(n,n);try{e.set(n,await fetch(n).then(o=>o.text()))}catch(o){console.warn(o),e.delete(n)}}}function s(n){let o=t.get(n);if(!o){const a=Xs(xn(n)?e.get(n)??n:n),l=Zs(a);o={dom:a,pathSet:l},t.set(n,o)}return o}return{name:"highlight",paths:r,load:async n=>{const o=new Set;n.forEachCharacter(a=>{const{computedStyle:l}=a,{image:h,referImage:c}=Mn(l);xn(h)&&o.add(h),xn(c)&&o.add(c)}),await Promise.all(Array.from(o).map(a=>i(a)))},update:n=>{A.length=0,r.length=0;let o=[],a,l;n.forEachCharacter(h=>{const{computedStyle:c}=h,f=Mn(c),{image:d,colormap:I,line:C,size:B,thickness:P}=f;if(aA(d))a!=null&&a.length&&(a=[],o.push(a));else{const{inlineBox:S,isVertical:_}=h,{fontSize:R}=c;(!l||$A(l.image,d)&&$A(l.colormap,I)&&$A(l.line,C)&&$A(l.size,B)&&$A(l.thickness,P))&&(a!=null&&a.length)&&(_?a[0].inlineBox.left===S.left:a[0].inlineBox.top===S.top)&&a[0].fontSize===R?a.push(h):(a=[],a.push(h),o.push(a))}l=f}),o=o.filter(h=>h.length);for(let h=0;h<o.length;h++){const c=o[h],f=c[0],d=ue.from(...c.filter(H=>H.glyphBox).map(H=>H.glyphBox)),{computedStyle:I}=f,{fontSize:C,writingMode:B}=I,{image:P,referImage:S,colormap:_,line:R,size:v,thickness:w}=Mn(I),D=B.includes("vertical"),x=Dn(w,{fontSize:C,total:d.width})/d.width,L=yl(_),{pathSet:Z,dom:Y}=s(P),T=Z.getBoundingBox(!0),X=C/T.width*2,k=new ue().copy(d);D&&(k.width=d.height,k.height=d.width,k.left=d.left+d.width);const j=Math.floor(k.width);let te=j;if(v!=="cover"&&(te=Dn(v,{fontSize:C,total:d.width})||j,k.width=te),!aA(S)&&aA(R)){const H=s(S).pathSet.getBoundingBox(!0);T.copy(H)}else{let H;if(aA(R))if(T.width/T.height>4){H="underline";const ne=Y.getAttribute("viewBox");if(ne){const[q,W,oe,Ae]=ne.split(" ").map(ie=>Number(ie)),ae=W+Ae/2;T.y<ae&&T.y+T.height>ae?H="line-through":T.y+T.height<ae?H="overline":H="underline"}}else H="outline";else H=R;switch(H){case"outline":{const ne=k.width*.2,q=k.height*.2;k.width+=ne,k.height+=q,D?(k.x-=q/2,k.y-=ne/2,k.x+=k.height):(k.x-=ne/2,k.y-=q/2);break}case"overline":k.height=T.height*X,D?k.x=f.inlineBox.left+f.inlineBox.width:k.y=f.inlineBox.top;break;case"line-through":k.height=T.height*X,D?k.x=f.inlineBox.left+f.inlineBox.width-f.strikeoutPosition+k.height/2:k.y=f.inlineBox.top+f.strikeoutPosition-k.height/2;break;case"underline":k.height=T.height*X,D?k.x=f.inlineBox.left+f.inlineBox.width-f.underlinePosition:k.y=f.inlineBox.top+f.underlinePosition;break}}const J=new ze().translate(-T.x,-T.y).scale(k.width/T.width,k.height/T.height);D&&J.rotate(-Math.PI/2),J.translate(k.x,k.y);for(let H=0;H<Math.ceil(j/te);H++){const ne=J.clone();D?ne.translate(0,H*k.width):ne.translate(H*k.width,0),Z.paths.forEach(q=>{const W=q.clone().applyTransform(ne);W.style.strokeWidth&&(W.style.strokeWidth*=X*x),W.style.strokeMiterlimit&&(W.style.strokeMiterlimit*=X),W.style.strokeDashoffset&&(W.style.strokeDashoffset*=X),W.style.strokeDasharray&&(W.style.strokeDasharray=W.style.strokeDasharray.map(oe=>oe*X)),W.style.fill&&W.style.fill in L&&(W.style.fill=L[W.style.fill]),W.style.stroke&&W.style.stroke in L&&(W.style.stroke=L[W.style.stroke]),r.push(W),j!==te&&(D?A[r.length-1]=new ue(d.left-d.width*2,d.top,d.width*4,d.height):A[r.length-1]=new ue(d.left,d.top-d.height*2,d.width,d.height*4))})}}},renderOrder:-1,render:(n,o)=>{r.forEach((a,l)=>{if(qi({ctx:n,path:a,fontSize:o.computedStyle.fontSize,clipRect:A[l]}),o.debug){const h=new Ir([a]).getBoundingBox();h&&n.strokeRect(h.x,h.y,h.width,h.height)}})}}}function Cd(r,A){return`<svg width="${r*2}" height="${r*2}" xmlns="http://www.w3.org/2000/svg">
861
- <circle cx="${r}" cy="${r}" r="${r}" fill="${A}" />
862
- </svg>`}function Qd(){const r=[];return{name:"listStyle",paths:r,update:A=>{r.length=0;const{paragraphs:e,isVertical:t,fontSize:i}=A,s=i*.45;e.forEach(n=>{const{computedStyle:o}=n,{color:a,listStyleImage:l,listStyleColormap:h,listStyleSize:c,listStyleType:f}=o,d=yl(h);let I=c,C;if(!aA(l))C=l;else if(!aA(f)){const _=i*.38/2;switch(I=I==="cover"?_*2:I,f){case"disc":C=Cd(_,String(a));break}}if(!C)return;const B=Zs(C),P=B.getBoundingBox();let S;n.fragments.forEach(_=>{_.characters.forEach(R=>{const{inlineBox:v}=R;if(t?(S==null?void 0:S.inlineBox.left)!==v.left:(S==null?void 0:S.inlineBox.top)!==v.top){S=R;const w=I==="cover"?1:Dn(I,{total:i,fontSize:i})/i,D=new ze;if(t){const x=i/P.height*w;D.translate(-P.left,-P.top).rotate(Math.PI/2).scale(x,x).translate(v.left+(v.width-P.height*x)/2,v.top-s)}else{const x=i/P.height*w;D.translate(-P.left,-P.top).scale(x,x).translate(v.left-P.width*x-s,v.top+(v.height-P.height*x)/2)}r.push(...B.paths.map(x=>{const L=x.clone();return L.applyTransform(D),L.style.fill&&L.style.fill in d&&(L.style.fill=d[L.style.fill]),L.style.stroke&&L.style.stroke in d&&(L.style.stroke=d[L.style.stroke]),L}))}})})})}}}function yd(){return{name:"outline"}}const lA=new G,ei=new ze,hA=new ze;function md(){return{name:"render",getBoundingBox:r=>{const{characters:A,fontSize:e,effects:t}=r,i=[];return A.forEach(s=>{t==null||t.forEach(n=>{if(!s.glyphBox)return;const o=s.glyphBox.clone(),a=Rn(r,n);lA.set(o.left,o.top),lA.applyMatrix3(a),o.left=lA.x,o.top=lA.y,lA.set(o.right,o.bottom),lA.applyMatrix3(a),o.width=lA.x-o.left,o.height=lA.y-o.top;const l=(n.shadowOffsetX??0)*e,h=(n.shadowOffsetY??0)*e,c=Math.max(.1,n.textStrokeWidth??0)*e;o.left+=l-c,o.top+=h-c,o.width+=c*2,o.height+=c*2,i.push(o)})}),i.length?ue.from(...i):void 0},render:(r,A)=>{const{paragraphs:e,glyphBox:t,effects:i,style:s}=A;function n(o,a){r.fillStyle=o,r.fillRect(a.left,a.top,a.width,a.height)}s!=null&&s.backgroundColor&&n(s.backgroundColor,new ue(0,0,r.canvas.width,r.canvas.height)),e.forEach(o=>{var a;(a=o.style)!=null&&a.backgroundColor&&n(o.style.backgroundColor,o.lineBox)}),i?i.forEach(o=>{Lr(o,t,r),r.save();const[a,l,h,c,f,d]=Rn(A,o).transpose().elements;r.transform(a,c,l,f,h,d),A.forEachCharacter(I=>{var C;(C=I.parent.style)!=null&&C.backgroundColor&&n(I.parent.style.backgroundColor,I.inlineBox),I.drawTo(r,o)}),r.restore()}):e.forEach(o=>{o.fragments.forEach(a=>{var l;(l=a.style)!=null&&l.backgroundColor&&n(a.computedStyle.backgroundColor,a.inlineBox),a.characters.forEach(h=>{h.drawTo(r)})})}),A.debug&&e.forEach(o=>{r.strokeRect(o.lineBox.x,o.lineBox.y,o.lineBox.width,o.lineBox.height)})}}}function Rn(r,A){const{fontSize:e,glyphBox:t}=r,i=(A.translateX??0)*e,s=(A.translateY??0)*e,n=Math.PI*2,o=(A.skewX??0)/360*n,a=(A.skewY??0)/360*n,{left:l,top:h,width:c,height:f}=t,d=l+c/2,I=h+f/2;return ei.identity(),hA.makeTranslation(i,s),ei.multiply(hA),hA.makeTranslation(d,I),ei.multiply(hA),hA.set(1,Math.tan(o),0,Math.tan(a),1,0,0,0,1),ei.multiply(hA),hA.makeTranslation(-d,-I),ei.multiply(hA),ei.clone()}function wd(){const r=[];return{name:"textDecoration",paths:r,update:A=>{r.length=0;const e=[];let t,i;A.forEachCharacter(s=>{const{computedStyle:n,isVertical:o,inlineBox:a,underlinePosition:l,underlineThickness:h,strikeoutPosition:c,strikeoutSize:f}=s,{color:d,textDecoration:I,writingMode:C}=n;if(aA(I))i=void 0;else{let B=!1;if((i==null?void 0:i.textDecoration)===I&&(i==null?void 0:i.writingMode)===C&&(i==null?void 0:i.color)===d&&(o?t[0].inlineBox.left===a.left:t[0].inlineBox.top===a.top))switch(I){case"underline":t[0].underlinePosition===l&&t[0].underlineThickness===h&&(B=!0);break;case"line-through":t[0].strikeoutPosition===c&&t[0].strikeoutSize===f&&(B=!0);break}B?t.push(s):(t=[],t.push(s),e.push(t)),i=n}}),e.forEach(s=>{const{computedStyle:n,isVertical:o,underlinePosition:a,underlineThickness:l,strikeoutPosition:h,strikeoutSize:c}=s[0],{color:f,textDecoration:d}=n,{left:I,top:C,width:B,height:P}=ue.from(...s.map(w=>w.inlineBox));let S=o?I+B:C;const _=o?-1:1;let R=0;switch(d){case"overline":R=l*2;break;case"underline":S+=_*a,R=l*2;break;case"line-through":S+=_*h,R=c*2;break}S-=R;let v;o?v=new ke([{type:"M",x:S,y:C},{type:"L",x:S,y:C+P},{type:"L",x:S+R,y:C+P},{type:"L",x:S+R,y:C},{type:"Z"}],{fill:f}):v=new ke([{type:"M",x:I,y:S},{type:"L",x:I+B,y:S},{type:"L",x:I+B,y:S+R},{type:"L",x:I,y:S+R},{type:"Z"}],{fill:f}),r.push(v)})},render:(A,e)=>{const{effects:t,computedStyle:i}=e;t?t.forEach(s=>{A.save();const[n,o,a,l,h,c]=Rn(e,s).transpose().elements;A.transform(n,l,o,h,a,c),r.forEach(f=>{qi({ctx:A,path:f,fontSize:i.fontSize,...s})}),A.restore()}):r.forEach(s=>{qi({ctx:A,path:s,fontSize:i.fontSize})})}}}const Pn=Za();class wl extends Bd{constructor(e={}){super();u(this,"debug");u(this,"content");u(this,"style");u(this,"effects");u(this,"measureDom");u(this,"needsUpdate",!0);u(this,"computedStyle",{...Pn});u(this,"paragraphs",[]);u(this,"lineBox",new ue);u(this,"rawGlyphBox",new ue);u(this,"glyphBox",new ue);u(this,"pathBox",new ue);u(this,"boundingBox",new ue);u(this,"measurer",new Sn);u(this,"plugins",new Map);u(this,"fonts");this.debug=e.debug??!1,this.content=e.content??"",this.style=e.style??{},this.measureDom=e.measureDom,this.effects=e.effects,this.fonts=e.fonts,this.use(Ed()).use(yd()).use(Qd()).use(wd()).use(pd()).use(md()),this.updateParagraphs()}get fontSize(){return this.computedStyle.fontSize}get isVertical(){return this.computedStyle.writingMode.includes("vertical")}get characters(){return this.paragraphs.flatMap(e=>e.fragments.flatMap(t=>t.characters))}use(e){return this.plugins.set(e.name,e),this}forEachCharacter(e){return this.paragraphs.forEach((t,i)=>{t.fragments.forEach((s,n)=>{s.characters.forEach((o,a)=>{e(o,{paragraphIndex:i,fragmentIndex:n,characterIndex:a})})})}),this}async load(){await Promise.all(Array.from(this.plugins.values()).map(e=>{var t;return(t=e.load)==null?void 0:t.call(e,this)}))}updateParagraphs(){this.computedStyle={...Pn,...this.style};let{content:e,computedStyle:t}=this;const i=[];if(typeof e=="string"){const s=new Xi({},t);s.addFragment(e),i.push(s)}else{e=Array.isArray(e)?e:[e];for(const s of e)if(typeof s=="string"){const n=new Xi({},t);n.addFragment(s),i.push(n)}else if(Array.isArray(s)){const n=new Xi({},t);s.forEach(o=>{if(typeof o=="string")n.addFragment(o);else{const{content:a,...l}=o;a!==void 0&&n.addFragment(a,l)}}),i.push(n)}else if("fragments"in s){const{fragments:n,...o}=s,a=new Xi(o,t);n.forEach(l=>{const{content:h,...c}=l;h!==void 0&&a.addFragment(h,c)}),i.push(a)}else if("content"in s){const{content:n,...o}=s;if(n!==void 0){const a=new Xi(o,t);a.addFragment(n),i.push(a)}}}return this.paragraphs=i,this}measure(e=this.measureDom){const t={paragraphs:this.paragraphs,lineBox:this.lineBox,rawGlyphBox:this.rawGlyphBox,glyphBox:this.glyphBox,pathBox:this.pathBox,boundingBox:this.boundingBox};this.updateParagraphs();const i=this.measurer.measure(this.paragraphs,this.computedStyle,e);this.paragraphs=i.paragraphs,this.lineBox=i.boundingBox,this.characters.forEach(s=>{s.update(this.fonts)}),this.rawGlyphBox=this.getGlyphBox(),Array.from(this.plugins.values()).sort((s,n)=>(s.updateOrder??0)-(n.updateOrder??0)).forEach(s=>{var n;(n=s.update)==null||n.call(s,this)}),this.glyphBox=this.getGlyphBox(),this.updatePathBox().updateBoundingBox();for(const s in t)i[s]=this[s],this[s]=t[s];return this.emit("measure",{text:this,result:i}),i}getGlyphBox(){const e=G.MAX,t=G.MIN;return this.characters.forEach(i=>{if(!i.getGlyphMinMax(e,t)){const{inlineBox:s}=i,n=new G(s.left,s.top),o=new G(s.left+s.width,s.top+s.height);e.min(n,o),t.max(n,o)}}),new ue(e.x,e.y,t.x-e.x,t.y-e.y)}updatePathBox(){return this.pathBox=ue.from(this.glyphBox,...Array.from(this.plugins.values()).map(e=>e.getBoundingBox?e.getBoundingBox(this):new Ir(e.paths??[]).getBoundingBox()).filter(Boolean)),this}updateBoundingBox(){const{lineBox:e,rawGlyphBox:t,pathBox:i}=this,s=Math.min(i.left,i.left+e.left-t.left),n=Math.min(i.top,i.top+e.top-t.top),o=Math.max(i.right,i.right+e.right-t.right),a=Math.max(i.bottom,i.bottom+e.bottom-t.bottom);return this.boundingBox=new ue(s,n,o-s,a-n),this}requestUpdate(){return this.needsUpdate=!0,this}update(){const e=this.measure();for(const t in e)this[t]=e[t];return this.emit("update",{text:this}),this.needsUpdate=!1,this}render(e){const{view:t,pixelRatio:i=2}=e,s=t.getContext("2d");s&&(this.needsUpdate&&this.update(),ad(s,i,this.boundingBox),ld(s,this),Array.from(this.plugins.values()).sort((n,o)=>(n.renderOrder??0)-(o.renderOrder??0)).forEach(n=>{var o;if(n.render)(o=n.render)==null||o.call(n,s,this);else if(n.paths){const a=this.computedStyle;n.paths.forEach(l=>{qi({ctx:s,path:l,fontSize:a.fontSize})})}}),this.emit("render",{text:this,view:t,pixelRatio:i}))}}var vd=Object.defineProperty,Gr=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&vd(A,e,i),i};class ti extends Ht{constructor(e,t){super();u(this,"effects");u(this,"measureDom");u(this,"fonts");u(this,"texture",new LA);u(this,"baseText",new wl);u(this,"measureResult");this.parent=e,this.setProperties(t)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"content":case"effects":case"measureDom":case"fonts":case"split":this.parent.requestRedraw();break}}_updateText(){this.baseText.style={justifyContent:"center",alignItems:"center",textAlign:"center",...this.parent.style.toJSON()},this.baseText.content=this.content??"",this.baseText.effects=this.effects,this.baseText.fonts=this.fonts,this.baseText.measureDom=this.measureDom,this.baseText.requestUpdate()}measure(){return this._updateText(),this.baseText.measure()}updateMeasure(){this.measureResult=this.measure();const e=this.measureResult.boundingBox.width,t=this.measureResult.boundingBox.height,{left:i,top:s,width:n,height:o=t}=this.parent.style;return this.parent.position.x=i+Math.min(0,((n||e)-e)/2),this.parent.position.y=s+Math.min(0,((o||t)-t)/2),this.parent.size.width=e,this.parent.size.height=t,this}canDraw(){var e;return!!(this.content&&((e=this.texture)!=null&&e.valid))}draw(){const e=this.parent.context;this.baseText.render({pixelRatio:this.texture.pixelRatio,view:this.texture.source}),this.texture.requestUpload();const{width:t,height:i}=this.parent.size;e.fillStyle=this.texture,e.textureTransform=new dt().scale(1/t,1/i),e.fill()}}Gr([M({default:""})],ti.prototype,"content"),Gr([M()],ti.prototype,"effects"),Gr([Be()],ti.prototype,"measureDom"),Gr([Be()],ti.prototype,"fonts");var _d=Object.getOwnPropertyDescriptor,Dd=(r,A,e,t)=>{for(var i=t>1?void 0:t?_d(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.Node2D=class extends g.CanvasItem{constructor(e,t=[]){super();u(this,"position",new yt);u(this,"rotation",0);u(this,"scale",new yt(1,1));u(this,"skew",new yt);u(this,"transform",new dt);u(this,"globalPosition",new yt);u(this,"globalRotation",0);u(this,"globalScale",new yt);u(this,"globalSkew",new yt);u(this,"globalTransform",new dt);u(this,"_parentTransformDirtyId");this.setProperties(e).append(t)}_updateTransform(){this.transform.identity().scale(this.scale.x,this.scale.y).skew(this.skew.x,this.skew.y).rotate(this.rotation).translate(this.position.x,this.position.y)}_updateGlobalTransform(){const e=this.getParent();e!=null&&e.globalTransform?(this._parentTransformDirtyId=e.globalTransform.dirtyId,this.globalScale.set(e.globalScale.x*this.scale.x,e.globalScale.y*this.scale.y),this.globalRotation=e.globalRotation+this.rotation,e.globalTransform.multiply(this.transform,this.globalTransform)):(this.globalScale=this.scale.clone(),this.globalRotation=this.rotation,this.globalTransform=this.transform.clone());const[t,i,s,n,o,a]=this.globalTransform.toArray();this.globalPosition.set(s,a),this.globalSkew.x=Math.atan2(i,t)-this.globalRotation,this.globalSkew.y=Math.atan2(n,o)-this.globalRotation,this.requestRelayout()}_transformVertices(e){const[t,i,s,n,o,a]=this.globalTransform.toArray(),l=e.slice();for(let h=e.length,c=0;c<h;c+=2){const f=e[c],d=e[c+1];l[c]=t*f+i*d+s,l[c+1]=n*f+o*d+a}return l}_relayout(e){return this._updateTransform(),this._updateGlobalTransform(),super._relayout(e).map(t=>({...t,vertices:this._transformVertices(t.vertices)}))}_process(e){var i;super._process(e);const t=this.getParent();this._parentTransformDirtyId!==((i=t==null?void 0:t.globalTransform)==null?void 0:i.dirtyId)&&this.requestRelayout()}},g.Node2D=Dd([ee("Node2D")],g.Node2D);var bd=Object.getOwnPropertyDescriptor,xd=(r,A,e,t)=>{for(var i=t>1?void 0:t?bd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.BaseElement2D=class extends g.Node2D{constructor(e,t=[]){super();u(this,"size",new yt);u(this,"_text",new ti(this));u(this,"_geometry",new YA(this));u(this,"_fill",new rA(this));u(this,"_outline",new wA(this));u(this,"_shadow",new WA(this));this._updateStyleProperty=this._updateStyleProperty.bind(this),this.style=new ki,this.setProperties(e).append(t)}get style(){return this._style}set style(e){var i;const t=(...s)=>{this.emit("updateStyleProperty",...s),this._updateStyleProperty(s[0],s[1],s[2],s[3])};e.on("updateProperty",t),(i=this._style)==null||i.off("updateProperty",t),this._style=e}get text(){return this._text}set text(e){this._text.setProperties(e)}get geometry(){return this._geometry}set geometry(e){this._geometry.setProperties(e)}get fill(){return this._fill}set fill(e){this._fill.setProperties(e)}get outline(){return this._outline}set outline(e){this._outline.setProperties(e)}get shadow(){return this._shadow}set shadow(e){this._shadow.setProperties(e)}setProperties(e){if(e){const{style:t,text:i,geometry:s,fill:n,outline:o,shadow:a,...l}=e;t&&this.style.setProperties(t),i&&this.text.setProperties(i),s&&this.geometry.setProperties(s),n&&this.fill.setProperties(n),o&&this.outline.setProperties(o),a&&this.shadow.setProperties(a),super.setProperties(l)}return this}_updateStyleProperty(e,t,i,s){switch(e){case"width":case"height":this.mask instanceof g.BaseElement2D&&(this.mask.size.x=this.size.x,this.mask.size.y=this.size.y);break}switch(e){case"rotate":this.rotation=this.style.rotate*xo,this.requestRelayout();break;case"scaleX":this.scale.x=this.style.scaleX,this.requestRelayout();break;case"scaleY":this.scale.y=this.style.scaleY,this.requestRelayout();break;case"skewX":this.skew.x=this.style.skewX,this.requestRelayout();break;case"skewY":this.skew.y=this.style.skewY,this.requestRelayout();break;case"transform":case"transformOrigin":this.requestRelayout();break;case"opacity":this.opacity=this.style.opacity;break;case"visibility":this.visible=this.style.visibility==="visible";break;case"filter":this.requestRepaint();break;case"maskImage":this._updateMaskImage();break;case"borderRadius":this.requestRedraw();break;case"backgroundColor":this.fill.color=this.style.backgroundColor;break;case"backgroundImage":this.fill.image=this.style.backgroundImage;break;case"borderStyle":case"outlineStyle":this.outline.style=t;break;case"borderWidth":case"outlineWidth":this.outline.width=t;break;case"borderColor":case"outlineColor":this.outline.color=t;break}}_updateMaskImage(){const e="__$style.maskImage",t=this.style.maskImage;if(t&&t!=="none"){const i=this.getNode(e);i?i.src=t:this.appendChild(new g.MaskEffect({name:e,src:t}),"back")}else{const i=this.getNode(e);i&&this.removeChild(i)}}_updateTransform(){const{width:e,height:t}=this.size,[i,s]=jo(this.style.transformOrigin),n=i*e,o=s*t;this.transform.identity().translate(-n,-o).scale(this.scale.x,this.scale.y).skew(this.skew.x,this.skew.y).rotate(this.rotation),Xo(this.style.transform,e,t,this.transform),this.transform.translate(n+this.position.x,o+this.position.y)}_updateGlobalTransform(){super._updateGlobalTransform(),this._updateOverflow()}getRect(){const{width:e,height:t}=this.size,i=0,s=0,n=i+e,o=s+t,[a,l,h,c,f,d]=this.globalTransform.toArray(),I=[[i,s],[i,o],[n,s],[n,o]].map(v=>[a*v[0]+l*v[1]+h,c*v[0]+f*v[1]+d]),C=I.map(v=>v[0]),B=I.map(v=>v[1]),P=Math.min(...C),S=Math.max(...C),_=Math.min(...B),R=Math.max(...B);return new Ms(P,_,S-P,R-_)}_updateOverflow(){if(this.style.overflow==="hidden"){const e=this.getRect();this.mask={x:e.x,y:e.y,width:e.width,height:e.height}}else this.mask=void 0}_draw(){var e,t,i;super._draw(),this.text.canDraw()&&this.text.updateMeasure(),this.fill.canDraw()&&((e=this._tree)==null||e.log(this.name,"draw fill"),this.geometry.draw(),this.fill.draw()),this.outline.canDraw()&&((t=this._tree)==null||t.log(this.name,"draw outline"),this.geometry.draw(),this.outline.draw()),this.text.canDraw()&&((i=this._tree)==null||i.log(this.name,"draw text"),this.geometry.drawRect(),this.text.draw()),this._drawContent()}_drawContent(){}_repaint(e){const t=qo(this.style.filter);return super._repaint(e).map(i=>({...i,colorMatrix:t.toMatrix4().toArray(!0),colorMatrixOffset:t.toVector4().toArray()}))}canPointerEvents(){return this.style.pointerEvents!=="none"}input(e,t){for(let i=this._children.length-1;i>=0;i--)this._children[i].input(e,t);this.isVisibleInTree()&&this._input(e,t)}_pointerInput(e,t){const{width:i,height:s}=this.size;return e.x>=0&&e.x<i&&e.y>=0&&e.y<s}_input(e,t){switch(t){case"pointerdown":case"pointermove":case"pointerup":{if(this.canPointerEvents()){const{screenX:i,screenY:s}=e;if(i&&s){const[n,o]=this.globalTransform.inverse().applyToPoint(i,s);this._pointerInput({x:n,y:o},t)&&(e.target||(e.target=this),this.emit(t,e))}}break}}}toJSON(){const e=super.toJSON();return{...e,props:{style:this.style.toJSON(),text:this.text.toJSON(),geometry:this.geometry.toJSON(),fill:this.fill.toJSON(),outline:this.outline.toJSON(),shadow:this.shadow.toJSON(),...e.props}}}},g.BaseElement2D=xd([ee("BaseElement2D")],g.BaseElement2D);class Un extends ki{constructor(A){super(),this.setProperties(A)}}const vl={left:0,top:0,width:0,height:0};for(const r in vl)Bi(Un,r,{default:vl[r]});var Sd=Object.getOwnPropertyDescriptor,Md=(r,A,e,t)=>{for(var i=t>1?void 0:t?Sd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.Element2D=class extends g.BaseElement2D{get style(){return this._style}set style(A){var t;const e=(...i)=>{this.emit("updateStyleProperty",...i),this._updateStyleProperty(i[0],i[1],i[2],i[3])};A.on("updateProperty",e),(t=this._style)==null||t.off("updateProperty",e),this._style=A}constructor(A,e=[]){super(),this.style=new Un,this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"left":this.position.x=Number(e),this.requestRelayout();break;case"top":this.position.y=Number(e),this.requestRelayout();break;case"width":this.size.width=Number(e),this.requestRedraw();break;case"height":this.size.height=Number(e),this.requestRedraw();break}}},g.Element2D=Md([ee("Element2D")],g.Element2D);var Rd=(()=>{var r=typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:et&&et.tagName.toUpperCase()==="SCRIPT"&&et.src||new URL("index.js",document.baseURI).href;return function(A){A=A||{};var e;e||(e=typeof A<"u"?A:{});var t,i;e.ready=new Promise(function(E,p){t=E,i=p});var s=Object.assign({},e),n="";typeof document<"u"&&document.currentScript&&(n=document.currentScript.src),r&&(n=r),n.indexOf("blob:")!==0?n=n.substr(0,n.replace(/[?#].*/,"").lastIndexOf("/")+1):n="";var o=e.print||console.log.bind(console),a=e.printErr||console.warn.bind(console);Object.assign(e,s),s=null;var l;e.wasmBinary&&(l=e.wasmBinary),e.noExitRuntime,typeof WebAssembly!="object"&&k("no native wasm support detected");var h,c=!1;function f(E,p,Q){Q=p+Q;for(var m="";!(p>=Q);){var b=E[p++];if(!b)break;if(b&128){var U=E[p++]&63;if((b&224)==192)m+=String.fromCharCode((b&31)<<6|U);else{var N=E[p++]&63;b=(b&240)==224?(b&15)<<12|U<<6|N:(b&7)<<18|U<<12|N<<6|E[p++]&63,65536>b?m+=String.fromCharCode(b):(b-=65536,m+=String.fromCharCode(55296|b>>10,56320|b&1023))}}else m+=String.fromCharCode(b)}return m}var d,I,C,B,P,S,_,R,v;function w(){var E=h.buffer;d=E,e.HEAP8=I=new Int8Array(E),e.HEAP16=B=new Int16Array(E),e.HEAP32=S=new Int32Array(E),e.HEAPU8=C=new Uint8Array(E),e.HEAPU16=P=new Uint16Array(E),e.HEAPU32=_=new Uint32Array(E),e.HEAPF32=R=new Float32Array(E),e.HEAPF64=v=new Float64Array(E)}var D,x=[],L=[],Z=[];function Y(){var E=e.preRun.shift();x.unshift(E)}var T=0,X=null;function k(E){throw e.onAbort&&e.onAbort(E),E="Aborted("+E+")",a(E),c=!0,E=new WebAssembly.RuntimeError(E+". Build with -sASSERTIONS for more info."),i(E),E}function j(E){return E.startsWith("data:application/octet-stream;base64,")}var te;if(te="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!j(te)){var J=te;te=e.locateFile?e.locateFile(J,n):n+J}function H(){var E=te;try{if(E==te&&l)return new Uint8Array(l);if(j(E))try{var p=EB(E.slice(37)),Q=new Uint8Array(p.length);for(E=0;E<p.length;++E)Q[E]=p.charCodeAt(E);var m=Q}catch{throw Error("Converting base64 string to bytes failed.")}else m=void 0;var b=m;if(b)return b;throw"both async and sync fetching of the wasm failed"}catch(U){k(U)}}function ne(){return l||typeof fetch!="function"?Promise.resolve().then(function(){return H()}):fetch(te,{credentials:"same-origin"}).then(function(E){if(!E.ok)throw"failed to load wasm binary file at '"+te+"'";return E.arrayBuffer()}).catch(function(){return H()})}function q(E){for(;0<E.length;)E.shift()(e)}function W(E){if(E===void 0)return"_unknown";E=E.replace(/[^a-zA-Z0-9_]/g,"$");var p=E.charCodeAt(0);return 48<=p&&57>=p?"_"+E:E}function oe(E,p){return E=W(E),function(){return p.apply(this,arguments)}}var Ae=[{},{value:void 0},{value:null},{value:!0},{value:!1}],ae=[];function ie(E){var p=Error,Q=oe(E,function(m){this.name=E,this.message=m,m=Error(m).stack,m!==void 0&&(this.stack=this.toString()+`
863
- `+m.replace(/^Error(:[^\n]*)?\n/,""))});return Q.prototype=Object.create(p.prototype),Q.prototype.constructor=Q,Q.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},Q}var le=void 0;function V(E){throw new le(E)}var Ie=E=>(E||V("Cannot use deleted val. handle = "+E),Ae[E].value),nt=E=>{switch(E){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var p=ae.length?ae.pop():Ae.length;return Ae[p]={ga:1,value:E},p}},ot=void 0,Oe=void 0;function he(E){for(var p="";C[E];)p+=Oe[C[E++]];return p}var me=[];function He(){for(;me.length;){var E=me.pop();E.M.$=!1,E.delete()}}var We=void 0,be={};function $e(E,p){for(p===void 0&&V("ptr should not be undefined");E.R;)p=E.ba(p),E=E.R;return p}var Tt={};function is(E){E=gh(E);var p=he(E);return $t(E),p}function Gn(E,p){var Q=Tt[E];return Q===void 0&&V(p+" has unknown type "+is(E)),Q}function rs(){}var On=!1;function ih(E){--E.count.value,E.count.value===0&&(E.T?E.U.W(E.T):E.P.N.W(E.O))}function rh(E,p,Q){return p===Q?E:Q.R===void 0?null:(E=rh(E,p,Q.R),E===null?null:Q.na(E))}var sh={};function ZI(E,p){return p=$e(E,p),be[p]}var nh=void 0;function ss(E){throw new nh(E)}function ns(E,p){return p.P&&p.O||ss("makeClassHandle requires ptr and ptrType"),!!p.U!=!!p.T&&ss("Both smartPtrType and smartPtr must be specified"),p.count={value:1},ci(Object.create(E,{M:{value:p}}))}function ci(E){return typeof FinalizationRegistry>"u"?(ci=p=>p,E):(On=new FinalizationRegistry(p=>{ih(p.M)}),ci=p=>{var Q=p.M;return Q.T&&On.register(p,{M:Q},p),p},rs=p=>{On.unregister(p)},ci(E))}var os={};function Hn(E){for(;E.length;){var p=E.pop();E.pop()(p)}}function tr(E){return this.fromWireType(S[E>>2])}var ui={},as={};function BA(E,p,Q){function m(F){F=Q(F),F.length!==E.length&&ss("Mismatched type converter count");for(var K=0;K<E.length;++K)jt(E[K],F[K])}E.forEach(function(F){as[F]=p});var b=Array(p.length),U=[],N=0;p.forEach((F,K)=>{Tt.hasOwnProperty(F)?b[K]=Tt[F]:(U.push(F),ui.hasOwnProperty(F)||(ui[F]=[]),ui[F].push(()=>{b[K]=Tt[F],++N,N===U.length&&m(b)}))}),U.length===0&&m(b)}function Jn(E){switch(E){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+E)}}function jt(E,p,Q={}){if(!("argPackAdvance"in p))throw new TypeError("registerType registeredInstance requires argPackAdvance");var m=p.name;if(E||V('type "'+m+'" must have a positive integer typeid pointer'),Tt.hasOwnProperty(E)){if(Q.ua)return;V("Cannot register type '"+m+"' twice")}Tt[E]=p,delete as[E],ui.hasOwnProperty(E)&&(p=ui[E],delete ui[E],p.forEach(b=>b()))}function Kn(E){V(E.M.P.N.name+" instance already deleted")}function EA(){}function Yn(E,p,Q){if(E[p].S===void 0){var m=E[p];E[p]=function(){return E[p].S.hasOwnProperty(arguments.length)||V("Function '"+Q+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+E[p].S+")!"),E[p].S[arguments.length].apply(this,arguments)},E[p].S=[],E[p].S[m.Z]=m}}function $I(E,p){e.hasOwnProperty(E)?(V("Cannot register public name '"+E+"' twice"),Yn(e,E,E),e.hasOwnProperty(void 0)&&V("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),e[E].S[void 0]=p):e[E]=p}function eB(E,p,Q,m,b,U,N,F){this.name=E,this.constructor=p,this.X=Q,this.W=m,this.R=b,this.pa=U,this.ba=N,this.na=F,this.ja=[]}function Wn(E,p,Q){for(;p!==Q;)p.ba||V("Expected null or instance of "+Q.name+", got an instance of "+p.name),E=p.ba(E),p=p.R;return E}function tB(E,p){return p===null?(this.ea&&V("null is not a valid "+this.name),0):(p.M||V('Cannot pass "'+Xn(p)+'" as a '+this.name),p.M.O||V("Cannot pass deleted object as a pointer of type "+this.name),Wn(p.M.O,p.M.P.N,this.N))}function AB(E,p){if(p===null){if(this.ea&&V("null is not a valid "+this.name),this.da){var Q=this.fa();return E!==null&&E.push(this.W,Q),Q}return 0}if(p.M||V('Cannot pass "'+Xn(p)+'" as a '+this.name),p.M.O||V("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&p.M.P.ca&&V("Cannot convert argument of type "+(p.M.U?p.M.U.name:p.M.P.name)+" to parameter type "+this.name),Q=Wn(p.M.O,p.M.P.N,this.N),this.da)switch(p.M.T===void 0&&V("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:p.M.U===this?Q=p.M.T:V("Cannot convert argument of type "+(p.M.U?p.M.U.name:p.M.P.name)+" to parameter type "+this.name);break;case 1:Q=p.M.T;break;case 2:if(p.M.U===this)Q=p.M.T;else{var m=p.clone();Q=this.xa(Q,nt(function(){m.delete()})),E!==null&&E.push(this.W,Q)}break;default:V("Unsupporting sharing policy")}return Q}function iB(E,p){return p===null?(this.ea&&V("null is not a valid "+this.name),0):(p.M||V('Cannot pass "'+Xn(p)+'" as a '+this.name),p.M.O||V("Cannot pass deleted object as a pointer of type "+this.name),p.M.P.ca&&V("Cannot convert argument of type "+p.M.P.name+" to parameter type "+this.name),Wn(p.M.O,p.M.P.N,this.N))}function Zt(E,p,Q,m){this.name=E,this.N=p,this.ea=Q,this.ca=m,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,p.R!==void 0?this.toWireType=AB:(this.toWireType=m?tB:iB,this.V=null)}function rB(E,p){e.hasOwnProperty(E)||ss("Replacing nonexistant public symbol"),e[E]=p,e[E].Z=void 0}function sB(E,p){var Q=[];return function(){if(Q.length=0,Object.assign(Q,arguments),E.includes("j")){var m=e["dynCall_"+E];m=Q&&Q.length?m.apply(null,[p].concat(Q)):m.call(null,p)}else m=D.get(p).apply(null,Q);return m}}function vt(E,p){E=he(E);var Q=E.includes("j")?sB(E,p):D.get(p);return typeof Q!="function"&&V("unknown function pointer with signature "+E+": "+p),Q}var oh=void 0;function ls(E,p){function Q(U){b[U]||Tt[U]||(as[U]?as[U].forEach(Q):(m.push(U),b[U]=!0))}var m=[],b={};throw p.forEach(Q),new oh(E+": "+m.map(is).join([", "]))}function zn(E,p,Q,m,b){var U=p.length;2>U&&V("argTypes array size mismatch! Must at least get return value and 'this' types!");var N=p[1]!==null&&Q!==null,F=!1;for(Q=1;Q<p.length;++Q)if(p[Q]!==null&&p[Q].V===void 0){F=!0;break}var K=p[0].name!=="void",O=U-2,z=Array(O),$=[],ge=[];return function(){if(arguments.length!==O&&V("function "+E+" called with "+arguments.length+" arguments, expected "+O+" args!"),ge.length=0,$.length=N?2:1,$[0]=b,N){var Re=p[1].toWireType(ge,this);$[1]=Re}for(var fe=0;fe<O;++fe)z[fe]=p[fe+2].toWireType(ge,arguments[fe]),$.push(z[fe]);if(fe=m.apply(null,$),F)Hn(ge);else for(var ut=N?1:2;ut<p.length;ut++){var _t=ut===1?Re:z[ut-2];p[ut].V!==null&&p[ut].V(_t)}return Re=K?p[0].fromWireType(fe):void 0,Re}}function Vn(E,p){for(var Q=[],m=0;m<E;m++)Q.push(_[p+4*m>>2]);return Q}function qn(E){4<E&&--Ae[E].ga===0&&(Ae[E]=void 0,ae.push(E))}function Xn(E){if(E===null)return"null";var p=typeof E;return p==="object"||p==="array"||p==="function"?E.toString():""+E}function nB(E,p){switch(p){case 2:return function(Q){return this.fromWireType(R[Q>>2])};case 3:return function(Q){return this.fromWireType(v[Q>>3])};default:throw new TypeError("Unknown float type: "+E)}}function oB(E,p,Q){switch(p){case 0:return Q?function(m){return I[m]}:function(m){return C[m]};case 1:return Q?function(m){return B[m>>1]}:function(m){return P[m>>1]};case 2:return Q?function(m){return S[m>>2]}:function(m){return _[m>>2]};default:throw new TypeError("Unknown integer type: "+E)}}function aB(E,p){for(var Q="",m=0;!(m>=p/2);++m){var b=B[E+2*m>>1];if(b==0)break;Q+=String.fromCharCode(b)}return Q}function lB(E,p,Q){if(Q===void 0&&(Q=2147483647),2>Q)return 0;Q-=2;var m=p;Q=Q<2*E.length?Q/2:E.length;for(var b=0;b<Q;++b)B[p>>1]=E.charCodeAt(b),p+=2;return B[p>>1]=0,p-m}function hB(E){return 2*E.length}function gB(E,p){for(var Q=0,m="";!(Q>=p/4);){var b=S[E+4*Q>>2];if(b==0)break;++Q,65536<=b?(b-=65536,m+=String.fromCharCode(55296|b>>10,56320|b&1023)):m+=String.fromCharCode(b)}return m}function cB(E,p,Q){if(Q===void 0&&(Q=2147483647),4>Q)return 0;var m=p;Q=m+Q-4;for(var b=0;b<E.length;++b){var U=E.charCodeAt(b);if(55296<=U&&57343>=U){var N=E.charCodeAt(++b);U=65536+((U&1023)<<10)|N&1023}if(S[p>>2]=U,p+=4,p+4>Q)break}return S[p>>2]=0,p-m}function uB(E){for(var p=0,Q=0;Q<E.length;++Q){var m=E.charCodeAt(Q);55296<=m&&57343>=m&&++Q,p+=4}return p}var fB={};function ah(E){var p=fB[E];return p===void 0?he(E):p}var hs=[];function dB(E){var p=hs.length;return hs.push(E),p}function IB(E,p){for(var Q=Array(E),m=0;m<E;++m)Q[m]=Gn(_[p+4*m>>2],"parameter "+m);return Q}var lh=[],BB=[null,[],[]];le=e.BindingError=ie("BindingError"),e.count_emval_handles=function(){for(var E=0,p=5;p<Ae.length;++p)Ae[p]!==void 0&&++E;return E},e.get_first_emval=function(){for(var E=5;E<Ae.length;++E)if(Ae[E]!==void 0)return Ae[E];return null},ot=e.PureVirtualError=ie("PureVirtualError");for(var hh=Array(256),gs=0;256>gs;++gs)hh[gs]=String.fromCharCode(gs);Oe=hh,e.getInheritedInstanceCount=function(){return Object.keys(be).length},e.getLiveInheritedInstances=function(){var E=[],p;for(p in be)be.hasOwnProperty(p)&&E.push(be[p]);return E},e.flushPendingDeletes=He,e.setDelayFunction=function(E){We=E,me.length&&We&&We(He)},nh=e.InternalError=ie("InternalError"),EA.prototype.isAliasOf=function(E){if(!(this instanceof EA&&E instanceof EA))return!1;var p=this.M.P.N,Q=this.M.O,m=E.M.P.N;for(E=E.M.O;p.R;)Q=p.ba(Q),p=p.R;for(;m.R;)E=m.ba(E),m=m.R;return p===m&&Q===E},EA.prototype.clone=function(){if(this.M.O||Kn(this),this.M.aa)return this.M.count.value+=1,this;var E=ci,p=Object,Q=p.create,m=Object.getPrototypeOf(this),b=this.M;return E=E(Q.call(p,m,{M:{value:{count:b.count,$:b.$,aa:b.aa,O:b.O,P:b.P,T:b.T,U:b.U}}})),E.M.count.value+=1,E.M.$=!1,E},EA.prototype.delete=function(){this.M.O||Kn(this),this.M.$&&!this.M.aa&&V("Object already scheduled for deletion"),rs(this),ih(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},EA.prototype.isDeleted=function(){return!this.M.O},EA.prototype.deleteLater=function(){return this.M.O||Kn(this),this.M.$&&!this.M.aa&&V("Object already scheduled for deletion"),me.push(this),me.length===1&&We&&We(He),this.M.$=!0,this},Zt.prototype.qa=function(E){return this.ka&&(E=this.ka(E)),E},Zt.prototype.ha=function(E){this.W&&this.W(E)},Zt.prototype.argPackAdvance=8,Zt.prototype.readValueFromPointer=tr,Zt.prototype.deleteObject=function(E){E!==null&&E.delete()},Zt.prototype.fromWireType=function(E){function p(){return this.da?ns(this.N.X,{P:this.wa,O:Q,U:this,T:E}):ns(this.N.X,{P:this,O:E})}var Q=this.qa(E);if(!Q)return this.ha(E),null;var m=ZI(this.N,Q);if(m!==void 0)return m.M.count.value===0?(m.M.O=Q,m.M.T=E,m.clone()):(m=m.clone(),this.ha(E),m);if(m=this.N.pa(Q),m=sh[m],!m)return p.call(this);m=this.ca?m.la:m.pointerType;var b=rh(Q,this.N,m.N);return b===null?p.call(this):this.da?ns(m.N.X,{P:m,O:b,U:this,T:E}):ns(m.N.X,{P:m,O:b})},oh=e.UnboundTypeError=ie("UnboundTypeError");var EB=typeof atob=="function"?atob:function(E){var p="",Q=0;E=E.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),U="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),N="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++));m=m<<2|b>>4,b=(b&15)<<4|U>>2;var F=(U&3)<<6|N;p+=String.fromCharCode(m),U!==64&&(p+=String.fromCharCode(b)),N!==64&&(p+=String.fromCharCode(F))}while(Q<E.length);return p},pB={l:function(E,p,Q,m){k("Assertion failed: "+(E?f(C,E):"")+", at: "+[p?p?f(C,p):"":"unknown filename",Q,m?m?f(C,m):"":"unknown function"])},q:function(E,p,Q){E=he(E),p=Gn(p,"wrapper"),Q=Ie(Q);var m=[].slice,b=p.N,U=b.X,N=b.R.X,F=b.R.constructor;E=oe(E,function(){b.R.ja.forEach((function(O){if(this[O]===N[O])throw new ot("Pure virtual function "+O+" must be implemented in JavaScript")}).bind(this)),Object.defineProperty(this,"__parent",{value:U}),this.__construct.apply(this,m.call(arguments))}),U.__construct=function(){this===U&&V("Pass correct 'this' to __construct");var O=F.implement.apply(void 0,[this].concat(m.call(arguments)));rs(O);var z=O.M;O.notifyOnDestruction(),z.aa=!0,Object.defineProperties(this,{M:{value:z}}),ci(this),O=z.O,O=$e(b,O),be.hasOwnProperty(O)?V("Tried to register registered instance: "+O):be[O]=this},U.__destruct=function(){this===U&&V("Pass correct 'this' to __destruct"),rs(this);var O=this.M.O;O=$e(b,O),be.hasOwnProperty(O)?delete be[O]:V("Tried to unregister unregistered instance: "+O)},E.prototype=Object.create(U);for(var K in Q)E.prototype[K]=Q[K];return nt(E)},j:function(E){var p=os[E];delete os[E];var Q=p.fa,m=p.W,b=p.ia,U=b.map(N=>N.ta).concat(b.map(N=>N.za));BA([E],U,N=>{var F={};return b.forEach((K,O)=>{var z=N[O],$=K.ra,ge=K.sa,Re=N[O+b.length],fe=K.ya,ut=K.Aa;F[K.oa]={read:_t=>z.fromWireType($(ge,_t)),write:(_t,Ar)=>{var eA=[];fe(ut,_t,Re.toWireType(eA,Ar)),Hn(eA)}}}),[{name:p.name,fromWireType:function(K){var O={},z;for(z in F)O[z]=F[z].read(K);return m(K),O},toWireType:function(K,O){for(var z in F)if(!(z in O))throw new TypeError('Missing field: "'+z+'"');var $=Q();for(z in F)F[z].write($,O[z]);return K!==null&&K.push(m,$),$},argPackAdvance:8,readValueFromPointer:tr,V:m}]})},v:function(){},B:function(E,p,Q,m,b){var U=Jn(Q);p=he(p),jt(E,{name:p,fromWireType:function(N){return!!N},toWireType:function(N,F){return F?m:b},argPackAdvance:8,readValueFromPointer:function(N){if(Q===1)var F=I;else if(Q===2)F=B;else if(Q===4)F=S;else throw new TypeError("Unknown boolean type size: "+p);return this.fromWireType(F[N>>U])},V:null})},f:function(E,p,Q,m,b,U,N,F,K,O,z,$,ge){z=he(z),U=vt(b,U),F&&(F=vt(N,F)),O&&(O=vt(K,O)),ge=vt($,ge);var Re=W(z);$I(Re,function(){ls("Cannot construct "+z+" due to unbound types",[m])}),BA([E,p,Q],m?[m]:[],function(fe){if(fe=fe[0],m)var ut=fe.N,_t=ut.X;else _t=EA.prototype;fe=oe(Re,function(){if(Object.getPrototypeOf(this)!==Ar)throw new le("Use 'new' to construct "+z);if(eA.Y===void 0)throw new le(z+" has no accessible constructor");var fh=eA.Y[arguments.length];if(fh===void 0)throw new le("Tried to invoke ctor of "+z+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(eA.Y).toString()+") parameters instead!");return fh.apply(this,arguments)});var Ar=Object.create(_t,{constructor:{value:fe}});fe.prototype=Ar;var eA=new eB(z,fe,Ar,ge,ut,U,F,O);ut=new Zt(z,eA,!0,!1),_t=new Zt(z+"*",eA,!1,!1);var uh=new Zt(z+" const*",eA,!1,!0);return sh[E]={pointerType:_t,la:uh},rB(Re,fe),[ut,_t,uh]})},d:function(E,p,Q,m,b,U,N){var F=Vn(Q,m);p=he(p),U=vt(b,U),BA([],[E],function(K){function O(){ls("Cannot call "+z+" due to unbound types",F)}K=K[0];var z=K.name+"."+p;p.startsWith("@@")&&(p=Symbol[p.substring(2)]);var $=K.N.constructor;return $[p]===void 0?(O.Z=Q-1,$[p]=O):(Yn($,p,z),$[p].S[Q-1]=O),BA([],F,function(ge){return ge=zn(z,[ge[0],null].concat(ge.slice(1)),null,U,N),$[p].S===void 0?(ge.Z=Q-1,$[p]=ge):$[p].S[Q-1]=ge,[]}),[]})},p:function(E,p,Q,m,b,U){0<p||k();var N=Vn(p,Q);b=vt(m,b),BA([],[E],function(F){F=F[0];var K="constructor "+F.name;if(F.N.Y===void 0&&(F.N.Y=[]),F.N.Y[p-1]!==void 0)throw new le("Cannot register multiple constructors with identical number of parameters ("+(p-1)+") for class '"+F.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return F.N.Y[p-1]=()=>{ls("Cannot construct "+F.name+" due to unbound types",N)},BA([],N,function(O){return O.splice(1,0,null),F.N.Y[p-1]=zn(K,O,null,b,U),[]}),[]})},a:function(E,p,Q,m,b,U,N,F){var K=Vn(Q,m);p=he(p),U=vt(b,U),BA([],[E],function(O){function z(){ls("Cannot call "+$+" due to unbound types",K)}O=O[0];var $=O.name+"."+p;p.startsWith("@@")&&(p=Symbol[p.substring(2)]),F&&O.N.ja.push(p);var ge=O.N.X,Re=ge[p];return Re===void 0||Re.S===void 0&&Re.className!==O.name&&Re.Z===Q-2?(z.Z=Q-2,z.className=O.name,ge[p]=z):(Yn(ge,p,$),ge[p].S[Q-2]=z),BA([],K,function(fe){return fe=zn($,fe,O,U,N),ge[p].S===void 0?(fe.Z=Q-2,ge[p]=fe):ge[p].S[Q-2]=fe,[]}),[]})},A:function(E,p){p=he(p),jt(E,{name:p,fromWireType:function(Q){var m=Ie(Q);return qn(Q),m},toWireType:function(Q,m){return nt(m)},argPackAdvance:8,readValueFromPointer:tr,V:null})},n:function(E,p,Q){Q=Jn(Q),p=he(p),jt(E,{name:p,fromWireType:function(m){return m},toWireType:function(m,b){return b},argPackAdvance:8,readValueFromPointer:nB(p,Q),V:null})},e:function(E,p,Q,m,b){p=he(p),b===-1&&(b=4294967295),b=Jn(Q);var U=F=>F;if(m===0){var N=32-8*Q;U=F=>F<<N>>>N}Q=p.includes("unsigned")?function(F,K){return K>>>0}:function(F,K){return K},jt(E,{name:p,fromWireType:U,toWireType:Q,argPackAdvance:8,readValueFromPointer:oB(p,b,m!==0),V:null})},b:function(E,p,Q){function m(U){U>>=2;var N=_;return new b(d,N[U+1],N[U])}var b=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][p];Q=he(Q),jt(E,{name:Q,fromWireType:m,argPackAdvance:8,readValueFromPointer:m},{ua:!0})},o:function(E,p){p=he(p);var Q=p==="std::string";jt(E,{name:p,fromWireType:function(m){var b=_[m>>2],U=m+4;if(Q)for(var N=U,F=0;F<=b;++F){var K=U+F;if(F==b||C[K]==0){if(N=N?f(C,N,K-N):"",O===void 0)var O=N;else O+="\0",O+=N;N=K+1}}else{for(O=Array(b),F=0;F<b;++F)O[F]=String.fromCharCode(C[U+F]);O=O.join("")}return $t(m),O},toWireType:function(m,b){b instanceof ArrayBuffer&&(b=new Uint8Array(b));var U,N=typeof b=="string";if(N||b instanceof Uint8Array||b instanceof Uint8ClampedArray||b instanceof Int8Array||V("Cannot pass non-string to std::string"),Q&&N){var F=0;for(U=0;U<b.length;++U){var K=b.charCodeAt(U);127>=K?F++:2047>=K?F+=2:55296<=K&&57343>=K?(F+=4,++U):F+=3}U=F}else U=b.length;if(F=jn(4+U+1),K=F+4,_[F>>2]=U,Q&&N){if(N=K,K=U+1,U=C,0<K){K=N+K-1;for(var O=0;O<b.length;++O){var z=b.charCodeAt(O);if(55296<=z&&57343>=z){var $=b.charCodeAt(++O);z=65536+((z&1023)<<10)|$&1023}if(127>=z){if(N>=K)break;U[N++]=z}else{if(2047>=z){if(N+1>=K)break;U[N++]=192|z>>6}else{if(65535>=z){if(N+2>=K)break;U[N++]=224|z>>12}else{if(N+3>=K)break;U[N++]=240|z>>18,U[N++]=128|z>>12&63}U[N++]=128|z>>6&63}U[N++]=128|z&63}}U[N]=0}}else if(N)for(N=0;N<U;++N)O=b.charCodeAt(N),255<O&&($t(K),V("String has UTF-16 code units that do not fit in 8 bits")),C[K+N]=O;else for(N=0;N<U;++N)C[K+N]=b[N];return m!==null&&m.push($t,F),F},argPackAdvance:8,readValueFromPointer:tr,V:function(m){$t(m)}})},i:function(E,p,Q){if(Q=he(Q),p===2)var m=aB,b=lB,U=hB,N=()=>P,F=1;else p===4&&(m=gB,b=cB,U=uB,N=()=>_,F=2);jt(E,{name:Q,fromWireType:function(K){for(var O=_[K>>2],z=N(),$,ge=K+4,Re=0;Re<=O;++Re){var fe=K+4+Re*p;(Re==O||z[fe>>F]==0)&&(ge=m(ge,fe-ge),$===void 0?$=ge:($+="\0",$+=ge),ge=fe+p)}return $t(K),$},toWireType:function(K,O){typeof O!="string"&&V("Cannot pass non-string to C++ string type "+Q);var z=U(O),$=jn(4+z+p);return _[$>>2]=z>>F,b(O,$+4,z+p),K!==null&&K.push($t,$),$},argPackAdvance:8,readValueFromPointer:tr,V:function(K){$t(K)}})},k:function(E,p,Q,m,b,U){os[E]={name:he(p),fa:vt(Q,m),W:vt(b,U),ia:[]}},h:function(E,p,Q,m,b,U,N,F,K,O){os[E].ia.push({oa:he(p),ta:Q,ra:vt(m,b),sa:U,za:N,ya:vt(F,K),Aa:O})},C:function(E,p){p=he(p),jt(E,{va:!0,name:p,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(E,p,Q,m,b){E=hs[E],p=Ie(p),Q=ah(Q);var U=[];return _[m>>2]=nt(U),E(p,Q,U,b)},t:function(E,p,Q,m){E=hs[E],p=Ie(p),Q=ah(Q),E(p,Q,null,m)},g:qn,m:function(E,p){var Q=IB(E,p),m=Q[0];p=m.name+"_$"+Q.slice(1).map(function(N){return N.name}).join("_")+"$";var b=lh[p];if(b!==void 0)return b;var U=Array(E-1);return b=dB((N,F,K,O)=>{for(var z=0,$=0;$<E-1;++$)U[$]=Q[$+1].readValueFromPointer(O+z),z+=Q[$+1].argPackAdvance;for(N=N[F].apply(N,U),$=0;$<E-1;++$)Q[$+1].ma&&Q[$+1].ma(U[$]);if(!m.va)return m.toWireType(K,N)}),lh[p]=b},D:function(E){4<E&&(Ae[E].ga+=1)},r:function(E){var p=Ie(E);Hn(p),qn(E)},c:function(){k("")},x:function(E,p,Q){C.copyWithin(E,p,p+Q)},w:function(E){var p=C.length;if(E>>>=0,2147483648<E)return!1;for(var Q=1;4>=Q;Q*=2){var m=p*(1+.2/Q);m=Math.min(m,E+100663296);var b=Math;m=Math.max(E,m),b=b.min.call(b,2147483648,m+(65536-m%65536)%65536);e:{try{h.grow(b-d.byteLength+65535>>>16),w();var U=1;break e}catch{}U=void 0}if(U)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(E,p,Q,m){for(var b=0,U=0;U<Q;U++){var N=_[p>>2],F=_[p+4>>2];p+=8;for(var K=0;K<F;K++){var O=C[N+K],z=BB[E];O===0||O===10?((E===1?o:a)(f(z,0)),z.length=0):z.push(O)}b+=F}return _[m>>2]=b,0}};(function(){function E(b){e.asm=b.exports,h=e.asm.E,w(),D=e.asm.J,L.unshift(e.asm.F),T--,e.monitorRunDependencies&&e.monitorRunDependencies(T),T==0&&X&&(b=X,X=null,b())}function p(b){E(b.instance)}function Q(b){return ne().then(function(U){return WebAssembly.instantiate(U,m)}).then(function(U){return U}).then(b,function(U){a("failed to asynchronously prepare wasm: "+U),k(U)})}var m={a:pB};if(T++,e.monitorRunDependencies&&e.monitorRunDependencies(T),e.instantiateWasm)try{return e.instantiateWasm(m,E)}catch(b){a("Module.instantiateWasm callback failed with error: "+b),i(b)}return function(){return l||typeof WebAssembly.instantiateStreaming!="function"||j(te)||typeof fetch!="function"?Q(p):fetch(te,{credentials:"same-origin"}).then(function(b){return WebAssembly.instantiateStreaming(b,m).then(p,function(U){return a("wasm streaming compile failed: "+U),a("falling back to ArrayBuffer instantiation"),Q(p)})})}().catch(i),{}})(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.F).apply(null,arguments)};var gh=e.___getTypeName=function(){return(gh=e.___getTypeName=e.asm.G).apply(null,arguments)};e.__embind_initialize_bindings=function(){return(e.__embind_initialize_bindings=e.asm.H).apply(null,arguments)};var jn=e._malloc=function(){return(jn=e._malloc=e.asm.I).apply(null,arguments)},$t=e._free=function(){return($t=e._free=e.asm.K).apply(null,arguments)};e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.L).apply(null,arguments)};var cs;X=function E(){cs||ch(),cs||(X=E)};function ch(){function E(){if(!cs&&(cs=!0,e.calledRun=!0,!c)){if(q(L),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;){var p=e.postRun.shift();Z.unshift(p)}q(Z)}}if(!(0<T)){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)Y();q(x),0<T||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),E()},1)):E())}}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);0<e.preInit.length;)e.preInit.pop()();return ch(),A.ready}})();let Le=function(r){return r[r.Auto=0]="Auto",r[r.FlexStart=1]="FlexStart",r[r.Center=2]="Center",r[r.FlexEnd=3]="FlexEnd",r[r.Stretch=4]="Stretch",r[r.Baseline=5]="Baseline",r[r.SpaceBetween=6]="SpaceBetween",r[r.SpaceAround=7]="SpaceAround",r[r.SpaceEvenly=8]="SpaceEvenly",r}({}),Or=function(r){return r[r.BorderBox=0]="BorderBox",r[r.ContentBox=1]="ContentBox",r}({}),_l=function(r){return r[r.Width=0]="Width",r[r.Height=1]="Height",r}({}),gA=function(r){return r[r.Inherit=0]="Inherit",r[r.LTR=1]="LTR",r[r.RTL=2]="RTL",r}({}),Ai=function(r){return r[r.Flex=0]="Flex",r[r.None=1]="None",r[r.Contents=2]="Contents",r}({}),de=function(r){return r[r.Left=0]="Left",r[r.Top=1]="Top",r[r.Right=2]="Right",r[r.Bottom=3]="Bottom",r[r.Start=4]="Start",r[r.End=5]="End",r[r.Horizontal=6]="Horizontal",r[r.Vertical=7]="Vertical",r[r.All=8]="All",r}({}),ii=function(r){return r[r.None=0]="None",r[r.StretchFlexBasis=1]="StretchFlexBasis",r[r.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",r[r.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",r[r.All=2147483647]="All",r[r.Classic=2147483646]="Classic",r}({}),Pd=function(r){return r[r.WebFlexBasis=0]="WebFlexBasis",r}({}),cA=function(r){return r[r.Column=0]="Column",r[r.ColumnReverse=1]="ColumnReverse",r[r.Row=2]="Row",r[r.RowReverse=3]="RowReverse",r}({}),Hr=function(r){return r[r.Column=0]="Column",r[r.Row=1]="Row",r[r.All=2]="All",r}({}),pt=function(r){return r[r.FlexStart=0]="FlexStart",r[r.Center=1]="Center",r[r.FlexEnd=2]="FlexEnd",r[r.SpaceBetween=3]="SpaceBetween",r[r.SpaceAround=4]="SpaceAround",r[r.SpaceEvenly=5]="SpaceEvenly",r}({}),ri=function(r){return r[r.Error=0]="Error",r[r.Warn=1]="Warn",r[r.Info=2]="Info",r[r.Debug=3]="Debug",r[r.Verbose=4]="Verbose",r[r.Fatal=5]="Fatal",r}({}),kn=function(r){return r[r.Undefined=0]="Undefined",r[r.Exactly=1]="Exactly",r[r.AtMost=2]="AtMost",r}({}),Dl=function(r){return r[r.Default=0]="Default",r[r.Text=1]="Text",r}({}),si=function(r){return r[r.Visible=0]="Visible",r[r.Hidden=1]="Hidden",r[r.Scroll=2]="Scroll",r}({}),ni=function(r){return r[r.Static=0]="Static",r[r.Relative=1]="Relative",r[r.Absolute=2]="Absolute",r}({}),Ut=function(r){return r[r.Undefined=0]="Undefined",r[r.Point=1]="Point",r[r.Percent=2]="Percent",r[r.Auto=3]="Auto",r}({}),oi=function(r){return r[r.NoWrap=0]="NoWrap",r[r.Wrap=1]="Wrap",r[r.WrapReverse=2]="WrapReverse",r}({});const Ud={ALIGN_AUTO:Le.Auto,ALIGN_FLEX_START:Le.FlexStart,ALIGN_CENTER:Le.Center,ALIGN_FLEX_END:Le.FlexEnd,ALIGN_STRETCH:Le.Stretch,ALIGN_BASELINE:Le.Baseline,ALIGN_SPACE_BETWEEN:Le.SpaceBetween,ALIGN_SPACE_AROUND:Le.SpaceAround,ALIGN_SPACE_EVENLY:Le.SpaceEvenly,BOX_SIZING_BORDER_BOX:Or.BorderBox,BOX_SIZING_CONTENT_BOX:Or.ContentBox,DIMENSION_WIDTH:_l.Width,DIMENSION_HEIGHT:_l.Height,DIRECTION_INHERIT:gA.Inherit,DIRECTION_LTR:gA.LTR,DIRECTION_RTL:gA.RTL,DISPLAY_FLEX:Ai.Flex,DISPLAY_NONE:Ai.None,DISPLAY_CONTENTS:Ai.Contents,EDGE_LEFT:de.Left,EDGE_TOP:de.Top,EDGE_RIGHT:de.Right,EDGE_BOTTOM:de.Bottom,EDGE_START:de.Start,EDGE_END:de.End,EDGE_HORIZONTAL:de.Horizontal,EDGE_VERTICAL:de.Vertical,EDGE_ALL:de.All,ERRATA_NONE:ii.None,ERRATA_STRETCH_FLEX_BASIS:ii.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:ii.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:ii.AbsolutePercentAgainstInnerSize,ERRATA_ALL:ii.All,ERRATA_CLASSIC:ii.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Pd.WebFlexBasis,FLEX_DIRECTION_COLUMN:cA.Column,FLEX_DIRECTION_COLUMN_REVERSE:cA.ColumnReverse,FLEX_DIRECTION_ROW:cA.Row,FLEX_DIRECTION_ROW_REVERSE:cA.RowReverse,GUTTER_COLUMN:Hr.Column,GUTTER_ROW:Hr.Row,GUTTER_ALL:Hr.All,JUSTIFY_FLEX_START:pt.FlexStart,JUSTIFY_CENTER:pt.Center,JUSTIFY_FLEX_END:pt.FlexEnd,JUSTIFY_SPACE_BETWEEN:pt.SpaceBetween,JUSTIFY_SPACE_AROUND:pt.SpaceAround,JUSTIFY_SPACE_EVENLY:pt.SpaceEvenly,LOG_LEVEL_ERROR:ri.Error,LOG_LEVEL_WARN:ri.Warn,LOG_LEVEL_INFO:ri.Info,LOG_LEVEL_DEBUG:ri.Debug,LOG_LEVEL_VERBOSE:ri.Verbose,LOG_LEVEL_FATAL:ri.Fatal,MEASURE_MODE_UNDEFINED:kn.Undefined,MEASURE_MODE_EXACTLY:kn.Exactly,MEASURE_MODE_AT_MOST:kn.AtMost,NODE_TYPE_DEFAULT:Dl.Default,NODE_TYPE_TEXT:Dl.Text,OVERFLOW_VISIBLE:si.Visible,OVERFLOW_HIDDEN:si.Hidden,OVERFLOW_SCROLL:si.Scroll,POSITION_TYPE_STATIC:ni.Static,POSITION_TYPE_RELATIVE:ni.Relative,POSITION_TYPE_ABSOLUTE:ni.Absolute,UNIT_UNDEFINED:Ut.Undefined,UNIT_POINT:Ut.Point,UNIT_PERCENT:Ut.Percent,UNIT_AUTO:Ut.Auto,WRAP_NO_WRAP:oi.NoWrap,WRAP_WRAP:oi.Wrap,WRAP_WRAP_REVERSE:oi.WrapReverse};function kd(r){function A(i,s,n){const o=i[s];i[s]=function(){for(var a=arguments.length,l=new Array(a),h=0;h<a;h++)l[h]=arguments[h];return n.call(this,o,...l)}}for(const i of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){const s={[Ut.Point]:r.Node.prototype[i],[Ut.Percent]:r.Node.prototype[`${i}Percent`],[Ut.Auto]:r.Node.prototype[`${i}Auto`]};A(r.Node.prototype,i,function(n){for(var o=arguments.length,a=new Array(o>1?o-1:0),l=1;l<o;l++)a[l-1]=arguments[l];const h=a.pop();let c,f;if(h==="auto")c=Ut.Auto,f=void 0;else if(typeof h=="object")c=h.unit,f=h.valueOf();else if(c=typeof h=="string"&&h.endsWith("%")?Ut.Percent:Ut.Point,f=parseFloat(h),h!==void 0&&!Number.isNaN(h)&&Number.isNaN(f))throw new Error(`Invalid value ${h} for ${i}`);if(!s[c])throw new Error(`Failed to execute "${i}": Unsupported unit '${h}'`);return f!==void 0?s[c].call(this,...a,f):s[c].call(this,...a)})}function e(i){return r.MeasureCallback.implement({measure:function(){const{width:s,height:n}=i(...arguments);return{width:s??NaN,height:n??NaN}}})}A(r.Node.prototype,"setMeasureFunc",function(i,s){return s?i.call(this,e(s)):this.unsetMeasureFunc()});function t(i){return r.DirtiedCallback.implement({dirtied:i})}return A(r.Node.prototype,"setDirtiedFunc",function(i,s){i.call(this,t(s))}),A(r.Config.prototype,"free",function(){r.Config.destroy(this)}),A(r.Node,"create",(i,s)=>s?r.Node.createWithConfig(s):r.Node.createDefault()),A(r.Node.prototype,"free",function(){r.Node.destroy(this)}),A(r.Node.prototype,"freeRecursive",function(){for(let i=0,s=this.getChildCount();i<s;++i)this.getChild(0).freeRecursive();this.free()}),A(r.Node.prototype,"calculateLayout",function(i){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:gA.LTR;return i.call(this,s,n,o)}),{Config:r.Config,Node:r.Node,...Ud}}async function Nd(){return kd(await Rd())}class bl extends ki{constructor(A){super(),this.setProperties(A)}}const ai={auto:Le.Auto,"flex-start":Le.FlexStart,center:Le.Center,"flex-end":Le.FlexEnd,stretch:Le.Stretch,baseline:Le.Baseline,"space-between":Le.SpaceBetween,"space-around":Le.SpaceAround,"space-evenly":Le.SpaceEvenly},xl={none:Ai.None,flex:Ai.Flex,contents:Ai.Contents},Sl={inherit:gA.Inherit,ltr:gA.LTR,rtl:gA.RTL},Ml={column:cA.Column,"column-reverse":cA.ColumnReverse,row:cA.Row,"row-reverse":cA.RowReverse},Rl={"no-wrap":oi.NoWrap,wrap:oi.Wrap,"Wrap-reverse":oi.WrapReverse},Pl={"flex-start":pt.FlexStart,center:pt.Center,"flex-end":pt.FlexEnd,"space-between":pt.SpaceBetween,"space-around":pt.SpaceAround,"space-evenly":pt.SpaceEvenly},Ul={visible:si.Visible,hidden:si.Hidden,scroll:si.Scroll},kl={static:ni.Static,relative:ni.Relative,absolute:ni.Absolute},Nl={"border-box":Or.BorderBox,"content-box":Or.ContentBox},es=class es{constructor(A){u(this,"_node",es._yoga.Node.create());this._element=A}static async load(){this._yoga=await Nd()}get _style(){return this._element.style}get offsetLeft(){return this._node.getComputedLeft()}get offsetTop(){return this._node.getComputedTop()}get offsetWidth(){return this._node.getComputedWidth()}get offsetHeight(){return this._node.getComputedHeight()}calculateLayout(A,e,t){return this._node.calculateLayout(A,e,t)}getComputedLayout(){return this._node.getComputedLayout()}updateStyleProperty(A,e,t,i){switch(A){case"alignContent":this._node.setAlignContent(e?ai[e]:ai["flex-start"]);break;case"alignItems":this._node.setAlignItems(e?ai[e]:ai["flex-start"]);break;case"alignSelf":this._node.setAlignSelf(e?ai[e]:ai["flex-start"]);break;case"aspectRatio":this._node.setAspectRatio(e);break;case"borderTop":this._node.setBorder(de.Top,this._style.borderWidth);break;case"borderBottom":this._node.setBorder(de.Bottom,this._style.borderWidth);break;case"borderLeft":this._node.setBorder(de.Left,this._style.borderWidth);break;case"borderRight":this._node.setBorder(de.Right,this._style.borderWidth);break;case"border":this._node.setBorder(de.All,this._style.borderWidth);break;case"direction":this._node.setDirection(e?Sl[e]:Sl.inherit);break;case"display":this._node.setDisplay(e?xl[e]:xl.flex);break;case"flex":this._node.setFlex(this._style.flex);break;case"flexBasis":this._node.setFlexBasis(this._style.flexBasis);break;case"flexDirection":this._node.setFlexDirection(e?Ml[e]:Ml.row);break;case"flexGrow":this._node.setFlexGrow(this._style.flexGrow);break;case"flexShrink":this._node.setFlexShrink(this._style.flexShrink);break;case"flexWrap":this._node.setFlexWrap(e?Rl[e]:Rl.wrap);break;case"height":this._node.setHeight(this._style.height);break;case"justifyContent":this._node.setJustifyContent(e?Pl[e]:Pl["flex-start"]);break;case"gap":e!==void 0&&this._node.setGap(Hr.All,e);break;case"marginTop":this._node.setMargin(de.Top,e);break;case"marginBottom":this._node.setMargin(de.Top,e);break;case"marginLeft":this._node.setMargin(de.Left,e);break;case"marginRight":this._node.setMargin(de.Top,e);break;case"margin":this._node.setMargin(de.All,e);break;case"maxHeight":this._node.setMaxHeight(e);break;case"maxWidth":this._node.setMaxWidth(e);break;case"minHeight":this._node.setMinHeight(this._style.minHeight);break;case"minWidth":this._node.setMinWidth(this._style.minWidth);break;case"overflow":this._node.setOverflow(e?Ul[e]:Ul.visible);break;case"paddingTop":this._node.setPadding(de.Top,this._style.paddingTop);break;case"paddingBottom":this._node.setPadding(de.Bottom,this._style.paddingBottom);break;case"paddingLeft":this._node.setPadding(de.Left,this._style.paddingLeft);break;case"paddingRight":this._node.setPadding(de.Right,this._style.paddingRight);break;case"padding":this._node.setPadding(de.All,this._style.padding);break;case"top":this._node.setPosition(de.Top,this._style.top);break;case"bottom":this._node.setPosition(de.Bottom,this._style.bottom);break;case"left":this._node.setPosition(de.Left,this._style.left);break;case"right":this._node.setPosition(de.Right,this._style.right);break;case"position":this._node.setPositionType(e?kl[e]:kl.static);break;case"boxSizing":this._node.setBoxSizing(e?Nl[e]:Nl["content-box"]);break;case"width":this._node.setWidth(this._style.width);break}}};u(es,"_yoga");let Jr=es;var Fd=Object.getOwnPropertyDescriptor,Td=(r,A,e,t)=>{for(var i=t>1?void 0:t?Fd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.FlexElement2D=class extends g.BaseElement2D{constructor(e,t=[]){super();u(this,"_layout",new Jr(this));this.style=new bl,this.setProperties(e).append(t)}get style(){return this._style}set style(e){var i;const t=(...s)=>{this.emit("updateStyleProperty",...s),this._updateStyleProperty(s[0],s[1],s[2],s[3])};e.on("updateProperty",t),(i=this._style)==null||i.off("updateProperty",t),this._style=e}get offsetLeft(){return this._layout.offsetLeft}get offsetTop(){return this._layout.offsetTop}get offsetWidth(){return this._layout.offsetWidth}get offsetHeight(){return this._layout.offsetHeight}_parented(e){super._parented(e),e._layout&&this._layout._node&&e._layout._node.insertChild(this._layout._node,e._layout._node.getChildCount())}_unparented(e){var t;super._unparented(e),(t=e._layout)!=null&&t._node&&e._layout._node.removeChild(this._layout._node)}_updateStyleProperty(e,t,i,s){super._updateStyleProperty(e,t,i,s),this._layout.updateStyleProperty(e,t,i,s),this._layout._node.isDirty()&&this.requestRelayout()}_updateTransform(){this.calculateLayout(void 0,void 0,gA.LTR);const{left:e,top:t,width:i,height:s}=this._layout.getComputedLayout();this.position.x=e,this.position.y=t,this.size.x=i,this.size.y=s,super._updateTransform()}calculateLayout(e,t,i){var n;const s=this.getParent();(n=s==null?void 0:s._layout)!=null&&n.calculateLayout?s==null||s._layout.calculateLayout(e,t,i):this._layout.calculateLayout(e,t,i)}},g.FlexElement2D=Td([ee("FlexElement2D")],g.FlexElement2D);var Ld=Object.defineProperty,Gd=Object.getOwnPropertyDescriptor,Pe=(r,A,e,t)=>{for(var i=t>1?void 0:t?Gd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Ld(A,e,i),i};function Ge(r){return function(A,e){Object.defineProperty(A.constructor.prototype,e,{get(){return r!=null&&r.method?(...t)=>(this.context[e].call(this.context,...t),r.redraw&&this.requestRedraw(),A):this.context[e]},set(t){this.context[e]=t},configurable:!0,enumerable:!0})}}g.Graphics2D=class extends g.Node2D{constructor(){super(...arguments);u(this,"_resetContext",!1);u(this,"lineCap");u(this,"lineJoin");u(this,"fillStyle");u(this,"strokeStyle");u(this,"lineWidth");u(this,"miterLimit")}drawCircle(e,t,i){return this.arc(e+i,t+i,i,0,tt),this.fill(),this}drawEllipse(e,t,i,s){const n=i/2,o=s/2;return this.ellipse(e+n,t+o,n,o,0,0,tt),this.fill(),this}},Pe([Ge()],g.Graphics2D.prototype,"lineCap",2),Pe([Ge()],g.Graphics2D.prototype,"lineJoin",2),Pe([Ge()],g.Graphics2D.prototype,"fillStyle",2),Pe([Ge()],g.Graphics2D.prototype,"strokeStyle",2),Pe([Ge()],g.Graphics2D.prototype,"lineWidth",2),Pe([Ge()],g.Graphics2D.prototype,"miterLimit",2),Pe([Ge({method:!0})],g.Graphics2D.prototype,"rect",2),Pe([Ge({method:!0,redraw:!0})],g.Graphics2D.prototype,"fillRect",2),Pe([Ge({method:!0,redraw:!0})],g.Graphics2D.prototype,"strokeRect",2),Pe([Ge({method:!0})],g.Graphics2D.prototype,"roundRect",2),Pe([Ge({method:!0})],g.Graphics2D.prototype,"ellipse",2),Pe([Ge({method:!0})],g.Graphics2D.prototype,"arc",2),Pe([Ge({method:!0})],g.Graphics2D.prototype,"beginPath",2),Pe([Ge({method:!0})],g.Graphics2D.prototype,"moveTo",2),Pe([Ge({method:!0})],g.Graphics2D.prototype,"lineTo",2),Pe([Ge({method:!0})],g.Graphics2D.prototype,"closePath",2),Pe([Ge({method:!0,redraw:!0})],g.Graphics2D.prototype,"fill",2),Pe([Ge({method:!0,redraw:!0})],g.Graphics2D.prototype,"stroke",2),g.Graphics2D=Pe([ee("Graphics2D")],g.Graphics2D);var Od=Object.defineProperty,Hd=Object.getOwnPropertyDescriptor,ji=(r,A,e,t)=>{for(var i=t>1?void 0:t?Hd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Od(A,e,i),i};g.Image2D=class extends g.Element2D{constructor(e,t=[]){super();u(this,"texture");u(this,"_frameIndex",0);u(this,"_complete",!1);u(this,"_wait",Promise.resolve());this.setProperties(e),this.append(t)}get currentFrameTexture(){var e,t;return(t=(e=this.texture)==null?void 0:e.frames[this._frameIndex])==null?void 0:t.texture}get textureDuration(){var e;return((e=this.texture)==null?void 0:e.duration)??0}get naturalWidth(){var e;return((e=this.currentFrameTexture)==null?void 0:e.realWidth)??0}get naturalHeight(){var e;return((e=this.currentFrameTexture)==null?void 0:e.realHeight)??0}get complete(){return this._complete}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"src":this._wait=this._load(t);break;case"srcRect":this.requestRedraw();break}}decode(){return this._wait}setResource(e){let t;if(e instanceof hr?t=e:t=new hr(e),this.texture=t.updateDuration(),this.currentFrameTexture&&(!this.style.width||!this.style.height)){const i=this.currentFrameTexture;this.style.width=i.realWidth,this.style.height=i.realHeight}return this}async _load(e){if(this._complete=!1,e)try{this.setResource(this.gif?await Nt.gif.load(e):await Nt.texture.load(e)),this.requestRedraw(),this.emit("load")}catch(t){console.warn(t),this.emit("error",t)}else this.texture=void 0;this._complete=!0}_getFrameCurrentTime(){const e=this.textureDuration;if(!e||!this._tree)return 0;const t=this._currentTime;return t<0?0:t%e}_updateFrameIndex(){if(!this.texture)return this;const e=this._getFrameCurrentTime(),t=this.texture.frames,i=t.length;if(i<=1&&this._frameIndex===0)return this;let s=i-1;for(let n=0,o=0;o<i;o++)if(n+=t[o].duration??0,n>=e){s=o;break}return this._frameIndex!==s&&(this._frameIndex=s,this.requestRepaint()),this}_process(e){this._updateFrameIndex(),super._process(e)}_drawContent(){const e=this.currentFrameTexture;if(e!=null&&e.valid){const{left:t=0,top:i=0,right:s=0,bottom:n=0}=this.srcRect??{},{width:o,height:a}=this.size;this.context.fillStyle=e;const l=Math.abs(1+(t+s))*o,h=Math.abs(1+(i+n))*a,c=1/l,f=1/h,d=t*o*c,I=i*a*f;this.context.textureTransform=new dt().scale(c,f).translate(d,I),this.geometry.draw(),this.context.fill()}}_repaint(e){return super._repaint(e).map(t=>({...t,disableWrapMode:!0}))}},ji([Be()],g.Image2D.prototype,"texture",2),ji([M({default:""})],g.Image2D.prototype,"src",2),ji([M()],g.Image2D.prototype,"srcRect",2),ji([M({default:!1})],g.Image2D.prototype,"gif",2),g.Image2D=ji([ee("Image2D")],g.Image2D);class Kr extends g.Element2D{constructor(e,t=[]){super();u(this,"texture");this.setProperties(e).append(t)}_drawContent(){var e;if((e=this.texture)!=null&&e.valid){const{width:t,height:i}=this.size;this.context.fillStyle=this.texture,this.context.textureTransform=new dt().scale(1/t,1/i),this.geometry.drawRect(),this.context.fill()}}}var Jd=Object.defineProperty,Kd=Object.getOwnPropertyDescriptor,Fl=(r,A,e,t)=>{for(var i=t>1?void 0:t?Kd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Jd(A,e,i),i};g.Lottie2D=class extends Kr{constructor(e,t=[]){super();u(this,"texture",new LA);u(this,"animation");this.setProperties(e),this.append(t)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"src":this._load();break}}_updateStyleProperty(e,t,i){switch(super._updateStyleProperty(e,t,i),e){case"width":this.texture.width=this.style.width;break;case"height":this.texture.height=this.style.height;break}}async _load(){this.animation=await Nt.lottie.load(this.src,this.texture.source),this.duration=this.animation.getDuration(!1)*1e3,this.texture.requestUpload(),this.requestRedraw()}_process(e){var t;(t=this.animation)==null||t.goToAndStop(this.currentTime,!1),this.texture.requestUpload(),this.requestRepaint(),super._process(e)}},Fl([M({default:""})],g.Lottie2D.prototype,"src",2),g.Lottie2D=Fl([ee("Lottie2D")],g.Lottie2D);var Yd=Object.defineProperty,Wd=Object.getOwnPropertyDescriptor,li=(r,A,e,t)=>{for(var i=t>1?void 0:t?Wd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Yd(A,e,i),i};const zd=new Set(Object.keys(Pn));g.Text2D=class extends Kr{constructor(e,t=[]){super();u(this,"effects");u(this,"measureDom");u(this,"fonts");u(this,"texture",new LA);u(this,"_baseText",new wl);u(this,"measureResult");u(this,"_subTextsCount",0);this.setProperties(e),this.append(t)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"content":case"effects":case"measureDom":case"fonts":case"split":this._updateSplit(),this.requestRedraw();break}this._subTextsCount&&e==="effects"&&this._getSubTexts().forEach(n=>{n.setProperties({[e]:t})})}_updateText(){this._baseText.style=this.style.toJSON(),this._baseText.content=this.content??"",this._baseText.effects=this.effects,this._baseText.fonts=this.fonts,this._baseText.measureDom=this.measureDom,this._baseText.requestUpdate()}_updateStyleProperty(e,t,i){switch(e){case"left":case"top":case"width":case"height":this.requestRedraw();break;default:super._updateStyleProperty(e,t,i);break}switch(e){case"width":this.split&&this._updateSubTexts();break}typeof e=="string"&&zd.has(e)&&(this._subTextsCount&&e!=="width"&&e!=="height"&&this._getSubTexts().forEach(s=>{s.style.setProperties({[e]:t})}),this.requestRedraw())}_getSubTexts(){return this.getChildren("front").filter(e=>e instanceof g.Text2D)}_updateSubTexts(){var i;const e=this._getSubTexts();let t=0;this.split&&((i=this.updateMeasure().measureResult)==null||i.paragraphs.forEach(s=>{s.fragments.forEach(n=>{n.characters.forEach(o=>{const a=e[t];a&&(a.style.left=o.inlineBox.left,a.style.top=o.inlineBox.top),t++})})}))}measure(){return this._updateText(),this._baseText.measure()}updateMeasure(){this.measureResult=this.measure();const e=this.measureResult.boundingBox.width,t=this.measureResult.boundingBox.height,{left:i,top:s,width:n,height:o=t}=this.style;return this.position.x=i+Math.min(0,((n||e)-e)/2),this.position.y=s+Math.min(0,((o||t)-t)/2),this.size.width=e,this.size.height=t,this}_updateSplit(){var e;this._subTextsCount&&(this.getChildren("front").forEach(t=>this.removeChild(t)),this._subTextsCount=0),this.split&&((e=this.measureResult)==null||e.paragraphs.forEach(t=>{t.fragments.forEach(i=>{i.characters.forEach(s=>{this.appendChild(new g.Text2D({content:s.content,style:{...s.computedStyle,left:s.inlineBox.x,top:s.inlineBox.y,width:0,height:0,effects:this.effects}}),"front"),this._subTextsCount++})})}))}_redraw(){return this.updateMeasure(),super._redraw()}_drawContent(){var e,t;if(!this.split){const i=(t=(e=this.getChildren())==null?void 0:e.find(s=>"onText2DRender"in s))==null?void 0:t.onText2DRender;i?i():this._baseText.render({pixelRatio:this.texture.pixelRatio,view:this.texture.source}),this.texture.requestUpload(),super._drawContent()}}},li([M({default:!1})],g.Text2D.prototype,"split",2),li([M({default:""})],g.Text2D.prototype,"content",2),li([M()],g.Text2D.prototype,"effects",2),li([Be()],g.Text2D.prototype,"measureDom",2),li([Be()],g.Text2D.prototype,"fonts",2),g.Text2D=li([ee("Text2D")],g.Text2D);var Vd=Object.defineProperty,qd=(r,A,e,t)=>{for(var i=void 0,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(A,e,i)||i);return i&&Vd(A,e,i),i};class Nn extends g.Element2D{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":this.requestRedraw();break}}_drawCircle(A,e){this.context.arc(A,e,this.handleSize,0,Math.PI*2,!0),this.context.fillStyle=ve.WHITE,this.context.fill(),this.context.arc(A,e,this.handleSize,0,Math.PI*2,!0),this.context.strokeStyle="rgba(0, 0, 0, 0.2)",this.context.stroke()}_drawEllipse(A,e){this.context.roundRect(A-this.handleSize,e-this.handleSize*2,this.handleSize*2,this.handleSize*4,this.handleSize),this.context.fillStyle=ve.WHITE,this.context.fill(),this.context.roundRect(A-this.handleSize,e-this.handleSize*2,this.handleSize*2,this.handleSize*4,this.handleSize),this.context.strokeStyle="rgba(0, 0, 0, 0.2)",this.context.stroke()}_draw(){const{width:A,height:e}=this.getRect();this.context.rect(0,0,A,e),this.context.strokeStyle="#00FF00",this.context.stroke(),this._drawCircle(0,0),this._drawCircle(A,e),this._drawCircle(0,e),this._drawEllipse(0,e/2),this._drawCircle(A,0),this._drawEllipse(A,e/2)}}qd([M({default:6})],Nn.prototype,"handleSize");var Xd=Object.defineProperty,jd=Object.getOwnPropertyDescriptor,Tl=(r,A,e,t)=>{for(var i=t>1?void 0:t?jd(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Xd(A,e,i),i};g.Video2D=class extends Kr{constructor(e,t=[]){super();u(this,"_wait",Promise.resolve());this.setProperties(e),this.append(t)}get videoDuration(){var e;return(((e=this.texture)==null?void 0:e.duration)??0)*1e3}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"src":this._wait=this._load(t);break}}waitLoad(){return this._wait}async _load(e){this.texture=await Nt.video.load(e),(!this.style.width||!this.style.height)&&(this.style.width=this.texture.width,this.style.height=this.texture.height),this.requestRedraw()}_updateVideoCurrentTime(){let e=this._currentTime;if(e<0)return;const t=this.texture;if(!t)return;const i=t.duration;e=i?e%(i*1e3):0,!t.isPlaying&&!t.seeking&&(e=~~e/1e3,t.currentTime!==e&&(t.currentTime=e))}_process(e){this._updateVideoCurrentTime(),super._process(e)}},Tl([M({default:""})],g.Video2D.prototype,"src",2),g.Video2D=Tl([ee("Video2D")],g.Video2D);var Zd=Object.defineProperty,$d=Object.getOwnPropertyDescriptor,Zi=(r,A,e,t)=>{for(var i=t>1?void 0:t?$d(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Zd(A,e,i),i};const Ll=r=>r,Gl=hi(.25,.1,.25,1),Ol=hi(.42,0,1,1),Hl=hi(0,0,.58,1),Jl=hi(.42,0,.58,1);function hi(r,A,e,t){const s=3*r-3*e+1,n=3*e-6*r,o=3*r,a=3*A-3*t+1,l=3*t-6*A,h=3*A,c=C=>(3*s*C+2*n)*C+o,f=C=>((s*C+n)*C+o)*C,d=C=>((a*C+l)*C+h)*C;function I(C){let B=C,P,S;for(let v=0;v<8;v++){if(S=f(B)-C,Math.abs(S)<1e-6)return B;if(P=c(B),Math.abs(P)<1e-6)break;B-=S/P}let _=1,R=0;for(B=C;_>R;){if(S=f(B)-C,Math.abs(S)<1e-6)return B;S>0?_=B:R=B,B=(_+R)/2}return B}return C=>d(I(C))}const Yr={linear:Ll,ease:Gl,easeIn:Ol,easeOut:Hl,easeInOut:Jl};g.Animation=class extends g.TimelineNode{constructor(e,t=[]){super();u(this,"easing");u(this,"_keyframes",[]);u(this,"_isFirstUpdatePosition",!1);u(this,"_cachedProps",new UA);u(this,"_stoped",!1);this.setProperties(e).append(t)}_parented(e){super._parented(e),this._updateCachedProps()}_unparented(e){super._unparented(e),this.cancel()}_process(){this.canProcess()&&this.commitStyles()}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"effectMode":case"keyframes":this._updateKeyframes();break}}_getTargets(){var t;let e;switch(this.effectMode){case"sibling":e=((t=this.getParent())==null?void 0:t.getChildren(!0).filter(i=>i instanceof g.CanvasItem))??[];break;case"parent":default:e=[this.getParent()].filter(Boolean);break}return e.map(i=>i.style)}_updateKeyframes(){const e=[],t=this.keyframes;for(let n=t.length,o=0;o<n;o++){const{offset:a=o===0?0:o/(n-1),easing:l="linear",...h}=t[o];e.push({offset:a,easing:this._parseEasing(l),props:h})}const i=e[0],s=e[e.length-1];i&&i.offset!==0&&e.unshift({offset:0,easing:this._parseEasing("linear"),props:{}}),s&&s.offset!==1&&e.push({offset:1,easing:this._parseEasing("linear"),props:{}}),this._keyframes=e,this._updateCachedProps()}commitStyles(){if(!this.keyframes.length)return;if(this._updateCurrentTime(),this.isInsideTimeRange())this._isFirstUpdatePosition||(this._isFirstUpdatePosition=!0,this._updateCachedProps());else{if(!this._isFirstUpdatePosition)return;this._isFirstUpdatePosition=!1}const e=this._getTargets(),t=1/e.length,i=this.currentTimeProgress;e.forEach((s,n)=>{const o=t===1?i:bt(0,Math.max(0,i-t*n)/t,1),a=this._cachedProps.get(s);if(!a)return;const l=this._parseKeyframes(o,a);l!=null&&l.length&&this._commitStyle(o,s,a,l[0],l[1])})}_updateCachedProps(){this.cancel(),this._getTargets().forEach(e=>{const t=new Map,i=this._keyframes;for(let s=i.length,n=0;n<s;n++)Object.keys(i[n].props).forEach(o=>{t.set(o,e[o])});this._cachedProps.set(e,t)})}_parseEasing(e){if(!e)return Yr.linear;if(e in Yr)return Yr[e];const t=e.replace(/cubic-bezier\((.+)\)/,"$1").split(",").map(i=>Number(i));return hi(t[0],t[1],t[2],t[3])}_parseKeyframes(e,t){let i;const s=this._keyframes;for(let n=s.length,o=0;o<n;o++){const a=s[o],{offset:l,easing:h}=a,c={...a.props};if(i&&e<=l){const{offset:f,easing:d}=i,I={...i.props};return t.forEach((C,B)=>{(!(B in I)||I[B]===null)&&(I[B]=C),(!(B in c)||c[B]===null)&&(c[B]=C)}),[{offset:f,easing:d,props:I},{offset:l,easing:h,props:c}]}i=a}return null}_commitStyle(e,t,i,s,n){const{offset:o,easing:a,props:l}=s,{offset:h,props:c}=n,f=h-o,d=a((e-o)/f),I={width:t.width,height:t.height,fontSize:t.fontSize};i.forEach((C,B)=>{t[B]=this._getDiffValue(B,l[B],c[B],d,I)})}_getDiffValue(e,t,i,s,n){let o,a;if(t==="none"&&(t=void 0),i==="none"&&(i=void 0),t===void 0||i===void 0)if(t!==void 0)o=fi(e,String(t),n),a=ds(o);else if(i!==void 0)a=fi(e,String(i),n),o=ds(a);else return;else o=fi(e,String(t),n),a=fi(e,String(i),n);if(Array.isArray(o)&&Array.isArray(a)){const l=new Set,h={},c={};o.forEach(({name:d,args:I})=>{h[d]=I,l.add(d)}),a.forEach(({name:d,args:I})=>{c[d]=I,l.add(d)});let f="";return l.forEach(d=>{var P,S;const I=Math.max(((P=h[d])==null?void 0:P.length)??0,((S=c[d])==null?void 0:S.length)??0),C=h[d],B=c[d];f+=`${d}(${Array.from({length:I},(_,R)=>{const v=C==null?void 0:C[R],w=B==null?void 0:B[R],D=(v==null?void 0:v.normalizedIntValue)??0,x=(w==null?void 0:w.normalizedIntValue)??0;return Number.isNaN(D)||Number.isNaN(x)?(w==null?void 0:w.value)??0:Se(D,x,s)}).join(", ")}) `}),f}else if(!Array.isArray(o)&&!Array.isArray(a))return Number.isNaN(o.normalizedIntValue)||Number.isNaN(a.normalizedIntValue)?a.value:Se(o.normalizedIntValue,a.normalizedIntValue,s)}isPlaying(){return!this.paused&&this.isInsideTimeRange()}play(){return this._stoped?(this._stoped=!1,this.startTime=this.timelineCurrentTime):this.startTime=this.timelineCurrentTime-this.currentTime,this.paused=!1,!0}pause(){return this.paused=!0,!0}stop(){return this._stoped=!0,this.paused=!0,this._currentTime=0,!0}cancel(){this._getTargets().forEach(e=>{var t;(t=this._cachedProps.get(e))==null||t.forEach((i,s)=>{e[s]=i}),this._cachedProps.delete(e)})}},Zi([M({default:"parent"})],g.Animation.prototype,"effectMode",2),Zi([M({default:!1})],g.Animation.prototype,"loop",2),Zi([M({default:[]})],g.Animation.prototype,"keyframes",2),Zi([M()],g.Animation.prototype,"easing",2),g.Animation=Zi([ee("Animation",{renderMode:"disabled",processMode:"pausable",processSortMode:"parent_before",duration:2e3})],g.Animation);const ts=class ts extends Ot{constructor(){super(...arguments);u(this,"playbackRate",1);u(this,"muted",!1);u(this,"volume",1);u(this,"paused",!1)}static get instance(){return this._instance||(this._instance=new ts),this._instance}refresh(){this.emit("refresh")}refreshPaused(){this.emit("refreshPaused")}get processors(){return console.warn("HTML Audio does not support processors"),[]}set processors(e){console.warn("HTML Audio does not support processors")}get audioContext(){return console.warn("HTML Audio does not support audioContext"),null}toggleMute(){return this.muted=!this.muted,this.refresh(),this.muted}togglePause(){return this.paused=!this.paused,this.refreshPaused(),this.paused}free(){this.removeAllListeners()}};u(ts,"_instance");let Wr=ts;const er=class er extends Ot{constructor(){super(...arguments);u(this,"_source",null);u(this,"_audio",null);u(this,"_end",0);u(this,"_pausedReal",!1);u(this,"_duration",0);u(this,"_start",0);u(this,"_playing",!1);u(this,"_paused",!1);u(this,"_playbackRate",1);u(this,"_volume",1);u(this,"_loop",!1);u(this,"_muted",!1);u(this,"_onUpdate",()=>{this._source&&(this.emit("progress",this.progress,this._duration),this._source.currentTime>=this._end&&!this._source.loop&&this._onComplete())})}get progress(){var e;return(((e=this._source)==null?void 0:e.currentTime)??0)/this._duration}get paused(){return this._paused}set paused(e){this._paused!==e&&(this._paused=e,this.refreshPaused())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh())}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}set(e,t){if(this[e]===void 0)throw new Error(`Property with name ${e} does not exist.`);switch(e){case"playbackRate":this.playbackRate=t;break;case"volume":this.volume=t;break;case"paused":this.paused=t;break;case"loop":this.loop=t;break;case"muted":this.muted=t;break}return this}_onPlay(){this._playing=!0}_onPause(){this._playing=!1}init(e){this._playing=!1,this._duration=e.source.duration;const t=this._source=e.source.cloneNode(!1);return t.src=e.parent.src,t.onplay=this._onPlay.bind(this),t.onpause=this._onPause.bind(this),e.context.on("refresh",this.refresh),e.context.on("refreshPaused",this.refreshPaused),this._audio=e,this}_stop(){this._source&&this._playing&&(this._source.onended=null,this._source.pause())}stop(){this._stop(),this._source&&this.emit("stop")}get processors(){return console.warn("HTML Audio does not support processors"),[]}set processors(e){console.warn("HTML Audio does not support processors")}refresh(){if(!this._audio||!this._source)return;const e=this._audio.context,t=this._audio.parent;this._source.loop=this._loop||t.loop;const i=e.volume*(e.muted?0:1),s=t.volume*(t.muted?0:1),n=this._volume*(this._muted?0:1);this._source.volume=n*i*s,this._source.playbackRate=this._playbackRate*e.playbackRate*t.playbackRate}refreshPaused(){if(!this._source||!this._audio)return;const e=this._paused||this._audio.parent.paused||this._audio.context.paused;e!==this._pausedReal&&(this._pausedReal=e,e?(this._stop(),this.emit("paused")):(this.emit("resumed"),this.play({start:this._source.currentTime,end:this._end,volume:this._volume,playbackRate:this._playbackRate,loop:this._loop})),this.emit("pause",e))}play(e={}){if(!this._source)return;const{start:t=0,end:i=0}=e;i&&console.assert(i>t,"End time is before start time"),e.playbackRate!==void 0&&(this._playbackRate=e.playbackRate),e.volume!==void 0&&(this._volume=e.volume),e.loop!==void 0&&(this._loop=e.loop),e.muted!==void 0&&(this._muted=e.muted),this.refresh(),this.loop&&i!==null&&(console.warn('Looping not support when specifying an "end" time'),this.loop=!1),this._start=t,this._end=i||this._duration,this._start=Math.max(0,this._start-er.PADDING),this._end=Math.min(this._end+er.PADDING,this._duration),this._source.onloadedmetadata=()=>{this._source&&(this._source.currentTime=t,this._source.onloadedmetadata=null,this.emit("progress",t,this._duration),xe.on(this._onUpdate))},this._source.onended=this._onComplete.bind(this),this._source.play(),this.emit("start")}_onComplete(){xe.off(this._onUpdate),this._stop(),this.emit("progress",1,this._duration),this.emit("end",this)}free(){xe.off(this._onUpdate),this.removeAllListeners();const e=this._source;e&&(e.onended=null,e.onplay=null,e.onpause=null,this._stop()),this._source=null,this._playbackRate=1,this._volume=1,this._loop=!1,this._end=0,this._start=0,this._duration=0,this._playing=!1,this._pausedReal=!1,this._paused=!1,this._muted=!1,this._audio&&(this._audio.context.off("refresh",this.refresh),this._audio.context.off("refreshPaused",this.refreshPaused),this._audio=null)}};u(er,"PADDING",.1);let zr=er;class Kl{constructor(A){u(this,"source",new globalThis.Audio);u(this,"_src","");this.parent=A}get src(){return this._src}set src(A){this._src!==A&&(this._src=A,this.load())}get duration(){return this.source.duration}get isPlayable(){return!!this.source&&this.source.readyState===4}get context(){return Wr.instance}async load(){return new Promise(A=>{this.source.onload=()=>A(this),this.source.src=this._src,this.source.load()})}createSound(){return new zr}}class Fn extends Ot{constructor(e,t){super();u(this,"_processers",[]);this._input=e,this._output=t}get processors(){return this._processers}set processors(e){if(this._processers.forEach(t=>t.disconnect()),this._processers.length=0,this._input.connect(this._output),e.length){this._processers=e.slice(0),this._input.disconnect();let t;e.forEach(i=>{t?t.connect(i.destination):this._input.connect(i.destination),t=i}),t.connect(this._output)}}get destination(){return this._input}}class eI{constructor(A,e=null){this.destination=A,this.source=e}connect(A){var e;(e=this.source)==null||e.connect(A)}disconnect(){var A;(A=this.source)==null||A.disconnect()}}function tI(){if(Bs)return new AudioContext;if(Es){const r=globalThis.webkitAudioContext;return new r}else throw new Error("Failed to createAudioContext")}function AI(r,A,e){if(ps)return new OfflineAudioContext(r,A,e);if(so){const t=globalThis.webkitOfflineAudioContext;return new t(r,A,e)}else throw new Error("Failed to createOfflineAudioContext")}const As=class As extends Fn{constructor(){const e=tI(),t=AI(1,2,ps?Math.max(8e3,Math.min(96e3,e.sampleRate)):44100),i=e.createDynamicsCompressor(),s=e.createAnalyser();s.connect(i),i.connect(e.destination);super(s,i);u(this,"_context");u(this,"_offlineContext");u(this,"_locked");u(this,"muted",!1);u(this,"volume",1);u(this,"playbackRate",1);u(this,"autoPause",!0);u(this,"_paused",!1);u(this,"_pausedOnBlur",!1);u(this,"_compressor");u(this,"_analyser");u(this,"_unlock",()=>{this._locked&&(this.playEmptySound(),this._context.state==="running"&&(document.removeEventListener("mousedown",this._unlock,!0),document.removeEventListener("touchend",this._unlock,!0),document.removeEventListener("touchstart",this._unlock,!0),this._locked=!1))});this._context=e,this._offlineContext=t,this._compressor=i,this._analyser=s,this._locked=e.state==="suspended"&&(Gt||ro),Ii&&(this._locked&&(this._unlock(),document.addEventListener("mousedown",this._unlock,!0),document.addEventListener("touchstart",this._unlock,!0),document.addEventListener("touchend",this._unlock,!0)),globalThis.addEventListener("focus",this._onFocus),globalThis.addEventListener("blur",this._onBlur))}static get instance(){return this._instance||(this._instance=new As),this._instance}static get audioContext(){return this.instance.audioContext}static get offlineContext(){return this.instance.offlineContext}static setParamValue(e,t){this.instance.setParamValue(e,t)}static decode(e){return this.instance.decode(e)}get audioContext(){return this._context}get offlineContext(){return this._offlineContext}get paused(){return this._paused}set paused(e){e&&this._context.state==="running"?this._context.suspend():!e&&this._context.state==="suspended"&&this._context.resume(),this._paused=e}_onFocus(){if(!this.autoPause)return;const e=this._context.state;(e==="suspended"||e==="interrupted"||!this._locked)&&(this.paused=this._pausedOnBlur,this.refreshPaused())}_onBlur(){this.autoPause&&(this._locked||(this._pausedOnBlur=this._paused,this.paused=!0,this.refreshPaused()))}playEmptySound(){const e=this._context.createBufferSource();e.buffer=this._context.createBuffer(1,1,22050),e.connect(this._context.destination),e.start(0,0,0),e.context.state==="suspended"&&e.context.resume()}refresh(){this.emit("refresh")}refreshPaused(){this.emit("refreshPaused")}toggleMute(){return this.muted=!this.muted,this.refresh(),this.muted}togglePause(){return this.paused=!this.paused,this.refreshPaused(),this._paused}decode(e){return new Promise((t,i)=>{const s=o=>{i(new Error((o==null?void 0:o.message)||"Unable to decode file"))},n=this._offlineContext.decodeAudioData(e,t,s);n&&n.catch(s)})}setParamValue(e,t){e.setValueAtTime?e.setValueAtTime(t,this._context.currentTime):e.value=t}};u(As,"_instance");let uA=As;class Yl extends Ot{constructor(){super(...arguments);u(this,"_audio",null);u(this,"_sourceNode",null);u(this,"_gain",null);u(this,"_progress",0);u(this,"_pausedReal",!1);u(this,"_paused",!1);u(this,"_volume",1);u(this,"_playbackRate",1);u(this,"_loop",!1);u(this,"_muted",!1);u(this,"_duration",0);u(this,"_end",0);u(this,"_elapsed",0);u(this,"_lastUpdate",this._now());u(this,"_processors",[]);u(this,"_onComplete",()=>{if(this._sourceNode){this._enableTicker(!1),this._sourceNode.onended=null,this._sourceNode.disconnect();try{this._sourceNode.buffer=null}catch(e){console.warn("Failed to set AudioBufferSourceNode.buffer to null:",e)}}this._sourceNode=null,this._progress=1,this.emit("progress",1,this._duration),this.emit("end",this)});u(this,"_updateListener",()=>this._update())}get progress(){return this._progress}get paused(){return this._paused}set paused(e){this._paused!==e&&(this._paused=e,this.refreshPaused())}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh(),this._update(!0))}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}init(e){return this._audio=e,e.context.on("refresh",this.refresh),e.context.on("refreshPaused",this.refreshPaused),this}_now(){var e;return((e=this._audio)==null?void 0:e.context.audioContext.currentTime)??0}play(e={}){var o;if(!this._audio)return;const{end:t=0,start:i=0}=e;t&&console.assert(t>i,"End time is before start time"),this._end=t,this._elapsed=i,e.volume!==void 0&&(this._volume=e.volume),e.playbackRate!==void 0&&(this._playbackRate=e.playbackRate),e.muted!==void 0&&(this._muted=e.muted),e.loop!==void 0&&(this._loop=e.loop),e.processors!==void 0&&(this._processors=e.processors),this._paused=!1;const{source:s,gain:n}=this._audio.cloneSource();this._sourceNode=s,this._gain=n,this.refresh(),s.onended=this._onComplete.bind(this),this._duration=((o=s.buffer)==null?void 0:o.duration)??0,this._lastUpdate=this._now(),this._loop?(s.loopStart=i,s.loopEnd=t,s.start(0,i)):t?s.start(0,i,t-i):s.start(0,i),this.emit("start"),this._update(!0),this._enableTicker(!0)}_stop(){if(this._sourceNode){this._enableTicker(!1),this._sourceNode.onended=null,this._sourceNode.stop(0),this._sourceNode.disconnect();try{this._sourceNode.buffer=null}catch(e){console.warn("Failed to set AudioBufferSourceNode.buffer to null:",e)}this._sourceNode=null}}stop(){this._sourceNode&&(this._stop(),this.emit("stop"))}_update(e=!1){if(this._sourceNode){const t=this._now(),i=t-this._lastUpdate;if(i>0||e){this._elapsed+=i*this._sourceNode.playbackRate.value,this._lastUpdate=t;const s=this._duration;let n;if(this._sourceNode.loopStart){const o=this._sourceNode.loopEnd-this._sourceNode.loopStart;n=(this._sourceNode.loopStart+this._elapsed%o)/s}else n=this._elapsed%s/s;this._progress=n,this.emit("progress",n,s)}}}refresh(){if(!this._audio||!this._sourceNode)return;const e=this._audio.context,t=this._audio.parent;this._sourceNode.loop=this._loop||t.loop,e.setParamValue(this._gain.gain,this._volume*(this._muted?0:1)*t.volume*(t.muted?0:1)*e.volume*(e.muted?0:1)),e.setParamValue(this._sourceNode.playbackRate,this._playbackRate*t.playbackRate*e.playbackRate),this.applyProcessors()}applyProcessors(){if(this._sourceNode&&this._processors.length){this._sourceNode.disconnect();let e=this._sourceNode;this._processors.forEach(t=>{e.connect(t.destination),e=t}),e.connect(this._gain)}}refreshPaused(){if(!this._audio)return;const e=this._paused||this._audio.parent.paused||this._audio.context.paused;e!==this._pausedReal&&(this._pausedReal=e,e?(this._stop(),this.emit("paused")):(this.emit("resumed"),this.play({start:this._elapsed%this._duration,end:this._end,playbackRate:this._playbackRate,loop:this._loop,volume:this._volume})),this.emit("pause",e))}_enableTicker(e){xe.off(this._updateListener),e&&xe.on(this._updateListener)}free(){var e,t,i;this.removeAllListeners(),this._stop(),(e=this._gain)==null||e.disconnect(),this._gain=null,(t=this._audio)==null||t.context.off("refresh",this.refresh),(i=this._audio)==null||i.context.off("refreshPaused",this.refreshPaused),this._audio=null,this._processors.forEach(s=>s.disconnect()),this._processors.length=0,this._end=0,this._playbackRate=1,this._volume=1,this._loop=!1,this._elapsed=0,this._duration=0,this._paused=!1,this._muted=!1,this._pausedReal=!1}}class Wl extends Fn{constructor(e){const t=uA.audioContext,i=t.createBufferSource(),s=t.createGain(),n=t.createAnalyser();i.connect(n),n.connect(s),s.connect(uA.instance.destination);super(n,s);u(this,"_sourceBuffer");u(this,"_sourceNode");u(this,"_sourceLoad");u(this,"gain");u(this,"analyser");this.parent=e,this._sourceNode=i,this.gain=s,this.analyser=n}get context(){return uA.instance}get isPlayable(){return!!this._sourceNode.buffer}get duration(){var e;return((e=this._sourceNode.buffer)==null?void 0:e.duration)??0}get buffer(){return this._sourceNode.buffer}set buffer(e){this._sourceNode.buffer=e}async load(){return this._sourceLoad||(this._sourceLoad=new Promise(e=>{this._sourceBuffer?this._decode(this._sourceBuffer).then(()=>e(this)):this.parent.src?this._loadUrl(this.parent.src).then(()=>e(this)):e(this)})),this._sourceLoad}_loadUrl(e){return new Promise(t=>{fetch(e).then(i=>i.arrayBuffer()).then(i=>this._decode(i)).finally(()=>t(this))})}_decode(e){return Promise.resolve(e instanceof AudioBuffer?e:uA.decode(e)).then(t=>(this.parent.isLoaded=!0,this.buffer=t,t))}cloneSource(){const e=this.context,t=this._sourceNode,i=e.audioContext.createBufferSource(),s=e.audioContext.createGain();return i.buffer=t.buffer,i.loop=t.loop,e.setParamValue(i.playbackRate,t.playbackRate.value),i.connect(s),s.connect(this.destination),{source:i,gain:s}}createSound(){return new Yl}}var iI=Object.defineProperty,rI=Object.getOwnPropertyDescriptor,sI=(r,A,e)=>A in r?iI(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,nI=(r,A,e,t)=>{for(var i=t>1?void 0:t?rI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},oI=(r,A,e)=>sI(r,A+"",e);g.Audio=class extends g.TimelineNode{constructor(e=""){super();u(this,"_sounds",[]);u(this,"_platformAudio",no?new Wl(this):new Kl(this));u(this,"_src");u(this,"isLoaded",!1);u(this,"_volume",1);u(this,"_muted",!1);u(this,"_loop",!1);u(this,"_playbackRate",1);u(this,"_isPlaying",!1);u(this,"multiple",!1);u(this,"start",0);u(this,"end",0);u(this,"_onComplete",e=>{if(this._sounds){const t=this._sounds.indexOf(e);t>-1&&this._sounds.splice(t,1),this._isPlaying=this._sounds.length>0}this._recycleSound(e)});u(this,"_prevTime",0);u(this,"_timer",0);this.src=e}get platformAudio(){return this._platformAudio}get src(){return this._src}set src(e){this._src!==e&&(this._src=e,this.load())}get isPlayable(){return this.isLoaded&&this._platformAudio.isPlayable}get audioDuration(){return this._platformAudio.duration*1e3}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh())}get isPlaying(){return this._isPlaying}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"paused":this.refreshPaused();break}}async load(){return await this._platformAudio.load(),this}pause(){return this._isPlaying=!1,this.paused=!0,this}resume(){return this._isPlaying=this._sounds.length>0,this.paused=!1,this}stop(){if(!this.isPlayable)return this;this._isPlaying=!1;for(let e=this._sounds.length-1;e>=0;e--)this._sounds[e].stop();return this}play(e={}){if(!this.isLoaded)return;this.multiple||this._removeSounds(),this._isPlaying=!0;const t=this._createSound();this._sounds.push(t),t.once("end",()=>{var n;(n=e.complete)==null||n.call(e),this._onComplete(t)}),t.once("stop",()=>this._onComplete(t));const i=((e==null?void 0:e.start)??this.start)/1e3,s=((e==null?void 0:e.end)??this.end)/1e3;return t.play({...e,start:i,end:s}),t}_removeSounds(){for(let e=this._sounds.length-1;e>=0;e--)this._recycleSound(this._sounds[e]);this._sounds.length=0}_createSound(){return g.Audio._soundPool.length>0?g.Audio._soundPool.pop().init(this._platformAudio):this._platformAudio.createSound().init(this._platformAudio)}refresh(){for(let e=this._sounds.length,t=0;t<e;t++)this._sounds[t].refresh()}refreshPaused(){for(let e=this._sounds.length,t=0;t<e;t++)this._sounds[t].refreshPaused()}_recycleSound(e){e.free(),g.Audio._soundPool.includes(e)||g.Audio._soundPool.push(e)}_process(e){var t;if(super._process(e),this.canProcess()){const i=((t=this._tree)==null?void 0:t.timeline.currentTime)??0;i-this._prevTime>0&&(this._timer||(this._setTimeStop(),this.play({start:this.start+(i-this.delay)%this.duration})),this._isPlaying&&this._setTimeStop()),this._prevTime=i}}_setTimeStop(){this._timer&&clearTimeout(this._timer),this._timer=setTimeout(()=>{this.stop(),this._timer=0},100)}},oI(g.Audio,"_soundPool",[]),g.Audio=nI([ee("Audio")],g.Audio);class aI extends g.Node2D{}var lI=Object.defineProperty,hI=Object.getOwnPropertyDescriptor,Vr=(r,A,e,t)=>{for(var i=t>1?void 0:t?hI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&lI(A,e,i),i};g.AudioWaveform=class extends g.Element2D{constructor(e={}){super();u(this,"src");u(this,"gap",0);u(this,"color","#000000");u(this,"_audioBuffer");u(this,"_src",Ii?new ve(document.createElement("canvas")):void 0);u(this,"_needsUpdateTexture",!1);this.setProperties(e)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"src":this._loadSrc(t);break;case"gap":case"color":case"width":case"height":this._needsUpdateTexture=!0;break}}async _loadSrc(e){await globalThis.fetch(e).then(t=>t.arrayBuffer()).then(t=>uA.decode(t)).then(t=>{this._audioBuffer=t,this.syncTexture(!0)})}syncTexture(e=!1){var c,f;const t=this._audioBuffer;if(!t||!e&&!this._needsUpdateTexture)return;this._needsUpdateTexture=!1;const i=(c=this._src)==null?void 0:c.source;if(!i)return;const{width:s=0,height:n=0}=this.style;i.width=s,i.height=n;const o=i.getContext("2d");if(!o){console.warn("Failed to getContext('2d') in syncTexture");return}o.fillStyle=this.color;const a=t.getChannelData(0),l=Math.ceil(a.length/s),h=n/2;for(let d=1,I=-1,C=0;C<s;C++){for(let B=0;B<l;B++){const P=a[C*l+B];P<d&&(d=P),P>I&&(I=P)}if(!this.gap||C%(this.gap*2)===0){const B=C,P=(1+d)*h,S=this.gap||1,_=Math.max(1,(I-d)*h);o.fillRect(B,P,S,_),d=1,I=-1}}(f=this._src)==null||f.requestUpload(),this.requestRedraw()}_process(e){this.syncTexture(),super._process(e)}_drawSrc(){const e=this._src;e!=null&&e.valid&&(this.context.fillStyle=e,this.context.textureTransform=new dt().scale(1/this.style.width,1/this.style.height))}},Vr([M()],g.AudioWaveform.prototype,"src",2),Vr([M()],g.AudioWaveform.prototype,"gap",2),Vr([M()],g.AudioWaveform.prototype,"color",2),g.AudioWaveform=Vr([ee("AudioWaveform")],g.AudioWaveform);var gI=Object.getOwnPropertyDescriptor,cI=(r,A,e,t)=>{for(var i=t>1?void 0:t?gI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.Control=class extends g.Element2D{constructor(A,e=[]){super(),this._parentUpdateRect=this._parentUpdateRect.bind(this),this.setProperties(A),this.append(e)}_parented(A){super._parented(A),A.on("updateRect",this._parentUpdateRect)}_unparented(A){super._unparented(A),A.off("updateRect",this._parentUpdateRect)}_parentUpdateRect(){const A=this._parent.getRect();this.style.left=A.left,this.style.top=A.top,this.style.width=A.width,this.style.height=A.height}_input(A,e){super._input(A,e),this._guiInput(A,e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":case"left":case"top":this.emit("updateRect");break}}_guiInput(A,e){}},g.Control=cI([ee("Control")],g.Control);var uI=Object.defineProperty,fI=Object.getOwnPropertyDescriptor,fA=(r,A,e,t)=>{for(var i=t>1?void 0:t?fI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&uI(A,e,i),i};g.Range=class extends g.Control{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"allowGreater":case"allowLesser":case"page":case"minValue":case"maxValue":case"step":case"value":this.requestRedraw();break}}},fA([M({default:!1})],g.Range.prototype,"allowGreater",2),fA([M({default:!1})],g.Range.prototype,"allowLesser",2),fA([M({default:1})],g.Range.prototype,"page",2),fA([M({default:0})],g.Range.prototype,"minValue",2),fA([M({default:100})],g.Range.prototype,"maxValue",2),fA([M({default:.01})],g.Range.prototype,"step",2),fA([M({default:0})],g.Range.prototype,"value",2),g.Range=fA([ee("Range")],g.Range);var dI=Object.defineProperty,II=Object.getOwnPropertyDescriptor,kt=(r,A,e,t)=>{for(var i=t>1?void 0:t?II(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&dI(A,e,i),i};g.Ruler=class extends g.Control{constructor(e,t=[]){super();u(this,"texture",new LA);this.setProperties(e),this.append(t)}_updateProperty(e,t,i,s){switch(super._updateProperty(e,t,i,s),e){case"offsetX":case"offsetY":case"thickness":case"markHeight":case"color":case"markBackgroundColor":case"markColor":case"gap":case"scale":this.requestRedraw();break}}_updateStyleProperty(e,t,i,s){switch(super._updateStyleProperty(e,t,i,s),e){case"width":case"height":this.texture[e]=t,this.requestRedraw();break}}_drawTexture(){const{width:e,height:t}=this.size,{offsetX:i,offsetY:s,thickness:n,markHeight:o,markBackgroundColor:a,markColor:l,color:h,gap:c,gapScale:f}=this,I=this.texture.source.getContext("2d");I.reset(),I.scale(this.texture.pixelRatio,this.texture.pixelRatio);const C=Math.round(i),B=Math.round(s);I.beginPath(),I.fillStyle=a||"#EEE",I.fillRect(0,0,e,n),I.fillRect(0,0,n,t),I.fill(),I.strokeStyle=l||"#000",I.moveTo(n,0),I.lineTo(n,t),I.moveTo(0,n),I.lineTo(e,n),I.stroke();const P=c,S=c*f;let _,R,v,w,D;for(P>=S?(_=P/S,R=Math.floor(_)*P/20,v=P/20*Math.floor(_)/_):(_=S/P,R=Math.floor(P/20/_),R>=2?R=Math.floor(R/2)*2:R=1,v=R*_),I.fillStyle=I.strokeStyle,w=C,D=0;w<e;D++,w+=v)I.moveTo(w,n-(D%5?o:2*o)),I.lineTo(w,n);for(w=C,D=0;w>n;D++,w-=v)I.moveTo(w,n-(D%5?o:2*o)),I.lineTo(w,n);let x=0;for(w=B,D=0;w>n;D++,w-=v)I.moveTo(n-(D%5?o:2*o),w),I.lineTo(n,w);for(w=B,D=0;w<t;D++,w+=v)I.moveTo(n-(D%5?o:2*o),w),I.lineTo(n,w);for(I.save(),I.fillStyle=h,I.scale(.8,.8),x=n-8,w=C,D=0;w<e;D++,w+=v)D%10===0&&I.fillText(String(Math.ceil(R*D)),w*1.25-3,x*1.25);for(w=C,D=0;w>n;D++,w-=v)D%10===0&&I.fillText(String(Math.ceil(-R*D)),w*1.25-3,x*1.25);for(x=0,w=B,D=0;w>n;D++,w-=v)D%10===0&&I.fillText(String(Math.ceil(R*D)),x*1.25,w*1.25+3);for(w=B,D=0;w<t;D++,w+=v)D%10===0&&I.fillText(String(Math.ceil(-R*D)),x*1.25,w*1.25+3);I.restore(),I.stroke(),this.texture.requestUpload()}_draw(){this._drawTexture();const e=this.texture;e!=null&&e.valid&&(this.context.fillStyle=e,this.context.textureTransform=new dt().scale(1/this.size.width,1/this.size.height),this.context.rect(0,0,e.width,e.height),this.context.fill())}},kt([M({default:0})],g.Ruler.prototype,"offsetX",2),kt([M({default:0})],g.Ruler.prototype,"offsetY",2),kt([M({default:20})],g.Ruler.prototype,"thickness",2),kt([M({default:3})],g.Ruler.prototype,"markHeight",2),kt([M({default:"#b2b6bc"})],g.Ruler.prototype,"color",2),kt([M({default:"#f9f9fa"})],g.Ruler.prototype,"markBackgroundColor",2),kt([M({default:"#b2b6bc"})],g.Ruler.prototype,"markColor",2),kt([M({default:300})],g.Ruler.prototype,"gap",2),kt([M({default:1})],g.Ruler.prototype,"gapScale",2),g.Ruler=kt([ee("Ruler")],g.Ruler);var BI=Object.defineProperty,EI=Object.getOwnPropertyDescriptor,zl=(r,A,e,t)=>{for(var i=t>1?void 0:t?EI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&BI(A,e,i),i};g.ScrollBar=class extends g.Range{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":case"left":case"top":this.requestRedraw();break}}_rect(){const{size:A,position:e}=this;let t,i,s,n,o;return this.direction==="vertical"?(s=10,n=A.height*(this.page/(this.maxValue-this.minValue)),t=e.left+A.width-s,i=A.height*(this.value/(this.maxValue-this.minValue)),o=s/2):(s=A.width*(this.page/(this.maxValue-this.minValue)),n=10,t=A.width*(this.value/(this.maxValue-this.minValue)),i=e.top+A.height-n,o=n/2),{left:t,top:i,width:s,height:n,radii:o}}_draw(){const{left:A,top:e,width:t,height:i,radii:s}=this._rect();this.context.roundRect(A,e,t,i,s),this.context.fillStyle=34,this.context.fill()}_pointerInput(A,e){var a,l;const{left:t,top:i,width:s,height:n}=this._rect(),o=A.x>=t&&A.x<t+s&&A.y>=i&&A.y<i+n;switch(e){case"pointerdown":case"pointermove":o?(a=this._tree)==null||a.input.setCursor("pointer"):(l=this._tree)==null||l.input.setCursor(void 0);break}return!1}},zl([M({default:"vertical"})],g.ScrollBar.prototype,"direction",2),g.ScrollBar=zl([ee("ScrollBar")],g.ScrollBar);var pI=Object.getOwnPropertyDescriptor,CI=(r,A,e,t)=>{for(var i=t>1?void 0:t?pI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.XScrollBar=class extends g.ScrollBar{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},g.XScrollBar=CI([ee("XScrollBar",{direction:"horizontal"})],g.XScrollBar);var QI=Object.getOwnPropertyDescriptor,yI=(r,A,e,t)=>{for(var i=t>1?void 0:t?QI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i};g.YScrollBar=class extends g.ScrollBar{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},g.YScrollBar=yI([ee("YScrollBar",{direction:"vertical"})],g.YScrollBar);var mI=Object.defineProperty,wI=Object.getOwnPropertyDescriptor,qr=(r,A,e,t)=>{for(var i=t>1?void 0:t?wI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&mI(A,e,i),i};g.Scaler=class extends g.Node{get target(){var A;if((A=this.parent)!=null&&A.style)return this.parent}constructor(A,e=[]){super(),this.setProperties(A),this.append(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"value":case"min":case"max":{this.value=bt(this.minValue,this.value,this.maxValue),this._updateScale();break}}}_updateScale(){const A=this.target;A&&(A.style.scaleX=this.value,A.style.scaleY=this.value,this.emit("updateScale",this.value))}_onWheel(A){if(!this.target)return;if(A.preventDefault(),!(A.wheelDeltaY?Math.abs(Math.abs(A.wheelDeltaY)-Math.abs(3*A.deltaY))<3:A.deltaMode===0)&&A.ctrlKey){A.preventDefault();let i=A.deltaY/(A.ctrlKey?1:100);i*=-.015,this.value+=i}}_input(A,e){switch(super._input(A,e),e){case"wheel":this._onWheel(A);break}}},qr([M({default:1})],g.Scaler.prototype,"value",2),qr([M({default:.05})],g.Scaler.prototype,"minValue",2),qr([M({default:10})],g.Scaler.prototype,"maxValue",2),g.Scaler=qr([ee("Scaler",{processMode:"disabled",renderMode:"disabled"})],g.Scaler);var vI=Object.defineProperty,_I=Object.getOwnPropertyDescriptor,DI=(r,A,e)=>A in r?vI(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,bI=(r,A,e,t)=>{for(var i=t>1?void 0:t?_I(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},xI=(r,A,e)=>DI(r,A+"",e);g.KawaseTransition=class extends g.Transition{constructor(){super(...arguments);u(this,"blur",10);u(this,"quality",10)}apply(e,t){const i=this.currentTimeProgress;let s,n;i<.5?(s=0,n=(.5-i)/.5):(s=1,n=(i-.5)/.5);const o=this.blur,a=this.quality,l=t.width,h=t.height,c=[],f=[o];if(o>0){let S=o;const _=o/a;for(let R=1;R<a;R++)S-=_,f.push(S)}const d=1/l,I=1/h,C=[];let B;const P=a-1;for(let S=0;S<P;S++)B=f[S]+.5,C[0]=B*d,C[1]=B*I,c.push({offset:C});B=f[P]+.5,C[0]=B*d,C[1]=B*I,c.push({offset:C}),c.forEach(S=>{ce.draw(e,g.KawaseTransition.material,{sampler:s,progress:n,...S})})}},xI(g.KawaseTransition,"material",new pe({vert:`attribute vec2 position;
860
+ }`)),document.head.appendChild(t),this}_parseUrls(A){const e=Array.from(new Set([...A.split(","),A]));return Array.from(new Set(e.map(t=>this.familyToUrl.get(t.trim())??this.familyToUrl.get(t)??t)))}get(A){let e;return A&&(e=this._parseUrls(A).reduce((i,r)=>i||this.loaded.get(r),void 0)),e??this.fallbackFont}set(A,e){return this.familyToUrl.set(A,e.src),this.loaded.set(e.src,e),this}delete(A){return this._parseUrls(A).forEach(e=>{this.familyToUrl.delete(e),this.loaded.delete(e)}),this}clear(){return this.familyToUrl.clear(),this.loading.clear(),this.loaded.clear(),this}async load(A,e={}){const{cancelOther:t,injectFontFace:i=!0,injectStyleTag:r=!0,...n}=e;let o,a;if(typeof A=="string"?o=A:{src:o,family:a}=A,this.loaded.has(o))return t&&(this.loading.forEach(I=>I.cancel()),this.loading.clear()),g(this.loaded.get(o));let l=this.loading.get(o);return l||(l=this._createRequest(o,n),this.loading.set(o,l)),t&&this.loading.forEach((I,d)=>{I!==l&&(I.cancel(),this.loading.delete(d))}),l.when.then(I=>{if(this.loaded.has(o))return g(this.loaded.get(o));{const d=f(I);return e.noAdd||this.loaded.set(o,d),d.familySet.forEach(C=>{this.familyToUrl.set(C,o),typeof document<"u"&&(i&&this.injectFontFace(C,I),r&&this.injectStyleTag(C,o))}),d}}).catch(I=>{if(I instanceof DOMException&&I.message==="The user aborted a request.")return f();throw I}).finally(()=>{this.loading.delete(o)});function h(){return a?Array.isArray(a)?a:[a]:[]}function g(I){return h().forEach(d=>{I.familySet.add(d)}),I}function f(I=new ArrayBuffer(0)){let d;function C(){return d||(d=I.byteLength?El(I,!1):void 0),d}function B(){const M=C();if(M instanceof Et||M instanceof Fr)return M.sfnt}return{src:o,family:a,buffer:I,familySet:new Set(h()),getFont:C,getSFNT:B}}}async waitUntilLoad(){await Promise.all(Array.from(this.loading.values()).map(A=>A.when))}};u($r,"defaultRequestInit",{cache:"force-cache"});let Tr=$r;const pl=new Tr,od=Object.freeze(Object.defineProperty({__proto__:null,BaseFont:wr,get Cff(){return DA},get Cmap(){return ZA},CmapSubtableFormat0:In,CmapSubtableFormat12:Cn,CmapSubtableFormat14:Vi,CmapSubtableFormat2:Yi,CmapSubtableFormat4:pn,CmapSubtableFormat6:xA,FontDataObject:gt,FontDataView:Ne,Fonts:Tr,get Glyf(){return Mr},Glyph:un,GlyphSet:fn,get Gpos(){return mn},get Gsub(){return jt},get Head(){return Me},get Hhea(){return Ye},get Hmtx(){return Rr},get Kern(){return wn},get Loca(){return Pr},get Maxp(){return Te},get Name(){return $A},get Os2(){return re},get Post(){return Bt},SFNT:_A,TTF:Et,TableDirectory:XA,get Vhea(){return We},get Vmtx(){return kr},WOFF:Fr,WOFFTableDirectoryEntry:MA,createCmapSegments:En,dataTypeToByteLength:Hi,defineColumn:y,defineSFNTTable:Ke,fonts:pl,parseFont:El,parseSFNTFont:Bl},Symbol.toStringTag,{value:"Module"}));function _n(s,A,e){if(typeof A=="string"&&A.startsWith("linear-gradient")){const{x0:t,y0:i,x1:r,y1:n,stops:o}=ad(A,e.left,e.top,e.width,e.height),a=s.createLinearGradient(t,i,r,n);return o.forEach(l=>a.addColorStop(l.offset,l.color)),a}return A}function Lr(s,A,e){s!=null&&s.color&&(s.color=_n(e,s.color,A)),s!=null&&s.backgroundColor&&(s.backgroundColor=_n(e,s.backgroundColor,A)),s!=null&&s.textStrokeColor&&(s.textStrokeColor=_n(e,s.textStrokeColor,A))}function ad(s,A,e,t,i){var I;const r=((I=s.match(/linear-gradient\((.+)\)$/))==null?void 0:I[1])??"",n=r.split(",")[0],o=n.includes("deg")?n:"0deg",a=r.replace(o,"").matchAll(/(#|rgba|rgb)(.+?) ([\d.]+%)/gi),h=(Number(o.replace("deg",""))||0)*Math.PI/180,g=t*Math.sin(h),f=i*Math.cos(h);return{x0:A+t/2-g,y0:e+i/2+f,x1:A+t/2+g,y1:e+i/2-f,stops:Array.from(a).map(d=>{let C=d[2];return C.startsWith("(")?C=C.split(",").length>3?`rgba${C}`:`rgb${C}`:C=`#${C}`,{offset:Number(d[3].replace("%",""))/100,color:C}})}}function ei(s){const{ctx:A,path:e,fontSize:t,clipRect:i}=s;A.save(),A.beginPath();const r=e.style,n={...r,fill:s.color??r.fill,stroke:s.textStrokeColor??r.stroke,strokeWidth:s.textStrokeWidth?s.textStrokeWidth*t:r.strokeWidth,strokeLinecap:"round",strokeLinejoin:"round",shadowOffsetX:(s.shadowOffsetX??0)*t,shadowOffsetY:(s.shadowOffsetY??0)*t,shadowBlur:(s.shadowBlur??0)*t,shadowColor:s.shadowColor};i&&(A.rect(i.left,i.top,i.width,i.height),A.clip(),A.beginPath()),e.drawTo(A,n),A.restore()}function ld(s,A,e){const{left:t,top:i,width:r,height:n}=e,o=s.canvas;o.dataset.viewBox=`${t} ${i} ${r} ${n}`,o.dataset.pixelRatio=String(A);const a=r,l=n;o.width=Math.max(1,Math.ceil(a*A)),o.height=Math.max(1,Math.ceil(l*A)),o.style.width=`${a}px`,o.style.height=`${l}px`,s.clearRect(0,0,o.width,o.height),s.scale(A,A),s.translate(-t,-i)}function hd(s,A){const{paragraphs:e,computedStyle:t,glyphBox:i}=A;Lr(t,i,s),e.forEach(r=>{Lr(r.computedStyle,r.lineBox,s),r.fragments.forEach(n=>{Lr(n.computedStyle,n.inlineBox,s)})})}const gd=new Set(["©","®","÷"]),cd=new Set(["—","…","“","”","﹏","﹋","﹌","‘","’","˜"]),ud={1:"italic",32:"bold"},fd={1:"italic",2:"bold"},Cl={100:-.2,200:-.1,300:0,400:0,normal:0,500:.1,600:.2,700:.3,bold:.3,800:.4,900:.5};class dd{constructor(A,e,t){u(this,"path",new ke);u(this,"lineBox",new ue);u(this,"inlineBox",new ue);u(this,"glyphBox");u(this,"advanceWidth",0);u(this,"advanceHeight",0);u(this,"underlinePosition",0);u(this,"underlineThickness",0);u(this,"strikeoutPosition",0);u(this,"strikeoutSize",0);u(this,"ascender",0);u(this,"descender",0);u(this,"typoAscender",0);u(this,"typoDescender",0);u(this,"typoLineGap",0);u(this,"winAscent",0);u(this,"winDescent",0);u(this,"xHeight",0);u(this,"capHeight",0);u(this,"baseline",0);u(this,"centerDiviation",0);u(this,"fontStyle");this.content=A,this.index=e,this.parent=t}get center(){var A;return(A=this.glyphBox)==null?void 0:A.center}get computedStyle(){return this.parent.computedStyle}get isVertical(){return this.computedStyle.writingMode.includes("vertical")}get fontSize(){return this.computedStyle.fontSize}get fontHeight(){return this.fontSize*this.computedStyle.lineHeight}_getFontSFNT(A){const e=this.computedStyle.fontFamily,t=A??pl,i=e?t.get(e):t.fallbackFont;return i==null?void 0:i.getSFNT()}updateGlyph(A=this._getFontSFNT()){if(!A)return this;const{hhea:e,os2:t,post:i,head:r}=A,n=r.unitsPerEm,o=e.ascent,a=e.descent,{content:l,computedStyle:h,isVertical:g}=this,{fontSize:f}=h,I=n/f,d=A.getAdvanceWidth(l,f),C=(o+Math.abs(a))/I,B=o/I;return this.advanceWidth=d,this.advanceHeight=C,this.inlineBox.width=g?C:d,this.inlineBox.height=g?d:C,this.underlinePosition=(o-i.underlinePosition)/I,this.underlineThickness=i.underlineThickness/I,this.strikeoutPosition=(o-t.yStrikeoutPosition)/I,this.strikeoutSize=t.yStrikeoutSize/I,this.ascender=o/I,this.descender=a/I,this.typoAscender=t.sTypoAscender/I,this.typoDescender=t.sTypoDescender/I,this.typoLineGap=t.sTypoLineGap/I,this.winAscent=t.usWinAscent/I,this.winDescent=t.usWinDescent/I,this.xHeight=t.sxHeight/I,this.capHeight=t.sCapHeight/I,this.baseline=B,this.centerDiviation=C/2-B,this.fontStyle=ud[t.fsSelection]??fd[r.macStyle],this}update(A){const e=this._getFontSFNT(A);if(!e)return this;this.updateGlyph(e);const{isVertical:t,content:i,computedStyle:r,baseline:n,inlineBox:o,ascender:a,descender:l,typoAscender:h,fontStyle:g,advanceWidth:f,advanceHeight:I}=this,{left:d,top:C}=o,B=r.fontStyle==="italic"&&g!=="italic";let M=d,R=C+n,_;const P=new ke;if(t&&(M+=(I-f)/2,Math.abs(f-I)>.1&&(R-=(a-h)/(a+Math.abs(l))*I),_=void 0),t&&!gd.has(i)&&(i.codePointAt(0)<=256||cd.has(i))){P.addCommands(e.getPathCommands(i,M,C+n-(I-f)/2,r.fontSize));const w={y:C-(I-f)/2+I/2,x:M+f/2};B&&this._italic(P,t?{x:w.x,y:C-(I-f)/2+n}:void 0),P.rotate(90,w)}else _!==void 0?(P.addCommands(e.glyphs.get(_).getPathCommands(M,R,r.fontSize)),B&&this._italic(P,t?{x:M+f/2,y:C+h/(a+Math.abs(l))*I}:void 0)):(P.addCommands(e.getPathCommands(i,M,R,r.fontSize)),B&&this._italic(P,t?{x:M+I/2,y:R}:void 0));const v=r.fontWeight??400;return v in Cl&&(v===700||v==="bold")&&g!=="bold"&&P.bold(Cl[v]*r.fontSize*.05),P.style={fill:r.color,stroke:r.textStrokeWidth?r.textStrokeColor:"none",strokeWidth:r.textStrokeWidth?r.textStrokeWidth*r.fontSize*.03:0},this.path=P,this.glyphBox=this.getGlyphBoundingBox(),this}_italic(A,e){A.skew(-.24,0,e||{y:this.inlineBox.top+this.baseline,x:this.inlineBox.left+this.inlineBox.width/2})}getGlyphMinMax(A,e,t){var i;if((i=this.path.curves[0])!=null&&i.curves.length)return this.path.getMinMax(A,e,t)}getGlyphBoundingBox(A){const e=this.getGlyphMinMax(void 0,void 0,A);if(!e)return;const{min:t,max:i}=e;return new ue(t.x,t.y,i.x-t.x,i.y-t.y)}drawTo(A,e={}){const t=this.computedStyle,i={ctx:A,path:this.path,fontSize:t.fontSize,color:t.color,...e};if(this.glyphBox)ei(i);else{A.save(),A.beginPath();const r=this.path.style,n={...r,fill:i.color??r.fill,stroke:i.textStrokeColor??r.stroke,strokeWidth:i.textStrokeWidth?i.textStrokeWidth*i.fontSize:r.strokeWidth,shadowOffsetX:(i.shadowOffsetX??0)*i.fontSize,shadowOffsetY:(i.shadowOffsetY??0)*i.fontSize,shadowBlur:(i.shadowBlur??0)*i.fontSize,shadowColor:i.shadowColor};Js(A,n),A.font=`${i.fontSize}px ${i.fontFamily}`,this.isVertical?(A.textBaseline="middle",A.fillText(this.content,this.inlineBox.left,this.inlineBox.top+this.inlineBox.height/2)):(A.textBaseline="alphabetic",A.fillText(this.content,this.inlineBox.left,this.inlineBox.top+this.baseline)),A.restore()}}}function Ql(){const s=new Map;async function A(t){if(!s.has(t)){s.set(t,t);try{s.set(t,await fetch(t).then(i=>i.text()))}catch(i){console.warn(i),s.delete(t)}}}function e(t){return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("blob://")}return{loaded:s,needsLoad:e,load:A}}function yl(s){const A=new Map;function e(t){let i=A.get(t);if(!i){const r=Xs(s.needsLoad(t)?s.loaded.get(t)??t:t),n=Zs(r);i={dom:r,pathSet:n},A.set(t,i)}return i}return{parsed:A,parse:e}}function Dn(s,A){return typeof s=="number"?s:s.endsWith("%")?(s=s.substring(0,s.length-1),Math.ceil(Number(s)/100*A.total)):s.endsWith("rem")?(s=s.substring(0,s.length-3),Number(s)*A.fontSize):s.endsWith("em")?(s=s.substring(0,s.length-2),Number(s)*A.fontSize):Number(s)}function ml(s){const A=Ut(s)?{}:s;return Object.keys(A).reduce((e,t)=>{let i=A[t];const r=wl(t),n=wl(i);return r&&(t=r),n&&(i=n),e[t]=i,e},{})}function Ut(s){return!s||s==="none"}function Id(s,A){const e=Object.keys(s),t=Object.keys(A);return Array.from(new Set([...e,...t])).every(r=>ti(s[r],A[r]))}function ti(s,A){const e=typeof s;return e===typeof A?e==="object"?Id(s,A):s===A:!1}function wl(s){const A=s.startsWith("#")?s.slice(1):s;if(!/^(?:[0-9A-F]{3}|[0-9A-F]{6})$/i.test(A))return null;const t=A.length===3?A.split("").map(o=>o+o).join(""):A,i=Number.parseInt(t.slice(0,2),16),r=Number.parseInt(t.slice(2,4),16),n=Number.parseInt(t.slice(4,6),16);return`rgb(${i}, ${r}, ${n})`}function bn(s){if(!s)return s;const A={};for(const e in s)s[e]!==""&&s[e]!==void 0&&(A[e]=s[e]);return A}class Bd{constructor(A,e={},t){u(this,"inlineBox",new ue);this.content=A,this.style=e,this.parent=t,this.updateComputedStyle().initCharacters()}get computedContent(){const A=this.computedStyle;return A.textTransform==="uppercase"?this.content.toUpperCase():A.textTransform==="lowercase"?this.content.toLowerCase():this.content}updateComputedStyle(){return this.computedStyle={...this.parent.computedStyle,...bn(this.style)},this}initCharacters(){const A=[];let e=0;for(const t of this.computedContent)A.push(new dd(t,e++,this));return this.characters=A,this}}class ji{constructor(A,e){u(this,"lineBox",new ue);u(this,"fragments",[]);this.style=A,this.parentStyle=e,this.updateComputedStyle()}updateComputedStyle(){return this.computedStyle={...bn(this.parentStyle),...bn(this.style)},this}addFragment(A,e){const t=new Bd(A,e,this);return this.fragments.push(t),t}}function mB(s){return s}const ui=class ui{_styleToDomStyle(A){const e={};for(const t in A){const i=A[t];ui.notZeroStyles.has(t)&&i===0||(typeof i=="number"&&ui.pxStyles.has(t)?e[t]=`${i}px`:e[t]=i)}return e}createParagraphDom(A,e){const t=document.createDocumentFragment(),i=document.createElement("section"),r={...e},n=e.writingMode.includes("horizontal");switch(e.textAlign){case"start":case"left":r.justifyContent="flex-start";break;case"center":r.justifyContent="center";break;case"end":case"right":r.justifyContent="flex-end";break}switch(e.verticalAlign){case"top":r.alignItems="flex-start";break;case"middle":r.alignItems="center";break;case"bottom":r.alignItems="flex-end";break}const o=!!(r.justifyContent||r.alignItems);Object.assign(i.style,{...this._styleToDomStyle({...r,boxSizing:r.boxSizing??"border-box",display:r.display??(o?"inline-flex":void 0),width:r.width??"max-content",height:r.height??"max-content"}),whiteSpace:"pre-wrap",wordBreak:"break-all",position:"fixed",visibility:"hidden"});const a=document.createElement("ul");return Object.assign(a.style,{verticalAlign:"inherit",listStyleType:"inherit",padding:"0",margin:"0",width:o&&n?"100%":void 0,height:o&&!n?"100%":void 0}),A.forEach(l=>{const h=document.createElement("li");Object.assign(h.style,{verticalAlign:"inherit",...this._styleToDomStyle(l.style)}),l.fragments.forEach(g=>{const f=document.createElement("span");Object.assign(f.style,{verticalAlign:"inherit",...this._styleToDomStyle(g.style)}),f.appendChild(document.createTextNode(g.content)),h.appendChild(f)}),a.appendChild(h)}),i.appendChild(a),t.appendChild(i),document.body.appendChild(t),{dom:i,destory:()=>{var l;return(l=i.parentNode)==null?void 0:l.removeChild(i)}}}measureDomText(A){const e=document.createRange();e.selectNodeContents(A);const t=A.data??"";let i=0;return Array.from(t).map(r=>{var g;const n=i+=t.substring(i).indexOf(r),o=n+r.length;i+=r.length,e.setStart(A,Math.max(n,0)),e.setEnd(A,o);const a=((g=e.getClientRects)==null?void 0:g.call(e))??[e.getBoundingClientRect()];let l=a[a.length-1];a.length>1&&l.width<2&&(l=a[a.length-2]);const h=e.toString();if(h!==""&&l&&l.width+l.height!==0)return{content:h,top:l.top,left:l.left,height:l.height,width:l.width}}).filter(Boolean)}measureDom(A){const e=[],t=[],i=[];return A.querySelectorAll("li").forEach((r,n)=>{const o=r.getBoundingClientRect();e.push({paragraphIndex:n,left:o.left,top:o.top,width:o.width,height:o.height}),r.querySelectorAll(":scope > *").forEach((a,l)=>{const h=a.getBoundingClientRect();t.push({paragraphIndex:n,fragmentIndex:l,left:h.left,top:h.top,width:h.width,height:h.height});let g=0;!a.children.length&&a.firstChild instanceof window.Text?this.measureDomText(a.firstChild).forEach(f=>{i.push({...f,newParagraphIndex:-1,paragraphIndex:n,fragmentIndex:l,characterIndex:g++,textWidth:-1,textHeight:-1})}):a.querySelectorAll(":scope > *").forEach(f=>{f.firstChild instanceof window.Text&&this.measureDomText(f.firstChild).forEach(I=>{i.push({...I,newParagraphIndex:-1,paragraphIndex:n,fragmentIndex:l,characterIndex:g++,textWidth:-1,textHeight:-1})})})})}),{paragraphs:e,fragments:t,characters:i}}measureParagraphDom(A,e){const t=e.getBoundingClientRect(),i=this.measureDom(e);i.paragraphs.forEach(o=>{const a=A[o.paragraphIndex];a.lineBox.left=o.left-t.left,a.lineBox.top=o.top-t.top,a.lineBox.width=o.width,a.lineBox.height=o.height}),i.fragments.forEach(o=>{const a=A[o.paragraphIndex].fragments[o.fragmentIndex];a.inlineBox.left=o.left-t.left,a.inlineBox.top=o.top-t.top,a.inlineBox.width=o.width,a.inlineBox.height=o.height});const r=[];let n=0;return i.characters.forEach(o=>{const{paragraphIndex:a,fragmentIndex:l,characterIndex:h}=o;r.push({...o,newParagraphIndex:a,left:o.left-t.left,top:o.top-t.top});const g=A[a].fragments[l].characters[h],{fontHeight:f,isVertical:I}=g,d=r[n];g.inlineBox.left=d.left,g.inlineBox.top=d.top,g.inlineBox.width=d.width,g.inlineBox.height=d.height,I?(g.lineBox.left=d.left+(d.width-f)/2,g.lineBox.top=d.top,g.lineBox.width=f,g.lineBox.height=d.height):(g.lineBox.left=d.left,g.lineBox.top=d.top+(d.height-f)/2,g.lineBox.width=d.width,g.lineBox.height=f),n++}),{paragraphs:A,boundingBox:new ue(0,0,t.width,t.height)}}measure(A,e,t){let i;t||({dom:t,destory:i}=this.createParagraphDom(A,e));const r=this.measureParagraphDom(A,t);return i==null||i(),r}};u(ui,"notZeroStyles",new Set(["width","height"])),u(ui,"pxStyles",new Set(["width","height","fontSize","letterSpacing","textStrokeWidth","textIndent","shadowOffsetX","shadowOffsetY","shadowBlur","marginLeft","marginTop","marginRight","marginBottom","paddingLeft","paddingTop","paddingRight","paddingBottom"]));let xn=ui;class Ed{constructor(){u(this,"eventListeners",new Map)}addEventListener(A,e,t){const i={value:e,options:t},r=this.eventListeners.get(A);return r?Array.isArray(r)?r.push(i):this.eventListeners.set(A,[r,i]):this.eventListeners.set(A,i),this}removeEventListener(A,e,t){var r,n;if(!e)return this.eventListeners.delete(A),this;const i=this.eventListeners.get(A);if(!i)return this;if(Array.isArray(i)){const o=[];for(let a=0,l=i.length;a<l;a++){const h=i[a];(h.value!==e||typeof t=="object"&&(t!=null&&t.once)&&(typeof h.options=="boolean"||!((r=h.options)!=null&&r.once)))&&o.push(h)}o.length?this.eventListeners.set(A,o.length===1?o[0]:o):this.eventListeners.delete(A)}else i.value===e&&(typeof t=="boolean"||!(t!=null&&t.once)||typeof i.options=="boolean"||(n=i.options)!=null&&n.once)&&this.eventListeners.delete(A);return this}removeAllListeners(){return this.eventListeners.clear(),this}hasEventListener(A){return this.eventListeners.has(A)}dispatchEvent(A,e){var i,r;const t=this.eventListeners.get(A);if(t){if(Array.isArray(t))for(let n=t.length,o=0;o<n;o++){const a=t[o];typeof a.options=="object"&&((i=a.options)!=null&&i.once)&&this.off(A,a.value,a.options),a.value.apply(this,[e])}else typeof t.options=="object"&&((r=t.options)!=null&&r.once)&&this.off(A,t.value,t.options),t.value.apply(this,[e]);return!0}else return!1}on(A,e,t){return this.addEventListener(A,e,t)}once(A,e){return this.addEventListener(A,e,{once:!0})}off(A,e,t){return this.removeEventListener(A,e,t)}emit(A,e){this.dispatchEvent(A,e)}}function pd(){const s=new iA,A=Ql(),e=yl(A);return{name:"background",pathSet:s,load:async t=>{const{backgroundImage:i}=t.style;i&&A.needsLoad(i)&&await A.load(i)},update:t=>{s.paths.length=0;const{style:i,lineBox:r,isVertical:n}=t;if(Ut(i.backgroundImage))return;const{pathSet:o}=e.parse(i.backgroundImage),a=o.getBoundingBox(!0),l=new Je;if(l.translate(-a.x,-a.y),n){l.scale(r.height/a.width,r.width/a.height);const h=r.height/2,g=r.width/2;l.translate(-h,-g),l.rotate(-Math.PI/2),l.translate(g,h)}else l.scale(r.width/a.width,r.height/a.height);l.translate(r.x,r.y),o.paths.forEach(h=>{s.paths.push(h.clone().applyTransform(l))})},render:(t,i)=>{const{boundingBox:r,computedStyle:n}=i;Ut(n.backgroundColor)||(t.fillStyle=n.backgroundColor,t.fillRect(...r.array)),s.paths.forEach(o=>{if(ei({ctx:t,path:o,fontSize:n.fontSize}),i.debug){const a=new iA([o]).getBoundingBox();a&&t.strokeRect(a.x,a.y,a.width,a.height)}})}}}function Sn(s){const{highlight:A,highlightImage:e,highlightReferImage:t,highlightColormap:i,highlightLine:r,highlightSize:n,highlightThickness:o}=s;return{image:(A==null?void 0:A.image)??e??"none",referImage:(A==null?void 0:A.referImage)??t??"none",colormap:(A==null?void 0:A.colormap)??i??"none",line:(A==null?void 0:A.line)??r??"none",size:(A==null?void 0:A.size)??n??"cover",thickness:(A==null?void 0:A.thickness)??o??"100%"}}function Cd(){const s=new iA,A=[],e=Ql(),t=yl(e);return{name:"highlight",pathSet:s,load:async i=>{const r=new Set;i.forEachCharacter(n=>{const{computedStyle:o}=n,{image:a,referImage:l}=Sn(o);e.needsLoad(a)&&r.add(a),e.needsLoad(l)&&r.add(l)}),await Promise.all(Array.from(r).map(n=>e.load(n)))},update:i=>{A.length=0,s.paths.length=0;let r=[],n,o;i.forEachCharacter(a=>{const{computedStyle:l}=a,h=Sn(l),{image:g,colormap:f,line:I,size:d,thickness:C}=h;if(Ut(g))n!=null&&n.length&&(n=[],r.push(n));else{const{inlineBox:B,isVertical:M}=a,{fontSize:R}=l;(!o||ti(o.image,g)&&ti(o.colormap,f)&&ti(o.line,I)&&ti(o.size,d)&&ti(o.thickness,C))&&(n!=null&&n.length)&&(M?n[0].inlineBox.left===B.left:n[0].inlineBox.top===B.top)&&n[0].fontSize===R?n.push(a):(n=[],n.push(a),r.push(n))}o=h}),r=r.filter(a=>a.length);for(let a=0;a<r.length;a++){const l=r[a],h=l[0],g=ue.from(...l.filter(q=>q.glyphBox).map(q=>q.glyphBox)),{computedStyle:f,isVertical:I,inlineBox:d,glyphBox:C=d,strikeoutPosition:B,underlinePosition:M}=h,{fontSize:R}=f,{image:_,referImage:P,colormap:v,line:w,size:D,thickness:x}=Sn(f),L=Dn(x,{fontSize:R,total:g.width})/g.width,$=ml(v),{pathSet:K,dom:J}=t.parse(_),Z=K.getBoundingBox(!0),Y=R/Z.width*2,O=new ue().copy(g);I&&(O.width=g.height,O.height=g.width,O.left=g.left+g.width);const Ae=Math.floor(O.width);let G=Ae;D!=="cover"&&(G=Dn(D,{fontSize:R,total:g.width})||Ae,O.width=G);const W=!Ut(P)&&Ut(w);if(W)Z.copy(t.parse(P).pathSet.getBoundingBox(!0));else{let q;if(Ut(w))if(Z.width/Z.height>4){q="underline";const j=J.getAttribute("viewBox");if(j){const[se,X,ae,ie]=j.split(" ").map(z=>Number(z)),le=X+ie/2;Z.y<le&&Z.y+Z.height>le?q="line-through":Z.y+Z.height<le?q="overline":q="underline"}}else q="outline";else q=w;switch(q){case"outline":{const j=O.width*.2,se=O.height*.2;I?(O.x-=se/2,O.y-=j/2,O.x-=O.height):(O.x-=j/2,O.y-=se/2),O.width+=j,O.height+=se;break}case"overline":O.height=Z.height*Y,I?O.x=d.left+d.width:O.y=d.top;break;case"line-through":O.height=Z.height*Y,I?O.x=d.left+d.width-B+O.height/2:O.y=d.top+B-O.height/2;break;case"underline":O.height=Z.height*Y,I?O.x=C.left+C.width-M:O.y=d.top+M;break}}const oe=new Je;if(oe.translate(-Z.x,-Z.y),oe.scale(O.width/Z.width,O.height/Z.height),I){const q=O.width/2,j=O.height/2;W||oe.translate(-q,-j),oe.rotate(-Math.PI/2),W||oe.translate(j,q)}oe.translate(O.x,O.y);for(let q=0;q<Math.ceil(Ae/G);q++){const j=oe.clone();I?j.translate(0,q*O.width):j.translate(q*O.width,0),K.paths.forEach(se=>{const X=se.clone().applyTransform(j);X.style.strokeWidth&&(X.style.strokeWidth*=Y*L),X.style.strokeMiterlimit&&(X.style.strokeMiterlimit*=Y),X.style.strokeDashoffset&&(X.style.strokeDashoffset*=Y),X.style.strokeDasharray&&(X.style.strokeDasharray=X.style.strokeDasharray.map(ae=>ae*Y)),X.style.fill&&X.style.fill in $&&(X.style.fill=$[X.style.fill]),X.style.stroke&&X.style.stroke in $&&(X.style.stroke=$[X.style.stroke]),s.paths.push(X),Ae!==G&&(I?A[s.paths.length-1]=new ue(g.left-g.width*2,g.top,g.width*4,g.height):A[s.paths.length-1]=new ue(g.left,g.top-g.height*2,g.width,g.height*4))})}}},renderOrder:-1,getBoundingBox:()=>{const i=[];return s.paths.forEach((r,n)=>{const o=A[n];let a=r.getBoundingBox();if(o){const l=Math.max(a.x,o.x),h=Math.max(a.y,o.y),g=Math.min(a.right,o.right),f=Math.min(a.bottom,o.bottom);a=new ue(l,h,g-l,f-h)}i.push(a)}),ue.from(...i)},render:(i,r)=>{s.paths.forEach((n,o)=>{if(ei({ctx:i,path:n,fontSize:r.computedStyle.fontSize,clipRect:A[o]}),r.debug){const a=new iA([n]).getBoundingBox();a&&i.strokeRect(a.x,a.y,a.width,a.height)}})}}}function Qd(s,A){return`<svg width="${s*2}" height="${s*2}" xmlns="http://www.w3.org/2000/svg">
861
+ <circle cx="${s}" cy="${s}" r="${s}" fill="${A}" />
862
+ </svg>`}function yd(){const s=new iA;return{name:"listStyle",pathSet:s,update:A=>{s.paths.length=0;const{paragraphs:e,isVertical:t,fontSize:i}=A,r=i*.45;e.forEach(n=>{const{computedStyle:o}=n,{color:a,listStyleImage:l,listStyleColormap:h,listStyleSize:g,listStyleType:f}=o,I=ml(h);let d=g,C;if(!Ut(l))C=l;else if(!Ut(f)){const _=i*.38/2;switch(d=d==="cover"?_*2:d,f){case"disc":C=Qd(_,String(a));break}}if(!C)return;const B=Zs(C),M=B.getBoundingBox();let R;n.fragments.forEach(_=>{_.characters.forEach(P=>{const{inlineBox:v}=P;if(t?(R==null?void 0:R.inlineBox.left)!==v.left:(R==null?void 0:R.inlineBox.top)!==v.top){R=P;const w=d==="cover"?1:Dn(d,{total:i,fontSize:i})/i,D=new Je;if(t){const x=i/M.height*w;D.translate(-M.left,-M.top).rotate(Math.PI/2).scale(x,x).translate(v.left+(v.width-M.height*x)/2,v.top-r)}else{const x=i/M.height*w;D.translate(-M.left,-M.top).scale(x,x).translate(v.left-M.width*x-r,v.top+(v.height-M.height*x)/2)}s.paths.push(...B.paths.map(x=>{const L=x.clone();return L.applyTransform(D),L.style.fill&&L.style.fill in I&&(L.style.fill=I[L.style.fill]),L.style.stroke&&L.style.stroke in I&&(L.style.stroke=I[L.style.stroke]),L}))}})})})}}}function md(){return{name:"outline"}}const hA=new F,Ai=new Je,gA=new Je;function wd(){return{name:"render",getBoundingBox:s=>{const{characters:A,fontSize:e,effects:t}=s,i=[];return A.forEach(r=>{t==null||t.forEach(n=>{if(!r.glyphBox)return;const o=r.glyphBox.clone(),a=Mn(s,n);hA.set(o.left,o.top),hA.applyMatrix3(a),o.left=hA.x,o.top=hA.y,hA.set(o.right,o.bottom),hA.applyMatrix3(a),o.width=hA.x-o.left,o.height=hA.y-o.top;const l=(n.shadowOffsetX??0)*e,h=(n.shadowOffsetY??0)*e,g=Math.max(.1,n.textStrokeWidth??0)*e;o.left+=l-g,o.top+=h-g,o.width+=g*2,o.height+=g*2,i.push(o)})}),i.length?ue.from(...i):void 0},render:(s,A)=>{const{paragraphs:e,glyphBox:t,effects:i}=A;i?i.forEach(r=>{Lr(r,t,s),s.save();const[n,o,a,l,h,g]=Mn(A,r).transpose().elements;s.transform(n,l,o,h,a,g),A.forEachCharacter(f=>{f.drawTo(s,r)}),s.restore()}):e.forEach(r=>{r.fragments.forEach(n=>{n.characters.forEach(o=>{o.drawTo(s)})})}),A.debug&&e.forEach(r=>{s.strokeRect(r.lineBox.x,r.lineBox.y,r.lineBox.width,r.lineBox.height)})}}}function Mn(s,A){const{fontSize:e,glyphBox:t}=s,i=(A.translateX??0)*e,r=(A.translateY??0)*e,n=Math.PI*2,o=(A.skewX??0)/360*n,a=(A.skewY??0)/360*n,{left:l,top:h,width:g,height:f}=t,I=l+g/2,d=h+f/2;return Ai.identity(),gA.makeTranslation(i,r),Ai.multiply(gA),gA.makeTranslation(I,d),Ai.multiply(gA),gA.set(1,Math.tan(o),0,Math.tan(a),1,0,0,0,1),Ai.multiply(gA),gA.makeTranslation(-I,-d),Ai.multiply(gA),Ai.clone()}function vd(){const s=new iA;return{name:"textDecoration",pathSet:s,update:A=>{s.paths.length=0;const e=[];let t,i;A.forEachCharacter(r=>{const{computedStyle:n,isVertical:o,inlineBox:a,underlinePosition:l,underlineThickness:h,strikeoutPosition:g,strikeoutSize:f}=r,{color:I,textDecoration:d,writingMode:C}=n;if(Ut(d))i=void 0;else{let B=!1;if((i==null?void 0:i.textDecoration)===d&&(i==null?void 0:i.writingMode)===C&&(i==null?void 0:i.color)===I&&(o?t[0].inlineBox.left===a.left:t[0].inlineBox.top===a.top))switch(d){case"underline":t[0].underlinePosition===l&&t[0].underlineThickness===h&&(B=!0);break;case"line-through":t[0].strikeoutPosition===g&&t[0].strikeoutSize===f&&(B=!0);break}B?t.push(r):(t=[],t.push(r),e.push(t)),i=n}}),e.forEach(r=>{const{computedStyle:n,isVertical:o,underlinePosition:a,underlineThickness:l,strikeoutPosition:h,strikeoutSize:g}=r[0],{color:f,textDecoration:I}=n,d=ue.from(...r.map(D=>D.inlineBox)),{left:C,top:B,width:M,height:R}=d;let _=o?C+M:B;const P=o?-1:1;let v=0;switch(I){case"overline":v=l*2;break;case"underline":_+=P*a,v=l*2;break;case"line-through":_+=P*h,v=g*2;break}_-=v;let w;o?w=new ke([{type:"M",x:_,y:B},{type:"L",x:_,y:B+R},{type:"L",x:_+v,y:B+R},{type:"L",x:_+v,y:B},{type:"Z"}],{fill:f}):w=new ke([{type:"M",x:C,y:_},{type:"L",x:C+M,y:_},{type:"L",x:C+M,y:_+v},{type:"L",x:C,y:_+v},{type:"Z"}],{fill:f}),s.paths.push(w)})},render:(A,e)=>{const{effects:t,computedStyle:i}=e;t?t.forEach(r=>{A.save();const[n,o,a,l,h,g]=Mn(e,r).transpose().elements;A.transform(n,l,o,h,a,g),s.paths.forEach(f=>{ei({ctx:A,path:f,fontSize:i.fontSize,...r})}),A.restore()}):s.paths.forEach(r=>{ei({ctx:A,path:r,fontSize:i.fontSize})})}}}const Rn=ja();class vl extends Ed{constructor(e={}){super();u(this,"debug");u(this,"content");u(this,"style");u(this,"effects");u(this,"measureDom");u(this,"needsUpdate",!0);u(this,"computedStyle",{...Rn});u(this,"paragraphs",[]);u(this,"lineBox",new ue);u(this,"rawGlyphBox",new ue);u(this,"glyphBox",new ue);u(this,"pathBox",new ue);u(this,"boundingBox",new ue);u(this,"measurer",new xn);u(this,"plugins",new Map);u(this,"fonts");this.debug=e.debug??!1,this.content=e.content??"",this.style=e.style??{},this.measureDom=e.measureDom,this.effects=e.effects,this.fonts=e.fonts,this.use(pd()).use(md()).use(yd()).use(vd()).use(Cd()).use(wd()),this.updateParagraphs()}get fontSize(){return this.computedStyle.fontSize}get isVertical(){return this.computedStyle.writingMode.includes("vertical")}get characters(){return this.paragraphs.flatMap(e=>e.fragments.flatMap(t=>t.characters))}use(e){return this.plugins.set(e.name,e),this}forEachCharacter(e){return this.paragraphs.forEach((t,i)=>{t.fragments.forEach((r,n)=>{r.characters.forEach((o,a)=>{e(o,{paragraphIndex:i,fragmentIndex:n,characterIndex:a})})})}),this}async load(){await Promise.all(Array.from(this.plugins.values()).map(e=>{var t;return(t=e.load)==null?void 0:t.call(e,this)}))}updateParagraphs(){this.computedStyle={...Rn,...this.style};let{content:e,computedStyle:t}=this;const i=[];if(typeof e=="string"){const r=new ji({},t);r.addFragment(e),i.push(r)}else{e=Array.isArray(e)?e:[e];for(const r of e)if(typeof r=="string"){const n=new ji({},t);n.addFragment(r),i.push(n)}else if(Array.isArray(r)){const n=new ji({},t);r.forEach(o=>{if(typeof o=="string")n.addFragment(o);else{const{content:a,...l}=o;a!==void 0&&n.addFragment(a,l)}}),i.push(n)}else if("fragments"in r){const{fragments:n,...o}=r,a=new ji(o,t);n.forEach(l=>{const{content:h,...g}=l;h!==void 0&&a.addFragment(h,g)}),i.push(a)}else if("content"in r){const{content:n,...o}=r;if(n!==void 0){const a=new ji(o,t);a.addFragment(n),i.push(a)}}}return this.paragraphs=i,this}measure(e=this.measureDom){const t={paragraphs:this.paragraphs,lineBox:this.lineBox,rawGlyphBox:this.rawGlyphBox,glyphBox:this.glyphBox,pathBox:this.pathBox,boundingBox:this.boundingBox};this.updateParagraphs();const i=this.measurer.measure(this.paragraphs,this.computedStyle,e);this.paragraphs=i.paragraphs,this.lineBox=i.boundingBox,this.characters.forEach(r=>{r.update(this.fonts)}),this.rawGlyphBox=this.getGlyphBox(),Array.from(this.plugins.values()).sort((r,n)=>(r.updateOrder??0)-(n.updateOrder??0)).forEach(r=>{var n;(n=r.update)==null||n.call(r,this)}),this.glyphBox=this.getGlyphBox(),this.updatePathBox().updateBoundingBox();for(const r in t)i[r]=this[r],this[r]=t[r];return this.emit("measure",{text:this,result:i}),i}getGlyphBox(){const e=F.MAX,t=F.MIN;return this.characters.forEach(i=>{if(!i.getGlyphMinMax(e,t)){const{inlineBox:r}=i,n=new F(r.left,r.top),o=new F(r.left+r.width,r.top+r.height);e.min(n,o),t.max(n,o)}}),new ue(e.x,e.y,t.x-e.x,t.y-e.y)}updatePathBox(){return this.pathBox=ue.from(this.glyphBox,...Array.from(this.plugins.values()).map(e=>{var t;return e.getBoundingBox?e.getBoundingBox(this):(t=e.pathSet)==null?void 0:t.getBoundingBox()}).filter(Boolean)),this}updateBoundingBox(){return this.boundingBox=ue.from(this.rawGlyphBox,this.lineBox,this.pathBox),this}requestUpdate(){return this.needsUpdate=!0,this}update(){const e=this.measure();for(const t in e)this[t]=e[t];return this.emit("update",{text:this}),this.needsUpdate=!1,this}render(e){const{view:t,pixelRatio:i=2}=e,r=t.getContext("2d");r&&(this.needsUpdate&&this.update(),ld(r,i,this.boundingBox),hd(r,this),Array.from(this.plugins.values()).sort((n,o)=>(n.renderOrder??0)-(o.renderOrder??0)).forEach(n=>{var o;if(n.render)(o=n.render)==null||o.call(n,r,this);else if(n.pathSet){const a=this.computedStyle;n.pathSet.paths.forEach(l=>{ei({ctx:r,path:l,fontSize:a.fontSize})})}}),this.emit("render",{text:this,view:t,pixelRatio:i}))}}var _d=Object.defineProperty,Gr=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&_d(A,e,i),i};class ii extends Jt{constructor(e,t){super();u(this,"effects");u(this,"measureDom");u(this,"fonts");u(this,"texture",new GA);u(this,"baseText",new vl);u(this,"measureResult");this.parent=e,this.setProperties(t)}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"content":case"effects":case"measureDom":case"fonts":case"split":this.parent.requestRedraw();break}}_updateText(){this.baseText.style={justifyContent:"center",alignItems:"center",textAlign:"center",...this.parent.style.toJSON()},this.baseText.content=this.content??"",this.baseText.effects=this.effects,this.baseText.fonts=this.fonts,this.baseText.measureDom=this.measureDom,this.baseText.requestUpdate()}measure(){return this._updateText(),this.baseText.measure()}updateMeasure(){this.measureResult=this.measure();const e=this.measureResult.boundingBox.width,t=this.measureResult.boundingBox.height,{left:i,top:r,width:n,height:o=t}=this.parent.style;return this.parent.position.x=i+Math.min(0,((n||e)-e)/2),this.parent.position.y=r+Math.min(0,((o||t)-t)/2),this.parent.size.width=e,this.parent.size.height=t,this}canDraw(){var e;return!!(this.content&&((e=this.texture)!=null&&e.valid))}draw(){const e=this.parent.context;this.baseText.render({pixelRatio:this.texture.pixelRatio,view:this.texture.source}),this.texture.requestUpload();const{width:t,height:i}=this.parent.size;e.fillStyle=this.texture,e.textureTransform=new dt().scale(1/t,1/i),e.fill()}}Gr([S({default:""})],ii.prototype,"content"),Gr([S()],ii.prototype,"effects"),Gr([Be()],ii.prototype,"measureDom"),Gr([Be()],ii.prototype,"fonts");var Dd=Object.getOwnPropertyDescriptor,bd=(s,A,e,t)=>{for(var i=t>1?void 0:t?Dd(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};c.Node2D=class extends c.CanvasItem{constructor(e,t=[]){super();u(this,"position",new yt);u(this,"rotation",0);u(this,"scale",new yt(1,1));u(this,"skew",new yt);u(this,"transform",new dt);u(this,"globalPosition",new yt);u(this,"globalRotation",0);u(this,"globalScale",new yt);u(this,"globalSkew",new yt);u(this,"globalTransform",new dt);u(this,"_parentTransformDirtyId");this.setProperties(e).append(t)}_updateTransform(){this.transform.identity().scale(this.scale.x,this.scale.y).skew(this.skew.x,this.skew.y).rotate(this.rotation).translate(this.position.x,this.position.y)}_updateGlobalTransform(){const e=this.getParent();e!=null&&e.globalTransform?(this._parentTransformDirtyId=e.globalTransform.dirtyId,this.globalScale.set(e.globalScale.x*this.scale.x,e.globalScale.y*this.scale.y),this.globalRotation=e.globalRotation+this.rotation,e.globalTransform.multiply(this.transform,this.globalTransform)):(this.globalScale=this.scale.clone(),this.globalRotation=this.rotation,this.globalTransform=this.transform.clone());const[t,i,r,n,o,a]=this.globalTransform.toArray();this.globalPosition.set(r,a),this.globalSkew.x=Math.atan2(i,t)-this.globalRotation,this.globalSkew.y=Math.atan2(n,o)-this.globalRotation,this.requestRelayout()}_transformVertices(e){const[t,i,r,n,o,a]=this.globalTransform.toArray(),l=e.slice();for(let h=e.length,g=0;g<h;g+=2){const f=e[g],I=e[g+1];l[g]=t*f+i*I+r,l[g+1]=n*f+o*I+a}return l}_relayout(e){return this._updateTransform(),this._updateGlobalTransform(),super._relayout(e).map(t=>({...t,vertices:this._transformVertices(t.vertices)}))}_process(e){var i;super._process(e);const t=this.getParent();this._parentTransformDirtyId!==((i=t==null?void 0:t.globalTransform)==null?void 0:i.dirtyId)&&this.requestRelayout()}},c.Node2D=bd([te("Node2D")],c.Node2D);var xd=Object.getOwnPropertyDescriptor,Sd=(s,A,e,t)=>{for(var i=t>1?void 0:t?xd(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};c.BaseElement2D=class extends c.Node2D{constructor(e,t=[]){super();u(this,"size",new yt);u(this,"_text",new ii(this));u(this,"_geometry",new WA(this));u(this,"_fill",new nA(this));u(this,"_outline",new vA(this));u(this,"_shadow",new zA(this));this._updateStyleProperty=this._updateStyleProperty.bind(this),this.style=new Fi,this.setProperties(e).append(t)}get style(){return this._style}set style(e){var i;const t=(...r)=>{this.emit("updateStyleProperty",...r),this._updateStyleProperty(r[0],r[1],r[2],r[3])};e.on("updateProperty",t),(i=this._style)==null||i.off("updateProperty",t),this._style=e}get text(){return this._text}set text(e){this._text.setProperties(e)}get geometry(){return this._geometry}set geometry(e){this._geometry.setProperties(e)}get fill(){return this._fill}set fill(e){this._fill.setProperties(e)}get outline(){return this._outline}set outline(e){this._outline.setProperties(e)}get shadow(){return this._shadow}set shadow(e){this._shadow.setProperties(e)}setProperties(e){if(e){const{style:t,text:i,geometry:r,fill:n,outline:o,shadow:a,...l}=e;t&&this.style.setProperties(t),i&&this.text.setProperties(i),r&&this.geometry.setProperties(r),n&&this.fill.setProperties(n),o&&this.outline.setProperties(o),a&&this.shadow.setProperties(a),super.setProperties(l)}return this}_updateStyleProperty(e,t,i,r){switch(e){case"width":case"height":this.mask instanceof c.BaseElement2D&&(this.mask.size.x=this.size.x,this.mask.size.y=this.size.y);break}switch(e){case"rotate":this.rotation=this.style.rotate*bo,this.requestRelayout();break;case"scaleX":this.scale.x=this.style.scaleX,this.requestRelayout();break;case"scaleY":this.scale.y=this.style.scaleY,this.requestRelayout();break;case"skewX":this.skew.x=this.style.skewX,this.requestRelayout();break;case"skewY":this.skew.y=this.style.skewY,this.requestRelayout();break;case"transform":case"transformOrigin":this.requestRelayout();break;case"opacity":this.opacity=this.style.opacity;break;case"visibility":this.visible=this.style.visibility==="visible";break;case"filter":this.requestRepaint();break;case"maskImage":this._updateMaskImage();break;case"borderRadius":this.requestRedraw();break;case"backgroundColor":this.fill.color=this.style.backgroundColor;break;case"backgroundImage":this.fill.image=this.style.backgroundImage;break;case"borderStyle":case"outlineStyle":this.outline.style=t;break;case"borderWidth":case"outlineWidth":this.outline.width=t;break;case"borderColor":case"outlineColor":this.outline.color=t;break}}_updateMaskImage(){const e="__$style.maskImage",t=this.style.maskImage;if(t&&t!=="none"){const i=this.getNode(e);i?i.src=t:this.appendChild(new c.MaskEffect({name:e,src:t}),"back")}else{const i=this.getNode(e);i&&this.removeChild(i)}}_updateTransform(){const{width:e,height:t}=this.size,[i,r]=Xo(this.style.transformOrigin),n=i*e,o=r*t;this.transform.identity().translate(-n,-o).scale(this.scale.x,this.scale.y).skew(this.skew.x,this.skew.y).rotate(this.rotation),qo(this.style.transform,e,t,this.transform),this.transform.translate(n+this.position.x,o+this.position.y)}_updateGlobalTransform(){super._updateGlobalTransform(),this._updateOverflow()}getRect(){const{width:e,height:t}=this.size,i=0,r=0,n=i+e,o=r+t,[a,l,h,g,f,I]=this.globalTransform.toArray(),d=[[i,r],[i,o],[n,r],[n,o]].map(v=>[a*v[0]+l*v[1]+h,g*v[0]+f*v[1]+I]),C=d.map(v=>v[0]),B=d.map(v=>v[1]),M=Math.min(...C),R=Math.max(...C),_=Math.min(...B),P=Math.max(...B);return new Ms(M,_,R-M,P-_)}_updateOverflow(){if(this.style.overflow==="hidden"){const e=this.getRect();this.mask={x:e.x,y:e.y,width:e.width,height:e.height}}else this.mask=void 0}_draw(){var e,t,i;super._draw(),this.text.canDraw()&&this.text.updateMeasure(),this.fill.canDraw()&&((e=this._tree)==null||e.log(this.name,"draw fill"),this.geometry.draw(),this.fill.draw()),this.outline.canDraw()&&((t=this._tree)==null||t.log(this.name,"draw outline"),this.geometry.draw(),this.outline.draw()),this.text.canDraw()&&((i=this._tree)==null||i.log(this.name,"draw text"),this.geometry.drawRect(),this.text.draw()),this._drawContent()}_drawContent(){}_repaint(e){const t=Vo(this.style.filter);return super._repaint(e).map(i=>({...i,colorMatrix:t.toMatrix4().toArray(!0),colorMatrixOffset:t.toVector4().toArray()}))}canPointerEvents(){return this.style.pointerEvents!=="none"}input(e,t){for(let i=this._children.length-1;i>=0;i--)this._children[i].input(e,t);this.isVisibleInTree()&&this._input(e,t)}_pointerInput(e,t){const{width:i,height:r}=this.size;return e.x>=0&&e.x<i&&e.y>=0&&e.y<r}_input(e,t){switch(t){case"pointerdown":case"pointermove":case"pointerup":{if(this.canPointerEvents()){const{screenX:i,screenY:r}=e;if(i&&r){const[n,o]=this.globalTransform.inverse().applyToPoint(i,r);this._pointerInput({x:n,y:o},t)&&(e.target||(e.target=this),this.emit(t,e))}}break}}}toJSON(){const e=super.toJSON();return{...e,props:{style:this.style.toJSON(),text:this.text.toJSON(),geometry:this.geometry.toJSON(),fill:this.fill.toJSON(),outline:this.outline.toJSON(),shadow:this.shadow.toJSON(),...e.props}}}},c.BaseElement2D=Sd([te("BaseElement2D")],c.BaseElement2D);class Pn extends Fi{constructor(A){super(),this.setProperties(A)}}const _l={left:0,top:0,width:0,height:0};for(const s in _l)pi(Pn,s,{default:_l[s]});var Md=Object.getOwnPropertyDescriptor,Rd=(s,A,e,t)=>{for(var i=t>1?void 0:t?Md(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};c.Element2D=class extends c.BaseElement2D{get style(){return this._style}set style(A){var t;const e=(...i)=>{this.emit("updateStyleProperty",...i),this._updateStyleProperty(i[0],i[1],i[2],i[3])};A.on("updateProperty",e),(t=this._style)==null||t.off("updateProperty",e),this._style=A}constructor(A,e=[]){super(),this.style=new Pn,this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"left":this.position.x=Number(e),this.requestRelayout();break;case"top":this.position.y=Number(e),this.requestRelayout();break;case"width":this.size.width=Number(e),this.requestRedraw();break;case"height":this.size.height=Number(e),this.requestRedraw();break}}},c.Element2D=Rd([te("Element2D")],c.Element2D);var Pd=(()=>{var s=typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:et&&et.tagName.toUpperCase()==="SCRIPT"&&et.src||new URL("index.js",document.baseURI).href;return function(A){A=A||{};var e;e||(e=typeof A<"u"?A:{});var t,i;e.ready=new Promise(function(E,p){t=E,i=p});var r=Object.assign({},e),n="";typeof document<"u"&&document.currentScript&&(n=document.currentScript.src),s&&(n=s),n.indexOf("blob:")!==0?n=n.substr(0,n.replace(/[?#].*/,"").lastIndexOf("/")+1):n="";var o=e.print||console.log.bind(console),a=e.printErr||console.warn.bind(console);Object.assign(e,r),r=null;var l;e.wasmBinary&&(l=e.wasmBinary),e.noExitRuntime,typeof WebAssembly!="object"&&Y("no native wasm support detected");var h,g=!1;function f(E,p,Q){Q=p+Q;for(var m="";!(p>=Q);){var b=E[p++];if(!b)break;if(b&128){var U=E[p++]&63;if((b&224)==192)m+=String.fromCharCode((b&31)<<6|U);else{var k=E[p++]&63;b=(b&240)==224?(b&15)<<12|U<<6|k:(b&7)<<18|U<<12|k<<6|E[p++]&63,65536>b?m+=String.fromCharCode(b):(b-=65536,m+=String.fromCharCode(55296|b>>10,56320|b&1023))}}else m+=String.fromCharCode(b)}return m}var I,d,C,B,M,R,_,P,v;function w(){var E=h.buffer;I=E,e.HEAP8=d=new Int8Array(E),e.HEAP16=B=new Int16Array(E),e.HEAP32=R=new Int32Array(E),e.HEAPU8=C=new Uint8Array(E),e.HEAPU16=M=new Uint16Array(E),e.HEAPU32=_=new Uint32Array(E),e.HEAPF32=P=new Float32Array(E),e.HEAPF64=v=new Float64Array(E)}var D,x=[],L=[],$=[];function K(){var E=e.preRun.shift();x.unshift(E)}var J=0,Z=null;function Y(E){throw e.onAbort&&e.onAbort(E),E="Aborted("+E+")",a(E),g=!0,E=new WebAssembly.RuntimeError(E+". Build with -sASSERTIONS for more info."),i(E),E}function O(E){return E.startsWith("data:application/octet-stream;base64,")}var Ae;if(Ae="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!O(Ae)){var G=Ae;Ae=e.locateFile?e.locateFile(G,n):n+G}function W(){var E=Ae;try{if(E==Ae&&l)return new Uint8Array(l);if(O(E))try{var p=pB(E.slice(37)),Q=new Uint8Array(p.length);for(E=0;E<p.length;++E)Q[E]=p.charCodeAt(E);var m=Q}catch{throw Error("Converting base64 string to bytes failed.")}else m=void 0;var b=m;if(b)return b;throw"both async and sync fetching of the wasm failed"}catch(U){Y(U)}}function oe(){return l||typeof fetch!="function"?Promise.resolve().then(function(){return W()}):fetch(Ae,{credentials:"same-origin"}).then(function(E){if(!E.ok)throw"failed to load wasm binary file at '"+Ae+"'";return E.arrayBuffer()}).catch(function(){return W()})}function q(E){for(;0<E.length;)E.shift()(e)}function j(E){if(E===void 0)return"_unknown";E=E.replace(/[^a-zA-Z0-9_]/g,"$");var p=E.charCodeAt(0);return 48<=p&&57>=p?"_"+E:E}function se(E,p){return E=j(E),function(){return p.apply(this,arguments)}}var X=[{},{value:void 0},{value:null},{value:!0},{value:!1}],ae=[];function ie(E){var p=Error,Q=se(E,function(m){this.name=E,this.message=m,m=Error(m).stack,m!==void 0&&(this.stack=this.toString()+`
863
+ `+m.replace(/^Error(:[^\n]*)?\n/,""))});return Q.prototype=Object.create(p.prototype),Q.prototype.constructor=Q,Q.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},Q}var le=void 0;function z(E){throw new le(E)}var Ie=E=>(E||z("Cannot use deleted val. handle = "+E),X[E].value),nt=E=>{switch(E){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var p=ae.length?ae.pop():X.length;return X[p]={ga:1,value:E},p}},ot=void 0,Oe=void 0;function he(E){for(var p="";C[E];)p+=Oe[C[E++]];return p}var me=[];function He(){for(;me.length;){var E=me.pop();E.M.$=!1,E.delete()}}var ze=void 0,be={};function $e(E,p){for(p===void 0&&z("ptr should not be undefined");E.R;)p=E.ba(p),E=E.R;return p}var Lt={};function is(E){E=ch(E);var p=he(E);return eA(E),p}function Ln(E,p){var Q=Lt[E];return Q===void 0&&z(p+" has unknown type "+is(E)),Q}function rs(){}var Gn=!1;function rh(E){--E.count.value,E.count.value===0&&(E.T?E.U.W(E.T):E.P.N.W(E.O))}function sh(E,p,Q){return p===Q?E:Q.R===void 0?null:(E=sh(E,p,Q.R),E===null?null:Q.na(E))}var nh={};function $I(E,p){return p=$e(E,p),be[p]}var oh=void 0;function ss(E){throw new oh(E)}function ns(E,p){return p.P&&p.O||ss("makeClassHandle requires ptr and ptrType"),!!p.U!=!!p.T&&ss("Both smartPtrType and smartPtr must be specified"),p.count={value:1},fi(Object.create(E,{M:{value:p}}))}function fi(E){return typeof FinalizationRegistry>"u"?(fi=p=>p,E):(Gn=new FinalizationRegistry(p=>{rh(p.M)}),fi=p=>{var Q=p.M;return Q.T&&Gn.register(p,{M:Q},p),p},rs=p=>{Gn.unregister(p)},fi(E))}var os={};function On(E){for(;E.length;){var p=E.pop();E.pop()(p)}}function Ar(E){return this.fromWireType(R[E>>2])}var di={},as={};function EA(E,p,Q){function m(N){N=Q(N),N.length!==E.length&&ss("Mismatched type converter count");for(var H=0;H<E.length;++H)Zt(E[H],N[H])}E.forEach(function(N){as[N]=p});var b=Array(p.length),U=[],k=0;p.forEach((N,H)=>{Lt.hasOwnProperty(N)?b[H]=Lt[N]:(U.push(N),di.hasOwnProperty(N)||(di[N]=[]),di[N].push(()=>{b[H]=Lt[N],++k,k===U.length&&m(b)}))}),U.length===0&&m(b)}function Hn(E){switch(E){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+E)}}function Zt(E,p,Q={}){if(!("argPackAdvance"in p))throw new TypeError("registerType registeredInstance requires argPackAdvance");var m=p.name;if(E||z('type "'+m+'" must have a positive integer typeid pointer'),Lt.hasOwnProperty(E)){if(Q.ua)return;z("Cannot register type '"+m+"' twice")}Lt[E]=p,delete as[E],di.hasOwnProperty(E)&&(p=di[E],delete di[E],p.forEach(b=>b()))}function Jn(E){z(E.M.P.N.name+" instance already deleted")}function pA(){}function Kn(E,p,Q){if(E[p].S===void 0){var m=E[p];E[p]=function(){return E[p].S.hasOwnProperty(arguments.length)||z("Function '"+Q+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+E[p].S+")!"),E[p].S[arguments.length].apply(this,arguments)},E[p].S=[],E[p].S[m.Z]=m}}function eB(E,p){e.hasOwnProperty(E)?(z("Cannot register public name '"+E+"' twice"),Kn(e,E,E),e.hasOwnProperty(void 0)&&z("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),e[E].S[void 0]=p):e[E]=p}function tB(E,p,Q,m,b,U,k,N){this.name=E,this.constructor=p,this.X=Q,this.W=m,this.R=b,this.pa=U,this.ba=k,this.na=N,this.ja=[]}function Yn(E,p,Q){for(;p!==Q;)p.ba||z("Expected null or instance of "+Q.name+", got an instance of "+p.name),E=p.ba(E),p=p.R;return E}function AB(E,p){return p===null?(this.ea&&z("null is not a valid "+this.name),0):(p.M||z('Cannot pass "'+qn(p)+'" as a '+this.name),p.M.O||z("Cannot pass deleted object as a pointer of type "+this.name),Yn(p.M.O,p.M.P.N,this.N))}function iB(E,p){if(p===null){if(this.ea&&z("null is not a valid "+this.name),this.da){var Q=this.fa();return E!==null&&E.push(this.W,Q),Q}return 0}if(p.M||z('Cannot pass "'+qn(p)+'" as a '+this.name),p.M.O||z("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&p.M.P.ca&&z("Cannot convert argument of type "+(p.M.U?p.M.U.name:p.M.P.name)+" to parameter type "+this.name),Q=Yn(p.M.O,p.M.P.N,this.N),this.da)switch(p.M.T===void 0&&z("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:p.M.U===this?Q=p.M.T:z("Cannot convert argument of type "+(p.M.U?p.M.U.name:p.M.P.name)+" to parameter type "+this.name);break;case 1:Q=p.M.T;break;case 2:if(p.M.U===this)Q=p.M.T;else{var m=p.clone();Q=this.xa(Q,nt(function(){m.delete()})),E!==null&&E.push(this.W,Q)}break;default:z("Unsupporting sharing policy")}return Q}function rB(E,p){return p===null?(this.ea&&z("null is not a valid "+this.name),0):(p.M||z('Cannot pass "'+qn(p)+'" as a '+this.name),p.M.O||z("Cannot pass deleted object as a pointer of type "+this.name),p.M.P.ca&&z("Cannot convert argument of type "+p.M.P.name+" to parameter type "+this.name),Yn(p.M.O,p.M.P.N,this.N))}function $t(E,p,Q,m){this.name=E,this.N=p,this.ea=Q,this.ca=m,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,p.R!==void 0?this.toWireType=iB:(this.toWireType=m?AB:rB,this.V=null)}function sB(E,p){e.hasOwnProperty(E)||ss("Replacing nonexistant public symbol"),e[E]=p,e[E].Z=void 0}function nB(E,p){var Q=[];return function(){if(Q.length=0,Object.assign(Q,arguments),E.includes("j")){var m=e["dynCall_"+E];m=Q&&Q.length?m.apply(null,[p].concat(Q)):m.call(null,p)}else m=D.get(p).apply(null,Q);return m}}function vt(E,p){E=he(E);var Q=E.includes("j")?nB(E,p):D.get(p);return typeof Q!="function"&&z("unknown function pointer with signature "+E+": "+p),Q}var ah=void 0;function ls(E,p){function Q(U){b[U]||Lt[U]||(as[U]?as[U].forEach(Q):(m.push(U),b[U]=!0))}var m=[],b={};throw p.forEach(Q),new ah(E+": "+m.map(is).join([", "]))}function Wn(E,p,Q,m,b){var U=p.length;2>U&&z("argTypes array size mismatch! Must at least get return value and 'this' types!");var k=p[1]!==null&&Q!==null,N=!1;for(Q=1;Q<p.length;++Q)if(p[Q]!==null&&p[Q].V===void 0){N=!0;break}var H=p[0].name!=="void",T=U-2,V=Array(T),ee=[],ge=[];return function(){if(arguments.length!==T&&z("function "+E+" called with "+arguments.length+" arguments, expected "+T+" args!"),ge.length=0,ee.length=k?2:1,ee[0]=b,k){var Re=p[1].toWireType(ge,this);ee[1]=Re}for(var fe=0;fe<T;++fe)V[fe]=p[fe+2].toWireType(ge,arguments[fe]),ee.push(V[fe]);if(fe=m.apply(null,ee),N)On(ge);else for(var ut=k?1:2;ut<p.length;ut++){var _t=ut===1?Re:V[ut-2];p[ut].V!==null&&p[ut].V(_t)}return Re=H?p[0].fromWireType(fe):void 0,Re}}function zn(E,p){for(var Q=[],m=0;m<E;m++)Q.push(_[p+4*m>>2]);return Q}function Vn(E){4<E&&--X[E].ga===0&&(X[E]=void 0,ae.push(E))}function qn(E){if(E===null)return"null";var p=typeof E;return p==="object"||p==="array"||p==="function"?E.toString():""+E}function oB(E,p){switch(p){case 2:return function(Q){return this.fromWireType(P[Q>>2])};case 3:return function(Q){return this.fromWireType(v[Q>>3])};default:throw new TypeError("Unknown float type: "+E)}}function aB(E,p,Q){switch(p){case 0:return Q?function(m){return d[m]}:function(m){return C[m]};case 1:return Q?function(m){return B[m>>1]}:function(m){return M[m>>1]};case 2:return Q?function(m){return R[m>>2]}:function(m){return _[m>>2]};default:throw new TypeError("Unknown integer type: "+E)}}function lB(E,p){for(var Q="",m=0;!(m>=p/2);++m){var b=B[E+2*m>>1];if(b==0)break;Q+=String.fromCharCode(b)}return Q}function hB(E,p,Q){if(Q===void 0&&(Q=2147483647),2>Q)return 0;Q-=2;var m=p;Q=Q<2*E.length?Q/2:E.length;for(var b=0;b<Q;++b)B[p>>1]=E.charCodeAt(b),p+=2;return B[p>>1]=0,p-m}function gB(E){return 2*E.length}function cB(E,p){for(var Q=0,m="";!(Q>=p/4);){var b=R[E+4*Q>>2];if(b==0)break;++Q,65536<=b?(b-=65536,m+=String.fromCharCode(55296|b>>10,56320|b&1023)):m+=String.fromCharCode(b)}return m}function uB(E,p,Q){if(Q===void 0&&(Q=2147483647),4>Q)return 0;var m=p;Q=m+Q-4;for(var b=0;b<E.length;++b){var U=E.charCodeAt(b);if(55296<=U&&57343>=U){var k=E.charCodeAt(++b);U=65536+((U&1023)<<10)|k&1023}if(R[p>>2]=U,p+=4,p+4>Q)break}return R[p>>2]=0,p-m}function fB(E){for(var p=0,Q=0;Q<E.length;++Q){var m=E.charCodeAt(Q);55296<=m&&57343>=m&&++Q,p+=4}return p}var dB={};function lh(E){var p=dB[E];return p===void 0?he(E):p}var hs=[];function IB(E){var p=hs.length;return hs.push(E),p}function BB(E,p){for(var Q=Array(E),m=0;m<E;++m)Q[m]=Ln(_[p+4*m>>2],"parameter "+m);return Q}var hh=[],EB=[null,[],[]];le=e.BindingError=ie("BindingError"),e.count_emval_handles=function(){for(var E=0,p=5;p<X.length;++p)X[p]!==void 0&&++E;return E},e.get_first_emval=function(){for(var E=5;E<X.length;++E)if(X[E]!==void 0)return X[E];return null},ot=e.PureVirtualError=ie("PureVirtualError");for(var gh=Array(256),gs=0;256>gs;++gs)gh[gs]=String.fromCharCode(gs);Oe=gh,e.getInheritedInstanceCount=function(){return Object.keys(be).length},e.getLiveInheritedInstances=function(){var E=[],p;for(p in be)be.hasOwnProperty(p)&&E.push(be[p]);return E},e.flushPendingDeletes=He,e.setDelayFunction=function(E){ze=E,me.length&&ze&&ze(He)},oh=e.InternalError=ie("InternalError"),pA.prototype.isAliasOf=function(E){if(!(this instanceof pA&&E instanceof pA))return!1;var p=this.M.P.N,Q=this.M.O,m=E.M.P.N;for(E=E.M.O;p.R;)Q=p.ba(Q),p=p.R;for(;m.R;)E=m.ba(E),m=m.R;return p===m&&Q===E},pA.prototype.clone=function(){if(this.M.O||Jn(this),this.M.aa)return this.M.count.value+=1,this;var E=fi,p=Object,Q=p.create,m=Object.getPrototypeOf(this),b=this.M;return E=E(Q.call(p,m,{M:{value:{count:b.count,$:b.$,aa:b.aa,O:b.O,P:b.P,T:b.T,U:b.U}}})),E.M.count.value+=1,E.M.$=!1,E},pA.prototype.delete=function(){this.M.O||Jn(this),this.M.$&&!this.M.aa&&z("Object already scheduled for deletion"),rs(this),rh(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},pA.prototype.isDeleted=function(){return!this.M.O},pA.prototype.deleteLater=function(){return this.M.O||Jn(this),this.M.$&&!this.M.aa&&z("Object already scheduled for deletion"),me.push(this),me.length===1&&ze&&ze(He),this.M.$=!0,this},$t.prototype.qa=function(E){return this.ka&&(E=this.ka(E)),E},$t.prototype.ha=function(E){this.W&&this.W(E)},$t.prototype.argPackAdvance=8,$t.prototype.readValueFromPointer=Ar,$t.prototype.deleteObject=function(E){E!==null&&E.delete()},$t.prototype.fromWireType=function(E){function p(){return this.da?ns(this.N.X,{P:this.wa,O:Q,U:this,T:E}):ns(this.N.X,{P:this,O:E})}var Q=this.qa(E);if(!Q)return this.ha(E),null;var m=$I(this.N,Q);if(m!==void 0)return m.M.count.value===0?(m.M.O=Q,m.M.T=E,m.clone()):(m=m.clone(),this.ha(E),m);if(m=this.N.pa(Q),m=nh[m],!m)return p.call(this);m=this.ca?m.la:m.pointerType;var b=sh(Q,this.N,m.N);return b===null?p.call(this):this.da?ns(m.N.X,{P:m,O:b,U:this,T:E}):ns(m.N.X,{P:m,O:b})},ah=e.UnboundTypeError=ie("UnboundTypeError");var pB=typeof atob=="function"?atob:function(E){var p="",Q=0;E=E.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),U="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++)),k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(E.charAt(Q++));m=m<<2|b>>4,b=(b&15)<<4|U>>2;var N=(U&3)<<6|k;p+=String.fromCharCode(m),U!==64&&(p+=String.fromCharCode(b)),k!==64&&(p+=String.fromCharCode(N))}while(Q<E.length);return p},CB={l:function(E,p,Q,m){Y("Assertion failed: "+(E?f(C,E):"")+", at: "+[p?p?f(C,p):"":"unknown filename",Q,m?m?f(C,m):"":"unknown function"])},q:function(E,p,Q){E=he(E),p=Ln(p,"wrapper"),Q=Ie(Q);var m=[].slice,b=p.N,U=b.X,k=b.R.X,N=b.R.constructor;E=se(E,function(){b.R.ja.forEach((function(T){if(this[T]===k[T])throw new ot("Pure virtual function "+T+" must be implemented in JavaScript")}).bind(this)),Object.defineProperty(this,"__parent",{value:U}),this.__construct.apply(this,m.call(arguments))}),U.__construct=function(){this===U&&z("Pass correct 'this' to __construct");var T=N.implement.apply(void 0,[this].concat(m.call(arguments)));rs(T);var V=T.M;T.notifyOnDestruction(),V.aa=!0,Object.defineProperties(this,{M:{value:V}}),fi(this),T=V.O,T=$e(b,T),be.hasOwnProperty(T)?z("Tried to register registered instance: "+T):be[T]=this},U.__destruct=function(){this===U&&z("Pass correct 'this' to __destruct"),rs(this);var T=this.M.O;T=$e(b,T),be.hasOwnProperty(T)?delete be[T]:z("Tried to unregister unregistered instance: "+T)},E.prototype=Object.create(U);for(var H in Q)E.prototype[H]=Q[H];return nt(E)},j:function(E){var p=os[E];delete os[E];var Q=p.fa,m=p.W,b=p.ia,U=b.map(k=>k.ta).concat(b.map(k=>k.za));EA([E],U,k=>{var N={};return b.forEach((H,T)=>{var V=k[T],ee=H.ra,ge=H.sa,Re=k[T+b.length],fe=H.ya,ut=H.Aa;N[H.oa]={read:_t=>V.fromWireType(ee(ge,_t)),write:(_t,ir)=>{var tA=[];fe(ut,_t,Re.toWireType(tA,ir)),On(tA)}}}),[{name:p.name,fromWireType:function(H){var T={},V;for(V in N)T[V]=N[V].read(H);return m(H),T},toWireType:function(H,T){for(var V in N)if(!(V in T))throw new TypeError('Missing field: "'+V+'"');var ee=Q();for(V in N)N[V].write(ee,T[V]);return H!==null&&H.push(m,ee),ee},argPackAdvance:8,readValueFromPointer:Ar,V:m}]})},v:function(){},B:function(E,p,Q,m,b){var U=Hn(Q);p=he(p),Zt(E,{name:p,fromWireType:function(k){return!!k},toWireType:function(k,N){return N?m:b},argPackAdvance:8,readValueFromPointer:function(k){if(Q===1)var N=d;else if(Q===2)N=B;else if(Q===4)N=R;else throw new TypeError("Unknown boolean type size: "+p);return this.fromWireType(N[k>>U])},V:null})},f:function(E,p,Q,m,b,U,k,N,H,T,V,ee,ge){V=he(V),U=vt(b,U),N&&(N=vt(k,N)),T&&(T=vt(H,T)),ge=vt(ee,ge);var Re=j(V);eB(Re,function(){ls("Cannot construct "+V+" due to unbound types",[m])}),EA([E,p,Q],m?[m]:[],function(fe){if(fe=fe[0],m)var ut=fe.N,_t=ut.X;else _t=pA.prototype;fe=se(Re,function(){if(Object.getPrototypeOf(this)!==ir)throw new le("Use 'new' to construct "+V);if(tA.Y===void 0)throw new le(V+" has no accessible constructor");var dh=tA.Y[arguments.length];if(dh===void 0)throw new le("Tried to invoke ctor of "+V+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(tA.Y).toString()+") parameters instead!");return dh.apply(this,arguments)});var ir=Object.create(_t,{constructor:{value:fe}});fe.prototype=ir;var tA=new tB(V,fe,ir,ge,ut,U,N,T);ut=new $t(V,tA,!0,!1),_t=new $t(V+"*",tA,!1,!1);var fh=new $t(V+" const*",tA,!1,!0);return nh[E]={pointerType:_t,la:fh},sB(Re,fe),[ut,_t,fh]})},d:function(E,p,Q,m,b,U,k){var N=zn(Q,m);p=he(p),U=vt(b,U),EA([],[E],function(H){function T(){ls("Cannot call "+V+" due to unbound types",N)}H=H[0];var V=H.name+"."+p;p.startsWith("@@")&&(p=Symbol[p.substring(2)]);var ee=H.N.constructor;return ee[p]===void 0?(T.Z=Q-1,ee[p]=T):(Kn(ee,p,V),ee[p].S[Q-1]=T),EA([],N,function(ge){return ge=Wn(V,[ge[0],null].concat(ge.slice(1)),null,U,k),ee[p].S===void 0?(ge.Z=Q-1,ee[p]=ge):ee[p].S[Q-1]=ge,[]}),[]})},p:function(E,p,Q,m,b,U){0<p||Y();var k=zn(p,Q);b=vt(m,b),EA([],[E],function(N){N=N[0];var H="constructor "+N.name;if(N.N.Y===void 0&&(N.N.Y=[]),N.N.Y[p-1]!==void 0)throw new le("Cannot register multiple constructors with identical number of parameters ("+(p-1)+") for class '"+N.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return N.N.Y[p-1]=()=>{ls("Cannot construct "+N.name+" due to unbound types",k)},EA([],k,function(T){return T.splice(1,0,null),N.N.Y[p-1]=Wn(H,T,null,b,U),[]}),[]})},a:function(E,p,Q,m,b,U,k,N){var H=zn(Q,m);p=he(p),U=vt(b,U),EA([],[E],function(T){function V(){ls("Cannot call "+ee+" due to unbound types",H)}T=T[0];var ee=T.name+"."+p;p.startsWith("@@")&&(p=Symbol[p.substring(2)]),N&&T.N.ja.push(p);var ge=T.N.X,Re=ge[p];return Re===void 0||Re.S===void 0&&Re.className!==T.name&&Re.Z===Q-2?(V.Z=Q-2,V.className=T.name,ge[p]=V):(Kn(ge,p,ee),ge[p].S[Q-2]=V),EA([],H,function(fe){return fe=Wn(ee,fe,T,U,k),ge[p].S===void 0?(fe.Z=Q-2,ge[p]=fe):ge[p].S[Q-2]=fe,[]}),[]})},A:function(E,p){p=he(p),Zt(E,{name:p,fromWireType:function(Q){var m=Ie(Q);return Vn(Q),m},toWireType:function(Q,m){return nt(m)},argPackAdvance:8,readValueFromPointer:Ar,V:null})},n:function(E,p,Q){Q=Hn(Q),p=he(p),Zt(E,{name:p,fromWireType:function(m){return m},toWireType:function(m,b){return b},argPackAdvance:8,readValueFromPointer:oB(p,Q),V:null})},e:function(E,p,Q,m,b){p=he(p),b===-1&&(b=4294967295),b=Hn(Q);var U=N=>N;if(m===0){var k=32-8*Q;U=N=>N<<k>>>k}Q=p.includes("unsigned")?function(N,H){return H>>>0}:function(N,H){return H},Zt(E,{name:p,fromWireType:U,toWireType:Q,argPackAdvance:8,readValueFromPointer:aB(p,b,m!==0),V:null})},b:function(E,p,Q){function m(U){U>>=2;var k=_;return new b(I,k[U+1],k[U])}var b=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][p];Q=he(Q),Zt(E,{name:Q,fromWireType:m,argPackAdvance:8,readValueFromPointer:m},{ua:!0})},o:function(E,p){p=he(p);var Q=p==="std::string";Zt(E,{name:p,fromWireType:function(m){var b=_[m>>2],U=m+4;if(Q)for(var k=U,N=0;N<=b;++N){var H=U+N;if(N==b||C[H]==0){if(k=k?f(C,k,H-k):"",T===void 0)var T=k;else T+="\0",T+=k;k=H+1}}else{for(T=Array(b),N=0;N<b;++N)T[N]=String.fromCharCode(C[U+N]);T=T.join("")}return eA(m),T},toWireType:function(m,b){b instanceof ArrayBuffer&&(b=new Uint8Array(b));var U,k=typeof b=="string";if(k||b instanceof Uint8Array||b instanceof Uint8ClampedArray||b instanceof Int8Array||z("Cannot pass non-string to std::string"),Q&&k){var N=0;for(U=0;U<b.length;++U){var H=b.charCodeAt(U);127>=H?N++:2047>=H?N+=2:55296<=H&&57343>=H?(N+=4,++U):N+=3}U=N}else U=b.length;if(N=Xn(4+U+1),H=N+4,_[N>>2]=U,Q&&k){if(k=H,H=U+1,U=C,0<H){H=k+H-1;for(var T=0;T<b.length;++T){var V=b.charCodeAt(T);if(55296<=V&&57343>=V){var ee=b.charCodeAt(++T);V=65536+((V&1023)<<10)|ee&1023}if(127>=V){if(k>=H)break;U[k++]=V}else{if(2047>=V){if(k+1>=H)break;U[k++]=192|V>>6}else{if(65535>=V){if(k+2>=H)break;U[k++]=224|V>>12}else{if(k+3>=H)break;U[k++]=240|V>>18,U[k++]=128|V>>12&63}U[k++]=128|V>>6&63}U[k++]=128|V&63}}U[k]=0}}else if(k)for(k=0;k<U;++k)T=b.charCodeAt(k),255<T&&(eA(H),z("String has UTF-16 code units that do not fit in 8 bits")),C[H+k]=T;else for(k=0;k<U;++k)C[H+k]=b[k];return m!==null&&m.push(eA,N),N},argPackAdvance:8,readValueFromPointer:Ar,V:function(m){eA(m)}})},i:function(E,p,Q){if(Q=he(Q),p===2)var m=lB,b=hB,U=gB,k=()=>M,N=1;else p===4&&(m=cB,b=uB,U=fB,k=()=>_,N=2);Zt(E,{name:Q,fromWireType:function(H){for(var T=_[H>>2],V=k(),ee,ge=H+4,Re=0;Re<=T;++Re){var fe=H+4+Re*p;(Re==T||V[fe>>N]==0)&&(ge=m(ge,fe-ge),ee===void 0?ee=ge:(ee+="\0",ee+=ge),ge=fe+p)}return eA(H),ee},toWireType:function(H,T){typeof T!="string"&&z("Cannot pass non-string to C++ string type "+Q);var V=U(T),ee=Xn(4+V+p);return _[ee>>2]=V>>N,b(T,ee+4,V+p),H!==null&&H.push(eA,ee),ee},argPackAdvance:8,readValueFromPointer:Ar,V:function(H){eA(H)}})},k:function(E,p,Q,m,b,U){os[E]={name:he(p),fa:vt(Q,m),W:vt(b,U),ia:[]}},h:function(E,p,Q,m,b,U,k,N,H,T){os[E].ia.push({oa:he(p),ta:Q,ra:vt(m,b),sa:U,za:k,ya:vt(N,H),Aa:T})},C:function(E,p){p=he(p),Zt(E,{va:!0,name:p,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(E,p,Q,m,b){E=hs[E],p=Ie(p),Q=lh(Q);var U=[];return _[m>>2]=nt(U),E(p,Q,U,b)},t:function(E,p,Q,m){E=hs[E],p=Ie(p),Q=lh(Q),E(p,Q,null,m)},g:Vn,m:function(E,p){var Q=BB(E,p),m=Q[0];p=m.name+"_$"+Q.slice(1).map(function(k){return k.name}).join("_")+"$";var b=hh[p];if(b!==void 0)return b;var U=Array(E-1);return b=IB((k,N,H,T)=>{for(var V=0,ee=0;ee<E-1;++ee)U[ee]=Q[ee+1].readValueFromPointer(T+V),V+=Q[ee+1].argPackAdvance;for(k=k[N].apply(k,U),ee=0;ee<E-1;++ee)Q[ee+1].ma&&Q[ee+1].ma(U[ee]);if(!m.va)return m.toWireType(H,k)}),hh[p]=b},D:function(E){4<E&&(X[E].ga+=1)},r:function(E){var p=Ie(E);On(p),Vn(E)},c:function(){Y("")},x:function(E,p,Q){C.copyWithin(E,p,p+Q)},w:function(E){var p=C.length;if(E>>>=0,2147483648<E)return!1;for(var Q=1;4>=Q;Q*=2){var m=p*(1+.2/Q);m=Math.min(m,E+100663296);var b=Math;m=Math.max(E,m),b=b.min.call(b,2147483648,m+(65536-m%65536)%65536);e:{try{h.grow(b-I.byteLength+65535>>>16),w();var U=1;break e}catch{}U=void 0}if(U)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(E,p,Q,m){for(var b=0,U=0;U<Q;U++){var k=_[p>>2],N=_[p+4>>2];p+=8;for(var H=0;H<N;H++){var T=C[k+H],V=EB[E];T===0||T===10?((E===1?o:a)(f(V,0)),V.length=0):V.push(T)}b+=N}return _[m>>2]=b,0}};(function(){function E(b){e.asm=b.exports,h=e.asm.E,w(),D=e.asm.J,L.unshift(e.asm.F),J--,e.monitorRunDependencies&&e.monitorRunDependencies(J),J==0&&Z&&(b=Z,Z=null,b())}function p(b){E(b.instance)}function Q(b){return oe().then(function(U){return WebAssembly.instantiate(U,m)}).then(function(U){return U}).then(b,function(U){a("failed to asynchronously prepare wasm: "+U),Y(U)})}var m={a:CB};if(J++,e.monitorRunDependencies&&e.monitorRunDependencies(J),e.instantiateWasm)try{return e.instantiateWasm(m,E)}catch(b){a("Module.instantiateWasm callback failed with error: "+b),i(b)}return function(){return l||typeof WebAssembly.instantiateStreaming!="function"||O(Ae)||typeof fetch!="function"?Q(p):fetch(Ae,{credentials:"same-origin"}).then(function(b){return WebAssembly.instantiateStreaming(b,m).then(p,function(U){return a("wasm streaming compile failed: "+U),a("falling back to ArrayBuffer instantiation"),Q(p)})})}().catch(i),{}})(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.F).apply(null,arguments)};var ch=e.___getTypeName=function(){return(ch=e.___getTypeName=e.asm.G).apply(null,arguments)};e.__embind_initialize_bindings=function(){return(e.__embind_initialize_bindings=e.asm.H).apply(null,arguments)};var Xn=e._malloc=function(){return(Xn=e._malloc=e.asm.I).apply(null,arguments)},eA=e._free=function(){return(eA=e._free=e.asm.K).apply(null,arguments)};e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.L).apply(null,arguments)};var cs;Z=function E(){cs||uh(),cs||(Z=E)};function uh(){function E(){if(!cs&&(cs=!0,e.calledRun=!0,!g)){if(q(L),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;){var p=e.postRun.shift();$.unshift(p)}q($)}}if(!(0<J)){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)K();q(x),0<J||(e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),E()},1)):E())}}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);0<e.preInit.length;)e.preInit.pop()();return uh(),A.ready}})();let Le=function(s){return s[s.Auto=0]="Auto",s[s.FlexStart=1]="FlexStart",s[s.Center=2]="Center",s[s.FlexEnd=3]="FlexEnd",s[s.Stretch=4]="Stretch",s[s.Baseline=5]="Baseline",s[s.SpaceBetween=6]="SpaceBetween",s[s.SpaceAround=7]="SpaceAround",s[s.SpaceEvenly=8]="SpaceEvenly",s}({}),Or=function(s){return s[s.BorderBox=0]="BorderBox",s[s.ContentBox=1]="ContentBox",s}({}),Dl=function(s){return s[s.Width=0]="Width",s[s.Height=1]="Height",s}({}),cA=function(s){return s[s.Inherit=0]="Inherit",s[s.LTR=1]="LTR",s[s.RTL=2]="RTL",s}({}),ri=function(s){return s[s.Flex=0]="Flex",s[s.None=1]="None",s[s.Contents=2]="Contents",s}({}),de=function(s){return s[s.Left=0]="Left",s[s.Top=1]="Top",s[s.Right=2]="Right",s[s.Bottom=3]="Bottom",s[s.Start=4]="Start",s[s.End=5]="End",s[s.Horizontal=6]="Horizontal",s[s.Vertical=7]="Vertical",s[s.All=8]="All",s}({}),si=function(s){return s[s.None=0]="None",s[s.StretchFlexBasis=1]="StretchFlexBasis",s[s.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",s[s.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",s[s.All=2147483647]="All",s[s.Classic=2147483646]="Classic",s}({}),Ud=function(s){return s[s.WebFlexBasis=0]="WebFlexBasis",s}({}),uA=function(s){return s[s.Column=0]="Column",s[s.ColumnReverse=1]="ColumnReverse",s[s.Row=2]="Row",s[s.RowReverse=3]="RowReverse",s}({}),Hr=function(s){return s[s.Column=0]="Column",s[s.Row=1]="Row",s[s.All=2]="All",s}({}),pt=function(s){return s[s.FlexStart=0]="FlexStart",s[s.Center=1]="Center",s[s.FlexEnd=2]="FlexEnd",s[s.SpaceBetween=3]="SpaceBetween",s[s.SpaceAround=4]="SpaceAround",s[s.SpaceEvenly=5]="SpaceEvenly",s}({}),ni=function(s){return s[s.Error=0]="Error",s[s.Warn=1]="Warn",s[s.Info=2]="Info",s[s.Debug=3]="Debug",s[s.Verbose=4]="Verbose",s[s.Fatal=5]="Fatal",s}({}),Un=function(s){return s[s.Undefined=0]="Undefined",s[s.Exactly=1]="Exactly",s[s.AtMost=2]="AtMost",s}({}),bl=function(s){return s[s.Default=0]="Default",s[s.Text=1]="Text",s}({}),oi=function(s){return s[s.Visible=0]="Visible",s[s.Hidden=1]="Hidden",s[s.Scroll=2]="Scroll",s}({}),ai=function(s){return s[s.Static=0]="Static",s[s.Relative=1]="Relative",s[s.Absolute=2]="Absolute",s}({}),kt=function(s){return s[s.Undefined=0]="Undefined",s[s.Point=1]="Point",s[s.Percent=2]="Percent",s[s.Auto=3]="Auto",s}({}),li=function(s){return s[s.NoWrap=0]="NoWrap",s[s.Wrap=1]="Wrap",s[s.WrapReverse=2]="WrapReverse",s}({});const kd={ALIGN_AUTO:Le.Auto,ALIGN_FLEX_START:Le.FlexStart,ALIGN_CENTER:Le.Center,ALIGN_FLEX_END:Le.FlexEnd,ALIGN_STRETCH:Le.Stretch,ALIGN_BASELINE:Le.Baseline,ALIGN_SPACE_BETWEEN:Le.SpaceBetween,ALIGN_SPACE_AROUND:Le.SpaceAround,ALIGN_SPACE_EVENLY:Le.SpaceEvenly,BOX_SIZING_BORDER_BOX:Or.BorderBox,BOX_SIZING_CONTENT_BOX:Or.ContentBox,DIMENSION_WIDTH:Dl.Width,DIMENSION_HEIGHT:Dl.Height,DIRECTION_INHERIT:cA.Inherit,DIRECTION_LTR:cA.LTR,DIRECTION_RTL:cA.RTL,DISPLAY_FLEX:ri.Flex,DISPLAY_NONE:ri.None,DISPLAY_CONTENTS:ri.Contents,EDGE_LEFT:de.Left,EDGE_TOP:de.Top,EDGE_RIGHT:de.Right,EDGE_BOTTOM:de.Bottom,EDGE_START:de.Start,EDGE_END:de.End,EDGE_HORIZONTAL:de.Horizontal,EDGE_VERTICAL:de.Vertical,EDGE_ALL:de.All,ERRATA_NONE:si.None,ERRATA_STRETCH_FLEX_BASIS:si.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:si.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:si.AbsolutePercentAgainstInnerSize,ERRATA_ALL:si.All,ERRATA_CLASSIC:si.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Ud.WebFlexBasis,FLEX_DIRECTION_COLUMN:uA.Column,FLEX_DIRECTION_COLUMN_REVERSE:uA.ColumnReverse,FLEX_DIRECTION_ROW:uA.Row,FLEX_DIRECTION_ROW_REVERSE:uA.RowReverse,GUTTER_COLUMN:Hr.Column,GUTTER_ROW:Hr.Row,GUTTER_ALL:Hr.All,JUSTIFY_FLEX_START:pt.FlexStart,JUSTIFY_CENTER:pt.Center,JUSTIFY_FLEX_END:pt.FlexEnd,JUSTIFY_SPACE_BETWEEN:pt.SpaceBetween,JUSTIFY_SPACE_AROUND:pt.SpaceAround,JUSTIFY_SPACE_EVENLY:pt.SpaceEvenly,LOG_LEVEL_ERROR:ni.Error,LOG_LEVEL_WARN:ni.Warn,LOG_LEVEL_INFO:ni.Info,LOG_LEVEL_DEBUG:ni.Debug,LOG_LEVEL_VERBOSE:ni.Verbose,LOG_LEVEL_FATAL:ni.Fatal,MEASURE_MODE_UNDEFINED:Un.Undefined,MEASURE_MODE_EXACTLY:Un.Exactly,MEASURE_MODE_AT_MOST:Un.AtMost,NODE_TYPE_DEFAULT:bl.Default,NODE_TYPE_TEXT:bl.Text,OVERFLOW_VISIBLE:oi.Visible,OVERFLOW_HIDDEN:oi.Hidden,OVERFLOW_SCROLL:oi.Scroll,POSITION_TYPE_STATIC:ai.Static,POSITION_TYPE_RELATIVE:ai.Relative,POSITION_TYPE_ABSOLUTE:ai.Absolute,UNIT_UNDEFINED:kt.Undefined,UNIT_POINT:kt.Point,UNIT_PERCENT:kt.Percent,UNIT_AUTO:kt.Auto,WRAP_NO_WRAP:li.NoWrap,WRAP_WRAP:li.Wrap,WRAP_WRAP_REVERSE:li.WrapReverse};function Nd(s){function A(i,r,n){const o=i[r];i[r]=function(){for(var a=arguments.length,l=new Array(a),h=0;h<a;h++)l[h]=arguments[h];return n.call(this,o,...l)}}for(const i of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){const r={[kt.Point]:s.Node.prototype[i],[kt.Percent]:s.Node.prototype[`${i}Percent`],[kt.Auto]:s.Node.prototype[`${i}Auto`]};A(s.Node.prototype,i,function(n){for(var o=arguments.length,a=new Array(o>1?o-1:0),l=1;l<o;l++)a[l-1]=arguments[l];const h=a.pop();let g,f;if(h==="auto")g=kt.Auto,f=void 0;else if(typeof h=="object")g=h.unit,f=h.valueOf();else if(g=typeof h=="string"&&h.endsWith("%")?kt.Percent:kt.Point,f=parseFloat(h),h!==void 0&&!Number.isNaN(h)&&Number.isNaN(f))throw new Error(`Invalid value ${h} for ${i}`);if(!r[g])throw new Error(`Failed to execute "${i}": Unsupported unit '${h}'`);return f!==void 0?r[g].call(this,...a,f):r[g].call(this,...a)})}function e(i){return s.MeasureCallback.implement({measure:function(){const{width:r,height:n}=i(...arguments);return{width:r??NaN,height:n??NaN}}})}A(s.Node.prototype,"setMeasureFunc",function(i,r){return r?i.call(this,e(r)):this.unsetMeasureFunc()});function t(i){return s.DirtiedCallback.implement({dirtied:i})}return A(s.Node.prototype,"setDirtiedFunc",function(i,r){i.call(this,t(r))}),A(s.Config.prototype,"free",function(){s.Config.destroy(this)}),A(s.Node,"create",(i,r)=>r?s.Node.createWithConfig(r):s.Node.createDefault()),A(s.Node.prototype,"free",function(){s.Node.destroy(this)}),A(s.Node.prototype,"freeRecursive",function(){for(let i=0,r=this.getChildCount();i<r;++i)this.getChild(0).freeRecursive();this.free()}),A(s.Node.prototype,"calculateLayout",function(i){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:cA.LTR;return i.call(this,r,n,o)}),{Config:s.Config,Node:s.Node,...kd}}async function Fd(){return Nd(await Pd())}class xl extends Fi{constructor(A){super(),this.setProperties(A)}}const hi={auto:Le.Auto,"flex-start":Le.FlexStart,center:Le.Center,"flex-end":Le.FlexEnd,stretch:Le.Stretch,baseline:Le.Baseline,"space-between":Le.SpaceBetween,"space-around":Le.SpaceAround,"space-evenly":Le.SpaceEvenly},Sl={none:ri.None,flex:ri.Flex,contents:ri.Contents},Ml={inherit:cA.Inherit,ltr:cA.LTR,rtl:cA.RTL},Rl={column:uA.Column,"column-reverse":uA.ColumnReverse,row:uA.Row,"row-reverse":uA.RowReverse},Pl={"no-wrap":li.NoWrap,wrap:li.Wrap,"Wrap-reverse":li.WrapReverse},Ul={"flex-start":pt.FlexStart,center:pt.Center,"flex-end":pt.FlexEnd,"space-between":pt.SpaceBetween,"space-around":pt.SpaceAround,"space-evenly":pt.SpaceEvenly},kl={visible:oi.Visible,hidden:oi.Hidden,scroll:oi.Scroll},Nl={static:ai.Static,relative:ai.Relative,absolute:ai.Absolute},Fl={"border-box":Or.BorderBox,"content-box":Or.ContentBox},es=class es{constructor(A){u(this,"_node",es._yoga.Node.create());this._element=A}static async load(){this._yoga=await Fd()}get _style(){return this._element.style}get offsetLeft(){return this._node.getComputedLeft()}get offsetTop(){return this._node.getComputedTop()}get offsetWidth(){return this._node.getComputedWidth()}get offsetHeight(){return this._node.getComputedHeight()}calculateLayout(A,e,t){return this._node.calculateLayout(A,e,t)}getComputedLayout(){return this._node.getComputedLayout()}updateStyleProperty(A,e,t,i){switch(A){case"alignContent":this._node.setAlignContent(e?hi[e]:hi["flex-start"]);break;case"alignItems":this._node.setAlignItems(e?hi[e]:hi["flex-start"]);break;case"alignSelf":this._node.setAlignSelf(e?hi[e]:hi["flex-start"]);break;case"aspectRatio":this._node.setAspectRatio(e);break;case"borderTop":this._node.setBorder(de.Top,this._style.borderWidth);break;case"borderBottom":this._node.setBorder(de.Bottom,this._style.borderWidth);break;case"borderLeft":this._node.setBorder(de.Left,this._style.borderWidth);break;case"borderRight":this._node.setBorder(de.Right,this._style.borderWidth);break;case"border":this._node.setBorder(de.All,this._style.borderWidth);break;case"direction":this._node.setDirection(e?Ml[e]:Ml.inherit);break;case"display":this._node.setDisplay(e?Sl[e]:Sl.flex);break;case"flex":this._node.setFlex(this._style.flex);break;case"flexBasis":this._node.setFlexBasis(this._style.flexBasis);break;case"flexDirection":this._node.setFlexDirection(e?Rl[e]:Rl.row);break;case"flexGrow":this._node.setFlexGrow(this._style.flexGrow);break;case"flexShrink":this._node.setFlexShrink(this._style.flexShrink);break;case"flexWrap":this._node.setFlexWrap(e?Pl[e]:Pl.wrap);break;case"height":this._node.setHeight(this._style.height);break;case"justifyContent":this._node.setJustifyContent(e?Ul[e]:Ul["flex-start"]);break;case"gap":e!==void 0&&this._node.setGap(Hr.All,e);break;case"marginTop":this._node.setMargin(de.Top,e);break;case"marginBottom":this._node.setMargin(de.Top,e);break;case"marginLeft":this._node.setMargin(de.Left,e);break;case"marginRight":this._node.setMargin(de.Top,e);break;case"margin":this._node.setMargin(de.All,e);break;case"maxHeight":this._node.setMaxHeight(e);break;case"maxWidth":this._node.setMaxWidth(e);break;case"minHeight":this._node.setMinHeight(this._style.minHeight);break;case"minWidth":this._node.setMinWidth(this._style.minWidth);break;case"overflow":this._node.setOverflow(e?kl[e]:kl.visible);break;case"paddingTop":this._node.setPadding(de.Top,this._style.paddingTop);break;case"paddingBottom":this._node.setPadding(de.Bottom,this._style.paddingBottom);break;case"paddingLeft":this._node.setPadding(de.Left,this._style.paddingLeft);break;case"paddingRight":this._node.setPadding(de.Right,this._style.paddingRight);break;case"padding":this._node.setPadding(de.All,this._style.padding);break;case"top":this._node.setPosition(de.Top,this._style.top);break;case"bottom":this._node.setPosition(de.Bottom,this._style.bottom);break;case"left":this._node.setPosition(de.Left,this._style.left);break;case"right":this._node.setPosition(de.Right,this._style.right);break;case"position":this._node.setPositionType(e?Nl[e]:Nl.static);break;case"boxSizing":this._node.setBoxSizing(e?Fl[e]:Fl["content-box"]);break;case"width":this._node.setWidth(this._style.width);break}}};u(es,"_yoga");let Jr=es;var Td=Object.getOwnPropertyDescriptor,Ld=(s,A,e,t)=>{for(var i=t>1?void 0:t?Td(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};c.FlexElement2D=class extends c.BaseElement2D{constructor(e,t=[]){super();u(this,"_layout",new Jr(this));this.style=new xl,this.setProperties(e).append(t)}get style(){return this._style}set style(e){var i;const t=(...r)=>{this.emit("updateStyleProperty",...r),this._updateStyleProperty(r[0],r[1],r[2],r[3])};e.on("updateProperty",t),(i=this._style)==null||i.off("updateProperty",t),this._style=e}get offsetLeft(){return this._layout.offsetLeft}get offsetTop(){return this._layout.offsetTop}get offsetWidth(){return this._layout.offsetWidth}get offsetHeight(){return this._layout.offsetHeight}_parented(e){super._parented(e),e._layout&&this._layout._node&&e._layout._node.insertChild(this._layout._node,e._layout._node.getChildCount())}_unparented(e){var t;super._unparented(e),(t=e._layout)!=null&&t._node&&e._layout._node.removeChild(this._layout._node)}_updateStyleProperty(e,t,i,r){super._updateStyleProperty(e,t,i,r),this._layout.updateStyleProperty(e,t,i,r),this._layout._node.isDirty()&&this.requestRelayout()}_updateTransform(){this.calculateLayout(void 0,void 0,cA.LTR);const{left:e,top:t,width:i,height:r}=this._layout.getComputedLayout();this.position.x=e,this.position.y=t,this.size.x=i,this.size.y=r,super._updateTransform()}calculateLayout(e,t,i){var n;const r=this.getParent();(n=r==null?void 0:r._layout)!=null&&n.calculateLayout?r==null||r._layout.calculateLayout(e,t,i):this._layout.calculateLayout(e,t,i)}},c.FlexElement2D=Ld([te("FlexElement2D")],c.FlexElement2D);var Gd=Object.defineProperty,Od=Object.getOwnPropertyDescriptor,Pe=(s,A,e,t)=>{for(var i=t>1?void 0:t?Od(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Gd(A,e,i),i};function Ge(s){return function(A,e){Object.defineProperty(A.constructor.prototype,e,{get(){return s!=null&&s.method?(...t)=>(this.context[e].call(this.context,...t),s.redraw&&this.requestRedraw(),A):this.context[e]},set(t){this.context[e]=t},configurable:!0,enumerable:!0})}}c.Graphics2D=class extends c.Node2D{constructor(){super(...arguments);u(this,"_resetContext",!1);u(this,"lineCap");u(this,"lineJoin");u(this,"fillStyle");u(this,"strokeStyle");u(this,"lineWidth");u(this,"miterLimit")}drawCircle(e,t,i){return this.arc(e+i,t+i,i,0,tt),this.fill(),this}drawEllipse(e,t,i,r){const n=i/2,o=r/2;return this.ellipse(e+n,t+o,n,o,0,0,tt),this.fill(),this}},Pe([Ge()],c.Graphics2D.prototype,"lineCap",2),Pe([Ge()],c.Graphics2D.prototype,"lineJoin",2),Pe([Ge()],c.Graphics2D.prototype,"fillStyle",2),Pe([Ge()],c.Graphics2D.prototype,"strokeStyle",2),Pe([Ge()],c.Graphics2D.prototype,"lineWidth",2),Pe([Ge()],c.Graphics2D.prototype,"miterLimit",2),Pe([Ge({method:!0})],c.Graphics2D.prototype,"rect",2),Pe([Ge({method:!0,redraw:!0})],c.Graphics2D.prototype,"fillRect",2),Pe([Ge({method:!0,redraw:!0})],c.Graphics2D.prototype,"strokeRect",2),Pe([Ge({method:!0})],c.Graphics2D.prototype,"roundRect",2),Pe([Ge({method:!0})],c.Graphics2D.prototype,"ellipse",2),Pe([Ge({method:!0})],c.Graphics2D.prototype,"arc",2),Pe([Ge({method:!0})],c.Graphics2D.prototype,"beginPath",2),Pe([Ge({method:!0})],c.Graphics2D.prototype,"moveTo",2),Pe([Ge({method:!0})],c.Graphics2D.prototype,"lineTo",2),Pe([Ge({method:!0})],c.Graphics2D.prototype,"closePath",2),Pe([Ge({method:!0,redraw:!0})],c.Graphics2D.prototype,"fill",2),Pe([Ge({method:!0,redraw:!0})],c.Graphics2D.prototype,"stroke",2),c.Graphics2D=Pe([te("Graphics2D")],c.Graphics2D);var Hd=Object.defineProperty,Jd=Object.getOwnPropertyDescriptor,Zi=(s,A,e,t)=>{for(var i=t>1?void 0:t?Jd(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Hd(A,e,i),i};c.Image2D=class extends c.Element2D{constructor(e,t=[]){super();u(this,"texture");u(this,"_frameIndex",0);u(this,"_complete",!1);u(this,"_wait",Promise.resolve());this.setProperties(e),this.append(t)}get currentFrameTexture(){var e,t;return(t=(e=this.texture)==null?void 0:e.frames[this._frameIndex])==null?void 0:t.texture}get textureDuration(){var e;return((e=this.texture)==null?void 0:e.duration)??0}get naturalWidth(){var e;return((e=this.currentFrameTexture)==null?void 0:e.realWidth)??0}get naturalHeight(){var e;return((e=this.currentFrameTexture)==null?void 0:e.realHeight)??0}get complete(){return this._complete}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"src":this._wait=this._load(t);break;case"srcRect":this.requestRedraw();break}}decode(){return this._wait}setResource(e){let t;if(e instanceof gr?t=e:t=new gr(e),this.texture=t.updateDuration(),this.currentFrameTexture&&(!this.style.width||!this.style.height)){const i=this.currentFrameTexture;this.style.width=i.realWidth,this.style.height=i.realHeight}return this}async _load(e){if(this._complete=!1,e)try{this.setResource(this.gif||e!=null&&e.includes(".gif")?await Ft.gif.load(e):await Ft.texture.load(e)),this.requestRedraw(),this.emit("load")}catch(t){console.warn(t),this.emit("error",t)}else this.texture=void 0;this._complete=!0}_getFrameCurrentTime(){const e=this.textureDuration;if(!e||!this._tree)return 0;const t=this._currentTime;return t<0?0:t%e}_updateFrameIndex(){if(!this.texture)return this;const e=this._getFrameCurrentTime(),t=this.texture.frames,i=t.length;if(i<=1&&this._frameIndex===0)return this;let r=i-1;for(let n=0,o=0;o<i;o++)if(n+=t[o].duration??0,n>=e){r=o;break}return this._frameIndex!==r&&(this._frameIndex=r,this.requestRedraw()),this}_process(e){this._updateFrameIndex(),super._process(e)}_drawContent(){const e=this.currentFrameTexture;if(e!=null&&e.valid){const{left:t=0,top:i=0,right:r=0,bottom:n=0}=this.srcRect??{},{width:o,height:a}=this.size;this.context.fillStyle=e;const l=Math.abs(1+(t+r))*o,h=Math.abs(1+(i+n))*a,g=1/l,f=1/h,I=t*o*g,d=i*a*f;this.context.textureTransform=new dt().scale(g,f).translate(I,d),this.geometry.draw(),this.context.fill()}}_repaint(e){return super._repaint(e).map(t=>({...t,disableWrapMode:!0}))}},Zi([Be()],c.Image2D.prototype,"texture",2),Zi([S({default:""})],c.Image2D.prototype,"src",2),Zi([S()],c.Image2D.prototype,"srcRect",2),Zi([S({default:!1})],c.Image2D.prototype,"gif",2),c.Image2D=Zi([te("Image2D")],c.Image2D);class Kr extends c.Element2D{constructor(e,t=[]){super();u(this,"texture");this.setProperties(e).append(t)}_drawContent(){var e;if((e=this.texture)!=null&&e.valid){const{width:t,height:i}=this.size;this.context.fillStyle=this.texture,this.context.textureTransform=new dt().scale(1/t,1/i),this.geometry.drawRect(),this.context.fill()}}}var Kd=Object.defineProperty,Yd=Object.getOwnPropertyDescriptor,Tl=(s,A,e,t)=>{for(var i=t>1?void 0:t?Yd(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Kd(A,e,i),i};c.Lottie2D=class extends Kr{constructor(e,t=[]){super();u(this,"texture",new GA);u(this,"animation");this.setProperties(e),this.append(t)}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"src":this._load();break}}_updateStyleProperty(e,t,i){switch(super._updateStyleProperty(e,t,i),e){case"width":this.texture.width=this.style.width;break;case"height":this.texture.height=this.style.height;break}}async _load(){this.animation=await Ft.lottie.load(this.src,this.texture.source),this.duration=this.animation.getDuration(!1)*1e3,this.texture.requestUpload(),this.requestRedraw()}_process(e){var t;(t=this.animation)==null||t.goToAndStop(this.currentTime,!1),this.texture.requestUpload(),this.requestRedraw(),super._process(e)}},Tl([S({default:""})],c.Lottie2D.prototype,"src",2),c.Lottie2D=Tl([te("Lottie2D")],c.Lottie2D);var Wd=Object.defineProperty,zd=Object.getOwnPropertyDescriptor,gi=(s,A,e,t)=>{for(var i=t>1?void 0:t?zd(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&Wd(A,e,i),i};const Vd=new Set(Object.keys(Rn));c.Text2D=class extends Kr{constructor(e,t=[]){super();u(this,"effects");u(this,"measureDom");u(this,"fonts");u(this,"texture",new GA);u(this,"_baseText",new vl);u(this,"measureResult");u(this,"_subTextsCount",0);this.setProperties(e),this.append(t)}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"content":case"effects":case"measureDom":case"fonts":case"split":this._updateSplit(),this.requestRedraw();break}this._subTextsCount&&e==="effects"&&this._getSubTexts().forEach(n=>{n.setProperties({[e]:t})})}_updateText(){this._baseText.style=this.style.toJSON(),this._baseText.content=this.content??"",this._baseText.effects=this.effects,this._baseText.fonts=this.fonts,this._baseText.measureDom=this.measureDom,this._baseText.requestUpdate()}_updateStyleProperty(e,t,i){switch(e){case"left":case"top":case"width":case"height":this.requestRedraw();break;default:super._updateStyleProperty(e,t,i);break}switch(e){case"width":this.split&&this._updateSubTexts();break}typeof e=="string"&&Vd.has(e)&&(this._subTextsCount&&e!=="width"&&e!=="height"&&this._getSubTexts().forEach(r=>{r.style.setProperties({[e]:t})}),this.requestRedraw())}_getSubTexts(){return this.getChildren("front").filter(e=>e instanceof c.Text2D)}_updateSubTexts(){var i;const e=this._getSubTexts();let t=0;this.split&&((i=this.updateMeasure().measureResult)==null||i.paragraphs.forEach(r=>{r.fragments.forEach(n=>{n.characters.forEach(o=>{const a=e[t];a&&(a.style.left=o.inlineBox.left,a.style.top=o.inlineBox.top),t++})})}))}measure(){return this._updateText(),this._baseText.measure()}updateMeasure(){this.measureResult=this.measure();const{boundingBox:e}=this.measureResult,{left:t,top:i}=this.style;return this.position.x=t+Math.min(0,e.left),this.position.y=i+Math.min(0,e.top),this.size.width=e.width,this.size.height=e.height,this}_updateSplit(){var e;this._subTextsCount&&(this.getChildren("front").forEach(t=>this.removeChild(t)),this._subTextsCount=0),this.split&&((e=this.measureResult)==null||e.paragraphs.forEach(t=>{t.fragments.forEach(i=>{i.characters.forEach(r=>{this.appendChild(new c.Text2D({content:r.content,style:{...r.computedStyle,left:r.inlineBox.x,top:r.inlineBox.y,width:0,height:0,effects:this.effects}}),"front"),this._subTextsCount++})})}))}_redraw(){return this.updateMeasure(),super._redraw()}_drawContent(){var e,t;if(!this.split){const i=(t=(e=this.getChildren())==null?void 0:e.find(r=>"onText2DRender"in r))==null?void 0:t.onText2DRender;i?i():this._baseText.render({pixelRatio:this.texture.pixelRatio,view:this.texture.source}),this.texture.requestUpload(),super._drawContent()}}},gi([S({default:!1})],c.Text2D.prototype,"split",2),gi([S({default:""})],c.Text2D.prototype,"content",2),gi([S()],c.Text2D.prototype,"effects",2),gi([Be()],c.Text2D.prototype,"measureDom",2),gi([Be()],c.Text2D.prototype,"fonts",2),c.Text2D=gi([te("Text2D")],c.Text2D);var qd=Object.defineProperty,Xd=(s,A,e,t)=>{for(var i=void 0,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(A,e,i)||i);return i&&qd(A,e,i),i};class kn extends c.Element2D{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":this.requestRedraw();break}}_drawCircle(A,e){this.context.arc(A,e,this.handleSize,0,Math.PI*2,!0),this.context.fillStyle=ve.WHITE,this.context.fill(),this.context.arc(A,e,this.handleSize,0,Math.PI*2,!0),this.context.strokeStyle="rgba(0, 0, 0, 0.2)",this.context.stroke()}_drawEllipse(A,e){this.context.roundRect(A-this.handleSize,e-this.handleSize*2,this.handleSize*2,this.handleSize*4,this.handleSize),this.context.fillStyle=ve.WHITE,this.context.fill(),this.context.roundRect(A-this.handleSize,e-this.handleSize*2,this.handleSize*2,this.handleSize*4,this.handleSize),this.context.strokeStyle="rgba(0, 0, 0, 0.2)",this.context.stroke()}_draw(){const{width:A,height:e}=this.getRect();this.context.rect(0,0,A,e),this.context.strokeStyle="#00FF00",this.context.stroke(),this._drawCircle(0,0),this._drawCircle(A,e),this._drawCircle(0,e),this._drawEllipse(0,e/2),this._drawCircle(A,0),this._drawEllipse(A,e/2)}}Xd([S({default:6})],kn.prototype,"handleSize");var jd=Object.defineProperty,Zd=Object.getOwnPropertyDescriptor,Ll=(s,A,e,t)=>{for(var i=t>1?void 0:t?Zd(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&jd(A,e,i),i};c.Video2D=class extends Kr{constructor(e,t=[]){super();u(this,"_wait",Promise.resolve());this.setProperties(e),this.append(t)}get videoDuration(){var e;return(((e=this.texture)==null?void 0:e.duration)??0)*1e3}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"src":this._wait=this._load(t);break}}waitLoad(){return this._wait}async _load(e){this.texture=await Ft.video.load(e),(!this.style.width||!this.style.height)&&(this.style.width=this.texture.width,this.style.height=this.texture.height),this.requestRedraw()}_updateVideoCurrentTime(){let e=this._currentTime;if(e<0)return;const t=this.texture;if(!t)return;const i=t.duration;e=i?e%(i*1e3):0,!t.isPlaying&&!t.seeking&&(e=~~e/1e3,t.currentTime!==e&&(t.currentTime=e))}_process(e){this._updateVideoCurrentTime(),super._process(e)}},Ll([S({default:""})],c.Video2D.prototype,"src",2),c.Video2D=Ll([te("Video2D")],c.Video2D);var $d=Object.defineProperty,eI=Object.getOwnPropertyDescriptor,$i=(s,A,e,t)=>{for(var i=t>1?void 0:t?eI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&$d(A,e,i),i};const Gl=s=>s,Ol=ci(.25,.1,.25,1),Hl=ci(.42,0,1,1),Jl=ci(0,0,.58,1),Kl=ci(.42,0,.58,1);function ci(s,A,e,t){const r=3*s-3*e+1,n=3*e-6*s,o=3*s,a=3*A-3*t+1,l=3*t-6*A,h=3*A,g=C=>(3*r*C+2*n)*C+o,f=C=>((r*C+n)*C+o)*C,I=C=>((a*C+l)*C+h)*C;function d(C){let B=C,M,R;for(let v=0;v<8;v++){if(R=f(B)-C,Math.abs(R)<1e-6)return B;if(M=g(B),Math.abs(M)<1e-6)break;B-=R/M}let _=1,P=0;for(B=C;_>P;){if(R=f(B)-C,Math.abs(R)<1e-6)return B;R>0?_=B:P=B,B=(_+P)/2}return B}return C=>I(d(C))}const Yr={linear:Gl,ease:Ol,easeIn:Hl,easeOut:Jl,easeInOut:Kl};c.Animation=class extends c.TimelineNode{constructor(e,t=[]){super();u(this,"easing");u(this,"_keyframes",[]);u(this,"_isFirstUpdatePosition",!1);u(this,"_cachedProps",new kA);u(this,"_stoped",!1);this.setProperties(e).append(t)}_parented(e){super._parented(e),this._updateCachedProps()}_unparented(e){super._unparented(e),this.cancel()}_process(){this.canProcess()&&this.commitStyles()}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"effectMode":case"keyframes":this._updateKeyframes();break}}_getTargets(){var t;let e;switch(this.effectMode){case"sibling":e=((t=this.getParent())==null?void 0:t.getChildren(!0).filter(i=>i instanceof c.CanvasItem))??[];break;case"parent":default:e=[this.getParent()].filter(Boolean);break}return e.map(i=>i.style)}_updateKeyframes(){const e=[],t=this.keyframes;for(let n=t.length,o=0;o<n;o++){const{offset:a=o===0?0:o/(n-1),easing:l="linear",...h}=t[o];e.push({offset:a,easing:this._parseEasing(l),props:h})}const i=e[0],r=e[e.length-1];i&&i.offset!==0&&e.unshift({offset:0,easing:this._parseEasing("linear"),props:{}}),r&&r.offset!==1&&e.push({offset:1,easing:this._parseEasing("linear"),props:{}}),this._keyframes=e,this._updateCachedProps()}commitStyles(){if(!this.keyframes.length)return;if(this._updateCurrentTime(),this.isInsideTimeRange())this._isFirstUpdatePosition||(this._isFirstUpdatePosition=!0,this._updateCachedProps());else{if(!this._isFirstUpdatePosition)return;this._isFirstUpdatePosition=!1}const e=this._getTargets(),t=1/e.length,i=this.currentTimeProgress;e.forEach((r,n)=>{const o=t===1?i:bt(0,Math.max(0,i-t*n)/t,1),a=this._cachedProps.get(r);if(!a)return;const l=this._parseKeyframes(o,a);l!=null&&l.length&&this._commitStyle(o,r,a,l[0],l[1])})}_updateCachedProps(){this.cancel(),this._getTargets().forEach(e=>{const t=new Map,i=this._keyframes;for(let r=i.length,n=0;n<r;n++)Object.keys(i[n].props).forEach(o=>{t.set(o,e[o])});this._cachedProps.set(e,t)})}_parseEasing(e){if(!e)return Yr.linear;if(e in Yr)return Yr[e];const t=e.replace(/cubic-bezier\((.+)\)/,"$1").split(",").map(i=>Number(i));return ci(t[0],t[1],t[2],t[3])}_parseKeyframes(e,t){let i;const r=this._keyframes;for(let n=r.length,o=0;o<n;o++){const a=r[o],{offset:l,easing:h}=a,g={...a.props};if(i&&e<=l){const{offset:f,easing:I}=i,d={...i.props};return t.forEach((C,B)=>{(!(B in d)||d[B]===null)&&(d[B]=C),(!(B in g)||g[B]===null)&&(g[B]=C)}),[{offset:f,easing:I,props:d},{offset:l,easing:h,props:g}]}i=a}return null}_commitStyle(e,t,i,r,n){const{offset:o,easing:a,props:l}=r,{offset:h,props:g}=n,f=h-o,I=a((e-o)/f),d={width:t.width,height:t.height,fontSize:t.fontSize};i.forEach((C,B)=>{t[B]=this._getDiffValue(B,l[B],g[B],I,d)})}_getDiffValue(e,t,i,r,n){let o,a;if(t==="none"&&(t=void 0),i==="none"&&(i=void 0),t===void 0||i===void 0)if(t!==void 0)o=Ii(e,String(t),n),a=ds(o);else if(i!==void 0)a=Ii(e,String(i),n),o=ds(a);else return;else o=Ii(e,String(t),n),a=Ii(e,String(i),n);if(Array.isArray(o)&&Array.isArray(a)){const l=new Set,h={},g={};o.forEach(({name:I,args:d})=>{h[I]=d,l.add(I)}),a.forEach(({name:I,args:d})=>{g[I]=d,l.add(I)});let f="";return l.forEach(I=>{var M,R;const d=Math.max(((M=h[I])==null?void 0:M.length)??0,((R=g[I])==null?void 0:R.length)??0),C=h[I],B=g[I];f+=`${I}(${Array.from({length:d},(_,P)=>{const v=C==null?void 0:C[P],w=B==null?void 0:B[P],D=(v==null?void 0:v.normalizedIntValue)??0,x=(w==null?void 0:w.normalizedIntValue)??0;return Number.isNaN(D)||Number.isNaN(x)?(w==null?void 0:w.value)??0:Se(D,x,r)}).join(", ")}) `}),f}else if(!Array.isArray(o)&&!Array.isArray(a))return Number.isNaN(o.normalizedIntValue)||Number.isNaN(a.normalizedIntValue)?a.value:Se(o.normalizedIntValue,a.normalizedIntValue,r)}isPlaying(){return!this.paused&&this.isInsideTimeRange()}play(){return this._stoped?(this._stoped=!1,this.startTime=this.timelineCurrentTime):this.startTime=this.timelineCurrentTime-this.currentTime,this.paused=!1,!0}pause(){return this.paused=!0,!0}stop(){return this._stoped=!0,this.paused=!0,this._currentTime=0,!0}cancel(){this._getTargets().forEach(e=>{var t;(t=this._cachedProps.get(e))==null||t.forEach((i,r)=>{e[r]=i}),this._cachedProps.delete(e)})}},$i([S({default:"parent"})],c.Animation.prototype,"effectMode",2),$i([S({default:!1})],c.Animation.prototype,"loop",2),$i([S({default:[]})],c.Animation.prototype,"keyframes",2),$i([S()],c.Animation.prototype,"easing",2),c.Animation=$i([te("Animation",{renderMode:"disabled",processMode:"pausable",processSortMode:"parent_before",duration:2e3})],c.Animation);const ts=class ts extends Ht{constructor(){super(...arguments);u(this,"playbackRate",1);u(this,"muted",!1);u(this,"volume",1);u(this,"paused",!1)}static get instance(){return this._instance||(this._instance=new ts),this._instance}refresh(){this.emit("refresh")}refreshPaused(){this.emit("refreshPaused")}get processors(){return console.warn("HTML Audio does not support processors"),[]}set processors(e){console.warn("HTML Audio does not support processors")}get audioContext(){return console.warn("HTML Audio does not support audioContext"),null}toggleMute(){return this.muted=!this.muted,this.refresh(),this.muted}togglePause(){return this.paused=!this.paused,this.refreshPaused(),this.paused}free(){this.removeAllListeners()}};u(ts,"_instance");let Wr=ts;const tr=class tr extends Ht{constructor(){super(...arguments);u(this,"_source",null);u(this,"_audio",null);u(this,"_end",0);u(this,"_pausedReal",!1);u(this,"_duration",0);u(this,"_start",0);u(this,"_playing",!1);u(this,"_paused",!1);u(this,"_playbackRate",1);u(this,"_volume",1);u(this,"_loop",!1);u(this,"_muted",!1);u(this,"_onUpdate",()=>{this._source&&(this.emit("progress",this.progress,this._duration),this._source.currentTime>=this._end&&!this._source.loop&&this._onComplete())})}get progress(){var e;return(((e=this._source)==null?void 0:e.currentTime)??0)/this._duration}get paused(){return this._paused}set paused(e){this._paused!==e&&(this._paused=e,this.refreshPaused())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh())}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}set(e,t){if(this[e]===void 0)throw new Error(`Property with name ${e} does not exist.`);switch(e){case"playbackRate":this.playbackRate=t;break;case"volume":this.volume=t;break;case"paused":this.paused=t;break;case"loop":this.loop=t;break;case"muted":this.muted=t;break}return this}_onPlay(){this._playing=!0}_onPause(){this._playing=!1}init(e){this._playing=!1,this._duration=e.source.duration;const t=this._source=e.source.cloneNode(!1);return t.src=e.parent.src,t.onplay=this._onPlay.bind(this),t.onpause=this._onPause.bind(this),e.context.on("refresh",this.refresh),e.context.on("refreshPaused",this.refreshPaused),this._audio=e,this}_stop(){this._source&&this._playing&&(this._source.onended=null,this._source.pause())}stop(){this._stop(),this._source&&this.emit("stop")}get processors(){return console.warn("HTML Audio does not support processors"),[]}set processors(e){console.warn("HTML Audio does not support processors")}refresh(){if(!this._audio||!this._source)return;const e=this._audio.context,t=this._audio.parent;this._source.loop=this._loop||t.loop;const i=e.volume*(e.muted?0:1),r=t.volume*(t.muted?0:1),n=this._volume*(this._muted?0:1);this._source.volume=n*i*r,this._source.playbackRate=this._playbackRate*e.playbackRate*t.playbackRate}refreshPaused(){if(!this._source||!this._audio)return;const e=this._paused||this._audio.parent.paused||this._audio.context.paused;e!==this._pausedReal&&(this._pausedReal=e,e?(this._stop(),this.emit("paused")):(this.emit("resumed"),this.play({start:this._source.currentTime,end:this._end,volume:this._volume,playbackRate:this._playbackRate,loop:this._loop})),this.emit("pause",e))}play(e={}){if(!this._source)return;const{start:t=0,end:i=0}=e;i&&console.assert(i>t,"End time is before start time"),e.playbackRate!==void 0&&(this._playbackRate=e.playbackRate),e.volume!==void 0&&(this._volume=e.volume),e.loop!==void 0&&(this._loop=e.loop),e.muted!==void 0&&(this._muted=e.muted),this.refresh(),this.loop&&i!==null&&(console.warn('Looping not support when specifying an "end" time'),this.loop=!1),this._start=t,this._end=i||this._duration,this._start=Math.max(0,this._start-tr.PADDING),this._end=Math.min(this._end+tr.PADDING,this._duration),this._source.onloadedmetadata=()=>{this._source&&(this._source.currentTime=t,this._source.onloadedmetadata=null,this.emit("progress",t,this._duration),xe.on(this._onUpdate))},this._source.onended=this._onComplete.bind(this),this._source.play(),this.emit("start")}_onComplete(){xe.off(this._onUpdate),this._stop(),this.emit("progress",1,this._duration),this.emit("end",this)}free(){xe.off(this._onUpdate),this.removeAllListeners();const e=this._source;e&&(e.onended=null,e.onplay=null,e.onpause=null,this._stop()),this._source=null,this._playbackRate=1,this._volume=1,this._loop=!1,this._end=0,this._start=0,this._duration=0,this._playing=!1,this._pausedReal=!1,this._paused=!1,this._muted=!1,this._audio&&(this._audio.context.off("refresh",this.refresh),this._audio.context.off("refreshPaused",this.refreshPaused),this._audio=null)}};u(tr,"PADDING",.1);let zr=tr;class Yl{constructor(A){u(this,"source",new globalThis.Audio);u(this,"_src","");this.parent=A}get src(){return this._src}set src(A){this._src!==A&&(this._src=A,this.load())}get duration(){return this.source.duration}get isPlayable(){return!!this.source&&this.source.readyState===4}get context(){return Wr.instance}async load(){return new Promise(A=>{this.source.onload=()=>A(this),this.source.src=this._src,this.source.load()})}createSound(){return new zr}}class Nn extends Ht{constructor(e,t){super();u(this,"_processers",[]);this._input=e,this._output=t}get processors(){return this._processers}set processors(e){if(this._processers.forEach(t=>t.disconnect()),this._processers.length=0,this._input.connect(this._output),e.length){this._processers=e.slice(0),this._input.disconnect();let t;e.forEach(i=>{t?t.connect(i.destination):this._input.connect(i.destination),t=i}),t.connect(this._output)}}get destination(){return this._input}}class tI{constructor(A,e=null){this.destination=A,this.source=e}connect(A){var e;(e=this.source)==null||e.connect(A)}disconnect(){var A;(A=this.source)==null||A.disconnect()}}function AI(){if(Bs)return new AudioContext;if(Es){const s=globalThis.webkitAudioContext;return new s}else throw new Error("Failed to createAudioContext")}function iI(s,A,e){if(ps)return new OfflineAudioContext(s,A,e);if(ro){const t=globalThis.webkitOfflineAudioContext;return new t(s,A,e)}else throw new Error("Failed to createOfflineAudioContext")}const As=class As extends Nn{constructor(){const e=AI(),t=iI(1,2,ps?Math.max(8e3,Math.min(96e3,e.sampleRate)):44100),i=e.createDynamicsCompressor(),r=e.createAnalyser();r.connect(i),i.connect(e.destination);super(r,i);u(this,"_context");u(this,"_offlineContext");u(this,"_locked");u(this,"muted",!1);u(this,"volume",1);u(this,"playbackRate",1);u(this,"autoPause",!0);u(this,"_paused",!1);u(this,"_pausedOnBlur",!1);u(this,"_compressor");u(this,"_analyser");u(this,"_unlock",()=>{this._locked&&(this.playEmptySound(),this._context.state==="running"&&(document.removeEventListener("mousedown",this._unlock,!0),document.removeEventListener("touchend",this._unlock,!0),document.removeEventListener("touchstart",this._unlock,!0),this._locked=!1))});this._context=e,this._offlineContext=t,this._compressor=i,this._analyser=r,this._locked=e.state==="suspended"&&(Ot||io),Ei&&(this._locked&&(this._unlock(),document.addEventListener("mousedown",this._unlock,!0),document.addEventListener("touchstart",this._unlock,!0),document.addEventListener("touchend",this._unlock,!0)),globalThis.addEventListener("focus",this._onFocus),globalThis.addEventListener("blur",this._onBlur))}static get instance(){return this._instance||(this._instance=new As),this._instance}static get audioContext(){return this.instance.audioContext}static get offlineContext(){return this.instance.offlineContext}static setParamValue(e,t){this.instance.setParamValue(e,t)}static decode(e){return this.instance.decode(e)}get audioContext(){return this._context}get offlineContext(){return this._offlineContext}get paused(){return this._paused}set paused(e){e&&this._context.state==="running"?this._context.suspend():!e&&this._context.state==="suspended"&&this._context.resume(),this._paused=e}_onFocus(){if(!this.autoPause)return;const e=this._context.state;(e==="suspended"||e==="interrupted"||!this._locked)&&(this.paused=this._pausedOnBlur,this.refreshPaused())}_onBlur(){this.autoPause&&(this._locked||(this._pausedOnBlur=this._paused,this.paused=!0,this.refreshPaused()))}playEmptySound(){const e=this._context.createBufferSource();e.buffer=this._context.createBuffer(1,1,22050),e.connect(this._context.destination),e.start(0,0,0),e.context.state==="suspended"&&e.context.resume()}refresh(){this.emit("refresh")}refreshPaused(){this.emit("refreshPaused")}toggleMute(){return this.muted=!this.muted,this.refresh(),this.muted}togglePause(){return this.paused=!this.paused,this.refreshPaused(),this._paused}decode(e){return new Promise((t,i)=>{const r=o=>{i(new Error((o==null?void 0:o.message)||"Unable to decode file"))},n=this._offlineContext.decodeAudioData(e,t,r);n&&n.catch(r)})}setParamValue(e,t){e.setValueAtTime?e.setValueAtTime(t,this._context.currentTime):e.value=t}};u(As,"_instance");let fA=As;class Wl extends Ht{constructor(){super(...arguments);u(this,"_audio",null);u(this,"_sourceNode",null);u(this,"_gain",null);u(this,"_progress",0);u(this,"_pausedReal",!1);u(this,"_paused",!1);u(this,"_volume",1);u(this,"_playbackRate",1);u(this,"_loop",!1);u(this,"_muted",!1);u(this,"_duration",0);u(this,"_end",0);u(this,"_elapsed",0);u(this,"_lastUpdate",this._now());u(this,"_processors",[]);u(this,"_onComplete",()=>{if(this._sourceNode){this._enableTicker(!1),this._sourceNode.onended=null,this._sourceNode.disconnect();try{this._sourceNode.buffer=null}catch(e){console.warn("Failed to set AudioBufferSourceNode.buffer to null:",e)}}this._sourceNode=null,this._progress=1,this.emit("progress",1,this._duration),this.emit("end",this)});u(this,"_updateListener",()=>this._update())}get progress(){return this._progress}get paused(){return this._paused}set paused(e){this._paused!==e&&(this._paused=e,this.refreshPaused())}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh(),this._update(!0))}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}init(e){return this._audio=e,e.context.on("refresh",this.refresh),e.context.on("refreshPaused",this.refreshPaused),this}_now(){var e;return((e=this._audio)==null?void 0:e.context.audioContext.currentTime)??0}play(e={}){var o;if(!this._audio)return;const{end:t=0,start:i=0}=e;t&&console.assert(t>i,"End time is before start time"),this._end=t,this._elapsed=i,e.volume!==void 0&&(this._volume=e.volume),e.playbackRate!==void 0&&(this._playbackRate=e.playbackRate),e.muted!==void 0&&(this._muted=e.muted),e.loop!==void 0&&(this._loop=e.loop),e.processors!==void 0&&(this._processors=e.processors),this._paused=!1;const{source:r,gain:n}=this._audio.cloneSource();this._sourceNode=r,this._gain=n,this.refresh(),r.onended=this._onComplete.bind(this),this._duration=((o=r.buffer)==null?void 0:o.duration)??0,this._lastUpdate=this._now(),this._loop?(r.loopStart=i,r.loopEnd=t,r.start(0,i)):t?r.start(0,i,t-i):r.start(0,i),this.emit("start"),this._update(!0),this._enableTicker(!0)}_stop(){if(this._sourceNode){this._enableTicker(!1),this._sourceNode.onended=null,this._sourceNode.stop(0),this._sourceNode.disconnect();try{this._sourceNode.buffer=null}catch(e){console.warn("Failed to set AudioBufferSourceNode.buffer to null:",e)}this._sourceNode=null}}stop(){this._sourceNode&&(this._stop(),this.emit("stop"))}_update(e=!1){if(this._sourceNode){const t=this._now(),i=t-this._lastUpdate;if(i>0||e){this._elapsed+=i*this._sourceNode.playbackRate.value,this._lastUpdate=t;const r=this._duration;let n;if(this._sourceNode.loopStart){const o=this._sourceNode.loopEnd-this._sourceNode.loopStart;n=(this._sourceNode.loopStart+this._elapsed%o)/r}else n=this._elapsed%r/r;this._progress=n,this.emit("progress",n,r)}}}refresh(){if(!this._audio||!this._sourceNode)return;const e=this._audio.context,t=this._audio.parent;this._sourceNode.loop=this._loop||t.loop,e.setParamValue(this._gain.gain,this._volume*(this._muted?0:1)*t.volume*(t.muted?0:1)*e.volume*(e.muted?0:1)),e.setParamValue(this._sourceNode.playbackRate,this._playbackRate*t.playbackRate*e.playbackRate),this.applyProcessors()}applyProcessors(){if(this._sourceNode&&this._processors.length){this._sourceNode.disconnect();let e=this._sourceNode;this._processors.forEach(t=>{e.connect(t.destination),e=t}),e.connect(this._gain)}}refreshPaused(){if(!this._audio)return;const e=this._paused||this._audio.parent.paused||this._audio.context.paused;e!==this._pausedReal&&(this._pausedReal=e,e?(this._stop(),this.emit("paused")):(this.emit("resumed"),this.play({start:this._elapsed%this._duration,end:this._end,playbackRate:this._playbackRate,loop:this._loop,volume:this._volume})),this.emit("pause",e))}_enableTicker(e){xe.off(this._updateListener),e&&xe.on(this._updateListener)}free(){var e,t,i;this.removeAllListeners(),this._stop(),(e=this._gain)==null||e.disconnect(),this._gain=null,(t=this._audio)==null||t.context.off("refresh",this.refresh),(i=this._audio)==null||i.context.off("refreshPaused",this.refreshPaused),this._audio=null,this._processors.forEach(r=>r.disconnect()),this._processors.length=0,this._end=0,this._playbackRate=1,this._volume=1,this._loop=!1,this._elapsed=0,this._duration=0,this._paused=!1,this._muted=!1,this._pausedReal=!1}}class zl extends Nn{constructor(e){const t=fA.audioContext,i=t.createBufferSource(),r=t.createGain(),n=t.createAnalyser();i.connect(n),n.connect(r),r.connect(fA.instance.destination);super(n,r);u(this,"_sourceBuffer");u(this,"_sourceNode");u(this,"_sourceLoad");u(this,"gain");u(this,"analyser");this.parent=e,this._sourceNode=i,this.gain=r,this.analyser=n}get context(){return fA.instance}get isPlayable(){return!!this._sourceNode.buffer}get duration(){var e;return((e=this._sourceNode.buffer)==null?void 0:e.duration)??0}get buffer(){return this._sourceNode.buffer}set buffer(e){this._sourceNode.buffer=e}async load(){return this._sourceLoad||(this._sourceLoad=new Promise(e=>{this._sourceBuffer?this._decode(this._sourceBuffer).then(()=>e(this)):this.parent.src?this._loadUrl(this.parent.src).then(()=>e(this)):e(this)})),this._sourceLoad}_loadUrl(e){return new Promise(t=>{fetch(e).then(i=>i.arrayBuffer()).then(i=>this._decode(i)).finally(()=>t(this))})}_decode(e){return Promise.resolve(e instanceof AudioBuffer?e:fA.decode(e)).then(t=>(this.parent.isLoaded=!0,this.buffer=t,t))}cloneSource(){const e=this.context,t=this._sourceNode,i=e.audioContext.createBufferSource(),r=e.audioContext.createGain();return i.buffer=t.buffer,i.loop=t.loop,e.setParamValue(i.playbackRate,t.playbackRate.value),i.connect(r),r.connect(this.destination),{source:i,gain:r}}createSound(){return new Wl}}var rI=Object.defineProperty,sI=Object.getOwnPropertyDescriptor,nI=(s,A,e)=>A in s?rI(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,oI=(s,A,e,t)=>{for(var i=t>1?void 0:t?sI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i},aI=(s,A,e)=>nI(s,A+"",e);c.Audio=class extends c.TimelineNode{constructor(e=""){super();u(this,"_sounds",[]);u(this,"_platformAudio",so?new zl(this):new Yl(this));u(this,"_src");u(this,"isLoaded",!1);u(this,"_volume",1);u(this,"_muted",!1);u(this,"_loop",!1);u(this,"_playbackRate",1);u(this,"_isPlaying",!1);u(this,"multiple",!1);u(this,"start",0);u(this,"end",0);u(this,"_onComplete",e=>{if(this._sounds){const t=this._sounds.indexOf(e);t>-1&&this._sounds.splice(t,1),this._isPlaying=this._sounds.length>0}this._recycleSound(e)});u(this,"_prevTime",0);u(this,"_timer",0);this.src=e}get platformAudio(){return this._platformAudio}get src(){return this._src}set src(e){this._src!==e&&(this._src=e,this.load())}get isPlayable(){return this.isLoaded&&this._platformAudio.isPlayable}get audioDuration(){return this._platformAudio.duration*1e3}get volume(){return this._volume}set volume(e){this._volume!==e&&(this._volume=e,this.refresh())}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this.refresh())}get loop(){return this._loop}set loop(e){this._loop!==e&&(this._loop=e,this.refresh())}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate!==e&&(this._playbackRate=e,this.refresh())}get isPlaying(){return this._isPlaying}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"paused":this.refreshPaused();break}}async load(){return await this._platformAudio.load(),this}pause(){return this._isPlaying=!1,this.paused=!0,this}resume(){return this._isPlaying=this._sounds.length>0,this.paused=!1,this}stop(){if(!this.isPlayable)return this;this._isPlaying=!1;for(let e=this._sounds.length-1;e>=0;e--)this._sounds[e].stop();return this}play(e={}){if(!this.isLoaded)return;this.multiple||this._removeSounds(),this._isPlaying=!0;const t=this._createSound();this._sounds.push(t),t.once("end",()=>{var n;(n=e.complete)==null||n.call(e),this._onComplete(t)}),t.once("stop",()=>this._onComplete(t));const i=((e==null?void 0:e.start)??this.start)/1e3,r=((e==null?void 0:e.end)??this.end)/1e3;return t.play({...e,start:i,end:r}),t}_removeSounds(){for(let e=this._sounds.length-1;e>=0;e--)this._recycleSound(this._sounds[e]);this._sounds.length=0}_createSound(){return c.Audio._soundPool.length>0?c.Audio._soundPool.pop().init(this._platformAudio):this._platformAudio.createSound().init(this._platformAudio)}refresh(){for(let e=this._sounds.length,t=0;t<e;t++)this._sounds[t].refresh()}refreshPaused(){for(let e=this._sounds.length,t=0;t<e;t++)this._sounds[t].refreshPaused()}_recycleSound(e){e.free(),c.Audio._soundPool.includes(e)||c.Audio._soundPool.push(e)}_process(e){var t;if(super._process(e),this.canProcess()){const i=((t=this._tree)==null?void 0:t.timeline.currentTime)??0;i-this._prevTime>0&&(this._timer||(this._setTimeStop(),this.play({start:this.start+(i-this.delay)%this.duration})),this._isPlaying&&this._setTimeStop()),this._prevTime=i}}_setTimeStop(){this._timer&&clearTimeout(this._timer),this._timer=setTimeout(()=>{this.stop(),this._timer=0},100)}},aI(c.Audio,"_soundPool",[]),c.Audio=oI([te("Audio")],c.Audio);class lI extends c.Node2D{}var hI=Object.defineProperty,gI=Object.getOwnPropertyDescriptor,Vr=(s,A,e,t)=>{for(var i=t>1?void 0:t?gI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&hI(A,e,i),i};c.AudioWaveform=class extends c.Element2D{constructor(e={}){super();u(this,"src");u(this,"gap",0);u(this,"color","#000000");u(this,"_audioBuffer");u(this,"_src",Ei?new ve(document.createElement("canvas")):void 0);u(this,"_needsUpdateTexture",!1);this.setProperties(e)}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"src":this._loadSrc(t);break;case"gap":case"color":case"width":case"height":this._needsUpdateTexture=!0;break}}async _loadSrc(e){await globalThis.fetch(e).then(t=>t.arrayBuffer()).then(t=>fA.decode(t)).then(t=>{this._audioBuffer=t,this.syncTexture(!0)})}syncTexture(e=!1){var g,f;const t=this._audioBuffer;if(!t||!e&&!this._needsUpdateTexture)return;this._needsUpdateTexture=!1;const i=(g=this._src)==null?void 0:g.source;if(!i)return;const{width:r=0,height:n=0}=this.style;i.width=r,i.height=n;const o=i.getContext("2d");if(!o){console.warn("Failed to getContext('2d') in syncTexture");return}o.fillStyle=this.color;const a=t.getChannelData(0),l=Math.ceil(a.length/r),h=n/2;for(let I=1,d=-1,C=0;C<r;C++){for(let B=0;B<l;B++){const M=a[C*l+B];M<I&&(I=M),M>d&&(d=M)}if(!this.gap||C%(this.gap*2)===0){const B=C,M=(1+I)*h,R=this.gap||1,_=Math.max(1,(d-I)*h);o.fillRect(B,M,R,_),I=1,d=-1}}(f=this._src)==null||f.requestUpload(),this.requestRedraw()}_process(e){this.syncTexture(),super._process(e)}_drawSrc(){const e=this._src;e!=null&&e.valid&&(this.context.fillStyle=e,this.context.textureTransform=new dt().scale(1/this.style.width,1/this.style.height))}},Vr([S()],c.AudioWaveform.prototype,"src",2),Vr([S()],c.AudioWaveform.prototype,"gap",2),Vr([S()],c.AudioWaveform.prototype,"color",2),c.AudioWaveform=Vr([te("AudioWaveform")],c.AudioWaveform);var cI=Object.getOwnPropertyDescriptor,uI=(s,A,e,t)=>{for(var i=t>1?void 0:t?cI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};c.Control=class extends c.Element2D{constructor(A,e=[]){super(),this._parentUpdateRect=this._parentUpdateRect.bind(this),this.setProperties(A),this.append(e)}_parented(A){super._parented(A),A.on("updateRect",this._parentUpdateRect)}_unparented(A){super._unparented(A),A.off("updateRect",this._parentUpdateRect)}_parentUpdateRect(){const A=this._parent.getRect();this.style.left=A.left,this.style.top=A.top,this.style.width=A.width,this.style.height=A.height}_input(A,e){super._input(A,e),this._guiInput(A,e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":case"left":case"top":this.emit("updateRect");break}}_guiInput(A,e){}},c.Control=uI([te("Control")],c.Control);var fI=Object.defineProperty,dI=Object.getOwnPropertyDescriptor,dA=(s,A,e,t)=>{for(var i=t>1?void 0:t?dI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&fI(A,e,i),i};c.Range=class extends c.Control{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"allowGreater":case"allowLesser":case"page":case"minValue":case"maxValue":case"step":case"value":this.requestRedraw();break}}},dA([S({default:!1})],c.Range.prototype,"allowGreater",2),dA([S({default:!1})],c.Range.prototype,"allowLesser",2),dA([S({default:1})],c.Range.prototype,"page",2),dA([S({default:0})],c.Range.prototype,"minValue",2),dA([S({default:100})],c.Range.prototype,"maxValue",2),dA([S({default:.01})],c.Range.prototype,"step",2),dA([S({default:0})],c.Range.prototype,"value",2),c.Range=dA([te("Range")],c.Range);var II=Object.defineProperty,BI=Object.getOwnPropertyDescriptor,Nt=(s,A,e,t)=>{for(var i=t>1?void 0:t?BI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&II(A,e,i),i};c.Ruler=class extends c.Control{constructor(e,t=[]){super();u(this,"texture",new GA);this.setProperties(e),this.append(t)}_updateProperty(e,t,i,r){switch(super._updateProperty(e,t,i,r),e){case"offsetX":case"offsetY":case"thickness":case"markHeight":case"color":case"markBackgroundColor":case"markColor":case"gap":case"scale":this.requestRedraw();break}}_updateStyleProperty(e,t,i,r){switch(super._updateStyleProperty(e,t,i,r),e){case"width":case"height":this.texture[e]=t,this.requestRedraw();break}}_drawTexture(){const{width:e,height:t}=this.size,{offsetX:i,offsetY:r,thickness:n,markHeight:o,markBackgroundColor:a,markColor:l,color:h,gap:g,gapScale:f}=this,d=this.texture.source.getContext("2d");d.reset(),d.scale(this.texture.pixelRatio,this.texture.pixelRatio);const C=Math.round(i),B=Math.round(r);d.beginPath(),d.fillStyle=a||"#EEE",d.fillRect(0,0,e,n),d.fillRect(0,0,n,t),d.fill(),d.strokeStyle=l||"#000",d.moveTo(n,0),d.lineTo(n,t),d.moveTo(0,n),d.lineTo(e,n),d.stroke();const M=g,R=g*f;let _,P,v,w,D;for(M>=R?(_=M/R,P=Math.floor(_)*M/20,v=M/20*Math.floor(_)/_):(_=R/M,P=Math.floor(M/20/_),P>=2?P=Math.floor(P/2)*2:P=1,v=P*_),d.fillStyle=d.strokeStyle,w=C,D=0;w<e;D++,w+=v)d.moveTo(w,n-(D%5?o:2*o)),d.lineTo(w,n);for(w=C,D=0;w>n;D++,w-=v)d.moveTo(w,n-(D%5?o:2*o)),d.lineTo(w,n);let x=0;for(w=B,D=0;w>n;D++,w-=v)d.moveTo(n-(D%5?o:2*o),w),d.lineTo(n,w);for(w=B,D=0;w<t;D++,w+=v)d.moveTo(n-(D%5?o:2*o),w),d.lineTo(n,w);for(d.save(),d.fillStyle=h,d.scale(.8,.8),x=n-8,w=C,D=0;w<e;D++,w+=v)D%10===0&&d.fillText(String(Math.ceil(P*D)),w*1.25-3,x*1.25);for(w=C,D=0;w>n;D++,w-=v)D%10===0&&d.fillText(String(Math.ceil(-P*D)),w*1.25-3,x*1.25);for(x=0,w=B,D=0;w>n;D++,w-=v)D%10===0&&d.fillText(String(Math.ceil(P*D)),x*1.25,w*1.25+3);for(w=B,D=0;w<t;D++,w+=v)D%10===0&&d.fillText(String(Math.ceil(-P*D)),x*1.25,w*1.25+3);d.restore(),d.stroke(),this.texture.requestUpload()}_draw(){this._drawTexture();const e=this.texture;e!=null&&e.valid&&(this.context.fillStyle=e,this.context.textureTransform=new dt().scale(1/this.size.width,1/this.size.height),this.context.rect(0,0,e.width,e.height),this.context.fill())}},Nt([S({default:0})],c.Ruler.prototype,"offsetX",2),Nt([S({default:0})],c.Ruler.prototype,"offsetY",2),Nt([S({default:20})],c.Ruler.prototype,"thickness",2),Nt([S({default:3})],c.Ruler.prototype,"markHeight",2),Nt([S({default:"#b2b6bc"})],c.Ruler.prototype,"color",2),Nt([S({default:"#f9f9fa"})],c.Ruler.prototype,"markBackgroundColor",2),Nt([S({default:"#b2b6bc"})],c.Ruler.prototype,"markColor",2),Nt([S({default:300})],c.Ruler.prototype,"gap",2),Nt([S({default:1})],c.Ruler.prototype,"gapScale",2),c.Ruler=Nt([te("Ruler")],c.Ruler);var EI=Object.defineProperty,pI=Object.getOwnPropertyDescriptor,Vl=(s,A,e,t)=>{for(var i=t>1?void 0:t?pI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&EI(A,e,i),i};c.ScrollBar=class extends c.Range{constructor(A,e=[]){super(),this.setProperties(A).append(e)}_updateStyleProperty(A,e,t,i){switch(super._updateStyleProperty(A,e,t,i),A){case"width":case"height":case"left":case"top":this.requestRedraw();break}}_rect(){const{size:A,position:e}=this;let t,i,r,n,o;return this.direction==="vertical"?(r=10,n=A.height*(this.page/(this.maxValue-this.minValue)),t=e.left+A.width-r,i=A.height*(this.value/(this.maxValue-this.minValue)),o=r/2):(r=A.width*(this.page/(this.maxValue-this.minValue)),n=10,t=A.width*(this.value/(this.maxValue-this.minValue)),i=e.top+A.height-n,o=n/2),{left:t,top:i,width:r,height:n,radii:o}}_draw(){const{left:A,top:e,width:t,height:i,radii:r}=this._rect();this.context.roundRect(A,e,t,i,r),this.context.fillStyle=34,this.context.fill()}_pointerInput(A,e){var a,l;const{left:t,top:i,width:r,height:n}=this._rect(),o=A.x>=t&&A.x<t+r&&A.y>=i&&A.y<i+n;switch(e){case"pointerdown":case"pointermove":o?(a=this._tree)==null||a.input.setCursor("pointer"):(l=this._tree)==null||l.input.setCursor(void 0);break}return!1}},Vl([S({default:"vertical"})],c.ScrollBar.prototype,"direction",2),c.ScrollBar=Vl([te("ScrollBar")],c.ScrollBar);var CI=Object.getOwnPropertyDescriptor,QI=(s,A,e,t)=>{for(var i=t>1?void 0:t?CI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};c.XScrollBar=class extends c.ScrollBar{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},c.XScrollBar=QI([te("XScrollBar",{direction:"horizontal"})],c.XScrollBar);var yI=Object.getOwnPropertyDescriptor,mI=(s,A,e,t)=>{for(var i=t>1?void 0:t?yI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i};c.YScrollBar=class extends c.ScrollBar{constructor(A,e=[]){super(),this.setProperties(A).append(e)}},c.YScrollBar=mI([te("YScrollBar",{direction:"vertical"})],c.YScrollBar);var wI=Object.defineProperty,vI=Object.getOwnPropertyDescriptor,qr=(s,A,e,t)=>{for(var i=t>1?void 0:t?vI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=(t?n(A,e,i):n(i))||i);return t&&i&&wI(A,e,i),i};c.Scaler=class extends c.Node{get target(){var A;if((A=this.parent)!=null&&A.style)return this.parent}constructor(A,e=[]){super(),this.setProperties(A),this.append(e)}_updateProperty(A,e,t,i){switch(super._updateProperty(A,e,t,i),A){case"value":case"min":case"max":{this.value=bt(this.minValue,this.value,this.maxValue),this._updateScale();break}}}_updateScale(){const A=this.target;A&&(A.style.scaleX=this.value,A.style.scaleY=this.value,this.emit("updateScale",this.value))}_onWheel(A){if(!this.target)return;if(A.preventDefault(),!(A.wheelDeltaY?Math.abs(Math.abs(A.wheelDeltaY)-Math.abs(3*A.deltaY))<3:A.deltaMode===0)&&A.ctrlKey){A.preventDefault();let i=A.deltaY/(A.ctrlKey?1:100);i*=-.015,this.value+=i}}_input(A,e){switch(super._input(A,e),e){case"wheel":this._onWheel(A);break}}},qr([S({default:1})],c.Scaler.prototype,"value",2),qr([S({default:.05})],c.Scaler.prototype,"minValue",2),qr([S({default:10})],c.Scaler.prototype,"maxValue",2),c.Scaler=qr([te("Scaler",{processMode:"disabled",renderMode:"disabled"})],c.Scaler);var _I=Object.defineProperty,DI=Object.getOwnPropertyDescriptor,bI=(s,A,e)=>A in s?_I(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,xI=(s,A,e,t)=>{for(var i=t>1?void 0:t?DI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i},SI=(s,A,e)=>bI(s,A+"",e);c.KawaseTransition=class extends c.Transition{constructor(){super(...arguments);u(this,"blur",10);u(this,"quality",10)}apply(e,t){const i=this.currentTimeProgress;let r,n;i<.5?(r=0,n=(.5-i)/.5):(r=1,n=(i-.5)/.5);const o=this.blur,a=this.quality,l=t.width,h=t.height,g=[],f=[o];if(o>0){let R=o;const _=o/a;for(let P=1;P<a;P++)R-=_,f.push(R)}const I=1/l,d=1/h,C=[];let B;const M=a-1;for(let R=0;R<M;R++)B=f[R]+.5,C[0]=B*I,C[1]=B*d,g.push({offset:C});B=f[M]+.5,C[0]=B*I,C[1]=B*d,g.push({offset:C}),g.forEach(R=>{ce.draw(e,c.KawaseTransition.material,{sampler:r,progress:n,...R})})}},SI(c.KawaseTransition,"material",new pe({vert:`attribute vec2 position;
864
864
  attribute vec2 uv;
865
865
  varying vec2 vUv;
866
866
  void main() {
@@ -881,7 +881,7 @@ void main(void) {
881
881
  color += texture2D(sampler, vec2(vUv.x - offset1.x, vUv.y - offset1.y));
882
882
  color *= 0.25;
883
883
  gl_FragColor = color;
884
- }`})),g.KawaseTransition=bI([ee("KawaseTransition")],g.KawaseTransition);var SI=Object.defineProperty,MI=Object.getOwnPropertyDescriptor,RI=(r,A,e)=>A in r?SI(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,PI=(r,A,e,t)=>{for(var i=t>1?void 0:t?MI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},UI=(r,A,e)=>RI(r,A+"",e);g.LeftEraseTransition=class extends g.Transition{apply(A){ce.draw(A,g.LeftEraseTransition.material,{previous:0,next:1,progress:this.currentTimeProgress})}},UI(g.LeftEraseTransition,"material",new pe({vert:`attribute vec2 position;
884
+ }`})),c.KawaseTransition=xI([te("KawaseTransition")],c.KawaseTransition);var MI=Object.defineProperty,RI=Object.getOwnPropertyDescriptor,PI=(s,A,e)=>A in s?MI(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,UI=(s,A,e,t)=>{for(var i=t>1?void 0:t?RI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i},kI=(s,A,e)=>PI(s,A+"",e);c.LeftEraseTransition=class extends c.Transition{apply(A){ce.draw(A,c.LeftEraseTransition.material,{previous:0,next:1,progress:this.currentTimeProgress})}},kI(c.LeftEraseTransition,"material",new pe({vert:`attribute vec2 position;
885
885
  attribute vec2 uv;
886
886
  varying vec2 vUv;
887
887
  void main() {
@@ -906,7 +906,7 @@ void main() {
906
906
  mixPercent = 1.0;
907
907
  }
908
908
  gl_FragColor = mix(src2Color, src1Color, mixPercent);
909
- }`})),g.LeftEraseTransition=PI([ee("LeftEraseTransition")],g.LeftEraseTransition);var kI=Object.defineProperty,NI=Object.getOwnPropertyDescriptor,FI=(r,A,e)=>A in r?kI(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,TI=(r,A,e,t)=>{for(var i=t>1?void 0:t?NI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},LI=(r,A,e)=>FI(r,A+"",e);g.TiltShiftTransition=class extends g.Transition{constructor(){super(...arguments);u(this,"blur",100);u(this,"gradientBlur",600)}apply(e,t){const i=this.currentTimeProgress;let s,n;i<.5?(s=0,n=(.5-i)/.5):(s=1,n=(i-.5)/.5);const o=t.width,a=t.height,l=[0,a/2],h=[600,a/2],c=[o,a],f=h[0]-l[0],d=h[1]-l[1],I=Math.sqrt(f*f+d*d);ce.draw(e,g.TiltShiftTransition.material,{sampler:s,progress:n,blur:this.blur,gradientBlur:this.gradientBlur,start:l,end:h,delta:[f/I,d/I],texSize:c}),ce.draw(e,g.TiltShiftTransition.material,{sampler:s,progress:n,blur:this.blur,gradientBlur:this.gradientBlur,start:l,end:h,delta:[-d/I,f/I],texSize:c})}},LI(g.TiltShiftTransition,"material",new pe({vert:`attribute vec2 position;
909
+ }`})),c.LeftEraseTransition=UI([te("LeftEraseTransition")],c.LeftEraseTransition);var NI=Object.defineProperty,FI=Object.getOwnPropertyDescriptor,TI=(s,A,e)=>A in s?NI(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,LI=(s,A,e,t)=>{for(var i=t>1?void 0:t?FI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i},GI=(s,A,e)=>TI(s,A+"",e);c.TiltShiftTransition=class extends c.Transition{constructor(){super(...arguments);u(this,"blur",100);u(this,"gradientBlur",600)}apply(e,t){const i=this.currentTimeProgress;let r,n;i<.5?(r=0,n=(.5-i)/.5):(r=1,n=(i-.5)/.5);const o=t.width,a=t.height,l=[0,a/2],h=[600,a/2],g=[o,a],f=h[0]-l[0],I=h[1]-l[1],d=Math.sqrt(f*f+I*I);ce.draw(e,c.TiltShiftTransition.material,{sampler:r,progress:n,blur:this.blur,gradientBlur:this.gradientBlur,start:l,end:h,delta:[f/d,I/d],texSize:g}),ce.draw(e,c.TiltShiftTransition.material,{sampler:r,progress:n,blur:this.blur,gradientBlur:this.gradientBlur,start:l,end:h,delta:[-I/d,f/d],texSize:g})}},GI(c.TiltShiftTransition,"material",new pe({vert:`attribute vec2 position;
910
910
  attribute vec2 uv;
911
911
  varying vec2 vUv;
912
912
  void main() {
@@ -950,7 +950,7 @@ void main(void) {
950
950
  color.rgb /= color.a + 0.00001;
951
951
 
952
952
  gl_FragColor = color;
953
- }`})),g.TiltShiftTransition=TI([ee("TiltShiftTransition")],g.TiltShiftTransition);var GI=Object.defineProperty,OI=Object.getOwnPropertyDescriptor,HI=(r,A,e)=>A in r?GI(r,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[A]=e,JI=(r,A,e,t)=>{for(var i=t>1?void 0:t?OI(A,e):A,s=r.length-1,n;s>=0;s--)(n=r[s])&&(i=n(i)||i);return i},KI=(r,A,e)=>HI(r,A+"",e);g.TwistTransition=class extends g.Transition{constructor(){super(...arguments);u(this,"radius");u(this,"angle",4);u(this,"padding",20);u(this,"offset")}apply(e,t){const i=this.currentTimeProgress;let s,n;i<.5?(s=0,n=(.5-i)/.5):(s=1,n=(i-.5)/.5);const o=t.width,a=t.height;ce.draw(e,g.TwistTransition.material,{sampler:s,progress:n,filterArea:[o,a,0,0],radius:this.radius??o,angle:this.angle,padding:this.padding,offset:this.offset??[o/2,a/2]})}},KI(g.TwistTransition,"material",new pe({vert:`attribute vec2 position;
953
+ }`})),c.TiltShiftTransition=LI([te("TiltShiftTransition")],c.TiltShiftTransition);var OI=Object.defineProperty,HI=Object.getOwnPropertyDescriptor,JI=(s,A,e)=>A in s?OI(s,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[A]=e,KI=(s,A,e,t)=>{for(var i=t>1?void 0:t?HI(A,e):A,r=s.length-1,n;r>=0;r--)(n=s[r])&&(i=n(i)||i);return i},YI=(s,A,e)=>JI(s,A+"",e);c.TwistTransition=class extends c.Transition{constructor(){super(...arguments);u(this,"radius");u(this,"angle",4);u(this,"padding",20);u(this,"offset")}apply(e,t){const i=this.currentTimeProgress;let r,n;i<.5?(r=0,n=(.5-i)/.5):(r=1,n=(i-.5)/.5);const o=t.width,a=t.height;ce.draw(e,c.TwistTransition.material,{sampler:r,progress:n,filterArea:[o,a,0,0],radius:this.radius??o,angle:this.angle,padding:this.padding,offset:this.offset??[o/2,a/2]})}},YI(c.TwistTransition,"material",new pe({vert:`attribute vec2 position;
954
954
  attribute vec2 uv;
955
955
  varying vec2 vUv;
956
956
  void main() {
@@ -996,4 +996,4 @@ void main(void) {
996
996
  coord = twist(coord, radius - (progress * radius));
997
997
  coord = unmapCoord(coord);
998
998
  gl_FragColor = texture2D(sampler, coord);
999
- }`})),g.TwistTransition=JI([ee("TwistTransition")],g.TwistTransition);class Vl extends tA{install(A){const e=async t=>{const{decodeFrames:i}=await import("modern-gif");return await A.fetch(t).then(s=>s.arrayBuffer()).then(s=>i(s)).then(s=>new hr(s.map(n=>({duration:n.delay,texture:new ks(n.data,n.width,n.height)}))))};return this.load=t=>A.loadBy(t,()=>e(t)),["image/gif"].forEach(t=>{A.register(t,e)}),A.gif=this,this}}class ql extends tA{install(A){const e=t=>A.fetch(t).then(i=>i.json());return this.load=t=>A.loadBy(t,()=>e(t)),["json"].forEach(t=>{A.register(t,e)}),A.json=this,this}}class Xl extends tA{install(A){const e=async(t,i)=>(await import("lottie-web").then(n=>n.default)).loadAnimation({container:null,renderer:"canvas",rendererSettings:{context:i.getContext("2d")},loop:!1,autoplay:!1,animationData:await A.fetch(t).then(n=>n.json())});return this.load=(t,i)=>A.loadBy(t,()=>e(t,i)),["lottie"].forEach(t=>{A.register(t,e)}),A.lottie=this,this}}class jl extends tA{install(A){const e=async t=>await A.fetch(t).then(i=>i.text());return this.load=t=>A.loadBy(t,()=>e(t)),A.text=this,this}}class Zl extends tA{install(A){const e=t=>A.fetchImageBitmap(t,{premultiplyAlpha:"premultiply"}).then(i=>new ve(i));return this.load=t=>A.loadBy(t,()=>e(t)),["image/gif","image/jpeg","image/png","image/tiff","image/vnd.wap.wbmp","image/x-icon","image/x-jng","image/x-ms-bmp","image/svg+xml","image/webp"].forEach(t=>{A.register(t,e)}),A.texture=this,this}}class $l extends tA{install(A){const e=t=>new ta(t).load();return this.load=t=>A.loadBy(t,()=>e(t)),["video/3gpp","video/mpeg","video/quicktime","video/x-flv","video/x-mng","video/x-ms-asf","video/x-ms-wmv","video/x-msvideo","video/mp4"].forEach(t=>{A.register(t,e)}),A.video=this,this}}const YI=Object.entries({"text/html":["html","htm","shtml"],"text/css":["css"],"text/xml":["xml"],"image/gif":["gif"],"image/jpeg":["jpeg","jpg"],"application/x-javascript":["js"],"application/atom+xml":["atom"],"application/rss+xml":["rss"],"text/mathml":["mml"],"text/plain":["txt"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/x-component":["htc"],"image/png":["png"],"image/tiff":["tif","tiff"],"image/vnd.wap.wbmp":["wbmp"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-ms-bmp":["bmp"],"image/svg+xml":["svg"],"image/webp":["webp"],"application/java-archive":["jar","war","ear"],"application/mac-binhex40":["hqx"],"application/msword":["doc"],"application/pdf":["pdf"],"application/postscript":["ps","eps","ai"],"application/rtf":["rtf"],"application/vnd.ms-excel":["xls"],"application/vnd.ms-powerpoint":["ppt"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/x-7z-compressed":["7z"],"application/x-cocoa":["cco"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-makeself":["run"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-sea":["sea"],"application/x-shockwave-flash":["swf"],"application/x-stuffit":["sit"],"application/x-tcl":["tcl","tk"],"application/x-x509-ca-cert":["der","pem","crt"],"application/x-xpinstall":["xpi"],"application/xhtml+xml":["xhtml"],"application/zip":["zip"],"application/octet-stream":["bin","exe","dll","deb","dmg","eot","iso","img","msi","msp","msm"],"audio/midi":["mid","midi","kar"],"audio/mpeg":["mp3"],"audio/ogg":["ogg"],"audio/x-realaudio":["ra"],"video/3gpp":["3gpp","3gp"],"video/mpeg":["mpeg","mpg"],"video/quicktime":["mov"],"video/x-flv":["flv"],"video/x-mng":["mng"],"video/x-ms-asf":["asx","asf"],"video/x-ms-wmv":["wmv"],"video/x-msvideo":["avi"],"video/mp4":["m4v","mp4"]});function WI(r){for(const[A,e]of YI)if(e.includes(r))return A}async function zI(r){var e,t;let A;if(r.startsWith("data:"))A=(e=r.match(/^data:(.+?);/))==null?void 0:e[1];else if(r.startsWith("http")){const i=(t=r.split(/[#?]/)[0].split(".").pop())==null?void 0:t.trim();i&&(A=WI(i))}return A??await fetch(r).then(i=>i.headers.get("Content-Type"))??""}const Xr="WeakRef"in globalThis;class eh{constructor(){u(this,"defaultHandler",A=>this.fetch(A));u(this,"_handlers",new Map);u(this,"_handleing",new Map);u(this,"_handled",new Map);u(this,"_gc",Xr?new FinalizationRegistry(A=>{const e=this.get(A);e&&"free"in e&&e.free(),this._handled.delete(A)}):void 0);Xr||xe.on(this.gc.bind(this),{sort:2})}use(A){return A.install(this),this}register(A,e){return this._handlers.set(A,e),this}fetch(A){return fetch(A)}_fixSVG(A){const e=new DOMParser().parseFromString(decodeURIComponent(A.split(",")[1]),"image/svg+xml").documentElement;return e.setAttribute("width","512"),e.setAttribute("height","512"),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e.outerHTML)}`}async fetchImageBitmap(A,e){return A.startsWith("http")?await this.fetch(A).then(t=>t.blob()).then(t=>t.type==="image/svg+xml"?t.text().then(i=>this.fetchImageBitmap(this._fixSVG(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(i)}`),e)):createImageBitmap(t,e)):(A.startsWith("data:image/svg+xml;charset=utf-8,")&&(A=this._fixSVG(A)),new Promise(t=>{const i=new Image;i.src=A,i.onload=()=>{i.decode().finally(()=>{t(i)})}}).then(t=>createImageBitmap(t,e)))}get(A){let e=this._handled.get(A);return Xr&&e instanceof WeakRef&&(e=e.deref(),e||this._handleing.delete(A)),e}set(A,e){let t=e;Xr&&typeof e=="object"&&(this._gc.register(e,A),t=new WeakRef(e)),this._handled.set(A,t)}async loadBy(A,e){const t=this.get(A)??this._handleing.get(A);if(t)return t;const i=e().then(s=>(this.set(A,s),s)).finally(()=>{this._handleing.delete(A)});return this._handleing.set(A,i),i}async load(A,e){return this.loadBy(A,async()=>{const t=await zI(A);return(this._handlers.get(t)??this.defaultHandler)(A,e)})}async waitUntilLoad(){await Promise.all(Array.from(this._handleing.values()))}gc(){this._handled.forEach((A,e)=>{const t=this.get(e);t&&"free"in t&&t.free()}),this._handled.clear()}}const Nt=new eh().use(new zo).use(new Vl).use(new ql).use(new Xl).use(new jl).use(new Zl).use(new $l);class VI extends g.Control{constructor(){super();u(this,"_pointerStart");u(this,"_pointerOffset");u(this,"selected");u(this,"dragging");u(this,"hovered");u(this,"hover",new g.Element2D({name:"hover",internalMode:"back",style:{visibility:"hidden",outlineStyle:"solid",outlineColor:16711935,outlineWidth:2,pointerEvents:"none"}}));u(this,"transformRect",new Nn({name:"transformRect",internalMode:"back",style:{visibility:"hidden",pointerEvents:"none"}}));u(this,"scaler",new g.Scaler({internalMode:"back"}).on("updateScale",e=>{this.ruler.gapScale=e,this._updateScrollbars(),this._updateSelectionRect()}));u(this,"xScrollBar",new g.XScrollBar({internalMode:"back",style:{visibility:"hidden"}}));u(this,"yScrollBar",new g.YScrollBar({internalMode:"back",style:{visibility:"hidden"}}));u(this,"drawboard",new g.Element2D({name:"drawboard",style:{width:500,height:500,backgroundColor:4294967295,overflow:"hidden",pointerEvents:"none",boxShadow:"2px 2px 2px 1px rgba(0, 0, 0, 0.2)"}},[this.scaler]));u(this,"ruler",new g.Ruler({name:"ruler",offsetX:100,offsetY:100,style:{pointerEvents:"none"}},[this.drawboard,this.hover,this.transformRect,this.xScrollBar,this.yScrollBar]));this._onPointerdown=this._onPointerdown.bind(this),this._onPointermove=this._onPointermove.bind(this),this._onPointerup=this._onPointerup.bind(this),this.append(this.ruler)}_updateStyleProperty(e,t,i,s){switch(super._updateStyleProperty(e,t,i,s),e){case"width":this.drawboard.style.left=(this.size.width-this.drawboard.size.width)/2,this.ruler.offsetX=this.drawboard.style.left;break;case"height":this.drawboard.style.top=(this.size.height-this.drawboard.size.height)/2,this.ruler.offsetY=this.drawboard.style.top;break}}_guiInput(e,t){switch(super._guiInput(e,t),t){case"pointerdown":this._onPointerdown(e);break;case"pointermove":this._onPointermove(e);break;case"pointerup":this._onPointerup();break}}_onPointerdown(e){let t=e.target;t!=null&&t.is(this)&&(t=void 0),t!=null&&t.is(this.transformRect)&&(t=this.selected),this._pointerOffset={x:e.offsetX,y:e.offsetY},this.selected=t,this.dragging=t,t instanceof g.Element2D?this._pointerStart=t.style.clone():this._pointerStart=void 0,this._updateHover(),this._updateSelectionRect()}_onPointermove(e){let t=e.target;t!=null&&t.is(this)&&(t=void 0),t!=null&&t.is(this.transformRect)&&(t=this.selected);const{selected:i,dragging:s,_pointerStart:n,_pointerOffset:o}=this;i&&(t!=null&&t.is(i))?this.hovered=void 0:this.hovered=t;const a=o?{x:e.offsetX-o.x,y:e.offsetY-o.y}:{x:0,y:0};s&&n&&(s.style.left=n.left+a.x/this.scaler.value,s.style.top=n.top+a.y/this.scaler.value,s.update()),this._updateHover(),this._updateSelectionRect()}_onPointerup(){this.dragging=void 0,this._updateHover(),this._updateSelectionRect()}_copyGlobalTransform(e,t){e.style.visibility="visible",e.style.width=t.globalScale.x*t.size.x,e.style.height=t.globalScale.y*t.size.y,e.style.left=t.globalPosition.x,e.style.top=t.globalPosition.y,e.style.rotate=t.globalRotation,e.update()}_updateHover(){const e=this.hovered;e instanceof g.Element2D?(this.hover.style.visibility="visible",this._copyGlobalTransform(this.hover,e),this.hover.requestRedraw()):this.hover.style.visibility="hidden"}_updateSelectionRect(){this.selected?(this.transformRect.style.visibility="visible",this._copyGlobalTransform(this.transformRect,this.selected)):this.transformRect.style.visibility="hidden"}_updateScrollbars(){const e=this.ruler.gapScale,t=this.drawboard.size.height*e,i=this.drawboard.size.width*e;t>this.size.height?(this.yScrollBar.style.visibility="visible",this.yScrollBar.maxValue=t,this.yScrollBar.page=this.size.height):this.yScrollBar.style.visibility="hidden",i>this.size.width?(this.xScrollBar.style.visibility="visible",this.xScrollBar.maxValue=i,this.xScrollBar.page=this.size.width):this.xScrollBar.style.visibility="hidden"}}const th={alpha:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"};class Ah extends Ri{constructor(e={}){var d,I;const{debug:t=!1,view:i,width:s,height:n,pixelRatio:o=Cs,backgroundColor:a=0,autoResize:l,autoStart:h,timeline:c,...f}=e;super(c);u(this,"renderer");u(this,"_resizeObserver",Ao?new ResizeObserver(e=>{const t=e[0];if(t.target===this.view){const{inlineSize:i,blockSize:s}=Array.isArray(t.contentBoxSize)?t.contentBoxSize[0]:t.contentBoxSize;this.resize(i,s)}}):void 0);this.debug=t,this.renderer=new Wo(i,{...th,...f}),this._setupInput(),this.pixelRatio=o,this.backgroundColor=a,l?(!i&&this.renderer.view&&(this.renderer.view.style.width="100%",this.renderer.view.style.height="100%"),this.enableAutoResize(l)):this.resize(s||this.gl.drawingBufferWidth||((d=this.view)==null?void 0:d.clientWidth)||200,n||this.gl.drawingBufferHeight||((I=this.view)==null?void 0:I.clientHeight)||200,!i),h&&this.start()}get view(){return this.renderer.view}get gl(){return this.renderer.gl}get screen(){return this.renderer.screen}get width(){return this.screen.width}get height(){return this.screen.height}get pixelRatio(){return this.renderer.pixelRatio}set pixelRatio(e){this.renderer.pixelRatio=e,this.resize(this.width,this.height),this.view&&(this.view.dataset.pixelRatio=String(e))}_setupInput(){return this.view&&(this.input.setTarget(this.view),["pointerdown","pointerover","pointermove","pointerup","wheel"].forEach(e=>{this.input.on(e,t=>{this.root.input(t,e),this.emit(e,t)})})),this}enableAutoResize(e=!0){var t,i;return this.view&&(e?(t=this._resizeObserver)==null||t.observe(this.view):(i=this._resizeObserver)==null||i.unobserve(this.view)),this}resize(e,t,i=!1){return this.renderer.resize(e,t,i),this.root.width=e,this.root.height=t,this.root.requestUpload(),this.render(),this}nextTick(){return ys()}async waitUntilLoad(){await Nt.waitUntilLoad(),await this.nextTick()}async waitAndRender(e=0){await Nt.waitUntilLoad(),this._process(e),await this.nextTick(),this._render(this.renderer)}render(e=0){this._process(e),this._render(this.renderer)}async start(){await this.waitAndRender(),super.start(e=>{this._process(e),this._render(this.renderer)})}free(){super.free(),this.enableAutoResize(!1),this.renderer.free()}toPixels(){return this.renderer.toPixels()}toImageData(){return new ImageData(this.toPixels(),this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}toCanvas2D(){var s,n;const e=this.toImageData(),t=document.createElement("canvas");t.width=e.width,t.height=e.height,(s=t.getContext("2d"))==null||s.putImageData(e,0,0);const i=document.createElement("canvas");return i.width=this.width,i.height=this.height,(n=i.getContext("2d"))==null||n.drawImage(t,0,0,t.width,t.height,0,0,i.width,i.height),i}}let Ft;const Tn=[];let Ln=!1;async function qI(r=100){if(!Ln){for(Ln=!0;Tn.length;){const A=Tn.shift();if(A)try{await A()}catch(e){console.error(e)}else await new Promise(e=>setTimeout(e,r))}Ln=!1}}async function XI(r){var n;const{data:A,width:e,height:t,debug:i=!1,time:s=0}=r;return Ft??(Ft=new Ah({width:1,height:1,preserveDrawingBuffer:!0})),Ft.debug=i,Ft.root.removeChildren(),Ft.timeline.currentTime=s,Ft.resize(e,t,!0),(Array.isArray(A)?A:[A]).forEach(o=>{o instanceof g.Node?Ft.root.appendChild(o):Ft.root.appendChild(g.Node.parse(o))}),await((n=r.onBeforeRender)==null?void 0:n.call(r,Ft)),await Ft.waitAndRender(),Ft.toCanvas2D()}async function jI(r){return new Promise(A=>{Tn.push(async()=>A(await XI(r))),qI()})}g.AnimatedTexture=hr,g.Assets=eh,g.AudioPipeline=Fn,g.AudioProcessor=eI,g.AudioSpectrum=aI,g.BaseElement2DFill=rA,g.BaseElement2DGeometry=YA,g.BaseElement2DOutline=wA,g.BaseElement2DShadow=WA,g.BaseElement2DStyle=ki,g.BaseElement2DText=ti,g.CanvasContext=ka,g.CanvasItemEditor=VI,g.CanvasTexture=LA,g.Color=Yt,g.ColorMatrix=xs,g.ColorTexture=Us,g.CoreObject=Ht,g.DEG_TO_RAD=xo,g.DEVICE_PIXEL_RATIO=Cs,g.EffectMaterial=lr,g.Element2DStyle=Un,g.Engine=Ah,g.EventEmitter=Ot,g.FlexElement2DStyle=bl,g.FlexLayout=Jr,g.FontLoader=zo,g.GIFLoader=Vl,g.Geometry=ar,g.HTMLAudio=Kl,g.HTMLAudioContext=Wr,g.HTMLSound=zr,g.IN_BROWSER=Ii,g.ImageTexture=ig,g.IndexBuffer=NA,g.Input=Bo,g.InputEvent=sr,g.JSONLoader=ql,g.Loader=tA,g.LottieLoader=Xl,g.MainLoop=or,g.Material=pe,g.Matrix=Dt,g.Matrix2=Gh,g.Matrix3=Ss,g.Matrix4=bo,g.MouseInputEvent=ms,g.PI=Lt,g.PI_2=tt,g.PixelsTexture=ks,g.PointerInputEvent=Io,g.Projection2D=Mo,g.QuadGeometry=Vh,g.QuadUvGeometry=ce,g.RAD_TO_DEG=Th,g.RawWeakMap=UA,g.Rect2=Ms,g.RefCounted=fo,g.Renderer=Po,g.Resource=Jt,g.SUPPORTS_AUDIO_CONTEXT=Bs,g.SUPPORTS_CLICK_EVENTS=ro,g.SUPPORTS_CREATE_IMAGE_BITMAP=Is,g.SUPPORTS_IMAGE_BITMAP=to,g.SUPPORTS_MOUSE_EVENTS=wh,g.SUPPORTS_OFFLINE_AUDIO_CONTEXT=ps,g.SUPPORTS_POINTER_EVENTS=PA,g.SUPPORTS_RESIZE_OBSERVER=Ao,g.SUPPORTS_TOUCH_EVENTS=Gt,g.SUPPORTS_WEBGL2=eo,g.SUPPORTS_WEBKIT_AUDIO_CONTEXT=Es,g.SUPPORTS_WEBKIT_OFFLINE_AUDIO_CONTEXT=so,g.SUPPORTS_WEB_AUDIO=no,g.SUPPORTS_WHEEL_EVENTS=io,g.SceneTree=Ri,g.TextLoader=jl,g.Texture2D=ve,g.TextureLoader=Zl,g.TextureRect2D=Kr,g.Ticker=xe,g.Transform2D=dt,g.TransformRect2D=Nn,g.UvGeometry=Zh,g.UvMaterial=FA,g.Vector=Qt,g.Vector2=yt,g.Vector3=Oh,g.Vector4=So,g.VertexAttribute=lt,g.VertexBuffer=Wt,g.VideoLoader=$l,g.VideoTexture=ta,g.ViewportTexture=Fs,g.WebAudio=Wl,g.WebAudioContext=uA,g.WebGLBatch2DModule=No,g.WebGLBlendMode=kA,g.WebGLBufferModule=Fo,g.WebGLFramebufferModule=To,g.WebGLMaskModule=Lo,g.WebGLModule=It,g.WebGLProgramModule=Go,g.WebGLRenderer=Wo,g.WebGLScissorModule=Oo,g.WebGLState=pA,g.WebGLStateModule=ko,g.WebGLStencilModule=Ho,g.WebGLTextureModule=Jo,g.WebGLVertexArrayModule=Ko,g.WebGLViewportModule=Yo,g.WebSound=Yl,g.WheelInputEvent=Ei,g.assets=Nt,g.clamp=bt,g.clampFrag=Ya,g.createHTMLCanvas=ho,g.createNode=_h,g.crossOrigin=co,g.cubicBezier=hi,g.curves=Lh,g.customNode=ee,g.customNodes=rr,g.defaultOptions=th,g.defineProperty=Bi,g.determineCrossOrigin=go,g.ease=Gl,g.easeIn=Ol,g.easeInOut=Jl,g.easeOut=Hl,g.frag=Ka,g.getDeclarations=ir,g.getDefaultCssPropertyValue=ds,g.isCanvasElement=ao,g.isElementNode=Qs,g.isImageElement=vh,g.isPow2=fs,g.isVideoElement=oo,g.isWebgl2=lo,g.lerp=Se,g.linear=Ll,g.log2=Ps,g.mapWebGLBlendModes=Uo,g.nextPow2=Rs,g.nextTick=ys,g.parseCSSFilter=qo,g.parseCSSTransform=Xo,g.parseCSSTransformOrigin=jo,g.parseCssFunctions=di,g.parseCssProperty=fi,g.property=M,g.protectedProperty=Be,g.render=jI,g.timingFunctions=Yr,g.uid=Zn,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})});
999
+ }`})),c.TwistTransition=KI([te("TwistTransition")],c.TwistTransition);class ql extends AA{install(A){const e=async t=>{const{decodeFrames:i}=await import("modern-gif");return await A.fetch(t).then(r=>r.arrayBuffer()).then(r=>i(r)).then(r=>new gr(r.map(n=>({duration:n.delay,texture:new ks(n.data,n.width,n.height)}))))};return this.load=t=>A.loadBy(t,()=>e(t)),["image/gif"].forEach(t=>{A.register(t,e)}),A.gif=this,this}}class Xl extends AA{install(A){const e=t=>A.fetch(t).then(i=>i.json());return this.load=t=>A.loadBy(t,()=>e(t)),["json"].forEach(t=>{A.register(t,e)}),A.json=this,this}}class jl extends AA{install(A){const e=async(t,i)=>(await import("lottie-web").then(n=>n.default)).loadAnimation({container:null,renderer:"canvas",rendererSettings:{context:i.getContext("2d")},loop:!1,autoplay:!1,animationData:await A.fetch(t).then(n=>n.json())});return this.load=(t,i)=>A.loadBy(t,()=>e(t,i)),["lottie"].forEach(t=>{A.register(t,e)}),A.lottie=this,this}}class Zl extends AA{install(A){const e=async t=>await A.fetch(t).then(i=>i.text());return this.load=t=>A.loadBy(t,()=>e(t)),A.text=this,this}}class $l extends AA{install(A){const e=t=>A.fetchImageBitmap(t,{premultiplyAlpha:"premultiply"}).then(i=>new ve(i));return this.load=t=>A.loadBy(t,()=>e(t)),["image/gif","image/jpeg","image/png","image/tiff","image/vnd.wap.wbmp","image/x-icon","image/x-jng","image/x-ms-bmp","image/svg+xml","image/webp"].forEach(t=>{A.register(t,e)}),A.texture=this,this}}class eh extends AA{install(A){const e=t=>new ea(t).load();return this.load=t=>A.loadBy(t,()=>e(t)),["video/3gpp","video/mpeg","video/quicktime","video/x-flv","video/x-mng","video/x-ms-asf","video/x-ms-wmv","video/x-msvideo","video/mp4"].forEach(t=>{A.register(t,e)}),A.video=this,this}}const WI=Object.entries({"text/html":["html","htm","shtml"],"text/css":["css"],"text/xml":["xml"],"image/gif":["gif"],"image/jpeg":["jpeg","jpg"],"application/x-javascript":["js"],"application/atom+xml":["atom"],"application/rss+xml":["rss"],"text/mathml":["mml"],"text/plain":["txt"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/x-component":["htc"],"image/png":["png"],"image/tiff":["tif","tiff"],"image/vnd.wap.wbmp":["wbmp"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-ms-bmp":["bmp"],"image/svg+xml":["svg"],"image/webp":["webp"],"application/java-archive":["jar","war","ear"],"application/mac-binhex40":["hqx"],"application/msword":["doc"],"application/pdf":["pdf"],"application/postscript":["ps","eps","ai"],"application/rtf":["rtf"],"application/vnd.ms-excel":["xls"],"application/vnd.ms-powerpoint":["ppt"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/x-7z-compressed":["7z"],"application/x-cocoa":["cco"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-makeself":["run"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-sea":["sea"],"application/x-shockwave-flash":["swf"],"application/x-stuffit":["sit"],"application/x-tcl":["tcl","tk"],"application/x-x509-ca-cert":["der","pem","crt"],"application/x-xpinstall":["xpi"],"application/xhtml+xml":["xhtml"],"application/zip":["zip"],"application/octet-stream":["bin","exe","dll","deb","dmg","eot","iso","img","msi","msp","msm"],"audio/midi":["mid","midi","kar"],"audio/mpeg":["mp3"],"audio/ogg":["ogg"],"audio/x-realaudio":["ra"],"video/3gpp":["3gpp","3gp"],"video/mpeg":["mpeg","mpg"],"video/quicktime":["mov"],"video/x-flv":["flv"],"video/x-mng":["mng"],"video/x-ms-asf":["asx","asf"],"video/x-ms-wmv":["wmv"],"video/x-msvideo":["avi"],"video/mp4":["m4v","mp4"]});function zI(s){for(const[A,e]of WI)if(e.includes(s))return A}async function VI(s){var e,t;let A;if(s.startsWith("data:"))A=(e=s.match(/^data:(.+?);/))==null?void 0:e[1];else if(s.startsWith("http")){const i=(t=s.split(/[#?]/)[0].split(".").pop())==null?void 0:t.trim();i&&(A=zI(i))}return A??await fetch(s).then(i=>i.headers.get("Content-Type"))??""}const Xr="WeakRef"in globalThis;class th{constructor(){u(this,"defaultHandler",A=>this.fetch(A));u(this,"_handlers",new Map);u(this,"_handleing",new Map);u(this,"_handled",new Map);u(this,"_gc",Xr?new FinalizationRegistry(A=>{const e=this.get(A);e&&"free"in e&&e.free(),this._handled.delete(A)}):void 0);Xr||xe.on(this.gc.bind(this),{sort:2})}use(A){return A.install(this),this}register(A,e){return this._handlers.set(A,e),this}fetch(A){return fetch(A)}_fixSVG(A){const e=new DOMParser().parseFromString(decodeURIComponent(A.split(",")[1]),"image/svg+xml").documentElement;return e.setAttribute("width","512"),e.setAttribute("height","512"),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e.outerHTML)}`}async fetchImageBitmap(A,e){return A.startsWith("http")?await this.fetch(A).then(t=>t.blob()).then(t=>t.type==="image/svg+xml"?t.text().then(i=>this.fetchImageBitmap(this._fixSVG(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(i)}`),e)):createImageBitmap(t,e)):(A.startsWith("data:image/svg+xml;charset=utf-8,")&&(A=this._fixSVG(A)),new Promise(t=>{const i=new Image;i.src=A,i.onload=()=>{i.decode().finally(()=>{t(i)})}}).then(t=>createImageBitmap(t,e)))}get(A){let e=this._handled.get(A);return Xr&&e instanceof WeakRef&&(e=e.deref(),e||this._handleing.delete(A)),e}set(A,e){let t=e;Xr&&typeof e=="object"&&(this._gc.register(e,A),t=new WeakRef(e)),this._handled.set(A,t)}async loadBy(A,e){const t=this.get(A)??this._handleing.get(A);if(t)return t;const i=e().then(r=>(this.set(A,r),r)).finally(()=>{this._handleing.delete(A)});return this._handleing.set(A,i),i}async load(A,e){return this.loadBy(A,async()=>{const t=await VI(A);return(this._handlers.get(t)??this.defaultHandler)(A,e)})}async waitUntilLoad(){await Promise.all(Array.from(this._handleing.values()))}gc(){this._handled.forEach((A,e)=>{const t=this.get(e);t&&"free"in t&&t.free()}),this._handled.clear()}}const Ft=new th().use(new Wo).use(new ql).use(new Xl).use(new jl).use(new Zl).use(new $l).use(new eh);class qI extends c.Control{constructor(){super();u(this,"_pointerStart");u(this,"_pointerOffset");u(this,"selected");u(this,"dragging");u(this,"hovered");u(this,"hover",new c.Element2D({name:"hover",internalMode:"back",style:{visibility:"hidden",outlineStyle:"solid",outlineColor:16711935,outlineWidth:2,pointerEvents:"none"}}));u(this,"transformRect",new kn({name:"transformRect",internalMode:"back",style:{visibility:"hidden",pointerEvents:"none"}}));u(this,"scaler",new c.Scaler({internalMode:"back"}).on("updateScale",e=>{this.ruler.gapScale=e,this._updateScrollbars(),this._updateSelectionRect()}));u(this,"xScrollBar",new c.XScrollBar({internalMode:"back",style:{visibility:"hidden"}}));u(this,"yScrollBar",new c.YScrollBar({internalMode:"back",style:{visibility:"hidden"}}));u(this,"drawboard",new c.Element2D({name:"drawboard",style:{width:500,height:500,backgroundColor:4294967295,overflow:"hidden",pointerEvents:"none",boxShadow:"2px 2px 2px 1px rgba(0, 0, 0, 0.2)"}},[this.scaler]));u(this,"ruler",new c.Ruler({name:"ruler",offsetX:100,offsetY:100,style:{pointerEvents:"none"}},[this.drawboard,this.hover,this.transformRect,this.xScrollBar,this.yScrollBar]));this._onPointerdown=this._onPointerdown.bind(this),this._onPointermove=this._onPointermove.bind(this),this._onPointerup=this._onPointerup.bind(this),this.append(this.ruler)}_updateStyleProperty(e,t,i,r){switch(super._updateStyleProperty(e,t,i,r),e){case"width":this.drawboard.style.left=(this.size.width-this.drawboard.size.width)/2,this.ruler.offsetX=this.drawboard.style.left;break;case"height":this.drawboard.style.top=(this.size.height-this.drawboard.size.height)/2,this.ruler.offsetY=this.drawboard.style.top;break}}_guiInput(e,t){switch(super._guiInput(e,t),t){case"pointerdown":this._onPointerdown(e);break;case"pointermove":this._onPointermove(e);break;case"pointerup":this._onPointerup();break}}_onPointerdown(e){let t=e.target;t!=null&&t.is(this)&&(t=void 0),t!=null&&t.is(this.transformRect)&&(t=this.selected),this._pointerOffset={x:e.offsetX,y:e.offsetY},this.selected=t,this.dragging=t,t instanceof c.Element2D?this._pointerStart=t.style.clone():this._pointerStart=void 0,this._updateHover(),this._updateSelectionRect()}_onPointermove(e){let t=e.target;t!=null&&t.is(this)&&(t=void 0),t!=null&&t.is(this.transformRect)&&(t=this.selected);const{selected:i,dragging:r,_pointerStart:n,_pointerOffset:o}=this;i&&(t!=null&&t.is(i))?this.hovered=void 0:this.hovered=t;const a=o?{x:e.offsetX-o.x,y:e.offsetY-o.y}:{x:0,y:0};r&&n&&(r.style.left=n.left+a.x/this.scaler.value,r.style.top=n.top+a.y/this.scaler.value,r.update()),this._updateHover(),this._updateSelectionRect()}_onPointerup(){this.dragging=void 0,this._updateHover(),this._updateSelectionRect()}_copyGlobalTransform(e,t){e.style.visibility="visible",e.style.width=t.globalScale.x*t.size.x,e.style.height=t.globalScale.y*t.size.y,e.style.left=t.globalPosition.x,e.style.top=t.globalPosition.y,e.style.rotate=t.globalRotation,e.update()}_updateHover(){const e=this.hovered;e instanceof c.Element2D?(this.hover.style.visibility="visible",this._copyGlobalTransform(this.hover,e),this.hover.requestRedraw()):this.hover.style.visibility="hidden"}_updateSelectionRect(){this.selected?(this.transformRect.style.visibility="visible",this._copyGlobalTransform(this.transformRect,this.selected)):this.transformRect.style.visibility="hidden"}_updateScrollbars(){const e=this.ruler.gapScale,t=this.drawboard.size.height*e,i=this.drawboard.size.width*e;t>this.size.height?(this.yScrollBar.style.visibility="visible",this.yScrollBar.maxValue=t,this.yScrollBar.page=this.size.height):this.yScrollBar.style.visibility="hidden",i>this.size.width?(this.xScrollBar.style.visibility="visible",this.xScrollBar.maxValue=i,this.xScrollBar.page=this.size.width):this.xScrollBar.style.visibility="hidden"}}const Ah={alpha:!0,stencil:!0,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"};class ih extends Ui{constructor(e={}){var I,d;const{debug:t=!1,view:i,width:r,height:n,pixelRatio:o=Cs,backgroundColor:a=0,autoResize:l,autoStart:h,timeline:g,...f}=e;super(g);u(this,"renderer");u(this,"_resizeObserver",to?new ResizeObserver(e=>{const t=e[0];if(t.target===this.view){const{inlineSize:i,blockSize:r}=Array.isArray(t.contentBoxSize)?t.contentBoxSize[0]:t.contentBoxSize;this.resize(i,r)}}):void 0);this.debug=t,this.renderer=new Yo(i,{...Ah,...f}),this._setupInput(),this.pixelRatio=o,this.backgroundColor=a,l?(!i&&this.renderer.view&&(this.renderer.view.style.width="100%",this.renderer.view.style.height="100%"),this.enableAutoResize(l)):this.resize(r||this.gl.drawingBufferWidth||((I=this.view)==null?void 0:I.clientWidth)||200,n||this.gl.drawingBufferHeight||((d=this.view)==null?void 0:d.clientHeight)||200,!i),h&&this.start()}get view(){return this.renderer.view}get gl(){return this.renderer.gl}get screen(){return this.renderer.screen}get width(){return this.screen.width}get height(){return this.screen.height}get pixelRatio(){return this.renderer.pixelRatio}set pixelRatio(e){this.renderer.pixelRatio=e,this.resize(this.width,this.height),this.view&&(this.view.dataset.pixelRatio=String(e))}_setupInput(){return this.view&&(this.input.setTarget(this.view),["pointerdown","pointerover","pointermove","pointerup","wheel"].forEach(e=>{this.input.on(e,t=>{this.root.input(t,e),this.emit(e,t)})})),this}enableAutoResize(e=!0){var t,i;return this.view&&(e?(t=this._resizeObserver)==null||t.observe(this.view):(i=this._resizeObserver)==null||i.unobserve(this.view)),this}resize(e,t,i=!1){return this.renderer.resize(e,t,i),this.root.width=e,this.root.height=t,this.root.requestUpload(),this.render(),this}nextTick(){return ys()}async waitUntilLoad(){await Ft.waitUntilLoad(),await this.nextTick()}async waitAndRender(e=0){await Ft.waitUntilLoad(),this._process(e),await this.nextTick(),this._render(this.renderer)}render(e=0){this._process(e),this._render(this.renderer)}async start(){await this.waitAndRender(),super.start(e=>{this._process(e),this._render(this.renderer)})}free(){super.free(),this.enableAutoResize(!1),this.renderer.free()}toPixels(){return this.renderer.toPixels()}toImageData(){return new ImageData(this.toPixels(),this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}toCanvas2D(){var r,n;const e=this.toImageData(),t=document.createElement("canvas");t.width=e.width,t.height=e.height,(r=t.getContext("2d"))==null||r.putImageData(e,0,0);const i=document.createElement("canvas");return i.width=this.width,i.height=this.height,(n=i.getContext("2d"))==null||n.drawImage(t,0,0,t.width,t.height,0,0,i.width,i.height),i}}let Tt;const Fn=[];let Tn=!1;async function XI(s=100){if(!Tn){for(Tn=!0;Fn.length;){const A=Fn.shift();if(A)try{await A()}catch(e){console.error(e)}else await new Promise(e=>setTimeout(e,s))}Tn=!1}}async function jI(s){var n;const{data:A,width:e,height:t,debug:i=!1,time:r=0}=s;return Tt??(Tt=new ih({width:1,height:1,preserveDrawingBuffer:!0})),Tt.debug=i,Tt.root.removeChildren(),Tt.timeline.currentTime=r,Tt.resize(e,t,!0),(Array.isArray(A)?A:[A]).forEach(o=>{o instanceof c.Node?Tt.root.appendChild(o):Tt.root.appendChild(c.Node.parse(o))}),await((n=s.onBeforeRender)==null?void 0:n.call(s,Tt)),await Tt.waitAndRender(),Tt.toCanvas2D()}async function ZI(s){return new Promise(A=>{Fn.push(async()=>A(await jI(s))),XI()})}c.AnimatedTexture=gr,c.Assets=th,c.AudioPipeline=Nn,c.AudioProcessor=tI,c.AudioSpectrum=lI,c.BaseElement2DFill=nA,c.BaseElement2DGeometry=WA,c.BaseElement2DOutline=vA,c.BaseElement2DShadow=zA,c.BaseElement2DStyle=Fi,c.BaseElement2DText=ii,c.CanvasContext=Ua,c.CanvasItemEditor=qI,c.CanvasTexture=GA,c.Color=Wt,c.ColorMatrix=xs,c.ColorTexture=Us,c.CoreObject=Jt,c.DEG_TO_RAD=bo,c.DEVICE_PIXEL_RATIO=Cs,c.EffectMaterial=hr,c.Element2DStyle=Pn,c.Engine=ih,c.EventEmitter=Ht,c.FlexElement2DStyle=xl,c.FlexLayout=Jr,c.FontLoader=Wo,c.GIFLoader=ql,c.Geometry=lr,c.HTMLAudio=Yl,c.HTMLAudioContext=Wr,c.HTMLSound=zr,c.IN_BROWSER=Ei,c.ImageTexture=rg,c.IndexBuffer=FA,c.Input=Io,c.InputEvent=nr,c.JSONLoader=Xl,c.Loader=AA,c.LottieLoader=jl,c.MainLoop=ar,c.Material=pe,c.Matrix=Dt,c.Matrix2=Oh,c.Matrix3=Ss,c.Matrix4=Do,c.MouseInputEvent=ms,c.PI=Gt,c.PI_2=tt,c.PixelsTexture=ks,c.PointerInputEvent=fo,c.Projection2D=So,c.QuadGeometry=qh,c.QuadUvGeometry=ce,c.RAD_TO_DEG=Lh,c.RawWeakMap=kA,c.Rect2=Ms,c.RefCounted=uo,c.Renderer=Ro,c.Resource=Kt,c.SUPPORTS_AUDIO_CONTEXT=Bs,c.SUPPORTS_CLICK_EVENTS=io,c.SUPPORTS_CREATE_IMAGE_BITMAP=Is,c.SUPPORTS_IMAGE_BITMAP=eo,c.SUPPORTS_MOUSE_EVENTS=vh,c.SUPPORTS_OFFLINE_AUDIO_CONTEXT=ps,c.SUPPORTS_POINTER_EVENTS=UA,c.SUPPORTS_RESIZE_OBSERVER=to,c.SUPPORTS_TOUCH_EVENTS=Ot,c.SUPPORTS_WEBGL2=$n,c.SUPPORTS_WEBKIT_AUDIO_CONTEXT=Es,c.SUPPORTS_WEBKIT_OFFLINE_AUDIO_CONTEXT=ro,c.SUPPORTS_WEB_AUDIO=so,c.SUPPORTS_WHEEL_EVENTS=Ao,c.SceneTree=Ui,c.TextLoader=Zl,c.Texture2D=ve,c.TextureLoader=$l,c.TextureRect2D=Kr,c.Ticker=xe,c.Transform2D=dt,c.TransformRect2D=kn,c.UvGeometry=$h,c.UvMaterial=TA,c.Vector=Qt,c.Vector2=yt,c.Vector3=Hh,c.Vector4=xo,c.VertexAttribute=lt,c.VertexBuffer=zt,c.VideoLoader=eh,c.VideoTexture=ea,c.ViewportTexture=Fs,c.WebAudio=zl,c.WebAudioContext=fA,c.WebGLBatch2DModule=ko,c.WebGLBlendMode=NA,c.WebGLBufferModule=No,c.WebGLFramebufferModule=Fo,c.WebGLMaskModule=To,c.WebGLModule=It,c.WebGLProgramModule=Lo,c.WebGLRenderer=Yo,c.WebGLScissorModule=Go,c.WebGLState=CA,c.WebGLStateModule=Uo,c.WebGLStencilModule=Oo,c.WebGLTextureModule=Ho,c.WebGLVertexArrayModule=Jo,c.WebGLViewportModule=Ko,c.WebSound=Wl,c.WheelInputEvent=Ci,c.assets=Ft,c.clamp=bt,c.clampFrag=Ka,c.createHTMLCanvas=lo,c.createNode=Dh,c.crossOrigin=go,c.cubicBezier=ci,c.curves=Gh,c.customNode=te,c.customNodes=sr,c.defaultOptions=Ah,c.defineProperty=pi,c.determineCrossOrigin=ho,c.ease=Ol,c.easeIn=Hl,c.easeInOut=Kl,c.easeOut=Jl,c.frag=Ja,c.getDeclarations=rr,c.getDefaultCssPropertyValue=ds,c.isCanvasElement=oo,c.isElementNode=Qs,c.isImageElement=_h,c.isPow2=fs,c.isVideoElement=no,c.isWebgl2=ao,c.lerp=Se,c.linear=Gl,c.log2=Ps,c.mapWebGLBlendModes=Po,c.nextPow2=Rs,c.nextTick=ys,c.parseCSSFilter=Vo,c.parseCSSTransform=qo,c.parseCSSTransformOrigin=Xo,c.parseCssFunctions=Bi,c.parseCssProperty=Ii,c.property=S,c.protectedProperty=Be,c.render=ZI,c.timingFunctions=Yr,c.uid=jn,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});