diff --git a/AnimatedSprite-ffeea718.js b/AnimatedSprite-c4817119.js similarity index 98% rename from AnimatedSprite-ffeea718.js rename to AnimatedSprite-c4817119.js index ba91168a..d159488b 100644 --- a/AnimatedSprite-ffeea718.js +++ b/AnimatedSprite-c4817119.js @@ -1 +1 @@ -import{y as a,q as r,T as h,U as u}from"./ChartManager-db54e716.js";class n extends a{constructor(t,e=!0){super(t[0]instanceof r?t[0]:t[0].texture),this._textures=null,this._durations=null,this._autoUpdate=e,this._isConnectedToTicker=!1,this.animationSpeed=1,this.loop=!0,this.updateAnchor=!1,this.onComplete=null,this.onFrameChange=null,this.onLoop=null,this._currentTime=0,this._playing=!1,this._previousFrame=null,this.textures=t}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(h.shared.remove(this.update,this),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(h.shared.add(this.update,this,u.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(t){this.stop(),this.currentFrame=t}gotoAndPlay(t){this.currentFrame=t,this.play()}update(t){if(!this._playing)return;const e=this.animationSpeed*t,s=this.currentFrame;if(this._durations!==null){let i=this._currentTime%1*this._durations[this.currentFrame];for(i+=e/60*1e3;i<0;)this._currentTime--,i+=this._durations[this.currentFrame];const o=Math.sign(this.animationSpeed*t);for(this._currentTime=Math.floor(this._currentTime);i>=this._durations[this.currentFrame];)i-=this._durations[this.currentFrame]*o,this._currentTime+=o;this._currentTime+=i/this._durations[this.currentFrame]}else this._currentTime+=e;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):s!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFrames)&&this.onLoop(),this.updateTexture())}updateTexture(){const t=this.currentFrame;this._previousFrame!==t&&(this._previousFrame=t,this._texture=this._textures[t],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame))}destroy(t){this.stop(),super.destroy(t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}static fromFrames(t){const e=[];for(let s=0;sthis.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${t}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?(h.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(h.shared.add(this.update,this),this._isConnectedToTicker=!0))}}export{n as A}; +import{y as a,q as r,T as h,U as u}from"./ChartManager-b82bf91a.js";class n extends a{constructor(t,e=!0){super(t[0]instanceof r?t[0]:t[0].texture),this._textures=null,this._durations=null,this._autoUpdate=e,this._isConnectedToTicker=!1,this.animationSpeed=1,this.loop=!0,this.updateAnchor=!1,this.onComplete=null,this.onFrameChange=null,this.onLoop=null,this._currentTime=0,this._playing=!1,this._previousFrame=null,this.textures=t}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(h.shared.remove(this.update,this),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(h.shared.add(this.update,this,u.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(t){this.stop(),this.currentFrame=t}gotoAndPlay(t){this.currentFrame=t,this.play()}update(t){if(!this._playing)return;const e=this.animationSpeed*t,s=this.currentFrame;if(this._durations!==null){let i=this._currentTime%1*this._durations[this.currentFrame];for(i+=e/60*1e3;i<0;)this._currentTime--,i+=this._durations[this.currentFrame];const o=Math.sign(this.animationSpeed*t);for(this._currentTime=Math.floor(this._currentTime);i>=this._durations[this.currentFrame];)i-=this._durations[this.currentFrame]*o,this._currentTime+=o;this._currentTime+=i/this._durations[this.currentFrame]}else this._currentTime+=e;this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete&&this.onComplete()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete&&this.onComplete()):s!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFrames)&&this.onLoop(),this.updateTexture())}updateTexture(){const t=this.currentFrame;this._previousFrame!==t&&(this._previousFrame=t,this._texture=this._textures[t],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange&&this.onFrameChange(this.currentFrame))}destroy(t){this.stop(),super.destroy(t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}static fromFrames(t){const e=[];for(let s=0;sthis.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${t}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?(h.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(h.shared.add(this.update,this),this._isConnectedToTicker=!0))}}export{n as A}; diff --git a/ChartManager-db54e716.js b/ChartManager-b82bf91a.js similarity index 87% rename from ChartManager-db54e716.js rename to ChartManager-b82bf91a.js index deccebb3..7fd71809 100644 --- a/ChartManager-db54e716.js +++ b/ChartManager-b82bf91a.js @@ -1,4 +1,4 @@ -var ay=Object.defineProperty;var oy=(s,e,t)=>e in s?ay(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var _r=(s,e,t)=>(oy(s,typeof e!="symbol"?e+"":e,t),t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const n of r)if(n.type==="childList")for(const a of n.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function t(r){const n={};return r.integrity&&(n.integrity=r.integrity),r.referrerPolicy&&(n.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?n.credentials="include":r.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function i(r){if(r.ep)return;r.ep=!0;const n=t(r);fetch(r.href,n)}})();var wr=(s=>(s[s.WEBGL_LEGACY=0]="WEBGL_LEGACY",s[s.WEBGL=1]="WEBGL",s[s.WEBGL2=2]="WEBGL2",s))(wr||{}),of=(s=>(s[s.UNKNOWN=0]="UNKNOWN",s[s.WEBGL=1]="WEBGL",s[s.CANVAS=2]="CANVAS",s))(of||{}),vh=(s=>(s[s.COLOR=16384]="COLOR",s[s.DEPTH=256]="DEPTH",s[s.STENCIL=1024]="STENCIL",s))(vh||{}),Se=(s=>(s[s.NORMAL=0]="NORMAL",s[s.ADD=1]="ADD",s[s.MULTIPLY=2]="MULTIPLY",s[s.SCREEN=3]="SCREEN",s[s.OVERLAY=4]="OVERLAY",s[s.DARKEN=5]="DARKEN",s[s.LIGHTEN=6]="LIGHTEN",s[s.COLOR_DODGE=7]="COLOR_DODGE",s[s.COLOR_BURN=8]="COLOR_BURN",s[s.HARD_LIGHT=9]="HARD_LIGHT",s[s.SOFT_LIGHT=10]="SOFT_LIGHT",s[s.DIFFERENCE=11]="DIFFERENCE",s[s.EXCLUSION=12]="EXCLUSION",s[s.HUE=13]="HUE",s[s.SATURATION=14]="SATURATION",s[s.COLOR=15]="COLOR",s[s.LUMINOSITY=16]="LUMINOSITY",s[s.NORMAL_NPM=17]="NORMAL_NPM",s[s.ADD_NPM=18]="ADD_NPM",s[s.SCREEN_NPM=19]="SCREEN_NPM",s[s.NONE=20]="NONE",s[s.SRC_OVER=0]="SRC_OVER",s[s.SRC_IN=21]="SRC_IN",s[s.SRC_OUT=22]="SRC_OUT",s[s.SRC_ATOP=23]="SRC_ATOP",s[s.DST_OVER=24]="DST_OVER",s[s.DST_IN=25]="DST_IN",s[s.DST_OUT=26]="DST_OUT",s[s.DST_ATOP=27]="DST_ATOP",s[s.ERASE=26]="ERASE",s[s.SUBTRACT=28]="SUBTRACT",s[s.XOR=29]="XOR",s))(Se||{}),Gi=(s=>(s[s.POINTS=0]="POINTS",s[s.LINES=1]="LINES",s[s.LINE_LOOP=2]="LINE_LOOP",s[s.LINE_STRIP=3]="LINE_STRIP",s[s.TRIANGLES=4]="TRIANGLES",s[s.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",s[s.TRIANGLE_FAN=6]="TRIANGLE_FAN",s))(Gi||{}),se=(s=>(s[s.RGBA=6408]="RGBA",s[s.RGB=6407]="RGB",s[s.RG=33319]="RG",s[s.RED=6403]="RED",s[s.RGBA_INTEGER=36249]="RGBA_INTEGER",s[s.RGB_INTEGER=36248]="RGB_INTEGER",s[s.RG_INTEGER=33320]="RG_INTEGER",s[s.RED_INTEGER=36244]="RED_INTEGER",s[s.ALPHA=6406]="ALPHA",s[s.LUMINANCE=6409]="LUMINANCE",s[s.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",s[s.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",s[s.DEPTH_STENCIL=34041]="DEPTH_STENCIL",s))(se||{}),Xr=(s=>(s[s.TEXTURE_2D=3553]="TEXTURE_2D",s[s.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",s[s.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",s[s.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",s[s.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",s[s.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",s[s.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",s[s.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",s[s.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",s))(Xr||{}),we=(s=>(s[s.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",s[s.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",s[s.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",s[s.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",s[s.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",s[s.UNSIGNED_INT=5125]="UNSIGNED_INT",s[s.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",s[s.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",s[s.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",s[s.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",s[s.BYTE=5120]="BYTE",s[s.SHORT=5122]="SHORT",s[s.INT=5124]="INT",s[s.FLOAT=5126]="FLOAT",s[s.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",s[s.HALF_FLOAT=36193]="HALF_FLOAT",s))(we||{}),ce=(s=>(s[s.FLOAT=0]="FLOAT",s[s.INT=1]="INT",s[s.UINT=2]="UINT",s))(ce||{}),is=(s=>(s[s.NEAREST=0]="NEAREST",s[s.LINEAR=1]="LINEAR",s))(is||{}),Ds=(s=>(s[s.CLAMP=33071]="CLAMP",s[s.REPEAT=10497]="REPEAT",s[s.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",s))(Ds||{}),Xi=(s=>(s[s.OFF=0]="OFF",s[s.POW2=1]="POW2",s[s.ON=2]="ON",s[s.ON_MANUAL=3]="ON_MANUAL",s))(Xi||{}),Ut=(s=>(s[s.NPM=0]="NPM",s[s.UNPACK=1]="UNPACK",s[s.PMA=2]="PMA",s[s.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",s[s.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",s[s.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",s))(Ut||{}),Fi=(s=>(s[s.NO=0]="NO",s[s.YES=1]="YES",s[s.AUTO=2]="AUTO",s[s.BLEND=0]="BLEND",s[s.CLEAR=1]="CLEAR",s[s.BLIT=2]="BLIT",s))(Fi||{}),Ic=(s=>(s[s.AUTO=0]="AUTO",s[s.MANUAL=1]="MANUAL",s))(Ic||{}),ai=(s=>(s.LOW="lowp",s.MEDIUM="mediump",s.HIGH="highp",s))(ai||{}),gt=(s=>(s[s.NONE=0]="NONE",s[s.SCISSOR=1]="SCISSOR",s[s.STENCIL=2]="STENCIL",s[s.SPRITE=3]="SPRITE",s[s.COLOR=4]="COLOR",s))(gt||{}),ft=(s=>(s[s.NONE=0]="NONE",s[s.LOW=2]="LOW",s[s.MEDIUM=4]="MEDIUM",s[s.HIGH=8]="HIGH",s))(ft||{}),Vi=(s=>(s[s.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",s[s.ARRAY_BUFFER=34962]="ARRAY_BUFFER",s[s.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",s))(Vi||{});const ly={createCanvas:(s,e)=>{const t=document.createElement("canvas");return t.width=s,t.height=e,t},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(s,e)=>fetch(s,e),parseXML:s=>new DOMParser().parseFromString(s,"text/xml")},de={ADAPTER:ly,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var gl=/iPhone/i,wd=/iPod/i,xd=/iPad/i,Ed=/\biOS-universal(?:.+)Mac\b/i,yl=/\bAndroid(?:.+)Mobile\b/i,_d=/Android/i,Tr=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,Aa=/Silk/i,Ji=/Windows Phone/i,Td=/\bWindows(?:.+)ARM\b/i,Sd=/BlackBerry/i,Cd=/BB10/i,Md=/Opera Mini/i,kd=/\b(CriOS|Chrome)(?:.+)Mobile/i,Bd=/Mobile(?:.+)Firefox\b/i,Id=function(s){return typeof s<"u"&&s.platform==="MacIntel"&&typeof s.maxTouchPoints=="number"&&s.maxTouchPoints>1&&typeof MSStream>"u"};function hy(s){return function(e){return e.test(s)}}function Pd(s){var e={userAgent:"",platform:"",maxTouchPoints:0};!s&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof s=="string"?e.userAgent=s:s&&s.userAgent&&(e={userAgent:s.userAgent,platform:s.platform,maxTouchPoints:s.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var r=hy(t),n={apple:{phone:r(gl)&&!r(Ji),ipod:r(wd),tablet:!r(gl)&&(r(xd)||Id(e))&&!r(Ji),universal:r(Ed),device:(r(gl)||r(wd)||r(xd)||r(Ed)||Id(e))&&!r(Ji)},amazon:{phone:r(Tr),tablet:!r(Tr)&&r(Aa),device:r(Tr)||r(Aa)},android:{phone:!r(Ji)&&r(Tr)||!r(Ji)&&r(yl),tablet:!r(Ji)&&!r(Tr)&&!r(yl)&&(r(Aa)||r(_d)),device:!r(Ji)&&(r(Tr)||r(Aa)||r(yl)||r(_d))||r(/\bokhttp\b/i)},windows:{phone:r(Ji),tablet:r(Td),device:r(Ji)||r(Td)},other:{blackberry:r(Sd),blackberry10:r(Cd),opera:r(Md),firefox:r(Bd),chrome:r(kd),device:r(Sd)||r(Cd)||r(Md)||r(Bd)||r(kd)},any:!1,phone:!1,tablet:!1};return n.any=n.apple.device||n.android.device||n.windows.device||n.other.device,n.phone=n.apple.phone||n.android.phone||n.windows.phone,n.tablet=n.apple.tablet||n.android.tablet||n.windows.tablet,n}const cy=Pd.default??Pd,ss=cy(globalThis.navigator);de.RETINA_PREFIX=/@([0-9\.]+)x/;de.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var Nt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function la(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function dy(s){if(s.__esModule)return s;var e=s.default;if(typeof e=="function"){var t=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(s).forEach(function(i){var r=Object.getOwnPropertyDescriptor(s,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:function(){return s[i]}})}),t}var lf={exports:{}};(function(s){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function r(l,c,u){this.fn=l,this.context=c,this.once=u||!1}function n(l,c,u,h,d){if(typeof u!="function")throw new TypeError("The listener must be a function");var p=new r(u,h||l,d),m=t?t+c:c;return l._events[m]?l._events[m].fn?l._events[m]=[l._events[m],p]:l._events[m].push(p):(l._events[m]=p,l._eventsCount++),l}function a(l,c){--l._eventsCount===0?l._events=new i:delete l._events[c]}function o(){this._events=new i,this._eventsCount=0}o.prototype.eventNames=function(){var c=[],u,h;if(this._eventsCount===0)return c;for(h in u=this._events)e.call(u,h)&&c.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(u)):c},o.prototype.listeners=function(c){var u=t?t+c:c,h=this._events[u];if(!h)return[];if(h.fn)return[h.fn];for(var d=0,p=h.length,m=new Array(p);d80*t){o=c=s[0],l=u=s[1];for(var m=t;mc&&(c=h),d>u&&(u=d);p=Math.max(c-o,u-l),p=p!==0?32767/p:0}return Zn(n,a,t,o,l,p,0),a}function hf(s,e,t,i,r){var n,a;if(r===wh(s,e,t,i)>0)for(n=e;n=e;n-=i)a=Rd(n,s[n],s[n+1],a);return a&&Xo(a,a.next)&&(ea(a),a=a.next),a}function yr(s,e){if(!s)return s;e||(e=s);var t=s,i;do if(i=!1,!t.steiner&&(Xo(t,t.next)||ot(t.prev,t,t.next)===0)){if(ea(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function Zn(s,e,t,i,r,n,a){if(s){!a&&n&&xy(s,i,r,n);for(var o=s,l,c;s.prev!==s.next;){if(l=s.prev,c=s.next,n?fy(s,i,r,n):py(s)){e.push(l.i/t|0),e.push(s.i/t|0),e.push(c.i/t|0),ea(s),s=c.next,o=c.next;continue}if(s=c,s===o){a?a===1?(s=my(yr(s),e,t),Zn(s,e,t,i,r,n,2)):a===2&&gy(s,e,t,i,r,n):Zn(yr(s),e,t,i,r,n,1);break}}}}function py(s){var e=s.prev,t=s,i=s.next;if(ot(e,t,i)>=0)return!1;for(var r=e.x,n=t.x,a=i.x,o=e.y,l=t.y,c=i.y,u=rn?r>a?r:a:n>a?n:a,p=o>l?o>c?o:c:l>c?l:c,m=i.next;m!==e;){if(m.x>=u&&m.x<=d&&m.y>=h&&m.y<=p&&Wr(r,o,n,l,a,c,m.x,m.y)&&ot(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function fy(s,e,t,i){var r=s.prev,n=s,a=s.next;if(ot(r,n,a)>=0)return!1;for(var o=r.x,l=n.x,c=a.x,u=r.y,h=n.y,d=a.y,p=ol?o>c?o:c:l>c?l:c,g=u>h?u>d?u:d:h>d?h:d,y=Ah(p,m,e,t,i),b=Ah(f,g,e,t,i),A=s.prevZ,v=s.nextZ;A&&A.z>=y&&v&&v.z<=b;){if(A.x>=p&&A.x<=f&&A.y>=m&&A.y<=g&&A!==r&&A!==a&&Wr(o,u,l,h,c,d,A.x,A.y)&&ot(A.prev,A,A.next)>=0||(A=A.prevZ,v.x>=p&&v.x<=f&&v.y>=m&&v.y<=g&&v!==r&&v!==a&&Wr(o,u,l,h,c,d,v.x,v.y)&&ot(v.prev,v,v.next)>=0))return!1;v=v.nextZ}for(;A&&A.z>=y;){if(A.x>=p&&A.x<=f&&A.y>=m&&A.y<=g&&A!==r&&A!==a&&Wr(o,u,l,h,c,d,A.x,A.y)&&ot(A.prev,A,A.next)>=0)return!1;A=A.prevZ}for(;v&&v.z<=b;){if(v.x>=p&&v.x<=f&&v.y>=m&&v.y<=g&&v!==r&&v!==a&&Wr(o,u,l,h,c,d,v.x,v.y)&&ot(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function my(s,e,t){var i=s;do{var r=i.prev,n=i.next.next;!Xo(r,n)&&cf(r,i,i.next,n)&&$n(r,n)&&$n(n,r)&&(e.push(r.i/t|0),e.push(i.i/t|0),e.push(n.i/t|0),ea(i),ea(i.next),i=s=n),i=i.next}while(i!==s);return yr(i)}function gy(s,e,t,i,r,n){var a=s;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&Ty(a,o)){var l=df(a,o);a=yr(a,a.next),l=yr(l,l.next),Zn(a,e,t,i,r,n,0),Zn(l,e,t,i,r,n,0);return}o=o.next}a=a.next}while(a!==s)}function yy(s,e,t,i){var r=[],n,a,o,l,c;for(n=0,a=e.length;n=t.next.y&&t.next.y!==t.y){var o=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(o<=i&&o>n&&(n=o,a=t.x=t.x&&t.x>=c&&i!==t.x&&Wr(ra.x||t.x===a.x&&wy(a,t)))&&(a=t,h=d)),t=t.next;while(t!==l);return a}function wy(s,e){return ot(s.prev,s,e.prev)<0&&ot(e.next,s,s.next)<0}function xy(s,e,t,i){var r=s;do r.z===0&&(r.z=Ah(r.x,r.y,e,t,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==s);r.prevZ.nextZ=null,r.prevZ=null,Ey(r)}function Ey(s){var e,t,i,r,n,a,o,l,c=1;do{for(t=s,s=null,n=null,a=0;t;){for(a++,i=t,o=0,e=0;e0||l>0&&i;)o!==0&&(l===0||!i||t.z<=i.z)?(r=t,t=t.nextZ,o--):(r=i,i=i.nextZ,l--),n?n.nextZ=r:s=r,r.prevZ=n,n=r;t=i}n.nextZ=null,c*=2}while(a>1);return s}function Ah(s,e,t,i,r){return s=(s-t)*r|0,e=(e-i)*r|0,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,s|e<<1}function _y(s){var e=s,t=s;do(e.x=(s-a)*(n-o)&&(s-a)*(i-o)>=(t-a)*(e-o)&&(t-a)*(n-o)>=(r-a)*(i-o)}function Ty(s,e){return s.next.i!==e.i&&s.prev.i!==e.i&&!Sy(s,e)&&($n(s,e)&&$n(e,s)&&Cy(s,e)&&(ot(s.prev,s,e.prev)||ot(s,e.prev,e))||Xo(s,e)&&ot(s.prev,s,s.next)>0&&ot(e.prev,e,e.next)>0)}function ot(s,e,t){return(e.y-s.y)*(t.x-e.x)-(e.x-s.x)*(t.y-e.y)}function Xo(s,e){return s.x===e.x&&s.y===e.y}function cf(s,e,t,i){var r=wa(ot(s,e,t)),n=wa(ot(s,e,i)),a=wa(ot(t,i,s)),o=wa(ot(t,i,e));return!!(r!==n&&a!==o||r===0&&ba(s,t,e)||n===0&&ba(s,i,e)||a===0&&ba(t,s,i)||o===0&&ba(t,e,i))}function ba(s,e,t){return e.x<=Math.max(s.x,t.x)&&e.x>=Math.min(s.x,t.x)&&e.y<=Math.max(s.y,t.y)&&e.y>=Math.min(s.y,t.y)}function wa(s){return s>0?1:s<0?-1:0}function Sy(s,e){var t=s;do{if(t.i!==s.i&&t.next.i!==s.i&&t.i!==e.i&&t.next.i!==e.i&&cf(t,t.next,s,e))return!0;t=t.next}while(t!==s);return!1}function $n(s,e){return ot(s.prev,s,s.next)<0?ot(s,e,s.next)>=0&&ot(s,s.prev,e)>=0:ot(s,e,s.prev)<0||ot(s,s.next,e)<0}function Cy(s,e){var t=s,i=!1,r=(s.x+e.x)/2,n=(s.y+e.y)/2;do t.y>n!=t.next.y>n&&t.next.y!==t.y&&r<(t.next.x-t.x)*(n-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==s);return i}function df(s,e){var t=new bh(s.i,s.x,s.y),i=new bh(e.i,e.x,e.y),r=s.next,n=e.prev;return s.next=e,e.prev=s,t.next=r,r.prev=t,i.next=t,t.prev=i,n.next=i,i.prev=n,i}function Rd(s,e,t,i){var r=new bh(s,e,t);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function ea(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 bh(s,e,t){this.i=s,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}jo.deviation=function(s,e,t,i){var r=e&&e.length,n=r?e[0]*t:s.length,a=Math.abs(wh(s,0,n,t));if(r)for(var o=0,l=e.length;o0&&(i+=s[r-1].length,t.holes.push(i))}return t};var My=Pc.exports;const ky=la(My);var vo={exports:{}};/*! https://mths.be/punycode v1.4.1 by @mathias */vo.exports;(function(s,e){(function(t){var i=e&&!e.nodeType&&e,r=s&&!s.nodeType&&s,n=typeof Nt=="object"&&Nt;(n.global===n||n.window===n||n.self===n)&&(t=n);var a,o=2147483647,l=36,c=1,u=26,h=38,d=700,p=72,m=128,f="-",g=/^xn--/,y=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,A={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},v=l-c,_=Math.floor,C=String.fromCharCode,B;function P(H){throw new RangeError(A[H])}function M(H,O){for(var N=H.length,ee=[];N--;)ee[N]=O(H[N]);return ee}function U(H,O){var N=H.split("@"),ee="";N.length>1&&(ee=N[0]+"@",H=N[1]),H=H.replace(b,".");var Z=H.split("."),Q=M(Z,O).join(".");return ee+Q}function F(H){for(var O=[],N=0,ee=H.length,Z,Q;N=55296&&Z<=56319&&N65535&&(O-=65536,N+=C(O>>>10&1023|55296),O=56320|O&1023),N+=C(O),N}).join("")}function S(H){return H-48<10?H-22:H-65<26?H-65:H-97<26?H-97:l}function x(H,O){return H+22+75*(H<26)-((O!=0)<<5)}function L(H,O,N){var ee=0;for(H=N?_(H/d):H>>1,H+=_(H/O);H>v*u>>1;ee+=l)H=_(H/v);return _(ee+(v+1)*H/(H+h))}function Y(H){var O=[],N=H.length,ee,Z=0,Q=m,ge=p,Te,he,pe,Ae,oe,ue,ve,E,j;for(Te=H.lastIndexOf(f),Te<0&&(Te=0),he=0;he=128&&P("not-basic"),O.push(H.charCodeAt(he));for(pe=Te>0?Te+1:0;pe=N&&P("invalid-input"),ve=S(H.charCodeAt(pe++)),(ve>=l||ve>_((o-Z)/oe))&&P("overflow"),Z+=ve*oe,E=ue<=ge?c:ue>=ge+u?u:ue-ge,!(ve_(o/j)&&P("overflow"),oe*=j;ee=O.length+1,ge=L(Z-Ae,ee,Ae==0),_(Z/ee)>o-Q&&P("overflow"),Q+=_(Z/ee),Z%=ee,O.splice(Z++,0,Q)}return T(O)}function R(H){var O,N,ee,Z,Q,ge,Te,he,pe,Ae,oe,ue=[],ve,E,j,z;for(H=F(H),ve=H.length,O=m,N=0,Q=p,ge=0;ge=O&&oe_((o-N)/E)&&P("overflow"),N+=(Te-O)*E,O=Te,ge=0;geo&&P("overflow"),oe==O){for(he=N,pe=l;Ae=pe<=Q?c:pe>=Q+u?u:pe-Q,!(he"u"||!At?Ue:At(Uint8Array),dr={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?Ue:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Ue:ArrayBuffer,"%ArrayIteratorPrototype%":Sr&&At?At([][Symbol.iterator]()):Ue,"%AsyncFromSyncIteratorPrototype%":Ue,"%AsyncFunction%":Rr,"%AsyncGenerator%":Rr,"%AsyncGeneratorFunction%":Rr,"%AsyncIteratorPrototype%":Rr,"%Atomics%":typeof Atomics>"u"?Ue:Atomics,"%BigInt%":typeof BigInt>"u"?Ue:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Ue:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Ue:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Ue:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$y,"%eval%":eval,"%EvalError%":e0,"%Float32Array%":typeof Float32Array>"u"?Ue:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Ue:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Ue:FinalizationRegistry,"%Function%":pf,"%GeneratorFunction%":Rr,"%Int8Array%":typeof Int8Array>"u"?Ue:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Ue:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Ue:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Sr&&At?At(At([][Symbol.iterator]())):Ue,"%JSON%":typeof JSON=="object"?JSON:Ue,"%Map%":typeof Map>"u"?Ue:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Sr||!At?Ue:At(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Ue:Promise,"%Proxy%":typeof Proxy>"u"?Ue:Proxy,"%RangeError%":t0,"%ReferenceError%":i0,"%Reflect%":typeof Reflect>"u"?Ue:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Ue:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Sr||!At?Ue:At(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Ue:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Sr&&At?At(""[Symbol.iterator]()):Ue,"%Symbol%":Sr?Symbol:Ue,"%SyntaxError%":tn,"%ThrowTypeError%":r0,"%TypedArray%":a0,"%TypeError%":Kr,"%Uint8Array%":typeof Uint8Array>"u"?Ue:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Ue:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Ue:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Ue:Uint32Array,"%URIError%":s0,"%WeakMap%":typeof WeakMap>"u"?Ue:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Ue:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Ue:WeakSet};if(At)try{null.error}catch(s){var o0=At(At(s));dr["%Error.prototype%"]=o0}var l0=function s(e){var t;if(e==="%AsyncFunction%")t=Al("async function () {}");else if(e==="%GeneratorFunction%")t=Al("function* () {}");else if(e==="%AsyncGeneratorFunction%")t=Al("async function* () {}");else if(e==="%AsyncGenerator%"){var i=s("%AsyncGeneratorFunction%");i&&(t=i.prototype)}else if(e==="%AsyncIteratorPrototype%"){var r=s("%AsyncGenerator%");r&&At&&(t=At(r.prototype))}return dr[e]=t,t},Od={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},ca=Rc,Ao=Zy,h0=ca.call(Function.call,Array.prototype.concat),c0=ca.call(Function.apply,Array.prototype.splice),Fd=ca.call(Function.call,String.prototype.replace),bo=ca.call(Function.call,String.prototype.slice),d0=ca.call(Function.call,RegExp.prototype.exec),u0=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,p0=/\\(\\)?/g,f0=function(e){var t=bo(e,0,1),i=bo(e,-1);if(t==="%"&&i!=="%")throw new tn("invalid intrinsic syntax, expected closing `%`");if(i==="%"&&t!=="%")throw new tn("invalid intrinsic syntax, expected opening `%`");var r=[];return Fd(e,u0,function(n,a,o,l){r[r.length]=o?Fd(l,p0,"$1"):a||n}),r},m0=function(e,t){var i=e,r;if(Ao(Od,i)&&(r=Od[i],i="%"+r[0]+"%"),Ao(dr,i)){var n=dr[i];if(n===Rr&&(n=l0(i)),typeof n>"u"&&!t)throw new Kr("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:n}}throw new tn("intrinsic "+e+" does not exist!")},gn=function(e,t){if(typeof e!="string"||e.length===0)throw new Kr("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof t!="boolean")throw new Kr('"allowMissing" argument must be a boolean');if(d0(/^%?[^%]*%?$/,e)===null)throw new tn("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var i=f0(e),r=i.length>0?i[0]:"",n=m0("%"+r+"%",t),a=n.name,o=n.value,l=!1,c=n.alias;c&&(r=c[0],c0(i,h0([0,1],c)));for(var u=1,h=!0;u=i.length){var f=cr(o,d);h=!!f,h&&"get"in f&&!("originalValue"in f.get)?o=f.get:o=o[d]}else h=Ao(o,d),o=o[d];h&&!l&&(dr[a]=o)}}return o},ff={exports:{}},wl,Nd;function Lc(){if(Nd)return wl;Nd=1;var s=gn,e=s("%Object.defineProperty%",!0)||!1;if(e)try{e({},"a",{value:1})}catch{e=!1}return wl=e,wl}var g0=gn,ro=g0("%Object.getOwnPropertyDescriptor%",!0);if(ro)try{ro([],"length")}catch{ro=null}var mf=ro,Ud=Lc(),y0=uf,Cr=ha,Gd=mf,v0=function(e,t,i){if(!e||typeof e!="object"&&typeof e!="function")throw new Cr("`obj` must be an object or a function`");if(typeof t!="string"&&typeof t!="symbol")throw new Cr("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new Cr("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new Cr("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new Cr("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new Cr("`loose`, if provided, must be a boolean");var r=arguments.length>3?arguments[3]:null,n=arguments.length>4?arguments[4]:null,a=arguments.length>5?arguments[5]:null,o=arguments.length>6?arguments[6]:!1,l=!!Gd&&Gd(e,t);if(Ud)Ud(e,t,{configurable:a===null&&l?l.configurable:!a,enumerable:r===null&&l?l.enumerable:!r,value:i,writable:n===null&&l?l.writable:!n});else if(o||!r&&!n&&!a)e[t]=i;else throw new y0("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},xh=Lc(),gf=function(){return!!xh};gf.hasArrayLengthDefineBug=function(){if(!xh)return null;try{return xh([],"length",{value:1}).length!==1}catch{return!0}};var A0=gf,b0=gn,Hd=v0,w0=A0(),Vd=mf,Wd=ha,x0=b0("%Math.floor%"),E0=function(e,t){if(typeof e!="function")throw new Wd("`fn` is not a function");if(typeof t!="number"||t<0||t>4294967295||x0(t)!==t)throw new Wd("`length` must be a positive 32-bit integer");var i=arguments.length>2&&!!arguments[2],r=!0,n=!0;if("length"in e&&Vd){var a=Vd(e,"length");a&&!a.configurable&&(r=!1),a&&!a.writable&&(n=!1)}return(r||n||!i)&&(w0?Hd(e,"length",t,!0,!0):Hd(e,"length",t)),e};(function(s){var e=Rc,t=gn,i=E0,r=ha,n=t("%Function.prototype.apply%"),a=t("%Function.prototype.call%"),o=t("%Reflect.apply%",!0)||e.call(a,n),l=Lc(),c=t("%Math.max%");s.exports=function(d){if(typeof d!="function")throw new r("a function is required");var p=o(e,a,arguments);return i(p,1+c(0,d.length-(arguments.length-1)),!0)};var u=function(){return o(e,n,arguments)};l?l(s.exports,"apply",{value:u}):s.exports.apply=u})(ff);var _0=ff.exports,yf=gn,vf=_0,T0=vf(yf("String.prototype.indexOf")),S0=function(e,t){var i=yf(e,!!t);return typeof i=="function"&&T0(e,".prototype.")>-1?vf(i):i};const C0={},M0=Object.freeze(Object.defineProperty({__proto__:null,default:C0},Symbol.toStringTag,{value:"Module"})),k0=dy(M0);var Dc=typeof Map=="function"&&Map.prototype,xl=Object.getOwnPropertyDescriptor&&Dc?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,wo=Dc&&xl&&typeof xl.get=="function"?xl.get:null,zd=Dc&&Map.prototype.forEach,Oc=typeof Set=="function"&&Set.prototype,El=Object.getOwnPropertyDescriptor&&Oc?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,xo=Oc&&El&&typeof El.get=="function"?El.get:null,Yd=Oc&&Set.prototype.forEach,B0=typeof WeakMap=="function"&&WeakMap.prototype,zn=B0?WeakMap.prototype.has:null,I0=typeof WeakSet=="function"&&WeakSet.prototype,Yn=I0?WeakSet.prototype.has:null,P0=typeof WeakRef=="function"&&WeakRef.prototype,jd=P0?WeakRef.prototype.deref:null,R0=Boolean.prototype.valueOf,L0=Object.prototype.toString,D0=Function.prototype.toString,O0=String.prototype.match,Fc=String.prototype.slice,Ps=String.prototype.replace,F0=String.prototype.toUpperCase,Xd=String.prototype.toLowerCase,Af=RegExp.prototype.test,Kd=Array.prototype.concat,Ni=Array.prototype.join,N0=Array.prototype.slice,qd=Math.floor,Eh=typeof BigInt=="function"?BigInt.prototype.valueOf:null,_l=Object.getOwnPropertySymbols,_h=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,sn=typeof Symbol=="function"&&typeof Symbol.iterator=="object",It=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===sn||"symbol")?Symbol.toStringTag:null,bf=Object.prototype.propertyIsEnumerable,Qd=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(s){return s.__proto__}:null);function Jd(s,e){if(s===1/0||s===-1/0||s!==s||s&&s>-1e3&&s<1e3||Af.call(/e/,e))return e;var t=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof s=="number"){var i=s<0?-qd(-s):qd(s);if(i!==s){var r=String(i),n=Fc.call(e,r.length+1);return Ps.call(r,t,"$&_")+"."+Ps.call(Ps.call(n,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Ps.call(e,t,"$&_")}var Th=k0,Zd=Th.custom,$d=xf(Zd)?Zd:null,U0=function s(e,t,i,r){var n=t||{};if(_s(n,"quoteStyle")&&n.quoteStyle!=="single"&&n.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(_s(n,"maxStringLength")&&(typeof n.maxStringLength=="number"?n.maxStringLength<0&&n.maxStringLength!==1/0:n.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=_s(n,"customInspect")?n.customInspect:!0;if(typeof a!="boolean"&&a!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(_s(n,"indent")&&n.indent!==null&&n.indent!==" "&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(_s(n,"numericSeparator")&&typeof n.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=n.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return _f(e,n);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var l=String(e);return o?Jd(e,l):l}if(typeof e=="bigint"){var c=String(e)+"n";return o?Jd(e,c):c}var u=typeof n.depth>"u"?5:n.depth;if(typeof i>"u"&&(i=0),i>=u&&u>0&&typeof e=="object")return Sh(e)?"[Array]":"[Object]";var h=sv(n,i);if(typeof r>"u")r=[];else if(Ef(r,e)>=0)return"[Circular]";function d(S,x,L){if(x&&(r=N0.call(r),r.push(x)),L){var Y={depth:n.depth};return _s(n,"quoteStyle")&&(Y.quoteStyle=n.quoteStyle),s(S,Y,i+1,r)}return s(S,n,i+1,r)}if(typeof e=="function"&&!eu(e)){var p=K0(e),m=xa(e,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(m.length>0?" { "+Ni.call(m,", ")+" }":"")}if(xf(e)){var f=sn?Ps.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):_h.call(e);return typeof e=="object"&&!sn?En(f):f}if(ev(e)){for(var g="<"+Xd.call(String(e.nodeName)),y=e.attributes||[],b=0;b",g}if(Sh(e)){if(e.length===0)return"[]";var A=xa(e,d);return h&&!iv(A)?"["+Ch(A,h)+"]":"[ "+Ni.call(A,", ")+" ]"}if(V0(e)){var v=xa(e,d);return!("cause"in Error.prototype)&&"cause"in e&&!bf.call(e,"cause")?"{ ["+String(e)+"] "+Ni.call(Kd.call("[cause]: "+d(e.cause),v),", ")+" }":v.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+Ni.call(v,", ")+" }"}if(typeof e=="object"&&a){if($d&&typeof e[$d]=="function"&&Th)return Th(e,{depth:u-i});if(a!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(q0(e)){var _=[];return zd&&zd.call(e,function(S,x){_.push(d(x,e,!0)+" => "+d(S,e))}),tu("Map",wo.call(e),_,h)}if(Z0(e)){var C=[];return Yd&&Yd.call(e,function(S){C.push(d(S,e))}),tu("Set",xo.call(e),C,h)}if(Q0(e))return Tl("WeakMap");if($0(e))return Tl("WeakSet");if(J0(e))return Tl("WeakRef");if(z0(e))return En(d(Number(e)));if(j0(e))return En(d(Eh.call(e)));if(Y0(e))return En(R0.call(e));if(W0(e))return En(d(String(e)));if(typeof window<"u"&&e===window)return"{ [object Window] }";if(typeof globalThis<"u"&&e===globalThis||typeof Nt<"u"&&e===Nt)return"{ [object globalThis] }";if(!H0(e)&&!eu(e)){var B=xa(e,d),P=Qd?Qd(e)===Object.prototype:e instanceof Object||e.constructor===Object,M=e instanceof Object?"":"null prototype",U=!P&&It&&Object(e)===e&&It in e?Fc.call(Gs(e),8,-1):M?"Object":"",F=P||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",T=F+(U||M?"["+Ni.call(Kd.call([],U||[],M||[]),": ")+"] ":"");return B.length===0?T+"{}":h?T+"{"+Ch(B,h)+"}":T+"{ "+Ni.call(B,", ")+" }"}return String(e)};function wf(s,e,t){var i=(t.quoteStyle||e)==="double"?'"':"'";return i+s+i}function G0(s){return Ps.call(String(s),/"/g,""")}function Sh(s){return Gs(s)==="[object Array]"&&(!It||!(typeof s=="object"&&It in s))}function H0(s){return Gs(s)==="[object Date]"&&(!It||!(typeof s=="object"&&It in s))}function eu(s){return Gs(s)==="[object RegExp]"&&(!It||!(typeof s=="object"&&It in s))}function V0(s){return Gs(s)==="[object Error]"&&(!It||!(typeof s=="object"&&It in s))}function W0(s){return Gs(s)==="[object String]"&&(!It||!(typeof s=="object"&&It in s))}function z0(s){return Gs(s)==="[object Number]"&&(!It||!(typeof s=="object"&&It in s))}function Y0(s){return Gs(s)==="[object Boolean]"&&(!It||!(typeof s=="object"&&It in s))}function xf(s){if(sn)return s&&typeof s=="object"&&s instanceof Symbol;if(typeof s=="symbol")return!0;if(!s||typeof s!="object"||!_h)return!1;try{return _h.call(s),!0}catch{}return!1}function j0(s){if(!s||typeof s!="object"||!Eh)return!1;try{return Eh.call(s),!0}catch{}return!1}var X0=Object.prototype.hasOwnProperty||function(s){return s in this};function _s(s,e){return X0.call(s,e)}function Gs(s){return L0.call(s)}function K0(s){if(s.name)return s.name;var e=O0.call(D0.call(s),/^function\s*([\w$]+)/);return e?e[1]:null}function Ef(s,e){if(s.indexOf)return s.indexOf(e);for(var t=0,i=s.length;te.maxStringLength){var t=s.length-e.maxStringLength,i="... "+t+" more character"+(t>1?"s":"");return _f(Fc.call(s,0,e.maxStringLength),e)+i}var r=Ps.call(Ps.call(s,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,tv);return wf(r,"single",e)}function tv(s){var e=s.charCodeAt(0),t={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return t?"\\"+t:"\\x"+(e<16?"0":"")+F0.call(e.toString(16))}function En(s){return"Object("+s+")"}function Tl(s){return s+" { ? }"}function tu(s,e,t,i){var r=i?Ch(t,i):Ni.call(t,", ");return s+" ("+e+") {"+r+"}"}function iv(s){for(var e=0;ee in s?ay(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var _r=(s,e,t)=>(oy(s,typeof e!="symbol"?e+"":e,t),t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const n of r)if(n.type==="childList")for(const a of n.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function t(r){const n={};return r.integrity&&(n.integrity=r.integrity),r.referrerPolicy&&(n.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?n.credentials="include":r.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function i(r){if(r.ep)return;r.ep=!0;const n=t(r);fetch(r.href,n)}})();var wr=(s=>(s[s.WEBGL_LEGACY=0]="WEBGL_LEGACY",s[s.WEBGL=1]="WEBGL",s[s.WEBGL2=2]="WEBGL2",s))(wr||{}),of=(s=>(s[s.UNKNOWN=0]="UNKNOWN",s[s.WEBGL=1]="WEBGL",s[s.CANVAS=2]="CANVAS",s))(of||{}),vh=(s=>(s[s.COLOR=16384]="COLOR",s[s.DEPTH=256]="DEPTH",s[s.STENCIL=1024]="STENCIL",s))(vh||{}),Se=(s=>(s[s.NORMAL=0]="NORMAL",s[s.ADD=1]="ADD",s[s.MULTIPLY=2]="MULTIPLY",s[s.SCREEN=3]="SCREEN",s[s.OVERLAY=4]="OVERLAY",s[s.DARKEN=5]="DARKEN",s[s.LIGHTEN=6]="LIGHTEN",s[s.COLOR_DODGE=7]="COLOR_DODGE",s[s.COLOR_BURN=8]="COLOR_BURN",s[s.HARD_LIGHT=9]="HARD_LIGHT",s[s.SOFT_LIGHT=10]="SOFT_LIGHT",s[s.DIFFERENCE=11]="DIFFERENCE",s[s.EXCLUSION=12]="EXCLUSION",s[s.HUE=13]="HUE",s[s.SATURATION=14]="SATURATION",s[s.COLOR=15]="COLOR",s[s.LUMINOSITY=16]="LUMINOSITY",s[s.NORMAL_NPM=17]="NORMAL_NPM",s[s.ADD_NPM=18]="ADD_NPM",s[s.SCREEN_NPM=19]="SCREEN_NPM",s[s.NONE=20]="NONE",s[s.SRC_OVER=0]="SRC_OVER",s[s.SRC_IN=21]="SRC_IN",s[s.SRC_OUT=22]="SRC_OUT",s[s.SRC_ATOP=23]="SRC_ATOP",s[s.DST_OVER=24]="DST_OVER",s[s.DST_IN=25]="DST_IN",s[s.DST_OUT=26]="DST_OUT",s[s.DST_ATOP=27]="DST_ATOP",s[s.ERASE=26]="ERASE",s[s.SUBTRACT=28]="SUBTRACT",s[s.XOR=29]="XOR",s))(Se||{}),Gi=(s=>(s[s.POINTS=0]="POINTS",s[s.LINES=1]="LINES",s[s.LINE_LOOP=2]="LINE_LOOP",s[s.LINE_STRIP=3]="LINE_STRIP",s[s.TRIANGLES=4]="TRIANGLES",s[s.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",s[s.TRIANGLE_FAN=6]="TRIANGLE_FAN",s))(Gi||{}),se=(s=>(s[s.RGBA=6408]="RGBA",s[s.RGB=6407]="RGB",s[s.RG=33319]="RG",s[s.RED=6403]="RED",s[s.RGBA_INTEGER=36249]="RGBA_INTEGER",s[s.RGB_INTEGER=36248]="RGB_INTEGER",s[s.RG_INTEGER=33320]="RG_INTEGER",s[s.RED_INTEGER=36244]="RED_INTEGER",s[s.ALPHA=6406]="ALPHA",s[s.LUMINANCE=6409]="LUMINANCE",s[s.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",s[s.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",s[s.DEPTH_STENCIL=34041]="DEPTH_STENCIL",s))(se||{}),Xr=(s=>(s[s.TEXTURE_2D=3553]="TEXTURE_2D",s[s.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",s[s.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",s[s.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",s[s.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",s[s.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",s[s.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",s[s.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",s[s.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",s))(Xr||{}),we=(s=>(s[s.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",s[s.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",s[s.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",s[s.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",s[s.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",s[s.UNSIGNED_INT=5125]="UNSIGNED_INT",s[s.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",s[s.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",s[s.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",s[s.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",s[s.BYTE=5120]="BYTE",s[s.SHORT=5122]="SHORT",s[s.INT=5124]="INT",s[s.FLOAT=5126]="FLOAT",s[s.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",s[s.HALF_FLOAT=36193]="HALF_FLOAT",s))(we||{}),ce=(s=>(s[s.FLOAT=0]="FLOAT",s[s.INT=1]="INT",s[s.UINT=2]="UINT",s))(ce||{}),is=(s=>(s[s.NEAREST=0]="NEAREST",s[s.LINEAR=1]="LINEAR",s))(is||{}),Ds=(s=>(s[s.CLAMP=33071]="CLAMP",s[s.REPEAT=10497]="REPEAT",s[s.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",s))(Ds||{}),Xi=(s=>(s[s.OFF=0]="OFF",s[s.POW2=1]="POW2",s[s.ON=2]="ON",s[s.ON_MANUAL=3]="ON_MANUAL",s))(Xi||{}),Gt=(s=>(s[s.NPM=0]="NPM",s[s.UNPACK=1]="UNPACK",s[s.PMA=2]="PMA",s[s.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",s[s.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",s[s.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",s))(Gt||{}),Fi=(s=>(s[s.NO=0]="NO",s[s.YES=1]="YES",s[s.AUTO=2]="AUTO",s[s.BLEND=0]="BLEND",s[s.CLEAR=1]="CLEAR",s[s.BLIT=2]="BLIT",s))(Fi||{}),Ic=(s=>(s[s.AUTO=0]="AUTO",s[s.MANUAL=1]="MANUAL",s))(Ic||{}),ai=(s=>(s.LOW="lowp",s.MEDIUM="mediump",s.HIGH="highp",s))(ai||{}),gt=(s=>(s[s.NONE=0]="NONE",s[s.SCISSOR=1]="SCISSOR",s[s.STENCIL=2]="STENCIL",s[s.SPRITE=3]="SPRITE",s[s.COLOR=4]="COLOR",s))(gt||{}),ft=(s=>(s[s.NONE=0]="NONE",s[s.LOW=2]="LOW",s[s.MEDIUM=4]="MEDIUM",s[s.HIGH=8]="HIGH",s))(ft||{}),Vi=(s=>(s[s.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",s[s.ARRAY_BUFFER=34962]="ARRAY_BUFFER",s[s.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",s))(Vi||{});const ly={createCanvas:(s,e)=>{const t=document.createElement("canvas");return t.width=s,t.height=e,t},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(s,e)=>fetch(s,e),parseXML:s=>new DOMParser().parseFromString(s,"text/xml")},de={ADAPTER:ly,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var gl=/iPhone/i,wd=/iPod/i,xd=/iPad/i,Ed=/\biOS-universal(?:.+)Mac\b/i,yl=/\bAndroid(?:.+)Mobile\b/i,_d=/Android/i,Tr=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,Aa=/Silk/i,Ji=/Windows Phone/i,Td=/\bWindows(?:.+)ARM\b/i,Sd=/BlackBerry/i,Cd=/BB10/i,Md=/Opera Mini/i,kd=/\b(CriOS|Chrome)(?:.+)Mobile/i,Bd=/Mobile(?:.+)Firefox\b/i,Id=function(s){return typeof s<"u"&&s.platform==="MacIntel"&&typeof s.maxTouchPoints=="number"&&s.maxTouchPoints>1&&typeof MSStream>"u"};function hy(s){return function(e){return e.test(s)}}function Pd(s){var e={userAgent:"",platform:"",maxTouchPoints:0};!s&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof s=="string"?e.userAgent=s:s&&s.userAgent&&(e={userAgent:s.userAgent,platform:s.platform,maxTouchPoints:s.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var r=hy(t),n={apple:{phone:r(gl)&&!r(Ji),ipod:r(wd),tablet:!r(gl)&&(r(xd)||Id(e))&&!r(Ji),universal:r(Ed),device:(r(gl)||r(wd)||r(xd)||r(Ed)||Id(e))&&!r(Ji)},amazon:{phone:r(Tr),tablet:!r(Tr)&&r(Aa),device:r(Tr)||r(Aa)},android:{phone:!r(Ji)&&r(Tr)||!r(Ji)&&r(yl),tablet:!r(Ji)&&!r(Tr)&&!r(yl)&&(r(Aa)||r(_d)),device:!r(Ji)&&(r(Tr)||r(Aa)||r(yl)||r(_d))||r(/\bokhttp\b/i)},windows:{phone:r(Ji),tablet:r(Td),device:r(Ji)||r(Td)},other:{blackberry:r(Sd),blackberry10:r(Cd),opera:r(Md),firefox:r(Bd),chrome:r(kd),device:r(Sd)||r(Cd)||r(Md)||r(Bd)||r(kd)},any:!1,phone:!1,tablet:!1};return n.any=n.apple.device||n.android.device||n.windows.device||n.other.device,n.phone=n.apple.phone||n.android.phone||n.windows.phone,n.tablet=n.apple.tablet||n.android.tablet||n.windows.tablet,n}const cy=Pd.default??Pd,ss=cy(globalThis.navigator);de.RETINA_PREFIX=/@([0-9\.]+)x/;de.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var Ut=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function la(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function dy(s){if(s.__esModule)return s;var e=s.default;if(typeof e=="function"){var t=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(s).forEach(function(i){var r=Object.getOwnPropertyDescriptor(s,i);Object.defineProperty(t,i,r.get?r:{enumerable:!0,get:function(){return s[i]}})}),t}var lf={exports:{}};(function(s){var e=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function r(l,c,u){this.fn=l,this.context=c,this.once=u||!1}function n(l,c,u,h,d){if(typeof u!="function")throw new TypeError("The listener must be a function");var p=new r(u,h||l,d),m=t?t+c:c;return l._events[m]?l._events[m].fn?l._events[m]=[l._events[m],p]:l._events[m].push(p):(l._events[m]=p,l._eventsCount++),l}function a(l,c){--l._eventsCount===0?l._events=new i:delete l._events[c]}function o(){this._events=new i,this._eventsCount=0}o.prototype.eventNames=function(){var c=[],u,h;if(this._eventsCount===0)return c;for(h in u=this._events)e.call(u,h)&&c.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(u)):c},o.prototype.listeners=function(c){var u=t?t+c:c,h=this._events[u];if(!h)return[];if(h.fn)return[h.fn];for(var d=0,p=h.length,m=new Array(p);d80*t){o=c=s[0],l=u=s[1];for(var m=t;mc&&(c=h),d>u&&(u=d);p=Math.max(c-o,u-l),p=p!==0?32767/p:0}return Zn(n,a,t,o,l,p,0),a}function hf(s,e,t,i,r){var n,a;if(r===wh(s,e,t,i)>0)for(n=e;n=e;n-=i)a=Rd(n,s[n],s[n+1],a);return a&&Xo(a,a.next)&&(ea(a),a=a.next),a}function yr(s,e){if(!s)return s;e||(e=s);var t=s,i;do if(i=!1,!t.steiner&&(Xo(t,t.next)||ot(t.prev,t,t.next)===0)){if(ea(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function Zn(s,e,t,i,r,n,a){if(s){!a&&n&&xy(s,i,r,n);for(var o=s,l,c;s.prev!==s.next;){if(l=s.prev,c=s.next,n?fy(s,i,r,n):py(s)){e.push(l.i/t|0),e.push(s.i/t|0),e.push(c.i/t|0),ea(s),s=c.next,o=c.next;continue}if(s=c,s===o){a?a===1?(s=my(yr(s),e,t),Zn(s,e,t,i,r,n,2)):a===2&&gy(s,e,t,i,r,n):Zn(yr(s),e,t,i,r,n,1);break}}}}function py(s){var e=s.prev,t=s,i=s.next;if(ot(e,t,i)>=0)return!1;for(var r=e.x,n=t.x,a=i.x,o=e.y,l=t.y,c=i.y,u=rn?r>a?r:a:n>a?n:a,p=o>l?o>c?o:c:l>c?l:c,m=i.next;m!==e;){if(m.x>=u&&m.x<=d&&m.y>=h&&m.y<=p&&Wr(r,o,n,l,a,c,m.x,m.y)&&ot(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function fy(s,e,t,i){var r=s.prev,n=s,a=s.next;if(ot(r,n,a)>=0)return!1;for(var o=r.x,l=n.x,c=a.x,u=r.y,h=n.y,d=a.y,p=ol?o>c?o:c:l>c?l:c,g=u>h?u>d?u:d:h>d?h:d,y=Ah(p,m,e,t,i),b=Ah(f,g,e,t,i),A=s.prevZ,v=s.nextZ;A&&A.z>=y&&v&&v.z<=b;){if(A.x>=p&&A.x<=f&&A.y>=m&&A.y<=g&&A!==r&&A!==a&&Wr(o,u,l,h,c,d,A.x,A.y)&&ot(A.prev,A,A.next)>=0||(A=A.prevZ,v.x>=p&&v.x<=f&&v.y>=m&&v.y<=g&&v!==r&&v!==a&&Wr(o,u,l,h,c,d,v.x,v.y)&&ot(v.prev,v,v.next)>=0))return!1;v=v.nextZ}for(;A&&A.z>=y;){if(A.x>=p&&A.x<=f&&A.y>=m&&A.y<=g&&A!==r&&A!==a&&Wr(o,u,l,h,c,d,A.x,A.y)&&ot(A.prev,A,A.next)>=0)return!1;A=A.prevZ}for(;v&&v.z<=b;){if(v.x>=p&&v.x<=f&&v.y>=m&&v.y<=g&&v!==r&&v!==a&&Wr(o,u,l,h,c,d,v.x,v.y)&&ot(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function my(s,e,t){var i=s;do{var r=i.prev,n=i.next.next;!Xo(r,n)&&cf(r,i,i.next,n)&&$n(r,n)&&$n(n,r)&&(e.push(r.i/t|0),e.push(i.i/t|0),e.push(n.i/t|0),ea(i),ea(i.next),i=s=n),i=i.next}while(i!==s);return yr(i)}function gy(s,e,t,i,r,n){var a=s;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&Ty(a,o)){var l=df(a,o);a=yr(a,a.next),l=yr(l,l.next),Zn(a,e,t,i,r,n,0),Zn(l,e,t,i,r,n,0);return}o=o.next}a=a.next}while(a!==s)}function yy(s,e,t,i){var r=[],n,a,o,l,c;for(n=0,a=e.length;n=t.next.y&&t.next.y!==t.y){var o=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(o<=i&&o>n&&(n=o,a=t.x=t.x&&t.x>=c&&i!==t.x&&Wr(ra.x||t.x===a.x&&wy(a,t)))&&(a=t,h=d)),t=t.next;while(t!==l);return a}function wy(s,e){return ot(s.prev,s,e.prev)<0&&ot(e.next,s,s.next)<0}function xy(s,e,t,i){var r=s;do r.z===0&&(r.z=Ah(r.x,r.y,e,t,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==s);r.prevZ.nextZ=null,r.prevZ=null,Ey(r)}function Ey(s){var e,t,i,r,n,a,o,l,c=1;do{for(t=s,s=null,n=null,a=0;t;){for(a++,i=t,o=0,e=0;e0||l>0&&i;)o!==0&&(l===0||!i||t.z<=i.z)?(r=t,t=t.nextZ,o--):(r=i,i=i.nextZ,l--),n?n.nextZ=r:s=r,r.prevZ=n,n=r;t=i}n.nextZ=null,c*=2}while(a>1);return s}function Ah(s,e,t,i,r){return s=(s-t)*r|0,e=(e-i)*r|0,s=(s|s<<8)&16711935,s=(s|s<<4)&252645135,s=(s|s<<2)&858993459,s=(s|s<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,s|e<<1}function _y(s){var e=s,t=s;do(e.x=(s-a)*(n-o)&&(s-a)*(i-o)>=(t-a)*(e-o)&&(t-a)*(n-o)>=(r-a)*(i-o)}function Ty(s,e){return s.next.i!==e.i&&s.prev.i!==e.i&&!Sy(s,e)&&($n(s,e)&&$n(e,s)&&Cy(s,e)&&(ot(s.prev,s,e.prev)||ot(s,e.prev,e))||Xo(s,e)&&ot(s.prev,s,s.next)>0&&ot(e.prev,e,e.next)>0)}function ot(s,e,t){return(e.y-s.y)*(t.x-e.x)-(e.x-s.x)*(t.y-e.y)}function Xo(s,e){return s.x===e.x&&s.y===e.y}function cf(s,e,t,i){var r=wa(ot(s,e,t)),n=wa(ot(s,e,i)),a=wa(ot(t,i,s)),o=wa(ot(t,i,e));return!!(r!==n&&a!==o||r===0&&ba(s,t,e)||n===0&&ba(s,i,e)||a===0&&ba(t,s,i)||o===0&&ba(t,e,i))}function ba(s,e,t){return e.x<=Math.max(s.x,t.x)&&e.x>=Math.min(s.x,t.x)&&e.y<=Math.max(s.y,t.y)&&e.y>=Math.min(s.y,t.y)}function wa(s){return s>0?1:s<0?-1:0}function Sy(s,e){var t=s;do{if(t.i!==s.i&&t.next.i!==s.i&&t.i!==e.i&&t.next.i!==e.i&&cf(t,t.next,s,e))return!0;t=t.next}while(t!==s);return!1}function $n(s,e){return ot(s.prev,s,s.next)<0?ot(s,e,s.next)>=0&&ot(s,s.prev,e)>=0:ot(s,e,s.prev)<0||ot(s,s.next,e)<0}function Cy(s,e){var t=s,i=!1,r=(s.x+e.x)/2,n=(s.y+e.y)/2;do t.y>n!=t.next.y>n&&t.next.y!==t.y&&r<(t.next.x-t.x)*(n-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==s);return i}function df(s,e){var t=new bh(s.i,s.x,s.y),i=new bh(e.i,e.x,e.y),r=s.next,n=e.prev;return s.next=e,e.prev=s,t.next=r,r.prev=t,i.next=t,t.prev=i,n.next=i,i.prev=n,i}function Rd(s,e,t,i){var r=new bh(s,e,t);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function ea(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 bh(s,e,t){this.i=s,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}jo.deviation=function(s,e,t,i){var r=e&&e.length,n=r?e[0]*t:s.length,a=Math.abs(wh(s,0,n,t));if(r)for(var o=0,l=e.length;o0&&(i+=s[r-1].length,t.holes.push(i))}return t};var My=Pc.exports;const ky=la(My);var vo={exports:{}};/*! https://mths.be/punycode v1.4.1 by @mathias */vo.exports;(function(s,e){(function(t){var i=e&&!e.nodeType&&e,r=s&&!s.nodeType&&s,n=typeof Ut=="object"&&Ut;(n.global===n||n.window===n||n.self===n)&&(t=n);var a,o=2147483647,l=36,c=1,u=26,h=38,d=700,p=72,m=128,f="-",g=/^xn--/,y=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,A={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},v=l-c,_=Math.floor,C=String.fromCharCode,B;function P(H){throw new RangeError(A[H])}function M(H,O){for(var N=H.length,ee=[];N--;)ee[N]=O(H[N]);return ee}function U(H,O){var N=H.split("@"),ee="";N.length>1&&(ee=N[0]+"@",H=N[1]),H=H.replace(b,".");var Z=H.split("."),Q=M(Z,O).join(".");return ee+Q}function F(H){for(var O=[],N=0,ee=H.length,Z,Q;N=55296&&Z<=56319&&N65535&&(O-=65536,N+=C(O>>>10&1023|55296),O=56320|O&1023),N+=C(O),N}).join("")}function S(H){return H-48<10?H-22:H-65<26?H-65:H-97<26?H-97:l}function x(H,O){return H+22+75*(H<26)-((O!=0)<<5)}function L(H,O,N){var ee=0;for(H=N?_(H/d):H>>1,H+=_(H/O);H>v*u>>1;ee+=l)H=_(H/v);return _(ee+(v+1)*H/(H+h))}function Y(H){var O=[],N=H.length,ee,Z=0,Q=m,ge=p,Te,he,pe,Ae,oe,ue,ve,E,j;for(Te=H.lastIndexOf(f),Te<0&&(Te=0),he=0;he=128&&P("not-basic"),O.push(H.charCodeAt(he));for(pe=Te>0?Te+1:0;pe=N&&P("invalid-input"),ve=S(H.charCodeAt(pe++)),(ve>=l||ve>_((o-Z)/oe))&&P("overflow"),Z+=ve*oe,E=ue<=ge?c:ue>=ge+u?u:ue-ge,!(ve_(o/j)&&P("overflow"),oe*=j;ee=O.length+1,ge=L(Z-Ae,ee,Ae==0),_(Z/ee)>o-Q&&P("overflow"),Q+=_(Z/ee),Z%=ee,O.splice(Z++,0,Q)}return T(O)}function R(H){var O,N,ee,Z,Q,ge,Te,he,pe,Ae,oe,ue=[],ve,E,j,z;for(H=F(H),ve=H.length,O=m,N=0,Q=p,ge=0;ge=O&&oe_((o-N)/E)&&P("overflow"),N+=(Te-O)*E,O=Te,ge=0;geo&&P("overflow"),oe==O){for(he=N,pe=l;Ae=pe<=Q?c:pe>=Q+u?u:pe-Q,!(he"u"||!At?Ue:At(Uint8Array),dr={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?Ue:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Ue:ArrayBuffer,"%ArrayIteratorPrototype%":Sr&&At?At([][Symbol.iterator]()):Ue,"%AsyncFromSyncIteratorPrototype%":Ue,"%AsyncFunction%":Rr,"%AsyncGenerator%":Rr,"%AsyncGeneratorFunction%":Rr,"%AsyncIteratorPrototype%":Rr,"%Atomics%":typeof Atomics>"u"?Ue:Atomics,"%BigInt%":typeof BigInt>"u"?Ue:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Ue:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Ue:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Ue:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$y,"%eval%":eval,"%EvalError%":e0,"%Float32Array%":typeof Float32Array>"u"?Ue:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Ue:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Ue:FinalizationRegistry,"%Function%":pf,"%GeneratorFunction%":Rr,"%Int8Array%":typeof Int8Array>"u"?Ue:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Ue:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Ue:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Sr&&At?At(At([][Symbol.iterator]())):Ue,"%JSON%":typeof JSON=="object"?JSON:Ue,"%Map%":typeof Map>"u"?Ue:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Sr||!At?Ue:At(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Ue:Promise,"%Proxy%":typeof Proxy>"u"?Ue:Proxy,"%RangeError%":t0,"%ReferenceError%":i0,"%Reflect%":typeof Reflect>"u"?Ue:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Ue:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Sr||!At?Ue:At(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Ue:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Sr&&At?At(""[Symbol.iterator]()):Ue,"%Symbol%":Sr?Symbol:Ue,"%SyntaxError%":tn,"%ThrowTypeError%":r0,"%TypedArray%":a0,"%TypeError%":Kr,"%Uint8Array%":typeof Uint8Array>"u"?Ue:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Ue:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Ue:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Ue:Uint32Array,"%URIError%":s0,"%WeakMap%":typeof WeakMap>"u"?Ue:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Ue:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Ue:WeakSet};if(At)try{null.error}catch(s){var o0=At(At(s));dr["%Error.prototype%"]=o0}var l0=function s(e){var t;if(e==="%AsyncFunction%")t=Al("async function () {}");else if(e==="%GeneratorFunction%")t=Al("function* () {}");else if(e==="%AsyncGeneratorFunction%")t=Al("async function* () {}");else if(e==="%AsyncGenerator%"){var i=s("%AsyncGeneratorFunction%");i&&(t=i.prototype)}else if(e==="%AsyncIteratorPrototype%"){var r=s("%AsyncGenerator%");r&&At&&(t=At(r.prototype))}return dr[e]=t,t},Od={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},ca=Rc,Ao=Zy,h0=ca.call(Function.call,Array.prototype.concat),c0=ca.call(Function.apply,Array.prototype.splice),Fd=ca.call(Function.call,String.prototype.replace),bo=ca.call(Function.call,String.prototype.slice),d0=ca.call(Function.call,RegExp.prototype.exec),u0=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,p0=/\\(\\)?/g,f0=function(e){var t=bo(e,0,1),i=bo(e,-1);if(t==="%"&&i!=="%")throw new tn("invalid intrinsic syntax, expected closing `%`");if(i==="%"&&t!=="%")throw new tn("invalid intrinsic syntax, expected opening `%`");var r=[];return Fd(e,u0,function(n,a,o,l){r[r.length]=o?Fd(l,p0,"$1"):a||n}),r},m0=function(e,t){var i=e,r;if(Ao(Od,i)&&(r=Od[i],i="%"+r[0]+"%"),Ao(dr,i)){var n=dr[i];if(n===Rr&&(n=l0(i)),typeof n>"u"&&!t)throw new Kr("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:n}}throw new tn("intrinsic "+e+" does not exist!")},gn=function(e,t){if(typeof e!="string"||e.length===0)throw new Kr("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof t!="boolean")throw new Kr('"allowMissing" argument must be a boolean');if(d0(/^%?[^%]*%?$/,e)===null)throw new tn("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var i=f0(e),r=i.length>0?i[0]:"",n=m0("%"+r+"%",t),a=n.name,o=n.value,l=!1,c=n.alias;c&&(r=c[0],c0(i,h0([0,1],c)));for(var u=1,h=!0;u=i.length){var f=cr(o,d);h=!!f,h&&"get"in f&&!("originalValue"in f.get)?o=f.get:o=o[d]}else h=Ao(o,d),o=o[d];h&&!l&&(dr[a]=o)}}return o},ff={exports:{}},wl,Nd;function Lc(){if(Nd)return wl;Nd=1;var s=gn,e=s("%Object.defineProperty%",!0)||!1;if(e)try{e({},"a",{value:1})}catch{e=!1}return wl=e,wl}var g0=gn,ro=g0("%Object.getOwnPropertyDescriptor%",!0);if(ro)try{ro([],"length")}catch{ro=null}var mf=ro,Ud=Lc(),y0=uf,Cr=ha,Gd=mf,v0=function(e,t,i){if(!e||typeof e!="object"&&typeof e!="function")throw new Cr("`obj` must be an object or a function`");if(typeof t!="string"&&typeof t!="symbol")throw new Cr("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new Cr("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new Cr("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new Cr("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new Cr("`loose`, if provided, must be a boolean");var r=arguments.length>3?arguments[3]:null,n=arguments.length>4?arguments[4]:null,a=arguments.length>5?arguments[5]:null,o=arguments.length>6?arguments[6]:!1,l=!!Gd&&Gd(e,t);if(Ud)Ud(e,t,{configurable:a===null&&l?l.configurable:!a,enumerable:r===null&&l?l.enumerable:!r,value:i,writable:n===null&&l?l.writable:!n});else if(o||!r&&!n&&!a)e[t]=i;else throw new y0("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},xh=Lc(),gf=function(){return!!xh};gf.hasArrayLengthDefineBug=function(){if(!xh)return null;try{return xh([],"length",{value:1}).length!==1}catch{return!0}};var A0=gf,b0=gn,Hd=v0,w0=A0(),Vd=mf,Wd=ha,x0=b0("%Math.floor%"),E0=function(e,t){if(typeof e!="function")throw new Wd("`fn` is not a function");if(typeof t!="number"||t<0||t>4294967295||x0(t)!==t)throw new Wd("`length` must be a positive 32-bit integer");var i=arguments.length>2&&!!arguments[2],r=!0,n=!0;if("length"in e&&Vd){var a=Vd(e,"length");a&&!a.configurable&&(r=!1),a&&!a.writable&&(n=!1)}return(r||n||!i)&&(w0?Hd(e,"length",t,!0,!0):Hd(e,"length",t)),e};(function(s){var e=Rc,t=gn,i=E0,r=ha,n=t("%Function.prototype.apply%"),a=t("%Function.prototype.call%"),o=t("%Reflect.apply%",!0)||e.call(a,n),l=Lc(),c=t("%Math.max%");s.exports=function(d){if(typeof d!="function")throw new r("a function is required");var p=o(e,a,arguments);return i(p,1+c(0,d.length-(arguments.length-1)),!0)};var u=function(){return o(e,n,arguments)};l?l(s.exports,"apply",{value:u}):s.exports.apply=u})(ff);var _0=ff.exports,yf=gn,vf=_0,T0=vf(yf("String.prototype.indexOf")),S0=function(e,t){var i=yf(e,!!t);return typeof i=="function"&&T0(e,".prototype.")>-1?vf(i):i};const C0={},M0=Object.freeze(Object.defineProperty({__proto__:null,default:C0},Symbol.toStringTag,{value:"Module"})),k0=dy(M0);var Dc=typeof Map=="function"&&Map.prototype,xl=Object.getOwnPropertyDescriptor&&Dc?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,wo=Dc&&xl&&typeof xl.get=="function"?xl.get:null,zd=Dc&&Map.prototype.forEach,Oc=typeof Set=="function"&&Set.prototype,El=Object.getOwnPropertyDescriptor&&Oc?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,xo=Oc&&El&&typeof El.get=="function"?El.get:null,Yd=Oc&&Set.prototype.forEach,B0=typeof WeakMap=="function"&&WeakMap.prototype,zn=B0?WeakMap.prototype.has:null,I0=typeof WeakSet=="function"&&WeakSet.prototype,Yn=I0?WeakSet.prototype.has:null,P0=typeof WeakRef=="function"&&WeakRef.prototype,jd=P0?WeakRef.prototype.deref:null,R0=Boolean.prototype.valueOf,L0=Object.prototype.toString,D0=Function.prototype.toString,O0=String.prototype.match,Fc=String.prototype.slice,Ps=String.prototype.replace,F0=String.prototype.toUpperCase,Xd=String.prototype.toLowerCase,Af=RegExp.prototype.test,Kd=Array.prototype.concat,Ni=Array.prototype.join,N0=Array.prototype.slice,qd=Math.floor,Eh=typeof BigInt=="function"?BigInt.prototype.valueOf:null,_l=Object.getOwnPropertySymbols,_h=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,sn=typeof Symbol=="function"&&typeof Symbol.iterator=="object",It=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===sn||"symbol")?Symbol.toStringTag:null,bf=Object.prototype.propertyIsEnumerable,Qd=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(s){return s.__proto__}:null);function Jd(s,e){if(s===1/0||s===-1/0||s!==s||s&&s>-1e3&&s<1e3||Af.call(/e/,e))return e;var t=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof s=="number"){var i=s<0?-qd(-s):qd(s);if(i!==s){var r=String(i),n=Fc.call(e,r.length+1);return Ps.call(r,t,"$&_")+"."+Ps.call(Ps.call(n,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Ps.call(e,t,"$&_")}var Th=k0,Zd=Th.custom,$d=xf(Zd)?Zd:null,U0=function s(e,t,i,r){var n=t||{};if(_s(n,"quoteStyle")&&n.quoteStyle!=="single"&&n.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(_s(n,"maxStringLength")&&(typeof n.maxStringLength=="number"?n.maxStringLength<0&&n.maxStringLength!==1/0:n.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=_s(n,"customInspect")?n.customInspect:!0;if(typeof a!="boolean"&&a!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(_s(n,"indent")&&n.indent!==null&&n.indent!==" "&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(_s(n,"numericSeparator")&&typeof n.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var o=n.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return _f(e,n);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var l=String(e);return o?Jd(e,l):l}if(typeof e=="bigint"){var c=String(e)+"n";return o?Jd(e,c):c}var u=typeof n.depth>"u"?5:n.depth;if(typeof i>"u"&&(i=0),i>=u&&u>0&&typeof e=="object")return Sh(e)?"[Array]":"[Object]";var h=sv(n,i);if(typeof r>"u")r=[];else if(Ef(r,e)>=0)return"[Circular]";function d(S,x,L){if(x&&(r=N0.call(r),r.push(x)),L){var Y={depth:n.depth};return _s(n,"quoteStyle")&&(Y.quoteStyle=n.quoteStyle),s(S,Y,i+1,r)}return s(S,n,i+1,r)}if(typeof e=="function"&&!eu(e)){var p=K0(e),m=xa(e,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(m.length>0?" { "+Ni.call(m,", ")+" }":"")}if(xf(e)){var f=sn?Ps.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):_h.call(e);return typeof e=="object"&&!sn?En(f):f}if(ev(e)){for(var g="<"+Xd.call(String(e.nodeName)),y=e.attributes||[],b=0;b",g}if(Sh(e)){if(e.length===0)return"[]";var A=xa(e,d);return h&&!iv(A)?"["+Ch(A,h)+"]":"[ "+Ni.call(A,", ")+" ]"}if(V0(e)){var v=xa(e,d);return!("cause"in Error.prototype)&&"cause"in e&&!bf.call(e,"cause")?"{ ["+String(e)+"] "+Ni.call(Kd.call("[cause]: "+d(e.cause),v),", ")+" }":v.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+Ni.call(v,", ")+" }"}if(typeof e=="object"&&a){if($d&&typeof e[$d]=="function"&&Th)return Th(e,{depth:u-i});if(a!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(q0(e)){var _=[];return zd&&zd.call(e,function(S,x){_.push(d(x,e,!0)+" => "+d(S,e))}),tu("Map",wo.call(e),_,h)}if(Z0(e)){var C=[];return Yd&&Yd.call(e,function(S){C.push(d(S,e))}),tu("Set",xo.call(e),C,h)}if(Q0(e))return Tl("WeakMap");if($0(e))return Tl("WeakSet");if(J0(e))return Tl("WeakRef");if(z0(e))return En(d(Number(e)));if(j0(e))return En(d(Eh.call(e)));if(Y0(e))return En(R0.call(e));if(W0(e))return En(d(String(e)));if(typeof window<"u"&&e===window)return"{ [object Window] }";if(typeof globalThis<"u"&&e===globalThis||typeof Ut<"u"&&e===Ut)return"{ [object globalThis] }";if(!H0(e)&&!eu(e)){var B=xa(e,d),P=Qd?Qd(e)===Object.prototype:e instanceof Object||e.constructor===Object,M=e instanceof Object?"":"null prototype",U=!P&&It&&Object(e)===e&&It in e?Fc.call(Gs(e),8,-1):M?"Object":"",F=P||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",T=F+(U||M?"["+Ni.call(Kd.call([],U||[],M||[]),": ")+"] ":"");return B.length===0?T+"{}":h?T+"{"+Ch(B,h)+"}":T+"{ "+Ni.call(B,", ")+" }"}return String(e)};function wf(s,e,t){var i=(t.quoteStyle||e)==="double"?'"':"'";return i+s+i}function G0(s){return Ps.call(String(s),/"/g,""")}function Sh(s){return Gs(s)==="[object Array]"&&(!It||!(typeof s=="object"&&It in s))}function H0(s){return Gs(s)==="[object Date]"&&(!It||!(typeof s=="object"&&It in s))}function eu(s){return Gs(s)==="[object RegExp]"&&(!It||!(typeof s=="object"&&It in s))}function V0(s){return Gs(s)==="[object Error]"&&(!It||!(typeof s=="object"&&It in s))}function W0(s){return Gs(s)==="[object String]"&&(!It||!(typeof s=="object"&&It in s))}function z0(s){return Gs(s)==="[object Number]"&&(!It||!(typeof s=="object"&&It in s))}function Y0(s){return Gs(s)==="[object Boolean]"&&(!It||!(typeof s=="object"&&It in s))}function xf(s){if(sn)return s&&typeof s=="object"&&s instanceof Symbol;if(typeof s=="symbol")return!0;if(!s||typeof s!="object"||!_h)return!1;try{return _h.call(s),!0}catch{}return!1}function j0(s){if(!s||typeof s!="object"||!Eh)return!1;try{return Eh.call(s),!0}catch{}return!1}var X0=Object.prototype.hasOwnProperty||function(s){return s in this};function _s(s,e){return X0.call(s,e)}function Gs(s){return L0.call(s)}function K0(s){if(s.name)return s.name;var e=O0.call(D0.call(s),/^function\s*([\w$]+)/);return e?e[1]:null}function Ef(s,e){if(s.indexOf)return s.indexOf(e);for(var t=0,i=s.length;te.maxStringLength){var t=s.length-e.maxStringLength,i="... "+t+" more character"+(t>1?"s":"");return _f(Fc.call(s,0,e.maxStringLength),e)+i}var r=Ps.call(Ps.call(s,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,tv);return wf(r,"single",e)}function tv(s){var e=s.charCodeAt(0),t={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return t?"\\"+t:"\\x"+(e<16?"0":"")+F0.call(e.toString(16))}function En(s){return"Object("+s+")"}function Tl(s){return s+" { ? }"}function tu(s,e,t,i){var r=i?Ch(t,i):Ni.call(t,", ");return s+" ("+e+") {"+r+"}"}function iv(s){for(var e=0;e=0)return!1;return!0}function sv(s,e){var t;if(s.indent===" ")t=" ";else if(typeof s.indent=="number"&&s.indent>0)t=Ni.call(Array(s.indent+1)," ");else return null;return{base:t,prev:Ni.call(Array(e+1),t)}}function Ch(s,e){if(s.length===0)return"";var t=` `+e.prev+e.base;return t+Ni.call(s,","+t)+` `+e.prev}function xa(s,e){var t=Sh(s),i=[];if(t){i.length=s.length;for(var r=0;r1;){var t=e.pop(),i=t.obj[t.prop];if(sr(i)){for(var r=[],n=0;n=Ml?a.slice(l,l+Ml):a,u=[],h=0;h=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122||n===vv.RFC1738&&(d===40||d===41)){u[u.length]=c.charAt(h);continue}if(d<128){u[u.length]=ki[d];continue}if(d<2048){u[u.length]=ki[192|d>>6]+ki[128|d&63];continue}if(d<55296||d>=57344){u[u.length]=ki[224|d>>12]+ki[128|d>>6&63]+ki[128|d&63];continue}h+=1,d=65536+((d&1023)<<10|c.charCodeAt(h)&1023),u[u.length]=ki[240|d>>18]+ki[128|d>>12&63]+ki[128|d>>6&63]+ki[128|d&63]}o+=u.join("")}return o},_v=function(e){for(var t=[{obj:{o:e},prop:"o"}],i=[],r=0;r"u"&&(_=0)}if(typeof u=="function"?A=u(t,A):A instanceof Date?A=p(A):i==="comma"&&Oi(A)&&(A=no.maybeMap(A,function(H){return H instanceof Date?p(H):H})),A===null){if(a)return c&&!g?c(t,mt.encoder,y,"key",m):t;A=""}if(Pv(A)||no.isBuffer(A)){if(c){var P=g?t:c(t,mt.encoder,y,"key",m);return[f(P)+"="+f(c(A,mt.encoder,y,"value",m))]}return[f(t)+"="+f(String(A))]}var M=[];if(typeof A>"u")return M;var U;if(i==="comma"&&Oi(A))g&&c&&(A=no.maybeMap(A,c)),U=[{value:A.length>0?A.join(",")||null:void 0}];else if(Oi(u))U=u;else{var F=Object.keys(A);U=h?F.sort(h):F}var T=l?t.replace(/\./g,"%2E"):t,S=r&&Oi(A)&&A.length===1?T+"[]":T;if(n&&Oi(A)&&A.length===0)return S+"[]";for(var x=0;x"u"?e.encodeDotInKeys===!0?!0:mt.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix=="boolean"?e.addQueryPrefix:mt.addQueryPrefix,allowDots:o,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:mt.allowEmptyArrays,arrayFormat:a,charset:t,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:mt.charsetSentinel,commaRoundTrip:e.commaRoundTrip,delimiter:typeof e.delimiter>"u"?mt.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:mt.encode,encodeDotInKeys:typeof e.encodeDotInKeys=="boolean"?e.encodeDotInKeys:mt.encodeDotInKeys,encoder:typeof e.encoder=="function"?e.encoder:mt.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:mt.encodeValuesOnly,filter:n,format:i,formatter:r,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:mt.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:mt.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:mt.strictNullHandling}},Dv=function(s,e){var t=s,i=Lv(e),r,n;typeof i.filter=="function"?(n=i.filter,t=n("",t)):Oi(i.filter)&&(n=i.filter,r=n);var a=[];if(typeof t!="object"||t===null)return"";var o=kf[i.arrayFormat],l=o==="comma"&&i.commaRoundTrip;r||(r=Object.keys(t)),i.sort&&r.sort(i.sort);for(var c=Mf(),u=0;u0?p+d:""},rn=Cf,Mh=Object.prototype.hasOwnProperty,Ov=Array.isArray,dt={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:rn.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1},Fv=function(s){return s.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(parseInt(t,10))})},If=function(s,e){return s&&typeof s=="string"&&e.comma&&s.indexOf(",")>-1?s.split(","):s},Nv="utf8=%26%2310003%3B",Uv="utf8=%E2%9C%93",Gv=function(e,t){var i={__proto__:null},r=t.ignoreQueryPrefix?e.replace(/^\?/,""):e;r=r.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var n=t.parameterLimit===1/0?void 0:t.parameterLimit,a=r.split(t.delimiter,n),o=-1,l,c=t.charset;if(t.charsetSentinel)for(l=0;l-1&&(m=Ov(m)?[m]:m);var f=Mh.call(i,p);f&&t.duplicates==="combine"?i[p]=rn.combine(i[p],m):(!f||t.duplicates==="last")&&(i[p]=m)}return i},Hv=function(s,e,t,i){for(var r=i?e:If(e,t),n=s.length-1;n>=0;--n){var a,o=s[n];if(o==="[]"&&t.parseArrays)a=t.allowEmptyArrays&&(r===""||t.strictNullHandling&&r===null)?[]:[].concat(r);else{a=t.plainObjects?Object.create(null):{};var l=o.charAt(0)==="["&&o.charAt(o.length-1)==="]"?o.slice(1,-1):o,c=t.decodeDotInKeys?l.replace(/%2E/g,"."):l,u=parseInt(c,10);!t.parseArrays&&c===""?a={0:r}:!isNaN(u)&&o!==c&&String(u)===c&&u>=0&&t.parseArrays&&u<=t.arrayLimit?(a=[],a[u]=r):c!=="__proto__"&&(a[c]=r)}r=a}return r},Vv=function(e,t,i,r){if(e){var n=i.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/,o=/(\[[^[\]]*])/g,l=i.depth>0&&a.exec(n),c=l?n.slice(0,l.index):n,u=[];if(c){if(!i.plainObjects&&Mh.call(Object.prototype,c)&&!i.allowPrototypes)return;u.push(c)}for(var h=0;i.depth>0&&(l=o.exec(n))!==null&&h"u"?dt.charset:e.charset,i=typeof e.duplicates>"u"?dt.duplicates:e.duplicates;if(i!=="combine"&&i!=="first"&&i!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var r=typeof e.allowDots>"u"?e.decodeDotInKeys===!0?!0:dt.allowDots:!!e.allowDots;return{allowDots:r,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:dt.allowEmptyArrays,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:dt.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:dt.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:dt.arrayLimit,charset:t,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:dt.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:dt.comma,decodeDotInKeys:typeof e.decodeDotInKeys=="boolean"?e.decodeDotInKeys:dt.decodeDotInKeys,decoder:typeof e.decoder=="function"?e.decoder:dt.decoder,delimiter:typeof e.delimiter=="string"||rn.isRegExp(e.delimiter)?e.delimiter:dt.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:dt.depth,duplicates:i,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:dt.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:dt.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:dt.plainObjects,strictDepth:typeof e.strictDepth=="boolean"?!!e.strictDepth:dt.strictDepth,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:dt.strictNullHandling}},zv=function(s,e){var t=Wv(e);if(s===""||s===null||typeof s>"u")return t.plainObjects?Object.create(null):{};for(var i=typeof s=="string"?Gv(s,t):s,r=t.plainObjects?Object.create(null):{},n=Object.keys(i),a=0;a",'"',"`"," ","\r",` @@ -7,9 +7,9 @@ Deprecated since v${s}`):(i=i.split(` `).splice(t).join(` `),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${e} Deprecated since v${s}`),console.warn(i),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${e} -Deprecated since v${s}`),console.warn(i))),au[e]=!0}function pi(s){if(typeof s!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(s)}`)}function _n(s){return s.split("?")[0].split("#")[0]}function nA(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function aA(s,e,t){return s.replace(new RegExp(nA(e),"g"),t)}function oA(s,e){let t="",i=0,r=-1,n=0,a=-1;for(let o=0;o<=s.length;++o){if(o2){const l=t.lastIndexOf("/");if(l!==t.length-1){l===-1?(t="",i=0):(t=t.slice(0,l),i=t.length-1-t.lastIndexOf("/")),r=o,n=0;continue}}else if(t.length===2||t.length===1){t="",i=0,r=o,n=0;continue}}e&&(t.length>0?t+="/..":t="..",i=2)}else t.length>0?t+=`/${s.slice(r+1,o)}`:t=s.slice(r+1,o),i=o-r-1;r=o,n=0}else a===46&&n!==-1?++n:n=-1}return t}const Et={toPosix(s){return aA(s,"\\","/")},isUrl(s){return/^https?:/.test(this.toPosix(s))},isDataUrl(s){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(s)},isBlobUrl(s){return s.startsWith("blob:")},hasProtocol(s){return/^[^/:]+:/.test(this.toPosix(s))},getProtocol(s){pi(s),s=this.toPosix(s);const e=/^file:\/\/\//.exec(s);if(e)return e[0];const t=/^[^/:]+:\/{0,2}/.exec(s);return t?t[0]:""},toAbsolute(s,e,t){if(pi(s),this.isDataUrl(s)||this.isBlobUrl(s))return s;const i=_n(this.toPosix(e??de.ADAPTER.getBaseUrl())),r=_n(this.toPosix(t??this.rootname(i)));return s=this.toPosix(s),s.startsWith("/")?Et.join(r,s.slice(1)):this.isAbsolute(s)?s:this.join(i,s)},normalize(s){if(pi(s),s.length===0)return".";if(this.isDataUrl(s)||this.isBlobUrl(s))return s;s=this.toPosix(s);let e="";const t=s.startsWith("/");this.hasProtocol(s)&&(e=this.rootname(s),s=s.slice(e.length));const i=s.endsWith("/");return s=oA(s,!1),s.length>0&&i&&(s+="/"),t?`/${s}`:e+s},isAbsolute(s){return pi(s),s=this.toPosix(s),this.hasProtocol(s)?!0:s.startsWith("/")},join(...s){if(s.length===0)return".";let e;for(let t=0;t0)if(e===void 0)e=i;else{const r=s[t-1]??"";this.joinExtensions.includes(this.extname(r).toLowerCase())?e+=`/../${i}`:e+=`/${i}`}}return e===void 0?".":this.normalize(e)},dirname(s){if(pi(s),s.length===0)return".";s=this.toPosix(s);let e=s.charCodeAt(0);const t=e===47;let i=-1,r=!0;const n=this.getProtocol(s),a=s;s=s.slice(n.length);for(let o=s.length-1;o>=1;--o)if(e=s.charCodeAt(o),e===47){if(!r){i=o;break}}else r=!1;return i===-1?t?"/":this.isUrl(a)?n+s:n:t&&i===1?"//":n+s.slice(0,i)},rootname(s){pi(s),s=this.toPosix(s);let e="";if(s.startsWith("/")?e="/":e=this.getProtocol(s),this.isUrl(s)){const t=s.indexOf("/",e.length);t!==-1?e=s.slice(0,t):e=s,e.endsWith("/")||(e+="/")}return e},basename(s,e){pi(s),e&&pi(e),s=_n(this.toPosix(s));let t=0,i=-1,r=!0,n;if(e!==void 0&&e.length>0&&e.length<=s.length){if(e.length===s.length&&e===s)return"";let a=e.length-1,o=-1;for(n=s.length-1;n>=0;--n){const l=s.charCodeAt(n);if(l===47){if(!r){t=n+1;break}}else o===-1&&(r=!1,o=n+1),a>=0&&(l===e.charCodeAt(a)?--a===-1&&(i=n):(a=-1,i=o))}return t===i?i=o:i===-1&&(i=s.length),s.slice(t,i)}for(n=s.length-1;n>=0;--n)if(s.charCodeAt(n)===47){if(!r){t=n+1;break}}else i===-1&&(r=!1,i=n+1);return i===-1?"":s.slice(t,i)},extname(s){pi(s),s=_n(this.toPosix(s));let e=-1,t=0,i=-1,r=!0,n=0;for(let a=s.length-1;a>=0;--a){const o=s.charCodeAt(a);if(o===47){if(!r){t=a+1;break}continue}i===-1&&(r=!1,i=a+1),o===46?e===-1?e=a:n!==1&&(n=1):e!==-1&&(n=-1)}return e===-1||i===-1||n===0||n===1&&e===i-1&&e===t+1?"":s.slice(e,i)},parse(s){pi(s);const e={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return e;s=_n(this.toPosix(s));let t=s.charCodeAt(0);const i=this.isAbsolute(s);let r;e.root=this.rootname(s),i||this.hasProtocol(s)?r=1:r=0;let n=-1,a=0,o=-1,l=!0,c=s.length-1,u=0;for(;c>=r;--c){if(t=s.charCodeAt(c),t===47){if(!l){a=c+1;break}continue}o===-1&&(l=!1,o=c+1),t===46?n===-1?n=c:u!==1&&(u=1):n!==-1&&(u=-1)}return n===-1||o===-1||u===0||u===1&&n===o-1&&n===a+1?o!==-1&&(a===0&&i?e.base=e.name=s.slice(1,o):e.base=e.name=s.slice(a,o)):(a===0&&i?(e.name=s.slice(1,n),e.base=s.slice(1,o)):(e.name=s.slice(a,n),e.base=s.slice(a,o)),e.ext=s.slice(n,o)),e.dir=this.dirname(s),e},sep:"/",delimiter:":",joinExtensions:[".html"]};let Bl;async function lA(){return Bl??(Bl=(async()=>{const s=document.createElement("canvas").getContext("webgl");if(!s)return Ut.UNPACK;const e=await new Promise(n=>{const a=document.createElement("video");a.onloadeddata=()=>n(a),a.onerror=()=>n(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!e)return Ut.UNPACK;const t=s.createTexture();s.bindTexture(s.TEXTURE_2D,t);const i=s.createFramebuffer();s.bindFramebuffer(s.FRAMEBUFFER,i),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,e);const r=new Uint8Array(4);return s.readPixels(0,0,1,1,s.RGBA,s.UNSIGNED_BYTE,r),s.deleteFramebuffer(i),s.deleteTexture(t),s.getExtension("WEBGL_lose_context")?.loseContext(),r[0]<=r[3]?Ut.PMA:Ut.UNPACK})()),Bl}let Il;function hA(){return typeof Il>"u"&&(Il=function(){const s={stencil:!0,failIfMajorPerformanceCaveat:de.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!de.ADAPTER.getWebGLRenderingContext())return!1;const e=de.ADAPTER.createCanvas();let t=e.getContext("webgl",s)||e.getContext("experimental-webgl",s);const i=!!t?.getContextAttributes()?.stencil;if(t){const r=t.getExtension("WEBGL_lose_context");r&&r.loseContext()}return t=null,i}catch{return!1}}()),Il}var cA={grad:.9,turn:360,rad:360/(2*Math.PI)},Zi=function(s){return typeof s=="string"?s.length>0:typeof s=="number"},bt=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*s)/t+0},oi=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),s>t?t:s>e?s:e},Pf=function(s){return(s=isFinite(s)?s%360:0)>0?s:s+360},ou=function(s){return{r:oi(s.r,0,255),g:oi(s.g,0,255),b:oi(s.b,0,255),a:oi(s.a)}},Pl=function(s){return{r:bt(s.r),g:bt(s.g),b:bt(s.b),a:bt(s.a,3)}},dA=/^#([0-9a-f]{3,8})$/i,Ta=function(s){var e=s.toString(16);return e.length<2?"0"+e:e},Rf=function(s){var e=s.r,t=s.g,i=s.b,r=s.a,n=Math.max(e,t,i),a=n-Math.min(e,t,i),o=a?n===e?(t-i)/a:n===t?2+(i-e)/a:4+(e-t)/a:0;return{h:60*(o<0?o+6:o),s:n?a/n*100:0,v:n/255*100,a:r}},Lf=function(s){var e=s.h,t=s.s,i=s.v,r=s.a;e=e/360*6,t/=100,i/=100;var n=Math.floor(e),a=i*(1-t),o=i*(1-(e-n)*t),l=i*(1-(1-e+n)*t),c=n%6;return{r:255*[i,o,a,a,l,i][c],g:255*[l,i,i,o,a,a][c],b:255*[a,a,l,i,i,o][c],a:r}},lu=function(s){return{h:Pf(s.h),s:oi(s.s,0,100),l:oi(s.l,0,100),a:oi(s.a)}},hu=function(s){return{h:bt(s.h),s:bt(s.s),l:bt(s.l),a:bt(s.a,3)}},cu=function(s){return Lf((t=(e=s).s,{h:e.h,s:(t*=((i=e.l)<50?i:100-i)/100)>0?2*t/(i+t)*100:0,v:i+t,a:e.a}));var e,t,i},Xn=function(s){return{h:(e=Rf(s)).h,s:(r=(200-(t=e.s))*(i=e.v)/100)>0&&r<200?t*i/100/(r<=100?r:200-r)*100:0,l:r/2,a:e.a};var e,t,i,r},uA=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,pA=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,fA=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,mA=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ph={string:[[function(s){var e=dA.exec(s);return e?(s=e[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?bt(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?bt(parseInt(s.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(s){var e=fA.exec(s)||mA.exec(s);return e?e[2]!==e[4]||e[4]!==e[6]?null:ou({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(s){var e=uA.exec(s)||pA.exec(s);if(!e)return null;var t,i,r=lu({h:(t=e[1],i=e[2],i===void 0&&(i="deg"),Number(t)*(cA[i]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return cu(r)},"hsl"]],object:[[function(s){var e=s.r,t=s.g,i=s.b,r=s.a,n=r===void 0?1:r;return Zi(e)&&Zi(t)&&Zi(i)?ou({r:Number(e),g:Number(t),b:Number(i),a:Number(n)}):null},"rgb"],[function(s){var e=s.h,t=s.s,i=s.l,r=s.a,n=r===void 0?1:r;if(!Zi(e)||!Zi(t)||!Zi(i))return null;var a=lu({h:Number(e),s:Number(t),l:Number(i),a:Number(n)});return cu(a)},"hsl"],[function(s){var e=s.h,t=s.s,i=s.v,r=s.a,n=r===void 0?1:r;if(!Zi(e)||!Zi(t)||!Zi(i))return null;var a=function(o){return{h:Pf(o.h),s:oi(o.s,0,100),v:oi(o.v,0,100),a:oi(o.a)}}({h:Number(e),s:Number(t),v:Number(i),a:Number(n)});return Lf(a)},"hsv"]]},du=function(s,e){for(var t=0;t=.5},s.prototype.toHex=function(){return e=Pl(this.rgba),t=e.r,i=e.g,r=e.b,a=(n=e.a)<1?Ta(bt(255*n)):"","#"+Ta(t)+Ta(i)+Ta(r)+a;var e,t,i,r,n,a},s.prototype.toRgb=function(){return Pl(this.rgba)},s.prototype.toRgbString=function(){return e=Pl(this.rgba),t=e.r,i=e.g,r=e.b,(n=e.a)<1?"rgba("+t+", "+i+", "+r+", "+n+")":"rgb("+t+", "+i+", "+r+")";var e,t,i,r,n},s.prototype.toHsl=function(){return hu(Xn(this.rgba))},s.prototype.toHslString=function(){return e=hu(Xn(this.rgba)),t=e.h,i=e.s,r=e.l,(n=e.a)<1?"hsla("+t+", "+i+"%, "+r+"%, "+n+")":"hsl("+t+", "+i+"%, "+r+"%)";var e,t,i,r,n},s.prototype.toHsv=function(){return e=Rf(this.rgba),{h:bt(e.h),s:bt(e.s),v:bt(e.v),a:bt(e.a,3)};var e},s.prototype.invert=function(){return Bi({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},s.prototype.saturate=function(e){return e===void 0&&(e=.1),Bi(Rl(this.rgba,e))},s.prototype.desaturate=function(e){return e===void 0&&(e=.1),Bi(Rl(this.rgba,-e))},s.prototype.grayscale=function(){return Bi(Rl(this.rgba,-1))},s.prototype.lighten=function(e){return e===void 0&&(e=.1),Bi(uu(this.rgba,e))},s.prototype.darken=function(e){return e===void 0&&(e=.1),Bi(uu(this.rgba,-e))},s.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},s.prototype.alpha=function(e){return typeof e=="number"?Bi({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):bt(this.rgba.a,3);var t},s.prototype.hue=function(e){var t=Xn(this.rgba);return typeof e=="number"?Bi({h:e,s:t.s,l:t.l,a:t.a}):bt(t.h)},s.prototype.isEqual=function(e){return this.toHex()===Bi(e).toHex()},s}(),Bi=function(s){return s instanceof Rh?s:new Rh(s)},pu=[],yA=function(s){s.forEach(function(e){pu.indexOf(e)<0&&(e(Rh,Ph),pu.push(e))})};function vA(s,e){var t={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"},i={};for(var r in t)i[t[r]]=r;var n={};s.prototype.toName=function(a){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,l,c=i[this.toHex()];if(c)return c;if(a?.closest){var u=this.toRgb(),h=1/0,d="black";if(!n.length)for(var p in t)n[p]=new s(t[p]).toRgb();for(var m in t){var f=(o=u,l=n[m],Math.pow(o.r-l.r,2)+Math.pow(o.g-l.g,2)+Math.pow(o.b-l.b,2));fr===t[n]);if(e!==null&&t!==null){const r=Object.keys(e),n=Object.keys(t);return r.length!==n.length?!1:r.every(a=>e[a]===t[a])}return e===t}toRgba(){const[e,t,i,r]=this._components;return{r:e,g:t,b:i,a:r}}toRgb(){const[e,t,i]=this._components;return{r:e,g:t,b:i}}toRgbaString(){const[e,t,i]=this.toUint8RgbArray();return`rgba(${e},${t},${i},${this.alpha})`}toUint8RgbArray(e){const[t,i,r]=this._components;return e=e??[],e[0]=Math.round(t*255),e[1]=Math.round(i*255),e[2]=Math.round(r*255),e}toRgbArray(e){e=e??[];const[t,i,r]=this._components;return e[0]=t,e[1]=i,e[2]=r,e}toNumber(){return this._int}toLittleEndianNumber(){const e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){const[t,i,r,n]=ao.temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=i,this._components[2]*=r,this._components[3]*=n,this.refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this.refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let i=this._int>>16&255,r=this._int>>8&255,n=this._int&255;return t&&(i=i*e+.5|0,r=r*e+.5|0,n=n*e+.5|0),(e*255<<24)+(i<<16)+(r<<8)+n}toHex(){const e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(e){return this._components[3]=this._clamp(e),this}round(e){const[t,i,r]=this._components;return this._components[0]=Math.round(t*e)/e,this._components[1]=Math.round(i*e)/e,this._components[2]=Math.round(r*e)/e,this.refreshInt(),this._value=null,this}toArray(e){e=e??[];const[t,i,r,n]=this._components;return e[0]=t,e[1]=i,e[2]=r,e[3]=n,e}normalize(e){let t,i,r,n;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){const a=e;t=(a>>16&255)/255,i=(a>>8&255)/255,r=(a&255)/255,n=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,i,r,n=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,i,r,n=255]=e,t/=255,i/=255,r/=255,n/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){const o=ao.HEX_PATTERN.exec(e);o&&(e=`#${o[2]}`)}const a=Bi(e);a.isValid()&&({r:t,g:i,b:r,a:n}=a.rgba,t/=255,i/=255,r/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=i,this._components[2]=r,this._components[3]=n,this.refreshInt();else throw new Error(`Unable to convert color ${e}`)}refreshInt(){this._clamp(this._components);const[e,t,i]=this._components;this._int=(e*255<<16)+(t*255<<8)+(i*255|0)}_clamp(e,t=0,i=1){return typeof e=="number"?Math.min(Math.max(e,t),i):(e.forEach((r,n)=>{e[n]=Math.min(Math.max(r,t),i)}),e)}};Lr.shared=new Lr,Lr.temp=new Lr,Lr.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Ze=Lr;function AA(s){return Ne("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),Ze.shared.setValue(s).toHex()}function bA(s){return Ne("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),Ze.shared.setValue(s).toNumber()}function wA(){const s=[],e=[];for(let i=0;i<32;i++)s[i]=i,e[i]=i;s[Se.NORMAL_NPM]=Se.NORMAL,s[Se.ADD_NPM]=Se.ADD,s[Se.SCREEN_NPM]=Se.SCREEN,e[Se.NORMAL]=Se.NORMAL_NPM,e[Se.ADD]=Se.ADD_NPM,e[Se.SCREEN]=Se.SCREEN_NPM;const t=[];return t.push(e),t.push(s),t}const Df=wA();function Of(s,e){return Df[e?1:0][s]}function xA(s,e=null){const t=s*6;if(e=e||new Uint16Array(t),e.length!==t)throw new Error(`Out buffer length is incorrect, got ${e.length} and expected ${t}`);for(let i=0,r=0;i>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s+1}function fu(s){return!(s&s-1)&&!!s}function mu(s){let e=(s>65535?1:0)<<4;s>>>=e;let t=(s>255?1:0)<<3;return s>>>=t,e|=t,t=(s>15?1:0)<<2,s>>>=t,e|=t,t=(s>3?1:0)<<1,s>>>=t,e|=t,e|s>>1}function Qr(s,e,t){const i=s.length;let r;if(e>=i||t===0)return;t=e+t>i?i-e:t;const n=i-t;for(r=e;r(s.Renderer="renderer",s.Application="application",s.RendererSystem="renderer-webgl-system",s.RendererPlugin="renderer-webgl-plugin",s.CanvasRendererSystem="renderer-canvas-system",s.CanvasRendererPlugin="renderer-canvas-plugin",s.Asset="asset",s.LoadParser="load-parser",s.ResolveParser="resolve-parser",s.CacheParser="cache-parser",s.DetectionParser="detection-parser",s))(ae||{});const Dh=s=>{if(typeof s=="function"||typeof s=="object"&&s.extension){if(!s.extension)throw new Error("Extension class must have an extension object");s={...typeof s.extension!="object"?{type:s.extension}:s.extension,ref:s}}if(typeof s=="object")s={...s};else throw new Error("Invalid extension type");return typeof s.type=="string"&&(s.type=[s.type]),s},bu=(s,e)=>Dh(s).priority??e,me={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...s){return s.map(Dh).forEach(e=>{e.type.forEach(t=>this._removeHandlers[t]?.(e))}),this},add(...s){return s.map(Dh).forEach(e=>{e.type.forEach(t=>{const i=this._addHandlers,r=this._queue;i[t]?i[t]?.(e):(r[t]=r[t]||[],r[t]?.push(e))})}),this},handle(s,e,t){const i=this._addHandlers,r=this._removeHandlers;if(i[s]||r[s])throw new Error(`Extension type ${s} already has a handler`);i[s]=e,r[s]=t;const n=this._queue;return n[s]&&(n[s]?.forEach(a=>e(a)),delete n[s]),this},handleByMap(s,e){return this.handle(s,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByList(s,e,t=-1){return this.handle(s,i=>{e.includes(i.ref)||(e.push(i.ref),e.sort((r,n)=>bu(n,t)-bu(r,t)))},i=>{const r=e.indexOf(i.ref);r!==-1&&e.splice(r,1)})}};class Oh{constructor(e){typeof e=="number"?this.rawBinaryData=new ArrayBuffer(e):e instanceof Uint8Array?this.rawBinaryData=e.buffer:this.rawBinaryData=e,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(e){return this[`${e}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${e} isn't a valid view type`)}}}const MA=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(` +Deprecated since v${s}`),console.warn(i))),au[e]=!0}function pi(s){if(typeof s!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(s)}`)}function _n(s){return s.split("?")[0].split("#")[0]}function nA(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function aA(s,e,t){return s.replace(new RegExp(nA(e),"g"),t)}function oA(s,e){let t="",i=0,r=-1,n=0,a=-1;for(let o=0;o<=s.length;++o){if(o2){const l=t.lastIndexOf("/");if(l!==t.length-1){l===-1?(t="",i=0):(t=t.slice(0,l),i=t.length-1-t.lastIndexOf("/")),r=o,n=0;continue}}else if(t.length===2||t.length===1){t="",i=0,r=o,n=0;continue}}e&&(t.length>0?t+="/..":t="..",i=2)}else t.length>0?t+=`/${s.slice(r+1,o)}`:t=s.slice(r+1,o),i=o-r-1;r=o,n=0}else a===46&&n!==-1?++n:n=-1}return t}const Et={toPosix(s){return aA(s,"\\","/")},isUrl(s){return/^https?:/.test(this.toPosix(s))},isDataUrl(s){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(s)},isBlobUrl(s){return s.startsWith("blob:")},hasProtocol(s){return/^[^/:]+:/.test(this.toPosix(s))},getProtocol(s){pi(s),s=this.toPosix(s);const e=/^file:\/\/\//.exec(s);if(e)return e[0];const t=/^[^/:]+:\/{0,2}/.exec(s);return t?t[0]:""},toAbsolute(s,e,t){if(pi(s),this.isDataUrl(s)||this.isBlobUrl(s))return s;const i=_n(this.toPosix(e??de.ADAPTER.getBaseUrl())),r=_n(this.toPosix(t??this.rootname(i)));return s=this.toPosix(s),s.startsWith("/")?Et.join(r,s.slice(1)):this.isAbsolute(s)?s:this.join(i,s)},normalize(s){if(pi(s),s.length===0)return".";if(this.isDataUrl(s)||this.isBlobUrl(s))return s;s=this.toPosix(s);let e="";const t=s.startsWith("/");this.hasProtocol(s)&&(e=this.rootname(s),s=s.slice(e.length));const i=s.endsWith("/");return s=oA(s,!1),s.length>0&&i&&(s+="/"),t?`/${s}`:e+s},isAbsolute(s){return pi(s),s=this.toPosix(s),this.hasProtocol(s)?!0:s.startsWith("/")},join(...s){if(s.length===0)return".";let e;for(let t=0;t0)if(e===void 0)e=i;else{const r=s[t-1]??"";this.joinExtensions.includes(this.extname(r).toLowerCase())?e+=`/../${i}`:e+=`/${i}`}}return e===void 0?".":this.normalize(e)},dirname(s){if(pi(s),s.length===0)return".";s=this.toPosix(s);let e=s.charCodeAt(0);const t=e===47;let i=-1,r=!0;const n=this.getProtocol(s),a=s;s=s.slice(n.length);for(let o=s.length-1;o>=1;--o)if(e=s.charCodeAt(o),e===47){if(!r){i=o;break}}else r=!1;return i===-1?t?"/":this.isUrl(a)?n+s:n:t&&i===1?"//":n+s.slice(0,i)},rootname(s){pi(s),s=this.toPosix(s);let e="";if(s.startsWith("/")?e="/":e=this.getProtocol(s),this.isUrl(s)){const t=s.indexOf("/",e.length);t!==-1?e=s.slice(0,t):e=s,e.endsWith("/")||(e+="/")}return e},basename(s,e){pi(s),e&&pi(e),s=_n(this.toPosix(s));let t=0,i=-1,r=!0,n;if(e!==void 0&&e.length>0&&e.length<=s.length){if(e.length===s.length&&e===s)return"";let a=e.length-1,o=-1;for(n=s.length-1;n>=0;--n){const l=s.charCodeAt(n);if(l===47){if(!r){t=n+1;break}}else o===-1&&(r=!1,o=n+1),a>=0&&(l===e.charCodeAt(a)?--a===-1&&(i=n):(a=-1,i=o))}return t===i?i=o:i===-1&&(i=s.length),s.slice(t,i)}for(n=s.length-1;n>=0;--n)if(s.charCodeAt(n)===47){if(!r){t=n+1;break}}else i===-1&&(r=!1,i=n+1);return i===-1?"":s.slice(t,i)},extname(s){pi(s),s=_n(this.toPosix(s));let e=-1,t=0,i=-1,r=!0,n=0;for(let a=s.length-1;a>=0;--a){const o=s.charCodeAt(a);if(o===47){if(!r){t=a+1;break}continue}i===-1&&(r=!1,i=a+1),o===46?e===-1?e=a:n!==1&&(n=1):e!==-1&&(n=-1)}return e===-1||i===-1||n===0||n===1&&e===i-1&&e===t+1?"":s.slice(e,i)},parse(s){pi(s);const e={root:"",dir:"",base:"",ext:"",name:""};if(s.length===0)return e;s=_n(this.toPosix(s));let t=s.charCodeAt(0);const i=this.isAbsolute(s);let r;e.root=this.rootname(s),i||this.hasProtocol(s)?r=1:r=0;let n=-1,a=0,o=-1,l=!0,c=s.length-1,u=0;for(;c>=r;--c){if(t=s.charCodeAt(c),t===47){if(!l){a=c+1;break}continue}o===-1&&(l=!1,o=c+1),t===46?n===-1?n=c:u!==1&&(u=1):n!==-1&&(u=-1)}return n===-1||o===-1||u===0||u===1&&n===o-1&&n===a+1?o!==-1&&(a===0&&i?e.base=e.name=s.slice(1,o):e.base=e.name=s.slice(a,o)):(a===0&&i?(e.name=s.slice(1,n),e.base=s.slice(1,o)):(e.name=s.slice(a,n),e.base=s.slice(a,o)),e.ext=s.slice(n,o)),e.dir=this.dirname(s),e},sep:"/",delimiter:":",joinExtensions:[".html"]};let Bl;async function lA(){return Bl??(Bl=(async()=>{const s=document.createElement("canvas").getContext("webgl");if(!s)return Gt.UNPACK;const e=await new Promise(n=>{const a=document.createElement("video");a.onloadeddata=()=>n(a),a.onerror=()=>n(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!e)return Gt.UNPACK;const t=s.createTexture();s.bindTexture(s.TEXTURE_2D,t);const i=s.createFramebuffer();s.bindFramebuffer(s.FRAMEBUFFER,i),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,e);const r=new Uint8Array(4);return s.readPixels(0,0,1,1,s.RGBA,s.UNSIGNED_BYTE,r),s.deleteFramebuffer(i),s.deleteTexture(t),s.getExtension("WEBGL_lose_context")?.loseContext(),r[0]<=r[3]?Gt.PMA:Gt.UNPACK})()),Bl}let Il;function hA(){return typeof Il>"u"&&(Il=function(){const s={stencil:!0,failIfMajorPerformanceCaveat:de.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!de.ADAPTER.getWebGLRenderingContext())return!1;const e=de.ADAPTER.createCanvas();let t=e.getContext("webgl",s)||e.getContext("experimental-webgl",s);const i=!!t?.getContextAttributes()?.stencil;if(t){const r=t.getExtension("WEBGL_lose_context");r&&r.loseContext()}return t=null,i}catch{return!1}}()),Il}var cA={grad:.9,turn:360,rad:360/(2*Math.PI)},Zi=function(s){return typeof s=="string"?s.length>0:typeof s=="number"},bt=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*s)/t+0},oi=function(s,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),s>t?t:s>e?s:e},Pf=function(s){return(s=isFinite(s)?s%360:0)>0?s:s+360},ou=function(s){return{r:oi(s.r,0,255),g:oi(s.g,0,255),b:oi(s.b,0,255),a:oi(s.a)}},Pl=function(s){return{r:bt(s.r),g:bt(s.g),b:bt(s.b),a:bt(s.a,3)}},dA=/^#([0-9a-f]{3,8})$/i,Ta=function(s){var e=s.toString(16);return e.length<2?"0"+e:e},Rf=function(s){var e=s.r,t=s.g,i=s.b,r=s.a,n=Math.max(e,t,i),a=n-Math.min(e,t,i),o=a?n===e?(t-i)/a:n===t?2+(i-e)/a:4+(e-t)/a:0;return{h:60*(o<0?o+6:o),s:n?a/n*100:0,v:n/255*100,a:r}},Lf=function(s){var e=s.h,t=s.s,i=s.v,r=s.a;e=e/360*6,t/=100,i/=100;var n=Math.floor(e),a=i*(1-t),o=i*(1-(e-n)*t),l=i*(1-(1-e+n)*t),c=n%6;return{r:255*[i,o,a,a,l,i][c],g:255*[l,i,i,o,a,a][c],b:255*[a,a,l,i,i,o][c],a:r}},lu=function(s){return{h:Pf(s.h),s:oi(s.s,0,100),l:oi(s.l,0,100),a:oi(s.a)}},hu=function(s){return{h:bt(s.h),s:bt(s.s),l:bt(s.l),a:bt(s.a,3)}},cu=function(s){return Lf((t=(e=s).s,{h:e.h,s:(t*=((i=e.l)<50?i:100-i)/100)>0?2*t/(i+t)*100:0,v:i+t,a:e.a}));var e,t,i},Xn=function(s){return{h:(e=Rf(s)).h,s:(r=(200-(t=e.s))*(i=e.v)/100)>0&&r<200?t*i/100/(r<=100?r:200-r)*100:0,l:r/2,a:e.a};var e,t,i,r},uA=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,pA=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,fA=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,mA=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ph={string:[[function(s){var e=dA.exec(s);return e?(s=e[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?bt(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?bt(parseInt(s.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(s){var e=fA.exec(s)||mA.exec(s);return e?e[2]!==e[4]||e[4]!==e[6]?null:ou({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(s){var e=uA.exec(s)||pA.exec(s);if(!e)return null;var t,i,r=lu({h:(t=e[1],i=e[2],i===void 0&&(i="deg"),Number(t)*(cA[i]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return cu(r)},"hsl"]],object:[[function(s){var e=s.r,t=s.g,i=s.b,r=s.a,n=r===void 0?1:r;return Zi(e)&&Zi(t)&&Zi(i)?ou({r:Number(e),g:Number(t),b:Number(i),a:Number(n)}):null},"rgb"],[function(s){var e=s.h,t=s.s,i=s.l,r=s.a,n=r===void 0?1:r;if(!Zi(e)||!Zi(t)||!Zi(i))return null;var a=lu({h:Number(e),s:Number(t),l:Number(i),a:Number(n)});return cu(a)},"hsl"],[function(s){var e=s.h,t=s.s,i=s.v,r=s.a,n=r===void 0?1:r;if(!Zi(e)||!Zi(t)||!Zi(i))return null;var a=function(o){return{h:Pf(o.h),s:oi(o.s,0,100),v:oi(o.v,0,100),a:oi(o.a)}}({h:Number(e),s:Number(t),v:Number(i),a:Number(n)});return Lf(a)},"hsv"]]},du=function(s,e){for(var t=0;t=.5},s.prototype.toHex=function(){return e=Pl(this.rgba),t=e.r,i=e.g,r=e.b,a=(n=e.a)<1?Ta(bt(255*n)):"","#"+Ta(t)+Ta(i)+Ta(r)+a;var e,t,i,r,n,a},s.prototype.toRgb=function(){return Pl(this.rgba)},s.prototype.toRgbString=function(){return e=Pl(this.rgba),t=e.r,i=e.g,r=e.b,(n=e.a)<1?"rgba("+t+", "+i+", "+r+", "+n+")":"rgb("+t+", "+i+", "+r+")";var e,t,i,r,n},s.prototype.toHsl=function(){return hu(Xn(this.rgba))},s.prototype.toHslString=function(){return e=hu(Xn(this.rgba)),t=e.h,i=e.s,r=e.l,(n=e.a)<1?"hsla("+t+", "+i+"%, "+r+"%, "+n+")":"hsl("+t+", "+i+"%, "+r+"%)";var e,t,i,r,n},s.prototype.toHsv=function(){return e=Rf(this.rgba),{h:bt(e.h),s:bt(e.s),v:bt(e.v),a:bt(e.a,3)};var e},s.prototype.invert=function(){return Bi({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},s.prototype.saturate=function(e){return e===void 0&&(e=.1),Bi(Rl(this.rgba,e))},s.prototype.desaturate=function(e){return e===void 0&&(e=.1),Bi(Rl(this.rgba,-e))},s.prototype.grayscale=function(){return Bi(Rl(this.rgba,-1))},s.prototype.lighten=function(e){return e===void 0&&(e=.1),Bi(uu(this.rgba,e))},s.prototype.darken=function(e){return e===void 0&&(e=.1),Bi(uu(this.rgba,-e))},s.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},s.prototype.alpha=function(e){return typeof e=="number"?Bi({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):bt(this.rgba.a,3);var t},s.prototype.hue=function(e){var t=Xn(this.rgba);return typeof e=="number"?Bi({h:e,s:t.s,l:t.l,a:t.a}):bt(t.h)},s.prototype.isEqual=function(e){return this.toHex()===Bi(e).toHex()},s}(),Bi=function(s){return s instanceof Rh?s:new Rh(s)},pu=[],yA=function(s){s.forEach(function(e){pu.indexOf(e)<0&&(e(Rh,Ph),pu.push(e))})};function vA(s,e){var t={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"},i={};for(var r in t)i[t[r]]=r;var n={};s.prototype.toName=function(a){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,l,c=i[this.toHex()];if(c)return c;if(a?.closest){var u=this.toRgb(),h=1/0,d="black";if(!n.length)for(var p in t)n[p]=new s(t[p]).toRgb();for(var m in t){var f=(o=u,l=n[m],Math.pow(o.r-l.r,2)+Math.pow(o.g-l.g,2)+Math.pow(o.b-l.b,2));fr===t[n]);if(e!==null&&t!==null){const r=Object.keys(e),n=Object.keys(t);return r.length!==n.length?!1:r.every(a=>e[a]===t[a])}return e===t}toRgba(){const[e,t,i,r]=this._components;return{r:e,g:t,b:i,a:r}}toRgb(){const[e,t,i]=this._components;return{r:e,g:t,b:i}}toRgbaString(){const[e,t,i]=this.toUint8RgbArray();return`rgba(${e},${t},${i},${this.alpha})`}toUint8RgbArray(e){const[t,i,r]=this._components;return e=e??[],e[0]=Math.round(t*255),e[1]=Math.round(i*255),e[2]=Math.round(r*255),e}toRgbArray(e){e=e??[];const[t,i,r]=this._components;return e[0]=t,e[1]=i,e[2]=r,e}toNumber(){return this._int}toLittleEndianNumber(){const e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){const[t,i,r,n]=ao.temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=i,this._components[2]*=r,this._components[3]*=n,this.refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this.refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let i=this._int>>16&255,r=this._int>>8&255,n=this._int&255;return t&&(i=i*e+.5|0,r=r*e+.5|0,n=n*e+.5|0),(e*255<<24)+(i<<16)+(r<<8)+n}toHex(){const e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(e){return this._components[3]=this._clamp(e),this}round(e){const[t,i,r]=this._components;return this._components[0]=Math.round(t*e)/e,this._components[1]=Math.round(i*e)/e,this._components[2]=Math.round(r*e)/e,this.refreshInt(),this._value=null,this}toArray(e){e=e??[];const[t,i,r,n]=this._components;return e[0]=t,e[1]=i,e[2]=r,e[3]=n,e}normalize(e){let t,i,r,n;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){const a=e;t=(a>>16&255)/255,i=(a>>8&255)/255,r=(a&255)/255,n=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,i,r,n=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,i,r,n=255]=e,t/=255,i/=255,r/=255,n/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){const o=ao.HEX_PATTERN.exec(e);o&&(e=`#${o[2]}`)}const a=Bi(e);a.isValid()&&({r:t,g:i,b:r,a:n}=a.rgba,t/=255,i/=255,r/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=i,this._components[2]=r,this._components[3]=n,this.refreshInt();else throw new Error(`Unable to convert color ${e}`)}refreshInt(){this._clamp(this._components);const[e,t,i]=this._components;this._int=(e*255<<16)+(t*255<<8)+(i*255|0)}_clamp(e,t=0,i=1){return typeof e=="number"?Math.min(Math.max(e,t),i):(e.forEach((r,n)=>{e[n]=Math.min(Math.max(r,t),i)}),e)}};Lr.shared=new Lr,Lr.temp=new Lr,Lr.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Ze=Lr;function AA(s){return Ne("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),Ze.shared.setValue(s).toHex()}function bA(s){return Ne("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),Ze.shared.setValue(s).toNumber()}function wA(){const s=[],e=[];for(let i=0;i<32;i++)s[i]=i,e[i]=i;s[Se.NORMAL_NPM]=Se.NORMAL,s[Se.ADD_NPM]=Se.ADD,s[Se.SCREEN_NPM]=Se.SCREEN,e[Se.NORMAL]=Se.NORMAL_NPM,e[Se.ADD]=Se.ADD_NPM,e[Se.SCREEN]=Se.SCREEN_NPM;const t=[];return t.push(e),t.push(s),t}const Df=wA();function Of(s,e){return Df[e?1:0][s]}function xA(s,e=null){const t=s*6;if(e=e||new Uint16Array(t),e.length!==t)throw new Error(`Out buffer length is incorrect, got ${e.length} and expected ${t}`);for(let i=0,r=0;i>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s+1}function fu(s){return!(s&s-1)&&!!s}function mu(s){let e=(s>65535?1:0)<<4;s>>>=e;let t=(s>255?1:0)<<3;return s>>>=t,e|=t,t=(s>15?1:0)<<2,s>>>=t,e|=t,t=(s>3?1:0)<<1,s>>>=t,e|=t,e|s>>1}function Qr(s,e,t){const i=s.length;let r;if(e>=i||t===0)return;t=e+t>i?i-e:t;const n=i-t;for(r=e;r(s.Renderer="renderer",s.Application="application",s.RendererSystem="renderer-webgl-system",s.RendererPlugin="renderer-webgl-plugin",s.CanvasRendererSystem="renderer-canvas-system",s.CanvasRendererPlugin="renderer-canvas-plugin",s.Asset="asset",s.LoadParser="load-parser",s.ResolveParser="resolve-parser",s.CacheParser="cache-parser",s.DetectionParser="detection-parser",s))(ae||{});const Dh=s=>{if(typeof s=="function"||typeof s=="object"&&s.extension){if(!s.extension)throw new Error("Extension class must have an extension object");s={...typeof s.extension!="object"?{type:s.extension}:s.extension,ref:s}}if(typeof s=="object")s={...s};else throw new Error("Invalid extension type");return typeof s.type=="string"&&(s.type=[s.type]),s},bu=(s,e)=>Dh(s).priority??e,me={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...s){return s.map(Dh).forEach(e=>{e.type.forEach(t=>this._removeHandlers[t]?.(e))}),this},add(...s){return s.map(Dh).forEach(e=>{e.type.forEach(t=>{const i=this._addHandlers,r=this._queue;i[t]?i[t]?.(e):(r[t]=r[t]||[],r[t]?.push(e))})}),this},handle(s,e,t){const i=this._addHandlers,r=this._removeHandlers;if(i[s]||r[s])throw new Error(`Extension type ${s} already has a handler`);i[s]=e,r[s]=t;const n=this._queue;return n[s]&&(n[s]?.forEach(a=>e(a)),delete n[s]),this},handleByMap(s,e){return this.handle(s,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByList(s,e,t=-1){return this.handle(s,i=>{e.includes(i.ref)||(e.push(i.ref),e.sort((r,n)=>bu(n,t)-bu(r,t)))},i=>{const r=e.indexOf(i.ref);r!==-1&&e.splice(r,1)})}};class Oh{constructor(e){typeof e=="number"?this.rawBinaryData=new ArrayBuffer(e):e instanceof Uint8Array?this.rawBinaryData=e.buffer:this.rawBinaryData=e,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(e){return this[`${e}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${e} isn't a valid view type`)}}}const MA=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(` `);function kA(s){let e="";for(let t=0;t0&&(e+=` -else `),t=0;--i){const r=Fh[i];if(r.test&&r.test(s,t))return new r(s,e)}throw new Error("Unrecognized source type to auto-detect Resource")}class Ei{constructor(e){this.items=[],this._name=e,this._aliasCount=0}emit(e,t,i,r,n,a,o,l){if(arguments.length>8)throw new Error("max arguments reached");const{name:c,items:u}=this;this._aliasCount++;for(let h=0,d=u.length;h0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(e){return e[this._name]&&(this.ensureNonAliasedItems(),this.remove(e),this.items.push(e)),this}remove(e){const t=this.items.indexOf(e);return t!==-1&&(this.ensureNonAliasedItems(),this.items.splice(t,1)),this}contains(e){return this.items.includes(e)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items.length=0,this._name=""}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(Ei.prototype,{dispatch:{value:Ei.prototype.emit},run:{value:Ei.prototype.emit}});class ta{constructor(e=0,t=0){this._width=e,this._height=t,this.destroyed=!1,this.internal=!1,this.onResize=new Ei("setRealSize"),this.onUpdate=new Ei("update"),this.onError=new Ei("onError")}bind(e){this.onResize.add(e),this.onUpdate.add(e),this.onError.add(e),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(e){this.onResize.remove(e),this.onUpdate.remove(e),this.onError.remove(e)}resize(e,t){(e!==this._width||t!==this._height)&&(this._width=e,this._height=t,this.onResize.emit(e,t))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(e,t,i){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(e,t){return!1}}class Ko extends ta{constructor(e,t){const{width:i,height:r}=t||{};if(!i||!r)throw new Error("BufferResource width or height invalid");super(i,r),this.data=e,this.unpackAlignment=t.unpackAlignment??4}upload(e,t,i){const r=e.gl;r.pixelStorei(r.UNPACK_ALIGNMENT,this.unpackAlignment),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.alphaMode===Ut.UNPACK);const n=t.realWidth,a=t.realHeight;return i.width===n&&i.height===a?r.texSubImage2D(t.target,0,0,0,n,a,t.format,i.type,this.data):(i.width=n,i.height=a,r.texImage2D(t.target,0,i.internalFormat,n,a,0,t.format,i.type,this.data)),!0}dispose(){this.data=null}static test(e){return e===null||e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}}const IA={scaleMode:is.NEAREST,alphaMode:Ut.NPM},Nh=class Dr extends mn{constructor(e=null,t=null){super(),t=Object.assign({},Dr.defaultOptions,t);const{alphaMode:i,mipmap:r,anisotropicLevel:n,scaleMode:a,width:o,height:l,wrapMode:c,format:u,type:h,target:d,resolution:p,resourceOptions:m}=t;e&&!(e instanceof ta)&&(e=Nf(e,m),e.internal=!0),this.resolution=p||de.RESOLUTION,this.width=Math.round((o||0)*this.resolution)/this.resolution,this.height=Math.round((l||0)*this.resolution)/this.resolution,this._mipmap=r,this.anisotropicLevel=n,this._wrapMode=c,this._scaleMode=a,this.format=u,this.type=h,this.target=d,this.alphaMode=i,this.uid=vr(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=o>0&&l>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource(e)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap(e){this._mipmap!==e&&(this._mipmap=e,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode(e){this._scaleMode!==e&&(this._scaleMode=e,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode(e){this._wrapMode!==e&&(this._wrapMode=e,this.dirtyStyleId++)}setStyle(e,t){let i;return e!==void 0&&e!==this.scaleMode&&(this.scaleMode=e,i=!0),t!==void 0&&t!==this.mipmap&&(this.mipmap=t,i=!0),i&&this.dirtyStyleId++,this}setSize(e,t,i){return i=i||this.resolution,this.setRealSize(e*i,t*i,i)}setRealSize(e,t,i){return this.resolution=i||this.resolution,this.width=Math.round(e)/this.resolution,this.height=Math.round(t)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=fu(this.realWidth)&&fu(this.realHeight)}setResolution(e){const t=this.resolution;return t===e?this:(this.resolution=e,this.valid&&(this.width=Math.round(this.width*t)/e,this.height=Math.round(this.height*t)/e,this.emit("update",this)),this._refreshPOT(),this)}setResource(e){if(this.resource===e)return this;if(this.resource)throw new Error("Resource can be set only once");return e.bind(this),this.resource=e,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError(e){this.emit("error",this,e)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete ys[this.cacheId],delete Ii[this.cacheId],this.cacheId=null),this.valid=!1,this.dispose(),Dr.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from(e,t,i=de.STRICT_TEXTURE_CACHE){const r=typeof e=="string";let n=null;if(r)n=e;else{if(!e._pixiId){const o=t?.pixiIdPrefix||"pixiid";e._pixiId=`${o}_${vr()}`}n=e._pixiId}let a=ys[n];if(r&&i&&!a)throw new Error(`The cacheId "${n}" does not exist in BaseTextureCache.`);return a||(a=new Dr(e,t),a.cacheId=n,Dr.addToCache(a,n)),a}static fromBuffer(e,t,i,r){e=e||new Float32Array(t*i*4);const n=new Ko(e,{width:t,height:i,...r?.resourceOptions});let a,o;return e instanceof Float32Array?(a=se.RGBA,o=we.FLOAT):e instanceof Int32Array?(a=se.RGBA_INTEGER,o=we.INT):e instanceof Uint32Array?(a=se.RGBA_INTEGER,o=we.UNSIGNED_INT):e instanceof Int16Array?(a=se.RGBA_INTEGER,o=we.SHORT):e instanceof Uint16Array?(a=se.RGBA_INTEGER,o=we.UNSIGNED_SHORT):e instanceof Int8Array?(a=se.RGBA,o=we.BYTE):(a=se.RGBA,o=we.UNSIGNED_BYTE),n.internal=!0,new Dr(n,Object.assign({},IA,{type:o,format:a},r))}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),ys[t]&&ys[t]!==e&&console.warn(`BaseTexture added to the cache with an id [${t}] that already had an entry`),ys[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=ys[e];if(t){const i=t.textureCacheIds.indexOf(e);return i>-1&&t.textureCacheIds.splice(i,1),delete ys[e],t}}else if(e?.textureCacheIds){for(let t=0;t1){for(let h=0;h(s[s.POLY=0]="POLY",s[s.RECT=1]="RECT",s[s.CIRC=2]="CIRC",s[s.ELIP=3]="ELIP",s[s.RREC=4]="RREC",s))(Ct||{});class We{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new We(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}}We.prototype.toString=function(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`};const Sa=[new We,new We,new We,new We];class Me{constructor(e=0,t=0,i=0,r=0){this.x=Number(e),this.y=Number(t),this.width=Number(i),this.height=Number(r),this.type=Ct.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new Me(0,0,0,0)}clone(){return new Me(this.x,this.y,this.width,this.height)}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e=this.y&&te.right?e.right:this.right)<=P)return!1;const M=this.ye.bottom?e.bottom:this.bottom)>M}const i=this.left,r=this.right,n=this.top,a=this.bottom;if(r<=i||a<=n)return!1;const o=Sa[0].set(e.left,e.top),l=Sa[1].set(e.left,e.bottom),c=Sa[2].set(e.right,e.top),u=Sa[3].set(e.right,e.bottom);if(c.x<=o.x||l.y<=o.y)return!1;const h=Math.sign(t.a*t.d-t.b*t.c);if(h===0||(t.apply(o,o),t.apply(l,l),t.apply(c,c),t.apply(u,u),Math.max(o.x,l.x,c.x,u.x)<=i||Math.min(o.x,l.x,c.x,u.x)>=r||Math.max(o.y,l.y,c.y,u.y)<=n||Math.min(o.y,l.y,c.y,u.y)>=a))return!1;const d=h*(l.y-o.y),p=h*(o.x-l.x),m=d*i+p*n,f=d*r+p*n,g=d*i+p*a,y=d*r+p*a;if(Math.max(m,f,g,y)<=d*o.x+p*o.y||Math.min(m,f,g,y)>=d*u.x+p*u.y)return!1;const b=h*(o.y-c.y),A=h*(c.x-o.x),v=b*i+A*n,_=b*r+A*n,C=b*i+A*a,B=b*r+A*a;return!(Math.max(v,_,C,B)<=b*o.x+A*o.y||Math.min(v,_,C,B)>=b*u.x+A*u.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),i=Math.min(this.x+this.width,e.x+e.width),r=Math.max(this.y,e.y),n=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(i-t,0),this.y=r,this.height=Math.max(n-r,0),this}ceil(e=1,t=.001){const i=Math.ceil((this.x+this.width-t)*e)/e,r=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=i-this.x,this.height=r-this.y,this}enlarge(e){const t=Math.min(this.x,e.x),i=Math.max(this.x+this.width,e.x+e.width),r=Math.min(this.y,e.y),n=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=i-t,this.y=r,this.height=n-r,this}}Me.prototype.toString=function(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class qo{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.radius=i,this.type=Ct.CIRC}clone(){return new qo(this.x,this.y,this.radius)}contains(e,t){if(this.radius<=0)return!1;const i=this.radius*this.radius;let r=this.x-e,n=this.y-t;return r*=r,n*=n,r+n<=i}getBounds(){return new Me(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}qo.prototype.toString=function(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`};class Qo{constructor(e=0,t=0,i=0,r=0){this.x=e,this.y=t,this.width=i,this.height=r,this.type=Ct.ELIP}clone(){return new Qo(this.x,this.y,this.width,this.height)}contains(e,t){if(this.width<=0||this.height<=0)return!1;let i=(e-this.x)/this.width,r=(t-this.y)/this.height;return i*=i,r*=r,i+r<=1}getBounds(){return new Me(this.x-this.width,this.y-this.height,this.width,this.height)}}Qo.prototype.toString=function(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class ur{constructor(...e){let t=Array.isArray(e[0])?e[0]:e;if(typeof t[0]!="number"){const i=[];for(let r=0,n=t.length;rt!=u>t&&e<(c-o)*((t-l)/(u-l))+o&&(i=!i)}return i}}ur.prototype.toString=function(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((s,e)=>`${s}, ${e}`,"")}]`};class Jo{constructor(e=0,t=0,i=0,r=0,n=20){this.x=e,this.y=t,this.width=i,this.height=r,this.radius=n,this.type=Ct.RREC}clone(){return new Jo(this.x,this.y,this.width,this.height,this.radius)}contains(e,t){if(this.width<=0||this.height<=0)return!1;if(e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){const i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(t>=this.y+i&&t<=this.y+this.height-i||e>=this.x+i&&e<=this.x+this.width-i)return!0;let r=e-(this.x+i),n=t-(this.y+i);const a=i*i;if(r*r+n*n<=a||(r=e-(this.x+this.width-i),r*r+n*n<=a)||(n=t-(this.y+this.height-i),r*r+n*n<=a)||(r=e-(this.x+i),r*r+n*n<=a))return!0}return!1}}Jo.prototype.toString=function(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`};class $e{constructor(e=1,t=0,i=0,r=1,n=0,a=0){this.array=null,this.a=e,this.b=t,this.c=i,this.d=r,this.tx=n,this.ty=a}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,i,r,n,a){return this.a=e,this.b=t,this.c=i,this.d=r,this.tx=n,this.ty=a,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const i=t||this.array;return e?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i}apply(e,t){t=t||new We;const i=e.x,r=e.y;return t.x=this.a*i+this.c*r+this.tx,t.y=this.b*i+this.d*r+this.ty,t}applyInverse(e,t){t=t||new We;const i=1/(this.a*this.d+this.c*-this.b),r=e.x,n=e.y;return t.x=this.d*i*r+-this.c*i*n+(this.ty*this.c-this.tx*this.d)*i,t.y=this.a*i*n+-this.b*i*r+(-this.ty*this.a+this.tx*this.b)*i,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),i=Math.sin(e),r=this.a,n=this.c,a=this.tx;return this.a=r*t-this.b*i,this.b=r*i+this.b*t,this.c=n*t-this.d*i,this.d=n*i+this.d*t,this.tx=a*t-this.ty*i,this.ty=a*i+this.ty*t,this}append(e){const t=this.a,i=this.b,r=this.c,n=this.d;return this.a=e.a*t+e.b*r,this.b=e.a*i+e.b*n,this.c=e.c*t+e.d*r,this.d=e.c*i+e.d*n,this.tx=e.tx*t+e.ty*r+this.tx,this.ty=e.tx*i+e.ty*n+this.ty,this}setTransform(e,t,i,r,n,a,o,l,c){return this.a=Math.cos(o+c)*n,this.b=Math.sin(o+c)*n,this.c=-Math.sin(o-l)*a,this.d=Math.cos(o-l)*a,this.tx=e-(i*this.a+r*this.c),this.ty=t-(i*this.b+r*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const i=this.a,r=this.c;this.a=i*e.a+this.b*e.c,this.b=i*e.b+this.b*e.d,this.c=r*e.a+this.d*e.c,this.d=r*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,i=this.b,r=this.c,n=this.d,a=e.pivot,o=-Math.atan2(-r,n),l=Math.atan2(i,t),c=Math.abs(o+l);return c<1e-5||Math.abs(To-c)<1e-5?(e.rotation=l,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=o,e.skew.y=l),e.scale.x=Math.sqrt(t*t+i*i),e.scale.y=Math.sqrt(r*r+n*n),e.position.x=this.tx+(a.x*t+a.y*r),e.position.y=this.ty+(a.x*i+a.y*n),e}invert(){const e=this.a,t=this.b,i=this.c,r=this.d,n=this.tx,a=e*r-t*i;return this.a=r/a,this.b=-t/a,this.c=-i/a,this.d=e/a,this.tx=(i*this.ty-r*n)/a,this.ty=-(e*this.ty-t*n)/a,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new $e;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}static get IDENTITY(){return new $e}static get TEMP_MATRIX(){return new $e}}$e.prototype.toString=function(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`};const Ks=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],qs=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],Qs=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],Js=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Gh=[],Hf=[],Ca=Math.sign;function UA(){for(let s=0;s<16;s++){const e=[];Gh.push(e);for(let t=0;t<16;t++){const i=Ca(Ks[s]*Ks[t]+Qs[s]*qs[t]),r=Ca(qs[s]*Ks[t]+Js[s]*qs[t]),n=Ca(Ks[s]*Qs[t]+Qs[s]*Js[t]),a=Ca(qs[s]*Qs[t]+Js[s]*Js[t]);for(let o=0;o<16;o++)if(Ks[o]===i&&qs[o]===r&&Qs[o]===n&&Js[o]===a){e.push(o);break}}}for(let s=0;s<16;s++){const e=new $e;e.set(Ks[s],qs[s],Qs[s],Js[s],0,0),Hf.push(e)}}UA();const at={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:s=>Ks[s],uY:s=>qs[s],vX:s=>Qs[s],vY:s=>Js[s],inv:s=>s&8?s&15:-s&7,add:(s,e)=>Gh[s][e],sub:(s,e)=>Gh[s][at.inv(e)],rotate180:s=>s^4,isVertical:s=>(s&3)===2,byDirection:(s,e)=>Math.abs(s)*2<=Math.abs(e)?e>=0?at.S:at.N:Math.abs(e)*2<=Math.abs(s)?s>0?at.E:at.W:e>0?s>0?at.SE:at.SW:s>0?at.NE:at.NW,matrixAppendRotationInv:(s,e,t=0,i=0)=>{const r=Hf[at.inv(e)];r.tx=t,r.ty=i,s.append(r)}};class rs{constructor(e,t,i=0,r=0){this._x=i,this._y=r,this.cb=e,this.scope=t}clone(e=this.cb,t=this.scope){return new rs(e,t,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this.cb.call(this.scope)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this.cb.call(this.scope)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this.cb.call(this.scope))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this.cb.call(this.scope))}}rs.prototype.toString=function(){return`[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`};const Hh=class{constructor(){this.worldTransform=new $e,this.localTransform=new $e,this.position=new rs(this.onChange,this,0,0),this.scale=new rs(this.onChange,this,1,1),this.pivot=new rs(this.onChange,this,0,0),this.skew=new rs(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}updateLocalTransform(){const s=this.localTransform;this._localID!==this._currentLocalID&&(s.a=this._cx*this.scale.x,s.b=this._sx*this.scale.x,s.c=this._cy*this.scale.y,s.d=this._sy*this.scale.y,s.tx=this.position.x-(this.pivot.x*s.a+this.pivot.y*s.c),s.ty=this.position.y-(this.pivot.x*s.b+this.pivot.y*s.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(s){const e=this.localTransform;if(this._localID!==this._currentLocalID&&(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==s._worldID){const t=s.worldTransform,i=this.worldTransform;i.a=e.a*t.a+e.b*t.c,i.b=e.a*t.b+e.b*t.d,i.c=e.c*t.a+e.d*t.c,i.d=e.c*t.b+e.d*t.d,i.tx=e.tx*t.a+e.ty*t.c+t.tx,i.ty=e.tx*t.b+e.ty*t.d+t.ty,this._parentID=s._worldID,this._worldID++}}setFromMatrix(s){s.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(s){this._rotation!==s&&(this._rotation=s,this.updateSkew())}};Hh.IDENTITY=new Hh;let Gc=Hh;Gc.prototype.toString=function(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`};var GA=`varying vec2 vTextureCoord; +else `),t=0;--i){const r=Fh[i];if(r.test&&r.test(s,t))return new r(s,e)}throw new Error("Unrecognized source type to auto-detect Resource")}class Ei{constructor(e){this.items=[],this._name=e,this._aliasCount=0}emit(e,t,i,r,n,a,o,l){if(arguments.length>8)throw new Error("max arguments reached");const{name:c,items:u}=this;this._aliasCount++;for(let h=0,d=u.length;h0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(e){return e[this._name]&&(this.ensureNonAliasedItems(),this.remove(e),this.items.push(e)),this}remove(e){const t=this.items.indexOf(e);return t!==-1&&(this.ensureNonAliasedItems(),this.items.splice(t,1)),this}contains(e){return this.items.includes(e)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items.length=0,this._name=""}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(Ei.prototype,{dispatch:{value:Ei.prototype.emit},run:{value:Ei.prototype.emit}});class ta{constructor(e=0,t=0){this._width=e,this._height=t,this.destroyed=!1,this.internal=!1,this.onResize=new Ei("setRealSize"),this.onUpdate=new Ei("update"),this.onError=new Ei("onError")}bind(e){this.onResize.add(e),this.onUpdate.add(e),this.onError.add(e),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(e){this.onResize.remove(e),this.onUpdate.remove(e),this.onError.remove(e)}resize(e,t){(e!==this._width||t!==this._height)&&(this._width=e,this._height=t,this.onResize.emit(e,t))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(e,t,i){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(e,t){return!1}}class Ko extends ta{constructor(e,t){const{width:i,height:r}=t||{};if(!i||!r)throw new Error("BufferResource width or height invalid");super(i,r),this.data=e,this.unpackAlignment=t.unpackAlignment??4}upload(e,t,i){const r=e.gl;r.pixelStorei(r.UNPACK_ALIGNMENT,this.unpackAlignment),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.alphaMode===Gt.UNPACK);const n=t.realWidth,a=t.realHeight;return i.width===n&&i.height===a?r.texSubImage2D(t.target,0,0,0,n,a,t.format,i.type,this.data):(i.width=n,i.height=a,r.texImage2D(t.target,0,i.internalFormat,n,a,0,t.format,i.type,this.data)),!0}dispose(){this.data=null}static test(e){return e===null||e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}}const IA={scaleMode:is.NEAREST,alphaMode:Gt.NPM},Nh=class Dr extends mn{constructor(e=null,t=null){super(),t=Object.assign({},Dr.defaultOptions,t);const{alphaMode:i,mipmap:r,anisotropicLevel:n,scaleMode:a,width:o,height:l,wrapMode:c,format:u,type:h,target:d,resolution:p,resourceOptions:m}=t;e&&!(e instanceof ta)&&(e=Nf(e,m),e.internal=!0),this.resolution=p||de.RESOLUTION,this.width=Math.round((o||0)*this.resolution)/this.resolution,this.height=Math.round((l||0)*this.resolution)/this.resolution,this._mipmap=r,this.anisotropicLevel=n,this._wrapMode=c,this._scaleMode=a,this.format=u,this.type=h,this.target=d,this.alphaMode=i,this.uid=vr(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=o>0&&l>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource(e)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap(e){this._mipmap!==e&&(this._mipmap=e,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode(e){this._scaleMode!==e&&(this._scaleMode=e,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode(e){this._wrapMode!==e&&(this._wrapMode=e,this.dirtyStyleId++)}setStyle(e,t){let i;return e!==void 0&&e!==this.scaleMode&&(this.scaleMode=e,i=!0),t!==void 0&&t!==this.mipmap&&(this.mipmap=t,i=!0),i&&this.dirtyStyleId++,this}setSize(e,t,i){return i=i||this.resolution,this.setRealSize(e*i,t*i,i)}setRealSize(e,t,i){return this.resolution=i||this.resolution,this.width=Math.round(e)/this.resolution,this.height=Math.round(t)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=fu(this.realWidth)&&fu(this.realHeight)}setResolution(e){const t=this.resolution;return t===e?this:(this.resolution=e,this.valid&&(this.width=Math.round(this.width*t)/e,this.height=Math.round(this.height*t)/e,this.emit("update",this)),this._refreshPOT(),this)}setResource(e){if(this.resource===e)return this;if(this.resource)throw new Error("Resource can be set only once");return e.bind(this),this.resource=e,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError(e){this.emit("error",this,e)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete ys[this.cacheId],delete Ii[this.cacheId],this.cacheId=null),this.valid=!1,this.dispose(),Dr.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from(e,t,i=de.STRICT_TEXTURE_CACHE){const r=typeof e=="string";let n=null;if(r)n=e;else{if(!e._pixiId){const o=t?.pixiIdPrefix||"pixiid";e._pixiId=`${o}_${vr()}`}n=e._pixiId}let a=ys[n];if(r&&i&&!a)throw new Error(`The cacheId "${n}" does not exist in BaseTextureCache.`);return a||(a=new Dr(e,t),a.cacheId=n,Dr.addToCache(a,n)),a}static fromBuffer(e,t,i,r){e=e||new Float32Array(t*i*4);const n=new Ko(e,{width:t,height:i,...r?.resourceOptions});let a,o;return e instanceof Float32Array?(a=se.RGBA,o=we.FLOAT):e instanceof Int32Array?(a=se.RGBA_INTEGER,o=we.INT):e instanceof Uint32Array?(a=se.RGBA_INTEGER,o=we.UNSIGNED_INT):e instanceof Int16Array?(a=se.RGBA_INTEGER,o=we.SHORT):e instanceof Uint16Array?(a=se.RGBA_INTEGER,o=we.UNSIGNED_SHORT):e instanceof Int8Array?(a=se.RGBA,o=we.BYTE):(a=se.RGBA,o=we.UNSIGNED_BYTE),n.internal=!0,new Dr(n,Object.assign({},IA,{type:o,format:a},r))}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),ys[t]&&ys[t]!==e&&console.warn(`BaseTexture added to the cache with an id [${t}] that already had an entry`),ys[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=ys[e];if(t){const i=t.textureCacheIds.indexOf(e);return i>-1&&t.textureCacheIds.splice(i,1),delete ys[e],t}}else if(e?.textureCacheIds){for(let t=0;t1){for(let h=0;h(s[s.POLY=0]="POLY",s[s.RECT=1]="RECT",s[s.CIRC=2]="CIRC",s[s.ELIP=3]="ELIP",s[s.RREC=4]="RREC",s))(Ct||{});class We{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new We(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}}We.prototype.toString=function(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`};const Sa=[new We,new We,new We,new We];class Me{constructor(e=0,t=0,i=0,r=0){this.x=Number(e),this.y=Number(t),this.width=Number(i),this.height=Number(r),this.type=Ct.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new Me(0,0,0,0)}clone(){return new Me(this.x,this.y,this.width,this.height)}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e=this.y&&te.right?e.right:this.right)<=P)return!1;const M=this.ye.bottom?e.bottom:this.bottom)>M}const i=this.left,r=this.right,n=this.top,a=this.bottom;if(r<=i||a<=n)return!1;const o=Sa[0].set(e.left,e.top),l=Sa[1].set(e.left,e.bottom),c=Sa[2].set(e.right,e.top),u=Sa[3].set(e.right,e.bottom);if(c.x<=o.x||l.y<=o.y)return!1;const h=Math.sign(t.a*t.d-t.b*t.c);if(h===0||(t.apply(o,o),t.apply(l,l),t.apply(c,c),t.apply(u,u),Math.max(o.x,l.x,c.x,u.x)<=i||Math.min(o.x,l.x,c.x,u.x)>=r||Math.max(o.y,l.y,c.y,u.y)<=n||Math.min(o.y,l.y,c.y,u.y)>=a))return!1;const d=h*(l.y-o.y),p=h*(o.x-l.x),m=d*i+p*n,f=d*r+p*n,g=d*i+p*a,y=d*r+p*a;if(Math.max(m,f,g,y)<=d*o.x+p*o.y||Math.min(m,f,g,y)>=d*u.x+p*u.y)return!1;const b=h*(o.y-c.y),A=h*(c.x-o.x),v=b*i+A*n,_=b*r+A*n,C=b*i+A*a,B=b*r+A*a;return!(Math.max(v,_,C,B)<=b*o.x+A*o.y||Math.min(v,_,C,B)>=b*u.x+A*u.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),i=Math.min(this.x+this.width,e.x+e.width),r=Math.max(this.y,e.y),n=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(i-t,0),this.y=r,this.height=Math.max(n-r,0),this}ceil(e=1,t=.001){const i=Math.ceil((this.x+this.width-t)*e)/e,r=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=i-this.x,this.height=r-this.y,this}enlarge(e){const t=Math.min(this.x,e.x),i=Math.max(this.x+this.width,e.x+e.width),r=Math.min(this.y,e.y),n=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=i-t,this.y=r,this.height=n-r,this}}Me.prototype.toString=function(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class qo{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.radius=i,this.type=Ct.CIRC}clone(){return new qo(this.x,this.y,this.radius)}contains(e,t){if(this.radius<=0)return!1;const i=this.radius*this.radius;let r=this.x-e,n=this.y-t;return r*=r,n*=n,r+n<=i}getBounds(){return new Me(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}qo.prototype.toString=function(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`};class Qo{constructor(e=0,t=0,i=0,r=0){this.x=e,this.y=t,this.width=i,this.height=r,this.type=Ct.ELIP}clone(){return new Qo(this.x,this.y,this.width,this.height)}contains(e,t){if(this.width<=0||this.height<=0)return!1;let i=(e-this.x)/this.width,r=(t-this.y)/this.height;return i*=i,r*=r,i+r<=1}getBounds(){return new Me(this.x-this.width,this.y-this.height,this.width,this.height)}}Qo.prototype.toString=function(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class ur{constructor(...e){let t=Array.isArray(e[0])?e[0]:e;if(typeof t[0]!="number"){const i=[];for(let r=0,n=t.length;rt!=u>t&&e<(c-o)*((t-l)/(u-l))+o&&(i=!i)}return i}}ur.prototype.toString=function(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((s,e)=>`${s}, ${e}`,"")}]`};class Jo{constructor(e=0,t=0,i=0,r=0,n=20){this.x=e,this.y=t,this.width=i,this.height=r,this.radius=n,this.type=Ct.RREC}clone(){return new Jo(this.x,this.y,this.width,this.height,this.radius)}contains(e,t){if(this.width<=0||this.height<=0)return!1;if(e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){const i=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(t>=this.y+i&&t<=this.y+this.height-i||e>=this.x+i&&e<=this.x+this.width-i)return!0;let r=e-(this.x+i),n=t-(this.y+i);const a=i*i;if(r*r+n*n<=a||(r=e-(this.x+this.width-i),r*r+n*n<=a)||(n=t-(this.y+this.height-i),r*r+n*n<=a)||(r=e-(this.x+i),r*r+n*n<=a))return!0}return!1}}Jo.prototype.toString=function(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`};class $e{constructor(e=1,t=0,i=0,r=1,n=0,a=0){this.array=null,this.a=e,this.b=t,this.c=i,this.d=r,this.tx=n,this.ty=a}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,i,r,n,a){return this.a=e,this.b=t,this.c=i,this.d=r,this.tx=n,this.ty=a,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const i=t||this.array;return e?(i[0]=this.a,i[1]=this.b,i[2]=0,i[3]=this.c,i[4]=this.d,i[5]=0,i[6]=this.tx,i[7]=this.ty,i[8]=1):(i[0]=this.a,i[1]=this.c,i[2]=this.tx,i[3]=this.b,i[4]=this.d,i[5]=this.ty,i[6]=0,i[7]=0,i[8]=1),i}apply(e,t){t=t||new We;const i=e.x,r=e.y;return t.x=this.a*i+this.c*r+this.tx,t.y=this.b*i+this.d*r+this.ty,t}applyInverse(e,t){t=t||new We;const i=1/(this.a*this.d+this.c*-this.b),r=e.x,n=e.y;return t.x=this.d*i*r+-this.c*i*n+(this.ty*this.c-this.tx*this.d)*i,t.y=this.a*i*n+-this.b*i*r+(-this.ty*this.a+this.tx*this.b)*i,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),i=Math.sin(e),r=this.a,n=this.c,a=this.tx;return this.a=r*t-this.b*i,this.b=r*i+this.b*t,this.c=n*t-this.d*i,this.d=n*i+this.d*t,this.tx=a*t-this.ty*i,this.ty=a*i+this.ty*t,this}append(e){const t=this.a,i=this.b,r=this.c,n=this.d;return this.a=e.a*t+e.b*r,this.b=e.a*i+e.b*n,this.c=e.c*t+e.d*r,this.d=e.c*i+e.d*n,this.tx=e.tx*t+e.ty*r+this.tx,this.ty=e.tx*i+e.ty*n+this.ty,this}setTransform(e,t,i,r,n,a,o,l,c){return this.a=Math.cos(o+c)*n,this.b=Math.sin(o+c)*n,this.c=-Math.sin(o-l)*a,this.d=Math.cos(o-l)*a,this.tx=e-(i*this.a+r*this.c),this.ty=t-(i*this.b+r*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const i=this.a,r=this.c;this.a=i*e.a+this.b*e.c,this.b=i*e.b+this.b*e.d,this.c=r*e.a+this.d*e.c,this.d=r*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,i=this.b,r=this.c,n=this.d,a=e.pivot,o=-Math.atan2(-r,n),l=Math.atan2(i,t),c=Math.abs(o+l);return c<1e-5||Math.abs(To-c)<1e-5?(e.rotation=l,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=o,e.skew.y=l),e.scale.x=Math.sqrt(t*t+i*i),e.scale.y=Math.sqrt(r*r+n*n),e.position.x=this.tx+(a.x*t+a.y*r),e.position.y=this.ty+(a.x*i+a.y*n),e}invert(){const e=this.a,t=this.b,i=this.c,r=this.d,n=this.tx,a=e*r-t*i;return this.a=r/a,this.b=-t/a,this.c=-i/a,this.d=e/a,this.tx=(i*this.ty-r*n)/a,this.ty=-(e*this.ty-t*n)/a,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new $e;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}static get IDENTITY(){return new $e}static get TEMP_MATRIX(){return new $e}}$e.prototype.toString=function(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`};const Ks=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],qs=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],Qs=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],Js=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Gh=[],Hf=[],Ca=Math.sign;function UA(){for(let s=0;s<16;s++){const e=[];Gh.push(e);for(let t=0;t<16;t++){const i=Ca(Ks[s]*Ks[t]+Qs[s]*qs[t]),r=Ca(qs[s]*Ks[t]+Js[s]*qs[t]),n=Ca(Ks[s]*Qs[t]+Qs[s]*Js[t]),a=Ca(qs[s]*Qs[t]+Js[s]*Js[t]);for(let o=0;o<16;o++)if(Ks[o]===i&&qs[o]===r&&Qs[o]===n&&Js[o]===a){e.push(o);break}}}for(let s=0;s<16;s++){const e=new $e;e.set(Ks[s],qs[s],Qs[s],Js[s],0,0),Hf.push(e)}}UA();const at={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:s=>Ks[s],uY:s=>qs[s],vX:s=>Qs[s],vY:s=>Js[s],inv:s=>s&8?s&15:-s&7,add:(s,e)=>Gh[s][e],sub:(s,e)=>Gh[s][at.inv(e)],rotate180:s=>s^4,isVertical:s=>(s&3)===2,byDirection:(s,e)=>Math.abs(s)*2<=Math.abs(e)?e>=0?at.S:at.N:Math.abs(e)*2<=Math.abs(s)?s>0?at.E:at.W:e>0?s>0?at.SE:at.SW:s>0?at.NE:at.NW,matrixAppendRotationInv:(s,e,t=0,i=0)=>{const r=Hf[at.inv(e)];r.tx=t,r.ty=i,s.append(r)}};class rs{constructor(e,t,i=0,r=0){this._x=i,this._y=r,this.cb=e,this.scope=t}clone(e=this.cb,t=this.scope){return new rs(e,t,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this.cb.call(this.scope)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this.cb.call(this.scope)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this.cb.call(this.scope))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this.cb.call(this.scope))}}rs.prototype.toString=function(){return`[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`};const Hh=class{constructor(){this.worldTransform=new $e,this.localTransform=new $e,this.position=new rs(this.onChange,this,0,0),this.scale=new rs(this.onChange,this,1,1),this.pivot=new rs(this.onChange,this,0,0),this.skew=new rs(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}updateLocalTransform(){const s=this.localTransform;this._localID!==this._currentLocalID&&(s.a=this._cx*this.scale.x,s.b=this._sx*this.scale.x,s.c=this._cy*this.scale.y,s.d=this._sy*this.scale.y,s.tx=this.position.x-(this.pivot.x*s.a+this.pivot.y*s.c),s.ty=this.position.y-(this.pivot.x*s.b+this.pivot.y*s.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(s){const e=this.localTransform;if(this._localID!==this._currentLocalID&&(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==s._worldID){const t=s.worldTransform,i=this.worldTransform;i.a=e.a*t.a+e.b*t.c,i.b=e.a*t.b+e.b*t.d,i.c=e.c*t.a+e.d*t.c,i.d=e.c*t.b+e.d*t.d,i.tx=e.tx*t.a+e.ty*t.c+t.tx,i.ty=e.tx*t.b+e.ty*t.d+t.ty,this._parentID=s._worldID,this._worldID++}}setFromMatrix(s){s.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(s){this._rotation!==s&&(this._rotation=s,this.updateSkew())}};Hh.IDENTITY=new Hh;let Gc=Hh;Gc.prototype.toString=function(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`};var GA=`varying vec2 vTextureCoord; uniform sampler2D uSampler; @@ -375,7 +375,7 @@ void main(void) gl_Position = filterVertexPosition(); vTextureCoord = filterTextureCoord(); } -`;const zh=class Rn extends Wi{constructor(e,t,i){const r=ns.from(e||Rn.defaultVertexSrc,t||Rn.defaultFragmentSrc);super(r,i),this.padding=0,this.resolution=Rn.defaultResolution,this.multisample=Rn.defaultMultisample,this.enabled=!0,this.autoFit=!0,this.state=new qi}apply(e,t,i,r,n){e.applyFilter(this,t,i,r)}get blendMode(){return this.state.blendMode}set blendMode(e){this.state.blendMode=e}get resolution(){return this._resolution}set resolution(e){this._resolution=e}static get defaultVertexSrc(){return rb}static get defaultFragmentSrc(){return sb}};zh.defaultResolution=1,zh.defaultMultisample=ft.NONE;let Dt=zh;class So{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new Ze(0),this.alpha=1}init(e){this.clearBeforeRender=e.clearBeforeRender;const{backgroundColor:t,background:i,backgroundAlpha:r}=e,n=i??t;n!==void 0&&(this.color=n),this.alpha=r}get color(){return this._backgroundColor.value}set color(e){this._backgroundColor.setValue(e)}get alpha(){return this._backgroundColor.alpha}set alpha(e){this._backgroundColor.setAlpha(e)}get backgroundColor(){return this._backgroundColor}destroy(){}}So.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0},So.extension={type:[ae.RendererSystem,ae.CanvasRendererSystem],name:"background"};me.add(So);class jf{constructor(e){this.renderer=e,this.emptyRenderer=new Zo(e),this.currentRenderer=this.emptyRenderer}setObjectRenderer(e){this.currentRenderer!==e&&(this.currentRenderer.stop(),this.currentRenderer=e,this.currentRenderer.start())}flush(){this.setObjectRenderer(this.emptyRenderer)}reset(){this.setObjectRenderer(this.emptyRenderer)}copyBoundTextures(e,t){const{boundTextures:i}=this.renderer.texture;for(let r=t-1;r>=0;--r)e[r]=i[r]||null,e[r]&&(e[r]._batchLocation=r)}boundArray(e,t,i,r){const{elements:n,ids:a,count:o}=e;let l=0;for(let c=0;c=0&&h=wr.WEBGL2&&(i=e.getContext("webgl2",t)),i)this.webGLVersion=2;else if(this.webGLVersion=1,i=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!i)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=i,this.getExtensions(),this.gl}getExtensions(){const{gl:e}=this,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"),s3tc_sRGB: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"),bptc:e.getExtension("EXT_texture_compression_bptc")};this.webGLVersion===1?Object.assign(this.extensions,t,{drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,t,{colorBufferFloat:e.getExtension("EXT_color_buffer_float")})}handleContextLost(e){e.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()},0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){const e=this.renderer.view;this.renderer=null,e.removeEventListener!==void 0&&(e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(e){const t=e.getContextAttributes(),i="WebGL2RenderingContext"in globalThis&&e instanceof globalThis.WebGL2RenderingContext;i&&(this.webGLVersion=2),t&&!t.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const r=i||!!e.getExtension("OES_element_index_uint");this.supports.uint32Indices=r,r||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}Co.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},Co.extension={type:ae.RendererSystem,name:"context"};me.add(Co);class Yh{constructor(e,t){if(this.width=Math.round(e),this.height=Math.round(t),!this.width||!this.height)throw new Error("Framebuffer width or height is zero");this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new Ei("disposeFramebuffer"),this.multisample=ft.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(e=0,t){return this.colorTextures[e]=t||new ke(null,{scaleMode:is.NEAREST,resolution:1,mipmap:Xi.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(e){return this.depthTexture=e||new ke(null,{scaleMode:is.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:Xi.OFF,format:se.DEPTH_COMPONENT,type:we.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(e,t){if(e=Math.round(e),t=Math.round(t),!e||!t)throw new Error("Framebuffer width and height must not be zero");if(!(e===this.width&&t===this.height)){this.width=e,this.height=t,this.dirtyId++,this.dirtySize++;for(let i=0;i{const r=this.source;this.url=r.src;const n=()=>{this.destroyed||(r.onload=null,r.onerror=null,this.update(),this._load=null,this.createBitmap?t(this.process()):t(this))};r.complete&&r.src?n():(r.onload=n,r.onerror=a=>{i(a),this.onError.emit(a)})}),this._load)}process(){const e=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);const t=globalThis.createImageBitmap,i=!e.crossOrigin||e.crossOrigin==="anonymous";return this._process=fetch(e.src,{mode:i?"cors":"no-cors"}).then(r=>r.blob()).then(r=>t(r,0,0,e.width,e.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Ut.UNPACK?"premultiply":"none"})).then(r=>this.destroyed?Promise.reject():(this.bitmap=r,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(e,t,i){if(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(e,t,i);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(e,t,i,this.bitmap),!this.preserveBitmap){let r=!0;const n=t._glTextures;for(const a in n){const o=n[a];if(o!==i&&o.dirtyId!==t.dirtyId){r=!1;break}}r&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(e){return typeof HTMLImageElement<"u"&&(typeof e=="string"||e instanceof HTMLImageElement)}}class Hc{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(e,t,i){const r=t.width,n=t.height;if(i){const a=e.width/2/r,o=e.height/2/n,l=e.x/r+a,c=e.y/n+o;i=at.add(i,at.NW),this.x0=l+a*at.uX(i),this.y0=c+o*at.uY(i),i=at.add(i,2),this.x1=l+a*at.uX(i),this.y1=c+o*at.uY(i),i=at.add(i,2),this.x2=l+a*at.uX(i),this.y2=c+o*at.uY(i),i=at.add(i,2),this.x3=l+a*at.uX(i),this.y3=c+o*at.uY(i)}else this.x0=e.x/r,this.y0=e.y/n,this.x1=(e.x+e.width)/r,this.y1=e.y/n,this.x2=(e.x+e.width)/r,this.y2=(e.y+e.height)/n,this.x3=e.x/r,this.y3=(e.y+e.height)/n;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}Hc.prototype.toString=function(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`};const Cu=new Hc;function Pa(s){s.destroy=function(){},s.on=function(){},s.once=function(){},s.emit=function(){}}class te extends mn{constructor(e,t,i,r,n,a,o){if(super(),this.noFrame=!1,t||(this.noFrame=!0,t=new Me(0,0,1,1)),e instanceof te&&(e=e.baseTexture),this.baseTexture=e,this._frame=t,this.trim=r,this.valid=!1,this.destroyed=!1,this._uvs=Cu,this.uvMatrix=null,this.orig=i||t,this._rotate=Number(n||0),n===!0)this._rotate=2;else if(this._rotate%2!==0)throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=a?new We(a.x,a.y):new We(0,0),this.defaultBorders=o,this._updateID=0,this.textureCacheIds=[],e.valid?this.noFrame?e.valid&&this.onBaseTextureUpdated(e):this.frame=t:e.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&e.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(e){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=e.width,this._frame.height=e.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(e){if(this.baseTexture){if(e){const{resource:t}=this.baseTexture;t?.url&&Ii[t.url]&&te.removeFromCache(t.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,te.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}clone(){const e=this._frame.clone(),t=this._frame===this.orig?e:this.orig.clone(),i=new te(this.baseTexture,!this.noFrame&&e,t,this.trim?.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(i._frame=e),i}updateUvs(){this._uvs===Cu&&(this._uvs=new Hc),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(e,t={},i=de.STRICT_TEXTURE_CACHE){const r=typeof e=="string";let n=null;if(r)n=e;else if(e instanceof ke){if(!e.cacheId){const o=t?.pixiIdPrefix||"pixiid";e.cacheId=`${o}-${vr()}`,ke.addToCache(e,e.cacheId)}n=e.cacheId}else{if(!e._pixiId){const o=t?.pixiIdPrefix||"pixiid";e._pixiId=`${o}_${vr()}`}n=e._pixiId}let a=Ii[n];if(r&&i&&!a)throw new Error(`The cacheId "${n}" does not exist in TextureCache.`);return!a&&!(e instanceof ke)?(t.resolution||(t.resolution=hs(e)),a=new te(new ke(e,t)),a.baseTexture.cacheId=n,ke.addToCache(a.baseTexture,n),te.addToCache(a,n)):!a&&e instanceof ke&&(a=new te(e),te.addToCache(a,n)),a}static fromURL(e,t){const i=Object.assign({autoLoad:!1},t?.resourceOptions),r=te.from(e,Object.assign({resourceOptions:i},t),!1),n=r.baseTexture.resource;return r.baseTexture.valid?Promise.resolve(r):n.load().then(()=>Promise.resolve(r))}static fromBuffer(e,t,i,r){return new te(ke.fromBuffer(e,t,i,r))}static fromLoader(e,t,i,r){const n=new ke(e,Object.assign({scaleMode:ke.defaultOptions.scaleMode,resolution:hs(t)},r)),{resource:a}=n;a instanceof Kf&&(a.url=t);const o=new te(n);return i||(i=t),ke.addToCache(o.baseTexture,i),te.addToCache(o,i),i!==t&&(ke.addToCache(o.baseTexture,t),te.addToCache(o,t)),o.baseTexture.valid?Promise.resolve(o):new Promise(l=>{o.baseTexture.once("loaded",()=>l(o))})}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),Ii[t]&&Ii[t]!==e&&console.warn(`Texture added to the cache with an id [${t}] that already had an entry`),Ii[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=Ii[e];if(t){const i=t.textureCacheIds.indexOf(e);return i>-1&&t.textureCacheIds.splice(i,1),delete Ii[e],t}}else if(e?.textureCacheIds){for(let t=0;tthis.baseTexture.width,o=i+n>this.baseTexture.height;if(a||o){const l=a&&o?"and":"or",c=`X: ${t} + ${r} = ${t+r} > ${this.baseTexture.width}`,u=`Y: ${i} + ${n} = ${i+n} > ${this.baseTexture.height}`;throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${c} ${l} ${u}`)}this.valid=r&&n&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=e),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(e){this._rotate=e,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return te._EMPTY||(te._EMPTY=new te(new ke),Pa(te._EMPTY),Pa(te._EMPTY.baseTexture)),te._EMPTY}static get WHITE(){if(!te._WHITE){const e=de.ADAPTER.createCanvas(16,16),t=e.getContext("2d");e.width=16,e.height=16,t.fillStyle="white",t.fillRect(0,0,16,16),te._WHITE=new te(ke.from(e)),Pa(te._WHITE),Pa(te._WHITE.baseTexture)}return te._WHITE}}class Rt extends te{constructor(e,t){super(e,t),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(e){this.framebuffer.multisample=e}resize(e,t,i=!0){const r=this.baseTexture.resolution,n=Math.round(e*r)/r,a=Math.round(t*r)/r;this.valid=n>0&&a>0,this._frame.width=this.orig.width=n,this._frame.height=this.orig.height=a,i&&this.baseTexture.resize(n,a),this.updateUvs()}setResolution(e){const{baseTexture:t}=this;t.resolution!==e&&(t.setResolution(e),this.resize(t.width,t.height,!1))}static create(e){return new Rt(new Xf(e))}}class qf{constructor(e){this.texturePool={},this.textureOptions=e||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(e,t,i=ft.NONE){const r=new Xf(Object.assign({width:e,height:t,resolution:1,multisample:i},this.textureOptions));return new Rt(r)}getOptimalTexture(e,t,i=1,r=ft.NONE){let n;e=Math.max(Math.ceil(e*i-1e-6),1),t=Math.max(Math.ceil(t*i-1e-6),1),!this.enableFullScreen||e!==this._pixelsWidth||t!==this._pixelsHeight?(e=Eo(e),t=Eo(t),n=((e&65535)<<16|t&65535)>>>0,r>1&&(n+=r*4294967296)):n=r>1?-r:-1,this.texturePool[n]||(this.texturePool[n]=[]);let a=this.texturePool[n].pop();return a||(a=this.createTexture(e,t,r)),a.filterPoolKey=n,a.setResolution(i),a}getFilterTexture(e,t,i){const r=this.getOptimalTexture(e.width,e.height,t||e.resolution,i||ft.NONE);return r.filterFrame=e.filterFrame,r}returnTexture(e){const t=e.filterPoolKey;e.filterFrame=null,this.texturePool[t].push(e)}returnFilterTexture(e){this.returnTexture(e)}clear(e){if(e=e!==!1,e)for(const t in this.texturePool){const i=this.texturePool[t];if(i)for(let r=0;r0&&e.height>0;for(const t in this.texturePool){if(!(Number(t)<0))continue;const i=this.texturePool[t];if(i)for(let r=0;r1&&(u=this.getOptimalFilterTexture(c.width,c.height,t.resolution),u.filterFrame=c.filterFrame),i[h].apply(this,c,u,Fi.CLEAR,t);const d=c;c=u,u=d}i[h].apply(this,c,l.renderTexture,Fi.BLEND,t),h>1&&t.multisample>1&&this.returnFilterTexture(t.renderTexture),this.returnFilterTexture(c),this.returnFilterTexture(u)}t.clear(),this.statePool.push(t)}bindAndClear(e,t=Fi.CLEAR){const{renderTexture:i,state:r}=this.renderer;if(e===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,e?.filterFrame){const a=this.tempRect;a.x=0,a.y=0,a.width=e.filterFrame.width,a.height=e.filterFrame.height,i.bind(e,e.filterFrame,a)}else e!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?i.bind(e):this.renderer.renderTexture.bind(e,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);const n=r.stateId&1||this.forceClear;(t===Fi.CLEAR||t===Fi.BLIT&&n)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(e,t,i,r){const n=this.renderer;n.state.set(e.state),this.bindAndClear(i,r),e.uniforms.uSampler=t,e.uniforms.filterGlobals=this.globalUniforms,n.shader.bind(e),e.legacy=!!e.program.attributeData.aTextureCoord,e.legacy?(this.quadUv.map(t._frame,t.filterFrame),n.geometry.bind(this.quadUv),n.geometry.draw(Gi.TRIANGLES)):(n.geometry.bind(this.quad),n.geometry.draw(Gi.TRIANGLE_STRIP))}calculateSpriteMatrix(e,t){const{sourceFrame:i,destinationFrame:r}=this.activeState,{orig:n}=t._texture,a=e.set(r.width,0,0,r.height,i.x,i.y),o=t.worldTransform.copyTo($e.TEMP_MATRIX);return o.invert(),a.prepend(o),a.scale(1/n.width,1/n.height),a.translate(t.anchor.x,t.anchor.y),a}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(e,t,i=1,r=ft.NONE){return this.texturePool.getOptimalTexture(e,t,i,r)}getFilterTexture(e,t,i){if(typeof e=="number"){const n=e;e=t,t=n}e=e||this.activeState.renderTexture;const r=this.texturePool.getOptimalTexture(e.width,e.height,t||e.resolution,i||ft.NONE);return r.filterFrame=e.filterFrame,r}returnFilterTexture(e){this.texturePool.returnTexture(e)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(e,t){const i=Ra[0],r=Ra[1],n=Ra[2],a=Ra[3];i.set(t.left,t.top),r.set(t.left,t.bottom),n.set(t.right,t.top),a.set(t.right,t.bottom),e.apply(i,i),e.apply(r,r),e.apply(n,n),e.apply(a,a);const o=Math.min(i.x,r.x,n.x,a.x),l=Math.min(i.y,r.y,n.y,a.y),c=Math.max(i.x,r.x,n.x,a.x),u=Math.max(i.y,r.y,n.y,a.y);t.x=o,t.y=l,t.width=c-o,t.height=u-l}roundFrame(e,t,i,r,n){if(!(e.width<=0||e.height<=0||i.width<=0||i.height<=0)){if(n){const{a,b:o,c:l,d:c}=n;if((Math.abs(o)>1e-4||Math.abs(l)>1e-4)&&(Math.abs(a)>1e-4||Math.abs(c)>1e-4))return}n=n?Vl.copyFrom(n):Vl.identity(),n.translate(-i.x,-i.y).scale(r.width/i.width,r.height/i.height).translate(r.x,r.y),this.transformAABB(n,e),e.ceil(t),this.transformAABB(n.invert(),e)}}}Jf.extension={type:ae.RendererSystem,name:"filter"};me.add(Jf);class ob{constructor(e){this.framebuffer=e,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=ft.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}const lb=new Me;class Zf{constructor(e){this.renderer=e,this.managedFramebuffers=[],this.unknownFramebuffer=new Yh(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);const e=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Me,this.hasMRT=!0,this.writeDepthTexture=!0,this.renderer.context.webGLVersion===1){let t=this.renderer.context.extensions.drawBuffers,i=this.renderer.context.extensions.depthTexture;de.PREFER_ENV===wr.WEBGL_LEGACY&&(t=null,i=null),t?e.drawBuffers=r=>t.drawBuffersWEBGL(r):(this.hasMRT=!1,e.drawBuffers=()=>{}),i||(this.writeDepthTexture=!1)}else this.msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}bind(e,t,i=0){const{gl:r}=this;if(e){const n=e.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(e);this.current!==e&&(this.current=e,r.bindFramebuffer(r.FRAMEBUFFER,n.framebuffer)),n.mipLevel!==i&&(e.dirtyId++,e.dirtyFormat++,n.mipLevel=i),n.dirtyId!==e.dirtyId&&(n.dirtyId=e.dirtyId,n.dirtyFormat!==e.dirtyFormat?(n.dirtyFormat=e.dirtyFormat,n.dirtySize=e.dirtySize,this.updateFramebuffer(e,i)):n.dirtySize!==e.dirtySize&&(n.dirtySize=e.dirtySize,this.resizeFramebuffer(e)));for(let a=0;a>i,o=t.height>>i,l=a/t.width;this.setViewport(t.x*l,t.y*l,a,o)}else{const a=e.width>>i,o=e.height>>i;this.setViewport(0,0,a,o)}}else this.current&&(this.current=null,r.bindFramebuffer(r.FRAMEBUFFER,null)),t?this.setViewport(t.x,t.y,t.width,t.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(e,t,i,r){const n=this.viewport;e=Math.round(e),t=Math.round(t),i=Math.round(i),r=Math.round(r),(n.width!==i||n.height!==r||n.x!==e||n.y!==t)&&(n.x=e,n.y=t,n.width=i,n.height=r,this.gl.viewport(e,t,i,r))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(e,t,i,r,n=vh.COLOR|vh.DEPTH){const{gl:a}=this;a.clearColor(e,t,i,r),a.clear(n)}initFramebuffer(e){const{gl:t}=this,i=new ob(t.createFramebuffer());return i.multisample=this.detectSamples(e.multisample),e.glFramebuffers[this.CONTEXT_UID]=i,this.managedFramebuffers.push(e),e.disposeRunner.add(this),i}resizeFramebuffer(e){const{gl:t}=this,i=e.glFramebuffers[this.CONTEXT_UID];if(i.stencil){t.bindRenderbuffer(t.RENDERBUFFER,i.stencil);let a;this.renderer.context.webGLVersion===1?a=t.DEPTH_STENCIL:e.depth&&e.stencil?a=t.DEPTH24_STENCIL8:e.depth?a=t.DEPTH_COMPONENT24:a=t.STENCIL_INDEX8,i.msaaBuffer?t.renderbufferStorageMultisample(t.RENDERBUFFER,i.multisample,a,e.width,e.height):t.renderbufferStorage(t.RENDERBUFFER,a,e.width,e.height)}const r=e.colorTextures;let n=r.length;t.drawBuffers||(n=Math.min(n,1));for(let a=0;a1&&this.canMultisampleFramebuffer(e)?r.msaaBuffer=r.msaaBuffer||i.createRenderbuffer():r.msaaBuffer&&(i.deleteRenderbuffer(r.msaaBuffer),r.msaaBuffer=null,r.blitFramebuffer&&(r.blitFramebuffer.dispose(),r.blitFramebuffer=null));const o=[];for(let l=0;l1&&i.drawBuffers(o),e.depthTexture&&this.writeDepthTexture){const l=e.depthTexture;this.renderer.texture.bind(l,0),i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,l._glTextures[this.CONTEXT_UID].texture,t)}if((e.stencil||e.depth)&&!(e.depthTexture&&this.writeDepthTexture)){r.stencil=r.stencil||i.createRenderbuffer();let l,c;this.renderer.context.webGLVersion===1?(l=i.DEPTH_STENCIL_ATTACHMENT,c=i.DEPTH_STENCIL):e.depth&&e.stencil?(l=i.DEPTH_STENCIL_ATTACHMENT,c=i.DEPTH24_STENCIL8):e.depth?(l=i.DEPTH_ATTACHMENT,c=i.DEPTH_COMPONENT24):(l=i.STENCIL_ATTACHMENT,c=i.STENCIL_INDEX8),i.bindRenderbuffer(i.RENDERBUFFER,r.stencil),r.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,r.multisample,c,e.width,e.height):i.renderbufferStorage(i.RENDERBUFFER,c,e.width,e.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,l,i.RENDERBUFFER,r.stencil)}else r.stencil&&(i.deleteRenderbuffer(r.stencil),r.stencil=null)}canMultisampleFramebuffer(e){return this.renderer.context.webGLVersion!==1&&e.colorTextures.length<=1&&!e.depthTexture}detectSamples(e){const{msaaSamples:t}=this;let i=ft.NONE;if(e<=1||t===null)return i;for(let r=0;r=0&&this.managedFramebuffers.splice(n,1),e.disposeRunner.remove(this),t||(r.deleteFramebuffer(i.framebuffer),i.msaaBuffer&&r.deleteRenderbuffer(i.msaaBuffer),i.stencil&&r.deleteRenderbuffer(i.stencil)),i.blitFramebuffer&&this.disposeFramebuffer(i.blitFramebuffer,t)}disposeAll(e){const t=this.managedFramebuffers;this.managedFramebuffers=[];for(let i=0;ii.createVertexArrayOES(),e.bindVertexArray=r=>i.bindVertexArrayOES(r),e.deleteVertexArray=r=>i.deleteVertexArrayOES(r)):(this.hasVao=!1,e.createVertexArray=()=>null,e.bindVertexArray=()=>null,e.deleteVertexArray=()=>null)}if(t.webGLVersion!==2){const i=e.getExtension("ANGLE_instanced_arrays");i?(e.vertexAttribDivisor=(r,n)=>i.vertexAttribDivisorANGLE(r,n),e.drawElementsInstanced=(r,n,a,o,l)=>i.drawElementsInstancedANGLE(r,n,a,o,l),e.drawArraysInstanced=(r,n,a,o)=>i.drawArraysInstancedANGLE(r,n,a,o)):this.hasInstance=!1}this.canUseUInt32ElementIndex=t.webGLVersion===2||!!t.extensions.uint32ElementIndex}bind(e,t){t=t||this.renderer.shader.shader;const{gl:i}=this;let r=e.glVertexArrayObjects[this.CONTEXT_UID],n=!1;r||(this.managedGeometries[e.id]=e,e.disposeRunner.add(this),e.glVertexArrayObjects[this.CONTEXT_UID]=r={},n=!0);const a=r[t.program.id]||this.initGeometryVao(e,t,n);this._activeGeometry=e,this._activeVao!==a&&(this._activeVao=a,this.hasVao?i.bindVertexArray(a):this.activateVao(e,t.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const e=this._activeGeometry,t=this.renderer.buffer;for(let i=0;i"u"?.5:t,this.isSimple=!1}get texture(){return this._texture}set texture(e){this._texture=e,this._textureID=-1}multiplyUvs(e,t){t===void 0&&(t=e);const i=this.mapCoord;for(let r=0;r=0;--r)e[r]=i[r]||null,e[r]&&(e[r]._batchLocation=r)}boundArray(e,t,i,r){const{elements:n,ids:a,count:o}=e;let l=0;for(let c=0;c=0&&h=wr.WEBGL2&&(i=e.getContext("webgl2",t)),i)this.webGLVersion=2;else if(this.webGLVersion=1,i=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!i)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=i,this.getExtensions(),this.gl}getExtensions(){const{gl:e}=this,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"),s3tc_sRGB: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"),bptc:e.getExtension("EXT_texture_compression_bptc")};this.webGLVersion===1?Object.assign(this.extensions,t,{drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,t,{colorBufferFloat:e.getExtension("EXT_color_buffer_float")})}handleContextLost(e){e.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()},0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){const e=this.renderer.view;this.renderer=null,e.removeEventListener!==void 0&&(e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(e){const t=e.getContextAttributes(),i="WebGL2RenderingContext"in globalThis&&e instanceof globalThis.WebGL2RenderingContext;i&&(this.webGLVersion=2),t&&!t.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const r=i||!!e.getExtension("OES_element_index_uint");this.supports.uint32Indices=r,r||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}Co.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},Co.extension={type:ae.RendererSystem,name:"context"};me.add(Co);class Yh{constructor(e,t){if(this.width=Math.round(e),this.height=Math.round(t),!this.width||!this.height)throw new Error("Framebuffer width or height is zero");this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new Ei("disposeFramebuffer"),this.multisample=ft.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(e=0,t){return this.colorTextures[e]=t||new ke(null,{scaleMode:is.NEAREST,resolution:1,mipmap:Xi.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(e){return this.depthTexture=e||new ke(null,{scaleMode:is.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:Xi.OFF,format:se.DEPTH_COMPONENT,type:we.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(e,t){if(e=Math.round(e),t=Math.round(t),!e||!t)throw new Error("Framebuffer width and height must not be zero");if(!(e===this.width&&t===this.height)){this.width=e,this.height=t,this.dirtyId++,this.dirtySize++;for(let i=0;i{const r=this.source;this.url=r.src;const n=()=>{this.destroyed||(r.onload=null,r.onerror=null,this.update(),this._load=null,this.createBitmap?t(this.process()):t(this))};r.complete&&r.src?n():(r.onload=n,r.onerror=a=>{i(a),this.onError.emit(a)})}),this._load)}process(){const e=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);const t=globalThis.createImageBitmap,i=!e.crossOrigin||e.crossOrigin==="anonymous";return this._process=fetch(e.src,{mode:i?"cors":"no-cors"}).then(r=>r.blob()).then(r=>t(r,0,0,e.width,e.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Gt.UNPACK?"premultiply":"none"})).then(r=>this.destroyed?Promise.reject():(this.bitmap=r,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(e,t,i){if(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(e,t,i);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(e,t,i,this.bitmap),!this.preserveBitmap){let r=!0;const n=t._glTextures;for(const a in n){const o=n[a];if(o!==i&&o.dirtyId!==t.dirtyId){r=!1;break}}r&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(e){return typeof HTMLImageElement<"u"&&(typeof e=="string"||e instanceof HTMLImageElement)}}class Hc{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(e,t,i){const r=t.width,n=t.height;if(i){const a=e.width/2/r,o=e.height/2/n,l=e.x/r+a,c=e.y/n+o;i=at.add(i,at.NW),this.x0=l+a*at.uX(i),this.y0=c+o*at.uY(i),i=at.add(i,2),this.x1=l+a*at.uX(i),this.y1=c+o*at.uY(i),i=at.add(i,2),this.x2=l+a*at.uX(i),this.y2=c+o*at.uY(i),i=at.add(i,2),this.x3=l+a*at.uX(i),this.y3=c+o*at.uY(i)}else this.x0=e.x/r,this.y0=e.y/n,this.x1=(e.x+e.width)/r,this.y1=e.y/n,this.x2=(e.x+e.width)/r,this.y2=(e.y+e.height)/n,this.x3=e.x/r,this.y3=(e.y+e.height)/n;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}Hc.prototype.toString=function(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`};const Cu=new Hc;function Pa(s){s.destroy=function(){},s.on=function(){},s.once=function(){},s.emit=function(){}}class te extends mn{constructor(e,t,i,r,n,a,o){if(super(),this.noFrame=!1,t||(this.noFrame=!0,t=new Me(0,0,1,1)),e instanceof te&&(e=e.baseTexture),this.baseTexture=e,this._frame=t,this.trim=r,this.valid=!1,this.destroyed=!1,this._uvs=Cu,this.uvMatrix=null,this.orig=i||t,this._rotate=Number(n||0),n===!0)this._rotate=2;else if(this._rotate%2!==0)throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=a?new We(a.x,a.y):new We(0,0),this.defaultBorders=o,this._updateID=0,this.textureCacheIds=[],e.valid?this.noFrame?e.valid&&this.onBaseTextureUpdated(e):this.frame=t:e.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&e.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(e){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=e.width,this._frame.height=e.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(e){if(this.baseTexture){if(e){const{resource:t}=this.baseTexture;t?.url&&Ii[t.url]&&te.removeFromCache(t.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,te.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}clone(){const e=this._frame.clone(),t=this._frame===this.orig?e:this.orig.clone(),i=new te(this.baseTexture,!this.noFrame&&e,t,this.trim?.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(i._frame=e),i}updateUvs(){this._uvs===Cu&&(this._uvs=new Hc),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(e,t={},i=de.STRICT_TEXTURE_CACHE){const r=typeof e=="string";let n=null;if(r)n=e;else if(e instanceof ke){if(!e.cacheId){const o=t?.pixiIdPrefix||"pixiid";e.cacheId=`${o}-${vr()}`,ke.addToCache(e,e.cacheId)}n=e.cacheId}else{if(!e._pixiId){const o=t?.pixiIdPrefix||"pixiid";e._pixiId=`${o}_${vr()}`}n=e._pixiId}let a=Ii[n];if(r&&i&&!a)throw new Error(`The cacheId "${n}" does not exist in TextureCache.`);return!a&&!(e instanceof ke)?(t.resolution||(t.resolution=hs(e)),a=new te(new ke(e,t)),a.baseTexture.cacheId=n,ke.addToCache(a.baseTexture,n),te.addToCache(a,n)):!a&&e instanceof ke&&(a=new te(e),te.addToCache(a,n)),a}static fromURL(e,t){const i=Object.assign({autoLoad:!1},t?.resourceOptions),r=te.from(e,Object.assign({resourceOptions:i},t),!1),n=r.baseTexture.resource;return r.baseTexture.valid?Promise.resolve(r):n.load().then(()=>Promise.resolve(r))}static fromBuffer(e,t,i,r){return new te(ke.fromBuffer(e,t,i,r))}static fromLoader(e,t,i,r){const n=new ke(e,Object.assign({scaleMode:ke.defaultOptions.scaleMode,resolution:hs(t)},r)),{resource:a}=n;a instanceof Kf&&(a.url=t);const o=new te(n);return i||(i=t),ke.addToCache(o.baseTexture,i),te.addToCache(o,i),i!==t&&(ke.addToCache(o.baseTexture,t),te.addToCache(o,t)),o.baseTexture.valid?Promise.resolve(o):new Promise(l=>{o.baseTexture.once("loaded",()=>l(o))})}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),Ii[t]&&Ii[t]!==e&&console.warn(`Texture added to the cache with an id [${t}] that already had an entry`),Ii[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=Ii[e];if(t){const i=t.textureCacheIds.indexOf(e);return i>-1&&t.textureCacheIds.splice(i,1),delete Ii[e],t}}else if(e?.textureCacheIds){for(let t=0;tthis.baseTexture.width,o=i+n>this.baseTexture.height;if(a||o){const l=a&&o?"and":"or",c=`X: ${t} + ${r} = ${t+r} > ${this.baseTexture.width}`,u=`Y: ${i} + ${n} = ${i+n} > ${this.baseTexture.height}`;throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${c} ${l} ${u}`)}this.valid=r&&n&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=e),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(e){this._rotate=e,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return te._EMPTY||(te._EMPTY=new te(new ke),Pa(te._EMPTY),Pa(te._EMPTY.baseTexture)),te._EMPTY}static get WHITE(){if(!te._WHITE){const e=de.ADAPTER.createCanvas(16,16),t=e.getContext("2d");e.width=16,e.height=16,t.fillStyle="white",t.fillRect(0,0,16,16),te._WHITE=new te(ke.from(e)),Pa(te._WHITE),Pa(te._WHITE.baseTexture)}return te._WHITE}}class Lt extends te{constructor(e,t){super(e,t),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(e){this.framebuffer.multisample=e}resize(e,t,i=!0){const r=this.baseTexture.resolution,n=Math.round(e*r)/r,a=Math.round(t*r)/r;this.valid=n>0&&a>0,this._frame.width=this.orig.width=n,this._frame.height=this.orig.height=a,i&&this.baseTexture.resize(n,a),this.updateUvs()}setResolution(e){const{baseTexture:t}=this;t.resolution!==e&&(t.setResolution(e),this.resize(t.width,t.height,!1))}static create(e){return new Lt(new Xf(e))}}class qf{constructor(e){this.texturePool={},this.textureOptions=e||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(e,t,i=ft.NONE){const r=new Xf(Object.assign({width:e,height:t,resolution:1,multisample:i},this.textureOptions));return new Lt(r)}getOptimalTexture(e,t,i=1,r=ft.NONE){let n;e=Math.max(Math.ceil(e*i-1e-6),1),t=Math.max(Math.ceil(t*i-1e-6),1),!this.enableFullScreen||e!==this._pixelsWidth||t!==this._pixelsHeight?(e=Eo(e),t=Eo(t),n=((e&65535)<<16|t&65535)>>>0,r>1&&(n+=r*4294967296)):n=r>1?-r:-1,this.texturePool[n]||(this.texturePool[n]=[]);let a=this.texturePool[n].pop();return a||(a=this.createTexture(e,t,r)),a.filterPoolKey=n,a.setResolution(i),a}getFilterTexture(e,t,i){const r=this.getOptimalTexture(e.width,e.height,t||e.resolution,i||ft.NONE);return r.filterFrame=e.filterFrame,r}returnTexture(e){const t=e.filterPoolKey;e.filterFrame=null,this.texturePool[t].push(e)}returnFilterTexture(e){this.returnTexture(e)}clear(e){if(e=e!==!1,e)for(const t in this.texturePool){const i=this.texturePool[t];if(i)for(let r=0;r0&&e.height>0;for(const t in this.texturePool){if(!(Number(t)<0))continue;const i=this.texturePool[t];if(i)for(let r=0;r1&&(u=this.getOptimalFilterTexture(c.width,c.height,t.resolution),u.filterFrame=c.filterFrame),i[h].apply(this,c,u,Fi.CLEAR,t);const d=c;c=u,u=d}i[h].apply(this,c,l.renderTexture,Fi.BLEND,t),h>1&&t.multisample>1&&this.returnFilterTexture(t.renderTexture),this.returnFilterTexture(c),this.returnFilterTexture(u)}t.clear(),this.statePool.push(t)}bindAndClear(e,t=Fi.CLEAR){const{renderTexture:i,state:r}=this.renderer;if(e===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,e?.filterFrame){const a=this.tempRect;a.x=0,a.y=0,a.width=e.filterFrame.width,a.height=e.filterFrame.height,i.bind(e,e.filterFrame,a)}else e!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?i.bind(e):this.renderer.renderTexture.bind(e,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);const n=r.stateId&1||this.forceClear;(t===Fi.CLEAR||t===Fi.BLIT&&n)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(e,t,i,r){const n=this.renderer;n.state.set(e.state),this.bindAndClear(i,r),e.uniforms.uSampler=t,e.uniforms.filterGlobals=this.globalUniforms,n.shader.bind(e),e.legacy=!!e.program.attributeData.aTextureCoord,e.legacy?(this.quadUv.map(t._frame,t.filterFrame),n.geometry.bind(this.quadUv),n.geometry.draw(Gi.TRIANGLES)):(n.geometry.bind(this.quad),n.geometry.draw(Gi.TRIANGLE_STRIP))}calculateSpriteMatrix(e,t){const{sourceFrame:i,destinationFrame:r}=this.activeState,{orig:n}=t._texture,a=e.set(r.width,0,0,r.height,i.x,i.y),o=t.worldTransform.copyTo($e.TEMP_MATRIX);return o.invert(),a.prepend(o),a.scale(1/n.width,1/n.height),a.translate(t.anchor.x,t.anchor.y),a}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(e,t,i=1,r=ft.NONE){return this.texturePool.getOptimalTexture(e,t,i,r)}getFilterTexture(e,t,i){if(typeof e=="number"){const n=e;e=t,t=n}e=e||this.activeState.renderTexture;const r=this.texturePool.getOptimalTexture(e.width,e.height,t||e.resolution,i||ft.NONE);return r.filterFrame=e.filterFrame,r}returnFilterTexture(e){this.texturePool.returnTexture(e)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(e,t){const i=Ra[0],r=Ra[1],n=Ra[2],a=Ra[3];i.set(t.left,t.top),r.set(t.left,t.bottom),n.set(t.right,t.top),a.set(t.right,t.bottom),e.apply(i,i),e.apply(r,r),e.apply(n,n),e.apply(a,a);const o=Math.min(i.x,r.x,n.x,a.x),l=Math.min(i.y,r.y,n.y,a.y),c=Math.max(i.x,r.x,n.x,a.x),u=Math.max(i.y,r.y,n.y,a.y);t.x=o,t.y=l,t.width=c-o,t.height=u-l}roundFrame(e,t,i,r,n){if(!(e.width<=0||e.height<=0||i.width<=0||i.height<=0)){if(n){const{a,b:o,c:l,d:c}=n;if((Math.abs(o)>1e-4||Math.abs(l)>1e-4)&&(Math.abs(a)>1e-4||Math.abs(c)>1e-4))return}n=n?Vl.copyFrom(n):Vl.identity(),n.translate(-i.x,-i.y).scale(r.width/i.width,r.height/i.height).translate(r.x,r.y),this.transformAABB(n,e),e.ceil(t),this.transformAABB(n.invert(),e)}}}Jf.extension={type:ae.RendererSystem,name:"filter"};me.add(Jf);class ob{constructor(e){this.framebuffer=e,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=ft.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}const lb=new Me;class Zf{constructor(e){this.renderer=e,this.managedFramebuffers=[],this.unknownFramebuffer=new Yh(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);const e=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new Me,this.hasMRT=!0,this.writeDepthTexture=!0,this.renderer.context.webGLVersion===1){let t=this.renderer.context.extensions.drawBuffers,i=this.renderer.context.extensions.depthTexture;de.PREFER_ENV===wr.WEBGL_LEGACY&&(t=null,i=null),t?e.drawBuffers=r=>t.drawBuffersWEBGL(r):(this.hasMRT=!1,e.drawBuffers=()=>{}),i||(this.writeDepthTexture=!1)}else this.msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}bind(e,t,i=0){const{gl:r}=this;if(e){const n=e.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(e);this.current!==e&&(this.current=e,r.bindFramebuffer(r.FRAMEBUFFER,n.framebuffer)),n.mipLevel!==i&&(e.dirtyId++,e.dirtyFormat++,n.mipLevel=i),n.dirtyId!==e.dirtyId&&(n.dirtyId=e.dirtyId,n.dirtyFormat!==e.dirtyFormat?(n.dirtyFormat=e.dirtyFormat,n.dirtySize=e.dirtySize,this.updateFramebuffer(e,i)):n.dirtySize!==e.dirtySize&&(n.dirtySize=e.dirtySize,this.resizeFramebuffer(e)));for(let a=0;a>i,o=t.height>>i,l=a/t.width;this.setViewport(t.x*l,t.y*l,a,o)}else{const a=e.width>>i,o=e.height>>i;this.setViewport(0,0,a,o)}}else this.current&&(this.current=null,r.bindFramebuffer(r.FRAMEBUFFER,null)),t?this.setViewport(t.x,t.y,t.width,t.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(e,t,i,r){const n=this.viewport;e=Math.round(e),t=Math.round(t),i=Math.round(i),r=Math.round(r),(n.width!==i||n.height!==r||n.x!==e||n.y!==t)&&(n.x=e,n.y=t,n.width=i,n.height=r,this.gl.viewport(e,t,i,r))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(e,t,i,r,n=vh.COLOR|vh.DEPTH){const{gl:a}=this;a.clearColor(e,t,i,r),a.clear(n)}initFramebuffer(e){const{gl:t}=this,i=new ob(t.createFramebuffer());return i.multisample=this.detectSamples(e.multisample),e.glFramebuffers[this.CONTEXT_UID]=i,this.managedFramebuffers.push(e),e.disposeRunner.add(this),i}resizeFramebuffer(e){const{gl:t}=this,i=e.glFramebuffers[this.CONTEXT_UID];if(i.stencil){t.bindRenderbuffer(t.RENDERBUFFER,i.stencil);let a;this.renderer.context.webGLVersion===1?a=t.DEPTH_STENCIL:e.depth&&e.stencil?a=t.DEPTH24_STENCIL8:e.depth?a=t.DEPTH_COMPONENT24:a=t.STENCIL_INDEX8,i.msaaBuffer?t.renderbufferStorageMultisample(t.RENDERBUFFER,i.multisample,a,e.width,e.height):t.renderbufferStorage(t.RENDERBUFFER,a,e.width,e.height)}const r=e.colorTextures;let n=r.length;t.drawBuffers||(n=Math.min(n,1));for(let a=0;a1&&this.canMultisampleFramebuffer(e)?r.msaaBuffer=r.msaaBuffer||i.createRenderbuffer():r.msaaBuffer&&(i.deleteRenderbuffer(r.msaaBuffer),r.msaaBuffer=null,r.blitFramebuffer&&(r.blitFramebuffer.dispose(),r.blitFramebuffer=null));const o=[];for(let l=0;l1&&i.drawBuffers(o),e.depthTexture&&this.writeDepthTexture){const l=e.depthTexture;this.renderer.texture.bind(l,0),i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,l._glTextures[this.CONTEXT_UID].texture,t)}if((e.stencil||e.depth)&&!(e.depthTexture&&this.writeDepthTexture)){r.stencil=r.stencil||i.createRenderbuffer();let l,c;this.renderer.context.webGLVersion===1?(l=i.DEPTH_STENCIL_ATTACHMENT,c=i.DEPTH_STENCIL):e.depth&&e.stencil?(l=i.DEPTH_STENCIL_ATTACHMENT,c=i.DEPTH24_STENCIL8):e.depth?(l=i.DEPTH_ATTACHMENT,c=i.DEPTH_COMPONENT24):(l=i.STENCIL_ATTACHMENT,c=i.STENCIL_INDEX8),i.bindRenderbuffer(i.RENDERBUFFER,r.stencil),r.msaaBuffer?i.renderbufferStorageMultisample(i.RENDERBUFFER,r.multisample,c,e.width,e.height):i.renderbufferStorage(i.RENDERBUFFER,c,e.width,e.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,l,i.RENDERBUFFER,r.stencil)}else r.stencil&&(i.deleteRenderbuffer(r.stencil),r.stencil=null)}canMultisampleFramebuffer(e){return this.renderer.context.webGLVersion!==1&&e.colorTextures.length<=1&&!e.depthTexture}detectSamples(e){const{msaaSamples:t}=this;let i=ft.NONE;if(e<=1||t===null)return i;for(let r=0;r=0&&this.managedFramebuffers.splice(n,1),e.disposeRunner.remove(this),t||(r.deleteFramebuffer(i.framebuffer),i.msaaBuffer&&r.deleteRenderbuffer(i.msaaBuffer),i.stencil&&r.deleteRenderbuffer(i.stencil)),i.blitFramebuffer&&this.disposeFramebuffer(i.blitFramebuffer,t)}disposeAll(e){const t=this.managedFramebuffers;this.managedFramebuffers=[];for(let i=0;ii.createVertexArrayOES(),e.bindVertexArray=r=>i.bindVertexArrayOES(r),e.deleteVertexArray=r=>i.deleteVertexArrayOES(r)):(this.hasVao=!1,e.createVertexArray=()=>null,e.bindVertexArray=()=>null,e.deleteVertexArray=()=>null)}if(t.webGLVersion!==2){const i=e.getExtension("ANGLE_instanced_arrays");i?(e.vertexAttribDivisor=(r,n)=>i.vertexAttribDivisorANGLE(r,n),e.drawElementsInstanced=(r,n,a,o,l)=>i.drawElementsInstancedANGLE(r,n,a,o,l),e.drawArraysInstanced=(r,n,a,o)=>i.drawArraysInstancedANGLE(r,n,a,o)):this.hasInstance=!1}this.canUseUInt32ElementIndex=t.webGLVersion===2||!!t.extensions.uint32ElementIndex}bind(e,t){t=t||this.renderer.shader.shader;const{gl:i}=this;let r=e.glVertexArrayObjects[this.CONTEXT_UID],n=!1;r||(this.managedGeometries[e.id]=e,e.disposeRunner.add(this),e.glVertexArrayObjects[this.CONTEXT_UID]=r={},n=!0);const a=r[t.program.id]||this.initGeometryVao(e,t,n);this._activeGeometry=e,this._activeVao!==a&&(this._activeVao=a,this.hasVao?i.bindVertexArray(a):this.activateVao(e,t.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const e=this._activeGeometry,t=this.renderer.buffer;for(let i=0;i"u"?.5:t,this.isSimple=!1}get texture(){return this._texture}set texture(e){this._texture=e,this._textureID=-1}multiplyUvs(e,t){t===void 0&&(t=e);const i=this.mapCoord;for(let r=0;r0?this.maskStack[this.maskStack.length-1]._colorMask:15;i!==t&&this.renderer.gl.colorMask((i&1)!==0,(i&2)!==0,(i&4)!==0,(i&8)!==0)}destroy(){this.renderer=null}}tm.extension={type:ae.RendererSystem,name:"mask"};me.add(tm);class im{constructor(e){this.renderer=e,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(e){const{gl:t}=this.renderer,i=this.getStackLength();this.maskStack=e;const r=this.getStackLength();r!==i&&(r===0?t.disable(this.glConst):(t.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const ku=new $e,Bu=[],sm=class oo extends im{constructor(e){super(e),this.glConst=de.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0}calcScissorRect(e){if(e._scissorRectLocal)return;const t=e._scissorRect,{maskObject:i}=e,{renderer:r}=this,n=r.renderTexture,a=i.getBounds(!0,Bu.pop()??new Me);this.roundFrameToPixels(a,n.current?n.current.resolution:r.resolution,n.sourceFrame,n.destinationFrame,r.projection.transform),t&&a.fit(t),e._scissorRectLocal=a}static isMatrixRotated(e){if(!e)return!1;const{a:t,b:i,c:r,d:n}=e;return(Math.abs(i)>1e-4||Math.abs(r)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(n)>1e-4)}testScissor(e){const{maskObject:t}=e;if(!t.isFastRect||!t.isFastRect()||oo.isMatrixRotated(t.worldTransform)||oo.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);const i=e._scissorRectLocal;return i.width>0&&i.height>0}roundFrameToPixels(e,t,i,r,n){oo.isMatrixRotated(n)||(n=n?ku.copyFrom(n):ku.identity(),n.translate(-i.x,-i.y).scale(r.width/i.width,r.height/i.height).translate(r.x,r.y),this.renderer.filter.transformAABB(n,e),e.fit(r),e.x=Math.round(e.x*t),e.y=Math.round(e.y*t),e.width=Math.round(e.width*t),e.height=Math.round(e.height*t))}push(e){e._scissorRectLocal||this.calcScissorRect(e);const{gl:t}=this.renderer;e._scissorRect||t.enable(t.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()}pop(e){const{gl:t}=this.renderer;e&&Bu.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const e=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=e.y:t=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,t,e.width,e.height)}};sm.extension={type:ae.RendererSystem,name:"scissor"};let pb=sm;me.add(pb);class rm extends im{constructor(e){super(e),this.glConst=de.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0}push(e){const t=e.maskObject,{gl:i}=this.renderer,r=e._stencilCounter;r===0&&(this.renderer.framebuffer.forceStencil(),i.clearStencil(0),i.clear(i.STENCIL_BUFFER_BIT),i.enable(i.STENCIL_TEST)),e._stencilCounter++;const n=e._colorMask;n!==0&&(e._colorMask=0,i.colorMask(!1,!1,!1,!1)),i.stencilFunc(i.EQUAL,r,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.INCR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,n!==0&&(e._colorMask=n,i.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}pop(e){const t=this.renderer.gl;if(this.getStackLength()===0)t.disable(t.STENCIL_TEST);else{const i=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,r=i?i._colorMask:15;r!==0&&(i._colorMask=0,t.colorMask(!1,!1,!1,!1)),t.stencilOp(t.KEEP,t.KEEP,t.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,r!==0&&(i._colorMask=r,t.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}}_useCurrent(){const e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)}}rm.extension={type:ae.RendererSystem,name:"stencil"};me.add(rm);class nm{constructor(e){this.renderer=e,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return Ne("7.0.0","renderer.plugins.extract has moved to renderer.extract"),e.extract}},prepare:{enumerable:!1,get(){return Ne("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),e.prepare}},interaction:{enumerable:!1,get(){return Ne("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),e.events}}})}init(){const e=this.rendererPlugins;for(const t in e)this.plugins[t]=new e[t](this.renderer)}destroy(){for(const e in this.plugins)this.plugins[e].destroy(),this.plugins[e]=null}}nm.extension={type:[ae.RendererSystem,ae.CanvasRendererSystem],name:"_plugin"};me.add(nm);class am{constructor(e){this.renderer=e,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new $e,this.transform=null}update(e,t,i,r){this.destinationFrame=e||this.destinationFrame||this.defaultFrame,this.sourceFrame=t||this.sourceFrame||e,this.calculateProjection(this.destinationFrame,this.sourceFrame,i,r),this.transform&&this.projectionMatrix.append(this.transform);const n=this.renderer;n.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,n.globalUniforms.update(),n.shader.shader&&n.shader.syncUniformGroup(n.shader.shader.uniforms.globals)}calculateProjection(e,t,i,r){const n=this.projectionMatrix,a=r?-1:1;n.identity(),n.a=1/t.width*2,n.d=a*(1/t.height*2),n.tx=-1-t.x*n.a,n.ty=-a-t.y*n.d}setTransform(e){}destroy(){this.renderer=null}}am.extension={type:ae.RendererSystem,name:"projection"};me.add(am);const fb=new Gc,Iu=new Me;class om{constructor(e){this.renderer=e,this._tempMatrix=new $e}generateTexture(e,t){const{region:i,...r}=t||{},n=i?.copyTo(Iu)||e.getLocalBounds(Iu,!0),a=r.resolution||this.renderer.resolution;n.width=Math.max(n.width,1/a),n.height=Math.max(n.height,1/a),r.width=n.width,r.height=n.height,r.resolution=a,r.multisample??(r.multisample=this.renderer.multisample);const o=Rt.create(r);this._tempMatrix.tx=-n.x,this._tempMatrix.ty=-n.y;const l=e.transform;return e.transform=fb,this.renderer.render(e,{renderTexture:o,transform:this._tempMatrix,skipUpdateTransform:!!e.parent,blit:!0}),e.transform=l,o}destroy(){}}om.extension={type:[ae.RendererSystem,ae.CanvasRendererSystem],name:"textureGenerator"};me.add(om);const js=new Me,Sn=new Me;class lm{constructor(e){this.renderer=e,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new Me,this.destinationFrame=new Me,this.viewportFrame=new Me}contextChange(){const e=this.renderer?.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(e=null,t,i){const r=this.renderer;this.current=e;let n,a,o;e?(n=e.baseTexture,o=n.resolution,t||(js.width=e.frame.width,js.height=e.frame.height,t=js),i||(Sn.x=e.frame.x,Sn.y=e.frame.y,Sn.width=t.width,Sn.height=t.height,i=Sn),a=n.framebuffer):(o=r.resolution,t||(js.width=r._view.screen.width,js.height=r._view.screen.height,t=js),i||(i=js,i.width=t.width,i.height=t.height));const l=this.viewportFrame;l.x=i.x*o,l.y=i.y*o,l.width=i.width*o,l.height=i.height*o,e||(l.y=r.view.height-(l.y+l.height)),l.ceil(),this.renderer.framebuffer.bind(a,l),this.renderer.projection.update(i,t,o,!a),e?this.renderer.mask.setMaskStack(n.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(t),this.destinationFrame.copyFrom(i)}clear(e,t){const i=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,r=Ze.shared.setValue(e||i);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&r.premultiply(r.alpha);const n=this.destinationFrame,a=this.current?this.current.baseTexture:this.renderer._view.screen,o=n.width!==a.width||n.height!==a.height;if(o){let{x:l,y:c,width:u,height:h}=this.viewportFrame;l=Math.round(l),c=Math.round(c),u=Math.round(u),h=Math.round(h),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(l,c,u,h)}this.renderer.framebuffer.clear(r.red,r.green,r.blue,r.alpha,t),o&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}lm.extension={type:ae.RendererSystem,name:"renderTexture"};me.add(lm);class mb{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function gb(s,e){const t={},i=e.getProgramParameter(s,e.ACTIVE_ATTRIBUTES);for(let r=0;rl>c?1:-1);for(let l=0;l0?this.maskStack[this.maskStack.length-1]._colorMask:15;i!==t&&this.renderer.gl.colorMask((i&1)!==0,(i&2)!==0,(i&4)!==0,(i&8)!==0)}destroy(){this.renderer=null}}tm.extension={type:ae.RendererSystem,name:"mask"};me.add(tm);class im{constructor(e){this.renderer=e,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(e){const{gl:t}=this.renderer,i=this.getStackLength();this.maskStack=e;const r=this.getStackLength();r!==i&&(r===0?t.disable(this.glConst):(t.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const ku=new $e,Bu=[],sm=class oo extends im{constructor(e){super(e),this.glConst=de.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0}calcScissorRect(e){if(e._scissorRectLocal)return;const t=e._scissorRect,{maskObject:i}=e,{renderer:r}=this,n=r.renderTexture,a=i.getBounds(!0,Bu.pop()??new Me);this.roundFrameToPixels(a,n.current?n.current.resolution:r.resolution,n.sourceFrame,n.destinationFrame,r.projection.transform),t&&a.fit(t),e._scissorRectLocal=a}static isMatrixRotated(e){if(!e)return!1;const{a:t,b:i,c:r,d:n}=e;return(Math.abs(i)>1e-4||Math.abs(r)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(n)>1e-4)}testScissor(e){const{maskObject:t}=e;if(!t.isFastRect||!t.isFastRect()||oo.isMatrixRotated(t.worldTransform)||oo.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);const i=e._scissorRectLocal;return i.width>0&&i.height>0}roundFrameToPixels(e,t,i,r,n){oo.isMatrixRotated(n)||(n=n?ku.copyFrom(n):ku.identity(),n.translate(-i.x,-i.y).scale(r.width/i.width,r.height/i.height).translate(r.x,r.y),this.renderer.filter.transformAABB(n,e),e.fit(r),e.x=Math.round(e.x*t),e.y=Math.round(e.y*t),e.width=Math.round(e.width*t),e.height=Math.round(e.height*t))}push(e){e._scissorRectLocal||this.calcScissorRect(e);const{gl:t}=this.renderer;e._scissorRect||t.enable(t.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()}pop(e){const{gl:t}=this.renderer;e&&Bu.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const e=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=e.y:t=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,t,e.width,e.height)}};sm.extension={type:ae.RendererSystem,name:"scissor"};let pb=sm;me.add(pb);class rm extends im{constructor(e){super(e),this.glConst=de.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0}push(e){const t=e.maskObject,{gl:i}=this.renderer,r=e._stencilCounter;r===0&&(this.renderer.framebuffer.forceStencil(),i.clearStencil(0),i.clear(i.STENCIL_BUFFER_BIT),i.enable(i.STENCIL_TEST)),e._stencilCounter++;const n=e._colorMask;n!==0&&(e._colorMask=0,i.colorMask(!1,!1,!1,!1)),i.stencilFunc(i.EQUAL,r,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.INCR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,n!==0&&(e._colorMask=n,i.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}pop(e){const t=this.renderer.gl;if(this.getStackLength()===0)t.disable(t.STENCIL_TEST);else{const i=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,r=i?i._colorMask:15;r!==0&&(i._colorMask=0,t.colorMask(!1,!1,!1,!1)),t.stencilOp(t.KEEP,t.KEEP,t.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,r!==0&&(i._colorMask=r,t.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}}_useCurrent(){const e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)}}rm.extension={type:ae.RendererSystem,name:"stencil"};me.add(rm);class nm{constructor(e){this.renderer=e,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return Ne("7.0.0","renderer.plugins.extract has moved to renderer.extract"),e.extract}},prepare:{enumerable:!1,get(){return Ne("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),e.prepare}},interaction:{enumerable:!1,get(){return Ne("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),e.events}}})}init(){const e=this.rendererPlugins;for(const t in e)this.plugins[t]=new e[t](this.renderer)}destroy(){for(const e in this.plugins)this.plugins[e].destroy(),this.plugins[e]=null}}nm.extension={type:[ae.RendererSystem,ae.CanvasRendererSystem],name:"_plugin"};me.add(nm);class am{constructor(e){this.renderer=e,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new $e,this.transform=null}update(e,t,i,r){this.destinationFrame=e||this.destinationFrame||this.defaultFrame,this.sourceFrame=t||this.sourceFrame||e,this.calculateProjection(this.destinationFrame,this.sourceFrame,i,r),this.transform&&this.projectionMatrix.append(this.transform);const n=this.renderer;n.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,n.globalUniforms.update(),n.shader.shader&&n.shader.syncUniformGroup(n.shader.shader.uniforms.globals)}calculateProjection(e,t,i,r){const n=this.projectionMatrix,a=r?-1:1;n.identity(),n.a=1/t.width*2,n.d=a*(1/t.height*2),n.tx=-1-t.x*n.a,n.ty=-a-t.y*n.d}setTransform(e){}destroy(){this.renderer=null}}am.extension={type:ae.RendererSystem,name:"projection"};me.add(am);const fb=new Gc,Iu=new Me;class om{constructor(e){this.renderer=e,this._tempMatrix=new $e}generateTexture(e,t){const{region:i,...r}=t||{},n=i?.copyTo(Iu)||e.getLocalBounds(Iu,!0),a=r.resolution||this.renderer.resolution;n.width=Math.max(n.width,1/a),n.height=Math.max(n.height,1/a),r.width=n.width,r.height=n.height,r.resolution=a,r.multisample??(r.multisample=this.renderer.multisample);const o=Lt.create(r);this._tempMatrix.tx=-n.x,this._tempMatrix.ty=-n.y;const l=e.transform;return e.transform=fb,this.renderer.render(e,{renderTexture:o,transform:this._tempMatrix,skipUpdateTransform:!!e.parent,blit:!0}),e.transform=l,o}destroy(){}}om.extension={type:[ae.RendererSystem,ae.CanvasRendererSystem],name:"textureGenerator"};me.add(om);const js=new Me,Sn=new Me;class lm{constructor(e){this.renderer=e,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new Me,this.destinationFrame=new Me,this.viewportFrame=new Me}contextChange(){const e=this.renderer?.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(e=null,t,i){const r=this.renderer;this.current=e;let n,a,o;e?(n=e.baseTexture,o=n.resolution,t||(js.width=e.frame.width,js.height=e.frame.height,t=js),i||(Sn.x=e.frame.x,Sn.y=e.frame.y,Sn.width=t.width,Sn.height=t.height,i=Sn),a=n.framebuffer):(o=r.resolution,t||(js.width=r._view.screen.width,js.height=r._view.screen.height,t=js),i||(i=js,i.width=t.width,i.height=t.height));const l=this.viewportFrame;l.x=i.x*o,l.y=i.y*o,l.width=i.width*o,l.height=i.height*o,e||(l.y=r.view.height-(l.y+l.height)),l.ceil(),this.renderer.framebuffer.bind(a,l),this.renderer.projection.update(i,t,o,!a),e?this.renderer.mask.setMaskStack(n.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(t),this.destinationFrame.copyFrom(i)}clear(e,t){const i=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,r=Ze.shared.setValue(e||i);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&r.premultiply(r.alpha);const n=this.destinationFrame,a=this.current?this.current.baseTexture:this.renderer._view.screen,o=n.width!==a.width||n.height!==a.height;if(o){let{x:l,y:c,width:u,height:h}=this.viewportFrame;l=Math.round(l),c=Math.round(c),u=Math.round(u),h=Math.round(h),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(l,c,u,h)}this.renderer.framebuffer.clear(r.red,r.green,r.blue,r.alpha,t),o&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}lm.extension={type:ae.RendererSystem,name:"renderTexture"};me.add(lm);class mb{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function gb(s,e){const t={},i=e.getProgramParameter(s,e.ACTIVE_ATTRIBUTES);for(let r=0;rl>c?1:-1);for(let l=0;l>1,i++;this.stateId=e.data}for(let t=0;te.systems[r]),i=[...t,...Object.keys(e.systems).filter(r=>!t.includes(r))];for(const r of i)this.addSystem(e.systems[r],r)}addRunners(...e){e.forEach(t=>{this.runners[t]=new Ei(t)})}addSystem(e,t){const i=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=i,this._systemsHash[t]=i;for(const r in this.runners)this.runners[r].add(i);return this}emitWithCustomOptions(e,t){const i=Object.keys(this._systemsHash);e.items.forEach(r=>{const n=i.find(a=>this._systemsHash[a]===r);r[e.name](t[n])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}}const Ln=class lo{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=lo.defaultMaxIdle,this.checkCountMax=lo.defaultCheckCountMax,this.mode=lo.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==Ic.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const e=this.renderer.texture,t=e.managedTextures;let i=!1;for(let r=0;rthis.maxIdle&&(e.destroyTexture(n,!0),t[r]=null,i=!0)}if(i){let r=0;for(let n=0;n=0;r--)this.unload(e.children[r])}destroy(){this.renderer=null}};Ln.defaultMode=Ic.AUTO,Ln.defaultMaxIdle=60*60,Ln.defaultCheckCountMax=60*10,Ln.extension={type:ae.RendererSystem,name:"textureGC"};let $s=Ln;me.add($s);class zl{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=we.UNSIGNED_BYTE,this.internalFormat=se.RGBA,this.samplerType=0}}function Lb(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[s.RGB]:ce.FLOAT,[s.RGBA]:ce.FLOAT,[s.ALPHA]:ce.FLOAT,[s.LUMINANCE]:ce.FLOAT,[s.LUMINANCE_ALPHA]:ce.FLOAT,[s.R8]:ce.FLOAT,[s.R8_SNORM]:ce.FLOAT,[s.RG8]:ce.FLOAT,[s.RG8_SNORM]:ce.FLOAT,[s.RGB8]:ce.FLOAT,[s.RGB8_SNORM]:ce.FLOAT,[s.RGB565]:ce.FLOAT,[s.RGBA4]:ce.FLOAT,[s.RGB5_A1]:ce.FLOAT,[s.RGBA8]:ce.FLOAT,[s.RGBA8_SNORM]:ce.FLOAT,[s.RGB10_A2]:ce.FLOAT,[s.RGB10_A2UI]:ce.FLOAT,[s.SRGB8]:ce.FLOAT,[s.SRGB8_ALPHA8]:ce.FLOAT,[s.R16F]:ce.FLOAT,[s.RG16F]:ce.FLOAT,[s.RGB16F]:ce.FLOAT,[s.RGBA16F]:ce.FLOAT,[s.R32F]:ce.FLOAT,[s.RG32F]:ce.FLOAT,[s.RGB32F]:ce.FLOAT,[s.RGBA32F]:ce.FLOAT,[s.R11F_G11F_B10F]:ce.FLOAT,[s.RGB9_E5]:ce.FLOAT,[s.R8I]:ce.INT,[s.R8UI]:ce.UINT,[s.R16I]:ce.INT,[s.R16UI]:ce.UINT,[s.R32I]:ce.INT,[s.R32UI]:ce.UINT,[s.RG8I]:ce.INT,[s.RG8UI]:ce.UINT,[s.RG16I]:ce.INT,[s.RG16UI]:ce.UINT,[s.RG32I]:ce.INT,[s.RG32UI]:ce.UINT,[s.RGB8I]:ce.INT,[s.RGB8UI]:ce.UINT,[s.RGB16I]:ce.INT,[s.RGB16UI]:ce.UINT,[s.RGB32I]:ce.INT,[s.RGB32UI]:ce.UINT,[s.RGBA8I]:ce.INT,[s.RGBA8UI]:ce.UINT,[s.RGBA16I]:ce.INT,[s.RGBA16UI]:ce.UINT,[s.RGBA32I]:ce.INT,[s.RGBA32UI]:ce.UINT,[s.DEPTH_COMPONENT16]:ce.FLOAT,[s.DEPTH_COMPONENT24]:ce.FLOAT,[s.DEPTH_COMPONENT32F]:ce.FLOAT,[s.DEPTH_STENCIL]:ce.FLOAT,[s.DEPTH24_STENCIL8]:ce.FLOAT,[s.DEPTH32F_STENCIL8]:ce.FLOAT}:e={[s.RGB]:ce.FLOAT,[s.RGBA]:ce.FLOAT,[s.ALPHA]:ce.FLOAT,[s.LUMINANCE]:ce.FLOAT,[s.LUMINANCE_ALPHA]:ce.FLOAT,[s.DEPTH_STENCIL]:ce.FLOAT},e}function Db(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[we.UNSIGNED_BYTE]:{[se.RGBA]:s.RGBA8,[se.RGB]:s.RGB8,[se.RG]:s.RG8,[se.RED]:s.R8,[se.RGBA_INTEGER]:s.RGBA8UI,[se.RGB_INTEGER]:s.RGB8UI,[se.RG_INTEGER]:s.RG8UI,[se.RED_INTEGER]:s.R8UI,[se.ALPHA]:s.ALPHA,[se.LUMINANCE]:s.LUMINANCE,[se.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[we.BYTE]:{[se.RGBA]:s.RGBA8_SNORM,[se.RGB]:s.RGB8_SNORM,[se.RG]:s.RG8_SNORM,[se.RED]:s.R8_SNORM,[se.RGBA_INTEGER]:s.RGBA8I,[se.RGB_INTEGER]:s.RGB8I,[se.RG_INTEGER]:s.RG8I,[se.RED_INTEGER]:s.R8I},[we.UNSIGNED_SHORT]:{[se.RGBA_INTEGER]:s.RGBA16UI,[se.RGB_INTEGER]:s.RGB16UI,[se.RG_INTEGER]:s.RG16UI,[se.RED_INTEGER]:s.R16UI,[se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT16},[we.SHORT]:{[se.RGBA_INTEGER]:s.RGBA16I,[se.RGB_INTEGER]:s.RGB16I,[se.RG_INTEGER]:s.RG16I,[se.RED_INTEGER]:s.R16I},[we.UNSIGNED_INT]:{[se.RGBA_INTEGER]:s.RGBA32UI,[se.RGB_INTEGER]:s.RGB32UI,[se.RG_INTEGER]:s.RG32UI,[se.RED_INTEGER]:s.R32UI,[se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT24},[we.INT]:{[se.RGBA_INTEGER]:s.RGBA32I,[se.RGB_INTEGER]:s.RGB32I,[se.RG_INTEGER]:s.RG32I,[se.RED_INTEGER]:s.R32I},[we.FLOAT]:{[se.RGBA]:s.RGBA32F,[se.RGB]:s.RGB32F,[se.RG]:s.RG32F,[se.RED]:s.R32F,[se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT32F},[we.HALF_FLOAT]:{[se.RGBA]:s.RGBA16F,[se.RGB]:s.RGB16F,[se.RG]:s.RG16F,[se.RED]:s.R16F},[we.UNSIGNED_SHORT_5_6_5]:{[se.RGB]:s.RGB565},[we.UNSIGNED_SHORT_4_4_4_4]:{[se.RGBA]:s.RGBA4},[we.UNSIGNED_SHORT_5_5_5_1]:{[se.RGBA]:s.RGB5_A1},[we.UNSIGNED_INT_2_10_10_10_REV]:{[se.RGBA]:s.RGB10_A2,[se.RGBA_INTEGER]:s.RGB10_A2UI},[we.UNSIGNED_INT_10F_11F_11F_REV]:{[se.RGB]:s.R11F_G11F_B10F},[we.UNSIGNED_INT_5_9_9_9_REV]:{[se.RGB]:s.RGB9_E5},[we.UNSIGNED_INT_24_8]:{[se.DEPTH_STENCIL]:s.DEPTH24_STENCIL8},[we.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[se.DEPTH_STENCIL]:s.DEPTH32F_STENCIL8}}:e={[we.UNSIGNED_BYTE]:{[se.RGBA]:s.RGBA,[se.RGB]:s.RGB,[se.ALPHA]:s.ALPHA,[se.LUMINANCE]:s.LUMINANCE,[se.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[we.UNSIGNED_SHORT_5_6_5]:{[se.RGB]:s.RGB},[we.UNSIGNED_SHORT_4_4_4_4]:{[se.RGBA]:s.RGBA},[we.UNSIGNED_SHORT_5_5_5_1]:{[se.RGBA]:s.RGBA}},e}class um{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new ke,this.hasIntegerTextures=!1}contextChange(){const e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=Db(e),this.samplerTypes=Lb(e);const t=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=t;for(let r=0;r=0;--n){const a=t[n];a&&a._glTextures[r].samplerType!==ce.FLOAT&&this.renderer.texture.unbind(a)}}initTexture(e){const t=new zl(this.gl.createTexture());return t.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=t,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),t}initTextureType(e,t){t.internalFormat=this.internalFormats[e.type]?.[e.format]??e.format,t.samplerType=this.samplerTypes[t.internalFormat]??ce.FLOAT,this.webGLVersion===2&&e.type===we.HALF_FLOAT?t.type=this.gl.HALF_FLOAT:t.type=e.type}updateTexture(e){const t=e._glTextures[this.CONTEXT_UID];if(!t)return;const i=this.renderer;if(this.initTextureType(e,t),e.resource?.upload(i,e,t))t.samplerType!==ce.FLOAT&&(this.hasIntegerTextures=!0);else{const r=e.realWidth,n=e.realHeight,a=i.gl;(t.width!==r||t.height!==n||t.dirtyId<0)&&(t.width=r,t.height=n,a.texImage2D(e.target,0,t.internalFormat,r,n,0,e.format,t.type,null))}e.dirtyStyleId!==t.dirtyStyleId&&this.updateTextureStyle(e),t.dirtyId=e.dirtyId}destroyTexture(e,t){const{gl:i}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),i.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!t)){const r=this.managedTextures.indexOf(e);r!==-1&&Qr(this.managedTextures,r,1)}}updateTextureStyle(e){const t=e._glTextures[this.CONTEXT_UID];t&&((e.mipmap===Xi.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?t.mipmap=!1:t.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?t.wrapMode=Ds.CLAMP:t.wrapMode=e.wrapMode,e.resource?.style(this.renderer,e,t)||this.setStyle(e,t),t.dirtyStyleId=e.dirtyStyleId)}setStyle(e,t){const i=this.gl;if(t.mipmap&&e.mipmap!==Xi.ON_MANUAL&&i.generateMipmap(e.target),i.texParameteri(e.target,i.TEXTURE_WRAP_S,t.wrapMode),i.texParameteri(e.target,i.TEXTURE_WRAP_T,t.wrapMode),t.mipmap){i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===is.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);const r=this.renderer.context.extensions.anisotropicFiltering;if(r&&e.anisotropicLevel>0&&e.scaleMode===is.LINEAR){const n=Math.min(e.anisotropicLevel,i.getParameter(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(e.target,r.TEXTURE_MAX_ANISOTROPY_EXT,n)}}else i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===is.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(e.target,i.TEXTURE_MAG_FILTER,e.scaleMode===is.LINEAR?i.LINEAR:i.NEAREST)}destroy(){this.renderer=null}}um.extension={type:ae.RendererSystem,name:"texture"};me.add(um);class pm{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,r=e._glTransformFeedbacks[i]||this.createGLTransformFeedback(e);t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,r)}unbind(){const{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,t){const{gl:i,renderer:r}=this;t&&r.shader.bind(t),i.beginTransformFeedback(e)}endTransformFeedback(){const{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){const{gl:t,renderer:i,CONTEXT_UID:r}=this,n=t.createTransformFeedback();e._glTransformFeedbacks[r]=n,t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,n);for(let a=0;a(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(Fs||{});class Yl{constructor(e,t=null,i=0,r=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=t,this.priority=i,this.once=r}match(e,t=null){return this.fn===e&&this.context===t}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));const t=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const fm=class jt{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new Yl(null,null,1/0),this.deltaMS=1/jt.targetFPMS,this.elapsedMS=1/jt.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,i=Fs.NORMAL){return this._addListener(new Yl(e,t,i))}addOnce(e,t,i=Fs.NORMAL){return this._addListener(new Yl(e,t,i,!0))}_addListener(e){let t=this._head.next,i=this._head;if(!t)e.connect(i);else{for(;t;){if(e.priority>t.priority){e.connect(i);break}i=t,t=t.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,t){let i=this._head.next;for(;i;)i.match(e,t)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const n=e-this._lastFrame|0;if(n{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?xt.shared:new xt,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}mm.extension=ae.Application;me.add(mm);const gm=[];me.handleByList(ae.Renderer,gm);function Ob(s){for(const e of gm)if(e.test(s))return new e(s);throw new Error("Unable to auto-detect a suitable renderer.")}var Fb=`attribute vec2 aVertexPosition; +`))}}let _b=0;const La={textureCount:0,uboCount:0};class cm{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=_b++}systemCheck(){if(!qA())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,t){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;const i=e.program,r=i.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==i&&(this.program=i,this.gl.useProgram(r.program)),t||(La.textureCount=0,La.uboCount=0,this.syncUniformGroup(e.uniformGroup,La)),r}setUniforms(e){const t=this.shader.program,i=t.glPrograms[this.renderer.CONTEXT_UID];t.syncUniforms(i.uniformData,e,this.renderer)}syncUniformGroup(e,t){const i=this.getGlProgram();(!e.static||e.dirtyId!==i.uniformDirtyGroups[e.id])&&(i.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,i,t))}syncUniforms(e,t,i){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(t.uniformData,e.uniforms,this.renderer,i)}createSyncGroups(e){const t=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[t]||(this.cache[t]=zA(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[t],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,t){const i=this.getGlProgram();if(!e.static||e.dirtyId!==0||!i.uniformGroups[e.id]){e.dirtyId=0;const r=i.uniformGroups[e.id]||this.createSyncBufferGroup(e,i,t);e.buffer.update(),r(i.uniformData,e.uniforms,this.renderer,La,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,i.uniformBufferBindings[t])}createSyncBufferGroup(e,t,i){const{gl:r}=this.renderer;this.renderer.buffer.bind(e.buffer);const n=this.gl.getUniformBlockIndex(t.program,i);t.uniformBufferBindings[i]=this.shader.uniformBindCount,r.uniformBlockBinding(t.program,n,this.shader.uniformBindCount),this.shader.uniformBindCount++;const a=this.getSignature(e,this.shader.program.uniformData,"ubo");let o=this._uboCache[a];if(o||(o=this._uboCache[a]=Eb(e,this.shader.program.uniformData)),e.autoManage){const l=new Float32Array(o.size/4);e.buffer.update(l)}return t.uniformGroups[e.id]=o.syncFunc,t.uniformGroups[e.id]}getSignature(e,t,i){const r=e.uniforms,n=[`${i}-`];for(const a in r)n.push(a),t[a]&&n.push(t[a].type);return n.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){const t=this.gl,i=e.program,r=vb(t,i);return i.glPrograms[this.renderer.CONTEXT_UID]=r,r}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}cm.extension={type:ae.RendererSystem,name:"shader"};me.add(cm);class Mo{constructor(e){this.renderer=e}run(e){const{renderer:t}=this;t.runners.init.emit(t.options),e.hello&&console.log(`PixiJS 7.4.2 - ${t.rendererLogId} - https://pixijs.com`),t.resize(t.screen.width,t.screen.height)}destroy(){}}Mo.defaultOptions={hello:!1},Mo.extension={type:[ae.RendererSystem,ae.CanvasRendererSystem],name:"startup"};me.add(Mo);function Tb(s,e=[]){return e[Se.NORMAL]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.ADD]=[s.ONE,s.ONE],e[Se.MULTIPLY]=[s.DST_COLOR,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.SCREEN]=[s.ONE,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.OVERLAY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.DARKEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.LIGHTEN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.COLOR_DODGE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.COLOR_BURN]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.HARD_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.SOFT_LIGHT]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.DIFFERENCE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.EXCLUSION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.HUE]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.SATURATION]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.COLOR]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.LUMINOSITY]=[s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.NONE]=[0,0],e[Se.NORMAL_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.ADD_NPM]=[s.SRC_ALPHA,s.ONE,s.ONE,s.ONE],e[Se.SCREEN_NPM]=[s.SRC_ALPHA,s.ONE_MINUS_SRC_COLOR,s.ONE,s.ONE_MINUS_SRC_ALPHA],e[Se.SRC_IN]=[s.DST_ALPHA,s.ZERO],e[Se.SRC_OUT]=[s.ONE_MINUS_DST_ALPHA,s.ZERO],e[Se.SRC_ATOP]=[s.DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[Se.DST_OVER]=[s.ONE_MINUS_DST_ALPHA,s.ONE],e[Se.DST_IN]=[s.ZERO,s.SRC_ALPHA],e[Se.DST_OUT]=[s.ZERO,s.ONE_MINUS_SRC_ALPHA],e[Se.DST_ATOP]=[s.ONE_MINUS_DST_ALPHA,s.SRC_ALPHA],e[Se.XOR]=[s.ONE_MINUS_DST_ALPHA,s.ONE_MINUS_SRC_ALPHA],e[Se.SUBTRACT]=[s.ONE,s.ONE,s.ONE,s.ONE,s.FUNC_REVERSE_SUBTRACT,s.FUNC_ADD],e}const Sb=0,Cb=1,Mb=2,kb=3,Bb=4,Ib=5,dm=class jh{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=Se.NONE,this._blendEq=!1,this.map=[],this.map[Sb]=this.setBlend,this.map[Cb]=this.setOffset,this.map[Mb]=this.setCullFace,this.map[kb]=this.setDepthTest,this.map[Bb]=this.setFrontFace,this.map[Ib]=this.setDepthMask,this.checks=[],this.defaultState=new qi,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=Tb(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let t=this.stateId^e.data,i=0;for(;t;)t&1&&this.map[i].call(this,!!(e.data&1<>1,i++;this.stateId=e.data}for(let t=0;te.systems[r]),i=[...t,...Object.keys(e.systems).filter(r=>!t.includes(r))];for(const r of i)this.addSystem(e.systems[r],r)}addRunners(...e){e.forEach(t=>{this.runners[t]=new Ei(t)})}addSystem(e,t){const i=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=i,this._systemsHash[t]=i;for(const r in this.runners)this.runners[r].add(i);return this}emitWithCustomOptions(e,t){const i=Object.keys(this._systemsHash);e.items.forEach(r=>{const n=i.find(a=>this._systemsHash[a]===r);r[e.name](t[n])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}}const Ln=class lo{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=lo.defaultMaxIdle,this.checkCountMax=lo.defaultCheckCountMax,this.mode=lo.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==Ic.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const e=this.renderer.texture,t=e.managedTextures;let i=!1;for(let r=0;rthis.maxIdle&&(e.destroyTexture(n,!0),t[r]=null,i=!0)}if(i){let r=0;for(let n=0;n=0;r--)this.unload(e.children[r])}destroy(){this.renderer=null}};Ln.defaultMode=Ic.AUTO,Ln.defaultMaxIdle=60*60,Ln.defaultCheckCountMax=60*10,Ln.extension={type:ae.RendererSystem,name:"textureGC"};let $s=Ln;me.add($s);class zl{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=we.UNSIGNED_BYTE,this.internalFormat=se.RGBA,this.samplerType=0}}function Lb(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[s.RGB]:ce.FLOAT,[s.RGBA]:ce.FLOAT,[s.ALPHA]:ce.FLOAT,[s.LUMINANCE]:ce.FLOAT,[s.LUMINANCE_ALPHA]:ce.FLOAT,[s.R8]:ce.FLOAT,[s.R8_SNORM]:ce.FLOAT,[s.RG8]:ce.FLOAT,[s.RG8_SNORM]:ce.FLOAT,[s.RGB8]:ce.FLOAT,[s.RGB8_SNORM]:ce.FLOAT,[s.RGB565]:ce.FLOAT,[s.RGBA4]:ce.FLOAT,[s.RGB5_A1]:ce.FLOAT,[s.RGBA8]:ce.FLOAT,[s.RGBA8_SNORM]:ce.FLOAT,[s.RGB10_A2]:ce.FLOAT,[s.RGB10_A2UI]:ce.FLOAT,[s.SRGB8]:ce.FLOAT,[s.SRGB8_ALPHA8]:ce.FLOAT,[s.R16F]:ce.FLOAT,[s.RG16F]:ce.FLOAT,[s.RGB16F]:ce.FLOAT,[s.RGBA16F]:ce.FLOAT,[s.R32F]:ce.FLOAT,[s.RG32F]:ce.FLOAT,[s.RGB32F]:ce.FLOAT,[s.RGBA32F]:ce.FLOAT,[s.R11F_G11F_B10F]:ce.FLOAT,[s.RGB9_E5]:ce.FLOAT,[s.R8I]:ce.INT,[s.R8UI]:ce.UINT,[s.R16I]:ce.INT,[s.R16UI]:ce.UINT,[s.R32I]:ce.INT,[s.R32UI]:ce.UINT,[s.RG8I]:ce.INT,[s.RG8UI]:ce.UINT,[s.RG16I]:ce.INT,[s.RG16UI]:ce.UINT,[s.RG32I]:ce.INT,[s.RG32UI]:ce.UINT,[s.RGB8I]:ce.INT,[s.RGB8UI]:ce.UINT,[s.RGB16I]:ce.INT,[s.RGB16UI]:ce.UINT,[s.RGB32I]:ce.INT,[s.RGB32UI]:ce.UINT,[s.RGBA8I]:ce.INT,[s.RGBA8UI]:ce.UINT,[s.RGBA16I]:ce.INT,[s.RGBA16UI]:ce.UINT,[s.RGBA32I]:ce.INT,[s.RGBA32UI]:ce.UINT,[s.DEPTH_COMPONENT16]:ce.FLOAT,[s.DEPTH_COMPONENT24]:ce.FLOAT,[s.DEPTH_COMPONENT32F]:ce.FLOAT,[s.DEPTH_STENCIL]:ce.FLOAT,[s.DEPTH24_STENCIL8]:ce.FLOAT,[s.DEPTH32F_STENCIL8]:ce.FLOAT}:e={[s.RGB]:ce.FLOAT,[s.RGBA]:ce.FLOAT,[s.ALPHA]:ce.FLOAT,[s.LUMINANCE]:ce.FLOAT,[s.LUMINANCE_ALPHA]:ce.FLOAT,[s.DEPTH_STENCIL]:ce.FLOAT},e}function Db(s){let e;return"WebGL2RenderingContext"in globalThis&&s instanceof globalThis.WebGL2RenderingContext?e={[we.UNSIGNED_BYTE]:{[se.RGBA]:s.RGBA8,[se.RGB]:s.RGB8,[se.RG]:s.RG8,[se.RED]:s.R8,[se.RGBA_INTEGER]:s.RGBA8UI,[se.RGB_INTEGER]:s.RGB8UI,[se.RG_INTEGER]:s.RG8UI,[se.RED_INTEGER]:s.R8UI,[se.ALPHA]:s.ALPHA,[se.LUMINANCE]:s.LUMINANCE,[se.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[we.BYTE]:{[se.RGBA]:s.RGBA8_SNORM,[se.RGB]:s.RGB8_SNORM,[se.RG]:s.RG8_SNORM,[se.RED]:s.R8_SNORM,[se.RGBA_INTEGER]:s.RGBA8I,[se.RGB_INTEGER]:s.RGB8I,[se.RG_INTEGER]:s.RG8I,[se.RED_INTEGER]:s.R8I},[we.UNSIGNED_SHORT]:{[se.RGBA_INTEGER]:s.RGBA16UI,[se.RGB_INTEGER]:s.RGB16UI,[se.RG_INTEGER]:s.RG16UI,[se.RED_INTEGER]:s.R16UI,[se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT16},[we.SHORT]:{[se.RGBA_INTEGER]:s.RGBA16I,[se.RGB_INTEGER]:s.RGB16I,[se.RG_INTEGER]:s.RG16I,[se.RED_INTEGER]:s.R16I},[we.UNSIGNED_INT]:{[se.RGBA_INTEGER]:s.RGBA32UI,[se.RGB_INTEGER]:s.RGB32UI,[se.RG_INTEGER]:s.RG32UI,[se.RED_INTEGER]:s.R32UI,[se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT24},[we.INT]:{[se.RGBA_INTEGER]:s.RGBA32I,[se.RGB_INTEGER]:s.RGB32I,[se.RG_INTEGER]:s.RG32I,[se.RED_INTEGER]:s.R32I},[we.FLOAT]:{[se.RGBA]:s.RGBA32F,[se.RGB]:s.RGB32F,[se.RG]:s.RG32F,[se.RED]:s.R32F,[se.DEPTH_COMPONENT]:s.DEPTH_COMPONENT32F},[we.HALF_FLOAT]:{[se.RGBA]:s.RGBA16F,[se.RGB]:s.RGB16F,[se.RG]:s.RG16F,[se.RED]:s.R16F},[we.UNSIGNED_SHORT_5_6_5]:{[se.RGB]:s.RGB565},[we.UNSIGNED_SHORT_4_4_4_4]:{[se.RGBA]:s.RGBA4},[we.UNSIGNED_SHORT_5_5_5_1]:{[se.RGBA]:s.RGB5_A1},[we.UNSIGNED_INT_2_10_10_10_REV]:{[se.RGBA]:s.RGB10_A2,[se.RGBA_INTEGER]:s.RGB10_A2UI},[we.UNSIGNED_INT_10F_11F_11F_REV]:{[se.RGB]:s.R11F_G11F_B10F},[we.UNSIGNED_INT_5_9_9_9_REV]:{[se.RGB]:s.RGB9_E5},[we.UNSIGNED_INT_24_8]:{[se.DEPTH_STENCIL]:s.DEPTH24_STENCIL8},[we.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[se.DEPTH_STENCIL]:s.DEPTH32F_STENCIL8}}:e={[we.UNSIGNED_BYTE]:{[se.RGBA]:s.RGBA,[se.RGB]:s.RGB,[se.ALPHA]:s.ALPHA,[se.LUMINANCE]:s.LUMINANCE,[se.LUMINANCE_ALPHA]:s.LUMINANCE_ALPHA},[we.UNSIGNED_SHORT_5_6_5]:{[se.RGB]:s.RGB},[we.UNSIGNED_SHORT_4_4_4_4]:{[se.RGBA]:s.RGBA},[we.UNSIGNED_SHORT_5_5_5_1]:{[se.RGBA]:s.RGBA}},e}class um{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new ke,this.hasIntegerTextures=!1}contextChange(){const e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=Db(e),this.samplerTypes=Lb(e);const t=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=t;for(let r=0;r=0;--n){const a=t[n];a&&a._glTextures[r].samplerType!==ce.FLOAT&&this.renderer.texture.unbind(a)}}initTexture(e){const t=new zl(this.gl.createTexture());return t.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=t,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),t}initTextureType(e,t){t.internalFormat=this.internalFormats[e.type]?.[e.format]??e.format,t.samplerType=this.samplerTypes[t.internalFormat]??ce.FLOAT,this.webGLVersion===2&&e.type===we.HALF_FLOAT?t.type=this.gl.HALF_FLOAT:t.type=e.type}updateTexture(e){const t=e._glTextures[this.CONTEXT_UID];if(!t)return;const i=this.renderer;if(this.initTextureType(e,t),e.resource?.upload(i,e,t))t.samplerType!==ce.FLOAT&&(this.hasIntegerTextures=!0);else{const r=e.realWidth,n=e.realHeight,a=i.gl;(t.width!==r||t.height!==n||t.dirtyId<0)&&(t.width=r,t.height=n,a.texImage2D(e.target,0,t.internalFormat,r,n,0,e.format,t.type,null))}e.dirtyStyleId!==t.dirtyStyleId&&this.updateTextureStyle(e),t.dirtyId=e.dirtyId}destroyTexture(e,t){const{gl:i}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),i.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!t)){const r=this.managedTextures.indexOf(e);r!==-1&&Qr(this.managedTextures,r,1)}}updateTextureStyle(e){const t=e._glTextures[this.CONTEXT_UID];t&&((e.mipmap===Xi.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?t.mipmap=!1:t.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?t.wrapMode=Ds.CLAMP:t.wrapMode=e.wrapMode,e.resource?.style(this.renderer,e,t)||this.setStyle(e,t),t.dirtyStyleId=e.dirtyStyleId)}setStyle(e,t){const i=this.gl;if(t.mipmap&&e.mipmap!==Xi.ON_MANUAL&&i.generateMipmap(e.target),i.texParameteri(e.target,i.TEXTURE_WRAP_S,t.wrapMode),i.texParameteri(e.target,i.TEXTURE_WRAP_T,t.wrapMode),t.mipmap){i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===is.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);const r=this.renderer.context.extensions.anisotropicFiltering;if(r&&e.anisotropicLevel>0&&e.scaleMode===is.LINEAR){const n=Math.min(e.anisotropicLevel,i.getParameter(r.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(e.target,r.TEXTURE_MAX_ANISOTROPY_EXT,n)}}else i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===is.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(e.target,i.TEXTURE_MAG_FILTER,e.scaleMode===is.LINEAR?i.LINEAR:i.NEAREST)}destroy(){this.renderer=null}}um.extension={type:ae.RendererSystem,name:"texture"};me.add(um);class pm{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,r=e._glTransformFeedbacks[i]||this.createGLTransformFeedback(e);t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,r)}unbind(){const{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,t){const{gl:i,renderer:r}=this;t&&r.shader.bind(t),i.beginTransformFeedback(e)}endTransformFeedback(){const{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){const{gl:t,renderer:i,CONTEXT_UID:r}=this,n=t.createTransformFeedback();e._glTransformFeedbacks[r]=n,t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,n);for(let a=0;a(s[s.INTERACTION=50]="INTERACTION",s[s.HIGH=25]="HIGH",s[s.NORMAL=0]="NORMAL",s[s.LOW=-25]="LOW",s[s.UTILITY=-50]="UTILITY",s))(Fs||{});class Yl{constructor(e,t=null,i=0,r=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=t,this.priority=i,this.once=r}match(e,t=null){return this.fn===e&&this.context===t}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));const t=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const fm=class Xt{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new Yl(null,null,1/0),this.deltaMS=1/Xt.targetFPMS,this.elapsedMS=1/Xt.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,i=Fs.NORMAL){return this._addListener(new Yl(e,t,i))}addOnce(e,t,i=Fs.NORMAL){return this._addListener(new Yl(e,t,i,!0))}_addListener(e){let t=this._head.next,i=this._head;if(!t)e.connect(i);else{for(;t;){if(e.priority>t.priority){e.connect(i);break}i=t,t=t.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,t){let i=this._head.next;for(;i;)i.match(e,t)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const n=e-this._lastFrame|0;if(n{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?xt.shared:new xt,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}mm.extension=ae.Application;me.add(mm);const gm=[];me.handleByList(ae.Renderer,gm);function Ob(s){for(const e of gm)if(e.test(s))return new e(s);throw new Error("Unable to auto-detect a suitable renderer.")}var Fb=`attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; uniform mat3 projectionMatrix; @@ -523,7 +523,7 @@ void main(void) gl_Position = filterVertexPosition(); vTextureCoord = filterTextureCoord(); } -`;const Ub=Fb,ym=Nb;class vm{constructor(e){this.renderer=e}contextChange(e){let t;if(this.renderer.context.webGLVersion===1){const i=e.getParameter(e.FRAMEBUFFER_BINDING);e.bindFramebuffer(e.FRAMEBUFFER,null),t=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.FRAMEBUFFER,i)}else{const i=e.getParameter(e.DRAW_FRAMEBUFFER_BINDING);e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),t=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,i)}t>=ft.HIGH?this.multisample=ft.HIGH:t>=ft.MEDIUM?this.multisample=ft.MEDIUM:t>=ft.LOW?this.multisample=ft.LOW:this.multisample=ft.NONE}destroy(){}}vm.extension={type:ae.RendererSystem,name:"_multisample"};me.add(vm);class Gb{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class Am{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,r=e._glBuffers[i]||this.createGLBuffer(e);t.bindBuffer(e.type,r.buffer)}unbind(e){const{gl:t}=this;t.bindBuffer(e,null)}bindBufferBase(e,t){const{gl:i,CONTEXT_UID:r}=this;if(this.boundBufferBases[t]!==e){const n=e._glBuffers[r]||this.createGLBuffer(e);this.boundBufferBases[t]=e,i.bindBufferBase(i.UNIFORM_BUFFER,t,n.buffer)}}bindBufferRange(e,t,i){const{gl:r,CONTEXT_UID:n}=this;i=i||0;const a=e._glBuffers[n]||this.createGLBuffer(e);r.bindBufferRange(r.UNIFORM_BUFFER,t||0,a.buffer,i*256,256)}update(e){const{gl:t,CONTEXT_UID:i}=this,r=e._glBuffers[i]||this.createGLBuffer(e);if(e._updateID!==r.updateID)if(r.updateID=e._updateID,t.bindBuffer(e.type,r.buffer),r.byteLength>=e.data.byteLength)t.bufferSubData(e.type,0,e.data);else{const n=e.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;r.byteLength=e.data.byteLength,t.bufferData(e.type,e.data,n)}}dispose(e,t){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];const i=e._glBuffers[this.CONTEXT_UID],r=this.gl;e.disposeRunner.remove(this),i&&(t||r.deleteBuffer(i.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){const t=Object.keys(this.managedBuffers);for(let i=0;it.resource).filter(t=>t).map(t=>t.load());return this._load=Promise.all(e).then(()=>{const{realWidth:t,realHeight:i}=this.items[0];return this.resize(t,i),this.update(),Promise.resolve(this)}),this._load}}class Hb extends wm{constructor(e,t){const{width:i,height:r}=t||{};let n,a;Array.isArray(e)?(n=e,a=e.length):a=e,super(a,{width:i,height:r}),n&&this.initFromArray(n,t)}addBaseTextureAt(e,t){if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=Xr.TEXTURE_2D_ARRAY}upload(e,t,i){const{length:r,itemDirtyIds:n,items:a}=this,{gl:o}=e;i.dirtyId<0&&o.texImage3D(o.TEXTURE_2D_ARRAY,0,i.internalFormat,this._width,this._height,r,0,t.format,i.type,null);for(let l=0;l0)if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=Xr.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.parentTextureArray=this.baseTexture,this.items[t]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[t]=e,this}upload(e,t,i){const r=this.itemDirtyIds;for(let n=0;n{if(this.url===null){e(this);return}try{const i=await de.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const r=await i.blob();if(this.destroyed)return;const n=await createImageBitmap(r,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Ut.UNPACK?"premultiply":"none"});if(this.destroyed){n.close();return}this.source=n,this.update(),e(this)}catch(i){if(this.destroyed)return;t(i),this.onError.emit(i)}}),this._load)}upload(e,t,i){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),super.upload(e,t,i)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return zr._EMPTY=zr._EMPTY??de.ADAPTER.createCanvas(0,0),zr._EMPTY}}const Kh=class co extends cs{constructor(e,t){t=t||{},super(de.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},co.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const e=new Image;cs.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=t=>{this._resolve&&(e.onerror=null,this.onError.emit(t))},e.onload=()=>{if(!this._resolve)return;const t=e.width,i=e.height;if(!t||!i)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let r=t*this.scale,n=i*this.scale;(this._overrideWidth||this._overrideHeight)&&(r=this._overrideWidth||this._overrideHeight/i*t,n=this._overrideHeight||this._overrideWidth/t*i),r=Math.round(r),n=Math.round(n);const a=this.source;a.width=r,a.height=n,a._pixiId=`canvas_${vr()}`,a.getContext("2d").drawImage(e,0,0,t,i,0,0,r,n),this._resolve(),this._resolve=null}}static getSize(e){const t=co.SVG_SIZE.exec(e),i={};return t&&(i[t[1]]=Math.round(parseFloat(t[3])),i[t[5]]=Math.round(parseFloat(t[7]))),i}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,t){return t==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&co.SVG_XML.test(e)}};Kh.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;let qh=Kh;class zb extends cs{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}}const Qh=class Jh extends cs{constructor(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){const i=document.createElement("video");t.autoLoad!==!1&&i.setAttribute("preload","auto"),t.playsinline!==!1&&(i.setAttribute("webkit-playsinline",""),i.setAttribute("playsinline","")),t.muted===!0&&(i.setAttribute("muted",""),i.muted=!0),t.loop===!0&&i.setAttribute("loop",""),t.autoPlay!==!1&&i.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);const r=e[0].src||e[0];cs.crossOrigin(i,r,t.crossorigin);for(let n=0;n{this.valid?t(this):(this._resolve=t,this._reject=i,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!t&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(xt.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(xt.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(xt.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,t){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||Jh.TYPES.includes(t)}};Qh.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],Qh.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Em=Qh;Fh.push(zr,Kf,Vb,Em,zb,qh,Ko,Wb,Hb);class Bo{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(e){return this.minX>this.maxX||this.minY>this.maxY?Me.EMPTY:(e=e||new Me(0,0,1,1),e.x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)}addPoint(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)}addPointMatrix(e,t){const{a:i,b:r,c:n,d:a,tx:o,ty:l}=e,c=i*t.x+n*t.y+o,u=r*t.x+a*t.y+l;this.minX=Math.min(this.minX,c),this.maxX=Math.max(this.maxX,c),this.minY=Math.min(this.minY,u),this.maxY=Math.max(this.maxY,u)}addQuad(e){let t=this.minX,i=this.minY,r=this.maxX,n=this.maxY,a=e[0],o=e[1];t=ar?a:r,n=o>n?o:n,a=e[2],o=e[3],t=ar?a:r,n=o>n?o:n,a=e[4],o=e[5],t=ar?a:r,n=o>n?o:n,a=e[6],o=e[7],t=ar?a:r,n=o>n?o:n,this.minX=t,this.minY=i,this.maxX=r,this.maxY=n}addFrame(e,t,i,r,n){this.addFrameMatrix(e.worldTransform,t,i,r,n)}addFrameMatrix(e,t,i,r,n){const a=e.a,o=e.b,l=e.c,c=e.d,u=e.tx,h=e.ty;let d=this.minX,p=this.minY,m=this.maxX,f=this.maxY,g=a*t+l*i+u,y=o*t+c*i+h;d=gm?g:m,f=y>f?y:f,g=a*r+l*i+u,y=o*r+c*i+h,d=gm?g:m,f=y>f?y:f,g=a*t+l*n+u,y=o*t+c*n+h,d=gm?g:m,f=y>f?y:f,g=a*r+l*n+u,y=o*r+c*n+h,d=gm?g:m,f=y>f?y:f,this.minX=d,this.minY=p,this.maxX=m,this.maxY=f}addVertexData(e,t,i){let r=this.minX,n=this.minY,a=this.maxX,o=this.maxY;for(let l=t;la?c:a,o=u>o?u:o}this.minX=r,this.minY=n,this.maxX=a,this.maxY=o}addVertices(e,t,i,r){this.addVerticesMatrix(e.worldTransform,t,i,r)}addVerticesMatrix(e,t,i,r,n=0,a=n){const o=e.a,l=e.b,c=e.c,u=e.d,h=e.tx,d=e.ty;let p=this.minX,m=this.minY,f=this.maxX,g=this.maxY;for(let y=i;yr?e.maxX:r,this.maxY=e.maxY>n?e.maxY:n}addBoundsMask(e,t){const i=e.minX>t.minX?e.minX:t.minX,r=e.minY>t.minY?e.minY:t.minY,n=e.maxXc?n:c,this.maxY=a>u?a:u}}addBoundsMatrix(e,t){this.addFrameMatrix(t,e.minX,e.minY,e.maxX,e.maxY)}addBoundsArea(e,t){const i=e.minX>t.x?e.minX:t.x,r=e.minY>t.y?e.minY:t.y,n=e.maxXc?n:c,this.maxY=a>u?a:u}}pad(e=0,t=e){this.isEmpty()||(this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t)}addFramePad(e,t,i,r,n,a){e-=n,t-=a,i+=n,r+=a,this.minX=this.minXi?this.maxX:i,this.minY=this.minYr?this.maxY:r}}class lt extends mn{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new Gc,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new Bo,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(e){const t=Object.keys(e);for(let i=0;i1)for(let t=0;tthis.children.length)throw new Error(`${e}addChildAt: The index ${t} supplied is out of bounds ${this.children.length}`);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e}swapChildren(e,t){if(e===t)return;const i=this.getChildIndex(e),r=this.getChildIndex(t);this.children[i]=t,this.children[r]=e,this.onChildrenChange(i=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);const i=this.getChildIndex(e);Qr(this.children,i,1),this.children.splice(t,0,e),this.onChildrenChange(t)}getChildAt(e){if(e<0||e>=this.children.length)throw new Error(`getChildAt: Index (${e}) does not exist.`);return this.children[e]}removeChild(...e){if(e.length>1)for(let t=0;t0&&n<=r){a=this.children.splice(i,n);for(let o=0;o1&&this.children.sort(Xb),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let e=0,t=this.children.length;e0&&t.height>0))return;let i,r;this.cullArea?(i=this.cullArea,r=this.worldTransform):this._render!==Zh.prototype._render&&(i=this.getBounds(!0));const n=e.projection.transform;if(n&&(r?(r=jb.copyFrom(r),r.prepend(n)):r=n),i&&t.intersects(i,r))this._render(e);else if(this.cullArea)return;for(let a=0,o=this.children.length;a=r&&Cn.x=n&&Cn.y=ft.HIGH?this.multisample=ft.HIGH:t>=ft.MEDIUM?this.multisample=ft.MEDIUM:t>=ft.LOW?this.multisample=ft.LOW:this.multisample=ft.NONE}destroy(){}}vm.extension={type:ae.RendererSystem,name:"_multisample"};me.add(vm);class Gb{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class Am{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:i}=this,r=e._glBuffers[i]||this.createGLBuffer(e);t.bindBuffer(e.type,r.buffer)}unbind(e){const{gl:t}=this;t.bindBuffer(e,null)}bindBufferBase(e,t){const{gl:i,CONTEXT_UID:r}=this;if(this.boundBufferBases[t]!==e){const n=e._glBuffers[r]||this.createGLBuffer(e);this.boundBufferBases[t]=e,i.bindBufferBase(i.UNIFORM_BUFFER,t,n.buffer)}}bindBufferRange(e,t,i){const{gl:r,CONTEXT_UID:n}=this;i=i||0;const a=e._glBuffers[n]||this.createGLBuffer(e);r.bindBufferRange(r.UNIFORM_BUFFER,t||0,a.buffer,i*256,256)}update(e){const{gl:t,CONTEXT_UID:i}=this,r=e._glBuffers[i]||this.createGLBuffer(e);if(e._updateID!==r.updateID)if(r.updateID=e._updateID,t.bindBuffer(e.type,r.buffer),r.byteLength>=e.data.byteLength)t.bufferSubData(e.type,0,e.data);else{const n=e.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;r.byteLength=e.data.byteLength,t.bufferData(e.type,e.data,n)}}dispose(e,t){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];const i=e._glBuffers[this.CONTEXT_UID],r=this.gl;e.disposeRunner.remove(this),i&&(t||r.deleteBuffer(i.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){const t=Object.keys(this.managedBuffers);for(let i=0;it.resource).filter(t=>t).map(t=>t.load());return this._load=Promise.all(e).then(()=>{const{realWidth:t,realHeight:i}=this.items[0];return this.resize(t,i),this.update(),Promise.resolve(this)}),this._load}}class Hb extends wm{constructor(e,t){const{width:i,height:r}=t||{};let n,a;Array.isArray(e)?(n=e,a=e.length):a=e,super(a,{width:i,height:r}),n&&this.initFromArray(n,t)}addBaseTextureAt(e,t){if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=Xr.TEXTURE_2D_ARRAY}upload(e,t,i){const{length:r,itemDirtyIds:n,items:a}=this,{gl:o}=e;i.dirtyId<0&&o.texImage3D(o.TEXTURE_2D_ARRAY,0,i.internalFormat,this._width,this._height,r,0,t.format,i.type,null);for(let l=0;l0)if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=Xr.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.parentTextureArray=this.baseTexture,this.items[t]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[t]=e,this}upload(e,t,i){const r=this.itemDirtyIds;for(let n=0;n{if(this.url===null){e(this);return}try{const i=await de.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const r=await i.blob();if(this.destroyed)return;const n=await createImageBitmap(r,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Gt.UNPACK?"premultiply":"none"});if(this.destroyed){n.close();return}this.source=n,this.update(),e(this)}catch(i){if(this.destroyed)return;t(i),this.onError.emit(i)}}),this._load)}upload(e,t,i){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),super.upload(e,t,i)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return zr._EMPTY=zr._EMPTY??de.ADAPTER.createCanvas(0,0),zr._EMPTY}}const Kh=class co extends cs{constructor(e,t){t=t||{},super(de.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},co.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const e=new Image;cs.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=t=>{this._resolve&&(e.onerror=null,this.onError.emit(t))},e.onload=()=>{if(!this._resolve)return;const t=e.width,i=e.height;if(!t||!i)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let r=t*this.scale,n=i*this.scale;(this._overrideWidth||this._overrideHeight)&&(r=this._overrideWidth||this._overrideHeight/i*t,n=this._overrideHeight||this._overrideWidth/t*i),r=Math.round(r),n=Math.round(n);const a=this.source;a.width=r,a.height=n,a._pixiId=`canvas_${vr()}`,a.getContext("2d").drawImage(e,0,0,t,i,0,0,r,n),this._resolve(),this._resolve=null}}static getSize(e){const t=co.SVG_SIZE.exec(e),i={};return t&&(i[t[1]]=Math.round(parseFloat(t[3])),i[t[5]]=Math.round(parseFloat(t[7]))),i}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,t){return t==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&co.SVG_XML.test(e)}};Kh.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;let qh=Kh;class zb extends cs{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}}const Qh=class Jh extends cs{constructor(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){const i=document.createElement("video");t.autoLoad!==!1&&i.setAttribute("preload","auto"),t.playsinline!==!1&&(i.setAttribute("webkit-playsinline",""),i.setAttribute("playsinline","")),t.muted===!0&&(i.setAttribute("muted",""),i.muted=!0),t.loop===!0&&i.setAttribute("loop",""),t.autoPlay!==!1&&i.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);const r=e[0].src||e[0];cs.crossOrigin(i,r,t.crossorigin);for(let n=0;n{this.valid?t(this):(this._resolve=t,this._reject=i,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!t&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(xt.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(xt.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(xt.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,t){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||Jh.TYPES.includes(t)}};Qh.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],Qh.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Em=Qh;Fh.push(zr,Kf,Vb,Em,zb,qh,Ko,Wb,Hb);class Bo{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(e){return this.minX>this.maxX||this.minY>this.maxY?Me.EMPTY:(e=e||new Me(0,0,1,1),e.x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)}addPoint(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)}addPointMatrix(e,t){const{a:i,b:r,c:n,d:a,tx:o,ty:l}=e,c=i*t.x+n*t.y+o,u=r*t.x+a*t.y+l;this.minX=Math.min(this.minX,c),this.maxX=Math.max(this.maxX,c),this.minY=Math.min(this.minY,u),this.maxY=Math.max(this.maxY,u)}addQuad(e){let t=this.minX,i=this.minY,r=this.maxX,n=this.maxY,a=e[0],o=e[1];t=ar?a:r,n=o>n?o:n,a=e[2],o=e[3],t=ar?a:r,n=o>n?o:n,a=e[4],o=e[5],t=ar?a:r,n=o>n?o:n,a=e[6],o=e[7],t=ar?a:r,n=o>n?o:n,this.minX=t,this.minY=i,this.maxX=r,this.maxY=n}addFrame(e,t,i,r,n){this.addFrameMatrix(e.worldTransform,t,i,r,n)}addFrameMatrix(e,t,i,r,n){const a=e.a,o=e.b,l=e.c,c=e.d,u=e.tx,h=e.ty;let d=this.minX,p=this.minY,m=this.maxX,f=this.maxY,g=a*t+l*i+u,y=o*t+c*i+h;d=gm?g:m,f=y>f?y:f,g=a*r+l*i+u,y=o*r+c*i+h,d=gm?g:m,f=y>f?y:f,g=a*t+l*n+u,y=o*t+c*n+h,d=gm?g:m,f=y>f?y:f,g=a*r+l*n+u,y=o*r+c*n+h,d=gm?g:m,f=y>f?y:f,this.minX=d,this.minY=p,this.maxX=m,this.maxY=f}addVertexData(e,t,i){let r=this.minX,n=this.minY,a=this.maxX,o=this.maxY;for(let l=t;la?c:a,o=u>o?u:o}this.minX=r,this.minY=n,this.maxX=a,this.maxY=o}addVertices(e,t,i,r){this.addVerticesMatrix(e.worldTransform,t,i,r)}addVerticesMatrix(e,t,i,r,n=0,a=n){const o=e.a,l=e.b,c=e.c,u=e.d,h=e.tx,d=e.ty;let p=this.minX,m=this.minY,f=this.maxX,g=this.maxY;for(let y=i;yr?e.maxX:r,this.maxY=e.maxY>n?e.maxY:n}addBoundsMask(e,t){const i=e.minX>t.minX?e.minX:t.minX,r=e.minY>t.minY?e.minY:t.minY,n=e.maxXc?n:c,this.maxY=a>u?a:u}}addBoundsMatrix(e,t){this.addFrameMatrix(t,e.minX,e.minY,e.maxX,e.maxY)}addBoundsArea(e,t){const i=e.minX>t.x?e.minX:t.x,r=e.minY>t.y?e.minY:t.y,n=e.maxXc?n:c,this.maxY=a>u?a:u}}pad(e=0,t=e){this.isEmpty()||(this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t)}addFramePad(e,t,i,r,n,a){e-=n,t-=a,i+=n,r+=a,this.minX=this.minXi?this.maxX:i,this.minY=this.minYr?this.maxY:r}}class lt extends mn{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new Gc,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new Bo,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(e){const t=Object.keys(e);for(let i=0;i1)for(let t=0;tthis.children.length)throw new Error(`${e}addChildAt: The index ${t} supplied is out of bounds ${this.children.length}`);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e}swapChildren(e,t){if(e===t)return;const i=this.getChildIndex(e),r=this.getChildIndex(t);this.children[i]=t,this.children[r]=e,this.onChildrenChange(i=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);const i=this.getChildIndex(e);Qr(this.children,i,1),this.children.splice(t,0,e),this.onChildrenChange(t)}getChildAt(e){if(e<0||e>=this.children.length)throw new Error(`getChildAt: Index (${e}) does not exist.`);return this.children[e]}removeChild(...e){if(e.length>1)for(let t=0;t0&&n<=r){a=this.children.splice(i,n);for(let o=0;o1&&this.children.sort(Xb),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let e=0,t=this.children.length;e0&&t.height>0))return;let i,r;this.cullArea?(i=this.cullArea,r=this.worldTransform):this._render!==Zh.prototype._render&&(i=this.getBounds(!0));const n=e.projection.transform;if(n&&(r?(r=jb.copyFrom(r),r.prepend(n)):r=n),i&&t.intersects(i,r))this._render(e);else if(this.cullArea)return;for(let a=0,o=this.children.length;a=r&&Cn.x=n&&Cn.y=t&&(a=s-o-1),l=l.replace("%value%",e[a].toString()),r+=l,r+=` `}return i=i.replace("%blur%",r),i=i.replace("%size%",s.toString()),i}const tw=` attribute vec2 aVertexPosition; @@ -565,7 +565,7 @@ void main(void) vec2 textureCoord = filterTextureCoord(); %blur% }`;function iw(s,e){const t=Math.ceil(s/2);let i=tw,r="",n;e?n="vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);":n="vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);";for(let a=0;a{Object.defineProperty(Pu,s,{get(){return Ne("7.1.0",`filters.${s} has moved to ${s}`),e}})});class pw{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this.tickerAdded||!this.domElement||(xt.system.add(this.tickerUpdate,this,Fs.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&(xt.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events.rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY}))}tickerUpdate(e){this._deltaTime+=e,!(this._deltaTimei.priority-r.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,r=t.length;i=0;r--)if(e.currentTarget=i[r],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const r=Array.isArray(t)?t:[t];for(let n=i.length-1;n>=0;n--)r.forEach(a=>{e.currentTarget=i[n],this.notifyTarget(e,a)})}propagationPath(e){const t=[e];for(let i=0;i=0;h--){const d=u[h],p=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,i,r,n,a||n(e,i));if(p){if(p.length>0&&!p[p.length-1].parent)continue;const m=e.isInteractive();(p.length>0||m)&&(m&&this._allInteractiveElements.push(e),p.push(e)),this._hitElements.length===0&&(this._hitElements=p),o=!0}}}const l=this._isInteractive(t),c=e.isInteractive();return l&&c&&this._allInteractiveElements.push(e),a||this._hitElements.length>0?null:o?this._hitElements:l&&!n(e,i)&&r(e,i)?c?[e]:[]:null}hitTestRecursive(e,t,i,r,n){if(this._interactivePrune(e)||n(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(Cs.pauseUpdate=!1),e.interactiveChildren&&e.children){const l=e.children;for(let c=l.length-1;c>=0;c--){const u=l[c],h=this.hitTestRecursive(u,this._isInteractive(t)?t:u.eventMode,i,r,n);if(h){if(h.length>0&&!h[h.length-1].parent)continue;const d=e.isInteractive();return(h.length>0||d)&&h.push(e),h}}}const a=this._isInteractive(t),o=e.isInteractive();return a&&r(e,i)?o?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!!(!e||e.isMask||!e.visible||!e.renderable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren||e.isMask)}hitPruneFn(e,t){if(e.hitArea&&(e.worldTransform.applyInverse(t,jl),!e.hitArea.contains(jl.x,jl.y)))return!0;if(e._mask){const i=e._mask.isMaskData?e._mask.maskObject:e._mask;if(i&&!i.containsPoint?.(t))return!0}return!1}hitTestFn(e,t){return e.eventMode==="passive"?!1:e.hitArea?!0:e.containsPoint?e.containsPoint(t):!1}notifyTarget(e,t){t=t??e.type;const i=`on${t}`;e.currentTarget[i]?.(e);const r=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this.notifyListeners(e,r),e.eventPhase===e.AT_TARGET&&this.notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const r=t.button===2;this.dispatchEvent(t,r?"rightdown":"mousedown")}const i=this.trackingData(e.pointerId);i.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const i=t.pointerType==="mouse"||t.pointerType==="pen",r=this.trackingData(e.pointerId),n=this.findMountedTarget(r.overTargets);if(r.overTargets?.length>0&&n!==t.target){const l=e.type==="mousemove"?"mouseout":"pointerout",c=this.createPointerEvent(e,l,n);if(this.dispatchEvent(c,"pointerout"),i&&this.dispatchEvent(c,"mouseout"),!t.composedPath().includes(n)){const u=this.createPointerEvent(e,"pointerleave",n);for(u.eventPhase=u.AT_TARGET;u.target&&!t.composedPath().includes(u.target);)u.currentTarget=u.target,this.notifyTarget(u),i&&this.notifyTarget(u,"mouseleave"),u.target=u.target.parent;this.freeEvent(u)}this.freeEvent(c)}if(n!==t.target){const l=e.type==="mousemove"?"mouseover":"pointerover",c=this.clonePointerEvent(t,l);this.dispatchEvent(c,"pointerover"),i&&this.dispatchEvent(c,"mouseover");let u=n?.parent;for(;u&&u!==this.rootTarget.parent&&u!==t.target;)u=u.parent;if(!u||u===this.rootTarget.parent){const h=this.clonePointerEvent(t,"pointerenter");for(h.eventPhase=h.AT_TARGET;h.target&&h.target!==n&&h.target!==this.rootTarget.parent;)h.currentTarget=h.target,this.notifyTarget(h),i&&this.notifyTarget(h,"mouseenter"),h.target=h.target.parent;this.freeEvent(h)}this.freeEvent(c)}const a=[],o=this.enableGlobalMoveEvents??!0;this.moveOnAll?a.push("pointermove"):this.dispatchEvent(t,"pointermove"),o&&a.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?a.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),o&&a.push("globaltouchmove")),i&&(this.moveOnAll?a.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),o&&a.push("globalmousemove"),this.cursor=t.target?.cursor),a.length>0&&this.all(t,a),this._allInteractiveElements.length=0,this._hitElements.length=0,r.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),r=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),r&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=i.target?.cursor);const n=this.clonePointerEvent(i,"pointerenter");for(n.eventPhase=n.AT_TARGET;n.target&&n.target!==this.rootTarget.parent;)n.currentTarget=n.target,this.notifyTarget(n),r&&this.notifyTarget(n,"mouseenter"),n.target=n.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(n)}mapPointerOut(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",r=this.findMountedTarget(t.overTargets),n=this.createPointerEvent(e,"pointerout",r);this.dispatchEvent(n),i&&this.dispatchEvent(n,"mouseout");const a=this.createPointerEvent(e,"pointerleave",r);for(a.eventPhase=a.AT_TARGET;a.target&&a.target!==this.rootTarget.parent;)a.currentTarget=a.target,this.notifyTarget(a),i&&this.notifyTarget(a,"mouseleave"),a.target=a.target.parent;t.overTargets=null,this.freeEvent(n),this.freeEvent(a)}this.cursor=null}mapPointerUp(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const o=i.button===2;this.dispatchEvent(i,o?"rightup":"mouseup")}const r=this.trackingData(e.pointerId),n=this.findMountedTarget(r.pressTargetsByButton[e.button]);let a=n;if(n&&!i.composedPath().includes(n)){let o=n;for(;o&&!i.composedPath().includes(o);){if(i.currentTarget=o,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const l=i.button===2;this.notifyTarget(i,l?"rightupoutside":"mouseupoutside")}o=o.parent}delete r.pressTargetsByButton[e.button],a=o}if(a){const o=this.clonePointerEvent(i,"click");o.target=a,o.path=null,r.clicksByButton[e.button]||(r.clicksByButton[e.button]={clickCount:0,target:o.target,timeStamp:t});const l=r.clicksByButton[e.button];if(l.target===o.target&&t-l.timeStamp<200?++l.clickCount:l.clickCount=1,l.target=o.target,l.timeStamp=t,o.detail=l.clickCount,o.pointerType==="mouse"){const c=o.button===2;this.dispatchEvent(o,c?"rightclick":"click")}else o.pointerType==="touch"&&this.dispatchEvent(o,"tap");this.dispatchEvent(o,"pointertap"),this.freeEvent(o)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),r=this.createPointerEvent(e);if(i){let n=i;for(;n;)r.currentTarget=n,this.notifyTarget(r,"pointerupoutside"),r.pointerType==="touch"?this.notifyTarget(r,"touchendoutside"):(r.pointerType==="mouse"||r.pointerType==="pen")&&this.notifyTarget(r,r.button===2?"rightupoutside":"mouseupoutside"),n=n.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(r)}mapWheel(e){if(!(e instanceof Zr)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=r),t[i]=r,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{view:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,sc._defaultEventMode=e.eventMode??"auto",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this.currentCursor===e)return;this.currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this.rootPointerEvent}onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this.normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,r=t.length;i0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",r=this.normalizeToPointerData(e);for(let n=0,a=r.length;n"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.isNormalized=!0,n.type=e.type,t.push(n)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=yw),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this.rootWheelEvent;return this.transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this.transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=vw[e.type]||e.type),e}transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};ic.extension={name:"events",type:[ae.RendererSystem,ae.CanvasRendererSystem]},ic.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let rc=ic;me.add(rc);function Ru(s){return s==="dynamic"||s==="static"}const Aw={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??Ru(rc.defaultEventMode)},set interactive(s){Ne("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=s,this.eventMode=s?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??rc.defaultEventMode},set eventMode(s){this._internalInteractive=Ru(s),this._internalEventMode=s},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,r=typeof t=="object"?t.signal:void 0,n=typeof t=="object"?t.once===!0:!1,a=typeof e=="function"?void 0:e;s=i?`${s}capture`:s;const o=typeof e=="function"?e:e.handleEvent,l=this;r&&r.addEventListener("abort",()=>{l.off(s,o,a)}),n?l.once(s,o,a):l.on(s,o,a)},removeEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,r=typeof e=="function"?void 0:e;s=i?`${s}capture`:s,e=typeof e=="function"?e:e.handleEvent,this.off(s,e,r)},dispatchEvent(s){if(!(s instanceof da))throw new Error("DisplayObject cannot propagate events outside of the Federated Events API");return s.defaultPrevented=!1,s.path=null,s.target=this,s.manager.dispatchEvent(s),!s.defaultPrevented}};lt.mixin(Aw);const bw={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};lt.mixin(bw);const ww=9,Da=100,xw=0,Ew=0,Lu=2,Du=1,_w=-1e3,Tw=-1e3,Sw=2;class Sm{constructor(e){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(ss.tablet||ss.phone)&&this.createTouchHook();const t=document.createElement("div");t.style.width=`${Da}px`,t.style.height=`${Da}px`,t.style.position="absolute",t.style.top=`${xw}px`,t.style.left=`${Ew}px`,t.style.zIndex=Lu.toString(),this.div=t,this.renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){const e=document.createElement("button");e.style.width=`${Du}px`,e.style.height=`${Du}px`,e.style.position="absolute",e.style.top=`${_w}px`,e.style.left=`${Tw}px`,e.style.zIndex=Sw.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),this.renderer.view.parentNode?.appendChild(this.div))}deactivate(){!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),this.div.parentNode?.removeChild(this.div))}updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this.addChild(e),e.renderId=this.renderId);const t=e.children;if(t)for(let i=0;i title : ${e.title}
tabIndex: ${e.tabIndex}`}capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this.renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}addChild(e){let t=this.pool.pop();t||(t=document.createElement("button"),t.style.width=`${Da}px`,t.style.height=`${Da}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=Lu.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`displayObject ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this.updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.displayObject=e,this.children.push(e),this.div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{displayObject:i}=e.target,r=this.renderer.events.rootBoundary,n=Object.assign(new da(r),{target:i});r.rootTarget=this.renderer.lastObjectRendered,t.forEach(a=>r.dispatchEvent(n,a))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===ww&&this.activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Sm.extension={name:"accessibility",type:[ae.RendererPlugin,ae.CanvasRendererPlugin]};me.add(Sm);const Cm=class nc{constructor(e){this.stage=new Ee,e=Object.assign({forceCanvas:!1},e),this.renderer=Ob(e),nc._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render(this.stage)}get view(){return this.renderer?.view}get screen(){return this.renderer?.screen}destroy(e,t){const i=nc._plugins.slice(0);i.reverse(),i.forEach(r=>{r.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};Cm._plugins=[];let Cw=Cm;me.handleByList(ae.Application,Cw._plugins);class Mm{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let t,i;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,i=globalThis.innerHeight;else{const{clientWidth:r,clientHeight:n}=this._resizeTo;t=r,i=n}this.renderer.resize(t,i),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Mm.extension=ae.Application;me.add(Mm);const Ou={loader:ae.LoadParser,resolver:ae.ResolveParser,cache:ae.CacheParser,detection:ae.DetectionParser};me.handle(ae.Asset,s=>{const e=s.ref;Object.entries(Ou).filter(([t])=>!!e[t]).forEach(([t,i])=>me.add(Object.assign(e[t],{extension:e[t].extension??i})))},s=>{const e=s.ref;Object.keys(Ou).filter(t=>!!e[t]).forEach(t=>me.remove(e[t]))});class Mw{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;i(Array.isArray(s)||(s=[s]),e?s.map(i=>typeof i=="string"||t?e(i):i):s),ac=(s,e)=>{const t=e.split("?")[1];return t&&(s+=`?${t}`),s};function km(s,e,t,i,r){const n=e[t];for(let a=0;a{const a=n.substring(1,n.length-1).split(",");r.push(a)}),km(s,r,0,t,i)}else i.push(s);return i}const Po=s=>!Array.isArray(s);class Bw{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||console.warn(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const i=vi(e);let r;for(let o=0;o{r[o]=t}));const n=Object.keys(r),a={cacheKeys:n,keys:i};if(i.forEach(o=>{this._cacheMap.set(o,a)}),n.forEach(o=>{this._cache.has(o)&&this._cache.get(o)!==t&&console.warn("[Cache] already has key:",o),this._cache.set(o,r[o])}),t instanceof te){const o=t;i.forEach(l=>{o.baseTexture!==te.EMPTY.baseTexture&&ke.addToCache(o.baseTexture,l),te.addToCache(o,l)})}}remove(e){if(!this._cacheMap.has(e)){console.warn(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(i=>{this._cache.delete(i)}),t.keys.forEach(i=>{this._cacheMap.delete(i)})}get parsers(){return this._parsers}}const rr=new Bw;class Iw{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,i)=>(this._parsersValidated=!1,e[t]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const i={promise:null,parser:null};return i.promise=(async()=>{let r=null,n=null;if(t.loadParser&&(n=this._parserHash[t.loadParser],n||console.warn(`[Assets] specified load parser "${t.loadParser}" not found while loading ${e}`)),!n){for(let a=0;a({alias:[c],src:c})),o=a.length,l=a.map(async c=>{const u=Et.toAbsolute(c.src);if(!r[c.src])try{this.promiseCache[u]||(this.promiseCache[u]=this._getLoadPromiseAndParser(u,c)),r[c.src]=await this.promiseCache[u].promise,t&&t(++i/o)}catch(h){throw delete this.promiseCache[u],delete r[c.src],new Error(`[Loader.load] Failed to load ${u}. +`;class uw extends Ot{constructor(e=.5,t=Math.random()){super(ym,dw,{uNoise:0,uSeed:0}),this.noise=e,this.seed=t}get noise(){return this.uniforms.uNoise}set noise(e){this.uniforms.uNoise=e}get seed(){return this.uniforms.uSeed}set seed(e){this.uniforms.uSeed=e}}const Pu={AlphaFilter:Jb,BlurFilter:sw,BlurFilterPass:$h,ColorMatrixFilter:ec,DisplacementFilter:lw,FXAAFilter:tc,NoiseFilter:uw};Object.entries(Pu).forEach(([s,e])=>{Object.defineProperty(Pu,s,{get(){return Ne("7.1.0",`filters.${s} has moved to ${s}`),e}})});class pw{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this.tickerAdded||!this.domElement||(xt.system.add(this.tickerUpdate,this,Fs.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&(xt.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events.rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY}))}tickerUpdate(e){this._deltaTime+=e,!(this._deltaTimei.priority-r.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let i=0,r=t.length;i=0;r--)if(e.currentTarget=i[r],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,i=this._allInteractiveElements){if(i.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const r=Array.isArray(t)?t:[t];for(let n=i.length-1;n>=0;n--)r.forEach(a=>{e.currentTarget=i[n],this.notifyTarget(e,a)})}propagationPath(e){const t=[e];for(let i=0;i=0;h--){const d=u[h],p=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,i,r,n,a||n(e,i));if(p){if(p.length>0&&!p[p.length-1].parent)continue;const m=e.isInteractive();(p.length>0||m)&&(m&&this._allInteractiveElements.push(e),p.push(e)),this._hitElements.length===0&&(this._hitElements=p),o=!0}}}const l=this._isInteractive(t),c=e.isInteractive();return l&&c&&this._allInteractiveElements.push(e),a||this._hitElements.length>0?null:o?this._hitElements:l&&!n(e,i)&&r(e,i)?c?[e]:[]:null}hitTestRecursive(e,t,i,r,n){if(this._interactivePrune(e)||n(e,i))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(Cs.pauseUpdate=!1),e.interactiveChildren&&e.children){const l=e.children;for(let c=l.length-1;c>=0;c--){const u=l[c],h=this.hitTestRecursive(u,this._isInteractive(t)?t:u.eventMode,i,r,n);if(h){if(h.length>0&&!h[h.length-1].parent)continue;const d=e.isInteractive();return(h.length>0||d)&&h.push(e),h}}}const a=this._isInteractive(t),o=e.isInteractive();return a&&r(e,i)?o?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!!(!e||e.isMask||!e.visible||!e.renderable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren||e.isMask)}hitPruneFn(e,t){if(e.hitArea&&(e.worldTransform.applyInverse(t,jl),!e.hitArea.contains(jl.x,jl.y)))return!0;if(e._mask){const i=e._mask.isMaskData?e._mask.maskObject:e._mask;if(i&&!i.containsPoint?.(t))return!0}return!1}hitTestFn(e,t){return e.eventMode==="passive"?!1:e.hitArea?!0:e.containsPoint?e.containsPoint(t):!1}notifyTarget(e,t){t=t??e.type;const i=`on${t}`;e.currentTarget[i]?.(e);const r=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this.notifyListeners(e,r),e.eventPhase===e.AT_TARGET&&this.notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const r=t.button===2;this.dispatchEvent(t,r?"rightdown":"mousedown")}const i=this.trackingData(e.pointerId);i.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const i=t.pointerType==="mouse"||t.pointerType==="pen",r=this.trackingData(e.pointerId),n=this.findMountedTarget(r.overTargets);if(r.overTargets?.length>0&&n!==t.target){const l=e.type==="mousemove"?"mouseout":"pointerout",c=this.createPointerEvent(e,l,n);if(this.dispatchEvent(c,"pointerout"),i&&this.dispatchEvent(c,"mouseout"),!t.composedPath().includes(n)){const u=this.createPointerEvent(e,"pointerleave",n);for(u.eventPhase=u.AT_TARGET;u.target&&!t.composedPath().includes(u.target);)u.currentTarget=u.target,this.notifyTarget(u),i&&this.notifyTarget(u,"mouseleave"),u.target=u.target.parent;this.freeEvent(u)}this.freeEvent(c)}if(n!==t.target){const l=e.type==="mousemove"?"mouseover":"pointerover",c=this.clonePointerEvent(t,l);this.dispatchEvent(c,"pointerover"),i&&this.dispatchEvent(c,"mouseover");let u=n?.parent;for(;u&&u!==this.rootTarget.parent&&u!==t.target;)u=u.parent;if(!u||u===this.rootTarget.parent){const h=this.clonePointerEvent(t,"pointerenter");for(h.eventPhase=h.AT_TARGET;h.target&&h.target!==n&&h.target!==this.rootTarget.parent;)h.currentTarget=h.target,this.notifyTarget(h),i&&this.notifyTarget(h,"mouseenter"),h.target=h.target.parent;this.freeEvent(h)}this.freeEvent(c)}const a=[],o=this.enableGlobalMoveEvents??!0;this.moveOnAll?a.push("pointermove"):this.dispatchEvent(t,"pointermove"),o&&a.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?a.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),o&&a.push("globaltouchmove")),i&&(this.moveOnAll?a.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),o&&a.push("globalmousemove"),this.cursor=t.target?.cursor),a.length>0&&this.all(t,a),this._allInteractiveElements.length=0,this._hitElements.length=0,r.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.createPointerEvent(e),r=i.pointerType==="mouse"||i.pointerType==="pen";this.dispatchEvent(i,"pointerover"),r&&this.dispatchEvent(i,"mouseover"),i.pointerType==="mouse"&&(this.cursor=i.target?.cursor);const n=this.clonePointerEvent(i,"pointerenter");for(n.eventPhase=n.AT_TARGET;n.target&&n.target!==this.rootTarget.parent;)n.currentTarget=n.target,this.notifyTarget(n),r&&this.notifyTarget(n,"mouseenter"),n.target=n.target.parent;t.overTargets=i.composedPath(),this.freeEvent(i),this.freeEvent(n)}mapPointerOut(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const i=e.pointerType==="mouse"||e.pointerType==="pen",r=this.findMountedTarget(t.overTargets),n=this.createPointerEvent(e,"pointerout",r);this.dispatchEvent(n),i&&this.dispatchEvent(n,"mouseout");const a=this.createPointerEvent(e,"pointerleave",r);for(a.eventPhase=a.AT_TARGET;a.target&&a.target!==this.rootTarget.parent;)a.currentTarget=a.target,this.notifyTarget(a),i&&this.notifyTarget(a,"mouseleave"),a.target=a.target.parent;t.overTargets=null,this.freeEvent(n),this.freeEvent(a)}this.cursor=null}mapPointerUp(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),i=this.createPointerEvent(e);if(this.dispatchEvent(i,"pointerup"),i.pointerType==="touch")this.dispatchEvent(i,"touchend");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const o=i.button===2;this.dispatchEvent(i,o?"rightup":"mouseup")}const r=this.trackingData(e.pointerId),n=this.findMountedTarget(r.pressTargetsByButton[e.button]);let a=n;if(n&&!i.composedPath().includes(n)){let o=n;for(;o&&!i.composedPath().includes(o);){if(i.currentTarget=o,this.notifyTarget(i,"pointerupoutside"),i.pointerType==="touch")this.notifyTarget(i,"touchendoutside");else if(i.pointerType==="mouse"||i.pointerType==="pen"){const l=i.button===2;this.notifyTarget(i,l?"rightupoutside":"mouseupoutside")}o=o.parent}delete r.pressTargetsByButton[e.button],a=o}if(a){const o=this.clonePointerEvent(i,"click");o.target=a,o.path=null,r.clicksByButton[e.button]||(r.clicksByButton[e.button]={clickCount:0,target:o.target,timeStamp:t});const l=r.clicksByButton[e.button];if(l.target===o.target&&t-l.timeStamp<200?++l.clickCount:l.clickCount=1,l.target=o.target,l.timeStamp=t,o.detail=l.clickCount,o.pointerType==="mouse"){const c=o.button===2;this.dispatchEvent(o,c?"rightclick":"click")}else o.pointerType==="touch"&&this.dispatchEvent(o,"tap");this.dispatchEvent(o,"pointertap"),this.freeEvent(o)}this.freeEvent(i)}mapPointerUpOutside(e){if(!(e instanceof yi)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),i=this.findMountedTarget(t.pressTargetsByButton[e.button]),r=this.createPointerEvent(e);if(i){let n=i;for(;n;)r.currentTarget=n,this.notifyTarget(r,"pointerupoutside"),r.pointerType==="touch"?this.notifyTarget(r,"touchendoutside"):(r.pointerType==="mouse"||r.pointerType==="pen")&&this.notifyTarget(r,r.button===2?"rightupoutside":"mouseupoutside"),n=n.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(r)}mapWheel(e){if(!(e instanceof Zr)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let i=1;i(i==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=r),t[i]=r,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{view:t,resolution:i}=this.renderer;this.setTargetElement(t),this.resolution=i,sc._defaultEventMode=e.eventMode??"auto",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this.currentCursor===e)return;this.currentCursor=e;const i=this.cursorStyles[e];if(i)switch(typeof i){case"string":t&&(this.domElement.style.cursor=i);break;case"function":i(e);break;case"object":t&&Object.assign(this.domElement.style,i);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this.rootPointerEvent}onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this.normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let i=0,r=t.length;i0&&(t=e.composedPath()[0]);const i=t!==this.domElement?"outside":"",r=this.normalizeToPointerData(e);for(let n=0,a=r.length;n"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.isNormalized=!0,n.type=e.type,t.push(n)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const i=e;typeof i.isPrimary>"u"&&(i.isPrimary=!0),typeof i.width>"u"&&(i.width=1),typeof i.height>"u"&&(i.height=1),typeof i.tiltX>"u"&&(i.tiltX=0),typeof i.tiltY>"u"&&(i.tiltY=0),typeof i.pointerType>"u"&&(i.pointerType="mouse"),typeof i.pointerId>"u"&&(i.pointerId=yw),typeof i.pressure>"u"&&(i.pressure=.5),typeof i.twist>"u"&&(i.twist=0),typeof i.tangentialPressure>"u"&&(i.tangentialPressure=0),i.isNormalized=!0,t.push(i)}else t.push(e);return t}normalizeWheelEvent(e){const t=this.rootWheelEvent;return this.transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this.transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=vw[e.type]||e.type),e}transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};ic.extension={name:"events",type:[ae.RendererSystem,ae.CanvasRendererSystem]},ic.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let rc=ic;me.add(rc);function Ru(s){return s==="dynamic"||s==="static"}const Aw={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??Ru(rc.defaultEventMode)},set interactive(s){Ne("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=s,this.eventMode=s?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??rc.defaultEventMode},set eventMode(s){this._internalInteractive=Ru(s),this._internalEventMode=s},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,r=typeof t=="object"?t.signal:void 0,n=typeof t=="object"?t.once===!0:!1,a=typeof e=="function"?void 0:e;s=i?`${s}capture`:s;const o=typeof e=="function"?e:e.handleEvent,l=this;r&&r.addEventListener("abort",()=>{l.off(s,o,a)}),n?l.once(s,o,a):l.on(s,o,a)},removeEventListener(s,e,t){const i=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,r=typeof e=="function"?void 0:e;s=i?`${s}capture`:s,e=typeof e=="function"?e:e.handleEvent,this.off(s,e,r)},dispatchEvent(s){if(!(s instanceof da))throw new Error("DisplayObject cannot propagate events outside of the Federated Events API");return s.defaultPrevented=!1,s.path=null,s.target=this,s.manager.dispatchEvent(s),!s.defaultPrevented}};lt.mixin(Aw);const bw={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};lt.mixin(bw);const ww=9,Da=100,xw=0,Ew=0,Lu=2,Du=1,_w=-1e3,Tw=-1e3,Sw=2;class Sm{constructor(e){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(ss.tablet||ss.phone)&&this.createTouchHook();const t=document.createElement("div");t.style.width=`${Da}px`,t.style.height=`${Da}px`,t.style.position="absolute",t.style.top=`${xw}px`,t.style.left=`${Ew}px`,t.style.zIndex=Lu.toString(),this.div=t,this.renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){const e=document.createElement("button");e.style.width=`${Du}px`,e.style.height=`${Du}px`,e.style.position="absolute",e.style.top=`${_w}px`,e.style.left=`${Tw}px`,e.style.zIndex=Sw.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),this.renderer.view.parentNode?.appendChild(this.div))}deactivate(){!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),this.div.parentNode?.removeChild(this.div))}updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this.addChild(e),e.renderId=this.renderId);const t=e.children;if(t)for(let i=0;i title : ${e.title}
tabIndex: ${e.tabIndex}`}capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this.renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}addChild(e){let t=this.pool.pop();t||(t=document.createElement("button"),t.style.width=`${Da}px`,t.style.height=`${Da}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=Lu.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`displayObject ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this.updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.displayObject=e,this.children.push(e),this.div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{displayObject:i}=e.target,r=this.renderer.events.rootBoundary,n=Object.assign(new da(r),{target:i});r.rootTarget=this.renderer.lastObjectRendered,t.forEach(a=>r.dispatchEvent(n,a))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===ww&&this.activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Sm.extension={name:"accessibility",type:[ae.RendererPlugin,ae.CanvasRendererPlugin]};me.add(Sm);const Cm=class nc{constructor(e){this.stage=new Ee,e=Object.assign({forceCanvas:!1},e),this.renderer=Ob(e),nc._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render(this.stage)}get view(){return this.renderer?.view}get screen(){return this.renderer?.screen}destroy(e,t){const i=nc._plugins.slice(0);i.reverse(),i.forEach(r=>{r.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};Cm._plugins=[];let Cw=Cm;me.handleByList(ae.Application,Cw._plugins);class Mm{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let t,i;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,i=globalThis.innerHeight;else{const{clientWidth:r,clientHeight:n}=this._resizeTo;t=r,i=n}this.renderer.resize(t,i),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Mm.extension=ae.Application;me.add(Mm);const Ou={loader:ae.LoadParser,resolver:ae.ResolveParser,cache:ae.CacheParser,detection:ae.DetectionParser};me.handle(ae.Asset,s=>{const e=s.ref;Object.entries(Ou).filter(([t])=>!!e[t]).forEach(([t,i])=>me.add(Object.assign(e[t],{extension:e[t].extension??i})))},s=>{const e=s.ref;Object.keys(Ou).filter(t=>!!e[t]).forEach(t=>me.remove(e[t]))});class Mw{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let i=0;i(Array.isArray(s)||(s=[s]),e?s.map(i=>typeof i=="string"||t?e(i):i):s),ac=(s,e)=>{const t=e.split("?")[1];return t&&(s+=`?${t}`),s};function km(s,e,t,i,r){const n=e[t];for(let a=0;a{const a=n.substring(1,n.length-1).split(",");r.push(a)}),km(s,r,0,t,i)}else i.push(s);return i}const Po=s=>!Array.isArray(s);class Bw{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||console.warn(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const i=vi(e);let r;for(let o=0;o{r[o]=t}));const n=Object.keys(r),a={cacheKeys:n,keys:i};if(i.forEach(o=>{this._cacheMap.set(o,a)}),n.forEach(o=>{this._cache.has(o)&&this._cache.get(o)!==t&&console.warn("[Cache] already has key:",o),this._cache.set(o,r[o])}),t instanceof te){const o=t;i.forEach(l=>{o.baseTexture!==te.EMPTY.baseTexture&&ke.addToCache(o.baseTexture,l),te.addToCache(o,l)})}}remove(e){if(!this._cacheMap.has(e)){console.warn(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(i=>{this._cache.delete(i)}),t.keys.forEach(i=>{this._cacheMap.delete(i)})}get parsers(){return this._parsers}}const rr=new Bw;class Iw{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,i)=>(this._parsersValidated=!1,e[t]=i,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const i={promise:null,parser:null};return i.promise=(async()=>{let r=null,n=null;if(t.loadParser&&(n=this._parserHash[t.loadParser],n||console.warn(`[Assets] specified load parser "${t.loadParser}" not found while loading ${e}`)),!n){for(let a=0;a({alias:[c],src:c})),o=a.length,l=a.map(async c=>{const u=Et.toAbsolute(c.src);if(!r[c.src])try{this.promiseCache[u]||(this.promiseCache[u]=this._getLoadPromiseAndParser(u,c)),r[c.src]=await this.promiseCache[u].promise,t&&t(++i/o)}catch(h){throw delete this.promiseCache[u],delete r[c.src],new Error(`[Loader.load] Failed to load ${u}. ${h}`)}});return await Promise.all(l),n?r[a[0].src]:r}async unload(e){const t=vi(e,i=>({alias:[i],src:i})).map(async i=>{const r=Et.toAbsolute(i.src),n=this.promiseCache[r];if(n){const a=await n.promise;delete this.promiseCache[r],n.parser?.unload?.(a,i,this)}});await Promise.all(t)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(e=>e.name).reduce((e,t)=>(e[t.name]&&console.warn(`[Assets] loadParser name conflict "${t.name}"`),{...e,[t.name]:t}),{})}}var Mi=(s=>(s[s.Low=0]="Low",s[s.Normal=1]="Normal",s[s.High=2]="High",s))(Mi||{});const Pw=".json",Rw="application/json",Lw={extension:{type:ae.LoadParser,priority:Mi.Low},name:"loadJson",test(s){return vn(s,Rw)||Hs(s,Pw)},async load(s){return await(await de.ADAPTER.fetch(s)).json()}};me.add(Lw);const Dw=".txt",Ow="text/plain",Fw={name:"loadTxt",extension:{type:ae.LoadParser,priority:Mi.Low},test(s){return vn(s,Ow)||Hs(s,Dw)},async load(s){return await(await de.ADAPTER.fetch(s)).text()}};me.add(Fw);const Nw=["normal","bold","100","200","300","400","500","600","700","800","900"],Uw=[".ttf",".otf",".woff",".woff2"],Gw=["font/ttf","font/otf","font/woff","font/woff2"],Hw=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function Vw(s){const e=Et.extname(s),t=Et.basename(s,e).replace(/(-|_)/g," ").toLowerCase().split(" ").map(n=>n.charAt(0).toUpperCase()+n.slice(1));let i=t.length>0;for(const n of t)if(!n.match(Hw)){i=!1;break}let r=t.join(" ");return i||(r=`"${r.replace(/[\\"]/g,"\\$&")}"`),r}const Ww=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function zw(s){return Ww.test(s)?s:encodeURI(s)}const Yw={extension:{type:ae.LoadParser,priority:Mi.Low},name:"loadWebFont",test(s){return vn(s,Gw)||Hs(s,Uw)},async load(s,e){const t=de.ADAPTER.getFontFaceSet();if(t){const i=[],r=e.data?.family??Vw(s),n=e.data?.weights?.filter(o=>Nw.includes(o))??["normal"],a=e.data??{};for(let o=0;ode.ADAPTER.getFontFaceSet().delete(e))}};me.add(Yw);const jw=`(function() { "use strict"; const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII="; @@ -908,7 +908,7 @@ ${h}`)}});return await Promise.all(l),n?r[a[0].src]:r}async unload(e){const t=vi }; })(); `;let en=null;class Bm{constructor(){en||(en=URL.createObjectURL(new Blob([Xw],{type:"application/javascript"}))),this.worker=new Worker(en)}}Bm.revokeObjectURL=function(){en&&(URL.revokeObjectURL(en),en=null)};let Fu=0,Xl;class Kw{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(e=>{const{worker:t}=new oc;t.addEventListener("message",i=>{t.terminate(),oc.revokeObjectURL(),e(i.data)})}),this._isImageBitmapSupported)}loadImageBitmap(e){return this._run("loadImageBitmap",[e])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){Xl===void 0&&(Xl=navigator.hardwareConcurrency||4);let e=this.workerPool.pop();return!e&&this._createdWorkers{this.complete(t.data),this.returnWorker(t.target),this.next()})),e}returnWorker(e){this.workerPool.push(e)}complete(e){e.error!==void 0?this.resolveHash[e.uuid].reject(e.error):this.resolveHash[e.uuid].resolve(e.data),this.resolveHash[e.uuid]=null}async _run(e,t){await this._initWorkers();const i=new Promise((r,n)=>{this.queue.push({id:e,arguments:t,resolve:r,reject:n})});return this.next(),i}next(){if(!this.queue.length)return;const e=this.getWorker();if(!e)return;const t=this.queue.pop(),i=t.id;this.resolveHash[Fu]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:Fu++,id:i})}}const Nu=new Kw;function ua(s,e,t){s.resource.internal=!0;const i=new te(s),r=()=>{delete e.promiseCache[t],rr.has(t)&&rr.remove(t)};return i.baseTexture.once("destroyed",()=>{t in e.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),r())}),i.once("destroyed",()=>{s.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),r())}),i}const qw=[".jpeg",".jpg",".png",".webp",".avif"],Qw=["image/jpeg","image/png","image/webp","image/avif"];async function Jw(s){const e=await de.ADAPTER.fetch(s);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${s}: ${e.status} ${e.statusText}`);const t=await e.blob();return await createImageBitmap(t)}const $o={name:"loadTextures",extension:{type:ae.LoadParser,priority:Mi.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(s){return vn(s,Qw)||Hs(s,qw)},async load(s,e,t){const i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap;let r;i?this.config.preferWorkers&&await Nu.isImageBitmapSupported()?r=await Nu.loadImageBitmap(s):r=await Jw(s):r=await new Promise((o,l)=>{const c=new Image;c.crossOrigin=this.config.crossOrigin,c.src=s,c.complete?o(c):(c.onload=()=>o(c),c.onerror=u=>l(u))});const n={...e.data};n.resolution??(n.resolution=hs(s)),i&&n.resourceOptions?.ownsImageBitmap===void 0&&(n.resourceOptions={...n.resourceOptions},n.resourceOptions.ownsImageBitmap=!0);const a=new ke(r,n);return a.resource.src=s,ua(a,t,s)},unload(s){s.destroy(!0)}};me.add($o);const Zw=".svg",$w="image/svg+xml",ex={extension:{type:ae.LoadParser,priority:Mi.High},name:"loadSVG",test(s){return vn(s,$w)||Hs(s,Zw)},async testParse(s){return qh.test(s)},async parse(s,e,t){const i=new qh(s,e?.data?.resourceOptions);await i.load();const r=new ke(i,{resolution:hs(s),...e?.data});return r.resource.src=e.src,ua(r,t,e.src)},async load(s,e){return(await de.ADAPTER.fetch(s)).text()},unload:$o.unload};me.add(ex);const tx=[".mp4",".m4v",".webm",".ogv"],ix=["video/mp4","video/webm","video/ogg"],sx={name:"loadVideo",extension:{type:ae.LoadParser,priority:Mi.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(s){return vn(s,ix)||Hs(s,tx)},async load(s,e,t){let i;const r=await(await de.ADAPTER.fetch(s)).blob(),n=URL.createObjectURL(r);try{const a={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...e?.data?.resourceOptions,autoLoad:!0},o=new Em(n,a);await o.load();const l=new ke(o,{alphaMode:await lA(),resolution:hs(s),...e?.data});l.resource.src=s,i=ua(l,t,s),i.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(n)})}catch(a){throw URL.revokeObjectURL(n),a}return i},unload(s){s.destroy(!0)}};me.add(sx);class rx{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(i=>`${encodeURIComponent(i)}=${encodeURIComponent(t[i])}`).join("&")}}getAlias(e){const{alias:t,name:i,src:r,srcs:n}=e;return vi(t||i||r||n,a=>typeof a=="string"?a:Array.isArray(a)?a.map(o=>o?.src??o?.srcs??o):a?.src||a?.srcs?a.src??a.srcs:a,!0)}addManifest(e){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const i=[];Array.isArray(t)?t.forEach(r=>{const n=r.src??r.srcs,a=r.alias??r.name;let o;if(typeof a=="string"){const l=this._createBundleAssetId(e,a);i.push(l),o=[a,l]}else{const l=a.map(c=>this._createBundleAssetId(e,c));i.push(...l),o=[...a,...l]}this.add({...r,alias:o,src:n})}):Object.keys(t).forEach(r=>{const n=[r,this._createBundleAssetId(e,r)];if(typeof t[r]=="string")this.add({alias:n,src:t[r]});else if(Array.isArray(t[r]))this.add({alias:n,src:t[r]});else{const a=t[r],o=a.src??a.srcs;this.add({...a,alias:n,src:Array.isArray(o)?o:[o]})}i.push(...n)}),this._bundles[e]=i}add(e,t,i,r,n){const a=[];typeof e=="string"||Array.isArray(e)&&typeof e[0]=="string"?(Ne("7.2.0",`Assets.add now uses an object instead of individual parameters. -Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),a.push({alias:e,src:t,data:i,format:r,loadParser:n})):Array.isArray(e)?a.push(...e):a.push(e);let o;o=l=>{this.hasKey(l)&&console.warn(`[Resolver] already has key: ${l} overwriting`)},vi(a).forEach(l=>{const{src:c,srcs:u}=l;let{data:h,format:d,loadParser:p}=l;const m=vi(c||u).map(y=>typeof y=="string"?kw(y):Array.isArray(y)?y:[y]),f=this.getAlias(l);Array.isArray(f)?f.forEach(o):o(f);const g=[];m.forEach(y=>{y.forEach(b=>{let A={};if(typeof b!="object"){A.src=b;for(let v=0;v{this._assetMap[y]=g})})}resolveBundle(e){const t=Po(e);e=vi(e);const i={};return e.forEach(r=>{const n=this._bundles[r];if(n){const a=this.resolve(n),o={};for(const l in a){const c=a[l];o[this._extractAssetIdFromBundle(r,l)]=c}i[r]=o}}),t?i[e[0]]:i}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const i={};for(const r in t)i[r]=t[r].src;return i}return t.src}resolve(e){const t=Po(e);e=vi(e);const i={};return e.forEach(r=>{if(!this._resolverHash[r])if(this._assetMap[r]){let n=this._assetMap[r];const a=n[0],o=this._getPreferredOrder(n);o?.priority.forEach(l=>{o.params[l].forEach(c=>{const u=n.filter(h=>h[l]?h[l]===c:!1);u.length&&(n=u)})}),this._resolverHash[r]=n[0]??a}else this._resolverHash[r]=this.buildResolvedAsset({alias:[r],src:r},{});i[r]=this._resolverHash[r]}),t?i[e[0]]:i}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;tn.params.format.includes(i.format));if(r)return r}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}buildResolvedAsset(e,t){const{aliases:i,data:r,loadParser:n,format:a}=t;return(this._basePath||this._rootPath)&&(e.src=Et.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=i??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...r||{},...e.data},e.loadParser=n??e.loadParser,e.format=a??e.format??Et.extname(e.src).slice(1),e.srcs=e.src,e.name=e.alias,e}}class nx{constructor(){this._detections=[],this._initialized=!1,this.resolver=new rx,this.loader=new Iw,this.cache=rr,this._backgroundLoader=new Mw(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let n=e.manifest;typeof n=="string"&&(n=await this.load(n)),this.resolver.addManifest(n)}const t=e.texturePreference?.resolution??1,i=typeof t=="number"?[t]:t,r=await this._detectFormats({preferredFormats:e.texturePreference?.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:r,resolution:i}}),e.preferences&&this.setPreferences(e.preferences)}add(e,t,i,r,n){this.resolver.add(e,t,i,r,n)}async load(e,t){this._initialized||await this.init();const i=Po(e),r=vi(e).map(o=>{if(typeof o!="string"){const l=this.resolver.getAlias(o);return l.some(c=>!this.resolver.hasKey(c))&&this.add(o),Array.isArray(l)?l[0]:l}return this.resolver.hasKey(o)||this.add({alias:o,src:o}),o}),n=this.resolver.resolve(r),a=await this._mapLoadToResolve(n,t);return i?a[r[0]]:a}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let i=!1;typeof e=="string"&&(i=!0,e=[e]);const r=this.resolver.resolveBundle(e),n={},a=Object.keys(r);let o=0,l=0;const c=()=>{t?.(++o/l)},u=a.map(h=>{const d=r[h];return l+=Object.keys(d).length,this._mapLoadToResolve(d,c).then(p=>{n[h]=p})});return await Promise.all(u),i?n[e[0]]:n}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return rr.get(e);const t={};for(let i=0;i{const c=n[o.src],u=[o.src];o.alias&&u.push(...o.alias),a[r[l]]=c,rr.set(u,c)}),a}async unload(e){this._initialized||await this.init();const t=vi(e).map(r=>typeof r!="string"?r.src:r),i=this.resolver.resolve(t);await this._unloadFromResolved(i)}async unloadBundle(e){this._initialized||await this.init(),e=vi(e);const t=this.resolver.resolveBundle(e),i=Object.keys(t).map(r=>this._unloadFromResolved(t[r]));await Promise.all(i)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(i=>{rr.remove(i.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const i of e.detections)e.skipDetections||await i.test()?t=await i.add(t):e.skipDetections||(t=await i.remove(t));return t=t.filter((i,r)=>t.indexOf(i)===r),t}get detections(){return this._detections}get preferWorkers(){return $o.config.preferWorkers}set preferWorkers(e){Ne("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:e})}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(i=>i in e).forEach(i=>{t.config[i]=e[i]})})}}const Yr=new nx;me.handleByList(ae.LoadParser,Yr.loader.parsers).handleByList(ae.ResolveParser,Yr.resolver.parsers).handleByList(ae.CacheParser,Yr.cache.parsers).handleByList(ae.DetectionParser,Yr.detections);const ax={extension:ae.CacheParser,test:s=>Array.isArray(s)&&s.every(e=>e instanceof te),getCacheableAssets:(s,e)=>{const t={};return s.forEach(i=>{e.forEach((r,n)=>{t[i+(n===0?"":n+1)]=r})}),t}};me.add(ax);async function Im(s){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=s});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(s)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const ox={extension:{type:ae.DetectionParser,priority:1},test:async()=>Im("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async s=>[...s,"avif"],remove:async s=>s.filter(e=>e!=="avif")};me.add(ox);const lx={extension:{type:ae.DetectionParser,priority:0},test:async()=>Im("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async s=>[...s,"webp"],remove:async s=>s.filter(e=>e!=="webp")};me.add(lx);const Uu=["png","jpg","jpeg"],hx={extension:{type:ae.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async s=>[...s,...Uu],remove:async s=>s.filter(e=>!Uu.includes(e))};me.add(hx);const cx="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function Wc(s){return cx?!1:document.createElement("video").canPlayType(s)!==""}const dx={extension:{type:ae.DetectionParser,priority:0},test:async()=>Wc("video/webm"),add:async s=>[...s,"webm"],remove:async s=>s.filter(e=>e!=="webm")};me.add(dx);const ux={extension:{type:ae.DetectionParser,priority:0},test:async()=>Wc("video/mp4"),add:async s=>[...s,"mp4","m4v"],remove:async s=>s.filter(e=>e!=="mp4"&&e!=="m4v")};me.add(ux);const px={extension:{type:ae.DetectionParser,priority:0},test:async()=>Wc("video/ogg"),add:async s=>[...s,"ogv"],remove:async s=>s.filter(e=>e!=="ogv")};me.add(px);const fx={extension:ae.ResolveParser,test:$o.test,parse:s=>({resolution:parseFloat(de.RETINA_PREFIX.exec(s)?.[1]??"1"),format:Et.extname(s).slice(1),src:s})};me.add(fx);var Tt=(s=>(s[s.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",s[s.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",s[s.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",s[s.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",s[s.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",s[s.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",s[s.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",s[s.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",s[s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",s[s.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",s[s.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",s[s.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",s[s.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",s[s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",s[s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",s[s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",s))(Tt||{});const Ro={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};let Pi,Fr;function Gu(){Fr={bptc:Pi.getExtension("EXT_texture_compression_bptc"),astc:Pi.getExtension("WEBGL_compressed_texture_astc"),etc:Pi.getExtension("WEBGL_compressed_texture_etc"),s3tc:Pi.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:Pi.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:Pi.getExtension("WEBGL_compressed_texture_pvrtc")||Pi.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:Pi.getExtension("WEBGL_compressed_texture_etc1"),atc:Pi.getExtension("WEBGL_compressed_texture_atc")}}const mx={extension:{type:ae.DetectionParser,priority:2},test:async()=>{const s=de.ADAPTER.createCanvas().getContext("webgl");return s?(Pi=s,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async s=>{Fr||Gu();const e=[];for(const t in Fr)Fr[t]&&e.push(t);return[...e,...s]},remove:async s=>(Fr||Gu(),s.filter(e=>!(e in Fr)))};me.add(mx);class gx extends Ko{constructor(e,t={width:1,height:1,autoLoad:!0}){let i,r;typeof e=="string"?(i=e,r=new Uint8Array):(i=null,r=e),super(r,t),this.origin=i,this.buffer=r?new Oh(r):null,this._load=null,this.loaded=!1,this.origin!==null&&t.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(e){}load(){return this._load?this._load:(this._load=fetch(this.origin).then(e=>e.blob()).then(e=>e.arrayBuffer()).then(e=>(this.data=new Uint32Array(e),this.buffer=new Oh(e),this.loaded=!0,this.onBlobLoaded(e),this.update(),this)),this._load)}}class pr extends gx{constructor(e,t){super(e,t),this.format=t.format,this.levels=t.levels||1,this._width=t.width,this._height=t.height,this._extension=pr._formatToExtension(this.format),(t.levelBuffers||this.buffer)&&(this._levelBuffers=t.levelBuffers||pr._createLevelBuffers(e instanceof Uint8Array?e:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(e,t,i){const r=e.gl;if(!e.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;r.pixelStorei(r.UNPACK_ALIGNMENT,4);for(let n=0,a=this.levels;n=33776&&e<=33779)return"s3tc";if(e>=35916&&e<=35919)return"s3tc_sRGB";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e===36196)return"etc1";if(e===35986||e===35987||e===34798)return"atc";if(e>=36492&&e<=36495)return"bptc";if(e===37808)return"astc";throw new Error(`Invalid (compressed) texture format given: ${e}`)}static _createLevelBuffers(e,t,i,r,n,a,o){const l=new Array(i);let c=e.byteOffset,u=a,h=o,d=u+r-1&~(r-1),p=h+n-1&~(n-1),m=d*p*Ro[t];for(let f=0;f1?u:d,levelHeight:i>1?h:p,levelBuffer:new Uint8Array(e.buffer,c,m)},c+=m,u=u>>1||1,h=h>>1||1,d=u+r-1&~(r-1),p=h+n-1&~(n-1),m=d*p*Ro[t];return l}}const Kl=4,Oa=124,yx=32,Hu=20,vx=542327876,Fa={SIZE:1,FLAGS:2,HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},Ax={SIZE:0,FLAGS:1,FOURCC:2,RGB_BITCOUNT:3,R_BIT_MASK:4,G_BIT_MASK:5,B_BIT_MASK:6,A_BIT_MASK:7},Na={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3,MISC_FLAGS2:4},bx=1,wx=2,xx=4,Ex=64,_x=512,Tx=131072,Sx=827611204,Cx=861165636,Mx=894720068,kx=808540228,Bx=4,Ix={[Sx]:Tt.COMPRESSED_RGBA_S3TC_DXT1_EXT,[Cx]:Tt.COMPRESSED_RGBA_S3TC_DXT3_EXT,[Mx]:Tt.COMPRESSED_RGBA_S3TC_DXT5_EXT},Px={70:Tt.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:Tt.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:Tt.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:Tt.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:Tt.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:Tt.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:Tt.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:Tt.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:Tt.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:Tt.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:Tt.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:Tt.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:Tt.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function Rx(s){const e=new Uint32Array(s);if(e[0]!==vx)throw new Error("Invalid DDS file magic word");const t=new Uint32Array(s,0,Oa/Uint32Array.BYTES_PER_ELEMENT),i=t[Fa.HEIGHT],r=t[Fa.WIDTH],n=t[Fa.MIPMAP_COUNT],a=new Uint32Array(s,Fa.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,yx/Uint32Array.BYTES_PER_ELEMENT),o=a[bx];if(o&xx){const l=a[Ax.FOURCC];if(l!==kx){const b=Ix[l],A=Kl+Oa,v=new Uint8Array(s,A);return[new pr(v,{format:b,width:r,height:i,levels:n})]}const c=Kl+Oa,u=new Uint32Array(e.buffer,c,Hu/Uint32Array.BYTES_PER_ELEMENT),h=u[Na.DXGI_FORMAT],d=u[Na.RESOURCE_DIMENSION],p=u[Na.MISC_FLAG],m=u[Na.ARRAY_SIZE],f=Px[h];if(f===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${h}`);if(p===Bx)throw new Error("DDSParser does not support cubemap textures");if(d===6)throw new Error("DDSParser does not supported 3D texture data");const g=new Array,y=Kl+Oa+Hu;if(m===1)g.push(new Uint8Array(s,y));else{const b=Ro[f];let A=0,v=r,_=i;for(let B=0;B>>1,_=_>>>1}let C=y;for(let B=0;Bnew pr(b,{format:f,width:r,height:i,levels:n}))}throw o&Ex?new Error("DDSParser does not support uncompressed texture data."):o&_x?new Error("DDSParser does not supported YUV uncompressed texture data."):o&Tx?new Error("DDSParser does not support single-channel (lumninance) texture data!"):o&wx?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const Vu=[171,75,84,88,32,49,49,187,13,10,26,10],Lx=67305985,fi={FILE_IDENTIFIER:0,ENDIANNESS:12,GL_TYPE:16,GL_TYPE_SIZE:20,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,GL_BASE_INTERNAL_FORMAT:32,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},lc=64,Wu={[we.UNSIGNED_BYTE]:1,[we.UNSIGNED_SHORT]:2,[we.INT]:4,[we.UNSIGNED_INT]:4,[we.FLOAT]:4,[we.HALF_FLOAT]:8},Dx={[se.RGBA]:4,[se.RGB]:3,[se.RG]:2,[se.RED]:1,[se.LUMINANCE]:1,[se.LUMINANCE_ALPHA]:2,[se.ALPHA]:1},Ox={[we.UNSIGNED_SHORT_4_4_4_4]:2,[we.UNSIGNED_SHORT_5_5_5_1]:2,[we.UNSIGNED_SHORT_5_6_5]:2};function Fx(s,e,t=!1){const i=new DataView(e);if(!Nx(s,i))return null;const r=i.getUint32(fi.ENDIANNESS,!0)===Lx,n=i.getUint32(fi.GL_TYPE,r),a=i.getUint32(fi.GL_FORMAT,r),o=i.getUint32(fi.GL_INTERNAL_FORMAT,r),l=i.getUint32(fi.PIXEL_WIDTH,r),c=i.getUint32(fi.PIXEL_HEIGHT,r)||1,u=i.getUint32(fi.PIXEL_DEPTH,r)||1,h=i.getUint32(fi.NUMBER_OF_ARRAY_ELEMENTS,r)||1,d=i.getUint32(fi.NUMBER_OF_FACES,r),p=i.getUint32(fi.NUMBER_OF_MIPMAP_LEVELS,r),m=i.getUint32(fi.BYTES_OF_KEY_VALUE_DATA,r);if(c===0||u!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(h!==1)throw new Error("WebGL does not support array textures");const f=4,g=4,y=l+3&-4,b=c+3&-4,A=new Array(h);let v=l*c;n===0&&(v=y*b);let _;if(n!==0?Wu[n]?_=Wu[n]*Dx[a]:_=Ox[n]:_=Ro[o],_===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const C=t?Gx(i,m,r):null;let B=v*_,P=l,M=c,U=y,F=b,T=lc+m;for(let S=0;S1||n!==0?P:U,levelHeight:p>1||n!==0?M:F,levelBuffer:new Uint8Array(e,L,B)},L+=B}T+=x+4,T=T%4!==0?T+4-T%4:T,P=P>>1||1,M=M>>1||1,U=P+f-1&~(f-1),F=M+g-1&~(g-1),B=U*F*_}return n!==0?{uncompressed:A.map(S=>{let x=S[0].levelBuffer,L=!1;return n===we.FLOAT?x=new Float32Array(S[0].levelBuffer.buffer,S[0].levelBuffer.byteOffset,S[0].levelBuffer.byteLength/4):n===we.UNSIGNED_INT?(L=!0,x=new Uint32Array(S[0].levelBuffer.buffer,S[0].levelBuffer.byteOffset,S[0].levelBuffer.byteLength/4)):n===we.INT&&(L=!0,x=new Int32Array(S[0].levelBuffer.buffer,S[0].levelBuffer.byteOffset,S[0].levelBuffer.byteLength/4)),{resource:new Ko(x,{width:S[0].levelWidth,height:S[0].levelHeight}),type:n,format:L?Ux(a):a}}),kvData:C}:{compressed:A.map(S=>new pr(null,{format:o,width:l,height:c,levels:p,levelBuffers:S})),kvData:C}}function Nx(s,e){for(let t=0;te-r){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let l=0;for(;l{const a=new ke(n,{mipmap:Xi.OFF,alphaMode:Ut.NO_PREMULTIPLIED_ALPHA,resolution:hs(s),...e.data});return ua(a,t,s)});return r.length===1?r[0]:r},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};me.add(Hx);const Vx={extension:{type:ae.LoadParser,priority:Mi.High},name:"loadKTX",test(s){return Hs(s,".ktx")},async load(s,e,t){const i=await(await de.ADAPTER.fetch(s)).arrayBuffer(),{compressed:r,uncompressed:n,kvData:a}=Fx(s,i),o=r??n,l={mipmap:Xi.OFF,alphaMode:Ut.NO_PREMULTIPLIED_ALPHA,resolution:hs(s),...e.data},c=o.map(u=>{o===n&&Object.assign(l,{type:u.type,format:u.format});const h=u.resource??u,d=new ke(h,l);return d.ktxKeyValueData=a,ua(d,t,s)});return c.length===1?c[0]:c},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};me.add(Vx);const Wx=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],zx={extension:ae.ResolveParser,test:s=>{const e=Et.extname(s).slice(1);return["basis","ktx","dds"].includes(e)},parse:s=>{const e=s.split("."),t=e.pop();if(["ktx","dds"].includes(t)){const i=e.pop();if(Wx.includes(i))return{resolution:parseFloat(de.RETINA_PREFIX.exec(s)?.[1]??"1"),format:i,src:s}}return{resolution:parseFloat(de.RETINA_PREFIX.exec(s)?.[1]??"1"),format:t,src:s}}};me.add(zx);const Ua=new Me,Yx=4,Pm=class On{constructor(e){this.renderer=e,this._rendererPremultipliedAlpha=!1}contextChange(){const e=this.renderer?.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}async image(e,t,i,r){const n=new Image;return n.src=await this.base64(e,t,i,r),n}async base64(e,t,i,r){const n=this.canvas(e,r);if(n.toBlob!==void 0)return new Promise((a,o)=>{n.toBlob(l=>{if(!l){o(new Error("ICanvas.toBlob failed!"));return}const c=new FileReader;c.onload=()=>a(c.result),c.onerror=o,c.readAsDataURL(l)},t,i)});if(n.toDataURL!==void 0)return n.toDataURL(t,i);if(n.convertToBlob!==void 0){const a=await n.convertToBlob({type:t,quality:i});return new Promise((o,l)=>{const c=new FileReader;c.onload=()=>o(c.result),c.onerror=l,c.readAsDataURL(a)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e,t){const{pixels:i,width:r,height:n,flipY:a,premultipliedAlpha:o}=this._rawPixels(e,t);a&&On._flipY(i,r,n),o&&On._unpremultiplyAlpha(i);const l=new _A(r,n,1),c=new ImageData(new Uint8ClampedArray(i.buffer),r,n);return l.context.putImageData(c,0,0),l.canvas}pixels(e,t){const{pixels:i,width:r,height:n,flipY:a,premultipliedAlpha:o}=this._rawPixels(e,t);return a&&On._flipY(i,r,n),o&&On._unpremultiplyAlpha(i),i}_rawPixels(e,t){const i=this.renderer;if(!i)throw new Error("The Extract has already been destroyed");let r,n=!1,a=!1,o,l=!1;e&&(e instanceof Rt?o=e:(o=i.generateTexture(e,{region:t,resolution:i.resolution,multisample:i.multisample}),l=!0,t&&(Ua.width=t.width,Ua.height=t.height,t=Ua)));const c=i.gl;if(o){if(r=o.baseTexture.resolution,t=t??o.frame,n=!1,a=o.baseTexture.alphaMode>0&&o.baseTexture.format===se.RGBA,!l){i.renderTexture.bind(o);const p=o.framebuffer.glFramebuffers[i.CONTEXT_UID];p.blitFramebuffer&&i.framebuffer.bind(p.blitFramebuffer)}}else r=i.resolution,t||(t=Ua,t.width=i.width/r,t.height=i.height/r),n=!0,a=this._rendererPremultipliedAlpha,i.renderTexture.bind();const u=Math.max(Math.round(t.width*r),1),h=Math.max(Math.round(t.height*r),1),d=new Uint8Array(Yx*u*h);return c.readPixels(Math.round(t.x*r),Math.round(t.y*r),u,h,c.RGBA,c.UNSIGNED_BYTE,d),l&&o?.destroy(!0),{pixels:d,width:u,height:h,flipY:n,premultipliedAlpha:a}}destroy(){this.renderer=null}static _flipY(e,t,i){const r=t<<2,n=i>>1,a=new Uint8Array(r);for(let o=0;o=0&&o>=0&&r>=0&&n>=0)){e.length=0;return}const l=Math.ceil(2.3*Math.sqrt(a+o)),c=l*8+(r?4:0)+(n?4:0);if(e.length=c,c===0)return;if(l===0){e.length=8,e[0]=e[6]=t+r,e[1]=e[3]=i+n,e[2]=e[4]=t-r,e[5]=e[7]=i-n;return}let u=0,h=l*4+(r?2:0)+2,d=h,p=c;{const m=r+a,f=n,g=t+m,y=t-m,b=i+f;if(e[u++]=g,e[u++]=b,e[--h]=b,e[--h]=y,n){const A=i-f;e[d++]=y,e[d++]=A,e[--p]=A,e[--p]=g}}for(let m=1;m0||e&&i<=0){const r=t/2;for(let n=r+r%2;n=6){zu(t,!1);const a=[];for(let c=0;c=0&&n>=0&&a.push(t,i,t+r,i,t+r,i+n,t,i+n)},triangulate(s,e){const t=s.points,i=e.points;if(t.length===0)return;const r=i.length/2;i.push(t[0],t[1],t[2],t[3],t[6],t[7],t[4],t[5]),e.indices.push(r,r+1,r+2,r+1,r+2,r+3)}},Kx={build(s){Lo.build(s)},triangulate(s,e){Lo.triangulate(s,e)}};var ii=(s=>(s.MITER="miter",s.BEVEL="bevel",s.ROUND="round",s))(ii||{}),Ls=(s=>(s.BUTT="butt",s.ROUND="round",s.SQUARE="square",s))(Ls||{});const nn={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(s,e=20){if(!this.adaptive||!s||isNaN(s))return e;let t=Math.ceil(s/this.maxLength);return tthis.maxSegments&&(t=this.maxSegments),t}};class Yu{static curveTo(e,t,i,r,n,a){const o=a[a.length-2],l=a[a.length-1]-t,c=o-e,u=r-t,h=i-e,d=Math.abs(l*h-c*u);if(d<1e-8||n===0)return(a[a.length-2]!==e||a[a.length-1]!==t)&&a.push(e,t),null;const p=l*l+c*c,m=u*u+h*h,f=l*u+c*h,g=n*Math.sqrt(p)/d,y=n*Math.sqrt(m)/d,b=g*f/p,A=y*f/m,v=g*h+y*c,_=g*u+y*l,C=c*(y+b),B=l*(y+b),P=h*(g+A),M=u*(g+A),U=Math.atan2(B-_,C-v),F=Math.atan2(M-_,P-v);return{cx:v+e,cy:_+t,radius:n,startAngle:U,endAngle:F,anticlockwise:c*u>h*l}}static arc(e,t,i,r,n,a,o,l,c){const u=o-a,h=nn._segmentsCount(Math.abs(u)*n,Math.ceil(Math.abs(u)/To)*40),d=u/(h*2),p=d*2,m=Math.cos(d),f=Math.sin(d),g=h-1,y=g%1/g;for(let b=0;b<=g;++b){const A=b+y*b,v=d+a+p*A,_=Math.cos(v),C=-Math.sin(v);c.push((m*_+f*C)*n+i,(m*-C+f*_)*n+r)}}}class qx{constructor(){this.reset()}begin(e,t,i){this.reset(),this.style=e,this.start=t,this.attribStart=i}end(e,t){this.attribSize=t-this.attribStart,this.size=e-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class zc{static curveLength(e,t,i,r,n,a,o,l){let c=0,u=0,h=0,d=0,p=0,m=0,f=0,g=0,y=0,b=0,A=0,v=e,_=t;for(let C=1;C<=10;++C)u=C/10,h=u*u,d=h*u,p=1-u,m=p*p,f=m*p,g=f*e+3*m*u*i+3*p*h*n+d*o,y=f*t+3*m*u*r+3*p*h*a+d*l,b=v-g,A=_-y,v=g,_=y,c+=Math.sqrt(b*b+A*A);return c}static curveTo(e,t,i,r,n,a,o){const l=o[o.length-2],c=o[o.length-1];o.length-=2;const u=nn._segmentsCount(zc.curveLength(l,c,e,t,i,r,n,a));let h=0,d=0,p=0,m=0,f=0;o.push(l,c);for(let g=1,y=0;g<=u;++g)y=g/u,h=1-y,d=h*h,p=d*h,m=y*y,f=m*y,o.push(p*l+3*d*y*e+3*h*m*i+f*n,p*c+3*d*y*t+3*h*m*r+f*a)}}function ju(s,e,t,i,r,n,a,o){const l=s-t*r,c=e-i*r,u=s+t*n,h=e+i*n;let d,p;a?(d=i,p=-t):(d=-i,p=t);const m=l+d,f=c+p,g=u+d,y=h+p;return o.push(m,f,g,y),2}function Xs(s,e,t,i,r,n,a,o){const l=t-s,c=i-e;let u=Math.atan2(l,c),h=Math.atan2(r-s,n-e);o&&uh&&(h+=Math.PI*2);let d=u;const p=h-u,m=Math.abs(p),f=Math.sqrt(l*l+c*c),g=(15*m*Math.sqrt(f)/Math.PI>>0)+1,y=p/g;if(d+=y,o){a.push(s,e,t,i);for(let b=1,A=d;b=0&&(n.join===ii.ROUND?d+=Xs(A,v,A-B*S,v-P*S,A-M*S,v-U*S,u,!1)+4:d+=2,u.push(A-M*x,v-U*x,A+M*S,v+U*S));continue}const Q=(-B+y)*(-P+v)-(-B+A)*(-P+b),ge=(-M+_)*(-U+v)-(-M+A)*(-U+C),Te=(D*ge-H*Q)/ee,he=(O*Q-W*ge)/ee,pe=(Te-A)*(Te-A)+(he-v)*(he-v),Ae=A+(Te-A)*S,oe=v+(he-v)*S,ue=A-(Te-A)*x,ve=v-(he-v)*x,E=Math.min(D*D+W*W,H*H+O*O),j=Z?S:x,z=E+j*j*f,I=pe<=z;let k=n.join;if(k===ii.MITER&&pe/f>g&&(k=ii.BEVEL),I)switch(k){case ii.MITER:{u.push(Ae,oe,ue,ve);break}case ii.BEVEL:{Z?u.push(Ae,oe,A+B*x,v+P*x,Ae,oe,A+M*x,v+U*x):u.push(A-B*S,v-P*S,ue,ve,A-M*S,v-U*S,ue,ve),d+=2;break}case ii.ROUND:{Z?(u.push(Ae,oe,A+B*x,v+P*x),d+=Xs(A,v,A+B*x,v+P*x,A+M*x,v+U*x,u,!0)+4,u.push(Ae,oe,A+M*x,v+U*x)):(u.push(A-B*S,v-P*S,ue,ve),d+=Xs(A,v,A-B*S,v-P*S,A-M*S,v-U*S,u,!1)+4,u.push(A-M*S,v-U*S,ue,ve));break}}else{switch(u.push(A-B*S,v-P*S,A+B*x,v+P*x),k){case ii.MITER:{Z?u.push(ue,ve,ue,ve):u.push(Ae,oe,Ae,oe),d+=2;break}case ii.ROUND:{Z?d+=Xs(A,v,A+B*x,v+P*x,A+M*x,v+U*x,u,!0)+2:d+=Xs(A,v,A-B*S,v-P*S,A-M*S,v-U*S,u,!1)+2;break}}u.push(A-M*S,v-U*S,A+M*x,v+U*x),d+=2}}y=i[(h-2)*2],b=i[(h-2)*2+1],A=i[(h-1)*2],v=i[(h-1)*2+1],B=-(b-v),P=y-A,F=Math.sqrt(B*B+P*P),B/=F,P/=F,B*=m,P*=m,u.push(A-B*S,v-P*S,A+B*x,v+P*x),l||(n.cap===Ls.ROUND?d+=Xs(A-B*(S-x)*.5,v-P*(S-x)*.5,A-B*S,v-P*S,A+B*x,v+P*x,u,!1)+2:n.cap===Ls.SQUARE&&(d+=ju(A,v,B,P,S,x,!1,u)));const L=e.indices,Y=nn.epsilon*nn.epsilon;for(let R=p;R0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(e,t=null,i=null,r=null){const n=new Do(e,t,i,r);return this.graphicsData.push(n),this.dirty++,this}drawHole(e,t=null){if(!this.graphicsData.length)return null;const i=new Do(e,null,null,t),r=this.graphicsData[this.graphicsData.length-1];return i.lineStyle=r.lineStyle,r.holes.push(i),this.dirty++,this}destroy(){super.destroy();for(let e=0;e0&&(i=this.batches[this.batches.length-1],r=i.style);for(let l=this.shapeIndex;l65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&o===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=o?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(e,t){return!(!e||!t||e.texture.baseTexture!==t.texture.baseTexture||e.color+e.alpha!==t.color+t.alpha||!!e.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let e=0,t=this.graphicsData.length;e65535*2)return!1;const e=this.batches;for(let t=0;t0&&(r=Ga.pop(),r||(r=new Uh,r.texArray=new Wh),this.drawCalls.push(r)),r.start=u,r.size=0,r.texArray.count=0,r.type=c),f.touched=1,f._batchEnabled=e,f._batchLocation=n,f.wrapMode=Ds.REPEAT,r.texArray.elements[r.texArray.count++]=f,n++)),r.size+=d.size,u+=d.size,o=f._batchLocation,this.addColors(t,m.color,m.alpha,d.attribSize,d.attribStart),this.addTextureIds(i,o,d.attribSize,d.attribStart)}ke._globalBatch=e,this.packAttributes()}packAttributes(){const e=this.points,t=this.uvs,i=this.colors,r=this.textureIds,n=new ArrayBuffer(e.length*3*4),a=new Float32Array(n),o=new Uint32Array(n);let l=0;for(let c=0;c0&&e.alpha>0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:i},e)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const e=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new ur,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[t-2],e[t-1]))}else this.currentPath=new ur,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(e,t){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=t,this}lineTo(e,t){this.currentPath||this.moveTo(0,0);const i=this.currentPath.points,r=i[i.length-2],n=i[i.length-1];return(r!==e||n!==t)&&i.push(e,t),this}_initCurve(e=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,t]):this.moveTo(e,t)}quadraticCurveTo(e,t,i,r){this._initCurve();const n=this.currentPath.points;return n.length===0&&this.moveTo(0,0),Yc.curveTo(e,t,i,r,n),this}bezierCurveTo(e,t,i,r,n,a){return this._initCurve(),zc.curveTo(e,t,i,r,n,a,this.currentPath.points),this}arcTo(e,t,i,r,n){this._initCurve(e,t);const a=this.currentPath.points,o=Yu.curveTo(e,t,i,r,n,a);if(o){const{cx:l,cy:c,radius:u,startAngle:h,endAngle:d,anticlockwise:p}=o;this.arc(l,c,u,h,d,p)}return this}arc(e,t,i,r,n,a=!1){if(r===n)return this;if(!a&&n<=r?n+=To:a&&r<=n&&(r+=To),n-r===0)return this;const o=e+Math.cos(r)*i,l=t+Math.sin(r)*i,c=this._geometry.closePointEps;let u=this.currentPath?this.currentPath.points:null;if(u){const h=Math.abs(u[u.length-2]-o),d=Math.abs(u[u.length-1]-l);h0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:i},e)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(e,t,i,r){return this.drawShape(new Me(e,t,i,r))}drawRoundedRect(e,t,i,r,n){return this.drawShape(new Jo(e,t,i,r,n))}drawCircle(e,t,i){return this.drawShape(new qo(e,t,i))}drawEllipse(e,t,i,r){return this.drawShape(new Qo(e,t,i,r))}drawPolygon(...e){let t,i=!0;const r=e[0];r.points?(i=r.closeStroke,t=r.points):Array.isArray(e[0])?t=e[0]:t=e;const n=new ur(t);return n.closeStroke=i,this.drawShape(n),this}drawShape(e){return this._holeMode?this._geometry.drawHole(e,this._matrix):this._geometry.drawShape(e,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const e=this._geometry.graphicsData;return e.length===1&&e[0].shape.type===Ct.RECT&&!e[0].matrix&&!e[0].holes.length&&!(e[0].lineStyle.visible&&e[0].lineStyle.width)}_render(e){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(e)):(e.batch.flush(),this._renderDirect(e))}_populateBatches(){const e=this._geometry,t=this.blendMode,i=e.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=e.batchDirty,this.batches.length=i,this.vertexData=new Float32Array(e.points);for(let r=0;r{this.hasKey(l)&&console.warn(`[Resolver] already has key: ${l} overwriting`)},vi(a).forEach(l=>{const{src:c,srcs:u}=l;let{data:h,format:d,loadParser:p}=l;const m=vi(c||u).map(y=>typeof y=="string"?kw(y):Array.isArray(y)?y:[y]),f=this.getAlias(l);Array.isArray(f)?f.forEach(o):o(f);const g=[];m.forEach(y=>{y.forEach(b=>{let A={};if(typeof b!="object"){A.src=b;for(let v=0;v{this._assetMap[y]=g})})}resolveBundle(e){const t=Po(e);e=vi(e);const i={};return e.forEach(r=>{const n=this._bundles[r];if(n){const a=this.resolve(n),o={};for(const l in a){const c=a[l];o[this._extractAssetIdFromBundle(r,l)]=c}i[r]=o}}),t?i[e[0]]:i}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const i={};for(const r in t)i[r]=t[r].src;return i}return t.src}resolve(e){const t=Po(e);e=vi(e);const i={};return e.forEach(r=>{if(!this._resolverHash[r])if(this._assetMap[r]){let n=this._assetMap[r];const a=n[0],o=this._getPreferredOrder(n);o?.priority.forEach(l=>{o.params[l].forEach(c=>{const u=n.filter(h=>h[l]?h[l]===c:!1);u.length&&(n=u)})}),this._resolverHash[r]=n[0]??a}else this._resolverHash[r]=this.buildResolvedAsset({alias:[r],src:r},{});i[r]=this._resolverHash[r]}),t?i[e[0]]:i}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;tn.params.format.includes(i.format));if(r)return r}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}buildResolvedAsset(e,t){const{aliases:i,data:r,loadParser:n,format:a}=t;return(this._basePath||this._rootPath)&&(e.src=Et.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=i??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...r||{},...e.data},e.loadParser=n??e.loadParser,e.format=a??e.format??Et.extname(e.src).slice(1),e.srcs=e.src,e.name=e.alias,e}}class nx{constructor(){this._detections=[],this._initialized=!1,this.resolver=new rx,this.loader=new Iw,this.cache=rr,this._backgroundLoader=new Mw(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let n=e.manifest;typeof n=="string"&&(n=await this.load(n)),this.resolver.addManifest(n)}const t=e.texturePreference?.resolution??1,i=typeof t=="number"?[t]:t,r=await this._detectFormats({preferredFormats:e.texturePreference?.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:r,resolution:i}}),e.preferences&&this.setPreferences(e.preferences)}add(e,t,i,r,n){this.resolver.add(e,t,i,r,n)}async load(e,t){this._initialized||await this.init();const i=Po(e),r=vi(e).map(o=>{if(typeof o!="string"){const l=this.resolver.getAlias(o);return l.some(c=>!this.resolver.hasKey(c))&&this.add(o),Array.isArray(l)?l[0]:l}return this.resolver.hasKey(o)||this.add({alias:o,src:o}),o}),n=this.resolver.resolve(r),a=await this._mapLoadToResolve(n,t);return i?a[r[0]]:a}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let i=!1;typeof e=="string"&&(i=!0,e=[e]);const r=this.resolver.resolveBundle(e),n={},a=Object.keys(r);let o=0,l=0;const c=()=>{t?.(++o/l)},u=a.map(h=>{const d=r[h];return l+=Object.keys(d).length,this._mapLoadToResolve(d,c).then(p=>{n[h]=p})});return await Promise.all(u),i?n[e[0]]:n}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(i=>{this._backgroundLoader.add(Object.values(i))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return rr.get(e);const t={};for(let i=0;i{const c=n[o.src],u=[o.src];o.alias&&u.push(...o.alias),a[r[l]]=c,rr.set(u,c)}),a}async unload(e){this._initialized||await this.init();const t=vi(e).map(r=>typeof r!="string"?r.src:r),i=this.resolver.resolve(t);await this._unloadFromResolved(i)}async unloadBundle(e){this._initialized||await this.init(),e=vi(e);const t=this.resolver.resolveBundle(e),i=Object.keys(t).map(r=>this._unloadFromResolved(t[r]));await Promise.all(i)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(i=>{rr.remove(i.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const i of e.detections)e.skipDetections||await i.test()?t=await i.add(t):e.skipDetections||(t=await i.remove(t));return t=t.filter((i,r)=>t.indexOf(i)===r),t}get detections(){return this._detections}get preferWorkers(){return $o.config.preferWorkers}set preferWorkers(e){Ne("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:e})}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(i=>i in e).forEach(i=>{t.config[i]=e[i]})})}}const Yr=new nx;me.handleByList(ae.LoadParser,Yr.loader.parsers).handleByList(ae.ResolveParser,Yr.resolver.parsers).handleByList(ae.CacheParser,Yr.cache.parsers).handleByList(ae.DetectionParser,Yr.detections);const ax={extension:ae.CacheParser,test:s=>Array.isArray(s)&&s.every(e=>e instanceof te),getCacheableAssets:(s,e)=>{const t={};return s.forEach(i=>{e.forEach((r,n)=>{t[i+(n===0?"":n+1)]=r})}),t}};me.add(ax);async function Im(s){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=s});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(s)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const ox={extension:{type:ae.DetectionParser,priority:1},test:async()=>Im("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async s=>[...s,"avif"],remove:async s=>s.filter(e=>e!=="avif")};me.add(ox);const lx={extension:{type:ae.DetectionParser,priority:0},test:async()=>Im("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async s=>[...s,"webp"],remove:async s=>s.filter(e=>e!=="webp")};me.add(lx);const Uu=["png","jpg","jpeg"],hx={extension:{type:ae.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async s=>[...s,...Uu],remove:async s=>s.filter(e=>!Uu.includes(e))};me.add(hx);const cx="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function Wc(s){return cx?!1:document.createElement("video").canPlayType(s)!==""}const dx={extension:{type:ae.DetectionParser,priority:0},test:async()=>Wc("video/webm"),add:async s=>[...s,"webm"],remove:async s=>s.filter(e=>e!=="webm")};me.add(dx);const ux={extension:{type:ae.DetectionParser,priority:0},test:async()=>Wc("video/mp4"),add:async s=>[...s,"mp4","m4v"],remove:async s=>s.filter(e=>e!=="mp4"&&e!=="m4v")};me.add(ux);const px={extension:{type:ae.DetectionParser,priority:0},test:async()=>Wc("video/ogg"),add:async s=>[...s,"ogv"],remove:async s=>s.filter(e=>e!=="ogv")};me.add(px);const fx={extension:ae.ResolveParser,test:$o.test,parse:s=>({resolution:parseFloat(de.RETINA_PREFIX.exec(s)?.[1]??"1"),format:Et.extname(s).slice(1),src:s})};me.add(fx);var Tt=(s=>(s[s.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",s[s.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",s[s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",s[s.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",s[s.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",s[s.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",s[s.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",s[s.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",s[s.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",s[s.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",s[s.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",s[s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",s[s.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",s[s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",s[s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",s[s.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",s[s.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",s[s.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",s[s.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",s[s.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",s[s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",s[s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",s[s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",s))(Tt||{});const Ro={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};let Pi,Fr;function Gu(){Fr={bptc:Pi.getExtension("EXT_texture_compression_bptc"),astc:Pi.getExtension("WEBGL_compressed_texture_astc"),etc:Pi.getExtension("WEBGL_compressed_texture_etc"),s3tc:Pi.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:Pi.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:Pi.getExtension("WEBGL_compressed_texture_pvrtc")||Pi.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:Pi.getExtension("WEBGL_compressed_texture_etc1"),atc:Pi.getExtension("WEBGL_compressed_texture_atc")}}const mx={extension:{type:ae.DetectionParser,priority:2},test:async()=>{const s=de.ADAPTER.createCanvas().getContext("webgl");return s?(Pi=s,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async s=>{Fr||Gu();const e=[];for(const t in Fr)Fr[t]&&e.push(t);return[...e,...s]},remove:async s=>(Fr||Gu(),s.filter(e=>!(e in Fr)))};me.add(mx);class gx extends Ko{constructor(e,t={width:1,height:1,autoLoad:!0}){let i,r;typeof e=="string"?(i=e,r=new Uint8Array):(i=null,r=e),super(r,t),this.origin=i,this.buffer=r?new Oh(r):null,this._load=null,this.loaded=!1,this.origin!==null&&t.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(e){}load(){return this._load?this._load:(this._load=fetch(this.origin).then(e=>e.blob()).then(e=>e.arrayBuffer()).then(e=>(this.data=new Uint32Array(e),this.buffer=new Oh(e),this.loaded=!0,this.onBlobLoaded(e),this.update(),this)),this._load)}}class pr extends gx{constructor(e,t){super(e,t),this.format=t.format,this.levels=t.levels||1,this._width=t.width,this._height=t.height,this._extension=pr._formatToExtension(this.format),(t.levelBuffers||this.buffer)&&(this._levelBuffers=t.levelBuffers||pr._createLevelBuffers(e instanceof Uint8Array?e:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(e,t,i){const r=e.gl;if(!e.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;r.pixelStorei(r.UNPACK_ALIGNMENT,4);for(let n=0,a=this.levels;n=33776&&e<=33779)return"s3tc";if(e>=35916&&e<=35919)return"s3tc_sRGB";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e===36196)return"etc1";if(e===35986||e===35987||e===34798)return"atc";if(e>=36492&&e<=36495)return"bptc";if(e===37808)return"astc";throw new Error(`Invalid (compressed) texture format given: ${e}`)}static _createLevelBuffers(e,t,i,r,n,a,o){const l=new Array(i);let c=e.byteOffset,u=a,h=o,d=u+r-1&~(r-1),p=h+n-1&~(n-1),m=d*p*Ro[t];for(let f=0;f1?u:d,levelHeight:i>1?h:p,levelBuffer:new Uint8Array(e.buffer,c,m)},c+=m,u=u>>1||1,h=h>>1||1,d=u+r-1&~(r-1),p=h+n-1&~(n-1),m=d*p*Ro[t];return l}}const Kl=4,Oa=124,yx=32,Hu=20,vx=542327876,Fa={SIZE:1,FLAGS:2,HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},Ax={SIZE:0,FLAGS:1,FOURCC:2,RGB_BITCOUNT:3,R_BIT_MASK:4,G_BIT_MASK:5,B_BIT_MASK:6,A_BIT_MASK:7},Na={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3,MISC_FLAGS2:4},bx=1,wx=2,xx=4,Ex=64,_x=512,Tx=131072,Sx=827611204,Cx=861165636,Mx=894720068,kx=808540228,Bx=4,Ix={[Sx]:Tt.COMPRESSED_RGBA_S3TC_DXT1_EXT,[Cx]:Tt.COMPRESSED_RGBA_S3TC_DXT3_EXT,[Mx]:Tt.COMPRESSED_RGBA_S3TC_DXT5_EXT},Px={70:Tt.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:Tt.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:Tt.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:Tt.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:Tt.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:Tt.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:Tt.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:Tt.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:Tt.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:Tt.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:Tt.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:Tt.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:Tt.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function Rx(s){const e=new Uint32Array(s);if(e[0]!==vx)throw new Error("Invalid DDS file magic word");const t=new Uint32Array(s,0,Oa/Uint32Array.BYTES_PER_ELEMENT),i=t[Fa.HEIGHT],r=t[Fa.WIDTH],n=t[Fa.MIPMAP_COUNT],a=new Uint32Array(s,Fa.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,yx/Uint32Array.BYTES_PER_ELEMENT),o=a[bx];if(o&xx){const l=a[Ax.FOURCC];if(l!==kx){const b=Ix[l],A=Kl+Oa,v=new Uint8Array(s,A);return[new pr(v,{format:b,width:r,height:i,levels:n})]}const c=Kl+Oa,u=new Uint32Array(e.buffer,c,Hu/Uint32Array.BYTES_PER_ELEMENT),h=u[Na.DXGI_FORMAT],d=u[Na.RESOURCE_DIMENSION],p=u[Na.MISC_FLAG],m=u[Na.ARRAY_SIZE],f=Px[h];if(f===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${h}`);if(p===Bx)throw new Error("DDSParser does not support cubemap textures");if(d===6)throw new Error("DDSParser does not supported 3D texture data");const g=new Array,y=Kl+Oa+Hu;if(m===1)g.push(new Uint8Array(s,y));else{const b=Ro[f];let A=0,v=r,_=i;for(let B=0;B>>1,_=_>>>1}let C=y;for(let B=0;Bnew pr(b,{format:f,width:r,height:i,levels:n}))}throw o&Ex?new Error("DDSParser does not support uncompressed texture data."):o&_x?new Error("DDSParser does not supported YUV uncompressed texture data."):o&Tx?new Error("DDSParser does not support single-channel (lumninance) texture data!"):o&wx?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const Vu=[171,75,84,88,32,49,49,187,13,10,26,10],Lx=67305985,fi={FILE_IDENTIFIER:0,ENDIANNESS:12,GL_TYPE:16,GL_TYPE_SIZE:20,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,GL_BASE_INTERNAL_FORMAT:32,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},lc=64,Wu={[we.UNSIGNED_BYTE]:1,[we.UNSIGNED_SHORT]:2,[we.INT]:4,[we.UNSIGNED_INT]:4,[we.FLOAT]:4,[we.HALF_FLOAT]:8},Dx={[se.RGBA]:4,[se.RGB]:3,[se.RG]:2,[se.RED]:1,[se.LUMINANCE]:1,[se.LUMINANCE_ALPHA]:2,[se.ALPHA]:1},Ox={[we.UNSIGNED_SHORT_4_4_4_4]:2,[we.UNSIGNED_SHORT_5_5_5_1]:2,[we.UNSIGNED_SHORT_5_6_5]:2};function Fx(s,e,t=!1){const i=new DataView(e);if(!Nx(s,i))return null;const r=i.getUint32(fi.ENDIANNESS,!0)===Lx,n=i.getUint32(fi.GL_TYPE,r),a=i.getUint32(fi.GL_FORMAT,r),o=i.getUint32(fi.GL_INTERNAL_FORMAT,r),l=i.getUint32(fi.PIXEL_WIDTH,r),c=i.getUint32(fi.PIXEL_HEIGHT,r)||1,u=i.getUint32(fi.PIXEL_DEPTH,r)||1,h=i.getUint32(fi.NUMBER_OF_ARRAY_ELEMENTS,r)||1,d=i.getUint32(fi.NUMBER_OF_FACES,r),p=i.getUint32(fi.NUMBER_OF_MIPMAP_LEVELS,r),m=i.getUint32(fi.BYTES_OF_KEY_VALUE_DATA,r);if(c===0||u!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(h!==1)throw new Error("WebGL does not support array textures");const f=4,g=4,y=l+3&-4,b=c+3&-4,A=new Array(h);let v=l*c;n===0&&(v=y*b);let _;if(n!==0?Wu[n]?_=Wu[n]*Dx[a]:_=Ox[n]:_=Ro[o],_===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const C=t?Gx(i,m,r):null;let B=v*_,P=l,M=c,U=y,F=b,T=lc+m;for(let S=0;S1||n!==0?P:U,levelHeight:p>1||n!==0?M:F,levelBuffer:new Uint8Array(e,L,B)},L+=B}T+=x+4,T=T%4!==0?T+4-T%4:T,P=P>>1||1,M=M>>1||1,U=P+f-1&~(f-1),F=M+g-1&~(g-1),B=U*F*_}return n!==0?{uncompressed:A.map(S=>{let x=S[0].levelBuffer,L=!1;return n===we.FLOAT?x=new Float32Array(S[0].levelBuffer.buffer,S[0].levelBuffer.byteOffset,S[0].levelBuffer.byteLength/4):n===we.UNSIGNED_INT?(L=!0,x=new Uint32Array(S[0].levelBuffer.buffer,S[0].levelBuffer.byteOffset,S[0].levelBuffer.byteLength/4)):n===we.INT&&(L=!0,x=new Int32Array(S[0].levelBuffer.buffer,S[0].levelBuffer.byteOffset,S[0].levelBuffer.byteLength/4)),{resource:new Ko(x,{width:S[0].levelWidth,height:S[0].levelHeight}),type:n,format:L?Ux(a):a}}),kvData:C}:{compressed:A.map(S=>new pr(null,{format:o,width:l,height:c,levels:p,levelBuffers:S})),kvData:C}}function Nx(s,e){for(let t=0;te-r){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let l=0;for(;l{const a=new ke(n,{mipmap:Xi.OFF,alphaMode:Gt.NO_PREMULTIPLIED_ALPHA,resolution:hs(s),...e.data});return ua(a,t,s)});return r.length===1?r[0]:r},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};me.add(Hx);const Vx={extension:{type:ae.LoadParser,priority:Mi.High},name:"loadKTX",test(s){return Hs(s,".ktx")},async load(s,e,t){const i=await(await de.ADAPTER.fetch(s)).arrayBuffer(),{compressed:r,uncompressed:n,kvData:a}=Fx(s,i),o=r??n,l={mipmap:Xi.OFF,alphaMode:Gt.NO_PREMULTIPLIED_ALPHA,resolution:hs(s),...e.data},c=o.map(u=>{o===n&&Object.assign(l,{type:u.type,format:u.format});const h=u.resource??u,d=new ke(h,l);return d.ktxKeyValueData=a,ua(d,t,s)});return c.length===1?c[0]:c},unload(s){Array.isArray(s)?s.forEach(e=>e.destroy(!0)):s.destroy(!0)}};me.add(Vx);const Wx=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],zx={extension:ae.ResolveParser,test:s=>{const e=Et.extname(s).slice(1);return["basis","ktx","dds"].includes(e)},parse:s=>{const e=s.split("."),t=e.pop();if(["ktx","dds"].includes(t)){const i=e.pop();if(Wx.includes(i))return{resolution:parseFloat(de.RETINA_PREFIX.exec(s)?.[1]??"1"),format:i,src:s}}return{resolution:parseFloat(de.RETINA_PREFIX.exec(s)?.[1]??"1"),format:t,src:s}}};me.add(zx);const Ua=new Me,Yx=4,Pm=class On{constructor(e){this.renderer=e,this._rendererPremultipliedAlpha=!1}contextChange(){const e=this.renderer?.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}async image(e,t,i,r){const n=new Image;return n.src=await this.base64(e,t,i,r),n}async base64(e,t,i,r){const n=this.canvas(e,r);if(n.toBlob!==void 0)return new Promise((a,o)=>{n.toBlob(l=>{if(!l){o(new Error("ICanvas.toBlob failed!"));return}const c=new FileReader;c.onload=()=>a(c.result),c.onerror=o,c.readAsDataURL(l)},t,i)});if(n.toDataURL!==void 0)return n.toDataURL(t,i);if(n.convertToBlob!==void 0){const a=await n.convertToBlob({type:t,quality:i});return new Promise((o,l)=>{const c=new FileReader;c.onload=()=>o(c.result),c.onerror=l,c.readAsDataURL(a)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e,t){const{pixels:i,width:r,height:n,flipY:a,premultipliedAlpha:o}=this._rawPixels(e,t);a&&On._flipY(i,r,n),o&&On._unpremultiplyAlpha(i);const l=new _A(r,n,1),c=new ImageData(new Uint8ClampedArray(i.buffer),r,n);return l.context.putImageData(c,0,0),l.canvas}pixels(e,t){const{pixels:i,width:r,height:n,flipY:a,premultipliedAlpha:o}=this._rawPixels(e,t);return a&&On._flipY(i,r,n),o&&On._unpremultiplyAlpha(i),i}_rawPixels(e,t){const i=this.renderer;if(!i)throw new Error("The Extract has already been destroyed");let r,n=!1,a=!1,o,l=!1;e&&(e instanceof Lt?o=e:(o=i.generateTexture(e,{region:t,resolution:i.resolution,multisample:i.multisample}),l=!0,t&&(Ua.width=t.width,Ua.height=t.height,t=Ua)));const c=i.gl;if(o){if(r=o.baseTexture.resolution,t=t??o.frame,n=!1,a=o.baseTexture.alphaMode>0&&o.baseTexture.format===se.RGBA,!l){i.renderTexture.bind(o);const p=o.framebuffer.glFramebuffers[i.CONTEXT_UID];p.blitFramebuffer&&i.framebuffer.bind(p.blitFramebuffer)}}else r=i.resolution,t||(t=Ua,t.width=i.width/r,t.height=i.height/r),n=!0,a=this._rendererPremultipliedAlpha,i.renderTexture.bind();const u=Math.max(Math.round(t.width*r),1),h=Math.max(Math.round(t.height*r),1),d=new Uint8Array(Yx*u*h);return c.readPixels(Math.round(t.x*r),Math.round(t.y*r),u,h,c.RGBA,c.UNSIGNED_BYTE,d),l&&o?.destroy(!0),{pixels:d,width:u,height:h,flipY:n,premultipliedAlpha:a}}destroy(){this.renderer=null}static _flipY(e,t,i){const r=t<<2,n=i>>1,a=new Uint8Array(r);for(let o=0;o=0&&o>=0&&r>=0&&n>=0)){e.length=0;return}const l=Math.ceil(2.3*Math.sqrt(a+o)),c=l*8+(r?4:0)+(n?4:0);if(e.length=c,c===0)return;if(l===0){e.length=8,e[0]=e[6]=t+r,e[1]=e[3]=i+n,e[2]=e[4]=t-r,e[5]=e[7]=i-n;return}let u=0,h=l*4+(r?2:0)+2,d=h,p=c;{const m=r+a,f=n,g=t+m,y=t-m,b=i+f;if(e[u++]=g,e[u++]=b,e[--h]=b,e[--h]=y,n){const A=i-f;e[d++]=y,e[d++]=A,e[--p]=A,e[--p]=g}}for(let m=1;m0||e&&i<=0){const r=t/2;for(let n=r+r%2;n=6){zu(t,!1);const a=[];for(let c=0;c=0&&n>=0&&a.push(t,i,t+r,i,t+r,i+n,t,i+n)},triangulate(s,e){const t=s.points,i=e.points;if(t.length===0)return;const r=i.length/2;i.push(t[0],t[1],t[2],t[3],t[6],t[7],t[4],t[5]),e.indices.push(r,r+1,r+2,r+1,r+2,r+3)}},Kx={build(s){Lo.build(s)},triangulate(s,e){Lo.triangulate(s,e)}};var ii=(s=>(s.MITER="miter",s.BEVEL="bevel",s.ROUND="round",s))(ii||{}),Ls=(s=>(s.BUTT="butt",s.ROUND="round",s.SQUARE="square",s))(Ls||{});const nn={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(s,e=20){if(!this.adaptive||!s||isNaN(s))return e;let t=Math.ceil(s/this.maxLength);return tthis.maxSegments&&(t=this.maxSegments),t}};class Yu{static curveTo(e,t,i,r,n,a){const o=a[a.length-2],l=a[a.length-1]-t,c=o-e,u=r-t,h=i-e,d=Math.abs(l*h-c*u);if(d<1e-8||n===0)return(a[a.length-2]!==e||a[a.length-1]!==t)&&a.push(e,t),null;const p=l*l+c*c,m=u*u+h*h,f=l*u+c*h,g=n*Math.sqrt(p)/d,y=n*Math.sqrt(m)/d,b=g*f/p,A=y*f/m,v=g*h+y*c,_=g*u+y*l,C=c*(y+b),B=l*(y+b),P=h*(g+A),M=u*(g+A),U=Math.atan2(B-_,C-v),F=Math.atan2(M-_,P-v);return{cx:v+e,cy:_+t,radius:n,startAngle:U,endAngle:F,anticlockwise:c*u>h*l}}static arc(e,t,i,r,n,a,o,l,c){const u=o-a,h=nn._segmentsCount(Math.abs(u)*n,Math.ceil(Math.abs(u)/To)*40),d=u/(h*2),p=d*2,m=Math.cos(d),f=Math.sin(d),g=h-1,y=g%1/g;for(let b=0;b<=g;++b){const A=b+y*b,v=d+a+p*A,_=Math.cos(v),C=-Math.sin(v);c.push((m*_+f*C)*n+i,(m*-C+f*_)*n+r)}}}class qx{constructor(){this.reset()}begin(e,t,i){this.reset(),this.style=e,this.start=t,this.attribStart=i}end(e,t){this.attribSize=t-this.attribStart,this.size=e-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class zc{static curveLength(e,t,i,r,n,a,o,l){let c=0,u=0,h=0,d=0,p=0,m=0,f=0,g=0,y=0,b=0,A=0,v=e,_=t;for(let C=1;C<=10;++C)u=C/10,h=u*u,d=h*u,p=1-u,m=p*p,f=m*p,g=f*e+3*m*u*i+3*p*h*n+d*o,y=f*t+3*m*u*r+3*p*h*a+d*l,b=v-g,A=_-y,v=g,_=y,c+=Math.sqrt(b*b+A*A);return c}static curveTo(e,t,i,r,n,a,o){const l=o[o.length-2],c=o[o.length-1];o.length-=2;const u=nn._segmentsCount(zc.curveLength(l,c,e,t,i,r,n,a));let h=0,d=0,p=0,m=0,f=0;o.push(l,c);for(let g=1,y=0;g<=u;++g)y=g/u,h=1-y,d=h*h,p=d*h,m=y*y,f=m*y,o.push(p*l+3*d*y*e+3*h*m*i+f*n,p*c+3*d*y*t+3*h*m*r+f*a)}}function ju(s,e,t,i,r,n,a,o){const l=s-t*r,c=e-i*r,u=s+t*n,h=e+i*n;let d,p;a?(d=i,p=-t):(d=-i,p=t);const m=l+d,f=c+p,g=u+d,y=h+p;return o.push(m,f,g,y),2}function Xs(s,e,t,i,r,n,a,o){const l=t-s,c=i-e;let u=Math.atan2(l,c),h=Math.atan2(r-s,n-e);o&&uh&&(h+=Math.PI*2);let d=u;const p=h-u,m=Math.abs(p),f=Math.sqrt(l*l+c*c),g=(15*m*Math.sqrt(f)/Math.PI>>0)+1,y=p/g;if(d+=y,o){a.push(s,e,t,i);for(let b=1,A=d;b=0&&(n.join===ii.ROUND?d+=Xs(A,v,A-B*S,v-P*S,A-M*S,v-U*S,u,!1)+4:d+=2,u.push(A-M*x,v-U*x,A+M*S,v+U*S));continue}const Q=(-B+y)*(-P+v)-(-B+A)*(-P+b),ge=(-M+_)*(-U+v)-(-M+A)*(-U+C),Te=(D*ge-H*Q)/ee,he=(O*Q-W*ge)/ee,pe=(Te-A)*(Te-A)+(he-v)*(he-v),Ae=A+(Te-A)*S,oe=v+(he-v)*S,ue=A-(Te-A)*x,ve=v-(he-v)*x,E=Math.min(D*D+W*W,H*H+O*O),j=Z?S:x,z=E+j*j*f,I=pe<=z;let k=n.join;if(k===ii.MITER&&pe/f>g&&(k=ii.BEVEL),I)switch(k){case ii.MITER:{u.push(Ae,oe,ue,ve);break}case ii.BEVEL:{Z?u.push(Ae,oe,A+B*x,v+P*x,Ae,oe,A+M*x,v+U*x):u.push(A-B*S,v-P*S,ue,ve,A-M*S,v-U*S,ue,ve),d+=2;break}case ii.ROUND:{Z?(u.push(Ae,oe,A+B*x,v+P*x),d+=Xs(A,v,A+B*x,v+P*x,A+M*x,v+U*x,u,!0)+4,u.push(Ae,oe,A+M*x,v+U*x)):(u.push(A-B*S,v-P*S,ue,ve),d+=Xs(A,v,A-B*S,v-P*S,A-M*S,v-U*S,u,!1)+4,u.push(A-M*S,v-U*S,ue,ve));break}}else{switch(u.push(A-B*S,v-P*S,A+B*x,v+P*x),k){case ii.MITER:{Z?u.push(ue,ve,ue,ve):u.push(Ae,oe,Ae,oe),d+=2;break}case ii.ROUND:{Z?d+=Xs(A,v,A+B*x,v+P*x,A+M*x,v+U*x,u,!0)+2:d+=Xs(A,v,A-B*S,v-P*S,A-M*S,v-U*S,u,!1)+2;break}}u.push(A-M*S,v-U*S,A+M*x,v+U*x),d+=2}}y=i[(h-2)*2],b=i[(h-2)*2+1],A=i[(h-1)*2],v=i[(h-1)*2+1],B=-(b-v),P=y-A,F=Math.sqrt(B*B+P*P),B/=F,P/=F,B*=m,P*=m,u.push(A-B*S,v-P*S,A+B*x,v+P*x),l||(n.cap===Ls.ROUND?d+=Xs(A-B*(S-x)*.5,v-P*(S-x)*.5,A-B*S,v-P*S,A+B*x,v+P*x,u,!1)+2:n.cap===Ls.SQUARE&&(d+=ju(A,v,B,P,S,x,!1,u)));const L=e.indices,Y=nn.epsilon*nn.epsilon;for(let R=p;R0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(e,t=null,i=null,r=null){const n=new Do(e,t,i,r);return this.graphicsData.push(n),this.dirty++,this}drawHole(e,t=null){if(!this.graphicsData.length)return null;const i=new Do(e,null,null,t),r=this.graphicsData[this.graphicsData.length-1];return i.lineStyle=r.lineStyle,r.holes.push(i),this.dirty++,this}destroy(){super.destroy();for(let e=0;e0&&(i=this.batches[this.batches.length-1],r=i.style);for(let l=this.shapeIndex;l65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&o===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=o?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(e,t){return!(!e||!t||e.texture.baseTexture!==t.texture.baseTexture||e.color+e.alpha!==t.color+t.alpha||!!e.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let e=0,t=this.graphicsData.length;e65535*2)return!1;const e=this.batches;for(let t=0;t0&&(r=Ga.pop(),r||(r=new Uh,r.texArray=new Wh),this.drawCalls.push(r)),r.start=u,r.size=0,r.texArray.count=0,r.type=c),f.touched=1,f._batchEnabled=e,f._batchLocation=n,f.wrapMode=Ds.REPEAT,r.texArray.elements[r.texArray.count++]=f,n++)),r.size+=d.size,u+=d.size,o=f._batchLocation,this.addColors(t,m.color,m.alpha,d.attribSize,d.attribStart),this.addTextureIds(i,o,d.attribSize,d.attribStart)}ke._globalBatch=e,this.packAttributes()}packAttributes(){const e=this.points,t=this.uvs,i=this.colors,r=this.textureIds,n=new ArrayBuffer(e.length*3*4),a=new Float32Array(n),o=new Uint32Array(n);let l=0;for(let c=0;c0&&e.alpha>0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:i},e)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const e=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new ur,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[t-2],e[t-1]))}else this.currentPath=new ur,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(e,t){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=t,this}lineTo(e,t){this.currentPath||this.moveTo(0,0);const i=this.currentPath.points,r=i[i.length-2],n=i[i.length-1];return(r!==e||n!==t)&&i.push(e,t),this}_initCurve(e=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,t]):this.moveTo(e,t)}quadraticCurveTo(e,t,i,r){this._initCurve();const n=this.currentPath.points;return n.length===0&&this.moveTo(0,0),Yc.curveTo(e,t,i,r,n),this}bezierCurveTo(e,t,i,r,n,a){return this._initCurve(),zc.curveTo(e,t,i,r,n,a,this.currentPath.points),this}arcTo(e,t,i,r,n){this._initCurve(e,t);const a=this.currentPath.points,o=Yu.curveTo(e,t,i,r,n,a);if(o){const{cx:l,cy:c,radius:u,startAngle:h,endAngle:d,anticlockwise:p}=o;this.arc(l,c,u,h,d,p)}return this}arc(e,t,i,r,n,a=!1){if(r===n)return this;if(!a&&n<=r?n+=To:a&&r<=n&&(r+=To),n-r===0)return this;const o=e+Math.cos(r)*i,l=t+Math.sin(r)*i,c=this._geometry.closePointEps;let u=this.currentPath?this.currentPath.points:null;if(u){const h=Math.abs(u[u.length-2]-o),d=Math.abs(u[u.length-1]-l);h0;return i?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:i},e)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(e,t,i,r){return this.drawShape(new Me(e,t,i,r))}drawRoundedRect(e,t,i,r,n){return this.drawShape(new Jo(e,t,i,r,n))}drawCircle(e,t,i){return this.drawShape(new qo(e,t,i))}drawEllipse(e,t,i,r){return this.drawShape(new Qo(e,t,i,r))}drawPolygon(...e){let t,i=!0;const r=e[0];r.points?(i=r.closeStroke,t=r.points):Array.isArray(e[0])?t=e[0]:t=e;const n=new ur(t);return n.closeStroke=i,this.drawShape(n),this}drawShape(e){return this._holeMode?this._geometry.drawHole(e,this._matrix):this._geometry.drawShape(e,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const e=this._geometry.graphicsData;return e.length===1&&e[0].shape.type===Ct.RECT&&!e[0].matrix&&!e[0].holes.length&&!(e[0].lineStyle.visible&&e[0].lineStyle.width)}_render(e){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(e)):(e.batch.flush(),this._renderDirect(e))}_populateBatches(){const e=this._geometry,t=this.blendMode,i=e.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=e.batchDirty,this.batches.length=i,this.vertexData=new Float32Array(e.points);for(let r=0;r1?Wi.from(bE,AE,t):Wi.from(Ju,wE,t)}render(e){const t=this.renderer,i=this.quad;let r=i.vertices;r[0]=r[6]=e._width*-e.anchor.x,r[1]=r[3]=e._height*-e.anchor.y,r[2]=r[4]=e._width*(1-e.anchor.x),r[5]=r[7]=e._height*(1-e.anchor.y);const n=e.uvRespectAnchor?e.anchor.x:0,a=e.uvRespectAnchor?e.anchor.y:0;r=i.uvs,r[0]=r[6]=-n,r[1]=r[3]=-a,r[2]=r[4]=1-n,r[5]=r[7]=1-a,i.invalidate();const o=e._texture,l=o.baseTexture,c=l.alphaMode>0,u=e.tileTransform.localTransform,h=e.uvMatrix;let d=l.isPowerOfTwo&&o.frame.width===l.width&&o.frame.height===l.height;d&&(l._glTextures[t.CONTEXT_UID]?d=l.wrapMode!==Ds.CLAMP:l.wrapMode===Ds.CLAMP&&(l.wrapMode=Ds.REPEAT));const p=d?this.simpleShader:this.shader,m=o.width,f=o.height,g=e._width,y=e._height;Wa.set(u.a*m/g,u.b*m/y,u.c*f/g,u.d*f/y,u.tx/g,u.ty/y),Wa.invert(),d?Wa.prepend(h.mapCoord):(p.uniforms.uMapCoord=h.mapCoord.toArray(!0),p.uniforms.uClampFrame=h.uClampFrame,p.uniforms.uClampOffset=h.uClampOffset),p.uniforms.uTransform=Wa.toArray(!0),p.uniforms.uColor=Ze.shared.setValue(e.tint).premultiply(e.worldAlpha,c).toArray(p.uniforms.uColor),p.uniforms.translationMatrix=e.transform.worldTransform.toArray(!0),p.uniforms.uSampler=o,t.shader.bind(p),t.geometry.bind(i),this.state.blendMode=Of(e.blendMode,c),t.state.set(this.state),t.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}Km.extension={name:"tilingSprite",type:ae.RendererPlugin};me.add(Km);const qm=class Nn{constructor(e,t,i){this.linkedSheets=[],(e instanceof ke||e instanceof te)&&(e={texture:e,data:t,resolutionFilename:i});const{texture:r,data:n,resolutionFilename:a=null,cachePrefix:o=""}=e;this.cachePrefix=o,this._texture=r instanceof te?r:null,this.baseTexture=r instanceof ke?r:this._texture.baseTexture,this.textures={},this.animations={},this.data=n;const l=this.baseTexture.resource;this.resolution=this._updateResolution(a||(l?l.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let i=hs(e,null);return i===null&&(i=typeof t=="number"?t:parseFloat(t??"1")),i!==1&&this.baseTexture.setResolution(i),i}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=Nn.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const i=Nn.BATCH_SIZE;for(;t-e{this._batchIndex*Nn.BATCH_SIZE{i[r]=e}),Object.keys(e.textures).forEach(r=>{i[`${e.cachePrefix}${r}`]=e.textures[r]}),!t){const r=Et.dirname(s[0]);e.linkedSheets.forEach((n,a)=>{Object.assign(i,Qm([`${r}/${e.data.meta.related_multi_packs[a]}`],n,!0))})}return i}const _E={extension:ae.Asset,cache:{test:s=>s instanceof Zu,getCacheableAssets:(s,e)=>Qm(s,e,!1)},resolver:{test:s=>{const e=s.split("?")[0].split("."),t=e.pop(),i=e.pop();return t==="json"&&EE.includes(i)},parse:s=>{const e=s.split(".");return{resolution:parseFloat(de.RETINA_PREFIX.exec(s)?.[1]??"1"),format:e[e.length-2],src:s}}},loader:{name:"spritesheetLoader",extension:{type:ae.LoadParser,priority:Mi.Normal},async testParse(s,e){return Et.extname(e.src).toLowerCase()===".json"&&!!s.frames},async parse(s,e,t){const{texture:i,imageFilename:r,cachePrefix:n}=e?.data??{};let a=Et.dirname(e.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let o;if(i&&i.baseTexture)o=i;else{const u=ac(a+(r??s.meta.image),e.src);o=(await t.load([u]))[u]}const l=new Zu({texture:o.baseTexture,data:s,resolutionFilename:e.src,cachePrefix:n});await l.parse();const c=s?.meta?.related_multi_packs;if(Array.isArray(c)){const u=[];for(const d of c){if(typeof d!="string")continue;let p=a+d;e.data?.ignoreMultiPack||(p=ac(p,e.src),u.push(t.load({src:p,data:{ignoreMultiPack:!0}})))}const h=await Promise.all(u);l.linkedSheets=h,h.forEach(d=>{d.linkedSheets=[l].concat(l.linkedSheets.filter(p=>p!==d))})}return l},unload(s){s.destroy(!0)}}};me.add(_E);class Oo{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class po{static test(e){return typeof e=="string"&&e.startsWith("info face=")}static parse(e){const t=e.match(/^[a-z]+\s+.+$/gm),i={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const n in t){const a=t[n].match(/^[a-z]+/gm)[0],o=t[n].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),l={};for(const c in o){const u=o[c].split("="),h=u[0],d=u[1].replace(/"/gm,""),p=parseFloat(d),m=isNaN(p)?d:p;l[h]=m}i[a].push(l)}const r=new Oo;return i.info.forEach(n=>r.info.push({face:n.face,size:parseInt(n.size,10)})),i.common.forEach(n=>r.common.push({lineHeight:parseInt(n.lineHeight,10)})),i.page.forEach(n=>r.page.push({id:parseInt(n.id,10),file:n.file})),i.char.forEach(n=>r.char.push({id:parseInt(n.id,10),page:parseInt(n.page,10),x:parseInt(n.x,10),y:parseInt(n.y,10),width:parseInt(n.width,10),height:parseInt(n.height,10),xoffset:parseInt(n.xoffset,10),yoffset:parseInt(n.yoffset,10),xadvance:parseInt(n.xadvance,10)})),i.kerning.forEach(n=>r.kerning.push({first:parseInt(n.first,10),second:parseInt(n.second,10),amount:parseInt(n.amount,10)})),i.distanceField.forEach(n=>r.distanceField.push({distanceRange:parseInt(n.distanceRange,10),fieldType:n.fieldType})),r}}class fc{static test(e){const t=e;return typeof e!="string"&&"getElementsByTagName"in e&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(e){const t=new Oo,i=e.getElementsByTagName("info"),r=e.getElementsByTagName("common"),n=e.getElementsByTagName("page"),a=e.getElementsByTagName("char"),o=e.getElementsByTagName("kerning"),l=e.getElementsByTagName("distanceField");for(let c=0;c")?fc.test(de.ADAPTER.parseXML(e)):!1}static parse(e){return fc.parse(de.ADAPTER.parseXML(e))}}const eh=[po,fc,mc];function TE(s){for(let e=0;e=l-U*a){if(f===0)throw new Error(`[BitmapFont] textureHeight ${l}px is too small (fontFamily: '${h.fontFamily}', fontSize: ${h.fontSize}px, char: '${B}')`);--C,g=null,y=null,b=null,f=0,m=0,A=0;continue}if(A=Math.max(U+P.fontProperties.descent,A),F*a+m>=d){if(m===0)throw new Error(`[BitmapFont] textureWidth ${o}px is too small (fontFamily: '${h.fontFamily}', fontSize: ${h.fontSize}px, char: '${B}')`);--C,f+=A*a,f=Math.ceil(f),m=0,A=0;continue}CE(g,y,P,m,f,a,h);const T=fo(P.text);p.char.push({id:T,page:v.length-1,x:m/a,y:f/a,width:F,height:U,xoffset:0,yoffset:0,xadvance:M-(h.dropShadow?h.dropShadowDistance:0)-(h.stroke?h.strokeThickness:0)}),m+=(F+2*n)*a,m=Math.ceil(m)}if(!i?.skipKerning)for(let C=0,B=u.length;C1?Wi.from(bE,AE,t):Wi.from(Ju,wE,t)}render(e){const t=this.renderer,i=this.quad;let r=i.vertices;r[0]=r[6]=e._width*-e.anchor.x,r[1]=r[3]=e._height*-e.anchor.y,r[2]=r[4]=e._width*(1-e.anchor.x),r[5]=r[7]=e._height*(1-e.anchor.y);const n=e.uvRespectAnchor?e.anchor.x:0,a=e.uvRespectAnchor?e.anchor.y:0;r=i.uvs,r[0]=r[6]=-n,r[1]=r[3]=-a,r[2]=r[4]=1-n,r[5]=r[7]=1-a,i.invalidate();const o=e._texture,l=o.baseTexture,c=l.alphaMode>0,u=e.tileTransform.localTransform,h=e.uvMatrix;let d=l.isPowerOfTwo&&o.frame.width===l.width&&o.frame.height===l.height;d&&(l._glTextures[t.CONTEXT_UID]?d=l.wrapMode!==Ds.CLAMP:l.wrapMode===Ds.CLAMP&&(l.wrapMode=Ds.REPEAT));const p=d?this.simpleShader:this.shader,m=o.width,f=o.height,g=e._width,y=e._height;Wa.set(u.a*m/g,u.b*m/y,u.c*f/g,u.d*f/y,u.tx/g,u.ty/y),Wa.invert(),d?Wa.prepend(h.mapCoord):(p.uniforms.uMapCoord=h.mapCoord.toArray(!0),p.uniforms.uClampFrame=h.uClampFrame,p.uniforms.uClampOffset=h.uClampOffset),p.uniforms.uTransform=Wa.toArray(!0),p.uniforms.uColor=Ze.shared.setValue(e.tint).premultiply(e.worldAlpha,c).toArray(p.uniforms.uColor),p.uniforms.translationMatrix=e.transform.worldTransform.toArray(!0),p.uniforms.uSampler=o,t.shader.bind(p),t.geometry.bind(i),this.state.blendMode=Of(e.blendMode,c),t.state.set(this.state),t.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}Km.extension={name:"tilingSprite",type:ae.RendererPlugin};me.add(Km);const qm=class Nn{constructor(e,t,i){this.linkedSheets=[],(e instanceof ke||e instanceof te)&&(e={texture:e,data:t,resolutionFilename:i});const{texture:r,data:n,resolutionFilename:a=null,cachePrefix:o=""}=e;this.cachePrefix=o,this._texture=r instanceof te?r:null,this.baseTexture=r instanceof ke?r:this._texture.baseTexture,this.textures={},this.animations={},this.data=n;const l=this.baseTexture.resource;this.resolution=this._updateResolution(a||(l?l.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let i=hs(e,null);return i===null&&(i=typeof t=="number"?t:parseFloat(t??"1")),i!==1&&this.baseTexture.setResolution(i),i}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=Nn.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const i=Nn.BATCH_SIZE;for(;t-e{this._batchIndex*Nn.BATCH_SIZE{i[r]=e}),Object.keys(e.textures).forEach(r=>{i[`${e.cachePrefix}${r}`]=e.textures[r]}),!t){const r=Et.dirname(s[0]);e.linkedSheets.forEach((n,a)=>{Object.assign(i,Qm([`${r}/${e.data.meta.related_multi_packs[a]}`],n,!0))})}return i}const _E={extension:ae.Asset,cache:{test:s=>s instanceof Zu,getCacheableAssets:(s,e)=>Qm(s,e,!1)},resolver:{test:s=>{const e=s.split("?")[0].split("."),t=e.pop(),i=e.pop();return t==="json"&&EE.includes(i)},parse:s=>{const e=s.split(".");return{resolution:parseFloat(de.RETINA_PREFIX.exec(s)?.[1]??"1"),format:e[e.length-2],src:s}}},loader:{name:"spritesheetLoader",extension:{type:ae.LoadParser,priority:Mi.Normal},async testParse(s,e){return Et.extname(e.src).toLowerCase()===".json"&&!!s.frames},async parse(s,e,t){const{texture:i,imageFilename:r,cachePrefix:n}=e?.data??{};let a=Et.dirname(e.src);a&&a.lastIndexOf("/")!==a.length-1&&(a+="/");let o;if(i&&i.baseTexture)o=i;else{const u=ac(a+(r??s.meta.image),e.src);o=(await t.load([u]))[u]}const l=new Zu({texture:o.baseTexture,data:s,resolutionFilename:e.src,cachePrefix:n});await l.parse();const c=s?.meta?.related_multi_packs;if(Array.isArray(c)){const u=[];for(const d of c){if(typeof d!="string")continue;let p=a+d;e.data?.ignoreMultiPack||(p=ac(p,e.src),u.push(t.load({src:p,data:{ignoreMultiPack:!0}})))}const h=await Promise.all(u);l.linkedSheets=h,h.forEach(d=>{d.linkedSheets=[l].concat(l.linkedSheets.filter(p=>p!==d))})}return l},unload(s){s.destroy(!0)}}};me.add(_E);class Oo{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class po{static test(e){return typeof e=="string"&&e.startsWith("info face=")}static parse(e){const t=e.match(/^[a-z]+\s+.+$/gm),i={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const n in t){const a=t[n].match(/^[a-z]+/gm)[0],o=t[n].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),l={};for(const c in o){const u=o[c].split("="),h=u[0],d=u[1].replace(/"/gm,""),p=parseFloat(d),m=isNaN(p)?d:p;l[h]=m}i[a].push(l)}const r=new Oo;return i.info.forEach(n=>r.info.push({face:n.face,size:parseInt(n.size,10)})),i.common.forEach(n=>r.common.push({lineHeight:parseInt(n.lineHeight,10)})),i.page.forEach(n=>r.page.push({id:parseInt(n.id,10),file:n.file})),i.char.forEach(n=>r.char.push({id:parseInt(n.id,10),page:parseInt(n.page,10),x:parseInt(n.x,10),y:parseInt(n.y,10),width:parseInt(n.width,10),height:parseInt(n.height,10),xoffset:parseInt(n.xoffset,10),yoffset:parseInt(n.yoffset,10),xadvance:parseInt(n.xadvance,10)})),i.kerning.forEach(n=>r.kerning.push({first:parseInt(n.first,10),second:parseInt(n.second,10),amount:parseInt(n.amount,10)})),i.distanceField.forEach(n=>r.distanceField.push({distanceRange:parseInt(n.distanceRange,10),fieldType:n.fieldType})),r}}class fc{static test(e){const t=e;return typeof e!="string"&&"getElementsByTagName"in e&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(e){const t=new Oo,i=e.getElementsByTagName("info"),r=e.getElementsByTagName("common"),n=e.getElementsByTagName("page"),a=e.getElementsByTagName("char"),o=e.getElementsByTagName("kerning"),l=e.getElementsByTagName("distanceField");for(let c=0;c")?fc.test(de.ADAPTER.parseXML(e)):!1}static parse(e){return fc.parse(de.ADAPTER.parseXML(e))}}const eh=[po,fc,mc];function TE(s){for(let e=0;e=l-U*a){if(f===0)throw new Error(`[BitmapFont] textureHeight ${l}px is too small (fontFamily: '${h.fontFamily}', fontSize: ${h.fontSize}px, char: '${B}')`);--C,g=null,y=null,b=null,f=0,m=0,A=0;continue}if(A=Math.max(U+P.fontProperties.descent,A),F*a+m>=d){if(m===0)throw new Error(`[BitmapFont] textureWidth ${o}px is too small (fontFamily: '${h.fontFamily}', fontSize: ${h.fontSize}px, char: '${B}')`);--C,f+=A*a,f=Math.ceil(f),m=0,A=0;continue}CE(g,y,P,m,f,a,h);const T=fo(P.text);p.char.push({id:T,page:v.length-1,x:m/a,y:f/a,width:F,height:U,xoffset:0,yoffset:0,xadvance:M-(h.dropShadow?h.dropShadowDistance:0)-(h.stroke?h.strokeThickness:0)}),m+=(F+2*n)*a,m=Math.ceil(m)}if(!i?.skipKerning)for(let C=0,B=u.length;C0?`text-shadow: ${n} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${n} ${e}`}reset(){Object.assign(this,Nr.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=de.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};gc.availableFonts={},gc.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};let th=gc;const za=class Ur extends Le{constructor(e="",t={}){super(te.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;const i=new Image,r=te.from(i,{scaleMode:de.SCALE_MODE,resourceOptions:{autoLoad:!1}});r.orig=new Me,r.trim=new Me,this.texture=r;const n="http://www.w3.org/2000/svg",a="http://www.w3.org/1999/xhtml",o=document.createElementNS(n,"svg"),l=document.createElementNS(n,"foreignObject"),c=document.createElementNS(a,"div"),u=document.createElementNS(a,"style");l.setAttribute("width","10000"),l.setAttribute("height","10000"),l.style.overflow="hidden",o.appendChild(l),this.maxWidth=Ur.defaultMaxWidth,this.maxHeight=Ur.defaultMaxHeight,this._domElement=c,this._styleElement=u,this._svgRoot=o,this._foreignObject=l,this._foreignObject.appendChild(u),this._foreignObject.appendChild(c),this._image=i,this._loadImage=new Image,this._autoResolution=Ur.defaultAutoResolution,this._resolution=Ur.defaultResolution??de.RESOLUTION,this.text=e,this.style=t}measureText(e){const{text:t,style:i,resolution:r}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:i.toCSS(r)}),this._styleElement.textContent=i.toGlobalCSS(),document.body.appendChild(this._svgRoot);const n=this._domElement.getBoundingClientRect();this._svgRoot.remove();const{width:a,height:o}=n;(a>this.maxWidth||o>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");const l=Math.min(this.maxWidth,Math.ceil(a)),c=Math.min(this.maxHeight,Math.ceil(o));return this._svgRoot.setAttribute("width",l.toString()),this._svgRoot.setAttribute("height",c.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),i!==this._style&&(Object.assign(this._domElement,{style:this._style?.toCSS(r)}),this._styleElement.textContent=this._style?.toGlobalCSS()),{width:l+i.padding*2,height:c+i.padding*2}}async updateText(e=!0){const{style:t,_image:i,_loadImage:r}=this;if(this.localStyleID!==t.styleID&&(this.dirty=!0,this.localStyleID=t.styleID),!this.dirty&&e)return;const{width:n,height:a}=this.measureText();i.width=r.width=Math.ceil(Math.max(1,n)),i.height=r.height=Math.ceil(Math.max(1,a)),this._updateID++;const o=this._updateID;await new Promise(l=>{r.onload=async()=>{if(o/gi,"

").replace(/
/gi,"
").replace(/ /gi," ")}};za.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},za.defaultMaxWidth=2024,za.defaultMaxHeight=2024,za.defaultAutoResolution=!0;var Ht="top",hi="bottom",ci="right",Vt="left",Kc="auto",pa=[Ht,hi,ci,Vt],an="start",ia="end",RE="clippingParents",eg="viewport",Mn="popper",LE="reference",ip=pa.reduce(function(s,e){return s.concat([e+"-"+an,e+"-"+ia])},[]),tg=[].concat(pa,[Kc]).reduce(function(s,e){return s.concat([e,e+"-"+an,e+"-"+ia])},[]),DE="beforeRead",OE="read",FE="afterRead",NE="beforeMain",UE="main",GE="afterMain",HE="beforeWrite",VE="write",WE="afterWrite",zE=[DE,OE,FE,NE,UE,GE,HE,VE,WE];function Ki(s){return s?(s.nodeName||"").toLowerCase():null}function qt(s){if(s==null)return window;if(s.toString()!=="[object Window]"){var e=s.ownerDocument;return e&&e.defaultView||window}return s}function Ar(s){var e=qt(s).Element;return s instanceof e||s instanceof Element}function li(s){var e=qt(s).HTMLElement;return s instanceof e||s instanceof HTMLElement}function qc(s){if(typeof ShadowRoot>"u")return!1;var e=qt(s).ShadowRoot;return s instanceof e||s instanceof ShadowRoot}function YE(s){var e=s.state;Object.keys(e.elements).forEach(function(t){var i=e.styles[t]||{},r=e.attributes[t]||{},n=e.elements[t];!li(n)||!Ki(n)||(Object.assign(n.style,i),Object.keys(r).forEach(function(a){var o=r[a];o===!1?n.removeAttribute(a):n.setAttribute(a,o===!0?"":o)}))})}function jE(s){var e=s.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(i){var r=e.elements[i],n=e.attributes[i]||{},a=Object.keys(e.styles.hasOwnProperty(i)?e.styles[i]:t[i]),o=a.reduce(function(l,c){return l[c]="",l},{});!li(r)||!Ki(r)||(Object.assign(r.style,o),Object.keys(n).forEach(function(l){r.removeAttribute(l)}))})}}const ig={name:"applyStyles",enabled:!0,phase:"write",fn:YE,effect:jE,requires:["computeStyles"]};function zi(s){return s.split("-")[0]}var fr=Math.max,Fo=Math.min,on=Math.round;function yc(){var s=navigator.userAgentData;return s!=null&&s.brands&&Array.isArray(s.brands)?s.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function sg(){return!/^((?!chrome|android).)*safari/i.test(yc())}function ln(s,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var i=s.getBoundingClientRect(),r=1,n=1;e&&li(s)&&(r=s.offsetWidth>0&&on(i.width)/s.offsetWidth||1,n=s.offsetHeight>0&&on(i.height)/s.offsetHeight||1);var a=Ar(s)?qt(s):window,o=a.visualViewport,l=!sg()&&t,c=(i.left+(l&&o?o.offsetLeft:0))/r,u=(i.top+(l&&o?o.offsetTop:0))/n,h=i.width/r,d=i.height/n;return{width:h,height:d,top:u,right:c+h,bottom:u+d,left:c,x:c,y:u}}function Qc(s){var e=ln(s),t=s.offsetWidth,i=s.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:s.offsetLeft,y:s.offsetTop,width:t,height:i}}function rg(s,e){var t=e.getRootNode&&e.getRootNode();if(s.contains(e))return!0;if(t&&qc(t)){var i=e;do{if(i&&s.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function ds(s){return qt(s).getComputedStyle(s)}function XE(s){return["table","td","th"].indexOf(Ki(s))>=0}function Vs(s){return((Ar(s)?s.ownerDocument:s.document)||window.document).documentElement}function il(s){return Ki(s)==="html"?s:s.assignedSlot||s.parentNode||(qc(s)?s.host:null)||Vs(s)}function sp(s){return!li(s)||ds(s).position==="fixed"?null:s.offsetParent}function KE(s){var e=/firefox/i.test(yc()),t=/Trident/i.test(yc());if(t&&li(s)){var i=ds(s);if(i.position==="fixed")return null}var r=il(s);for(qc(r)&&(r=r.host);li(r)&&["html","body"].indexOf(Ki(r))<0;){var n=ds(r);if(n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].indexOf(n.willChange)!==-1||e&&n.willChange==="filter"||e&&n.filter&&n.filter!=="none")return r;r=r.parentNode}return null}function fa(s){for(var e=qt(s),t=sp(s);t&&XE(t)&&ds(t).position==="static";)t=sp(t);return t&&(Ki(t)==="html"||Ki(t)==="body"&&ds(t).position==="static")?e:t||KE(s)||e}function Jc(s){return["top","bottom"].indexOf(s)>=0?"x":"y"}function Kn(s,e,t){return fr(s,Fo(e,t))}function qE(s,e,t){var i=Kn(s,e,t);return i>t?t:i}function ng(){return{top:0,right:0,bottom:0,left:0}}function ag(s){return Object.assign({},ng(),s)}function og(s,e){return e.reduce(function(t,i){return t[i]=s,t},{})}var QE=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,ag(typeof e!="number"?e:og(e,pa))};function JE(s){var e,t=s.state,i=s.name,r=s.options,n=t.elements.arrow,a=t.modifiersData.popperOffsets,o=zi(t.placement),l=Jc(o),c=[Vt,ci].indexOf(o)>=0,u=c?"height":"width";if(!(!n||!a)){var h=QE(r.padding,t),d=Qc(n),p=l==="y"?Ht:Vt,m=l==="y"?hi:ci,f=t.rects.reference[u]+t.rects.reference[l]-a[l]-t.rects.popper[u],g=a[l]-t.rects.reference[l],y=fa(n),b=y?l==="y"?y.clientHeight||0:y.clientWidth||0:0,A=f/2-g/2,v=h[p],_=b-d[u]-h[m],C=b/2-d[u]/2+A,B=Kn(v,C,_),P=l;t.modifiersData[i]=(e={},e[P]=B,e.centerOffset=B-C,e)}}function ZE(s){var e=s.state,t=s.options,i=t.element,r=i===void 0?"[data-popper-arrow]":i;r!=null&&(typeof r=="string"&&(r=e.elements.popper.querySelector(r),!r)||rg(e.elements.popper,r)&&(e.elements.arrow=r))}const $E={name:"arrow",enabled:!0,phase:"main",fn:JE,effect:ZE,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function hn(s){return s.split("-")[1]}var e_={top:"auto",right:"auto",bottom:"auto",left:"auto"};function t_(s,e){var t=s.x,i=s.y,r=e.devicePixelRatio||1;return{x:on(t*r)/r||0,y:on(i*r)/r||0}}function rp(s){var e,t=s.popper,i=s.popperRect,r=s.placement,n=s.variation,a=s.offsets,o=s.position,l=s.gpuAcceleration,c=s.adaptive,u=s.roundOffsets,h=s.isFixed,d=a.x,p=d===void 0?0:d,m=a.y,f=m===void 0?0:m,g=typeof u=="function"?u({x:p,y:f}):{x:p,y:f};p=g.x,f=g.y;var y=a.hasOwnProperty("x"),b=a.hasOwnProperty("y"),A=Vt,v=Ht,_=window;if(c){var C=fa(t),B="clientHeight",P="clientWidth";if(C===qt(t)&&(C=Vs(t),ds(C).position!=="static"&&o==="absolute"&&(B="scrollHeight",P="scrollWidth")),C=C,r===Ht||(r===Vt||r===ci)&&n===ia){v=hi;var M=h&&C===_&&_.visualViewport?_.visualViewport.height:C[B];f-=M-i.height,f*=l?1:-1}if(r===Vt||(r===Ht||r===hi)&&n===ia){A=ci;var U=h&&C===_&&_.visualViewport?_.visualViewport.width:C[P];p-=U-i.width,p*=l?1:-1}}var F=Object.assign({position:o},c&&e_),T=u===!0?t_({x:p,y:f},qt(t)):{x:p,y:f};if(p=T.x,f=T.y,l){var S;return Object.assign({},F,(S={},S[v]=b?"0":"",S[A]=y?"0":"",S.transform=(_.devicePixelRatio||1)<=1?"translate("+p+"px, "+f+"px)":"translate3d("+p+"px, "+f+"px, 0)",S))}return Object.assign({},F,(e={},e[v]=b?f+"px":"",e[A]=y?p+"px":"",e.transform="",e))}function i_(s){var e=s.state,t=s.options,i=t.gpuAcceleration,r=i===void 0?!0:i,n=t.adaptive,a=n===void 0?!0:n,o=t.roundOffsets,l=o===void 0?!0:o,c={placement:zi(e.placement),variation:hn(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:r,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,rp(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,rp(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const s_={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:i_,data:{}};var Ya={passive:!0};function r_(s){var e=s.state,t=s.instance,i=s.options,r=i.scroll,n=r===void 0?!0:r,a=i.resize,o=a===void 0?!0:a,l=qt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return n&&c.forEach(function(u){u.addEventListener("scroll",t.update,Ya)}),o&&l.addEventListener("resize",t.update,Ya),function(){n&&c.forEach(function(u){u.removeEventListener("scroll",t.update,Ya)}),o&&l.removeEventListener("resize",t.update,Ya)}}const n_={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:r_,data:{}};var a_={left:"right",right:"left",bottom:"top",top:"bottom"};function mo(s){return s.replace(/left|right|bottom|top/g,function(e){return a_[e]})}var o_={start:"end",end:"start"};function np(s){return s.replace(/start|end/g,function(e){return o_[e]})}function Zc(s){var e=qt(s),t=e.pageXOffset,i=e.pageYOffset;return{scrollLeft:t,scrollTop:i}}function $c(s){return ln(Vs(s)).left+Zc(s).scrollLeft}function l_(s,e){var t=qt(s),i=Vs(s),r=t.visualViewport,n=i.clientWidth,a=i.clientHeight,o=0,l=0;if(r){n=r.width,a=r.height;var c=sg();(c||!c&&e==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:n,height:a,x:o+$c(s),y:l}}function h_(s){var e,t=Vs(s),i=Zc(s),r=(e=s.ownerDocument)==null?void 0:e.body,n=fr(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=fr(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-i.scrollLeft+$c(s),l=-i.scrollTop;return ds(r||t).direction==="rtl"&&(o+=fr(t.clientWidth,r?r.clientWidth:0)-n),{width:n,height:a,x:o,y:l}}function ed(s){var e=ds(s),t=e.overflow,i=e.overflowX,r=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+r+i)}function lg(s){return["html","body","#document"].indexOf(Ki(s))>=0?s.ownerDocument.body:li(s)&&ed(s)?s:lg(il(s))}function qn(s,e){var t;e===void 0&&(e=[]);var i=lg(s),r=i===((t=s.ownerDocument)==null?void 0:t.body),n=qt(i),a=r?[n].concat(n.visualViewport||[],ed(i)?i:[]):i,o=e.concat(a);return r?o:o.concat(qn(il(a)))}function vc(s){return Object.assign({},s,{left:s.x,top:s.y,right:s.x+s.width,bottom:s.y+s.height})}function c_(s,e){var t=ln(s,!1,e==="fixed");return t.top=t.top+s.clientTop,t.left=t.left+s.clientLeft,t.bottom=t.top+s.clientHeight,t.right=t.left+s.clientWidth,t.width=s.clientWidth,t.height=s.clientHeight,t.x=t.left,t.y=t.top,t}function ap(s,e,t){return e===eg?vc(l_(s,t)):Ar(e)?c_(e,t):vc(h_(Vs(s)))}function d_(s){var e=qn(il(s)),t=["absolute","fixed"].indexOf(ds(s).position)>=0,i=t&&li(s)?fa(s):s;return Ar(i)?e.filter(function(r){return Ar(r)&&rg(r,i)&&Ki(r)!=="body"}):[]}function u_(s,e,t,i){var r=e==="clippingParents"?d_(s):[].concat(e),n=[].concat(r,[t]),a=n[0],o=n.reduce(function(l,c){var u=ap(s,c,i);return l.top=fr(u.top,l.top),l.right=Fo(u.right,l.right),l.bottom=Fo(u.bottom,l.bottom),l.left=fr(u.left,l.left),l},ap(s,a,i));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function hg(s){var e=s.reference,t=s.element,i=s.placement,r=i?zi(i):null,n=i?hn(i):null,a=e.x+e.width/2-t.width/2,o=e.y+e.height/2-t.height/2,l;switch(r){case Ht:l={x:a,y:e.y-t.height};break;case hi:l={x:a,y:e.y+e.height};break;case ci:l={x:e.x+e.width,y:o};break;case Vt:l={x:e.x-t.width,y:o};break;default:l={x:e.x,y:e.y}}var c=r?Jc(r):null;if(c!=null){var u=c==="y"?"height":"width";switch(n){case an:l[c]=l[c]-(e[u]/2-t[u]/2);break;case ia:l[c]=l[c]+(e[u]/2-t[u]/2);break}}return l}function sa(s,e){e===void 0&&(e={});var t=e,i=t.placement,r=i===void 0?s.placement:i,n=t.strategy,a=n===void 0?s.strategy:n,o=t.boundary,l=o===void 0?RE:o,c=t.rootBoundary,u=c===void 0?eg:c,h=t.elementContext,d=h===void 0?Mn:h,p=t.altBoundary,m=p===void 0?!1:p,f=t.padding,g=f===void 0?0:f,y=ag(typeof g!="number"?g:og(g,pa)),b=d===Mn?LE:Mn,A=s.rects.popper,v=s.elements[m?b:d],_=u_(Ar(v)?v:v.contextElement||Vs(s.elements.popper),l,u,a),C=ln(s.elements.reference),B=hg({reference:C,element:A,strategy:"absolute",placement:r}),P=vc(Object.assign({},A,B)),M=d===Mn?P:C,U={top:_.top-M.top+y.top,bottom:M.bottom-_.bottom+y.bottom,left:_.left-M.left+y.left,right:M.right-_.right+y.right},F=s.modifiersData.offset;if(d===Mn&&F){var T=F[r];Object.keys(U).forEach(function(S){var x=[ci,hi].indexOf(S)>=0?1:-1,L=[Ht,hi].indexOf(S)>=0?"y":"x";U[S]+=T[L]*x})}return U}function p_(s,e){e===void 0&&(e={});var t=e,i=t.placement,r=t.boundary,n=t.rootBoundary,a=t.padding,o=t.flipVariations,l=t.allowedAutoPlacements,c=l===void 0?tg:l,u=hn(i),h=u?o?ip:ip.filter(function(m){return hn(m)===u}):pa,d=h.filter(function(m){return c.indexOf(m)>=0});d.length===0&&(d=h);var p=d.reduce(function(m,f){return m[f]=sa(s,{placement:f,boundary:r,rootBoundary:n,padding:a})[zi(f)],m},{});return Object.keys(p).sort(function(m,f){return p[m]-p[f]})}function f_(s){if(zi(s)===Kc)return[];var e=mo(s);return[np(s),e,np(e)]}function m_(s){var e=s.state,t=s.options,i=s.name;if(!e.modifiersData[i]._skip){for(var r=t.mainAxis,n=r===void 0?!0:r,a=t.altAxis,o=a===void 0?!0:a,l=t.fallbackPlacements,c=t.padding,u=t.boundary,h=t.rootBoundary,d=t.altBoundary,p=t.flipVariations,m=p===void 0?!0:p,f=t.allowedAutoPlacements,g=e.options.placement,y=zi(g),b=y===g,A=l||(b||!m?[mo(g)]:f_(g)),v=[g].concat(A).reduce(function(Z,Q){return Z.concat(zi(Q)===Kc?p_(e,{placement:Q,boundary:u,rootBoundary:h,padding:c,flipVariations:m,allowedAutoPlacements:f}):Q)},[]),_=e.rects.reference,C=e.rects.popper,B=new Map,P=!0,M=v[0],U=0;U=0,L=x?"width":"height",Y=sa(e,{placement:F,boundary:u,rootBoundary:h,altBoundary:d,padding:c}),R=x?S?ci:Vt:S?hi:Ht;_[L]>C[L]&&(R=mo(R));var D=mo(R),W=[];if(n&&W.push(Y[T]<=0),o&&W.push(Y[R]<=0,Y[D]<=0),W.every(function(Z){return Z})){M=F,P=!1;break}B.set(F,W)}if(P)for(var H=m?3:1,O=function(Q){var ge=v.find(function(Te){var he=B.get(Te);if(he)return he.slice(0,Q).every(function(pe){return pe})});if(ge)return M=ge,"break"},N=H;N>0;N--){var ee=O(N);if(ee==="break")break}e.placement!==M&&(e.modifiersData[i]._skip=!0,e.placement=M,e.reset=!0)}}const g_={name:"flip",enabled:!0,phase:"main",fn:m_,requiresIfExists:["offset"],data:{_skip:!1}};function op(s,e,t){return t===void 0&&(t={x:0,y:0}),{top:s.top-e.height-t.y,right:s.right-e.width+t.x,bottom:s.bottom-e.height+t.y,left:s.left-e.width-t.x}}function lp(s){return[Ht,ci,hi,Vt].some(function(e){return s[e]>=0})}function y_(s){var e=s.state,t=s.name,i=e.rects.reference,r=e.rects.popper,n=e.modifiersData.preventOverflow,a=sa(e,{elementContext:"reference"}),o=sa(e,{altBoundary:!0}),l=op(a,i),c=op(o,r,n),u=lp(l),h=lp(c);e.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:h},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":h})}const v_={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:y_};function A_(s,e,t){var i=zi(s),r=[Vt,Ht].indexOf(i)>=0?-1:1,n=typeof t=="function"?t(Object.assign({},e,{placement:s})):t,a=n[0],o=n[1];return a=a||0,o=(o||0)*r,[Vt,ci].indexOf(i)>=0?{x:o,y:a}:{x:a,y:o}}function b_(s){var e=s.state,t=s.options,i=s.name,r=t.offset,n=r===void 0?[0,0]:r,a=tg.reduce(function(u,h){return u[h]=A_(h,e.rects,n),u},{}),o=a[e.placement],l=o.x,c=o.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=a}const w_={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:b_};function x_(s){var e=s.state,t=s.name;e.modifiersData[t]=hg({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const E_={name:"popperOffsets",enabled:!0,phase:"read",fn:x_,data:{}};function __(s){return s==="x"?"y":"x"}function T_(s){var e=s.state,t=s.options,i=s.name,r=t.mainAxis,n=r===void 0?!0:r,a=t.altAxis,o=a===void 0?!1:a,l=t.boundary,c=t.rootBoundary,u=t.altBoundary,h=t.padding,d=t.tether,p=d===void 0?!0:d,m=t.tetherOffset,f=m===void 0?0:m,g=sa(e,{boundary:l,rootBoundary:c,padding:h,altBoundary:u}),y=zi(e.placement),b=hn(e.placement),A=!b,v=Jc(y),_=__(v),C=e.modifiersData.popperOffsets,B=e.rects.reference,P=e.rects.popper,M=typeof f=="function"?f(Object.assign({},e.rects,{placement:e.placement})):f,U=typeof M=="number"?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),F=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,T={x:0,y:0};if(C){if(n){var S,x=v==="y"?Ht:Vt,L=v==="y"?hi:ci,Y=v==="y"?"height":"width",R=C[v],D=R+g[x],W=R-g[L],H=p?-P[Y]/2:0,O=b===an?B[Y]:P[Y],N=b===an?-P[Y]:-B[Y],ee=e.elements.arrow,Z=p&&ee?Qc(ee):{width:0,height:0},Q=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:ng(),ge=Q[x],Te=Q[L],he=Kn(0,B[Y],Z[Y]),pe=A?B[Y]/2-H-he-ge-U.mainAxis:O-he-ge-U.mainAxis,Ae=A?-B[Y]/2+H+he+Te+U.mainAxis:N+he+Te+U.mainAxis,oe=e.elements.arrow&&fa(e.elements.arrow),ue=oe?v==="y"?oe.clientTop||0:oe.clientLeft||0:0,ve=(S=F?.[v])!=null?S:0,E=R+pe-ve-ue,j=R+Ae-ve,z=Kn(p?Fo(D,E):D,R,p?fr(W,j):W);C[v]=z,T[v]=z-R}if(o){var I,k=v==="x"?Ht:Vt,G=v==="x"?hi:ci,J=C[_],$=_==="y"?"height":"width",V=J+g[k],ie=J-g[G],le=[Ht,Vt].indexOf(y)!==-1,re=(I=F?.[_])!=null?I:0,be=le?V:J-B[$]-P[$]-re+U.altAxis,je=le?J+B[$]+P[$]-re-U.altAxis:ie,De=p&&le?qE(be,J,je):Kn(p?be:V,J,p?je:ie);C[_]=De,T[_]=De-J}e.modifiersData[i]=T}}const S_={name:"preventOverflow",enabled:!0,phase:"main",fn:T_,requiresIfExists:["offset"]};function C_(s){return{scrollLeft:s.scrollLeft,scrollTop:s.scrollTop}}function M_(s){return s===qt(s)||!li(s)?Zc(s):C_(s)}function k_(s){var e=s.getBoundingClientRect(),t=on(e.width)/s.offsetWidth||1,i=on(e.height)/s.offsetHeight||1;return t!==1||i!==1}function B_(s,e,t){t===void 0&&(t=!1);var i=li(e),r=li(e)&&k_(e),n=Vs(e),a=ln(s,r,t),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(i||!i&&!t)&&((Ki(e)!=="body"||ed(n))&&(o=M_(e)),li(e)?(l=ln(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):n&&(l.x=$c(n))),{x:a.left+o.scrollLeft-l.x,y:a.top+o.scrollTop-l.y,width:a.width,height:a.height}}function I_(s){var e=new Map,t=new Set,i=[];s.forEach(function(n){e.set(n.name,n)});function r(n){t.add(n.name);var a=[].concat(n.requires||[],n.requiresIfExists||[]);a.forEach(function(o){if(!t.has(o)){var l=e.get(o);l&&r(l)}}),i.push(n)}return s.forEach(function(n){t.has(n.name)||r(n)}),i}function P_(s){var e=I_(s);return zE.reduce(function(t,i){return t.concat(e.filter(function(r){return r.phase===i}))},[])}function R_(s){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(s())})})),e}}function L_(s){var e=s.reduce(function(t,i){var r=t[i.name];return t[i.name]=r?Object.assign({},r,i,{options:Object.assign({},r.options,i.options),data:Object.assign({},r.data,i.data)}):i,t},{});return Object.keys(e).map(function(t){return e[t]})}var hp={placement:"bottom",modifiers:[],strategy:"absolute"};function cp(){for(var s=arguments.length,e=new Array(s),t=0;t-1}function fg(s,e){return typeof s=="function"?s.apply(void 0,e):s}function dp(s,e){if(e===0)return s;var t;return function(i){clearTimeout(t),t=setTimeout(function(){s(i)},e)}}function G_(s){return s.split(/\s+/).filter(Boolean)}function Gr(s){return[].concat(s)}function up(s,e){s.indexOf(e)===-1&&s.push(e)}function H_(s){return s.filter(function(e,t){return s.indexOf(e)===t})}function V_(s){return s.split("-")[0]}function No(s){return[].slice.call(s)}function pp(s){return Object.keys(s).reduce(function(e,t){return s[t]!==void 0&&(e[t]=s[t]),e},{})}function Qn(){return document.createElement("div")}function sl(s){return["Element","Fragment"].some(function(e){return td(s,e)})}function W_(s){return td(s,"NodeList")}function z_(s){return td(s,"MouseEvent")}function Y_(s){return!!(s&&s._tippy&&s._tippy.reference===s)}function j_(s){return sl(s)?[s]:W_(s)?No(s):Array.isArray(s)?s:No(document.querySelectorAll(s))}function sh(s,e){s.forEach(function(t){t&&(t.style.transitionDuration=e+"ms")})}function fp(s,e){s.forEach(function(t){t&&t.setAttribute("data-state",e)})}function X_(s){var e,t=Gr(s),i=t[0];return i!=null&&(e=i.ownerDocument)!=null&&e.body?i.ownerDocument:document}function K_(s,e){var t=e.clientX,i=e.clientY;return s.every(function(r){var n=r.popperRect,a=r.popperState,o=r.props,l=o.interactiveBorder,c=V_(a.placement),u=a.modifiersData.offset;if(!u)return!0;var h=c==="bottom"?u.top.y:0,d=c==="top"?u.bottom.y:0,p=c==="right"?u.left.x:0,m=c==="left"?u.right.x:0,f=n.top-i+h>l,g=i-n.bottom-d>l,y=n.left-t+p>l,b=t-n.right-m>l;return f||g||y||b})}function rh(s,e,t){var i=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(r){s[i](r,t)})}function mp(s,e){for(var t=e;t;){var i;if(s.contains(t))return!0;t=t.getRootNode==null||(i=t.getRootNode())==null?void 0:i.host}return!1}var Ui={isTouch:!1},gp=0;function q_(){Ui.isTouch||(Ui.isTouch=!0,window.performance&&document.addEventListener("mousemove",mg))}function mg(){var s=performance.now();s-gp<20&&(Ui.isTouch=!1,document.removeEventListener("mousemove",mg)),gp=s}function Q_(){var s=document.activeElement;if(Y_(s)){var e=s._tippy;s.blur&&!e.state.isVisible&&s.blur()}}function J_(){document.addEventListener("touchstart",q_,er),window.addEventListener("blur",Q_)}var Z_=typeof window<"u"&&typeof document<"u",$_=Z_?!!window.msCrypto:!1,e1={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},t1={allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999},bi=Object.assign({appendTo:pg,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},e1,t1),i1=Object.keys(bi),s1=function(e){var t=Object.keys(e);t.forEach(function(i){bi[i]=e[i]})};function gg(s){var e=s.plugins||[],t=e.reduce(function(i,r){var n=r.name,a=r.defaultValue;if(n){var o;i[n]=s[n]!==void 0?s[n]:(o=bi[n])!=null?o:a}return i},{});return Object.assign({},s,t)}function r1(s,e){var t=e?Object.keys(gg(Object.assign({},bi,{plugins:e}))):i1,i=t.reduce(function(r,n){var a=(s.getAttribute("data-tippy-"+n)||"").trim();if(!a)return r;if(n==="content")r[n]=a;else try{r[n]=JSON.parse(a)}catch{r[n]=a}return r},{});return i}function yp(s,e){var t=Object.assign({},e,{content:fg(e.content,[s])},e.ignoreAttributes?{}:r1(s,e.plugins));return t.aria=Object.assign({},bi.aria,t.aria),t.aria={expanded:t.aria.expanded==="auto"?e.interactive:t.aria.expanded,content:t.aria.content==="auto"?e.interactive?null:"describedby":t.aria.content},t}var n1=function(){return"innerHTML"};function Ac(s,e){s[n1()]=e}function vp(s){var e=Qn();return s===!0?e.className=dg:(e.className=ug,sl(s)?e.appendChild(s):Ac(e,s)),e}function Ap(s,e){sl(e.content)?(Ac(s,""),s.appendChild(e.content)):typeof e.content!="function"&&(e.allowHTML?Ac(s,e.content):s.textContent=e.content)}function bc(s){var e=s.firstElementChild,t=No(e.children);return{box:e,content:t.find(function(i){return i.classList.contains(cg)}),arrow:t.find(function(i){return i.classList.contains(dg)||i.classList.contains(ug)}),backdrop:t.find(function(i){return i.classList.contains(U_)})}}function yg(s){var e=Qn(),t=Qn();t.className=N_,t.setAttribute("data-state","hidden"),t.setAttribute("tabindex","-1");var i=Qn();i.className=cg,i.setAttribute("data-state","hidden"),Ap(i,s.props),e.appendChild(t),t.appendChild(i),r(s.props,s.props);function r(n,a){var o=bc(e),l=o.box,c=o.content,u=o.arrow;a.theme?l.setAttribute("data-theme",a.theme):l.removeAttribute("data-theme"),typeof a.animation=="string"?l.setAttribute("data-animation",a.animation):l.removeAttribute("data-animation"),a.inertia?l.setAttribute("data-inertia",""):l.removeAttribute("data-inertia"),l.style.maxWidth=typeof a.maxWidth=="number"?a.maxWidth+"px":a.maxWidth,a.role?l.setAttribute("role",a.role):l.removeAttribute("role"),(n.content!==a.content||n.allowHTML!==a.allowHTML)&&Ap(c,s.props),a.arrow?u?n.arrow!==a.arrow&&(l.removeChild(u),l.appendChild(vp(a.arrow))):l.appendChild(vp(a.arrow)):u&&l.removeChild(u)}return{popper:e,onUpdate:r}}yg.$$tippy=!0;var a1=1,ja=[],nh=[];function o1(s,e){var t=yp(s,Object.assign({},bi,gg(pp(e)))),i,r,n,a=!1,o=!1,l=!1,c=!1,u,h,d,p=[],m=dp(E,t.interactiveDebounce),f,g=a1++,y=null,b=H_(t.plugins),A={isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},v={id:g,reference:s,popper:Qn(),popperInstance:y,props:t,state:A,plugins:b,clearDelayTimeouts:be,setProps:je,setContent:De,show:Ot,hide:zs,hideWithInteractivity:Qt,enable:le,disable:re,unmount:Ys,destroy:rt};if(!t.render)return v;var _=t.render(v),C=_.popper,B=_.onUpdate;C.setAttribute("data-tippy-root",""),C.id="tippy-"+v.id,v.popper=C,s._tippy=v,C._tippy=v;var P=b.map(function(K){return K.fn(v)}),M=s.hasAttribute("aria-expanded");return oe(),H(),R(),D("onCreate",[v]),t.showOnCreate&&V(),C.addEventListener("mouseenter",function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()}),C.addEventListener("mouseleave",function(){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&x().addEventListener("mousemove",m)}),v;function U(){var K=v.props.touch;return Array.isArray(K)?K:[K,0]}function F(){return U()[0]==="hold"}function T(){var K;return!!((K=v.props.render)!=null&&K.$$tippy)}function S(){return f||s}function x(){var K=S().parentNode;return K?X_(K):document}function L(){return bc(C)}function Y(K){return v.state.isMounted&&!v.state.isVisible||Ui.isTouch||u&&u.type==="focus"?0:ih(v.props.delay,K?0:1,bi.delay)}function R(K){K===void 0&&(K=!1),C.style.pointerEvents=v.props.interactive&&!K?"":"none",C.style.zIndex=""+v.props.zIndex}function D(K,fe,xe){if(xe===void 0&&(xe=!0),P.forEach(function(Ge){Ge[K]&&Ge[K].apply(Ge,fe)}),xe){var Ye;(Ye=v.props)[K].apply(Ye,fe)}}function W(){var K=v.props.aria;if(K.content){var fe="aria-"+K.content,xe=C.id,Ye=Gr(v.props.triggerTarget||s);Ye.forEach(function(Ge){var _t=Ge.getAttribute(fe);if(v.state.isVisible)Ge.setAttribute(fe,_t?_t+" "+xe:xe);else{var Ft=_t&&_t.replace(xe,"").trim();Ft?Ge.setAttribute(fe,Ft):Ge.removeAttribute(fe)}})}}function H(){if(!(M||!v.props.aria.expanded)){var K=Gr(v.props.triggerTarget||s);K.forEach(function(fe){v.props.interactive?fe.setAttribute("aria-expanded",v.state.isVisible&&fe===S()?"true":"false"):fe.removeAttribute("aria-expanded")})}}function O(){x().removeEventListener("mousemove",m),ja=ja.filter(function(K){return K!==m})}function N(K){if(!(Ui.isTouch&&(l||K.type==="mousedown"))){var fe=K.composedPath&&K.composedPath()[0]||K.target;if(!(v.props.interactive&&mp(C,fe))){if(Gr(v.props.triggerTarget||s).some(function(xe){return mp(xe,fe)})){if(Ui.isTouch||v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else D("onClickOutside",[v,K]);v.props.hideOnClick===!0&&(v.clearDelayTimeouts(),v.hide(),o=!0,setTimeout(function(){o=!1}),v.state.isMounted||ge())}}}function ee(){l=!0}function Z(){l=!1}function Q(){var K=x();K.addEventListener("mousedown",N,!0),K.addEventListener("touchend",N,er),K.addEventListener("touchstart",Z,er),K.addEventListener("touchmove",ee,er)}function ge(){var K=x();K.removeEventListener("mousedown",N,!0),K.removeEventListener("touchend",N,er),K.removeEventListener("touchstart",Z,er),K.removeEventListener("touchmove",ee,er)}function Te(K,fe){pe(K,function(){!v.state.isVisible&&C.parentNode&&C.parentNode.contains(C)&&fe()})}function he(K,fe){pe(K,fe)}function pe(K,fe){var xe=L().box;function Ye(Ge){Ge.target===xe&&(rh(xe,"remove",Ye),fe())}if(K===0)return fe();rh(xe,"remove",h),rh(xe,"add",Ye),h=Ye}function Ae(K,fe,xe){xe===void 0&&(xe=!1);var Ye=Gr(v.props.triggerTarget||s);Ye.forEach(function(Ge){Ge.addEventListener(K,fe,xe),p.push({node:Ge,eventType:K,handler:fe,options:xe})})}function oe(){F()&&(Ae("touchstart",ve,{passive:!0}),Ae("touchend",j,{passive:!0})),G_(v.props.trigger).forEach(function(K){if(K!=="manual")switch(Ae(K,ve),K){case"mouseenter":Ae("mouseleave",j);break;case"focus":Ae($_?"focusout":"blur",z);break;case"focusin":Ae("focusout",z);break}})}function ue(){p.forEach(function(K){var fe=K.node,xe=K.eventType,Ye=K.handler,Ge=K.options;fe.removeEventListener(xe,Ye,Ge)}),p=[]}function ve(K){var fe,xe=!1;if(!(!v.state.isEnabled||I(K)||o)){var Ye=((fe=u)==null?void 0:fe.type)==="focus";u=K,f=K.currentTarget,H(),!v.state.isVisible&&z_(K)&&ja.forEach(function(Ge){return Ge(K)}),K.type==="click"&&(v.props.trigger.indexOf("mouseenter")<0||a)&&v.props.hideOnClick!==!1&&v.state.isVisible?xe=!0:V(K),K.type==="click"&&(a=!xe),xe&&!Ye&&ie(K)}}function E(K){var fe=K.target,xe=S().contains(fe)||C.contains(fe);if(!(K.type==="mousemove"&&xe)){var Ye=$().concat(C).map(function(Ge){var _t,Ft=Ge._tippy,Qi=(_t=Ft.popperInstance)==null?void 0:_t.state;return Qi?{popperRect:Ge.getBoundingClientRect(),popperState:Qi,props:t}:null}).filter(Boolean);K_(Ye,K)&&(O(),ie(K))}}function j(K){var fe=I(K)||v.props.trigger.indexOf("click")>=0&&a;if(!fe){if(v.props.interactive){v.hideWithInteractivity(K);return}ie(K)}}function z(K){v.props.trigger.indexOf("focusin")<0&&K.target!==S()||v.props.interactive&&K.relatedTarget&&C.contains(K.relatedTarget)||ie(K)}function I(K){return Ui.isTouch?F()!==K.type.indexOf("touch")>=0:!1}function k(){G();var K=v.props,fe=K.popperOptions,xe=K.placement,Ye=K.offset,Ge=K.getReferenceClientRect,_t=K.moveTransition,Ft=T()?bc(C).arrow:null,Qi=Ge?{getBoundingClientRect:Ge,contextElement:Ge.contextElement||S()}:s,gs={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(ya){var Er=ya.state;if(T()){var ny=L(),ml=ny.box;["placement","reference-hidden","escaped"].forEach(function(va){va==="placement"?ml.setAttribute("data-placement",Er.placement):Er.attributes.popper["data-popper-"+va]?ml.setAttribute("data-"+va,""):ml.removeAttribute("data-"+va)}),Er.attributes.popper={}}}},Jt=[{name:"offset",options:{offset:Ye}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!_t}},gs];T()&&Ft&&Jt.push({name:"arrow",options:{element:Ft,padding:3}}),Jt.push.apply(Jt,fe?.modifiers||[]),v.popperInstance=F_(Qi,C,Object.assign({},fe,{placement:xe,onFirstUpdate:d,modifiers:Jt}))}function G(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function J(){var K=v.props.appendTo,fe,xe=S();v.props.interactive&&K===pg||K==="parent"?fe=xe.parentNode:fe=fg(K,[xe]),fe.contains(C)||fe.appendChild(C),v.state.isMounted=!0,k()}function $(){return No(C.querySelectorAll("[data-tippy-root]"))}function V(K){v.clearDelayTimeouts(),K&&D("onTrigger",[v,K]),Q();var fe=Y(!0),xe=U(),Ye=xe[0],Ge=xe[1];Ui.isTouch&&Ye==="hold"&&Ge&&(fe=Ge),fe?i=setTimeout(function(){v.show()},fe):v.show()}function ie(K){if(v.clearDelayTimeouts(),D("onUntrigger",[v,K]),!v.state.isVisible){ge();return}if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(K.type)>=0&&a)){var fe=Y(!1);fe?r=setTimeout(function(){v.state.isVisible&&v.hide()},fe):n=requestAnimationFrame(function(){v.hide()})}}function le(){v.state.isEnabled=!0}function re(){v.hide(),v.state.isEnabled=!1}function be(){clearTimeout(i),clearTimeout(r),cancelAnimationFrame(n)}function je(K){if(!v.state.isDestroyed){D("onBeforeUpdate",[v,K]),ue();var fe=v.props,xe=yp(s,Object.assign({},fe,pp(K),{ignoreAttributes:!0}));v.props=xe,oe(),fe.interactiveDebounce!==xe.interactiveDebounce&&(O(),m=dp(E,xe.interactiveDebounce)),fe.triggerTarget&&!xe.triggerTarget?Gr(fe.triggerTarget).forEach(function(Ye){Ye.removeAttribute("aria-expanded")}):xe.triggerTarget&&s.removeAttribute("aria-expanded"),H(),R(),B&&B(fe,xe),v.popperInstance&&(k(),$().forEach(function(Ye){requestAnimationFrame(Ye._tippy.popperInstance.forceUpdate)})),D("onAfterUpdate",[v,K])}}function De(K){v.setProps({content:K})}function Ot(){var K=v.state.isVisible,fe=v.state.isDestroyed,xe=!v.state.isEnabled,Ye=Ui.isTouch&&!v.props.touch,Ge=ih(v.props.duration,0,bi.duration);if(!(K||fe||xe||Ye)&&!S().hasAttribute("disabled")&&(D("onShow",[v],!1),v.props.onShow(v)!==!1)){if(v.state.isVisible=!0,T()&&(C.style.visibility="visible"),R(),Q(),v.state.isMounted||(C.style.transition="none"),T()){var _t=L(),Ft=_t.box,Qi=_t.content;sh([Ft,Qi],0)}d=function(){var Jt;if(!(!v.state.isVisible||c)){if(c=!0,C.offsetHeight,C.style.transition=v.props.moveTransition,T()&&v.props.animation){var fl=L(),ya=fl.box,Er=fl.content;sh([ya,Er],Ge),fp([ya,Er],"visible")}W(),H(),up(nh,v),(Jt=v.popperInstance)==null||Jt.forceUpdate(),D("onMount",[v]),v.props.animation&&T()&&he(Ge,function(){v.state.isShown=!0,D("onShown",[v])})}},J()}}function zs(){var K=!v.state.isVisible,fe=v.state.isDestroyed,xe=!v.state.isEnabled,Ye=ih(v.props.duration,1,bi.duration);if(!(K||fe||xe)&&(D("onHide",[v],!1),v.props.onHide(v)!==!1)){if(v.state.isVisible=!1,v.state.isShown=!1,c=!1,a=!1,T()&&(C.style.visibility="hidden"),O(),ge(),R(!0),T()){var Ge=L(),_t=Ge.box,Ft=Ge.content;v.props.animation&&(sh([_t,Ft],Ye),fp([_t,Ft],"hidden"))}W(),H(),v.props.animation?T()&&Te(Ye,v.unmount):v.unmount()}}function Qt(K){x().addEventListener("mousemove",m),up(ja,m),m(K)}function Ys(){v.state.isVisible&&v.hide(),v.state.isMounted&&(G(),$().forEach(function(K){K._tippy.unmount()}),C.parentNode&&C.parentNode.removeChild(C),nh=nh.filter(function(K){return K!==v}),v.state.isMounted=!1,D("onHidden",[v]))}function rt(){v.state.isDestroyed||(v.clearDelayTimeouts(),v.unmount(),ue(),delete s._tippy,v.state.isDestroyed=!0,D("onDestroy",[v]))}}function Wt(s,e){e===void 0&&(e={});var t=bi.plugins.concat(e.plugins||[]);J_();var i=Object.assign({},e,{plugins:t}),r=j_(s),n=r.reduce(function(a,o){var l=o&&o1(o,i);return l&&a.push(l),a},[]);return sl(s)?n[0]:n}Wt.defaultProps=bi;Wt.setDefaultProps=s1;Wt.currentInput=Ui;Object.assign({},ig,{effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow)}});Wt.setDefaultProps({render:yg});const l1="modulepreload",h1=function(s){return"/smeditor/"+s},bp={},qe=function(e,t,i){if(!t||t.length===0)return e();const r=document.getElementsByTagName("link");return Promise.all(t.map(n=>{if(n=h1(n),n in bp)return;bp[n]=!0;const a=n.endsWith(".css"),o=a?'[rel="stylesheet"]':"";if(!!i)for(let u=r.length-1;u>=0;u--){const h=r[u];if(h.href===n&&(!a||h.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${n}"]${o}`))return;const c=document.createElement("link");if(c.rel=a?"stylesheet":l1,a||(c.as="script",c.crossOrigin=""),c.href=n,document.head.appendChild(c),a)return new Promise((u,h)=>{c.addEventListener("load",u),c.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${n}`)))})})).then(()=>e()).catch(n=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=n,window.dispatchEvent(a),!a.defaultPrevented)throw n})},Uo={INVALID:["seeking position failed.","InvalidStateError"],GONE:["A requested file or directory could not be found at the time an operation was processed.","NotFoundError"],MISMATCH:["The path supplied exists, but was not an entry of requested type.","TypeMismatchError"],MOD_ERR:["The object can not be modified in this way.","InvalidModificationError"],SYNTAX:s=>[`Failed to execute 'write' on 'UnderlyingSinkBase': Invalid params passed. ${s}`,"SyntaxError"],ABORT:["The operation was aborted","AbortError"],SECURITY:["It was determined that certain files are unsafe for access within a Web application, or that too many calls are being made on file resources.","SecurityError"],DISALLOWED:["The request is not allowed by the user agent or the platform in the current context.","NotAllowedError"]},c1=s=>typeof s=="object"&&typeof s.type<"u";async function d1(s){var e,t,i;const{FolderHandle:r,FileHandle:n}=await qe(()=>import("./memory-7b00e9f1.js"),[]),{FileSystemDirectoryHandle:a}=await qe(()=>Promise.resolve().then(()=>xT),void 0),o=(t=(e=s[0].webkitRelativePath)===null||e===void 0?void 0:e.split("/",1)[0])!==null&&t!==void 0?t:"",l=new r(o,!1);for(let c=0;c(m._entries[f]||(m._entries[f]=new r(f,!1)),m._entries[f]),l);p._entries[d]=new n(u.name,u,!1)}return new a(l)}async function u1(s){const{FileHandle:e}=await qe(()=>import("./memory-7b00e9f1.js"),[]),{FileSystemFileHandle:t}=await qe(()=>Promise.resolve().then(()=>Rg),void 0);return Array.from(s).map(r=>new t(new e(r.name,r,!1)))}const vg=Object.freeze(Object.defineProperty({__proto__:null,errors:Uo,isChunkObject:c1,makeDirHandleFromFileList:d1,makeFileHandlesFromFileList:u1},Symbol.toStringTag,{value:"Module"}));var hr={};/*! howler.js v2.2.4 | (c) 2013-2020, James Simpson of GoldFire Studios | MIT License | howlerjs.com */(function(s){(function(){var e=function(){this.init()};e.prototype={init:function(){var h=this||t;return h._counter=1e3,h._html5AudioPool=[],h.html5PoolSize=10,h._codecs={},h._howls=[],h._muted=!1,h._volume=1,h._canPlayEvent="canplaythrough",h._navigator=typeof window<"u"&&window.navigator?window.navigator:null,h.masterGain=null,h.noAudio=!1,h.usingWebAudio=!0,h.autoSuspend=!0,h.ctx=null,h.autoUnlock=!0,h._setup(),h},volume:function(h){var d=this||t;if(h=parseFloat(h),d.ctx||u(),h!==void 0&&h>=0&&h<=1){if(d._volume=h,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(h,t.ctx.currentTime);for(var p=0;p=0;d--)h._howls[d].unload();return h.usingWebAudio&&h.ctx&&h.ctx.close!==void 0&&(h.ctx.close(),h.ctx=null,u()),h},codecs:function(h){return(this||t)._codecs[h.replace(/^x-/,"")]},_setup:function(){var h=this||t;if(h.state=h.ctx&&h.ctx.state||"suspended",h._autoSuspend(),!h.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;d.oncanplaythrough===void 0&&(h._canPlayEvent="canplay")}catch{h.noAudio=!0}else h.noAudio=!0;try{var d=new Audio;d.muted&&(h.noAudio=!0)}catch{}return h.noAudio||h._setupCodecs(),h},_setupCodecs:function(){var h=this||t,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return h}if(!d||typeof d.canPlayType!="function")return h;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),m=h._navigator?h._navigator.userAgent:"",f=m.match(/OPR\/(\d+)/g),g=f&&parseInt(f[0].split("/")[1],10)<33,y=m.indexOf("Safari")!==-1&&m.indexOf("Chrome")===-1,b=m.match(/Version\/(.*?) /),A=y&&b&&parseInt(b[1],10)<15;return h._codecs={mp3:!(g||!p&&!d.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(A||!d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(A||!d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},h},_unlockAudio:function(){var h=this||t;if(!h._audioUnlocked&&h.ctx){h._audioUnlocked=!1,h.autoUnlock=!1,h._mobileUnloaded||h.ctx.sampleRate===44100||(h._mobileUnloaded=!0,h.unload()),h._scratchBuffer=h.ctx.createBuffer(1,1,22050);var d=function(p){for(;h._html5AudioPool.length0?y._seek:p._sprite[h][0]/1e3),v=Math.max(0,(p._sprite[h][0]+p._sprite[h][1])/1e3-A),_=1e3*v/Math.abs(y._rate),C=p._sprite[h][0]/1e3,B=(p._sprite[h][0]+p._sprite[h][1])/1e3;y._sprite=h,y._ended=!1;var P=function(){y._paused=!1,y._seek=A,y._start=C,y._stop=B,y._loop=!(!y._loop&&!p._sprite[h][2])};if(A>=B)return void p._ended(y);var M=y._node;if(p._webAudio){var U=function(){p._playLock=!1,P(),p._refreshBuffer(y);var x=y._muted||p._muted?0:y._volume;M.gain.setValueAtTime(x,t.ctx.currentTime),y._playStart=t.ctx.currentTime,M.bufferSource.start===void 0?y._loop?M.bufferSource.noteGrainOn(0,A,86400):M.bufferSource.noteGrainOn(0,A,v):y._loop?M.bufferSource.start(0,A,86400):M.bufferSource.start(0,A,v),_!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),_)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?U():(p._playLock=!0,p.once("resume",U),p._clearTimer(y._id))}else{var F=function(){M.currentTime=A,M.muted=y._muted||p._muted||t._muted||M.muted,M.volume=y._volume*t.volume(),M.playbackRate=y._rate;try{var x=M.play();if(x&&typeof Promise<"u"&&(x instanceof Promise||typeof x.then=="function")?(p._playLock=!0,P(),x.then(function(){p._playLock=!1,M._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,P(),p._emit("play",y._id)),M.playbackRate=y._rate,M.paused)return void p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");h!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),_):(p._endTimers[y._id]=function(){p._ended(y),M.removeEventListener("ended",p._endTimers[y._id],!1)},M.addEventListener("ended",p._endTimers[y._id],!1))}catch(L){p._emit("playerror",y._id,L)}};M.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(M.src=p._src,M.load());var T=window&&window.ejecta||!M.readyState&&t._navigator.isCocoonJS;if(M.readyState>=3||T)F();else{p._playLock=!0,p._state="loading";var S=function(){p._state="loaded",F(),M.removeEventListener(t._canPlayEvent,S,!1)};M.addEventListener(t._canPlayEvent,S,!1),p._clearTimer(y._id)}}return y._id},pause:function(h){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(h)}}),d;for(var p=d._getSoundIds(h),m=0;m=0?d=parseInt(m[0],10):h=parseFloat(m[0]):m.length>=2&&(h=parseFloat(m[0]),d=parseInt(m[1],10));var f;if(!(h!==void 0&&h>=0&&h<=1))return f=d?p._soundById(d):p._sounds[0],f?f._volume:0;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"volume",action:function(){p.volume.apply(p,m)}}),p;d===void 0&&(p._volume=h),d=p._getSoundIds(d);for(var g=0;g0?m/v:m),C=Date.now();h._fadeTo=p,h._interval=setInterval(function(){var B=(Date.now()-C)/m;C=Date.now(),b+=A*B,b=Math.round(100*b)/100,b=A<0?Math.max(p,b):Math.min(p,b),y._webAudio?h._volume=b:y.volume(b,h._id,!0),g&&(y._volume=b),(pd&&b>=p)&&(clearInterval(h._interval),h._interval=null,h._fadeTo=null,y.volume(p,h._id),y._emit("fade",h._id))},_)},_stopFade:function(h){var d=this,p=d._soundById(h);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,h),p._fadeTo=null,d._emit("fade",h)),d},loop:function(){var h,d,p,m=this,f=arguments;if(f.length===0)return m._loop;if(f.length===1){if(typeof f[0]!="boolean")return!!(p=m._soundById(parseInt(f[0],10)))&&p._loop;h=f[0],m._loop=h}else f.length===2&&(h=f[0],d=parseInt(f[1],10));for(var g=m._getSoundIds(d),y=0;y=0?d=parseInt(m[0],10):h=parseFloat(m[0])}else m.length===2&&(h=parseFloat(m[0]),d=parseInt(m[1],10));var y;if(typeof h!="number")return y=p._soundById(d),y?y._rate:p._rate;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"rate",action:function(){p.rate.apply(p,m)}}),p;d===void 0&&(p._rate=h),d=p._getSoundIds(d);for(var b=0;b=0?d=parseInt(m[0],10):p._sounds.length&&(d=p._sounds[0]._id,h=parseFloat(m[0]))}else m.length===2&&(h=parseFloat(m[0]),d=parseInt(m[1],10));if(d===void 0)return 0;if(typeof h=="number"&&(p._state!=="loaded"||p._playLock))return p._queue.push({event:"seek",action:function(){p.seek.apply(p,m)}}),p;var y=p._soundById(d);if(y){if(!(typeof h=="number"&&h>=0)){if(p._webAudio){var b=p.playing(d)?t.ctx.currentTime-y._playStart:0,A=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(A+b*Math.abs(y._rate))}return y._node.currentTime}var v=p.playing(d);v&&p.pause(d,!0),y._seek=h,y._ended=!1,p._clearTimer(d),p._webAudio||!y._node||isNaN(y._node.duration)||(y._node.currentTime=h);var _=function(){v&&p.play(d,!0),p._emit("seek",d)};if(v&&!p._webAudio){var C=function(){p._playLock?setTimeout(C,0):_()};setTimeout(C,0)}else _()}return p},playing:function(h){var d=this;if(typeof h=="number"){var p=d._soundById(h);return!!p&&!p._paused}for(var m=0;m=0&&t._howls.splice(m,1);var f=!0;for(p=0;p=0){f=!1;break}return n&&f&&delete n[h._src],t.noAudio=!1,h._state="unloaded",h._sounds=[],h=null,null},on:function(h,d,p,m){var f=this,g=f["_on"+h];return typeof d=="function"&&g.push(m?{id:p,fn:d,once:m}:{id:p,fn:d}),f},off:function(h,d,p){var m=this,f=m["_on"+h],g=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(g=0;g=0;g--)f[g].id&&f[g].id!==d&&h!=="load"||(setTimeout(function(y){y.call(this,d,p)}.bind(m,f[g].fn),0),f[g].once&&m.off(h,f[g].fn,f[g].id));return m._loadQueue(h),m},_loadQueue:function(h){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===h&&(d._queue.shift(),d._loadQueue()),h||p.action()}return d},_ended:function(h){var d=this,p=h._sprite;if(!d._webAudio&&h._node&&!h._node.paused&&!h._node.ended&&h._node.currentTime=0;m--){if(p<=d)return;h._sounds[m]._ended&&(h._webAudio&&h._sounds[m]._node&&h._sounds[m]._node.disconnect(0),h._sounds.splice(m,1),p--)}}},_getSoundIds:function(h){var d=this;if(h===void 0){for(var p=[],m=0;m=0;if(!h.bufferSource)return d;if(t._scratchBuffer&&h.bufferSource&&(h.bufferSource.onended=null,h.bufferSource.disconnect(0),p))try{h.bufferSource.buffer=t._scratchBuffer}catch{}return h.bufferSource=null,d},_clearSound:function(h){/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent)||(h.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(h){this._parent=h,this.init()};r.prototype={init:function(){var h=this,d=h._parent;return h._muted=d._muted,h._loop=d._loop,h._volume=d._volume,h._rate=d._rate,h._seek=0,h._paused=!0,h._ended=!0,h._sprite="__default",h._id=++t._counter,d._sounds.push(h),h.create(),h},create:function(){var h=this,d=h._parent,p=t._muted||h._muted||h._parent._muted?0:h._volume;return d._webAudio?(h._node=t.ctx.createGain===void 0?t.ctx.createGainNode():t.ctx.createGain(),h._node.gain.setValueAtTime(p,t.ctx.currentTime),h._node.paused=!0,h._node.connect(t.masterGain)):t.noAudio||(h._node=t._obtainHtml5Audio(),h._errorFn=h._errorListener.bind(h),h._node.addEventListener("error",h._errorFn,!1),h._loadFn=h._loadListener.bind(h),h._node.addEventListener(t._canPlayEvent,h._loadFn,!1),h._endFn=h._endListener.bind(h),h._node.addEventListener("ended",h._endFn,!1),h._node.src=d._src,h._node.preload=d._preload===!0?"auto":d._preload,h._node.volume=p*t.volume(),h._node.load()),h},reset:function(){var h=this,d=h._parent;return h._muted=d._muted,h._loop=d._loop,h._volume=d._volume,h._rate=d._rate,h._seek=0,h._rateSeek=0,h._paused=!0,h._ended=!0,h._sprite="__default",h._id=++t._counter,h},_errorListener:function(){var h=this;h._parent._emit("loaderror",h._id,h._node.error?h._node.error.code:0),h._node.removeEventListener("error",h._errorFn,!1)},_loadListener:function(){var h=this,d=h._parent;d._duration=Math.ceil(10*h._node.duration)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,1e3*d._duration]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),h._node.removeEventListener(t._canPlayEvent,h._loadFn,!1)},_endListener:function(){var h=this,d=h._parent;d._duration===1/0&&(d._duration=Math.ceil(10*h._node.duration)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=1e3*d._duration),d._ended(h)),h._node.removeEventListener("ended",h._endFn,!1)}};var n={},a=function(h){var d=h._src;if(n[d])return h._duration=n[d].duration,void c(h);if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),m=new Uint8Array(p.length),f=0;f0?(n[d._src]=f,c(d,f)):p()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(h).then(m).catch(p):t.ctx.decodeAudioData(h,m,p)},c=function(h,d){d&&!h._duration&&(h._duration=d.duration),Object.keys(h._sprite).length===0&&(h._sprite={__default:[0,1e3*h._duration]}),h._state!=="loaded"&&(h._state="loaded",h._emit("load"),h._loadQueue())},u=function(){if(t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var h=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),d=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(h&&p&&p<9){var m=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!m&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=t.ctx.createGain===void 0?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};s.Howler=t,s.Howl=i,typeof Nt<"u"?(Nt.HowlerGlobal=e,Nt.Howler=t,Nt.Howl=i,Nt.Sound=r):typeof window<"u"&&(window.HowlerGlobal=e,window.Howler=t,window.Howl=i,window.Sound=r)})()})(hr);const p1="/smeditor/assets/assist_tick-b8aada2a.ogg",Ag="/smeditor/assets/metronome_high-6fa54e52.ogg",bg="/smeditor/assets/metronome_low-4db4e760.ogg",f1="/smeditor/assets/mine-b65ce42d.ogg",rl=[".aac",".mid",".midi",".mp3",".oga",".ogg",".opus",".wav",".webm",".weba",".flac",".aiff"],tr=[".bmp",".gif",".jpeg",".jpg",".png",".tif",".tiff",".webp"],id=["Hold","Roll"];function wg(s){return!id.includes(s.type)}function Pe(s){return id.includes(s.type)}var si="INUMBER",bn="IOP1",wn="IOP2",xn="IOP3",us="IVAR",br="IVARNAME",cn="IFUNCALL",nl="IFUNDEF",zt="IEXPR",sd="IEXPREVAL",xr="IMEMBER",al="IENDSTATEMENT",dn="IARRAY";function ze(s,e){this.type=s,this.value=e??0}ze.prototype.toString=function(){switch(this.type){case si:case bn:case wn:case xn:case us:case br:case al:return this.value;case cn:return"CALL "+this.value;case nl:return"DEF "+this.value;case dn:return"ARRAY "+this.value;case xr:return"."+this.value;default:return"Invalid Instruction"}};function ol(s){return new ze(bn,s)}function fs(s){return new ze(wn,s)}function xg(s){return new ze(xn,s)}function wc(s,e,t,i,r){for(var n=[],a=[],o,l,c,u,h=0;h1)l=n.pop(),o=n.pop(),u=t[d.value],d=new ze(si,u(o.value,l.value)),n.push(d);else if(p===xn&&n.length>2)c=n.pop(),l=n.pop(),o=n.pop(),d.value==="?"?n.push(o.value?l.value:c.value):(u=i[d.value],d=new ze(si,u(o.value,l.value,c.value)),n.push(d));else if(p===bn&&n.length>0)o=n.pop(),u=e[d.value],d=new ze(si,u(o.value)),n.push(d);else if(p===zt){for(;n.length>0;)a.push(n.shift());a.push(new ze(zt,wc(d.value,e,t,i,r)))}else if(p===xr&&n.length>0)o=n.pop(),n.push(new ze(si,o.value[d.value]));else{for(;n.length>0;)a.push(n.shift());a.push(d)}}for(;n.length>0;)a.push(n.shift());return a}function Eg(s,e,t){for(var i=[],r=0;r0;)l.unshift($i(i.pop(),t));if(o=i.pop(),o.apply&&o.call)i.push(o.apply(void 0,l));else throw new Error(o+" is not a function")}else if(p===nl)i.push(function(){for(var f=i.pop(),g=[],y=d.value;y-- >0;)g.unshift(i.pop());var b=i.pop(),A=function(){for(var v=Object.assign({},t),_=0,C=g.length;_0;)l.unshift(i.pop());i.push(l)}else throw new Error("invalid Expression")}if(i.length>1)throw new Error("invalid Expression (parity)");return i[0]===0?0:$i(i[0],t)}function m1(s,e,t){return rd(s)?s:{type:sd,value:function(i){return nr(s.value,e,i)}}}function rd(s){return s&&s.type===sd}function $i(s,e){return rd(s)?s.value(e):s}function nd(s,e){for(var t=[],i,r,n,a,o,l,c=0;c0;)o.unshift(t.pop());a=t.pop(),t.push(a+"("+o.join(", ")+")")}else if(h===nl){for(r=t.pop(),l=u.value,o=[];l-- >0;)o.unshift(t.pop());i=t.pop(),e?t.push("("+i+" = function("+o.join(", ")+") { return "+r+" })"):t.push("("+i+"("+o.join(", ")+") = "+r+")")}else if(h===xr)i=t.pop(),t.push(i+"."+u.value);else if(h===dn){for(l=u.value,o=[];l-- >0;)o.unshift(t.pop());t.push("["+o.join(", ")+"]")}else if(h===zt)t.push("("+nd(u.value,e)+")");else if(h!==al)throw new Error("invalid Expression")}return t.length>1&&(e?t=[t.join(",")]:t=[t.join(";")]),String(t[0])}function wp(s){return typeof s=="string"?JSON.stringify(s).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029"):s}function jr(s,e){for(var t=0;t=this.expression.length)return this.newToken(ra,"EOF");if(this.isWhitespace()||this.isComment())return this.next();if(this.isRadixInteger()||this.isNumber()||this.isOperator()||this.isString()||this.isParen()||this.isBracket()||this.isComma()||this.isSemicolon()||this.isNamedOp()||this.isConst()||this.isName())return this.current;this.parseError('Unknown character "'+this.expression.charAt(this.pos)+'"')};ut.prototype.isString=function(){var s=!1,e=this.pos,t=this.expression.charAt(e);if(t==="'"||t==='"')for(var i=this.expression.indexOf(t,e+1);i>=0&&this.pos"9")))break}if(e>s){var i=this.expression.substring(s,e);if(i in this.consts)return this.current=this.newToken(ll,this.consts[i]),this.pos+=i.length,!0}return!1};ut.prototype.isNamedOp=function(){for(var s=this.pos,e=s;e"9")))break}if(e>s){var i=this.expression.substring(s,e);if(this.isOperatorEnabled(i)&&(i in this.binaryOps||i in this.unaryOps||i in this.ternaryOps))return this.current=this.newToken(Qe,i),this.pos+=i.length,!0}return!1};ut.prototype.isName=function(){for(var s=this.pos,e=s,t=!1;e"9"))break}else t=!0}if(t){var r=this.expression.substring(s,e);return this.current=this.newToken(od,r),this.pos+=r.length,!0}return!1};ut.prototype.isWhitespace=function(){for(var s=!1,e=this.expression.charAt(this.pos);(e===" "||e===" "||e===` + }`,this._stylesheet)}get stylesheet(){return this._stylesheet}set stylesheet(e){this._stylesheet!==e&&(this._stylesheet=e,this.styleID++)}normalizeColor(e){return Array.isArray(e)&&(e=bA(e)),typeof e=="number"?AA(e):e}dropShadowToCSS(){let e=this.normalizeColor(this.dropShadowColor);const t=this.dropShadowAlpha,i=Math.round(Math.cos(this.dropShadowAngle)*this.dropShadowDistance),r=Math.round(Math.sin(this.dropShadowAngle)*this.dropShadowDistance);e.startsWith("#")&&t<1&&(e+=(t*255|0).toString(16).padStart(2,"0"));const n=`${i}px ${r}px`;return this.dropShadowBlur>0?`text-shadow: ${n} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${n} ${e}`}reset(){Object.assign(this,Nr.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=de.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};gc.availableFonts={},gc.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};let th=gc;const za=class Ur extends Le{constructor(e="",t={}){super(te.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;const i=new Image,r=te.from(i,{scaleMode:de.SCALE_MODE,resourceOptions:{autoLoad:!1}});r.orig=new Me,r.trim=new Me,this.texture=r;const n="http://www.w3.org/2000/svg",a="http://www.w3.org/1999/xhtml",o=document.createElementNS(n,"svg"),l=document.createElementNS(n,"foreignObject"),c=document.createElementNS(a,"div"),u=document.createElementNS(a,"style");l.setAttribute("width","10000"),l.setAttribute("height","10000"),l.style.overflow="hidden",o.appendChild(l),this.maxWidth=Ur.defaultMaxWidth,this.maxHeight=Ur.defaultMaxHeight,this._domElement=c,this._styleElement=u,this._svgRoot=o,this._foreignObject=l,this._foreignObject.appendChild(u),this._foreignObject.appendChild(c),this._image=i,this._loadImage=new Image,this._autoResolution=Ur.defaultAutoResolution,this._resolution=Ur.defaultResolution??de.RESOLUTION,this.text=e,this.style=t}measureText(e){const{text:t,style:i,resolution:r}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:i.toCSS(r)}),this._styleElement.textContent=i.toGlobalCSS(),document.body.appendChild(this._svgRoot);const n=this._domElement.getBoundingClientRect();this._svgRoot.remove();const{width:a,height:o}=n;(a>this.maxWidth||o>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");const l=Math.min(this.maxWidth,Math.ceil(a)),c=Math.min(this.maxHeight,Math.ceil(o));return this._svgRoot.setAttribute("width",l.toString()),this._svgRoot.setAttribute("height",c.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),i!==this._style&&(Object.assign(this._domElement,{style:this._style?.toCSS(r)}),this._styleElement.textContent=this._style?.toGlobalCSS()),{width:l+i.padding*2,height:c+i.padding*2}}async updateText(e=!0){const{style:t,_image:i,_loadImage:r}=this;if(this.localStyleID!==t.styleID&&(this.dirty=!0,this.localStyleID=t.styleID),!this.dirty&&e)return;const{width:n,height:a}=this.measureText();i.width=r.width=Math.ceil(Math.max(1,n)),i.height=r.height=Math.ceil(Math.max(1,a)),this._updateID++;const o=this._updateID;await new Promise(l=>{r.onload=async()=>{if(o/gi,"
").replace(/
/gi,"
").replace(/ /gi," ")}};za.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},za.defaultMaxWidth=2024,za.defaultMaxHeight=2024,za.defaultAutoResolution=!0;var Vt="top",hi="bottom",ci="right",Wt="left",Kc="auto",pa=[Vt,hi,ci,Wt],an="start",ia="end",RE="clippingParents",eg="viewport",Mn="popper",LE="reference",ip=pa.reduce(function(s,e){return s.concat([e+"-"+an,e+"-"+ia])},[]),tg=[].concat(pa,[Kc]).reduce(function(s,e){return s.concat([e,e+"-"+an,e+"-"+ia])},[]),DE="beforeRead",OE="read",FE="afterRead",NE="beforeMain",UE="main",GE="afterMain",HE="beforeWrite",VE="write",WE="afterWrite",zE=[DE,OE,FE,NE,UE,GE,HE,VE,WE];function Ki(s){return s?(s.nodeName||"").toLowerCase():null}function qt(s){if(s==null)return window;if(s.toString()!=="[object Window]"){var e=s.ownerDocument;return e&&e.defaultView||window}return s}function Ar(s){var e=qt(s).Element;return s instanceof e||s instanceof Element}function li(s){var e=qt(s).HTMLElement;return s instanceof e||s instanceof HTMLElement}function qc(s){if(typeof ShadowRoot>"u")return!1;var e=qt(s).ShadowRoot;return s instanceof e||s instanceof ShadowRoot}function YE(s){var e=s.state;Object.keys(e.elements).forEach(function(t){var i=e.styles[t]||{},r=e.attributes[t]||{},n=e.elements[t];!li(n)||!Ki(n)||(Object.assign(n.style,i),Object.keys(r).forEach(function(a){var o=r[a];o===!1?n.removeAttribute(a):n.setAttribute(a,o===!0?"":o)}))})}function jE(s){var e=s.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(i){var r=e.elements[i],n=e.attributes[i]||{},a=Object.keys(e.styles.hasOwnProperty(i)?e.styles[i]:t[i]),o=a.reduce(function(l,c){return l[c]="",l},{});!li(r)||!Ki(r)||(Object.assign(r.style,o),Object.keys(n).forEach(function(l){r.removeAttribute(l)}))})}}const ig={name:"applyStyles",enabled:!0,phase:"write",fn:YE,effect:jE,requires:["computeStyles"]};function zi(s){return s.split("-")[0]}var fr=Math.max,Fo=Math.min,on=Math.round;function yc(){var s=navigator.userAgentData;return s!=null&&s.brands&&Array.isArray(s.brands)?s.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function sg(){return!/^((?!chrome|android).)*safari/i.test(yc())}function ln(s,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var i=s.getBoundingClientRect(),r=1,n=1;e&&li(s)&&(r=s.offsetWidth>0&&on(i.width)/s.offsetWidth||1,n=s.offsetHeight>0&&on(i.height)/s.offsetHeight||1);var a=Ar(s)?qt(s):window,o=a.visualViewport,l=!sg()&&t,c=(i.left+(l&&o?o.offsetLeft:0))/r,u=(i.top+(l&&o?o.offsetTop:0))/n,h=i.width/r,d=i.height/n;return{width:h,height:d,top:u,right:c+h,bottom:u+d,left:c,x:c,y:u}}function Qc(s){var e=ln(s),t=s.offsetWidth,i=s.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:s.offsetLeft,y:s.offsetTop,width:t,height:i}}function rg(s,e){var t=e.getRootNode&&e.getRootNode();if(s.contains(e))return!0;if(t&&qc(t)){var i=e;do{if(i&&s.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function ds(s){return qt(s).getComputedStyle(s)}function XE(s){return["table","td","th"].indexOf(Ki(s))>=0}function Vs(s){return((Ar(s)?s.ownerDocument:s.document)||window.document).documentElement}function il(s){return Ki(s)==="html"?s:s.assignedSlot||s.parentNode||(qc(s)?s.host:null)||Vs(s)}function sp(s){return!li(s)||ds(s).position==="fixed"?null:s.offsetParent}function KE(s){var e=/firefox/i.test(yc()),t=/Trident/i.test(yc());if(t&&li(s)){var i=ds(s);if(i.position==="fixed")return null}var r=il(s);for(qc(r)&&(r=r.host);li(r)&&["html","body"].indexOf(Ki(r))<0;){var n=ds(r);if(n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].indexOf(n.willChange)!==-1||e&&n.willChange==="filter"||e&&n.filter&&n.filter!=="none")return r;r=r.parentNode}return null}function fa(s){for(var e=qt(s),t=sp(s);t&&XE(t)&&ds(t).position==="static";)t=sp(t);return t&&(Ki(t)==="html"||Ki(t)==="body"&&ds(t).position==="static")?e:t||KE(s)||e}function Jc(s){return["top","bottom"].indexOf(s)>=0?"x":"y"}function Kn(s,e,t){return fr(s,Fo(e,t))}function qE(s,e,t){var i=Kn(s,e,t);return i>t?t:i}function ng(){return{top:0,right:0,bottom:0,left:0}}function ag(s){return Object.assign({},ng(),s)}function og(s,e){return e.reduce(function(t,i){return t[i]=s,t},{})}var QE=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,ag(typeof e!="number"?e:og(e,pa))};function JE(s){var e,t=s.state,i=s.name,r=s.options,n=t.elements.arrow,a=t.modifiersData.popperOffsets,o=zi(t.placement),l=Jc(o),c=[Wt,ci].indexOf(o)>=0,u=c?"height":"width";if(!(!n||!a)){var h=QE(r.padding,t),d=Qc(n),p=l==="y"?Vt:Wt,m=l==="y"?hi:ci,f=t.rects.reference[u]+t.rects.reference[l]-a[l]-t.rects.popper[u],g=a[l]-t.rects.reference[l],y=fa(n),b=y?l==="y"?y.clientHeight||0:y.clientWidth||0:0,A=f/2-g/2,v=h[p],_=b-d[u]-h[m],C=b/2-d[u]/2+A,B=Kn(v,C,_),P=l;t.modifiersData[i]=(e={},e[P]=B,e.centerOffset=B-C,e)}}function ZE(s){var e=s.state,t=s.options,i=t.element,r=i===void 0?"[data-popper-arrow]":i;r!=null&&(typeof r=="string"&&(r=e.elements.popper.querySelector(r),!r)||rg(e.elements.popper,r)&&(e.elements.arrow=r))}const $E={name:"arrow",enabled:!0,phase:"main",fn:JE,effect:ZE,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function hn(s){return s.split("-")[1]}var e_={top:"auto",right:"auto",bottom:"auto",left:"auto"};function t_(s,e){var t=s.x,i=s.y,r=e.devicePixelRatio||1;return{x:on(t*r)/r||0,y:on(i*r)/r||0}}function rp(s){var e,t=s.popper,i=s.popperRect,r=s.placement,n=s.variation,a=s.offsets,o=s.position,l=s.gpuAcceleration,c=s.adaptive,u=s.roundOffsets,h=s.isFixed,d=a.x,p=d===void 0?0:d,m=a.y,f=m===void 0?0:m,g=typeof u=="function"?u({x:p,y:f}):{x:p,y:f};p=g.x,f=g.y;var y=a.hasOwnProperty("x"),b=a.hasOwnProperty("y"),A=Wt,v=Vt,_=window;if(c){var C=fa(t),B="clientHeight",P="clientWidth";if(C===qt(t)&&(C=Vs(t),ds(C).position!=="static"&&o==="absolute"&&(B="scrollHeight",P="scrollWidth")),C=C,r===Vt||(r===Wt||r===ci)&&n===ia){v=hi;var M=h&&C===_&&_.visualViewport?_.visualViewport.height:C[B];f-=M-i.height,f*=l?1:-1}if(r===Wt||(r===Vt||r===hi)&&n===ia){A=ci;var U=h&&C===_&&_.visualViewport?_.visualViewport.width:C[P];p-=U-i.width,p*=l?1:-1}}var F=Object.assign({position:o},c&&e_),T=u===!0?t_({x:p,y:f},qt(t)):{x:p,y:f};if(p=T.x,f=T.y,l){var S;return Object.assign({},F,(S={},S[v]=b?"0":"",S[A]=y?"0":"",S.transform=(_.devicePixelRatio||1)<=1?"translate("+p+"px, "+f+"px)":"translate3d("+p+"px, "+f+"px, 0)",S))}return Object.assign({},F,(e={},e[v]=b?f+"px":"",e[A]=y?p+"px":"",e.transform="",e))}function i_(s){var e=s.state,t=s.options,i=t.gpuAcceleration,r=i===void 0?!0:i,n=t.adaptive,a=n===void 0?!0:n,o=t.roundOffsets,l=o===void 0?!0:o,c={placement:zi(e.placement),variation:hn(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:r,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,rp(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,rp(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const s_={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:i_,data:{}};var Ya={passive:!0};function r_(s){var e=s.state,t=s.instance,i=s.options,r=i.scroll,n=r===void 0?!0:r,a=i.resize,o=a===void 0?!0:a,l=qt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return n&&c.forEach(function(u){u.addEventListener("scroll",t.update,Ya)}),o&&l.addEventListener("resize",t.update,Ya),function(){n&&c.forEach(function(u){u.removeEventListener("scroll",t.update,Ya)}),o&&l.removeEventListener("resize",t.update,Ya)}}const n_={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:r_,data:{}};var a_={left:"right",right:"left",bottom:"top",top:"bottom"};function mo(s){return s.replace(/left|right|bottom|top/g,function(e){return a_[e]})}var o_={start:"end",end:"start"};function np(s){return s.replace(/start|end/g,function(e){return o_[e]})}function Zc(s){var e=qt(s),t=e.pageXOffset,i=e.pageYOffset;return{scrollLeft:t,scrollTop:i}}function $c(s){return ln(Vs(s)).left+Zc(s).scrollLeft}function l_(s,e){var t=qt(s),i=Vs(s),r=t.visualViewport,n=i.clientWidth,a=i.clientHeight,o=0,l=0;if(r){n=r.width,a=r.height;var c=sg();(c||!c&&e==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:n,height:a,x:o+$c(s),y:l}}function h_(s){var e,t=Vs(s),i=Zc(s),r=(e=s.ownerDocument)==null?void 0:e.body,n=fr(t.scrollWidth,t.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=fr(t.scrollHeight,t.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-i.scrollLeft+$c(s),l=-i.scrollTop;return ds(r||t).direction==="rtl"&&(o+=fr(t.clientWidth,r?r.clientWidth:0)-n),{width:n,height:a,x:o,y:l}}function ed(s){var e=ds(s),t=e.overflow,i=e.overflowX,r=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+r+i)}function lg(s){return["html","body","#document"].indexOf(Ki(s))>=0?s.ownerDocument.body:li(s)&&ed(s)?s:lg(il(s))}function qn(s,e){var t;e===void 0&&(e=[]);var i=lg(s),r=i===((t=s.ownerDocument)==null?void 0:t.body),n=qt(i),a=r?[n].concat(n.visualViewport||[],ed(i)?i:[]):i,o=e.concat(a);return r?o:o.concat(qn(il(a)))}function vc(s){return Object.assign({},s,{left:s.x,top:s.y,right:s.x+s.width,bottom:s.y+s.height})}function c_(s,e){var t=ln(s,!1,e==="fixed");return t.top=t.top+s.clientTop,t.left=t.left+s.clientLeft,t.bottom=t.top+s.clientHeight,t.right=t.left+s.clientWidth,t.width=s.clientWidth,t.height=s.clientHeight,t.x=t.left,t.y=t.top,t}function ap(s,e,t){return e===eg?vc(l_(s,t)):Ar(e)?c_(e,t):vc(h_(Vs(s)))}function d_(s){var e=qn(il(s)),t=["absolute","fixed"].indexOf(ds(s).position)>=0,i=t&&li(s)?fa(s):s;return Ar(i)?e.filter(function(r){return Ar(r)&&rg(r,i)&&Ki(r)!=="body"}):[]}function u_(s,e,t,i){var r=e==="clippingParents"?d_(s):[].concat(e),n=[].concat(r,[t]),a=n[0],o=n.reduce(function(l,c){var u=ap(s,c,i);return l.top=fr(u.top,l.top),l.right=Fo(u.right,l.right),l.bottom=Fo(u.bottom,l.bottom),l.left=fr(u.left,l.left),l},ap(s,a,i));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function hg(s){var e=s.reference,t=s.element,i=s.placement,r=i?zi(i):null,n=i?hn(i):null,a=e.x+e.width/2-t.width/2,o=e.y+e.height/2-t.height/2,l;switch(r){case Vt:l={x:a,y:e.y-t.height};break;case hi:l={x:a,y:e.y+e.height};break;case ci:l={x:e.x+e.width,y:o};break;case Wt:l={x:e.x-t.width,y:o};break;default:l={x:e.x,y:e.y}}var c=r?Jc(r):null;if(c!=null){var u=c==="y"?"height":"width";switch(n){case an:l[c]=l[c]-(e[u]/2-t[u]/2);break;case ia:l[c]=l[c]+(e[u]/2-t[u]/2);break}}return l}function sa(s,e){e===void 0&&(e={});var t=e,i=t.placement,r=i===void 0?s.placement:i,n=t.strategy,a=n===void 0?s.strategy:n,o=t.boundary,l=o===void 0?RE:o,c=t.rootBoundary,u=c===void 0?eg:c,h=t.elementContext,d=h===void 0?Mn:h,p=t.altBoundary,m=p===void 0?!1:p,f=t.padding,g=f===void 0?0:f,y=ag(typeof g!="number"?g:og(g,pa)),b=d===Mn?LE:Mn,A=s.rects.popper,v=s.elements[m?b:d],_=u_(Ar(v)?v:v.contextElement||Vs(s.elements.popper),l,u,a),C=ln(s.elements.reference),B=hg({reference:C,element:A,strategy:"absolute",placement:r}),P=vc(Object.assign({},A,B)),M=d===Mn?P:C,U={top:_.top-M.top+y.top,bottom:M.bottom-_.bottom+y.bottom,left:_.left-M.left+y.left,right:M.right-_.right+y.right},F=s.modifiersData.offset;if(d===Mn&&F){var T=F[r];Object.keys(U).forEach(function(S){var x=[ci,hi].indexOf(S)>=0?1:-1,L=[Vt,hi].indexOf(S)>=0?"y":"x";U[S]+=T[L]*x})}return U}function p_(s,e){e===void 0&&(e={});var t=e,i=t.placement,r=t.boundary,n=t.rootBoundary,a=t.padding,o=t.flipVariations,l=t.allowedAutoPlacements,c=l===void 0?tg:l,u=hn(i),h=u?o?ip:ip.filter(function(m){return hn(m)===u}):pa,d=h.filter(function(m){return c.indexOf(m)>=0});d.length===0&&(d=h);var p=d.reduce(function(m,f){return m[f]=sa(s,{placement:f,boundary:r,rootBoundary:n,padding:a})[zi(f)],m},{});return Object.keys(p).sort(function(m,f){return p[m]-p[f]})}function f_(s){if(zi(s)===Kc)return[];var e=mo(s);return[np(s),e,np(e)]}function m_(s){var e=s.state,t=s.options,i=s.name;if(!e.modifiersData[i]._skip){for(var r=t.mainAxis,n=r===void 0?!0:r,a=t.altAxis,o=a===void 0?!0:a,l=t.fallbackPlacements,c=t.padding,u=t.boundary,h=t.rootBoundary,d=t.altBoundary,p=t.flipVariations,m=p===void 0?!0:p,f=t.allowedAutoPlacements,g=e.options.placement,y=zi(g),b=y===g,A=l||(b||!m?[mo(g)]:f_(g)),v=[g].concat(A).reduce(function(Z,Q){return Z.concat(zi(Q)===Kc?p_(e,{placement:Q,boundary:u,rootBoundary:h,padding:c,flipVariations:m,allowedAutoPlacements:f}):Q)},[]),_=e.rects.reference,C=e.rects.popper,B=new Map,P=!0,M=v[0],U=0;U=0,L=x?"width":"height",Y=sa(e,{placement:F,boundary:u,rootBoundary:h,altBoundary:d,padding:c}),R=x?S?ci:Wt:S?hi:Vt;_[L]>C[L]&&(R=mo(R));var D=mo(R),W=[];if(n&&W.push(Y[T]<=0),o&&W.push(Y[R]<=0,Y[D]<=0),W.every(function(Z){return Z})){M=F,P=!1;break}B.set(F,W)}if(P)for(var H=m?3:1,O=function(Q){var ge=v.find(function(Te){var he=B.get(Te);if(he)return he.slice(0,Q).every(function(pe){return pe})});if(ge)return M=ge,"break"},N=H;N>0;N--){var ee=O(N);if(ee==="break")break}e.placement!==M&&(e.modifiersData[i]._skip=!0,e.placement=M,e.reset=!0)}}const g_={name:"flip",enabled:!0,phase:"main",fn:m_,requiresIfExists:["offset"],data:{_skip:!1}};function op(s,e,t){return t===void 0&&(t={x:0,y:0}),{top:s.top-e.height-t.y,right:s.right-e.width+t.x,bottom:s.bottom-e.height+t.y,left:s.left-e.width-t.x}}function lp(s){return[Vt,ci,hi,Wt].some(function(e){return s[e]>=0})}function y_(s){var e=s.state,t=s.name,i=e.rects.reference,r=e.rects.popper,n=e.modifiersData.preventOverflow,a=sa(e,{elementContext:"reference"}),o=sa(e,{altBoundary:!0}),l=op(a,i),c=op(o,r,n),u=lp(l),h=lp(c);e.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:h},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":h})}const v_={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:y_};function A_(s,e,t){var i=zi(s),r=[Wt,Vt].indexOf(i)>=0?-1:1,n=typeof t=="function"?t(Object.assign({},e,{placement:s})):t,a=n[0],o=n[1];return a=a||0,o=(o||0)*r,[Wt,ci].indexOf(i)>=0?{x:o,y:a}:{x:a,y:o}}function b_(s){var e=s.state,t=s.options,i=s.name,r=t.offset,n=r===void 0?[0,0]:r,a=tg.reduce(function(u,h){return u[h]=A_(h,e.rects,n),u},{}),o=a[e.placement],l=o.x,c=o.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=a}const w_={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:b_};function x_(s){var e=s.state,t=s.name;e.modifiersData[t]=hg({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const E_={name:"popperOffsets",enabled:!0,phase:"read",fn:x_,data:{}};function __(s){return s==="x"?"y":"x"}function T_(s){var e=s.state,t=s.options,i=s.name,r=t.mainAxis,n=r===void 0?!0:r,a=t.altAxis,o=a===void 0?!1:a,l=t.boundary,c=t.rootBoundary,u=t.altBoundary,h=t.padding,d=t.tether,p=d===void 0?!0:d,m=t.tetherOffset,f=m===void 0?0:m,g=sa(e,{boundary:l,rootBoundary:c,padding:h,altBoundary:u}),y=zi(e.placement),b=hn(e.placement),A=!b,v=Jc(y),_=__(v),C=e.modifiersData.popperOffsets,B=e.rects.reference,P=e.rects.popper,M=typeof f=="function"?f(Object.assign({},e.rects,{placement:e.placement})):f,U=typeof M=="number"?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),F=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,T={x:0,y:0};if(C){if(n){var S,x=v==="y"?Vt:Wt,L=v==="y"?hi:ci,Y=v==="y"?"height":"width",R=C[v],D=R+g[x],W=R-g[L],H=p?-P[Y]/2:0,O=b===an?B[Y]:P[Y],N=b===an?-P[Y]:-B[Y],ee=e.elements.arrow,Z=p&&ee?Qc(ee):{width:0,height:0},Q=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:ng(),ge=Q[x],Te=Q[L],he=Kn(0,B[Y],Z[Y]),pe=A?B[Y]/2-H-he-ge-U.mainAxis:O-he-ge-U.mainAxis,Ae=A?-B[Y]/2+H+he+Te+U.mainAxis:N+he+Te+U.mainAxis,oe=e.elements.arrow&&fa(e.elements.arrow),ue=oe?v==="y"?oe.clientTop||0:oe.clientLeft||0:0,ve=(S=F?.[v])!=null?S:0,E=R+pe-ve-ue,j=R+Ae-ve,z=Kn(p?Fo(D,E):D,R,p?fr(W,j):W);C[v]=z,T[v]=z-R}if(o){var I,k=v==="x"?Vt:Wt,G=v==="x"?hi:ci,J=C[_],$=_==="y"?"height":"width",V=J+g[k],ie=J-g[G],le=[Vt,Wt].indexOf(y)!==-1,re=(I=F?.[_])!=null?I:0,be=le?V:J-B[$]-P[$]-re+U.altAxis,je=le?J+B[$]+P[$]-re-U.altAxis:ie,De=p&&le?qE(be,J,je):Kn(p?be:V,J,p?je:ie);C[_]=De,T[_]=De-J}e.modifiersData[i]=T}}const S_={name:"preventOverflow",enabled:!0,phase:"main",fn:T_,requiresIfExists:["offset"]};function C_(s){return{scrollLeft:s.scrollLeft,scrollTop:s.scrollTop}}function M_(s){return s===qt(s)||!li(s)?Zc(s):C_(s)}function k_(s){var e=s.getBoundingClientRect(),t=on(e.width)/s.offsetWidth||1,i=on(e.height)/s.offsetHeight||1;return t!==1||i!==1}function B_(s,e,t){t===void 0&&(t=!1);var i=li(e),r=li(e)&&k_(e),n=Vs(e),a=ln(s,r,t),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(i||!i&&!t)&&((Ki(e)!=="body"||ed(n))&&(o=M_(e)),li(e)?(l=ln(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):n&&(l.x=$c(n))),{x:a.left+o.scrollLeft-l.x,y:a.top+o.scrollTop-l.y,width:a.width,height:a.height}}function I_(s){var e=new Map,t=new Set,i=[];s.forEach(function(n){e.set(n.name,n)});function r(n){t.add(n.name);var a=[].concat(n.requires||[],n.requiresIfExists||[]);a.forEach(function(o){if(!t.has(o)){var l=e.get(o);l&&r(l)}}),i.push(n)}return s.forEach(function(n){t.has(n.name)||r(n)}),i}function P_(s){var e=I_(s);return zE.reduce(function(t,i){return t.concat(e.filter(function(r){return r.phase===i}))},[])}function R_(s){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(s())})})),e}}function L_(s){var e=s.reduce(function(t,i){var r=t[i.name];return t[i.name]=r?Object.assign({},r,i,{options:Object.assign({},r.options,i.options),data:Object.assign({},r.data,i.data)}):i,t},{});return Object.keys(e).map(function(t){return e[t]})}var hp={placement:"bottom",modifiers:[],strategy:"absolute"};function cp(){for(var s=arguments.length,e=new Array(s),t=0;t-1}function fg(s,e){return typeof s=="function"?s.apply(void 0,e):s}function dp(s,e){if(e===0)return s;var t;return function(i){clearTimeout(t),t=setTimeout(function(){s(i)},e)}}function G_(s){return s.split(/\s+/).filter(Boolean)}function Gr(s){return[].concat(s)}function up(s,e){s.indexOf(e)===-1&&s.push(e)}function H_(s){return s.filter(function(e,t){return s.indexOf(e)===t})}function V_(s){return s.split("-")[0]}function No(s){return[].slice.call(s)}function pp(s){return Object.keys(s).reduce(function(e,t){return s[t]!==void 0&&(e[t]=s[t]),e},{})}function Qn(){return document.createElement("div")}function sl(s){return["Element","Fragment"].some(function(e){return td(s,e)})}function W_(s){return td(s,"NodeList")}function z_(s){return td(s,"MouseEvent")}function Y_(s){return!!(s&&s._tippy&&s._tippy.reference===s)}function j_(s){return sl(s)?[s]:W_(s)?No(s):Array.isArray(s)?s:No(document.querySelectorAll(s))}function sh(s,e){s.forEach(function(t){t&&(t.style.transitionDuration=e+"ms")})}function fp(s,e){s.forEach(function(t){t&&t.setAttribute("data-state",e)})}function X_(s){var e,t=Gr(s),i=t[0];return i!=null&&(e=i.ownerDocument)!=null&&e.body?i.ownerDocument:document}function K_(s,e){var t=e.clientX,i=e.clientY;return s.every(function(r){var n=r.popperRect,a=r.popperState,o=r.props,l=o.interactiveBorder,c=V_(a.placement),u=a.modifiersData.offset;if(!u)return!0;var h=c==="bottom"?u.top.y:0,d=c==="top"?u.bottom.y:0,p=c==="right"?u.left.x:0,m=c==="left"?u.right.x:0,f=n.top-i+h>l,g=i-n.bottom-d>l,y=n.left-t+p>l,b=t-n.right-m>l;return f||g||y||b})}function rh(s,e,t){var i=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(r){s[i](r,t)})}function mp(s,e){for(var t=e;t;){var i;if(s.contains(t))return!0;t=t.getRootNode==null||(i=t.getRootNode())==null?void 0:i.host}return!1}var Ui={isTouch:!1},gp=0;function q_(){Ui.isTouch||(Ui.isTouch=!0,window.performance&&document.addEventListener("mousemove",mg))}function mg(){var s=performance.now();s-gp<20&&(Ui.isTouch=!1,document.removeEventListener("mousemove",mg)),gp=s}function Q_(){var s=document.activeElement;if(Y_(s)){var e=s._tippy;s.blur&&!e.state.isVisible&&s.blur()}}function J_(){document.addEventListener("touchstart",q_,er),window.addEventListener("blur",Q_)}var Z_=typeof window<"u"&&typeof document<"u",$_=Z_?!!window.msCrypto:!1,e1={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},t1={allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999},bi=Object.assign({appendTo:pg,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},e1,t1),i1=Object.keys(bi),s1=function(e){var t=Object.keys(e);t.forEach(function(i){bi[i]=e[i]})};function gg(s){var e=s.plugins||[],t=e.reduce(function(i,r){var n=r.name,a=r.defaultValue;if(n){var o;i[n]=s[n]!==void 0?s[n]:(o=bi[n])!=null?o:a}return i},{});return Object.assign({},s,t)}function r1(s,e){var t=e?Object.keys(gg(Object.assign({},bi,{plugins:e}))):i1,i=t.reduce(function(r,n){var a=(s.getAttribute("data-tippy-"+n)||"").trim();if(!a)return r;if(n==="content")r[n]=a;else try{r[n]=JSON.parse(a)}catch{r[n]=a}return r},{});return i}function yp(s,e){var t=Object.assign({},e,{content:fg(e.content,[s])},e.ignoreAttributes?{}:r1(s,e.plugins));return t.aria=Object.assign({},bi.aria,t.aria),t.aria={expanded:t.aria.expanded==="auto"?e.interactive:t.aria.expanded,content:t.aria.content==="auto"?e.interactive?null:"describedby":t.aria.content},t}var n1=function(){return"innerHTML"};function Ac(s,e){s[n1()]=e}function vp(s){var e=Qn();return s===!0?e.className=dg:(e.className=ug,sl(s)?e.appendChild(s):Ac(e,s)),e}function Ap(s,e){sl(e.content)?(Ac(s,""),s.appendChild(e.content)):typeof e.content!="function"&&(e.allowHTML?Ac(s,e.content):s.textContent=e.content)}function bc(s){var e=s.firstElementChild,t=No(e.children);return{box:e,content:t.find(function(i){return i.classList.contains(cg)}),arrow:t.find(function(i){return i.classList.contains(dg)||i.classList.contains(ug)}),backdrop:t.find(function(i){return i.classList.contains(U_)})}}function yg(s){var e=Qn(),t=Qn();t.className=N_,t.setAttribute("data-state","hidden"),t.setAttribute("tabindex","-1");var i=Qn();i.className=cg,i.setAttribute("data-state","hidden"),Ap(i,s.props),e.appendChild(t),t.appendChild(i),r(s.props,s.props);function r(n,a){var o=bc(e),l=o.box,c=o.content,u=o.arrow;a.theme?l.setAttribute("data-theme",a.theme):l.removeAttribute("data-theme"),typeof a.animation=="string"?l.setAttribute("data-animation",a.animation):l.removeAttribute("data-animation"),a.inertia?l.setAttribute("data-inertia",""):l.removeAttribute("data-inertia"),l.style.maxWidth=typeof a.maxWidth=="number"?a.maxWidth+"px":a.maxWidth,a.role?l.setAttribute("role",a.role):l.removeAttribute("role"),(n.content!==a.content||n.allowHTML!==a.allowHTML)&&Ap(c,s.props),a.arrow?u?n.arrow!==a.arrow&&(l.removeChild(u),l.appendChild(vp(a.arrow))):l.appendChild(vp(a.arrow)):u&&l.removeChild(u)}return{popper:e,onUpdate:r}}yg.$$tippy=!0;var a1=1,ja=[],nh=[];function o1(s,e){var t=yp(s,Object.assign({},bi,gg(pp(e)))),i,r,n,a=!1,o=!1,l=!1,c=!1,u,h,d,p=[],m=dp(E,t.interactiveDebounce),f,g=a1++,y=null,b=H_(t.plugins),A={isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},v={id:g,reference:s,popper:Qn(),popperInstance:y,props:t,state:A,plugins:b,clearDelayTimeouts:be,setProps:je,setContent:De,show:Ft,hide:zs,hideWithInteractivity:Qt,enable:le,disable:re,unmount:Ys,destroy:rt};if(!t.render)return v;var _=t.render(v),C=_.popper,B=_.onUpdate;C.setAttribute("data-tippy-root",""),C.id="tippy-"+v.id,v.popper=C,s._tippy=v,C._tippy=v;var P=b.map(function(K){return K.fn(v)}),M=s.hasAttribute("aria-expanded");return oe(),H(),R(),D("onCreate",[v]),t.showOnCreate&&V(),C.addEventListener("mouseenter",function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()}),C.addEventListener("mouseleave",function(){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&x().addEventListener("mousemove",m)}),v;function U(){var K=v.props.touch;return Array.isArray(K)?K:[K,0]}function F(){return U()[0]==="hold"}function T(){var K;return!!((K=v.props.render)!=null&&K.$$tippy)}function S(){return f||s}function x(){var K=S().parentNode;return K?X_(K):document}function L(){return bc(C)}function Y(K){return v.state.isMounted&&!v.state.isVisible||Ui.isTouch||u&&u.type==="focus"?0:ih(v.props.delay,K?0:1,bi.delay)}function R(K){K===void 0&&(K=!1),C.style.pointerEvents=v.props.interactive&&!K?"":"none",C.style.zIndex=""+v.props.zIndex}function D(K,fe,xe){if(xe===void 0&&(xe=!0),P.forEach(function(Ge){Ge[K]&&Ge[K].apply(Ge,fe)}),xe){var Ye;(Ye=v.props)[K].apply(Ye,fe)}}function W(){var K=v.props.aria;if(K.content){var fe="aria-"+K.content,xe=C.id,Ye=Gr(v.props.triggerTarget||s);Ye.forEach(function(Ge){var _t=Ge.getAttribute(fe);if(v.state.isVisible)Ge.setAttribute(fe,_t?_t+" "+xe:xe);else{var Nt=_t&&_t.replace(xe,"").trim();Nt?Ge.setAttribute(fe,Nt):Ge.removeAttribute(fe)}})}}function H(){if(!(M||!v.props.aria.expanded)){var K=Gr(v.props.triggerTarget||s);K.forEach(function(fe){v.props.interactive?fe.setAttribute("aria-expanded",v.state.isVisible&&fe===S()?"true":"false"):fe.removeAttribute("aria-expanded")})}}function O(){x().removeEventListener("mousemove",m),ja=ja.filter(function(K){return K!==m})}function N(K){if(!(Ui.isTouch&&(l||K.type==="mousedown"))){var fe=K.composedPath&&K.composedPath()[0]||K.target;if(!(v.props.interactive&&mp(C,fe))){if(Gr(v.props.triggerTarget||s).some(function(xe){return mp(xe,fe)})){if(Ui.isTouch||v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else D("onClickOutside",[v,K]);v.props.hideOnClick===!0&&(v.clearDelayTimeouts(),v.hide(),o=!0,setTimeout(function(){o=!1}),v.state.isMounted||ge())}}}function ee(){l=!0}function Z(){l=!1}function Q(){var K=x();K.addEventListener("mousedown",N,!0),K.addEventListener("touchend",N,er),K.addEventListener("touchstart",Z,er),K.addEventListener("touchmove",ee,er)}function ge(){var K=x();K.removeEventListener("mousedown",N,!0),K.removeEventListener("touchend",N,er),K.removeEventListener("touchstart",Z,er),K.removeEventListener("touchmove",ee,er)}function Te(K,fe){pe(K,function(){!v.state.isVisible&&C.parentNode&&C.parentNode.contains(C)&&fe()})}function he(K,fe){pe(K,fe)}function pe(K,fe){var xe=L().box;function Ye(Ge){Ge.target===xe&&(rh(xe,"remove",Ye),fe())}if(K===0)return fe();rh(xe,"remove",h),rh(xe,"add",Ye),h=Ye}function Ae(K,fe,xe){xe===void 0&&(xe=!1);var Ye=Gr(v.props.triggerTarget||s);Ye.forEach(function(Ge){Ge.addEventListener(K,fe,xe),p.push({node:Ge,eventType:K,handler:fe,options:xe})})}function oe(){F()&&(Ae("touchstart",ve,{passive:!0}),Ae("touchend",j,{passive:!0})),G_(v.props.trigger).forEach(function(K){if(K!=="manual")switch(Ae(K,ve),K){case"mouseenter":Ae("mouseleave",j);break;case"focus":Ae($_?"focusout":"blur",z);break;case"focusin":Ae("focusout",z);break}})}function ue(){p.forEach(function(K){var fe=K.node,xe=K.eventType,Ye=K.handler,Ge=K.options;fe.removeEventListener(xe,Ye,Ge)}),p=[]}function ve(K){var fe,xe=!1;if(!(!v.state.isEnabled||I(K)||o)){var Ye=((fe=u)==null?void 0:fe.type)==="focus";u=K,f=K.currentTarget,H(),!v.state.isVisible&&z_(K)&&ja.forEach(function(Ge){return Ge(K)}),K.type==="click"&&(v.props.trigger.indexOf("mouseenter")<0||a)&&v.props.hideOnClick!==!1&&v.state.isVisible?xe=!0:V(K),K.type==="click"&&(a=!xe),xe&&!Ye&&ie(K)}}function E(K){var fe=K.target,xe=S().contains(fe)||C.contains(fe);if(!(K.type==="mousemove"&&xe)){var Ye=$().concat(C).map(function(Ge){var _t,Nt=Ge._tippy,Qi=(_t=Nt.popperInstance)==null?void 0:_t.state;return Qi?{popperRect:Ge.getBoundingClientRect(),popperState:Qi,props:t}:null}).filter(Boolean);K_(Ye,K)&&(O(),ie(K))}}function j(K){var fe=I(K)||v.props.trigger.indexOf("click")>=0&&a;if(!fe){if(v.props.interactive){v.hideWithInteractivity(K);return}ie(K)}}function z(K){v.props.trigger.indexOf("focusin")<0&&K.target!==S()||v.props.interactive&&K.relatedTarget&&C.contains(K.relatedTarget)||ie(K)}function I(K){return Ui.isTouch?F()!==K.type.indexOf("touch")>=0:!1}function k(){G();var K=v.props,fe=K.popperOptions,xe=K.placement,Ye=K.offset,Ge=K.getReferenceClientRect,_t=K.moveTransition,Nt=T()?bc(C).arrow:null,Qi=Ge?{getBoundingClientRect:Ge,contextElement:Ge.contextElement||S()}:s,gs={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(ya){var Er=ya.state;if(T()){var ny=L(),ml=ny.box;["placement","reference-hidden","escaped"].forEach(function(va){va==="placement"?ml.setAttribute("data-placement",Er.placement):Er.attributes.popper["data-popper-"+va]?ml.setAttribute("data-"+va,""):ml.removeAttribute("data-"+va)}),Er.attributes.popper={}}}},Jt=[{name:"offset",options:{offset:Ye}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!_t}},gs];T()&&Nt&&Jt.push({name:"arrow",options:{element:Nt,padding:3}}),Jt.push.apply(Jt,fe?.modifiers||[]),v.popperInstance=F_(Qi,C,Object.assign({},fe,{placement:xe,onFirstUpdate:d,modifiers:Jt}))}function G(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function J(){var K=v.props.appendTo,fe,xe=S();v.props.interactive&&K===pg||K==="parent"?fe=xe.parentNode:fe=fg(K,[xe]),fe.contains(C)||fe.appendChild(C),v.state.isMounted=!0,k()}function $(){return No(C.querySelectorAll("[data-tippy-root]"))}function V(K){v.clearDelayTimeouts(),K&&D("onTrigger",[v,K]),Q();var fe=Y(!0),xe=U(),Ye=xe[0],Ge=xe[1];Ui.isTouch&&Ye==="hold"&&Ge&&(fe=Ge),fe?i=setTimeout(function(){v.show()},fe):v.show()}function ie(K){if(v.clearDelayTimeouts(),D("onUntrigger",[v,K]),!v.state.isVisible){ge();return}if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(K.type)>=0&&a)){var fe=Y(!1);fe?r=setTimeout(function(){v.state.isVisible&&v.hide()},fe):n=requestAnimationFrame(function(){v.hide()})}}function le(){v.state.isEnabled=!0}function re(){v.hide(),v.state.isEnabled=!1}function be(){clearTimeout(i),clearTimeout(r),cancelAnimationFrame(n)}function je(K){if(!v.state.isDestroyed){D("onBeforeUpdate",[v,K]),ue();var fe=v.props,xe=yp(s,Object.assign({},fe,pp(K),{ignoreAttributes:!0}));v.props=xe,oe(),fe.interactiveDebounce!==xe.interactiveDebounce&&(O(),m=dp(E,xe.interactiveDebounce)),fe.triggerTarget&&!xe.triggerTarget?Gr(fe.triggerTarget).forEach(function(Ye){Ye.removeAttribute("aria-expanded")}):xe.triggerTarget&&s.removeAttribute("aria-expanded"),H(),R(),B&&B(fe,xe),v.popperInstance&&(k(),$().forEach(function(Ye){requestAnimationFrame(Ye._tippy.popperInstance.forceUpdate)})),D("onAfterUpdate",[v,K])}}function De(K){v.setProps({content:K})}function Ft(){var K=v.state.isVisible,fe=v.state.isDestroyed,xe=!v.state.isEnabled,Ye=Ui.isTouch&&!v.props.touch,Ge=ih(v.props.duration,0,bi.duration);if(!(K||fe||xe||Ye)&&!S().hasAttribute("disabled")&&(D("onShow",[v],!1),v.props.onShow(v)!==!1)){if(v.state.isVisible=!0,T()&&(C.style.visibility="visible"),R(),Q(),v.state.isMounted||(C.style.transition="none"),T()){var _t=L(),Nt=_t.box,Qi=_t.content;sh([Nt,Qi],0)}d=function(){var Jt;if(!(!v.state.isVisible||c)){if(c=!0,C.offsetHeight,C.style.transition=v.props.moveTransition,T()&&v.props.animation){var fl=L(),ya=fl.box,Er=fl.content;sh([ya,Er],Ge),fp([ya,Er],"visible")}W(),H(),up(nh,v),(Jt=v.popperInstance)==null||Jt.forceUpdate(),D("onMount",[v]),v.props.animation&&T()&&he(Ge,function(){v.state.isShown=!0,D("onShown",[v])})}},J()}}function zs(){var K=!v.state.isVisible,fe=v.state.isDestroyed,xe=!v.state.isEnabled,Ye=ih(v.props.duration,1,bi.duration);if(!(K||fe||xe)&&(D("onHide",[v],!1),v.props.onHide(v)!==!1)){if(v.state.isVisible=!1,v.state.isShown=!1,c=!1,a=!1,T()&&(C.style.visibility="hidden"),O(),ge(),R(!0),T()){var Ge=L(),_t=Ge.box,Nt=Ge.content;v.props.animation&&(sh([_t,Nt],Ye),fp([_t,Nt],"hidden"))}W(),H(),v.props.animation?T()&&Te(Ye,v.unmount):v.unmount()}}function Qt(K){x().addEventListener("mousemove",m),up(ja,m),m(K)}function Ys(){v.state.isVisible&&v.hide(),v.state.isMounted&&(G(),$().forEach(function(K){K._tippy.unmount()}),C.parentNode&&C.parentNode.removeChild(C),nh=nh.filter(function(K){return K!==v}),v.state.isMounted=!1,D("onHidden",[v]))}function rt(){v.state.isDestroyed||(v.clearDelayTimeouts(),v.unmount(),ue(),delete s._tippy,v.state.isDestroyed=!0,D("onDestroy",[v]))}}function zt(s,e){e===void 0&&(e={});var t=bi.plugins.concat(e.plugins||[]);J_();var i=Object.assign({},e,{plugins:t}),r=j_(s),n=r.reduce(function(a,o){var l=o&&o1(o,i);return l&&a.push(l),a},[]);return sl(s)?n[0]:n}zt.defaultProps=bi;zt.setDefaultProps=s1;zt.currentInput=Ui;Object.assign({},ig,{effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow)}});zt.setDefaultProps({render:yg});const l1="modulepreload",h1=function(s){return"/smeditor/"+s},bp={},qe=function(e,t,i){if(!t||t.length===0)return e();const r=document.getElementsByTagName("link");return Promise.all(t.map(n=>{if(n=h1(n),n in bp)return;bp[n]=!0;const a=n.endsWith(".css"),o=a?'[rel="stylesheet"]':"";if(!!i)for(let u=r.length-1;u>=0;u--){const h=r[u];if(h.href===n&&(!a||h.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${n}"]${o}`))return;const c=document.createElement("link");if(c.rel=a?"stylesheet":l1,a||(c.as="script",c.crossOrigin=""),c.href=n,document.head.appendChild(c),a)return new Promise((u,h)=>{c.addEventListener("load",u),c.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${n}`)))})})).then(()=>e()).catch(n=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=n,window.dispatchEvent(a),!a.defaultPrevented)throw n})},Uo={INVALID:["seeking position failed.","InvalidStateError"],GONE:["A requested file or directory could not be found at the time an operation was processed.","NotFoundError"],MISMATCH:["The path supplied exists, but was not an entry of requested type.","TypeMismatchError"],MOD_ERR:["The object can not be modified in this way.","InvalidModificationError"],SYNTAX:s=>[`Failed to execute 'write' on 'UnderlyingSinkBase': Invalid params passed. ${s}`,"SyntaxError"],ABORT:["The operation was aborted","AbortError"],SECURITY:["It was determined that certain files are unsafe for access within a Web application, or that too many calls are being made on file resources.","SecurityError"],DISALLOWED:["The request is not allowed by the user agent or the platform in the current context.","NotAllowedError"]},c1=s=>typeof s=="object"&&typeof s.type<"u";async function d1(s){var e,t,i;const{FolderHandle:r,FileHandle:n}=await qe(()=>import("./memory-822a1ac5.js"),[]),{FileSystemDirectoryHandle:a}=await qe(()=>Promise.resolve().then(()=>xT),void 0),o=(t=(e=s[0].webkitRelativePath)===null||e===void 0?void 0:e.split("/",1)[0])!==null&&t!==void 0?t:"",l=new r(o,!1);for(let c=0;c(m._entries[f]||(m._entries[f]=new r(f,!1)),m._entries[f]),l);p._entries[d]=new n(u.name,u,!1)}return new a(l)}async function u1(s){const{FileHandle:e}=await qe(()=>import("./memory-822a1ac5.js"),[]),{FileSystemFileHandle:t}=await qe(()=>Promise.resolve().then(()=>Rg),void 0);return Array.from(s).map(r=>new t(new e(r.name,r,!1)))}const vg=Object.freeze(Object.defineProperty({__proto__:null,errors:Uo,isChunkObject:c1,makeDirHandleFromFileList:d1,makeFileHandlesFromFileList:u1},Symbol.toStringTag,{value:"Module"}));var hr={};/*! howler.js v2.2.4 | (c) 2013-2020, James Simpson of GoldFire Studios | MIT License | howlerjs.com */(function(s){(function(){var e=function(){this.init()};e.prototype={init:function(){var h=this||t;return h._counter=1e3,h._html5AudioPool=[],h.html5PoolSize=10,h._codecs={},h._howls=[],h._muted=!1,h._volume=1,h._canPlayEvent="canplaythrough",h._navigator=typeof window<"u"&&window.navigator?window.navigator:null,h.masterGain=null,h.noAudio=!1,h.usingWebAudio=!0,h.autoSuspend=!0,h.ctx=null,h.autoUnlock=!0,h._setup(),h},volume:function(h){var d=this||t;if(h=parseFloat(h),d.ctx||u(),h!==void 0&&h>=0&&h<=1){if(d._volume=h,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(h,t.ctx.currentTime);for(var p=0;p=0;d--)h._howls[d].unload();return h.usingWebAudio&&h.ctx&&h.ctx.close!==void 0&&(h.ctx.close(),h.ctx=null,u()),h},codecs:function(h){return(this||t)._codecs[h.replace(/^x-/,"")]},_setup:function(){var h=this||t;if(h.state=h.ctx&&h.ctx.state||"suspended",h._autoSuspend(),!h.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;d.oncanplaythrough===void 0&&(h._canPlayEvent="canplay")}catch{h.noAudio=!0}else h.noAudio=!0;try{var d=new Audio;d.muted&&(h.noAudio=!0)}catch{}return h.noAudio||h._setupCodecs(),h},_setupCodecs:function(){var h=this||t,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return h}if(!d||typeof d.canPlayType!="function")return h;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),m=h._navigator?h._navigator.userAgent:"",f=m.match(/OPR\/(\d+)/g),g=f&&parseInt(f[0].split("/")[1],10)<33,y=m.indexOf("Safari")!==-1&&m.indexOf("Chrome")===-1,b=m.match(/Version\/(.*?) /),A=y&&b&&parseInt(b[1],10)<15;return h._codecs={mp3:!(g||!p&&!d.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(A||!d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(A||!d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},h},_unlockAudio:function(){var h=this||t;if(!h._audioUnlocked&&h.ctx){h._audioUnlocked=!1,h.autoUnlock=!1,h._mobileUnloaded||h.ctx.sampleRate===44100||(h._mobileUnloaded=!0,h.unload()),h._scratchBuffer=h.ctx.createBuffer(1,1,22050);var d=function(p){for(;h._html5AudioPool.length0?y._seek:p._sprite[h][0]/1e3),v=Math.max(0,(p._sprite[h][0]+p._sprite[h][1])/1e3-A),_=1e3*v/Math.abs(y._rate),C=p._sprite[h][0]/1e3,B=(p._sprite[h][0]+p._sprite[h][1])/1e3;y._sprite=h,y._ended=!1;var P=function(){y._paused=!1,y._seek=A,y._start=C,y._stop=B,y._loop=!(!y._loop&&!p._sprite[h][2])};if(A>=B)return void p._ended(y);var M=y._node;if(p._webAudio){var U=function(){p._playLock=!1,P(),p._refreshBuffer(y);var x=y._muted||p._muted?0:y._volume;M.gain.setValueAtTime(x,t.ctx.currentTime),y._playStart=t.ctx.currentTime,M.bufferSource.start===void 0?y._loop?M.bufferSource.noteGrainOn(0,A,86400):M.bufferSource.noteGrainOn(0,A,v):y._loop?M.bufferSource.start(0,A,86400):M.bufferSource.start(0,A,v),_!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),_)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?U():(p._playLock=!0,p.once("resume",U),p._clearTimer(y._id))}else{var F=function(){M.currentTime=A,M.muted=y._muted||p._muted||t._muted||M.muted,M.volume=y._volume*t.volume(),M.playbackRate=y._rate;try{var x=M.play();if(x&&typeof Promise<"u"&&(x instanceof Promise||typeof x.then=="function")?(p._playLock=!0,P(),x.then(function(){p._playLock=!1,M._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,P(),p._emit("play",y._id)),M.playbackRate=y._rate,M.paused)return void p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");h!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),_):(p._endTimers[y._id]=function(){p._ended(y),M.removeEventListener("ended",p._endTimers[y._id],!1)},M.addEventListener("ended",p._endTimers[y._id],!1))}catch(L){p._emit("playerror",y._id,L)}};M.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(M.src=p._src,M.load());var T=window&&window.ejecta||!M.readyState&&t._navigator.isCocoonJS;if(M.readyState>=3||T)F();else{p._playLock=!0,p._state="loading";var S=function(){p._state="loaded",F(),M.removeEventListener(t._canPlayEvent,S,!1)};M.addEventListener(t._canPlayEvent,S,!1),p._clearTimer(y._id)}}return y._id},pause:function(h){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(h)}}),d;for(var p=d._getSoundIds(h),m=0;m=0?d=parseInt(m[0],10):h=parseFloat(m[0]):m.length>=2&&(h=parseFloat(m[0]),d=parseInt(m[1],10));var f;if(!(h!==void 0&&h>=0&&h<=1))return f=d?p._soundById(d):p._sounds[0],f?f._volume:0;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"volume",action:function(){p.volume.apply(p,m)}}),p;d===void 0&&(p._volume=h),d=p._getSoundIds(d);for(var g=0;g0?m/v:m),C=Date.now();h._fadeTo=p,h._interval=setInterval(function(){var B=(Date.now()-C)/m;C=Date.now(),b+=A*B,b=Math.round(100*b)/100,b=A<0?Math.max(p,b):Math.min(p,b),y._webAudio?h._volume=b:y.volume(b,h._id,!0),g&&(y._volume=b),(pd&&b>=p)&&(clearInterval(h._interval),h._interval=null,h._fadeTo=null,y.volume(p,h._id),y._emit("fade",h._id))},_)},_stopFade:function(h){var d=this,p=d._soundById(h);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,h),p._fadeTo=null,d._emit("fade",h)),d},loop:function(){var h,d,p,m=this,f=arguments;if(f.length===0)return m._loop;if(f.length===1){if(typeof f[0]!="boolean")return!!(p=m._soundById(parseInt(f[0],10)))&&p._loop;h=f[0],m._loop=h}else f.length===2&&(h=f[0],d=parseInt(f[1],10));for(var g=m._getSoundIds(d),y=0;y=0?d=parseInt(m[0],10):h=parseFloat(m[0])}else m.length===2&&(h=parseFloat(m[0]),d=parseInt(m[1],10));var y;if(typeof h!="number")return y=p._soundById(d),y?y._rate:p._rate;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"rate",action:function(){p.rate.apply(p,m)}}),p;d===void 0&&(p._rate=h),d=p._getSoundIds(d);for(var b=0;b=0?d=parseInt(m[0],10):p._sounds.length&&(d=p._sounds[0]._id,h=parseFloat(m[0]))}else m.length===2&&(h=parseFloat(m[0]),d=parseInt(m[1],10));if(d===void 0)return 0;if(typeof h=="number"&&(p._state!=="loaded"||p._playLock))return p._queue.push({event:"seek",action:function(){p.seek.apply(p,m)}}),p;var y=p._soundById(d);if(y){if(!(typeof h=="number"&&h>=0)){if(p._webAudio){var b=p.playing(d)?t.ctx.currentTime-y._playStart:0,A=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(A+b*Math.abs(y._rate))}return y._node.currentTime}var v=p.playing(d);v&&p.pause(d,!0),y._seek=h,y._ended=!1,p._clearTimer(d),p._webAudio||!y._node||isNaN(y._node.duration)||(y._node.currentTime=h);var _=function(){v&&p.play(d,!0),p._emit("seek",d)};if(v&&!p._webAudio){var C=function(){p._playLock?setTimeout(C,0):_()};setTimeout(C,0)}else _()}return p},playing:function(h){var d=this;if(typeof h=="number"){var p=d._soundById(h);return!!p&&!p._paused}for(var m=0;m=0&&t._howls.splice(m,1);var f=!0;for(p=0;p=0){f=!1;break}return n&&f&&delete n[h._src],t.noAudio=!1,h._state="unloaded",h._sounds=[],h=null,null},on:function(h,d,p,m){var f=this,g=f["_on"+h];return typeof d=="function"&&g.push(m?{id:p,fn:d,once:m}:{id:p,fn:d}),f},off:function(h,d,p){var m=this,f=m["_on"+h],g=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(g=0;g=0;g--)f[g].id&&f[g].id!==d&&h!=="load"||(setTimeout(function(y){y.call(this,d,p)}.bind(m,f[g].fn),0),f[g].once&&m.off(h,f[g].fn,f[g].id));return m._loadQueue(h),m},_loadQueue:function(h){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===h&&(d._queue.shift(),d._loadQueue()),h||p.action()}return d},_ended:function(h){var d=this,p=h._sprite;if(!d._webAudio&&h._node&&!h._node.paused&&!h._node.ended&&h._node.currentTime=0;m--){if(p<=d)return;h._sounds[m]._ended&&(h._webAudio&&h._sounds[m]._node&&h._sounds[m]._node.disconnect(0),h._sounds.splice(m,1),p--)}}},_getSoundIds:function(h){var d=this;if(h===void 0){for(var p=[],m=0;m=0;if(!h.bufferSource)return d;if(t._scratchBuffer&&h.bufferSource&&(h.bufferSource.onended=null,h.bufferSource.disconnect(0),p))try{h.bufferSource.buffer=t._scratchBuffer}catch{}return h.bufferSource=null,d},_clearSound:function(h){/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent)||(h.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(h){this._parent=h,this.init()};r.prototype={init:function(){var h=this,d=h._parent;return h._muted=d._muted,h._loop=d._loop,h._volume=d._volume,h._rate=d._rate,h._seek=0,h._paused=!0,h._ended=!0,h._sprite="__default",h._id=++t._counter,d._sounds.push(h),h.create(),h},create:function(){var h=this,d=h._parent,p=t._muted||h._muted||h._parent._muted?0:h._volume;return d._webAudio?(h._node=t.ctx.createGain===void 0?t.ctx.createGainNode():t.ctx.createGain(),h._node.gain.setValueAtTime(p,t.ctx.currentTime),h._node.paused=!0,h._node.connect(t.masterGain)):t.noAudio||(h._node=t._obtainHtml5Audio(),h._errorFn=h._errorListener.bind(h),h._node.addEventListener("error",h._errorFn,!1),h._loadFn=h._loadListener.bind(h),h._node.addEventListener(t._canPlayEvent,h._loadFn,!1),h._endFn=h._endListener.bind(h),h._node.addEventListener("ended",h._endFn,!1),h._node.src=d._src,h._node.preload=d._preload===!0?"auto":d._preload,h._node.volume=p*t.volume(),h._node.load()),h},reset:function(){var h=this,d=h._parent;return h._muted=d._muted,h._loop=d._loop,h._volume=d._volume,h._rate=d._rate,h._seek=0,h._rateSeek=0,h._paused=!0,h._ended=!0,h._sprite="__default",h._id=++t._counter,h},_errorListener:function(){var h=this;h._parent._emit("loaderror",h._id,h._node.error?h._node.error.code:0),h._node.removeEventListener("error",h._errorFn,!1)},_loadListener:function(){var h=this,d=h._parent;d._duration=Math.ceil(10*h._node.duration)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,1e3*d._duration]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),h._node.removeEventListener(t._canPlayEvent,h._loadFn,!1)},_endListener:function(){var h=this,d=h._parent;d._duration===1/0&&(d._duration=Math.ceil(10*h._node.duration)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=1e3*d._duration),d._ended(h)),h._node.removeEventListener("ended",h._endFn,!1)}};var n={},a=function(h){var d=h._src;if(n[d])return h._duration=n[d].duration,void c(h);if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),m=new Uint8Array(p.length),f=0;f0?(n[d._src]=f,c(d,f)):p()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(h).then(m).catch(p):t.ctx.decodeAudioData(h,m,p)},c=function(h,d){d&&!h._duration&&(h._duration=d.duration),Object.keys(h._sprite).length===0&&(h._sprite={__default:[0,1e3*h._duration]}),h._state!=="loaded"&&(h._state="loaded",h._emit("load"),h._loadQueue())},u=function(){if(t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var h=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),d=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(h&&p&&p<9){var m=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!m&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=t.ctx.createGain===void 0?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};s.Howler=t,s.Howl=i,typeof Ut<"u"?(Ut.HowlerGlobal=e,Ut.Howler=t,Ut.Howl=i,Ut.Sound=r):typeof window<"u"&&(window.HowlerGlobal=e,window.Howler=t,window.Howl=i,window.Sound=r)})()})(hr);const p1="/smeditor/assets/assist_tick-b8aada2a.ogg",Ag="/smeditor/assets/metronome_high-6fa54e52.ogg",bg="/smeditor/assets/metronome_low-4db4e760.ogg",f1="/smeditor/assets/mine-b65ce42d.ogg",rl=[".aac",".mid",".midi",".mp3",".oga",".ogg",".opus",".wav",".webm",".weba",".flac",".aiff"],tr=[".bmp",".gif",".jpeg",".jpg",".png",".tif",".tiff",".webp"],id=["Hold","Roll"];function wg(s){return!id.includes(s.type)}function Pe(s){return id.includes(s.type)}var si="INUMBER",bn="IOP1",wn="IOP2",xn="IOP3",us="IVAR",br="IVARNAME",cn="IFUNCALL",nl="IFUNDEF",Yt="IEXPR",sd="IEXPREVAL",xr="IMEMBER",al="IENDSTATEMENT",dn="IARRAY";function ze(s,e){this.type=s,this.value=e??0}ze.prototype.toString=function(){switch(this.type){case si:case bn:case wn:case xn:case us:case br:case al:return this.value;case cn:return"CALL "+this.value;case nl:return"DEF "+this.value;case dn:return"ARRAY "+this.value;case xr:return"."+this.value;default:return"Invalid Instruction"}};function ol(s){return new ze(bn,s)}function fs(s){return new ze(wn,s)}function xg(s){return new ze(xn,s)}function wc(s,e,t,i,r){for(var n=[],a=[],o,l,c,u,h=0;h1)l=n.pop(),o=n.pop(),u=t[d.value],d=new ze(si,u(o.value,l.value)),n.push(d);else if(p===xn&&n.length>2)c=n.pop(),l=n.pop(),o=n.pop(),d.value==="?"?n.push(o.value?l.value:c.value):(u=i[d.value],d=new ze(si,u(o.value,l.value,c.value)),n.push(d));else if(p===bn&&n.length>0)o=n.pop(),u=e[d.value],d=new ze(si,u(o.value)),n.push(d);else if(p===Yt){for(;n.length>0;)a.push(n.shift());a.push(new ze(Yt,wc(d.value,e,t,i,r)))}else if(p===xr&&n.length>0)o=n.pop(),n.push(new ze(si,o.value[d.value]));else{for(;n.length>0;)a.push(n.shift());a.push(d)}}for(;n.length>0;)a.push(n.shift());return a}function Eg(s,e,t){for(var i=[],r=0;r0;)l.unshift($i(i.pop(),t));if(o=i.pop(),o.apply&&o.call)i.push(o.apply(void 0,l));else throw new Error(o+" is not a function")}else if(p===nl)i.push(function(){for(var f=i.pop(),g=[],y=d.value;y-- >0;)g.unshift(i.pop());var b=i.pop(),A=function(){for(var v=Object.assign({},t),_=0,C=g.length;_0;)l.unshift(i.pop());i.push(l)}else throw new Error("invalid Expression")}if(i.length>1)throw new Error("invalid Expression (parity)");return i[0]===0?0:$i(i[0],t)}function m1(s,e,t){return rd(s)?s:{type:sd,value:function(i){return nr(s.value,e,i)}}}function rd(s){return s&&s.type===sd}function $i(s,e){return rd(s)?s.value(e):s}function nd(s,e){for(var t=[],i,r,n,a,o,l,c=0;c0;)o.unshift(t.pop());a=t.pop(),t.push(a+"("+o.join(", ")+")")}else if(h===nl){for(r=t.pop(),l=u.value,o=[];l-- >0;)o.unshift(t.pop());i=t.pop(),e?t.push("("+i+" = function("+o.join(", ")+") { return "+r+" })"):t.push("("+i+"("+o.join(", ")+") = "+r+")")}else if(h===xr)i=t.pop(),t.push(i+"."+u.value);else if(h===dn){for(l=u.value,o=[];l-- >0;)o.unshift(t.pop());t.push("["+o.join(", ")+"]")}else if(h===Yt)t.push("("+nd(u.value,e)+")");else if(h!==al)throw new Error("invalid Expression")}return t.length>1&&(e?t=[t.join(",")]:t=[t.join(";")]),String(t[0])}function wp(s){return typeof s=="string"?JSON.stringify(s).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029"):s}function jr(s,e){for(var t=0;t=this.expression.length)return this.newToken(ra,"EOF");if(this.isWhitespace()||this.isComment())return this.next();if(this.isRadixInteger()||this.isNumber()||this.isOperator()||this.isString()||this.isParen()||this.isBracket()||this.isComma()||this.isSemicolon()||this.isNamedOp()||this.isConst()||this.isName())return this.current;this.parseError('Unknown character "'+this.expression.charAt(this.pos)+'"')};ut.prototype.isString=function(){var s=!1,e=this.pos,t=this.expression.charAt(e);if(t==="'"||t==='"')for(var i=this.expression.indexOf(t,e+1);i>=0&&this.pos"9")))break}if(e>s){var i=this.expression.substring(s,e);if(i in this.consts)return this.current=this.newToken(ll,this.consts[i]),this.pos+=i.length,!0}return!1};ut.prototype.isNamedOp=function(){for(var s=this.pos,e=s;e"9")))break}if(e>s){var i=this.expression.substring(s,e);if(this.isOperatorEnabled(i)&&(i in this.binaryOps||i in this.unaryOps||i in this.ternaryOps))return this.current=this.newToken(Qe,i),this.pos+=i.length,!0}return!1};ut.prototype.isName=function(){for(var s=this.pos,e=s,t=!1;e"9"))break}else t=!0}if(t){var r=this.expression.substring(s,e);return this.current=this.newToken(od,r),this.pos+=r.length,!0}return!1};ut.prototype.isWhitespace=function(){for(var s=!1,e=this.expression.charAt(this.pos);(e===" "||e===" "||e===` `||e==="\r")&&(s=!0,this.pos++,!(this.pos>=this.expression.length));)e=this.expression.charAt(this.pos);return s};var g1=/^[0-9a-f]{4}$/i;ut.prototype.unescape=function(s){var e=s.indexOf("\\");if(e<0)return s;for(var t=s.substring(0,e);e>=0;){var i=s.charAt(++e);switch(i){case"'":t+="'";break;case'"':t+='"';break;case"\\":t+="\\";break;case"/":t+="/";break;case"b":t+="\b";break;case"f":t+="\f";break;case"n":t+=` `;break;case"r":t+="\r";break;case"t":t+=" ";break;case"u":var r=s.substring(e+1,e+5);g1.test(r)||this.parseError("Illegal escape sequence: \\u"+r),t+=String.fromCharCode(parseInt(r,16)),e+=4;break;default:throw this.parseError('Illegal escape sequence: "\\'+i+'"')}++e;var n=s.indexOf("\\",e);t+=s.substring(e,n<0?s.length:n),e=n}return t};ut.prototype.isComment=function(){var s=this.expression.charAt(this.pos);return s==="/"&&this.expression.charAt(this.pos+1)==="*"?(this.pos=this.expression.indexOf("*/",this.pos)+2,this.pos===1&&(this.pos=this.expression.length),!0):!1};ut.prototype.isRadixInteger=function(){var s=this.pos;if(s>=this.expression.length-2||this.expression.charAt(s)!=="0")return!1;++s;var e,t;if(this.expression.charAt(s)==="x")e=16,t=/^[0-9a-f]$/i,++s;else if(this.expression.charAt(s)==="b")e=2,t=/^[01]$/i,++s;else return!1;for(var i=!1,r=s;s="0"&&a<="9"||!r&&a===".");)a==="."?r=!0:n=!0,e++,s=n;if(s&&(i=e),a==="e"||a==="E"){e++;for(var o=!0,l=!1;e="0"&&a<="9")l=!0,o=!1;else break;e++}l||(e=i)}return s?(this.current=this.newToken(ll,parseFloat(this.expression.substring(t,e))),this.pos=e):this.pos=i,s};ut.prototype.isOperator=function(){var s=this.pos,e=this.expression.charAt(this.pos);if(e==="+"||e==="-"||e==="*"||e==="/"||e==="%"||e==="^"||e==="?"||e===":"||e===".")this.current=this.newToken(Qe,e);else if(e==="∙"||e==="•")this.current=this.newToken(Qe,"*");else if(e===">")this.expression.charAt(this.pos+1)==="="?(this.current=this.newToken(Qe,">="),this.pos++):this.current=this.newToken(Qe,">");else if(e==="<")this.expression.charAt(this.pos+1)==="="?(this.current=this.newToken(Qe,"<="),this.pos++):this.current=this.newToken(Qe,"<");else if(e==="|")if(this.expression.charAt(this.pos+1)==="|")this.current=this.newToken(Qe,"||"),this.pos++;else return!1;else if(e==="=")this.expression.charAt(this.pos+1)==="="?(this.current=this.newToken(Qe,"=="),this.pos++):this.current=this.newToken(Qe,e);else if(e==="!")this.expression.charAt(this.pos+1)==="="?(this.current=this.newToken(Qe,"!="),this.pos++):this.current=this.newToken(Qe,e);else return!1;return this.pos++,this.isOperatorEnabled(this.current.value)?!0:(this.pos=s,!1)};ut.prototype.isOperatorEnabled=function(s){return this.parser.isOperatorEnabled(s)};ut.prototype.getCoordinates=function(){var s=0,e,t=-1;do s++,e=this.pos-t,t=this.expression.indexOf(` -`,t+1);while(t>=0&&t"u"?!0:Array.isArray(e)?jr(e,s.value):typeof e=="function"?e(s):s.value===e};et.prototype.save=function(){this.savedCurrent=this.current,this.savedNextToken=this.nextToken,this.tokens.save()};et.prototype.restore=function(){this.tokens.restore(),this.current=this.savedCurrent,this.nextToken=this.savedNextToken};et.prototype.accept=function(s,e){return this.nextToken.type===s&&this.tokenMatches(this.nextToken,e)?(this.next(),!0):!1};et.prototype.expect=function(s,e){if(!this.accept(s,e)){var t=this.tokens.getCoordinates();throw new Error("parse error ["+t.line+":"+t.column+"]: Expected "+(e||s))}};et.prototype.parseAtom=function(s){var e=this.tokens.unaryOps;function t(r){return r.value in e}if(this.accept(od)||this.accept(Qe,t))s.push(new ze(us,this.current.value));else if(this.accept(ll))s.push(new ze(si,this.current.value));else if(this.accept(_g))s.push(new ze(si,this.current.value));else if(this.accept(ps,"("))this.parseExpression(s),this.expect(ps,")");else if(this.accept(un,"["))if(this.accept(un,"]"))s.push(new ze(dn,0));else{var i=this.parseArrayList(s);s.push(new ze(dn,i))}else throw new Error("unexpected "+this.nextToken)};et.prototype.parseExpression=function(s){var e=[];this.parseUntilEndStatement(s,e)||(this.parseVariableAssignmentExpression(e),!this.parseUntilEndStatement(s,e)&&this.pushExpression(s,e))};et.prototype.pushExpression=function(s,e){for(var t=0,i=e.length;t=",">","in"];et.prototype.parseComparison=function(s){for(this.parseAddSub(s);this.accept(Qe,y1);){var e=this.current;this.parseAddSub(s),s.push(fs(e.value))}};var v1=["+","-","||"];et.prototype.parseAddSub=function(s){for(this.parseTerm(s);this.accept(Qe,v1);){var e=this.current;this.parseTerm(s),s.push(fs(e.value))}};var A1=["*","/","%"];et.prototype.parseTerm=function(s){for(this.parseFactor(s);this.accept(Qe,A1);){var e=this.current;this.parseFactor(s),s.push(fs(e.value))}};et.prototype.parseFactor=function(s){var e=this.tokens.unaryOps;function t(r){return r.value in e}if(this.save(),this.accept(Qe,t)){if(this.current.value!=="-"&&this.current.value!=="+"){if(this.nextToken.type===ps&&this.nextToken.value==="("){this.restore(),this.parseExponential(s);return}else if(this.nextToken.type===ld||this.nextToken.type===hl||this.nextToken.type===ra||this.nextToken.type===ps&&this.nextToken.value===")"){this.restore(),this.parseAtom(s);return}}var i=this.current;this.parseFactor(s),s.push(ol(i.value))}else this.parseExponential(s)};et.prototype.parseExponential=function(s){for(this.parsePostfixExpression(s);this.accept(Qe,"^");)this.parseFactor(s),s.push(fs("^"))};et.prototype.parsePostfixExpression=function(s){for(this.parseFunctionCall(s);this.accept(Qe,"!");)s.push(ol("!"))};et.prototype.parseFunctionCall=function(s){var e=this.tokens.unaryOps;function t(n){return n.value in e}if(this.accept(Qe,t)){var i=this.current;this.parseAtom(s),s.push(ol(i.value))}else for(this.parseMemberExpression(s);this.accept(ps,"(");)if(this.accept(ps,")"))s.push(new ze(cn,0));else{var r=this.parseArgumentList(s);s.push(new ze(cn,r))}};et.prototype.parseArgumentList=function(s){for(var e=0;!this.accept(ps,")");)for(this.parseExpression(s),++e;this.accept(hl);)this.parseExpression(s),++e;return e};et.prototype.parseMemberExpression=function(s){for(this.parseAtom(s);this.accept(Qe,".")||this.accept(un,"[");){var e=this.current;if(e.value==="."){if(!this.allowMemberAccess)throw new Error('unexpected ".", member access is not permitted');this.expect(od),s.push(new ze(xr,this.current.value))}else if(e.value==="["){if(!this.tokens.isOperatorEnabled("["))throw new Error('unexpected "[]", arrays are disabled');this.parseExpression(s),this.expect(un,"]"),s.push(fs("["))}else throw new Error("unexpected symbol: "+e.value)}};function b1(s,e){return Number(s)+Number(e)}function w1(s,e){return s-e}function x1(s,e){return s*e}function E1(s,e){return s/e}function _1(s,e){return s%e}function T1(s,e){return Array.isArray(s)&&Array.isArray(e)?s.concat(e):""+s+e}function S1(s,e){return s===e}function C1(s,e){return s!==e}function M1(s,e){return s>e}function k1(s,e){return s=e}function I1(s,e){return s<=e}function P1(s,e){return!!(s&&e)}function R1(s,e){return!!(s||e)}function L1(s,e){return jr(e,s)}function D1(s){return(Math.exp(s)-Math.exp(-s))/2}function O1(s){return(Math.exp(s)+Math.exp(-s))/2}function F1(s){return s===1/0?1:s===-1/0?-1:(Math.exp(s)-Math.exp(-s))/(Math.exp(s)+Math.exp(-s))}function N1(s){return s===-1/0?s:Math.log(s+Math.sqrt(s*s+1))}function U1(s){return Math.log(s+Math.sqrt(s*s-1))}function G1(s){return Math.log((1+s)/(1-s))/2}function xp(s){return Math.log(s)*Math.LOG10E}function H1(s){return-s}function V1(s){return!s}function W1(s){return s<0?Math.ceil(s):Math.floor(s)}function z1(s){return Math.random()*(s||1)}function Ep(s){return hd(s+1)}function Y1(s){return isFinite(s)&&s===Math.round(s)}var j1=4.7421875,ah=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];function hd(s){var e,t;if(Y1(s)){if(s<=0)return isFinite(s)?1/0:NaN;if(s>171)return 1/0;for(var i=s-2,r=s-1;i>1;)r*=i,i--;return r===0&&(r=1),r}if(s<.5)return Math.PI/(Math.sin(Math.PI*s)*hd(1-s));if(s>=171.35)return 1/0;if(s>85){var n=s*s,a=n*s,o=a*s,l=o*s;return Math.sqrt(2*Math.PI/s)*Math.pow(s/Math.E,s)*(1+1/(12*s)+1/(288*n)-139/(51840*a)-571/(2488320*o)+163879/(209018880*l)+5246819/(75246796800*l*s))}--s,t=ah[0];for(var c=1;c0?(r=i/e,s+=r*r):s+=i}return e===1/0?1/0:e*Math.sqrt(s)}function Tp(s,e,t){return s?e:t}function K1(s,e){return typeof e>"u"||+e==0?Math.round(s):(s=+s,e=-+e,isNaN(s)||!(typeof e=="number"&&e%1===0)?NaN:(s=s.toString().split("e"),s=Math.round(+(s[0]+"e"+(s[1]?+s[1]-e:-e))),s=s.toString().split("e"),+(s[0]+"e"+(s[1]?+s[1]+e:e))))}function q1(s,e,t){return t&&(t[s]=e),e}function Q1(s,e){return s[e|0]}function J1(s){return arguments.length===1&&Array.isArray(s)?Math.max.apply(Math,s):Math.max.apply(Math,arguments)}function Z1(s){return arguments.length===1&&Array.isArray(s)?Math.min.apply(Math,s):Math.min.apply(Math,arguments)}function $1(s,e){if(typeof s!="function")throw new Error("First argument to map is not a function");if(!Array.isArray(e))throw new Error("Second argument to map is not an array");return e.map(function(t,i){return s(t,i)})}function eT(s,e,t){if(typeof s!="function")throw new Error("First argument to fold is not a function");if(!Array.isArray(t))throw new Error("Second argument to fold is not an array");return t.reduce(function(i,r,n){return s(i,r,n)},e)}function tT(s,e){if(typeof s!="function")throw new Error("First argument to filter is not a function");if(!Array.isArray(e))throw new Error("Second argument to filter is not an array");return e.filter(function(t,i){return s(t,i)})}function iT(s,e){if(!(Array.isArray(e)||typeof e=="string"))throw new Error("Second argument to indexOf is not a string or array");return e.indexOf(s)}function sT(s,e){if(!Array.isArray(e))throw new Error("Second argument to join is not an array");return e.join(s)}function rT(s){return(s>0)-(s<0)||+s}var Sp=1/3;function nT(s){return s<0?-Math.pow(-s,Sp):Math.pow(s,Sp)}function aT(s){return Math.exp(s)-1}function oT(s){return Math.log(1+s)}function lT(s){return Math.log(s)/Math.LN2}function ms(s){this.options=s||{},this.unaryOps={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,sinh:Math.sinh||D1,cosh:Math.cosh||O1,tanh:Math.tanh||F1,asinh:Math.asinh||N1,acosh:Math.acosh||U1,atanh:Math.atanh||G1,sqrt:Math.sqrt,cbrt:Math.cbrt||nT,log:Math.log,log2:Math.log2||lT,ln:Math.log,lg:Math.log10||xp,log10:Math.log10||xp,expm1:Math.expm1||aT,log1p:Math.log1p||oT,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,trunc:Math.trunc||W1,"-":H1,"+":Number,exp:Math.exp,not:V1,length:X1,"!":Ep,sign:Math.sign||rT},this.binaryOps={"+":b1,"-":w1,"*":x1,"/":E1,"%":_1,"^":Math.pow,"||":T1,"==":S1,"!=":C1,">":M1,"<":k1,">=":B1,"<=":I1,and:P1,or:R1,in:L1,"=":q1,"[":Q1},this.ternaryOps={"?":Tp},this.functions={random:z1,fac:Ep,min:Z1,max:J1,hypot:Math.hypot||_p,pyt:Math.hypot||_p,pow:Math.pow,atan2:Math.atan2,if:Tp,gamma:hd,roundTo:K1,map:$1,fold:eT,filter:tT,indexOf:iT,join:sT},this.consts={E:Math.E,PI:Math.PI,true:!0,false:!1}}ms.prototype.parse=function(s){var e=[],t=new et(this,new ut(this,s),{allowMemberAccess:this.options.allowMemberAccess});return t.parseExpression(e),t.expect(ra,"EOF"),new Si(e,this)};ms.prototype.evaluate=function(s,e){return this.parse(s).evaluate(e)};var Sg=new ms;ms.parse=function(s){return Sg.parse(s)};ms.evaluate=function(s,e){return Sg.parse(s).evaluate(e)};var Cp={"+":"add","-":"subtract","*":"multiply","/":"divide","%":"remainder","^":"power","!":"factorial","<":"comparison",">":"comparison","<=":"comparison",">=":"comparison","==":"comparison","!=":"comparison","||":"concatenate",and:"logical",or:"logical",not:"logical","?":"conditional",":":"conditional","=":"assignment","[":"array","()=":"fndef"};function hT(s){return Cp.hasOwnProperty(s)?Cp[s]:s}ms.prototype.isOperatorEnabled=function(s){var e=hT(s),t=this.options.operators||{};return!(e in t)||!!t[e]};const go=[1,1/2,1/3,1/4,1/6,1/8,1/12,1/16,1/24,1/48];function cT(s){for(let e=0;en),s.length==0)return-1;if(e>=t(s[s.length-1])){let n=s.length-1;for(;n>0&&t(s[n-1])==e;)n--;return n}let i=0,r=s.length;for(;i<=r&&i>>1;if(t(s[n])==e){for(;n>0&&t(s[n-1])==e;)n--;return n}t(s[n])e&&(r=n-1)}return Math.max(0,r)}function Xa(s,e,t){if(t=t??(r=>r),s.length==0)return-1;let i=Bt(s,e,t);for(;s[i-1]&&t(s[i-1])==e;)i--;return i}function Mp(s,e){return!(Object.keys(s).some(t=>s[t]!=e[t])||Object.keys(e).some(t=>s[t]!=e[t]))}function na(s){try{return ms.evaluate(s)}catch{return null}}function Yi(s,e){let t=s.length;if(s.length!=0)for(;t--;)e(s[t],t)&&s[t].destroy()}function Ec(s){return s==""?"":s.slice(0,1).toUpperCase()+s.slice(1).toLowerCase()}function _c(s){return s.button==2||s.getModifierState("Control")&&xi}function PC(){try{return window.self!==window.top}catch{return!0}}function RC(s,e,t,i,r){const n=[];for(let a=0;a1&&(i.innerHTML+=` (${t})`),i.classList.add("waterfall-item"),_e.messages[e]={type:"",container:i,timeoutID:setTimeout(()=>{i.classList.add("waterfall-exiting")},5e3),clearTimeoutID:setTimeout(()=>{delete this.messages[e],this.view.removeChild(i)},5500),count:t},this.view.appendChild(i)}static createFormatted(e,t){if(this.view==null)return;let i=1;if(this.messages[e]&&this.messages[e].type==t){const n=this.messages[e];clearTimeout(n.timeoutID),clearTimeout(n.clearTimeoutID),i=++n.count,this.view.removeChild(n.container)}const r=document.createElement("div");r.innerHTML=`
${Ec(t)}:
`+e,i>1&&(r.innerHTML+=` (${i})`),r.classList.add("waterfall-item"),console[t](e),_e.messages[e]={type:t,container:r,timeoutID:setTimeout(()=>{r.classList.add("waterfall-exiting")},5e3),clearTimeoutID:setTimeout(()=>{delete this.messages[e],this.view.removeChild(r)},5500),count:i},this.view.appendChild(r)}}class dT{cols=[];keyDown(e){this.cols[e]=(this.cols[e]??0)+1}keyUp(e){this.cols[e]=(this.cols[e]??1)-1,this.cols[e]=Math.max(this.cols[e],0)}isPressed(e){return!!this.cols[e]}getHeldCols(){return this.cols.map((e,t)=>t).filter(e=>this.isPressed(e))}reset(){this.cols=[]}}const kp=["audio.rate","chart.snap","chart.CMod","play.timingCollection"];class Go{static app={width:800,height:600,fullscreen:!1};static general={spinnerStep:1,smoothAnimations:!0,warnBeforeExit:!0,showPlaybackOptions:!0};static chart={CMod:!1,reverse:!1,mousePlacement:!1,zoom:1,speed:250,snap:1,hideWarpedArrows:!1,hideFakedArrows:!1,doSpeedChanges:!0,drawNoteFlash:!0,drawIcons:!0,receptorYPos:-200,maxDrawBeats:20,maxDrawBeatsBack:10,scroll:{scrollSensitivity:1,scrollSnapEveryScroll:!navigator.userAgent.includes("Mac"),invertZoomScroll:!1,invertReverseScroll:!0},waveform:{enabled:!0,antialiasing:!0,color:6316402,opacity:.5,allowFilter:!0,filteredColor:1987134,filteredOpacity:.5,lineHeight:1,speedChanges:!0},noteLayout:{enabled:!0},npsGraph:{enabled:!1,color1:4892604,color2:4340858},timingEventOrder:{left:["LABELS","FAKES","TIMESIGNATURES","DELAYS","WARPS","STOPS","BPMS"],right:["SPEEDS","SCROLLS","TICKCOUNTS","COMBOS","ATTACKS","BGCHANGES","FGCHANGES"]},renderTimingEvent:{BPMS:!0,STOPS:!0,DELAYS:!0,WARPS:!0,FAKES:!0,COMBOS:!0,SPEEDS:!0,LABELS:!0,SCROLLS:!0,TIMESIGNATURES:!0,TICKCOUNTS:!0,BGCHANGES:!0,FGCHANGES:!0,ATTACKS:!0},noteskin:{type:"dance-single",name:"default"},lastNoteskins:{"dance-single":"default","dance-double":"default","dance-couple":"default","dance-solo":"default","dance-solodouble":"default","dance-threepanel":"default","dance-threedouble":"default","pump-single":"default","pump-double":"default","pump-versus":"default","pump-couple":"default","pump-halfdouble":"default"}};static audio={assistTick:!1,metronome:!1,rate:1,masterVolume:1,songVolume:.2,soundEffectVolume:.5,allowFilter:!0};static play={offset:0,effectOffset:0,visualOffset:0,hideBarlines:!1,judgementTilt:!0,timingCollection:"ITG",timingWindowScale:1,timingWindowAdd:0,defaultTimingCollection:{"dance-single":"ITG","dance-double":"ITG","dance-threepanel":"ITG","dance-threedouble":"ITG","dance-solo":"ITG","dance-solodouble":"ITG"}};static performance={antialiasing:!1,resolution:window.devicePixelRatio};static debug={showFPS:!1,showTimers:!1,showScroll:!1,showNoteskinErrors:!1};static experimental={}}class w extends Go{static extractOptions(e,t){return Object.entries(e).reduce((i,r)=>{const n=t?t+".":"";return typeof r[1]=="object"&&!Array.isArray(r[1])?i=i.concat(this.extractOptions(r[1],n+r[0])):(r[0]=n+r[0],i.push([r[0],r[1]])),i},[])}static applyOption(e){if(typeof this.getDefaultOption(e[0])!=typeof e[1])return console.warn("Couldn't load option "+e[0]+": the value "+e[1]+" ("+typeof e[1]+") does not match the type "+typeof this.getDefaultOption(e[0]));const t=e[0].split("."),i=t.pop();let r=this;for(const n of t)if(n in r)r=r[n];else return console.warn("Couldn't load option "+e[0]+": the id doesn't exist");r[i]=e[1]}static getDefaultOption(e){const t=e.split(".");let i=Go;for(const r of t)if(r in i)i=i[r];else return;if(!(typeof i=="object"&&!Array.isArray(i)))return i}static getOption(e){const t=e.split(".");let i=this;for(const r of t)if(r in i)i=i[r];else return;if(!(typeof i=="object"&&!Array.isArray(i)))return i}static saveOptions(){const e={};for(const t of this.extractOptions(this)){if(kp.includes(t[0]))continue;const i=this.getDefaultOption(t[0]);if(i==null){console.warn("Couldn't save option "+t[0]+": the id doesn't exist");continue}typeof i!=typeof t[1]?(console.warn("Couldn't save option "+t[0]+": the value "+t[1]+" does not match the type "+typeof this.getDefaultOption(t[0])),e[t[0]]=i):e[t[0]]=t[1]}localStorage.setItem("options",JSON.stringify(e))}static loadOptions(){const e=localStorage.getItem("options");if(!e)return;const t=JSON.parse(e);if(typeof t!="object")return console.error("Couldn't load options from storage");for(const i of Object.entries(t))kp.includes(i[0])||this.applyOption(i)}static clearSave(){localStorage.removeItem("options")}}const Cg={};for(const s of Object.entries(Go))Cg[s[0]]=JSON.parse(JSON.stringify(s[1]));Object.assign(w,Cg);class cl{timingWindowMS;dancePoints;lifeChange;constructor(e,t,i){this.timingWindowMS=e,this.dancePoints=t,this.lifeChange=i}getTimingWindowMS(){return this.timingWindowMS*w.play.timingWindowScale+w.play.timingWindowAdd}}class Ka extends cl{target="dropped";constructor(e,t){super(0,e,t)}}class kr extends cl{noteType;constructor(e,t,i,r){super(t,i,r),this.noteType=e}}const uT="/smeditor/assets/judgementITG-5390eacd.png",pT="/smeditor/assets/judgementWaterfall-5bb3f994.png";class it{static ITG=new it(uT,["w0","w1","w2","w3","w4","w5","miss"]);static WATERFALL=new it(pT,["w0","w1","w2","w3","w4","w5","miss"]);texHeight=0;texWidth=0;texture;judgeNames=[];constructor(e,t){this.judgeNames=t,this.loadTex(e)}async loadTex(e){const t=await Yr.load(e);this.texture=t,this.texHeight=t.height,this.texWidth=t.width}getTexture(e,t){if(!this.texture||!this.judgeNames.includes(t.id))return;let i=0;const r=this.judgeNames.indexOf(t.id)*this.texHeight/this.judgeNames.length;return e>=0&&(i+=this.texWidth/2),this.texture.frame=new Me(i,r,this.texWidth/2,this.texHeight/this.judgeNames.length),this.texture}}class qa extends cl{target="mine";constructor(e,t,i){super(e,t,i)}}class vt extends cl{id;name;color;judgementTexture;constructor(e,t,i,r,n,a,o){super(r,n,a),this.id=e,this.name=t,this.color=i,this.judgementTexture=o}}const Mg=new vt("w0","Fantastic",183528,0,0,0,it.ITG);class Qa extends vt{constructor(e,t,i,r,n){super("miss",e,t,0,i,r,n)}}function ji(s){return s.color!=null&&s.id!="miss"}function Ci(s){return s.color!=null&&s.id=="miss"}function mr(s){return!!s.noteType}function pn(s){return s.target=="dropped"}function dl(s){return s.target=="mine"}class Je{static COLLECTIONS={ITG:new Je([new vt("w0","Fantastic",2215144,23,5,.008,it.ITG),new vt("w2","Excellent",14851096,44.5,4,.008,it.ITG),new vt("w3","Great",6736213,103.5,2,.004,it.ITG),new vt("w4","Decent",11820287,136.5,0,0,it.ITG),new vt("w5","Way Off",13206878,181.5,-6,-.05,it.ITG),new Qa("Miss",16724016,-12,-.1,it.ITG),new kr("Hold",321.5,5,-.008),new kr("Roll",351.5,5,-.008),new Ka(0,-.08),new qa(71.5,-6,-.05)],103.5),FA:new Je([new vt("w0","Fantastic",2215144,15,3.5,.008,it.ITG),new vt("w1","Fantastic",16777215,23,3,.008,it.ITG),new vt("w2","Excellent",14851096,44.5,2,.008,it.ITG),new vt("w3","Great",6736213,103.5,1,.004,it.ITG),new vt("w4","Decent",11820287,136.5,0,0,it.ITG),new vt("w5","Way Off",13206878,181.5,0,-.05,it.ITG),new Qa("Miss",16724016,0,-.1,it.ITG),new kr("Hold",321.5,1,-.008),new kr("Roll",351.5,1,-.008),new Ka(0,-.08),new qa(71.5,-1,-.05)],103.5),WATERFALL:new Je([new vt("w0","Masterful",16711870,15,10,.008,it.WATERFALL),new vt("w2","Awesome",16776960,30,9,.008,it.WATERFALL),new vt("w3","Solid",51200,50,6,.008,it.WATERFALL),new vt("w4","OK",33023,100,3,.004,it.WATERFALL),new vt("w5","Fault",8421504,160,0,0,it.WATERFALL),new Qa("Miss",16724016,0,-.1,it.WATERFALL),new kr("Hold",300,6,-.008),new kr("Roll",350,6,-.008),new Ka(0,-.08),new qa(71.5,-3,-.05)],100)};windows=[];holdWindows={};missWindow;droppedWindow;mineWindow;hideLimitMS;constructor(e,t){this.missWindow=new Qa("Miss",16724016,-12,-.1,it.ITG),this.droppedWindow=new Ka(0,-.08),this.mineWindow=new qa(71.5,-1,-.05);for(const i of e)ji(i)?this.windows.push(i):Ci(i)?this.missWindow=i:mr(i)?this.holdWindows[i.noteType]=i:pn(i)?this.droppedWindow=i:dl(i)&&(this.mineWindow=i);this.windows.sort((i,r)=>i.timingWindowMS-r.timingWindowMS),this.hideLimitMS=t}judgeInput(e){for(const t of this.windows)if(t.getTimingWindowMS()/1e3>=Math.abs(e))return t;return this.missWindow}getHeldJudgement(e){return this.holdWindows[e.type]}getMissJudgement(){return this.missWindow}getDroppedJudgement(){return this.droppedWindow}getMineJudgement(){return this.mineWindow}shouldHideNote(e){return e.id!="miss"&&e.timingWindowMS<=this.hideLimitMS}maxWindowMS(){return this.windows.at(-1)?.getTimingWindowMS()??0}getMaxDancePoints(){return Math.max(...this.windows.map(e=>e.dancePoints),this.missWindow.dancePoints)}getMaxHoldDancePoints(e){return Math.max(this.holdWindows[e].dancePoints??0,this.droppedWindow.dancePoints)}getStandardWindows(){return[...this.windows]}getHoldWindows(){return[...Object.values(this.holdWindows)]}static getCollection(e){return this.COLLECTIONS[e]??this.COLLECTIONS.ITG}static getCollections(){return Je.COLLECTIONS}}class fT{}class Ws extends fT{chordCohesion=new Map;missNoteIndex=0;holdProgress=[];heldCols=new dT;collection=Je.getCollection("ITG");usesHoldTicks=!1;update(e){if(!e.loadedChart||!e.chartView)return;const i=e.chartView.getTimeWithOffset()-this.collection.maxWindowMS()/1e3*w.audio.rate;let r=-1;for(;e.loadedChart.getNotedata()[this.missNoteIndex]&&e.loadedChart.getNotedata()[this.missNoteIndex].second=e.chartView.chart.getSecondsFromBeat(n.beat+n.hold)&&(n.gameplay.hideNote=!0,e.chartView.doJudgement(n,null,this.collection.getHeldJudgement(n)),e.chartView.getNotefield().releaseHold(n.col),this.holdProgress.splice(this.holdProgress.indexOf(n),1),e.gameStats?.addHoldDataPoint(n,this.collection.getHeldJudgement(n)))}for(const n of this.heldCols.getHeldCols()){const a=this.getClosestNote(e.loadedChart.getNotedata(),e.chartView.getTimeWithOffset()-this.collection.getMineJudgement().getTimingWindowMS()/2e3,n,["Mine"],this.collection.getMineJudgement().getTimingWindowMS()/2);a&&(a.gameplay.hasHit=!0,a.gameplay.hideNote=!0,e.chartView.doJudgement(a,null,this.collection.getMineJudgement()),e.gameStats?.addDataPoint([a],this.collection.getMineJudgement(),null),e.mine.play())}}startPlay(e){if(!e.loadedChart||!e.chartView)return;this.collection=Je.getCollection(w.play.timingCollection),this.chordCohesion.clear();for(const n of e.loadedChart.getNotedata())n.type=="Mine"||n.fake||n.warped||(this.chordCohesion.has(n.beat)||this.chordCohesion.set(n.beat,[]),this.chordCohesion.get(n.beat).push(n));const i=e.chartView.getTimeWithOffset()-this.collection.maxWindowMS()/1e3*w.audio.rate;let r=Bt(e.loadedChart.getNotedata(),i,n=>n.second)+1;r>=1&&i<=e.loadedChart.getNotedata()[r-1].second&&r--,this.missNoteIndex=r,this.holdProgress=[],this.heldCols.reset()}keyDown(e,t){if(!e.loadedChart||!e.chartView)return;const i=e.chartView.getTimeWithOffset(),r=this.getClosestNote(e.loadedChart.getNotedata(),i,t,["Tap","Hold","Roll"]);this.heldCols.keyDown(t),e.chartView.getNotefield().press(t);for(const n of this.holdProgress)n.type=="Roll"&&n.col==t&&(n.gameplay.lastHoldActivation=Date.now());r?this.hitNote(e,r,i):e.chartView.getNotefield().ghostTap(t)}keyUp(e,t){if(!e.loadedChart||!e.chartView)return;const i=e.chartView.getTimeWithOffset(),r=this.getClosestNote(e.loadedChart.getNotedata(),i,t,["Lift"]);this.heldCols.keyUp(t),e.chartView.getNotefield().lift(t),r&&this.hitNote(e,r,i)}shouldAssistTick(e){return!e.fake&&!e.warped&&e.type!="Mine"}hitNote(e,t,i){t.gameplay.hasHit=!0,Pe(t)&&(t.gameplay.lastHoldActivation=Date.now(),t.type=="Roll"?e.chartView.getNotefield().activateRoll(t.col):e.chartView.getNotefield().activateHold(t.col),this.holdProgress.push(t));const r=this.chordCohesion.get(t.beat);if(r.every(n=>n.gameplay.hasHit)){const n=this.collection.judgeInput((i-t.second)/w.audio.rate),a=this.collection.shouldHideNote(n);r.forEach(o=>{e.chartView.doJudgement(o,(i-o.second)/w.audio.rate,n),a&&wg(o)&&(o.gameplay.hideNote=!0)}),e.gameStats?.addDataPoint(r,n,(i-t.second)/w.audio.rate)}}getClosestNote(e,t,i,r,n){n=n??this.collection.maxWindowMS(),n*=w.audio.rate;const a=t-n/1e3,o=t+n/1e3;let l=Bt(e,a,u=>u.second)+1;l>=1&&a<=e[l-1].second&&l--;let c;for(;e[l]&&e[l].second<=o;){const u=e[l];if(u.gameplay.hasHit||u.col!=i||u.fake||u.warped||!r.includes(u.type)){l++;continue}(!c||Math.abs(u.second-t)=i.getTimingWindowMS():!1}calculateMaxDP(e,t){const i=new Map,r=new Map;for(const a of e)a.type=="Mine"||a.fake||a.warped||(Pe(a)&&(r.has(a.type)||r.set(a.type,0),r.set(a.type,r.get(a.type)+1)),i.has(a.beat)||i.set(a.beat,[]),i.get(a.beat).push(a));let n=i.size*Je.getCollection(w.play.timingCollection).getMaxDancePoints();return n+=Array.from(r.entries()).reduce((a,o)=>a+o[1]*Je.getCollection(w.play.timingCollection).getMaxHoldDancePoints(o[0]),0),n}}function wi(s,e,t){return s*(1-t)+e*t}function Lt(s,e,t){return(t-s)/(e-s)}function ne(s,e){return Math.round(s*Math.pow(10,e))/Math.pow(10,e)}function Ve(s,e,t){return Math.max(e,Math.min(t,s))}function kg(s){if(s.length==0)return 0;const e=s.length,t=s.reduce((i,r)=>i+r)/e;return Math.sqrt(s.map(i=>Math.pow(i-t,2)).reduce((i,r)=>i+r)/e)}function ul(s){if(s.length==0)return 0;s=[...s],s.sort((t,i)=>t-i);const e=Math.floor(s.length/2);return s.length%2?s[e]:(s[e-1]+s[e])/2}function mT(s){return s.length==0?0:s.reduce((e,t)=>e+t)/s.length}function Bg(s,e){return e?Bg(e,s%e):e===0?s:NaN}function Ig(s,e){return s*e/Bg(s,e)}function Bp(s){let e=1;for(let t=0;te&&(e=t);return e}class gT{}const yT={1:"Tap",2:"Hold",4:"Roll",M:"Mine",F:"Fake",L:"Lift"},vT={Tap:"1",Hold:"2",Roll:"4",Mine:"M",Fake:"F",Lift:"L"};class ui extends gT{serialize(e,t){if(e.length==0)return"";const i=[];let r=0;const n=e.filter(Pe).map(c=>({col:c.col,beat:c.beat+c.hold})).sort((c,u)=>c.beat-u.beat),a=e.at(-1),o=a.beat+(Pe(a)?a.hold:0);let l=Math.ceil(o/4);o%4==0&&l++;for(let c=0;c=0&&t"u"?!0:Array.isArray(e)?jr(e,s.value):typeof e=="function"?e(s):s.value===e};et.prototype.save=function(){this.savedCurrent=this.current,this.savedNextToken=this.nextToken,this.tokens.save()};et.prototype.restore=function(){this.tokens.restore(),this.current=this.savedCurrent,this.nextToken=this.savedNextToken};et.prototype.accept=function(s,e){return this.nextToken.type===s&&this.tokenMatches(this.nextToken,e)?(this.next(),!0):!1};et.prototype.expect=function(s,e){if(!this.accept(s,e)){var t=this.tokens.getCoordinates();throw new Error("parse error ["+t.line+":"+t.column+"]: Expected "+(e||s))}};et.prototype.parseAtom=function(s){var e=this.tokens.unaryOps;function t(r){return r.value in e}if(this.accept(od)||this.accept(Qe,t))s.push(new ze(us,this.current.value));else if(this.accept(ll))s.push(new ze(si,this.current.value));else if(this.accept(_g))s.push(new ze(si,this.current.value));else if(this.accept(ps,"("))this.parseExpression(s),this.expect(ps,")");else if(this.accept(un,"["))if(this.accept(un,"]"))s.push(new ze(dn,0));else{var i=this.parseArrayList(s);s.push(new ze(dn,i))}else throw new Error("unexpected "+this.nextToken)};et.prototype.parseExpression=function(s){var e=[];this.parseUntilEndStatement(s,e)||(this.parseVariableAssignmentExpression(e),!this.parseUntilEndStatement(s,e)&&this.pushExpression(s,e))};et.prototype.pushExpression=function(s,e){for(var t=0,i=e.length;t=",">","in"];et.prototype.parseComparison=function(s){for(this.parseAddSub(s);this.accept(Qe,y1);){var e=this.current;this.parseAddSub(s),s.push(fs(e.value))}};var v1=["+","-","||"];et.prototype.parseAddSub=function(s){for(this.parseTerm(s);this.accept(Qe,v1);){var e=this.current;this.parseTerm(s),s.push(fs(e.value))}};var A1=["*","/","%"];et.prototype.parseTerm=function(s){for(this.parseFactor(s);this.accept(Qe,A1);){var e=this.current;this.parseFactor(s),s.push(fs(e.value))}};et.prototype.parseFactor=function(s){var e=this.tokens.unaryOps;function t(r){return r.value in e}if(this.save(),this.accept(Qe,t)){if(this.current.value!=="-"&&this.current.value!=="+"){if(this.nextToken.type===ps&&this.nextToken.value==="("){this.restore(),this.parseExponential(s);return}else if(this.nextToken.type===ld||this.nextToken.type===hl||this.nextToken.type===ra||this.nextToken.type===ps&&this.nextToken.value===")"){this.restore(),this.parseAtom(s);return}}var i=this.current;this.parseFactor(s),s.push(ol(i.value))}else this.parseExponential(s)};et.prototype.parseExponential=function(s){for(this.parsePostfixExpression(s);this.accept(Qe,"^");)this.parseFactor(s),s.push(fs("^"))};et.prototype.parsePostfixExpression=function(s){for(this.parseFunctionCall(s);this.accept(Qe,"!");)s.push(ol("!"))};et.prototype.parseFunctionCall=function(s){var e=this.tokens.unaryOps;function t(n){return n.value in e}if(this.accept(Qe,t)){var i=this.current;this.parseAtom(s),s.push(ol(i.value))}else for(this.parseMemberExpression(s);this.accept(ps,"(");)if(this.accept(ps,")"))s.push(new ze(cn,0));else{var r=this.parseArgumentList(s);s.push(new ze(cn,r))}};et.prototype.parseArgumentList=function(s){for(var e=0;!this.accept(ps,")");)for(this.parseExpression(s),++e;this.accept(hl);)this.parseExpression(s),++e;return e};et.prototype.parseMemberExpression=function(s){for(this.parseAtom(s);this.accept(Qe,".")||this.accept(un,"[");){var e=this.current;if(e.value==="."){if(!this.allowMemberAccess)throw new Error('unexpected ".", member access is not permitted');this.expect(od),s.push(new ze(xr,this.current.value))}else if(e.value==="["){if(!this.tokens.isOperatorEnabled("["))throw new Error('unexpected "[]", arrays are disabled');this.parseExpression(s),this.expect(un,"]"),s.push(fs("["))}else throw new Error("unexpected symbol: "+e.value)}};function b1(s,e){return Number(s)+Number(e)}function w1(s,e){return s-e}function x1(s,e){return s*e}function E1(s,e){return s/e}function _1(s,e){return s%e}function T1(s,e){return Array.isArray(s)&&Array.isArray(e)?s.concat(e):""+s+e}function S1(s,e){return s===e}function C1(s,e){return s!==e}function M1(s,e){return s>e}function k1(s,e){return s=e}function I1(s,e){return s<=e}function P1(s,e){return!!(s&&e)}function R1(s,e){return!!(s||e)}function L1(s,e){return jr(e,s)}function D1(s){return(Math.exp(s)-Math.exp(-s))/2}function O1(s){return(Math.exp(s)+Math.exp(-s))/2}function F1(s){return s===1/0?1:s===-1/0?-1:(Math.exp(s)-Math.exp(-s))/(Math.exp(s)+Math.exp(-s))}function N1(s){return s===-1/0?s:Math.log(s+Math.sqrt(s*s+1))}function U1(s){return Math.log(s+Math.sqrt(s*s-1))}function G1(s){return Math.log((1+s)/(1-s))/2}function xp(s){return Math.log(s)*Math.LOG10E}function H1(s){return-s}function V1(s){return!s}function W1(s){return s<0?Math.ceil(s):Math.floor(s)}function z1(s){return Math.random()*(s||1)}function Ep(s){return hd(s+1)}function Y1(s){return isFinite(s)&&s===Math.round(s)}var j1=4.7421875,ah=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];function hd(s){var e,t;if(Y1(s)){if(s<=0)return isFinite(s)?1/0:NaN;if(s>171)return 1/0;for(var i=s-2,r=s-1;i>1;)r*=i,i--;return r===0&&(r=1),r}if(s<.5)return Math.PI/(Math.sin(Math.PI*s)*hd(1-s));if(s>=171.35)return 1/0;if(s>85){var n=s*s,a=n*s,o=a*s,l=o*s;return Math.sqrt(2*Math.PI/s)*Math.pow(s/Math.E,s)*(1+1/(12*s)+1/(288*n)-139/(51840*a)-571/(2488320*o)+163879/(209018880*l)+5246819/(75246796800*l*s))}--s,t=ah[0];for(var c=1;c0?(r=i/e,s+=r*r):s+=i}return e===1/0?1/0:e*Math.sqrt(s)}function Tp(s,e,t){return s?e:t}function K1(s,e){return typeof e>"u"||+e==0?Math.round(s):(s=+s,e=-+e,isNaN(s)||!(typeof e=="number"&&e%1===0)?NaN:(s=s.toString().split("e"),s=Math.round(+(s[0]+"e"+(s[1]?+s[1]-e:-e))),s=s.toString().split("e"),+(s[0]+"e"+(s[1]?+s[1]+e:e))))}function q1(s,e,t){return t&&(t[s]=e),e}function Q1(s,e){return s[e|0]}function J1(s){return arguments.length===1&&Array.isArray(s)?Math.max.apply(Math,s):Math.max.apply(Math,arguments)}function Z1(s){return arguments.length===1&&Array.isArray(s)?Math.min.apply(Math,s):Math.min.apply(Math,arguments)}function $1(s,e){if(typeof s!="function")throw new Error("First argument to map is not a function");if(!Array.isArray(e))throw new Error("Second argument to map is not an array");return e.map(function(t,i){return s(t,i)})}function eT(s,e,t){if(typeof s!="function")throw new Error("First argument to fold is not a function");if(!Array.isArray(t))throw new Error("Second argument to fold is not an array");return t.reduce(function(i,r,n){return s(i,r,n)},e)}function tT(s,e){if(typeof s!="function")throw new Error("First argument to filter is not a function");if(!Array.isArray(e))throw new Error("Second argument to filter is not an array");return e.filter(function(t,i){return s(t,i)})}function iT(s,e){if(!(Array.isArray(e)||typeof e=="string"))throw new Error("Second argument to indexOf is not a string or array");return e.indexOf(s)}function sT(s,e){if(!Array.isArray(e))throw new Error("Second argument to join is not an array");return e.join(s)}function rT(s){return(s>0)-(s<0)||+s}var Sp=1/3;function nT(s){return s<0?-Math.pow(-s,Sp):Math.pow(s,Sp)}function aT(s){return Math.exp(s)-1}function oT(s){return Math.log(1+s)}function lT(s){return Math.log(s)/Math.LN2}function ms(s){this.options=s||{},this.unaryOps={sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,sinh:Math.sinh||D1,cosh:Math.cosh||O1,tanh:Math.tanh||F1,asinh:Math.asinh||N1,acosh:Math.acosh||U1,atanh:Math.atanh||G1,sqrt:Math.sqrt,cbrt:Math.cbrt||nT,log:Math.log,log2:Math.log2||lT,ln:Math.log,lg:Math.log10||xp,log10:Math.log10||xp,expm1:Math.expm1||aT,log1p:Math.log1p||oT,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,trunc:Math.trunc||W1,"-":H1,"+":Number,exp:Math.exp,not:V1,length:X1,"!":Ep,sign:Math.sign||rT},this.binaryOps={"+":b1,"-":w1,"*":x1,"/":E1,"%":_1,"^":Math.pow,"||":T1,"==":S1,"!=":C1,">":M1,"<":k1,">=":B1,"<=":I1,and:P1,or:R1,in:L1,"=":q1,"[":Q1},this.ternaryOps={"?":Tp},this.functions={random:z1,fac:Ep,min:Z1,max:J1,hypot:Math.hypot||_p,pyt:Math.hypot||_p,pow:Math.pow,atan2:Math.atan2,if:Tp,gamma:hd,roundTo:K1,map:$1,fold:eT,filter:tT,indexOf:iT,join:sT},this.consts={E:Math.E,PI:Math.PI,true:!0,false:!1}}ms.prototype.parse=function(s){var e=[],t=new et(this,new ut(this,s),{allowMemberAccess:this.options.allowMemberAccess});return t.parseExpression(e),t.expect(ra,"EOF"),new Si(e,this)};ms.prototype.evaluate=function(s,e){return this.parse(s).evaluate(e)};var Sg=new ms;ms.parse=function(s){return Sg.parse(s)};ms.evaluate=function(s,e){return Sg.parse(s).evaluate(e)};var Cp={"+":"add","-":"subtract","*":"multiply","/":"divide","%":"remainder","^":"power","!":"factorial","<":"comparison",">":"comparison","<=":"comparison",">=":"comparison","==":"comparison","!=":"comparison","||":"concatenate",and:"logical",or:"logical",not:"logical","?":"conditional",":":"conditional","=":"assignment","[":"array","()=":"fndef"};function hT(s){return Cp.hasOwnProperty(s)?Cp[s]:s}ms.prototype.isOperatorEnabled=function(s){var e=hT(s),t=this.options.operators||{};return!(e in t)||!!t[e]};const go=[1,1/2,1/3,1/4,1/6,1/8,1/12,1/16,1/24,1/48];function cT(s){for(let e=0;en),s.length==0)return-1;if(e>=t(s[s.length-1])){let n=s.length-1;for(;n>0&&t(s[n-1])==e;)n--;return n}let i=0,r=s.length;for(;i<=r&&i>>1;if(t(s[n])==e){for(;n>0&&t(s[n-1])==e;)n--;return n}t(s[n])e&&(r=n-1)}return Math.max(0,r)}function Xa(s,e,t){if(t=t??(r=>r),s.length==0)return-1;let i=Bt(s,e,t);for(;s[i-1]&&t(s[i-1])==e;)i--;return i}function Mp(s,e){return!(Object.keys(s).some(t=>s[t]!=e[t])||Object.keys(e).some(t=>s[t]!=e[t]))}function na(s){try{return ms.evaluate(s)}catch{return null}}function Yi(s,e){let t=s.length;if(s.length!=0)for(;t--;)e(s[t],t)&&s[t].destroy()}function Ec(s){return s==""?"":s.slice(0,1).toUpperCase()+s.slice(1).toLowerCase()}function _c(s){return s.button==2||s.getModifierState("Control")&&xi}function PC(){try{return window.self!==window.top}catch{return!0}}function RC(s,e,t,i,r){const n=[];for(let a=0;a1&&(i.innerHTML+=` (${t})`),i.classList.add("waterfall-item"),_e.messages[e]={type:"",container:i,timeoutID:setTimeout(()=>{i.classList.add("waterfall-exiting")},5e3),clearTimeoutID:setTimeout(()=>{delete this.messages[e],this.view.removeChild(i)},5500),count:t},this.view.appendChild(i)}static createFormatted(e,t){if(this.view==null)return;let i=1;if(this.messages[e]&&this.messages[e].type==t){const n=this.messages[e];clearTimeout(n.timeoutID),clearTimeout(n.clearTimeoutID),i=++n.count,this.view.removeChild(n.container)}const r=document.createElement("div");r.innerHTML=`
${Ec(t)}:
`+e,i>1&&(r.innerHTML+=` (${i})`),r.classList.add("waterfall-item"),console[t](e),_e.messages[e]={type:t,container:r,timeoutID:setTimeout(()=>{r.classList.add("waterfall-exiting")},5e3),clearTimeoutID:setTimeout(()=>{delete this.messages[e],this.view.removeChild(r)},5500),count:i},this.view.appendChild(r)}}class dT{cols=[];keyDown(e){this.cols[e]=(this.cols[e]??0)+1}keyUp(e){this.cols[e]=(this.cols[e]??1)-1,this.cols[e]=Math.max(this.cols[e],0)}isPressed(e){return!!this.cols[e]}getHeldCols(){return this.cols.map((e,t)=>t).filter(e=>this.isPressed(e))}reset(){this.cols=[]}}const kp=["audio.rate","chart.snap","chart.CMod","play.timingCollection"];class Go{static app={width:800,height:600,fullscreen:!1};static general={spinnerStep:1,smoothAnimations:!0,warnBeforeExit:!0,showPlaybackOptions:!0};static chart={CMod:!1,reverse:!1,mousePlacement:!1,zoom:1,speed:250,snap:1,hideWarpedArrows:!1,hideFakedArrows:!1,doSpeedChanges:!0,drawNoteFlash:!0,drawIcons:!0,receptorYPos:-200,maxDrawBeats:20,maxDrawBeatsBack:10,scroll:{scrollSensitivity:1,scrollSnapEveryScroll:!navigator.userAgent.includes("Mac"),invertZoomScroll:!1,invertReverseScroll:!0},waveform:{enabled:!0,antialiasing:!0,color:6316402,opacity:.5,allowFilter:!0,filteredColor:1987134,filteredOpacity:.5,lineHeight:1,speedChanges:!0},noteLayout:{enabled:!0},npsGraph:{enabled:!1,color1:4892604,color2:4340858},timingEventOrder:{left:["LABELS","FAKES","TIMESIGNATURES","DELAYS","WARPS","STOPS","BPMS"],right:["SPEEDS","SCROLLS","TICKCOUNTS","COMBOS","ATTACKS","BGCHANGES","FGCHANGES"]},renderTimingEvent:{BPMS:!0,STOPS:!0,DELAYS:!0,WARPS:!0,FAKES:!0,COMBOS:!0,SPEEDS:!0,LABELS:!0,SCROLLS:!0,TIMESIGNATURES:!0,TICKCOUNTS:!0,BGCHANGES:!0,FGCHANGES:!0,ATTACKS:!0},noteskin:{type:"dance-single",name:"default"},lastNoteskins:{"dance-single":"default","dance-double":"default","dance-couple":"default","dance-solo":"default","dance-solodouble":"default","dance-threepanel":"default","dance-threedouble":"default","pump-single":"default","pump-double":"default","pump-versus":"default","pump-couple":"default","pump-halfdouble":"default"}};static audio={assistTick:!1,metronome:!1,rate:1,masterVolume:1,songVolume:.2,soundEffectVolume:.5,allowFilter:!0};static play={offset:0,effectOffset:0,visualOffset:0,hideBarlines:!1,judgementTilt:!0,timingCollection:"ITG",timingWindowScale:1,timingWindowAdd:0,defaultTimingCollection:{"dance-single":"ITG","dance-double":"ITG","dance-threepanel":"ITG","dance-threedouble":"ITG","dance-solo":"ITG","dance-solodouble":"ITG"}};static performance={antialiasing:!1,resolution:window.devicePixelRatio};static debug={showFPS:!1,showTimers:!1,showScroll:!1,showNoteskinErrors:!1};static experimental={}}class w extends Go{static extractOptions(e,t){return Object.entries(e).reduce((i,r)=>{const n=t?t+".":"";return typeof r[1]=="object"&&!Array.isArray(r[1])?i=i.concat(this.extractOptions(r[1],n+r[0])):(r[0]=n+r[0],i.push([r[0],r[1]])),i},[])}static applyOption(e){if(typeof this.getDefaultOption(e[0])!=typeof e[1])return console.warn("Couldn't load option "+e[0]+": the value "+e[1]+" ("+typeof e[1]+") does not match the type "+typeof this.getDefaultOption(e[0]));const t=e[0].split("."),i=t.pop();let r=this;for(const n of t)if(n in r)r=r[n];else return console.warn("Couldn't load option "+e[0]+": the id doesn't exist");r[i]=e[1]}static getDefaultOption(e){const t=e.split(".");let i=Go;for(const r of t)if(r in i)i=i[r];else return;if(!(typeof i=="object"&&!Array.isArray(i)))return i}static getOption(e){const t=e.split(".");let i=this;for(const r of t)if(r in i)i=i[r];else return;if(!(typeof i=="object"&&!Array.isArray(i)))return i}static saveOptions(){const e={};for(const t of this.extractOptions(this)){if(kp.includes(t[0]))continue;const i=this.getDefaultOption(t[0]);if(i==null){console.warn("Couldn't save option "+t[0]+": the id doesn't exist");continue}typeof i!=typeof t[1]?(console.warn("Couldn't save option "+t[0]+": the value "+t[1]+" does not match the type "+typeof this.getDefaultOption(t[0])),e[t[0]]=i):e[t[0]]=t[1]}localStorage.setItem("options",JSON.stringify(e))}static loadOptions(){const e=localStorage.getItem("options");if(!e)return;const t=JSON.parse(e);if(typeof t!="object")return console.error("Couldn't load options from storage");for(const i of Object.entries(t))kp.includes(i[0])||this.applyOption(i)}static clearSave(){localStorage.removeItem("options")}}const Cg={};for(const s of Object.entries(Go))Cg[s[0]]=JSON.parse(JSON.stringify(s[1]));Object.assign(w,Cg);class cl{timingWindowMS;dancePoints;lifeChange;constructor(e,t,i){this.timingWindowMS=e,this.dancePoints=t,this.lifeChange=i}getTimingWindowMS(){return this.timingWindowMS*w.play.timingWindowScale+w.play.timingWindowAdd}}class Ka extends cl{target="dropped";constructor(e,t){super(0,e,t)}}class kr extends cl{noteType;constructor(e,t,i,r){super(t,i,r),this.noteType=e}}const uT="/smeditor/assets/judgementITG-5390eacd.png",pT="/smeditor/assets/judgementWaterfall-5bb3f994.png";class it{static ITG=new it(uT,["w0","w1","w2","w3","w4","w5","miss"]);static WATERFALL=new it(pT,["w0","w1","w2","w3","w4","w5","miss"]);texHeight=0;texWidth=0;texture;judgeNames=[];constructor(e,t){this.judgeNames=t,this.loadTex(e)}async loadTex(e){const t=await Yr.load(e);this.texture=t,this.texHeight=t.height,this.texWidth=t.width}getTexture(e,t){if(!this.texture||!this.judgeNames.includes(t.id))return;let i=0;const r=this.judgeNames.indexOf(t.id)*this.texHeight/this.judgeNames.length;return e>=0&&(i+=this.texWidth/2),this.texture.frame=new Me(i,r,this.texWidth/2,this.texHeight/this.judgeNames.length),this.texture}}class qa extends cl{target="mine";constructor(e,t,i){super(e,t,i)}}class vt extends cl{id;name;color;judgementTexture;constructor(e,t,i,r,n,a,o){super(r,n,a),this.id=e,this.name=t,this.color=i,this.judgementTexture=o}}const Mg=new vt("w0","Fantastic",183528,0,0,0,it.ITG);class Qa extends vt{constructor(e,t,i,r,n){super("miss",e,t,0,i,r,n)}}function ji(s){return s.color!=null&&s.id!="miss"}function Ci(s){return s.color!=null&&s.id=="miss"}function mr(s){return!!s.noteType}function pn(s){return s.target=="dropped"}function dl(s){return s.target=="mine"}class Je{static COLLECTIONS={ITG:new Je([new vt("w0","Fantastic",2215144,23,5,.008,it.ITG),new vt("w2","Excellent",14851096,44.5,4,.008,it.ITG),new vt("w3","Great",6736213,103.5,2,.004,it.ITG),new vt("w4","Decent",11820287,136.5,0,0,it.ITG),new vt("w5","Way Off",13206878,181.5,-6,-.05,it.ITG),new Qa("Miss",16724016,-12,-.1,it.ITG),new kr("Hold",321.5,5,-.008),new kr("Roll",351.5,5,-.008),new Ka(0,-.08),new qa(71.5,-6,-.05)],103.5),FA:new Je([new vt("w0","Fantastic",2215144,15,3.5,.008,it.ITG),new vt("w1","Fantastic",16777215,23,3,.008,it.ITG),new vt("w2","Excellent",14851096,44.5,2,.008,it.ITG),new vt("w3","Great",6736213,103.5,1,.004,it.ITG),new vt("w4","Decent",11820287,136.5,0,0,it.ITG),new vt("w5","Way Off",13206878,181.5,0,-.05,it.ITG),new Qa("Miss",16724016,0,-.1,it.ITG),new kr("Hold",321.5,1,-.008),new kr("Roll",351.5,1,-.008),new Ka(0,-.08),new qa(71.5,-1,-.05)],103.5),WATERFALL:new Je([new vt("w0","Masterful",16711870,15,10,.008,it.WATERFALL),new vt("w2","Awesome",16776960,30,9,.008,it.WATERFALL),new vt("w3","Solid",51200,50,6,.008,it.WATERFALL),new vt("w4","OK",33023,100,3,.004,it.WATERFALL),new vt("w5","Fault",8421504,160,0,0,it.WATERFALL),new Qa("Miss",16724016,0,-.1,it.WATERFALL),new kr("Hold",300,6,-.008),new kr("Roll",350,6,-.008),new Ka(0,-.08),new qa(71.5,-3,-.05)],100)};windows=[];holdWindows={};missWindow;droppedWindow;mineWindow;hideLimitMS;constructor(e,t){this.missWindow=new Qa("Miss",16724016,-12,-.1,it.ITG),this.droppedWindow=new Ka(0,-.08),this.mineWindow=new qa(71.5,-1,-.05);for(const i of e)ji(i)?this.windows.push(i):Ci(i)?this.missWindow=i:mr(i)?this.holdWindows[i.noteType]=i:pn(i)?this.droppedWindow=i:dl(i)&&(this.mineWindow=i);this.windows.sort((i,r)=>i.timingWindowMS-r.timingWindowMS),this.hideLimitMS=t}judgeInput(e){for(const t of this.windows)if(t.getTimingWindowMS()/1e3>=Math.abs(e))return t;return this.missWindow}getHeldJudgement(e){return this.holdWindows[e.type]}getMissJudgement(){return this.missWindow}getDroppedJudgement(){return this.droppedWindow}getMineJudgement(){return this.mineWindow}shouldHideNote(e){return e.id!="miss"&&e.timingWindowMS<=this.hideLimitMS}maxWindowMS(){return this.windows.at(-1)?.getTimingWindowMS()??0}getMaxDancePoints(){return Math.max(...this.windows.map(e=>e.dancePoints),this.missWindow.dancePoints)}getMaxHoldDancePoints(e){return Math.max(this.holdWindows[e].dancePoints??0,this.droppedWindow.dancePoints)}getStandardWindows(){return[...this.windows]}getHoldWindows(){return[...Object.values(this.holdWindows)]}static getCollection(e){return this.COLLECTIONS[e]??this.COLLECTIONS.ITG}static getCollections(){return Je.COLLECTIONS}}class fT{}class Ws extends fT{chordCohesion=new Map;missNoteIndex=0;holdProgress=[];heldCols=new dT;collection=Je.getCollection("ITG");usesHoldTicks=!1;update(e){if(!e.loadedChart||!e.chartView)return;const i=e.chartView.getTimeWithOffset()-this.collection.maxWindowMS()/1e3*w.audio.rate;let r=-1;for(;e.loadedChart.getNotedata()[this.missNoteIndex]&&e.loadedChart.getNotedata()[this.missNoteIndex].second=e.chartView.chart.getSecondsFromBeat(n.beat+n.hold)&&(n.gameplay.hideNote=!0,e.chartView.doJudgement(n,null,this.collection.getHeldJudgement(n)),e.chartView.getNotefield().releaseHold(n.col),this.holdProgress.splice(this.holdProgress.indexOf(n),1),e.gameStats?.addHoldDataPoint(n,this.collection.getHeldJudgement(n)))}for(const n of this.heldCols.getHeldCols()){const a=this.getClosestNote(e.loadedChart.getNotedata(),e.chartView.getTimeWithOffset()-this.collection.getMineJudgement().getTimingWindowMS()/2e3,n,["Mine"],this.collection.getMineJudgement().getTimingWindowMS()/2);a&&(a.gameplay.hasHit=!0,a.gameplay.hideNote=!0,e.chartView.doJudgement(a,null,this.collection.getMineJudgement()),e.gameStats?.addDataPoint([a],this.collection.getMineJudgement(),null),e.mine.play())}}startPlay(e){if(!e.loadedChart||!e.chartView)return;this.collection=Je.getCollection(w.play.timingCollection),this.chordCohesion.clear();for(const n of e.loadedChart.getNotedata())n.type=="Mine"||n.fake||n.warped||(this.chordCohesion.has(n.beat)||this.chordCohesion.set(n.beat,[]),this.chordCohesion.get(n.beat).push(n));const i=e.chartView.getTimeWithOffset()-this.collection.maxWindowMS()/1e3*w.audio.rate;let r=Bt(e.loadedChart.getNotedata(),i,n=>n.second)+1;r>=1&&i<=e.loadedChart.getNotedata()[r-1].second&&r--,this.missNoteIndex=r,this.holdProgress=[],this.heldCols.reset()}keyDown(e,t){if(!e.loadedChart||!e.chartView)return;const i=e.chartView.getTimeWithOffset(),r=this.getClosestNote(e.loadedChart.getNotedata(),i,t,["Tap","Hold","Roll"]);this.heldCols.keyDown(t),e.chartView.getNotefield().press(t);for(const n of this.holdProgress)n.type=="Roll"&&n.col==t&&(n.gameplay.lastHoldActivation=Date.now());r?this.hitNote(e,r,i):e.chartView.getNotefield().ghostTap(t)}keyUp(e,t){if(!e.loadedChart||!e.chartView)return;const i=e.chartView.getTimeWithOffset(),r=this.getClosestNote(e.loadedChart.getNotedata(),i,t,["Lift"]);this.heldCols.keyUp(t),e.chartView.getNotefield().lift(t),r&&this.hitNote(e,r,i)}shouldAssistTick(e){return!e.fake&&!e.warped&&e.type!="Mine"}hitNote(e,t,i){t.gameplay.hasHit=!0,Pe(t)&&(t.gameplay.lastHoldActivation=Date.now(),t.type=="Roll"?e.chartView.getNotefield().activateRoll(t.col):e.chartView.getNotefield().activateHold(t.col),this.holdProgress.push(t));const r=this.chordCohesion.get(t.beat);if(r.every(n=>n.gameplay.hasHit)){const n=this.collection.judgeInput((i-t.second)/w.audio.rate),a=this.collection.shouldHideNote(n);r.forEach(o=>{e.chartView.doJudgement(o,(i-o.second)/w.audio.rate,n),a&&wg(o)&&(o.gameplay.hideNote=!0)}),e.gameStats?.addDataPoint(r,n,(i-t.second)/w.audio.rate)}}getClosestNote(e,t,i,r,n){n=n??this.collection.maxWindowMS(),n*=w.audio.rate;const a=t-n/1e3,o=t+n/1e3;let l=Bt(e,a,u=>u.second)+1;l>=1&&a<=e[l-1].second&&l--;let c;for(;e[l]&&e[l].second<=o;){const u=e[l];if(u.gameplay.hasHit||u.col!=i||u.fake||u.warped||!r.includes(u.type)){l++;continue}(!c||Math.abs(u.second-t)=i.getTimingWindowMS():!1}calculateMaxDP(e,t){const i=new Map,r=new Map;for(const a of e)a.type=="Mine"||a.fake||a.warped||(Pe(a)&&(r.has(a.type)||r.set(a.type,0),r.set(a.type,r.get(a.type)+1)),i.has(a.beat)||i.set(a.beat,[]),i.get(a.beat).push(a));let n=i.size*Je.getCollection(w.play.timingCollection).getMaxDancePoints();return n+=Array.from(r.entries()).reduce((a,o)=>a+o[1]*Je.getCollection(w.play.timingCollection).getMaxHoldDancePoints(o[0]),0),n}}function wi(s,e,t){return s*(1-t)+e*t}function Dt(s,e,t){return(t-s)/(e-s)}function ne(s,e){return Math.round(s*Math.pow(10,e))/Math.pow(10,e)}function Ve(s,e,t){return Math.max(e,Math.min(t,s))}function kg(s){if(s.length==0)return 0;const e=s.length,t=s.reduce((i,r)=>i+r)/e;return Math.sqrt(s.map(i=>Math.pow(i-t,2)).reduce((i,r)=>i+r)/e)}function ul(s){if(s.length==0)return 0;s=[...s],s.sort((t,i)=>t-i);const e=Math.floor(s.length/2);return s.length%2?s[e]:(s[e-1]+s[e])/2}function mT(s){return s.length==0?0:s.reduce((e,t)=>e+t)/s.length}function Bg(s,e){return e?Bg(e,s%e):e===0?s:NaN}function Ig(s,e){return s*e/Bg(s,e)}function Bp(s){let e=1;for(let t=0;te&&(e=t);return e}class gT{}const yT={1:"Tap",2:"Hold",4:"Roll",M:"Mine",F:"Fake",L:"Lift"},vT={Tap:"1",Hold:"2",Roll:"4",Mine:"M",Fake:"F",Lift:"L"};class ui extends gT{serialize(e,t){if(e.length==0)return"";const i=[];let r=0;const n=e.filter(Pe).map(c=>({col:c.col,beat:c.beat+c.hold})).sort((c,u)=>c.beat-u.beat),a=e.at(-1),o=a.beat+(Pe(a)?a.hold:0);let l=Math.ceil(o/4);o%4==0&&l++;for(let c=0;cxc(m.beat))),Bp(d.map(m=>xc(m.beat)))));for(let m=0;m=t.numCols);h++){const d=a*4+l/o.length*4;let p=c[h];if(p=="{"||p=="["){let m="";for(h++;hn[c]?n[c]=void 0:n[c]1&&t.Jumps++,r+l>2&&t.Hands++,r=0,i=o.beat}if(o.type!="Mine"&&!o.fake&&!o.warped&&r++,o.fake||o.warped){t.Fakes++;continue}switch(o.type){case"Tap":t.Taps++;break;case"Hold":t.Holds++;break;case"Roll":t.Rolls++;break;case"Lift":t.Lifts++;break;case"Mine":t.Mines++;break}Pe(o)&&(n[o.col]=o.beat+o.hold)}let a=0;for(let o=0;o1&&t.Jumps++,r+a>2&&t.Hands++,t}getNPSGraph(e,t){const i=e.at(-1);if(!i)return[];let r=i.beat;Pe(i)&&(r+=i.hold);const n=[];let a=0;for(;e[a];){const o=Math.floor(t.getMeasure(e[a].beat)),l=t.getBeatFromMeasure(o),c=t.getBeatFromMeasure(o+1),u=t.getSecondsFromBeat(c)-t.getSecondsFromBeat(l);if(u<=.05){for(;e[a]?.beat=e.chartView.chart.getSecondsFromBeat(o.beat+o.hold)&&(o.gameplay.hideNote=a.hitLast||l.length==0||o.gameplay?.droppedHoldBeat===void 0,this.tickProgress.delete(a))}for(const a of this.heldCols.getHeldCols()){const o=this.getClosestNote(e.loadedChart.getNotedata(),e.chartView.getTimeWithOffset()-this.collection.getMineJudgement().getTimingWindowMS()/2e3,a,["Mine"],this.collection.getMineJudgement().getTimingWindowMS()/2);o&&(o.gameplay.hasHit=!0,o.gameplay.hideNote=!0,e.chartView.doJudgement(o,0,this.collection.getMineJudgement()),e.gameStats?.addDataPoint([o],this.collection.getMineJudgement(),0),e.mine.play())}}hitNote(e,t,i){t.gameplay.hasHit=!0;const r=this.chordCohesion.get(t.beat);if(r.every(n=>n.gameplay.hasHit)){const n=this.collection.judgeInput((i-t.second)/w.audio.rate),a=this.collection.shouldHideNote(n);r.forEach(o=>{e.chartView.doJudgement(o,(i-o.second)/w.audio.rate,n),a&&wg(o)&&(o.gameplay.hideNote=!0)}),e.gameStats?.addDataPoint(r,n,(i-t.second)/w.audio.rate)}}startPlay(e){if(!e.loadedChart||!e.chartView)return;this.collection=Je.getCollection(w.play.timingCollection),this.chordCohesion.clear();for(const n of e.loadedChart.getNotedata())n.type=="Mine"||n.fake||n.warped||(this.chordCohesion.has(n.beat)||this.chordCohesion.set(n.beat,[]),this.chordCohesion.get(n.beat).push(n));const i=e.chartView.getTimeWithOffset()-this.collection.maxWindowMS()/1e3*w.audio.rate;let r=Bt(e.loadedChart.getNotedata(),i,n=>n.second)+1;r>=1&&i<=e.loadedChart.getNotedata()[r-1].second&&r--,this.missNoteIndex=r,this.holdIndex=r,this.tickProgress=new Set,this.heldCols.reset()}keyDown(e,t){if(!e.loadedChart||!e.chartView)return;const i=e.chartView.getTimeWithOffset(),r=this.getClosestNote(e.loadedChart.getNotedata(),i,t,["Tap","Hold","Roll"]);this.heldCols.keyDown(t),e.chartView.getNotefield().press(t);for(const{hold:n}of this.tickProgress)n.type=="Roll"&&n.col==t&&(n.gameplay.lastHoldActivation=Date.now(),n.gameplay.droppedHoldBeat=void 0,e.chartView.getNotefield().activateRoll(n.col));r?this.hitNote(e,r,i):e.chartView.getNotefield().ghostTap(t)}shouldDropHold(e,t){if(!e.gameplay?.lastHoldActivation)return!1;const i=this.collection.getHeldJudgement(e);return i?t-e.gameplay.lastHoldActivation>=i.getTimingWindowMS():!1}generateHoldTicks(e,t){const i=e.getTimingData("TICKCOUNTS");let r=Bt(i,t.beat,c=>c.beat),a=1/(i[r]??{type:"TICKCOUNTS",beat:0,value:4}).value,o=Math.round(t.beat/a)*a;o==t.beat&&(o+=a);const l=[];for((i[r]?.value??4)!=0?l.push(o):o=t.beat;oc<=os(t)&&!e.isBeatWarped(c))}else o+=a;(i[r]?.value??4)!=0&&l.at(-1)!=o&&l.push(o)}return l.filter(c=>c<=os(t)&&!e.isBeatWarped(c))}calculateMaxDP(e,t){const i=new Map;let r=0;for(const n of e)n.type=="Mine"||n.fake||(Pe(n)&&(r+=Je.getCollection(w.play.timingCollection).getMaxDancePoints()*this.generateHoldTicks(t,n).length),!n.warped&&(i.has(n.beat)||i.set(n.beat,[]),i.get(n.beat).push(n)));return r+=i.size*Je.getCollection(w.play.timingCollection).getMaxDancePoints(),r}}class He{static gameTypes={};static priority=[];static register(e){e.notefieldWidth=e.columnWidths.reduce((t,i)=>t+i,0),He.gameTypes[e.id]=e,this.priority.push(e)}static getPriority(){return this.priority}static getGameType(e){return He.gameTypes[e]}static getTypes(){return this.gameTypes}}He.register({id:"dance-single",numCols:4,columnWidths:[64,64,64,64],columnNames:["Left","Down","Up","Right"],gameLogic:new Ws,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[3,1,2,0],vertical:[0,2,1,3]}});He.register({id:"dance-double",numCols:8,columnWidths:[64,64,64,64,64,64,64,64],columnNames:["Left","Down","Up","Right","Left","Down","Up","Right"],gameLogic:new Ws,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[3,1,2,0,7,5,6,4],vertical:[0,2,1,3,4,6,5,7]}});He.register({id:"dance-couple",numCols:8,columnWidths:[64,64,64,64,64,64,64,64],columnNames:["Left","Down","Up","Right","Left","Down","Up","Right"],gameLogic:new Ws,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[3,1,2,0,7,5,6,4],vertical:[0,2,1,3,4,6,5,7]}});He.register({id:"dance-solo",numCols:6,columnWidths:[64,64,64,64,64,64],columnNames:["Left","UpLeft","Down","Up","UpRight","Right"],gameLogic:new Ws,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[5,4,2,3,1,0],vertical:[0,1,3,2,4,5]}});He.register({id:"dance-solodouble",numCols:12,columnWidths:[64,64,64,64,64,64,64,64,64,64,64,64],columnNames:["Left","UpLeft","Down","Up","UpRight","Right","Left","UpLeft","Down","Up","UpRight","Right"],gameLogic:new Ws,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[5,4,2,3,1,0,11,10,8,9,7,6],vertical:[0,1,3,2,4,5,6,7,9,8,10,11]}});He.register({id:"dance-threepanel",numCols:3,columnWidths:[64,64,64],columnNames:["UpLeft","Down","UpRight"],gameLogic:new Ws,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[2,1,0],vertical:[0,1,2]}});He.register({id:"dance-threedouble",numCols:6,columnWidths:[64,64,64,64,64,64],columnNames:["UpLeft","Down","UpRight","UpLeft","Down","UpRight"],gameLogic:new Ws,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[2,1,0,5,4,3],vertical:[0,1,2,3,4,5]}});He.register({id:"pump-single",numCols:5,columnWidths:[58,58,58,58,58],columnNames:["DownLeft","UpLeft","Center","UpRight","DownRight"],gameLogic:new ma,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[4,3,2,1,0],vertical:[1,0,2,4,3]}});He.register({id:"pump-double",numCols:10,columnWidths:[58,58,58,58,58,58,58,58,58,58],columnNames:["DownLeft","UpLeft","Center","UpRight","DownRight","DownLeft","UpLeft","Center","UpRight","DownRight"],gameLogic:new ma,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[9,8,7,6,5,4,3,2,1,0],vertical:[1,0,2,4,3,6,5,7,9,8]}});He.register({id:"pump-versus",numCols:10,columnWidths:[58,58,58,58,58,58,58,58,58,58],columnNames:["DownLeft","UpLeft","Center","UpRight","DownRight","DownLeft","UpLeft","Center","UpRight","DownRight"],gameLogic:new ma,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[9,8,7,6,5,4,3,2,1,0],vertical:[1,0,2,4,3,6,5,7,9,8]}});He.register({id:"pump-couple",numCols:10,columnWidths:[58,58,58,58,58,58,58,58,58,58],columnNames:["DownLeft","UpLeft","Center","UpRight","DownRight","DownLeft","UpLeft","Center","UpRight","DownRight"],gameLogic:new ma,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[9,8,7,6,5,4,3,2,1,0],vertical:[1,0,2,4,3,6,5,7,9,8]}});He.register({id:"pump-halfdouble",numCols:6,columnWidths:[58,58,58,58,58,58],columnNames:["Center","UpRight","DownRight","DownLeft","UpLeft","Center"],gameLogic:new ma,parser:new ui,editNoteTypes:["Tap","Mine","Fake","Lift"],flipColumns:{horizontal:[5,4,3,2,1,0],vertical:[0,2,1,4,3,5]}});class q extends mn{static _instance;static get instance(){return q._instance||(q._instance=new q),q._instance}static emit(e,...t){return q.instance.emit(e,...t)}static on(e,t,i){q.instance.on(e,t,i)}static off(e,t,i,r){q.instance.off(e,t,i,r)}}const Ai=["Beginner","Easy","Medium","Hard","Challenge","Edit"],ls=["BPMS","STOPS","WARPS","DELAYS","LABELS","SPEEDS","SCROLLS","TICKCOUNTS","TIMESIGNATURES","COMBOS","FAKES","ATTACKS","BGCHANGES","FGCHANGES"];class Pg{gameType=He.getPriority()[0];description="";difficulty="Beginner";meter=1;meterF=1;radarValues="0,0,0,0,0";chartName="";chartStyle="";credit="";music;timingData;sm;other_properties={};notedata=[];_notedataStats;_npsGraph;_lastBeat=0;_lastSecond=0;constructor(e,t){if(this.timingData=e.timingData.createChartTimingData(this),this.timingData.reloadCache(),this.sm=e,!t){this.recalculateStats();return}if(e._type=="ssc"){const i=t;for(const n in i)(n=="OFFSET"||ls.includes(n))&&this.timingData.parse(n,i[n]);this.timingData.reloadCache();const r=He.getGameType(i.STEPSTYPE);if(!r)throw Error("Unknown step type "+i.STEPSTYPE);if(this.gameType=r,this.description=i.DESCRIPTION??"",Ai.includes(i.DIFFICULTY))this.difficulty=i.DIFFICULTY;else throw Error("Unknown chart difficulty "+i.DIFFICULTY);this.meter=parseInt(i.METER),(!isFinite(this.meter)||this.meter<0)&&(this.meter=0),this.meterF=parseFloat(i.METERF),(!isFinite(this.meterF)||this.meterF<0)&&(this.meterF=this.meter),this.radarValues=i.RADARVALUES??"",this.notedata=r.parser.fromString(i.NOTES,r).map(n=>this.computeNote(n))??[],this.credit=i.CREDIT??"",this.chartName=i.CHARTNAME??"",this.chartStyle=i.CHARTSTYLE??"",this.music=i.MUSIC;for(const n in i)["STEPSTYPE","DESCRIPTION","DIFFICULTY","METER","METERF","RADARVALUES","CREDIT","CHARTNAME","CHARTSTYLE","MUSIC","NOTES","NOTEDATA"].includes(n)||(this.other_properties[n]=i[n])}else{const i=/([\w-]+):[\s ]*([^:]*):[\s ]*(\w+):[\s ]*(\d+):[\s ]*([\d.,]*):[\s ]*([\w\s, ]*)/g.exec(t.trim());if(i!=null){const r=He.getGameType(i[1]);if(!r)throw Error("Unknown step type "+i[1]);if(this.gameType=r,this.description=i[2]??"",Ai.includes(i[3]))this.difficulty=i[3];else throw Error("Unknown chart difficulty "+i[3]);this.meter=parseInt(i[4]),(!isFinite(this.meter)||this.meter<0)&&(this.meter=0),this.meterF=this.meter,this.radarValues=i[5]??"",this.notedata=r.parser.fromString(i[6],r).map(n=>this.computeNote(n))??[]}else throw Error("Failed to load sm chart!")}this.recalculateStats()}getNotedataStats(){return this._notedataStats}getNPSGraph(){return this._npsGraph}getMaxNPS(){let e=0;for(const t of this._npsGraph)t>e&&(e=t);return e}getLastBeat(){return this._lastBeat}getLastSecond(){return this._lastSecond}getSecondsFromBeat(e,t){return this.timingData.getSecondsFromBeat(e,t)}getBeatFromSeconds(e){return this.timingData.getBeatFromSeconds(e)}getBeatFromEffectiveBeat(e){return this.timingData.getBeatFromEffectiveBeat(e)}isBeatWarped(e){return this.timingData.isBeatWarped(e)}isBeatFaked(e){return this.timingData.isBeatFaked(e)}recalculateLastNote(){let e=0,t=0;this.notedata.forEach(i=>{const r=i.beat+(Pe(i)?i.hold:0),n=this.timingData.getSecondsFromBeat(r);r>e&&(e=r),n>t&&(t=n)}),this._lastBeat=e,this._lastSecond=t}getNoteIndex(e){if(this.notedata.includes(e))return this.notedata.indexOf(e);for(let t=0;tr.beat)+1;return i>=1&&this.notedata[i-1].beat>e.beat&&i--,this.notedata.splice(i,0,t),t}addNote(e,t=!0){const i=this.insertNote(e);return t&&q.emit("chartModified"),i}addNotes(e,t=!0){const i=e.map(r=>this.insertNote(r));return t&&q.emit("chartModified"),i}computeNote(e){return Object.assign(e,{warped:this.timingData.isBeatWarped(e.beat),fake:e.type=="Fake"||this.timingData.isBeatFaked(e.beat),second:this.timingData.getSecondsFromBeat(e.beat),quant:Math.round(xc(this.timingData.getBeatOfMeasure(e.beat)))})}modifyNote(e,t,i=!0){const r=this.getNoteIndex(e);if(r==-1)return;const n=Object.assign({},this.notedata[r]);this.notedata.splice(r,1),Pe(t)||(t.hold=void 0),Object.assign(n,t),this.addNote(n),i&&q.emit("chartModified")}removeNote(e,t=!0){const i=this.getNoteIndex(e);if(i==-1)return;const r=this.notedata.splice(i,1);return t&&q.emit("chartModified"),r[0]}removeNotes(e,t=!0){const i=e.map(r=>{const n=this.getNoteIndex(r);return n==-1?void 0:this.notedata.splice(n,1)[0]}).filter(r=>r!=null);return t&&q.emit("chartModified"),i}setNotedata(e){this.notedata=e,q.emit("chartModified")}getNotedata(){return this.notedata}recalculateNotes(){this.notedata=this.notedata.map(e=>this.computeNote(e))}recalculateStats(){this._notedataStats=this.gameType.parser.getStats(this.notedata),this._npsGraph=this.gameType.parser.getNPSGraph(this.notedata,this.timingData),this.recalculateLastNote()}getMusicPath(){return this.music??this.sm.properties.MUSIC??""}toString(){return this.difficulty+" "+this.meter}serialize(e){let t="//---------------"+this.gameType.id+" - "+this.description+`--------------- @@ -1172,7 +1172,7 @@ void main(void)\r `;for(const i in this.other_properties)t+=`#${i}:${this.other_properties[i]}; `;this.timingData.usesChartTiming()||(t+=this.timingData.serialize("ssc")),t+=`#NOTES: `}return t+=this.gameType.parser.serialize(this.notedata,this.gameType)+`; -`,t}requiresSSC(){return this.chartName!==""||this.chartStyle!==""||this.credit!==""||this.music!==void 0||this.timingData.requiresSSC()}}var Ce=(s=>(s.SELECT_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVR4nO3YQQ6CQBBE0X8PXKrn9DqGcDNNZC5QhGR2agQk6Z5QL+l9FwULGszMzN6dgB4ogFbOjQTLPzcsniZE/+fy4SHKTgHCQijZFGAALq0GUJ35u+xaDiDg3nqA15YA0bR2HwfYmdxAMLmBYHIDweQGgskNBJMbCCY3EExuIJgO18DY+k/9kGBRfZn57PnTFXgkWFYfDltnFurqESnD6zTWJ794eTMzO44JY84XrlhT/UgAAAAASUVORK5CYII=",s.REVERT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAACY0lEQVR4nO2aTUhVQRiGn1pYSVqLBM0WbQpNuLcoRIhS3AVFEEWLtiEKRRAUghAXidyoRNAf7XPhwqSfRW2jRVw0cpVCBJrR36KIfggqDswFGQY7Z+65986Zbx74tud+73PnnDNnZiAQCAQCgYAFm4BuYCMC2QO8B/4CS8BWBLEb+KTCl+ocQsgbwkc1hJDwHw3hRQjIrxLeewH5/4T3WkAuRnhvBeRihvdSQC5BeO8EtAPvEoT3SkC7RXhvBHQAHyzCR/UWKFahngJTwE01++wBNqQloGgZvtb1HXgInATqyhHw2YEw5dYycMZWxJADAdKqOWCfjYRRyx+8DeytQu0Hjqp/+Q4wv0pPv4DT1ZJQoHa0qZ6/pvmGGsuQgBJb1Kj4Y+jvbKUlFHCHE8BPrb/f6pWZmCsZFIAK+0Xr8Q3QUKmRUMA9jhhuh8u2FxvLoICIa1qf34CmSkgo4Cbr1eRoZa+D5VxwPGMCIi4aJkmkLeES7tKohn6p1+i50Jy2hMO4zSOt31NpXHQAmAb6cZ/zmoAbCKNHE3APYezSBDxDGE2agAWEsV0T8AJhdGoCHiOM45qAuwjjuiZgGGG80gQcQhBdhmX0egTxQBMwiSAOGhZFehHCZrUMtjL8c2ANAqgD7mvho5FwAAE0AE8MaxbRq9B7OoBZQ/himrvILtICXDXsB5Q+fFrxjLXATrX3N602PkxrlS+BbTjMOmBEfZ/HPSQRzep+xNirmMjCQe7BGEGS1mvgGBnhVorBZ4C+ck+J1OLkue3JlEV1NOaCevpnlsaEhyR2ZOHeDgQCgUAA9/kHkepiJFq7BJgAAAAASUVORK5CYII=",s.ADD_FOLDER="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAvUlEQVRIie2UTQ7CIBBGnz8rb+Mt2hqv4TGMmt4Kexl7gUa3TXBRTAALQqGJJr5kNpR+r8ykwJ9vogJaQDrqlCrwhWeRfAoPrRYo5xRI4OYTpGLkLDMEevl9wXqGzC2wH3uQa8gGOVpUAALoVAmGW+GNKSc44v4XLqmCwgpcqfVeWzNOEisQAYJGfyHkspPARu3vrGCbHrjrQz4oSSiLiL2TuBLZoljKAMEuRQBwxj2rOjX8RcXQioeqBu3Ln4QChU8M4+FlAAAAAElFTkSuQmCC",s.CHEVRON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAbklEQVRIie2PMQqAMAxFXwfP6qJVPIjYzcOKdUkhQ0BaCoLkLS3k818CjuN8ztApYzIDl7xvmalFsAIZuIFozKPMMrC0CAJwKIkuGVX5KdkmLEm3ci1JSlLKU49yLSmXVG1es0EANvnvInKcP/AA784fpjlWwNQAAAAASUVORK5CYII=",s.DBL_CHEVRON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABA0lEQVR4nO2WywqDMBQF84W1CyWL9ttbsMWfUJgiFOrCFPO+ae+sREOck0Q5xiiKoihKBoAz8ATG9dq0BDAAMx8W4GoalW8nBG55+SEAuyM/O+5Z08DKL8AF6B3PZOzEN/nNGJkhOCAvNgQe8uJCECAvJgQR8tVDkEC+Wgjc/3kb2oXwnLPYyvt0IXLvRAL5eiFIJ18+BNB5nvnoLoR7ji4kwCPBi23Ax293xo8hAaZYeZ8xW3bGTybwCK2/wJtrC33EAkJ0wP3tcPIOcCCgdqEN2oX+ogsNqeSLhyCDvNguFAJSulDku/qqXSgF1OpCKaF0F8oBpbpQTsjdhRRFUZSf4AUM7g40e4mzFAAAAABJRU5ErkJggg==",s.EDIT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABOElEQVR4nO2WQUoDMRSGP5duWgpS157BhQuheAR7mOrSuKviPbqQit5CaC9QEOxO2k2XhaJEAhkoZZLpVJy8wPvgrSaB73+TFwKKokjiAngGlsAG+ACegFMy4Ab4AWxJLXw4sZiA+G6ILpnKW1+PZB5ghlDMngHWCMbsEeALIaIm8s1GatSwa1Swbohv4Lxh30oxU2PtoGHfSqGihoE9t1tr7hA+nCayN/RN3B0/RBh15K20EIfIWykh/iJvcxhYlf8PtPOp0M6nQjufCqP3fEJaQA8YH/AXkj6Jy3jJWd5xlbO840T6w6zgAWhTzjFwGZgJEZ0/AlbAeyREwViavONsS6oqRE+avON651jEQrSlyTvuS872FOiQCW+B2yWbEPNAgJW/ncQzAT6BV3+++36wFUVRFAp+AZvenA82VBInAAAAAElFTkSuQmCC",s.ADD_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAABiElEQVRoge2YMU7DMBSGvwQJVO7CwN1YYEFUMAMdYCpHYUMcgg49A3SgEggGE2GskNh5frYr+ZOsppWS93+q9WIbKpWKD4fAHFgBH8BX4NgCt0CbOjiY8M8BYYfGkgwS8wjBs0qsrOKnwH7g/dkl7DkfGh4K+CfsotL7lz3f1SViCjTAnfPbA8oSMQUgg0RsAUgsoSEACSW0BCCRhFRgrA23KHcnqYD9Ijwjg4RU4MJ5RshYSIJ3SAVmwNM/AcfGuyR4h1QAjMQ58EL4cnyQxqO4279T4F0zywYjJlUgN1VgF4jRRkM5Ag5+PgcptY16U+IUajFLiA2RzpJSTqEGuHdqipfXqQT6wkeRSCEwFF4soS3gE14koS2wcGr0bWxEewRtgTf+hm2dmu5u7TW0gLbAFaZl3vA7PdyaLaalboBL++ZSX2R1P7Az+Ah8WtdTjtdV8RFYW9cnFCgxhuRcJ3R0RO18knOdIgQ6iannOkUIpGaLCT96Mrenn2USM+AYuAYeM2epDPINL56D04/lX9sAAAAASUVORK5CYII=",s.MENU_VERTICAL="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+ElEQVR4nO3XS04CQRSF4X+kYx8h0UWIM5vFoIxVdkCgmbMDlSWBsAchLMLWVHI76ZC2pnLgfMlNOqlJn1TdeoCZmZnZSbqNknUPrICfqCXQRcw1sG2EqGsHdBAybAlR1wtCZpkgaUzGUyZIHyFne43ebPg0JuUSeAe+ot6Ai//+KTsWPaCMKhBVAlWj0dP3GMGZqFp2rUptZqaZcyTNlIwyE2SCkOKPpfUNPCBmvBcmhRghqohlNlGcCTtUV8Ac2ER9xEVSyjmwbtm1PtWu8YPMOfKIkNmxPHVfM0GeEWv0bUuIjWLDd+ONXodYAHcIu4kyMzMzOzW/IiF2pLfCTcAAAAAASUVORK5CYII=",s.COPY="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZklEQVR4nO2YQUoDQRBFHwiDB5AsXCSexYxeIVfwCDlE1hoXuUBuodl4CDGOgSyySrIKGGgZ6EAxTBZOVzc21oPe9OJX/eqqgSkwDMPIiT4wBhbAGjgCTuFsgBnQi5X4JTABDkoJnzvvwJV28nVV3iIn7sSZa1e+mfwrMAKugQv+OBOR+DfwQGYDexAGZPI3wDOwUhxk58/R606BQYiBsRB9Eff3wD7RPOyAsquBhRAaicqnSt4JE3U3/Jq1EKkHFt82p7sP4BYo0KUAhsBSxHrqIiR7+/S1WYm7OvmYDEWsqouAfMY2U9qVb1I0BlvFQNtdTFxIPDOggLMXwGYgCGcthLVQEM5aCGuhIJy1ENZCQbh/3UKb3A3McjfQ87vKbA3gF63zXP+J2/hKuJUoRaxPLdGpEF36IDH2QneNvdCjlvjAb8pSbua2XTdz5ygTmtj6BZc6ff+sVaTtdOX1VStvGIaBOj8GcNhDDTqXrgAAAABJRU5ErkJggg==",s.TRASH="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAABdElEQVRoge2YsU7DMBRFDwxlgb0wlB9BLMDXtFvhE2BAogNDxR+1S+ETEBJiLqVSU6lVGOwoJsQhDnEc0DvSU63c+OXeuElVgyAIddMBBsAUWOqaAH2ttZoj4AmILfWoz2kleyiDNvNJzWjpSgxITUbAEDjUdamPJXo/kMdCpqQGhzn6laFPGvRVmg9Sg90cvWvoiyYM3QArfv5O+64VcG0zuVNwfAHsu+f2whI4yBN2LRNi4B714IUmQnnJxbYCecQV57ngfA3bCvwZJEBoJECGO9R7+9ZRawTzx8XGWutrR83lGl+o+zVadM5v5+ciz0BoJEBoJEBoJEBoJEBoJEBoJECGKPNZVqtM3QFGqD2ckaNWGdlWCY1LgK0x9rG/b/bcWs/K4BLgzRifOMwry6kxfvXQnwfSP9zPwDn1rEQHuNA9k/7jGvp+4xh4x21rvErNgZ6PAKDuus8Qc+DMl/mEHmqJX4BNDaY3utcYj3deEP4rn4hExm+tmh+HAAAAAElFTkSuQmCC",s.IMAGE_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAB8UlEQVRYhd3WTYjNURjH8c9IozRlwUITTbMRNlNWxksWjKxkYbJQY6mUTCKxmDSkZiezm421KQsRFkgpL7Eg2Si3RJOFl5SIzVicc5t7p/9xz//O/5r41el2nnOe83zv8/zPC4usrgLbBPrbXO8DTuHHQgBm8QjvSwZfg0HcxV58L+nfBDDcht9w9P2IO1ie47SkjUCttBMDuIWexQB4gV3YiJutIDoB0AixoRVEpwCyIaoE+BV/Zxvac6zCdlwoclpaIcBt7EN3wdhxrO40wE9cS4wlt3Unv4EslQE4g5nYTlcFkFuCAxjH2dg/hzeY/lsAQ7iH87G/A7sbAPqFe6VWFiC3BDXheF0v7OsBIQOwEvdxpWzwlIouox48Mbe/H0dbF67jU7RvSaw5LVGu3Ax8w9aGti3aTmCPcP0+xdHM9f6o1HXcHQPXoQeF0+9k7I/Efm+BbzIDZQDG4tjLGOwtbph71CwTXkTjZQByS7ACo5jCK1yOgQ9FKMJJOIXDEaZtFWVgDF8iCKxDX4Fvr1CGkXn2BWWg/u8v4mu0vRZKMF8zuIpjGetmA4zGeZcy15zEJukt2aSck/CIkIXPmQB1HcTDKgD2S9zlLfQsZ1IOwIM2gmfrn3oP/J8AqW9gc8Vx1uJd7uSa5qd1VW2iKNhvOK12/OBuEgoAAAAASUVORK5CYII=",s.AUDIO_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADFElEQVRoge2ZzWsTQQDFf200qVrBUBAURU/aVgTFSvUoXsQqgoIUFDx68SKieBILeujJFhH/AD0VRBD8REHBD/zCIqUm6kG0UqltE0FFqqkedif7Nuymm2bTbWUfLLy8+dj3kpndmQnEiBEjxv+KDuAx8BroBlLR2qkMx4BJ4K9c5yN1FBD1QA9u4+bKVdjXPOA6kAf2h+jRFymgD7fp+yWfK0GztPsKNIbm1ANp4AFus31YoaYbIAG8l7YnwzJbiuVAP26jvVjDCaYfAOCQtB0FFldrthTrgSG5ySTWBFYEDbAHa7zfBBpsLQFkpf2JUFzb2Gbf0HT+C+j0qBc0wFWpd1j0g6K/qc6yg04sw6bjPFYgLwQNcETqZXGGYAoYk7JN5TpZAHRhTZ4/JTf3u4awhpIfggZYhDXOTd1dUnZR9HPlzD8MaNpcA8DKKYxVMonPSN3Lom8V/aNf464KjBewXjLpAKa8AqSAO8AXYIfoLVI3DyRtvQ4YlrIVXjfSZ+5xYH4Ac0HgFaBNtIxt0GBAyraLrpN8rxHrpcJq4b3A7+q9+2IQ+GHztcAWKbstXCfsE+HthmiAhPCJKg1OhZ/ANfm8U/hL4RuFPxfeYogGmGlcEd4uvF/4GuHDwpsMiTKAvpTU6IhwfUiMCm/CA9WsWcrBr99G0b+JnsDZS+RK9IKtF0NG+Qso6ny435dZ1KMMsEr4uPAlOCHyoqdx/BbrRxmgWXhW+FLhOoR03M+KAPuEPxW+Qfhb4cuEjxmiAQrCk9QWC4Hd8vmGcH15vRK+WfigIRrgg/Cj1DZEK84eN4P7F9C10Qvh+rZ+5tXpaWZuMZcE7mI9DvUt3Cp1c7i/xM9S5rmYmw3L6bNS95Lo7aJ/KtdBA3AKeEc0GxrdeXVI2QXRfTc0laDWW8oMzvxM4t6ptVVjXDFTm/oDooe2qTcI+1glB9zCfaySkfahHqsYzOmDLYM5fbRoEPbh7jppN0KND3cNyh2vj5dp54UkcA/4jvfDoabw+oOjZ5p9Rbbg7AAeYT1Fuqn9AjFGjBgxIsA/jvJ6jenUZ2YAAAAASUVORK5CYII=",s.SM_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAcpJREFUeF7tmFGOwkAMQ+H+h95V2S2qqlKcsZ101PADQpPEfnFHgufj5q/nzf0/GkAn4OYE+hG4eQD6EuxHIOER+CFnWJdkbf5vfAEwOoephbiPCoOaN4A/AswWmVpoSZ0ACBN3iNkiUwup7gRAmLhDzBaZWkh1JwDCxB1itsjUQqo7ARAm7hCzRaYWUq1KwJlQxoSr7xuOAsD2x85RPweAbzOh7S+HWACrkKXP9vNWgBoAMjMFwJHhT9+Ngt7DQ2faAXza9vrjZ5suVQIiM60AzoSsg/cxZRMQnWkDgAjZQ2DumuhlF9H30hnZTLj5ycWIbsg+EwUwIgQ16TgH60UAwM0cToiekG4EwNHNTuhKKYXMZ9wBKW53Q2DzUQAzJCFkfgTAlSGEzY8CuCKEIfMMgCtBGDbPArgCBMq8AkAlBNq8CkAFBIl5JYBMCDLzagAZEKTmHQCcEOTmXQAcECzmnQCUEGzm3QAUEKzmMwAwEOzmswCMQEgxnwkgAiHNfDYABEKq+QoAZxDSzVcBOIJQYr4SwBbC8rlMC/qv8CpS/V62+VLqaopMv+oEMNoltQ1AgnHiJp2AiZcnkd4JkGCcuEknYOLlSaT/AqRIb0Fn6qw5AAAAAElFTkSuQmCC",s.UNKNOWN_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAA+UlEQVR4nO2awQqCQBgGv6KeM+rU+1/L7F4RreY/W86ABw/ujsMPImwiIiLSwlh0XZIcit6piaoAY5JbknPNa31OZYAuI1QH6C7Co9zS63cXgQrQTYTqAMOL+9MC+35MdYBjniOgk1AdIOksAhEg6SgCFSDpJAIZIOkgAvkZfHcNmfDvsJkoOHeNlvVbuCbZtzzwbwGSRp/tzM1+nh0t8ILWiZo1MaufAAPQAjQGoAVoDEAL0BiAFqAxAC1AYwBagMYAtACNAWgBGgPQAjQGoAVoDEAL0BiAFqAxAC1AYwBagMYAtADNN84HLHFOqIzVT4ABaAERERGOO8QV911rDPw7AAAAAElFTkSuQmCC",s.MINIMIZE_WINDOW="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAANtJREFUaEPtlbsNwlAQBMcRLQC10QZEiAAi0wa0xqcMdIiICGmejZ60znfPN3OWBzp/hs7fnyzwb4MxEAOSQE5IAtTxGNAIZUEMSIA6HgMaoSyIAQlQx2NAI5QFMSAB6ngMaISyIAYkQB2PAY1QFsSABKjjMaARyoIYkAB1PAY0QlkQAxKgjseARigLysACOAEbYCX75oo/gCuwrwXOwHauyY3njLVAbbNsXDxX3bMWuHd0Ot9gbrXACOzmQtZ4zvuE6iM+fj7ideMBU9XV1VyAQ/4DUyH+tbd7Ay+Srg0YYU5a1gAAAABJRU5ErkJggg==",s.CLOSE_WINDOW="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA35JREFUaEPtmbfrFUEQxz+/0pwwFNoqmMCcc46olY1/m7U2Ys45IWIuDFiJCYyYC0X5ypwcx93t7O57yIO37c3Ofr8zszvhBujxNdDj+OkT+N8e7HugVzywGtgLPAB2A1+6BHw4sB+YBuwBLoTO8YTQMuAYMNSUXQM2AZ9CyiO/jwBOAAtt3zdgG3CuTU+IwFLgeAl8oesWsA74EAmySVzgTwILKgJBEm0ElpvlhzScegPYCHzMJDEKOAXMbdDzFdgMXKr73kbgFTAhAO4msCHDE6OB08DswDkvgImxBK4ASxzWVTitB947ZMsiYwz8LMc+XeZVsQRGmmvnOQ64a3firUNWIgobWX6OQ/6O6X4XS0DyIqHLNd9x0D076E1AdixwBpjp0HnbdDZ6N/QK6YymF6Lu/IfAGkD3p26NM/AzHOBdoekhUJAov9Ft5z8ClPiqJAT+LDDdAd6da7wEdKaypEgscgB4bCRemux4A68MG1pu8FIUQ0DyyglHgJUhFMATI/HTsulUx56rluU/O2T/isQS0J5hluCUpUNLJLQmhwSBi8AWQInLvVIISPlg4LBZ2H1Yi+Bly7bRRWIqgYLEIXt1ckioRJDlo8GnhlAZrDxxEFibyEA10A7ge+L+pDtQPWuQkVB1GrOUIHfmgO+EBwrAInHACjsPCZXou4AfHuE2mZw7UNYbk621TyWCwi67n+gEASU4hUPRSXmN2pGmKJdAKviCZDaJHALKyuqV1bnlrOvW2SX12KkEOgW+IJ5MIoWASgkVdYsdZlfLqeVpilTEqcd210Epz6gsfxRY4QCvTkovza+GiUOdimgSMR6IqUQL8EUnpWdWWdfT2UWR8BKIAa/+WJav9rBdIeEhoHpHYePpAZrAF+ESQ8LVG4QICLwamNqRRiWIQ+AL8ZhpR5BEG4EY8JpIqJmvHX3U3NaOkWgjoFpfw9XQ8lq+qsc7ldM+NU/b64C0EXgGTAqgj7V8HQnNiELTuedNWNoIKO4V/wqluiXwem2807gmW8gTbSQ0od4KnI/1gOSr/wYKHfct5nPBly+2Ro3VCbU6NYWx5km1K/QKaVN1zK7BlbzzOnQ5Ir/rYpdJCLziXt5pXB4C2qxQ2Qc8NXeG5p+R2P+Ja2Ktx2OK/cpqBa9dXgKF7O9UZN3aF0OgWxiy9PYJZJmvA5v7HuiAEbNU/AEymbExfA8cowAAAABJRU5ErkJggg==",s.SKIP_START="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVR4nO3YPy4FURTH8asQFBKvsAeNbQixBxqVxi70lqK2BZUlPKJ50SlQ+Ih4JMZ48+fOTDKT8+2/v3PO5M6deyelIAiCIAiC4A84xgPucZTGhq/Gv5m3zJhhO6OHWWtfgYbuOi7xhlecDelnDYA93Bb0xVB+1gA4wXPRHcr/RZMA7OK6rPAQfil1A3CAx1XF+/T/pSoAW7jCe1XxPvxKVgVgH3d1Cvfh16IsAGu4WG5tjejCb0RJxiZumhbuyk9NKck4z2g+208xgJEvoTT2lzhNYRudzIdsEkeJyRzmJnGcrnEheUoD+T/kPIHClfAFp0P6XV7qd7DRxs32P3+lLIeY47BVSBAEQRAEQZD65ANrrC3m/GFNbwAAAABJRU5ErkJggg==",s.SKIP_END="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVR4nO3XPWpCQRTF8RskEBBBy+wgvZuICNlCKgsrt5AqC3m7kGzB3l6tREgnUYt/GHyveJBq7pvRIefXn8sceB9zzURERETk7gBTYAdsgUnskAEwchwiOs/14I1NzIAZcALOwCfwmDnfElPg0B7BCnjJmHcX+MsRWAAPufPWUYHGEnjOmbeOCwR74C1X3hIUaFRAP3XeEhYI1sA4Zd4SFwguwAfQS5G3DAUaX8BT13nLWCCYd503FfgHj9Cl5Jd4XfJntCr1R7Yv+SqxLPUydyzpOv3tXEi8eXeBd+CnXgtjVkJv3legHhJ+KMOosDOPd6m/NWBSl9gAr7c+j4iIiIjdoV+nEzteGs3QogAAAABJRU5ErkJggg==",s.PLAY="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA40lEQVR4nO3YMS5EURQG4ENBr9dKsAMq9qCdLdgBSh1rsIVZAjZhelrTITGf3GIiCsm8mZd593K+7nXnb/7890WklFJKKQ0HGzjGKTajNbj17R770RK8+al8X2IrWuB3TziJhgMUM9xhJ2plMc84i4YDzI2xGzXR3SvOq6lcy3vAQcsBig9cY7vVAMNXrv584qLlAHN7GaAL/ZmVDRXr1tPxkzLH1378f6/RRxwOdvgKAaYtT4lxq2PuBaOokT/8oJkMVo0rPurfcTVoNXaBm+o2/hI/to7KHK6mGlNKKaWUYiFft4ARJbTJcIwAAAAASUVORK5CYII=",s.STOP="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVR4nO3YQQrCQAyF4XcQXffsFsGLqdhe4C8BFzLgYiAJFN53gc4/6WYimZmZ2UkAV+AO7OTbgQewVB7+Rb13fKsiIG6+y1oRUPHb/LNVBLSSAwaewCRlo5kcMPAEJikbzeSAgScwSdloJgcMPIFJykYzOWDgCUzSyR/1n4qAWDp1uVUELN+lU7UncEkP+NnOrbG3KTj4FjdfdngzMzNTvgMULRo3zp7/ZwAAAABJRU5ErkJggg==",s.RECORD="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABMElEQVR4nO2XPU7DQBBG3yUo+AniOkgQcQ3ID2ehA4EoKOlDuAmOcgpiOhJ9yNIUlguwE+/YEfOkkSxX39sdz3ohCIIgCIIgaAXBqWAieBdkgi+rzN6NBQP6huBY8CBYC/RHbQSvgjP6gOBKkNcIXq2VYNh1+Ftb0abhy7sx7XLldwlflvDdCcHJlm3zWzsdeQo8txheVo+eo7LOtGla62JnPQSmCcLLauQhME8oMPMQWCYUyDwE2pw+qlS+7wKfHgKLhAIfHgJ7/xGPEwpcewgMEh1k3y4HmUk8JRC4dwlfusCs2pw+gkM3AZM4b6mVNoJL1/CV/6JdLzSTTsKXJIZbtlPRNhf0AcGB4M4mSZ1Vf3Hv+QY3tZHgrThV7bcjt+eZ4MZtVAZBEARBEPwDfgDcyqJBiCPoQAAAAABJRU5ErkJggg==",s.PLAYTEST="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdklEQVR4nO2XSUoDURCGW0FvoBtbL2AQT+KAwZXgCfQK4srhGA7gQsVFMF5AjyBOOYBiUBK38ZMHDTb60nn1MlWgvn1V/V+6Kp0kiWEYhmEYCgFKwBVQZ3jUswzz0vALwCd6+HCZJAI36KMaGn4KaKGPFjAdIrCJXjZCBM7Qy0mn8OPAO3p5A8aKBBbRT6lIYFvQqALMAClwHREktn6rSOBS0CjN1c1GCMTWXxQJuB0LwlM7KIHXduHnJNN7IODWJs3CV2Pl8wGWQ3a27eP77RN7ExKWfIN3xdbtJWJuQsJOzAFrEjj3Db0L2dnA8NKdlnLrG1yTdPDUd0tF8F548Ql8DVkgFaxg0yfQ6OPAXvdr+AQeB/g93m2/B5/AKaPDkU9gndGh7BOYAJ7RTw2Y/CeQSayim2/vz4g/EofoZa8wfO5v5QH6Pvl9l62jQE5kRclNPHVcmwIJd9hl4Bi4d2/AAQRuZrPczDWXISq8YRiGYRhJ//kBnszTFsS/lqcAAAAASUVORK5CYII=",s.ADD="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB7UlEQVR4nO2ZS07CUBSGCT4GDn2MQHch0YUYjC4EwwLAuRA0LsGIAxUHrkKjC/AxEnBMnXzm6DUhFeJ9tb3EfkmTJoXb/2/a03P+Fgo5OTnOAHPANlAHzoFH4B34UJvsP6hj8pstoBiC8HXgEHjFnBegCZSzEL4GnAAR7kRAB1hNS/weMMQ/A2A3SeELwCnJcyzn8i1+CeiRHtdyTp9XPk3xP9wCiz4MpHHbTKPjKn6f7Knail8B+lmr57vimZdYVedDoW0qvuzpJeWLCNgwMSDtgStXQEldDB9VrGnSmNn0NnHKsZ7JlWetBlB1lc5MWNcHFR0D0u6GauBAx0A3YANnOgZk8AjVwL2OgaFNtflz4d/nsalOfZ2FTeu/9USFeXUa/QsDQ8NFezYmlPibJG6hmX+Iu7NeRusBG6jpGJDQKVQDmzoGiip0Cq2Ze9JO81Ri5spXdbKsNpNoaIkPdKAZGb/tVdwXCkdG4pWB5UCG+oF1bipZZdbqgR0r8WMmJKvMipaT+LEZ+SID8VfAvLOBsXBXAte0uPQW7sZC3jQqU8vblZ9ipJpQdXpzfmANc9O2esG4MpI6L2U7FfExIyXVdkjoZIr8p2EzTydhRBrAiuQ20rPL4KEmu0htsn+njtWkqwziM2tOTmH2+QRxCeic7ZLqUgAAAABJRU5ErkJggg==",s.FEET="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAZtQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////LHKW/AAAAIl0Uk5TABFPc1wZQcH6/89nBAys/MwjF9bzOt0pxtOGYh8yD/Xo7IKoPWGB4qGRxB3mrePwyH8wcYrg4Qi+TW7nzVCx7bxkdRZ+SJmQzqtq6/uzHNElwD9befkTLGapQqB3BUOMIfeYM6IupVPVwkkguGiVclLZjy2vWOQ0OMedaRi1a46HmhoDuZy6RUrTRBvsAAADmklEQVR4nKWXeUjUQRTHZ9jwaDV1Q3fJLKWlDDW0NLM0EzXbNOxCC0m2wpAokIgOyiiwP6IDLCSig2ItpcNqo0jJssxuK0m7pRKtVSsTl9LVpN9v97fub2beb68G1Hnfee/jXPveLEb/2bAbIRhzP4PuAjz4eAvG6AbAF2OTte+Je1wGKPBvkSXH3S4CcGAfYctlna4BVL2U4N9ndAUwroeRFB02wPguJW6zFx8wpovRlN8FQEjvWAM/Je8hacakr4AYbDlT35HDUY36IDWBP9ByQ3gxIEj8bye2G0HA1M+QGsYBInAroak/gYRp4NQmc4Dod5QY/gLwnP4GnBd3D2a8ZsTgj6xjbIsUIK6ZEaPwY0ab1SQBSHgJqDEPGGnOcwlA+BdAVQXRU8BecLwvTmyE9Nh6SlB3wIA4nPwE0uPrKCHlEQxIwN7wwOxa0k5rgP0SpQADw6Q9n16T0PqlAHOrnQL4GaQAyTdJW1MHuqXcwJm3wZHUbvIgF90C3dL1OLsGnkLGFScACy4jHAXce75pqpwALLyE8PLrMCD6oWNAFj6PcK4eBmRXOgYsruA/jZGtwJBzgCXneEBeFTCE0LJywsy4x7ook3Q8IP8CCMg5Q5haXMm4mDMXl9LgNVAAFBxTS7uYT5oDrKlwBoDW4r/kJLhLYAEUlCOgMQAueURGDYoY+ccEACpkfUEAydAadVYAeJdggI0xr8VSjXhAjpzdYSiv2hjpKlwm9M31bsNJ1in3NBGixQ39YGUwA5KeMfq6UrFVdOc999szzMQyzACfUOoqFJYSGa1gyLpGlmEp2ZuOiqObYg6STpvLbP3U+wX7WYDCzyAZzbXQTsIk8qXwaAhcfUQqGqGthymB/xRSADRB01u/AopGQGFeepYFUG3b3be2JxlTmNOu2QckdA1zW1Kkaxds/wHKIe+EHcD66mFhQ6MMbRIAceklASGr9KIbYb1MdOJWKkU1gwCkPTWJTf9vlr87DpGAzIsiQwzw8DaRnkKJju8k7kHWlBIJQPEBMn6kRO8i7h4xAQLAbNaWPUJHnJPV0TopAPNgtJ23TGNNqREysuqKAbv3SQKQtvkHd7ryje3HKR8xQEG/a1aeEluK9AhcjOhGHCO9i5a8a78RAA8ZMSYfbfcLCABAJXvFlr28KgFQqF/ZDHUOu2JHABTg9cva3alnX9yOASh+Zo154cV4uzPhYD7Ijbna6PPTuXC3vr2T7R+klvDwCGxHiAAAAABJRU5ErkJggg==",s.METRONOME="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABpklEQVR4nO3Yv07CUBTH8Q7MJG5a/0y+g5MugA4+gIOri4NWX4VF0PgyVoxx0FfQREcqEUNc9GtqGxVzKVDOOXXoL7lTT3N/nzSQ9npemTJlZgqwAdwB0e/lmBu6DtwC617RAR5wxDHnyn0xrX9KLY4oNikgzkIx7ZNSDUbEMTsq9WLaJ6WOBABBMe2TUmcCgHYx7ZNSVwKAUKvcMrALrGTM9AQAkUb5VeAl3eA1/rE6ZpYySk0DiONLAwKGM/iLALaQA9SlAWvAuwPxvRFwLAgIRAHphnsOxBuwnV4/FwS0xAEZiK8nAVwLAkIVQLrxPvDhQAwEAZEaIONJIAiIM/+vEDkANVXAtIgcgEN1wDSIHICWCSAtc6MACC0BkQIgsirvT1AmD0D/n2jcV5gAoGYBCBQBBxaAtiLgxAIQKgIuLABVYG7cctw39h6gqg4oU2aGAE3HIa30ahZyDiSYjibg2QDQMz+JVoivAdg0BDRMT6IVEmgATg0BbQ1AxxBwqQHoGgK6GoAnQ8CjBmAH6BuU78d7iQNSRGXC1+JZVkWlfJkynjOf521HFc2TkGgAAAAASUVORK5CYII=",s.X_METRONOME="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAUFQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bof29AAAAGt0Uk5TAAx+vMx9Edj/15eWR0EB7EX48zMgHu0pSknmIXV04B+gnsvITHdzoZ02drK0eQ4C9BDRHCKQ203feOeis804+fVT+iNOpFT73EJRGl1ynMbxRopxmxvF8B1IcJokDUufyslX/WW6azs6Q9b/adW4AAADp0lEQVR4nO3Z/UsUQRjA8WfqKBMTNStLi9PeqEiTispeIArrfEmwKIX6RaLoLyoIetWgN+xdooikd8rCCpO0MrIy1JJer9Cu87y93dl9Zp6ZHfslbn65vWXu+/FlnNs9GfzjwZJAEvgfABYd8cPB+GMg/hgZMxgxBsYxe0o4/phiv3zotymQ+sc+9gIw9rvnFWnsqwaQzn5JgfGRL65XZER/pP3qQPY3xxMEgIm97v7P6Ff1URnIGSCAzA+ePkAWe6cK5PURwOS33j5MYW9UgWAPAUx7Le2TQMF7Ash9Ke1TQHrgBwGkDiaWEdangNx+5zMMsJcR2qeA2d0kYC0jvE8Bc7g1ggIzX8j6FDCPm44CwXZZnwICAeczFMh/LuvzAJs/vDc/sU8UsXYKSBmQ9jmgmLUNn1nQkjiz9Bk3GQGoPgcsexp7KBxKCMtbCYDsc8CE+NvT4k5rA1r5WA7QfQ4oeRQ/SHwPq1q4yW5Aoc8Bqx9aR5aw5oEMUOlzwFp2nxeKMu9JAKU+v0zXsTvWYez3sP42P5kD1PquPzSXsOGWGFDsu/+SeWFRhxBQ7Xu2Ck4ovikClPvevaiUNVuHhVk3BIB6H9nsHN+De1hAqEm5j+2mYiHsOFbso9u1UHAAZXcd/fJLeoBQsIGyoWa7X8EuaAIiIQHw/Wul53UBgWABrj5sPKcN4EIY78Om6+5LbBpAhTDeB1jY4plLApgQFvQh1OgDgOrLbrJJ0IfyM34A7sJa2oeK034A7sJa2pctIzHAX1hL+7JlJAa4uzN5H6DylD7A3Z0RfckyEgMzHLePVF+yjMRAvn37SPYly0gMzErcidJ92HxSG0gPWUtPoQ9VTaJlJARqzgr7/P3ByBAuIyFQ2yjsY0DKgPecHKi8KuxjQPVxXWDrRWEfA7Y06AI7YuljWB8meaeH6nWBxPD2tQYJGPZJwLRPAcZ9AjDvy4FR6EuB0ejLAK6f0yeeODIye9HTYoDYPz0jr1MP0O1DQZsWoN2HnC4dQL8P019pAD76sOJzK3YaBfz0AdLQhYYB/vqw7agi4LMP2d3YWS/gtw/bjygBvvtQc1gF8N93footBgz6AFOxTZEHjPqQ0YOc5ACzvuufIQhg2Of/GYIApn2oPSQH6liDUR+qTsgB2FVv1IfUTwQQvWsa6WeEkZn02HmAAmD3ldhS3tMh/FRNMkrm7icBa+xlB7X7dZF92GnRW+aSLs1+UPCBC311bTiSQBIwH38BmsHCcGg52FEAAAAASUVORK5CYII=",s.UNDO="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeklEQVR4nO3Wv0tXURjH8dtgEuJaoEMSguBQBNUiVGv9D41uTg3S9EWiobGpv6Gh0Mk/IAyKnIxoq8SiEm0Q7IdErzh4S9Hvr6vnDMHzXi/3+Zz3c89zzq2qIAiCIAiCIAiCGixhGaerBmAA19HCAl7jK3bwDR+wgnnM4ipONsnodyF/edWPBCbxEBuas44HuFBCoKsEJupO/5aHJ6lmboFDEvVWuVtvjdzs4H7KyCnwTwIjeKE8zzGWU0A9lGkQu5GGdREzmMI4hnAKo7hcP3uE7R61vuB8ToFufMLttNgGOcOYxvsuddPBcLGkwC/MpQ437tRe3iDu4GeHjM/p65UQ+JjO/aMuvE3uJbztkPWs78FuINDXPdFQYgRvOuTdyy1QSuIMVttkfce53AKlJK7gR5usxyUESkm02uSkQR8sIZBdwu7d8e5AxiZO9Hpx7RgSL3MJJHANW/u6f6vqBW4cQ+JplRm7vzA3cTZ37SAIgiAIgiAIqv+aP0/ezoLd5BjTAAAAAElFTkSuQmCC",s.REDO="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABi0lEQVR4nO3WPWsUURSH8Y2oIJKYRhdiEa1SCJqXVvAzuEXMB5B8BEuLiKRIk8pSLC1WSJMqBEIgasoglmKRYBaVFEGEpPAnK7dY193ZndlZWOE87cw59/nfe+alUgmCIAiCIAiCICgILuM+nmADBzjET5zjBB/Ttad4gEs51xjHduqTqzar6V2s45v8fMcL3OlTfq+ltjqo+EzazTL4lXrN9ClfPEAalbU0FmVzjmet49FFvlgATON9hsBXvMIy5nETV5pCuI4FPMYbnGb02cdUhnz+AJhLM9uJXdSap5PzJBfxoUvPoxTEwAFwr4v8JzzMtRP/9r6AR/iSIVs8QBqbTm+YOiYGkW9bp4qtUgOk2X3boXilLPG29a6hUWaA1Q6Fz4ckP57xwOYPgNs4ayuqD0n+KnZyyPcV4HVbwWdMjsDO9w6AW+nr2EpthOR7Bpj1N+8wNkLyPQOM4eWf2zhu/rCVKZ/W2FScH339jeIGLpYtn3o3vyNFaGBpGE5BEARBEARBEFT+S34DOXeCiMi4hZkAAAAASUVORK5CYII=",s.CUT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACxElEQVR4nO2YvWsUQRiHRwMKKojkQxMUOzWiXbCxU7BQMRFRrCKKtQqXiF8EY+dfYEQrxcZW/QdEbMydWhhQLERR8QPWJIrBmHtk2PdgGXZnZ/d2zyn2gYMQZmZ/M/N+zatURUVFhbcAvcA1oAH8lJ/+exLoUT4DHAZmSeYHMKI8Fr9EOkvebYLQbGwnbxJ4ZU6ENh9lAagB/fKryf+iXC1Jy3JgFHgDfAGOu0x6boirxYwZN8Y0ShC/B6gb3/nsMnHOmNQfM2bAGDNXoPBB4EGCub5yWUDbdJR1DhsIChC+HrgBLCaI15axw2Uh89rOOJjQszaErwIux9x8i4/AKe0PrgteMhbQDnsO6JaTH49x4gs5HfQE8CFB+C8JKGuyLtwHfMOdr1nDKLBXMnpSbrkDbMx6KNEPHLLYYpQ/wIEM624HHlnWewwM5RZufGw/MJ+ygVHHtTYANy2H8hY4Uohw48Pa5u8CTUs9dB5YaXHQK5aDCCQxrihcvCFkCHhquYn3kjGXRRz0KPAuYfyi3EhfqcKNTWhRpyWlJ/EEOAm8sIzRSWpbx4Sb6LCma5+YUJrGjPYr5QvAlpSI0kKH5LNAl/IJYDUwIaE0jt/AdWCt8gmgS1K7TvFx6Ih1D9isfAPYB7xMceJdlvm7gVu64uy08EHgvmsYjZm/ScqDZkfDKOEL7DbwN08ikzW2At8tiWyslESma5yCS4mpjpUSwLDl1KNoQQe9KuYIy+mkK08qp3tzlNPm27tFs61yWl5HWbsSF3160NRzdCWms24gw5PyU9YnZZCjK1HUo34q5VG/s6y2ymy7GzAc/WHCJmZUGjHONeZgQnVVTmOrYZqTy0TdOo+yIMlmwNKVKLu1+Fpqr2Muk3okw7qifaZb+QQwkqG9Pqx8hHATQcrJ+yneMKdJyQ3zEqGm5Unpl9lUVFRUqP/BP5CqMiH1c5cpAAAAAElFTkSuQmCC",s.COPY_WHITE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2klEQVR4nO2YQQrCMBBFcxBd9yr2qBbBO9mtis0FngS60CiV4JAx9b9tFpmX+WFgQhBCvABsgQMQqccI9MGo+As+nCwE0svTskD0Kh7YWQg8EVoDCTjDP3SAunMiAkegMxFwnBPXdLeFgOecGCwEvOZEYrIQWDy3htL7JGAM6kCG/kAhKEIZilAhKEIZilAhKEIZilAhKEIZilCFCI1Lu8oWOtDPEm93lT8v8AkJFII6sMIIRfy4WQikRasXewuBbl601uYMbL4WeNhQD2lXWaHwKb28WfFCrIw7KN2RSPl95zsAAAAASUVORK5CYII=",s.PASTE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABHklEQVR4nO3ZQUoDQRCF4Ua8gC41rnMVPYSoxzMIgopXEPUWcatiZuH2l4JeTBokdlXsacL7YFYz01PVr1bTKcmOAfaBK+AV+M7XC3Bp91LPgMNc7G+egYPUI2AvF7jJkz2begNc8HfnrYo6AW6AgXoPwDEwAx4d7w/ALTCPFP+B36xYy+vT3vc0YDsfcTRay5KIWHga8IzN2F0eH7vug2utPA2s2XQ/KlV+Xw0Ab1sMYDlFAmdbamIJnDZv4L+hBgpKoPUGogRiUAKF4IYqgdR8BpXAOiWQNEJ10AgVUmNEv68GglACheiOKoFaSiCI6AjvQgID/fjyNGCHC7249jQwz4cLU3sfH5bUNmEnKwv7Pz9B4SvbeXfxIiKphR8IWaCtfT4/XAAAAABJRU5ErkJggg==",s.UPLOAD="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAAAsTAAALEwEAmpwYAAACYElEQVR4nO3dO48NcRjH8e+6NbrtCI2Iuyi20aHQigQlXoDE5Q2IUqKgFC0SkbhWVqXyAiRqFHYRbOy6LvHIiZnkSBZnZ2bn9v9+kl8/8/zyzDlnTjIDkiRJktQNa4BbwEfgLfAIOAOMN31gKZgAXgGxQJ5m5WiJ7AE+/GX4eZ4BG2ygegeAz/8Zfp4XwEZLqM5R4PuIw88zDeywhPJOAj8XOfw8r4FdllDMGHCu4OCHMwPstoTFWQ5cqWD4eeaAfZYwmlXAzQqHn+cTsN8S/m01MLkEw8/zFThoCQsbBx4v4fDzfAMOW8Kf1gJPahh+nh/AcUv4bUv2wylqzuCr7QkSNwG8aWD4wyWcJlF7R7ivU1fOkuB9nS8tGPxwzpOIYwXu60RNuZD9Au+tUyXu60RNuQwso2fGshWPjuQasIKeqPq+TtSUG8BKeuBiC4YZBXOJHnjegkFGwQz+3uy86RYMMgpmih44kp1IF4d/qOnhtUGUjCyg28INsICkhRtgAUkLN8ACkhZugAUkLdwAC0hauAEWkLRwAywgaeEGWEDSwg2wgKSFG2ABSQs3wAKSFm6ABSQt3AALSFq4ARaQtHADLCBpUyU24GXTB98H10sUcLXpg++D9cD7AsN/B6xr+uD7YjNwB5gdYfCDB4DcBjY1fdCSJEmSJElSEduB+y160m20OIMZ3QO2UZGd2Rsomj6x6FjmstmV9rAFJxMdzeBlFKWf+TnfghOJjmY+m6EF0NECvARRqoAHVMAPYQoNf7aqD2Gyr1R3s5eiNX1djZZnJvv/emtVw5ckSZJEr/wCliFWxPec8VIAAAAASUVORK5CYII=",s.DOWNLOAD="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAAAsTAAALEwEAmpwYAAACWklEQVR4nO3cO2hUURCH8U9FEUEQC0EwhYWIijY2giIIgqj4ADs7Szs7W0tLO0urWEh8VmpjY2WhhY2FhRgRQVTc+IyPkQs3hZKYze4m59xzvh9MExKY85872WX37oIkSZIk5WkMmAB6QMxTze/cALambrqk8N/1Efy/1fzNptTNl2BigPBn6lrq5kvQG2IAH1M3X4IYsuQAui3cAAdQtXADHEDVwg1wAFULN8ABVC3cAAdQtXADHEDVwg1wAFULN8ABVC3cAAdQtXADHEDVwg1wAFULN8ABVC3cAAdQtXADHEDVwg1wAJ12FHg1gis5lrgmgcMUYDKDMGPAekkBHEBiJ4DpDK7mWGB9B45TiCPAlwxCjT7rG3CSwuxvP7UYmdcn4CCF2g28zSDkmKPeA3so3PZMn5a+AXZRic3A8wxCn6kXwBYqsxF4mkH4z9rvo6jSBuBJwvAftz1UbR3wMEH4j4D1qQ+fizXAvSUM/wGwNvWhc7MKuL4E4d8BVqc+bK5WAFcWMfxxYGXqQ+ZuGXBpEcK/DCxPfbguuTDC8C+mPkxXnTf89M4CvwYYxG/gXOrmS3Ea+LGA8H8CZ1I3XZpjwNc+30g5lbrZUh0Apv4T/mfgUOomS7cP+DBL+M3P9qZurhZjwFXgdVvjNb+iKUmSJEmSpLLsaG/n6MLt5ZG4moxutzchj8TOeV6Dt5g1g6k2u6HdN2QGvciau/2GvlGqi5/vikxqus3QAdDRAfgviKEGcJcR8EGYgcLvjepBmPYp1a053gy3+CuDJqObwLZRhS9JkiSJovwByQJHhbd7qEkAAAAASUVORK5CYII=",s.PLUS="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1UlEQVR4nO3byUoDURSE4do5D+/g9HgOIILDQvDpVNxonBLwEYygy1DScHUhIumm23v75P/gbMzm3KIWEU4kAAAAALNgQdJ87iWiWpd0IelFktOMJJ1LWsu9XBQ7PwL+OVXg27mX7LtlScM/Qv6aJ0lLuZfts6MpQv6aw9zL9tlNjaCvcy/bZx81gn7PvWyfueagIYL+J6bRBB2KaTRBh2IaTdChmEYTdCim0QQdimk0QYdiGk3QoZhGE3QoptEEHYppNEGHYhpN0J2q7tsO0lXQW4PGueczTm/f7/LWr7rYvC/gsS5kBpI2u7jqJGT9esXa6n32WQENcqFz2mbQowIe5EKnut9uxZykSQEPcqEzSRkRtHoStKb8ecOszlAtOi3gQS50jtv+ejco4FEubB4lrapl1ZdzwtZ3yLeSNtSRRUl7kq7Sv6OesRlLupS0m7IIwzUHDRH0PzGNJuhQTKMJOhTTaIIOxTSaoEMxjSboUEyjCToU02iCDsU0mqBDMY0m6FBMowk6FNNogg5lXKPRr7mX7bPrGkFXF0Ro6KBG0NWZFhpamvKw8i7aLVwOW5Ie/gj5vsurzlmzIukkXddP0jynv1WfoQNzbf5mBAAAAICK9QkSkO5NnQjE8wAAAABJRU5ErkJggg==",s.ADD_EVENT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB4UlEQVR4nO2Xy0oDMRSGi6Ib6UpxpUu1TyC6E19AqW19murWqm+hiDd8A0Vw6WVrpdo3KNjWdT85EHEImWk6kzazyAcDZeYk+f/pOZmTQiEQCAQCgUAgEMgVwDJwC/TwTw+4A9ZGEd8hf3SAJRsD8ubzyrWNgTykTRxdGwO5phAMxDMAXoA6sCW7BjCnrpK6dwC8krN/YABcAatDJ/9fQ8zdqLFeDXwC67bCDWttAG1fBp6AxbTiI+vNA/eTNvAAzBjGzgL7wAXQBH7U1VT3ahITM+5xUgYkbeYN4/aAL8vxZcP4BZt0ympgoOc8MA2cMjonwJQ21+awws5q4NIQn0b8H41RW5ksBgb6VqnSxmqhhHl3tbjSuAw8Gwrv04GBtl7YwFsWA3HNXF2Lk90GBwaEqhZ7iJlvGwNyeDCxpcXJtujKwLkWux0Td2v7mTcdaPT8/0gSbLFOlKZBg45oWrGdfEkOD9J/RyYoJqVaRgM97Vkx8qyrdiY78SMI6Ds00HUqzlKAyxR6H4/KZAEui/jMh4GaQwMVHwZmgJYDA1+mDnVSJsoODOx4ER8RJl1lWo68ilcGpoDjFOIbejvtFekqk2oiQst72gwp7Kr0NrK3q49dX/2WexXTUTQQCBRS8ws6Beac36b8wwAAAABJRU5ErkJggg==",s.SELECT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdElEQVR4nO2ZUU6DQBCGOUf73LsIRL2mPnglobCaaGNivcDXEKcp0F2Q3S6VZr6kT/+Gf4ZM2d2ZJFEURfm3ABvgBfjhRAGklrUZUIqeOXQzohctn8bzGViHBP+FndqyftvStx66cXjtvJKQN8+EBEygXg/4Pfkk0C6bNq/AnWV9LkFWjhI56k2guUVP5dk2vn0S6JDMDKH+t5BA0S6bKFHG9JearOV3VvOx4cr+irJ4OJ1dStvGNIN/Lt5+/r2tvYoSZUz/scNXbAj1HzvbxIbu2Wl2f0VZPIzccWfwvwfe5E+cLvEz+h66DwzeYWPD79sPSiCXPeBa+0Am5dP4631AUaYCPAKfwAfwkCzNn+5nzESJMqb/LTS2OkSJcoBLJLDHjms+cLzDuvr/uWilo7mb9bpxwc3dZrjgYqw9Xnno5tLt9bUMF/6agJkw4JgyH9gBq8kJyENXTfa9chqaDzjPTlIiQ3ramw/sxdsveEVRlGQODgnFtCEN6s0TAAAAAElFTkSuQmCC",s.EDIT_WHITE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABRklEQVR4nO3WMUoDQRSH8bG0UQTR2jNYWAjiEfQwapm1S8R7WEhEbyHoBQRBO9HGUhDlJwMJhLC7ZCPszsJ85c4MfP/HvLcTQiaTSQbs4Rof+MYzLrEdUgen+FXOewwXUgVFhfh8iK3QU/kpF6HnAZ5Cilg8xFdIFYuFeEtFtKhZq+OqfeNqwaYhfrDbvnW9WNFg70n71vVCU4YVZ85m9gzat27WnEXN2dK1FGf8MKREQ/m0Qiwpn0aIf8r3omHrGGT5ZciV74pc+a7Ile8Kec53CNZwgPESf9junsRl4Ka38hEc9lY+gs2kH2ZTMMJ6KAGr2K/oie4rjxV84r4qxMzecVLyEezMSNWGmEyndOQjOJq7FpUh4vek5CM4L7nbj9gIfQB3FdOlHyHwWhEgNvYopA4e8ILbySPuODZ2116ZTCYTkuIPW58e4VQyzE8AAAAASUVORK5CYII=",s.EYE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjklEQVR4nO2YTUuUURTHrcW0mLQPELnIyfGz9E5RIIUIbatNVqsGl1YEvXyAaqeppVKboqxNLyuDXtfRxkqIlNAh+8WBI0wP1/GceV5EuX+4MNznnv/5n3nuuec+p60tIiIiIiIiJYB24CBwBXgEfAbmgCUdczr3UNccALavt+itKmQSqOOH2EwA+4WrSOFbgOPAR7LDB+CYcOctvht4Rn54CuzJS/xJYIH88Rs4lfVev0bxuJo6N1T8XYdTOXGGgV6gCpR1VHVuRNdYcSdVXgC3HM7GgN0Gzi5g3MF7s1Xxg0YHf4BzLfAPAMtGH4Necjmb/xrJ3eIb/Fww+hAth62knVo5LRgL2G8DzgKv9dRa0N9n5Flg/QOjL9HUaSlSL4yES8k9D+wE3jaxmZE1CZuKI7GfN01qoB87hgP/fDPxjUH89yaAew6//auJ3wF8cxD1Juxl21hxOmF7wmErGjtCAdTwoTth/8Zh+yphW3X6roUC+OokaU/YzztsfwWu4x582ZQB1Db6FuoAZlMksZzzRSTxbDCJlajPQTQSOEbliFwLsqaUsB11+O0Lim8oZNNGIik+XYFCNtNCIasbfU6veTsFdjmuEuMB+5JsEdnnmtgyXupcKbB+wujrh2hrKr6BdJ/jMjdgIg37uWj0IVoOecmtp5Jcic+3eBNdNvq45OVfcXIDO+RWWTFwVhzbRnC9JfENSS2fdVbU9WImx2KPNK909OjcqLOHdDt1q0WDkA/sojGUaZ8IOAr8LED4fLJIZhmE7N8nOYp/nKwteQUib+N9hsLfAUdyFx7oGUm9uO/s9axgUdsrewtt7q4STFmDuQxMaSv9u4pc1N+f9NmQii6vq+iIiIiIiE2BfxdHH8YQSpqkAAAAAElFTkSuQmCC",s.X_EYE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAgFQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z+8j/AAAAKt0Uk5TAGKfBP3/rnCrBSpUfKfDz93s+cKmUyJvu/f7zIAzAi+T6JEuCmbKCQbl6h8DaeRCyYwm0FLwAYqlDb78xoUrEYbHkgzidxsceOPBC7+5Erac+mSaevVJRSHtIKQebbjY9IQUmYE4UPPRg3F58h2pnTmHvFFuuj+3LbTZswfvsj0ItVU3iP42GfEaTUx/ohPXautDSPaYFu57wL2jqlfOJDLh6WMskI4nzfiw5uH88wAABVZJREFUeJztmX9MVVUcwL+HR5sPaGQLqC2TEpGRmv2QMlliqFhSmZlkexbkkBQhQURhOp48pMlPNQT5IVuKTVq1tCygXA5tbWLNatjTMpp7f0j2YxUp6Njt8d697557z/fce9/bu5ttnD/eve+e7/l87jv3/LjnPAImJzIuGBfcpAJCyKiZAmJxC0bNE7j57g/RYIKAhHoOISMmCTz3D2C5YdIvUPGDLlDzgy1g+EEWsHyjAiuREgiCEEqGrf8K15io8BGGb0gQ7eb+xlyNGtNdUvAjrzB8fcFkQlzczLsJuajN1xHEETKgcwP3CiHnNfiagoTR0J908GNpKunn8zUE0wn5wQAeIPFbDT5fMHlivyG8Dp8nmBY2eCUofI7gIfKdMbwuHxc8Qs4Gi48Jksg3BvEG+Igg4bavA+dbmfGDEcwhfTgtiZBrYeQ0JAlXI8hJgvKfHLYe1xGk9rFj2FiaR0gP9TWNkM8R/klYSI5pCpYIn2H4qTcsTtWlhHt6EL5b7VT2fqXAuqAL4z8cfRS7jPEBnv5YY7Bbqvp9npROPsDxKB/g2fe5guVHEMpS8q5ffIDn3uMIMlynWUr6Lf7yQVhGFaEELxHaLKVn/KsfT1pO3kEE1knY3LLikHxuE+fkwW5tPsD9532NXRZkdSD8iOfbpdNFk5zeGkTbvyq92sYIso9h43Psj9LZGiKqjPAhKbFVJbBk70f481xS/4r5nfD4a9uQkjPPql4d17UiUZAi9es17Vw+5LZgRbMbFYJF8c1IUFK4OP6kxXLrByCvCZtUci700IL8JuwuHj0lnrzRyOcDzEJn77V7KMGGvVgIPCY+PdsAr/14UkEDWjqzVRYUvoWG5Nd6j0W7tfgQfh0tvaHaJyiuRyNgTq/3uLlOiw9bavHiBVWSoKQGj3hKHKVLq1F+xJA3+7WDePHiHZLgxQ/xiCliL1jfjPavRLHut+7Ei8/qkwSZh/AISoD13xwdwRYHGK4iml9YI44PL7/tzeZVUUm5JCirxCN8D7mL5lvtXj5sLRPvVPchw6ZdaMQDZ7zHNGp8lvmQ8L03u9yBll78EfgEjnI0ZO4J+VzBT/nS/RE1o9ubVbEdK2wnpbIAbh3GYpK/0ODDK9L4G4+ugib8A5TgTbINiRFSu/l8h1DizbMdxgY7B9lMCyDmD+wuUru4fKGyWAxC30Xg9kFQCCwRV5GoBQNOHn+l1DbtndhCLmxIvVdR2YBNmfOp90NF/Vg2SSGrDiPlotaXgkoANSVsXCLT/j18Yed1X3CdYwgRxPjW1rLA8sQpdRjLXzcKCX9Hftotx0zAlh3JvdhmiG12kR6fTWgF1bTIcxzdwvZ0Kl4djfCr65EnJ9TnyV8UTXjhCT/5VWEFyNUUeo2h7COrD/jFX3Uca3m7culvSoEl/RPj/MZCdFlZVKW12xIX3WeQb7/4eD7Gn/2r1hJKWqSx/MVTQug3D1vybnwjpuGo9iLQPfxk5OL9S5g+vyXv3AWI779ccuBnzh7H3k69Zax7GtnYgPdfA6nJZVdf4m3nBMS39bNrMI4gEH7Og6uRq7ggEH4zycIuo4IA+Ol/JlegGZggAH70jkxODiLwn9925MwlXh4r8Ju//+BcOz+XESj41pZ2ZhZSpeSJMzXwrIAZfzpIBX93Nm7bvl6dG1AJ0PEtOnJFO7s5focww3kXsrmhKeCOn5aO2lhXVuTr2++Ey2X7/uod+WWjDR2stQU680tAiRaYwacFpvApgTl8WWAS3ycwiy8J6r7yrGRX3hdsvu8XZCyzmXH/1DNwG8zgU60o44VzJvD/r//pjwtuKsF/TPAsf60VkKIAAAAASUVORK5CYII=",s.WEB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC70lEQVR4nO2dzWoUQRSFzyLoygiudRlGUB9GBl/KqBjw5x2GYXZZ6kNohODSWQvmZ2WUKw0FQnS6qzK36tyePh/cTajqPuee7qphKiGAEEIIIYQQQgghhBD5PAFwBOAEwCUA2/G6TF5fA3jMfFBuA3gH4HeAphipOu9vAdxiNP9jgAZYkPrQOoT3AUxbsHrTcs2f8rJjG+oXgEctAjgKYNaC1qsWAXwJYNSC1ucWAVwEMGpB67xFADlCvgGYA7iT6imAU8fx1jPfm1I91clpxr3/zOt+tnYYb5nzvcnVU50hAd2TuIlnDuOtYL43OXqqMySgbxnYdxhvBfO9ydFTnW0actdhvBEDyNFTnSEB3Ya1ibnDeCuY702OnuoMCTjt2VS/Ooy3zPne5OqpjmXUOm1Y+6nmA+LXheP75ntTqqc6uU2ZalWHbdCClwKAAqA/haY3gN8I0xLEb4YRSnsAFAD9KbQpvwG7jrH90wWQofunCyBD908XQIbuny6ADN0/XQAZun+6ADJ0/3QBZOj+PQQ8ALBMv8hkhdXNWQGYFWjuu1/p9UYfQNeM7zdovF2r7hr3He+Xe73RB7B0aL6lWjjfbzGFAG6y7NiGOnO+X871FAD+NuGHQ8NKH6DRB7ByfAOWDnonF8DMcRM+cNA7uQCQPm0s0ppb2qCz9OQfOOmdZAAtMQWgAFzRGwAtQSVoCSJj2gMUgCvaA6A9oAQtQeTzANMewD0PMAXAPQ8wBcA9DzAFwD0POHe+Hv1T4NjOA1bO1xt9AK3PA2YFh/Ie5wvVGdt5wND9vM8XqkMXQIbuny6ADN0/XQAZun+6ADJ0/3QBZOj+6QLI0P3TBZCh+6cLIEP37/ldju1Y5Xw5uDUnAYxa0PrUIoCXAYxa0HreIoCHAK4CmLVg9bPwz6a2Qm8B/gngEA3ZA3Ac4KmzIHWcetKUvfQmTHk5ukpPfvPmX98TXqR/XjCF/y1wkbwetlzzhRBCCCGEEEIIIQRGzx/seDvzE8oqSwAAAABJRU5ErkJggg==",s.DETECT_SYNC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAgdQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ZmztfQAAAK10Uk5TAAIMEQRQx+vuTwMk1/8BTv2ABbOyD9vcAAcpi/UoCRaN5fwXO8LhwG0tDV/Y+8yGUTQqNliS1v4ubsHiG8vmqvRxGojxtOf6aS/fMOPgoKcOyQhMqzXDrMQKz00TucjZEGT5GOjzN2O/m74LJzo5FF1sol6hZbB8qTOF7d23BrqEMlLpJmhwmpnNVuqMkdMcPUODlaXwIrYrU/i4IEAj0Rmf5LWkMe9gj/aKf8ZmMNqCAAAEZ0lEQVR4nN2Xa0xURxSAz9ld2bLURanYpTEtlLTRrU01YH+IpraRGGOTQollGyHFRyp0RaNQC1R8VXRrqwVF6LbUUMUHrc9QY6NW00jtc1M1iv6x1mpglcTqkmLYCzvex8zdmeVC2fCrPT/uzLkz352zc2bOOYswDMH/GYzIhgghUcIWZDQhZuyODo7D8Agh/0QF2xH7dMVMSCAa2Gbt5TRLj7HdA8AJGOQ0a+huNHAiPuDtCHUOGXYoO32fexFPTL3EPyhsH4VB/+N+wHFmRHGpREL6bhFw3HbYpHsBAxhTUZWrE7BbRpOV/m3VCGyTcRu5Ml72Ad4h10h/eBqeB3BaL09EH8Bk86Xw2q8g/gyQRmLwvvyZSaS1H2wZ+eI5teNsg/iJp3hPATw5uqtTGVBk6i94NwJ2TMazbGqKvRUiZQ5+z7ozQj6/CCdNOaNbedbIq1l4inVfthwSYHvmsRF0aNZBbUPmohTTDLlBq3RQ1d/EFjpDymkJ8HAeHqEj2d/QdfOPQOwdGPsAXv9Se1Hwx+/MCtLEw/Pxa62TlvqF1nG82kxhVwv9iW9/RS/L3BFeDk56bQ/9aMa3tFMgG6vB8AjzWlET7eQf7uBge7v2dsxN2Udu3BWA4kYdnr+NMsu6qH3zjnKww/Wptl+LPpEf04MZDYGSz3Q4XXdEqWauVLjfz/3mpLy/m+Um8Ybyq1bWOx/9tahOh90eBpfXKs/c0U0d/IZBwuyTKW0w87D6pezdUOwN6vBTlxhsL94GzuuZx6lD9ONpe8JVA09fUPtZz1c7Ozt1ODl7PZu1Ziss29/O4kr4YpjeOAYmeottBbuVhsIw7gqbtHYLzD4Qgn5woqkbStdQRbE8DL+7mk2St5ELK2G4IHUzvLeKaVUeDi6vYK9zTkBub6MxPOom0zZt5OD3y9jr+JAxrJj9rI9pH27g4FVVLPQs3mtstrJhlSuZ9tF6Dl69mc3/eJ3hhqmuWlvC1KwfFGPawKlgGafZys/4jVylHZJ1K2BQsUzzGRwSejydruWaXn1agNp/09oa1RsRx1O/GFVLtVnbKwR40xKtzfxJbcSLoV9JT+s+tY2xCnCPlrnqKmg0EK5kOBgUb1QtqSwTYM8H6kr1zBlCMIDFEr3mye5C+Zn1HYjyghKMvaVU2+LjwxDkvcT2eYZZDoUNyyPg6oUAO3exIxQRAO2Z41msSbn3F7jTGwQ2p+YGNO79kWrSnJNC6IUkzxI2c9K5PrDHCbCfQFy9m2m1R8WgL6Sb3NjtECnpfj1h9083QqJzZnfUCGjdyHcgnOi6WBaMTLHxJKik2Kn5WMTOs8UbapA512OfP9czQIpVkvtYudgL0OQO3uMXyxaUX59VuWERKMl9pnRGHiZj0moNkvvgZYX7zx1qWRFDDMuKsDjQEhILmq0l/1bQCEsJpVQsGXopJUuCqYfToizixPJx51tRlY/DKlyFknlC4QLjSQPBNmnfPFqs78mPtlgf1t+EIcl/FH4Id+umTECP2vYAAAAASUVORK5CYII=",s.SPEED="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACYklEQVR4nO2ZS04bQRCGrcAmu0BWAYM4BCE5R4QQJ+G55bEFEZQLZIEgCYiHcw4QF0hgQWJgazubLyqpIjWOx1M93fNAml8aaTRWd/9/TXVP/eVGo0aNGsEAXgDvgTXgK3ANPAJ/9HrUZ1+AVeCdjGmUDaAJbAO3+OMG2AImyyD+GvgE9AhHF9gHxosivwjcEx9tYCFP4qMadSvOJT00zVoe4z7KWrHJvwTOPCPadMZPeY49lTVjRt6XfKiAfyLC34Rn2rhoafoI+e8Z59iLsWH7cQFMa37LfSiOVWjSXpkPOSrvU1JDhITgwE0TFdGP38BYzNSZiiTgCfmUveKXShqJXkpuz3gej2nkRzWdkj52Ez4CpDzIC0nkD1LGbfoUZj9zIn84gPwI8NkwVuqtEYsAqSqrFHkXcxYB61Qr8i6WLQK+UU3ygiOLADEeoZATbGnQyZEhbVxcWQQ8RKgqB75qI/nzIeu1LQJ6EYqygWe2MfLNIet1SxMgz4xjm6ECHiJUlf+lELBiHNsasl67yE28rFGf0PsY/vnKIkDaIlXFoUWA9HaqiiWLAGk6VRWzZRdzIfhh7uZpx6xq2DCRVwGTaiIowBNfGObreBkaFSHtPnL2xNb5dr3IO6Ze2n15eWLrfL8ymXqdcCEnT+wz34dM5B0R0qssCztB5B3zUcbX+Sxak1ebu9KrLAon0Zq7fWZkrwDyu6buQ4CQeT0ZYuMueMN6iBjTt5H0sfNBR6P+qhDyfUKk1t/MWDtJbbMBvCmceEIBOKeu60iMhzq7nl5yf6m/ibl5W4m/WWvUaDx//AV2V/CQip4uIQAAAABJRU5ErkJggg==",s.CLAP="data:image/png;base64,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",s.X_CLAP="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAuVQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1XwNJwAAAPd0Uk5TAAscIyIXBxZqzPXtsE4NGZL+/91fBQIfwCAdlb8nCCVEVEkuCgHg35b93FwOTKzu98OX+eJoD1rnUgaY9tVNEM2+E5n0pRtd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",s.VOLUME="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB3UlEQVR4nO2YTStFQRjHJ4nL1bWykgUWkux8AAvFStH9CnwF2dmIlFvI9R2kLFCykPIBvBWxE8XGy72R1/ppuHWPp5M7Z5xzO6fmt5xnnpn//zRznplRyuFwOByOkAAmgVdgRSUNYIoyHyrB4r9RSRavUUkWrzHIzQIXwD7QWx3FhuIrGQAagWdP91ugMzbiDQw0643Obw6BVCzEGy6haZ+02ViINzRQA2yItLfIllIQ8dIA0Ar0adGiPQNciVT7Igi0AWtAMYjYvwwAw8B7qXkbqBNzjonUJyBtK/7uv8J9DOyI0JKYtxa4FH2yNgb0lw8Nz7h5EfoEusXci6LPso2BYkQG9C/zXIRzYu5BEd+1MRAqYuwRET4W8Q4RP4ubgbQIP4p4g4g/xM1AU9INjIrwUYUldBqnTZwpnTq9zIu5h8LYxOsRGZiz+I3mbAx0AfcRGJD1ZcGgkA0ENuCpxqtAIUQD/Z7lueVzlBgXqQXZJw6HuRa/Wxc/Re5apOZDF29jwvA4vSnS9JNMe2QGgpiwHGcmUvFBTBjcifXlxcsBUF8VAyYmKuSmdDWmzI0uZlUTH9Kzir7onAB7QE91FPsLmbAxECvwMaGSBkl+3BXP6y+RFiOHw+FwOFSZLzQs9DjJQ33oAAAAAElFTkSuQmCC",s))(Ce||{});const Rp=globalThis.showDirectoryPicker;async function AT(s={}){if(Rp&&!s._preferPolyfill)return Rp(s);const e=document.createElement("input");e.type="file",e.webkitdirectory=!0,e.multiple=!0,e.style.position="fixed",e.style.top="-100000px",e.style.left="-100000px",document.body.appendChild(e);const{makeDirHandleFromFileList:t}=await qe(()=>Promise.resolve().then(()=>vg),void 0);return new Promise((i,r)=>{e.addEventListener("change",()=>{t(e.files).then(i).catch(r),document.body.removeChild(e)}),e.click()})}const Lp=globalThis.showOpenFilePicker;async function bT(s={}){if(Lp&&!s._preferPolyfill)return Lp(s);const e=document.createElement("input");e.type="file",e.multiple=!!s.multiple,e.accept=(s.accepts||[]).map(i=>[...(i.extensions||[]).map(r=>"."+r),...i.mimeTypes||[]]).flat().join(","),e.style.position="fixed",e.style.top="-100000px",e.style.left="-100000px",document.body.appendChild(e);const{makeFileHandlesFromFileList:t}=await qe(()=>Promise.resolve().then(()=>vg),void 0);return new Promise((i,r)=>{e.addEventListener("change",()=>{t(e.files).then(i).catch(r),document.body.removeChild(e)}),e.click()})}const Dp=globalThis.showSaveFilePicker;async function wT(s={}){if(Dp&&!s._preferPolyfill)return Dp(s);const{FileSystemFileHandle:e}=await qe(()=>Promise.resolve().then(()=>Rg),void 0),{FileHandle:t}=await qe(()=>import("./downloader-1e1409cf.js"),[]);return new e(new t(s.suggestedName))}const Br=Symbol("adapter");let cd=class{constructor(e){this.kind=e.kind,this.name=e.name,this[Br]=e}get isFile(){return this.kind==="file"}get isDirectory(){return this.kind==="directory"}async queryPermission(e={mode:"read"}){const t=this[Br];if(t.queryPermission)return t.queryPermission(e);if(e.mode==="read")return"granted";if(e.mode==="readwrite")return t.writable?"granted":"denied";throw new TypeError(`Mode ${e.mode} must be 'read' or 'readwrite'`)}async requestPermission(e={mode:"read"}){const t=this[Br];if(t.requestPermission)return t.requestPermission(e);if(e.mode==="read")return"granted";if(e.mode==="readwrite")return t.writable?"granted":"denied";throw new TypeError(`Mode ${e.mode} must be 'read' or 'readwrite'`)}async isSameEntry(e){return this===e?!0:this.kind!==e.kind||!e[Br]?!1:await this[Br].isSameEntry(e[Br])}};Object.defineProperty(cd.prototype,Symbol.toStringTag,{value:"FileSystemHandle",writable:!1,enumerable:!1,configurable:!0});const oh=Symbol("adapter");let fn=class extends cd{constructor(e){super(e),this.kind="file",this[oh]=e}async createWritable(e={}){const{FileSystemWritableFileStream:t}=await qe(()=>import("./FileSystemWritableFileStream-e4c13ad9.js"),["FileSystemWritableFileStream-e4c13ad9.js","web-streams-ponyfill-4a0f4950.js"]);return new t(await this[oh].createWritable(e))}async getFile(){return this[oh].getFile()}};Object.defineProperty(fn.prototype,Symbol.toStringTag,{value:"FileSystemFileHandle",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(fn.prototype,{createWritable:{enumerable:!0},getFile:{enumerable:!0}});const Rg=Object.freeze(Object.defineProperty({__proto__:null,FileSystemFileHandle:fn,default:fn},Symbol.toStringTag,{value:"Module"})),Ir=Symbol("adapter");class Us extends cd{constructor(e){super(e),this.kind="directory",this[Ir]=e}async getDirectoryHandle(e,t={}){if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");return new Us(await this[Ir].getDirectoryHandle(e,t))}getDirectory(e,t={}){return this.getDirectoryHandle(e,t)}async*entries(){for await(const[e,t]of this[Ir].entries())yield[t.name,t.kind==="file"?new fn(t):new Us(t)]}async*getEntries(){return this.entries()}async*keys(){for await(const[e]of this[Ir].entries())yield e}async*values(){for await(const[e,t]of this.entries())yield t}async getFileHandle(e,t={}){if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");return t.create=!!t.create,new fn(await this[Ir].getFileHandle(e,t))}getFile(e,t={}){return this.getFileHandle(e,t)}async removeEntry(e,t={}){if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");return t.recursive=!!t.recursive,this[Ir].removeEntry(e,t)}async resolve(e){if(await e.isSameEntry(this))return[];const t=[{handle:this,path:[]}];for(;t.length;){let{handle:i,path:r}=t.pop();for await(const n of i.values()){if(await n.isSameEntry(e))return[...r,n.name];n.kind==="directory"&&t.push({handle:n,path:[...r,n.name]})}}return null}[Symbol.asyncIterator](){return this.entries()}}Object.defineProperty(Us.prototype,Symbol.toStringTag,{value:"FileSystemDirectoryHandle",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(Us.prototype,{getDirectoryHandle:{enumerable:!0},entries:{enumerable:!0},getFileHandle:{enumerable:!0},removeEntry:{enumerable:!0}});const xT=Object.freeze(Object.defineProperty({__proto__:null,FileSystemDirectoryHandle:Us,default:Us},Symbol.toStringTag,{value:"Module"}));async function Op(s,e={}){var t,i,r,n;if(!s){if(!(!((t=globalThis.navigator)===null||t===void 0)&&t.storage)&&((i=globalThis.location)===null||i===void 0?void 0:i.protocol)==="http:")throw new Error("Native getDirectory not supported in HTTP context. Please use HTTPS instead or provide an adapter.");if(!(!((n=(r=globalThis.navigator)===null||r===void 0?void 0:r.storage)===null||n===void 0)&&n.getDirectory))throw new Error("Native StorageManager.getDirectory() is not supported in current environment. Please provide an adapter instead.");return globalThis.navigator.storage.getDirectory()}const a=await s,o=typeof a=="function"?await a(e):await a.default(e);return new Us(o)}var lh,hh;const ET={adapter:{cache:!!(globalThis.CacheStorage&&globalThis.caches instanceof CacheStorage),native:typeof((hh=(lh=globalThis.navigator)===null||lh===void 0?void 0:lh.storage)===null||hh===void 0?void 0:hh.getDirectory)=="function",sandbox:typeof window<"u"&&typeof window.webkitRequestFileSystem=="function"}},Fp=s=>typeof s=="object"&&s!=null&&s.nodeType===1,Np=(s,e)=>(!e||s!=="hidden")&&s!=="visible"&&s!=="clip",ch=(s,e)=>{if(s.clientHeight{const r=(n=>{if(!n.ownerDocument||!n.ownerDocument.defaultView)return null;try{return n.ownerDocument.defaultView.frameElement}catch{return null}})(i);return!!r&&(r.clientHeightne||n>s&&a=e&&o>=t?n-s-i:a>e&&ot?a-e+r:0,_T=s=>{const e=s.parentElement;return e??(s.getRootNode().host||null)},Up=(s,e)=>{var t,i,r,n;if(typeof document>"u")return[];const{scrollMode:a,block:o,inline:l,boundary:c,skipOverflowHiddenElements:u}=e,h=typeof c=="function"?c:Y=>Y!==c;if(!Fp(s))throw new TypeError("Invalid target");const d=document.scrollingElement||document.documentElement,p=[];let m=s;for(;Fp(m)&&h(m);){if(m=_T(m),m===d){p.push(m);break}m!=null&&m===document.body&&ch(m)&&!ch(document.documentElement)||m!=null&&ch(m,u)&&p.push(m)}const f=(i=(t=window.visualViewport)==null?void 0:t.width)!=null?i:innerWidth,g=(n=(r=window.visualViewport)==null?void 0:r.height)!=null?n:innerHeight,{scrollX:y,scrollY:b}=window,{height:A,width:v,top:_,right:C,bottom:B,left:P}=s.getBoundingClientRect(),{top:M,right:U,bottom:F,left:T}=(Y=>{const R=window.getComputedStyle(Y);return{top:parseFloat(R.scrollMarginTop)||0,right:parseFloat(R.scrollMarginRight)||0,bottom:parseFloat(R.scrollMarginBottom)||0,left:parseFloat(R.scrollMarginLeft)||0}})(s);let S=o==="start"||o==="nearest"?_-M:o==="end"?B+F:_+A/2-M+F,x=l==="center"?P+v/2-T+U:l==="end"?C+U:P-T;const L=[];for(let Y=0;Y=0&&P>=0&&B<=g&&C<=f&&_>=H&&B<=N&&P>=ee&&C<=O)return L;const Z=getComputedStyle(R),Q=parseInt(Z.borderLeftWidth,10),ge=parseInt(Z.borderTopWidth,10),Te=parseInt(Z.borderRightWidth,10),he=parseInt(Z.borderBottomWidth,10);let pe=0,Ae=0;const oe="offsetWidth"in R?R.offsetWidth-R.clientWidth-Q-Te:0,ue="offsetHeight"in R?R.offsetHeight-R.clientHeight-ge-he:0,ve="offsetWidth"in R?R.offsetWidth===0?0:W/R.offsetWidth:0,E="offsetHeight"in R?R.offsetHeight===0?0:D/R.offsetHeight:0;if(d===R)pe=o==="start"?S:o==="end"?S-g:o==="nearest"?Ja(b,b+g,g,ge,he,b+S,b+S+A,A):S-g/2,Ae=l==="start"?x:l==="center"?x-f/2:l==="end"?x-f:Ja(y,y+f,f,Q,Te,y+x,y+x+v,v),pe=Math.max(0,pe+b),Ae=Math.max(0,Ae+y);else{pe=o==="start"?S-H-ge:o==="end"?S-N+he+ue:o==="nearest"?Ja(H,N,D,ge,he+ue,S,S+A,A):S-(H+D/2)+ue/2,Ae=l==="start"?x-ee-Q:l==="center"?x-(ee+W/2)+oe/2:l==="end"?x-O+Te+oe:Ja(ee,O,W,Q,Te+oe,x,x+v,v);const{scrollLeft:j,scrollTop:z}=R;pe=E===0?0:Math.max(0,Math.min(z+pe/E,R.scrollHeight-D/E+ue)),Ae=ve===0?0:Math.max(0,Math.min(j+Ae/ve,R.scrollWidth-W/ve+oe)),S+=z-pe,x+=j-Ae}L.push({el:R,top:pe,left:Ae})}return L},TT=s=>s===!1?{block:"end",inline:"nearest"}:(e=>e===Object(e)&&Object.keys(e).length!==0)(s)?s:{block:"start",inline:"nearest"};function Jn(s,e){if(!s.isConnected||!(r=>{let n=r;for(;n&&n.parentNode;){if(n.parentNode===document)return!0;n=n.parentNode instanceof ShadowRoot?n.parentNode.host:n.parentNode}return!1})(s))return;const t=(r=>{const n=window.getComputedStyle(r);return{top:parseFloat(n.scrollMarginTop)||0,right:parseFloat(n.scrollMarginRight)||0,bottom:parseFloat(n.scrollMarginBottom)||0,left:parseFloat(n.scrollMarginLeft)||0}})(s);if((r=>typeof r=="object"&&typeof r.behavior=="function")(e))return e.behavior(Up(s,e));const i=typeof e=="boolean"||e==null?void 0:e.behavior;for(const{el:r,top:n,left:a}of Up(s,TT(e))){const o=n-t.top+t.bottom,l=a-t.left+t.right;r.scroll({top:o,left:l,behavior:i})}}function ts(s,e){let t=dd(s)[2];return e&&t.slice(-1*e.length)===e&&(t=t.slice(0,t.length-e.length)),t}function Xt(s){const e=dd(s),t=e[0];let i=e[1];return!t&&!i?"":(i&&(i=i.slice(0,i.length-1)),t+i)}function Hi(s){return dd(s)[3]}const ST=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/;function dd(s){return ST.exec(s).slice(1)}const{GONE:Lg}=Uo;FileSystemFileHandle;class ud{_path;kind="file";name;isFile=!0;isDirectory=!1;constructor(e){this._path=e,this.name=new URL(e).pathname.split("/").pop()??""}async getFile(){return fetch(this._path).then(e=>e.blob()).then(e=>new File([e],this.name)).catch(()=>{throw new DOMException(...Lg)})}async createWritable(){throw Error("Cannot call createWriteable from a URLFileHandle")}async isSameEntry(e){return FileSystemHandle instanceof ud?e._path==this._path:!1}async queryPermission(){return"granted"}async requestPermission(){return"granted"}}class CT{async handleDropEvent(e,t){throw Error("Cannot call handleDropEvent from a URLFileHandler")}async getDirectoryHandle(e,t,i){throw Error("Cannot call getDirectoryHandle from a URLFileHandler")}async hasFile(e){return fetch(e).then(t=>t.ok).catch(()=>!1)}async getFileHandle(e,t){try{if(!await this.hasFile(e))throw new DOMException(...Lg);return new ud(e)}catch(i){console.error("Failed to get file "+e+": "+i);return}}async getFileHandleRelativeTo(e,t){const i=new URL(e);Hi(i.pathname)!=""&&(i.pathname=i.pathname.split("/").slice(0,-1).join("/")),i.pathname+="/"+t;try{return this.getFileHandle(i.toString())}catch(r){console.error("Failed to get relative file "+i+": "+r);return}}async getDirectoryFiles(e){throw Error("Cannot call getDirectoryFiles from a URLFileHandler")}async getDirectoryFolders(e){throw Error("Cannot call getDirectoryFolders from a URLFileHandler")}async writeFile(e,t){throw Error("Cannot save to a URL file!")}getRelativePath(e,t){throw Error("Cannot call getRelativePath from a URLFileHandler")}}function Za(s){throw new Error('Could not dynamically require "'+s+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Dg={exports:{}};/*! +`,t}requiresSSC(){return this.chartName!==""||this.chartStyle!==""||this.credit!==""||this.music!==void 0||this.timingData.requiresSSC()}}var Ce=(s=>(s.SELECT_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVR4nO3YQQ6CQBBE0X8PXKrn9DqGcDNNZC5QhGR2agQk6Z5QL+l9FwULGszMzN6dgB4ogFbOjQTLPzcsniZE/+fy4SHKTgHCQijZFGAALq0GUJ35u+xaDiDg3nqA15YA0bR2HwfYmdxAMLmBYHIDweQGgskNBJMbCCY3EExuIJgO18DY+k/9kGBRfZn57PnTFXgkWFYfDltnFurqESnD6zTWJ794eTMzO44JY84XrlhT/UgAAAAASUVORK5CYII=",s.REVERT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAACY0lEQVR4nO2aTUhVQRiGn1pYSVqLBM0WbQpNuLcoRIhS3AVFEEWLtiEKRRAUghAXidyoRNAf7XPhwqSfRW2jRVw0cpVCBJrR36KIfggqDswFGQY7Z+65986Zbx74tud+73PnnDNnZiAQCAQCgYAFm4BuYCMC2QO8B/4CS8BWBLEb+KTCl+ocQsgbwkc1hJDwHw3hRQjIrxLeewH5/4T3WkAuRnhvBeRihvdSQC5BeO8EtAPvEoT3SkC7RXhvBHQAHyzCR/UWKFahngJTwE01++wBNqQloGgZvtb1HXgInATqyhHw2YEw5dYycMZWxJADAdKqOWCfjYRRyx+8DeytQu0Hjqp/+Q4wv0pPv4DT1ZJQoHa0qZ6/pvmGGsuQgBJb1Kj4Y+jvbKUlFHCHE8BPrb/f6pWZmCsZFIAK+0Xr8Q3QUKmRUMA9jhhuh8u2FxvLoICIa1qf34CmSkgo4Cbr1eRoZa+D5VxwPGMCIi4aJkmkLeES7tKohn6p1+i50Jy2hMO4zSOt31NpXHQAmAb6cZ/zmoAbCKNHE3APYezSBDxDGE2agAWEsV0T8AJhdGoCHiOM45qAuwjjuiZgGGG80gQcQhBdhmX0egTxQBMwiSAOGhZFehHCZrUMtjL8c2ANAqgD7mvho5FwAAE0AE8MaxbRq9B7OoBZQ/himrvILtICXDXsB5Q+fFrxjLXATrX3N602PkxrlS+BbTjMOmBEfZ/HPSQRzep+xNirmMjCQe7BGEGS1mvgGBnhVorBZ4C+ck+J1OLkue3JlEV1NOaCevpnlsaEhyR2ZOHeDgQCgUAA9/kHkepiJFq7BJgAAAAASUVORK5CYII=",s.ADD_FOLDER="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAvUlEQVRIie2UTQ7CIBBGnz8rb+Mt2hqv4TGMmt4Kexl7gUa3TXBRTAALQqGJJr5kNpR+r8ykwJ9vogJaQDrqlCrwhWeRfAoPrRYo5xRI4OYTpGLkLDMEevl9wXqGzC2wH3uQa8gGOVpUAALoVAmGW+GNKSc44v4XLqmCwgpcqfVeWzNOEisQAYJGfyHkspPARu3vrGCbHrjrQz4oSSiLiL2TuBLZoljKAMEuRQBwxj2rOjX8RcXQioeqBu3Ln4QChU8M4+FlAAAAAElFTkSuQmCC",s.CHEVRON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAbklEQVRIie2PMQqAMAxFXwfP6qJVPIjYzcOKdUkhQ0BaCoLkLS3k818CjuN8ztApYzIDl7xvmalFsAIZuIFozKPMMrC0CAJwKIkuGVX5KdkmLEm3ci1JSlLKU49yLSmXVG1es0EANvnvInKcP/AA784fpjlWwNQAAAAASUVORK5CYII=",s.DBL_CHEVRON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABA0lEQVR4nO2WywqDMBQF84W1CyWL9ttbsMWfUJgiFOrCFPO+ae+sREOck0Q5xiiKoihKBoAz8ATG9dq0BDAAMx8W4GoalW8nBG55+SEAuyM/O+5Z08DKL8AF6B3PZOzEN/nNGJkhOCAvNgQe8uJCECAvJgQR8tVDkEC+Wgjc/3kb2oXwnLPYyvt0IXLvRAL5eiFIJ18+BNB5nvnoLoR7ji4kwCPBi23Ax293xo8hAaZYeZ8xW3bGTybwCK2/wJtrC33EAkJ0wP3tcPIOcCCgdqEN2oX+ogsNqeSLhyCDvNguFAJSulDku/qqXSgF1OpCKaF0F8oBpbpQTsjdhRRFUZSf4AUM7g40e4mzFAAAAABJRU5ErkJggg==",s.EDIT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABOElEQVR4nO2WQUoDMRSGP5duWgpS157BhQuheAR7mOrSuKviPbqQit5CaC9QEOxO2k2XhaJEAhkoZZLpVJy8wPvgrSaB73+TFwKKokjiAngGlsAG+ACegFMy4Ab4AWxJLXw4sZiA+G6ILpnKW1+PZB5ghlDMngHWCMbsEeALIaIm8s1GatSwa1Swbohv4Lxh30oxU2PtoGHfSqGihoE9t1tr7hA+nCayN/RN3B0/RBh15K20EIfIWykh/iJvcxhYlf8PtPOp0M6nQjufCqP3fEJaQA8YH/AXkj6Jy3jJWd5xlbO840T6w6zgAWhTzjFwGZgJEZ0/AlbAeyREwViavONsS6oqRE+avON651jEQrSlyTvuS872FOiQCW+B2yWbEPNAgJW/ncQzAT6BV3+++36wFUVRFAp+AZvenA82VBInAAAAAElFTkSuQmCC",s.ADD_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAABiElEQVRoge2YMU7DMBSGvwQJVO7CwN1YYEFUMAMdYCpHYUMcgg49A3SgEggGE2GskNh5frYr+ZOsppWS93+q9WIbKpWKD4fAHFgBH8BX4NgCt0CbOjiY8M8BYYfGkgwS8wjBs0qsrOKnwH7g/dkl7DkfGh4K+CfsotL7lz3f1SViCjTAnfPbA8oSMQUgg0RsAUgsoSEACSW0BCCRhFRgrA23KHcnqYD9Ijwjg4RU4MJ5RshYSIJ3SAVmwNM/AcfGuyR4h1QAjMQ58EL4cnyQxqO4279T4F0zywYjJlUgN1VgF4jRRkM5Ag5+PgcptY16U+IUajFLiA2RzpJSTqEGuHdqipfXqQT6wkeRSCEwFF4soS3gE14koS2wcGr0bWxEewRtgTf+hm2dmu5u7TW0gLbAFaZl3vA7PdyaLaalboBL++ZSX2R1P7Az+Ah8WtdTjtdV8RFYW9cnFCgxhuRcJ3R0RO18knOdIgQ6iannOkUIpGaLCT96Mrenn2USM+AYuAYeM2epDPINL56D04/lX9sAAAAASUVORK5CYII=",s.MENU_VERTICAL="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+ElEQVR4nO3XS04CQRSF4X+kYx8h0UWIM5vFoIxVdkCgmbMDlSWBsAchLMLWVHI76ZC2pnLgfMlNOqlJn1TdeoCZmZnZSbqNknUPrICfqCXQRcw1sG2EqGsHdBAybAlR1wtCZpkgaUzGUyZIHyFne43ebPg0JuUSeAe+ot6Ai//+KTsWPaCMKhBVAlWj0dP3GMGZqFp2rUptZqaZcyTNlIwyE2SCkOKPpfUNPCBmvBcmhRghqohlNlGcCTtUV8Ac2ER9xEVSyjmwbtm1PtWu8YPMOfKIkNmxPHVfM0GeEWv0bUuIjWLDd+ONXodYAHcIu4kyMzMzOzW/IiF2pLfCTcAAAAAASUVORK5CYII=",s.COPY="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZklEQVR4nO2YQUoDQRBFHwiDB5AsXCSexYxeIVfwCDlE1hoXuUBuodl4CDGOgSyySrIKGGgZ6EAxTBZOVzc21oPe9OJX/eqqgSkwDMPIiT4wBhbAGjgCTuFsgBnQi5X4JTABDkoJnzvvwJV28nVV3iIn7sSZa1e+mfwrMAKugQv+OBOR+DfwQGYDexAGZPI3wDOwUhxk58/R606BQYiBsRB9Eff3wD7RPOyAsquBhRAaicqnSt4JE3U3/Jq1EKkHFt82p7sP4BYo0KUAhsBSxHrqIiR7+/S1WYm7OvmYDEWsqouAfMY2U9qVb1I0BlvFQNtdTFxIPDOggLMXwGYgCGcthLVQEM5aCGuhIJy1ENZCQbh/3UKb3A3McjfQ87vKbA3gF63zXP+J2/hKuJUoRaxPLdGpEF36IDH2QneNvdCjlvjAb8pSbua2XTdz5ygTmtj6BZc6ff+sVaTtdOX1VStvGIaBOj8GcNhDDTqXrgAAAABJRU5ErkJggg==",s.TRASH="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAABdElEQVRoge2YsU7DMBRFDwxlgb0wlB9BLMDXtFvhE2BAogNDxR+1S+ETEBJiLqVSU6lVGOwoJsQhDnEc0DvSU63c+OXeuElVgyAIddMBBsAUWOqaAH2ttZoj4AmILfWoz2kleyiDNvNJzWjpSgxITUbAEDjUdamPJXo/kMdCpqQGhzn6laFPGvRVmg9Sg90cvWvoiyYM3QArfv5O+64VcG0zuVNwfAHsu+f2whI4yBN2LRNi4B714IUmQnnJxbYCecQV57ngfA3bCvwZJEBoJECGO9R7+9ZRawTzx8XGWutrR83lGl+o+zVadM5v5+ciz0BoJEBoJEBoJEBoJEBoJEBoJECGKPNZVqtM3QFGqD2ckaNWGdlWCY1LgK0x9rG/b/bcWs/K4BLgzRifOMwry6kxfvXQnwfSP9zPwDn1rEQHuNA9k/7jGvp+4xh4x21rvErNgZ6PAKDuus8Qc+DMl/mEHmqJX4BNDaY3utcYj3deEP4rn4hExm+tmh+HAAAAAElFTkSuQmCC",s.IMAGE_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAB8UlEQVRYhd3WTYjNURjH8c9IozRlwUITTbMRNlNWxksWjKxkYbJQY6mUTCKxmDSkZiezm421KQsRFkgpL7Eg2Si3RJOFl5SIzVicc5t7p/9xz//O/5r41el2nnOe83zv8/zPC4usrgLbBPrbXO8DTuHHQgBm8QjvSwZfg0HcxV58L+nfBDDcht9w9P2IO1ie47SkjUCttBMDuIWexQB4gV3YiJutIDoB0AixoRVEpwCyIaoE+BV/Zxvac6zCdlwoclpaIcBt7EN3wdhxrO40wE9cS4wlt3Unv4EslQE4g5nYTlcFkFuCAxjH2dg/hzeY/lsAQ7iH87G/A7sbAPqFe6VWFiC3BDXheF0v7OsBIQOwEvdxpWzwlIouox48Mbe/H0dbF67jU7RvSaw5LVGu3Ax8w9aGti3aTmCPcP0+xdHM9f6o1HXcHQPXoQeF0+9k7I/Efm+BbzIDZQDG4tjLGOwtbph71CwTXkTjZQByS7ACo5jCK1yOgQ9FKMJJOIXDEaZtFWVgDF8iCKxDX4Fvr1CGkXn2BWWg/u8v4mu0vRZKMF8zuIpjGetmA4zGeZcy15zEJukt2aSck/CIkIXPmQB1HcTDKgD2S9zlLfQsZ1IOwIM2gmfrn3oP/J8AqW9gc8Vx1uJd7uSa5qd1VW2iKNhvOK12/OBuEgoAAAAASUVORK5CYII=",s.AUDIO_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADFElEQVRoge2ZzWsTQQDFf200qVrBUBAURU/aVgTFSvUoXsQqgoIUFDx68SKieBILeujJFhH/AD0VRBD8REHBD/zCIqUm6kG0UqltE0FFqqkedif7Nuymm2bTbWUfLLy8+dj3kpndmQnEiBEjxv+KDuAx8BroBlLR2qkMx4BJ4K9c5yN1FBD1QA9u4+bKVdjXPOA6kAf2h+jRFymgD7fp+yWfK0GztPsKNIbm1ANp4AFus31YoaYbIAG8l7YnwzJbiuVAP26jvVjDCaYfAOCQtB0FFldrthTrgSG5ySTWBFYEDbAHa7zfBBpsLQFkpf2JUFzb2Gbf0HT+C+j0qBc0wFWpd1j0g6K/qc6yg04sw6bjPFYgLwQNcETqZXGGYAoYk7JN5TpZAHRhTZ4/JTf3u4awhpIfggZYhDXOTd1dUnZR9HPlzD8MaNpcA8DKKYxVMonPSN3Lom8V/aNf464KjBewXjLpAKa8AqSAO8AXYIfoLVI3DyRtvQ4YlrIVXjfSZ+5xYH4Ac0HgFaBNtIxt0GBAyraLrpN8rxHrpcJq4b3A7+q9+2IQ+GHztcAWKbstXCfsE+HthmiAhPCJKg1OhZ/ANfm8U/hL4RuFPxfeYogGmGlcEd4uvF/4GuHDwpsMiTKAvpTU6IhwfUiMCm/CA9WsWcrBr99G0b+JnsDZS+RK9IKtF0NG+Qso6ny435dZ1KMMsEr4uPAlOCHyoqdx/BbrRxmgWXhW+FLhOoR03M+KAPuEPxW+Qfhb4cuEjxmiAQrCk9QWC4Hd8vmGcH15vRK+WfigIRrgg/Cj1DZEK84eN4P7F9C10Qvh+rZ+5tXpaWZuMZcE7mI9DvUt3Cp1c7i/xM9S5rmYmw3L6bNS95Lo7aJ/KtdBA3AKeEc0GxrdeXVI2QXRfTc0laDWW8oMzvxM4t6ptVVjXDFTm/oDooe2qTcI+1glB9zCfaySkfahHqsYzOmDLYM5fbRoEPbh7jppN0KND3cNyh2vj5dp54UkcA/4jvfDoabw+oOjZ5p9Rbbg7AAeYT1Fuqn9AjFGjBgxIsA/jvJ6jenUZ2YAAAAASUVORK5CYII=",s.SM_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAcpJREFUeF7tmFGOwkAMQ+H+h95V2S2qqlKcsZ101PADQpPEfnFHgufj5q/nzf0/GkAn4OYE+hG4eQD6EuxHIOER+CFnWJdkbf5vfAEwOoephbiPCoOaN4A/AswWmVpoSZ0ACBN3iNkiUwup7gRAmLhDzBaZWkh1JwDCxB1itsjUQqo7ARAm7hCzRaYWUq1KwJlQxoSr7xuOAsD2x85RPweAbzOh7S+HWACrkKXP9vNWgBoAMjMFwJHhT9+Ngt7DQ2faAXza9vrjZ5suVQIiM60AzoSsg/cxZRMQnWkDgAjZQ2DumuhlF9H30hnZTLj5ycWIbsg+EwUwIgQ16TgH60UAwM0cToiekG4EwNHNTuhKKYXMZ9wBKW53Q2DzUQAzJCFkfgTAlSGEzY8CuCKEIfMMgCtBGDbPArgCBMq8AkAlBNq8CkAFBIl5JYBMCDLzagAZEKTmHQCcEOTmXQAcECzmnQCUEGzm3QAUEKzmMwAwEOzmswCMQEgxnwkgAiHNfDYABEKq+QoAZxDSzVcBOIJQYr4SwBbC8rlMC/qv8CpS/V62+VLqaopMv+oEMNoltQ1AgnHiJp2AiZcnkd4JkGCcuEknYOLlSaT/AqRIb0Fn6qw5AAAAAElFTkSuQmCC",s.UNKNOWN_FILE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAA+UlEQVR4nO2awQqCQBgGv6KeM+rU+1/L7F4RreY/W86ABw/ujsMPImwiIiLSwlh0XZIcit6piaoAY5JbknPNa31OZYAuI1QH6C7Co9zS63cXgQrQTYTqAMOL+9MC+35MdYBjniOgk1AdIOksAhEg6SgCFSDpJAIZIOkgAvkZfHcNmfDvsJkoOHeNlvVbuCbZtzzwbwGSRp/tzM1+nh0t8ILWiZo1MaufAAPQAjQGoAVoDEAL0BiAFqAxAC1AYwBagMYAtACNAWgBGgPQAjQGoAVoDEAL0BiAFqAxAC1AYwBagMYAtADNN84HLHFOqIzVT4ABaAERERGOO8QV911rDPw7AAAAAElFTkSuQmCC",s.MINIMIZE_WINDOW="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAANtJREFUaEPtlbsNwlAQBMcRLQC10QZEiAAi0wa0xqcMdIiICGmejZ60znfPN3OWBzp/hs7fnyzwb4MxEAOSQE5IAtTxGNAIZUEMSIA6HgMaoSyIAQlQx2NAI5QFMSAB6ngMaISyIAYkQB2PAY1QFsSABKjjMaARyoIYkAB1PAY0QlkQAxKgjseARigLysACOAEbYCX75oo/gCuwrwXOwHauyY3njLVAbbNsXDxX3bMWuHd0Ot9gbrXACOzmQtZ4zvuE6iM+fj7ideMBU9XV1VyAQ/4DUyH+tbd7Ay+Srg0YYU5a1gAAAABJRU5ErkJggg==",s.CLOSE_WINDOW="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA35JREFUaEPtmbfrFUEQxz+/0pwwFNoqmMCcc46olY1/m7U2Ys45IWIuDFiJCYyYC0X5ypwcx93t7O57yIO37c3Ofr8zszvhBujxNdDj+OkT+N8e7HugVzywGtgLPAB2A1+6BHw4sB+YBuwBLoTO8YTQMuAYMNSUXQM2AZ9CyiO/jwBOAAtt3zdgG3CuTU+IwFLgeAl8oesWsA74EAmySVzgTwILKgJBEm0ElpvlhzScegPYCHzMJDEKOAXMbdDzFdgMXKr73kbgFTAhAO4msCHDE6OB08DswDkvgImxBK4ASxzWVTitB947ZMsiYwz8LMc+XeZVsQRGmmvnOQ64a3firUNWIgobWX6OQ/6O6X4XS0DyIqHLNd9x0D076E1AdixwBpjp0HnbdDZ6N/QK6YymF6Lu/IfAGkD3p26NM/AzHOBdoekhUJAov9Ft5z8ClPiqJAT+LDDdAd6da7wEdKaypEgscgB4bCRemux4A68MG1pu8FIUQ0DyyglHgJUhFMATI/HTsulUx56rluU/O2T/isQS0J5hluCUpUNLJLQmhwSBi8AWQInLvVIISPlg4LBZ2H1Yi+Bly7bRRWIqgYLEIXt1ckioRJDlo8GnhlAZrDxxEFibyEA10A7ge+L+pDtQPWuQkVB1GrOUIHfmgO+EBwrAInHACjsPCZXou4AfHuE2mZw7UNYbk621TyWCwi67n+gEASU4hUPRSXmN2pGmKJdAKviCZDaJHALKyuqV1bnlrOvW2SX12KkEOgW+IJ5MIoWASgkVdYsdZlfLqeVpilTEqcd210Epz6gsfxRY4QCvTkovza+GiUOdimgSMR6IqUQL8EUnpWdWWdfT2UWR8BKIAa/+WJav9rBdIeEhoHpHYePpAZrAF+ESQ8LVG4QICLwamNqRRiWIQ+AL8ZhpR5BEG4EY8JpIqJmvHX3U3NaOkWgjoFpfw9XQ8lq+qsc7ldM+NU/b64C0EXgGTAqgj7V8HQnNiELTuedNWNoIKO4V/wqluiXwem2807gmW8gTbSQ0od4KnI/1gOSr/wYKHfct5nPBly+2Ro3VCbU6NYWx5km1K/QKaVN1zK7BlbzzOnQ5Ir/rYpdJCLziXt5pXB4C2qxQ2Qc8NXeG5p+R2P+Ja2Ktx2OK/cpqBa9dXgKF7O9UZN3aF0OgWxiy9PYJZJmvA5v7HuiAEbNU/AEymbExfA8cowAAAABJRU5ErkJggg==",s.SKIP_START="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVR4nO3YPy4FURTH8asQFBKvsAeNbQixBxqVxi70lqK2BZUlPKJ50SlQ+Ih4JMZ48+fOTDKT8+2/v3PO5M6deyelIAiCIAiC4A84xgPucZTGhq/Gv5m3zJhhO6OHWWtfgYbuOi7xhlecDelnDYA93Bb0xVB+1gA4wXPRHcr/RZMA7OK6rPAQfil1A3CAx1XF+/T/pSoAW7jCe1XxPvxKVgVgH3d1Cvfh16IsAGu4WG5tjejCb0RJxiZumhbuyk9NKck4z2g+208xgJEvoTT2lzhNYRudzIdsEkeJyRzmJnGcrnEheUoD+T/kPIHClfAFp0P6XV7qd7DRxs32P3+lLIeY47BVSBAEQRAEQZD65ANrrC3m/GFNbwAAAABJRU5ErkJggg==",s.SKIP_END="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVR4nO3XPWpCQRTF8RskEBBBy+wgvZuICNlCKgsrt5AqC3m7kGzB3l6tREgnUYt/GHyveJBq7pvRIefXn8sceB9zzURERETk7gBTYAdsgUnskAEwchwiOs/14I1NzIAZcALOwCfwmDnfElPg0B7BCnjJmHcX+MsRWAAPufPWUYHGEnjOmbeOCwR74C1X3hIUaFRAP3XeEhYI1sA4Zd4SFwguwAfQS5G3DAUaX8BT13nLWCCYd503FfgHj9Cl5Jd4XfJntCr1R7Yv+SqxLPUydyzpOv3tXEi8eXeBd+CnXgtjVkJv3legHhJ+KMOosDOPd6m/NWBSl9gAr7c+j4iIiIjdoV+nEzteGs3QogAAAABJRU5ErkJggg==",s.PLAY="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA40lEQVR4nO3YMS5EURQG4ENBr9dKsAMq9qCdLdgBSh1rsIVZAjZhelrTITGf3GIiCsm8mZd593K+7nXnb/7890WklFJKKQ0HGzjGKTajNbj17R770RK8+al8X2IrWuB3TziJhgMUM9xhJ2plMc84i4YDzI2xGzXR3SvOq6lcy3vAQcsBig9cY7vVAMNXrv584qLlAHN7GaAL/ZmVDRXr1tPxkzLH1378f6/RRxwOdvgKAaYtT4lxq2PuBaOokT/8oJkMVo0rPurfcTVoNXaBm+o2/hI/to7KHK6mGlNKKaWUYiFft4ARJbTJcIwAAAAASUVORK5CYII=",s.STOP="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVR4nO3YQQrCQAyF4XcQXffsFsGLqdhe4C8BFzLgYiAJFN53gc4/6WYimZmZ2UkAV+AO7OTbgQewVB7+Rb13fKsiIG6+y1oRUPHb/LNVBLSSAwaewCRlo5kcMPAEJikbzeSAgScwSdloJgcMPIFJykYzOWDgCUzSyR/1n4qAWDp1uVUELN+lU7UncEkP+NnOrbG3KTj4FjdfdngzMzNTvgMULRo3zp7/ZwAAAABJRU5ErkJggg==",s.RECORD="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABMElEQVR4nO2XPU7DQBBG3yUo+AniOkgQcQ3ID2ehA4EoKOlDuAmOcgpiOhJ9yNIUlguwE+/YEfOkkSxX39sdz3ohCIIgCIIgaAXBqWAieBdkgi+rzN6NBQP6huBY8CBYC/RHbQSvgjP6gOBKkNcIXq2VYNh1+Ftb0abhy7sx7XLldwlflvDdCcHJlm3zWzsdeQo8txheVo+eo7LOtGla62JnPQSmCcLLauQhME8oMPMQWCYUyDwE2pw+qlS+7wKfHgKLhAIfHgJ7/xGPEwpcewgMEh1k3y4HmUk8JRC4dwlfusCs2pw+gkM3AZM4b6mVNoJL1/CV/6JdLzSTTsKXJIZbtlPRNhf0AcGB4M4mSZ1Vf3Hv+QY3tZHgrThV7bcjt+eZ4MZtVAZBEARBEPwDfgDcyqJBiCPoQAAAAABJRU5ErkJggg==",s.PLAYTEST="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdklEQVR4nO2XSUoDURCGW0FvoBtbL2AQT+KAwZXgCfQK4srhGA7gQsVFMF5AjyBOOYBiUBK38ZMHDTb60nn1MlWgvn1V/V+6Kp0kiWEYhmEYCgFKwBVQZ3jUswzz0vALwCd6+HCZJAI36KMaGn4KaKGPFjAdIrCJXjZCBM7Qy0mn8OPAO3p5A8aKBBbRT6lIYFvQqALMAClwHREktn6rSOBS0CjN1c1GCMTWXxQJuB0LwlM7KIHXduHnJNN7IODWJs3CV2Pl8wGWQ3a27eP77RN7ExKWfIN3xdbtJWJuQsJOzAFrEjj3Db0L2dnA8NKdlnLrG1yTdPDUd0tF8F548Ql8DVkgFaxg0yfQ6OPAXvdr+AQeB/g93m2/B5/AKaPDkU9gndGh7BOYAJ7RTw2Y/CeQSayim2/vz4g/EofoZa8wfO5v5QH6Pvl9l62jQE5kRclNPHVcmwIJd9hl4Bi4d2/AAQRuZrPczDWXISq8YRiGYRhJ//kBnszTFsS/lqcAAAAASUVORK5CYII=",s.ADD="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB7UlEQVR4nO2ZS07CUBSGCT4GDn2MQHch0YUYjC4EwwLAuRA0LsGIAxUHrkKjC/AxEnBMnXzm6DUhFeJ9tb3EfkmTJoXb/2/a03P+Fgo5OTnOAHPANlAHzoFH4B34UJvsP6hj8pstoBiC8HXgEHjFnBegCZSzEL4GnAAR7kRAB1hNS/weMMQ/A2A3SeELwCnJcyzn8i1+CeiRHtdyTp9XPk3xP9wCiz4MpHHbTKPjKn6f7Knail8B+lmr57vimZdYVedDoW0qvuzpJeWLCNgwMSDtgStXQEldDB9VrGnSmNn0NnHKsZ7JlWetBlB1lc5MWNcHFR0D0u6GauBAx0A3YANnOgZk8AjVwL2OgaFNtflz4d/nsalOfZ2FTeu/9USFeXUa/QsDQ8NFezYmlPibJG6hmX+Iu7NeRusBG6jpGJDQKVQDmzoGiip0Cq2Ze9JO81Ri5spXdbKsNpNoaIkPdKAZGb/tVdwXCkdG4pWB5UCG+oF1bipZZdbqgR0r8WMmJKvMipaT+LEZ+SID8VfAvLOBsXBXAte0uPQW7sZC3jQqU8vblZ9ipJpQdXpzfmANc9O2esG4MpI6L2U7FfExIyXVdkjoZIr8p2EzTydhRBrAiuQ20rPL4KEmu0htsn+njtWkqwziM2tOTmH2+QRxCeic7ZLqUgAAAABJRU5ErkJggg==",s.FEET="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAZtQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////LHKW/AAAAIl0Uk5TABFPc1wZQcH6/89nBAys/MwjF9bzOt0pxtOGYh8yD/Xo7IKoPWGB4qGRxB3mrePwyH8wcYrg4Qi+TW7nzVCx7bxkdRZ+SJmQzqtq6/uzHNElwD9befkTLGapQqB3BUOMIfeYM6IupVPVwkkguGiVclLZjy2vWOQ0OMedaRi1a46HmhoDuZy6RUrTRBvsAAADmklEQVR4nKWXeUjUQRTHZ9jwaDV1Q3fJLKWlDDW0NLM0EzXbNOxCC0m2wpAokIgOyiiwP6IDLCSig2ItpcNqo0jJssxuK0m7pRKtVSsTl9LVpN9v97fub2beb68G1Hnfee/jXPveLEb/2bAbIRhzP4PuAjz4eAvG6AbAF2OTte+Je1wGKPBvkSXH3S4CcGAfYctlna4BVL2U4N9ndAUwroeRFB02wPguJW6zFx8wpovRlN8FQEjvWAM/Je8hacakr4AYbDlT35HDUY36IDWBP9ByQ3gxIEj8bye2G0HA1M+QGsYBInAroak/gYRp4NQmc4Dod5QY/gLwnP4GnBd3D2a8ZsTgj6xjbIsUIK6ZEaPwY0ab1SQBSHgJqDEPGGnOcwlA+BdAVQXRU8BecLwvTmyE9Nh6SlB3wIA4nPwE0uPrKCHlEQxIwN7wwOxa0k5rgP0SpQADw6Q9n16T0PqlAHOrnQL4GaQAyTdJW1MHuqXcwJm3wZHUbvIgF90C3dL1OLsGnkLGFScACy4jHAXce75pqpwALLyE8PLrMCD6oWNAFj6PcK4eBmRXOgYsruA/jZGtwJBzgCXneEBeFTCE0LJywsy4x7ook3Q8IP8CCMg5Q5haXMm4mDMXl9LgNVAAFBxTS7uYT5oDrKlwBoDW4r/kJLhLYAEUlCOgMQAueURGDYoY+ccEACpkfUEAydAadVYAeJdggI0xr8VSjXhAjpzdYSiv2hjpKlwm9M31bsNJ1in3NBGixQ39YGUwA5KeMfq6UrFVdOc999szzMQyzACfUOoqFJYSGa1gyLpGlmEp2ZuOiqObYg6STpvLbP3U+wX7WYDCzyAZzbXQTsIk8qXwaAhcfUQqGqGthymB/xRSADRB01u/AopGQGFeepYFUG3b3be2JxlTmNOu2QckdA1zW1Kkaxds/wHKIe+EHcD66mFhQ6MMbRIAceklASGr9KIbYb1MdOJWKkU1gwCkPTWJTf9vlr87DpGAzIsiQwzw8DaRnkKJju8k7kHWlBIJQPEBMn6kRO8i7h4xAQLAbNaWPUJHnJPV0TopAPNgtJ23TGNNqREysuqKAbv3SQKQtvkHd7ryje3HKR8xQEG/a1aeEluK9AhcjOhGHCO9i5a8a78RAA8ZMSYfbfcLCABAJXvFlr28KgFQqF/ZDHUOu2JHABTg9cva3alnX9yOASh+Zo154cV4uzPhYD7Ijbna6PPTuXC3vr2T7R+klvDwCGxHiAAAAABJRU5ErkJggg==",s.METRONOME="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABpklEQVR4nO3Yv07CUBTH8Q7MJG5a/0y+g5MugA4+gIOri4NWX4VF0PgyVoxx0FfQREcqEUNc9GtqGxVzKVDOOXXoL7lTT3N/nzSQ9npemTJlZgqwAdwB0e/lmBu6DtwC617RAR5wxDHnyn0xrX9KLY4oNikgzkIx7ZNSDUbEMTsq9WLaJ6WOBABBMe2TUmcCgHYx7ZNSVwKAUKvcMrALrGTM9AQAkUb5VeAl3eA1/rE6ZpYySk0DiONLAwKGM/iLALaQA9SlAWvAuwPxvRFwLAgIRAHphnsOxBuwnV4/FwS0xAEZiK8nAVwLAkIVQLrxPvDhQAwEAZEaIONJIAiIM/+vEDkANVXAtIgcgEN1wDSIHICWCSAtc6MACC0BkQIgsirvT1AmD0D/n2jcV5gAoGYBCBQBBxaAtiLgxAIQKgIuLABVYG7cctw39h6gqg4oU2aGAE3HIa30ahZyDiSYjibg2QDQMz+JVoivAdg0BDRMT6IVEmgATg0BbQ1AxxBwqQHoGgK6GoAnQ8CjBmAH6BuU78d7iQNSRGXC1+JZVkWlfJkynjOf521HFc2TkGgAAAAASUVORK5CYII=",s.X_METRONOME="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAUFQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bof29AAAAGt0Uk5TAAx+vMx9Edj/15eWR0EB7EX48zMgHu0pSknmIXV04B+gnsvITHdzoZ02drK0eQ4C9BDRHCKQ203feOeis804+fVT+iNOpFT73EJRGl1ynMbxRopxmxvF8B1IcJokDUufyslX/WW6azs6Q9b/adW4AAADp0lEQVR4nO3Z/UsUQRjA8WfqKBMTNStLi9PeqEiTispeIArrfEmwKIX6RaLoLyoIetWgN+xdooikd8rCCpO0MrIy1JJer9Cu87y93dl9Zp6ZHfslbn65vWXu+/FlnNs9GfzjwZJAEvgfABYd8cPB+GMg/hgZMxgxBsYxe0o4/phiv3zotymQ+sc+9gIw9rvnFWnsqwaQzn5JgfGRL65XZER/pP3qQPY3xxMEgIm97v7P6Ff1URnIGSCAzA+ePkAWe6cK5PURwOS33j5MYW9UgWAPAUx7Le2TQMF7Ash9Ke1TQHrgBwGkDiaWEdangNx+5zMMsJcR2qeA2d0kYC0jvE8Bc7g1ggIzX8j6FDCPm44CwXZZnwICAeczFMh/LuvzAJs/vDc/sU8UsXYKSBmQ9jmgmLUNn1nQkjiz9Bk3GQGoPgcsexp7KBxKCMtbCYDsc8CE+NvT4k5rA1r5WA7QfQ4oeRQ/SHwPq1q4yW5Aoc8Bqx9aR5aw5oEMUOlzwFp2nxeKMu9JAKU+v0zXsTvWYez3sP42P5kD1PquPzSXsOGWGFDsu/+SeWFRhxBQ7Xu2Ck4ovikClPvevaiUNVuHhVk3BIB6H9nsHN+De1hAqEm5j+2mYiHsOFbso9u1UHAAZXcd/fJLeoBQsIGyoWa7X8EuaAIiIQHw/Wul53UBgWABrj5sPKcN4EIY78Om6+5LbBpAhTDeB1jY4plLApgQFvQh1OgDgOrLbrJJ0IfyM34A7sJa2oeK034A7sJa2pctIzHAX1hL+7JlJAa4uzN5H6DylD7A3Z0RfckyEgMzHLePVF+yjMRAvn37SPYly0gMzErcidJ92HxSG0gPWUtPoQ9VTaJlJARqzgr7/P3ByBAuIyFQ2yjsY0DKgPecHKi8KuxjQPVxXWDrRWEfA7Y06AI7YuljWB8meaeH6nWBxPD2tQYJGPZJwLRPAcZ9AjDvy4FR6EuB0ejLAK6f0yeeODIye9HTYoDYPz0jr1MP0O1DQZsWoN2HnC4dQL8P019pAD76sOJzK3YaBfz0AdLQhYYB/vqw7agi4LMP2d3YWS/gtw/bjygBvvtQc1gF8N93footBgz6AFOxTZEHjPqQ0YOc5ACzvuufIQhg2Of/GYIApn2oPSQH6liDUR+qTsgB2FVv1IfUTwQQvWsa6WeEkZn02HmAAmD3ldhS3tMh/FRNMkrm7icBa+xlB7X7dZF92GnRW+aSLs1+UPCBC311bTiSQBIwH38BmsHCcGg52FEAAAAASUVORK5CYII=",s.UNDO="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeklEQVR4nO3Wv0tXURjH8dtgEuJaoEMSguBQBNUiVGv9D41uTg3S9EWiobGpv6Gh0Mk/IAyKnIxoq8SiEm0Q7IdErzh4S9Hvr6vnDMHzXi/3+Zz3c89zzq2qIAiCIAiCIAiCGixhGaerBmAA19HCAl7jK3bwDR+wgnnM4ipONsnodyF/edWPBCbxEBuas44HuFBCoKsEJupO/5aHJ6lmboFDEvVWuVtvjdzs4H7KyCnwTwIjeKE8zzGWU0A9lGkQu5GGdREzmMI4hnAKo7hcP3uE7R61vuB8ToFufMLttNgGOcOYxvsuddPBcLGkwC/MpQ437tRe3iDu4GeHjM/p65UQ+JjO/aMuvE3uJbztkPWs78FuINDXPdFQYgRvOuTdyy1QSuIMVttkfce53AKlJK7gR5usxyUESkm02uSkQR8sIZBdwu7d8e5AxiZO9Hpx7RgSL3MJJHANW/u6f6vqBW4cQ+JplRm7vzA3cTZ37SAIgiAIgiAIqv+aP0/ezoLd5BjTAAAAAElFTkSuQmCC",s.REDO="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABi0lEQVR4nO3WPWsUURSH8Y2oIJKYRhdiEa1SCJqXVvAzuEXMB5B8BEuLiKRIk8pSLC1WSJMqBEIgasoglmKRYBaVFEGEpPAnK7dY193ZndlZWOE87cw59/nfe+alUgmCIAiCIAiCICgILuM+nmADBzjET5zjBB/Ttad4gEs51xjHduqTqzar6V2s45v8fMcL3OlTfq+ltjqo+EzazTL4lXrN9ClfPEAalbU0FmVzjmet49FFvlgATON9hsBXvMIy5nETV5pCuI4FPMYbnGb02cdUhnz+AJhLM9uJXdSap5PzJBfxoUvPoxTEwAFwr4v8JzzMtRP/9r6AR/iSIVs8QBqbTm+YOiYGkW9bp4qtUgOk2X3boXilLPG29a6hUWaA1Q6Fz4ckP57xwOYPgNs4ayuqD0n+KnZyyPcV4HVbwWdMjsDO9w6AW+nr2EpthOR7Bpj1N+8wNkLyPQOM4eWf2zhu/rCVKZ/W2FScH339jeIGLpYtn3o3vyNFaGBpGE5BEARBEARBEFT+S34DOXeCiMi4hZkAAAAASUVORK5CYII=",s.CUT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACxElEQVR4nO2YvWsUQRiHRwMKKojkQxMUOzWiXbCxU7BQMRFRrCKKtQqXiF8EY+dfYEQrxcZW/QdEbMydWhhQLERR8QPWJIrBmHtk2PdgGXZnZ/d2zyn2gYMQZmZ/M/N+zatURUVFhbcAvcA1oAH8lJ/+exLoUT4DHAZmSeYHMKI8Fr9EOkvebYLQbGwnbxJ4ZU6ENh9lAagB/fKryf+iXC1Jy3JgFHgDfAGOu0x6boirxYwZN8Y0ShC/B6gb3/nsMnHOmNQfM2bAGDNXoPBB4EGCub5yWUDbdJR1DhsIChC+HrgBLCaI15axw2Uh89rOOJjQszaErwIux9x8i4/AKe0PrgteMhbQDnsO6JaTH49x4gs5HfQE8CFB+C8JKGuyLtwHfMOdr1nDKLBXMnpSbrkDbMx6KNEPHLLYYpQ/wIEM624HHlnWewwM5RZufGw/MJ+ygVHHtTYANy2H8hY4Uohw48Pa5u8CTUs9dB5YaXHQK5aDCCQxrihcvCFkCHhquYn3kjGXRRz0KPAuYfyi3EhfqcKNTWhRpyWlJ/EEOAm8sIzRSWpbx4Sb6LCma5+YUJrGjPYr5QvAlpSI0kKH5LNAl/IJYDUwIaE0jt/AdWCt8gmgS1K7TvFx6Ih1D9isfAPYB7xMceJdlvm7gVu64uy08EHgvmsYjZm/ScqDZkfDKOEL7DbwN08ikzW2At8tiWyslESma5yCS4mpjpUSwLDl1KNoQQe9KuYIy+mkK08qp3tzlNPm27tFs61yWl5HWbsSF3160NRzdCWms24gw5PyU9YnZZCjK1HUo34q5VG/s6y2ymy7GzAc/WHCJmZUGjHONeZgQnVVTmOrYZqTy0TdOo+yIMlmwNKVKLu1+Fpqr2Muk3okw7qifaZb+QQwkqG9Pqx8hHATQcrJ+yneMKdJyQ3zEqGm5Unpl9lUVFRUqP/BP5CqMiH1c5cpAAAAAElFTkSuQmCC",s.COPY_WHITE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2klEQVR4nO2YQQrCMBBFcxBd9yr2qBbBO9mtis0FngS60CiV4JAx9b9tFpmX+WFgQhBCvABsgQMQqccI9MGo+As+nCwE0svTskD0Kh7YWQg8EVoDCTjDP3SAunMiAkegMxFwnBPXdLeFgOecGCwEvOZEYrIQWDy3htL7JGAM6kCG/kAhKEIZilAhKEIZilAhKEIZilAhKEIZilCFCI1Lu8oWOtDPEm93lT8v8AkJFII6sMIIRfy4WQikRasXewuBbl601uYMbL4WeNhQD2lXWaHwKb28WfFCrIw7KN2RSPl95zsAAAAASUVORK5CYII=",s.PASTE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABHklEQVR4nO3ZQUoDQRCF4Ua8gC41rnMVPYSoxzMIgopXEPUWcatiZuH2l4JeTBokdlXsacL7YFYz01PVr1bTKcmOAfaBK+AV+M7XC3Bp91LPgMNc7G+egYPUI2AvF7jJkz2begNc8HfnrYo6AW6AgXoPwDEwAx4d7w/ALTCPFP+B36xYy+vT3vc0YDsfcTRay5KIWHga8IzN2F0eH7vug2utPA2s2XQ/KlV+Xw0Ab1sMYDlFAmdbamIJnDZv4L+hBgpKoPUGogRiUAKF4IYqgdR8BpXAOiWQNEJ10AgVUmNEv68GglACheiOKoFaSiCI6AjvQgID/fjyNGCHC7249jQwz4cLU3sfH5bUNmEnKwv7Pz9B4SvbeXfxIiKphR8IWaCtfT4/XAAAAABJRU5ErkJggg==",s.UPLOAD="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAAAsTAAALEwEAmpwYAAACYElEQVR4nO3dO48NcRjH8e+6NbrtCI2Iuyi20aHQigQlXoDE5Q2IUqKgFC0SkbhWVqXyAiRqFHYRbOy6LvHIiZnkSBZnZ2bn9v9+kl8/8/zyzDlnTjIDkiRJktQNa4BbwEfgLfAIOAOMN31gKZgAXgGxQJ5m5WiJ7AE+/GX4eZ4BG2ygegeAz/8Zfp4XwEZLqM5R4PuIw88zDeywhPJOAj8XOfw8r4FdllDMGHCu4OCHMwPstoTFWQ5cqWD4eeaAfZYwmlXAzQqHn+cTsN8S/m01MLkEw8/zFThoCQsbBx4v4fDzfAMOW8Kf1gJPahh+nh/AcUv4bUv2wylqzuCr7QkSNwG8aWD4wyWcJlF7R7ivU1fOkuB9nS8tGPxwzpOIYwXu60RNuZD9Au+tUyXu60RNuQwso2fGshWPjuQasIKeqPq+TtSUG8BKeuBiC4YZBXOJHnjegkFGwQz+3uy86RYMMgpmih44kp1IF4d/qOnhtUGUjCyg28INsICkhRtgAUkLN8ACkhZugAUkLdwAC0hauAEWkLRwAywgaeEGWEDSwg2wgKSFG2ABSQs3wAKSFm6ABSQt3AALSFq4ARaQtHADLCBpUyU24GXTB98H10sUcLXpg++D9cD7AsN/B6xr+uD7YjNwB5gdYfCDB4DcBjY1fdCSJEmSJElSEduB+y160m20OIMZ3QO2UZGd2Rsomj6x6FjmstmV9rAFJxMdzeBlFKWf+TnfghOJjmY+m6EF0NECvARRqoAHVMAPYQoNf7aqD2Gyr1R3s5eiNX1djZZnJvv/emtVw5ckSZJEr/wCliFWxPec8VIAAAAASUVORK5CYII=",s.DOWNLOAD="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAAAsTAAALEwEAmpwYAAACWklEQVR4nO3cO2hUURCH8U9FEUEQC0EwhYWIijY2giIIgqj4ADs7Szs7W0tLO0urWEh8VmpjY2WhhY2FhRgRQVTc+IyPkQs3hZKYze4m59xzvh9MExKY85872WX37oIkSZIk5WkMmAB6QMxTze/cALambrqk8N/1Efy/1fzNptTNl2BigPBn6lrq5kvQG2IAH1M3X4IYsuQAui3cAAdQtXADHEDVwg1wAFULN8ABVC3cAAdQtXADHEDVwg1wAFULN8ABVC3cAAdQtXADHEDVwg1wAFULN8ABVC3cAAdQtXADHEDVwg1wAJ12FHg1gis5lrgmgcMUYDKDMGPAekkBHEBiJ4DpDK7mWGB9B45TiCPAlwxCjT7rG3CSwuxvP7UYmdcn4CCF2g28zSDkmKPeA3so3PZMn5a+AXZRic3A8wxCn6kXwBYqsxF4mkH4z9rvo6jSBuBJwvAftz1UbR3wMEH4j4D1qQ+fizXAvSUM/wGwNvWhc7MKuL4E4d8BVqc+bK5WAFcWMfxxYGXqQ+ZuGXBpEcK/DCxPfbguuTDC8C+mPkxXnTf89M4CvwYYxG/gXOrmS3Ea+LGA8H8CZ1I3XZpjwNc+30g5lbrZUh0Apv4T/mfgUOomS7cP+DBL+M3P9qZurhZjwFXgdVvjNb+iKUmSJEmSpLLsaG/n6MLt5ZG4moxutzchj8TOeV6Dt5g1g6k2u6HdN2QGvciau/2GvlGqi5/vikxqus3QAdDRAfgviKEGcJcR8EGYgcLvjepBmPYp1a053gy3+CuDJqObwLZRhS9JkiSJovwByQJHhbd7qEkAAAAASUVORK5CYII=",s.PLUS="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1UlEQVR4nO3byUoDURSE4do5D+/g9HgOIILDQvDpVNxonBLwEYygy1DScHUhIumm23v75P/gbMzm3KIWEU4kAAAAALNgQdJ87iWiWpd0IelFktOMJJ1LWsu9XBQ7PwL+OVXg27mX7LtlScM/Qv6aJ0lLuZfts6MpQv6aw9zL9tlNjaCvcy/bZx81gn7PvWyfueagIYL+J6bRBB2KaTRBh2IaTdChmEYTdCim0QQdimk0QYdiGk3QoZhGE3QoptEEHYppNEGHYhpN0J2q7tsO0lXQW4PGueczTm/f7/LWr7rYvC/gsS5kBpI2u7jqJGT9esXa6n32WQENcqFz2mbQowIe5EKnut9uxZykSQEPcqEzSRkRtHoStKb8ecOszlAtOi3gQS50jtv+ejco4FEubB4lrapl1ZdzwtZ3yLeSNtSRRUl7kq7Sv6OesRlLupS0m7IIwzUHDRH0PzGNJuhQTKMJOhTTaIIOxTSaoEMxjSboUEyjCToU02iCDsU0mqBDMY0m6FBMowk6FNNogg5lXKPRr7mX7bPrGkFXF0Ro6KBG0NWZFhpamvKw8i7aLVwOW5Ie/gj5vsurzlmzIukkXddP0jynv1WfoQNzbf5mBAAAAICK9QkSkO5NnQjE8wAAAABJRU5ErkJggg==",s.ADD_EVENT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB4UlEQVR4nO2Xy0oDMRSGi6Ib6UpxpUu1TyC6E19AqW19murWqm+hiDd8A0Vw6WVrpdo3KNjWdT85EHEImWk6kzazyAcDZeYk+f/pOZmTQiEQCAQCgUAgEMgVwDJwC/TwTw+4A9ZGEd8hf3SAJRsD8ubzyrWNgTykTRxdGwO5phAMxDMAXoA6sCW7BjCnrpK6dwC8krN/YABcAatDJ/9fQ8zdqLFeDXwC67bCDWttAG1fBp6AxbTiI+vNA/eTNvAAzBjGzgL7wAXQBH7U1VT3ahITM+5xUgYkbeYN4/aAL8vxZcP4BZt0ympgoOc8MA2cMjonwJQ21+awws5q4NIQn0b8H41RW5ksBgb6VqnSxmqhhHl3tbjSuAw8Gwrv04GBtl7YwFsWA3HNXF2Lk90GBwaEqhZ7iJlvGwNyeDCxpcXJtujKwLkWux0Td2v7mTcdaPT8/0gSbLFOlKZBg45oWrGdfEkOD9J/RyYoJqVaRgM97Vkx8qyrdiY78SMI6Ds00HUqzlKAyxR6H4/KZAEui/jMh4GaQwMVHwZmgJYDA1+mDnVSJsoODOx4ER8RJl1lWo68ilcGpoDjFOIbejvtFekqk2oiQst72gwp7Kr0NrK3q49dX/2WexXTUTQQCBRS8ws6Beac36b8wwAAAABJRU5ErkJggg==",s.SELECT="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdElEQVR4nO2ZUU6DQBCGOUf73LsIRL2mPnglobCaaGNivcDXEKcp0F2Q3S6VZr6kT/+Gf4ZM2d2ZJFEURfm3ABvgBfjhRAGklrUZUIqeOXQzohctn8bzGViHBP+FndqyftvStx66cXjtvJKQN8+EBEygXg/4Pfkk0C6bNq/AnWV9LkFWjhI56k2guUVP5dk2vn0S6JDMDKH+t5BA0S6bKFHG9JearOV3VvOx4cr+irJ4OJ1dStvGNIN/Lt5+/r2tvYoSZUz/scNXbAj1HzvbxIbu2Wl2f0VZPIzccWfwvwfe5E+cLvEz+h66DwzeYWPD79sPSiCXPeBa+0Am5dP4631AUaYCPAKfwAfwkCzNn+5nzESJMqb/LTS2OkSJcoBLJLDHjms+cLzDuvr/uWilo7mb9bpxwc3dZrjgYqw9Xnno5tLt9bUMF/6agJkw4JgyH9gBq8kJyENXTfa9chqaDzjPTlIiQ3ramw/sxdsveEVRlGQODgnFtCEN6s0TAAAAAElFTkSuQmCC",s.EDIT_WHITE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABRklEQVR4nO3WMUoDQRSH8bG0UQTR2jNYWAjiEfQwapm1S8R7WEhEbyHoBQRBO9HGUhDlJwMJhLC7ZCPszsJ85c4MfP/HvLcTQiaTSQbs4Rof+MYzLrEdUgen+FXOewwXUgVFhfh8iK3QU/kpF6HnAZ5Cilg8xFdIFYuFeEtFtKhZq+OqfeNqwaYhfrDbvnW9WNFg70n71vVCU4YVZ85m9gzat27WnEXN2dK1FGf8MKREQ/m0Qiwpn0aIf8r3omHrGGT5ZciV74pc+a7Ile8Kec53CNZwgPESf9junsRl4Ka38hEc9lY+gs2kH2ZTMMJ6KAGr2K/oie4rjxV84r4qxMzecVLyEezMSNWGmEyndOQjOJq7FpUh4vek5CM4L7nbj9gIfQB3FdOlHyHwWhEgNvYopA4e8ILbySPuODZ2116ZTCYTkuIPW58e4VQyzE8AAAAASUVORK5CYII=",s.EYE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjklEQVR4nO2YTUuUURTHrcW0mLQPELnIyfGz9E5RIIUIbatNVqsGl1YEvXyAaqeppVKboqxNLyuDXtfRxkqIlNAh+8WBI0wP1/GceV5EuX+4MNznnv/5n3nuuec+p60tIiIiIiIiJYB24CBwBXgEfAbmgCUdczr3UNccALavt+itKmQSqOOH2EwA+4WrSOFbgOPAR7LDB+CYcOctvht4Rn54CuzJS/xJYIH88Rs4lfVev0bxuJo6N1T8XYdTOXGGgV6gCpR1VHVuRNdYcSdVXgC3HM7GgN0Gzi5g3MF7s1Xxg0YHf4BzLfAPAMtGH4Necjmb/xrJ3eIb/Fww+hAth62knVo5LRgL2G8DzgKv9dRa0N9n5Flg/QOjL9HUaSlSL4yES8k9D+wE3jaxmZE1CZuKI7GfN01qoB87hgP/fDPxjUH89yaAew6//auJ3wF8cxD1Juxl21hxOmF7wmErGjtCAdTwoTth/8Zh+yphW3X6roUC+OokaU/YzztsfwWu4x582ZQB1Db6FuoAZlMksZzzRSTxbDCJlajPQTQSOEbliFwLsqaUsB11+O0Lim8oZNNGIik+XYFCNtNCIasbfU6veTsFdjmuEuMB+5JsEdnnmtgyXupcKbB+wujrh2hrKr6BdJ/jMjdgIg37uWj0IVoOecmtp5Jcic+3eBNdNvq45OVfcXIDO+RWWTFwVhzbRnC9JfENSS2fdVbU9WImx2KPNK909OjcqLOHdDt1q0WDkA/sojGUaZ8IOAr8LED4fLJIZhmE7N8nOYp/nKwteQUib+N9hsLfAUdyFx7oGUm9uO/s9axgUdsrewtt7q4STFmDuQxMaSv9u4pc1N+f9NmQii6vq+iIiIiIiE2BfxdHH8YQSpqkAAAAAElFTkSuQmCC",s.X_EYE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAgFQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z+8j/AAAAKt0Uk5TAGKfBP3/rnCrBSpUfKfDz93s+cKmUyJvu/f7zIAzAi+T6JEuCmbKCQbl6h8DaeRCyYwm0FLwAYqlDb78xoUrEYbHkgzidxsceOPBC7+5Erac+mSaevVJRSHtIKQebbjY9IQUmYE4UPPRg3F58h2pnTmHvFFuuj+3LbTZswfvsj0ItVU3iP42GfEaTUx/ohPXautDSPaYFu57wL2jqlfOJDLh6WMskI4nzfiw5uH88wAABVZJREFUeJztmX9MVVUcwL+HR5sPaGQLqC2TEpGRmv2QMlliqFhSmZlkexbkkBQhQURhOp48pMlPNQT5IVuKTVq1tCygXA5tbWLNatjTMpp7f0j2YxUp6Njt8d697557z/fce9/bu5ttnD/eve+e7/l87jv3/LjnPAImJzIuGBfcpAJCyKiZAmJxC0bNE7j57g/RYIKAhHoOISMmCTz3D2C5YdIvUPGDLlDzgy1g+EEWsHyjAiuREgiCEEqGrf8K15io8BGGb0gQ7eb+xlyNGtNdUvAjrzB8fcFkQlzczLsJuajN1xHEETKgcwP3CiHnNfiagoTR0J908GNpKunn8zUE0wn5wQAeIPFbDT5fMHlivyG8Dp8nmBY2eCUofI7gIfKdMbwuHxc8Qs4Gi48Jksg3BvEG+Igg4bavA+dbmfGDEcwhfTgtiZBrYeQ0JAlXI8hJgvKfHLYe1xGk9rFj2FiaR0gP9TWNkM8R/klYSI5pCpYIn2H4qTcsTtWlhHt6EL5b7VT2fqXAuqAL4z8cfRS7jPEBnv5YY7Bbqvp9npROPsDxKB/g2fe5guVHEMpS8q5ffIDn3uMIMlynWUr6Lf7yQVhGFaEELxHaLKVn/KsfT1pO3kEE1knY3LLikHxuE+fkwW5tPsD9532NXRZkdSD8iOfbpdNFk5zeGkTbvyq92sYIso9h43Psj9LZGiKqjPAhKbFVJbBk70f481xS/4r5nfD4a9uQkjPPql4d17UiUZAi9es17Vw+5LZgRbMbFYJF8c1IUFK4OP6kxXLrByCvCZtUci700IL8JuwuHj0lnrzRyOcDzEJn77V7KMGGvVgIPCY+PdsAr/14UkEDWjqzVRYUvoWG5Nd6j0W7tfgQfh0tvaHaJyiuRyNgTq/3uLlOiw9bavHiBVWSoKQGj3hKHKVLq1F+xJA3+7WDePHiHZLgxQ/xiCliL1jfjPavRLHut+7Ei8/qkwSZh/AISoD13xwdwRYHGK4iml9YI44PL7/tzeZVUUm5JCirxCN8D7mL5lvtXj5sLRPvVPchw6ZdaMQDZ7zHNGp8lvmQ8L03u9yBll78EfgEjnI0ZO4J+VzBT/nS/RE1o9ubVbEdK2wnpbIAbh3GYpK/0ODDK9L4G4+ugib8A5TgTbINiRFSu/l8h1DizbMdxgY7B9lMCyDmD+wuUru4fKGyWAxC30Xg9kFQCCwRV5GoBQNOHn+l1DbtndhCLmxIvVdR2YBNmfOp90NF/Vg2SSGrDiPlotaXgkoANSVsXCLT/j18Yed1X3CdYwgRxPjW1rLA8sQpdRjLXzcKCX9Hftotx0zAlh3JvdhmiG12kR6fTWgF1bTIcxzdwvZ0Kl4djfCr65EnJ9TnyV8UTXjhCT/5VWEFyNUUeo2h7COrD/jFX3Uca3m7culvSoEl/RPj/MZCdFlZVKW12xIX3WeQb7/4eD7Gn/2r1hJKWqSx/MVTQug3D1vybnwjpuGo9iLQPfxk5OL9S5g+vyXv3AWI779ccuBnzh7H3k69Zax7GtnYgPdfA6nJZVdf4m3nBMS39bNrMI4gEH7Og6uRq7ggEH4zycIuo4IA+Ol/JlegGZggAH70jkxODiLwn9925MwlXh4r8Ju//+BcOz+XESj41pZ2ZhZSpeSJMzXwrIAZfzpIBX93Nm7bvl6dG1AJ0PEtOnJFO7s5focww3kXsrmhKeCOn5aO2lhXVuTr2++Ey2X7/uod+WWjDR2stQU680tAiRaYwacFpvApgTl8WWAS3ycwiy8J6r7yrGRX3hdsvu8XZCyzmXH/1DNwG8zgU60o44VzJvD/r//pjwtuKsF/TPAsf60VkKIAAAAASUVORK5CYII=",s.WEB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC70lEQVR4nO2dzWoUQRSFzyLoygiudRlGUB9GBl/KqBjw5x2GYXZZ6kNohODSWQvmZ2WUKw0FQnS6qzK36tyePh/cTajqPuee7qphKiGAEEIIIYQQQgghhBD5PAFwBOAEwCUA2/G6TF5fA3jMfFBuA3gH4HeAphipOu9vAdxiNP9jgAZYkPrQOoT3AUxbsHrTcs2f8rJjG+oXgEctAjgKYNaC1qsWAXwJYNSC1ucWAVwEMGpB67xFADlCvgGYA7iT6imAU8fx1jPfm1I91clpxr3/zOt+tnYYb5nzvcnVU50hAd2TuIlnDuOtYL43OXqqMySgbxnYdxhvBfO9ydFTnW0actdhvBEDyNFTnSEB3Ya1ibnDeCuY702OnuoMCTjt2VS/Ooy3zPne5OqpjmXUOm1Y+6nmA+LXheP75ntTqqc6uU2ZalWHbdCClwKAAqA/haY3gN8I0xLEb4YRSnsAFAD9KbQpvwG7jrH90wWQofunCyBD908XQIbuny6ADN0/XQAZun+6ADJ0/3QBZOj+PQQ8ALBMv8hkhdXNWQGYFWjuu1/p9UYfQNeM7zdovF2r7hr3He+Xe73RB7B0aL6lWjjfbzGFAG6y7NiGOnO+X871FAD+NuGHQ8NKH6DRB7ByfAOWDnonF8DMcRM+cNA7uQCQPm0s0ppb2qCz9OQfOOmdZAAtMQWgAFzRGwAtQSVoCSJj2gMUgCvaA6A9oAQtQeTzANMewD0PMAXAPQ8wBcA9DzAFwD0POHe+Hv1T4NjOA1bO1xt9AK3PA2YFh/Ie5wvVGdt5wND9vM8XqkMXQIbuny6ADN0/XQAZun+6ADJ0/3QBZOj+6QLI0P3TBZCh+6cLIEP37/ldju1Y5Xw5uDUnAYxa0PrUIoCXAYxa0HreIoCHAK4CmLVg9bPwz6a2Qm8B/gngEA3ZA3Ac4KmzIHWcetKUvfQmTHk5ukpPfvPmX98TXqR/XjCF/y1wkbwetlzzhRBCCCGEEEIIIQRGzx/seDvzE8oqSwAAAABJRU5ErkJggg==",s.DETECT_SYNC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAgdQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ZmztfQAAAK10Uk5TAAIMEQRQx+vuTwMk1/8BTv2ABbOyD9vcAAcpi/UoCRaN5fwXO8LhwG0tDV/Y+8yGUTQqNliS1v4ubsHiG8vmqvRxGojxtOf6aS/fMOPgoKcOyQhMqzXDrMQKz00TucjZEGT5GOjzN2O/m74LJzo5FF1sol6hZbB8qTOF7d23BrqEMlLpJmhwmpnNVuqMkdMcPUODlaXwIrYrU/i4IEAj0Rmf5LWkMe9gj/aKf8ZmMNqCAAAEZ0lEQVR4nN2Xa0xURxSAz9ld2bLURanYpTEtlLTRrU01YH+IpraRGGOTQollGyHFRyp0RaNQC1R8VXRrqwVF6LbUUMUHrc9QY6NW00jtc1M1iv6x1mpglcTqkmLYCzvex8zdmeVC2fCrPT/uzLkz352zc2bOOYswDMH/GYzIhgghUcIWZDQhZuyODo7D8Agh/0QF2xH7dMVMSCAa2Gbt5TRLj7HdA8AJGOQ0a+huNHAiPuDtCHUOGXYoO32fexFPTL3EPyhsH4VB/+N+wHFmRHGpREL6bhFw3HbYpHsBAxhTUZWrE7BbRpOV/m3VCGyTcRu5Ml72Ad4h10h/eBqeB3BaL09EH8Bk86Xw2q8g/gyQRmLwvvyZSaS1H2wZ+eI5teNsg/iJp3hPATw5uqtTGVBk6i94NwJ2TMazbGqKvRUiZQ5+z7ozQj6/CCdNOaNbedbIq1l4inVfthwSYHvmsRF0aNZBbUPmohTTDLlBq3RQ1d/EFjpDymkJ8HAeHqEj2d/QdfOPQOwdGPsAXv9Se1Hwx+/MCtLEw/Pxa62TlvqF1nG82kxhVwv9iW9/RS/L3BFeDk56bQ/9aMa3tFMgG6vB8AjzWlET7eQf7uBge7v2dsxN2Udu3BWA4kYdnr+NMsu6qH3zjnKww/Wptl+LPpEf04MZDYGSz3Q4XXdEqWauVLjfz/3mpLy/m+Um8Ybyq1bWOx/9tahOh90eBpfXKs/c0U0d/IZBwuyTKW0w87D6pezdUOwN6vBTlxhsL94GzuuZx6lD9ONpe8JVA09fUPtZz1c7Ozt1ODl7PZu1Ziss29/O4kr4YpjeOAYmeottBbuVhsIw7gqbtHYLzD4Qgn5woqkbStdQRbE8DL+7mk2St5ELK2G4IHUzvLeKaVUeDi6vYK9zTkBub6MxPOom0zZt5OD3y9jr+JAxrJj9rI9pH27g4FVVLPQs3mtstrJhlSuZ9tF6Dl69mc3/eJ3hhqmuWlvC1KwfFGPawKlgGafZys/4jVylHZJ1K2BQsUzzGRwSejydruWaXn1agNp/09oa1RsRx1O/GFVLtVnbKwR40xKtzfxJbcSLoV9JT+s+tY2xCnCPlrnqKmg0EK5kOBgUb1QtqSwTYM8H6kr1zBlCMIDFEr3mye5C+Zn1HYjyghKMvaVU2+LjwxDkvcT2eYZZDoUNyyPg6oUAO3exIxQRAO2Z41msSbn3F7jTGwQ2p+YGNO79kWrSnJNC6IUkzxI2c9K5PrDHCbCfQFy9m2m1R8WgL6Sb3NjtECnpfj1h9083QqJzZnfUCGjdyHcgnOi6WBaMTLHxJKik2Kn5WMTOs8UbapA512OfP9czQIpVkvtYudgL0OQO3uMXyxaUX59VuWERKMl9pnRGHiZj0moNkvvgZYX7zx1qWRFDDMuKsDjQEhILmq0l/1bQCEsJpVQsGXopJUuCqYfToizixPJx51tRlY/DKlyFknlC4QLjSQPBNmnfPFqs78mPtlgf1t+EIcl/FH4Id+umTECP2vYAAAAASUVORK5CYII=",s.SPEED="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACYklEQVR4nO2ZS04bQRCGrcAmu0BWAYM4BCE5R4QQJ+G55bEFEZQLZIEgCYiHcw4QF0hgQWJgazubLyqpIjWOx1M93fNAml8aaTRWd/9/TXVP/eVGo0aNGsEAXgDvgTXgK3ANPAJ/9HrUZ1+AVeCdjGmUDaAJbAO3+OMG2AImyyD+GvgE9AhHF9gHxosivwjcEx9tYCFP4qMadSvOJT00zVoe4z7KWrHJvwTOPCPadMZPeY49lTVjRt6XfKiAfyLC34Rn2rhoafoI+e8Z59iLsWH7cQFMa37LfSiOVWjSXpkPOSrvU1JDhITgwE0TFdGP38BYzNSZiiTgCfmUveKXShqJXkpuz3gej2nkRzWdkj52Ez4CpDzIC0nkD1LGbfoUZj9zIn84gPwI8NkwVuqtEYsAqSqrFHkXcxYB61Qr8i6WLQK+UU3ygiOLADEeoZATbGnQyZEhbVxcWQQ8RKgqB75qI/nzIeu1LQJ6EYqygWe2MfLNIet1SxMgz4xjm6ECHiJUlf+lELBiHNsasl67yE28rFGf0PsY/vnKIkDaIlXFoUWA9HaqiiWLAGk6VRWzZRdzIfhh7uZpx6xq2DCRVwGTaiIowBNfGObreBkaFSHtPnL2xNb5dr3IO6Ze2n15eWLrfL8ymXqdcCEnT+wz34dM5B0R0qssCztB5B3zUcbX+Sxak1ebu9KrLAon0Zq7fWZkrwDyu6buQ4CQeT0ZYuMueMN6iBjTt5H0sfNBR6P+qhDyfUKk1t/MWDtJbbMBvCmceEIBOKeu60iMhzq7nl5yf6m/ibl5W4m/WWvUaDx//AV2V/CQip4uIQAAAABJRU5ErkJggg==",s.CLAP="data:image/png;base64,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",s.X_CLAP="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAuVQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1XwNJwAAAPd0Uk5TAAscIyIXBxZqzPXtsE4NGZL+/91fBQIfwCAdlb8nCCVEVEkuCgHg35b93FwOTKzu98OX+eJoD1rnUgaY9tVNEM2+E5n0pRtd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",s.VOLUME="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB3UlEQVR4nO2YTStFQRjHJ4nL1bWykgUWkux8AAvFStH9CnwF2dmIlFvI9R2kLFCykPIBvBWxE8XGy72R1/ppuHWPp5M7Z5xzO6fmt5xnnpn//zRznplRyuFwOByOkAAmgVdgRSUNYIoyHyrB4r9RSRavUUkWrzHIzQIXwD7QWx3FhuIrGQAagWdP91ugMzbiDQw0643Obw6BVCzEGy6haZ+02ViINzRQA2yItLfIllIQ8dIA0Ar0adGiPQNciVT7Igi0AWtAMYjYvwwAw8B7qXkbqBNzjonUJyBtK/7uv8J9DOyI0JKYtxa4FH2yNgb0lw8Nz7h5EfoEusXci6LPso2BYkQG9C/zXIRzYu5BEd+1MRAqYuwRET4W8Q4RP4ubgbQIP4p4g4g/xM1AU9INjIrwUYUldBqnTZwpnTq9zIu5h8LYxOsRGZiz+I3mbAx0AfcRGJD1ZcGgkA0ENuCpxqtAIUQD/Z7lueVzlBgXqQXZJw6HuRa/Wxc/Re5apOZDF29jwvA4vSnS9JNMe2QGgpiwHGcmUvFBTBjcifXlxcsBUF8VAyYmKuSmdDWmzI0uZlUTH9Kzir7onAB7QE91FPsLmbAxECvwMaGSBkl+3BXP6y+RFiOHw+FwOFSZLzQs9DjJQ33oAAAAAElFTkSuQmCC",s))(Ce||{});const Rp=globalThis.showDirectoryPicker;async function AT(s={}){if(Rp&&!s._preferPolyfill)return Rp(s);const e=document.createElement("input");e.type="file",e.webkitdirectory=!0,e.multiple=!0,e.style.position="fixed",e.style.top="-100000px",e.style.left="-100000px",document.body.appendChild(e);const{makeDirHandleFromFileList:t}=await qe(()=>Promise.resolve().then(()=>vg),void 0);return new Promise((i,r)=>{e.addEventListener("change",()=>{t(e.files).then(i).catch(r),document.body.removeChild(e)}),e.click()})}const Lp=globalThis.showOpenFilePicker;async function bT(s={}){if(Lp&&!s._preferPolyfill)return Lp(s);const e=document.createElement("input");e.type="file",e.multiple=!!s.multiple,e.accept=(s.accepts||[]).map(i=>[...(i.extensions||[]).map(r=>"."+r),...i.mimeTypes||[]]).flat().join(","),e.style.position="fixed",e.style.top="-100000px",e.style.left="-100000px",document.body.appendChild(e);const{makeFileHandlesFromFileList:t}=await qe(()=>Promise.resolve().then(()=>vg),void 0);return new Promise((i,r)=>{e.addEventListener("change",()=>{t(e.files).then(i).catch(r),document.body.removeChild(e)}),e.click()})}const Dp=globalThis.showSaveFilePicker;async function wT(s={}){if(Dp&&!s._preferPolyfill)return Dp(s);const{FileSystemFileHandle:e}=await qe(()=>Promise.resolve().then(()=>Rg),void 0),{FileHandle:t}=await qe(()=>import("./downloader-693893b5.js"),[]);return new e(new t(s.suggestedName))}const Br=Symbol("adapter");let cd=class{constructor(e){this.kind=e.kind,this.name=e.name,this[Br]=e}get isFile(){return this.kind==="file"}get isDirectory(){return this.kind==="directory"}async queryPermission(e={mode:"read"}){const t=this[Br];if(t.queryPermission)return t.queryPermission(e);if(e.mode==="read")return"granted";if(e.mode==="readwrite")return t.writable?"granted":"denied";throw new TypeError(`Mode ${e.mode} must be 'read' or 'readwrite'`)}async requestPermission(e={mode:"read"}){const t=this[Br];if(t.requestPermission)return t.requestPermission(e);if(e.mode==="read")return"granted";if(e.mode==="readwrite")return t.writable?"granted":"denied";throw new TypeError(`Mode ${e.mode} must be 'read' or 'readwrite'`)}async isSameEntry(e){return this===e?!0:this.kind!==e.kind||!e[Br]?!1:await this[Br].isSameEntry(e[Br])}};Object.defineProperty(cd.prototype,Symbol.toStringTag,{value:"FileSystemHandle",writable:!1,enumerable:!1,configurable:!0});const oh=Symbol("adapter");let fn=class extends cd{constructor(e){super(e),this.kind="file",this[oh]=e}async createWritable(e={}){const{FileSystemWritableFileStream:t}=await qe(()=>import("./FileSystemWritableFileStream-e4c13ad9.js"),["FileSystemWritableFileStream-e4c13ad9.js","web-streams-ponyfill-4a0f4950.js"]);return new t(await this[oh].createWritable(e))}async getFile(){return this[oh].getFile()}};Object.defineProperty(fn.prototype,Symbol.toStringTag,{value:"FileSystemFileHandle",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(fn.prototype,{createWritable:{enumerable:!0},getFile:{enumerable:!0}});const Rg=Object.freeze(Object.defineProperty({__proto__:null,FileSystemFileHandle:fn,default:fn},Symbol.toStringTag,{value:"Module"})),Ir=Symbol("adapter");class Us extends cd{constructor(e){super(e),this.kind="directory",this[Ir]=e}async getDirectoryHandle(e,t={}){if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");return new Us(await this[Ir].getDirectoryHandle(e,t))}getDirectory(e,t={}){return this.getDirectoryHandle(e,t)}async*entries(){for await(const[e,t]of this[Ir].entries())yield[t.name,t.kind==="file"?new fn(t):new Us(t)]}async*getEntries(){return this.entries()}async*keys(){for await(const[e]of this[Ir].entries())yield e}async*values(){for await(const[e,t]of this.entries())yield t}async getFileHandle(e,t={}){if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");return t.create=!!t.create,new fn(await this[Ir].getFileHandle(e,t))}getFile(e,t={}){return this.getFileHandle(e,t)}async removeEntry(e,t={}){if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");return t.recursive=!!t.recursive,this[Ir].removeEntry(e,t)}async resolve(e){if(await e.isSameEntry(this))return[];const t=[{handle:this,path:[]}];for(;t.length;){let{handle:i,path:r}=t.pop();for await(const n of i.values()){if(await n.isSameEntry(e))return[...r,n.name];n.kind==="directory"&&t.push({handle:n,path:[...r,n.name]})}}return null}[Symbol.asyncIterator](){return this.entries()}}Object.defineProperty(Us.prototype,Symbol.toStringTag,{value:"FileSystemDirectoryHandle",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(Us.prototype,{getDirectoryHandle:{enumerable:!0},entries:{enumerable:!0},getFileHandle:{enumerable:!0},removeEntry:{enumerable:!0}});const xT=Object.freeze(Object.defineProperty({__proto__:null,FileSystemDirectoryHandle:Us,default:Us},Symbol.toStringTag,{value:"Module"}));async function Op(s,e={}){var t,i,r,n;if(!s){if(!(!((t=globalThis.navigator)===null||t===void 0)&&t.storage)&&((i=globalThis.location)===null||i===void 0?void 0:i.protocol)==="http:")throw new Error("Native getDirectory not supported in HTTP context. Please use HTTPS instead or provide an adapter.");if(!(!((n=(r=globalThis.navigator)===null||r===void 0?void 0:r.storage)===null||n===void 0)&&n.getDirectory))throw new Error("Native StorageManager.getDirectory() is not supported in current environment. Please provide an adapter instead.");return globalThis.navigator.storage.getDirectory()}const a=await s,o=typeof a=="function"?await a(e):await a.default(e);return new Us(o)}var lh,hh;const ET={adapter:{cache:!!(globalThis.CacheStorage&&globalThis.caches instanceof CacheStorage),native:typeof((hh=(lh=globalThis.navigator)===null||lh===void 0?void 0:lh.storage)===null||hh===void 0?void 0:hh.getDirectory)=="function",sandbox:typeof window<"u"&&typeof window.webkitRequestFileSystem=="function"}},Fp=s=>typeof s=="object"&&s!=null&&s.nodeType===1,Np=(s,e)=>(!e||s!=="hidden")&&s!=="visible"&&s!=="clip",ch=(s,e)=>{if(s.clientHeight{const r=(n=>{if(!n.ownerDocument||!n.ownerDocument.defaultView)return null;try{return n.ownerDocument.defaultView.frameElement}catch{return null}})(i);return!!r&&(r.clientHeightne||n>s&&a=e&&o>=t?n-s-i:a>e&&ot?a-e+r:0,_T=s=>{const e=s.parentElement;return e??(s.getRootNode().host||null)},Up=(s,e)=>{var t,i,r,n;if(typeof document>"u")return[];const{scrollMode:a,block:o,inline:l,boundary:c,skipOverflowHiddenElements:u}=e,h=typeof c=="function"?c:Y=>Y!==c;if(!Fp(s))throw new TypeError("Invalid target");const d=document.scrollingElement||document.documentElement,p=[];let m=s;for(;Fp(m)&&h(m);){if(m=_T(m),m===d){p.push(m);break}m!=null&&m===document.body&&ch(m)&&!ch(document.documentElement)||m!=null&&ch(m,u)&&p.push(m)}const f=(i=(t=window.visualViewport)==null?void 0:t.width)!=null?i:innerWidth,g=(n=(r=window.visualViewport)==null?void 0:r.height)!=null?n:innerHeight,{scrollX:y,scrollY:b}=window,{height:A,width:v,top:_,right:C,bottom:B,left:P}=s.getBoundingClientRect(),{top:M,right:U,bottom:F,left:T}=(Y=>{const R=window.getComputedStyle(Y);return{top:parseFloat(R.scrollMarginTop)||0,right:parseFloat(R.scrollMarginRight)||0,bottom:parseFloat(R.scrollMarginBottom)||0,left:parseFloat(R.scrollMarginLeft)||0}})(s);let S=o==="start"||o==="nearest"?_-M:o==="end"?B+F:_+A/2-M+F,x=l==="center"?P+v/2-T+U:l==="end"?C+U:P-T;const L=[];for(let Y=0;Y=0&&P>=0&&B<=g&&C<=f&&_>=H&&B<=N&&P>=ee&&C<=O)return L;const Z=getComputedStyle(R),Q=parseInt(Z.borderLeftWidth,10),ge=parseInt(Z.borderTopWidth,10),Te=parseInt(Z.borderRightWidth,10),he=parseInt(Z.borderBottomWidth,10);let pe=0,Ae=0;const oe="offsetWidth"in R?R.offsetWidth-R.clientWidth-Q-Te:0,ue="offsetHeight"in R?R.offsetHeight-R.clientHeight-ge-he:0,ve="offsetWidth"in R?R.offsetWidth===0?0:W/R.offsetWidth:0,E="offsetHeight"in R?R.offsetHeight===0?0:D/R.offsetHeight:0;if(d===R)pe=o==="start"?S:o==="end"?S-g:o==="nearest"?Ja(b,b+g,g,ge,he,b+S,b+S+A,A):S-g/2,Ae=l==="start"?x:l==="center"?x-f/2:l==="end"?x-f:Ja(y,y+f,f,Q,Te,y+x,y+x+v,v),pe=Math.max(0,pe+b),Ae=Math.max(0,Ae+y);else{pe=o==="start"?S-H-ge:o==="end"?S-N+he+ue:o==="nearest"?Ja(H,N,D,ge,he+ue,S,S+A,A):S-(H+D/2)+ue/2,Ae=l==="start"?x-ee-Q:l==="center"?x-(ee+W/2)+oe/2:l==="end"?x-O+Te+oe:Ja(ee,O,W,Q,Te+oe,x,x+v,v);const{scrollLeft:j,scrollTop:z}=R;pe=E===0?0:Math.max(0,Math.min(z+pe/E,R.scrollHeight-D/E+ue)),Ae=ve===0?0:Math.max(0,Math.min(j+Ae/ve,R.scrollWidth-W/ve+oe)),S+=z-pe,x+=j-Ae}L.push({el:R,top:pe,left:Ae})}return L},TT=s=>s===!1?{block:"end",inline:"nearest"}:(e=>e===Object(e)&&Object.keys(e).length!==0)(s)?s:{block:"start",inline:"nearest"};function Jn(s,e){if(!s.isConnected||!(r=>{let n=r;for(;n&&n.parentNode;){if(n.parentNode===document)return!0;n=n.parentNode instanceof ShadowRoot?n.parentNode.host:n.parentNode}return!1})(s))return;const t=(r=>{const n=window.getComputedStyle(r);return{top:parseFloat(n.scrollMarginTop)||0,right:parseFloat(n.scrollMarginRight)||0,bottom:parseFloat(n.scrollMarginBottom)||0,left:parseFloat(n.scrollMarginLeft)||0}})(s);if((r=>typeof r=="object"&&typeof r.behavior=="function")(e))return e.behavior(Up(s,e));const i=typeof e=="boolean"||e==null?void 0:e.behavior;for(const{el:r,top:n,left:a}of Up(s,TT(e))){const o=n-t.top+t.bottom,l=a-t.left+t.right;r.scroll({top:o,left:l,behavior:i})}}function ts(s,e){let t=dd(s)[2];return e&&t.slice(-1*e.length)===e&&(t=t.slice(0,t.length-e.length)),t}function Rt(s){const e=dd(s),t=e[0];let i=e[1];return!t&&!i?"":(i&&(i=i.slice(0,i.length-1)),t+i)}function Hi(s){return dd(s)[3]}const ST=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/;function dd(s){return ST.exec(s).slice(1)}const{GONE:Lg}=Uo;FileSystemFileHandle;class ud{_path;kind="file";name;isFile=!0;isDirectory=!1;constructor(e){this._path=e,this.name=new URL(e).pathname.split("/").pop()??""}async getFile(){return fetch(this._path).then(e=>e.blob()).then(e=>new File([e],this.name)).catch(()=>{throw new DOMException(...Lg)})}async createWritable(){throw Error("Cannot call createWriteable from a URLFileHandle")}async isSameEntry(e){return FileSystemHandle instanceof ud?e._path==this._path:!1}async queryPermission(){return"granted"}async requestPermission(){return"granted"}}class CT{async handleDropEvent(e,t){throw Error("Cannot call handleDropEvent from a URLFileHandler")}async getDirectoryHandle(e,t,i){throw Error("Cannot call getDirectoryHandle from a URLFileHandler")}async hasFile(e){return fetch(e).then(t=>t.ok).catch(()=>!1)}async getFileHandle(e,t){try{if(!await this.hasFile(e))throw new DOMException(...Lg);return new ud(e)}catch(i){console.error("Failed to get file "+e+": "+i);return}}async getFileHandleRelativeTo(e,t){const i=new URL(e);Hi(i.pathname)!=""&&(i.pathname=i.pathname.split("/").slice(0,-1).join("/")),i.pathname+="/"+t;try{return this.getFileHandle(i.toString())}catch(r){console.error("Failed to get relative file "+i+": "+r);return}}async getDirectoryFiles(e){throw Error("Cannot call getDirectoryFiles from a URLFileHandler")}async getDirectoryFolders(e){throw Error("Cannot call getDirectoryFolders from a URLFileHandler")}async writeFile(e,t){throw Error("Cannot save to a URL file!")}getRelativePath(e,t){throw Error("Cannot call getRelativePath from a URLFileHandler")}}function Za(s){throw new Error('Could not dynamically require "'+s+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Dg={exports:{}};/*! JSZip v3.10.1 - A JavaScript class for generating and reading zip files @@ -1183,10 +1183,10 @@ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/js JSZip uses the library pako released under the MIT license : https://github.com/nodeca/pako/blob/main/LICENSE */(function(s,e){(function(t){s.exports=t()})(function(){return function t(i,r,n){function a(c,u){if(!r[c]){if(!i[c]){var h=typeof Za=="function"&&Za;if(!u&&h)return h(c,!0);if(o)return o(c,!0);var d=new Error("Cannot find module '"+c+"'");throw d.code="MODULE_NOT_FOUND",d}var p=r[c]={exports:{}};i[c][0].call(p.exports,function(m){var f=i[c][1][m];return a(f||m)},p,p.exports,t,i,r,n)}return r[c].exports}for(var o=typeof Za=="function"&&Za,l=0;l>2,p=(3&c)<<4|u>>4,m=1>6:64,f=2>4,u=(15&d)<<4|(p=o.indexOf(l.charAt(f++)))>>2,h=(3&p)<<6|(m=o.indexOf(l.charAt(f++))),b[g++]=c,p!==64&&(b[g++]=u),m!==64&&(b[g++]=h);return b}},{"./support":30,"./utils":32}],2:[function(t,i,r){var n=t("./external"),a=t("./stream/DataWorker"),o=t("./stream/Crc32Probe"),l=t("./stream/DataLengthProbe");function c(u,h,d,p,m){this.compressedSize=u,this.uncompressedSize=h,this.crc32=d,this.compression=p,this.compressedContent=m}c.prototype={getContentWorker:function(){var u=new a(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new l("data_length")),h=this;return u.on("end",function(){if(this.streamInfo.data_length!==h.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),u},getCompressedWorker:function(){return new a(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},c.createWorkerFrom=function(u,h,d){return u.pipe(new o).pipe(new l("uncompressedSize")).pipe(h.compressWorker(d)).pipe(new l("compressedSize")).withStreamInfo("compression",h)},i.exports=c},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,i,r){var n=t("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,i,r){var n=t("./utils"),a=function(){for(var o,l=[],c=0;c<256;c++){o=c;for(var u=0;u<8;u++)o=1&o?3988292384^o>>>1:o>>>1;l[c]=o}return l}();i.exports=function(o,l){return o!==void 0&&o.length?n.getTypeOf(o)!=="string"?function(c,u,h,d){var p=a,m=d+h;c^=-1;for(var f=d;f>>8^p[255&(c^u[f])];return-1^c}(0|l,o,o.length,0):function(c,u,h,d){var p=a,m=d+h;c^=-1;for(var f=d;f>>8^p[255&(c^u.charCodeAt(f))];return-1^c}(0|l,o,o.length,0):0}},{"./utils":32}],5:[function(t,i,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(t,i,r){var n=null;n=typeof Promise<"u"?Promise:t("lie"),i.exports={Promise:n}},{lie:37}],7:[function(t,i,r){var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",a=t("pako"),o=t("./utils"),l=t("./stream/GenericWorker"),c=n?"uint8array":"array";function u(h,d){l.call(this,"FlateWorker/"+h),this._pako=null,this._pakoAction=h,this._pakoOptions=d,this.meta={}}r.magic="\b\0",o.inherits(u,l),u.prototype.processChunk=function(h){this.meta=h.meta,this._pako===null&&this._createPako(),this._pako.push(o.transformTo(c,h.data),!1)},u.prototype.flush=function(){l.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){l.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new a[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var h=this;this._pako.onData=function(d){h.push({data:d,meta:h.meta})}},r.compressWorker=function(h){return new u("Deflate",h)},r.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,i,r){function n(p,m){var f,g="";for(f=0;f>>=8;return g}function a(p,m,f,g,y,b){var A,v,_=p.file,C=p.compression,B=b!==c.utf8encode,P=o.transformTo("string",b(_.name)),M=o.transformTo("string",c.utf8encode(_.name)),U=_.comment,F=o.transformTo("string",b(U)),T=o.transformTo("string",c.utf8encode(U)),S=M.length!==_.name.length,x=T.length!==U.length,L="",Y="",R="",D=_.dir,W=_.date,H={crc32:0,compressedSize:0,uncompressedSize:0};m&&!f||(H.crc32=p.crc32,H.compressedSize=p.compressedSize,H.uncompressedSize=p.uncompressedSize);var O=0;m&&(O|=8),B||!S&&!x||(O|=2048);var N=0,ee=0;D&&(N|=16),y==="UNIX"?(ee=798,N|=function(Q,ge){var Te=Q;return Q||(Te=ge?16893:33204),(65535&Te)<<16}(_.unixPermissions,D)):(ee=20,N|=function(Q){return 63&(Q||0)}(_.dosPermissions)),A=W.getUTCHours(),A<<=6,A|=W.getUTCMinutes(),A<<=5,A|=W.getUTCSeconds()/2,v=W.getUTCFullYear()-1980,v<<=4,v|=W.getUTCMonth()+1,v<<=5,v|=W.getUTCDate(),S&&(Y=n(1,1)+n(u(P),4)+M,L+="up"+n(Y.length,2)+Y),x&&(R=n(1,1)+n(u(F),4)+T,L+="uc"+n(R.length,2)+R);var Z="";return Z+=` -\0`,Z+=n(O,2),Z+=C.magic,Z+=n(A,2),Z+=n(v,2),Z+=n(H.crc32,4),Z+=n(H.compressedSize,4),Z+=n(H.uncompressedSize,4),Z+=n(P.length,2),Z+=n(L.length,2),{fileRecord:h.LOCAL_FILE_HEADER+Z+P+L,dirRecord:h.CENTRAL_FILE_HEADER+n(ee,2)+Z+n(F.length,2)+"\0\0\0\0"+n(N,4)+n(g,4)+P+L+F}}var o=t("../utils"),l=t("../stream/GenericWorker"),c=t("../utf8"),u=t("../crc32"),h=t("../signature");function d(p,m,f,g){l.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=m,this.zipPlatform=f,this.encodeFileName=g,this.streamFiles=p,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}o.inherits(d,l),d.prototype.push=function(p){var m=p.meta.percent||0,f=this.entriesCount,g=this._sources.length;this.accumulate?this.contentBuffer.push(p):(this.bytesWritten+=p.data.length,l.prototype.push.call(this,{data:p.data,meta:{currentFile:this.currentFile,percent:f?(m+100*(f-g-1))/f:100}}))},d.prototype.openedSource=function(p){this.currentSourceOffset=this.bytesWritten,this.currentFile=p.file.name;var m=this.streamFiles&&!p.file.dir;if(m){var f=a(p,m,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:f.fileRecord,meta:{percent:0}})}else this.accumulate=!0},d.prototype.closedSource=function(p){this.accumulate=!1;var m=this.streamFiles&&!p.file.dir,f=a(p,m,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(f.dirRecord),m)this.push({data:function(g){return h.DATA_DESCRIPTOR+n(g.crc32,4)+n(g.compressedSize,4)+n(g.uncompressedSize,4)}(p),meta:{percent:100}});else for(this.push({data:f.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},d.prototype.flush=function(){for(var p=this.bytesWritten,m=0;m=this.index;l--)c=(c<<8)+this.byteAt(l);return this.index+=o,c},readString:function(o){return n.transformTo("string",this.readData(o))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var o=this.readInt(4);return new Date(Date.UTC(1980+(o>>25&127),(o>>21&15)-1,o>>16&31,o>>11&31,o>>5&63,(31&o)<<1))}},i.exports=a},{"../utils":32}],19:[function(t,i,r){var n=t("./Uint8ArrayReader");function a(o){n.call(this,o)}t("../utils").inherits(a,n),a.prototype.readData=function(o){this.checkOffset(o);var l=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,l},i.exports=a},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,i,r){var n=t("./DataReader");function a(o){n.call(this,o)}t("../utils").inherits(a,n),a.prototype.byteAt=function(o){return this.data.charCodeAt(this.zero+o)},a.prototype.lastIndexOfSignature=function(o){return this.data.lastIndexOf(o)-this.zero},a.prototype.readAndCheckSignature=function(o){return o===this.readData(4)},a.prototype.readData=function(o){this.checkOffset(o);var l=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,l},i.exports=a},{"../utils":32,"./DataReader":18}],21:[function(t,i,r){var n=t("./ArrayReader");function a(o){n.call(this,o)}t("../utils").inherits(a,n),a.prototype.readData=function(o){if(this.checkOffset(o),o===0)return new Uint8Array(0);var l=this.data.subarray(this.zero+this.index,this.zero+this.index+o);return this.index+=o,l},i.exports=a},{"../utils":32,"./ArrayReader":17}],22:[function(t,i,r){var n=t("../utils"),a=t("../support"),o=t("./ArrayReader"),l=t("./StringReader"),c=t("./NodeBufferReader"),u=t("./Uint8ArrayReader");i.exports=function(h){var d=n.getTypeOf(h);return n.checkSupport(d),d!=="string"||a.uint8array?d==="nodebuffer"?new c(h):a.uint8array?new u(n.transformTo("uint8array",h)):new o(n.transformTo("array",h)):new l(h)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,i,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,i,r){var n=t("./GenericWorker"),a=t("../utils");function o(l){n.call(this,"ConvertWorker to "+l),this.destType=l}a.inherits(o,n),o.prototype.processChunk=function(l){this.push({data:a.transformTo(this.destType,l.data),meta:l.meta})},i.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(t,i,r){var n=t("./GenericWorker"),a=t("../crc32");function o(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(o,n),o.prototype.processChunk=function(l){this.streamInfo.crc32=a(l.data,this.streamInfo.crc32||0),this.push(l)},i.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,i,r){var n=t("../utils"),a=t("./GenericWorker");function o(l){a.call(this,"DataLengthProbe for "+l),this.propName=l,this.withStreamInfo(l,0)}n.inherits(o,a),o.prototype.processChunk=function(l){if(l){var c=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=c+l.data.length}a.prototype.processChunk.call(this,l)},i.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(t,i,r){var n=t("../utils"),a=t("./GenericWorker");function o(l){a.call(this,"DataWorker");var c=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,l.then(function(u){c.dataIsReady=!0,c.data=u,c.max=u&&u.length||0,c.type=n.getTypeOf(u),c.isPaused||c._tickAndRepeat()},function(u){c.error(u)})}n.inherits(o,a),o.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var l=null,c=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":l=this.data.substring(this.index,c);break;case"uint8array":l=this.data.subarray(this.index,c);break;case"array":case"nodebuffer":l=this.data.slice(this.index,c)}return this.index=c,this.push({data:l,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(t,i,r){function n(a){this.name=a||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(a){this.emit("data",a)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(a){this.emit("error",a)}return!0},error:function(a){return!this.isFinished&&(this.isPaused?this.generatedError=a:(this.isFinished=!0,this.emit("error",a),this.previous&&this.previous.error(a),this.cleanUp()),!0)},on:function(a,o){return this._listeners[a].push(o),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(a,o){if(this._listeners[a])for(var l=0;l "+a:a}},i.exports=n},{}],29:[function(t,i,r){var n=t("../utils"),a=t("./ConvertWorker"),o=t("./GenericWorker"),l=t("../base64"),c=t("../support"),u=t("../external"),h=null;if(c.nodestream)try{h=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function d(m,f){return new u.Promise(function(g,y){var b=[],A=m._internalType,v=m._outputType,_=m._mimeType;m.on("data",function(C,B){b.push(C),f&&f(B)}).on("error",function(C){b=[],y(C)}).on("end",function(){try{var C=function(B,P,M){switch(B){case"blob":return n.newBlob(n.transformTo("arraybuffer",P),M);case"base64":return l.encode(P);default:return n.transformTo(B,P)}}(v,function(B,P){var M,U=0,F=null,T=0;for(M=0;M"u")r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=new Blob([n],{type:"application/zip"}).size===0}catch{try{var a=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);a.append(n),r.blob=a.getBlob("application/zip").size===0}catch{r.blob=!1}}}try{r.nodestream=!!t("readable-stream").Readable}catch{r.nodestream=!1}},{"readable-stream":16}],31:[function(t,i,r){for(var n=t("./utils"),a=t("./support"),o=t("./nodejsUtils"),l=t("./stream/GenericWorker"),c=new Array(256),u=0;u<256;u++)c[u]=252<=u?6:248<=u?5:240<=u?4:224<=u?3:192<=u?2:1;c[254]=c[254]=1;function h(){l.call(this,"utf-8 decode"),this.leftOver=null}function d(){l.call(this,"utf-8 encode")}r.utf8encode=function(p){return a.nodebuffer?o.newBufferFrom(p,"utf-8"):function(m){var f,g,y,b,A,v=m.length,_=0;for(b=0;b>>6:(g<65536?f[A++]=224|g>>>12:(f[A++]=240|g>>>18,f[A++]=128|g>>>12&63),f[A++]=128|g>>>6&63),f[A++]=128|63&g);return f}(p)},r.utf8decode=function(p){return a.nodebuffer?n.transformTo("nodebuffer",p).toString("utf-8"):function(m){var f,g,y,b,A=m.length,v=new Array(2*A);for(f=g=0;f>10&1023,v[g++]=56320|1023&y)}return v.length!==g&&(v.subarray?v=v.subarray(0,g):v.length=g),n.applyFromCharCode(v)}(p=n.transformTo(a.uint8array?"uint8array":"array",p))},n.inherits(h,l),h.prototype.processChunk=function(p){var m=n.transformTo(a.uint8array?"uint8array":"array",p.data);if(this.leftOver&&this.leftOver.length){if(a.uint8array){var f=m;(m=new Uint8Array(f.length+this.leftOver.length)).set(this.leftOver,0),m.set(f,this.leftOver.length)}else m=this.leftOver.concat(m);this.leftOver=null}var g=function(b,A){var v;for((A=A||b.length)>b.length&&(A=b.length),v=A-1;0<=v&&(192&b[v])==128;)v--;return v<0||v===0?A:v+c[b[v]]>A?v:A}(m),y=m;g!==m.length&&(a.uint8array?(y=m.subarray(0,g),this.leftOver=m.subarray(g,m.length)):(y=m.slice(0,g),this.leftOver=m.slice(g,m.length))),this.push({data:r.utf8decode(y),meta:p.meta})},h.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=h,n.inherits(d,l),d.prototype.processChunk=function(p){this.push({data:r.utf8encode(p.data),meta:p.meta})},r.Utf8EncodeWorker=d},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,i,r){var n=t("./support"),a=t("./base64"),o=t("./nodejsUtils"),l=t("./external");function c(f){return f}function u(f,g){for(var y=0;y>8;this.dir=!!(16&this.externalFileAttributes),p==0&&(this.dosPermissions=63&this.externalFileAttributes),p==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var p=n(this.extraFields[1].value);this.uncompressedSize===a.MAX_VALUE_32BITS&&(this.uncompressedSize=p.readInt(8)),this.compressedSize===a.MAX_VALUE_32BITS&&(this.compressedSize=p.readInt(8)),this.localHeaderOffset===a.MAX_VALUE_32BITS&&(this.localHeaderOffset=p.readInt(8)),this.diskNumberStart===a.MAX_VALUE_32BITS&&(this.diskNumberStart=p.readInt(4))}},readExtraFields:function(p){var m,f,g,y=p.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});p.index+4>>6:(p<65536?d[g++]=224|p>>>12:(d[g++]=240|p>>>18,d[g++]=128|p>>>12&63),d[g++]=128|p>>>6&63),d[g++]=128|63&p);return d},r.buf2binstring=function(h){return u(h,h.length)},r.binstring2buf=function(h){for(var d=new n.Buf8(h.length),p=0,m=d.length;p>10&1023,b[m++]=56320|1023&f)}return u(b,m)},r.utf8border=function(h,d){var p;for((d=d||h.length)>h.length&&(d=h.length),p=d-1;0<=p&&(192&h[p])==128;)p--;return p<0||p===0?d:p+l[h[p]]>d?p:d}},{"./common":41}],43:[function(t,i,r){i.exports=function(n,a,o,l){for(var c=65535&n|0,u=n>>>16&65535|0,h=0;o!==0;){for(o-=h=2e3>>1:a>>>1;o[l]=a}return o}();i.exports=function(a,o,l,c){var u=n,h=c+l;a^=-1;for(var d=c;d>>8^u[255&(a^o[d])];return-1^a}},{}],46:[function(t,i,r){var n,a=t("../utils/common"),o=t("./trees"),l=t("./adler32"),c=t("./crc32"),u=t("./messages"),h=0,d=4,p=0,m=-2,f=-1,g=4,y=2,b=8,A=9,v=286,_=30,C=19,B=2*v+1,P=15,M=3,U=258,F=U+M+1,T=42,S=113,x=1,L=2,Y=3,R=4;function D(E,j){return E.msg=u[j],j}function W(E){return(E<<1)-(4E.avail_out&&(z=E.avail_out),z!==0&&(a.arraySet(E.output,j.pending_buf,j.pending_out,z,E.next_out),E.next_out+=z,j.pending_out+=z,E.total_out+=z,E.avail_out-=z,j.pending-=z,j.pending===0&&(j.pending_out=0))}function N(E,j){o._tr_flush_block(E,0<=E.block_start?E.block_start:-1,E.strstart-E.block_start,j),E.block_start=E.strstart,O(E.strm)}function ee(E,j){E.pending_buf[E.pending++]=j}function Z(E,j){E.pending_buf[E.pending++]=j>>>8&255,E.pending_buf[E.pending++]=255&j}function Q(E,j){var z,I,k=E.max_chain_length,G=E.strstart,J=E.prev_length,$=E.nice_match,V=E.strstart>E.w_size-F?E.strstart-(E.w_size-F):0,ie=E.window,le=E.w_mask,re=E.prev,be=E.strstart+U,je=ie[G+J-1],De=ie[G+J];E.prev_length>=E.good_match&&(k>>=2),$>E.lookahead&&($=E.lookahead);do if(ie[(z=j)+J]===De&&ie[z+J-1]===je&&ie[z]===ie[G]&&ie[++z]===ie[G+1]){G+=2,z++;do;while(ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&GV&&--k!=0);return J<=E.lookahead?J:E.lookahead}function ge(E){var j,z,I,k,G,J,$,V,ie,le,re=E.w_size;do{if(k=E.window_size-E.lookahead-E.strstart,E.strstart>=re+(re-F)){for(a.arraySet(E.window,E.window,re,re,0),E.match_start-=re,E.strstart-=re,E.block_start-=re,j=z=E.hash_size;I=E.head[--j],E.head[j]=re<=I?I-re:0,--z;);for(j=z=re;I=E.prev[--j],E.prev[j]=re<=I?I-re:0,--z;);k+=re}if(E.strm.avail_in===0)break;if(J=E.strm,$=E.window,V=E.strstart+E.lookahead,ie=k,le=void 0,le=J.avail_in,ie=M)for(G=E.strstart-E.insert,E.ins_h=E.window[G],E.ins_h=(E.ins_h<=M&&(E.ins_h=(E.ins_h<=M)if(I=o._tr_tally(E,E.strstart-E.match_start,E.match_length-M),E.lookahead-=E.match_length,E.match_length<=E.max_lazy_match&&E.lookahead>=M){for(E.match_length--;E.strstart++,E.ins_h=(E.ins_h<=M&&(E.ins_h=(E.ins_h<=M&&E.match_length<=E.prev_length){for(k=E.strstart+E.lookahead-M,I=o._tr_tally(E,E.strstart-1-E.prev_match,E.prev_length-M),E.lookahead-=E.prev_length-1,E.prev_length-=2;++E.strstart<=k&&(E.ins_h=(E.ins_h<E.pending_buf_size-5&&(z=E.pending_buf_size-5);;){if(E.lookahead<=1){if(ge(E),E.lookahead===0&&j===h)return x;if(E.lookahead===0)break}E.strstart+=E.lookahead,E.lookahead=0;var I=E.block_start+z;if((E.strstart===0||E.strstart>=I)&&(E.lookahead=E.strstart-I,E.strstart=I,N(E,!1),E.strm.avail_out===0)||E.strstart-E.block_start>=E.w_size-F&&(N(E,!1),E.strm.avail_out===0))return x}return E.insert=0,j===d?(N(E,!0),E.strm.avail_out===0?Y:R):(E.strstart>E.block_start&&(N(E,!1),E.strm.avail_out),x)}),new pe(4,4,8,4,Te),new pe(4,5,16,8,Te),new pe(4,6,32,32,Te),new pe(4,4,16,16,he),new pe(8,16,32,32,he),new pe(8,16,128,128,he),new pe(8,32,128,256,he),new pe(32,128,258,1024,he),new pe(32,258,258,4096,he)],r.deflateInit=function(E,j){return ve(E,j,b,15,8,0)},r.deflateInit2=ve,r.deflateReset=ue,r.deflateResetKeep=oe,r.deflateSetHeader=function(E,j){return E&&E.state?E.state.wrap!==2?m:(E.state.gzhead=j,p):m},r.deflate=function(E,j){var z,I,k,G;if(!E||!E.state||5>8&255),ee(I,I.gzhead.time>>16&255),ee(I,I.gzhead.time>>24&255),ee(I,I.level===9?2:2<=I.strategy||I.level<2?4:0),ee(I,255&I.gzhead.os),I.gzhead.extra&&I.gzhead.extra.length&&(ee(I,255&I.gzhead.extra.length),ee(I,I.gzhead.extra.length>>8&255)),I.gzhead.hcrc&&(E.adler=c(E.adler,I.pending_buf,I.pending,0)),I.gzindex=0,I.status=69):(ee(I,0),ee(I,0),ee(I,0),ee(I,0),ee(I,0),ee(I,I.level===9?2:2<=I.strategy||I.level<2?4:0),ee(I,3),I.status=S);else{var J=b+(I.w_bits-8<<4)<<8;J|=(2<=I.strategy||I.level<2?0:I.level<6?1:I.level===6?2:3)<<6,I.strstart!==0&&(J|=32),J+=31-J%31,I.status=S,Z(I,J),I.strstart!==0&&(Z(I,E.adler>>>16),Z(I,65535&E.adler)),E.adler=1}if(I.status===69)if(I.gzhead.extra){for(k=I.pending;I.gzindex<(65535&I.gzhead.extra.length)&&(I.pending!==I.pending_buf_size||(I.gzhead.hcrc&&I.pending>k&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),O(E),k=I.pending,I.pending!==I.pending_buf_size));)ee(I,255&I.gzhead.extra[I.gzindex]),I.gzindex++;I.gzhead.hcrc&&I.pending>k&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),I.gzindex===I.gzhead.extra.length&&(I.gzindex=0,I.status=73)}else I.status=73;if(I.status===73)if(I.gzhead.name){k=I.pending;do{if(I.pending===I.pending_buf_size&&(I.gzhead.hcrc&&I.pending>k&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),O(E),k=I.pending,I.pending===I.pending_buf_size)){G=1;break}G=I.gzindexk&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),G===0&&(I.gzindex=0,I.status=91)}else I.status=91;if(I.status===91)if(I.gzhead.comment){k=I.pending;do{if(I.pending===I.pending_buf_size&&(I.gzhead.hcrc&&I.pending>k&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),O(E),k=I.pending,I.pending===I.pending_buf_size)){G=1;break}G=I.gzindexk&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),G===0&&(I.status=103)}else I.status=103;if(I.status===103&&(I.gzhead.hcrc?(I.pending+2>I.pending_buf_size&&O(E),I.pending+2<=I.pending_buf_size&&(ee(I,255&E.adler),ee(I,E.adler>>8&255),E.adler=0,I.status=S)):I.status=S),I.pending!==0){if(O(E),E.avail_out===0)return I.last_flush=-1,p}else if(E.avail_in===0&&W(j)<=W(z)&&j!==d)return D(E,-5);if(I.status===666&&E.avail_in!==0)return D(E,-5);if(E.avail_in!==0||I.lookahead!==0||j!==h&&I.status!==666){var $=I.strategy===2?function(V,ie){for(var le;;){if(V.lookahead===0&&(ge(V),V.lookahead===0)){if(ie===h)return x;break}if(V.match_length=0,le=o._tr_tally(V,0,V.window[V.strstart]),V.lookahead--,V.strstart++,le&&(N(V,!1),V.strm.avail_out===0))return x}return V.insert=0,ie===d?(N(V,!0),V.strm.avail_out===0?Y:R):V.last_lit&&(N(V,!1),V.strm.avail_out===0)?x:L}(I,j):I.strategy===3?function(V,ie){for(var le,re,be,je,De=V.window;;){if(V.lookahead<=U){if(ge(V),V.lookahead<=U&&ie===h)return x;if(V.lookahead===0)break}if(V.match_length=0,V.lookahead>=M&&0V.lookahead&&(V.match_length=V.lookahead)}if(V.match_length>=M?(le=o._tr_tally(V,1,V.match_length-M),V.lookahead-=V.match_length,V.strstart+=V.match_length,V.match_length=0):(le=o._tr_tally(V,0,V.window[V.strstart]),V.lookahead--,V.strstart++),le&&(N(V,!1),V.strm.avail_out===0))return x}return V.insert=0,ie===d?(N(V,!0),V.strm.avail_out===0?Y:R):V.last_lit&&(N(V,!1),V.strm.avail_out===0)?x:L}(I,j):n[I.level].func(I,j);if($!==Y&&$!==R||(I.status=666),$===x||$===Y)return E.avail_out===0&&(I.last_flush=-1),p;if($===L&&(j===1?o._tr_align(I):j!==5&&(o._tr_stored_block(I,0,0,!1),j===3&&(H(I.head),I.lookahead===0&&(I.strstart=0,I.block_start=0,I.insert=0))),O(E),E.avail_out===0))return I.last_flush=-1,p}return j!==d?p:I.wrap<=0?1:(I.wrap===2?(ee(I,255&E.adler),ee(I,E.adler>>8&255),ee(I,E.adler>>16&255),ee(I,E.adler>>24&255),ee(I,255&E.total_in),ee(I,E.total_in>>8&255),ee(I,E.total_in>>16&255),ee(I,E.total_in>>24&255)):(Z(I,E.adler>>>16),Z(I,65535&E.adler)),O(E),0=z.w_size&&(G===0&&(H(z.head),z.strstart=0,z.block_start=0,z.insert=0),ie=new a.Buf8(z.w_size),a.arraySet(ie,j,le-z.w_size,z.w_size,0),j=ie,le=z.w_size),J=E.avail_in,$=E.next_in,V=E.input,E.avail_in=le,E.next_in=0,E.input=j,ge(z);z.lookahead>=M;){for(I=z.strstart,k=z.lookahead-(M-1);z.ins_h=(z.ins_h<>>=M=P>>>24,A-=M,(M=P>>>16&255)===0)L[u++]=65535&P;else{if(!(16&M)){if(!(64&M)){P=v[(65535&P)+(b&(1<>>=M,A-=M),A<15&&(b+=x[l++]<>>=M=P>>>24,A-=M,!(16&(M=P>>>16&255))){if(!(64&M)){P=_[(65535&P)+(b&(1<>>=M,A-=M,(M=u-h)>3,b&=(1<<(A-=U<<3))-1,n.next_in=l,n.next_out=u,n.avail_in=l>>24&255)+(T>>>8&65280)+((65280&T)<<8)+((255&T)<<24)}function b(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function A(T){var S;return T&&T.state?(S=T.state,T.total_in=T.total_out=S.total=0,T.msg="",S.wrap&&(T.adler=1&S.wrap),S.mode=m,S.last=0,S.havedict=0,S.dmax=32768,S.head=null,S.hold=0,S.bits=0,S.lencode=S.lendyn=new n.Buf32(f),S.distcode=S.distdyn=new n.Buf32(g),S.sane=1,S.back=-1,d):p}function v(T){var S;return T&&T.state?((S=T.state).wsize=0,S.whave=0,S.wnext=0,A(T)):p}function _(T,S){var x,L;return T&&T.state?(L=T.state,S<0?(x=0,S=-S):(x=1+(S>>4),S<48&&(S&=15)),S&&(S<8||15=R.wsize?(n.arraySet(R.window,S,x-R.wsize,R.wsize,0),R.wnext=0,R.whave=R.wsize):(L<(Y=R.wsize-R.wnext)&&(Y=L),n.arraySet(R.window,S,x-L,Y,R.wnext),(L-=Y)?(n.arraySet(R.window,S,x-L,L,0),R.wnext=L,R.whave=R.wsize):(R.wnext+=Y,R.wnext===R.wsize&&(R.wnext=0),R.whave>>8&255,x.check=o(x.check,G,2,0),N=O=0,x.mode=2;break}if(x.flags=0,x.head&&(x.head.done=!1),!(1&x.wrap)||(((255&O)<<8)+(O>>8))%31){T.msg="incorrect header check",x.mode=30;break}if((15&O)!=8){T.msg="unknown compression method",x.mode=30;break}if(N-=4,E=8+(15&(O>>>=4)),x.wbits===0)x.wbits=E;else if(E>x.wbits){T.msg="invalid window size",x.mode=30;break}x.dmax=1<>8&1),512&x.flags&&(G[0]=255&O,G[1]=O>>>8&255,x.check=o(x.check,G,2,0)),N=O=0,x.mode=3;case 3:for(;N<32;){if(W===0)break e;W--,O+=L[R++]<>>8&255,G[2]=O>>>16&255,G[3]=O>>>24&255,x.check=o(x.check,G,4,0)),N=O=0,x.mode=4;case 4:for(;N<16;){if(W===0)break e;W--,O+=L[R++]<>8),512&x.flags&&(G[0]=255&O,G[1]=O>>>8&255,x.check=o(x.check,G,2,0)),N=O=0,x.mode=5;case 5:if(1024&x.flags){for(;N<16;){if(W===0)break e;W--,O+=L[R++]<>>8&255,x.check=o(x.check,G,2,0)),N=O=0}else x.head&&(x.head.extra=null);x.mode=6;case 6:if(1024&x.flags&&(W<(Q=x.length)&&(Q=W),Q&&(x.head&&(E=x.head.extra_len-x.length,x.head.extra||(x.head.extra=new Array(x.head.extra_len)),n.arraySet(x.head.extra,L,R,Q,E)),512&x.flags&&(x.check=o(x.check,L,Q,R)),W-=Q,R+=Q,x.length-=Q),x.length))break e;x.length=0,x.mode=7;case 7:if(2048&x.flags){if(W===0)break e;for(Q=0;E=L[R+Q++],x.head&&E&&x.length<65536&&(x.head.name+=String.fromCharCode(E)),E&&Q>9&1,x.head.done=!0),T.adler=x.check=0,x.mode=12;break;case 10:for(;N<32;){if(W===0)break e;W--,O+=L[R++]<>>=7&N,N-=7&N,x.mode=27;break}for(;N<3;){if(W===0)break e;W--,O+=L[R++]<>>=1)){case 0:x.mode=14;break;case 1:if(U(x),x.mode=20,S!==6)break;O>>>=2,N-=2;break e;case 2:x.mode=17;break;case 3:T.msg="invalid block type",x.mode=30}O>>>=2,N-=2;break;case 14:for(O>>>=7&N,N-=7&N;N<32;){if(W===0)break e;W--,O+=L[R++]<>>16^65535)){T.msg="invalid stored block lengths",x.mode=30;break}if(x.length=65535&O,N=O=0,x.mode=15,S===6)break e;case 15:x.mode=16;case 16:if(Q=x.length){if(W>>=5,N-=5,x.ndist=1+(31&O),O>>>=5,N-=5,x.ncode=4+(15&O),O>>>=4,N-=4,286>>=3,N-=3}for(;x.have<19;)x.lens[J[x.have++]]=0;if(x.lencode=x.lendyn,x.lenbits=7,z={bits:x.lenbits},j=c(0,x.lens,0,19,x.lencode,0,x.work,z),x.lenbits=z.bits,j){T.msg="invalid code lengths set",x.mode=30;break}x.have=0,x.mode=19;case 19:for(;x.have>>16&255,Ae=65535&k,!((he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>>=he,N-=he,x.lens[x.have++]=Ae;else{if(Ae===16){for(I=he+2;N>>=he,N-=he,x.have===0){T.msg="invalid bit length repeat",x.mode=30;break}E=x.lens[x.have-1],Q=3+(3&O),O>>>=2,N-=2}else if(Ae===17){for(I=he+3;N>>=he)),O>>>=3,N-=3}else{for(I=he+7;N>>=he)),O>>>=7,N-=7}if(x.have+Q>x.nlen+x.ndist){T.msg="invalid bit length repeat",x.mode=30;break}for(;Q--;)x.lens[x.have++]=E}}if(x.mode===30)break;if(x.lens[256]===0){T.msg="invalid code -- missing end-of-block",x.mode=30;break}if(x.lenbits=9,z={bits:x.lenbits},j=c(u,x.lens,0,x.nlen,x.lencode,0,x.work,z),x.lenbits=z.bits,j){T.msg="invalid literal/lengths set",x.mode=30;break}if(x.distbits=6,x.distcode=x.distdyn,z={bits:x.distbits},j=c(h,x.lens,x.nlen,x.ndist,x.distcode,0,x.work,z),x.distbits=z.bits,j){T.msg="invalid distances set",x.mode=30;break}if(x.mode=20,S===6)break e;case 20:x.mode=21;case 21:if(6<=W&&258<=H){T.next_out=D,T.avail_out=H,T.next_in=R,T.avail_in=W,x.hold=O,x.bits=N,l(T,Z),D=T.next_out,Y=T.output,H=T.avail_out,R=T.next_in,L=T.input,W=T.avail_in,O=x.hold,N=x.bits,x.mode===12&&(x.back=-1);break}for(x.back=0;pe=(k=x.lencode[O&(1<>>16&255,Ae=65535&k,!((he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>oe)])>>>16&255,Ae=65535&k,!(oe+(he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>>=oe,N-=oe,x.back+=oe}if(O>>>=he,N-=he,x.back+=he,x.length=Ae,pe===0){x.mode=26;break}if(32&pe){x.back=-1,x.mode=12;break}if(64&pe){T.msg="invalid literal/length code",x.mode=30;break}x.extra=15&pe,x.mode=22;case 22:if(x.extra){for(I=x.extra;N>>=x.extra,N-=x.extra,x.back+=x.extra}x.was=x.length,x.mode=23;case 23:for(;pe=(k=x.distcode[O&(1<>>16&255,Ae=65535&k,!((he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>oe)])>>>16&255,Ae=65535&k,!(oe+(he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>>=oe,N-=oe,x.back+=oe}if(O>>>=he,N-=he,x.back+=he,64&pe){T.msg="invalid distance code",x.mode=30;break}x.offset=Ae,x.extra=15&pe,x.mode=24;case 24:if(x.extra){for(I=x.extra;N>>=x.extra,N-=x.extra,x.back+=x.extra}if(x.offset>x.dmax){T.msg="invalid distance too far back",x.mode=30;break}x.mode=25;case 25:if(H===0)break e;if(Q=Z-H,x.offset>Q){if((Q=x.offset-Q)>x.whave&&x.sane){T.msg="invalid distance too far back",x.mode=30;break}ge=Q>x.wnext?(Q-=x.wnext,x.wsize-Q):x.wnext-Q,Q>x.length&&(Q=x.length),Te=x.window}else Te=Y,ge=D-x.offset,Q=x.length;for(HB?(M=ge[Te+g[S]],N[ee+g[S]]):(M=96,0),b=1<>D)+(A-=b)]=P<<24|M<<16|U|0,A!==0;);for(b=1<>=1;if(b!==0?(O&=b-1,O+=b):O=0,S++,--Z[T]==0){if(T===L)break;T=h[d+g[S]]}if(Y>>7)]}function ee(k,G){k.pending_buf[k.pending++]=255&G,k.pending_buf[k.pending++]=G>>>8&255}function Z(k,G,J){k.bi_valid>y-J?(k.bi_buf|=G<>y-k.bi_valid,k.bi_valid+=J-y):(k.bi_buf|=G<>>=1,J<<=1,0<--G;);return J>>>1}function Te(k,G,J){var $,V,ie=new Array(g+1),le=0;for($=1;$<=g;$++)ie[$]=le=le+J[$-1]<<1;for(V=0;V<=G;V++){var re=k[2*V+1];re!==0&&(k[2*V]=ge(ie[re]++,re))}}function he(k){var G;for(G=0;G>1;1<=J;J--)oe(k,ie,J);for(V=be;J=k.heap[1],k.heap[1]=k.heap[k.heap_len--],oe(k,ie,1),$=k.heap[1],k.heap[--k.heap_max]=J,k.heap[--k.heap_max]=$,ie[2*V]=ie[2*J]+ie[2*$],k.depth[V]=(k.depth[J]>=k.depth[$]?k.depth[J]:k.depth[$])+1,ie[2*J+1]=ie[2*$+1]=V,k.heap[1]=V++,oe(k,ie,1),2<=k.heap_len;);k.heap[--k.heap_max]=k.heap[1],function(De,Ot){var zs,Qt,Ys,rt,K,fe,xe=Ot.dyn_tree,Ye=Ot.max_code,Ge=Ot.stat_desc.static_tree,_t=Ot.stat_desc.has_stree,Ft=Ot.stat_desc.extra_bits,Qi=Ot.stat_desc.extra_base,gs=Ot.stat_desc.max_length,Jt=0;for(rt=0;rt<=g;rt++)De.bl_count[rt]=0;for(xe[2*De.heap[De.heap_max]+1]=0,zs=De.heap_max+1;zs>=7;V>>=1)if(1&je&&re.dyn_ltree[2*be]!==0)return a;if(re.dyn_ltree[18]!==0||re.dyn_ltree[20]!==0||re.dyn_ltree[26]!==0)return o;for(be=32;be>>3,(ie=k.static_len+3+7>>>3)<=V&&(V=ie)):V=ie=J+5,J+4<=V&&G!==-1?I(k,G,J,$):k.strategy===4||ie===V?(Z(k,2+($?1:0),3),ue(k,F,T)):(Z(k,4+($?1:0),3),function(re,be,je,De){var Ot;for(Z(re,be-257,5),Z(re,je-1,5),Z(re,De-4,4),Ot=0;Ot>>8&255,k.pending_buf[k.d_buf+2*k.last_lit+1]=255&G,k.pending_buf[k.l_buf+k.last_lit]=255&J,k.last_lit++,G===0?k.dyn_ltree[2*J]++:(k.matches++,G--,k.dyn_ltree[2*(x[J]+h+1)]++,k.dyn_dtree[2*N(G)]++),k.last_lit===k.lit_bufsize-1},r._tr_align=function(k){Z(k,2,3),Q(k,A,F),function(G){G.bi_valid===16?(ee(G,G.bi_buf),G.bi_buf=0,G.bi_valid=0):8<=G.bi_valid&&(G.pending_buf[G.pending++]=255&G.bi_buf,G.bi_buf>>=8,G.bi_valid-=8)}(k)}},{"../utils/common":41}],53:[function(t,i,r){i.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,i,r){(function(n){(function(a,o){if(!a.setImmediate){var l,c,u,h,d=1,p={},m=!1,f=a.document,g=Object.getPrototypeOf&&Object.getPrototypeOf(a);g=g&&g.setTimeout?g:a,l={}.toString.call(a.process)==="[object process]"?function(v){process.nextTick(function(){b(v)})}:function(){if(a.postMessage&&!a.importScripts){var v=!0,_=a.onmessage;return a.onmessage=function(){v=!1},a.postMessage("","*"),a.onmessage=_,v}}()?(h="setImmediate$"+Math.random()+"$",a.addEventListener?a.addEventListener("message",A,!1):a.attachEvent("onmessage",A),function(v){a.postMessage(h+v,"*")}):a.MessageChannel?((u=new MessageChannel).port1.onmessage=function(v){b(v.data)},function(v){u.port2.postMessage(v)}):f&&"onreadystatechange"in f.createElement("script")?(c=f.documentElement,function(v){var _=f.createElement("script");_.onreadystatechange=function(){b(v),_.onreadystatechange=null,c.removeChild(_),_=null},c.appendChild(_)}):function(v){setTimeout(b,0,v)},g.setImmediate=function(v){typeof v!="function"&&(v=new Function(""+v));for(var _=new Array(arguments.length-1),C=0;C<_.length;C++)_[C]=arguments[C+1];var B={callback:v,args:_};return p[d]=B,l(d),d++},g.clearImmediate=y}function y(v){delete p[v]}function b(v){if(m)setTimeout(b,0,v);else{var _=p[v];if(_){m=!0;try{(function(C){var B=C.callback,P=C.args;switch(P.length){case 0:B();break;case 1:B(P[0]);break;case 2:B(P[0],P[1]);break;case 3:B(P[0],P[1],P[2]);break;default:B.apply(o,P)}})(_)}finally{y(v),m=!1}}}}function A(v){v.source===a&&typeof v.data=="string"&&v.data.indexOf(h)===0&&b(+v.data.slice(h.length))}})(typeof self>"u"?n===void 0?this:n:self)}).call(this,typeof Nt<"u"?Nt:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})(Dg);var MT=Dg.exports;const kT=la(MT),es=class es{static async writeHandle(e,t){const i=this.workID++,r=new Promise((o,l)=>this.map.set(i,[o,l])),n=new TextEncoder,a=typeof t=="string"?n.encode(t):await t.arrayBuffer();return this.worker.postMessage([i,e,a],[a]),r}};_r(es,"worker",new Worker(new URL("/smeditor/assets/SafariFileWorker-557e53c3.js",self.location),{type:"module"})),_r(es,"workID",0),_r(es,"map",new Map),es.worker.onmessage=e=>{const t=e.data;t.success?es.map.get(t.id)[0]():es.map.get(t.id)[1](t.reason),es.map.delete(t.id)};let Tc=es;class BT{_root;async getRoot(){return this._root||(ET.adapter.native?await Op().then(e=>this._root=e):await Op(qe(()=>import("./memory-7b00e9f1.js"),[])).then(e=>this._root=e)),this._root}async uploadHandle(e,t){let i;if(typeof t=="string"){const r=await this.getDirectoryHandle(t,{create:!0});if(!r)return;i=r}else i=t??await this.getRoot();if(e.kind=="file"){const r=await i.getFileHandle(e.name,{create:!0});await this.writeFile(r,await e.getFile())}else{const r=await i.getDirectoryHandle(e.name,{create:!0}),n=[];for await(const a of e.values())n.push(this.uploadHandle(a,r));await Promise.all(n)}}async uploadFiles(e,t){let i;if(typeof t=="string"){const r=await this.getDirectoryHandle(t,{create:!0});if(!r)return;i=r}else i=t??await this.getRoot();if(e.isFile){const r=e;if(r.name==".DS_Store")return;r.file(async n=>{const a=await i.getFileHandle(n.name,{create:!0});await this.writeHandle(a,n)})}else if(e.isDirectory){const r=e.createReader(),n=await i.getDirectoryHandle(e.name,{create:!0});for await(const a of n.values())await n.removeEntry(a.name,{recursive:!0});r.readEntries(async a=>{const o=[];for(let l=0;li!="."&&i!="");t.indexOf("..")>-1;){const i=t.indexOf("..");if(i==0)throw Error("Path"+t.join("/")+"is invalid!");t.splice(i-1,2)}return t.join("/")}async zipDirectory(e,t){const i=t??new kT,r=Hi(e)==""?e:Xt(e),n=await this.getDirectoryHandle(r);if(n){for(const a of await this.getDirectoryFiles(n))i.file(a.name,await a.getFile());for(const a of await this.getDirectoryFolders(n)){const o=i.folder(a.name);if(!o){console.error("Failed to zip folder "+r+"/"+a.name);continue}await this.zipDirectory(r+"/"+a.name,o)}return i}}async saveDirectory(e){const t=Hi(e)==""?e:Xt(e);_e.create("Exporting "+t+".zip");const i=await wT({_preferPolyfill:!1,suggestedName:`${t}.zip`,types:[{accept:{"application/zip":[".zip"]}}],excludeAcceptAllOption:!1}),r=await this.zipDirectory(e);r&&await r.generateAsync({type:"blob"}).then(async n=>{if(!window.showSaveFilePicker){console.log(n);const a=document.createElement("a"),o=URL.createObjectURL(n);document.body.appendChild(a),a.href=o,a.download=t+".zip",a.click(),a.remove(),window.URL.revokeObjectURL(o);return}await this.writeHandle(i,n)})}async renameFile(e,t){if(e!=t)try{const i=await this.getDirectoryHandle(Xt(e)),r=await this.getDirectoryHandle(Xt(t),{create:!0}),n=await this.getFileHandle(e);if(!i||!r||!n)return;await this.copyToHandle(r,n,ts(t)),await i.removeEntry(ts(e))}catch(i){console.error(i)}}async renameDirectory(e,t){if(!t.startsWith(e))try{const i=await this.getDirectoryHandle(Xt(e)),r=await this.getDirectoryHandle(Xt(t),{create:!0}),n=await this.getDirectoryHandle(e);if(!i||!r||!n)return;await this.copyToHandle(r,n,ts(t)),await i.removeEntry(ts(e),{recursive:!0})}catch(i){console.error(i)}}async copyToHandle(e,t,i){try{if(t.kind=="directory"){const r=await e.getDirectoryHandle(i??t.name,{create:!0}),n=[];for await(const a of t.values())n.push(this.copyToHandle(r,a));await Promise.all(n)}else{const r=await t.getFile(),n=await e.getFileHandle(i??t.name,{create:!0});await this.writeHandle(n,r)}}catch(r){console.error(r)}}getRelativePath(e,t){const i=e.split("/"),r=t.split("/"),n=Math.min(i.length,r.length);let a=n;for(let l=0;limport("./NodeFileHandler-0f24e20c.js"),[])).NodeFileHandler:new BT}static getStandardHandler(){return this.standardHandler}static getHandler(e){return e!==void 0&&e.startsWith("https://")||e?.startsWith("http://")?this.urlHandler:this.standardHandler}static handleDropEvent(e,t){return this.getHandler().handleDropEvent(e,t)}static getDirectoryHandle(e,t){return Fe.getHandler(e).getDirectoryHandle(e,t)}static hasFile(e){return Fe.getHandler(e).hasFile(e)}static getFileHandle(e,t){return Fe.getHandler(e).getFileHandle(e,t)}static getFileHandleRelativeTo(e,t){return Fe.getHandler(e).getFileHandleRelativeTo(e,t)}static getDirectoryFiles(e){return Fe.getHandler(typeof e=="string"?e:void 0).getDirectoryFiles(e)}static getDirectoryFolders(e){return Fe.getHandler(typeof e=="string"?e:void 0).getDirectoryFolders(e)}static writeFile(e,t){return Fe.getHandler(typeof e=="string"?e:void 0).writeFile(e,t)}static getRelativePath(e,t){return Fe.getHandler().getRelativePath(e,t)}}class Pt{windowManager;options;windowElement;viewElement;constructor(e){this.options=e;const t=document.createElement("div"),i=document.createElement("div"),r=document.createElement("div"),n=document.createElement("div");if(t.appendChild(r),t.appendChild(i),t.style.width=e.width+"px",t.style.left=window.innerWidth/2-e.width/2+"px",t.style.top=window.innerHeight/2-e.height/2+"px",t.classList.add("unselectable","window"),e.win_id&&(t.dataset.win_id=e.win_id),i.classList.add("view"),i.style.height=e.height+"px",i.style.width=e.width+"px",r.classList.add("navbar"),r.appendChild(n),!e.disableClose){const a=document.createElement("img"),o=document.createElement("img");a.classList.add("unselectable"),a.draggable=!1,a.src=Ce.MINIMIZE_WINDOW,a.onclick=()=>{i.style.height!="0px"?i.style.height="0px":i.style.height=e.height+"px",this.clampPosition()},o.classList.add("unselectable"),o.draggable=!1,o.src=Ce.CLOSE_WINDOW,o.onclick=()=>this.closeWindow(),r.appendChild(a),r.appendChild(o)}n.innerText=e.title,n.classList.add("title"),t.addEventListener("mousedown",()=>this.focus()),e.blocking&&(window.addEventListener("mousedown",this.block,!0),document.getElementById("blocker").style.display="block",t.dataset.blocking="block"),n.addEventListener("mousedown",()=>{window.addEventListener("mousemove",this.handleDrag),window.addEventListener("mouseup",()=>window.removeEventListener("mousemove",this.handleDrag))}),this.focus(),t.classList.add("focused"),this.windowElement=t,this.viewElement=i}addToManager(e){this.windowManager=e,e.view.appendChild(this.windowElement),this.focus()}onClose(){}closeWindow(){this.windowManager&&(this.onClose(),this.windowManager.removeWindow(this),this.windowElement.classList.add("exiting"),window.removeEventListener("mousedown",this.block,!0),this.options.blocking&&this.windowManager.windows.filter(e=>e.options.blocking).length==0&&(document.getElementById("blocker").style.display="none"),setTimeout(()=>this.windowManager.view.removeChild(this.windowElement),40))}focus(){if(this.windowManager==null)return;this.windowManager.unfocusAll(),this.windowElement.classList.add("focused");const e=Array.from(this.windowManager.view.children).map(t=>t).filter(t=>t!=this.windowElement);e.sort((t,i)=>parseInt(t.style.zIndex)-parseInt(i.style.zIndex)),e.push(this.windowElement);for(let t=0;t{!e.target||this.windowElement.contains(e.target)||(e.stopImmediatePropagation(),e.preventDefault())};handleDrag=e=>{const t=parseInt(this.windowElement.style.left.slice(0,-2))+e.movementX,i=parseInt(this.windowElement.style.top.slice(0,-2))+e.movementY;this.windowElement.style.left=t+"px",this.windowElement.style.top=i+"px",this.clampPosition()};clampPosition(){if(this.windowManager==null)return;const e=parseInt(this.windowElement.style.left.slice(0,-2)),t=parseInt(this.windowElement.style.top.slice(0,-2)),i=this.windowManager.app.view.getBoundingClientRect();this.windowElement.style.left=Ve(e,i.left,i.width-this.windowElement.clientWidth+i.left)+"px",this.windowElement.style.top=Ve(t,i.top,i.height-this.windowElement.clientHeight+i.top)+"px"}move(e,t){this.windowElement.style.left=e+"px",this.windowElement.style.top=t+"px"}}class pd extends Pt{app;dirOptions;fileDropPath="";draggedElement;draggedCopy;keyHandler;dropHandler;mouseHandler;dragHandler;constructor(e,t,i){super({title:t.title,width:500,height:400,disableClose:t.disableClose,win_id:"file_selector"+Math.random(),blocking:!0}),this.app=e,this.dirOptions=t,t.accepted_file_types||=[],this.keyHandler=this.handleKeyEvent.bind(this),this.dropHandler=this.handleDropEvent.bind(this),this.mouseHandler=this.handleMouseEvent.bind(this),this.dragHandler=this.handleDragEvent.bind(this),this.initView().then(()=>{i&&this.selectPath(i),t.onload?.()})}async initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("menu-options");const i=document.createElement("div");i.classList.add("menu-left");const r=document.createElement("div");r.classList.add("menu-right"),t.appendChild(i),t.appendChild(r);const n=document.createElement("button");n.innerText="Cancel",n.onclick=()=>{window.removeEventListener("keydown",this.keyHandler,!0),window.removeEventListener("drop",this.dropHandler,!0),this.closeWindow()};const a=document.createElement("button");a.innerText="Select",a.classList.add("confirm"),a.onclick=()=>this.confirmFile(),a.disabled=!0,i.appendChild(n),r.appendChild(a);const o=document.createElement("div");o.classList.add("dir-selector"),o.onclick=y=>{y.target==o&&this.selectElement(void 0)};const l=document.createElement("div");l.classList.add("file-options");const c=document.createElement("button"),u=document.createElement("img");u.src=Ce.ADD_FILE,u.classList.add("icon"),c.appendChild(u),c.appendChild(document.createTextNode("Upload files")),l.appendChild(c),c.onclick=async()=>{const y=this.fileDropPath,b=await bT({_preferPolyfill:!1,excludeAcceptAllOption:!1,multiple:!0}),v=this.viewElement.querySelector(".info.selected")?.dataset.path??"",_=[];for(const C of b)_.push(Fe.getStandardHandler().uploadHandle(C,v));await Promise.all(_),await this.refreshDirectory(y),this.getAcceptableFile(y).then(C=>this.selectPath(C))};const h=document.createElement("button"),d=document.createElement("img");d.src=Ce.ADD_FOLDER,d.classList.add("icon"),h.appendChild(d),h.appendChild(document.createTextNode("Upload folder")),l.appendChild(h),h.onclick=async()=>{const y=this.fileDropPath,b=await AT({_preferPolyfill:!1}),v=this.viewElement.querySelector(".info.selected")?.dataset.path??"";await Fe.getStandardHandler().uploadHandle(b,v),await this.refreshDirectory(y),this.getAcceptableFile(y==""?b.name:y+"/"+b.name).then(_=>this.selectPath(_))};const p=document.createElement("button");p.classList.add("rename");const m=document.createElement("img");m.src=Ce.EDIT,m.classList.add("icon"),p.appendChild(m),p.appendChild(document.createTextNode("Rename")),p.disabled=!0,p.onclick=()=>{const y=this.viewElement.querySelector(".info.selected");y?.dataset.path&&this.startEditing(y.querySelector("textarea"))},l.appendChild(p);const f=document.createElement("button");f.classList.add("delete");const g=document.createElement("img");g.src=Ce.TRASH,g.classList.add("icon"),f.appendChild(g),f.appendChild(document.createTextNode("Delete")),f.disabled=!0,f.onclick=()=>{const y=this.viewElement.querySelector(".info.selected"),b=y?.dataset.path;if(!b)return;const A=y.parentElement.classList.contains("folder");Fe.getStandardHandler()[A?"removeDirectory":"removeFile"](b).then(()=>{const v=this.getElement(b);v&&(v.parentElement?.remove(),f.disabled=!0,p.disabled=!0)})},l.appendChild(f),e.appendChild(o),e.appendChild(l),e.appendChild(t),this.viewElement.appendChild(e),window.addEventListener("keydown",this.keyHandler,!0),window.addEventListener("drop",this.dropHandler,!0),window.addEventListener("mousemove",this.dragHandler,!0),this.viewElement.addEventListener("dragover",this.mouseHandler),await this.createDiv("").then(y=>o.replaceChildren(...y))}async expand(e){if(!e.parentElement.classList.contains("folder"))return;e.parentElement.classList.remove("collapsed");const t=e.nextSibling;await this.createDiv(e.dataset.path).then(i=>{t.replaceChildren(...i)})}collapse(e){if(!e.parentElement.classList.contains("folder"))return;e.parentElement.classList.add("collapsed"),e.nextSibling.replaceChildren()}selectElement(e){if(this.viewElement.querySelector(".info.selected")?.classList.remove("selected"),!e){this.viewElement.querySelector(".delete").disabled=!0,this.viewElement.querySelector(".rename").disabled=!0;return}e.classList.add("selected"),Jn(e,{scrollMode:"if-needed",block:"nearest",inline:"nearest"});const t=this.viewElement.querySelector("button.confirm"),i=e.dataset.path;t.disabled=!0,i&&(t.disabled=!this.acceptableFileType(i),this.viewElement.querySelector(".delete").disabled=!1,this.viewElement.querySelector(".rename").disabled=!1)}async createDiv(e){const t=await Fe.getStandardHandler().getDirectoryFolders(e);let i=await Fe.getStandardHandler().getDirectoryFiles(e);return t.sort((r,n)=>r.name.toLowerCase().localeCompare(n.name.toLowerCase())),i.sort((r,n)=>r.name.toLowerCase().localeCompare(n.name.toLowerCase())),i=i.filter(r=>Hi(r.name)!=".crswap"),t.map(r=>this.createBaseElement(e,r)).concat(i.map(r=>this.createBaseElement(e,r)))}createBaseElement(e,t){e!=""&&(e+="/");const i=document.createElement("div");i.classList.add("item");const r=document.createElement("div");if(r.classList.add("info"),i.appendChild(r),t.kind=="directory"){const a=document.createElement("img");a.classList.add("icon"),a.classList.add("folder-icon"),a.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAbklEQVRIie2PMQqAMAxFXwfP6qJVPIjYzcOKdUkhQ0BaCoLkLS3k818CjuN8ztApYzIDl7xvmalFsAIZuIFozKPMMrC0CAJwKIkuGVX5KdkmLEm3ci1JSlLKU49yLSmXVG1es0EANvnvInKcP/AA784fpjlWwNQAAAAASUVORK5CYII=",r.appendChild(a);const o=document.createElement("div");o.classList.add("children"),i.appendChild(o),i.classList.add("folder"),i.classList.add("collapsed"),r.addEventListener("click",l=>{const c=l.target;c?.classList.contains("options-icon")||c.tagName=="TEXTAREA"&&!c.disabled||(i.classList.contains("collapsed")?this.expand(r):this.collapse(r))})}else{this.acceptableFileType(t.name)||r.classList.add("disabled");const a=document.createElement("img");a.src=this.getIcon(t.name),a.classList.add("icon"),r.appendChild(a)}r.dataset.path=e+t.name;const n=document.createElement("textarea");return n.rows=1,n.disabled=!0,n.autocomplete="off",n.autocapitalize="off",n.spellcheck=!1,n.innerText=t.name,n.style.pointerEvents="none",n.classList.add("title"),r.appendChild(n),r.addEventListener("click",()=>this.selectElement(r)),r.addEventListener("mousedown",()=>this.startDragging(r)),r.ondblclick=()=>this.confirmFile(),i}confirmFile(){const t=this.viewElement.querySelector(".info.selected")?.dataset.path;t&&this.acceptableFileType(t)&&(this.dirOptions.callback?.(t),window.removeEventListener("keydown",this.keyHandler,!0),window.removeEventListener("drop",this.dropHandler,!0),window.removeEventListener("mousemove",this.dragHandler,!0),this.closeWindow())}acceptableFileType(e){return this.dirOptions.accepted_file_types.length==0||this.dirOptions.accepted_file_types.includes(Hi(e))}getIcon(e){const t=Hi(e);return t==""&&!e.startsWith(".")?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAY0lEQVRIiWNgGAWDCXgwMDA8ZmBg+I8DN1BqwSM8hlPFEpgh2EA4AwPDbyIc8B/qUA9SLSDHEpItIBagmMNEBQPxglELRi0YtQDVgsdQmpiiAB9GNgsFeDAQV6KSXdiNgoEBAG+iU6T/ixEpAAAAAElFTkSuQmCC":tr.includes(t)?Ce.IMAGE_FILE:rl.includes(t)?Ce.AUDIO_FILE:[".sm",".ssc"].includes(t)?Ce.SM_FILE:Ce.UNKNOWN_FILE}startEditing(e){const t=e.value,i=!!e.parentElement?.parentElement?.classList.contains("folder"),r=e.parentElement?.dataset.path??"",n=Xt(r);e.value=r.split("/").at(-1)??"",window.removeEventListener("keydown",this.keyHandler,!0),e.disabled=!1,e.style.pointerEvents="",e.focus(),e.addEventListener("keypress",a=>{a.code=="Enter"&&(a.preventDefault(),a.stopImmediatePropagation(),e.blur())},!0),e.addEventListener("blur",async()=>{if(window.addEventListener("keydown",this.keyHandler,!0),e.disabled=!0,e.style.pointerEvents="none",e.value.startsWith(".")){e.value=t;return}e.value=e.value.replaceAll("/","");const a=n==""?e.value:n+"/"+e.value;a!=r&&(e.parentElement.dataset.path=a,await Fe.getStandardHandler()[i?"renameDirectory":"renameFile"](r,a),this.refreshDirectory(n),e.value.length>32&&(e.value=e.value.slice(0,32)+"..."))})}async refreshDirectory(e){const t=this.viewElement.querySelector(".dir-selector");if(!t)return;let i=t.querySelector("div[data-path='"+this.escapeSelector(e)+"']")?.nextSibling;if(e==""&&(i=t),!i)return;const r=Array.from(i.parentElement.querySelectorAll(".folder:not(.collapsed)")).map(n=>n.children[0].dataset.path);await this.createDiv(e).then(n=>i.replaceChildren(...n)),await Promise.all(r.map(n=>this.expand(t.querySelector("div[data-path='"+this.escapeSelector(n)+"']"))))}getElement(e){const t=this.viewElement.querySelector(".dir-selector");return t?t.querySelector("div[data-path='"+this.escapeSelector(e)+"']"):null}async getAcceptableFile(e){const t=await Fe.getStandardHandler().getDirectoryHandle(e);if(!t)return;const i=[{path:e,handle:t}];for(;i.length>0;){const r=i.shift(),n=r.handle;for await(const a of n.values()){const o=r.path==""?"":r.path+"/";if(a.kind=="directory")i.push({path:o+a.name,handle:a});else if(this.acceptableFileType(a.name))return o+a.name}}}async selectPath(e){if(!e)return;const t=this.viewElement.querySelector(".dir-selector");if(!t)return;const i=e.split("/");i.pop();const r=[];for(;i.length>0;){r.push(i.shift());const a=t.querySelector("div[data-path='"+this.escapeSelector(r.join("/"))+"']");if(!a)return;await this.expand(a)}const n=t.querySelector("div[data-path='"+this.escapeSelector(e)+"']");n&&this.selectElement(n)}handleKeyEvent(e){if(!this.windowElement.classList.contains("focused"))return;const t=this.viewElement.querySelector(".info.selected");if(t==null){if(e.code.startsWith("Arrow")){const i=this.viewElement.querySelector(".info");i&&this.selectElement(i)}return}if(e.code=="ArrowUp"){e.preventDefault(),e.stopImmediatePropagation();const i=t.parentElement;let r=i.previousSibling?.querySelector(".info");r&&!r.parentElement.classList.contains("collapsed")&&r.parentElement.classList.contains("folder")&&(r=r.parentElement.querySelector(".children").lastChild.querySelector(".info")),!r&&i.parentElement.classList.contains("children")&&(r=i.parentElement.parentElement.querySelector(".info")),r&&(this.selectElement(r),Jn(r,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}))}if(e.code=="ArrowDown"){e.preventDefault(),e.stopImmediatePropagation();const i=t.parentElement;let r;i.classList.contains("folder")&&!i.classList.contains("collapsed")&&(r=i.querySelector(".children").children[0].querySelector(".info")),r||(r=t.parentElement.nextSibling?.querySelector(".info")),!r&&i.parentElement.classList.contains("children")&&(r=i.parentElement.parentElement.nextSibling.querySelector(".info")),r&&(this.selectElement(r),Jn(r,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}))}if(e.code=="ArrowLeft"&&(e.preventDefault(),e.stopImmediatePropagation(),this.collapse(t)),e.code=="ArrowRight"&&(e.preventDefault(),e.stopImmediatePropagation(),this.expand(t)),e.code=="Enter"&&(e.preventDefault(),e.stopImmediatePropagation(),t.parentElement?.querySelector(".title")&&this.startEditing(t.parentElement?.querySelector(".title"))),e.code=="Delete"||e.code=="Backspace"){const i=this.viewElement.querySelector(".info.selected"),r=i?.dataset.path;if(!r)return;const n=i.parentElement.classList.contains("folder");Fe.getStandardHandler()[n?"removeDirectory":"removeFile"](r).then(()=>{const a=this.getElement(r);a&&(a.parentElement?.remove(),this.viewElement.querySelector(".delete").disabled=!0,this.viewElement.querySelector(".rename").disabled=!0)})}}startDragging(e){const t=e;t.totalMovementX=0,t.totalMovementY=0,this.draggedElement=t;const i=()=>{this.stopDragging(),window.removeEventListener("mouseup",i)};window.addEventListener("mouseup",i)}handleDragEvent(e){if(this.draggedElement){if(this.draggedElement.totalMovementX+=e.movementX,this.draggedElement.totalMovementY+=e.movementY,!this.draggedCopy)if(Math.abs(this.draggedElement.totalMovementX)+Math.abs(this.draggedElement.totalMovementY)>8){this.viewElement.addEventListener("mousemove",this.mouseHandler),this.draggedCopy=this.draggedElement.parentElement.cloneNode(!0),this.draggedCopy.style.position="fixed";const t=this.draggedElement.getBoundingClientRect();this.draggedCopy.style.top=t.top+this.draggedElement.totalMovementY+"px",this.draggedCopy.style.left=t.left+this.draggedElement.totalMovementX+"px",this.draggedCopy.style.width=t.width+"px",this.draggedCopy.style.boxShadow="3px 3px 3px #222",this.draggedCopy.querySelector(".children")&&this.draggedCopy.removeChild(this.draggedCopy.querySelector(".children")),this.viewElement.appendChild(this.draggedCopy)}else return;this.draggedCopy.style.top=parseFloat(this.draggedCopy.style.top.slice(0,-2))+e.movementY+"px",this.draggedCopy.style.left=parseFloat(this.draggedCopy.style.left.slice(0,-2))+e.movementX+"px"}}async stopDragging(){if(this.draggedCopy){this.draggedCopy.remove(),this.viewElement.removeEventListener("mousemove",this.mouseHandler);const e=this.draggedCopy.classList.contains("folder"),t=this.draggedElement.dataset.path,i=this.fileDropPath==""?ts(this.draggedElement.dataset.path):this.fileDropPath+"/"+ts(this.draggedElement.dataset.path);t!=i&&await Fe.getStandardHandler()[e?"renameDirectory":"renameFile"](t,i),await this.refreshDirectory(Xt(t)),await this.refreshDirectory(Xt(i)),this.viewElement.querySelector(".outlined")?.classList.remove("outlined"),this.fileDropPath=""}this.draggedCopy=void 0,this.draggedElement=void 0}handleDropEvent(e){e.preventDefault(),e.stopImmediatePropagation(),this.viewElement.querySelector(".outlined")?.classList.remove("outlined"),e.target.closest(".dir-selector")&&Fe.getStandardHandler().handleDropEvent(e,this.fileDropPath).then(async t=>{await this.refreshDirectory(this.fileDropPath),this.getAcceptableFile(t??this.fileDropPath).then(i=>this.selectPath(i)),this.fileDropPath=""})}handleMouseEvent(e){const t=this.viewElement.querySelector(".dir-selector");let i=Array.from(t.querySelectorAll("div.item.folder"));const r=this.viewElement.querySelector(".outlined");i=i.filter(n=>!n.parentElement.closest(".collapsed")),i.reverse(),i.push(t);for(const n of i){const a=n.getBoundingClientRect();if(e.clientX>=a.x&&e.clientX<=a.x+a.width&&e.clientY>=a.y&&e.clientY<=a.y+a.height){r!=n&&r?.classList.remove("outlined");const o=n.querySelector(".info");this.fileDropPath=o?.dataset.path??"",n.classList.contains("dir-selector")&&(this.fileDropPath=""),n.classList.add("outlined");return}}this.viewElement.querySelector(".outlined")?.classList.remove("outlined"),this.fileDropPath=""}escapeSelector(e){return e.replaceAll(/'/g,"\\'")}}class pt{items=[];itemIndex=0;limit=0;app;static instance;constructor(e){this.app=e,pt.instance||(pt.instance=this)}run(e){e.action(this.app),this.items.splice(this.itemIndex,this.items.length-this.itemIndex,e),this.itemIndex++}undo(){this.items[this.itemIndex-1]&&(this.items[this.itemIndex-1].undo(this.app),this.itemIndex--,q.emit("undo"))}redo(){this.items[this.itemIndex]&&(this.items[this.itemIndex].redo?this.items[this.itemIndex].redo(this.app):this.items[this.itemIndex].action(this.app),this.itemIndex++,q.emit("redo"))}reset(){this.itemIndex=0,this.limit=0,this.items=[]}canUndo(){return this.itemIndex>0}canRedo(){return this.itemIndex!=this.items.length}setLimit(){this.limit=this.itemIndex}isDirty(){return this.itemIndex!=this.limit}}function Og(){const s=document.createElement("div");return s.spellcheck=!1,s.contentEditable="true",s.classList.add("inlineEdit"),s.onkeydown=e=>{e.key=="Enter"&&s.blur()},s}function $a(s,e){return{title:s,element:t=>{const i=Og();return i.onblur=()=>{const r=t[e];pt.instance.run({action:()=>{t[e]=i.innerText},undo:()=>{t[e]=r}}),i.scrollLeft=0},i.innerText=t[e],i}}}const IT={name:$a("Name","chartName"),credit:$a("Artist","credit"),style:$a("Style","chartStyle"),description:$a("Description","description"),music:{title:"Music File",element:(s,e)=>{const t=document.createElement("div");t.classList.add("flex-row","flex-column-gap","flex-static","hide-buttons");const i=()=>{if(r.innerText==(s.music??e.chartManager.loadedSM.properties.MUSIC??""))return;const c=e.chartManager.chartAudio.isPlaying();if(r.innerText==""||r.innerText==e.chartManager.loadedSM.properties.MUSIC){s.music=void 0,r.innerText=e.chartManager.loadedSM.properties.MUSIC+"",e.chartManager.loadAudio(),c&&e.chartManager.chartAudio.play();return}const u=s.music;pt.instance.run({action:()=>s.music=r.innerText==e.chartManager.loadedSM.properties.MUSIC?void 0:r.innerText,undo:()=>s.music=u}),e.chartManager.loadAudio(),c&&e.chartManager.chartAudio.play()},r=Og();r.style.flex="1",r.onblur=i,r.innerText=s.music??e.chartManager.loadedSM.properties.MUSIC??"";const n=document.createElement("button");n.onclick=()=>{const c=e.chartManager.smPath.split("/").slice(0,-1).join("/");if(window.nw){const u=document.createElement("input");u.type="file",u.accept="audio/*",u.onchange=()=>{r.innerText=Fe.getRelativePath(c,u.value),i()},u.click()}else e.windowManager.openWindow(new pd(e,{title:"Select an audio file...",accepted_file_types:rl,disableClose:!0,callback:u=>{r.innerText=Fe.getRelativePath(c,u),i()}},c+"/"+(s.music??e.chartManager.loadedSM.properties.MUSIC??"")))};const a=document.createElement("img");a.classList.add("icon"),a.style.height="12px",a.src=Ce.SELECT_FILE,n.appendChild(a);const o=document.createElement("button");o.onclick=()=>{r.innerText!=(e.chartManager.loadedSM.properties.MUSIC??"")&&(r.innerText=e.chartManager.loadedSM.properties.MUSIC??"",i())};const l=document.createElement("img");return l.classList.add("icon"),l.style.height="12px",l.src=Ce.REVERT,o.appendChild(l),t.appendChild(r),t.appendChild(n),t.appendChild(o),t}}};class di{view;items=[];selectedItem;onChangeHandlers=[];static create(e,t){return new di(document.createElement("div"),e,t)}constructor(e,t,i){this.view=e,e.classList.add("dropdown"),this.items=t??[],this.selectedItem=i??this.items[0];const r=document.createElement("div");r.classList.add("dropdown-selected");const n=document.createElement("div");n.classList.add("dropdown-items"),n.style.height="",r.onclick=()=>{if(!r.classList.contains("disabled")){if(this.items.length==0){n.style.height="";return}this.createDropdown(),n.style.height==""?(n.style.width=Math.max(n.scrollWidth,r.clientWidth)+"px",n.style.height=n.scrollHeight+"px",Array.from(n.children).forEach((a,o)=>{a.style.animationDelay=o*.02+"s"})):n.style.height=""}},window.addEventListener("click",a=>{const o=a.target;(!o.closest(".dropdown")||o.closest(".dropdown")!=e)&&(n.style.height="")}),this.view.appendChild(r),this.view.appendChild(n),this.setSelected()}onChange(e){this.onChangeHandlers.push(e)}removeHandler(e){this.onChangeHandlers.includes(e)&&this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(e),1)}getItems(){return this.items}setItems(e){this.items=e,e.includes(this.selectedItem)||(this.selectedItem=this.items[0],this.setSelected())}setSelected(e){this.selectedItem=e??this.selectedItem;const t=this.view.querySelector(".dropdown-selected");t.innerText=this.selectedItem?this.selectedItem+"":""}closeDropdown(){const e=this.view.querySelector(".dropdown-items");e&&(e.style.height="")}get value(){return this.selectedItem}get disabled(){return this.view.querySelector(".dropdown-selected").classList.contains("disabled")}set disabled(e){e?this.view.querySelector(".dropdown-selected").classList.add("disabled"):this.view.querySelector(".dropdown-selected").classList.remove("disabled")}createDropdown(){const e=this.view.querySelector(".dropdown-items"),t=this.items.map((i,r)=>{const n=document.createElement("div");return n.classList.add("dropdown-item"),n.innerText=i+"",n.onclick=()=>{e.style.height="",this.selectedItem!=i&&(this.setSelected(i),this.onChangeHandlers.forEach(a=>a(i,r)))},n});e.replaceChildren(...t)}}class fd extends Pt{app;buttonOptions;message;resolve;resolved=new Promise(e=>this.resolve=e);constructor(e,t,i,r){super({title:t,width:300,height:100,disableClose:!0,win_id:"confirm",blocking:!0}),this.app=e,this.message=i,this.buttonOptions=r,this.initView()}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("confirmation");const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("label"),t.innerText=this.message,e.appendChild(t);const i=document.createElement("div");i.classList.add("menu-options"),this.buttonOptions.forEach(r=>{const n=document.createElement("button");n.innerText=r.label,n.onclick=()=>{r.callback?.(),this.resolve?.(r.label),this.closeWindow()},r.type!="default"&&n.classList.add(r.type),i.append(n)}),e.appendChild(i),this.viewElement.appendChild(e)}}class Fg extends Pt{app;gameType;chartList;chartInfo;gameTypeDropdown;smLoadHandler=()=>{this.gameTypeDropdown.setItems(He.getPriority().map(e=>{const t=this.app.chartManager.loadedSM?.charts[e.id]??[];return e.id+" ("+t.length+")"})),this.gameTypeDropdown.setSelected(this.gameType.id+" ("+(this.app.chartManager.loadedSM?.charts[this.gameType.id]??[]).length+") "),this.gameType=this.app.chartManager.loadedChart?.gameType??this.gameType,this.loadCharts()};constructor(e,t){super({title:"Chart List",width:500,height:400,win_id:"chart_list"}),this.app=e,this.gameType=t??e.chartManager.loadedChart?.gameType??He.getPriority()[0],this.initView(),q.on("smLoadedAfter",this.smLoadHandler)}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("chart-view-type-wrapper");const i=document.createElement("div");i.classList.add("chart-view-type-label"),i.innerText="Game Type:",this.gameTypeDropdown=di.create(He.getPriority().map(n=>{const a=this.app.chartManager.loadedSM?.charts[n.id]??[];return n.id+" ("+a.length+")"}),this.gameType.id+" ("+(this.app.chartManager.loadedSM?.charts[this.gameType.id]??[]).length+") "),this.gameTypeDropdown.onChange(n=>{this.gameType=He.getGameType(n.split(" ")[0])??this.gameType,this.loadCharts()}),t.appendChild(i),t.appendChild(this.gameTypeDropdown.view);const r=document.createElement("div");r.classList.add("chart-view-scroller"),e.appendChild(t),e.appendChild(r),this.chartList=document.createElement("div"),this.chartList.classList.add("chart-list"),this.chartInfo=document.createElement("div"),this.chartInfo.classList.add("chart-info"),r.appendChild(this.chartList),r.appendChild(this.chartInfo),this.viewElement.appendChild(e),this.loadCharts()}onClose(){q.off("smLoadedAfter",this.smLoadHandler)}loadCharts(){const e=this.app.chartManager.loadedSM?.charts[this.gameType.id]??[],t=[];this.gameTypeDropdown.setItems(He.getPriority().map(a=>{const o=this.app.chartManager.loadedSM?.charts[a.id]??[];return a.id+" ("+o.length+")"})),this.gameTypeDropdown.setSelected(this.gameType.id+" ("+(this.app.chartManager.loadedSM?.charts[this.gameType.id]??[]).length+") "),e.forEach(a=>{const o=document.createElement("div");o.classList.add("chart-list-item"),o.chart=a,this.app.chartManager.loadedChart==a&&o.classList.add("selected"),o.onclick=()=>{o.chart!=this.app.chartManager.loadedChart&&(this.app.chartManager.loadChart(o.chart),this.chartList.querySelectorAll(".selected").forEach(d=>d.classList.remove("selected")),o.classList.add("selected"))},o.onmouseenter=()=>{this.loadChartDetails(o.chart)},o.onmouseleave=()=>{this.loadChartDetails()};const l=document.createElement("div");l.innerText=a.meter+"",l.classList.add("title",a.difficulty);const c=document.createElement("div");c.classList.add("chart-list-info");const u=document.createElement("div");u.innerText=a.credit,u.classList.add("title","chart-credit");const h=document.createElement("div");h.innerText=a.getNotedata().length+"",h.classList.add("title","chart-step-count"),c.appendChild(u),c.appendChild(h),o.appendChild(l),o.appendChild(c),t.push(o)});const i=document.createElement("div");i.classList.add("chart-list-item");const r=document.createElement("div");r.innerText="+",r.classList.add("title");const n=document.createElement("div");n.classList.add("chart-list-info"),n.innerText="New Blank Chart",i.appendChild(r),i.appendChild(n),i.onclick=()=>{const a=new Pg(this.app.chartManager.loadedSM);a.gameType=this.gameType,this.app.chartManager.loadedSM.addChart(a),this.app.chartManager.loadChart(a),this.loadCharts()},this.chartList.replaceChildren(...t,i),this.loadChartDetails()}loadChartDetails(e){if(e=e??this.app.chartManager.loadedChart,e?.gameType.id!=this.gameType.id){this.chartInfo.replaceChildren();return}if(!e)return;const t=()=>this.app.chartManager.loadedSM.charts[e.gameType.id].sort((f,g)=>Ai.indexOf(f.difficulty)==Ai.indexOf(g.difficulty)?f.meter-g.meter:Ai.indexOf(f.difficulty)-Ai.indexOf(g.difficulty)),i=document.createElement("div");i.classList.add("chart-info-main");const r=di.create(Ai,e.difficulty);r.view.classList.add("no-border","white"),r.onChange(f=>{const g=e.difficulty;pt.instance.run({action:()=>{e.difficulty=f,t(),this.loadCharts()},undo:()=>{e.difficulty=g,t(),this.loadCharts()}})});const n=document.createElement("div");n.spellcheck=!1,n.contentEditable="true",n.classList.add("inlineEdit","chart-meter"),n.onkeydown=f=>{f.key=="Enter"&&n.blur()},n.onblur=()=>{let f=na(n.innerText);if(f===null){n.innerText=e?.meter+"";return}f=Math.round(Ve(1,f,2**31-1));const g=e.meter;pt.instance.run({action:()=>{e.meter=f,e.meterF=f,t(),this.loadCharts()},undo:()=>{e.meter=g,e.meterF=g,t(),this.loadCharts()}}),n.scrollLeft=0},n.innerText=e.meter+"";const a=document.createElement("div");a.classList.add("chart-properties"),i.appendChild(r.view),i.appendChild(n),Object.values(IT).forEach(f=>{const g=document.createElement("div");g.classList.add("label"),g.innerText=f.title;const y=f.element(e,this.app);f.title=="Artist"&&y.addEventListener("blur",()=>this.loadCharts()),a.appendChild(g),a.appendChild(y)});const o=e.getNotedataStats(),l=document.createElement("div");l.classList.add("chart-info-grid-item");const c=document.createElement("div");c.innerText="Peak NPS",c.classList.add("title","chart-info-grid-label");const u=document.createElement("div");u.innerText=e.getMaxNPS().toFixed(2)+"",u.classList.add("title","chart-info-grid-count"),l.appendChild(c),l.appendChild(u);const h=document.createElement("div");h.classList.add("chart-info-grid"),Object.entries(o).forEach(f=>{const g=document.createElement("div");g.classList.add("chart-info-grid-item");const y=document.createElement("div");y.innerText=f[0],y.classList.add("title","chart-info-grid-label");const b=document.createElement("div");b.innerText=f[1]+"",b.classList.add("title","chart-info-grid-count"),g.appendChild(y),g.appendChild(b),h.appendChild(g)});const d=document.createElement("div");d.classList.add("menu-options");const p=document.createElement("button");p.innerText="Duplicate Chart",p.onclick=()=>{const f=Object.assign(Object.create(Object.getPrototypeOf(e)),e);f.setNotedata(e.getNotedata().map(g=>e.computeNote(g))??[]),this.app.chartManager.loadedSM.addChart(f),this.app.chartManager.loadChart(f),this.loadCharts()},d.append(p);const m=document.createElement("button");m.innerText="Delete Chart",m.onclick=()=>{this.app.windowManager.openWindow(new fd(this.app,"Delete chart","Are you sure you want to delete this chart?",[{type:"default",label:"Cancel"},{type:"delete",label:"Delete",callback:()=>{this.app.chartManager.loadedSM.removeChart(e)&&(this.app.chartManager.loadChart(),this.gameType=this.app.chartManager.loadedChart?.gameType??this.gameType,this.loadCharts())}}]))},m.classList.add("delete"),d.append(m),this.chartInfo.replaceChildren(i,a,l,h,d)}}const PT="/smeditor/assets/highpass-d9d7cfcb.svg",RT="/smeditor/assets/highshelf-11ccf64e.svg",LT="/smeditor/assets/lowpass-ff013247.svg",DT="/smeditor/assets/lowshelf-2b031328.svg",OT="/smeditor/assets/peaking-eec48769.svg";var FT=4,NT=.001,UT=1e-7,GT=10,Un=11,eo=1/(Un-1),HT=typeof Float32Array=="function";function Ng(s,e){return 1-3*e+3*s}function Ug(s,e){return 3*e-6*s}function Gg(s){return 3*s}function Ho(s,e,t){return((Ng(e,t)*s+Ug(e,t))*s+Gg(e))*s}function Hg(s,e,t){return 3*Ng(e,t)*s*s+2*Ug(e,t)*s+Gg(e)}function VT(s,e,t,i,r){var n,a,o=0;do a=e+(t-e)/2,n=Ho(a,i,r)-s,n>0?t=a:e=a;while(Math.abs(n)>UT&&++o=NT?WT(l,p,e,i):m===0?p:VT(l,c,c+eo,e,i)}return function(c){return c===0?0:c===1?1:Ho(o(c),t,r)}};const Kt=la(YT),jT=Kt(0,0,1,1);function Gp(s,e){const t=e?e.split("."):[];for(;t.length&&s;){const i=t.shift(),r=new RegExp("(.+)\\[([0-9]*)\\]").exec(i);if(r!==null&&r.length==3){const n={arrName:r[1],arrIndex:r[2]};s[n.arrName]!==void 0?s=s[n.arrName][n.arrIndex]:s=void 0;continue}s=s[i]}return s}function XT(s,e,t){const i=e?e.split("."):[];for(;i.length&&s;){const r=i.shift(),n=new RegExp("(.+)\\[([0-9]*)\\]").exec(r);if(n!==null&&n.length==3){const a={arrName:n[1],arrIndex:n[2]};s[a.arrName]!==void 0&&i.length===0&&(s[a.arrName][a.arrIndex]=t);continue}s[r]===void 0&&(s[r]={}),i.length===0&&(s[r]=t),s=s[r]}return s}const Ss=class Ss{static updateObject(e,t,i){const r=Object.keys(t).sort((o,l)=>parseFloat(o)-parseFloat(l));let n="0";for(let o=r.length-2;o>=0;o--)if(parseFloat(r[o])<=i){n=r[o];break}let a="1";for(let o=1;oi){a=r[o];break}Object.keys(t[0]).forEach(o=>{let l=t[n][o],c=t[a][o];l==="inherit"&&(t[n][o]=Gp(e,o),l=t[n][o]),c==="inherit"&&(t[a][o]=Gp(e,o),c=t[a][o]);const u=l+(i-parseFloat(n))/(parseFloat(a)-parseFloat(n))*(c-l);XT(e,o,u)})}static stop(e,t=null){e!==void 0&&(t!==null&&this.animations.get(e)?.obj&&!this.animations.get(e).obj.destroyed&&this.updateObject(this.animations.get(e).obj,this.animations.get(e).animation,t),this.animations.delete(e))}static finish(e){e!==void 0&&this.stop(e,1)}static animate(e,t,i,r,n=()=>{},a){return a||=`${++this._id}`,this.animations.set(a,{obj:e,animation:t,seconds:1/(60*i),progress:0,curve:r!==void 0?r:jT,onend:n}),a}};_r(Ss,"animations",new Map),_r(Ss,"_id",0),xt.shared.add(e=>{for(const[t,i]of Ss.animations.entries())i.obj._destroyed?Ss.stop(t):(i.progress=Math.min(1,i.progress+i.seconds*e),Ss.updateObject(i.obj,i.animation,i.curve(i.progress)),i.progress>=1&&(i.onend(i.obj),Ss.stop(t,1)))});let kt=Ss;const dh=[{frequency:20,Q:.71},{frequency:75,gain:0},{frequency:100,gain:0,Q:.6},{frequency:250,gain:0,Q:.3},{frequency:1040,gain:0,Q:.41},{frequency:2500,gain:0,Q:.2},{frequency:7500,gain:0},{frequency:2e4,Q:.71}],Hp=[{freq:20,label:"20"},{freq:30,label:"30"},{freq:40,label:"40"},{freq:50,label:"50"},{freq:60,label:"60"},{freq:70,label:""},{freq:80,label:"80"},{freq:90,label:""},{freq:100,label:"100"},{freq:200,label:"200"},{freq:300,label:"300"},{freq:400,label:"400"},{freq:500,label:"500"},{freq:600,label:"600"},{freq:700,label:""},{freq:800,label:"800"},{freq:900,label:""},{freq:1e3,label:"1k"},{freq:2e3,label:"2k"},{freq:3e3,label:"3k"},{freq:4e3,label:"4k"},{freq:5e3,label:"5k"},{freq:6e3,label:"6k"},{freq:7e3,label:""},{freq:8e3,label:"8k"},{freq:9e3,label:""},{freq:1e4,label:"10k"},{freq:15e3,label:""},{freq:2e4,label:"20k"}],Hr=0,Vr=0,gr=1200,St=400,Vo=new Array(gr).fill(0).map((s,e)=>md(e)),KT=new Float32Array(Vo);function Wo(s){return Math.log(s/20)/Math.log(1102.5)*gr}function md(s){return Math.pow(1102.5,s/gr)*20}function ar(s){return-s*6+St/2}function Vp(s){return-(s-St/2)/6}class qT extends Pt{app;cachedReponse=new Array(gr).fill(0);onAudioLoad=this.onAudio.bind(this);points=[];icons;info;trackedFilter=null;constructor(e){super({title:"Audio Equalizer",width:600,height:245,win_id:"audio-eq"}),this.app=e,this.initView(),this.onAudioLoad(),q.on("audioLoaded",this.onAudioLoad)}destroy(){q.off("audioLoaded",this.onAudioLoad)}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("eq-container");const t=document.createElement("div");t.classList.add("icon-container"),this.app.chartManager.chartAudio.getFilters().forEach((A,v)=>{const _=document.createElementNS("http://www.w3.org/2000/svg","svg");fetch(new URL(Object.assign({"../../../assets/svg/highpass.svg":PT,"../../../assets/svg/highshelf.svg":RT,"../../../assets/svg/lowpass.svg":LT,"../../../assets/svg/lowshelf.svg":DT,"../../../assets/svg/peaking.svg":OT})[`../../../assets/svg/${A.type}.svg`],self.location).href).then(C=>C.text()).then(C=>{const M=new DOMParser().parseFromString(C,"image/svg+xml").getElementsByTagName("svg")[0];for(const{name:U,value:F}of M.attributes)_.getAttribute(U)||_.setAttribute(U,F);_.replaceChildren(...M.children)}),_.setAttribute("fill",ir[v]),_.classList.add("eq-icon"),_.style.backgroundColor=`${ir[v]}40`,_.setAttribute("width","36px"),_.setAttribute("height","24px"),_.onclick=()=>{this.app.chartManager.chartAudio.getFilter(v).enabled?this.app.chartManager.chartAudio.disableFilter(v):this.app.chartManager.chartAudio.enableFilter(v),this.endTrack(),this.updateIcons()},_.onmouseenter=()=>this.points[v].highlight(),_.onmouseleave=()=>this.points[v].unhighlight(),t.appendChild(_)}),this.icons=t,this.updateIcons();const i=document.createElement("canvas");i.style.width="600px",i.style.height="200px",i.onmousedown=A=>{const v=this.points.filter(_=>_.hitTest(A.offsetX*2,A.offsetY*2)).at(-1);this.endTrack(),v?.mouseDown(A)};const r=document.createElement("div");r.classList.add("eq-info-container");const n=document.createElement("div");n.classList.add("eq-info");const a=document.createElement("div");a.innerText="Type",a.classList.add("eq-info-label");const o=document.createElement("div");o.classList.add("eq-info-value"),n.replaceChildren(a,o);const l=document.createElement("div");l.classList.add("eq-info");const c=document.createElement("div");c.innerText="Frequency",c.classList.add("eq-info-label");const u=document.createElement("div");u.contentEditable="false",u.classList.add("eq-info-value","inlineEdit"),l.replaceChildren(c,u),this.setupInput(u,"frequency",20,22050," Hz");const h=document.createElement("div");h.classList.add("eq-info");const d=document.createElement("div");d.innerText="Gain",d.classList.add("eq-info-label");const p=document.createElement("div");p.contentEditable="false",p.classList.add("eq-info-value","inlineEdit"),h.replaceChildren(d,p),this.setupInput(p,"gain",-24,24," dB",1);const m=document.createElement("div");m.classList.add("eq-info");const f=document.createElement("div");f.innerText="Q",f.classList.add("eq-info-label");const g=document.createElement("div");g.contentEditable="false",g.classList.add("eq-info-value","inlineEdit"),m.replaceChildren(f,g),this.setupInput(g,"Q",1e-4,1e3,"",4);const y=document.createElement("div");y.classList.add("eq-reset","disabled"),y.innerText="Reset",y.onclick=()=>{if(this.trackedFilter==null)for(let A=0;A{o=this.app.chartManager.chartAudio.getFilter(this.trackedFilter)[t].value,e.innerText=ne(o,a)+"",this.selectText(e)},e.onkeydown=l=>{if(l.key=="Enter"){e.blur();return}if(l.key=="Tab"){const u=[...e.parentElement.parentElement.children],h=u.indexOf(e.parentElement);for(let d=1;d{const c=na(e.innerText);c!==null&&(this.app.chartManager.chartAudio.updateFilter(this.trackedFilter,{[t]:Ve(c,i,r)}),this.points[this.trackedFilter].refreshPoint(),this.getResponse())})},e.onblur=()=>{na(e.innerText)===null&&(this.app.chartManager.chartAudio.updateFilter(this.trackedFilter,{[t]:Ve(o,i,r)}),this.points[this.trackedFilter].refreshPoint(),this.getResponse()),e.innerText=ne(this.app.chartManager.chartAudio.getFilter(this.trackedFilter)[t].value,a)+n}}onAudio(){this.points=this.app.chartManager.chartAudio.getFilters().map((e,t)=>new QT(this,t)),this.getResponse(),this.updateIcons(),this.endTrack()}getResponse(){this.cachedReponse=this.app.chartManager.chartAudio.getFrequencyResponse(Vo)}drawEQ(e){const t=e.getContext("2d");t.canvas.width=1200,t.canvas.height=400;const i=()=>{this.app.chartManager.chartAudio&&(t.fillStyle="rgb(11, 14, 26)",t.fillRect(0,0,e.width,e.height),t.fillStyle="rgb(0, 50, 150)",this.drawFrequencies(t,this.app.chartManager.chartAudio.getFrequencyData()),this.app.chartManager.chartAudio.hasFilters()&&(t.fillStyle="rgba(200, 200, 200, 0.2)",this.drawFrequencies(t,this.app.chartManager.chartAudio.getFilteredFrequencyData())),t.fillStyle="rgba(200, 200, 200, 0.5)",this.drawResponse(t),t.fillStyle="rgba(0, 100, 150, 0.5)",t.font="22px Assistant",this.drawGrid(t),this.points.forEach(r=>r.draw(t)),e.closest("#windows")&&requestAnimationFrame(i))};return i}drawFrequencies(e,t){for(let i=0;i{this.app.chartManager.chartAudio.getFilter(t).enabled?e.classList.remove("disabled"):e.classList.add("disabled")}),this.getResponse()}trackFilter(e){this.trackedFilter=e;const t=this.app.chartManager.chartAudio.getFilter(e),[i,r,n,a]=[...this.info.children].map(o=>o.children[1]);i.innerText=t.type,r.innerText=Math.round(t.frequency.value)+" Hz",n.innerText=t.type.endsWith("pass")?"-":ne(t.gain.value,1)+" dB",a.innerText=t.type.endsWith("shelf")?"-":ne(t.Q.value,2)+"",i.style.color=ir[e],r.style.color=ir[e],n.style.color=ir[e],a.style.color=ir[e],r.contentEditable="true",n.contentEditable=`${!t.type.endsWith("pass")}`,a.contentEditable=`${!t.type.endsWith("shelf")}`}endTrack(){setTimeout(()=>{this.trackedFilter=null,this.points.forEach(n=>n.unhighlight());const[e,t,i,r]=[...this.info.children].map(n=>n.children[1]);e.innerText="",t.innerText="",i.innerText="",r.innerText="",t.contentEditable="false",i.contentEditable="false",r.contentEditable="false"})}}const to=16,ir=["#a3001b","#a34f00","#d6d606","#19c402","#02c4ba","#022fc4","#5602c4","#c402b4"];class QT{filterIndex;window;dragging=!1;x=0;y=0;type;response=new Float32Array(Vo.length);_empty=new Float32Array(Vo.length);highlighted=!1;pointSize=.4;constructor(e,t){this.filterIndex=t,this.window=e,this.type=this.window.app.chartManager.chartAudio.getFilter(t).type,this.x=Wo(this.window.app.chartManager.chartAudio.getFilter(t).frequency.value??10),this.getY()}hitTest(e,t){return(e-this.x)*(e-this.x)+(t-this.y)*(t-this.y)<=to*to}canChangeGain(){return this.type=="lowshelf"||this.type=="highshelf"||this.type=="peaking"}canChangeQ(){return!this.type.endsWith("shelf")}getY(){this.type.endsWith("shelf")?this.y=ar(this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).gain.value/2):this.canChangeGain()?this.y=ar(this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).gain.value??0):this.y=St/2}getGain(){if(this.canChangeGain())return this.type.endsWith("shelf")?Vp(this.y)*2:Vp(this.y)}mouseDown(e){this.calcResponse(),this.dragging=!0,this.highlighted=!0,this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).enabled||(this.window.app.chartManager.chartAudio.enableFilter(this.filterIndex),this.window.updateIcons());const t=this.x,i=this.y,r=e.clientX,n=e.clientY,a=l=>{this.x=(l.clientX-r)*2+t,this.canChangeGain()?this.y=(l.clientY-n)*2+i:this.y=St/2,this.x=Ve(this.x,0,gr),this.y=Ve(this.y,this.type.endsWith("shelf")?St/4:ar(24),this.type.endsWith("shelf")?3*St/4:ar(-24)),this.window.app.chartManager.chartAudio.updateFilter(this.filterIndex,{frequency:md(this.x),gain:this.getGain()}),this.window.getResponse(),this.window.trackFilter(this.filterIndex),this.calcResponse()};this.window.trackFilter(this.filterIndex);const o=()=>{kt.animate(this,{0:{pointSize:"inherit"},1:{pointSize:.3}},.3,Kt(.11,.71,.41,.86),()=>{},`eq-point${this.filterIndex}`),this.dragging=!1,window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",o)};kt.animate(this,{0:{pointSize:"inherit"},1:{pointSize:.9}},.3,Kt(.11,.71,.41,.86),()=>{},`eq-point${this.filterIndex}`),window.addEventListener("mousemove",a),window.addEventListener("mouseup",o)}calcResponse(){this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).getFrequencyResponse(KT,this.response,this._empty)}draw(e){const t=this.highlighted||this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).enabled?ir[this.filterIndex]:"#888888";if(e.fillStyle=t+"60",this.dragging)for(let i=0;i{navigator.clipboard.writeText(r.innerText)}),this.outputDiv=r;const n=document.createElement("div");n.classList.add("export-section-label"),n.innerText="Include",i.appendChild(n),Object.keys(this.exportOptions.include).forEach(o=>{const l=document.createElement("input");l.type="checkbox",l.id="en-i-"+o,l.checked=this.exportOptions.include[o],l.onchange=()=>{this.exportOptions.include[o]=l.checked,this.export()};const c=document.createElement("label");c.classList.add("export-label"),c.htmlFor=l.id,c.innerText=o;const u=document.createElement("div");u.replaceChildren(l,c),u.classList.add("export-option"),i.appendChild(u)});const a=document.createElement("div");a.classList.add("export-section-label"),a.innerText="Options",i.appendChild(a),Object.keys(this.exportOptions.options).forEach(o=>{const l=document.createElement("input");l.id="en-o-"+o,l.type="checkbox",l.checked=this.exportOptions.options[o],l.onchange=()=>{this.exportOptions.options[o]=l.checked,this.export()};const c=document.createElement("label");c.classList.add("export-label"),c.htmlFor=l.id,c.innerText=uh[o].label;const u=document.createElement("div");u.replaceChildren(l,c),u.classList.add("export-option"),i.appendChild(u),uh[o].tooltip!==void 0&&Wt(u,{content:uh[o].tooltip})}),t.replaceChildren(i,r),e.appendChild(t),this.viewElement.appendChild(e)}export(){let e=`{ +\0`,Z+=n(O,2),Z+=C.magic,Z+=n(A,2),Z+=n(v,2),Z+=n(H.crc32,4),Z+=n(H.compressedSize,4),Z+=n(H.uncompressedSize,4),Z+=n(P.length,2),Z+=n(L.length,2),{fileRecord:h.LOCAL_FILE_HEADER+Z+P+L,dirRecord:h.CENTRAL_FILE_HEADER+n(ee,2)+Z+n(F.length,2)+"\0\0\0\0"+n(N,4)+n(g,4)+P+L+F}}var o=t("../utils"),l=t("../stream/GenericWorker"),c=t("../utf8"),u=t("../crc32"),h=t("../signature");function d(p,m,f,g){l.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=m,this.zipPlatform=f,this.encodeFileName=g,this.streamFiles=p,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}o.inherits(d,l),d.prototype.push=function(p){var m=p.meta.percent||0,f=this.entriesCount,g=this._sources.length;this.accumulate?this.contentBuffer.push(p):(this.bytesWritten+=p.data.length,l.prototype.push.call(this,{data:p.data,meta:{currentFile:this.currentFile,percent:f?(m+100*(f-g-1))/f:100}}))},d.prototype.openedSource=function(p){this.currentSourceOffset=this.bytesWritten,this.currentFile=p.file.name;var m=this.streamFiles&&!p.file.dir;if(m){var f=a(p,m,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:f.fileRecord,meta:{percent:0}})}else this.accumulate=!0},d.prototype.closedSource=function(p){this.accumulate=!1;var m=this.streamFiles&&!p.file.dir,f=a(p,m,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(f.dirRecord),m)this.push({data:function(g){return h.DATA_DESCRIPTOR+n(g.crc32,4)+n(g.compressedSize,4)+n(g.uncompressedSize,4)}(p),meta:{percent:100}});else for(this.push({data:f.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},d.prototype.flush=function(){for(var p=this.bytesWritten,m=0;m=this.index;l--)c=(c<<8)+this.byteAt(l);return this.index+=o,c},readString:function(o){return n.transformTo("string",this.readData(o))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var o=this.readInt(4);return new Date(Date.UTC(1980+(o>>25&127),(o>>21&15)-1,o>>16&31,o>>11&31,o>>5&63,(31&o)<<1))}},i.exports=a},{"../utils":32}],19:[function(t,i,r){var n=t("./Uint8ArrayReader");function a(o){n.call(this,o)}t("../utils").inherits(a,n),a.prototype.readData=function(o){this.checkOffset(o);var l=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,l},i.exports=a},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,i,r){var n=t("./DataReader");function a(o){n.call(this,o)}t("../utils").inherits(a,n),a.prototype.byteAt=function(o){return this.data.charCodeAt(this.zero+o)},a.prototype.lastIndexOfSignature=function(o){return this.data.lastIndexOf(o)-this.zero},a.prototype.readAndCheckSignature=function(o){return o===this.readData(4)},a.prototype.readData=function(o){this.checkOffset(o);var l=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,l},i.exports=a},{"../utils":32,"./DataReader":18}],21:[function(t,i,r){var n=t("./ArrayReader");function a(o){n.call(this,o)}t("../utils").inherits(a,n),a.prototype.readData=function(o){if(this.checkOffset(o),o===0)return new Uint8Array(0);var l=this.data.subarray(this.zero+this.index,this.zero+this.index+o);return this.index+=o,l},i.exports=a},{"../utils":32,"./ArrayReader":17}],22:[function(t,i,r){var n=t("../utils"),a=t("../support"),o=t("./ArrayReader"),l=t("./StringReader"),c=t("./NodeBufferReader"),u=t("./Uint8ArrayReader");i.exports=function(h){var d=n.getTypeOf(h);return n.checkSupport(d),d!=="string"||a.uint8array?d==="nodebuffer"?new c(h):a.uint8array?new u(n.transformTo("uint8array",h)):new o(n.transformTo("array",h)):new l(h)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,i,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,i,r){var n=t("./GenericWorker"),a=t("../utils");function o(l){n.call(this,"ConvertWorker to "+l),this.destType=l}a.inherits(o,n),o.prototype.processChunk=function(l){this.push({data:a.transformTo(this.destType,l.data),meta:l.meta})},i.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(t,i,r){var n=t("./GenericWorker"),a=t("../crc32");function o(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(o,n),o.prototype.processChunk=function(l){this.streamInfo.crc32=a(l.data,this.streamInfo.crc32||0),this.push(l)},i.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,i,r){var n=t("../utils"),a=t("./GenericWorker");function o(l){a.call(this,"DataLengthProbe for "+l),this.propName=l,this.withStreamInfo(l,0)}n.inherits(o,a),o.prototype.processChunk=function(l){if(l){var c=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=c+l.data.length}a.prototype.processChunk.call(this,l)},i.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(t,i,r){var n=t("../utils"),a=t("./GenericWorker");function o(l){a.call(this,"DataWorker");var c=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,l.then(function(u){c.dataIsReady=!0,c.data=u,c.max=u&&u.length||0,c.type=n.getTypeOf(u),c.isPaused||c._tickAndRepeat()},function(u){c.error(u)})}n.inherits(o,a),o.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var l=null,c=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":l=this.data.substring(this.index,c);break;case"uint8array":l=this.data.subarray(this.index,c);break;case"array":case"nodebuffer":l=this.data.slice(this.index,c)}return this.index=c,this.push({data:l,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(t,i,r){function n(a){this.name=a||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(a){this.emit("data",a)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(a){this.emit("error",a)}return!0},error:function(a){return!this.isFinished&&(this.isPaused?this.generatedError=a:(this.isFinished=!0,this.emit("error",a),this.previous&&this.previous.error(a),this.cleanUp()),!0)},on:function(a,o){return this._listeners[a].push(o),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(a,o){if(this._listeners[a])for(var l=0;l "+a:a}},i.exports=n},{}],29:[function(t,i,r){var n=t("../utils"),a=t("./ConvertWorker"),o=t("./GenericWorker"),l=t("../base64"),c=t("../support"),u=t("../external"),h=null;if(c.nodestream)try{h=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function d(m,f){return new u.Promise(function(g,y){var b=[],A=m._internalType,v=m._outputType,_=m._mimeType;m.on("data",function(C,B){b.push(C),f&&f(B)}).on("error",function(C){b=[],y(C)}).on("end",function(){try{var C=function(B,P,M){switch(B){case"blob":return n.newBlob(n.transformTo("arraybuffer",P),M);case"base64":return l.encode(P);default:return n.transformTo(B,P)}}(v,function(B,P){var M,U=0,F=null,T=0;for(M=0;M"u")r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=new Blob([n],{type:"application/zip"}).size===0}catch{try{var a=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);a.append(n),r.blob=a.getBlob("application/zip").size===0}catch{r.blob=!1}}}try{r.nodestream=!!t("readable-stream").Readable}catch{r.nodestream=!1}},{"readable-stream":16}],31:[function(t,i,r){for(var n=t("./utils"),a=t("./support"),o=t("./nodejsUtils"),l=t("./stream/GenericWorker"),c=new Array(256),u=0;u<256;u++)c[u]=252<=u?6:248<=u?5:240<=u?4:224<=u?3:192<=u?2:1;c[254]=c[254]=1;function h(){l.call(this,"utf-8 decode"),this.leftOver=null}function d(){l.call(this,"utf-8 encode")}r.utf8encode=function(p){return a.nodebuffer?o.newBufferFrom(p,"utf-8"):function(m){var f,g,y,b,A,v=m.length,_=0;for(b=0;b>>6:(g<65536?f[A++]=224|g>>>12:(f[A++]=240|g>>>18,f[A++]=128|g>>>12&63),f[A++]=128|g>>>6&63),f[A++]=128|63&g);return f}(p)},r.utf8decode=function(p){return a.nodebuffer?n.transformTo("nodebuffer",p).toString("utf-8"):function(m){var f,g,y,b,A=m.length,v=new Array(2*A);for(f=g=0;f>10&1023,v[g++]=56320|1023&y)}return v.length!==g&&(v.subarray?v=v.subarray(0,g):v.length=g),n.applyFromCharCode(v)}(p=n.transformTo(a.uint8array?"uint8array":"array",p))},n.inherits(h,l),h.prototype.processChunk=function(p){var m=n.transformTo(a.uint8array?"uint8array":"array",p.data);if(this.leftOver&&this.leftOver.length){if(a.uint8array){var f=m;(m=new Uint8Array(f.length+this.leftOver.length)).set(this.leftOver,0),m.set(f,this.leftOver.length)}else m=this.leftOver.concat(m);this.leftOver=null}var g=function(b,A){var v;for((A=A||b.length)>b.length&&(A=b.length),v=A-1;0<=v&&(192&b[v])==128;)v--;return v<0||v===0?A:v+c[b[v]]>A?v:A}(m),y=m;g!==m.length&&(a.uint8array?(y=m.subarray(0,g),this.leftOver=m.subarray(g,m.length)):(y=m.slice(0,g),this.leftOver=m.slice(g,m.length))),this.push({data:r.utf8decode(y),meta:p.meta})},h.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=h,n.inherits(d,l),d.prototype.processChunk=function(p){this.push({data:r.utf8encode(p.data),meta:p.meta})},r.Utf8EncodeWorker=d},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,i,r){var n=t("./support"),a=t("./base64"),o=t("./nodejsUtils"),l=t("./external");function c(f){return f}function u(f,g){for(var y=0;y>8;this.dir=!!(16&this.externalFileAttributes),p==0&&(this.dosPermissions=63&this.externalFileAttributes),p==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var p=n(this.extraFields[1].value);this.uncompressedSize===a.MAX_VALUE_32BITS&&(this.uncompressedSize=p.readInt(8)),this.compressedSize===a.MAX_VALUE_32BITS&&(this.compressedSize=p.readInt(8)),this.localHeaderOffset===a.MAX_VALUE_32BITS&&(this.localHeaderOffset=p.readInt(8)),this.diskNumberStart===a.MAX_VALUE_32BITS&&(this.diskNumberStart=p.readInt(4))}},readExtraFields:function(p){var m,f,g,y=p.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});p.index+4>>6:(p<65536?d[g++]=224|p>>>12:(d[g++]=240|p>>>18,d[g++]=128|p>>>12&63),d[g++]=128|p>>>6&63),d[g++]=128|63&p);return d},r.buf2binstring=function(h){return u(h,h.length)},r.binstring2buf=function(h){for(var d=new n.Buf8(h.length),p=0,m=d.length;p>10&1023,b[m++]=56320|1023&f)}return u(b,m)},r.utf8border=function(h,d){var p;for((d=d||h.length)>h.length&&(d=h.length),p=d-1;0<=p&&(192&h[p])==128;)p--;return p<0||p===0?d:p+l[h[p]]>d?p:d}},{"./common":41}],43:[function(t,i,r){i.exports=function(n,a,o,l){for(var c=65535&n|0,u=n>>>16&65535|0,h=0;o!==0;){for(o-=h=2e3>>1:a>>>1;o[l]=a}return o}();i.exports=function(a,o,l,c){var u=n,h=c+l;a^=-1;for(var d=c;d>>8^u[255&(a^o[d])];return-1^a}},{}],46:[function(t,i,r){var n,a=t("../utils/common"),o=t("./trees"),l=t("./adler32"),c=t("./crc32"),u=t("./messages"),h=0,d=4,p=0,m=-2,f=-1,g=4,y=2,b=8,A=9,v=286,_=30,C=19,B=2*v+1,P=15,M=3,U=258,F=U+M+1,T=42,S=113,x=1,L=2,Y=3,R=4;function D(E,j){return E.msg=u[j],j}function W(E){return(E<<1)-(4E.avail_out&&(z=E.avail_out),z!==0&&(a.arraySet(E.output,j.pending_buf,j.pending_out,z,E.next_out),E.next_out+=z,j.pending_out+=z,E.total_out+=z,E.avail_out-=z,j.pending-=z,j.pending===0&&(j.pending_out=0))}function N(E,j){o._tr_flush_block(E,0<=E.block_start?E.block_start:-1,E.strstart-E.block_start,j),E.block_start=E.strstart,O(E.strm)}function ee(E,j){E.pending_buf[E.pending++]=j}function Z(E,j){E.pending_buf[E.pending++]=j>>>8&255,E.pending_buf[E.pending++]=255&j}function Q(E,j){var z,I,k=E.max_chain_length,G=E.strstart,J=E.prev_length,$=E.nice_match,V=E.strstart>E.w_size-F?E.strstart-(E.w_size-F):0,ie=E.window,le=E.w_mask,re=E.prev,be=E.strstart+U,je=ie[G+J-1],De=ie[G+J];E.prev_length>=E.good_match&&(k>>=2),$>E.lookahead&&($=E.lookahead);do if(ie[(z=j)+J]===De&&ie[z+J-1]===je&&ie[z]===ie[G]&&ie[++z]===ie[G+1]){G+=2,z++;do;while(ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&ie[++G]===ie[++z]&&GV&&--k!=0);return J<=E.lookahead?J:E.lookahead}function ge(E){var j,z,I,k,G,J,$,V,ie,le,re=E.w_size;do{if(k=E.window_size-E.lookahead-E.strstart,E.strstart>=re+(re-F)){for(a.arraySet(E.window,E.window,re,re,0),E.match_start-=re,E.strstart-=re,E.block_start-=re,j=z=E.hash_size;I=E.head[--j],E.head[j]=re<=I?I-re:0,--z;);for(j=z=re;I=E.prev[--j],E.prev[j]=re<=I?I-re:0,--z;);k+=re}if(E.strm.avail_in===0)break;if(J=E.strm,$=E.window,V=E.strstart+E.lookahead,ie=k,le=void 0,le=J.avail_in,ie=M)for(G=E.strstart-E.insert,E.ins_h=E.window[G],E.ins_h=(E.ins_h<=M&&(E.ins_h=(E.ins_h<=M)if(I=o._tr_tally(E,E.strstart-E.match_start,E.match_length-M),E.lookahead-=E.match_length,E.match_length<=E.max_lazy_match&&E.lookahead>=M){for(E.match_length--;E.strstart++,E.ins_h=(E.ins_h<=M&&(E.ins_h=(E.ins_h<=M&&E.match_length<=E.prev_length){for(k=E.strstart+E.lookahead-M,I=o._tr_tally(E,E.strstart-1-E.prev_match,E.prev_length-M),E.lookahead-=E.prev_length-1,E.prev_length-=2;++E.strstart<=k&&(E.ins_h=(E.ins_h<E.pending_buf_size-5&&(z=E.pending_buf_size-5);;){if(E.lookahead<=1){if(ge(E),E.lookahead===0&&j===h)return x;if(E.lookahead===0)break}E.strstart+=E.lookahead,E.lookahead=0;var I=E.block_start+z;if((E.strstart===0||E.strstart>=I)&&(E.lookahead=E.strstart-I,E.strstart=I,N(E,!1),E.strm.avail_out===0)||E.strstart-E.block_start>=E.w_size-F&&(N(E,!1),E.strm.avail_out===0))return x}return E.insert=0,j===d?(N(E,!0),E.strm.avail_out===0?Y:R):(E.strstart>E.block_start&&(N(E,!1),E.strm.avail_out),x)}),new pe(4,4,8,4,Te),new pe(4,5,16,8,Te),new pe(4,6,32,32,Te),new pe(4,4,16,16,he),new pe(8,16,32,32,he),new pe(8,16,128,128,he),new pe(8,32,128,256,he),new pe(32,128,258,1024,he),new pe(32,258,258,4096,he)],r.deflateInit=function(E,j){return ve(E,j,b,15,8,0)},r.deflateInit2=ve,r.deflateReset=ue,r.deflateResetKeep=oe,r.deflateSetHeader=function(E,j){return E&&E.state?E.state.wrap!==2?m:(E.state.gzhead=j,p):m},r.deflate=function(E,j){var z,I,k,G;if(!E||!E.state||5>8&255),ee(I,I.gzhead.time>>16&255),ee(I,I.gzhead.time>>24&255),ee(I,I.level===9?2:2<=I.strategy||I.level<2?4:0),ee(I,255&I.gzhead.os),I.gzhead.extra&&I.gzhead.extra.length&&(ee(I,255&I.gzhead.extra.length),ee(I,I.gzhead.extra.length>>8&255)),I.gzhead.hcrc&&(E.adler=c(E.adler,I.pending_buf,I.pending,0)),I.gzindex=0,I.status=69):(ee(I,0),ee(I,0),ee(I,0),ee(I,0),ee(I,0),ee(I,I.level===9?2:2<=I.strategy||I.level<2?4:0),ee(I,3),I.status=S);else{var J=b+(I.w_bits-8<<4)<<8;J|=(2<=I.strategy||I.level<2?0:I.level<6?1:I.level===6?2:3)<<6,I.strstart!==0&&(J|=32),J+=31-J%31,I.status=S,Z(I,J),I.strstart!==0&&(Z(I,E.adler>>>16),Z(I,65535&E.adler)),E.adler=1}if(I.status===69)if(I.gzhead.extra){for(k=I.pending;I.gzindex<(65535&I.gzhead.extra.length)&&(I.pending!==I.pending_buf_size||(I.gzhead.hcrc&&I.pending>k&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),O(E),k=I.pending,I.pending!==I.pending_buf_size));)ee(I,255&I.gzhead.extra[I.gzindex]),I.gzindex++;I.gzhead.hcrc&&I.pending>k&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),I.gzindex===I.gzhead.extra.length&&(I.gzindex=0,I.status=73)}else I.status=73;if(I.status===73)if(I.gzhead.name){k=I.pending;do{if(I.pending===I.pending_buf_size&&(I.gzhead.hcrc&&I.pending>k&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),O(E),k=I.pending,I.pending===I.pending_buf_size)){G=1;break}G=I.gzindexk&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),G===0&&(I.gzindex=0,I.status=91)}else I.status=91;if(I.status===91)if(I.gzhead.comment){k=I.pending;do{if(I.pending===I.pending_buf_size&&(I.gzhead.hcrc&&I.pending>k&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),O(E),k=I.pending,I.pending===I.pending_buf_size)){G=1;break}G=I.gzindexk&&(E.adler=c(E.adler,I.pending_buf,I.pending-k,k)),G===0&&(I.status=103)}else I.status=103;if(I.status===103&&(I.gzhead.hcrc?(I.pending+2>I.pending_buf_size&&O(E),I.pending+2<=I.pending_buf_size&&(ee(I,255&E.adler),ee(I,E.adler>>8&255),E.adler=0,I.status=S)):I.status=S),I.pending!==0){if(O(E),E.avail_out===0)return I.last_flush=-1,p}else if(E.avail_in===0&&W(j)<=W(z)&&j!==d)return D(E,-5);if(I.status===666&&E.avail_in!==0)return D(E,-5);if(E.avail_in!==0||I.lookahead!==0||j!==h&&I.status!==666){var $=I.strategy===2?function(V,ie){for(var le;;){if(V.lookahead===0&&(ge(V),V.lookahead===0)){if(ie===h)return x;break}if(V.match_length=0,le=o._tr_tally(V,0,V.window[V.strstart]),V.lookahead--,V.strstart++,le&&(N(V,!1),V.strm.avail_out===0))return x}return V.insert=0,ie===d?(N(V,!0),V.strm.avail_out===0?Y:R):V.last_lit&&(N(V,!1),V.strm.avail_out===0)?x:L}(I,j):I.strategy===3?function(V,ie){for(var le,re,be,je,De=V.window;;){if(V.lookahead<=U){if(ge(V),V.lookahead<=U&&ie===h)return x;if(V.lookahead===0)break}if(V.match_length=0,V.lookahead>=M&&0V.lookahead&&(V.match_length=V.lookahead)}if(V.match_length>=M?(le=o._tr_tally(V,1,V.match_length-M),V.lookahead-=V.match_length,V.strstart+=V.match_length,V.match_length=0):(le=o._tr_tally(V,0,V.window[V.strstart]),V.lookahead--,V.strstart++),le&&(N(V,!1),V.strm.avail_out===0))return x}return V.insert=0,ie===d?(N(V,!0),V.strm.avail_out===0?Y:R):V.last_lit&&(N(V,!1),V.strm.avail_out===0)?x:L}(I,j):n[I.level].func(I,j);if($!==Y&&$!==R||(I.status=666),$===x||$===Y)return E.avail_out===0&&(I.last_flush=-1),p;if($===L&&(j===1?o._tr_align(I):j!==5&&(o._tr_stored_block(I,0,0,!1),j===3&&(H(I.head),I.lookahead===0&&(I.strstart=0,I.block_start=0,I.insert=0))),O(E),E.avail_out===0))return I.last_flush=-1,p}return j!==d?p:I.wrap<=0?1:(I.wrap===2?(ee(I,255&E.adler),ee(I,E.adler>>8&255),ee(I,E.adler>>16&255),ee(I,E.adler>>24&255),ee(I,255&E.total_in),ee(I,E.total_in>>8&255),ee(I,E.total_in>>16&255),ee(I,E.total_in>>24&255)):(Z(I,E.adler>>>16),Z(I,65535&E.adler)),O(E),0=z.w_size&&(G===0&&(H(z.head),z.strstart=0,z.block_start=0,z.insert=0),ie=new a.Buf8(z.w_size),a.arraySet(ie,j,le-z.w_size,z.w_size,0),j=ie,le=z.w_size),J=E.avail_in,$=E.next_in,V=E.input,E.avail_in=le,E.next_in=0,E.input=j,ge(z);z.lookahead>=M;){for(I=z.strstart,k=z.lookahead-(M-1);z.ins_h=(z.ins_h<>>=M=P>>>24,A-=M,(M=P>>>16&255)===0)L[u++]=65535&P;else{if(!(16&M)){if(!(64&M)){P=v[(65535&P)+(b&(1<>>=M,A-=M),A<15&&(b+=x[l++]<>>=M=P>>>24,A-=M,!(16&(M=P>>>16&255))){if(!(64&M)){P=_[(65535&P)+(b&(1<>>=M,A-=M,(M=u-h)>3,b&=(1<<(A-=U<<3))-1,n.next_in=l,n.next_out=u,n.avail_in=l>>24&255)+(T>>>8&65280)+((65280&T)<<8)+((255&T)<<24)}function b(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function A(T){var S;return T&&T.state?(S=T.state,T.total_in=T.total_out=S.total=0,T.msg="",S.wrap&&(T.adler=1&S.wrap),S.mode=m,S.last=0,S.havedict=0,S.dmax=32768,S.head=null,S.hold=0,S.bits=0,S.lencode=S.lendyn=new n.Buf32(f),S.distcode=S.distdyn=new n.Buf32(g),S.sane=1,S.back=-1,d):p}function v(T){var S;return T&&T.state?((S=T.state).wsize=0,S.whave=0,S.wnext=0,A(T)):p}function _(T,S){var x,L;return T&&T.state?(L=T.state,S<0?(x=0,S=-S):(x=1+(S>>4),S<48&&(S&=15)),S&&(S<8||15=R.wsize?(n.arraySet(R.window,S,x-R.wsize,R.wsize,0),R.wnext=0,R.whave=R.wsize):(L<(Y=R.wsize-R.wnext)&&(Y=L),n.arraySet(R.window,S,x-L,Y,R.wnext),(L-=Y)?(n.arraySet(R.window,S,x-L,L,0),R.wnext=L,R.whave=R.wsize):(R.wnext+=Y,R.wnext===R.wsize&&(R.wnext=0),R.whave>>8&255,x.check=o(x.check,G,2,0),N=O=0,x.mode=2;break}if(x.flags=0,x.head&&(x.head.done=!1),!(1&x.wrap)||(((255&O)<<8)+(O>>8))%31){T.msg="incorrect header check",x.mode=30;break}if((15&O)!=8){T.msg="unknown compression method",x.mode=30;break}if(N-=4,E=8+(15&(O>>>=4)),x.wbits===0)x.wbits=E;else if(E>x.wbits){T.msg="invalid window size",x.mode=30;break}x.dmax=1<>8&1),512&x.flags&&(G[0]=255&O,G[1]=O>>>8&255,x.check=o(x.check,G,2,0)),N=O=0,x.mode=3;case 3:for(;N<32;){if(W===0)break e;W--,O+=L[R++]<>>8&255,G[2]=O>>>16&255,G[3]=O>>>24&255,x.check=o(x.check,G,4,0)),N=O=0,x.mode=4;case 4:for(;N<16;){if(W===0)break e;W--,O+=L[R++]<>8),512&x.flags&&(G[0]=255&O,G[1]=O>>>8&255,x.check=o(x.check,G,2,0)),N=O=0,x.mode=5;case 5:if(1024&x.flags){for(;N<16;){if(W===0)break e;W--,O+=L[R++]<>>8&255,x.check=o(x.check,G,2,0)),N=O=0}else x.head&&(x.head.extra=null);x.mode=6;case 6:if(1024&x.flags&&(W<(Q=x.length)&&(Q=W),Q&&(x.head&&(E=x.head.extra_len-x.length,x.head.extra||(x.head.extra=new Array(x.head.extra_len)),n.arraySet(x.head.extra,L,R,Q,E)),512&x.flags&&(x.check=o(x.check,L,Q,R)),W-=Q,R+=Q,x.length-=Q),x.length))break e;x.length=0,x.mode=7;case 7:if(2048&x.flags){if(W===0)break e;for(Q=0;E=L[R+Q++],x.head&&E&&x.length<65536&&(x.head.name+=String.fromCharCode(E)),E&&Q>9&1,x.head.done=!0),T.adler=x.check=0,x.mode=12;break;case 10:for(;N<32;){if(W===0)break e;W--,O+=L[R++]<>>=7&N,N-=7&N,x.mode=27;break}for(;N<3;){if(W===0)break e;W--,O+=L[R++]<>>=1)){case 0:x.mode=14;break;case 1:if(U(x),x.mode=20,S!==6)break;O>>>=2,N-=2;break e;case 2:x.mode=17;break;case 3:T.msg="invalid block type",x.mode=30}O>>>=2,N-=2;break;case 14:for(O>>>=7&N,N-=7&N;N<32;){if(W===0)break e;W--,O+=L[R++]<>>16^65535)){T.msg="invalid stored block lengths",x.mode=30;break}if(x.length=65535&O,N=O=0,x.mode=15,S===6)break e;case 15:x.mode=16;case 16:if(Q=x.length){if(W>>=5,N-=5,x.ndist=1+(31&O),O>>>=5,N-=5,x.ncode=4+(15&O),O>>>=4,N-=4,286>>=3,N-=3}for(;x.have<19;)x.lens[J[x.have++]]=0;if(x.lencode=x.lendyn,x.lenbits=7,z={bits:x.lenbits},j=c(0,x.lens,0,19,x.lencode,0,x.work,z),x.lenbits=z.bits,j){T.msg="invalid code lengths set",x.mode=30;break}x.have=0,x.mode=19;case 19:for(;x.have>>16&255,Ae=65535&k,!((he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>>=he,N-=he,x.lens[x.have++]=Ae;else{if(Ae===16){for(I=he+2;N>>=he,N-=he,x.have===0){T.msg="invalid bit length repeat",x.mode=30;break}E=x.lens[x.have-1],Q=3+(3&O),O>>>=2,N-=2}else if(Ae===17){for(I=he+3;N>>=he)),O>>>=3,N-=3}else{for(I=he+7;N>>=he)),O>>>=7,N-=7}if(x.have+Q>x.nlen+x.ndist){T.msg="invalid bit length repeat",x.mode=30;break}for(;Q--;)x.lens[x.have++]=E}}if(x.mode===30)break;if(x.lens[256]===0){T.msg="invalid code -- missing end-of-block",x.mode=30;break}if(x.lenbits=9,z={bits:x.lenbits},j=c(u,x.lens,0,x.nlen,x.lencode,0,x.work,z),x.lenbits=z.bits,j){T.msg="invalid literal/lengths set",x.mode=30;break}if(x.distbits=6,x.distcode=x.distdyn,z={bits:x.distbits},j=c(h,x.lens,x.nlen,x.ndist,x.distcode,0,x.work,z),x.distbits=z.bits,j){T.msg="invalid distances set",x.mode=30;break}if(x.mode=20,S===6)break e;case 20:x.mode=21;case 21:if(6<=W&&258<=H){T.next_out=D,T.avail_out=H,T.next_in=R,T.avail_in=W,x.hold=O,x.bits=N,l(T,Z),D=T.next_out,Y=T.output,H=T.avail_out,R=T.next_in,L=T.input,W=T.avail_in,O=x.hold,N=x.bits,x.mode===12&&(x.back=-1);break}for(x.back=0;pe=(k=x.lencode[O&(1<>>16&255,Ae=65535&k,!((he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>oe)])>>>16&255,Ae=65535&k,!(oe+(he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>>=oe,N-=oe,x.back+=oe}if(O>>>=he,N-=he,x.back+=he,x.length=Ae,pe===0){x.mode=26;break}if(32&pe){x.back=-1,x.mode=12;break}if(64&pe){T.msg="invalid literal/length code",x.mode=30;break}x.extra=15&pe,x.mode=22;case 22:if(x.extra){for(I=x.extra;N>>=x.extra,N-=x.extra,x.back+=x.extra}x.was=x.length,x.mode=23;case 23:for(;pe=(k=x.distcode[O&(1<>>16&255,Ae=65535&k,!((he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>oe)])>>>16&255,Ae=65535&k,!(oe+(he=k>>>24)<=N);){if(W===0)break e;W--,O+=L[R++]<>>=oe,N-=oe,x.back+=oe}if(O>>>=he,N-=he,x.back+=he,64&pe){T.msg="invalid distance code",x.mode=30;break}x.offset=Ae,x.extra=15&pe,x.mode=24;case 24:if(x.extra){for(I=x.extra;N>>=x.extra,N-=x.extra,x.back+=x.extra}if(x.offset>x.dmax){T.msg="invalid distance too far back",x.mode=30;break}x.mode=25;case 25:if(H===0)break e;if(Q=Z-H,x.offset>Q){if((Q=x.offset-Q)>x.whave&&x.sane){T.msg="invalid distance too far back",x.mode=30;break}ge=Q>x.wnext?(Q-=x.wnext,x.wsize-Q):x.wnext-Q,Q>x.length&&(Q=x.length),Te=x.window}else Te=Y,ge=D-x.offset,Q=x.length;for(HB?(M=ge[Te+g[S]],N[ee+g[S]]):(M=96,0),b=1<>D)+(A-=b)]=P<<24|M<<16|U|0,A!==0;);for(b=1<>=1;if(b!==0?(O&=b-1,O+=b):O=0,S++,--Z[T]==0){if(T===L)break;T=h[d+g[S]]}if(Y>>7)]}function ee(k,G){k.pending_buf[k.pending++]=255&G,k.pending_buf[k.pending++]=G>>>8&255}function Z(k,G,J){k.bi_valid>y-J?(k.bi_buf|=G<>y-k.bi_valid,k.bi_valid+=J-y):(k.bi_buf|=G<>>=1,J<<=1,0<--G;);return J>>>1}function Te(k,G,J){var $,V,ie=new Array(g+1),le=0;for($=1;$<=g;$++)ie[$]=le=le+J[$-1]<<1;for(V=0;V<=G;V++){var re=k[2*V+1];re!==0&&(k[2*V]=ge(ie[re]++,re))}}function he(k){var G;for(G=0;G>1;1<=J;J--)oe(k,ie,J);for(V=be;J=k.heap[1],k.heap[1]=k.heap[k.heap_len--],oe(k,ie,1),$=k.heap[1],k.heap[--k.heap_max]=J,k.heap[--k.heap_max]=$,ie[2*V]=ie[2*J]+ie[2*$],k.depth[V]=(k.depth[J]>=k.depth[$]?k.depth[J]:k.depth[$])+1,ie[2*J+1]=ie[2*$+1]=V,k.heap[1]=V++,oe(k,ie,1),2<=k.heap_len;);k.heap[--k.heap_max]=k.heap[1],function(De,Ft){var zs,Qt,Ys,rt,K,fe,xe=Ft.dyn_tree,Ye=Ft.max_code,Ge=Ft.stat_desc.static_tree,_t=Ft.stat_desc.has_stree,Nt=Ft.stat_desc.extra_bits,Qi=Ft.stat_desc.extra_base,gs=Ft.stat_desc.max_length,Jt=0;for(rt=0;rt<=g;rt++)De.bl_count[rt]=0;for(xe[2*De.heap[De.heap_max]+1]=0,zs=De.heap_max+1;zs>=7;V>>=1)if(1&je&&re.dyn_ltree[2*be]!==0)return a;if(re.dyn_ltree[18]!==0||re.dyn_ltree[20]!==0||re.dyn_ltree[26]!==0)return o;for(be=32;be>>3,(ie=k.static_len+3+7>>>3)<=V&&(V=ie)):V=ie=J+5,J+4<=V&&G!==-1?I(k,G,J,$):k.strategy===4||ie===V?(Z(k,2+($?1:0),3),ue(k,F,T)):(Z(k,4+($?1:0),3),function(re,be,je,De){var Ft;for(Z(re,be-257,5),Z(re,je-1,5),Z(re,De-4,4),Ft=0;Ft>>8&255,k.pending_buf[k.d_buf+2*k.last_lit+1]=255&G,k.pending_buf[k.l_buf+k.last_lit]=255&J,k.last_lit++,G===0?k.dyn_ltree[2*J]++:(k.matches++,G--,k.dyn_ltree[2*(x[J]+h+1)]++,k.dyn_dtree[2*N(G)]++),k.last_lit===k.lit_bufsize-1},r._tr_align=function(k){Z(k,2,3),Q(k,A,F),function(G){G.bi_valid===16?(ee(G,G.bi_buf),G.bi_buf=0,G.bi_valid=0):8<=G.bi_valid&&(G.pending_buf[G.pending++]=255&G.bi_buf,G.bi_buf>>=8,G.bi_valid-=8)}(k)}},{"../utils/common":41}],53:[function(t,i,r){i.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,i,r){(function(n){(function(a,o){if(!a.setImmediate){var l,c,u,h,d=1,p={},m=!1,f=a.document,g=Object.getPrototypeOf&&Object.getPrototypeOf(a);g=g&&g.setTimeout?g:a,l={}.toString.call(a.process)==="[object process]"?function(v){process.nextTick(function(){b(v)})}:function(){if(a.postMessage&&!a.importScripts){var v=!0,_=a.onmessage;return a.onmessage=function(){v=!1},a.postMessage("","*"),a.onmessage=_,v}}()?(h="setImmediate$"+Math.random()+"$",a.addEventListener?a.addEventListener("message",A,!1):a.attachEvent("onmessage",A),function(v){a.postMessage(h+v,"*")}):a.MessageChannel?((u=new MessageChannel).port1.onmessage=function(v){b(v.data)},function(v){u.port2.postMessage(v)}):f&&"onreadystatechange"in f.createElement("script")?(c=f.documentElement,function(v){var _=f.createElement("script");_.onreadystatechange=function(){b(v),_.onreadystatechange=null,c.removeChild(_),_=null},c.appendChild(_)}):function(v){setTimeout(b,0,v)},g.setImmediate=function(v){typeof v!="function"&&(v=new Function(""+v));for(var _=new Array(arguments.length-1),C=0;C<_.length;C++)_[C]=arguments[C+1];var B={callback:v,args:_};return p[d]=B,l(d),d++},g.clearImmediate=y}function y(v){delete p[v]}function b(v){if(m)setTimeout(b,0,v);else{var _=p[v];if(_){m=!0;try{(function(C){var B=C.callback,P=C.args;switch(P.length){case 0:B();break;case 1:B(P[0]);break;case 2:B(P[0],P[1]);break;case 3:B(P[0],P[1],P[2]);break;default:B.apply(o,P)}})(_)}finally{y(v),m=!1}}}}function A(v){v.source===a&&typeof v.data=="string"&&v.data.indexOf(h)===0&&b(+v.data.slice(h.length))}})(typeof self>"u"?n===void 0?this:n:self)}).call(this,typeof Ut<"u"?Ut:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})(Dg);var MT=Dg.exports;const kT=la(MT),es=class es{static async writeHandle(e,t){const i=this.workID++,r=new Promise((o,l)=>this.map.set(i,[o,l])),n=new TextEncoder,a=typeof t=="string"?n.encode(t):await t.arrayBuffer();return this.worker.postMessage([i,e,a],[a]),r}};_r(es,"worker",new Worker(new URL("/smeditor/assets/SafariFileWorker-557e53c3.js",self.location),{type:"module"})),_r(es,"workID",0),_r(es,"map",new Map),es.worker.onmessage=e=>{const t=e.data;t.success?es.map.get(t.id)[0]():es.map.get(t.id)[1](t.reason),es.map.delete(t.id)};let Tc=es;class BT{_root;async getRoot(){return this._root||(ET.adapter.native?await Op().then(e=>this._root=e):await Op(qe(()=>import("./memory-822a1ac5.js"),[])).then(e=>this._root=e)),this._root}async uploadHandle(e,t){let i;if(typeof t=="string"){const r=await this.getDirectoryHandle(t,{create:!0});if(!r)return;i=r}else i=t??await this.getRoot();if(e.kind=="file"){const r=await i.getFileHandle(e.name,{create:!0});await this.writeFile(r,await e.getFile())}else{const r=await i.getDirectoryHandle(e.name,{create:!0}),n=[];for await(const a of e.values())n.push(this.uploadHandle(a,r));await Promise.all(n)}}async uploadFiles(e,t){let i;if(typeof t=="string"){const r=await this.getDirectoryHandle(t,{create:!0});if(!r)return;i=r}else i=t??await this.getRoot();if(e.isFile){const r=e;if(r.name==".DS_Store")return;r.file(async n=>{const a=await i.getFileHandle(n.name,{create:!0});await this.writeHandle(a,n)})}else if(e.isDirectory){const r=e.createReader(),n=await i.getDirectoryHandle(e.name,{create:!0});for await(const a of n.values())await n.removeEntry(a.name,{recursive:!0});r.readEntries(async a=>{const o=[];for(let l=0;li!="."&&i!="");t.indexOf("..")>-1;){const i=t.indexOf("..");if(i==0)throw Error("Path"+t.join("/")+"is invalid!");t.splice(i-1,2)}return t.join("/")}async zipDirectory(e,t){const i=t??new kT,r=Hi(e)==""?e:Rt(e),n=await this.getDirectoryHandle(r);if(n){for(const a of await this.getDirectoryFiles(n))i.file(a.name,await a.getFile());for(const a of await this.getDirectoryFolders(n)){const o=i.folder(a.name);if(!o){console.error("Failed to zip folder "+r+"/"+a.name);continue}await this.zipDirectory(r+"/"+a.name,o)}return i}}async saveDirectory(e){const t=Hi(e)==""?e:Rt(e);_e.create("Exporting "+t+".zip");const i=await wT({_preferPolyfill:!1,suggestedName:`${t}.zip`,types:[{accept:{"application/zip":[".zip"]}}],excludeAcceptAllOption:!1}),r=await this.zipDirectory(e);r&&await r.generateAsync({type:"blob"}).then(async n=>{if(!window.showSaveFilePicker){console.log(n);const a=document.createElement("a"),o=URL.createObjectURL(n);document.body.appendChild(a),a.href=o,a.download=t+".zip",a.click(),a.remove(),window.URL.revokeObjectURL(o);return}await this.writeHandle(i,n)})}async renameFile(e,t){if(e!=t)try{const i=await this.getDirectoryHandle(Rt(e)),r=await this.getDirectoryHandle(Rt(t),{create:!0}),n=await this.getFileHandle(e);if(!i||!r||!n)return;await this.copyToHandle(r,n,ts(t)),await i.removeEntry(ts(e))}catch(i){console.error(i)}}async renameDirectory(e,t){if(!t.startsWith(e))try{const i=await this.getDirectoryHandle(Rt(e)),r=await this.getDirectoryHandle(Rt(t),{create:!0}),n=await this.getDirectoryHandle(e);if(!i||!r||!n)return;await this.copyToHandle(r,n,ts(t)),await i.removeEntry(ts(e),{recursive:!0})}catch(i){console.error(i)}}async copyToHandle(e,t,i){try{if(t.kind=="directory"){const r=await e.getDirectoryHandle(i??t.name,{create:!0}),n=[];for await(const a of t.values())n.push(this.copyToHandle(r,a));await Promise.all(n)}else{const r=await t.getFile(),n=await e.getFileHandle(i??t.name,{create:!0});await this.writeHandle(n,r)}}catch(r){console.error(r)}}getRelativePath(e,t){const i=e.split("/"),r=t.split("/"),n=Math.min(i.length,r.length);let a=n;for(let l=0;limport("./NodeFileHandler-f2c2e619.js"),[])).NodeFileHandler:new BT}static getStandardHandler(){return this.standardHandler}static getHandler(e){return e!==void 0&&e.startsWith("https://")||e?.startsWith("http://")?this.urlHandler:this.standardHandler}static handleDropEvent(e,t){return this.getHandler().handleDropEvent(e,t)}static getDirectoryHandle(e,t){return Fe.getHandler(e).getDirectoryHandle(e,t)}static hasFile(e){return Fe.getHandler(e).hasFile(e)}static getFileHandle(e,t){return Fe.getHandler(e).getFileHandle(e,t)}static getFileHandleRelativeTo(e,t){return Fe.getHandler(e).getFileHandleRelativeTo(e,t)}static getDirectoryFiles(e){return Fe.getHandler(typeof e=="string"?e:void 0).getDirectoryFiles(e)}static getDirectoryFolders(e){return Fe.getHandler(typeof e=="string"?e:void 0).getDirectoryFolders(e)}static writeFile(e,t){return Fe.getHandler(typeof e=="string"?e:void 0).writeFile(e,t)}static getRelativePath(e,t){return Fe.getHandler().getRelativePath(e,t)}}class Pt{windowManager;options;windowElement;viewElement;constructor(e){this.options=e;const t=document.createElement("div"),i=document.createElement("div"),r=document.createElement("div"),n=document.createElement("div");if(t.appendChild(r),t.appendChild(i),t.style.width=e.width+"px",t.style.left=window.innerWidth/2-e.width/2+"px",t.style.top=window.innerHeight/2-e.height/2+"px",t.classList.add("unselectable","window"),e.win_id&&(t.dataset.win_id=e.win_id),i.classList.add("view"),i.style.height=e.height+"px",i.style.width=e.width+"px",r.classList.add("navbar"),r.appendChild(n),!e.disableClose){const a=document.createElement("img"),o=document.createElement("img");a.classList.add("unselectable"),a.draggable=!1,a.src=Ce.MINIMIZE_WINDOW,a.onclick=()=>{i.style.height!="0px"?i.style.height="0px":i.style.height=e.height+"px",this.clampPosition()},o.classList.add("unselectable"),o.draggable=!1,o.src=Ce.CLOSE_WINDOW,o.onclick=()=>this.closeWindow(),r.appendChild(a),r.appendChild(o)}n.innerText=e.title,n.classList.add("title"),t.addEventListener("mousedown",()=>this.focus()),e.blocking&&(window.addEventListener("mousedown",this.block,!0),document.getElementById("blocker").style.display="block",t.dataset.blocking="block"),n.addEventListener("mousedown",()=>{window.addEventListener("mousemove",this.handleDrag),window.addEventListener("mouseup",()=>window.removeEventListener("mousemove",this.handleDrag))}),this.focus(),t.classList.add("focused"),this.windowElement=t,this.viewElement=i}addToManager(e){this.windowManager=e,e.view.appendChild(this.windowElement),this.focus()}onClose(){}closeWindow(){this.windowManager&&(this.onClose(),this.windowManager.removeWindow(this),this.windowElement.classList.add("exiting"),window.removeEventListener("mousedown",this.block,!0),this.options.blocking&&this.windowManager.windows.filter(e=>e.options.blocking).length==0&&(document.getElementById("blocker").style.display="none"),setTimeout(()=>this.windowManager.view.removeChild(this.windowElement),40))}focus(){if(this.windowManager==null)return;this.windowManager.unfocusAll(),this.windowElement.classList.add("focused");const e=Array.from(this.windowManager.view.children).map(t=>t).filter(t=>t!=this.windowElement);e.sort((t,i)=>parseInt(t.style.zIndex)-parseInt(i.style.zIndex)),e.push(this.windowElement);for(let t=0;t{!e.target||this.windowElement.contains(e.target)||(e.stopImmediatePropagation(),e.preventDefault())};handleDrag=e=>{const t=parseInt(this.windowElement.style.left.slice(0,-2))+e.movementX,i=parseInt(this.windowElement.style.top.slice(0,-2))+e.movementY;this.windowElement.style.left=t+"px",this.windowElement.style.top=i+"px",this.clampPosition()};clampPosition(){if(this.windowManager==null)return;const e=parseInt(this.windowElement.style.left.slice(0,-2)),t=parseInt(this.windowElement.style.top.slice(0,-2)),i=this.windowManager.app.view.getBoundingClientRect();this.windowElement.style.left=Ve(e,i.left,i.width-this.windowElement.clientWidth+i.left)+"px",this.windowElement.style.top=Ve(t,i.top,i.height-this.windowElement.clientHeight+i.top)+"px"}move(e,t){this.windowElement.style.left=e+"px",this.windowElement.style.top=t+"px"}}class pd extends Pt{app;dirOptions;fileDropPath="";draggedElement;draggedCopy;keyHandler;dropHandler;mouseHandler;dragHandler;constructor(e,t,i){super({title:t.title,width:500,height:400,disableClose:t.disableClose,win_id:"file_selector"+Math.random(),blocking:!0}),this.app=e,this.dirOptions=t,t.accepted_file_types||=[],this.keyHandler=this.handleKeyEvent.bind(this),this.dropHandler=this.handleDropEvent.bind(this),this.mouseHandler=this.handleMouseEvent.bind(this),this.dragHandler=this.handleDragEvent.bind(this),this.initView().then(()=>{i&&this.selectPath(i),t.onload?.()})}async initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("menu-options");const i=document.createElement("div");i.classList.add("menu-left");const r=document.createElement("div");r.classList.add("menu-right"),t.appendChild(i),t.appendChild(r);const n=document.createElement("button");n.innerText="Cancel",n.onclick=()=>{window.removeEventListener("keydown",this.keyHandler,!0),window.removeEventListener("drop",this.dropHandler,!0),this.closeWindow()};const a=document.createElement("button");a.innerText="Select",a.classList.add("confirm"),a.onclick=()=>this.confirmFile(),a.disabled=!0,i.appendChild(n),r.appendChild(a);const o=document.createElement("div");o.classList.add("dir-selector"),o.onclick=y=>{y.target==o&&this.selectElement(void 0)};const l=document.createElement("div");l.classList.add("file-options");const c=document.createElement("button"),u=document.createElement("img");u.src=Ce.ADD_FILE,u.classList.add("icon"),c.appendChild(u),c.appendChild(document.createTextNode("Upload files")),l.appendChild(c),c.onclick=async()=>{const y=this.fileDropPath,b=await bT({_preferPolyfill:!1,excludeAcceptAllOption:!1,multiple:!0}),v=this.viewElement.querySelector(".info.selected")?.dataset.path??"",_=[];for(const C of b)_.push(Fe.getStandardHandler().uploadHandle(C,v));await Promise.all(_),await this.refreshDirectory(y),this.getAcceptableFile(y).then(C=>this.selectPath(C))};const h=document.createElement("button"),d=document.createElement("img");d.src=Ce.ADD_FOLDER,d.classList.add("icon"),h.appendChild(d),h.appendChild(document.createTextNode("Upload folder")),l.appendChild(h),h.onclick=async()=>{const y=this.fileDropPath,b=await AT({_preferPolyfill:!1}),v=this.viewElement.querySelector(".info.selected")?.dataset.path??"";await Fe.getStandardHandler().uploadHandle(b,v),await this.refreshDirectory(y),this.getAcceptableFile(y==""?b.name:y+"/"+b.name).then(_=>this.selectPath(_))};const p=document.createElement("button");p.classList.add("rename");const m=document.createElement("img");m.src=Ce.EDIT,m.classList.add("icon"),p.appendChild(m),p.appendChild(document.createTextNode("Rename")),p.disabled=!0,p.onclick=()=>{const y=this.viewElement.querySelector(".info.selected");y?.dataset.path&&this.startEditing(y.querySelector("textarea"))},l.appendChild(p);const f=document.createElement("button");f.classList.add("delete");const g=document.createElement("img");g.src=Ce.TRASH,g.classList.add("icon"),f.appendChild(g),f.appendChild(document.createTextNode("Delete")),f.disabled=!0,f.onclick=()=>{const y=this.viewElement.querySelector(".info.selected"),b=y?.dataset.path;if(!b)return;const A=y.parentElement.classList.contains("folder");Fe.getStandardHandler()[A?"removeDirectory":"removeFile"](b).then(()=>{const v=this.getElement(b);v&&(v.parentElement?.remove(),f.disabled=!0,p.disabled=!0)})},l.appendChild(f),e.appendChild(o),e.appendChild(l),e.appendChild(t),this.viewElement.appendChild(e),window.addEventListener("keydown",this.keyHandler,!0),window.addEventListener("drop",this.dropHandler,!0),window.addEventListener("mousemove",this.dragHandler,!0),this.viewElement.addEventListener("dragover",this.mouseHandler),await this.createDiv("").then(y=>o.replaceChildren(...y))}async expand(e){if(!e.parentElement.classList.contains("folder"))return;e.parentElement.classList.remove("collapsed");const t=e.nextSibling;await this.createDiv(e.dataset.path).then(i=>{t.replaceChildren(...i)})}collapse(e){if(!e.parentElement.classList.contains("folder"))return;e.parentElement.classList.add("collapsed"),e.nextSibling.replaceChildren()}selectElement(e){if(this.viewElement.querySelector(".info.selected")?.classList.remove("selected"),!e){this.viewElement.querySelector(".delete").disabled=!0,this.viewElement.querySelector(".rename").disabled=!0;return}e.classList.add("selected"),Jn(e,{scrollMode:"if-needed",block:"nearest",inline:"nearest"});const t=this.viewElement.querySelector("button.confirm"),i=e.dataset.path;t.disabled=!0,i&&(t.disabled=!this.acceptableFileType(i),this.viewElement.querySelector(".delete").disabled=!1,this.viewElement.querySelector(".rename").disabled=!1)}async createDiv(e){const t=await Fe.getStandardHandler().getDirectoryFolders(e);let i=await Fe.getStandardHandler().getDirectoryFiles(e);return t.sort((r,n)=>r.name.toLowerCase().localeCompare(n.name.toLowerCase())),i.sort((r,n)=>r.name.toLowerCase().localeCompare(n.name.toLowerCase())),i=i.filter(r=>Hi(r.name)!=".crswap"),t.map(r=>this.createBaseElement(e,r)).concat(i.map(r=>this.createBaseElement(e,r)))}createBaseElement(e,t){e!=""&&(e+="/");const i=document.createElement("div");i.classList.add("item");const r=document.createElement("div");if(r.classList.add("info"),i.appendChild(r),t.kind=="directory"){const a=document.createElement("img");a.classList.add("icon"),a.classList.add("folder-icon"),a.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAbklEQVRIie2PMQqAMAxFXwfP6qJVPIjYzcOKdUkhQ0BaCoLkLS3k818CjuN8ztApYzIDl7xvmalFsAIZuIFozKPMMrC0CAJwKIkuGVX5KdkmLEm3ci1JSlLKU49yLSmXVG1es0EANvnvInKcP/AA784fpjlWwNQAAAAASUVORK5CYII=",r.appendChild(a);const o=document.createElement("div");o.classList.add("children"),i.appendChild(o),i.classList.add("folder"),i.classList.add("collapsed"),r.addEventListener("click",l=>{const c=l.target;c?.classList.contains("options-icon")||c.tagName=="TEXTAREA"&&!c.disabled||(i.classList.contains("collapsed")?this.expand(r):this.collapse(r))})}else{this.acceptableFileType(t.name)||r.classList.add("disabled");const a=document.createElement("img");a.src=this.getIcon(t.name),a.classList.add("icon"),r.appendChild(a)}r.dataset.path=e+t.name;const n=document.createElement("textarea");return n.rows=1,n.disabled=!0,n.autocomplete="off",n.autocapitalize="off",n.spellcheck=!1,n.innerText=t.name,n.style.pointerEvents="none",n.classList.add("title"),r.appendChild(n),r.addEventListener("click",()=>this.selectElement(r)),r.addEventListener("mousedown",()=>this.startDragging(r)),r.ondblclick=()=>this.confirmFile(),i}confirmFile(){const t=this.viewElement.querySelector(".info.selected")?.dataset.path;t&&this.acceptableFileType(t)&&(this.dirOptions.callback?.(t),window.removeEventListener("keydown",this.keyHandler,!0),window.removeEventListener("drop",this.dropHandler,!0),window.removeEventListener("mousemove",this.dragHandler,!0),this.closeWindow())}acceptableFileType(e){return this.dirOptions.accepted_file_types.length==0||this.dirOptions.accepted_file_types.includes(Hi(e))}getIcon(e){const t=Hi(e);return t==""&&!e.startsWith(".")?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAAY0lEQVRIiWNgGAWDCXgwMDA8ZmBg+I8DN1BqwSM8hlPFEpgh2EA4AwPDbyIc8B/qUA9SLSDHEpItIBagmMNEBQPxglELRi0YtQDVgsdQmpiiAB9GNgsFeDAQV6KSXdiNgoEBAG+iU6T/ixEpAAAAAElFTkSuQmCC":tr.includes(t)?Ce.IMAGE_FILE:rl.includes(t)?Ce.AUDIO_FILE:[".sm",".ssc"].includes(t)?Ce.SM_FILE:Ce.UNKNOWN_FILE}startEditing(e){const t=e.value,i=!!e.parentElement?.parentElement?.classList.contains("folder"),r=e.parentElement?.dataset.path??"",n=Rt(r);e.value=r.split("/").at(-1)??"",window.removeEventListener("keydown",this.keyHandler,!0),e.disabled=!1,e.style.pointerEvents="",e.focus(),e.addEventListener("keypress",a=>{a.code=="Enter"&&(a.preventDefault(),a.stopImmediatePropagation(),e.blur())},!0),e.addEventListener("blur",async()=>{if(window.addEventListener("keydown",this.keyHandler,!0),e.disabled=!0,e.style.pointerEvents="none",e.value.startsWith(".")){e.value=t;return}e.value=e.value.replaceAll("/","");const a=n==""?e.value:n+"/"+e.value;a!=r&&(e.parentElement.dataset.path=a,await Fe.getStandardHandler()[i?"renameDirectory":"renameFile"](r,a),this.refreshDirectory(n),e.value.length>32&&(e.value=e.value.slice(0,32)+"..."))})}async refreshDirectory(e){const t=this.viewElement.querySelector(".dir-selector");if(!t)return;let i=t.querySelector("div[data-path='"+this.escapeSelector(e)+"']")?.nextSibling;if(e==""&&(i=t),!i)return;const r=Array.from(i.parentElement.querySelectorAll(".folder:not(.collapsed)")).map(n=>n.children[0].dataset.path);await this.createDiv(e).then(n=>i.replaceChildren(...n)),await Promise.all(r.map(n=>this.expand(t.querySelector("div[data-path='"+this.escapeSelector(n)+"']"))))}getElement(e){const t=this.viewElement.querySelector(".dir-selector");return t?t.querySelector("div[data-path='"+this.escapeSelector(e)+"']"):null}async getAcceptableFile(e){const t=await Fe.getStandardHandler().getDirectoryHandle(e);if(!t)return;const i=[{path:e,handle:t}];for(;i.length>0;){const r=i.shift(),n=r.handle;for await(const a of n.values()){const o=r.path==""?"":r.path+"/";if(a.kind=="directory")i.push({path:o+a.name,handle:a});else if(this.acceptableFileType(a.name))return o+a.name}}}async selectPath(e){if(!e)return;const t=this.viewElement.querySelector(".dir-selector");if(!t)return;const i=e.split("/");i.pop();const r=[];for(;i.length>0;){r.push(i.shift());const a=t.querySelector("div[data-path='"+this.escapeSelector(r.join("/"))+"']");if(!a)return;await this.expand(a)}const n=t.querySelector("div[data-path='"+this.escapeSelector(e)+"']");n&&this.selectElement(n)}handleKeyEvent(e){if(!this.windowElement.classList.contains("focused"))return;const t=this.viewElement.querySelector(".info.selected");if(t==null){if(e.code.startsWith("Arrow")){const i=this.viewElement.querySelector(".info");i&&this.selectElement(i)}return}if(e.code=="ArrowUp"){e.preventDefault(),e.stopImmediatePropagation();const i=t.parentElement;let r=i.previousSibling?.querySelector(".info");r&&!r.parentElement.classList.contains("collapsed")&&r.parentElement.classList.contains("folder")&&(r=r.parentElement.querySelector(".children").lastChild.querySelector(".info")),!r&&i.parentElement.classList.contains("children")&&(r=i.parentElement.parentElement.querySelector(".info")),r&&(this.selectElement(r),Jn(r,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}))}if(e.code=="ArrowDown"){e.preventDefault(),e.stopImmediatePropagation();const i=t.parentElement;let r;i.classList.contains("folder")&&!i.classList.contains("collapsed")&&(r=i.querySelector(".children").children[0].querySelector(".info")),r||(r=t.parentElement.nextSibling?.querySelector(".info")),!r&&i.parentElement.classList.contains("children")&&(r=i.parentElement.parentElement.nextSibling.querySelector(".info")),r&&(this.selectElement(r),Jn(r,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}))}if(e.code=="ArrowLeft"&&(e.preventDefault(),e.stopImmediatePropagation(),this.collapse(t)),e.code=="ArrowRight"&&(e.preventDefault(),e.stopImmediatePropagation(),this.expand(t)),e.code=="Enter"&&(e.preventDefault(),e.stopImmediatePropagation(),t.parentElement?.querySelector(".title")&&this.startEditing(t.parentElement?.querySelector(".title"))),e.code=="Delete"||e.code=="Backspace"){const i=this.viewElement.querySelector(".info.selected"),r=i?.dataset.path;if(!r)return;const n=i.parentElement.classList.contains("folder");Fe.getStandardHandler()[n?"removeDirectory":"removeFile"](r).then(()=>{const a=this.getElement(r);a&&(a.parentElement?.remove(),this.viewElement.querySelector(".delete").disabled=!0,this.viewElement.querySelector(".rename").disabled=!0)})}}startDragging(e){const t=e;t.totalMovementX=0,t.totalMovementY=0,this.draggedElement=t;const i=()=>{this.stopDragging(),window.removeEventListener("mouseup",i)};window.addEventListener("mouseup",i)}handleDragEvent(e){if(this.draggedElement){if(this.draggedElement.totalMovementX+=e.movementX,this.draggedElement.totalMovementY+=e.movementY,!this.draggedCopy)if(Math.abs(this.draggedElement.totalMovementX)+Math.abs(this.draggedElement.totalMovementY)>8){this.viewElement.addEventListener("mousemove",this.mouseHandler),this.draggedCopy=this.draggedElement.parentElement.cloneNode(!0),this.draggedCopy.style.position="fixed";const t=this.draggedElement.getBoundingClientRect();this.draggedCopy.style.top=t.top+this.draggedElement.totalMovementY+"px",this.draggedCopy.style.left=t.left+this.draggedElement.totalMovementX+"px",this.draggedCopy.style.width=t.width+"px",this.draggedCopy.style.boxShadow="3px 3px 3px #222",this.draggedCopy.querySelector(".children")&&this.draggedCopy.removeChild(this.draggedCopy.querySelector(".children")),this.viewElement.appendChild(this.draggedCopy)}else return;this.draggedCopy.style.top=parseFloat(this.draggedCopy.style.top.slice(0,-2))+e.movementY+"px",this.draggedCopy.style.left=parseFloat(this.draggedCopy.style.left.slice(0,-2))+e.movementX+"px"}}async stopDragging(){if(this.draggedCopy){this.draggedCopy.remove(),this.viewElement.removeEventListener("mousemove",this.mouseHandler);const e=this.draggedCopy.classList.contains("folder"),t=this.draggedElement.dataset.path,i=this.fileDropPath==""?ts(this.draggedElement.dataset.path):this.fileDropPath+"/"+ts(this.draggedElement.dataset.path);t!=i&&await Fe.getStandardHandler()[e?"renameDirectory":"renameFile"](t,i),await this.refreshDirectory(Rt(t)),await this.refreshDirectory(Rt(i)),this.viewElement.querySelector(".outlined")?.classList.remove("outlined"),this.fileDropPath=""}this.draggedCopy=void 0,this.draggedElement=void 0}handleDropEvent(e){e.preventDefault(),e.stopImmediatePropagation(),this.viewElement.querySelector(".outlined")?.classList.remove("outlined"),e.target.closest(".dir-selector")&&Fe.getStandardHandler().handleDropEvent(e,this.fileDropPath).then(async t=>{await this.refreshDirectory(this.fileDropPath),this.getAcceptableFile(t??this.fileDropPath).then(i=>this.selectPath(i)),this.fileDropPath=""})}handleMouseEvent(e){const t=this.viewElement.querySelector(".dir-selector");let i=Array.from(t.querySelectorAll("div.item.folder"));const r=this.viewElement.querySelector(".outlined");i=i.filter(n=>!n.parentElement.closest(".collapsed")),i.reverse(),i.push(t);for(const n of i){const a=n.getBoundingClientRect();if(e.clientX>=a.x&&e.clientX<=a.x+a.width&&e.clientY>=a.y&&e.clientY<=a.y+a.height){r!=n&&r?.classList.remove("outlined");const o=n.querySelector(".info");this.fileDropPath=o?.dataset.path??"",n.classList.contains("dir-selector")&&(this.fileDropPath=""),n.classList.add("outlined");return}}this.viewElement.querySelector(".outlined")?.classList.remove("outlined"),this.fileDropPath=""}escapeSelector(e){return e.replaceAll(/'/g,"\\'")}}class pt{items=[];itemIndex=0;limit=0;app;static instance;constructor(e){this.app=e,pt.instance||(pt.instance=this)}run(e){e.action(this.app),this.items.splice(this.itemIndex,this.items.length-this.itemIndex,e),this.itemIndex++}undo(){this.items[this.itemIndex-1]&&(this.items[this.itemIndex-1].undo(this.app),this.itemIndex--,q.emit("undo"))}redo(){this.items[this.itemIndex]&&(this.items[this.itemIndex].redo?this.items[this.itemIndex].redo(this.app):this.items[this.itemIndex].action(this.app),this.itemIndex++,q.emit("redo"))}reset(){this.itemIndex=0,this.limit=0,this.items=[]}canUndo(){return this.itemIndex>0}canRedo(){return this.itemIndex!=this.items.length}setLimit(){this.limit=this.itemIndex}isDirty(){return this.itemIndex!=this.limit}}function Og(){const s=document.createElement("div");return s.spellcheck=!1,s.contentEditable="true",s.classList.add("inlineEdit"),s.onkeydown=e=>{e.key=="Enter"&&s.blur()},s}function $a(s,e){return{title:s,element:t=>{const i=Og();return i.onblur=()=>{const r=t[e];pt.instance.run({action:()=>{t[e]=i.innerText},undo:()=>{t[e]=r}}),i.scrollLeft=0},i.innerText=t[e],i}}}const IT={name:$a("Name","chartName"),credit:$a("Artist","credit"),style:$a("Style","chartStyle"),description:$a("Description","description"),music:{title:"Music File",element:(s,e)=>{const t=document.createElement("div");t.classList.add("flex-row","flex-column-gap","flex-static","hide-buttons");const i=()=>{if(r.innerText==(s.music??e.chartManager.loadedSM.properties.MUSIC??""))return;const c=e.chartManager.chartAudio.isPlaying();if(r.innerText==""||r.innerText==e.chartManager.loadedSM.properties.MUSIC){s.music=void 0,r.innerText=e.chartManager.loadedSM.properties.MUSIC+"",e.chartManager.loadAudio(),c&&e.chartManager.chartAudio.play();return}const u=s.music;pt.instance.run({action:()=>s.music=r.innerText==e.chartManager.loadedSM.properties.MUSIC?void 0:r.innerText,undo:()=>s.music=u}),e.chartManager.loadAudio(),c&&e.chartManager.chartAudio.play()},r=Og();r.style.flex="1",r.onblur=i,r.innerText=s.music??e.chartManager.loadedSM.properties.MUSIC??"";const n=document.createElement("button");n.onclick=()=>{const c=Rt(e.chartManager.smPath);if(window.nw){const u=document.createElement("input");u.type="file",u.accept="audio/*",u.onchange=()=>{r.innerText=Fe.getRelativePath(c,u.value),i()},u.click()}else e.windowManager.openWindow(new pd(e,{title:"Select an audio file...",accepted_file_types:rl,disableClose:!0,callback:u=>{r.innerText=Fe.getRelativePath(c,u),i()}},c+"/"+(s.music??e.chartManager.loadedSM.properties.MUSIC??"")))};const a=document.createElement("img");a.classList.add("icon"),a.style.height="12px",a.src=Ce.SELECT_FILE,n.appendChild(a);const o=document.createElement("button");o.onclick=()=>{r.innerText!=(e.chartManager.loadedSM.properties.MUSIC??"")&&(r.innerText=e.chartManager.loadedSM.properties.MUSIC??"",i())};const l=document.createElement("img");return l.classList.add("icon"),l.style.height="12px",l.src=Ce.REVERT,o.appendChild(l),t.appendChild(r),t.appendChild(n),t.appendChild(o),t}}};class di{view;items=[];selectedItem;onChangeHandlers=[];static create(e,t){return new di(document.createElement("div"),e,t)}constructor(e,t,i){this.view=e,e.classList.add("dropdown"),this.items=t??[],this.selectedItem=i??this.items[0];const r=document.createElement("div");r.classList.add("dropdown-selected");const n=document.createElement("div");n.classList.add("dropdown-items"),n.style.height="",r.onclick=()=>{if(!r.classList.contains("disabled")){if(this.items.length==0){n.style.height="";return}this.createDropdown(),n.style.height==""?(n.style.width=Math.max(n.scrollWidth,r.clientWidth)+"px",n.style.height=n.scrollHeight+"px",Array.from(n.children).forEach((a,o)=>{a.style.animationDelay=o*.02+"s"})):n.style.height=""}},window.addEventListener("click",a=>{const o=a.target;(!o.closest(".dropdown")||o.closest(".dropdown")!=e)&&(n.style.height="")}),this.view.appendChild(r),this.view.appendChild(n),this.setSelected()}onChange(e){this.onChangeHandlers.push(e)}removeHandler(e){this.onChangeHandlers.includes(e)&&this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(e),1)}getItems(){return this.items}setItems(e){this.items=e,e.includes(this.selectedItem)||(this.selectedItem=this.items[0],this.setSelected())}setSelected(e){this.selectedItem=e??this.selectedItem;const t=this.view.querySelector(".dropdown-selected");t.innerText=this.selectedItem?this.selectedItem+"":""}closeDropdown(){const e=this.view.querySelector(".dropdown-items");e&&(e.style.height="")}get value(){return this.selectedItem}get disabled(){return this.view.querySelector(".dropdown-selected").classList.contains("disabled")}set disabled(e){e?this.view.querySelector(".dropdown-selected").classList.add("disabled"):this.view.querySelector(".dropdown-selected").classList.remove("disabled")}createDropdown(){const e=this.view.querySelector(".dropdown-items"),t=this.items.map((i,r)=>{const n=document.createElement("div");return n.classList.add("dropdown-item"),n.innerText=i+"",n.onclick=()=>{e.style.height="",this.selectedItem!=i&&(this.setSelected(i),this.onChangeHandlers.forEach(a=>a(i,r)))},n});e.replaceChildren(...t)}}class fd extends Pt{app;buttonOptions;message;resolve;resolved=new Promise(e=>this.resolve=e);constructor(e,t,i,r){super({title:t,width:300,height:100,disableClose:!0,win_id:"confirm",blocking:!0}),this.app=e,this.message=i,this.buttonOptions=r,this.initView()}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("confirmation");const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("label"),t.innerText=this.message,e.appendChild(t);const i=document.createElement("div");i.classList.add("menu-options"),this.buttonOptions.forEach(r=>{const n=document.createElement("button");n.innerText=r.label,n.onclick=()=>{r.callback?.(),this.resolve?.(r.label),this.closeWindow()},r.type!="default"&&n.classList.add(r.type),i.append(n)}),e.appendChild(i),this.viewElement.appendChild(e)}}class Fg extends Pt{app;gameType;chartList;chartInfo;gameTypeDropdown;smLoadHandler=()=>{this.gameTypeDropdown.setItems(He.getPriority().map(e=>{const t=this.app.chartManager.loadedSM?.charts[e.id]??[];return e.id+" ("+t.length+")"})),this.gameTypeDropdown.setSelected(this.gameType.id+" ("+(this.app.chartManager.loadedSM?.charts[this.gameType.id]??[]).length+") "),this.gameType=this.app.chartManager.loadedChart?.gameType??this.gameType,this.loadCharts()};constructor(e,t){super({title:"Chart List",width:500,height:400,win_id:"chart_list"}),this.app=e,this.gameType=t??e.chartManager.loadedChart?.gameType??He.getPriority()[0],this.initView(),q.on("smLoadedAfter",this.smLoadHandler)}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("chart-view-type-wrapper");const i=document.createElement("div");i.classList.add("chart-view-type-label"),i.innerText="Game Type:",this.gameTypeDropdown=di.create(He.getPriority().map(n=>{const a=this.app.chartManager.loadedSM?.charts[n.id]??[];return n.id+" ("+a.length+")"}),this.gameType.id+" ("+(this.app.chartManager.loadedSM?.charts[this.gameType.id]??[]).length+") "),this.gameTypeDropdown.onChange(n=>{this.gameType=He.getGameType(n.split(" ")[0])??this.gameType,this.loadCharts()}),t.appendChild(i),t.appendChild(this.gameTypeDropdown.view);const r=document.createElement("div");r.classList.add("chart-view-scroller"),e.appendChild(t),e.appendChild(r),this.chartList=document.createElement("div"),this.chartList.classList.add("chart-list"),this.chartInfo=document.createElement("div"),this.chartInfo.classList.add("chart-info"),r.appendChild(this.chartList),r.appendChild(this.chartInfo),this.viewElement.appendChild(e),this.loadCharts()}onClose(){q.off("smLoadedAfter",this.smLoadHandler)}loadCharts(){const e=this.app.chartManager.loadedSM?.charts[this.gameType.id]??[],t=[];this.gameTypeDropdown.setItems(He.getPriority().map(a=>{const o=this.app.chartManager.loadedSM?.charts[a.id]??[];return a.id+" ("+o.length+")"})),this.gameTypeDropdown.setSelected(this.gameType.id+" ("+(this.app.chartManager.loadedSM?.charts[this.gameType.id]??[]).length+") "),e.forEach(a=>{const o=document.createElement("div");o.classList.add("chart-list-item"),o.chart=a,this.app.chartManager.loadedChart==a&&o.classList.add("selected"),o.onclick=()=>{o.chart!=this.app.chartManager.loadedChart&&(this.app.chartManager.loadChart(o.chart),this.chartList.querySelectorAll(".selected").forEach(d=>d.classList.remove("selected")),o.classList.add("selected"))},o.onmouseenter=()=>{this.loadChartDetails(o.chart)},o.onmouseleave=()=>{this.loadChartDetails()};const l=document.createElement("div");l.innerText=a.meter+"",l.classList.add("title",a.difficulty);const c=document.createElement("div");c.classList.add("chart-list-info");const u=document.createElement("div");u.innerText=a.credit,u.classList.add("title","chart-credit");const h=document.createElement("div");h.innerText=a.getNotedata().length+"",h.classList.add("title","chart-step-count"),c.appendChild(u),c.appendChild(h),o.appendChild(l),o.appendChild(c),t.push(o)});const i=document.createElement("div");i.classList.add("chart-list-item");const r=document.createElement("div");r.innerText="+",r.classList.add("title");const n=document.createElement("div");n.classList.add("chart-list-info"),n.innerText="New Blank Chart",i.appendChild(r),i.appendChild(n),i.onclick=()=>{const a=new Pg(this.app.chartManager.loadedSM);a.gameType=this.gameType,this.app.chartManager.loadedSM.addChart(a),this.app.chartManager.loadChart(a),this.loadCharts()},this.chartList.replaceChildren(...t,i),this.loadChartDetails()}loadChartDetails(e){if(e=e??this.app.chartManager.loadedChart,e?.gameType.id!=this.gameType.id){this.chartInfo.replaceChildren();return}if(!e)return;const t=()=>this.app.chartManager.loadedSM.charts[e.gameType.id].sort((f,g)=>Ai.indexOf(f.difficulty)==Ai.indexOf(g.difficulty)?f.meter-g.meter:Ai.indexOf(f.difficulty)-Ai.indexOf(g.difficulty)),i=document.createElement("div");i.classList.add("chart-info-main");const r=di.create(Ai,e.difficulty);r.view.classList.add("no-border","white"),r.onChange(f=>{const g=e.difficulty;pt.instance.run({action:()=>{e.difficulty=f,t(),this.loadCharts()},undo:()=>{e.difficulty=g,t(),this.loadCharts()}})});const n=document.createElement("div");n.spellcheck=!1,n.contentEditable="true",n.classList.add("inlineEdit","chart-meter"),n.onkeydown=f=>{f.key=="Enter"&&n.blur()},n.onblur=()=>{let f=na(n.innerText);if(f===null){n.innerText=e?.meter+"";return}f=Math.round(Ve(1,f,2**31-1));const g=e.meter;pt.instance.run({action:()=>{e.meter=f,e.meterF=f,t(),this.loadCharts()},undo:()=>{e.meter=g,e.meterF=g,t(),this.loadCharts()}}),n.scrollLeft=0},n.innerText=e.meter+"";const a=document.createElement("div");a.classList.add("chart-properties"),i.appendChild(r.view),i.appendChild(n),Object.values(IT).forEach(f=>{const g=document.createElement("div");g.classList.add("label"),g.innerText=f.title;const y=f.element(e,this.app);f.title=="Artist"&&y.addEventListener("blur",()=>this.loadCharts()),a.appendChild(g),a.appendChild(y)});const o=e.getNotedataStats(),l=document.createElement("div");l.classList.add("chart-info-grid-item");const c=document.createElement("div");c.innerText="Peak NPS",c.classList.add("title","chart-info-grid-label");const u=document.createElement("div");u.innerText=e.getMaxNPS().toFixed(2)+"",u.classList.add("title","chart-info-grid-count"),l.appendChild(c),l.appendChild(u);const h=document.createElement("div");h.classList.add("chart-info-grid"),Object.entries(o).forEach(f=>{const g=document.createElement("div");g.classList.add("chart-info-grid-item");const y=document.createElement("div");y.innerText=f[0],y.classList.add("title","chart-info-grid-label");const b=document.createElement("div");b.innerText=f[1]+"",b.classList.add("title","chart-info-grid-count"),g.appendChild(y),g.appendChild(b),h.appendChild(g)});const d=document.createElement("div");d.classList.add("menu-options");const p=document.createElement("button");p.innerText="Duplicate Chart",p.onclick=()=>{const f=Object.assign(Object.create(Object.getPrototypeOf(e)),e);f.setNotedata(e.getNotedata().map(g=>e.computeNote(g))??[]),this.app.chartManager.loadedSM.addChart(f),this.app.chartManager.loadChart(f),this.loadCharts()},d.append(p);const m=document.createElement("button");m.innerText="Delete Chart",m.onclick=()=>{this.app.windowManager.openWindow(new fd(this.app,"Delete chart","Are you sure you want to delete this chart?",[{type:"default",label:"Cancel"},{type:"delete",label:"Delete",callback:()=>{this.app.chartManager.loadedSM.removeChart(e)&&(this.app.chartManager.loadChart(),this.gameType=this.app.chartManager.loadedChart?.gameType??this.gameType,this.loadCharts())}}]))},m.classList.add("delete"),d.append(m),this.chartInfo.replaceChildren(i,a,l,h,d)}}const PT="/smeditor/assets/highpass-d9d7cfcb.svg",RT="/smeditor/assets/highshelf-11ccf64e.svg",LT="/smeditor/assets/lowpass-ff013247.svg",DT="/smeditor/assets/lowshelf-2b031328.svg",OT="/smeditor/assets/peaking-eec48769.svg";var FT=4,NT=.001,UT=1e-7,GT=10,Un=11,eo=1/(Un-1),HT=typeof Float32Array=="function";function Ng(s,e){return 1-3*e+3*s}function Ug(s,e){return 3*e-6*s}function Gg(s){return 3*s}function Ho(s,e,t){return((Ng(e,t)*s+Ug(e,t))*s+Gg(e))*s}function Hg(s,e,t){return 3*Ng(e,t)*s*s+2*Ug(e,t)*s+Gg(e)}function VT(s,e,t,i,r){var n,a,o=0;do a=e+(t-e)/2,n=Ho(a,i,r)-s,n>0?t=a:e=a;while(Math.abs(n)>UT&&++o=NT?WT(l,p,e,i):m===0?p:VT(l,c,c+eo,e,i)}return function(c){return c===0?0:c===1?1:Ho(o(c),t,r)}};const Kt=la(YT),jT=Kt(0,0,1,1);function Gp(s,e){const t=e?e.split("."):[];for(;t.length&&s;){const i=t.shift(),r=new RegExp("(.+)\\[([0-9]*)\\]").exec(i);if(r!==null&&r.length==3){const n={arrName:r[1],arrIndex:r[2]};s[n.arrName]!==void 0?s=s[n.arrName][n.arrIndex]:s=void 0;continue}s=s[i]}return s}function XT(s,e,t){const i=e?e.split("."):[];for(;i.length&&s;){const r=i.shift(),n=new RegExp("(.+)\\[([0-9]*)\\]").exec(r);if(n!==null&&n.length==3){const a={arrName:n[1],arrIndex:n[2]};s[a.arrName]!==void 0&&i.length===0&&(s[a.arrName][a.arrIndex]=t);continue}s[r]===void 0&&(s[r]={}),i.length===0&&(s[r]=t),s=s[r]}return s}const Ss=class Ss{static updateObject(e,t,i){const r=Object.keys(t).sort((o,l)=>parseFloat(o)-parseFloat(l));let n="0";for(let o=r.length-2;o>=0;o--)if(parseFloat(r[o])<=i){n=r[o];break}let a="1";for(let o=1;oi){a=r[o];break}Object.keys(t[0]).forEach(o=>{let l=t[n][o],c=t[a][o];l==="inherit"&&(t[n][o]=Gp(e,o),l=t[n][o]),c==="inherit"&&(t[a][o]=Gp(e,o),c=t[a][o]);const u=l+(i-parseFloat(n))/(parseFloat(a)-parseFloat(n))*(c-l);XT(e,o,u)})}static stop(e,t=null){e!==void 0&&(t!==null&&this.animations.get(e)?.obj&&!this.animations.get(e).obj.destroyed&&this.updateObject(this.animations.get(e).obj,this.animations.get(e).animation,t),this.animations.delete(e))}static finish(e){e!==void 0&&this.stop(e,1)}static animate(e,t,i,r,n=()=>{},a){return a||=`${++this._id}`,this.animations.set(a,{obj:e,animation:t,seconds:1/(60*i),progress:0,curve:r!==void 0?r:jT,onend:n}),a}};_r(Ss,"animations",new Map),_r(Ss,"_id",0),xt.shared.add(e=>{for(const[t,i]of Ss.animations.entries())i.obj._destroyed?Ss.stop(t):(i.progress=Math.min(1,i.progress+i.seconds*e),Ss.updateObject(i.obj,i.animation,i.curve(i.progress)),i.progress>=1&&(i.onend(i.obj),Ss.stop(t,1)))});let kt=Ss;const dh=[{frequency:20,Q:.71},{frequency:75,gain:0},{frequency:100,gain:0,Q:.6},{frequency:250,gain:0,Q:.3},{frequency:1040,gain:0,Q:.41},{frequency:2500,gain:0,Q:.2},{frequency:7500,gain:0},{frequency:2e4,Q:.71}],Hp=[{freq:20,label:"20"},{freq:30,label:"30"},{freq:40,label:"40"},{freq:50,label:"50"},{freq:60,label:"60"},{freq:70,label:""},{freq:80,label:"80"},{freq:90,label:""},{freq:100,label:"100"},{freq:200,label:"200"},{freq:300,label:"300"},{freq:400,label:"400"},{freq:500,label:"500"},{freq:600,label:"600"},{freq:700,label:""},{freq:800,label:"800"},{freq:900,label:""},{freq:1e3,label:"1k"},{freq:2e3,label:"2k"},{freq:3e3,label:"3k"},{freq:4e3,label:"4k"},{freq:5e3,label:"5k"},{freq:6e3,label:"6k"},{freq:7e3,label:""},{freq:8e3,label:"8k"},{freq:9e3,label:""},{freq:1e4,label:"10k"},{freq:15e3,label:""},{freq:2e4,label:"20k"}],Hr=0,Vr=0,gr=1200,St=400,Vo=new Array(gr).fill(0).map((s,e)=>md(e)),KT=new Float32Array(Vo);function Wo(s){return Math.log(s/20)/Math.log(1102.5)*gr}function md(s){return Math.pow(1102.5,s/gr)*20}function ar(s){return-s*6+St/2}function Vp(s){return-(s-St/2)/6}class qT extends Pt{app;cachedReponse=new Array(gr).fill(0);onAudioLoad=this.onAudio.bind(this);points=[];icons;info;trackedFilter=null;constructor(e){super({title:"Audio Equalizer",width:600,height:245,win_id:"audio-eq"}),this.app=e,this.initView(),this.onAudioLoad(),q.on("audioLoaded",this.onAudioLoad)}destroy(){q.off("audioLoaded",this.onAudioLoad)}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("eq-container");const t=document.createElement("div");t.classList.add("icon-container"),this.app.chartManager.chartAudio.getFilters().forEach((A,v)=>{const _=document.createElementNS("http://www.w3.org/2000/svg","svg");fetch(new URL(Object.assign({"../../../assets/svg/highpass.svg":PT,"../../../assets/svg/highshelf.svg":RT,"../../../assets/svg/lowpass.svg":LT,"../../../assets/svg/lowshelf.svg":DT,"../../../assets/svg/peaking.svg":OT})[`../../../assets/svg/${A.type}.svg`],self.location).href).then(C=>C.text()).then(C=>{const M=new DOMParser().parseFromString(C,"image/svg+xml").getElementsByTagName("svg")[0];for(const{name:U,value:F}of M.attributes)_.getAttribute(U)||_.setAttribute(U,F);_.replaceChildren(...M.children)}),_.setAttribute("fill",ir[v]),_.classList.add("eq-icon"),_.style.backgroundColor=`${ir[v]}40`,_.setAttribute("width","36px"),_.setAttribute("height","24px"),_.onclick=()=>{this.app.chartManager.chartAudio.getFilter(v).enabled?this.app.chartManager.chartAudio.disableFilter(v):this.app.chartManager.chartAudio.enableFilter(v),this.endTrack(),this.updateIcons()},_.onmouseenter=()=>this.points[v].highlight(),_.onmouseleave=()=>this.points[v].unhighlight(),t.appendChild(_)}),this.icons=t,this.updateIcons();const i=document.createElement("canvas");i.style.width="600px",i.style.height="200px",i.onmousedown=A=>{const v=this.points.filter(_=>_.hitTest(A.offsetX*2,A.offsetY*2)).at(-1);this.endTrack(),v?.mouseDown(A)};const r=document.createElement("div");r.classList.add("eq-info-container");const n=document.createElement("div");n.classList.add("eq-info");const a=document.createElement("div");a.innerText="Type",a.classList.add("eq-info-label");const o=document.createElement("div");o.classList.add("eq-info-value"),n.replaceChildren(a,o);const l=document.createElement("div");l.classList.add("eq-info");const c=document.createElement("div");c.innerText="Frequency",c.classList.add("eq-info-label");const u=document.createElement("div");u.contentEditable="false",u.classList.add("eq-info-value","inlineEdit"),l.replaceChildren(c,u),this.setupInput(u,"frequency",20,22050," Hz");const h=document.createElement("div");h.classList.add("eq-info");const d=document.createElement("div");d.innerText="Gain",d.classList.add("eq-info-label");const p=document.createElement("div");p.contentEditable="false",p.classList.add("eq-info-value","inlineEdit"),h.replaceChildren(d,p),this.setupInput(p,"gain",-24,24," dB",1);const m=document.createElement("div");m.classList.add("eq-info");const f=document.createElement("div");f.innerText="Q",f.classList.add("eq-info-label");const g=document.createElement("div");g.contentEditable="false",g.classList.add("eq-info-value","inlineEdit"),m.replaceChildren(f,g),this.setupInput(g,"Q",1e-4,1e3,"",4);const y=document.createElement("div");y.classList.add("eq-reset","disabled"),y.innerText="Reset",y.onclick=()=>{if(this.trackedFilter==null)for(let A=0;A{o=this.app.chartManager.chartAudio.getFilter(this.trackedFilter)[t].value,e.innerText=ne(o,a)+"",this.selectText(e)},e.onkeydown=l=>{if(l.key=="Enter"){e.blur();return}if(l.key=="Tab"){const u=[...e.parentElement.parentElement.children],h=u.indexOf(e.parentElement);for(let d=1;d{const c=na(e.innerText);c!==null&&(this.app.chartManager.chartAudio.updateFilter(this.trackedFilter,{[t]:Ve(c,i,r)}),this.points[this.trackedFilter].refreshPoint(),this.getResponse())})},e.onblur=()=>{na(e.innerText)===null&&(this.app.chartManager.chartAudio.updateFilter(this.trackedFilter,{[t]:Ve(o,i,r)}),this.points[this.trackedFilter].refreshPoint(),this.getResponse()),e.innerText=ne(this.app.chartManager.chartAudio.getFilter(this.trackedFilter)[t].value,a)+n}}onAudio(){this.points=this.app.chartManager.chartAudio.getFilters().map((e,t)=>new QT(this,t)),this.getResponse(),this.updateIcons(),this.endTrack()}getResponse(){this.cachedReponse=this.app.chartManager.chartAudio.getFrequencyResponse(Vo)}drawEQ(e){const t=e.getContext("2d");t.canvas.width=1200,t.canvas.height=400;const i=()=>{this.app.chartManager.chartAudio&&(t.fillStyle="rgb(11, 14, 26)",t.fillRect(0,0,e.width,e.height),t.fillStyle="rgb(0, 50, 150)",this.drawFrequencies(t,this.app.chartManager.chartAudio.getFrequencyData()),this.app.chartManager.chartAudio.hasFilters()&&(t.fillStyle="rgba(200, 200, 200, 0.2)",this.drawFrequencies(t,this.app.chartManager.chartAudio.getFilteredFrequencyData())),t.fillStyle="rgba(200, 200, 200, 0.5)",this.drawResponse(t),t.fillStyle="rgba(0, 100, 150, 0.5)",t.font="22px Assistant",this.drawGrid(t),this.points.forEach(r=>r.draw(t)),e.closest("#windows")&&requestAnimationFrame(i))};return i}drawFrequencies(e,t){for(let i=0;i{this.app.chartManager.chartAudio.getFilter(t).enabled?e.classList.remove("disabled"):e.classList.add("disabled")}),this.getResponse()}trackFilter(e){this.trackedFilter=e;const t=this.app.chartManager.chartAudio.getFilter(e),[i,r,n,a]=[...this.info.children].map(o=>o.children[1]);i.innerText=t.type,r.innerText=Math.round(t.frequency.value)+" Hz",n.innerText=t.type.endsWith("pass")?"-":ne(t.gain.value,1)+" dB",a.innerText=t.type.endsWith("shelf")?"-":ne(t.Q.value,2)+"",i.style.color=ir[e],r.style.color=ir[e],n.style.color=ir[e],a.style.color=ir[e],r.contentEditable="true",n.contentEditable=`${!t.type.endsWith("pass")}`,a.contentEditable=`${!t.type.endsWith("shelf")}`}endTrack(){setTimeout(()=>{this.trackedFilter=null,this.points.forEach(n=>n.unhighlight());const[e,t,i,r]=[...this.info.children].map(n=>n.children[1]);e.innerText="",t.innerText="",i.innerText="",r.innerText="",t.contentEditable="false",i.contentEditable="false",r.contentEditable="false"})}}const to=16,ir=["#a3001b","#a34f00","#d6d606","#19c402","#02c4ba","#022fc4","#5602c4","#c402b4"];class QT{filterIndex;window;dragging=!1;x=0;y=0;type;response=new Float32Array(Vo.length);_empty=new Float32Array(Vo.length);highlighted=!1;pointSize=.4;constructor(e,t){this.filterIndex=t,this.window=e,this.type=this.window.app.chartManager.chartAudio.getFilter(t).type,this.x=Wo(this.window.app.chartManager.chartAudio.getFilter(t).frequency.value??10),this.getY()}hitTest(e,t){return(e-this.x)*(e-this.x)+(t-this.y)*(t-this.y)<=to*to}canChangeGain(){return this.type=="lowshelf"||this.type=="highshelf"||this.type=="peaking"}canChangeQ(){return!this.type.endsWith("shelf")}getY(){this.type.endsWith("shelf")?this.y=ar(this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).gain.value/2):this.canChangeGain()?this.y=ar(this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).gain.value??0):this.y=St/2}getGain(){if(this.canChangeGain())return this.type.endsWith("shelf")?Vp(this.y)*2:Vp(this.y)}mouseDown(e){this.calcResponse(),this.dragging=!0,this.highlighted=!0,this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).enabled||(this.window.app.chartManager.chartAudio.enableFilter(this.filterIndex),this.window.updateIcons());const t=this.x,i=this.y,r=e.clientX,n=e.clientY,a=l=>{this.x=(l.clientX-r)*2+t,this.canChangeGain()?this.y=(l.clientY-n)*2+i:this.y=St/2,this.x=Ve(this.x,0,gr),this.y=Ve(this.y,this.type.endsWith("shelf")?St/4:ar(24),this.type.endsWith("shelf")?3*St/4:ar(-24)),this.window.app.chartManager.chartAudio.updateFilter(this.filterIndex,{frequency:md(this.x),gain:this.getGain()}),this.window.getResponse(),this.window.trackFilter(this.filterIndex),this.calcResponse()};this.window.trackFilter(this.filterIndex);const o=()=>{kt.animate(this,{0:{pointSize:"inherit"},1:{pointSize:.3}},.3,Kt(.11,.71,.41,.86),()=>{},`eq-point${this.filterIndex}`),this.dragging=!1,window.removeEventListener("mousemove",a),window.removeEventListener("mouseup",o)};kt.animate(this,{0:{pointSize:"inherit"},1:{pointSize:.9}},.3,Kt(.11,.71,.41,.86),()=>{},`eq-point${this.filterIndex}`),window.addEventListener("mousemove",a),window.addEventListener("mouseup",o)}calcResponse(){this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).getFrequencyResponse(KT,this.response,this._empty)}draw(e){const t=this.highlighted||this.window.app.chartManager.chartAudio.getFilter(this.filterIndex).enabled?ir[this.filterIndex]:"#888888";if(e.fillStyle=t+"60",this.dragging)for(let i=0;i{navigator.clipboard.writeText(r.innerText)}),this.outputDiv=r;const n=document.createElement("div");n.classList.add("export-section-label"),n.innerText="Include",i.appendChild(n),Object.keys(this.exportOptions.include).forEach(o=>{const l=document.createElement("input");l.type="checkbox",l.id="en-i-"+o,l.checked=this.exportOptions.include[o],l.onchange=()=>{this.exportOptions.include[o]=l.checked,this.export()};const c=document.createElement("label");c.classList.add("export-label"),c.htmlFor=l.id,c.innerText=o;const u=document.createElement("div");u.replaceChildren(l,c),u.classList.add("export-option"),i.appendChild(u)});const a=document.createElement("div");a.classList.add("export-section-label"),a.innerText="Options",i.appendChild(a),Object.keys(this.exportOptions.options).forEach(o=>{const l=document.createElement("input");l.id="en-o-"+o,l.type="checkbox",l.checked=this.exportOptions.options[o],l.onchange=()=>{this.exportOptions.options[o]=l.checked,this.export()};const c=document.createElement("label");c.classList.add("export-label"),c.htmlFor=l.id,c.innerText=uh[o].label;const u=document.createElement("div");u.replaceChildren(l,c),u.classList.add("export-option"),i.appendChild(u),uh[o].tooltip!==void 0&&zt(u,{content:uh[o].tooltip})}),t.replaceChildren(i,r),e.appendChild(t),this.viewElement.appendChild(e)}export(){let e=`{ `+this.selection.map(t=>{let i=" {";return this.exportOptions.include.Beat&&(i+=this.padNum(t.beat)+","),this.exportOptions.include.Second&&(i+=this.padNum(t.second)+","),this.exportOptions.include.Column&&(this.exportOptions.options.columnOneBased?i+=t.col+1+",":i+=t.col+","),this.exportOptions.include.Type&&(this.exportOptions.options.notitgNoteTypes&&Wp[t.type]!==void 0?i+=Wp[t.type]+",":i+='"'+t.type+'",'),this.exportOptions.include.Quantization&&(i+=t.quant+","),this.exportOptions.include.Length&&Pe(t)&&(this.exportOptions.options.lengthAsNumberIndex?i+=this.padNum(t.hold)+",":i+="length="+this.padNum(t.hold)+","),i.endsWith(",")&&(i=i.slice(0,-1)),i+="}",this.getNumIncludes()==1&&(i=i.replaceAll("{",""),i=i.replaceAll("}","")),i}).join(`, `)+` -}`;this.exportOptions.options.minify&&(e=e.replaceAll(/\s/g,"")),this.outputDiv.innerText=e}getNumIncludes(){return Object.values(this.exportOptions.include).map(e=>+e).reduce((e,t)=>e+t,0)}padNum(e){return this.exportOptions.options.padNumbers?(Math.round(e*1e3)/1e3).toFixed(3):Math.round(e*1e3)/1e3}}const Ms={"dance-single":[{label:"Left",keys:["Left","A"]},{label:"Down",keys:["Down","S"]},{label:"Up",keys:["Up","W"]},{label:"Right",keys:["Right","D"]}],"dance-double":[{label:"P1 Left",keys:["Left"]},{label:"P1 Down",keys:["Down"]},{label:"P1 Up",keys:["Up"]},{label:"P1 Right",keys:["Right"]},{label:"P2 Left",keys:["A"]},{label:"P2 Down",keys:["S"]},{label:"P2 Up",keys:["W"]},{label:"P2 Right",keys:["D"]}],"dance-couple":[{label:"P1 Left",keys:["Left"]},{label:"P1 Down",keys:["Down"]},{label:"P1 Up",keys:["Up"]},{label:"P1 Right",keys:["Right"]},{label:"P2 Left",keys:["A"]},{label:"P2 Down",keys:["S"]},{label:"P2 Up",keys:["W"]},{label:"P2 Right",keys:["D"]}],"dance-solo":[{label:"Left",keys:["Left","A"]},{label:"UpLeft",keys:["Q"]},{label:"Down",keys:["Down","S"]},{label:"Up",keys:["Up","W"]},{label:"UpRight",keys:["E"]},{label:"Right",keys:["Right","D"]}],"dance-solodouble":[{label:"P1 Left",keys:["A"]},{label:"P1 UpLeft",keys:["Q"]},{label:"P1 Down",keys:["S"]},{label:"P1 Up",keys:["W"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 Right",keys:["D"]},{label:"P2 Left",keys:["J"]},{label:"P2 UpLeft",keys:["U"]},{label:"P2 Down",keys:["K"]},{label:"P2 Up",keys:["I"]},{label:"P2 UpRight",keys:["O"]},{label:"P2 Right",keys:["L"]}],"dance-threepanel":[{label:"UpLeft",keys:["Left","Q"]},{label:"Down",keys:["Down","S"]},{label:"UpRight",keys:["Right","E"]}],"dance-threedouble":[{label:"P1 UpLeft",keys:["Left"]},{label:"P1 Down",keys:["Down"]},{label:"P1 UpRight",keys:["Right"]},{label:"P2 UpLeft",keys:["Q"]},{label:"P2 Down",keys:["S"]},{label:"P2 UpRight",keys:["E"]}],"pump-single":[{label:"DownLeft",keys:["Z"]},{label:"UpLeft",keys:["Q"]},{label:"Center",keys:["S"]},{label:"UpRight",keys:["E"]},{label:"DownRight",keys:["C"]}],"pump-double":[{label:"P1 DownLeft",keys:["Z"]},{label:"P1 UpLeft",keys:["Q"]},{label:"P1 Center",keys:["S"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 DownRight",keys:["C"]},{label:"P2 DownLeft",keys:["V"]},{label:"P2 UpLeft",keys:["R"]},{label:"P2 Center",keys:["G"]},{label:"P2 UpRight",keys:["Y"]},{label:"P2 DownRight",keys:["N"]}],"pump-versus":[{label:"P1 DownLeft",keys:["Z"]},{label:"P1 UpLeft",keys:["Q"]},{label:"P1 Center",keys:["S"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 DownRight",keys:["C"]},{label:"P2 DownLeft",keys:["V"]},{label:"P2 UpLeft",keys:["R"]},{label:"P2 Center",keys:["G"]},{label:"P2 UpRight",keys:["Y"]},{label:"P2 DownRight",keys:["N"]}],"pump-couple":[{label:"P1 DownLeft",keys:["Z"]},{label:"P1 UpLeft",keys:["Q"]},{label:"P1 Center",keys:["S"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 DownRight",keys:["C"]},{label:"P2 DownLeft",keys:["V"]},{label:"P2 UpLeft",keys:["R"]},{label:"P2 Center",keys:["G"]},{label:"P2 UpRight",keys:["Y"]},{label:"P2 DownRight",keys:["N"]}],"pump-halfdouble":[{label:"P1 Center",keys:["S"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 DownRight",keys:["C"]},{label:"P2 DownLeft",keys:["V"]},{label:"P2 UpLeft",keys:["R"]},{label:"P2 Center",keys:["G"]}]};class Ie{static app;static userKeybinds=new Map;static userGameplayKeybinds=new Map;static load(e){this.app=e;try{this.loadKeybinds()}catch(t){console.error("Failed to load user keybinds!"),console.error(t.stack),this.userKeybinds.clear(),this.userGameplayKeybinds.clear()}window.addEventListener("keydown",t=>this.checkKey(t,"keydown")),window.addEventListener("keyup",t=>this.checkKey(t,"keyup"))}static checkKey(e,t){if(e.target.classList.contains("inlineEdit")||e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLInputElement||e.target instanceof HTMLButtonElement||["Meta","Control","Shift","Alt"].includes(e.key))return;const i=[];for(let a=0;a(o[u]??c.keys).some(h=>r==h));if(l!=-1){if(e.preventDefault(),this.app.windowManager.getFocusedWindow()?.options?.win_id=="keybind_options"||this.app.windowManager.isBlocked())return;this.app.chartManager[t=="keydown"?"judgeCol":"judgeColUp"](l);return}}const n=Object.keys(wt).filter(a=>!["cut","copy","paste","pasteReplace"].includes(a)).filter(a=>{for(const o of this.getCombosForKeybind(a))if(this.compareModifiers(o.mods,i)&&o.key==r)return!0;return!1}).map(a=>wt[a]);if(n.length>0){if(n.every(a=>a.preventDefault!=!1)&&e.preventDefault(),this.app.windowManager.getFocusedWindow()?.options?.win_id=="keybind_options"||this.app.windowManager.isBlocked())return;for(const a of n){let o=a.disabled;if(o instanceof Function&&(o=o(this.app)),!o&&!(a.disableRepeat&&e.repeat)){t=="keydown"?a.callback(this.app):a.callbackKeyUp?.(this.app);return}}}}static getKeyNameFromCode(e){let t=e;return t.startsWith("Digit")&&(t=t.slice(5)),t.startsWith("Key")&&(t=t.slice(3)),t in Qp&&(t=Qp[t]),t}static getKeybindString(e){return this.getCombosForKeybind(e).map(t=>this.getComboString(t)).join(" / ")}static getComboString(e){const t=yo.filter(i=>e.mods.includes(i)).map(i=>vS[i]).join("");return t+(t!=""?" ":"")+(Jg[e.key]??e.key)}static getCombosForKeybind(e){return e in wt?this.userKeybinds.get(e)??wt[e].combos:(console.log("Couldn't find keybind with id "+e),[])}static getKeysForGameType(e){const t=He.getGameType(e);return t?new Array(t.numCols).fill(null).map((i,r)=>this.userGameplayKeybinds.get(e)?.[r]??Ms[e]?.[r].keys??[]):(console.log("Couldn't find game type with id "+e),[])}static compareModifiers(e,t){if(e.length!=t.length)return!1;for(const i of yo)if((e.includes(i)?1:0)+(t.includes(i)?1:0)==1)return!1;return!0}static compareCombos(e,t){return e.key==t.key&&this.compareModifiers(e.mods,t.mods)}static loadKeybinds(){const e=localStorage.getItem("keybinds");if(e){const i=JSON.parse(e);if(typeof i!="object")return console.error("Couldn't load keybinds from storage");for(const[r,n]of Object.entries(i)){if(!(r in wt)){console.warn("Couldn't load keybind "+r+": key doesn't exist");continue}Array.isArray(n)||console.warn("Couldn't load keybind "+r+": value is not an array"),this.userKeybinds.set(r,n.filter(a=>typeof a.key!="string"||!Array.isArray(a.mods)?(console.warn("Couldn't load keycombo for keybind "+r+": "+JSON.stringify(a)),!1):!0))}}const t=localStorage.getItem("keybindsGP");if(t){const i=JSON.parse(t);if(typeof i!="object")return console.error("Couldn't load gameplay keybinds from storage");for(const[r,n]of Object.entries(i)){if(!He.getGameType(r)){console.warn("Couldn't load gameplay keybinds for gameType "+r+": gameType doesn't exist");continue}Array.isArray(n)||console.warn("Couldn't load gameplay keybind "+r+": value is not an array"),this.userGameplayKeybinds.set(r,n.map((a,o)=>!Array.isArray(a)&&a!==null?(console.warn("Couldn't load gameplay keys for type "+r+" col "+o+": "+JSON.stringify(a)),null):a))}}}static clearSave(){localStorage.removeItem("keybinds"),localStorage.removeItem("keybindsGP")}static setKeybind(e,t){this.userKeybinds.has(e)||this.userKeybinds.set(e,[...wt[e].combos]),this.userKeybinds.get(e)?.push(t),this.checkIsDefault(e),this.saveKeybinds()}static removeKeybind(e,t){this.userKeybinds.has(e)||this.userKeybinds.set(e,[...wt[e].combos]),this.userKeybinds.set(e,this.userKeybinds.get(e).filter(i=>!this.compareCombos(i,t))),this.checkIsDefault(e),this.saveKeybinds()}static revertKeybind(e){this.userKeybinds.delete(e),this.saveKeybinds()}static revertGameplayKeybind(e,t){this.userGameplayKeybinds.has(e)&&(this.userGameplayKeybinds.get(e)[t]=null,this.userGameplayKeybinds.get(e).every(i=>i===null)&&this.userGameplayKeybinds.delete(e)),this.saveKeybinds()}static setGameplayKeybind(e,t,i){this.userGameplayKeybinds.has(e)||this.userGameplayKeybinds.set(e,new Array(He.getGameType(e).numCols).fill(null)),this.userGameplayKeybinds.get(e)[t]==null&&(this.userGameplayKeybinds.get(e)[t]=[...Ms[e]?.[t].keys??[]]),this.userGameplayKeybinds.get(e)[t].push(i),this.checkIsDefaultGameplay(e,t),this.saveKeybinds()}static removeGameplayKeybind(e,t,i){this.userGameplayKeybinds.has(e)||this.userGameplayKeybinds.set(e,new Array(He.getGameType(e).numCols).fill(null)),this.userGameplayKeybinds.get(e)[t]==null&&(this.userGameplayKeybinds.get(e)[t]=[...Ms[e]?.[t].keys??[]]),this.userGameplayKeybinds.get(e)[t]=this.userGameplayKeybinds.get(e)[t].filter(r=>r!=i),this.checkIsDefaultGameplay(e,t),this.saveKeybinds()}static checkIsDefault(e){if(!this.userKeybinds.has(e))return!0;const t=this.userKeybinds.get(e),i=[...wt[e].combos];return t.length!=i.length?!1:t.map(r=>this.getComboString(r)).sort().join("∆")==i.map(r=>this.getComboString(r)).sort().join("∆")?(this.userKeybinds.delete(e),!0):!1}static checkIsDefaultGameplay(e,t){if(!this.userGameplayKeybinds.has(e)||this.userGameplayKeybinds.get(e)[t]===null)return!0;const i=this.userGameplayKeybinds.get(e)[t],r=[...Ms[e]?.[t].keys??[]];return i.length!=r.length?!1:i.sort().join("∆")==r.sort().join("∆")?(this.userGameplayKeybinds.get(e)[t]=null,this.userGameplayKeybinds.get(e).every(n=>n===null)&&this.userGameplayKeybinds.delete(e),!0):!1}static saveKeybinds(){const e={};for(const[i,r]of this.userKeybinds.entries())e[i]=r;localStorage.setItem("keybinds",JSON.stringify(e));const t={};for(const[i,r]of this.userGameplayKeybinds.entries())t[i]=r;localStorage.setItem("keybindsGP",JSON.stringify(t))}static getKeybindTooltip(e){return this.getCombosForKeybind(e).map(i=>{let r=this.getComboString(i);return r==""?"":(r=r.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"),"")}).join("")}static evaluateTaggedTooltip(e,t){t=t.map(r=>r.startsWith("\\")?r.slice(1):this.getKeybindTooltip(r));const i=[];for(let r=0;r"+i.join("")+""}static createKeybindTooltip(e){return(t,...i)=>{Wt(e,{allowHTML:!0,onShow:r=>{r.setContent(this.evaluateTaggedTooltip(t,i))}})}}}class Vg extends Pt{app;allowMods;callback;combo={mods:[],key:""};conflictCheck;listener;constructor(e,t,i,r){super({title:"",width:300,height:168,disableClose:!0,win_id:"keyComboSelector",blocking:!0}),this.app=e,this.allowMods=t,this.callback=i,this.conflictCheck=r??(()=>[]),this.initView()}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("confirmation");const e=document.createElement("div");e.classList.add("padding"),e.style.gap="8px";const t=document.createElement("div");t.classList.add("label"),t.innerText="Input a key combo and select Ok when finished.",e.appendChild(t);const i=document.createElement("input");i.type="text",i.disabled=!0,i.style.fontSize="18px",i.style.height="24px",i.style.flex="0",i.style.textAlign="center",e.appendChild(i);const r=document.createElement("div");r.classList.add("detail"),r.innerText="No conflicts",r.style.flex="1",e.appendChild(r);const n=document.createElement("div");n.classList.add("menu-options");const a=document.createElement("button");a.innerText="Ok",a.onclick=()=>{this.callback(this.combo),this.closeWindow()},a.classList.add("confirm"),a.disabled=!0;const o=document.createElement("button");o.innerText="Cancel",o.onclick=()=>{this.closeWindow()},n.append(a),n.append(o),e.appendChild(n),this.viewElement.appendChild(e),this.listener=l=>{if(["Meta","Control","Shift","Alt","Escape"].includes(l.key))return;if(this.combo.key=Ie.getKeyNameFromCode(l.code),this.allowMods){const u=[];for(let h=0;h=3?r.innerText=`Conflicts with ${c.length} keybinds`:c.length>=1?r.innerText=`Conflicts with ${c.join(",")}`:r.innerText="No conflicts"),l.preventDefault()},window.addEventListener("keydown",this.listener)}onClose(){window.removeEventListener("keydown",this.listener)}}class ZT extends Pt{app;observer;conflictMap=this.calculateConflicts();constructor(e){super({title:"Gameplay Keybind Options",width:600,height:400,disableClose:!1,win_id:"gameplay_keybind_options",blocking:!1}),this.app=e,this.initView()}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("pref-container");const i=document.createElement("div");i.classList.add("pref-scrollers");const r=document.createElement("div");r.classList.add("pref-section-scroller");const n=document.createElement("div");n.classList.add("pref-option-scroller"),i.replaceChildren(r,n),this.observer=new IntersectionObserver(a=>{a.forEach(o=>{const l=o.target.dataset.id,c=r.querySelector(`.pref-section[data-id=${l}]`);c&&(o.intersectionRatio>0?c.classList.add("selected"):c.classList.remove("selected"))})},{}),t.replaceChildren(i),r.replaceChildren(...this.createSections()),n.replaceChildren(...this.createOptions()),e.appendChild(t),this.viewElement.appendChild(e)}createSections(){return Object.keys(He.getTypes()).map(e=>this.createEmptySection(e))}createOptions(){return Object.keys(He.getTypes()).map(e=>{const t=new Array(He.getTypes()[e].numCols).fill(null).map((n,a)=>this.createKeybindItem(e,a)),i=document.createElement("div");i.classList.add("pref-group"),i.dataset.id=e;const r=document.createElement("div");return r.classList.add("pref-group-label"),r.innerText=e,i.replaceChildren(r,...t),this.observer.observe(i),i})}createEmptySection(e){const t=document.createElement("div");return t.classList.add("pref-section"),t.dataset.id=e,t.innerText=e,t.onclick=()=>{t.parentElement.parentElement.querySelector(`.pref-group[data-id=${e}]`).scrollIntoView()},t}createKeybindItem(e,t){const i=document.createElement("div");i.classList.add("pref-keybind"),i.dataset.id=e+"-"+t,i.onclick=o=>{o.target.classList.contains("pref-keybind-combo")||o.target.tagName=="IMG"||this.app.windowManager.openWindow(new Vg(this.app,!1,l=>{Ie.setGameplayKeybind(e,t,l.key),this.conflictMap=this.calculateConflicts(),i.replaceWith(this.createKeybindItem(e,t))},l=>{const c=this.conflictMap.get(e)?.get(l.key)?.map(u=>Ms[u[0]]?.[u[1]].label??"Column "+u[1])??[];return c.includes(Ms[e]?.[t].label??"Column "+t)?"self":c}))};const r=document.createElement("div");r.classList.add("pref-keybind-label"),r.innerText=Ms[e]?.[t].label??"Column "+t;const n=document.createElement("img");n.src=Ce.REVERT,n.style.width="12px",n.addEventListener("click",()=>{Ie.revertGameplayKeybind(e,t),this.conflictMap=this.calculateConflicts(),i.replaceWith(this.createKeybindItem(e,t))}),n.style.display=Ie.checkIsDefaultGameplay(e,t)?"none":"block";const a=document.createElement("div");return a.classList.add("pref-keybind-combos"),a.replaceChildren(...Ie.getKeysForGameType(e)[t].map(o=>{const l=document.createElement("button");return l.classList.add("pref-keybind-combo"),l.innerText=o,this.conflictMap.get(e).get(o).length>1&&l.classList.add("conflict"),l.onclick=()=>{Ie.removeGameplayKeybind(e,t,o),this.conflictMap=this.calculateConflicts(),i.replaceWith(this.createKeybindItem(e,t))},l})),i.replaceChildren(r,n,a),i}calculateConflicts(){const e=new Map;Object.keys(He.getTypes()).forEach(t=>{const i=new Map;Ie.getKeysForGameType(t).forEach((r,n)=>{r.forEach((a,o)=>{i.has(a)||i.set(a,[]),i.get(a).push([t,n,o])})}),e.set(t,i)}),[...this.viewElement.querySelectorAll(".pref-keybind-combo.conflict")].forEach(t=>t.classList.remove("conflict"));for(const t of e.values())for(const i of t.values())i.length!=1&&i.forEach(r=>{const n=this.viewElement.querySelector(`.pref-keybind[data-id=${r[0]}-${r[1]}] .pref-keybind-combos`);n?.children[r[2]]&&n.children[r[2]].classList.add("conflict")});return e}onClose(){this.observer?.disconnect()}}class Wg{static _model;static async getModel(){return this._model||await this._load(),this._model}static async _load(){this._model=[];const e=localStorage.getItem("recentFiles");if(e){try{const t=JSON.parse(e);if(!Array.isArray(t))return;for(const i of t)typeof i!="object"||Array.isArray(i)||typeof i?.name!="string"||typeof i?.path!="string"||this._model.find(r=>r.path==i.path)||this._model.push({name:i.name,path:i.path})}catch{console.log("Failed to load recent file entries");return}await this.saveEntries()}}static async getRecents(){return await this.getModel()}static async addSM(e,t){const i=await this.getModel(),r=i.findIndex(n=>n.path==e);r!=-1&&i.splice(r,1),i.unshift({name:t.properties.TITLE??"Untitled Song",path:e}),this.saveEntries()}static async limitEntries(){(await this.getModel()).splice(15)}static async saveEntries(){this.limitEntries();const e=await Promise.all(this._model.map(async t=>await Fe.hasFile(t.path)));this._model=this._model.filter((t,i)=>e[i]),localStorage.setItem("recentFiles",JSON.stringify(this._model))}}function Zt(s){return!!s.simfileTimingData}class zg{_cache={warpedBeats:new Map,beatsToSeconds:new Map};columns={};offset;buildBeatTimingDataCache(){const e=[];let t=this.getTimingData("BPMS","STOPS","WARPS","DELAYS");t=t.concat(this.getTimingData("WARPS").map(n=>({type:"WARP_DEST",beat:n.beat+n.value,value:n.value})));const i=["WARP_DEST","BPMS","STOPS","WARPS","DELAYS"];t.sort((n,a)=>n.beat==a.beat?i.indexOf(n.type)-i.indexOf(a.type):n.beat-a.beat);const r=this.getOffset();e.push({beat:0,secondBefore:-r,secondOf:-r,secondAfter:-r,secondClamp:-r,bpm:this.getTimingData("BPMS")[0]?.value??120,warped:!1});for(const n of t){if(e.at(-1)?.beat!=n.beat){e.at(-1).secondClamp=Math.max(Math.max(e.at(-2)?.secondClamp??-r,e.at(-2)?.secondAfter??-r),e.at(-1).secondBefore);let a=(n.beat-e.at(-1).beat)*60/e.at(-1).bpm;e.at(-1).warped&&(a=0),e.push({beat:n.beat,secondBefore:e.at(-1).secondAfter+a,secondOf:e.at(-1).secondAfter+a,secondAfter:e.at(-1).secondAfter+a,secondClamp:0,bpm:e.at(-1).bpm,warped:e.at(-1).warped})}n.type=="WARPS"&&(e.at(-1).warped=!0),n.type=="WARP_DEST"&&(e.at(-1).warped=!1),n.type=="BPMS"&&(e.at(-1).bpm=n.value),n.type=="STOPS"&&(e.at(-1).secondAfter+=n.value),n.type=="DELAYS"&&(e.at(-1).secondOf+=n.value,e.at(-1).secondAfter+=n.value)}e.at(-1).secondClamp=Math.max(e.at(-2)?.secondClamp??-r,e.at(-1).secondBefore),this._cache.beatTiming=e,this._cache.warpedBeats.clear(),this._cache.beatsToSeconds.clear()}buildEffectiveBeatTimingDataCache(){const e=[...this.getTimingData("SCROLLS")];let t=0;if(e.length==0){this._cache.effectiveBeatTiming=[];return}e[0].beat!=0&&e.unshift({type:"SCROLLS",beat:0,value:e[0].value??1}),t=e[0].beat;for(let i=0;ir[t])}mergeColumns(e){if(e.length==0)return[];for(e=e.filter(t=>t.length>0);e.length>1;){const t=[];for(let i=0;i=e.length)return n.concat(t.slice(r))}else if(n.push(t[r]),r++,r>=t.length)return n.concat(e.slice(i))}splitEvents(e){const t=new Map;return e.forEach(i=>{t.has(i.type)||t.set(i.type,[]),t.get(i.type).push(i)}),t}splitEventPairs(e){const t=new Map;return e.forEach(i=>{t.has(i[0].type)||t.set(i[0].type,[]),t.get(i[0].type).push(i)}),t}parse(e,t){if(e=="OFFSET"){this.offset=parseFloat(t);return}e in this.columns||this.createColumn(e),this.parseEvents(e,t)}setOffset(e){const t=this.offset;pt.instance.run({action:()=>{this.offset=e,this.reloadCache(["OFFSET"]),q.emit("timingModified"),q.emit("chartModified")},undo:()=>{this.offset=t,this.reloadCache(["OFFSET"]),q.emit("timingModified"),q.emit("chartModified")}})}serialize(e){this.reloadCache();let t="";this.offset&&(t+="#OFFSET:"+this.offset+`; +}`;this.exportOptions.options.minify&&(e=e.replaceAll(/\s/g,"")),this.outputDiv.innerText=e}getNumIncludes(){return Object.values(this.exportOptions.include).map(e=>+e).reduce((e,t)=>e+t,0)}padNum(e){return this.exportOptions.options.padNumbers?(Math.round(e*1e3)/1e3).toFixed(3):Math.round(e*1e3)/1e3}}const Ms={"dance-single":[{label:"Left",keys:["Left","A"]},{label:"Down",keys:["Down","S"]},{label:"Up",keys:["Up","W"]},{label:"Right",keys:["Right","D"]}],"dance-double":[{label:"P1 Left",keys:["Left"]},{label:"P1 Down",keys:["Down"]},{label:"P1 Up",keys:["Up"]},{label:"P1 Right",keys:["Right"]},{label:"P2 Left",keys:["A"]},{label:"P2 Down",keys:["S"]},{label:"P2 Up",keys:["W"]},{label:"P2 Right",keys:["D"]}],"dance-couple":[{label:"P1 Left",keys:["Left"]},{label:"P1 Down",keys:["Down"]},{label:"P1 Up",keys:["Up"]},{label:"P1 Right",keys:["Right"]},{label:"P2 Left",keys:["A"]},{label:"P2 Down",keys:["S"]},{label:"P2 Up",keys:["W"]},{label:"P2 Right",keys:["D"]}],"dance-solo":[{label:"Left",keys:["Left","A"]},{label:"UpLeft",keys:["Q"]},{label:"Down",keys:["Down","S"]},{label:"Up",keys:["Up","W"]},{label:"UpRight",keys:["E"]},{label:"Right",keys:["Right","D"]}],"dance-solodouble":[{label:"P1 Left",keys:["A"]},{label:"P1 UpLeft",keys:["Q"]},{label:"P1 Down",keys:["S"]},{label:"P1 Up",keys:["W"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 Right",keys:["D"]},{label:"P2 Left",keys:["J"]},{label:"P2 UpLeft",keys:["U"]},{label:"P2 Down",keys:["K"]},{label:"P2 Up",keys:["I"]},{label:"P2 UpRight",keys:["O"]},{label:"P2 Right",keys:["L"]}],"dance-threepanel":[{label:"UpLeft",keys:["Left","Q"]},{label:"Down",keys:["Down","S"]},{label:"UpRight",keys:["Right","E"]}],"dance-threedouble":[{label:"P1 UpLeft",keys:["Left"]},{label:"P1 Down",keys:["Down"]},{label:"P1 UpRight",keys:["Right"]},{label:"P2 UpLeft",keys:["Q"]},{label:"P2 Down",keys:["S"]},{label:"P2 UpRight",keys:["E"]}],"pump-single":[{label:"DownLeft",keys:["Z"]},{label:"UpLeft",keys:["Q"]},{label:"Center",keys:["S"]},{label:"UpRight",keys:["E"]},{label:"DownRight",keys:["C"]}],"pump-double":[{label:"P1 DownLeft",keys:["Z"]},{label:"P1 UpLeft",keys:["Q"]},{label:"P1 Center",keys:["S"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 DownRight",keys:["C"]},{label:"P2 DownLeft",keys:["V"]},{label:"P2 UpLeft",keys:["R"]},{label:"P2 Center",keys:["G"]},{label:"P2 UpRight",keys:["Y"]},{label:"P2 DownRight",keys:["N"]}],"pump-versus":[{label:"P1 DownLeft",keys:["Z"]},{label:"P1 UpLeft",keys:["Q"]},{label:"P1 Center",keys:["S"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 DownRight",keys:["C"]},{label:"P2 DownLeft",keys:["V"]},{label:"P2 UpLeft",keys:["R"]},{label:"P2 Center",keys:["G"]},{label:"P2 UpRight",keys:["Y"]},{label:"P2 DownRight",keys:["N"]}],"pump-couple":[{label:"P1 DownLeft",keys:["Z"]},{label:"P1 UpLeft",keys:["Q"]},{label:"P1 Center",keys:["S"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 DownRight",keys:["C"]},{label:"P2 DownLeft",keys:["V"]},{label:"P2 UpLeft",keys:["R"]},{label:"P2 Center",keys:["G"]},{label:"P2 UpRight",keys:["Y"]},{label:"P2 DownRight",keys:["N"]}],"pump-halfdouble":[{label:"P1 Center",keys:["S"]},{label:"P1 UpRight",keys:["E"]},{label:"P1 DownRight",keys:["C"]},{label:"P2 DownLeft",keys:["V"]},{label:"P2 UpLeft",keys:["R"]},{label:"P2 Center",keys:["G"]}]};class Ie{static app;static userKeybinds=new Map;static userGameplayKeybinds=new Map;static load(e){this.app=e;try{this.loadKeybinds()}catch(t){console.error("Failed to load user keybinds!"),console.error(t.stack),this.userKeybinds.clear(),this.userGameplayKeybinds.clear()}window.addEventListener("keydown",t=>this.checkKey(t,"keydown")),window.addEventListener("keyup",t=>this.checkKey(t,"keyup"))}static checkKey(e,t){if(e.target.classList.contains("inlineEdit")||e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLInputElement||e.target instanceof HTMLButtonElement||["Meta","Control","Shift","Alt"].includes(e.key))return;const i=[];for(let a=0;a(o[u]??c.keys).some(h=>r==h));if(l!=-1){if(e.preventDefault(),this.app.windowManager.getFocusedWindow()?.options?.win_id=="keybind_options"||this.app.windowManager.isBlocked())return;this.app.chartManager[t=="keydown"?"judgeCol":"judgeColUp"](l);return}}const n=Object.keys(wt).filter(a=>!["cut","copy","paste","pasteReplace"].includes(a)).filter(a=>{for(const o of this.getCombosForKeybind(a))if(this.compareModifiers(o.mods,i)&&o.key==r)return!0;return!1}).map(a=>wt[a]);if(n.length>0){if(n.every(a=>a.preventDefault!=!1)&&e.preventDefault(),this.app.windowManager.getFocusedWindow()?.options?.win_id=="keybind_options"||this.app.windowManager.isBlocked())return;for(const a of n){let o=a.disabled;if(o instanceof Function&&(o=o(this.app)),!o&&!(a.disableRepeat&&e.repeat)){t=="keydown"?a.callback(this.app):a.callbackKeyUp?.(this.app);return}}}}static getKeyNameFromCode(e){let t=e;return t.startsWith("Digit")&&(t=t.slice(5)),t.startsWith("Key")&&(t=t.slice(3)),t in Qp&&(t=Qp[t]),t}static getKeybindString(e){return this.getCombosForKeybind(e).map(t=>this.getComboString(t)).join(" / ")}static getComboString(e){const t=yo.filter(i=>e.mods.includes(i)).map(i=>vS[i]).join("");return t+(t!=""?" ":"")+(Jg[e.key]??e.key)}static getCombosForKeybind(e){return e in wt?this.userKeybinds.get(e)??wt[e].combos:(console.log("Couldn't find keybind with id "+e),[])}static getKeysForGameType(e){const t=He.getGameType(e);return t?new Array(t.numCols).fill(null).map((i,r)=>this.userGameplayKeybinds.get(e)?.[r]??Ms[e]?.[r].keys??[]):(console.log("Couldn't find game type with id "+e),[])}static compareModifiers(e,t){if(e.length!=t.length)return!1;for(const i of yo)if((e.includes(i)?1:0)+(t.includes(i)?1:0)==1)return!1;return!0}static compareCombos(e,t){return e.key==t.key&&this.compareModifiers(e.mods,t.mods)}static loadKeybinds(){const e=localStorage.getItem("keybinds");if(e){const i=JSON.parse(e);if(typeof i!="object")return console.error("Couldn't load keybinds from storage");for(const[r,n]of Object.entries(i)){if(!(r in wt)){console.warn("Couldn't load keybind "+r+": key doesn't exist");continue}Array.isArray(n)||console.warn("Couldn't load keybind "+r+": value is not an array"),this.userKeybinds.set(r,n.filter(a=>typeof a.key!="string"||!Array.isArray(a.mods)?(console.warn("Couldn't load keycombo for keybind "+r+": "+JSON.stringify(a)),!1):!0))}}const t=localStorage.getItem("keybindsGP");if(t){const i=JSON.parse(t);if(typeof i!="object")return console.error("Couldn't load gameplay keybinds from storage");for(const[r,n]of Object.entries(i)){if(!He.getGameType(r)){console.warn("Couldn't load gameplay keybinds for gameType "+r+": gameType doesn't exist");continue}Array.isArray(n)||console.warn("Couldn't load gameplay keybind "+r+": value is not an array"),this.userGameplayKeybinds.set(r,n.map((a,o)=>!Array.isArray(a)&&a!==null?(console.warn("Couldn't load gameplay keys for type "+r+" col "+o+": "+JSON.stringify(a)),null):a))}}}static clearSave(){localStorage.removeItem("keybinds"),localStorage.removeItem("keybindsGP")}static setKeybind(e,t){this.userKeybinds.has(e)||this.userKeybinds.set(e,[...wt[e].combos]),this.userKeybinds.get(e)?.push(t),this.checkIsDefault(e),this.saveKeybinds()}static removeKeybind(e,t){this.userKeybinds.has(e)||this.userKeybinds.set(e,[...wt[e].combos]),this.userKeybinds.set(e,this.userKeybinds.get(e).filter(i=>!this.compareCombos(i,t))),this.checkIsDefault(e),this.saveKeybinds()}static revertKeybind(e){this.userKeybinds.delete(e),this.saveKeybinds()}static revertGameplayKeybind(e,t){this.userGameplayKeybinds.has(e)&&(this.userGameplayKeybinds.get(e)[t]=null,this.userGameplayKeybinds.get(e).every(i=>i===null)&&this.userGameplayKeybinds.delete(e)),this.saveKeybinds()}static setGameplayKeybind(e,t,i){this.userGameplayKeybinds.has(e)||this.userGameplayKeybinds.set(e,new Array(He.getGameType(e).numCols).fill(null)),this.userGameplayKeybinds.get(e)[t]==null&&(this.userGameplayKeybinds.get(e)[t]=[...Ms[e]?.[t].keys??[]]),this.userGameplayKeybinds.get(e)[t].push(i),this.checkIsDefaultGameplay(e,t),this.saveKeybinds()}static removeGameplayKeybind(e,t,i){this.userGameplayKeybinds.has(e)||this.userGameplayKeybinds.set(e,new Array(He.getGameType(e).numCols).fill(null)),this.userGameplayKeybinds.get(e)[t]==null&&(this.userGameplayKeybinds.get(e)[t]=[...Ms[e]?.[t].keys??[]]),this.userGameplayKeybinds.get(e)[t]=this.userGameplayKeybinds.get(e)[t].filter(r=>r!=i),this.checkIsDefaultGameplay(e,t),this.saveKeybinds()}static checkIsDefault(e){if(!this.userKeybinds.has(e))return!0;const t=this.userKeybinds.get(e),i=[...wt[e].combos];return t.length!=i.length?!1:t.map(r=>this.getComboString(r)).sort().join("∆")==i.map(r=>this.getComboString(r)).sort().join("∆")?(this.userKeybinds.delete(e),!0):!1}static checkIsDefaultGameplay(e,t){if(!this.userGameplayKeybinds.has(e)||this.userGameplayKeybinds.get(e)[t]===null)return!0;const i=this.userGameplayKeybinds.get(e)[t],r=[...Ms[e]?.[t].keys??[]];return i.length!=r.length?!1:i.sort().join("∆")==r.sort().join("∆")?(this.userGameplayKeybinds.get(e)[t]=null,this.userGameplayKeybinds.get(e).every(n=>n===null)&&this.userGameplayKeybinds.delete(e),!0):!1}static saveKeybinds(){const e={};for(const[i,r]of this.userKeybinds.entries())e[i]=r;localStorage.setItem("keybinds",JSON.stringify(e));const t={};for(const[i,r]of this.userGameplayKeybinds.entries())t[i]=r;localStorage.setItem("keybindsGP",JSON.stringify(t))}static getKeybindTooltip(e){return this.getCombosForKeybind(e).map(i=>{let r=this.getComboString(i);return r==""?"":(r=r.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"),"")}).join("")}static evaluateTaggedTooltip(e,t){t=t.map(r=>r.startsWith("\\")?r.slice(1):this.getKeybindTooltip(r));const i=[];for(let r=0;r"+i.join("")+""}static createKeybindTooltip(e){return(t,...i)=>{zt(e,{allowHTML:!0,onShow:r=>{r.setContent(this.evaluateTaggedTooltip(t,i))}})}}}class Vg extends Pt{app;allowMods;callback;combo={mods:[],key:""};conflictCheck;listener;constructor(e,t,i,r){super({title:"",width:300,height:168,disableClose:!0,win_id:"keyComboSelector",blocking:!0}),this.app=e,this.allowMods=t,this.callback=i,this.conflictCheck=r??(()=>[]),this.initView()}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("confirmation");const e=document.createElement("div");e.classList.add("padding"),e.style.gap="8px";const t=document.createElement("div");t.classList.add("label"),t.innerText="Input a key combo and select Ok when finished.",e.appendChild(t);const i=document.createElement("input");i.type="text",i.disabled=!0,i.style.fontSize="18px",i.style.height="24px",i.style.flex="0",i.style.textAlign="center",e.appendChild(i);const r=document.createElement("div");r.classList.add("detail"),r.innerText="No conflicts",r.style.flex="1",e.appendChild(r);const n=document.createElement("div");n.classList.add("menu-options");const a=document.createElement("button");a.innerText="Ok",a.onclick=()=>{this.callback(this.combo),this.closeWindow()},a.classList.add("confirm"),a.disabled=!0;const o=document.createElement("button");o.innerText="Cancel",o.onclick=()=>{this.closeWindow()},n.append(a),n.append(o),e.appendChild(n),this.viewElement.appendChild(e),this.listener=l=>{if(["Meta","Control","Shift","Alt","Escape"].includes(l.key))return;if(this.combo.key=Ie.getKeyNameFromCode(l.code),this.allowMods){const u=[];for(let h=0;h=3?r.innerText=`Conflicts with ${c.length} keybinds`:c.length>=1?r.innerText=`Conflicts with ${c.join(",")}`:r.innerText="No conflicts"),l.preventDefault()},window.addEventListener("keydown",this.listener)}onClose(){window.removeEventListener("keydown",this.listener)}}class ZT extends Pt{app;observer;conflictMap=this.calculateConflicts();constructor(e){super({title:"Gameplay Keybind Options",width:600,height:400,disableClose:!1,win_id:"gameplay_keybind_options",blocking:!1}),this.app=e,this.initView()}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("pref-container");const i=document.createElement("div");i.classList.add("pref-scrollers");const r=document.createElement("div");r.classList.add("pref-section-scroller");const n=document.createElement("div");n.classList.add("pref-option-scroller"),i.replaceChildren(r,n),this.observer=new IntersectionObserver(a=>{a.forEach(o=>{const l=o.target.dataset.id,c=r.querySelector(`.pref-section[data-id=${l}]`);c&&(o.intersectionRatio>0?c.classList.add("selected"):c.classList.remove("selected"))})},{}),t.replaceChildren(i),r.replaceChildren(...this.createSections()),n.replaceChildren(...this.createOptions()),e.appendChild(t),this.viewElement.appendChild(e)}createSections(){return Object.keys(He.getTypes()).map(e=>this.createEmptySection(e))}createOptions(){return Object.keys(He.getTypes()).map(e=>{const t=new Array(He.getTypes()[e].numCols).fill(null).map((n,a)=>this.createKeybindItem(e,a)),i=document.createElement("div");i.classList.add("pref-group"),i.dataset.id=e;const r=document.createElement("div");return r.classList.add("pref-group-label"),r.innerText=e,i.replaceChildren(r,...t),this.observer.observe(i),i})}createEmptySection(e){const t=document.createElement("div");return t.classList.add("pref-section"),t.dataset.id=e,t.innerText=e,t.onclick=()=>{t.parentElement.parentElement.querySelector(`.pref-group[data-id=${e}]`).scrollIntoView()},t}createKeybindItem(e,t){const i=document.createElement("div");i.classList.add("pref-keybind"),i.dataset.id=e+"-"+t,i.onclick=o=>{o.target.classList.contains("pref-keybind-combo")||o.target.tagName=="IMG"||this.app.windowManager.openWindow(new Vg(this.app,!1,l=>{Ie.setGameplayKeybind(e,t,l.key),this.conflictMap=this.calculateConflicts(),i.replaceWith(this.createKeybindItem(e,t))},l=>{const c=this.conflictMap.get(e)?.get(l.key)?.map(u=>Ms[u[0]]?.[u[1]].label??"Column "+u[1])??[];return c.includes(Ms[e]?.[t].label??"Column "+t)?"self":c}))};const r=document.createElement("div");r.classList.add("pref-keybind-label"),r.innerText=Ms[e]?.[t].label??"Column "+t;const n=document.createElement("img");n.src=Ce.REVERT,n.style.width="12px",n.addEventListener("click",()=>{Ie.revertGameplayKeybind(e,t),this.conflictMap=this.calculateConflicts(),i.replaceWith(this.createKeybindItem(e,t))}),n.style.display=Ie.checkIsDefaultGameplay(e,t)?"none":"block";const a=document.createElement("div");return a.classList.add("pref-keybind-combos"),a.replaceChildren(...Ie.getKeysForGameType(e)[t].map(o=>{const l=document.createElement("button");return l.classList.add("pref-keybind-combo"),l.innerText=o,this.conflictMap.get(e).get(o).length>1&&l.classList.add("conflict"),l.onclick=()=>{Ie.removeGameplayKeybind(e,t,o),this.conflictMap=this.calculateConflicts(),i.replaceWith(this.createKeybindItem(e,t))},l})),i.replaceChildren(r,n,a),i}calculateConflicts(){const e=new Map;Object.keys(He.getTypes()).forEach(t=>{const i=new Map;Ie.getKeysForGameType(t).forEach((r,n)=>{r.forEach((a,o)=>{i.has(a)||i.set(a,[]),i.get(a).push([t,n,o])})}),e.set(t,i)}),[...this.viewElement.querySelectorAll(".pref-keybind-combo.conflict")].forEach(t=>t.classList.remove("conflict"));for(const t of e.values())for(const i of t.values())i.length!=1&&i.forEach(r=>{const n=this.viewElement.querySelector(`.pref-keybind[data-id=${r[0]}-${r[1]}] .pref-keybind-combos`);n?.children[r[2]]&&n.children[r[2]].classList.add("conflict")});return e}onClose(){this.observer?.disconnect()}}class Wg{static _model;static async getModel(){return this._model||await this._load(),this._model}static async _load(){this._model=[];const e=localStorage.getItem("recentFiles");if(e){try{const t=JSON.parse(e);if(!Array.isArray(t))return;for(const i of t)typeof i!="object"||Array.isArray(i)||typeof i?.name!="string"||typeof i?.path!="string"||this._model.find(r=>r.path==i.path)||this._model.push({name:i.name,path:i.path})}catch{console.log("Failed to load recent file entries");return}await this.saveEntries()}}static async getRecents(){return await this.getModel()}static async addSM(e,t){const i=await this.getModel(),r=i.findIndex(n=>n.path==e);r!=-1&&i.splice(r,1),i.unshift({name:t.properties.TITLE??"Untitled Song",path:e}),this.saveEntries()}static async limitEntries(){(await this.getModel()).splice(15)}static async saveEntries(){this.limitEntries();const e=await Promise.all(this._model.map(async t=>await Fe.hasFile(t.path)));this._model=this._model.filter((t,i)=>e[i]),localStorage.setItem("recentFiles",JSON.stringify(this._model))}}function Zt(s){return!!s.simfileTimingData}class zg{_cache={warpedBeats:new Map,beatsToSeconds:new Map};columns={};offset;buildBeatTimingDataCache(){const e=[];let t=this.getTimingData("BPMS","STOPS","WARPS","DELAYS");t=t.concat(this.getTimingData("WARPS").map(n=>({type:"WARP_DEST",beat:n.beat+n.value,value:n.value})));const i=["WARP_DEST","BPMS","STOPS","WARPS","DELAYS"];t.sort((n,a)=>n.beat==a.beat?i.indexOf(n.type)-i.indexOf(a.type):n.beat-a.beat);const r=this.getOffset();e.push({beat:0,secondBefore:-r,secondOf:-r,secondAfter:-r,secondClamp:-r,bpm:this.getTimingData("BPMS")[0]?.value??120,warped:!1});for(const n of t){if(e.at(-1)?.beat!=n.beat){e.at(-1).secondClamp=Math.max(Math.max(e.at(-2)?.secondClamp??-r,e.at(-2)?.secondAfter??-r),e.at(-1).secondBefore);let a=(n.beat-e.at(-1).beat)*60/e.at(-1).bpm;e.at(-1).warped&&(a=0),e.push({beat:n.beat,secondBefore:e.at(-1).secondAfter+a,secondOf:e.at(-1).secondAfter+a,secondAfter:e.at(-1).secondAfter+a,secondClamp:0,bpm:e.at(-1).bpm,warped:e.at(-1).warped})}n.type=="WARPS"&&(e.at(-1).warped=!0),n.type=="WARP_DEST"&&(e.at(-1).warped=!1),n.type=="BPMS"&&(e.at(-1).bpm=n.value),n.type=="STOPS"&&(e.at(-1).secondAfter+=n.value),n.type=="DELAYS"&&(e.at(-1).secondOf+=n.value,e.at(-1).secondAfter+=n.value)}e.at(-1).secondClamp=Math.max(e.at(-2)?.secondClamp??-r,e.at(-1).secondBefore),this._cache.beatTiming=e,this._cache.warpedBeats.clear(),this._cache.beatsToSeconds.clear()}buildEffectiveBeatTimingDataCache(){const e=[...this.getTimingData("SCROLLS")];let t=0;if(e.length==0){this._cache.effectiveBeatTiming=[];return}e[0].beat!=0&&e.unshift({type:"SCROLLS",beat:0,value:e[0].value??1}),t=e[0].beat;for(let i=0;ir[t])}mergeColumns(e){if(e.length==0)return[];for(e=e.filter(t=>t.length>0);e.length>1;){const t=[];for(let i=0;i=e.length)return n.concat(t.slice(r))}else if(n.push(t[r]),r++,r>=t.length)return n.concat(e.slice(i))}splitEvents(e){const t=new Map;return e.forEach(i=>{t.has(i.type)||t.set(i.type,[]),t.get(i.type).push(i)}),t}splitEventPairs(e){const t=new Map;return e.forEach(i=>{t.has(i[0].type)||t.set(i[0].type,[]),t.get(i[0].type).push(i)}),t}parse(e,t){if(e=="OFFSET"){this.offset=parseFloat(t);return}e in this.columns||this.createColumn(e),this.parseEvents(e,t)}setOffset(e){const t=this.offset;pt.instance.run({action:()=>{this.offset=e,this.reloadCache(["OFFSET"]),q.emit("timingModified"),q.emit("chartModified")},undo:()=>{this.offset=t,this.reloadCache(["OFFSET"]),q.emit("timingModified"),q.emit("chartModified")}})}serialize(e){this.reloadCache();let t="";this.offset&&(t+="#OFFSET:"+this.offset+`; `);let i=["BPMS","STOPS","WARPS","DELAYS","SPEEDS","SCROLLS","TICKCOUNTS","TIMESIGNATURES","LABELS","COMBOS","FAKES","BGCHANGES","FGCHANGES","ATTACKS"];e=="sm"&&(i=["BPMS","STOPS","TIMESIGNATURES","BGCHANGES","FGCHANGES","ATTACKS"]);for(const r of i)r in this.columns&&(t+=this.formatProperty(e,r));return t}formatProperty(e,t){let r="";const n=a=>ne(a,3).toFixed(3);switch(t){case"ATTACKS":{r=this.columns[t].events.map(o=>`TIME=${o.second}:${o.endType}=${o.value}:MODS=${o.mods}`).join(`: `);break}case"BGCHANGES":case"FGCHANGES":{r=this.columns[t].events.map(o=>[o.beat,o.file,n(o.updateRate),Number(o.crossFade),Number(o.stretchRewind),Number(o.stretchNoLoop),o.effect,o.file2,o.transition,o.color1,o.color2].join("=")).join(`, `);break}case"BPMS":case"DELAYS":case"FAKES":case"SCROLLS":case"WARPS":{r=this.columns[t].events.map(o=>[n(o.beat),n(o.value)].join("=")).join(`, @@ -1238,10 +1238,10 @@ https://github.com/nodeca/pako/blob/main/LICENSE #FGCHANGES:; #KEYSOUNDS:; #ATTACKS:; -`;class nt{view;input;onChange;min=-Number.MAX_VALUE;max=Number.MAX_VALUE;precision;step=1;lastVal="";constructor(e,t,i,r,n,a){this.view=e,this.view.classList.add("spinner"),this.view.onfocus=()=>{o.focus()};const o=document.createElement("input");o.classList.add("spinner-input"),o.type="text",o.autocomplete="off",o.spellcheck=!1,o.onblur=()=>{if(o.value===this.lastVal)return;if(o.value===""){this.onChange?.(void 0);return}const h=na(o.value);if(h===null){o.value=this.lastVal;return}let d=ne(h,this.precision??3);d=Ve(d,this.min,this.max),o.value=this.formatValue(d),this.onChange?.(d)},o.onkeydown=h=>{h.key=="Enter"&&o.blur(),h.key=="Escape"&&(o.value=this.lastVal,o.blur())},o.onfocus=()=>{this.lastVal=o.value},this.input=o,this.min=n??this.min,this.max=a??this.max,this.step=i,this.precision=r,this.setValue(t),e.appendChild(o);const l=document.createElement("div");l.classList.add("spinner-btns"),e.appendChild(l);const c=document.createElement("button");c.classList.add("spinner-up"),c.tabIndex=-1,c.onclick=h=>{let d=i??w.general.spinnerStep;h.getModifierState("Shift")&&(d/=10),!(a!==void 0&&parseFloat(o.value)+d>a)&&(o.value=this.formatValue(parseFloat(o.value)+d),this.onChange?.(parseFloat(o.value)))},l.appendChild(c);const u=document.createElement("button");u.classList.add("spinner-down"),u.tabIndex=-1,u.onclick=h=>{let d=i??w.general.spinnerStep;h.getModifierState("Shift")&&(d/=10),!(n!==void 0&&parseFloat(o.value)-ds.chartManager.loadAudio()}},{title:"Background Image",propName:"BACKGROUND",input:{type:"file",typeName:"image",accept:tr}},{title:"Banner Image",propName:"BANNER",input:{type:"file",typeName:"image",accept:tr}},{title:"CD Title",propName:"CDTITLE",input:{type:"file",typeName:"image",accept:tr}},{title:"CD Image",propName:"CDIMAGE",input:{type:"file",typeName:"image",accept:tr}},{title:"Jacket",propName:"JACKET",input:{type:"file",typeName:"image",accept:tr}},{title:"Disc Image",propName:"DISCIMAGE",input:{type:"file",typeName:"image",accept:tr}}]},{title:"Song",items:[{title:"Song Preview",propName:"SAMPLESTART",input:{type:"custom",create:(s,e,t)=>{const i=t??pt.instance,r=()=>{a.value{(e??p.chartManager.loadedSM).properties.SAMPLESTART=h,(e??p.chartManager.loadedSM).properties.SAMPLELENGTH=d,n.setValue(parseFloat(h)),a.setValue(parseFloat(h)+parseFloat(d))},undo:()=>{(e??s.chartManager.loadedSM).properties.SAMPLESTART=c,(e??s.chartManager.loadedSM).properties.SAMPLELENGTH=u,n.setValue(parseFloat(c)),a.setValue(parseFloat(c)+parseFloat(u))}})},n=nt.create(parseFloat((e??s.chartManager.loadedSM).properties.SAMPLESTART??"0"),void 0,3,0);n.onChange=c=>{if(c===void 0){n.setValue(parseFloat((e??s.chartManager.loadedSM).properties.SAMPLESTART??"0"));return}r()};const a=nt.create(parseFloat((e??s.chartManager.loadedSM).properties.SAMPLESTART??"0")+parseFloat((e??s.chartManager.loadedSM).properties.SAMPLELENGTH??"10"),void 0,3,0);a.onChange=c=>{if(c===void 0){a.setValue(parseFloat((e??s.chartManager.loadedSM).properties.SAMPLESTART??"0")+parseFloat((e??s.chartManager.loadedSM).properties.SAMPLELENGTH??"10"));return}r()};const o=document.createElement("div"),l=document.createElement("div");return l.innerText="to",o.classList.add("flex-row","flex-column-gap"),o.replaceChildren(n.view,l,a.view),o}}}]}];function Xg(s,e,t,i){const r=i??pt.instance;switch(e.input.type){case"custom":return e.input.create(s,t,i);case"string":{const n=document.createElement("input");return n.type="text",n.autocomplete="off",n.spellcheck=!1,n.onkeydown=a=>{a.key=="Enter"&&n.blur()},n.onblur=()=>{const a=(t??s.chartManager.loadedSM).properties[e.propName],o=n.value;r.run({action:l=>{(t??l.chartManager.loadedSM).properties[e.propName]=o,n.value=o},undo:()=>{(t??s.chartManager.loadedSM).properties[e.propName]=a,n.value=a??""}})},n.value=(t??s.chartManager.loadedSM).properties[e.propName]??"",n}case"number":{const n=e.input,a=nt.create(parseFloat((t??s.chartManager.loadedSM).properties[e.propName])??15,n.step,n.precision,n.min,n.max);return a.onChange=o=>{if(o===void 0){a.setValue(parseFloat((t??s.chartManager.loadedSM).properties[e.propName]??"0"));return}const l=(t??s.chartManager.loadedSM).properties[e.propName],c=o.toString();r.run({action:u=>{(t??u.chartManager.loadedSM).properties[e.propName]=c,a.setValue(parseFloat(c))},undo:()=>{(t??s.chartManager.loadedSM).properties[e.propName]=l,a.setValue(parseFloat(l??"0"))}})},a.view}case"file":{const n=e.input,a=e.input.onChange,o=document.createElement("div");o.classList.add("flex-row","flex-column-gap");const l=document.createElement("input");l.type="text",l.autocomplete="off",l.spellcheck=!1,l.placeholder="click to select a file",l.onclick=h=>{h.preventDefault(),l.blur();const d=s.chartManager.smPath.split("/").slice(0,-1).join("/");if(window.nw){const p=document.createElement("input");p.type="file",p.accept=n.accept.join(","),p.onchange=()=>{const m=Fe.getRelativePath(d,p.value),f=(t??s.chartManager.loadedSM).properties[e.propName]??"";r.run({action:g=>{(t??g.chartManager.loadedSM).properties[e.propName]=m,l.value=m},undo:()=>{(t??s.chartManager.loadedSM).properties[e.propName]=f,l.value=f}}),a?.(s)},p.click()}else s.windowManager.openWindow(new pd(s,{title:`Select a${n.typeName.match(/^[aieouAIEOU].*/)?"n":""} ${n.typeName} file...`,accepted_file_types:n.accept,disableClose:!0,callback:p=>{const m=Fe.getRelativePath(d,p),f=(t??s.chartManager.loadedSM).properties[e.propName]??"";r.run({action:g=>{(t??g.chartManager.loadedSM).properties[e.propName]=m,l.value=m},undo:()=>{(t??s.chartManager.loadedSM).properties[e.propName]=f,l.value=f}}),a?.(s)}},(t??s.chartManager.loadedSM).properties[e.propName]?d+"/"+(t??s.chartManager.loadedSM).properties[e.propName]:s.chartManager.smPath))},l.value=(t??s.chartManager.loadedSM).properties[e.propName]??"",o.appendChild(l);const c=document.createElement("button");c.style.height="100%",c.classList.add("delete"),c.disabled=!(t??s.chartManager.loadedSM).properties[e.propName],c.onclick=()=>{l.value="",c.disabled=!0};const u=document.createElement("img");return u.classList.add("icon"),u.style.height="12px",u.src=Ce.TRASH,c.appendChild(u),o.appendChild(c),o}}}class Kg extends Pt{app;sm;actionHistory;fileTable={};constructor(e){super({title:"New Song",width:450,height:492,disableClose:!0,win_id:"sm_properties",blocking:!0});const t=new Blob([iS],{type:"text/plain"}),i=new File([t],"song.sm",{type:"text/plain"});this.sm=new Yg(i),this.app=e,this.actionHistory=new pt(this.app),this.initView()}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("sm-properties");const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("label"),t.innerText="Apply to",jg.forEach(l=>{const c=document.createElement("div");c.classList.add("sm-container");const u=document.createElement("div");u.classList.add("sm-title"),u.innerText=l.title;const h=document.createElement("div");h.classList.add("property-grid"),l.items.forEach(d=>{const p=document.createElement("div");p.classList.add("label"),p.innerText=d.title,h.appendChild(p),d.input.type=="file"?h.appendChild(this.createFileElement(d.propName,d.input.typeName)):h.appendChild(Xg(this.app,d,this.sm,this.actionHistory))}),c.appendChild(u),c.appendChild(h),e.appendChild(c)});const i=document.createElement("div");i.classList.add("menu-options");const r=document.createElement("div");r.classList.add("menu-left");const n=document.createElement("div");n.classList.add("menu-right"),i.appendChild(r),i.appendChild(n);const a=document.createElement("button");a.innerText="Cancel",a.onclick=()=>{this.closeWindow()};const o=document.createElement("button");o.innerText="Create",o.classList.add("confirm"),o.onclick=()=>{this.sm.properties.MUSIC===void 0||this.sm.properties.MUSIC===""?this.app.windowManager.openWindow(new fd(this.app,"No audio file uploaded","Are you sure you want to create a file with no audio?",[{type:"confirm",label:"Yes",callback:()=>{this.createSong(),this.closeWindow()}},{type:"default",label:"No"}])):(this.createSong(),this.closeWindow())},r.appendChild(a),n.appendChild(o),e.appendChild(i),this.viewElement.appendChild(e)}async createSong(){let e=this.sm.properties.TITLE;if(window.nw){const t=nw.require("path"),i=document.createElement("input");i.type="file",i.nwsaveas=e+".sm",i.onchange=async()=>{const r=t.basename(i.value,t.extname(i.value));e=t.dirname(i.value);const n=t.join(e,r+".sm");await Fe.writeFile(n,this.sm.serialize("sm")),await Promise.all(Object.entries(this.fileTable).map(a=>Fe.writeFile(e+`/${a[0]}`,a[1]))),await this.app.chartManager.loadSM(n),this.app.windowManager?.getWindowById("select_sm_initial")?.closeWindow()},i.click()}else{if(await Fe.getDirectoryHandle(e)){let t=2;for(;await Fe.getDirectoryHandle(e);)e=`${this.sm.properties.TITLE} ${t++}`}await Fe.writeFile(e+"/song.sm",this.sm.serialize("sm")),await Promise.all(Object.entries(this.fileTable).map(t=>Fe.writeFile(e+`/${t[0]}`,t[1]))),await this.app.chartManager.loadSM(e+"/song.sm"),this.app.windowManager?.getWindowById("select_sm_initial")?.closeWindow()}}createFileElement(e,t){const i=document.createElement("div");i.classList.add("flex-row","flex-column-gap");const r=document.createElement("input");r.type="text",r.autocomplete="off",r.spellcheck=!1,r.placeholder="click to upload a file",r.style.color="white",r.readOnly=!0,r.onclick=o=>{o.preventDefault(),r.blur();const l=document.createElement("input");l.type="file",l.accept=t=="audio"?"audio/*":"image/*",l.onchange=()=>{const c=l.files?.[0];if(!c)return;this.sm.properties[e]&&this.fileTable[this.sm.properties[e]]&&delete this.fileTable[this.sm.properties[e]];let u=c.name;for(;this.fileTable[c.name]&&(this.fileTable[c.name].size!=c.size||this.fileTable[c.name].type!=c.type);)u="_"+u;this.fileTable[u]=c,r.value=u,this.sm.properties[e]=r.value,n.disabled=!1},l.click()},r.value=this.sm.properties[e]??"",i.appendChild(r);const n=document.createElement("button");n.style.height="100%",n.classList.add("delete"),n.disabled=!0,n.onclick=()=>{this.sm.properties[e]&&this.fileTable[this.sm.properties[e]]&&delete this.fileTable[this.sm.properties[e]],this.sm.properties[e]=void 0,r.value="",n.disabled=!0};const a=document.createElement("img");return a.classList.add("icon"),a.style.height="12px",a.src=Ce.TRASH,n.appendChild(a),i.appendChild(n),i}}class qg extends Pt{app;keyHandler;constructor(e,t=!0){super({title:"Open a Song",width:400,height:320,disableClose:t,win_id:"select_sm_initial"}),this.app=e,this.keyHandler=this.handleKeyEvent.bind(this),window.addEventListener("keydown",this.keyHandler),this.initView(),q.on("resize",()=>{this.move(window.innerWidth/2-this.options.width/2,window.innerHeight/2-this.options.height/2)})}onClose(){window.removeEventListener("keydown",this.keyHandler)}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("open-container"),e.appendChild(t);const i=document.createElement("div");i.classList.add("top-container");const r=document.createElement("div");r.classList.add("separator"),r.style.margin="10px";const n=document.createElement("div");n.classList.add("bottom-container"),t.appendChild(i),t.appendChild(r),t.appendChild(n);const a=document.createElement("button");a.style.display="flex",a.style.flexDirection="column",a.style.padding="10px",a.style.backgroundColor="#414352",i.appendChild(a);const o=document.createElement("img");o.src=Ce.UPLOAD,o.classList.add("icon"),o.style.width="30px",o.style.height="30px",a.appendChild(o);const l=document.createElement("div");l.innerText=window.nw?"Open an existing song":"Import a song folder",a.appendChild(l),a.onclick=()=>{if(window.nw){const m=document.createElement("input");m.type="file",m.accept=".sm,.ssc",m.onchange=()=>{this.app.chartManager.loadSM(m.value),this.closeWindow()},m.click()}else this.app.windowManager.openWindow(new pd(this.app,{title:"Select an sm/ssc file...",accepted_file_types:[".sm",".ssc"],disableClose:!0,callback:m=>{this.app.chartManager.loadSM(m),this.closeWindow()}}))};const c=document.createElement("button");c.style.display="flex",c.style.flexDirection="column",c.style.padding="10px",c.style.backgroundColor="#506352",i.appendChild(c);const u=document.createElement("img");u.src=Ce.PLUS,u.classList.add("icon"),u.style.width="30px",u.style.height="30px",c.appendChild(u);const h=document.createElement("div");h.innerText="New Song",c.appendChild(h),c.onclick=()=>{this.app.windowManager.openWindow(new Kg(this.app))};const d=document.createElement("div");d.innerText="Recently Opened",d.classList.add("title"),n.appendChild(d);const p=document.createElement("div");p.classList.add("recent-selector"),n.appendChild(p),Wg.getRecents().then(m=>m.forEach(f=>{const g=document.createElement("div");g.classList.add("recent-item");const y=document.createElement("div");y.classList.add("recent-name"),y.innerText=f.name;const b=document.createElement("div");b.classList.add("recent-path"),b.innerText=f.path,g.appendChild(y),g.appendChild(b),g.onclick=()=>{p.querySelectorAll(".selected").forEach(A=>A.classList.remove("selected")),g.classList.add("selected")},g.ondblclick=()=>{this.app.chartManager.loadSM(f.path),this.closeWindow()},p.appendChild(g)})),this.viewElement.appendChild(e)}handleKeyEvent(e){if(!this.windowElement.classList.contains("focused"))return;const t=this.viewElement.querySelector(".selected");if(t){if(e.code=="ArrowUp"){e.preventDefault(),e.stopImmediatePropagation();const i=t.previousElementSibling;i&&(t.parentElement.querySelectorAll(".selected").forEach(r=>r.classList.remove("selected")),i.classList.add("selected"),Jn(i,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}))}if(e.code=="ArrowDown"){e.preventDefault(),e.stopImmediatePropagation();const i=t.nextElementSibling;i&&(t.parentElement.querySelectorAll(".selected").forEach(r=>r.classList.remove("selected")),i.classList.add("selected"),Jn(i,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}))}}}}function FC(){const s=new URLSearchParams(location.search),e=s.get("flags");if(e!=null){const n=new Set(e.split("").map(a=>rS[a]).filter(a=>a));for(const a of n.values())Be[a]=!Be[a]}const t=s.get("url");if(t!=null)try{Be.url=new URL(t).toString()}catch{_e.createFormatted("Invalid url "+t,"warn"),Be.url=null}const i=s.get("chartIndex");if(i!=null)try{Be.chartIndex=parseInt(i)}catch{_e.createFormatted("Invalid chartIndex "+i,"warn"),Be.chartIndex=null}const r=s.get("chartType");r!==null&&(He.getGameType(r)?Be.chartType=r:(_e.createFormatted("Invalid chartType "+r,"warn"),Be.chartType=null))}const sS={viewMode:{char:"V",name:"Force view mode (disables record mode)"},menuBar:{char:"M",name:"Hide menu bar"},playbackOptions:{char:"o",name:"Hide playback options"},barlines:{char:"B",name:"Hide barlines, waveform, and timing boxes"},assist:{char:"A",name:"Disable assist sounds"},recordMode:{char:"R",name:"Disable record mode"},playMode:{char:"P",name:"Disable play mode"},layout:{char:"L",name:"Hide note layout"},status:{char:"S",name:"Hide status bar"},autoPlay:{char:"a",name:"Play automatically"},openWindows:{char:"O",name:"Disable opening windows"},hidePoweredByText:{char:"H",name:'Hide "Powered by SMEditor" text'}},rS=Object.fromEntries(Object.entries(sS).map(([s,e])=>[e.char,s])),Be={viewMode:!1,menuBar:!0,playbackOptions:!0,barlines:!0,assist:!0,recordMode:!0,playMode:!0,layout:!0,status:!0,autoPlay:!1,hidePoweredByText:!1,openWindows:!0,url:null,chartIndex:null,chartType:null},Gn={file:{type:"menu",title:"File",options:[{type:"selection",id:"newSong"},{type:"selection",id:"openSong"},{type:"separator"},{type:"selection",id:"save"},{type:"selection",id:"export"}]},edit:{type:"menu",title:"Edit",options:[{type:"selection",id:"cut"},{type:"selection",id:"copy"},{type:"selection",id:"paste"},{type:"selection",id:"pasteReplace"},{type:"separator"},{type:"selection",id:"undo"},{type:"selection",id:"redo"},{type:"separator"},{type:"checkbox",id:"mousePlacement",checked:()=>w.chart.mousePlacement}]},view:{type:"menu",title:"View",options:[{type:"dropdown",title:"Cursor",options:[{type:"selection",id:"cursorUp"},{type:"selection",id:"cursorDown"},{type:"separator"},{type:"selection",id:"previousNote"},{type:"selection",id:"nextNote"},{type:"separator"},{type:"selection",id:"previousMeasure"},{type:"selection",id:"nextMeasure"},{type:"separator"},{type:"selection",id:"jumpChartStart"},{type:"selection",id:"jumpChartEnd"},{type:"separator"},{type:"selection",id:"jumpSongStart"},{type:"selection",id:"jumpSongEnd"}]},{type:"dropdown",title:"Snap",options:[{type:"selection",id:"decreaseSnap"},{type:"selection",id:"increaseSnap"}]},{type:"dropdown",title:"Scroll",options:[{type:"checkbox",id:"XMod",checked:()=>!w.chart.CMod},{type:"checkbox",id:"CMod",checked:()=>w.chart.CMod},{type:"separator"},{type:"selection",id:"increaseScrollSpeed"},{type:"selection",id:"decreaseScrollSpeed"}]},{type:"dropdown",title:"Zoom",options:[{type:"selection",id:"zoomIn"},{type:"selection",id:"zoomOut"},{type:"separator"},{type:"selection",id:"zoomDefault"}]},{type:"separator"},{type:"selection",id:"playMode"},{type:"selection",id:"playModeStart"},{type:"separator"},{type:"selection",id:"recordMode"},{type:"selection",id:"recordModeStart"},{type:"separator"},{type:"checkbox",id:"reverse",checked:()=>w.chart.reverse},{type:"checkbox",id:"hideWarpedArrows",checked:()=>w.chart.hideWarpedArrows},{type:"checkbox",id:"hideFakedArrows",checked:()=>w.chart.hideFakedArrows},{type:"checkbox",id:"doSpeedChanges",checked:()=>w.chart.doSpeedChanges}]},chart:{type:"menu",title:"Chart",options:[{type:"selection",id:"openChart"},{type:"separator"},{type:"selection",id:"previousChart"},{type:"selection",id:"nextChart"},{type:"separator"},{type:"selection",id:"songProperties"},{type:"separator"},{type:"selection",id:"timingDataRow"}]},selection:{type:"menu",title:"Selection",options:[{type:"dropdown",title:"Convert",options:[{type:"selection",id:"convertHoldsRolls"},{type:"selection",id:"convertRollsHolds"},{type:"selection",id:"swapHoldsRolls"},{type:"separator"},{type:"selection",id:"convertHoldsTaps"},{type:"selection",id:"convertTapsMines"},{type:"selection",id:"convertTapsLifts"},{type:"selection",id:"convertTapsFakes"}]},{type:"dropdown",title:"Mirror",options:[{type:"selection",id:"mirrorHorizontally"},{type:"selection",id:"mirrorVertically"},{type:"selection",id:"mirrorBoth"}]},{type:"dropdown",title:"Stretch",options:[{type:"selection",id:"expand2to1"},{type:"selection",id:"expand3to2"},{type:"selection",id:"expand4to3"},{type:"separator"},{type:"selection",id:"compress1to2"},{type:"selection",id:"compress2to3"},{type:"selection",id:"compress3to4"}]},{type:"dropdown",title:"Quantize",options:[{type:"selection",id:"quantize4th"},{type:"selection",id:"quantize8th"},{type:"selection",id:"quantize12th"},{type:"selection",id:"quantize16th"},{type:"selection",id:"quantize24th"},{type:"selection",id:"quantize32nd"},{type:"selection",id:"quantize48th"},{type:"selection",id:"quantize96th"}]},{type:"separator"},{type:"selection",id:"setSongPreview"},{type:"separator"},{type:"selection",id:"exportNotedata"},{type:"separator"},{type:"selection",id:"selectBeforeCursor"},{type:"selection",id:"selectAfterCursor"},{type:"selection",id:"selectAll"}]},audio:{type:"menu",title:"Audio",options:[{type:"selection",id:"detectSync"},{type:"separator"},{type:"checkbox",id:"assistTick",checked:()=>w.audio.assistTick&&Be.assist},{type:"checkbox",id:"metronome",checked:()=>w.audio.metronome&&Be.assist},{type:"separator"},{type:"dropdown",title:()=>"Master Volume ("+Math.round(w.audio.masterVolume*100)+"%)",options:[{type:"selection",id:"volumeUp"},{type:"selection",id:"volumeDown"}]},{type:"dropdown",title:()=>"Song Volume ("+Math.round(w.audio.songVolume*100)+"%)",options:[{type:"selection",id:"songVolumeUp"},{type:"selection",id:"songVolumeDown"}]},{type:"dropdown",title:()=>"Effect Volume ("+Math.round(w.audio.soundEffectVolume*100)+"%)",options:[{type:"selection",id:"effectvolumeUp"},{type:"selection",id:"effectvolumeDown"}]},{type:"dropdown",title:()=>"Playback rate ("+Math.round(w.audio.rate*100)+"%)",options:[{type:"selection",id:"rateUp"},{type:"selection",id:"rateDown"},{type:"separator"},{type:"selection",id:"rateDefault"}]},{type:"separator"},{type:"selection",id:"showEq"}]},preferences:{type:"menu",title:"Preferences",options:[{type:"selection",id:"options"},{type:"selection",id:"keybinds"},{type:"selection",id:"gameplayKeybinds"},{type:"selection",id:"noteskinWindow"}]},help:{type:"menu",title:"Help",options:[{type:"selection",id:"openGuide"}]}},zp=["cut","copy","paste","pasteReplace"],Yp={edit:[{ids:["delete"],after:"redo"},{ids:["previousNoteType","nextNoteType","noteTypeTap","noteTypeMine","noteTypeFake","noteTypeLift","quant4","quant8","quant12","quant16","quant24","quant32","quant48","quant96","quant192"],after:"mousePlacement"}],view:[{ids:["playback","selectRegion"]}],debug:[{ids:["showFPSCounter","showDebugTimers"]}]};class Di extends Pt{static GROUPS;app;observer;searchDropdown;conflictMap=this.calculateConflicts();constructor(e){super({title:"Keybind Options",width:600,height:400,disableClose:!1,win_id:"keybind_options",blocking:!1}),this.app=e,Di.GROUPS||(Di.GROUPS=Di.createGroups()),this.initView()}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("pref-container");const i=document.createElement("div");i.classList.add("pref-search");const r=document.createElement("input");r.classList.add("pref-search-bar"),r.type="text",r.placeholder="Search for a keybind...",r.oninput=()=>{o.replaceChildren(...this.createSections(r.value)),l.replaceChildren(...this.createOptions(r.value))};const n=di.create(["Name","Key"],"Name");n.onChange(()=>{o.replaceChildren(...this.createSections(r.value)),l.replaceChildren(...this.createOptions(r.value))}),this.searchDropdown=n,i.replaceChildren(r,n.view);const a=document.createElement("div");a.classList.add("pref-scrollers");const o=document.createElement("div");o.classList.add("pref-section-scroller");const l=document.createElement("div");l.classList.add("pref-option-scroller"),a.replaceChildren(o,l),this.observer=new IntersectionObserver(c=>{c.forEach(u=>{const h=u.target.dataset.id,d=o.querySelector(`.pref-section[data-id=${h}]`);d&&(u.intersectionRatio>0?d.classList.add("selected"):d.classList.remove("selected"))})},{}),t.replaceChildren(i,a),o.replaceChildren(...this.createSections()),l.replaceChildren(...this.createOptions()),e.appendChild(t),this.viewElement.appendChild(e)}createSections(e=""){return Object.keys(Di.GROUPS).filter(t=>Di.GROUPS[t].some(i=>this.filterID(e,i))).map(t=>this.createEmptySection(Gn[t]?.title??Ec(t),t))}createOptions(e=""){return Object.keys(Di.GROUPS).filter(t=>Di.GROUPS[t].some(i=>this.filterID(e,i))).map(t=>{const i=Di.GROUPS[t].filter(a=>this.filterID(e,a)).map(a=>this.createKeybindItem(a)),r=document.createElement("div");r.classList.add("pref-group"),r.dataset.id=t;const n=document.createElement("div");return n.classList.add("pref-group-label"),n.innerText=Gn[t]?.title??Ec(t),r.replaceChildren(n,...i),this.observer.observe(r),r})}static createGroups(){const e=Object.keys(wt),t={};return Object.keys(Gn).forEach(i=>{t[i]=this.expandMenubarOptions(Gn[i]).map(r=>{const n=e.indexOf(r);return n!=-1&&e.splice(n,1),r}).filter(r=>!zp.includes(r))}),Object.keys(Yp).forEach(i=>{t[i]===void 0&&(t[i]=[]),Yp[i].forEach(r=>{const n=r.after?t[i].findIndex(a=>r.after==a)+1:0;t[i].splice(n,0,...r.ids),r.ids.forEach(a=>{const o=e.indexOf(a);o!=-1&&e.splice(o,1)})})}),zp.forEach(i=>{const r=e.indexOf(i);r!=-1&&e.splice(r,1)}),e.length>0&&(console.warn("Missing keybinds not shown:"),console.warn(e)),t}filterID(e,t){if((this.searchDropdown?.value??"Name")=="Name")return(wt[t].bindLabel??wt[t].label).toLowerCase().includes(e.toLowerCase());{const i=Ie.getCombosForKeybind(t);if(i.some(n=>n.key.toLowerCase().includes(e.toLowerCase()))||i.some(n=>(Jg[n.key]??n.key).toLowerCase().includes(e.toLowerCase())))return!0;let r=e.split(" ").map(n=>n.toLowerCase());return i.some(n=>(r.includes("shift")||r.includes("⇧"))&&!n.mods.includes(Hn.SHIFT)||(r.includes("ctrl")||r.includes("control")||r.includes("⌃"))&&!n.mods.includes(Hn.CTRL)||(r.includes("meta")||r.includes("cmd")||r.includes("command")||r.includes("⌘"))&&!n.mods.includes(Hn.META)||(r.includes("alt")||r.includes("⌥"))&&!n.mods.includes(Hn.ALT)?!1:(r=r.filter(a=>!["shift","ctrl","control","meta","cmd","command","alt","⇧","⌃","⌘","⌥",""].includes(a)),r.length==0||r.length==1&&n.key.toLowerCase().includes(r[0])))}}static expandMenubarOptions(e){switch(e.type){case"menu":case"dropdown":return e.options.map(t=>this.expandMenubarOptions(t)).flat();case"selection":case"checkbox":return[e.id];case"separator":return[]}}createEmptySection(e,t){const i=document.createElement("div");return i.classList.add("pref-section"),i.dataset.id=t,i.innerText=e,i.onclick=()=>{i.parentElement.parentElement.querySelector(`.pref-group[data-id=${t}]`).scrollIntoView()},i}createKeybindItem(e){const t=document.createElement("div");t.classList.add("pref-keybind"),t.dataset.id=e,t.onclick=a=>{a.target.classList.contains("pref-keybind-combo")||a.target.tagName=="IMG"||this.app.windowManager.openWindow(new Vg(this.app,!0,o=>{Ie.setKeybind(e,o),this.conflictMap=this.calculateConflicts(),t.replaceWith(this.createKeybindItem(e))},o=>{const l=this.conflictMap.get(Ie.getComboString(o))?.map(c=>c[0]).map(c=>wt[c].bindLabel??wt[c].label)??[];return l.includes(e)?"self":l}))};const i=document.createElement("div");i.classList.add("pref-keybind-label"),i.innerText=wt[e].bindLabel??wt[e].label;const r=document.createElement("img");r.src=Ce.REVERT,r.style.width="12px",r.addEventListener("click",()=>{Ie.revertKeybind(e),this.conflictMap=this.calculateConflicts(),t.replaceWith(this.createKeybindItem(e))}),r.style.display=Ie.checkIsDefault(e)?"none":"block";const n=document.createElement("div");return n.classList.add("pref-keybind-combos"),n.replaceChildren(...Ie.getCombosForKeybind(e).map(a=>{const o=document.createElement("button");return o.classList.add("pref-keybind-combo"),o.innerText=Ie.getComboString(a),this.conflictMap.get(Ie.getComboString(a)).length>1&&o.classList.add("conflict"),o.onclick=()=>{Ie.removeKeybind(e,a),this.conflictMap=this.calculateConflicts(),t.replaceWith(this.createKeybindItem(e))},o})),t.replaceChildren(i,r,n),t}calculateConflicts(){const e=new Map;Object.keys(wt).forEach(t=>{Ie.getCombosForKeybind(t).forEach((i,r)=>{const n=Ie.getComboString(i);e.has(n)||e.set(n,[]),e.get(n).push([t,r])})}),[...this.viewElement.querySelectorAll(".pref-keybind-combo.conflict")].forEach(t=>t.classList.remove("conflict"));for(const t of e.values())t.length!=1&&t.forEach(i=>{const r=this.viewElement.querySelector(`.pref-keybind[data-id=${i[0]}] .pref-keybind-combos`);r?.children[i[1]]&&r.children[i[1]].classList.add("conflict")});return e}onClose(){this.observer?.disconnect()}}class st{static noteskins=new Map;static register(e){for(const t of new Set(e.gameTypes))st.noteskins.has(t)||st.noteskins.set(t,new Map),st.noteskins.get(t).set(e.id,e)}static async getNoteskin(e,t){const i=this.noteskins.get(e.id);if(!i||i.size==0)return;const r=i.get(t)??[...i.values()][0];return i.get(t)||_e.createFormatted(`Couldn't find the noteskin ${t}!`,"warn"),await r.load()}static getNoteskinData(e,t){const i=this.noteskins.get(e.id);return!i||i.size==0?void 0:i.get(t)??[...i.values()][0]}static getNoteskins(){return this.noteskins}static getPreviewUrl(e,t){return this.getNoteskinData(e,t).preview}}st.register({id:"default",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-de4438a8.js"),["Noteskin-de4438a8.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-17ffcc02.png",self.location).href,title:"Scalable",subtitle:"Pete-Lawrence"});st.register({id:"cf-chrome",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-ed5342e2.js"),["Noteskin-ed5342e2.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-40b76b28.png",self.location).href,title:"CF_CHROME",subtitle:"Pete-Lawrence"});st.register({id:"ddr-note",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-bbdd3e6c.js"),["Noteskin-bbdd3e6c.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-b8f75a15.png",self.location).href,title:"DDR-Note",subtitle:"Pete-Lawrence"});st.register({id:"ddr-note-itg",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-1c251d86.js"),["Noteskin-1c251d86.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-f113aacc.png",self.location).href,title:"DDR-Note (ITG quants)",subtitle:"Pete-Lawrence"});st.register({id:"ddr-rainbow",gameTypes:["dance-single","dance-double","dance-couple"],load:async()=>(await qe(()=>import("./Noteskin-29d3e266.js"),["Noteskin-29d3e266.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-0f9b00cd.png",self.location).href,title:"DDR-Rainbow",subtitle:"LemmaEOF"});st.register({id:"ddr-rainbow-itg",gameTypes:["dance-single","dance-double","dance-couple"],load:async()=>(await qe(()=>import("./Noteskin-c62aca3b.js"),["Noteskin-c62aca3b.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-2fd7d50c.png",self.location).href,title:"DDR-Rainbow (ITG quants)",subtitle:"LemmaEOF"});st.register({id:"metal",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-99787346.js"),["Noteskin-99787346.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-26b1bdce.png",self.location).href,title:"Metal",subtitle:"Pete-Lawrence"});st.register({id:"pastel",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-b586fc01.js"),["Noteskin-b586fc01.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-d67630f1.png",self.location).href,title:"Pastel",subtitle:"halcyoniix"});st.register({id:"dividebyzero",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-396091da.js"),["Noteskin-396091da.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-d763e667.png",self.location).href,title:"DivideByZero",subtitle:"MinaciousGrace"});st.register({id:"subtractbyzero",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-64e950b9.js"),["Noteskin-64e950b9.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-72ea0444.png",self.location).href,title:"SubtractByZero",subtitle:"qwertyzoro/Vague"});st.register({id:"sm4",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-771bb0f0.js"),["Noteskin-771bb0f0.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-3514cbb3.png",self.location).href,title:"SM4",subtitle:"from SM4"});st.register({id:"sm4-bold",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-28290895.js"),["Noteskin-28290895.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-9fe2bd96.png",self.location).href,title:"SM4 Bold",subtitle:"from SM4"});st.register({id:"starlight-vivid",gameTypes:["dance-single","dance-double","dance-couple"],load:async()=>(await qe(()=>import("./Noteskin-3fe335eb.js"),["Noteskin-3fe335eb.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-5ecfc22a.png",self.location).href,title:"SLNEXXT-vivid",subtitle:"from STARLiGHT-NEXXT"});st.register({id:"default",gameTypes:["pump-single","pump-double","pump-couple","pump-versus","pump-halfdouble"],load:async()=>(await qe(()=>import("./Noteskin-e7e2ba35.js"),["Noteskin-e7e2ba35.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-d6d59d37.png",self.location).href,title:"Fiesta"});st.register({id:"fourv2",gameTypes:["pump-single","pump-double","pump-couple","pump-versus","pump-halfdouble"],load:async()=>(await qe(()=>import("./Noteskin-66d5ec9c.js"),["Noteskin-66d5ec9c.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-5d9781d2.png",self.location).href,title:"FourV2",subtitle:"Jousway"});st.register({id:"prime",gameTypes:["pump-single","pump-double","pump-couple","pump-versus","pump-halfdouble"],load:async()=>(await qe(()=>import("./Noteskin-c3debd3b.js"),["Noteskin-c3debd3b.js","AnimatedSprite-ffeea718.js","HoldBody-9276f45c.js"])).default,preview:new URL("/smeditor/assets/preview-4f79831b.png",self.location).href,title:"Prime"});const nS="/smeditor/assets/preview-747db171.png";class aS extends Pt{app;grid;lastGameType=null;constructor(e){super({title:"Noteskin Selection",width:600,height:400,disableClose:!1,win_id:"noteskin-selection",blocking:!1}),this.app=e,this.initView(),this.loadGrid(),q.on("chartLoaded",()=>{const t=e.chartManager.loadedChart.gameType.id;this.lastGameType!=t&&this.loadGrid()})}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("input");t.classList.add("pref-search-bar"),t.type="text",t.placeholder="Search for a noteskin...",t.oninput=()=>{this.filterGrid(t.value)};const i=document.createElement("div");i.classList.add("noteskin-grid"),this.grid=i,e.replaceChildren(t,i),this.viewElement.appendChild(e)}loadGrid(){if(this.grid.replaceChildren(),!this.app.chartManager.loadedChart)return;const e=this.app.chartManager.loadedChart.gameType;this.lastGameType=e.id;const t=st.getNoteskins().get(e.id);if(t)for(const[i,r]of t.entries()){const n=document.createElement("div"),a=document.createElement("img"),o=document.createElement("div"),l=document.createElement("div"),c=document.createElement("div");n.classList.add("noteskin-cell"),o.classList.add("noteskin-label"),l.classList.add("noteskin-title"),c.classList.add("noteskin-subtitle"),l.innerText=r.title??i,c.innerText=r.subtitle??"",a.src=st.getPreviewUrl(e,i),a.onerror=()=>{a.src=nS},n.replaceChildren(a,o),o.replaceChildren(l,c),this.grid.appendChild(n),i==w.chart.noteskin.name&&(n.classList.add("selected"),setTimeout(()=>{n.scrollIntoView({behavior:w.general.smoothAnimations?"smooth":"instant",block:"center"})})),n.dataset.id=i,n.dataset.title=r.title??"",n.dataset.subtitle=r.subtitle??"",n.onclick=()=>{w.chart.noteskin.name!=i&&(this.app.chartManager.chartView?.swapNoteskin(i),this.removeAllSelections(),n.classList.add("selected"))}}}removeAllSelections(){[...this.grid.querySelectorAll(".selected")].forEach(e=>e.classList.remove("selected"))}filterGrid(e){[...this.grid.children].forEach(t=>{if(!(t instanceof HTMLDivElement))return;const i=t,r=this.containsQuery(e,i.dataset.id)||this.containsQuery(e,i.dataset.title)||this.containsQuery(e,i.dataset.subtitle);i.style.display=r?"":"none"})}containsQuery(e,t){return t?t.toLowerCase().includes(e.trim().toLowerCase()):!1}}class oS extends Pt{app;metronomeInterval;startTime;me_high=new hr.Howl({src:Ag,volume:w.audio.soundEffectVolume});me_low=new hr.Howl({src:bg,volume:w.audio.soundEffectVolume});tickLines=[];resultLines=[];previousOffsets=[];keyHandler;constructor(e){super({title:"Offset Adjuster",width:300,height:200,win_id:"offset",blocking:!0}),this.app=e,this.initView(),this.startTime=performance.now();let t=this.startTime+500;this.tickLines.push({time:t+500,beat:0}),this.tickLines.push({time:t+500*2,beat:1}),this.tickLines.push({time:t+500*3,beat:2}),this.tickLines.push({time:t+500*4,beat:3});let i=0;this.metronomeInterval=setInterval(()=>{const r=performance.now();if(r-t>500){for(t=r,(i%4==0?this.me_high:this.me_low).play();this.tickLines[0]?.time+1e3r-n.startTime<8e3)},5),this.keyHandler=r=>{if(r.code.startsWith("Digit")||r.code.startsWith("Key")||r.code=="Space"){let n=this.tickLines[0];const a=performance.now();for(const l of this.tickLines)if(a-l.time+w.play.offset*1e3<300){n=l;break}r.preventDefault();const o=a-n.time+w.play.offset*1e3;o>-300&&(this.tickLines.splice(this.tickLines.indexOf(n),1),this.resultLines.push({startTime:performance.now(),offset:o}),this.previousOffsets.push(o),this.previousOffsets.length==16&&(kg(this.previousOffsets)<70&&(w.play.offset-=ul(this.previousOffsets)/1e3),this.previousOffsets=[]))}},window.addEventListener("keydown",this.keyHandler)}initView(){this.viewElement.replaceChildren();const e=document.createElement("canvas");this.viewElement.appendChild(e);const t=this.drawEQ(e);requestAnimationFrame(t)}drawEQ(e){const t=e.getContext("2d");t.canvas.width=250,t.canvas.height=100;const i=()=>{t.fillStyle="rgba(0, 0, 0, 1)",t.fillRect(0,0,e.width,e.height),t.fillStyle="rgb(255, 255, 255)",t.fillRect(e.width/2-1,8,2,e.height-16);const r=performance.now();for(const n of this.resultLines){t.fillStyle="rgba(255, 255, 255, 1)";const a=Math.min(1,4-(r-n.startTime)/2e3);if(n.offset<0&&(t.fillStyle=`rgba(160, ${wi(160,0,-n.offset/250)}, ${wi(160,0,-n.offset/250)}, ${a})`),n.offset>0&&(t.fillStyle=`rgba(${wi(160,0,n.offset/250)}, ${wi(160,0,n.offset/250)}, 160, ${a})`),t.fillRect(e.width/2-.5+n.offset/4,12,1,e.height-24),r-n.startTime<250){const o=(r-n.startTime)/250;t.globalAlpha=1-o,t.fillRect(e.width/2-.5-o*3+n.offset/4,12-o*10,1+o*6,e.height-24+o*20)}t.globalAlpha=1}for(const n of this.tickLines){const a=n.time-r-w.play.offset*1e3;t.fillStyle="rgba(255, 255, 255, 0.8)",n.beat%4!=0?t.fillRect(e.width/2-1-a/4,12,2,e.height-24):t.fillRect(e.width/2-2-a/4,12,4,e.height-24)}e.closest("#windows")&&requestAnimationFrame(i)};return i}onClose(){clearInterval(this.metronomeInterval),window.removeEventListener("keydown",this.keyHandler)}}class lS extends Pt{app;changeHandler=()=>this.initView();constructor(e){super({title:"Song Properties",width:450,height:486,disableClose:!1,win_id:"sm_properties",blocking:!1}),this.app=e,this.initView(),q.on("smLoaded",this.changeHandler),q.on("undo",this.changeHandler),q.on("redo",this.changeHandler)}onClose(){q.off("smLoaded",this.changeHandler),q.off("undo",this.changeHandler),q.off("redo",this.changeHandler)}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("sm-properties");const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("label"),t.innerText="Apply to",jg.forEach(i=>{const r=document.createElement("div");r.classList.add("sm-container");const n=document.createElement("div");n.classList.add("sm-title"),n.innerText=i.title;const a=document.createElement("div");a.classList.add("property-grid"),i.items.forEach(o=>{const l=document.createElement("div");l.classList.add("label"),l.innerText=o.title,a.appendChild(l),a.appendChild(Xg(this.app,o))}),r.appendChild(n),r.appendChild(a),e.appendChild(r)}),this.viewElement.appendChild(e)}}var hS=pS,zo=8192,gd=65536,yd=new ArrayBuffer(gd*4),cS=new Float64Array(yd,gd,zo),dS=new Float64Array(yd,gd*2,zo/2),uS=fS({Math,Float64Array},null,yd);function pS(s){if(!s)throw Error("Input data is not provided, pass an array.");var e=s.length;if(e>zo)throw Error("Input length is too big, must be under "+zo);var t=Math.floor(Math.log(e)/Math.LN2);if(Math.pow(2,t)!==e)throw Error("Invalid array size, must be a power of 2.");return cS.set(s),uS(e,t),dS.subarray(0,e/2)}function fS(s,e,t){var i=6.283185307179586,r=s.Math.sqrt,n=s.Math.sin,a=s.Math.cos,o=s.Math.abs,l=s.Math.SQRT1_2,c=s.Math.imul,u=new s.Float64Array(t),h=new s.Float64Array(t),d=8192,p=16384;function m(g,y){g=g|0,y=y|0;var b=0,A=0,v=0,_=0,C=0,B=0,P=0,M=0,U=0,F=0,T=0,S=0,x=0,L=0,Y=0,R=0,D=0,W=0,H=0,O=0,N=0,ee=0,Z=0,Q=0,ge=0,Te=0,he=0,pe=0,Ae=0,oe=0,ue=0,ve=0;for(b=g>>>1,v=2/+(g|0),f(g),oe=0,ve=4;(oe|0)<(g|0);ve=c(ve,4)){for(ue=oe;(ue|0)<(g|0);ue=ue+ve|0)O=h[ue<<3>>3]-h[ue+1<<3>>3],h[ue<<3>>3]=h[ue<<3>>3]+h[ue+1<<3>>3],h[ue+1<<3>>3]=O;oe=c(2,ve-1)}for(_=2,P=g>>>1;P=P>>>1;){oe=0,_=_<<1,ve=_<<1,C=_>>>2,B=_>>>3;do{if((C|0)!=1)for(ue=oe;(ue|0)<(g|0);ue=ue+ve|0)S=ue,x=S+C|0,L=x+C|0,Y=L+C|0,M=h[L<<3>>3]+h[Y<<3>>3],h[Y<<3>>3]=h[Y<<3>>3]-h[L<<3>>3],h[L<<3>>3]=h[S<<3>>3]-M,h[S<<3>>3]=h[S<<3>>3]+M,S=S+B|0,x=x+B|0,L=L+B|0,Y=Y+B|0,M=h[L<<3>>3]+h[Y<<3>>3],U=h[L<<3>>3]-h[Y<<3>>3],M=-M*l,U=U*l,O=+h[x<<3>>3],h[Y<<3>>3]=M+O,h[L<<3>>3]=M-O,h[x<<3>>3]=h[S<<3>>3]-U,h[S<<3>>3]=h[S<<3>>3]+U;else for(ue=oe;(ue|0)<(g|0);ue=ue+ve|0)S=ue,x=S+C|0,L=x+C|0,Y=L+C|0,M=h[L<<3>>3]+h[Y<<3>>3],h[Y<<3>>3]=h[Y<<3>>3]-h[L<<3>>3],h[L<<3>>3]=h[S<<3>>3]-M,h[S<<3>>3]=h[S<<3>>3]+M;oe=(ve<<1)-_|0,ve=ve<<2}while((oe|0)<(g|0));for(ge=i/+(_|0),A=1;(A|0)<(B|0);A=A+1|0){Te=+(A|0)*ge,ee=n(Te),N=a(Te),Z=4*N*(N*N-.75),Q=4*ee*(.75-ee*ee),oe=0,ve=_<<1;do{for(ue=oe;(ue|0)<(g|0);ue=ue+ve|0)S=ue+A|0,x=S+C|0,L=x+C|0,Y=L+C|0,R=ue+C-A|0,D=R+C|0,W=D+C|0,H=W+C|0,U=h[W<<3>>3]*N-h[L<<3>>3]*ee,M=h[W<<3>>3]*ee+h[L<<3>>3]*N,T=h[H<<3>>3]*Z-h[Y<<3>>3]*Q,F=h[H<<3>>3]*Q+h[Y<<3>>3]*Z,O=U-T,U=U+T,T=O,h[H<<3>>3]=U+h[D<<3>>3],h[L<<3>>3]=U-h[D<<3>>3],O=F-M,M=M+F,F=O,h[Y<<3>>3]=F+h[x<<3>>3],h[W<<3>>3]=F-h[x<<3>>3],h[D<<3>>3]=h[S<<3>>3]-M,h[S<<3>>3]=h[S<<3>>3]+M,h[x<<3>>3]=T+h[R<<3>>3],h[R<<3>>3]=h[R<<3>>3]-T;oe=(ve<<1)-_|0,ve=ve<<2}while((oe|0)<(g|0))}}for(;b=b-1|0;)he=+h[b<<3>>3],pe=+h[g-b-1<<3>>3],Ae=v*r(he*he+pe*pe),u[p+b<<3>>3]=Ae;u[p+0<<3>>3]=o(v*h[0])}function f(g){g=g|0;var y=0,b=0,A=1,v=0,_=0;y=g>>>1,b=g-1|0,h[0]=u[d+0<<3>>3];do{for(v=v+y|0,h[A<<3>>3]=u[d+v<<3>>3],h[v<<3>>3]=u[d+A<<3>>3],A=A+1|0,_=y<<1;_=_>>1,((v=v^_)&_)==0;);(v|0)>=(A|0)&&(h[A<<3>>3]=u[d+v<<3>>3],h[v<<3>>3]=u[d+A<<3>>3],h[b-A<<3>>3]=u[d+b-v<<3>>3],h[b-v<<3>>3]=u[d+b-A<<3>>3]),A=A+1|0}while((A|0)<(y|0));h[b<<3>>3]=u[d+b<<3>>3]}return m}const jp=la(hS);class or{view;slider;text;options;constructor(e,t){this.view=e,this.options=t,this.view.classList.add("slider");const i=document.createElement("input");i.classList.add("slider-input"),i.type="range",i.min=t.min.toString(),i.max=t.max.toString(),i.step=t.step.toString(),i.value=(t.value??(t.min+t.max)/2).toString(),i.oninput=()=>{r.innerText=this.formatValue(parseFloat(i.value))+"",this.options.onChange?.(parseFloat(i.value))},t.width!==void 0&&(i.style.width=t.width+"px"),this.slider=i,e.appendChild(i);const r=document.createElement("div");r.innerText=this.formatValue(parseFloat(i.value))+"",r.style.width="30px",this.text=r,e.appendChild(r)}get value(){return parseFloat(this.slider.value)}setValue(e){this.slider.value=e+"",this.text.innerText=this.formatValue(parseFloat(this.slider.value))+""}static create(e){return new or(document.createElement("div"),e)}formatValue(e){return this.options.transformer?this.options.transformer(e):this.options.precision===void 0?ne(e,3).toString():ne(e,this.options.precision).toFixed(this.options.precision)}}const $t=800,Ke=200,ph=3,kn=125,Bn=250,io=3,mS=.02,Pr=6,fh=800,Xp=15,Yt=32768,mh=[{frequency:20,weight:.4006009013520281},{frequency:25,weight:.4258037044922291},{frequency:31.5,weight:.4536690484291709},{frequency:40,weight:.4840856831659204},{frequency:50,weight:.5142710208279764},{frequency:63,weight:.5473453749315819},{frequency:80,weight:.5841121495327103},{frequency:100,weight:.6214074879602299},{frequency:125,weight:.6601749463607856},{frequency:160,weight:.7054673721340388},{frequency:200,weight:.7489234225800412},{frequency:250,weight:.7936507936507937},{frequency:315,weight:.8406893652795292},{frequency:400,weight:.889284126278346},{frequency:500,weight:.9291521486643438},{frequency:630,weight:.9675858732462506},{frequency:800,weight:.9985022466300548},{frequency:1e3,weight:.9997500624843789},{frequency:1250,weight:.9564801530368244},{frequency:1600,weight:.9409550693954364},{frequency:2e3,weight:1.0196278358399185},{frequency:2500,weight:1.0955902492467817},{frequency:3150,weight:1.1232799775344005},{frequency:4e3,weight:1.0914051841746248},{frequency:5e3,weight:.9997500624843789},{frequency:6300,weight:.8727907484180668},{frequency:8e3,weight:.7722007722007722},{frequency:1e4,weight:.7369196757553427},{frequency:12500,weight:.7768498737618955},{frequency:16e3,weight:.7698229407236336},{frequency:2e4,weight:.4311738708634257},{frequency:22550,weight:.2},{frequency:25e3,weight:0}];class Qg extends Pt{app;onAudioLoad=this.reset.bind(this);windowStep=512;fftSize=1024;tempoFftSize=4096;tempoStep=2;monoAudioData;audioLength=0;sampleRate=44100;tempogram=[];tempogramGroups=[];spectrogram=[];spectrogramDifference=[];noveltyCurve=[];noveltyCurveIsolated=[];spectrogramCanvases=[];lowestFinishedBlock=0;numRenderedBlocks=0;peaks=[];_threshold=.3;spectroHeights=[];spectroWeights=[];placeNotesSelectionButton;toggleButton;resetButton;onsetResults;offsetTableLabel;offsetRows=[];bpmRows=[];covers=[];doAnalysis=!1;lastSecond=0;constructor(e){super({title:"Detect Audio Sync",width:400,height:450,win_id:"detect-sync"}),this.app=e,this.initView(),this.reset(),q.on("audioLoaded",this.onAudioLoad)}onClose(){q.off("audioLoaded",this.onAudioLoad),this.app.chartManager.chartAudio.offLoad(this.onAudioLoad)}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("sync-container"),e.style.display="flex",e.style.flexDirection="column",e.style.alignItems="center";const t=document.createElement("canvas");t.style.width=`${$t/2}px`,t.style.height=`${Ke}px`;const i=document.createElement("div");i.classList.add("sync-tab-container");const r=document.createElement("div");r.classList.add("sync-tab-option","active"),r.innerText="Analysis Options";const n=document.createElement("div");n.classList.add("sync-tab-option"),n.innerText="Tempo Results";const a=document.createElement("div");a.classList.add("sync-tab-option"),a.innerText="Onset Results",i.replaceChildren(r,n,a),[...i.children].forEach((f,g)=>{f.onclick=()=>{l.scrollLeft=370*g,i.querySelectorAll(".active").forEach(y=>y.classList.remove("active")),f.classList.add("active")}});const o=document.createElement("div");o.classList.add("sync-tab-view");const l=document.createElement("div");l.classList.add("sync-tab-scroller");const c=this.createOptionsView(),u=this.createTempoView(),h=this.createOnsetsView(),d=(f,g)=>{const y=document.createElement("div");return y.classList.add("sync-cover"),y.innerText=f,y.style.left=`${g*370}px`,y};this.covers=[d("Clear analysis results to edit",0),d("Start analysis to view",1),d("Start analysis to view",2)],o.appendChild(l),l.replaceChildren(c,this.covers[0],u,this.covers[1],h,this.covers[2]);const p=document.createElement("div");p.classList.add("sync-bottom-container"),this.resetButton=document.createElement("button"),this.resetButton.classList.add("delete"),this.resetButton.innerText="Clear results",this.resetButton.style.width="120px",this.resetButton.disabled=!0,this.resetButton.onclick=()=>{this.resetButton.disabled=!0,r.click(),this.reset()},this.toggleButton=document.createElement("button"),this.toggleButton.innerText="Start analyzing",this.toggleButton.style.width="200px",this.toggleButton.onclick=()=>{this.doAnalysis||n.click(),this.doAnalysis=!this.doAnalysis,this.toggleButton.innerText=this.doAnalysis?"Stop analyzing":this.hasData()?"Resume analyzing":"Start analyzing",this.resetButton.disabled=this.doAnalysis},p.replaceChildren(this.toggleButton,this.resetButton),e.replaceChildren(t,i,o,p),this.viewElement.appendChild(e);const m=this.windowLoop(t);requestAnimationFrame(m)}createOptionsView(){const e=document.createElement("div");e.style.display="flex",e.style.position="relative",e.style.flexDirection="column",e.style.gap="3px",e.style.height="100%";const t=(c,u,h)=>{const d=document.createElement("div");d.style.display="flex",d.style.flexDirection="row",d.style.justifyContent="space-between",d.style.alignItems="center";const p=document.createElement("div");return p.innerText=c,d.replaceChildren(p,u),Wt(d,{content:h}),d},i=document.createElement("div");i.innerText="Onsets",i.style.fontWeight="600";const r=or.create({min:Math.log2(128),max:Math.log2(8192),step:1,value:Math.log2(this.fftSize),transformer:c=>2**c,onChange:c=>{this.fftSize=2**c,this.windowStep>this.fftSize&&(this.windowStep=this.fftSize,n.setValue(c)),this.reset()}}),n=or.create({min:Math.log2(128),max:Math.log2(8192),step:1,value:Math.log2(this.windowStep),transformer:c=>2**c,onChange:c=>{this.windowStep=2**c,this.windowStep>this.fftSize&&(this.windowStep=this.fftSize,n.setValue(Math.log2(this.fftSize))),this.reset()}}),a=document.createElement("div");a.innerText="Tempo",a.style.fontWeight="600",a.style.marginTop="15px";const o=or.create({min:Math.log2(128),max:Math.log2(8192),step:1,value:Math.log2(this.tempoFftSize),transformer:c=>2**c,onChange:c=>{this.tempoStep=2**c,this.tempoStep>this.tempoFftSize&&(this.tempoStep=this.tempoFftSize,l.setValue(c)),this.reset()}}),l=or.create({min:Math.log2(1),max:Math.log2(1024),step:1,value:Math.log2(this.tempoStep),transformer:c=>2**c,onChange:c=>{this.tempoStep=2**c,this.tempoStep>this.tempoFftSize&&(this.tempoStep=this.tempoFftSize,l.setValue(Math.log2(this.tempoFftSize))),this.reset()}});return e.replaceChildren(i,t("FFT Size",r.view,"Determines the amount of audio to analyze at every block. Higher values result in more accurate frequencies, while lower values result in more accurate timings. Defaults to 1024."),t("Window Step",n.view,"Determines the number of blocks per second. Lower values result in more time-accurate spectrograms, but may take more time and mess up tempo analysis. Defaults to 512 and must be lower than FFT Size."),a,t("FFT Size",o.view,"Determines the amount of the onset graph to analyze at every block. Higher values result in more accurate tempos, while lower values result in more accurate timings. Defaults to 4096."),t("Window Step",l.view,"Determines the number of blocks per second. Lower values result in more time-accurate tempograms, but may take more time. Defaults to 2 and must be lower than FFT Size.")),e}createTempoView(){const e=document.createElement("div");e.style.display="flex",e.style.position="relative",e.style.gap="10px";const t=document.createElement("div");t.style.flex="1";const i=document.createElement("div");i.classList.add("sync-table-label"),i.innerText="Offsets",this.offsetTableLabel=i;const r=document.createElement("table");r.classList.add("sync-table");const n=document.createElement("tr"),a=document.createElement("th");a.innerText="Offset";const o=document.createElement("th");o.innerText="Confidence",n.replaceChildren(a,o),r.appendChild(n),t.replaceChildren(i,r);const l=document.createElement("div");l.style.flex="1";const c=document.createElement("div");c.classList.add("sync-table-label"),c.innerText="Current Tempos";const u=document.createElement("table");u.classList.add("sync-table");const h=document.createElement("tr"),d=document.createElement("th");d.innerText="BPM";const p=document.createElement("th");p.innerText="Confidence",h.replaceChildren(d,p),u.appendChild(h);for(let m=0;m<5;m++){const f=document.createElement("tr"),g=document.createElement("td");g.innerText="-";const y=document.createElement("td");y.innerText="-",f.replaceChildren(g,y),r.appendChild(f),this.offsetRows.push(f);const b=f.cloneNode(!0);u.appendChild(b),this.bpmRows.push(b)}return l.replaceChildren(c,u),e.replaceChildren(t,l),e}createOnsetsView(){const e=document.createElement("div");e.style.display="flex",e.style.flexDirection="column",e.style.gap="10px",e.style.justifyContent="center",e.style.alignItems="center",e.style.position="relative";const t=document.createElement("div");t.style.display="flex",t.style.justifyContent="space-between",t.style.alignItems="center",t.style.width="100%",Wt(t,{content:"Adjust the threshold for a block to be considered an onset (red line)."});const i=document.createElement("div");i.innerText="Onset Threshold";const r=or.create({min:0,max:1,step:.01,value:.3,onChange:c=>{this.threshold=c}}),n=document.createElement("div");n.style.color="#888888",n.style.fontStyle="italic",n.style.fontSize="11px",n.style.marginBottom="15px",n.style.marginTop="-6px",n.innerText="Found 0 onsets",this.onsetResults=n,t.replaceChildren(i,r.view);const a=document.createElement("div");a.style.display="flex",a.style.justifyContent="space-between",a.style.alignItems="center",a.style.width="100%";const o=document.createElement("button");o.innerText="Place onsets as notes",o.onclick=()=>this.placeOnsets();const l=document.createElement("button");return l.innerText="Place onsets as notes in selection",l.disabled=!0,l.onclick=()=>this.placeOnsets(!0),this.placeNotesSelectionButton=l,a.replaceChildren(o,l),e.replaceChildren(t,n,a),e}async reset(){this._threshold=.3,this.doAnalysis=!1,this.toggleButton.disabled=!1,this.toggleButton.style.background="",this.toggleButton.innerText="Start analyzing",this.app.chartManager.chartAudio.onLoad(this.onAudioLoad),await this.getMonoAudioData(),this.sampleRate=this.app.chartManager.chartAudio.getSampleRate(),this.spectroHeights=new Array(this.fftSize).fill(0).map((t,i)=>{const r=i/(this.fftSize/2)*this.sampleRate/2,n=(i+1)/(this.fftSize/2)*this.sampleRate/2,a=Ke-Ve(Math.log(r/20)/Math.log(this.sampleRate/40)*Ke,0,Ke),o=Ke-Ve(Math.log(n/20)/Math.log(this.sampleRate/40)*Ke,0,Ke);return{y:o,height:a-o}}),this.spectroWeights=new Array(this.fftSize).fill(0).map((t,i)=>{const r=i/(this.fftSize/2)*this.sampleRate/2,n=mh.findIndex(l=>l.frequency>r);if(n<1)return 0;const a=mh[n-1],o=mh[n];return wi(a.weight,o.weight,Lt(Math.log(1+a.frequency),Math.log(1+o.frequency),Math.log(1+r)))});const e=Math.max(1,Math.ceil(this.audioLength/this.windowStep));this.spectrogramCanvases=[];for(let t=0;t{t.firstChild.innerText="-",t.lastChild.innerText="-"}),this.bpmRows.forEach(t=>{t.firstChild.innerText="-",t.lastChild.innerText="-"})}hasData(){return this.numRenderedBlocks>0}windowLoop(e){const t=e.getContext("2d");t.canvas.width=$t,t.canvas.height=Ke*2,t.imageSmoothingEnabled=!1;const i=()=>{if(this.placeNotesSelectionButton.disabled=this.app.chartManager.startRegion===void 0||this.app.chartManager.endRegion===void 0||this.app.chartManager.startRegion==this.app.chartManager.endRegion,this.covers[0].classList.toggle("active",this.hasData()),this.covers[1].classList.toggle("active",!this.hasData()),this.covers[2].classList.toggle("active",!this.hasData()),!this.app.chartManager.chartAudio)return;const r=Math.ceil(this.audioLength/this.windowStep);if(this.monoAudioData!==void 0&&this.doAnalysis){const h=performance.now();for(;performance.now()-h=r){this.tempogram.length==0&&(this.toggleButton.disabled=!0,this.calcTempogram());break}this.spectrogram[this.lowestFinishedBlock]===void 0&&(this.renderBlock(this.lowestFinishedBlock),this.calcDifference(this.lowestFinishedBlock),this.calcIsolatedNovelty(this.lowestFinishedBlock),this.numRenderedBlocks++),this.lowestFinishedBlock++}this.lowestFinishedBlockb.centerd.center-Pr);y!==void 0&&(p+=y.groups[0].value,m+=y.avg,f++)}p/=f,m/=f,h.push({bpm:m,weight:d.groups[0].value,smoothedWeight:p})}h.sort((d,p)=>p.smoothedWeight-d.smoothedWeight);for(const d of h)d.weight<.01||(t.font=`${18+d.weight*300}px Assistant`,t.globalAlpha=Math.min(1,d.weight*100),t.fillText(ne(d.bpm,0)+"",200,wi(Ke*2,Ke*1.5,Lt(kn,Bn,d.bpm))));if(this.lastSecond!=this.app.chartManager.getTime()){this.lastSecond=this.app.chartManager.getTime();const d=h.slice(0,5).reduce((p,m)=>p+m.smoothedWeight,0);for(let p=0;p<5;p++){const m=this.bpmRows[p],f=h[p]?.bpm,g=h[p]?.weight;m.firstChild.innerText=f===void 0?"-":Math.round(f).toString(),m.lastChild.innerText=g===void 0?"-":Math.round(g/d*100)+"%"}}}t.globalAlpha=1,t.font="22px Assistant",t.textAlign="left",t.textBaseline="top",t.fillText("Spectrogram",10,10),t.fillText("Onsets",10,Ke+10),t.fillText("Tempogram",10,Ke*1.5+10),e.closest("#windows")&&requestAnimationFrame(i)};return i}renderBlock(e){if(!this.monoAudioData)return;const t=new Float32Array(this.fftSize);t.set(this.monoAudioData.subarray(Math.max(0,e*this.windowStep-this.fftSize/2),e*this.windowStep+this.fftSize/2),-Math.min(0,e*this.windowStep-this.fftSize/2));for(let r=0;r{const a=this.spectroHeights[n],o=Ve(r*2e3,0,255);i.globalAlpha=o/255,i.fillRect(e%Yt,a.y,1,a.height)}),i.globalAlpha=1}storeDifferenceResponse(e,t){this.spectrogramDifference[e]=t;const i=t.reduce((r,n)=>r+n,0);this.noveltyCurve[e]=i}calcIsolatedNovelty(e){for(let t=e-ph;t<=e;t++){if(t<0)continue;let i=0,r=0;for(let n=t-ph;n<=t+ph;n++)this.noveltyCurve[n]!==void 0&&(i+=this.noveltyCurve[n],r++);i/=r,this.storeIsolatedNovelty(t,Math.max(0,this.noveltyCurve[t]-i))}}storeIsolatedNovelty(e,t){this.noveltyCurveIsolated[e]=Math.log(1+t),Math.log(1+t)>this._threshold&&Math.log(1+t)>(this.noveltyCurveIsolated[e-1]??0)?(this.peaks[e-1]&&(this.peaks[e-1]=!1),this.peaks[e]=!0,this.onsetResults.innerText=`Found ${this.peaks.filter(n=>n).length} onsets`):this.peaks[e]=!1;const i=this.spectrogramCanvases[Math.floor(e/Yt)].getContext("2d"),r=Math.min(1,Math.log(1+t))*Ke*.5;i.fillStyle="rgb(11, 14, 26)",i.fillRect(e%Yt,Ke,1,Ke*.5),i.fillStyle="rgba(0, 100, 150, 0.5)",i.fillRect(e%Yt,Ke*1.5-r,1,r)}async getMonoAudioData(){const e=this.app.chartManager.chartAudio;if(!e)return;const t=e.getBuffer(),i=new OfflineAudioContext(t.numberOfChannels,t.length,t.sampleRate),r=i.createBufferSource();r.buffer=t;const n=i.createChannelMerger(t.numberOfChannels);r.connect(n),n.connect(i.destination),r.start(),await i.startRendering().then(a=>{this.monoAudioData=a.getChannelData(0),this.audioLength=this.monoAudioData.length}).catch(()=>{_e.createFormatted("Failed to load audio: audio rendering failed","error")})}get threshold(){return this._threshold}set threshold(e){this._threshold=e,this.peaks=this.noveltyCurveIsolated.map((t,i)=>t>this._threshold&&(this.noveltyCurveIsolated[i-1]??0)t).length} onsets`}calculateOffset(){const e=new Map;let t=0,i=0,r=0;for(let c=0;cd.groups[0].value>=mS);if(h.length!=0&&(i=c,h.forEach(d=>{let p=0,m=0;for(let g=c-io;g<=c+io;g++){if(this.tempogramGroups[g]===void 0)continue;const y=this.tempogramGroups[g].find(b=>b.centerd.center-Pr);y!==void 0&&(m+=y.avg,p++)}const f=Math.round(m/p);e.has(f)||e.set(f,0),e.set(f,e.get(f)+1),e.get(f)>t&&(t=e.get(f),r=f)}),t>50))break}if(r==0)return;const n=60/r*(this.sampleRate/this.windowStep),a=new Array(fh).fill(0).map((c,u)=>{const h=u%n/n;let d=0,p=0;for(let m=1;m<=4;m++)p+=Math.max(1-Math.abs(Math.round(h*m)/m-h)*12,0)*1/m,d+=1/m;return p/d}),o=[];for(let c=i;ca[d]*h).reduce((h,d)=>h+d,0);o.push({block:c,offset:-(c*this.windowStep/this.sampleRate)%(60/r),response:u,curve:this.noveltyCurveIsolated.slice(c,c+fh).map((h,d)=>a[d]*h)})}o.sort((c,u)=>u.response-c.response);const l=o.slice(0,5).reduce((c,u)=>c+u.response,0);this.offsetTableLabel.innerText=`Offsets (first BPM: ${r})`;for(let c=0;c{if(!i)return null;let n=this.app.chartManager.loadedChart.getBeatFromSeconds(r*this.windowStep/this.sampleRate);return n=Math.round(n*48)/48,n<0?null:{type:"Tap",beat:n,col:0}}).filter(i=>i!==null).filter(i=>e?i.beat>this.app.chartManager.startRegion&&i.beatd.beat==n.beat):-1,o=i.getDivisionLength(e);const l=i.getDivisionOfMeasure(e)%1*o;let c=Math.max(0,e-l);c=r[a+1]?.beat&&(a++,n=r[a],c=n.beat,o=i.getDivisionLength(c),u=0,h=n.upper)}calcTempogram(){let e=0;for(let a=0;ae&&(e=this.noveltyCurveIsolated[a]);const t=new Float32Array(this.noveltyCurveIsolated.length);for(let a=0;a{const o=new Float32Array(this.tempoFftSize);o.set(t.subarray(Math.max(0,a*this.tempoStep-this.tempoFftSize/2),a*this.tempoStep+this.tempoFftSize/2),-Math.min(0,a*this.tempoStep-this.tempoFftSize/2));for(let c=0;cn(++a),1)):(this.calculateOffset(),this.spectrogram=[],this.noveltyCurve=[],this.tempogram=[],this.monoAudioData=void 0,this.toggleButton.innerText="Finished analyzing",this.resetButton.disabled=!1,this.doAnalysis=!1,this.toggleButton.style.background="#265296")};n(0)}storeTempogram(e,t){const i=new Map,r=[];t.forEach((a,o)=>{let l=this.sampleRate*60/(this.windowStep*this.tempoFftSize)*o;if(!(l>Bn*4||lBn&&l!=1/0;)l/=2;for(;l({bpm:a,value:o})).sort((a,o)=>o.value-a.value).filter(a=>a.value!=0);for(let a=0;ac.centero.bpm-Pr);if(l===void 0){r.push({center:o.bpm,groups:[o]});continue}l.groups.push(o)}this.tempogramGroups[e]=r.map(a=>({...a,avg:a.groups.reduce((o,l)=>o+l.bpm*l.value,0)/a.groups.reduce((o,l)=>o+l.value,0)}));const n=this.spectrogramCanvases[Math.floor(e*this.tempoStep/Yt)].getContext("2d");n.fillStyle="rgba(0, 166, 255, 1)",this.tempogram[e].forEach(a=>{const o=Ve(a.value*8e3,0,255);n.globalAlpha=o/255,n.fillRect(e*this.tempoStep%Yt,wi(Ke*2,Ke*1.5,Lt(kn,Bn,a.bpm)),1*this.tempoStep,Ke*.5/(Bn-kn))})}}const ei=s=>s,Kp={offset:{title:"Offset",element:ei({create:(s,e)=>{const t=nt.create(0,w.general.spinnerStep/100,3);return t.onChange=i=>{i!=null&&(e().setOffset(i),s.chartManager.setBeat(s.chartManager.getBeat()))},t.view},update:(s,e)=>{const t=s.querySelector(".spinner-input");if(document.activeElement==t)return;const i=e.getOffset();t.value!=ne(i,3).toFixed(3)&&(t.value=ne(i,3).toFixed(3))}})},bpm:{title:"BPM",element:ei({create:(s,e)=>{const t=nt.create(120,void 0,3);return t.onChange=i=>{if(i==null){const r=s.chartManager.getBeat();e().delete([{type:"BPMS",beat:r}]);return}e().insert([{type:"BPMS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("BPMS",t)?.value??120;i.value!=ne(r,3).toFixed(3)&&(i.value=ne(r,3).toFixed(3))}})},stop:{title:"Stop",element:ei({create:(s,e)=>{const t=nt.create(0,void 0,3);return t.onChange=i=>{if(i==null||i==0){const r=s.chartManager.getBeat();e().delete([{type:"STOPS",beat:r}]);return}e().insert([{type:"STOPS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("STOPS",t);let n=r?.value??0;t!=r?.beat&&(n=0),i.value!=ne(n,3).toFixed(3)&&(i.value=ne(n,3).toFixed(3))}})},delay:{title:"Delay",element:ei({create:(s,e)=>{const t=nt.create(0,void 0,3);return t.onChange=i=>{if(i==null||i==0){const r=s.chartManager.getBeat();e().delete([{type:"DELAYS",beat:r}]);return}e().insert([{type:"DELAYS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("DELAYS",t);let n=r?.value??0;t!=r?.beat&&(n=0),i.value!=ne(n,3).toFixed(3)&&(i.value=ne(n,3).toFixed(3))}})},warp:{title:"Warp",element:ei({create:(s,e)=>{const t=nt.create(0,void 0,3,0);return t.onChange=i=>{if(i==null||i==0){const r=s.chartManager.getBeat();e().delete([{type:"WARPS",beat:r}]);return}i<0||e().insert([{type:"WARPS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("WARPS",t);let n=r?.value??0;t!=r?.beat&&(n=0),i.value!=ne(n,3).toFixed(3)&&(i.value=ne(n,3).toFixed(3))}})},timeSig:{title:"Time Sig.",element:ei({create:(s,e)=>{const t=document.createElement("div");t.classList.add("flex-column-gap");const i=nt.create(4,1,0,1);i.onChange=n=>{if(n==null){const a=s.chartManager.getBeat();e().delete([{type:"TIMESIGNATURES",beat:a}]);return}n<1||e().insert([{type:"TIMESIGNATURES",beat:s.chartManager.getBeat(),upper:n,lower:r.value}])};const r=nt.create(4,1,0,1);return r.onChange=n=>{if(n==null){const a=s.chartManager.getBeat();e().delete([{type:"TIMESIGNATURES",beat:a}]);return}n<1||e().insert([{type:"TIMESIGNATURES",beat:s.chartManager.getBeat(),upper:i.value,lower:n}])},t.appendChild(i.view),t.appendChild(r.view),t},update:(s,e,t)=>{const i=s.firstElementChild.querySelector(".spinner-input"),r=s.lastElementChild.querySelector(".spinner-input"),n=e.getEventAtBeat("TIMESIGNATURES",t),a=n?.upper??4,o=n?.lower??4;document.activeElement!=i&&i.value!=Math.round(a).toString()&&(i.value=Math.round(a).toString()),document.activeElement!=r&&r.value!=Math.round(o).toString()&&(r.value=Math.round(o).toString())}})},tick:{title:"Tickcount",element:ei({create:(s,e)=>{const t=nt.create(4,1,0,0);return t.onChange=i=>{if(i==null){const r=s.chartManager.getBeat();e().delete([{type:"TICKCOUNTS",beat:r}]);return}i<0||e().insert([{type:"TICKCOUNTS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("TICKCOUNTS",t)?.value??4;i.value!=Math.round(r).toString()&&(i.value=Math.round(r).toString())}})},combo:{title:"Combo",element:ei({create:(s,e)=>{const t=document.createElement("div");t.classList.add("flex-column-gap");const i=nt.create(1,1,0,0);i.onChange=n=>{if(n==null){const a=s.chartManager.getBeat();e().delete([{type:"COMBOS",beat:a}]);return}n<0||e().insert([{type:"COMBOS",beat:s.chartManager.getBeat(),hitMult:n,missMult:r.value}])};const r=nt.create(1,1,0,0);return r.onChange=n=>{if(n==null){const a=s.chartManager.getBeat();r.setValue(s.chartManager.loadedChart?.timingData.getEventAtBeat("COMBOS",a)?.missMult??1);return}n<0||e().insert([{type:"COMBOS",beat:s.chartManager.getBeat(),hitMult:i.value,missMult:n}])},t.appendChild(i.view),t.appendChild(r.view),t},update:(s,e,t)=>{const i=s.firstElementChild.querySelector(".spinner-input"),r=s.lastElementChild.querySelector(".spinner-input"),n=e.getEventAtBeat("COMBOS",t),a=n?.hitMult??1,o=n?.missMult??1;document.activeElement!=i&&i.value!=Math.round(a).toString()&&(i.value=Math.round(a).toString()),document.activeElement!=r&&r.value!=Math.round(o).toString()&&(r.value=Math.round(o).toString())}})},speed:{title:"Speed",element:ei({create:(s,e)=>{const t=document.createElement("div");t.classList.add("flex-column-gap");const i=()=>{e().insert([{type:"SPEEDS",beat:s.chartManager.getBeat(),value:r.value,delay:n.value,unit:a.value=="Beats"?"B":"T"}])},r=nt.create(1,.1,0);r.onChange=o=>{if(o==null){const l=s.chartManager.getBeat();e().delete([{type:"SPEEDS",beat:l}]);return}i()};const n=nt.create(1,.1,0);n.onChange=o=>{o==null||o<0||i()};const a=di.create(["Beat","Time"],"Beats");return a.onChange=i,t.appendChild(r.view),t.appendChild(n.view),t.appendChild(a.view),t},update:(s,e,t)=>{const i=s.firstElementChild.querySelector(".spinner-input"),r=s.children[1].querySelector(".spinner-input"),n=e.getEventAtBeat("SPEEDS",t),a=n?.value??1,o=n?.delay??0,l=n?.unit=="B"?"Beat":"Time";document.activeElement!=i&&i.value!=ne(a,3).toFixed(3)&&(i.value=ne(a,3).toFixed(3)),document.activeElement!=r&&r.value!=ne(o,3).toFixed(3)&&(r.value=ne(o,3).toFixed(3)),r.disabled=n?.beat!=t;const c=s.lastElementChild.querySelector(".dropdown-selected");c.innerText!=l&&(c.innerText=l),n?.beat!=t?c.classList.add("disabled"):c.classList.remove("disabled")}})},scroll:{title:"Scroll",element:ei({create:(s,e)=>{const t=nt.create(1,void 0,3);return t.onChange=i=>{if(i==null){const r=s.chartManager.getBeat();e().delete([{type:"SCROLLS",beat:r}]);return}e().insert([{type:"SCROLLS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("SCROLLS",t)?.value??1;i.value!=ne(r,3).toFixed(3)&&(i.value=ne(r,3).toFixed(3))}})},fake:{title:"Fake",element:ei({create:(s,e)=>{const t=nt.create(1,void 0,3,0);return t.onChange=i=>{if(i==null){const r=s.chartManager.getBeat();e().delete([{type:"FAKES",beat:r}]);return}i<0||e().insert([{type:"FAKES",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("FAKES",t);let n=r?.value??1;t!=r?.beat&&(n=0),i.value!=ne(n,3).toFixed(3)&&(i.value=ne(n,3).toFixed(3))}})},label:{title:"Label",element:ei({create:(s,e)=>{const t=document.createElement("input");return t.type="text",t.autocomplete="off",t.spellcheck=!1,t.onkeydown=i=>{i.key=="Enter"&&t.blur()},t.onblur=()=>{if(t.value==""){const i=s.chartManager.getBeat();e().delete([{type:"LABELS",beat:i}]);return}e().insert([{type:"LABELS",beat:s.chartManager.getBeat(),value:t.value}])},t},update:(s,e,t)=>{const i=s;if(document.activeElement==i)return;const n=e.getEventAtBeat("LABELS",t)?.value??"";i.value!=n&&(i.value=n)}})}};class gS extends Pt{app;lastBeat;chartTiming=!1;interval;changeHandler=()=>this.setData();constructor(e){super({title:"Edit Timing Data",width:300,height:340,disableClose:!1,win_id:"timing_data",blocking:!1}),this.app=e,this.lastBeat=Math.round(this.app.chartManager.getBeat()*1e3)/1e3,this.chartTiming=this.app.chartManager.loadedChart.timingData.usesChartTiming(),this.initView(),this.interval=setInterval(()=>{Math.round(this.app.chartManager.getBeat()*1e3)/1e3!=this.lastBeat&&(this.lastBeat=Math.round(this.app.chartManager.getBeat()*1e3)/1e3,this.setData())},17),q.on("timingModified",this.changeHandler),q.on("chartLoaded",this.changeHandler)}onClose(){q.off("timingModified",this.changeHandler),clearInterval(this.interval)}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("timing-data");const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("label"),t.innerText="Apply to";const i=di.create(["All charts","This chart"],this.chartTiming?"This chart":"All charts");i.onChange(r=>{this.chartTiming=r=="This chart"}),e.appendChild(t),e.appendChild(i.view),Object.values(Kp).forEach(r=>{const n=document.createElement("div");n.classList.add("label"),n.innerText=r.title;const a=r.element.create(this.app,()=>this.chartTiming?this.app.chartManager.loadedChart.timingData:this.app.chartManager.loadedSM.timingData);e.appendChild(n),e.appendChild(a)}),this.viewElement.appendChild(e),this.setData()}setData(){this.app.chartManager.loadedChart&&Object.values(Kp).forEach((e,t)=>{const i=this.viewElement.children[0].children[t*2+3];e.element.update(i,this.app.chartManager.loadedChart.timingData,this.lastBeat)})}}const qp=[{type:"group",id:"app",label:"App",disable:()=>window.nw===void 0,children:[{type:"subgroup",children:[{type:"item",label:"Window Width",id:"app.width",input:{type:"number",step:50,min:300,onChange:(s,e)=>{const t=nw.Window.get();t.isFullscreen||(t.width=e)}}},{type:"item",label:"Window Height",id:"app.height",input:{type:"number",step:50,min:300,onChange:(s,e)=>{const t=nw.Window.get();t.isFullscreen||(t.height=e)}}}]},{type:"subgroup",children:[{type:"item",label:"Fullscreen",id:"app.fullscreen",input:{type:"checkbox",onChange:(s,e)=>{const t=nw.Window.get();e?nw.Window.get().enterFullscreen():(t.hide(),nw.Window.get().leaveFullscreen(),t.show())}}}]}]},{type:"group",id:"general",label:"General",children:[{type:"subgroup",children:[{type:"item",label:"Smooth Animations",id:"general.smoothAnimations",input:{type:"checkbox",onChange:(s,e)=>{e?document.body.classList.add("animated"):document.body.classList.remove("animated")}}},{type:"item",label:"Warn before exit",id:"general.warnBeforeExit",input:{type:"checkbox"},tooltip:"Warn before exiting the editor if you have unsaved changes."},{type:"item",label:"Spinner step",id:"general.spinnerStep",input:{type:"slider",min:0,step:.1,max:5,hardMin:0,hardMax:2**31-1},tooltip:"The default increment for all number spinners."}]}]},{type:"group",id:"chart",label:"Chart",children:[{type:"subgroup",label:"Playfield",children:[{type:"subgroup",children:[{type:"item",label:"Enable mouse placement",id:"chart.mousePlacement",input:{type:"checkbox"}}]},{type:"subgroup",children:[{type:"item",label:"Zoom",id:"chart.zoom",input:{type:"slider",min:50,step:1,max:200,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}}},{type:"item",label:"Reverse playfield",id:"chart.reverse",input:{type:"checkbox"}}]},{type:"subgroup",children:[{type:"item",label:"Y position",id:"chart.receptorYPos",input:{type:"slider",min:-400,max:0,hardMin:-(2**31-1),hardMax:2**31-1}},{type:"item",label:"Draw length",id:"chart.maxDrawBeats",input:{type:"slider",min:0,max:30,hardMax:2**31-1},tooltip:"Maximum number of beats to draw notes. Increasing this works well for songs with high bpm but can affect performance. Only applies to XMod."},{type:"item",label:"Draw length past receptors",id:"chart.maxDrawBeatsBack",input:{type:"slider",min:0,max:30,hardMax:2**31-1},tooltip:"Maximum number of beats to draw notes past the receptors. Increasing this can affect performance. Only applies to XMod."}]},{type:"subgroup",children:[{type:"item",label:"Draw noteflashes",id:"chart.drawNoteFlash",input:{type:"checkbox"}},{type:"item",label:"Draw note icons",id:"chart.drawIcons",input:{type:"checkbox"},tooltip:"Draw indicators above notes that some noteskins may not differentiate, like Fakes and Lifts."}]}]},{type:"subgroup",label:"Scrolling",children:[{type:"item",label:"Scroll sensitivity",id:"chart.scroll.scrollSensitivity",input:{type:"slider",min:0,step:1,max:200,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}},tooltip:"Adjust the scroll sensitivity when scrolling through the chart."},{type:"item",label:"Snap every scroll",id:"chart.scroll.scrollSnapEveryScroll",input:{type:"checkbox"},tooltip:"Whether each scroll movement corresponds to moving one snap unit when scrolling. Turning this on will have the same behavior as ArrowVortex. Recommended on for those using a mouse, off for those using trackpad."},{type:"item",label:"Invert zoom in/out",id:"chart.scroll.invertZoomScroll",input:{type:"checkbox"},tooltip:"Inverts the zoom in/out control when scrolling."},{type:"item",label:"Invert scroll direction when in reverse",id:"chart.scroll.invertReverseScroll",input:{type:"checkbox"}}]},{type:"subgroup",label:"Waveform",children:[{type:"item",label:"Draw waveform",id:"chart.waveform.enabled",input:{type:"checkbox"}},{type:"subgroup",children:[{type:"item",label:"Color",id:"chart.waveform.color",input:{type:"color"}},{type:"item",label:"Opacity",id:"chart.waveform.opacity",input:{type:"slider",min:0,max:1,step:.01}}]},{type:"subgroup",children:[{type:"item",label:"Draw filtered waveform",id:"chart.waveform.allowFilter",input:{type:"checkbox"}},{type:"item",label:"Filtered color",id:"chart.waveform.filteredColor",input:{type:"color"}},{type:"item",label:"Filtered opacity",id:"chart.waveform.filteredOpacity",input:{type:"slider",min:0,max:1,step:.01}}]},{type:"item",label:"Line height",id:"chart.waveform.lineHeight",input:{type:"slider",min:1,max:3,step:.1,hardMax:100},tooltip:"The height of each line of the waveform. Increasing this can help performance."},{type:"item",label:"Antialiasing",id:"chart.waveform.antialiasing",input:{type:"checkbox"}},{type:"item",label:"Allow speed changes",id:"chart.waveform.speedChanges",input:{type:"checkbox"},tooltip:"Allows the waveform to be affected by SPEEDS and SCROLLS."}]},{type:"subgroup",label:"Note Layout",children:[{type:"item",label:"Show Note Layout",id:"chart.noteLayout.enabled",input:{type:"checkbox"}}]},{type:"subgroup",label:"NPS Graph",children:[{type:"item",label:"Show NPS Graph",id:"chart.npsGraph.enabled",input:{type:"checkbox"}},{type:"subgroup",children:[{type:"item",label:"Start Color",id:"chart.npsGraph.color1",input:{type:"color"}},{type:"item",label:"End Color",id:"chart.npsGraph.color2",input:{type:"color"}}]}]}]},{type:"group",id:"audio",label:"Audio",children:[{type:"subgroup",children:[{type:"item",label:"Master volume",id:"audio.masterVolume",input:{type:"slider",min:0,step:1,max:100,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}}},{type:"item",label:"Song volume",id:"audio.songVolume",input:{type:"slider",min:0,step:1,max:100,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}}},{type:"item",label:"Sound effect volume",id:"audio.soundEffectVolume",input:{type:"slider",min:0,step:1,max:100,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}}}]},{type:"subgroup",children:[{type:"item",label:"Enable assist tick",id:"audio.assistTick",input:{type:"checkbox"},tooltip:"Plays a sound when a note passes the receptors"},{type:"item",label:"Enable metronome",id:"audio.metronome",input:{type:"checkbox"}}]},{type:"subgroup",children:[{type:"item",label:"Allow filters to affect audio",id:"audio.allowFilter",input:{type:"checkbox",onChange:s=>{s.chartManager.chartAudio.reload()}}},{type:"item",label:"Enable metronome",id:"audio.metronome",input:{type:"checkbox"}}]}]},{type:"group",id:"play",label:"Play mode",children:[{type:"subgroup",label:"Calibration",children:[{type:"item",label:"Global offset",id:"play.offset",input:{type:"slider",min:-1,step:.001,max:1,hardMin:-(2**31-1),hardMax:2**31-1},tooltip:"Offset in seconds when playing a chart. Set to positive if you are hitting early and negative if you are hitting late."},{type:"item",label:"Sound effect offset",id:"play.effectOffset",input:{type:"slider",min:-1,step:.001,max:1,hardMin:-(2**31-1),hardMax:2**31-1},tooltip:"Offset in seconds when playing sound effects like assist tick and metronome."},{type:"item",label:"Visual offset",id:"play.visualOffset",input:{type:"slider",min:-1,step:.001,max:1,hardMin:-(2**31-1),hardMax:2**31-1},tooltip:"Offset in seconds when displaying notes."}]},{type:"subgroup",children:[{type:"item",label:"Judgement tilt",id:"play.judgementTilt",input:{type:"checkbox"},tooltip:"Tilts the judgement text left if you are hitting early and right if you are hitting late."},{type:"item",label:"Hide barlines during play",id:"play.hideBarlines",input:{type:"checkbox"}}]},{type:"subgroup",label:"Timing windows",children:[{type:"item",id:"play.timingCollection",label:"Timing window collection",input:{type:"dropdown",advanced:!1,get items(){return Object.keys(Je.getCollections())}}},{type:"item",id:"play.timingWindowScale",label:"Timing window scale",input:{type:"slider",min:0,step:.001,max:2,hardMax:2**31-1},tooltip:"Scales all timing windows by the given amount."},{type:"item",id:"play.timingWindowAdd",label:"Timing window add",input:{type:"slider",min:0,step:.001,max:1,hardMax:2**31-1},tooltip:"Adds this value (in seconds) to all timing windows."}]}]},{type:"group",id:"performance",label:"Performance",children:[{type:"item",label:"Antialiasing",id:"performance.antialiasing",input:{type:"checkbox"}},{type:"item",label:"Resolution",id:"performance.resolution",input:{type:"slider",min:1,step:1,max:4,hardMin:0,hardMax:2**31-1},tooltip:"Requires a reload."}]},{type:"group",id:"debug",label:"Debug",children:[{type:"item",label:"Show FPS",id:"debug.showFPS",input:{type:"checkbox"}},{type:"item",label:"Show rendering timers",id:"debug.showTimers",input:{type:"checkbox"}},{type:"item",label:"Show scrolls/speeds debug visual",id:"debug.showScroll",input:{type:"checkbox"}},{type:"item",label:"Show noteskin errors",id:"debug.showNoteskinErrors",input:{type:"checkbox"}}]}];class yS extends Pt{app;observer;sectionContainer;constructor(e){super({title:"Options",width:600,height:400,disableClose:!1,win_id:"user_options",blocking:!1}),this.app=e,this.initView(),q.on("resize",()=>{this.move(window.innerWidth/2-this.options.width/2,window.innerHeight/2-this.options.height/2)})}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("pref-container");const i=document.createElement("div");i.classList.add("pref-search");const r=document.createElement("input");r.classList.add("pref-search-bar"),r.type="text",r.placeholder="Search for an option...",r.oninput=()=>{a.replaceChildren(),o.replaceChildren(...this.createOptions(this.filterOptions(r.value)))},i.appendChild(r);const n=document.createElement("div");n.classList.add("pref-scrollers");const a=document.createElement("div");a.classList.add("pref-section-scroller"),this.sectionContainer=a;const o=document.createElement("div");o.classList.add("pref-option-scroller"),n.replaceChildren(a,o),this.observer=new IntersectionObserver(l=>{l.forEach(c=>{const u=c.target.dataset.id,h=a.querySelector(`.pref-section[data-id=${u}]`);h&&(c.intersectionRatio>0?h.classList.add("selected"):h.classList.remove("selected"))})},{}),t.replaceChildren(i,n),a.replaceChildren(),o.replaceChildren(...this.createOptions(qp)),e.appendChild(t),this.viewElement.appendChild(e)}createOptions(e){return e.filter(t=>!t.disable?.(this.app)).map(t=>{const i=this.makeOption(t);return t.type=="group"&&(this.observer.observe(i),this.sectionContainer?.appendChild(this.createEmptyGroup(t))),i})}makeOption(e){const t=document.createElement("div");t.classList.add("pref-"+e.type),(e.type=="group"||e.type=="item")&&(t.dataset.id=e.id);const i=document.createElement("div");i.classList.add(`pref-${e.type}-label`),e.label!==void 0&&(i.innerText=e.label,t.appendChild(i));const r=document.createElement("img");if(e.type=="item"&&(r.src=Ce.REVERT,r.style.width="12px",r.addEventListener("click",()=>{w.applyOption([e.id,w.getDefaultOption(e.id)]);const n=e.input.onChange;n?.(this.app,w.getDefaultOption(e.id)),q.emit("userOptionUpdated",e.id),t.replaceWith(this.makeOption(e))}),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",t.appendChild(r)),e.type=="item"){const n=w.getOption(e.id);let a;if(!e.input)return t;switch(i.innerText=e.label,e.input.type){case"checkbox":{const o=document.createElement("input"),l=e.input.onChange;o.type="checkbox",o.checked=n,o.onblur=null,o.onchange=()=>{w.applyOption([e.id,o.checked]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",l?.(this.app,o.checked)},o.classList.add("pref-input","right"),o.onkeydown=c=>{c.key=="Enter"&&o.blur()},a=o;break}case"dropdown":{if(e.input.advanced){const o=e.input.transformers.deserialize,l=e.input.transformers.serialize,c=e.input.onChange,u=di.create(e.input.items,l(n));u.onChange(h=>{w.applyOption([e.id,o(h)]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",c?.(this.app,o(h))}),u.view.classList.add("pref-input","dropdown-right"),a=u.view}else{const o=e.input.onChange,l=di.create(e.input.items,n);l.onChange(c=>{w.applyOption([e.id,c]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",o?.(this.app,c)}),l.view.classList.add("pref-input","dropdown-right"),a=l.view}break}case"number":{const o=e.input.transformers?.deserialize??(h=>h),l=e.input.transformers?.serialize??(h=>h),c=e.input.onChange,u=nt.create(l(n),e.input.step,e.input.precision,e.input.min,e.input.max);u.onChange=h=>{if(!h){u.setValue(l(h));return}w.applyOption([e.id,o(h)]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",c?.(this.app,o(h))},a=u.view;break}case"slider":{const o=e.input.transformers?.deserialize??(f=>f),l=e.input.transformers?.serialize??(f=>f),c=e.input.onChange,u=document.createElement("div");u.style.display="flex",u.style.alignItems="center";const h=document.createElement("input");h.type="range",h.min=e.input.min?.toString()??"",h.max=e.input.max?.toString()??"",h.step=e.input.step?.toString()??"1",h.value=l(n).toString();const d=document.createElement("input");d.type="text",d.value=(Math.round(l(n)*1e3)/1e3).toString();const p=e.input.min??e.input.hardMin??-Number.MAX_VALUE,m=e.input.max??e.input.hardMax??Number.MAX_VALUE;d.onblur=()=>{let f=na(d.value);if(f===null){d.value=(Math.round(l(n)*1e3)/1e3).toString();return}f=Ve(f,p,m),d.value=ne(f,3).toString(),d.blur(),d.value==""?d.value=l(f).toString():(w.applyOption([e.id,o(f)]),q.emit("userOptionUpdated",e.id)),h.value=f.toString(),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",c?.(this.app,o(f))},h.oninput=()=>{const f=parseFloat(h.value);d.value=ne(f,3).toString(),w.applyOption([e.id,o(f)]),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block"},d.style.width="50px",d.onkeydown=f=>{f.key=="Enter"&&d.blur()},u.appendChild(h),u.appendChild(d),a=u;break}case"text":{const o=e.input.onChange,l=document.createElement("input");l.type="text",l.value=n.toString(),l.onblur=()=>{w.applyOption([e.id,l.value]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",o?.(this.app,l.value)},l.onkeydown=c=>{c.key=="Enter"&&l.blur()},a=l;break}case"color":{const o=document.createElement("input");o.type="color",o.value="#"+n.toString(16).padStart(6,"0"),o.onchange=()=>{o.blur()},o.onblur=()=>{w.applyOption([e.id,parseInt(o.value.slice(1),16)]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block"},a=o}}a.classList.add("pref-item-input"),t.appendChild(a)}else{const n=document.createElement("div");n.classList.add("pref-children"),t.appendChild(n),n.replaceChildren(...this.createOptions(e.children))}return e.type=="item"&&e.tooltip!==void 0&&Wt(t,{content:e.tooltip}),t}filterOptions(e,t=qp){const i=[];return t.forEach(r=>{if(r.label&&r.label.toLowerCase().includes(e.toLowerCase())){i.push(r);return}if(r.type=="group"||r.type=="subgroup"){const n=this.filterOptions(e,r.children);n.length!=0&&i.push({...r,children:n})}}),i}createEmptyGroup(e){const t=document.createElement("div");return t.classList.add("pref-section"),t.dataset.id=e.id,t.innerText=e.label,t.onclick=()=>{t.parentElement.parentElement.querySelector(`.pref-group[data-id=${e.id}]`).scrollIntoView()},t}onClose(){this.observer?.disconnect()}}var Hn=(s=>(s.SHIFT="Shift",s.CTRL="Ctrl",s.ALT="Alt",s.META="Command",s))(Hn||{});const xi=navigator.userAgent.indexOf("Mac OS X")>-1,ht=xi?"Command":"Ctrl",vS={Shift:xi?"⇧":"Shift",Ctrl:xi?"⌃":"Ctrl",Alt:xi?"⌥":"Alt",Command:"⌘"},Qp={ArrowLeft:"Left",ArrowUp:"Up",ArrowRight:"Right",ArrowDown:"Down",BracketLeft:"[",BracketRight:"]",Semicolon:";",Quote:"'",Backslash:"\\",Slash:"/",Period:".",Comma:",",Backquote:"`",Minus:"-",Equal:"+"},Jg={Home:xi?"fn Left":"Home",End:xi?"fn Right":"End",PageUp:xi?"fn Up":"End",PageDown:xi?"fn Down":"End"},Yo=["ctrlKey","altKey","shiftKey","metaKey"],yo=["Ctrl","Alt","Shift","Command"],wt={playback:{label:"Play/Pause",combos:[{key:"Space",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.playPause()},decreaseSnap:{label:"Decrease snap",combos:[{key:"Left",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.previousSnap()},increaseSnap:{label:"Increase snap",combos:[{key:"Right",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.nextSnap()},cursorUp:{label:"Move cursor up",combos:[{key:"Up",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>{s.chartManager.snapToPreviousTick()}},cursorDown:{label:"Move cursor down",combos:[{key:"Down",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>{s.chartManager.snapToNextTick()}},increaseScrollSpeed:{label:"Increase scroll speed",combos:[{key:"Up",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>w.chart.speed=Math.max(10,w.chart.speed*Math.pow(1.01,30))},decreaseScrollSpeed:{label:"Decrease scroll speed",combos:[{key:"Down",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>w.chart.speed=Math.max(10,w.chart.speed*Math.pow(1.01,-30))},zoomIn:{label:"Zoom in",combos:[{key:"+",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.zoom+=.1,_e.create("Zoom: "+Math.round(w.chart.zoom*100)+"%")}},zoomOut:{label:"Zoom out",combos:[{key:"-",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.zoom=Math.max(.1,w.chart.zoom-.1),_e.create("Zoom: "+Math.round(w.chart.zoom*100)+"%")}},zoomDefault:{label:"Reset zoom",combos:[{key:"0",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.zoom=1,_e.create("Zoom: "+Math.round(w.chart.zoom*100)+"%")}},newSong:{label:"New song...",bindLabel:"New song",combos:[{key:"N",mods:[ht]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>{s.windowManager.openWindow(new Kg(s))}},openSong:{label:"Open song...",bindLabel:"Open song",combos:[{key:"O",mods:[ht]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>{if(window.nw){const e=document.createElement("input");e.type="file",e.accept=".sm,.ssc",e.onchange=()=>s.chartManager.loadSM(e.value),e.click()}else s.windowManager.openWindow(new qg(s,!1))}},songProperties:{label:"Song properties...",bindLabel:"Open song properties",combos:[{key:"O",mods:["Shift"]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>s.windowManager.openWindow(new lS(s))},save:{label:"Save...",bindLabel:"Save",combos:[{key:"S",mods:[ht]}],disabled:s=>!s.chartManager.loadedSM||s.chartManager.smPath.startsWith("https://")||s.chartManager.smPath.startsWith("http://"),callback:s=>s.chartManager.save()},export:{label:"Save and export current song",combos:[{key:"E",mods:[ht]}],disabled:s=>!!window.nw||!s.chartManager.loadedSM||s.chartManager.smPath.startsWith("https://")||s.chartManager.smPath.startsWith("http://"),callback:s=>{s.chartManager.save(),Fe.getStandardHandler().saveDirectory(s.chartManager.smPath)}},exportNotedata:{label:"Export to notedata...",bindLabel:"Export to notedata",combos:[{key:"E",mods:[ht,"Shift"]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>s.windowManager.openWindow(new JT(s,s.chartManager.selection.notes))},openChart:{label:"Chart list",bindLabel:"Open chart list",combos:[{key:"O",mods:[ht,"Shift"]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>s.windowManager.openWindow(new Fg(s))},timingDataRow:{label:"Edit timing data at row",combos:[{key:"T",mods:["Shift"]}],disabled:s=>!s.chartManager.chartView||!Be.openWindows,callback:s=>s.windowManager.openWindow(new gS(s))},selectRegion:{label:"Select region",combos:[{key:"Tab",mods:[]}],disabled:s=>!s.chartManager.loadedChart&&s.chartManager.getMode()!=X.Edit,callback:s=>s.chartManager.selectRegion()},volumeUp:{label:"Increase master volume",combos:[{key:"Up",mods:["Alt"]}],disabled:!1,callback:()=>{w.audio.masterVolume=Math.min(w.audio.masterVolume+.05,1),_e.create("Master volume: "+Math.round(w.audio.masterVolume*100)+"%")}},volumeDown:{label:"Decrease master volume",combos:[{key:"Down",mods:["Alt"]}],disabled:!1,callback:()=>{w.audio.masterVolume=Math.max(w.audio.masterVolume-.05,0),_e.create("Master volume: "+Math.round(w.audio.masterVolume*100)+"%")}},songVolumeUp:{label:"Increase song volume",combos:[{key:"Up",mods:["Shift","Alt"]}],disabled:!1,callback:()=>{w.audio.songVolume=Math.min(w.audio.songVolume+.05,1),_e.create("Song volume: "+Math.round(w.audio.songVolume*100)+"%")}},songVolumeDown:{label:"Decrease song volume",combos:[{key:"Down",mods:["Shift","Alt"]}],disabled:!1,callback:()=>{w.audio.songVolume=Math.max(w.audio.songVolume-.05,0),_e.create("Song volume: "+Math.round(w.audio.songVolume*100)+"%")}},effectvolumeUp:{label:"Increase tick/metronome volume",combos:[{key:"Up",mods:["Shift",ht,"Alt"]}],disabled:!1,callback:()=>{w.audio.soundEffectVolume=Math.min(w.audio.soundEffectVolume+.05,1),_e.create("Effect volume: "+Math.round(w.audio.soundEffectVolume*100)+"%")}},effectvolumeDown:{label:"Decrease tick/metronome volume",combos:[{key:"Down",mods:["Shift",ht,"Alt"]}],disabled:!1,callback:()=>{w.audio.soundEffectVolume=Math.max(w.audio.soundEffectVolume-.05,0),_e.create("Effect Volume: "+Math.round(w.audio.soundEffectVolume*100)+"%")}},rateUp:{label:"Increase playback rate",combos:[{key:"Right",mods:["Shift"]}],disabled:s=>s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:()=>{w.audio.rate+=.05,_e.create("Playback Rate: "+Math.round(w.audio.rate*100)+"%")}},rateDown:{label:"Decrease playback rate",combos:[{key:"Left",mods:["Shift"]}],disabled:s=>s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:()=>{w.audio.rate=Math.max(w.audio.rate-.05,.1),_e.create("Playback Rate: "+Math.round(w.audio.rate*100)+"%")}},rateDefault:{label:"Reset playback rate",combos:[],disabled:!1,callback:()=>{w.audio.rate=1,_e.create("Playback Rate: "+Math.round(w.audio.rate)+"%")}},previousMeasure:{label:"Previous measure",combos:[{key:"PageUp",mods:[]},{key:";",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>{const e=s.chartManager.getBeat(),t=s.chartManager.loadedChart.timingData.getMeasureLength(e-.001);s.chartManager.snapToNearestTick(Math.max(0,e-t))}},nextMeasure:{label:"Next measure",combos:[{key:"PageDown",mods:[]},{key:"'",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>{const e=s.chartManager.getBeat(),t=s.chartManager.loadedChart.timingData.getMeasureLength(e);s.chartManager.snapToNearestTick(Math.max(0,e+t))}},previousNote:{label:"Previous note",combos:[{key:",",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.previousNote()},nextNote:{label:"Next note",combos:[{key:".",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.nextNote()},jumpChartStart:{label:"Jump to first note",combos:[],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.firstNote()},jumpChartEnd:{label:"Jump to last note",combos:[],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.lastNote()},jumpSongStart:{label:"Jump to song start",combos:[{key:"Home",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.setBeat(Math.max(0,s.chartManager.loadedChart.getBeatFromSeconds(0)))},jumpSongEnd:{label:"Jump to song end",combos:[{key:"End",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.setBeat(s.chartManager.loadedChart.getBeatFromSeconds(s.chartManager.chartAudio.getSongLength()))},assistTick:{label:"Assist tick",combos:[{key:"F7",mods:[]}],disabled:()=>!Be.assist,callback:()=>{w.audio.assistTick=!w.audio.assistTick,_e.create("Assist Tick: "+(w.audio.assistTick?"on":"off"))}},metronome:{label:"Metronome",combos:[{key:"F7",mods:["Alt"]}],disabled:()=>!Be.assist,callback:()=>{w.audio.metronome=!w.audio.metronome,_e.create("Metronome: "+(w.audio.metronome?"on":"off"))}},XMod:{label:"XMod (Beat-based)",combos:[{key:"X",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.CMod=!1,_e.create("Switched to XMod")}},CMod:{label:"CMod (Time-based)",combos:[{key:"C",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.CMod=!0,_e.create("Switched to CMod")}},reverse:{label:"Reverse playfield",combos:[],disabled:!1,callback:()=>{w.chart.reverse=!w.chart.reverse,_e.create("Reverse Playfield: "+(w.chart.reverse?"on":"off"))}},hideWarpedArrows:{label:"Hide warped notes (CMod only)",combos:[{key:"W",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.hideWarpedArrows=!w.chart.hideWarpedArrows,_e.create("Hide Warped Arrows: "+(w.chart.hideWarpedArrows?"on":"off"))}},hideFakedArrows:{label:"Hide faked notes (CMod only)",combos:[{key:"F",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.hideFakedArrows=!w.chart.hideFakedArrows,_e.create("Hide Faked Arrows: "+(w.chart.hideFakedArrows?"on":"off"))}},doSpeedChanges:{label:"Do speed changes (XMod only)",combos:[{key:"S",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.doSpeedChanges=!w.chart.doSpeedChanges,_e.create("Speed Changes: "+(w.chart.doSpeedChanges?"on":"off"))}},showEq:{label:"Equalizer",combos:[{key:"E",mods:["Shift"]}],disabled:s=>!s.chartManager.chartAudio||!Be.openWindows,callback:s=>s.windowManager.openWindow(new qT(s))},detectSync:{label:"Detect audio sync",combos:[{key:"L",mods:["Shift"]}],disabled:s=>!s.chartManager.chartAudio||!Be.openWindows,callback:s=>s.windowManager.openWindow(new Qg(s))},previousNoteType:{label:"Previous note type",combos:[{key:"N",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.previousNoteType()},nextNoteType:{label:"Next note type",combos:[{key:"M",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.nextNoteType()},undo:{label:"Undo",combos:[{key:"Z",mods:[ht]}],disabled:s=>!s.actionHistory.canUndo()||s.chartManager.getMode()!=X.Edit,callback:s=>s.actionHistory.undo()},redo:{label:"Redo",combos:[{key:"Y",mods:[ht]},{key:"Z",mods:[ht,"Shift"]}],disabled:s=>!s.actionHistory.canRedo()||s.chartManager.getMode()!=X.Edit,callback:s=>s.actionHistory.redo()},mousePlacement:{label:"Enable Mouse Note Placement",combos:[{key:"M",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.mousePlacement=!w.chart.mousePlacement,_e.create("Mouse Note Placement: "+(w.chart.mousePlacement?"on":"off"))}},playMode:{label:"Enter/Exit Play Mode",combos:[{key:"P",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Record||!Be.playMode,callback:s=>s.chartManager.setMode(X.Play)},recordMode:{label:"Enter/Exit Record Mode",combos:[{key:"R",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.View||!Be.recordMode,callback:s=>s.chartManager.setMode(X.Record)},playModeStart:{label:"Play from start",combos:[{key:"P",mods:["Shift"]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Record||!Be.playMode,callback:s=>{s.chartManager.setBeat(0),s.chartManager.setMode(X.Play)}},recordModeStart:{label:"Record from start",combos:[{key:"R",mods:["Shift"]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.View||!Be.recordMode,callback:s=>s.chartManager.setMode(X.Record)},options:{label:"Options...",bindLabel:"Edit options",combos:[{key:",",mods:[ht]}],disabled:()=>!Be.openWindows||!Be.openWindows,callback:s=>{s.windowManager.openWindow(new yS(s))}},keybinds:{label:"Keybinds...",bindLabel:"Edit keybinds",combos:[],disabled:()=>!Be.openWindows||!Be.openWindows,callback:s=>{s.windowManager.openWindow(new Di(s))}},gameplayKeybinds:{label:"Gameplay keybinds...",bindLabel:"Edit gameplay keybinds",combos:[],disabled:()=>!Be.openWindows||!Be.openWindows,callback:s=>{s.windowManager.openWindow(new ZT(s))}},convertHoldsRolls:{label:"Holds to rolls",bindLabel:"Convert holds to rolls",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Hold"&&(e.type="Roll"),e))}},convertRollsHolds:{label:"Rolls to holds",bindLabel:"Convert rolls to holds",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Roll"&&(e.type="Hold"),e))}},swapHoldsRolls:{label:"Swap holds and rolls",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Hold"?e.type="Roll":e.type=="Roll"&&(e.type="Hold"),e))}},convertHoldsTaps:{label:"Holds/rolls to taps",bindLabel:"Convert holds/rolls to taps",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>((e.type=="Hold"||e.type=="Roll")&&(e.type="Tap"),e))}},convertTapsMines:{label:"Taps to mines",bindLabel:"Convert ntapsotes to mines",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Tap"&&(e.type="Mine"),e))}},convertTapsLifts:{label:"Taps to lifts",bindLabel:"Convert taps to lifts",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Tap"&&(e.type="Lift"),e))}},convertTapsFakes:{label:"Taps to fakes",bindLabel:"Convert taps to fakes",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Tap"&&(e.type="Fake"),e))}},mirrorHorizontally:{label:"Horizontally",bindLabel:"Mirror horizontally",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.col=s.chartManager.loadedChart.gameType.flipColumns.horizontal[e.col],e))}},mirrorVertically:{label:"Vertically",bindLabel:"Mirror vertically",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.col=s.chartManager.loadedChart.gameType.flipColumns.vertical[e.col],e))}},mirrorBoth:{label:"Both",bindLabel:"Mirror both",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.col=s.chartManager.loadedChart.gameType.flipColumns.horizontal[e.col],e.col=s.chartManager.loadedChart.gameType.flipColumns.vertical[e.col],e))}},selectBeforeCursor:{label:"Select before cursor",combos:[{key:"Home",mods:["Shift"]}],disabled:s=>!s.chartManager.loadedChart,callback:s=>{s.chartManager.editTimingMode==Oe.Off?s.chartManager.setNoteSelection(s.chartManager.loadedChart.getNotedata().filter(e=>e.beate.beat!s.chartManager.loadedChart,callback:s=>{s.chartManager.editTimingMode==Oe.Off?s.chartManager.setNoteSelection(s.chartManager.loadedChart.getNotedata().filter(e=>e.beat>s.chartManager.getBeat())):s.chartManager.setEventSelection(s.chartManager.loadedChart.timingData.getTimingData().filter(e=>e.beat>s.chartManager.getBeat()))}},selectAll:{label:"Select all",combos:[{key:"A",mods:[ht]}],disabled:s=>!s.chartManager.loadedChart,callback:s=>{s.chartManager.editTimingMode==Oe.Off?s.chartManager.setNoteSelection(s.chartManager.loadedChart.getNotedata()):s.chartManager.setEventSelection(s.chartManager.loadedChart.timingData.getTimingData())}},expand2to1:{label:"Expand 2:1 (8th to 4th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)*2+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold*=2,t.hold=Math.round(t.hold*48)/48),t))}},expand3to2:{label:"Expand 3:2 (12th to 8th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)*1.5+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold*=1.5,t.hold=Math.round(t.hold*48)/48),t))}},expand4to3:{label:"Expand 4:3 (16th to 2th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)*4/3+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold*=4/3,t.hold=Math.round(t.hold*48)/48),t))}},compress1to2:{label:"Compress 1:2 (4th to 8th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)/2+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold/=2,t.hold=Math.round(t.hold*48)/48),t))}},compress2to3:{label:"Compress 2:3 (8th to 12th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)/1.5+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold/=1.5,t.hold=Math.round(t.hold*48)/48),t))}},compress3to4:{label:"Compress 3:4 (12th to 16th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)*.75+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold*=.75,t.hold=Math.round(t.hold*48)/48),t))}},quantize4th:{label:"4ths",bindLabel:"Quantize to 4ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,4),e.beat=Math.round(e.beat*48)/48,e))}},quantize8th:{label:"8ths",bindLabel:"Quantize to 8ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,8),e.beat=Math.round(e.beat*48)/48,e))}},quantize12th:{label:"12ths",bindLabel:"Quantize to 12ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,12),e.beat=Math.round(e.beat*48)/48,e))}},quantize16th:{label:"16ths",bindLabel:"Quantize to 16ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,16),e.beat=Math.round(e.beat*48)/48,e))}},quantize24th:{label:"24ths",bindLabel:"Quantize to 24ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,24),e.beat=Math.round(e.beat*48)/48,e))}},quantize32nd:{label:"32nds",bindLabel:"Quantize to 32nds",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,32),e.beat=Math.round(e.beat*48)/48,e))}},quantize48th:{label:"48ths",bindLabel:"Quantize to 48ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,48),e.beat=Math.round(e.beat*48)/48,e))}},quantize96th:{label:"96ths",bindLabel:"Quantize to 96ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,96),e.beat=Math.round(e.beat*48)/48,e))}},delete:{label:"Delete",combos:[{key:"Backspace",mods:[]},{key:"Delete",mods:[]}],disabled:s=>s.chartManager.getMode()!=X.Edit||s.chartManager.selection.notes.length==0&&s.chartManager.eventSelection.timingEvents.length==0,callback:s=>{s.chartManager.deleteSelection(),s.chartManager.deleteEventSelection()}},paste:{label:"Paste",combos:[{mods:[ht],key:"V"}],preventDefault:!1,disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit,callback:async s=>{const e=await navigator.clipboard.readText();s.chartManager.paste(e)}},pasteReplace:{label:"Clear and paste",combos:[{mods:[ht,"Shift"],key:"V"}],preventDefault:!1,disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit,callback:async s=>{const e=await navigator.clipboard.readText();s.chartManager.paste(e,!0)}},copy:{label:"Copy",combos:[{mods:[ht],key:"C"}],preventDefault:!1,disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit||!s.chartManager.hasSelection(),callback:async s=>{const e=s.chartManager.copy();e&&await navigator.clipboard.writeText(e)}},cut:{label:"Cut",combos:[{mods:[ht],key:"X"}],preventDefault:!1,disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit||!s.chartManager.hasSelection(),callback:async s=>{const e=s.chartManager.copy();e&&await navigator.clipboard.writeText(e),s.chartManager.deleteSelection()}},adjustOffset:{label:"Adjust offset",combos:[],disabled:()=>!Be.openWindows,callback:s=>s.windowManager.openWindow(new oS(s))},setSongPreview:{label:"Set as song preview",combos:[],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit||!s.chartManager.hasRange(),callback:s=>{const e=s.chartManager.loadedChart,t=s.chartManager.loadedSM.properties.SAMPLESTART??"0",i=s.chartManager.loadedSM.properties.SAMPLELENGTH??"10";let r="",n="";if(s.chartManager.startRegion!==void 0&&s.chartManager.endRegion!==void 0){const a=e.getSecondsFromBeat(s.chartManager.startRegion),o=e.getSecondsFromBeat(s.chartManager.endRegion);r=ne(a,3).toString(),n=ne(o-a,3).toString()}else{const o=(s.chartManager.selection.notes.length>0?s.chartManager.selection.notes:s.chartManager.eventSelection.timingEvents).map(u=>u.beat),l=e.getSecondsFromBeat(Math.min(...o)),c=e.getSecondsFromBeat(Math.max(...o));r=ne(l,3).toString(),n=ne(c-l,3).toString()}pt.instance.run({action:a=>{a.chartManager.loadedSM.properties.SAMPLESTART=r,a.chartManager.loadedSM.properties.SAMPLELENGTH=n},undo:()=>{s.chartManager.loadedSM.properties.SAMPLESTART=t,s.chartManager.loadedSM.properties.SAMPLELENGTH=i}})}},showDebugTimers:{label:"Toggle Debug Timers",combos:[{key:"F3",mods:["Shift"]}],disabled:!1,callback:()=>{w.debug.showTimers=!w.debug.showTimers}},showFPSCounter:{label:"Toggle FPS Counter",combos:[{key:"F3",mods:[]}],disabled:!1,callback:()=>{w.debug.showFPS=!w.debug.showFPS}},noteTypeTap:{label:"Switch to Taps",combos:[],disabled:s=>!s.chartManager.chartView,callback:s=>{s.chartManager.setEditingNoteType("Tap")}},noteTypeLift:{label:"Switch to Lifts",combos:[],disabled:s=>!s.chartManager.chartView,callback:s=>{s.chartManager.setEditingNoteType("Lift")}},noteTypeMine:{label:"Switch to Mines",combos:[],disabled:s=>!s.chartManager.chartView,callback:s=>{s.chartManager.setEditingNoteType("Mine")}},noteTypeFake:{label:"Switch to Fakes",combos:[],disabled:s=>!s.chartManager.chartView,callback:s=>{s.chartManager.setEditingNoteType("Fake")}},quant4:{label:"Switch to 4ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1}},quant8:{label:"Switch to 8ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/2}},quant12:{label:"Switch to 12ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/3}},quant16:{label:"Switch to 16ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/4}},quant24:{label:"Switch to 24ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/6}},quant32:{label:"Switch to 32ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/8}},quant48:{label:"Switch to 48ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/12}},quant96:{label:"Switch to 96ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/24}},quant192:{label:"Switch to 192nds",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/48}},openGuide:{label:"Open Help Guide",combos:[],disabled:!1,callback:()=>{window.open("/smeditor/guide/")}},noteskinWindow:{label:"Noteskins...",bindLabel:"Open Noteskin Window",combos:[{mods:["Shift"],key:"N"}],disabled:s=>!s.chartManager.chartView,callback:s=>s.windowManager.openWindow(new aS(s))},previousChart:{label:"Previous chart",combos:[{key:"F5",mods:[]}],disabled:s=>!s.chartManager.chartView,callback:s=>{if(!s.chartManager.loadedSM?.charts||!s.chartManager.loadedChart)return;const e=s.chartManager.loadedSM?.charts[s.chartManager.loadedChart.gameType.id],t=e.indexOf(s.chartManager.loadedChart);e[t-1]&&s.chartManager.loadChart(e[t-1])}},nextChart:{label:"Next chart",combos:[{key:"F6",mods:[]}],disabled:s=>!s.chartManager.chartView,callback:s=>{if(!s.chartManager.loadedSM?.charts||!s.chartManager.loadedChart)return;const e=s.chartManager.loadedSM?.charts[s.chartManager.loadedChart.gameType.id],t=e.indexOf(s.chartManager.loadedChart);e[t+1]&&s.chartManager.loadChart(e[t+1])}}};class AS{static popup;static open(e,t){this.popup=this.build(e,t),document.getElementById("popups")?.appendChild(this.popup)}static build(e,t){const i=document.createElement("div");i.classList.add("update-popup");const r=document.createElement("div");r.classList.add("title"),r.innerText=`A new version of the desktop app is available! (${e})`;const n=document.createElement("div");return n.classList.add("desc"),n.innerText="Click here to download the new version.",i.replaceChildren(r,n),i.onclick=()=>{localStorage.setItem("downloadedVersion",e),nw.require("nw.gui").Shell.openExternal(t),this.close()},i}static close(){this.popup&&(this.popup.style.opacity="0",this.popup.onclick=null,setTimeout(()=>this.popup.remove(),300))}}class Gt extends Um{static graphics=new An;static textures={default:Rt.create({width:50,height:50}),noBorder:Rt.create({width:50,height:50}),onlyBorder:Rt.create({width:50,height:50})};static init(e){this.textures.default=Rt.create({width:50,height:50,resolution:e.resolution}),this.textures.noBorder=Rt.create({width:50,height:50,resolution:e.resolution}),this.textures.onlyBorder=Rt.create({width:50,height:50,resolution:e.resolution}),this.graphics.beginFill(16777215,1),this.graphics.lineStyle(1,0),this.graphics.drawRoundedRect(0,0,50,50,5),this.graphics.endFill(),e.render(this.graphics,{renderTexture:this.textures.default}),this.graphics.clear(),this.graphics.beginFill(16777215,1),this.graphics.lineStyle(1,16777215),this.graphics.drawRoundedRect(0,0,50,50,5),this.graphics.endFill(),e.render(this.graphics,{renderTexture:this.textures.noBorder}),this.graphics.clear(),this.graphics.beginFill(16777215,0),this.graphics.lineStyle(2,16777215),this.graphics.drawRoundedRect(0,0,50,50,5),this.graphics.endFill(),e.render(this.graphics,{renderTexture:this.textures.onlyBorder})}constructor(e){super(Gt.textures[e??"default"],5,5,5,5)}}const Vn=[];function Jp(){return Vn.length}function NC(){for(Vn.push(Date.now());Vn.length>0&&Vn[0]0&&Wn[0]Jp()+" FPS"});drawUpdateTimeGraph=new In({width:300,height:mi,color:6034982,min:0,unit:"ms",label:"DrawUpdate",precision:1});updateTimeGraph=new In({width:300,height:mi,color:1516101,min:0,unit:"ms",label:"Update",precision:1,sublabel:()=>Zp()+" TPS"});memoryTimeGraph=new In({width:300,height:mi,color:6626406,min:0,formatter:e=>Math.round(e/1048576)+" MB",label:"Memory"});cpuGraph=new In({width:300,height:mi,color:5190685,min:0,label:"CPU"});graphs=new Ee;fpsCounter=new Ee;fpsBg=new Gt;fpsText=new Re("",{fontName:"Main",fontSize:12});lastFrameTime=0;constructor(e){super(e),this.drawUpdateTimeGraph.y+=mi+5,this.updateTimeGraph.y+=(mi+5)*2,this.memoryTimeGraph.y+=(mi+5)*3,this.cpuGraph.y+=(mi+5)*4,aa.instance=this,this.fpsBg.tint=0,this.fpsBg.alpha=.5,this.fpsText.x=5,this.fpsBg.y=-5,this.graphs.addChild(this.frameTimeGraph,this.drawUpdateTimeGraph,this.updateTimeGraph),performance.memory&&this.graphs.addChild(this.memoryTimeGraph),this.fpsCounter.addChild(this.fpsBg,this.fpsText),this.graphs.visible=w.debug.showTimers,this.fpsCounter.visible=w.debug.showFPS,this.addChild(this.graphs,this.fpsCounter)}update(){this.x=-this.manager.app.renderer.screen.width/2+20,this.y=-this.manager.app.renderer.screen.height/2+20,this.graphs.children.forEach(e=>e.update()),this.graphs.visible=w.debug.showTimers,this.fpsCounter.visible=w.debug.showFPS,this.fpsText.text=`${Jp()} FPS +`;class nt{view;input;onChange;min=-Number.MAX_VALUE;max=Number.MAX_VALUE;precision;step=1;lastVal="";constructor(e,t,i,r,n,a){this.view=e,this.view.classList.add("spinner"),this.view.onfocus=()=>{o.focus()};const o=document.createElement("input");o.classList.add("spinner-input"),o.type="text",o.autocomplete="off",o.spellcheck=!1,o.onblur=()=>{if(o.value===this.lastVal)return;if(o.value===""){this.onChange?.(void 0);return}const h=na(o.value);if(h===null){o.value=this.lastVal;return}let d=ne(h,this.precision??3);d=Ve(d,this.min,this.max),o.value=this.formatValue(d),this.onChange?.(d)},o.onkeydown=h=>{h.key=="Enter"&&o.blur(),h.key=="Escape"&&(o.value=this.lastVal,o.blur())},o.onfocus=()=>{this.lastVal=o.value},this.input=o,this.min=n??this.min,this.max=a??this.max,this.step=i,this.precision=r,this.setValue(t),e.appendChild(o);const l=document.createElement("div");l.classList.add("spinner-btns"),e.appendChild(l);const c=document.createElement("button");c.classList.add("spinner-up"),c.tabIndex=-1,c.onclick=h=>{let d=i??w.general.spinnerStep;h.getModifierState("Shift")&&(d/=10),!(a!==void 0&&parseFloat(o.value)+d>a)&&(o.value=this.formatValue(parseFloat(o.value)+d),this.onChange?.(parseFloat(o.value)))},l.appendChild(c);const u=document.createElement("button");u.classList.add("spinner-down"),u.tabIndex=-1,u.onclick=h=>{let d=i??w.general.spinnerStep;h.getModifierState("Shift")&&(d/=10),!(n!==void 0&&parseFloat(o.value)-ds.chartManager.loadAudio()}},{title:"Background Image",propName:"BACKGROUND",input:{type:"file",typeName:"image",accept:tr}},{title:"Banner Image",propName:"BANNER",input:{type:"file",typeName:"image",accept:tr}},{title:"CD Title",propName:"CDTITLE",input:{type:"file",typeName:"image",accept:tr}},{title:"CD Image",propName:"CDIMAGE",input:{type:"file",typeName:"image",accept:tr}},{title:"Jacket",propName:"JACKET",input:{type:"file",typeName:"image",accept:tr}},{title:"Disc Image",propName:"DISCIMAGE",input:{type:"file",typeName:"image",accept:tr}}]},{title:"Song",items:[{title:"Song Preview",propName:"SAMPLESTART",input:{type:"custom",create:(s,e,t)=>{const i=t??pt.instance,r=()=>{a.value{(e??p.chartManager.loadedSM).properties.SAMPLESTART=h,(e??p.chartManager.loadedSM).properties.SAMPLELENGTH=d,n.setValue(parseFloat(h)),a.setValue(parseFloat(h)+parseFloat(d))},undo:()=>{(e??s.chartManager.loadedSM).properties.SAMPLESTART=c,(e??s.chartManager.loadedSM).properties.SAMPLELENGTH=u,n.setValue(parseFloat(c)),a.setValue(parseFloat(c)+parseFloat(u))}})},n=nt.create(parseFloat((e??s.chartManager.loadedSM).properties.SAMPLESTART??"0"),void 0,3,0);n.onChange=c=>{if(c===void 0){n.setValue(parseFloat((e??s.chartManager.loadedSM).properties.SAMPLESTART??"0"));return}r()};const a=nt.create(parseFloat((e??s.chartManager.loadedSM).properties.SAMPLESTART??"0")+parseFloat((e??s.chartManager.loadedSM).properties.SAMPLELENGTH??"10"),void 0,3,0);a.onChange=c=>{if(c===void 0){a.setValue(parseFloat((e??s.chartManager.loadedSM).properties.SAMPLESTART??"0")+parseFloat((e??s.chartManager.loadedSM).properties.SAMPLELENGTH??"10"));return}r()};const o=document.createElement("div"),l=document.createElement("div");return l.innerText="to",o.classList.add("flex-row","flex-column-gap"),o.replaceChildren(n.view,l,a.view),o}}}]}];function Xg(s,e,t,i){const r=i??pt.instance;switch(e.input.type){case"custom":return e.input.create(s,t,i);case"string":{const n=document.createElement("input");return n.type="text",n.autocomplete="off",n.spellcheck=!1,n.onkeydown=a=>{a.key=="Enter"&&n.blur()},n.onblur=()=>{const a=(t??s.chartManager.loadedSM).properties[e.propName],o=n.value;r.run({action:l=>{(t??l.chartManager.loadedSM).properties[e.propName]=o,n.value=o},undo:()=>{(t??s.chartManager.loadedSM).properties[e.propName]=a,n.value=a??""}})},n.value=(t??s.chartManager.loadedSM).properties[e.propName]??"",n}case"number":{const n=e.input,a=nt.create(parseFloat((t??s.chartManager.loadedSM).properties[e.propName])??15,n.step,n.precision,n.min,n.max);return a.onChange=o=>{if(o===void 0){a.setValue(parseFloat((t??s.chartManager.loadedSM).properties[e.propName]??"0"));return}const l=(t??s.chartManager.loadedSM).properties[e.propName],c=o.toString();r.run({action:u=>{(t??u.chartManager.loadedSM).properties[e.propName]=c,a.setValue(parseFloat(c))},undo:()=>{(t??s.chartManager.loadedSM).properties[e.propName]=l,a.setValue(parseFloat(l??"0"))}})},a.view}case"file":{const n=e.input,a=e.input.onChange,o=document.createElement("div");o.classList.add("flex-row","flex-column-gap");const l=document.createElement("input");l.type="text",l.autocomplete="off",l.spellcheck=!1,l.placeholder="click to select a file",l.onclick=h=>{h.preventDefault(),l.blur();const d=Rt(s.chartManager.smPath);if(window.nw){const p=document.createElement("input");p.type="file",p.accept=n.accept.join(","),p.onchange=()=>{const m=Fe.getRelativePath(d,p.value),f=(t??s.chartManager.loadedSM).properties[e.propName]??"";r.run({action:g=>{(t??g.chartManager.loadedSM).properties[e.propName]=m,l.value=m},undo:()=>{(t??s.chartManager.loadedSM).properties[e.propName]=f,l.value=f}}),a?.(s)},p.click()}else s.windowManager.openWindow(new pd(s,{title:`Select a${n.typeName.match(/^[aieouAIEOU].*/)?"n":""} ${n.typeName} file...`,accepted_file_types:n.accept,disableClose:!0,callback:p=>{const m=Fe.getRelativePath(d,p),f=(t??s.chartManager.loadedSM).properties[e.propName]??"";r.run({action:g=>{(t??g.chartManager.loadedSM).properties[e.propName]=m,l.value=m},undo:()=>{(t??s.chartManager.loadedSM).properties[e.propName]=f,l.value=f}}),a?.(s)}},(t??s.chartManager.loadedSM).properties[e.propName]?d+"/"+(t??s.chartManager.loadedSM).properties[e.propName]:s.chartManager.smPath))},l.value=(t??s.chartManager.loadedSM).properties[e.propName]??"",o.appendChild(l);const c=document.createElement("button");c.style.height="100%",c.classList.add("delete"),c.disabled=!(t??s.chartManager.loadedSM).properties[e.propName],c.onclick=()=>{l.value="",c.disabled=!0};const u=document.createElement("img");return u.classList.add("icon"),u.style.height="12px",u.src=Ce.TRASH,c.appendChild(u),o.appendChild(c),o}}}class Kg extends Pt{app;sm;actionHistory;fileTable={};constructor(e){super({title:"New Song",width:450,height:492,disableClose:!0,win_id:"sm_properties",blocking:!0});const t=new Blob([iS],{type:"text/plain"}),i=new File([t],"song.sm",{type:"text/plain"});this.sm=new Yg(i),this.app=e,this.actionHistory=new pt(this.app),this.initView()}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("sm-properties");const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("label"),t.innerText="Apply to",jg.forEach(l=>{const c=document.createElement("div");c.classList.add("sm-container");const u=document.createElement("div");u.classList.add("sm-title"),u.innerText=l.title;const h=document.createElement("div");h.classList.add("property-grid"),l.items.forEach(d=>{const p=document.createElement("div");p.classList.add("label"),p.innerText=d.title,h.appendChild(p),d.input.type=="file"?h.appendChild(this.createFileElement(d.propName,d.input.typeName)):h.appendChild(Xg(this.app,d,this.sm,this.actionHistory))}),c.appendChild(u),c.appendChild(h),e.appendChild(c)});const i=document.createElement("div");i.classList.add("menu-options");const r=document.createElement("div");r.classList.add("menu-left");const n=document.createElement("div");n.classList.add("menu-right"),i.appendChild(r),i.appendChild(n);const a=document.createElement("button");a.innerText="Cancel",a.onclick=()=>{this.closeWindow()};const o=document.createElement("button");o.innerText="Create",o.classList.add("confirm"),o.onclick=()=>{this.sm.properties.MUSIC===void 0||this.sm.properties.MUSIC===""?this.app.windowManager.openWindow(new fd(this.app,"No audio file uploaded","Are you sure you want to create a file with no audio?",[{type:"confirm",label:"Yes",callback:()=>{this.createSong(),this.closeWindow()}},{type:"default",label:"No"}])):(this.createSong(),this.closeWindow())},r.appendChild(a),n.appendChild(o),e.appendChild(i),this.viewElement.appendChild(e)}async createSong(){let e=this.sm.properties.TITLE;if(window.nw){const t=nw.require("path"),i=document.createElement("input");i.type="file",i.nwsaveas=e+".sm",i.onchange=async()=>{const r=t.basename(i.value,t.extname(i.value));e=t.dirname(i.value);const n=t.join(e,r+".sm");await Fe.writeFile(n,this.sm.serialize("sm")),await Promise.all(Object.entries(this.fileTable).map(a=>Fe.writeFile(e+`/${a[0]}`,a[1]))),await this.app.chartManager.loadSM(n),this.app.windowManager?.getWindowById("select_sm_initial")?.closeWindow()},i.click()}else{if(await Fe.getDirectoryHandle(e)){let t=2;for(;await Fe.getDirectoryHandle(e);)e=`${this.sm.properties.TITLE} ${t++}`}await Fe.writeFile(e+"/song.sm",this.sm.serialize("sm")),await Promise.all(Object.entries(this.fileTable).map(t=>Fe.writeFile(e+`/${t[0]}`,t[1]))),await this.app.chartManager.loadSM(e+"/song.sm"),this.app.windowManager?.getWindowById("select_sm_initial")?.closeWindow()}}createFileElement(e,t){const i=document.createElement("div");i.classList.add("flex-row","flex-column-gap");const r=document.createElement("input");r.type="text",r.autocomplete="off",r.spellcheck=!1,r.placeholder="click to upload a file",r.style.color="white",r.readOnly=!0,r.onclick=o=>{o.preventDefault(),r.blur();const l=document.createElement("input");l.type="file",l.accept=t=="audio"?"audio/*":"image/*",l.onchange=()=>{const c=l.files?.[0];if(!c)return;this.sm.properties[e]&&this.fileTable[this.sm.properties[e]]&&delete this.fileTable[this.sm.properties[e]];let u=c.name;for(;this.fileTable[c.name]&&(this.fileTable[c.name].size!=c.size||this.fileTable[c.name].type!=c.type);)u="_"+u;this.fileTable[u]=c,r.value=u,this.sm.properties[e]=r.value,n.disabled=!1},l.click()},r.value=this.sm.properties[e]??"",i.appendChild(r);const n=document.createElement("button");n.style.height="100%",n.classList.add("delete"),n.disabled=!0,n.onclick=()=>{this.sm.properties[e]&&this.fileTable[this.sm.properties[e]]&&delete this.fileTable[this.sm.properties[e]],this.sm.properties[e]=void 0,r.value="",n.disabled=!0};const a=document.createElement("img");return a.classList.add("icon"),a.style.height="12px",a.src=Ce.TRASH,n.appendChild(a),i.appendChild(n),i}}class qg extends Pt{app;keyHandler;constructor(e,t=!0){super({title:"Open a Song",width:400,height:320,disableClose:t,win_id:"select_sm_initial"}),this.app=e,this.keyHandler=this.handleKeyEvent.bind(this),window.addEventListener("keydown",this.keyHandler),this.initView(),q.on("resize",()=>{this.move(window.innerWidth/2-this.options.width/2,window.innerHeight/2-this.options.height/2)})}onClose(){window.removeEventListener("keydown",this.keyHandler)}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("open-container"),e.appendChild(t);const i=document.createElement("div");i.classList.add("top-container");const r=document.createElement("div");r.classList.add("separator"),r.style.margin="10px";const n=document.createElement("div");n.classList.add("bottom-container"),t.appendChild(i),t.appendChild(r),t.appendChild(n);const a=document.createElement("button");a.style.display="flex",a.style.flexDirection="column",a.style.padding="10px",a.style.backgroundColor="#414352",i.appendChild(a);const o=document.createElement("img");o.src=Ce.UPLOAD,o.classList.add("icon"),o.style.width="30px",o.style.height="30px",a.appendChild(o);const l=document.createElement("div");l.innerText=window.nw?"Open an existing song":"Import a song folder",a.appendChild(l),a.onclick=()=>{if(window.nw){const m=document.createElement("input");m.type="file",m.accept=".sm,.ssc",m.onchange=()=>{this.app.chartManager.loadSM(m.value),this.closeWindow()},m.click()}else this.app.windowManager.openWindow(new pd(this.app,{title:"Select an sm/ssc file...",accepted_file_types:[".sm",".ssc"],disableClose:!0,callback:m=>{this.app.chartManager.loadSM(m),this.closeWindow()}}))};const c=document.createElement("button");c.style.display="flex",c.style.flexDirection="column",c.style.padding="10px",c.style.backgroundColor="#506352",i.appendChild(c);const u=document.createElement("img");u.src=Ce.PLUS,u.classList.add("icon"),u.style.width="30px",u.style.height="30px",c.appendChild(u);const h=document.createElement("div");h.innerText="New Song",c.appendChild(h),c.onclick=()=>{this.app.windowManager.openWindow(new Kg(this.app))};const d=document.createElement("div");d.innerText="Recently Opened",d.classList.add("title"),n.appendChild(d);const p=document.createElement("div");p.classList.add("recent-selector"),n.appendChild(p),Wg.getRecents().then(m=>m.forEach(f=>{const g=document.createElement("div");g.classList.add("recent-item");const y=document.createElement("div");y.classList.add("recent-name"),y.innerText=f.name;const b=document.createElement("div");b.classList.add("recent-path"),b.innerText=f.path,g.appendChild(y),g.appendChild(b),g.onclick=()=>{p.querySelectorAll(".selected").forEach(A=>A.classList.remove("selected")),g.classList.add("selected")},g.ondblclick=()=>{this.app.chartManager.loadSM(f.path),this.closeWindow()},p.appendChild(g)})),this.viewElement.appendChild(e)}handleKeyEvent(e){if(!this.windowElement.classList.contains("focused"))return;const t=this.viewElement.querySelector(".selected");if(t){if(e.code=="ArrowUp"){e.preventDefault(),e.stopImmediatePropagation();const i=t.previousElementSibling;i&&(t.parentElement.querySelectorAll(".selected").forEach(r=>r.classList.remove("selected")),i.classList.add("selected"),Jn(i,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}))}if(e.code=="ArrowDown"){e.preventDefault(),e.stopImmediatePropagation();const i=t.nextElementSibling;i&&(t.parentElement.querySelectorAll(".selected").forEach(r=>r.classList.remove("selected")),i.classList.add("selected"),Jn(i,{scrollMode:"if-needed",block:"nearest",inline:"nearest"}))}}}}function FC(){const s=new URLSearchParams(location.search),e=s.get("flags");if(e!=null){const n=new Set(e.split("").map(a=>rS[a]).filter(a=>a));for(const a of n.values())Be[a]=!Be[a]}const t=s.get("url");if(t!=null)try{Be.url=new URL(t).toString()}catch{_e.createFormatted("Invalid url "+t,"warn"),Be.url=null}const i=s.get("chartIndex");if(i!=null)try{Be.chartIndex=parseInt(i)}catch{_e.createFormatted("Invalid chartIndex "+i,"warn"),Be.chartIndex=null}const r=s.get("chartType");r!==null&&(He.getGameType(r)?Be.chartType=r:(_e.createFormatted("Invalid chartType "+r,"warn"),Be.chartType=null))}const sS={viewMode:{char:"V",name:"Force view mode (disables record mode)"},menuBar:{char:"M",name:"Hide menu bar"},playbackOptions:{char:"o",name:"Hide playback options"},barlines:{char:"B",name:"Hide barlines, waveform, and timing boxes"},assist:{char:"A",name:"Disable assist sounds"},recordMode:{char:"R",name:"Disable record mode"},playMode:{char:"P",name:"Disable play mode"},layout:{char:"L",name:"Hide note layout"},status:{char:"S",name:"Hide status bar"},autoPlay:{char:"a",name:"Play automatically"},openWindows:{char:"O",name:"Disable opening windows"},hidePoweredByText:{char:"H",name:'Hide "Powered by SMEditor" text'}},rS=Object.fromEntries(Object.entries(sS).map(([s,e])=>[e.char,s])),Be={viewMode:!1,menuBar:!0,playbackOptions:!0,barlines:!0,assist:!0,recordMode:!0,playMode:!0,layout:!0,status:!0,autoPlay:!1,hidePoweredByText:!1,openWindows:!0,url:null,chartIndex:null,chartType:null},Gn={file:{type:"menu",title:"File",options:[{type:"selection",id:"newSong"},{type:"selection",id:"openSong"},{type:"separator"},{type:"selection",id:"save"},{type:"selection",id:"export"}]},edit:{type:"menu",title:"Edit",options:[{type:"selection",id:"cut"},{type:"selection",id:"copy"},{type:"selection",id:"paste"},{type:"selection",id:"pasteReplace"},{type:"separator"},{type:"selection",id:"undo"},{type:"selection",id:"redo"},{type:"separator"},{type:"checkbox",id:"mousePlacement",checked:()=>w.chart.mousePlacement}]},view:{type:"menu",title:"View",options:[{type:"dropdown",title:"Cursor",options:[{type:"selection",id:"cursorUp"},{type:"selection",id:"cursorDown"},{type:"separator"},{type:"selection",id:"previousNote"},{type:"selection",id:"nextNote"},{type:"separator"},{type:"selection",id:"previousMeasure"},{type:"selection",id:"nextMeasure"},{type:"separator"},{type:"selection",id:"jumpChartStart"},{type:"selection",id:"jumpChartEnd"},{type:"separator"},{type:"selection",id:"jumpSongStart"},{type:"selection",id:"jumpSongEnd"}]},{type:"dropdown",title:"Snap",options:[{type:"selection",id:"decreaseSnap"},{type:"selection",id:"increaseSnap"}]},{type:"dropdown",title:"Scroll",options:[{type:"checkbox",id:"XMod",checked:()=>!w.chart.CMod},{type:"checkbox",id:"CMod",checked:()=>w.chart.CMod},{type:"separator"},{type:"selection",id:"increaseScrollSpeed"},{type:"selection",id:"decreaseScrollSpeed"}]},{type:"dropdown",title:"Zoom",options:[{type:"selection",id:"zoomIn"},{type:"selection",id:"zoomOut"},{type:"separator"},{type:"selection",id:"zoomDefault"}]},{type:"separator"},{type:"selection",id:"playMode"},{type:"selection",id:"playModeStart"},{type:"separator"},{type:"selection",id:"recordMode"},{type:"selection",id:"recordModeStart"},{type:"separator"},{type:"checkbox",id:"reverse",checked:()=>w.chart.reverse},{type:"checkbox",id:"hideWarpedArrows",checked:()=>w.chart.hideWarpedArrows},{type:"checkbox",id:"hideFakedArrows",checked:()=>w.chart.hideFakedArrows},{type:"checkbox",id:"doSpeedChanges",checked:()=>w.chart.doSpeedChanges}]},chart:{type:"menu",title:"Chart",options:[{type:"selection",id:"openChart"},{type:"separator"},{type:"selection",id:"previousChart"},{type:"selection",id:"nextChart"},{type:"separator"},{type:"selection",id:"songProperties"},{type:"separator"},{type:"selection",id:"timingDataRow"}]},selection:{type:"menu",title:"Selection",options:[{type:"dropdown",title:"Convert",options:[{type:"selection",id:"convertHoldsRolls"},{type:"selection",id:"convertRollsHolds"},{type:"selection",id:"swapHoldsRolls"},{type:"separator"},{type:"selection",id:"convertHoldsTaps"},{type:"selection",id:"convertTapsMines"},{type:"selection",id:"convertTapsLifts"},{type:"selection",id:"convertTapsFakes"}]},{type:"dropdown",title:"Mirror",options:[{type:"selection",id:"mirrorHorizontally"},{type:"selection",id:"mirrorVertically"},{type:"selection",id:"mirrorBoth"}]},{type:"dropdown",title:"Stretch",options:[{type:"selection",id:"expand2to1"},{type:"selection",id:"expand3to2"},{type:"selection",id:"expand4to3"},{type:"separator"},{type:"selection",id:"compress1to2"},{type:"selection",id:"compress2to3"},{type:"selection",id:"compress3to4"}]},{type:"dropdown",title:"Quantize",options:[{type:"selection",id:"quantize4th"},{type:"selection",id:"quantize8th"},{type:"selection",id:"quantize12th"},{type:"selection",id:"quantize16th"},{type:"selection",id:"quantize24th"},{type:"selection",id:"quantize32nd"},{type:"selection",id:"quantize48th"},{type:"selection",id:"quantize96th"}]},{type:"separator"},{type:"selection",id:"setSongPreview"},{type:"separator"},{type:"selection",id:"exportNotedata"},{type:"separator"},{type:"selection",id:"selectBeforeCursor"},{type:"selection",id:"selectAfterCursor"},{type:"selection",id:"selectAll"}]},audio:{type:"menu",title:"Audio",options:[{type:"selection",id:"detectSync"},{type:"separator"},{type:"checkbox",id:"assistTick",checked:()=>w.audio.assistTick&&Be.assist},{type:"checkbox",id:"metronome",checked:()=>w.audio.metronome&&Be.assist},{type:"separator"},{type:"dropdown",title:()=>"Master Volume ("+Math.round(w.audio.masterVolume*100)+"%)",options:[{type:"selection",id:"volumeUp"},{type:"selection",id:"volumeDown"}]},{type:"dropdown",title:()=>"Song Volume ("+Math.round(w.audio.songVolume*100)+"%)",options:[{type:"selection",id:"songVolumeUp"},{type:"selection",id:"songVolumeDown"}]},{type:"dropdown",title:()=>"Effect Volume ("+Math.round(w.audio.soundEffectVolume*100)+"%)",options:[{type:"selection",id:"effectvolumeUp"},{type:"selection",id:"effectvolumeDown"}]},{type:"dropdown",title:()=>"Playback rate ("+Math.round(w.audio.rate*100)+"%)",options:[{type:"selection",id:"rateUp"},{type:"selection",id:"rateDown"},{type:"separator"},{type:"selection",id:"rateDefault"}]},{type:"separator"},{type:"selection",id:"showEq"}]},preferences:{type:"menu",title:"Preferences",options:[{type:"selection",id:"options"},{type:"selection",id:"keybinds"},{type:"selection",id:"gameplayKeybinds"},{type:"selection",id:"noteskinWindow"}]},help:{type:"menu",title:"Help",options:[{type:"selection",id:"openGuide"}]}},zp=["cut","copy","paste","pasteReplace"],Yp={edit:[{ids:["delete"],after:"redo"},{ids:["previousNoteType","nextNoteType","noteTypeTap","noteTypeMine","noteTypeFake","noteTypeLift","quant4","quant8","quant12","quant16","quant24","quant32","quant48","quant96","quant192"],after:"mousePlacement"}],view:[{ids:["playback","selectRegion"]}],debug:[{ids:["showFPSCounter","showDebugTimers"]}]};class Di extends Pt{static GROUPS;app;observer;searchDropdown;conflictMap=this.calculateConflicts();constructor(e){super({title:"Keybind Options",width:600,height:400,disableClose:!1,win_id:"keybind_options",blocking:!1}),this.app=e,Di.GROUPS||(Di.GROUPS=Di.createGroups()),this.initView()}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("pref-container");const i=document.createElement("div");i.classList.add("pref-search");const r=document.createElement("input");r.classList.add("pref-search-bar"),r.type="text",r.placeholder="Search for a keybind...",r.oninput=()=>{o.replaceChildren(...this.createSections(r.value)),l.replaceChildren(...this.createOptions(r.value))};const n=di.create(["Name","Key"],"Name");n.onChange(()=>{o.replaceChildren(...this.createSections(r.value)),l.replaceChildren(...this.createOptions(r.value))}),this.searchDropdown=n,i.replaceChildren(r,n.view);const a=document.createElement("div");a.classList.add("pref-scrollers");const o=document.createElement("div");o.classList.add("pref-section-scroller");const l=document.createElement("div");l.classList.add("pref-option-scroller"),a.replaceChildren(o,l),this.observer=new IntersectionObserver(c=>{c.forEach(u=>{const h=u.target.dataset.id,d=o.querySelector(`.pref-section[data-id=${h}]`);d&&(u.intersectionRatio>0?d.classList.add("selected"):d.classList.remove("selected"))})},{}),t.replaceChildren(i,a),o.replaceChildren(...this.createSections()),l.replaceChildren(...this.createOptions()),e.appendChild(t),this.viewElement.appendChild(e)}createSections(e=""){return Object.keys(Di.GROUPS).filter(t=>Di.GROUPS[t].some(i=>this.filterID(e,i))).map(t=>this.createEmptySection(Gn[t]?.title??Ec(t),t))}createOptions(e=""){return Object.keys(Di.GROUPS).filter(t=>Di.GROUPS[t].some(i=>this.filterID(e,i))).map(t=>{const i=Di.GROUPS[t].filter(a=>this.filterID(e,a)).map(a=>this.createKeybindItem(a)),r=document.createElement("div");r.classList.add("pref-group"),r.dataset.id=t;const n=document.createElement("div");return n.classList.add("pref-group-label"),n.innerText=Gn[t]?.title??Ec(t),r.replaceChildren(n,...i),this.observer.observe(r),r})}static createGroups(){const e=Object.keys(wt),t={};return Object.keys(Gn).forEach(i=>{t[i]=this.expandMenubarOptions(Gn[i]).map(r=>{const n=e.indexOf(r);return n!=-1&&e.splice(n,1),r}).filter(r=>!zp.includes(r))}),Object.keys(Yp).forEach(i=>{t[i]===void 0&&(t[i]=[]),Yp[i].forEach(r=>{const n=r.after?t[i].findIndex(a=>r.after==a)+1:0;t[i].splice(n,0,...r.ids),r.ids.forEach(a=>{const o=e.indexOf(a);o!=-1&&e.splice(o,1)})})}),zp.forEach(i=>{const r=e.indexOf(i);r!=-1&&e.splice(r,1)}),e.length>0&&(console.warn("Missing keybinds not shown:"),console.warn(e)),t}filterID(e,t){if((this.searchDropdown?.value??"Name")=="Name")return(wt[t].bindLabel??wt[t].label).toLowerCase().includes(e.toLowerCase());{const i=Ie.getCombosForKeybind(t);if(i.some(n=>n.key.toLowerCase().includes(e.toLowerCase()))||i.some(n=>(Jg[n.key]??n.key).toLowerCase().includes(e.toLowerCase())))return!0;let r=e.split(" ").map(n=>n.toLowerCase());return i.some(n=>(r.includes("shift")||r.includes("⇧"))&&!n.mods.includes(Hn.SHIFT)||(r.includes("ctrl")||r.includes("control")||r.includes("⌃"))&&!n.mods.includes(Hn.CTRL)||(r.includes("meta")||r.includes("cmd")||r.includes("command")||r.includes("⌘"))&&!n.mods.includes(Hn.META)||(r.includes("alt")||r.includes("⌥"))&&!n.mods.includes(Hn.ALT)?!1:(r=r.filter(a=>!["shift","ctrl","control","meta","cmd","command","alt","⇧","⌃","⌘","⌥",""].includes(a)),r.length==0||r.length==1&&n.key.toLowerCase().includes(r[0])))}}static expandMenubarOptions(e){switch(e.type){case"menu":case"dropdown":return e.options.map(t=>this.expandMenubarOptions(t)).flat();case"selection":case"checkbox":return[e.id];case"separator":return[]}}createEmptySection(e,t){const i=document.createElement("div");return i.classList.add("pref-section"),i.dataset.id=t,i.innerText=e,i.onclick=()=>{i.parentElement.parentElement.querySelector(`.pref-group[data-id=${t}]`).scrollIntoView()},i}createKeybindItem(e){const t=document.createElement("div");t.classList.add("pref-keybind"),t.dataset.id=e,t.onclick=a=>{a.target.classList.contains("pref-keybind-combo")||a.target.tagName=="IMG"||this.app.windowManager.openWindow(new Vg(this.app,!0,o=>{Ie.setKeybind(e,o),this.conflictMap=this.calculateConflicts(),t.replaceWith(this.createKeybindItem(e))},o=>{const l=this.conflictMap.get(Ie.getComboString(o))?.map(c=>c[0]).map(c=>wt[c].bindLabel??wt[c].label)??[];return l.includes(e)?"self":l}))};const i=document.createElement("div");i.classList.add("pref-keybind-label"),i.innerText=wt[e].bindLabel??wt[e].label;const r=document.createElement("img");r.src=Ce.REVERT,r.style.width="12px",r.addEventListener("click",()=>{Ie.revertKeybind(e),this.conflictMap=this.calculateConflicts(),t.replaceWith(this.createKeybindItem(e))}),r.style.display=Ie.checkIsDefault(e)?"none":"block";const n=document.createElement("div");return n.classList.add("pref-keybind-combos"),n.replaceChildren(...Ie.getCombosForKeybind(e).map(a=>{const o=document.createElement("button");return o.classList.add("pref-keybind-combo"),o.innerText=Ie.getComboString(a),this.conflictMap.get(Ie.getComboString(a)).length>1&&o.classList.add("conflict"),o.onclick=()=>{Ie.removeKeybind(e,a),this.conflictMap=this.calculateConflicts(),t.replaceWith(this.createKeybindItem(e))},o})),t.replaceChildren(i,r,n),t}calculateConflicts(){const e=new Map;Object.keys(wt).forEach(t=>{Ie.getCombosForKeybind(t).forEach((i,r)=>{const n=Ie.getComboString(i);e.has(n)||e.set(n,[]),e.get(n).push([t,r])})}),[...this.viewElement.querySelectorAll(".pref-keybind-combo.conflict")].forEach(t=>t.classList.remove("conflict"));for(const t of e.values())t.length!=1&&t.forEach(i=>{const r=this.viewElement.querySelector(`.pref-keybind[data-id=${i[0]}] .pref-keybind-combos`);r?.children[i[1]]&&r.children[i[1]].classList.add("conflict")});return e}onClose(){this.observer?.disconnect()}}class st{static noteskins=new Map;static register(e){for(const t of new Set(e.gameTypes))st.noteskins.has(t)||st.noteskins.set(t,new Map),st.noteskins.get(t).set(e.id,e)}static async getNoteskin(e,t){const i=this.noteskins.get(e.id);if(!i||i.size==0)return;const r=i.get(t)??[...i.values()][0];return i.get(t)||_e.createFormatted(`Couldn't find the noteskin ${t}!`,"warn"),await r.load()}static getNoteskinData(e,t){const i=this.noteskins.get(e.id);return!i||i.size==0?void 0:i.get(t)??[...i.values()][0]}static getNoteskins(){return this.noteskins}static getPreviewUrl(e,t){return this.getNoteskinData(e,t).preview}}st.register({id:"default",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-14ac674c.js"),["Noteskin-14ac674c.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-17ffcc02.png",self.location).href,title:"Scalable",subtitle:"Pete-Lawrence"});st.register({id:"cf-chrome",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-1b5c3cb3.js"),["Noteskin-1b5c3cb3.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-40b76b28.png",self.location).href,title:"CF_CHROME",subtitle:"Pete-Lawrence"});st.register({id:"ddr-note",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-a642a2c7.js"),["Noteskin-a642a2c7.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-b8f75a15.png",self.location).href,title:"DDR-Note",subtitle:"Pete-Lawrence"});st.register({id:"ddr-note-itg",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-0af53390.js"),["Noteskin-0af53390.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-f113aacc.png",self.location).href,title:"DDR-Note (ITG quants)",subtitle:"Pete-Lawrence"});st.register({id:"ddr-rainbow",gameTypes:["dance-single","dance-double","dance-couple"],load:async()=>(await qe(()=>import("./Noteskin-3f24e7bf.js"),["Noteskin-3f24e7bf.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-0f9b00cd.png",self.location).href,title:"DDR-Rainbow",subtitle:"LemmaEOF"});st.register({id:"ddr-rainbow-itg",gameTypes:["dance-single","dance-double","dance-couple"],load:async()=>(await qe(()=>import("./Noteskin-3efa42bb.js"),["Noteskin-3efa42bb.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-2fd7d50c.png",self.location).href,title:"DDR-Rainbow (ITG quants)",subtitle:"LemmaEOF"});st.register({id:"metal",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-10f0d494.js"),["Noteskin-10f0d494.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-26b1bdce.png",self.location).href,title:"Metal",subtitle:"Pete-Lawrence"});st.register({id:"pastel",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-3e2399d2.js"),["Noteskin-3e2399d2.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-d67630f1.png",self.location).href,title:"Pastel",subtitle:"halcyoniix"});st.register({id:"dividebyzero",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-b3dbf45d.js"),["Noteskin-b3dbf45d.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-d763e667.png",self.location).href,title:"DivideByZero",subtitle:"MinaciousGrace"});st.register({id:"subtractbyzero",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-13265614.js"),["Noteskin-13265614.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-72ea0444.png",self.location).href,title:"SubtractByZero",subtitle:"qwertyzoro/Vague"});st.register({id:"sm4",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-cf0acfc0.js"),["Noteskin-cf0acfc0.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-3514cbb3.png",self.location).href,title:"SM4",subtitle:"from SM4"});st.register({id:"sm4-bold",gameTypes:["dance-single","dance-double","dance-couple","dance-solo","dance-solodouble","dance-threepanel","dance-threedouble"],load:async()=>(await qe(()=>import("./Noteskin-ff20a48e.js"),["Noteskin-ff20a48e.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-9fe2bd96.png",self.location).href,title:"SM4 Bold",subtitle:"from SM4"});st.register({id:"starlight-vivid",gameTypes:["dance-single","dance-double","dance-couple"],load:async()=>(await qe(()=>import("./Noteskin-bc6bd632.js"),["Noteskin-bc6bd632.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-5ecfc22a.png",self.location).href,title:"SLNEXXT-vivid",subtitle:"from STARLiGHT-NEXXT"});st.register({id:"default",gameTypes:["pump-single","pump-double","pump-couple","pump-versus","pump-halfdouble"],load:async()=>(await qe(()=>import("./Noteskin-b478a3ba.js"),["Noteskin-b478a3ba.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-d6d59d37.png",self.location).href,title:"Fiesta"});st.register({id:"fourv2",gameTypes:["pump-single","pump-double","pump-couple","pump-versus","pump-halfdouble"],load:async()=>(await qe(()=>import("./Noteskin-c88f6db0.js"),["Noteskin-c88f6db0.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-5d9781d2.png",self.location).href,title:"FourV2",subtitle:"Jousway"});st.register({id:"prime",gameTypes:["pump-single","pump-double","pump-couple","pump-versus","pump-halfdouble"],load:async()=>(await qe(()=>import("./Noteskin-9d8afc43.js"),["Noteskin-9d8afc43.js","AnimatedSprite-c4817119.js","HoldBody-3932542e.js"])).default,preview:new URL("/smeditor/assets/preview-4f79831b.png",self.location).href,title:"Prime"});const nS="/smeditor/assets/preview-747db171.png";class aS extends Pt{app;grid;lastGameType=null;constructor(e){super({title:"Noteskin Selection",width:600,height:400,disableClose:!1,win_id:"noteskin-selection",blocking:!1}),this.app=e,this.initView(),this.loadGrid(),q.on("chartLoaded",()=>{const t=e.chartManager.loadedChart.gameType.id;this.lastGameType!=t&&this.loadGrid()})}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("input");t.classList.add("pref-search-bar"),t.type="text",t.placeholder="Search for a noteskin...",t.oninput=()=>{this.filterGrid(t.value)};const i=document.createElement("div");i.classList.add("noteskin-grid"),this.grid=i,e.replaceChildren(t,i),this.viewElement.appendChild(e)}loadGrid(){if(this.grid.replaceChildren(),!this.app.chartManager.loadedChart)return;const e=this.app.chartManager.loadedChart.gameType;this.lastGameType=e.id;const t=st.getNoteskins().get(e.id);if(t)for(const[i,r]of t.entries()){const n=document.createElement("div"),a=document.createElement("img"),o=document.createElement("div"),l=document.createElement("div"),c=document.createElement("div");n.classList.add("noteskin-cell"),o.classList.add("noteskin-label"),l.classList.add("noteskin-title"),c.classList.add("noteskin-subtitle"),l.innerText=r.title??i,c.innerText=r.subtitle??"",a.src=st.getPreviewUrl(e,i),a.onerror=()=>{a.src=nS},n.replaceChildren(a,o),o.replaceChildren(l,c),this.grid.appendChild(n),i==w.chart.noteskin.name&&(n.classList.add("selected"),setTimeout(()=>{n.scrollIntoView({behavior:w.general.smoothAnimations?"smooth":"instant",block:"center"})})),n.dataset.id=i,n.dataset.title=r.title??"",n.dataset.subtitle=r.subtitle??"",n.onclick=()=>{w.chart.noteskin.name!=i&&(this.app.chartManager.chartView?.swapNoteskin(i),this.removeAllSelections(),n.classList.add("selected"))}}}removeAllSelections(){[...this.grid.querySelectorAll(".selected")].forEach(e=>e.classList.remove("selected"))}filterGrid(e){[...this.grid.children].forEach(t=>{if(!(t instanceof HTMLDivElement))return;const i=t,r=this.containsQuery(e,i.dataset.id)||this.containsQuery(e,i.dataset.title)||this.containsQuery(e,i.dataset.subtitle);i.style.display=r?"":"none"})}containsQuery(e,t){return t?t.toLowerCase().includes(e.trim().toLowerCase()):!1}}class oS extends Pt{app;metronomeInterval;startTime;me_high=new hr.Howl({src:Ag,volume:w.audio.soundEffectVolume});me_low=new hr.Howl({src:bg,volume:w.audio.soundEffectVolume});tickLines=[];resultLines=[];previousOffsets=[];keyHandler;constructor(e){super({title:"Offset Adjuster",width:300,height:200,win_id:"offset",blocking:!0}),this.app=e,this.initView(),this.startTime=performance.now();let t=this.startTime+500;this.tickLines.push({time:t+500,beat:0}),this.tickLines.push({time:t+500*2,beat:1}),this.tickLines.push({time:t+500*3,beat:2}),this.tickLines.push({time:t+500*4,beat:3});let i=0;this.metronomeInterval=setInterval(()=>{const r=performance.now();if(r-t>500){for(t=r,(i%4==0?this.me_high:this.me_low).play();this.tickLines[0]?.time+1e3r-n.startTime<8e3)},5),this.keyHandler=r=>{if(r.code.startsWith("Digit")||r.code.startsWith("Key")||r.code=="Space"){let n=this.tickLines[0];const a=performance.now();for(const l of this.tickLines)if(a-l.time+w.play.offset*1e3<300){n=l;break}r.preventDefault();const o=a-n.time+w.play.offset*1e3;o>-300&&(this.tickLines.splice(this.tickLines.indexOf(n),1),this.resultLines.push({startTime:performance.now(),offset:o}),this.previousOffsets.push(o),this.previousOffsets.length==16&&(kg(this.previousOffsets)<70&&(w.play.offset-=ul(this.previousOffsets)/1e3),this.previousOffsets=[]))}},window.addEventListener("keydown",this.keyHandler)}initView(){this.viewElement.replaceChildren();const e=document.createElement("canvas");this.viewElement.appendChild(e);const t=this.drawEQ(e);requestAnimationFrame(t)}drawEQ(e){const t=e.getContext("2d");t.canvas.width=250,t.canvas.height=100;const i=()=>{t.fillStyle="rgba(0, 0, 0, 1)",t.fillRect(0,0,e.width,e.height),t.fillStyle="rgb(255, 255, 255)",t.fillRect(e.width/2-1,8,2,e.height-16);const r=performance.now();for(const n of this.resultLines){t.fillStyle="rgba(255, 255, 255, 1)";const a=Math.min(1,4-(r-n.startTime)/2e3);if(n.offset<0&&(t.fillStyle=`rgba(160, ${wi(160,0,-n.offset/250)}, ${wi(160,0,-n.offset/250)}, ${a})`),n.offset>0&&(t.fillStyle=`rgba(${wi(160,0,n.offset/250)}, ${wi(160,0,n.offset/250)}, 160, ${a})`),t.fillRect(e.width/2-.5+n.offset/4,12,1,e.height-24),r-n.startTime<250){const o=(r-n.startTime)/250;t.globalAlpha=1-o,t.fillRect(e.width/2-.5-o*3+n.offset/4,12-o*10,1+o*6,e.height-24+o*20)}t.globalAlpha=1}for(const n of this.tickLines){const a=n.time-r-w.play.offset*1e3;t.fillStyle="rgba(255, 255, 255, 0.8)",n.beat%4!=0?t.fillRect(e.width/2-1-a/4,12,2,e.height-24):t.fillRect(e.width/2-2-a/4,12,4,e.height-24)}e.closest("#windows")&&requestAnimationFrame(i)};return i}onClose(){clearInterval(this.metronomeInterval),window.removeEventListener("keydown",this.keyHandler)}}class lS extends Pt{app;changeHandler=()=>this.initView();constructor(e){super({title:"Song Properties",width:450,height:486,disableClose:!1,win_id:"sm_properties",blocking:!1}),this.app=e,this.initView(),q.on("smLoaded",this.changeHandler),q.on("undo",this.changeHandler),q.on("redo",this.changeHandler)}onClose(){q.off("smLoaded",this.changeHandler),q.off("undo",this.changeHandler),q.off("redo",this.changeHandler)}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("sm-properties");const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("label"),t.innerText="Apply to",jg.forEach(i=>{const r=document.createElement("div");r.classList.add("sm-container");const n=document.createElement("div");n.classList.add("sm-title"),n.innerText=i.title;const a=document.createElement("div");a.classList.add("property-grid"),i.items.forEach(o=>{const l=document.createElement("div");l.classList.add("label"),l.innerText=o.title,a.appendChild(l),a.appendChild(Xg(this.app,o))}),r.appendChild(n),r.appendChild(a),e.appendChild(r)}),this.viewElement.appendChild(e)}}var hS=pS,zo=8192,gd=65536,yd=new ArrayBuffer(gd*4),cS=new Float64Array(yd,gd,zo),dS=new Float64Array(yd,gd*2,zo/2),uS=fS({Math,Float64Array},null,yd);function pS(s){if(!s)throw Error("Input data is not provided, pass an array.");var e=s.length;if(e>zo)throw Error("Input length is too big, must be under "+zo);var t=Math.floor(Math.log(e)/Math.LN2);if(Math.pow(2,t)!==e)throw Error("Invalid array size, must be a power of 2.");return cS.set(s),uS(e,t),dS.subarray(0,e/2)}function fS(s,e,t){var i=6.283185307179586,r=s.Math.sqrt,n=s.Math.sin,a=s.Math.cos,o=s.Math.abs,l=s.Math.SQRT1_2,c=s.Math.imul,u=new s.Float64Array(t),h=new s.Float64Array(t),d=8192,p=16384;function m(g,y){g=g|0,y=y|0;var b=0,A=0,v=0,_=0,C=0,B=0,P=0,M=0,U=0,F=0,T=0,S=0,x=0,L=0,Y=0,R=0,D=0,W=0,H=0,O=0,N=0,ee=0,Z=0,Q=0,ge=0,Te=0,he=0,pe=0,Ae=0,oe=0,ue=0,ve=0;for(b=g>>>1,v=2/+(g|0),f(g),oe=0,ve=4;(oe|0)<(g|0);ve=c(ve,4)){for(ue=oe;(ue|0)<(g|0);ue=ue+ve|0)O=h[ue<<3>>3]-h[ue+1<<3>>3],h[ue<<3>>3]=h[ue<<3>>3]+h[ue+1<<3>>3],h[ue+1<<3>>3]=O;oe=c(2,ve-1)}for(_=2,P=g>>>1;P=P>>>1;){oe=0,_=_<<1,ve=_<<1,C=_>>>2,B=_>>>3;do{if((C|0)!=1)for(ue=oe;(ue|0)<(g|0);ue=ue+ve|0)S=ue,x=S+C|0,L=x+C|0,Y=L+C|0,M=h[L<<3>>3]+h[Y<<3>>3],h[Y<<3>>3]=h[Y<<3>>3]-h[L<<3>>3],h[L<<3>>3]=h[S<<3>>3]-M,h[S<<3>>3]=h[S<<3>>3]+M,S=S+B|0,x=x+B|0,L=L+B|0,Y=Y+B|0,M=h[L<<3>>3]+h[Y<<3>>3],U=h[L<<3>>3]-h[Y<<3>>3],M=-M*l,U=U*l,O=+h[x<<3>>3],h[Y<<3>>3]=M+O,h[L<<3>>3]=M-O,h[x<<3>>3]=h[S<<3>>3]-U,h[S<<3>>3]=h[S<<3>>3]+U;else for(ue=oe;(ue|0)<(g|0);ue=ue+ve|0)S=ue,x=S+C|0,L=x+C|0,Y=L+C|0,M=h[L<<3>>3]+h[Y<<3>>3],h[Y<<3>>3]=h[Y<<3>>3]-h[L<<3>>3],h[L<<3>>3]=h[S<<3>>3]-M,h[S<<3>>3]=h[S<<3>>3]+M;oe=(ve<<1)-_|0,ve=ve<<2}while((oe|0)<(g|0));for(ge=i/+(_|0),A=1;(A|0)<(B|0);A=A+1|0){Te=+(A|0)*ge,ee=n(Te),N=a(Te),Z=4*N*(N*N-.75),Q=4*ee*(.75-ee*ee),oe=0,ve=_<<1;do{for(ue=oe;(ue|0)<(g|0);ue=ue+ve|0)S=ue+A|0,x=S+C|0,L=x+C|0,Y=L+C|0,R=ue+C-A|0,D=R+C|0,W=D+C|0,H=W+C|0,U=h[W<<3>>3]*N-h[L<<3>>3]*ee,M=h[W<<3>>3]*ee+h[L<<3>>3]*N,T=h[H<<3>>3]*Z-h[Y<<3>>3]*Q,F=h[H<<3>>3]*Q+h[Y<<3>>3]*Z,O=U-T,U=U+T,T=O,h[H<<3>>3]=U+h[D<<3>>3],h[L<<3>>3]=U-h[D<<3>>3],O=F-M,M=M+F,F=O,h[Y<<3>>3]=F+h[x<<3>>3],h[W<<3>>3]=F-h[x<<3>>3],h[D<<3>>3]=h[S<<3>>3]-M,h[S<<3>>3]=h[S<<3>>3]+M,h[x<<3>>3]=T+h[R<<3>>3],h[R<<3>>3]=h[R<<3>>3]-T;oe=(ve<<1)-_|0,ve=ve<<2}while((oe|0)<(g|0))}}for(;b=b-1|0;)he=+h[b<<3>>3],pe=+h[g-b-1<<3>>3],Ae=v*r(he*he+pe*pe),u[p+b<<3>>3]=Ae;u[p+0<<3>>3]=o(v*h[0])}function f(g){g=g|0;var y=0,b=0,A=1,v=0,_=0;y=g>>>1,b=g-1|0,h[0]=u[d+0<<3>>3];do{for(v=v+y|0,h[A<<3>>3]=u[d+v<<3>>3],h[v<<3>>3]=u[d+A<<3>>3],A=A+1|0,_=y<<1;_=_>>1,((v=v^_)&_)==0;);(v|0)>=(A|0)&&(h[A<<3>>3]=u[d+v<<3>>3],h[v<<3>>3]=u[d+A<<3>>3],h[b-A<<3>>3]=u[d+b-v<<3>>3],h[b-v<<3>>3]=u[d+b-A<<3>>3]),A=A+1|0}while((A|0)<(y|0));h[b<<3>>3]=u[d+b<<3>>3]}return m}const jp=la(hS);class or{view;slider;text;options;constructor(e,t){this.view=e,this.options=t,this.view.classList.add("slider");const i=document.createElement("input");i.classList.add("slider-input"),i.type="range",i.min=t.min.toString(),i.max=t.max.toString(),i.step=t.step.toString(),i.value=(t.value??(t.min+t.max)/2).toString(),i.oninput=()=>{r.innerText=this.formatValue(parseFloat(i.value))+"",this.options.onChange?.(parseFloat(i.value))},t.width!==void 0&&(i.style.width=t.width+"px"),this.slider=i,e.appendChild(i);const r=document.createElement("div");r.innerText=this.formatValue(parseFloat(i.value))+"",r.style.width="30px",this.text=r,e.appendChild(r)}get value(){return parseFloat(this.slider.value)}setValue(e){this.slider.value=e+"",this.text.innerText=this.formatValue(parseFloat(this.slider.value))+""}static create(e){return new or(document.createElement("div"),e)}formatValue(e){return this.options.transformer?this.options.transformer(e):this.options.precision===void 0?ne(e,3).toString():ne(e,this.options.precision).toFixed(this.options.precision)}}const $t=800,Ke=200,ph=3,kn=125,Bn=250,io=3,mS=.02,Pr=6,fh=800,Xp=15,jt=32768,mh=[{frequency:20,weight:.4006009013520281},{frequency:25,weight:.4258037044922291},{frequency:31.5,weight:.4536690484291709},{frequency:40,weight:.4840856831659204},{frequency:50,weight:.5142710208279764},{frequency:63,weight:.5473453749315819},{frequency:80,weight:.5841121495327103},{frequency:100,weight:.6214074879602299},{frequency:125,weight:.6601749463607856},{frequency:160,weight:.7054673721340388},{frequency:200,weight:.7489234225800412},{frequency:250,weight:.7936507936507937},{frequency:315,weight:.8406893652795292},{frequency:400,weight:.889284126278346},{frequency:500,weight:.9291521486643438},{frequency:630,weight:.9675858732462506},{frequency:800,weight:.9985022466300548},{frequency:1e3,weight:.9997500624843789},{frequency:1250,weight:.9564801530368244},{frequency:1600,weight:.9409550693954364},{frequency:2e3,weight:1.0196278358399185},{frequency:2500,weight:1.0955902492467817},{frequency:3150,weight:1.1232799775344005},{frequency:4e3,weight:1.0914051841746248},{frequency:5e3,weight:.9997500624843789},{frequency:6300,weight:.8727907484180668},{frequency:8e3,weight:.7722007722007722},{frequency:1e4,weight:.7369196757553427},{frequency:12500,weight:.7768498737618955},{frequency:16e3,weight:.7698229407236336},{frequency:2e4,weight:.4311738708634257},{frequency:22550,weight:.2},{frequency:25e3,weight:0}];class Qg extends Pt{app;onAudioLoad=this.reset.bind(this);windowStep=512;fftSize=1024;tempoFftSize=4096;tempoStep=2;monoAudioData;audioLength=0;sampleRate=44100;tempogram=[];tempogramGroups=[];spectrogram=[];spectrogramDifference=[];noveltyCurve=[];noveltyCurveIsolated=[];spectrogramCanvases=[];lowestFinishedBlock=0;numRenderedBlocks=0;peaks=[];_threshold=.3;spectroHeights=[];spectroWeights=[];placeNotesSelectionButton;toggleButton;resetButton;onsetResults;offsetTableLabel;offsetRows=[];bpmRows=[];covers=[];doAnalysis=!1;lastSecond=0;constructor(e){super({title:"Detect Audio Sync",width:400,height:450,win_id:"detect-sync"}),this.app=e,this.initView(),this.reset(),q.on("audioLoaded",this.onAudioLoad)}onClose(){q.off("audioLoaded",this.onAudioLoad),this.app.chartManager.chartAudio.offLoad(this.onAudioLoad)}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("sync-container"),e.style.display="flex",e.style.flexDirection="column",e.style.alignItems="center";const t=document.createElement("canvas");t.style.width=`${$t/2}px`,t.style.height=`${Ke}px`;const i=document.createElement("div");i.classList.add("sync-tab-container");const r=document.createElement("div");r.classList.add("sync-tab-option","active"),r.innerText="Analysis Options";const n=document.createElement("div");n.classList.add("sync-tab-option"),n.innerText="Tempo Results";const a=document.createElement("div");a.classList.add("sync-tab-option"),a.innerText="Onset Results",i.replaceChildren(r,n,a),[...i.children].forEach((f,g)=>{f.onclick=()=>{l.scrollLeft=370*g,i.querySelectorAll(".active").forEach(y=>y.classList.remove("active")),f.classList.add("active")}});const o=document.createElement("div");o.classList.add("sync-tab-view");const l=document.createElement("div");l.classList.add("sync-tab-scroller");const c=this.createOptionsView(),u=this.createTempoView(),h=this.createOnsetsView(),d=(f,g)=>{const y=document.createElement("div");return y.classList.add("sync-cover"),y.innerText=f,y.style.left=`${g*370}px`,y};this.covers=[d("Clear analysis results to edit",0),d("Start analysis to view",1),d("Start analysis to view",2)],o.appendChild(l),l.replaceChildren(c,this.covers[0],u,this.covers[1],h,this.covers[2]);const p=document.createElement("div");p.classList.add("sync-bottom-container"),this.resetButton=document.createElement("button"),this.resetButton.classList.add("delete"),this.resetButton.innerText="Clear results",this.resetButton.style.width="120px",this.resetButton.disabled=!0,this.resetButton.onclick=()=>{this.resetButton.disabled=!0,r.click(),this.reset()},this.toggleButton=document.createElement("button"),this.toggleButton.innerText="Start analyzing",this.toggleButton.style.width="200px",this.toggleButton.onclick=()=>{this.doAnalysis||n.click(),this.doAnalysis=!this.doAnalysis,this.toggleButton.innerText=this.doAnalysis?"Stop analyzing":this.hasData()?"Resume analyzing":"Start analyzing",this.resetButton.disabled=this.doAnalysis},p.replaceChildren(this.toggleButton,this.resetButton),e.replaceChildren(t,i,o,p),this.viewElement.appendChild(e);const m=this.windowLoop(t);requestAnimationFrame(m)}createOptionsView(){const e=document.createElement("div");e.style.display="flex",e.style.position="relative",e.style.flexDirection="column",e.style.gap="3px",e.style.height="100%";const t=(c,u,h)=>{const d=document.createElement("div");d.style.display="flex",d.style.flexDirection="row",d.style.justifyContent="space-between",d.style.alignItems="center";const p=document.createElement("div");return p.innerText=c,d.replaceChildren(p,u),zt(d,{content:h}),d},i=document.createElement("div");i.innerText="Onsets",i.style.fontWeight="600";const r=or.create({min:Math.log2(128),max:Math.log2(8192),step:1,value:Math.log2(this.fftSize),transformer:c=>2**c,onChange:c=>{this.fftSize=2**c,this.windowStep>this.fftSize&&(this.windowStep=this.fftSize,n.setValue(c)),this.reset()}}),n=or.create({min:Math.log2(128),max:Math.log2(8192),step:1,value:Math.log2(this.windowStep),transformer:c=>2**c,onChange:c=>{this.windowStep=2**c,this.windowStep>this.fftSize&&(this.windowStep=this.fftSize,n.setValue(Math.log2(this.fftSize))),this.reset()}}),a=document.createElement("div");a.innerText="Tempo",a.style.fontWeight="600",a.style.marginTop="15px";const o=or.create({min:Math.log2(128),max:Math.log2(8192),step:1,value:Math.log2(this.tempoFftSize),transformer:c=>2**c,onChange:c=>{this.tempoStep=2**c,this.tempoStep>this.tempoFftSize&&(this.tempoStep=this.tempoFftSize,l.setValue(c)),this.reset()}}),l=or.create({min:Math.log2(1),max:Math.log2(1024),step:1,value:Math.log2(this.tempoStep),transformer:c=>2**c,onChange:c=>{this.tempoStep=2**c,this.tempoStep>this.tempoFftSize&&(this.tempoStep=this.tempoFftSize,l.setValue(Math.log2(this.tempoFftSize))),this.reset()}});return e.replaceChildren(i,t("FFT Size",r.view,"Determines the amount of audio to analyze at every block. Higher values result in more accurate frequencies, while lower values result in more accurate timings. Defaults to 1024."),t("Window Step",n.view,"Determines the number of blocks per second. Lower values result in more time-accurate spectrograms, but may take more time and mess up tempo analysis. Defaults to 512 and must be lower than FFT Size."),a,t("FFT Size",o.view,"Determines the amount of the onset graph to analyze at every block. Higher values result in more accurate tempos, while lower values result in more accurate timings. Defaults to 4096."),t("Window Step",l.view,"Determines the number of blocks per second. Lower values result in more time-accurate tempograms, but may take more time. Defaults to 2 and must be lower than FFT Size.")),e}createTempoView(){const e=document.createElement("div");e.style.display="flex",e.style.position="relative",e.style.gap="10px";const t=document.createElement("div");t.style.flex="1";const i=document.createElement("div");i.classList.add("sync-table-label"),i.innerText="Offsets",this.offsetTableLabel=i;const r=document.createElement("table");r.classList.add("sync-table");const n=document.createElement("tr"),a=document.createElement("th");a.innerText="Offset";const o=document.createElement("th");o.innerText="Confidence",n.replaceChildren(a,o),r.appendChild(n),t.replaceChildren(i,r);const l=document.createElement("div");l.style.flex="1";const c=document.createElement("div");c.classList.add("sync-table-label"),c.innerText="Current Tempos";const u=document.createElement("table");u.classList.add("sync-table");const h=document.createElement("tr"),d=document.createElement("th");d.innerText="BPM";const p=document.createElement("th");p.innerText="Confidence",h.replaceChildren(d,p),u.appendChild(h);for(let m=0;m<5;m++){const f=document.createElement("tr"),g=document.createElement("td");g.innerText="-";const y=document.createElement("td");y.innerText="-",f.replaceChildren(g,y),r.appendChild(f),this.offsetRows.push(f);const b=f.cloneNode(!0);u.appendChild(b),this.bpmRows.push(b)}return l.replaceChildren(c,u),e.replaceChildren(t,l),e}createOnsetsView(){const e=document.createElement("div");e.style.display="flex",e.style.flexDirection="column",e.style.gap="10px",e.style.justifyContent="center",e.style.alignItems="center",e.style.position="relative";const t=document.createElement("div");t.style.display="flex",t.style.justifyContent="space-between",t.style.alignItems="center",t.style.width="100%",zt(t,{content:"Adjust the threshold for a block to be considered an onset (red line)."});const i=document.createElement("div");i.innerText="Onset Threshold";const r=or.create({min:0,max:1,step:.01,value:.3,onChange:c=>{this.threshold=c}}),n=document.createElement("div");n.style.color="#888888",n.style.fontStyle="italic",n.style.fontSize="11px",n.style.marginBottom="15px",n.style.marginTop="-6px",n.innerText="Found 0 onsets",this.onsetResults=n,t.replaceChildren(i,r.view);const a=document.createElement("div");a.style.display="flex",a.style.justifyContent="space-between",a.style.alignItems="center",a.style.width="100%";const o=document.createElement("button");o.innerText="Place onsets as notes",o.onclick=()=>this.placeOnsets();const l=document.createElement("button");return l.innerText="Place onsets as notes in selection",l.disabled=!0,l.onclick=()=>this.placeOnsets(!0),this.placeNotesSelectionButton=l,a.replaceChildren(o,l),e.replaceChildren(t,n,a),e}async reset(){this._threshold=.3,this.doAnalysis=!1,this.toggleButton.disabled=!1,this.toggleButton.style.background="",this.toggleButton.innerText="Start analyzing",this.app.chartManager.chartAudio.onLoad(this.onAudioLoad),await this.getMonoAudioData(),this.sampleRate=this.app.chartManager.chartAudio.getSampleRate(),this.spectroHeights=new Array(this.fftSize).fill(0).map((t,i)=>{const r=i/(this.fftSize/2)*this.sampleRate/2,n=(i+1)/(this.fftSize/2)*this.sampleRate/2,a=Ke-Ve(Math.log(r/20)/Math.log(this.sampleRate/40)*Ke,0,Ke),o=Ke-Ve(Math.log(n/20)/Math.log(this.sampleRate/40)*Ke,0,Ke);return{y:o,height:a-o}}),this.spectroWeights=new Array(this.fftSize).fill(0).map((t,i)=>{const r=i/(this.fftSize/2)*this.sampleRate/2,n=mh.findIndex(l=>l.frequency>r);if(n<1)return 0;const a=mh[n-1],o=mh[n];return wi(a.weight,o.weight,Dt(Math.log(1+a.frequency),Math.log(1+o.frequency),Math.log(1+r)))});const e=Math.max(1,Math.ceil(this.audioLength/this.windowStep));this.spectrogramCanvases=[];for(let t=0;t{t.firstChild.innerText="-",t.lastChild.innerText="-"}),this.bpmRows.forEach(t=>{t.firstChild.innerText="-",t.lastChild.innerText="-"})}hasData(){return this.numRenderedBlocks>0}windowLoop(e){const t=e.getContext("2d");t.canvas.width=$t,t.canvas.height=Ke*2,t.imageSmoothingEnabled=!1;const i=()=>{if(this.placeNotesSelectionButton.disabled=this.app.chartManager.startRegion===void 0||this.app.chartManager.endRegion===void 0||this.app.chartManager.startRegion==this.app.chartManager.endRegion,this.covers[0].classList.toggle("active",this.hasData()),this.covers[1].classList.toggle("active",!this.hasData()),this.covers[2].classList.toggle("active",!this.hasData()),!this.app.chartManager.chartAudio)return;const r=Math.ceil(this.audioLength/this.windowStep);if(this.monoAudioData!==void 0&&this.doAnalysis){const h=performance.now();for(;performance.now()-h=r){this.tempogram.length==0&&(this.toggleButton.disabled=!0,this.calcTempogram());break}this.spectrogram[this.lowestFinishedBlock]===void 0&&(this.renderBlock(this.lowestFinishedBlock),this.calcDifference(this.lowestFinishedBlock),this.calcIsolatedNovelty(this.lowestFinishedBlock),this.numRenderedBlocks++),this.lowestFinishedBlock++}this.lowestFinishedBlockb.centerd.center-Pr);y!==void 0&&(p+=y.groups[0].value,m+=y.avg,f++)}p/=f,m/=f,h.push({bpm:m,weight:d.groups[0].value,smoothedWeight:p})}h.sort((d,p)=>p.smoothedWeight-d.smoothedWeight);for(const d of h)d.weight<.01||(t.font=`${18+d.weight*300}px Assistant`,t.globalAlpha=Math.min(1,d.weight*100),t.fillText(ne(d.bpm,0)+"",200,wi(Ke*2,Ke*1.5,Dt(kn,Bn,d.bpm))));if(this.lastSecond!=this.app.chartManager.getTime()){this.lastSecond=this.app.chartManager.getTime();const d=h.slice(0,5).reduce((p,m)=>p+m.smoothedWeight,0);for(let p=0;p<5;p++){const m=this.bpmRows[p],f=h[p]?.bpm,g=h[p]?.weight;m.firstChild.innerText=f===void 0?"-":Math.round(f).toString(),m.lastChild.innerText=g===void 0?"-":Math.round(g/d*100)+"%"}}}t.globalAlpha=1,t.font="22px Assistant",t.textAlign="left",t.textBaseline="top",t.fillText("Spectrogram",10,10),t.fillText("Onsets",10,Ke+10),t.fillText("Tempogram",10,Ke*1.5+10),e.closest("#windows")&&requestAnimationFrame(i)};return i}renderBlock(e){if(!this.monoAudioData)return;const t=new Float32Array(this.fftSize);t.set(this.monoAudioData.subarray(Math.max(0,e*this.windowStep-this.fftSize/2),e*this.windowStep+this.fftSize/2),-Math.min(0,e*this.windowStep-this.fftSize/2));for(let r=0;r{const a=this.spectroHeights[n],o=Ve(r*2e3,0,255);i.globalAlpha=o/255,i.fillRect(e%jt,a.y,1,a.height)}),i.globalAlpha=1}storeDifferenceResponse(e,t){this.spectrogramDifference[e]=t;const i=t.reduce((r,n)=>r+n,0);this.noveltyCurve[e]=i}calcIsolatedNovelty(e){for(let t=e-ph;t<=e;t++){if(t<0)continue;let i=0,r=0;for(let n=t-ph;n<=t+ph;n++)this.noveltyCurve[n]!==void 0&&(i+=this.noveltyCurve[n],r++);i/=r,this.storeIsolatedNovelty(t,Math.max(0,this.noveltyCurve[t]-i))}}storeIsolatedNovelty(e,t){this.noveltyCurveIsolated[e]=Math.log(1+t),Math.log(1+t)>this._threshold&&Math.log(1+t)>(this.noveltyCurveIsolated[e-1]??0)?(this.peaks[e-1]&&(this.peaks[e-1]=!1),this.peaks[e]=!0,this.onsetResults.innerText=`Found ${this.peaks.filter(n=>n).length} onsets`):this.peaks[e]=!1;const i=this.spectrogramCanvases[Math.floor(e/jt)].getContext("2d"),r=Math.min(1,Math.log(1+t))*Ke*.5;i.fillStyle="rgb(11, 14, 26)",i.fillRect(e%jt,Ke,1,Ke*.5),i.fillStyle="rgba(0, 100, 150, 0.5)",i.fillRect(e%jt,Ke*1.5-r,1,r)}async getMonoAudioData(){const e=this.app.chartManager.chartAudio;if(!e)return;const t=e.getBuffer(),i=new OfflineAudioContext(t.numberOfChannels,t.length,t.sampleRate),r=i.createBufferSource();r.buffer=t;const n=i.createChannelMerger(t.numberOfChannels);r.connect(n),n.connect(i.destination),r.start(),await i.startRendering().then(a=>{this.monoAudioData=a.getChannelData(0),this.audioLength=this.monoAudioData.length}).catch(()=>{_e.createFormatted("Failed to load audio: audio rendering failed","error")})}get threshold(){return this._threshold}set threshold(e){this._threshold=e,this.peaks=this.noveltyCurveIsolated.map((t,i)=>t>this._threshold&&(this.noveltyCurveIsolated[i-1]??0)t).length} onsets`}calculateOffset(){const e=new Map;let t=0,i=0,r=0;for(let c=0;cd.groups[0].value>=mS);if(h.length!=0&&(i=c,h.forEach(d=>{let p=0,m=0;for(let g=c-io;g<=c+io;g++){if(this.tempogramGroups[g]===void 0)continue;const y=this.tempogramGroups[g].find(b=>b.centerd.center-Pr);y!==void 0&&(m+=y.avg,p++)}const f=Math.round(m/p);e.has(f)||e.set(f,0),e.set(f,e.get(f)+1),e.get(f)>t&&(t=e.get(f),r=f)}),t>50))break}if(r==0)return;const n=60/r*(this.sampleRate/this.windowStep),a=new Array(fh).fill(0).map((c,u)=>{const h=u%n/n;let d=0,p=0;for(let m=1;m<=4;m++)p+=Math.max(1-Math.abs(Math.round(h*m)/m-h)*12,0)*1/m,d+=1/m;return p/d}),o=[];for(let c=i;ca[d]*h).reduce((h,d)=>h+d,0);o.push({block:c,offset:-(c*this.windowStep/this.sampleRate)%(60/r),response:u,curve:this.noveltyCurveIsolated.slice(c,c+fh).map((h,d)=>a[d]*h)})}o.sort((c,u)=>u.response-c.response);const l=o.slice(0,5).reduce((c,u)=>c+u.response,0);this.offsetTableLabel.innerText=`Offsets (first BPM: ${r})`;for(let c=0;c{if(!i)return null;let n=this.app.chartManager.loadedChart.getBeatFromSeconds(r*this.windowStep/this.sampleRate);return n=Math.round(n*48)/48,n<0?null:{type:"Tap",beat:n,col:0}}).filter(i=>i!==null).filter(i=>e?i.beat>this.app.chartManager.startRegion&&i.beatd.beat==n.beat):-1,o=i.getDivisionLength(e);const l=i.getDivisionOfMeasure(e)%1*o;let c=Math.max(0,e-l);c=r[a+1]?.beat&&(a++,n=r[a],c=n.beat,o=i.getDivisionLength(c),u=0,h=n.upper)}calcTempogram(){let e=0;for(let a=0;ae&&(e=this.noveltyCurveIsolated[a]);const t=new Float32Array(this.noveltyCurveIsolated.length);for(let a=0;a{const o=new Float32Array(this.tempoFftSize);o.set(t.subarray(Math.max(0,a*this.tempoStep-this.tempoFftSize/2),a*this.tempoStep+this.tempoFftSize/2),-Math.min(0,a*this.tempoStep-this.tempoFftSize/2));for(let c=0;cn(++a),1)):(this.calculateOffset(),this.spectrogram=[],this.noveltyCurve=[],this.tempogram=[],this.monoAudioData=void 0,this.toggleButton.innerText="Finished analyzing",this.resetButton.disabled=!1,this.doAnalysis=!1,this.toggleButton.style.background="#265296")};n(0)}storeTempogram(e,t){const i=new Map,r=[];t.forEach((a,o)=>{let l=this.sampleRate*60/(this.windowStep*this.tempoFftSize)*o;if(!(l>Bn*4||lBn&&l!=1/0;)l/=2;for(;l({bpm:a,value:o})).sort((a,o)=>o.value-a.value).filter(a=>a.value!=0);for(let a=0;ac.centero.bpm-Pr);if(l===void 0){r.push({center:o.bpm,groups:[o]});continue}l.groups.push(o)}this.tempogramGroups[e]=r.map(a=>({...a,avg:a.groups.reduce((o,l)=>o+l.bpm*l.value,0)/a.groups.reduce((o,l)=>o+l.value,0)}));const n=this.spectrogramCanvases[Math.floor(e*this.tempoStep/jt)].getContext("2d");n.fillStyle="rgba(0, 166, 255, 1)",this.tempogram[e].forEach(a=>{const o=Ve(a.value*8e3,0,255);n.globalAlpha=o/255,n.fillRect(e*this.tempoStep%jt,wi(Ke*2,Ke*1.5,Dt(kn,Bn,a.bpm)),1*this.tempoStep,Ke*.5/(Bn-kn))})}}const ei=s=>s,Kp={offset:{title:"Offset",element:ei({create:(s,e)=>{const t=nt.create(0,w.general.spinnerStep/100,3);return t.onChange=i=>{i!=null&&(e().setOffset(i),s.chartManager.setBeat(s.chartManager.getBeat()))},t.view},update:(s,e)=>{const t=s.querySelector(".spinner-input");if(document.activeElement==t)return;const i=e.getOffset();t.value!=ne(i,3).toFixed(3)&&(t.value=ne(i,3).toFixed(3))}})},bpm:{title:"BPM",element:ei({create:(s,e)=>{const t=nt.create(120,void 0,3);return t.onChange=i=>{if(i==null){const r=s.chartManager.getBeat();e().delete([{type:"BPMS",beat:r}]);return}e().insert([{type:"BPMS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("BPMS",t)?.value??120;i.value!=ne(r,3).toFixed(3)&&(i.value=ne(r,3).toFixed(3))}})},stop:{title:"Stop",element:ei({create:(s,e)=>{const t=nt.create(0,void 0,3);return t.onChange=i=>{if(i==null||i==0){const r=s.chartManager.getBeat();e().delete([{type:"STOPS",beat:r}]);return}e().insert([{type:"STOPS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("STOPS",t);let n=r?.value??0;t!=r?.beat&&(n=0),i.value!=ne(n,3).toFixed(3)&&(i.value=ne(n,3).toFixed(3))}})},delay:{title:"Delay",element:ei({create:(s,e)=>{const t=nt.create(0,void 0,3);return t.onChange=i=>{if(i==null||i==0){const r=s.chartManager.getBeat();e().delete([{type:"DELAYS",beat:r}]);return}e().insert([{type:"DELAYS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("DELAYS",t);let n=r?.value??0;t!=r?.beat&&(n=0),i.value!=ne(n,3).toFixed(3)&&(i.value=ne(n,3).toFixed(3))}})},warp:{title:"Warp",element:ei({create:(s,e)=>{const t=nt.create(0,void 0,3,0);return t.onChange=i=>{if(i==null||i==0){const r=s.chartManager.getBeat();e().delete([{type:"WARPS",beat:r}]);return}i<0||e().insert([{type:"WARPS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("WARPS",t);let n=r?.value??0;t!=r?.beat&&(n=0),i.value!=ne(n,3).toFixed(3)&&(i.value=ne(n,3).toFixed(3))}})},timeSig:{title:"Time Sig.",element:ei({create:(s,e)=>{const t=document.createElement("div");t.classList.add("flex-column-gap");const i=nt.create(4,1,0,1);i.onChange=n=>{if(n==null){const a=s.chartManager.getBeat();e().delete([{type:"TIMESIGNATURES",beat:a}]);return}n<1||e().insert([{type:"TIMESIGNATURES",beat:s.chartManager.getBeat(),upper:n,lower:r.value}])};const r=nt.create(4,1,0,1);return r.onChange=n=>{if(n==null){const a=s.chartManager.getBeat();e().delete([{type:"TIMESIGNATURES",beat:a}]);return}n<1||e().insert([{type:"TIMESIGNATURES",beat:s.chartManager.getBeat(),upper:i.value,lower:n}])},t.appendChild(i.view),t.appendChild(r.view),t},update:(s,e,t)=>{const i=s.firstElementChild.querySelector(".spinner-input"),r=s.lastElementChild.querySelector(".spinner-input"),n=e.getEventAtBeat("TIMESIGNATURES",t),a=n?.upper??4,o=n?.lower??4;document.activeElement!=i&&i.value!=Math.round(a).toString()&&(i.value=Math.round(a).toString()),document.activeElement!=r&&r.value!=Math.round(o).toString()&&(r.value=Math.round(o).toString())}})},tick:{title:"Tickcount",element:ei({create:(s,e)=>{const t=nt.create(4,1,0,0);return t.onChange=i=>{if(i==null){const r=s.chartManager.getBeat();e().delete([{type:"TICKCOUNTS",beat:r}]);return}i<0||e().insert([{type:"TICKCOUNTS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("TICKCOUNTS",t)?.value??4;i.value!=Math.round(r).toString()&&(i.value=Math.round(r).toString())}})},combo:{title:"Combo",element:ei({create:(s,e)=>{const t=document.createElement("div");t.classList.add("flex-column-gap");const i=nt.create(1,1,0,0);i.onChange=n=>{if(n==null){const a=s.chartManager.getBeat();e().delete([{type:"COMBOS",beat:a}]);return}n<0||e().insert([{type:"COMBOS",beat:s.chartManager.getBeat(),hitMult:n,missMult:r.value}])};const r=nt.create(1,1,0,0);return r.onChange=n=>{if(n==null){const a=s.chartManager.getBeat();r.setValue(s.chartManager.loadedChart?.timingData.getEventAtBeat("COMBOS",a)?.missMult??1);return}n<0||e().insert([{type:"COMBOS",beat:s.chartManager.getBeat(),hitMult:i.value,missMult:n}])},t.appendChild(i.view),t.appendChild(r.view),t},update:(s,e,t)=>{const i=s.firstElementChild.querySelector(".spinner-input"),r=s.lastElementChild.querySelector(".spinner-input"),n=e.getEventAtBeat("COMBOS",t),a=n?.hitMult??1,o=n?.missMult??1;document.activeElement!=i&&i.value!=Math.round(a).toString()&&(i.value=Math.round(a).toString()),document.activeElement!=r&&r.value!=Math.round(o).toString()&&(r.value=Math.round(o).toString())}})},speed:{title:"Speed",element:ei({create:(s,e)=>{const t=document.createElement("div");t.classList.add("flex-column-gap");const i=()=>{e().insert([{type:"SPEEDS",beat:s.chartManager.getBeat(),value:r.value,delay:n.value,unit:a.value=="Beats"?"B":"T"}])},r=nt.create(1,.1,0);r.onChange=o=>{if(o==null){const l=s.chartManager.getBeat();e().delete([{type:"SPEEDS",beat:l}]);return}i()};const n=nt.create(1,.1,0);n.onChange=o=>{o==null||o<0||i()};const a=di.create(["Beat","Time"],"Beats");return a.onChange=i,t.appendChild(r.view),t.appendChild(n.view),t.appendChild(a.view),t},update:(s,e,t)=>{const i=s.firstElementChild.querySelector(".spinner-input"),r=s.children[1].querySelector(".spinner-input"),n=e.getEventAtBeat("SPEEDS",t),a=n?.value??1,o=n?.delay??0,l=n?.unit=="B"?"Beat":"Time";document.activeElement!=i&&i.value!=ne(a,3).toFixed(3)&&(i.value=ne(a,3).toFixed(3)),document.activeElement!=r&&r.value!=ne(o,3).toFixed(3)&&(r.value=ne(o,3).toFixed(3)),r.disabled=n?.beat!=t;const c=s.lastElementChild.querySelector(".dropdown-selected");c.innerText!=l&&(c.innerText=l),n?.beat!=t?c.classList.add("disabled"):c.classList.remove("disabled")}})},scroll:{title:"Scroll",element:ei({create:(s,e)=>{const t=nt.create(1,void 0,3);return t.onChange=i=>{if(i==null){const r=s.chartManager.getBeat();e().delete([{type:"SCROLLS",beat:r}]);return}e().insert([{type:"SCROLLS",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("SCROLLS",t)?.value??1;i.value!=ne(r,3).toFixed(3)&&(i.value=ne(r,3).toFixed(3))}})},fake:{title:"Fake",element:ei({create:(s,e)=>{const t=nt.create(1,void 0,3,0);return t.onChange=i=>{if(i==null){const r=s.chartManager.getBeat();e().delete([{type:"FAKES",beat:r}]);return}i<0||e().insert([{type:"FAKES",beat:s.chartManager.getBeat(),value:i}])},t.view},update:(s,e,t)=>{const i=s.querySelector(".spinner-input");if(document.activeElement==i)return;const r=e.getEventAtBeat("FAKES",t);let n=r?.value??1;t!=r?.beat&&(n=0),i.value!=ne(n,3).toFixed(3)&&(i.value=ne(n,3).toFixed(3))}})},label:{title:"Label",element:ei({create:(s,e)=>{const t=document.createElement("input");return t.type="text",t.autocomplete="off",t.spellcheck=!1,t.onkeydown=i=>{i.key=="Enter"&&t.blur()},t.onblur=()=>{if(t.value==""){const i=s.chartManager.getBeat();e().delete([{type:"LABELS",beat:i}]);return}e().insert([{type:"LABELS",beat:s.chartManager.getBeat(),value:t.value}])},t},update:(s,e,t)=>{const i=s;if(document.activeElement==i)return;const n=e.getEventAtBeat("LABELS",t)?.value??"";i.value!=n&&(i.value=n)}})}};class gS extends Pt{app;lastBeat;chartTiming=!1;interval;changeHandler=()=>this.setData();constructor(e){super({title:"Edit Timing Data",width:300,height:340,disableClose:!1,win_id:"timing_data",blocking:!1}),this.app=e,this.lastBeat=Math.round(this.app.chartManager.getBeat()*1e3)/1e3,this.chartTiming=this.app.chartManager.loadedChart.timingData.usesChartTiming(),this.initView(),this.interval=setInterval(()=>{Math.round(this.app.chartManager.getBeat()*1e3)/1e3!=this.lastBeat&&(this.lastBeat=Math.round(this.app.chartManager.getBeat()*1e3)/1e3,this.setData())},17),q.on("timingModified",this.changeHandler),q.on("chartLoaded",this.changeHandler)}onClose(){q.off("timingModified",this.changeHandler),clearInterval(this.interval)}initView(){this.viewElement.replaceChildren(),this.viewElement.classList.add("timing-data");const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("label"),t.innerText="Apply to";const i=di.create(["All charts","This chart"],this.chartTiming?"This chart":"All charts");i.onChange(r=>{this.chartTiming=r=="This chart"}),e.appendChild(t),e.appendChild(i.view),Object.values(Kp).forEach(r=>{const n=document.createElement("div");n.classList.add("label"),n.innerText=r.title;const a=r.element.create(this.app,()=>this.chartTiming?this.app.chartManager.loadedChart.timingData:this.app.chartManager.loadedSM.timingData);e.appendChild(n),e.appendChild(a)}),this.viewElement.appendChild(e),this.setData()}setData(){this.app.chartManager.loadedChart&&Object.values(Kp).forEach((e,t)=>{const i=this.viewElement.children[0].children[t*2+3];e.element.update(i,this.app.chartManager.loadedChart.timingData,this.lastBeat)})}}const qp=[{type:"group",id:"app",label:"App",disable:()=>window.nw===void 0,children:[{type:"subgroup",children:[{type:"item",label:"Window Width",id:"app.width",input:{type:"number",step:50,min:300,onChange:(s,e)=>{const t=nw.Window.get();t.isFullscreen||(t.width=e)}}},{type:"item",label:"Window Height",id:"app.height",input:{type:"number",step:50,min:300,onChange:(s,e)=>{const t=nw.Window.get();t.isFullscreen||(t.height=e)}}}]},{type:"subgroup",children:[{type:"item",label:"Fullscreen",id:"app.fullscreen",input:{type:"checkbox",onChange:(s,e)=>{const t=nw.Window.get();e?nw.Window.get().enterFullscreen():(t.hide(),nw.Window.get().leaveFullscreen(),t.show())}}}]}]},{type:"group",id:"general",label:"General",children:[{type:"subgroup",children:[{type:"item",label:"Smooth Animations",id:"general.smoothAnimations",input:{type:"checkbox",onChange:(s,e)=>{e?document.body.classList.add("animated"):document.body.classList.remove("animated")}}},{type:"item",label:"Warn before exit",id:"general.warnBeforeExit",input:{type:"checkbox"},tooltip:"Warn before exiting the editor if you have unsaved changes."},{type:"item",label:"Spinner step",id:"general.spinnerStep",input:{type:"slider",min:0,step:.1,max:5,hardMin:0,hardMax:2**31-1},tooltip:"The default increment for all number spinners."}]}]},{type:"group",id:"chart",label:"Chart",children:[{type:"subgroup",label:"Playfield",children:[{type:"subgroup",children:[{type:"item",label:"Enable mouse placement",id:"chart.mousePlacement",input:{type:"checkbox"}}]},{type:"subgroup",children:[{type:"item",label:"Zoom",id:"chart.zoom",input:{type:"slider",min:50,step:1,max:200,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}}},{type:"item",label:"Reverse playfield",id:"chart.reverse",input:{type:"checkbox"}}]},{type:"subgroup",children:[{type:"item",label:"Y position",id:"chart.receptorYPos",input:{type:"slider",min:-400,max:0,hardMin:-(2**31-1),hardMax:2**31-1}},{type:"item",label:"Draw length",id:"chart.maxDrawBeats",input:{type:"slider",min:0,max:30,hardMax:2**31-1},tooltip:"Maximum number of beats to draw notes. Increasing this works well for songs with high bpm but can affect performance. Only applies to XMod."},{type:"item",label:"Draw length past receptors",id:"chart.maxDrawBeatsBack",input:{type:"slider",min:0,max:30,hardMax:2**31-1},tooltip:"Maximum number of beats to draw notes past the receptors. Increasing this can affect performance. Only applies to XMod."}]},{type:"subgroup",children:[{type:"item",label:"Draw noteflashes",id:"chart.drawNoteFlash",input:{type:"checkbox"}},{type:"item",label:"Draw note icons",id:"chart.drawIcons",input:{type:"checkbox"},tooltip:"Draw indicators above notes that some noteskins may not differentiate, like Fakes and Lifts."}]}]},{type:"subgroup",label:"Scrolling",children:[{type:"item",label:"Scroll sensitivity",id:"chart.scroll.scrollSensitivity",input:{type:"slider",min:0,step:1,max:200,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}},tooltip:"Adjust the scroll sensitivity when scrolling through the chart."},{type:"item",label:"Snap every scroll",id:"chart.scroll.scrollSnapEveryScroll",input:{type:"checkbox"},tooltip:"Whether each scroll movement corresponds to moving one snap unit when scrolling. Turning this on will have the same behavior as ArrowVortex. Recommended on for those using a mouse, off for those using trackpad."},{type:"item",label:"Invert zoom in/out",id:"chart.scroll.invertZoomScroll",input:{type:"checkbox"},tooltip:"Inverts the zoom in/out control when scrolling."},{type:"item",label:"Invert scroll direction when in reverse",id:"chart.scroll.invertReverseScroll",input:{type:"checkbox"}}]},{type:"subgroup",label:"Waveform",children:[{type:"item",label:"Draw waveform",id:"chart.waveform.enabled",input:{type:"checkbox"}},{type:"subgroup",children:[{type:"item",label:"Color",id:"chart.waveform.color",input:{type:"color"}},{type:"item",label:"Opacity",id:"chart.waveform.opacity",input:{type:"slider",min:0,max:1,step:.01}}]},{type:"subgroup",children:[{type:"item",label:"Draw filtered waveform",id:"chart.waveform.allowFilter",input:{type:"checkbox"}},{type:"item",label:"Filtered color",id:"chart.waveform.filteredColor",input:{type:"color"}},{type:"item",label:"Filtered opacity",id:"chart.waveform.filteredOpacity",input:{type:"slider",min:0,max:1,step:.01}}]},{type:"item",label:"Line height",id:"chart.waveform.lineHeight",input:{type:"slider",min:1,max:3,step:.1,hardMax:100},tooltip:"The height of each line of the waveform. Increasing this can help performance."},{type:"item",label:"Antialiasing",id:"chart.waveform.antialiasing",input:{type:"checkbox"}},{type:"item",label:"Allow speed changes",id:"chart.waveform.speedChanges",input:{type:"checkbox"},tooltip:"Allows the waveform to be affected by SPEEDS and SCROLLS."}]},{type:"subgroup",label:"Note Layout",children:[{type:"item",label:"Show Note Layout",id:"chart.noteLayout.enabled",input:{type:"checkbox"}}]},{type:"subgroup",label:"NPS Graph",children:[{type:"item",label:"Show NPS Graph",id:"chart.npsGraph.enabled",input:{type:"checkbox"}},{type:"subgroup",children:[{type:"item",label:"Start Color",id:"chart.npsGraph.color1",input:{type:"color"}},{type:"item",label:"End Color",id:"chart.npsGraph.color2",input:{type:"color"}}]}]}]},{type:"group",id:"audio",label:"Audio",children:[{type:"subgroup",children:[{type:"item",label:"Master volume",id:"audio.masterVolume",input:{type:"slider",min:0,step:1,max:100,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}}},{type:"item",label:"Song volume",id:"audio.songVolume",input:{type:"slider",min:0,step:1,max:100,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}}},{type:"item",label:"Sound effect volume",id:"audio.soundEffectVolume",input:{type:"slider",min:0,step:1,max:100,hardMax:2**31-1,transformers:{serialize:s=>s*100,deserialize:s=>s/100}}}]},{type:"subgroup",children:[{type:"item",label:"Enable assist tick",id:"audio.assistTick",input:{type:"checkbox"},tooltip:"Plays a sound when a note passes the receptors"},{type:"item",label:"Enable metronome",id:"audio.metronome",input:{type:"checkbox"}}]},{type:"subgroup",children:[{type:"item",label:"Allow filters to affect audio",id:"audio.allowFilter",input:{type:"checkbox",onChange:s=>{s.chartManager.chartAudio.reload()}}},{type:"item",label:"Enable metronome",id:"audio.metronome",input:{type:"checkbox"}}]}]},{type:"group",id:"play",label:"Play mode",children:[{type:"subgroup",label:"Calibration",children:[{type:"item",label:"Global offset",id:"play.offset",input:{type:"slider",min:-1,step:.001,max:1,hardMin:-(2**31-1),hardMax:2**31-1},tooltip:"Offset in seconds when playing a chart. Set to positive if you are hitting early and negative if you are hitting late."},{type:"item",label:"Sound effect offset",id:"play.effectOffset",input:{type:"slider",min:-1,step:.001,max:1,hardMin:-(2**31-1),hardMax:2**31-1},tooltip:"Offset in seconds when playing sound effects like assist tick and metronome."},{type:"item",label:"Visual offset",id:"play.visualOffset",input:{type:"slider",min:-1,step:.001,max:1,hardMin:-(2**31-1),hardMax:2**31-1},tooltip:"Offset in seconds when displaying notes."}]},{type:"subgroup",children:[{type:"item",label:"Judgement tilt",id:"play.judgementTilt",input:{type:"checkbox"},tooltip:"Tilts the judgement text left if you are hitting early and right if you are hitting late."},{type:"item",label:"Hide barlines during play",id:"play.hideBarlines",input:{type:"checkbox"}}]},{type:"subgroup",label:"Timing windows",children:[{type:"item",id:"play.timingCollection",label:"Timing window collection",input:{type:"dropdown",advanced:!1,get items(){return Object.keys(Je.getCollections())}}},{type:"item",id:"play.timingWindowScale",label:"Timing window scale",input:{type:"slider",min:0,step:.001,max:2,hardMax:2**31-1},tooltip:"Scales all timing windows by the given amount."},{type:"item",id:"play.timingWindowAdd",label:"Timing window add",input:{type:"slider",min:0,step:.001,max:1,hardMax:2**31-1},tooltip:"Adds this value (in seconds) to all timing windows."}]}]},{type:"group",id:"performance",label:"Performance",children:[{type:"item",label:"Antialiasing",id:"performance.antialiasing",input:{type:"checkbox"}},{type:"item",label:"Resolution",id:"performance.resolution",input:{type:"slider",min:1,step:1,max:4,hardMin:0,hardMax:2**31-1},tooltip:"Requires a reload."}]},{type:"group",id:"debug",label:"Debug",children:[{type:"item",label:"Show FPS",id:"debug.showFPS",input:{type:"checkbox"}},{type:"item",label:"Show rendering timers",id:"debug.showTimers",input:{type:"checkbox"}},{type:"item",label:"Show scrolls/speeds debug visual",id:"debug.showScroll",input:{type:"checkbox"}},{type:"item",label:"Show noteskin errors",id:"debug.showNoteskinErrors",input:{type:"checkbox"}}]}];class yS extends Pt{app;observer;sectionContainer;constructor(e){super({title:"Options",width:600,height:400,disableClose:!1,win_id:"user_options",blocking:!1}),this.app=e,this.initView(),q.on("resize",()=>{this.move(window.innerWidth/2-this.options.width/2,window.innerHeight/2-this.options.height/2)})}initView(){this.viewElement.replaceChildren();const e=document.createElement("div");e.classList.add("padding");const t=document.createElement("div");t.classList.add("pref-container");const i=document.createElement("div");i.classList.add("pref-search");const r=document.createElement("input");r.classList.add("pref-search-bar"),r.type="text",r.placeholder="Search for an option...",r.oninput=()=>{a.replaceChildren(),o.replaceChildren(...this.createOptions(this.filterOptions(r.value)))},i.appendChild(r);const n=document.createElement("div");n.classList.add("pref-scrollers");const a=document.createElement("div");a.classList.add("pref-section-scroller"),this.sectionContainer=a;const o=document.createElement("div");o.classList.add("pref-option-scroller"),n.replaceChildren(a,o),this.observer=new IntersectionObserver(l=>{l.forEach(c=>{const u=c.target.dataset.id,h=a.querySelector(`.pref-section[data-id=${u}]`);h&&(c.intersectionRatio>0?h.classList.add("selected"):h.classList.remove("selected"))})},{}),t.replaceChildren(i,n),a.replaceChildren(),o.replaceChildren(...this.createOptions(qp)),e.appendChild(t),this.viewElement.appendChild(e)}createOptions(e){return e.filter(t=>!t.disable?.(this.app)).map(t=>{const i=this.makeOption(t);return t.type=="group"&&(this.observer.observe(i),this.sectionContainer?.appendChild(this.createEmptyGroup(t))),i})}makeOption(e){const t=document.createElement("div");t.classList.add("pref-"+e.type),(e.type=="group"||e.type=="item")&&(t.dataset.id=e.id);const i=document.createElement("div");i.classList.add(`pref-${e.type}-label`),e.label!==void 0&&(i.innerText=e.label,t.appendChild(i));const r=document.createElement("img");if(e.type=="item"&&(r.src=Ce.REVERT,r.style.width="12px",r.addEventListener("click",()=>{w.applyOption([e.id,w.getDefaultOption(e.id)]);const n=e.input.onChange;n?.(this.app,w.getDefaultOption(e.id)),q.emit("userOptionUpdated",e.id),t.replaceWith(this.makeOption(e))}),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",t.appendChild(r)),e.type=="item"){const n=w.getOption(e.id);let a;if(!e.input)return t;switch(i.innerText=e.label,e.input.type){case"checkbox":{const o=document.createElement("input"),l=e.input.onChange;o.type="checkbox",o.checked=n,o.onblur=null,o.onchange=()=>{w.applyOption([e.id,o.checked]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",l?.(this.app,o.checked)},o.classList.add("pref-input","right"),o.onkeydown=c=>{c.key=="Enter"&&o.blur()},a=o;break}case"dropdown":{if(e.input.advanced){const o=e.input.transformers.deserialize,l=e.input.transformers.serialize,c=e.input.onChange,u=di.create(e.input.items,l(n));u.onChange(h=>{w.applyOption([e.id,o(h)]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",c?.(this.app,o(h))}),u.view.classList.add("pref-input","dropdown-right"),a=u.view}else{const o=e.input.onChange,l=di.create(e.input.items,n);l.onChange(c=>{w.applyOption([e.id,c]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",o?.(this.app,c)}),l.view.classList.add("pref-input","dropdown-right"),a=l.view}break}case"number":{const o=e.input.transformers?.deserialize??(h=>h),l=e.input.transformers?.serialize??(h=>h),c=e.input.onChange,u=nt.create(l(n),e.input.step,e.input.precision,e.input.min,e.input.max);u.onChange=h=>{if(!h){u.setValue(l(h));return}w.applyOption([e.id,o(h)]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",c?.(this.app,o(h))},a=u.view;break}case"slider":{const o=e.input.transformers?.deserialize??(f=>f),l=e.input.transformers?.serialize??(f=>f),c=e.input.onChange,u=document.createElement("div");u.style.display="flex",u.style.alignItems="center";const h=document.createElement("input");h.type="range",h.min=e.input.min?.toString()??"",h.max=e.input.max?.toString()??"",h.step=e.input.step?.toString()??"1",h.value=l(n).toString();const d=document.createElement("input");d.type="text",d.value=(Math.round(l(n)*1e3)/1e3).toString();const p=e.input.min??e.input.hardMin??-Number.MAX_VALUE,m=e.input.max??e.input.hardMax??Number.MAX_VALUE;d.onblur=()=>{let f=na(d.value);if(f===null){d.value=(Math.round(l(n)*1e3)/1e3).toString();return}f=Ve(f,p,m),d.value=ne(f,3).toString(),d.blur(),d.value==""?d.value=l(f).toString():(w.applyOption([e.id,o(f)]),q.emit("userOptionUpdated",e.id)),h.value=f.toString(),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",c?.(this.app,o(f))},h.oninput=()=>{const f=parseFloat(h.value);d.value=ne(f,3).toString(),w.applyOption([e.id,o(f)]),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block"},d.style.width="50px",d.onkeydown=f=>{f.key=="Enter"&&d.blur()},u.appendChild(h),u.appendChild(d),a=u;break}case"text":{const o=e.input.onChange,l=document.createElement("input");l.type="text",l.value=n.toString(),l.onblur=()=>{w.applyOption([e.id,l.value]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block",o?.(this.app,l.value)},l.onkeydown=c=>{c.key=="Enter"&&l.blur()},a=l;break}case"color":{const o=document.createElement("input");o.type="color",o.value="#"+n.toString(16).padStart(6,"0"),o.onchange=()=>{o.blur()},o.onblur=()=>{w.applyOption([e.id,parseInt(o.value.slice(1),16)]),q.emit("userOptionUpdated",e.id),r.style.display=w.getDefaultOption(e.id)===w.getOption(e.id)?"none":"block"},a=o}}a.classList.add("pref-item-input"),t.appendChild(a)}else{const n=document.createElement("div");n.classList.add("pref-children"),t.appendChild(n),n.replaceChildren(...this.createOptions(e.children))}return e.type=="item"&&e.tooltip!==void 0&&zt(t,{content:e.tooltip}),t}filterOptions(e,t=qp){const i=[];return t.forEach(r=>{if(r.label&&r.label.toLowerCase().includes(e.toLowerCase())){i.push(r);return}if(r.type=="group"||r.type=="subgroup"){const n=this.filterOptions(e,r.children);n.length!=0&&i.push({...r,children:n})}}),i}createEmptyGroup(e){const t=document.createElement("div");return t.classList.add("pref-section"),t.dataset.id=e.id,t.innerText=e.label,t.onclick=()=>{t.parentElement.parentElement.querySelector(`.pref-group[data-id=${e.id}]`).scrollIntoView()},t}onClose(){this.observer?.disconnect()}}var Hn=(s=>(s.SHIFT="Shift",s.CTRL="Ctrl",s.ALT="Alt",s.META="Command",s))(Hn||{});const xi=navigator.userAgent.indexOf("Mac OS X")>-1,ht=xi?"Command":"Ctrl",vS={Shift:xi?"⇧":"Shift",Ctrl:xi?"⌃":"Ctrl",Alt:xi?"⌥":"Alt",Command:"⌘"},Qp={ArrowLeft:"Left",ArrowUp:"Up",ArrowRight:"Right",ArrowDown:"Down",BracketLeft:"[",BracketRight:"]",Semicolon:";",Quote:"'",Backslash:"\\",Slash:"/",Period:".",Comma:",",Backquote:"`",Minus:"-",Equal:"+"},Jg={Home:xi?"fn Left":"Home",End:xi?"fn Right":"End",PageUp:xi?"fn Up":"End",PageDown:xi?"fn Down":"End"},Yo=["ctrlKey","altKey","shiftKey","metaKey"],yo=["Ctrl","Alt","Shift","Command"],wt={playback:{label:"Play/Pause",combos:[{key:"Space",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.playPause()},decreaseSnap:{label:"Decrease snap",combos:[{key:"Left",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.previousSnap()},increaseSnap:{label:"Increase snap",combos:[{key:"Right",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.nextSnap()},cursorUp:{label:"Move cursor up",combos:[{key:"Up",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>{s.chartManager.snapToPreviousTick()}},cursorDown:{label:"Move cursor down",combos:[{key:"Down",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>{s.chartManager.snapToNextTick()}},increaseScrollSpeed:{label:"Increase scroll speed",combos:[{key:"Up",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>w.chart.speed=Math.max(10,w.chart.speed*Math.pow(1.01,30))},decreaseScrollSpeed:{label:"Decrease scroll speed",combos:[{key:"Down",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>w.chart.speed=Math.max(10,w.chart.speed*Math.pow(1.01,-30))},zoomIn:{label:"Zoom in",combos:[{key:"+",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.zoom+=.1,_e.create("Zoom: "+Math.round(w.chart.zoom*100)+"%")}},zoomOut:{label:"Zoom out",combos:[{key:"-",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.zoom=Math.max(.1,w.chart.zoom-.1),_e.create("Zoom: "+Math.round(w.chart.zoom*100)+"%")}},zoomDefault:{label:"Reset zoom",combos:[{key:"0",mods:[ht]}],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.zoom=1,_e.create("Zoom: "+Math.round(w.chart.zoom*100)+"%")}},newSong:{label:"New song...",bindLabel:"New song",combos:[{key:"N",mods:[ht]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>{s.windowManager.openWindow(new Kg(s))}},openSong:{label:"Open song...",bindLabel:"Open song",combos:[{key:"O",mods:[ht]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>{if(window.nw){const e=document.createElement("input");e.type="file",e.accept=".sm,.ssc",e.onchange=()=>s.chartManager.loadSM(e.value),e.click()}else s.windowManager.openWindow(new qg(s,!1))}},songProperties:{label:"Song properties...",bindLabel:"Open song properties",combos:[{key:"O",mods:["Shift"]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>s.windowManager.openWindow(new lS(s))},save:{label:"Save...",bindLabel:"Save",combos:[{key:"S",mods:[ht]}],disabled:s=>!s.chartManager.loadedSM||s.chartManager.smPath.startsWith("https://")||s.chartManager.smPath.startsWith("http://"),callback:s=>s.chartManager.save()},export:{label:"Save and export current song",combos:[{key:"E",mods:[ht]}],disabled:s=>!!window.nw||!s.chartManager.loadedSM||s.chartManager.smPath.startsWith("https://")||s.chartManager.smPath.startsWith("http://"),callback:s=>{s.chartManager.save(),Fe.getStandardHandler().saveDirectory(s.chartManager.smPath)}},exportNotedata:{label:"Export to notedata...",bindLabel:"Export to notedata",combos:[{key:"E",mods:[ht,"Shift"]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>s.windowManager.openWindow(new JT(s,s.chartManager.selection.notes))},openChart:{label:"Chart list",bindLabel:"Open chart list",combos:[{key:"O",mods:[ht,"Shift"]}],disabled:s=>!s.chartManager.loadedSM||!Be.openWindows,callback:s=>s.windowManager.openWindow(new Fg(s))},timingDataRow:{label:"Edit timing data at row",combos:[{key:"T",mods:["Shift"]}],disabled:s=>!s.chartManager.chartView||!Be.openWindows,callback:s=>s.windowManager.openWindow(new gS(s))},selectRegion:{label:"Select region",combos:[{key:"Tab",mods:[]}],disabled:s=>!s.chartManager.loadedChart&&s.chartManager.getMode()!=X.Edit,callback:s=>s.chartManager.selectRegion()},volumeUp:{label:"Increase master volume",combos:[{key:"Up",mods:["Alt"]}],disabled:!1,callback:()=>{w.audio.masterVolume=Math.min(w.audio.masterVolume+.05,1),_e.create("Master volume: "+Math.round(w.audio.masterVolume*100)+"%")}},volumeDown:{label:"Decrease master volume",combos:[{key:"Down",mods:["Alt"]}],disabled:!1,callback:()=>{w.audio.masterVolume=Math.max(w.audio.masterVolume-.05,0),_e.create("Master volume: "+Math.round(w.audio.masterVolume*100)+"%")}},songVolumeUp:{label:"Increase song volume",combos:[{key:"Up",mods:["Shift","Alt"]}],disabled:!1,callback:()=>{w.audio.songVolume=Math.min(w.audio.songVolume+.05,1),_e.create("Song volume: "+Math.round(w.audio.songVolume*100)+"%")}},songVolumeDown:{label:"Decrease song volume",combos:[{key:"Down",mods:["Shift","Alt"]}],disabled:!1,callback:()=>{w.audio.songVolume=Math.max(w.audio.songVolume-.05,0),_e.create("Song volume: "+Math.round(w.audio.songVolume*100)+"%")}},effectvolumeUp:{label:"Increase tick/metronome volume",combos:[{key:"Up",mods:["Shift",ht,"Alt"]}],disabled:!1,callback:()=>{w.audio.soundEffectVolume=Math.min(w.audio.soundEffectVolume+.05,1),_e.create("Effect volume: "+Math.round(w.audio.soundEffectVolume*100)+"%")}},effectvolumeDown:{label:"Decrease tick/metronome volume",combos:[{key:"Down",mods:["Shift",ht,"Alt"]}],disabled:!1,callback:()=>{w.audio.soundEffectVolume=Math.max(w.audio.soundEffectVolume-.05,0),_e.create("Effect Volume: "+Math.round(w.audio.soundEffectVolume*100)+"%")}},rateUp:{label:"Increase playback rate",combos:[{key:"Right",mods:["Shift"]}],disabled:s=>s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:()=>{w.audio.rate+=.05,_e.create("Playback Rate: "+Math.round(w.audio.rate*100)+"%")}},rateDown:{label:"Decrease playback rate",combos:[{key:"Left",mods:["Shift"]}],disabled:s=>s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:()=>{w.audio.rate=Math.max(w.audio.rate-.05,.1),_e.create("Playback Rate: "+Math.round(w.audio.rate*100)+"%")}},rateDefault:{label:"Reset playback rate",combos:[],disabled:!1,callback:()=>{w.audio.rate=1,_e.create("Playback Rate: "+Math.round(w.audio.rate)+"%")}},previousMeasure:{label:"Previous measure",combos:[{key:"PageUp",mods:[]},{key:";",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>{const e=s.chartManager.getBeat(),t=s.chartManager.loadedChart.timingData.getMeasureLength(e-.001);s.chartManager.snapToNearestTick(Math.max(0,e-t))}},nextMeasure:{label:"Next measure",combos:[{key:"PageDown",mods:[]},{key:"'",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>{const e=s.chartManager.getBeat(),t=s.chartManager.loadedChart.timingData.getMeasureLength(e);s.chartManager.snapToNearestTick(Math.max(0,e+t))}},previousNote:{label:"Previous note",combos:[{key:",",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.previousNote()},nextNote:{label:"Next note",combos:[{key:".",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.nextNote()},jumpChartStart:{label:"Jump to first note",combos:[],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.firstNote()},jumpChartEnd:{label:"Jump to last note",combos:[],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.lastNote()},jumpSongStart:{label:"Jump to song start",combos:[{key:"Home",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.setBeat(Math.max(0,s.chartManager.loadedChart.getBeatFromSeconds(0)))},jumpSongEnd:{label:"Jump to song end",combos:[{key:"End",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.setBeat(s.chartManager.loadedChart.getBeatFromSeconds(s.chartManager.chartAudio.getSongLength()))},assistTick:{label:"Assist tick",combos:[{key:"F7",mods:[]}],disabled:()=>!Be.assist,callback:()=>{w.audio.assistTick=!w.audio.assistTick,_e.create("Assist Tick: "+(w.audio.assistTick?"on":"off"))}},metronome:{label:"Metronome",combos:[{key:"F7",mods:["Alt"]}],disabled:()=>!Be.assist,callback:()=>{w.audio.metronome=!w.audio.metronome,_e.create("Metronome: "+(w.audio.metronome?"on":"off"))}},XMod:{label:"XMod (Beat-based)",combos:[{key:"X",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.CMod=!1,_e.create("Switched to XMod")}},CMod:{label:"CMod (Time-based)",combos:[{key:"C",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.CMod=!0,_e.create("Switched to CMod")}},reverse:{label:"Reverse playfield",combos:[],disabled:!1,callback:()=>{w.chart.reverse=!w.chart.reverse,_e.create("Reverse Playfield: "+(w.chart.reverse?"on":"off"))}},hideWarpedArrows:{label:"Hide warped notes (CMod only)",combos:[{key:"W",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.hideWarpedArrows=!w.chart.hideWarpedArrows,_e.create("Hide Warped Arrows: "+(w.chart.hideWarpedArrows?"on":"off"))}},hideFakedArrows:{label:"Hide faked notes (CMod only)",combos:[{key:"F",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.hideFakedArrows=!w.chart.hideFakedArrows,_e.create("Hide Faked Arrows: "+(w.chart.hideFakedArrows?"on":"off"))}},doSpeedChanges:{label:"Do speed changes (XMod only)",combos:[{key:"S",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.doSpeedChanges=!w.chart.doSpeedChanges,_e.create("Speed Changes: "+(w.chart.doSpeedChanges?"on":"off"))}},showEq:{label:"Equalizer",combos:[{key:"E",mods:["Shift"]}],disabled:s=>!s.chartManager.chartAudio||!Be.openWindows,callback:s=>s.windowManager.openWindow(new qT(s))},detectSync:{label:"Detect audio sync",combos:[{key:"L",mods:["Shift"]}],disabled:s=>!s.chartManager.chartAudio||!Be.openWindows,callback:s=>s.windowManager.openWindow(new Qg(s))},previousNoteType:{label:"Previous note type",combos:[{key:"N",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.previousNoteType()},nextNoteType:{label:"Next note type",combos:[{key:"M",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.Record,callback:s=>s.chartManager.nextNoteType()},undo:{label:"Undo",combos:[{key:"Z",mods:[ht]}],disabled:s=>!s.actionHistory.canUndo()||s.chartManager.getMode()!=X.Edit,callback:s=>s.actionHistory.undo()},redo:{label:"Redo",combos:[{key:"Y",mods:[ht]},{key:"Z",mods:[ht,"Shift"]}],disabled:s=>!s.actionHistory.canRedo()||s.chartManager.getMode()!=X.Edit,callback:s=>s.actionHistory.redo()},mousePlacement:{label:"Enable Mouse Note Placement",combos:[{key:"M",mods:["Shift"]}],disabled:!1,callback:()=>{w.chart.mousePlacement=!w.chart.mousePlacement,_e.create("Mouse Note Placement: "+(w.chart.mousePlacement?"on":"off"))}},playMode:{label:"Enter/Exit Play Mode",combos:[{key:"P",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Record||!Be.playMode,callback:s=>s.chartManager.setMode(X.Play)},recordMode:{label:"Enter/Exit Record Mode",combos:[{key:"R",mods:[]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.View||!Be.recordMode,callback:s=>s.chartManager.setMode(X.Record)},playModeStart:{label:"Play from start",combos:[{key:"P",mods:["Shift"]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Record||!Be.playMode,callback:s=>{s.chartManager.setBeat(0),s.chartManager.setMode(X.Play)}},recordModeStart:{label:"Record from start",combos:[{key:"R",mods:["Shift"]}],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()==X.Play||s.chartManager.getMode()==X.View||!Be.recordMode,callback:s=>s.chartManager.setMode(X.Record)},options:{label:"Options...",bindLabel:"Edit options",combos:[{key:",",mods:[ht]}],disabled:()=>!Be.openWindows||!Be.openWindows,callback:s=>{s.windowManager.openWindow(new yS(s))}},keybinds:{label:"Keybinds...",bindLabel:"Edit keybinds",combos:[],disabled:()=>!Be.openWindows||!Be.openWindows,callback:s=>{s.windowManager.openWindow(new Di(s))}},gameplayKeybinds:{label:"Gameplay keybinds...",bindLabel:"Edit gameplay keybinds",combos:[],disabled:()=>!Be.openWindows||!Be.openWindows,callback:s=>{s.windowManager.openWindow(new ZT(s))}},convertHoldsRolls:{label:"Holds to rolls",bindLabel:"Convert holds to rolls",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Hold"&&(e.type="Roll"),e))}},convertRollsHolds:{label:"Rolls to holds",bindLabel:"Convert rolls to holds",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Roll"&&(e.type="Hold"),e))}},swapHoldsRolls:{label:"Swap holds and rolls",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Hold"?e.type="Roll":e.type=="Roll"&&(e.type="Hold"),e))}},convertHoldsTaps:{label:"Holds/rolls to taps",bindLabel:"Convert holds/rolls to taps",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>((e.type=="Hold"||e.type=="Roll")&&(e.type="Tap"),e))}},convertTapsMines:{label:"Taps to mines",bindLabel:"Convert ntapsotes to mines",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Tap"&&(e.type="Mine"),e))}},convertTapsLifts:{label:"Taps to lifts",bindLabel:"Convert taps to lifts",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Tap"&&(e.type="Lift"),e))}},convertTapsFakes:{label:"Taps to fakes",bindLabel:"Convert taps to fakes",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.type=="Tap"&&(e.type="Fake"),e))}},mirrorHorizontally:{label:"Horizontally",bindLabel:"Mirror horizontally",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.col=s.chartManager.loadedChart.gameType.flipColumns.horizontal[e.col],e))}},mirrorVertically:{label:"Vertically",bindLabel:"Mirror vertically",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.col=s.chartManager.loadedChart.gameType.flipColumns.vertical[e.col],e))}},mirrorBoth:{label:"Both",bindLabel:"Mirror both",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.col=s.chartManager.loadedChart.gameType.flipColumns.horizontal[e.col],e.col=s.chartManager.loadedChart.gameType.flipColumns.vertical[e.col],e))}},selectBeforeCursor:{label:"Select before cursor",combos:[{key:"Home",mods:["Shift"]}],disabled:s=>!s.chartManager.loadedChart,callback:s=>{s.chartManager.editTimingMode==Oe.Off?s.chartManager.setNoteSelection(s.chartManager.loadedChart.getNotedata().filter(e=>e.beate.beat!s.chartManager.loadedChart,callback:s=>{s.chartManager.editTimingMode==Oe.Off?s.chartManager.setNoteSelection(s.chartManager.loadedChart.getNotedata().filter(e=>e.beat>s.chartManager.getBeat())):s.chartManager.setEventSelection(s.chartManager.loadedChart.timingData.getTimingData().filter(e=>e.beat>s.chartManager.getBeat()))}},selectAll:{label:"Select all",combos:[{key:"A",mods:[ht]}],disabled:s=>!s.chartManager.loadedChart,callback:s=>{s.chartManager.editTimingMode==Oe.Off?s.chartManager.setNoteSelection(s.chartManager.loadedChart.getNotedata()):s.chartManager.setEventSelection(s.chartManager.loadedChart.timingData.getTimingData())}},expand2to1:{label:"Expand 2:1 (8th to 4th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)*2+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold*=2,t.hold=Math.round(t.hold*48)/48),t))}},expand3to2:{label:"Expand 3:2 (12th to 8th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)*1.5+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold*=1.5,t.hold=Math.round(t.hold*48)/48),t))}},expand4to3:{label:"Expand 4:3 (16th to 2th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)*4/3+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold*=4/3,t.hold=Math.round(t.hold*48)/48),t))}},compress1to2:{label:"Compress 1:2 (4th to 8th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)/2+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold/=2,t.hold=Math.round(t.hold*48)/48),t))}},compress2to3:{label:"Compress 2:3 (8th to 12th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)/1.5+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold/=1.5,t.hold=Math.round(t.hold*48)/48),t))}},compress3to4:{label:"Compress 3:4 (12th to 16th)",combos:[],disabled:s=>s.chartManager.selection.notes.length<2||s.chartManager.getMode()!=X.Edit,callback:s=>{const e=Math.min(...s.chartManager.selection.notes.map(t=>t.beat));s.chartManager.modifySelection(t=>(t.beat=(t.beat-e)*.75+e,t.beat=Math.round(t.beat*48)/48,Pe(t)&&(t.hold*=.75,t.hold=Math.round(t.hold*48)/48),t))}},quantize4th:{label:"4ths",bindLabel:"Quantize to 4ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,4),e.beat=Math.round(e.beat*48)/48,e))}},quantize8th:{label:"8ths",bindLabel:"Quantize to 8ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,8),e.beat=Math.round(e.beat*48)/48,e))}},quantize12th:{label:"12ths",bindLabel:"Quantize to 12ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,12),e.beat=Math.round(e.beat*48)/48,e))}},quantize16th:{label:"16ths",bindLabel:"Quantize to 16ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,16),e.beat=Math.round(e.beat*48)/48,e))}},quantize24th:{label:"24ths",bindLabel:"Quantize to 24ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,24),e.beat=Math.round(e.beat*48)/48,e))}},quantize32nd:{label:"32nds",bindLabel:"Quantize to 32nds",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,32),e.beat=Math.round(e.beat*48)/48,e))}},quantize48th:{label:"48ths",bindLabel:"Quantize to 48ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,48),e.beat=Math.round(e.beat*48)/48,e))}},quantize96th:{label:"96ths",bindLabel:"Quantize to 96ths",combos:[],disabled:s=>s.chartManager.selection.notes.length==0||s.chartManager.getMode()!=X.Edit,callback:s=>{s.chartManager.modifySelection(e=>(e.beat=s.chartManager.getClosestTick(e.beat,96),e.beat=Math.round(e.beat*48)/48,e))}},delete:{label:"Delete",combos:[{key:"Backspace",mods:[]},{key:"Delete",mods:[]}],disabled:s=>s.chartManager.getMode()!=X.Edit||s.chartManager.selection.notes.length==0&&s.chartManager.eventSelection.timingEvents.length==0,callback:s=>{s.chartManager.deleteSelection(),s.chartManager.deleteEventSelection()}},paste:{label:"Paste",combos:[{mods:[ht],key:"V"}],preventDefault:!1,disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit,callback:async s=>{const e=await navigator.clipboard.readText();s.chartManager.paste(e)}},pasteReplace:{label:"Clear and paste",combos:[{mods:[ht,"Shift"],key:"V"}],preventDefault:!1,disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit,callback:async s=>{const e=await navigator.clipboard.readText();s.chartManager.paste(e,!0)}},copy:{label:"Copy",combos:[{mods:[ht],key:"C"}],preventDefault:!1,disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit||!s.chartManager.hasSelection(),callback:async s=>{const e=s.chartManager.copy();e&&await navigator.clipboard.writeText(e)}},cut:{label:"Cut",combos:[{mods:[ht],key:"X"}],preventDefault:!1,disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit||!s.chartManager.hasSelection(),callback:async s=>{const e=s.chartManager.copy();e&&await navigator.clipboard.writeText(e),s.chartManager.deleteSelection()}},adjustOffset:{label:"Adjust offset",combos:[],disabled:()=>!Be.openWindows,callback:s=>s.windowManager.openWindow(new oS(s))},setSongPreview:{label:"Set as song preview",combos:[],disabled:s=>!s.chartManager.chartView||s.chartManager.getMode()!=X.Edit||!s.chartManager.hasRange(),callback:s=>{const e=s.chartManager.loadedChart,t=s.chartManager.loadedSM.properties.SAMPLESTART??"0",i=s.chartManager.loadedSM.properties.SAMPLELENGTH??"10";let r="",n="";if(s.chartManager.startRegion!==void 0&&s.chartManager.endRegion!==void 0){const a=e.getSecondsFromBeat(s.chartManager.startRegion),o=e.getSecondsFromBeat(s.chartManager.endRegion);r=ne(a,3).toString(),n=ne(o-a,3).toString()}else{const o=(s.chartManager.selection.notes.length>0?s.chartManager.selection.notes:s.chartManager.eventSelection.timingEvents).map(u=>u.beat),l=e.getSecondsFromBeat(Math.min(...o)),c=e.getSecondsFromBeat(Math.max(...o));r=ne(l,3).toString(),n=ne(c-l,3).toString()}pt.instance.run({action:a=>{a.chartManager.loadedSM.properties.SAMPLESTART=r,a.chartManager.loadedSM.properties.SAMPLELENGTH=n},undo:()=>{s.chartManager.loadedSM.properties.SAMPLESTART=t,s.chartManager.loadedSM.properties.SAMPLELENGTH=i}})}},showDebugTimers:{label:"Toggle Debug Timers",combos:[{key:"F3",mods:["Shift"]}],disabled:!1,callback:()=>{w.debug.showTimers=!w.debug.showTimers}},showFPSCounter:{label:"Toggle FPS Counter",combos:[{key:"F3",mods:[]}],disabled:!1,callback:()=>{w.debug.showFPS=!w.debug.showFPS}},noteTypeTap:{label:"Switch to Taps",combos:[],disabled:s=>!s.chartManager.chartView,callback:s=>{s.chartManager.setEditingNoteType("Tap")}},noteTypeLift:{label:"Switch to Lifts",combos:[],disabled:s=>!s.chartManager.chartView,callback:s=>{s.chartManager.setEditingNoteType("Lift")}},noteTypeMine:{label:"Switch to Mines",combos:[],disabled:s=>!s.chartManager.chartView,callback:s=>{s.chartManager.setEditingNoteType("Mine")}},noteTypeFake:{label:"Switch to Fakes",combos:[],disabled:s=>!s.chartManager.chartView,callback:s=>{s.chartManager.setEditingNoteType("Fake")}},quant4:{label:"Switch to 4ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1}},quant8:{label:"Switch to 8ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/2}},quant12:{label:"Switch to 12ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/3}},quant16:{label:"Switch to 16ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/4}},quant24:{label:"Switch to 24ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/6}},quant32:{label:"Switch to 32ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/8}},quant48:{label:"Switch to 48ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/12}},quant96:{label:"Switch to 96ths",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/24}},quant192:{label:"Switch to 192nds",combos:[],disabled:s=>!s.chartManager.chartView,callback:()=>{w.chart.snap=1/48}},openGuide:{label:"Open Help Guide",combos:[],disabled:!1,callback:()=>{window.open("/smeditor/guide/")}},noteskinWindow:{label:"Noteskins...",bindLabel:"Open Noteskin Window",combos:[{mods:["Shift"],key:"N"}],disabled:s=>!s.chartManager.chartView,callback:s=>s.windowManager.openWindow(new aS(s))},previousChart:{label:"Previous chart",combos:[{key:"F5",mods:[]}],disabled:s=>!s.chartManager.chartView,callback:s=>{if(!s.chartManager.loadedSM?.charts||!s.chartManager.loadedChart)return;const e=s.chartManager.loadedSM?.charts[s.chartManager.loadedChart.gameType.id],t=e.indexOf(s.chartManager.loadedChart);e[t-1]&&s.chartManager.loadChart(e[t-1])}},nextChart:{label:"Next chart",combos:[{key:"F6",mods:[]}],disabled:s=>!s.chartManager.chartView,callback:s=>{if(!s.chartManager.loadedSM?.charts||!s.chartManager.loadedChart)return;const e=s.chartManager.loadedSM?.charts[s.chartManager.loadedChart.gameType.id],t=e.indexOf(s.chartManager.loadedChart);e[t+1]&&s.chartManager.loadChart(e[t+1])}}};class AS{static popup;static open(e,t){this.popup=this.build(e,t),document.getElementById("popups")?.appendChild(this.popup)}static build(e,t){const i=document.createElement("div");i.classList.add("update-popup");const r=document.createElement("div");r.classList.add("title"),r.innerText=`A new version of the desktop app is available! (${e})`;const n=document.createElement("div");return n.classList.add("desc"),n.innerText="Click here to download the new version.",i.replaceChildren(r,n),i.onclick=()=>{localStorage.setItem("downloadedVersion",e),nw.require("nw.gui").Shell.openExternal(t),this.close()},i}static close(){this.popup&&(this.popup.style.opacity="0",this.popup.onclick=null,setTimeout(()=>this.popup.remove(),300))}}class Ht extends Um{static graphics=new An;static textures={default:Lt.create({width:50,height:50}),noBorder:Lt.create({width:50,height:50}),onlyBorder:Lt.create({width:50,height:50})};static init(e){this.textures.default=Lt.create({width:50,height:50,resolution:e.resolution}),this.textures.noBorder=Lt.create({width:50,height:50,resolution:e.resolution}),this.textures.onlyBorder=Lt.create({width:50,height:50,resolution:e.resolution}),this.graphics.beginFill(16777215,1),this.graphics.lineStyle(1,0),this.graphics.drawRoundedRect(0,0,50,50,5),this.graphics.endFill(),e.render(this.graphics,{renderTexture:this.textures.default}),this.graphics.clear(),this.graphics.beginFill(16777215,1),this.graphics.lineStyle(1,16777215),this.graphics.drawRoundedRect(0,0,50,50,5),this.graphics.endFill(),e.render(this.graphics,{renderTexture:this.textures.noBorder}),this.graphics.clear(),this.graphics.beginFill(16777215,0),this.graphics.lineStyle(2,16777215),this.graphics.drawRoundedRect(0,0,50,50,5),this.graphics.endFill(),e.render(this.graphics,{renderTexture:this.textures.onlyBorder})}constructor(e){super(Ht.textures[e??"default"],5,5,5,5)}}const Vn=[];function Jp(){return Vn.length}function NC(){for(Vn.push(Date.now());Vn.length>0&&Vn[0]0&&Wn[0]Jp()+" FPS"});drawUpdateTimeGraph=new In({width:300,height:mi,color:6034982,min:0,unit:"ms",label:"DrawUpdate",precision:1});updateTimeGraph=new In({width:300,height:mi,color:1516101,min:0,unit:"ms",label:"Update",precision:1,sublabel:()=>Zp()+" TPS"});memoryTimeGraph=new In({width:300,height:mi,color:6626406,min:0,formatter:e=>Math.round(e/1048576)+" MB",label:"Memory"});cpuGraph=new In({width:300,height:mi,color:5190685,min:0,label:"CPU"});graphs=new Ee;fpsCounter=new Ee;fpsBg=new Ht;fpsText=new Re("",{fontName:"Main",fontSize:12});lastFrameTime=0;constructor(e){super(e),this.drawUpdateTimeGraph.y+=mi+5,this.updateTimeGraph.y+=(mi+5)*2,this.memoryTimeGraph.y+=(mi+5)*3,this.cpuGraph.y+=(mi+5)*4,aa.instance=this,this.fpsBg.tint=0,this.fpsBg.alpha=.5,this.fpsText.x=5,this.fpsBg.y=-5,this.graphs.addChild(this.frameTimeGraph,this.drawUpdateTimeGraph,this.updateTimeGraph),performance.memory&&this.graphs.addChild(this.memoryTimeGraph),this.fpsCounter.addChild(this.fpsBg,this.fpsText),this.graphs.visible=w.debug.showTimers,this.fpsCounter.visible=w.debug.showFPS,this.addChild(this.graphs,this.fpsCounter)}update(){this.x=-this.manager.app.renderer.screen.width/2+20,this.y=-this.manager.app.renderer.screen.height/2+20,this.graphs.children.forEach(e=>e.update()),this.graphs.visible=w.debug.showTimers,this.fpsCounter.visible=w.debug.showFPS,this.fpsText.text=`${Jp()} FPS ${Zp()} TPS ${this.lastFrameTime.toFixed(2)} ms -`,this.fpsBg.width=this.fpsText.width+10,this.fpsBg.height=this.fpsText.height+10,w.debug.showTimers?(this.fpsBg.y=(mi+5)*this.graphs.children.length-5,this.fpsText.y=(mi+5)*this.graphs.children.length):(this.fpsBg.y=-5,this.fpsText.y=0)}addMemoryTimeValue(e){this.memoryTimeGraph.addValue(e)}addFrameTimeValue(e){this.lastFrameTime=e,this.frameTimeGraph.addValue(e)}addUpdateTimeValue(e){this.updateTimeGraph.addValue(e)}addDrawUpdateTimeValue(e){this.drawUpdateTimeGraph.addValue(e)}}class In extends Ee{graphWidth;graphHeight;color;unit;precision;formatter;sublabel;maxEase=1;targetMax=1;minEase=1;targetMin=1;constrainedMin=null;constrainedMax=null;dataPoints=[];linePool=[];lineContainer;labelText;sublabelText;topText;bottomText;constructor(e){super();const{width:t,height:i,color:r=16777215,unit:n="",label:a="",min:o=null,max:l=null,precision:c=0,formatter:u=null,sublabel:h=()=>""}=e;this.graphWidth=t,this.graphHeight=i,this.color=r,this.unit=n,this.constrainedMax=l,this.constrainedMin=o,this.precision=c,this.formatter=u,this.sublabel=h,this.lineContainer=new Xc(t,{position:!0},16384,!0);const d=new Gt;d.tint=0,d.alpha=.3,d.width=this.graphWidth,d.height=this.graphHeight,this.labelText=new Re(a,{fontName:"Main",fontSize:Math.min(i/5,16)}),this.labelText.alpha=.8,this.sublabelText=new Re("",{fontName:"Main",fontSize:Math.min(i/5,16)}),this.topText=new Re("",{fontName:"Main",fontSize:Math.min(i/7,12)}),this.topText.anchor.x=1,this.topText.alpha=.5,this.topText.x=this.graphWidth,this.bottomText=new Re("",{fontName:"Main",fontSize:Math.min(i/7,12)}),this.bottomText.anchor.x=1,this.bottomText.anchor.y=1,this.bottomText.alpha=.5,this.bottomText.x=this.graphWidth,this.bottomText.y=this.graphHeight,this.sublabelText.y=this.graphHeight,this.sublabelText.anchor.y=1,this.sublabelText.alpha=.5,this.addChild(d,this.lineContainer,this.labelText,this.sublabelText,this.topText,this.bottomText)}addValue(e){if(this.lineContainer.children[0]?.x+this.lineContainer.x<0){const i=this.lineContainer.children[0];this.dataPoints.shift(),this.removeChild(i),this.linePool.push(i)}this.lineContainer.x-=1,this.lineContainer.x<-1e7&&(this.lineContainer.children.forEach(i=>{i.x-=1e7}),this.lineContainer.x+=1e7);const t=this.linePool.shift()??new Le(te.WHITE);t.width=1,t.anchor.x=.5,t.anchor.y=1,t.tint=this.color,t.alpha=.6,t.x=this.graphWidth-this.lineContainer.x,t.y=this.graphHeight,t.value=e,this.dataPoints.push(e),this.targetMax=this.constrainedMax!==null?this.constrainedMax:Math.max(...this.dataPoints),this.targetMin=this.constrainedMin!==null?this.constrainedMin:Math.min(...this.dataPoints),this.lineContainer.addChild(t)}update(){this.dataPoints.length!=0&&(this.maxEase=(this.maxEase-this.targetMax)*.1+this.targetMax,this.minEase=(this.minEase-this.targetMin)*.1+this.targetMin,this.lineContainer.children.forEach(e=>{e.height=Ve((e.value-this.minEase)/this.maxEase,0,1)*this.graphHeight}),this.topText.text=this.formatter?.(this.maxEase)??`${ne(this.maxEase,this.precision)} ${this.unit}`,this.bottomText.text=this.formatter?.(this.minEase)??`${ne(this.minEase,this.precision)} ${this.unit}`,this.sublabelText.text=this.sublabel())}}class Zg extends ga{backing=new Gt;overlay=new Le(te.WHITE);selectionOverlay=new Le(te.WHITE);container=new Ee;lastHeight=0;lastCMod;mouseDown=!1;queued=!1;verticalMargin=40;backingVerticalPadding=10;backingWidth=32;xOffset=20;constructor(e,t=20,i=32){super(e),this.backingWidth=i,this.xOffset=t,this.addChild(this.backing),this.addChild(this.container),this.visible=!1,this.backing.tint=0,this.backing.alpha=.3,this.overlay.anchor.x=.5,this.overlay.anchor.y=0,this.overlay.alpha=.3,this.lastCMod=w.chart.CMod,this.addChild(this.overlay),this.x=this.manager.app.renderer.screen.width/2-this.xOffset,q.on("chartLoaded",()=>{this.queued=!1,this.populate()}),q.on("chartModifiedAfter",()=>{this.queued||this.populate(),this.queued=!0});const r=setInterval(()=>{this.queued&&(this.queued=!1,this.populate())},3e3);this.on("destroyed",()=>clearInterval(r)),this.eventMode="static",this.on("mousedown",n=>{this.mouseDown=!0,this.handleMouse(n)}),this.on("mousemove",n=>{this.mouseDown&&this.handleMouse(n)}),this.on("mouseup",()=>{this.mouseDown=!1}),this.on("mouseleave",()=>{this.mouseDown=!1})}handleMouse(e){if(this.manager.chartManager.getMode()==X.Play||!this.getChart())return;let t=(this.container.toLocal(e.global).y+this.container.height/2)/this.container.height;t=Ve(t,0,1),this.getChart().getNotedata().at(-1)&&(w.chart.CMod?this.manager.chartManager.setTime(wi(-this.getChart().timingData.getOffset(),this.getChart().getLastSecond(),t)):this.manager.chartManager.setBeat(this.getChart().getLastBeat()*t))}update(){this.scale.y=w.chart.reverse?-1:1;const e=this.manager.app.renderer.screen.height-this.verticalMargin;this.backing.height=e+this.backingVerticalPadding,this.backing.position.y=-this.backing.height/2,this.backing.position.x=-this.backing.width/2,this.x=this.manager.app.renderer.screen.width/2-this.xOffset;const t=this.getChart(),i=this.manager.chartManager.chartView;if(!t||!i||!Be.layout){this.visible=!1;return}if(this.visible=!0,!t.getNotedata().at(-1)){this.overlay.height=0;return}const n=w.chart.CMod?i.getSecondFromYPos(-this.manager.app.renderer.screen.height/2):i.getBeatFromYPos(-this.manager.app.renderer.screen.height/2,!0),a=w.chart.CMod?i.getSecondFromYPos(this.manager.app.renderer.screen.height/2):i.getBeatFromYPos(this.manager.app.renderer.screen.height/2,!0),o=this.getYFromRange(t,n,a);this.overlay.y=o.startY,this.overlay.height=o.endY-o.startY,this.overlay.height=Math.max(2,this.overlay.height);const l=this.manager.chartManager.selection.notes;if(l.length<1)this.selectionOverlay.visible=!1;else{this.selectionOverlay.visible=!0;let c,u;w.chart.CMod?(c=Ip(l.map(d=>d.second)),u=Pp(l.map(d=>t.getSecondsFromBeat(os(d))))):(c=Ip(l.map(d=>d.beat)),u=Pp(l.map(d=>os(d))));const h=this.getYFromRange(t,c,u);this.selectionOverlay.y=h.startY,this.selectionOverlay.height=h.endY-h.startY,this.selectionOverlay.height=Math.max(2,this.selectionOverlay.height)}(this.manager.app.renderer.screen.height!=this.lastHeight||this.lastCMod!=w.chart.CMod)&&(this.lastCMod=w.chart.CMod,this.lastHeight=this.manager.app.renderer.screen.height,this.updateDimensions(),this.populate())}getYFromRange(e,t,i){const r=e.getLastBeat(),n=e.getLastSecond();let a=Lt(0,r,t),o=Lt(0,r,i);w.chart.CMod&&(a=Lt(-e.timingData.getOffset(),n,t),o=Lt(-e.timingData.getOffset(),n,i)),a=Ve(a,0,1),o=Ve(o,0,1),a>o&&([a,o]=[o,a]);const l=(a-.5)*this.container.height,c=(o-.5)*this.container.height;return{startY:l,endY:c}}updateDimensions(){if(!this.getChart())return;const t=this.manager.app.renderer.screen.height-this.verticalMargin;this.backing.height=t+this.backingVerticalPadding,this.backing.width=this.backingWidth,this.overlay.width=this.backingWidth,this.selectionOverlay.width=this.backingWidth,this.pivot.x=this.backing.width/2}populate(){}getChart(){return this.manager.chartManager.loadedChart}}class wS extends Zg{npsGraph;graphGradient=null;graphWidth=40;npsText=new Re("",{fontName:"Main",fontSize:12});constructor(e){super(e,60,40),this.graphWidth=40,this.graphGradient=this.makeGradient(),this.npsGraph=new An,this.container.addChild(this.npsGraph),this.npsText.visible=!1,this.npsText.anchor.x=1,this.npsText.anchor.y=.5,this.addChild(this.npsText),q.on("userOptionUpdated",i=>{(i=="chart.npsGraph.color1"||i=="chart.npsGraph.color2")&&(this.graphGradient=this.makeGradient(),this.populate())}),this.on("mouseleave",()=>{this.hideNpsDisplay()}),this.on("mouseenter",()=>{this.showNpsDisplay()}),this.on("mousemove",i=>{this.updateNpsDisplay(i)}),this.populate()}updateNpsDisplay(e){const t=this.getChart();if(!t){this.npsText.visible=!1;return}if(!t.getNotedata().at(-1)){this.npsText.visible=!1;return}const r=t.getNPSGraph();let n=this.npsGraph.toLocal(e.global).y/this.npsGraph.height;n=Ve(n,0,1);let a=wi(0,t.getLastBeat(),n);if(w.chart.CMod){const c=wi(-t.timingData.getOffset(),t.getLastSecond(),n);a=t.timingData.getBeatFromSeconds(c)}const o=Math.floor(t.timingData.getMeasure(a)),l=r[o]??0;this.npsText.text=l.toFixed(1)+" nps",this.npsText.position.y=this.getYFromBeat(a)-this.npsGraph.height/2,this.npsText.position.x=-this.backing.width/2-10,this.npsText.visible=!0}hideNpsDisplay(){this.npsText.visible=!1}showNpsDisplay(){const e=this.getChart();if(!e){this.npsText.visible=!1;return}if(!e.getNotedata().at(-1)){this.npsText.visible=!1;return}this.npsText.visible=!0}update(){if(!w.chart.npsGraph.enabled){this.visible=!1;return}this.visible=!0;const e=this.manager.getChildByName("note-layout");e!==void 0&&e.visible?this.xOffset=e.backingWidth+28:this.xOffset=20,this.npsText.scale.y=w.chart.reverse?-1:1,super.update()}populate(){const e=this.getChart();if(!e)return;const t=this.manager.app.renderer.screen.height-40;if(e.getNotedata().length==0)return;const i=e.getMaxNPS(),r=e.getNPSGraph(),n=e.getLastBeat();this.npsGraph.clear(),this.graphGradient?this.npsGraph.beginTextureFill({texture:this.graphGradient}):this.npsGraph.beginFill(0,1),this.npsGraph.pivot.x=this.backing.width/2,this.npsGraph.pivot.y=t/2;const a=r.length,o=this.getYFromBeat(0);this.npsGraph.moveTo(0,o);for(let h=0;h{this.popup?.contains(t.target)||(this.persistent=!1,this.close())},q.on("snapChanged",this.onSnapChange),this.popup.style.display="none",setTimeout(()=>this.movePosition(e)),this.moveInterval=setInterval(()=>this.movePosition(e),150),this.active=!0)}static movePosition(e){this.popup.style.display="";const t=e.getBounds(),i=t.left+t.width/2,r=200,n=r/2+15,a=window.innerWidth-r/2-15;this.popup.style.left=`${Ve(i,n,a)}px`;const o=document.getElementById("pixi").offsetTop+9,l=(t.top+t.height+o)/2;this.popup.style.top=`${t.top+t.height+o}px`,l+this.popup.clientHeight>window.innerHeight-15&&(this.popup.style.transform="translate(-50%, -100%)",this.popup.style.top=`${t.top-t.height/2}px`)}static build(){const e=document.createElement("div");e.classList.add("popup");const t=document.createElement("div");t.classList.add("popup-zoomer"),t.style.width="200px",t.style.backgroundColor="#333333",e.appendChild(t),this.zoomer=t;const i=document.createElement("div");i.innerText="Snap Options",i.classList.add("popup-title"),t.appendChild(i);const r=document.createElement("div");r.classList.add("popup-flex"),t.appendChild(r);const n=document.createElement("div");n.classList.add("popup-row");const a=document.createElement("div");a.innerText="Snap to nearest ";const o=nt.create(w.chart.snap==0?0:Math.round(4/w.chart.snap),1,0,0,1e3);o.onChange=m=>{if(m===void 0){this.updateValues();return}m==0?w.chart.snap=0:w.chart.snap=4/m,this.updateValues()};const l=document.createElement("div");l.innerText=this.suffixSnap()+" note",n.replaceChildren(a,o.view,l);const c=document.createElement("div");c.classList.add("popup-row");const u=document.createElement("div");u.innerText="Snap every";const h=nt.create(w.chart.snap,.001,3,0);h.onChange=m=>{if(m===void 0){this.updateValues();return}m==0?w.chart.snap=0:w.chart.snap=m,this.updateValues()};const d=document.createElement("div");d.innerText=" beats",c.replaceChildren(u,h.view,d),r.replaceChildren(n,c),this.beatInput=h,this.divInput=o,this.divLabel=l;const p=document.createElement("div");return p.innerText="click to edit",p.style.marginTop="4px",p.style.height="10px",t.appendChild(p),p.classList.add("popup-desc"),this.editText=p,e}static updateValues(){document.activeElement==this.divInput.input||document.activeElement==this.beatInput.input||(this.divInput.setValue(w.chart.snap==0?0:Math.round(4/w.chart.snap)),this.divLabel.innerText=this.suffixSnap()+" note",this.beatInput.setValue(w.chart.snap))}static suffixSnap(){const e=w.chart.snap==0?0:Math.round(4/w.chart.snap);return e%10==1&&e!=11?"st":e%10==2&&e!=12?"nd":e%10==3&&e!=13?"rd":"th"}static close(){if(!this.popup||!this.active||this.persistent)return;window.removeEventListener("click",this.clickOutside,!0),this.popup.classList.add("exiting");const e=this.popup;setTimeout(()=>e.remove(),200),this.active=!1,this.persistent=!1,clearInterval(this.moveInterval),clearInterval(this.updateInterval),q.off("timingModified",this.onSnapChange)}static select(){this.persistent=!0,this.zoomer.classList.add("selected"),this.editText.style.transform="scale(0)",this.editText.style.height="0px",setTimeout(()=>window.addEventListener("click",this.clickOutside,!0),200)}}const xS={fontName:"Main",fontSize:10,fill:["#ffffff"]},$g={4:15157287,8:4033015,12:11152884,16:8577607,24:14167723,32:15376696,48:15699179,64:7071886,96:8553090,192:8553090};class ES extends Ee{renderer;children=[];constructor(e){super(),this.renderer=e;for(let t=0;t<2;t++){const i=new Ee,r=new An,n=new Re("4",xS);i.x=(t-.5)*(this.renderer.chart.gameType.notefieldWidth+48),r.rotation=Math.PI/4,r.lineStyle(1,0,1),r.beginFill(16777215),r.drawRect(-12,-12,24,24),r.endFill(),n.anchor.set(.5),i.addChild(r,n),this.addChild(i),i.eventMode="static",i.on("mouseenter",()=>gh.open(r)),i.on("mousedown",()=>gh.select()),i.on("mouseleave",()=>gh.close())}}update(){this.y=this.renderer.getActualReceptorYPos(),this.visible=this.renderer.chartManager.getMode()!=X.Play;for(let e=0;e<2;e++){const t=this.children[e],i=t.children[0];i.tint=$g[4/w.chart.snap]??7368816;const r=t.children[1];r.text=""+(w.chart.snap==0||4/w.chart.snap%1!=0?"":4/w.chart.snap)}}}class _S extends Zg{barContainer=new Xc(1500,{position:!0,scale:!0,tint:!0},16384,!0);bars;barTexture;constructor(e){super(e),this.addChild(this.backing),this.addChild(this.container),this.visible=!1,this.name="note-layout",this.backing.tint=0,this.backing.alpha=.3,this.barTexture=Rt.create({resolution:this.manager.app.renderer.resolution}),this.bars=new Le(this.barTexture),this.bars.anchor.set(.5),this.container.addChild(this.bars),this.populate()}update(){if(!w.chart.noteLayout.enabled){this.visible=!1;return}this.visible=!0,super.update()}populate(){const e=this.getChart();if(!e){Yi(this.barContainer.children,()=>!0),this.manager.app.renderer.render(this.barContainer,{renderTexture:this.barTexture});return}let t=0;const i=e.gameType.numCols,r=e.getNotedata().at(-1),n=this.manager.app.renderer.screen.height-40;if(this.barTexture.resize(i*6,n),this.backingWidth=i*6+8,this.updateDimensions(),!r){Yi(this.barContainer.children,()=>!0),this.manager.app.renderer.render(this.barContainer,{renderTexture:this.barTexture});return}const a=r.beat+(Pe(r)?r.hold:0),o=e.getSecondsFromBeat(a),l=e.timingData.getOffset();e.getNotedata().forEach(c=>{let u=this.barContainer.children[t];u||(u=new Le(te.WHITE),u.width=4,this.barContainer.addChild(u)),u.anchor.set(.5),u.height=1,u.x=(c.col+.5)*6;let h=Lt(0,a,c.beat);if(w.chart.CMod&&(h=Lt(l,o,c.second)),u.y=h*n,u.tint=$g[c.quant],c.type=="Mine"&&(u.tint=8421504),t++,Pe(c)){let d=this.barContainer.children[t];d||(d=new Le(te.WHITE),d.width=4,d.height=2,this.barContainer.addChild(d)),d.anchor.x=.5,d.anchor.y=0,d.x=(c.col+.5)*6;const p=(w.chart.CMod?e.getSecondsFromBeat(c.beat+c.hold)/o:(c.beat+c.hold)/a)*n+1;d.y=u.y,d.height=p-u.y,c.type=="Hold"&&(d.tint=10526880),c.type=="Roll"&&(d.tint=11379586),t++}}),Yi(this.barContainer.children,(c,u)=>u>=t),this.manager.app.renderer.render(this.barContainer,{renderTexture:this.barTexture})}}const Xe=300,tt=150,$p=[.045,.09,.18,.37,.18,.09,.045];class TS extends ga{max=0;barlines=new Ee;backgroundRect=new Gt;background=new Ee;backgroundLines=new Ee;statText=new Ee;meanText;medianText;modeText;stddevText;errorMS=[];texts=new Ee;showEase=0;toggled=!1;drag=!1;dragStart=0;lastMode=this.manager.chartManager.getMode();constructor(e){super(e),this.visible=!1,this.backgroundRect.tint=0,this.backgroundRect.alpha=.3,this.background.addChild(this.backgroundRect),this.addChild(this.background),this.addChild(this.backgroundLines),this.eventMode="static",this.on("mousedown",()=>{this.manager.chartManager.getMode()!=X.Play&&(this.drag=!0,this.dragStart=Date.now(),kt.stop("play-widget"))}),window.addEventListener("mousemove",m=>{this.drag&&(this.showEase+=m.movementY/-400)}),window.addEventListener("mouseup",()=>{this.drag&&(Date.now()-this.dragStart>400?this.toggled=this.showEase>.5:this.toggled=!this.toggled,kt.animate(this,{0:{showEase:"inherit"},1:{showEase:this.toggled?1:0}},.6,Kt(.11,.71,.33,1.39),()=>{},"play-widget")),this.drag=!1}),this.on("mouseenter",()=>{!this.toggled&&this.manager.chartManager.getMode()!=X.Play&&kt.animate(this,{0:{showEase:"inherit"},1:{showEase:.05}},.6,Kt(.11,.71,.33,1.39),()=>{},"play-widget")}),this.on("mouseleave",()=>{!this.toggled&&this.manager.chartManager.getMode()!=X.Play&&kt.animate(this,{0:{showEase:"inherit"},1:{showEase:0}},.6,Kt(.11,.71,.33,1.39),()=>{},"play-widget")});const t=new Re("Early",{fontName:"Main",fontSize:15});t.x=-Xe/2+5,t.y=-tt-40,t.alpha=.3,this.background.addChild(t);const i=new Re("Late",{fontName:"Main",fontSize:15});i.anchor.x=1,i.x=Xe/2-5,i.y=-tt-40,i.alpha=.3,this.background.addChild(i),this.meanText=new Re("-",{fontName:"Main",fontSize:15}),this.meanText.anchor.x=.5,this.meanText.x=Xe/4*-1.5,this.meanText.y=-tt-70,this.statText.addChild(this.meanText),this.medianText=new Re("-",{fontName:"Main",fontSize:15}),this.medianText.anchor.x=.5,this.medianText.x=Xe/4*-.5,this.medianText.y=-tt-70,this.statText.addChild(this.medianText),this.modeText=new Re("-",{fontName:"Main",fontSize:15}),this.modeText.anchor.x=.5,this.modeText.x=Xe/4*.5,this.modeText.y=-tt-70,this.statText.addChild(this.modeText),this.stddevText=new Re("-",{fontName:"Main",fontSize:15}),this.stddevText.anchor.x=.5,this.stddevText.x=Xe/4*1.5,this.stddevText.y=-tt-70,this.statText.addChild(this.stddevText);const r=new Re("Mean",{fontName:"Main",fontSize:10});r.anchor.x=.5,r.x=Xe/4*-1.5,r.y=-tt-80,this.statText.addChild(r);const n=new Re("Median",{fontName:"Main",fontSize:10});n.anchor.x=.5,n.x=Xe/4*-.5,n.y=-tt-80,this.statText.addChild(n);const a=new Re("Mode",{fontName:"Main",fontSize:10});a.anchor.x=.5,a.x=Xe/4*.5,a.y=-tt-80,this.statText.addChild(a);const o=new Re("Std Dev.",{fontName:"Main",fontSize:10});o.anchor.x=.5,o.x=Xe/4*1.5,o.y=-tt-80,this.statText.addChild(o);const l=new Ee,c=new Gt;c.tint=3355443,c.alpha=.3,c.width=Xe/2-10,c.height=30,c.y=-25,c.x=-Xe/4,c.pivot.x=(Xe/2-10)/2,c.pivot.y=15;const u=new Re("Adjust song offset",{fontName:"Main",fontSize:12});u.anchor.set(.5),u.x=-Xe/4,u.y=-25,l.addChild(c,u),l.eventMode="static",l.addEventListener("mouseenter",()=>{c.alpha=.6}),l.addEventListener("mousedown",m=>{m.stopImmediatePropagation(),this.adjustOffset("song")}),l.addEventListener("mouseleave",()=>{c.alpha=.3}),this.statText.addChild(l);const h=new Ee,d=new Gt;d.tint=3355443,d.alpha=.3,d.width=Xe/2-10,d.height=30,d.y=-25,d.x=Xe/4,d.pivot.x=(Xe/2-10)/2,d.pivot.y=15,d.eventMode="static",h.addEventListener("mouseenter",()=>{d.alpha=.6}),h.addEventListener("mouseleave",()=>{d.alpha=.3});const p=new Re("Adjust global offset",{fontName:"Main",fontSize:12});p.anchor.set(.5),p.x=Xe/4,p.y=-25,h.addChild(d,p),h.eventMode="static",h.addEventListener("mouseenter",()=>{d.alpha=.6}),h.addEventListener("mousedown",m=>{m.stopImmediatePropagation(),this.adjustOffset("global")}),h.addEventListener("mouseleave",()=>{d.alpha=.3}),this.statText.addChild(h),this.addChild(this.background),this.addChild(this.backgroundLines),this.eventMode="static",this.addChild(this.statText),this.addChild(this.barlines),this.addChild(this.texts)}update(){this.visible=!!this.manager.chartManager.gameStats,this.x=-this.manager.chartManager.app.renderer.screen.width/2+20+Xe/2,this.y=this.manager.chartManager.app.renderer.screen.height/2-20,this.backgroundRect.width=Xe+10,this.backgroundRect.height=tt+260,this.backgroundRect.x=-Xe/2-5,this.backgroundRect.y=-tt-260,this.visible=!!this.manager.chartManager.gameStats;for(const e of this.barlines.children)w.general.smoothAnimations?e.height=(e.targetHeight-e.height)*.2+e.height:e.height=e.targetHeight;this.lastMode!=this.manager.chartManager.getMode()&&(this.lastMode=this.manager.chartManager.getMode(),kt.animate(this,{0:{showEase:"inherit"},1:{showEase:this.manager.chartManager.getMode()==X.Play?1:0}},.6,Kt(.11,.71,.33,1.39),()=>{},"play-widget")),w.general.smoothAnimations?this.y+=(1-Math.abs(this.showEase))*400:this.manager.chartManager.getMode()!=X.Play&&(this.y+=400)}newLine(){const e=new Le(te.WHITE);return e.smoothCount=0,e.targetHeight=0,e.anchor.y=1,e.anchor.x=.5,e.height=0,e.visible=!1,e}startPlay(){const e=this.manager.chartManager.gameStats;this.max=0,this.errorMS=[],this.meanText.text="-",this.medianText.text="-",this.modeText.text="-",this.stddevText.text="-",Yi(this.barlines.children,()=>!0),Yi(this.backgroundLines.children,()=>!0),Yi(this.texts.children,()=>!0);const t=Je.getCollection(w.play.timingCollection),i=t.getStandardWindows().length+1,r=Math.round(t.maxWindowMS());for(let m=0;mb.type==f&&!b.fake).length),g.tint=14540253,y.tint=14540253,y.name=f,this.texts.addChild(g),this.texts.addChild(y),g.x=-Xe/2+160,y.x=-Xe/2+290,g.y=80/l*n-tt-220,y.y=80/l*n++-tt-220,g.anchor.y=.5,y.anchor.y=.5,y.anchor.x=1}const c=new Re("Max Combo",{fontName:"Main",fontSize:15}),u=new Re("0",{fontName:"Main",fontSize:15});c.tint=14540253,u.tint=14540253,u.name="Combo",this.texts.addChild(c),this.texts.addChild(u),c.x=-Xe/2+160,u.x=-Xe/2+290,c.y=80/l*n-tt-220,u.y=80/l*n++-tt-220,c.anchor.y=.5,u.anchor.y=.5,u.anchor.x=1;const h=new Re("0.00 / 0.00",{fontName:"Main",fontSize:20});h.tint=14540253,h.x=-Xe/2+225,h.y=-tt-112,h.name="Score",this.texts.addChild(h),h.anchor.set(.5);const d=new Re("Score / Current Score",{fontName:"Main",fontSize:13});d.tint=8947848,d.x=-Xe/2+225,d.y=-tt-135,this.texts.addChild(d),d.anchor.set(.5);const p=new Re("Play Statistics",{fontName:"Main",fontSize:13});p.y=-tt-245,p.anchor.set(.5),this.texts.addChild(p),e.onJudge((m,f)=>{let g="";(Ci(f)||ji(f))&&(g=f.id),mr(f)&&(g=f.noteType),dl(f)&&(g="Mine");const y=this.texts.getChildByName(g);if(mr(f)){const A=y.text.split(" / ")[1];y.text=e.getCount(f)+" / "+A}else pn(f)||(y.text=e.getCount(f)+"");if(this.texts.getChildByName("Combo").text=e.getMaxCombo()+"",this.texts.getChildByName("Score").text=ne(e.getScore()*100,2).toFixed(2)+" / "+ne(e.getCumulativeScore()*100,2).toFixed(2),Ci(f)||!ji(f)||m==null)return;const b=Math.round(m*1e3);for(let A=-3;A<=3;A++)this.barlines.children[b+r+A]&&(this.barlines.children[b+r+A].smoothCount+=$p[A+3],this.barlines.children[b+r+A].visible=!0,this.barlines.children[b+r+A].smoothCount>this.max&&(this.modeText.text=b+"ms",this.max=this.barlines.children[b+r+A].smoothCount));this.errorMS.push(m*1e3),this.meanText.text=mT(this.errorMS).toFixed(2)+"ms",this.medianText.text=ul(this.errorMS).toFixed(2)+"ms",this.stddevText.text=kg(this.errorMS).toFixed(2)+"ms",this.redraw()})}redraw(){for(const e of this.barlines.children)e.targetHeight=e.smoothCount*(tt-20)/this.max}adjustOffset(e){const t=this.manager.chartManager.gameStats;if(!t)return;const i=Math.round(t.getMedian()*1e3)/1e3;if(i==0)return;t.applyOffset(-i),this.barlines.children.forEach(o=>{o.smoothCount=0});const r=Je.getCollection(w.play.timingCollection),n=Math.round(r.maxWindowMS());t.getDataPoints().forEach(o=>{if(Ci(o.judgement)||!ji(o.judgement)||o.error===null)return;const l=Math.round(o.error*1e3);for(let c=-3;c<=3;c++)this.barlines.children[l+n+c]&&(this.barlines.children[l+n+c].smoothCount+=$p[c+3],this.barlines.children[l+n+c].visible=!0,this.barlines.children[l+n+c].smoothCount>this.max&&(this.modeText.text=l+"ms",this.max=this.barlines.children[l+n+c].smoothCount))}),this.redraw();const a=e=="global"?w.play.offset:this.manager.app.chartManager.loadedChart.timingData.getOffset();if(e=="global")w.play.offset=ne(w.play.offset-i,3);else if(e=="song"){const o=this.manager.app.chartManager.loadedChart.timingData.hasChartOffset()?this.manager.app.chartManager.loadedChart.timingData:this.manager.app.chartManager.loadedSM.timingData;o.setOffset(ne(o.getOffset()-i,3))}_e.create(`Adjusted ${e} offset from ${ne(a,3).toFixed(3)} to ${ne(a-i,3).toFixed(3)}`),this.manager.app.chartManager.setBeat(this.manager.app.chartManager.getBeat())}}class SS extends ga{registeredSpinners=[];registeredToggles=[];registeredCheckboxes=[];changeRow;warpRow;fakeRow;view;collapseButton;lastSpeedMod=w.chart.CMod;rateSpinner;enteredMain=!1;constructor(e){super(e),this.visible=!1;const t=document.createElement("div");t.id="playback-options",w.general.showPlaybackOptions||t.classList.add("collapsed"),t.style.height="0px",document.getElementById("menubar")?.insertAdjacentElement("afterend",t),this.view=t;const i=document.createElement("button");i.classList.add("po-collapse"),i.tabIndex=-1;const r=document.createElement("img");r.src=Ce.CHEVRON,r.style.filter="invert()",i.appendChild(r),w.general.showPlaybackOptions&&i.classList.add("toggled"),this.collapseButton=i,i.onclick=()=>{w.general.showPlaybackOptions=!w.general.showPlaybackOptions,t.classList.toggle("collapsed"),i.classList.toggle("toggled",!t.classList.contains("collapsed")),i.blur()},i.style.display="none",Wt(i,{onShow(D){D.setContent((t.classList.contains("collapsed")?"Show ":"Hide ")+"playback options")}});const n=this.createRow("Zoom"),a=this.createSpinner({value:w.chart.zoom*100,step:10,altStep:2,min:10,hardMin:0,onChange:D=>w.chart.zoom=D/100,getValue:()=>w.chart.zoom*100});n.appendChild(a),t.appendChild(n);const o=document.createElement("div"),l=document.createElement("h1");l.innerText="a",o.appendChild(l),Ie.createKeybindTooltip(n)`Adjust playfield size ${"zoomOut"}/${"zoomIn"}`,t.appendChild(this.createSeparator());const c=this.createRow("Playback"),u=this.createSpinner({value:w.audio.rate*100,step:10,altStep:2,min:10,hardMin:0,onChange:D=>w.audio.rate=D/100,getValue:()=>w.audio.rate*100});c.appendChild(u),t.appendChild(c),this.rateSpinner=this.registeredSpinners.at(-1),Ie.createKeybindTooltip(c)`Adjust audio playback rate ${"rateDown"}/${"rateUp"}`;const h=document.createElement("div");h.style.gap="5px",h.style.display="flex",h.style.alignItems="center";const d=this.createCheckbox({getValue:()=>w.audio.assistTick,value:w.audio.assistTick,onSrc:Ce.CLAP,offSrc:Ce.X_CLAP,onChange:D=>w.audio.assistTick=D});h.appendChild(d),Ie.createKeybindTooltip(d)`Toggle assist tick ${"assistTick"}`;const p=this.createCheckbox({getValue:()=>w.audio.metronome,value:w.audio.metronome,onSrc:Ce.METRONOME,offSrc:Ce.X_METRONOME,onChange:D=>w.audio.metronome=D});h.appendChild(p),t.appendChild(h),Ie.createKeybindTooltip(p)`Toggle metronome ${"metronome"}`,t.appendChild(this.createSeparator());const m=this.createRow("Scroll"),f=document.createElement("img");f.src=Ce.DBL_CHEVRON,f.style.height="16px",f.style.width="16px",f.style.padding="2px";const g=document.createElement("img");g.src=Ce.DBL_CHEVRON,g.style.height="16px",g.style.width="16px",g.style.padding="2px",g.style.transform="rotate(180deg)";const y=this.createToggle({values:[f,g],value:w.chart.reverse?1:0,getValue:()=>w.chart.reverse?1:0,onChange:(D,W)=>w.chart.reverse=W!=0});m.appendChild(y),t.appendChild(m),Ie.createKeybindTooltip(m)`Change scroll direction ${"reverse"}`;const b=this.createRow("Speedmod"),A=this.createToggle({values:["X","C"],value:w.chart.CMod?1:0,getValue:()=>w.chart.CMod?1:0,onChange:D=>w.chart.CMod=D!="X"});Ie.createKeybindTooltip(A)`Change speedmod type ${"XMod"}/${"CMod"}`;const v=this.createSpinner({value:w.chart.speed,step:25,altStep:5,min:10,hardMin:10,hardMax:35e3,onChange:D=>w.chart.speed=D,getValue:()=>w.chart.speed});b.appendChild(A),b.appendChild(v),t.appendChild(b),Ie.createKeybindTooltip(v)`Adjust scroll speed ${"increaseScrollSpeed"}/${"decreaseScrollSpeed"}`,t.appendChild(this.createSeparator());const _=this.createRow("Speed Changes"),C=this.createToggle({values:["On","Off"],value:w.chart.doSpeedChanges?0:1,getValue:()=>w.chart.doSpeedChanges?0:1,onChange:D=>w.chart.doSpeedChanges=D=="On"});_.appendChild(C),t.appendChild(_),Ie.createKeybindTooltip(_)`Allow scroll/speed events (XMod only) ${"doSpeedChanges"}`,this.changeRow=_;const B=this.createRow("Warped Notes"),P=this.createCheckbox({getValue:()=>w.chart.hideWarpedArrows,value:w.chart.hideWarpedArrows,onSrc:Ce.X_EYE,offSrc:Ce.EYE,onChange:D=>w.chart.hideWarpedArrows=D});B.appendChild(P),t.appendChild(B),Ie.createKeybindTooltip(B)`Show/hide warped notes (CMod only) ${"hideWarpedArrows"}`,this.warpRow=B;const M=this.createRow("Faked Notes"),U=this.createCheckbox({getValue:()=>w.chart.hideFakedArrows,value:w.chart.hideFakedArrows,onSrc:Ce.X_EYE,offSrc:Ce.EYE,onChange:D=>w.chart.hideFakedArrows=D});M.appendChild(U),t.appendChild(M),Ie.createKeybindTooltip(M)`Show/hide faked notes (CMod only) ${"hideFakedArrows"}`,this.fakeRow=M;const F=document.createElement("img");F.src=Ce.VOLUME,F.style.marginLeft="auto",F.style.marginRight="-16px",F.style.height="22px",F.style.width="22px",F.style.alignSelf="center",t.appendChild(F);const T=this.createRow("Master"),S=this.createSpinner({value:w.audio.masterVolume*100,step:5,altStep:1,min:0,max:200,hardMin:0,hardMax:200,onChange:D=>w.audio.masterVolume=D/100,getValue:()=>w.audio.masterVolume*100});T.appendChild(S),t.appendChild(T);const x=this.createRow("Song"),L=this.createSpinner({value:w.audio.songVolume*100,step:5,altStep:1,min:0,max:200,hardMin:0,hardMax:200,onChange:D=>w.audio.songVolume=D/100,getValue:()=>w.audio.songVolume*100});x.appendChild(L),t.appendChild(x);const Y=this.createRow("FX"),R=this.createSpinner({value:w.audio.soundEffectVolume*100,step:5,altStep:1,min:0,max:200,hardMin:0,hardMax:200,onChange:D=>w.audio.soundEffectVolume=D/100,getValue:()=>w.audio.soundEffectVolume*100});Y.appendChild(R),t.appendChild(Y),this.changeRow.style.setProperty("--w",this.changeRow.offsetWidth+"px"),this.warpRow.style.setProperty("--w",this.warpRow.offsetWidth+"px"),this.fakeRow.style.setProperty("--w",this.fakeRow.offsetWidth+"px"),this.changeRow.classList.toggle("hidden",w.chart.CMod),this.warpRow.classList.toggle("hidden",!w.chart.CMod),this.fakeRow.classList.toggle("hidden",!w.chart.CMod),Be.playbackOptions||(t.style.display="none",i.style.display="none")}createRow(e){const t=document.createElement("div");t.classList.add("playback-options-row");const i=document.createElement("div");return i.classList.add("playback-options-label"),i.innerText=e,t.appendChild(i),t}createSeparator(){const e=document.createElement("div");return e.classList.add("po-separator"),e}createSpinner(e){const t=document.createElement("div");t.classList.add("po-spinner");const i=c=>{let u=w.general.spinnerStep;return c.getModifierState("Shift")?u=e.altStep??(e.step!==void 0?e.step/10:w.general.spinnerStep):u=e.step??w.general.spinnerStep,u},r=document.createElement("button");r.classList.add("po-spinner-btn"),r.innerText="-",r.onclick=c=>{l.currentValue-=i(c),e.min!==void 0&&l.currentValue{l.currentValue+=i(c),e.max!==void 0&&l.currentValue>e.max&&(l.currentValue=e.max),o(!0)};const a=document.createElement("input");a.classList.add("po-spinner-input");const o=(c=!0)=>{e.hardMin!==void 0&&l.currentValuee.hardMax&&(l.currentValue=e.hardMax),c&&e.onChange(l.currentValue),a.value=l.currentValue.toFixed()};a.onwheel=c=>{l.currentValue+=i(c)*c.deltaY/100*(w.chart.scroll.invertZoomScroll?-1:1)*w.chart.scroll.scrollSensitivity,e.max!==void 0&&l.currentValue>e.max&&(l.currentValue=e.max),e.min!==void 0&&l.currentValue{c.key=="Enter"&&a.blur(),c.key=="Escape"&&(l.currentValue=e.getValue(),o(!1))},a.onfocus=()=>{a.select()},a.onblur=()=>{const c=this.parseString(a);if(c==null){l.currentValue=e.getValue(),o(!1);return}l.currentValue=c,o()},a.ondragstart=c=>c.preventDefault(),this.registeredSpinners.push(l),t}createToggle(e){const t=document.createElement("div");if(t.classList.add("po-toggle"),e.values.length==0)return t;const i=document.createElement("div");i.classList.add("po-toggle-highlight");const r=e.values.map((l,c)=>{if(typeof l=="string"){const u=document.createElement("div");return u.classList.add("po-toggle-item"),u.innerText=l,t.appendChild(u),u.onclick=()=>{o.currentValue!=c&&(o.currentValue=c,a())},u}else return l.onclick=()=>{o.currentValue!=c&&(o.currentValue=c,a())},t.appendChild(l),l});t.style.visibility="hidden",document.body.appendChild(t);const n=l=>{i.style.left=r[l].getBoundingClientRect().left-r[0].getBoundingClientRect().left+"px",i.style.width=r[l].getBoundingClientRect().width+"px",i.style.height=r[l].getBoundingClientRect().height+"px"},a=(l=!0)=>{l&&e.onChange(e.values[o.currentValue],o.currentValue),[...t.querySelectorAll(".active")].forEach(c=>c.classList.remove("active")),n(o.currentValue),r[o.currentValue].classList.add("active")},o={currentValue:e.value??0,options:e,update:a};return this.registeredToggles.push(o),a(!1),t.remove(),t.style.visibility="",t.appendChild(i),t}createCheckbox(e){const t=document.createElement("img");t.classList.add("po-checkbox");const i=(n=!0)=>{n&&e.onChange(r.currentValue),t.src=r.currentValue?r.options.onSrc:r.options.offSrc},r={currentValue:e.value??!0,options:e,update:i};return t.onclick=()=>{r.currentValue=!r.currentValue,i()},this.registeredCheckboxes.push(r),i(!1),t}update(){!this.enteredMain&&this.manager.chartManager.loadedChart!==void 0&&(this.enteredMain=!0,this.view.style.height="",this.collapseButton.style.display="",document.getElementById("menubar")?.appendChild(this.collapseButton));for(const t of this.registeredSpinners)t.currentValue!=t.options.getValue()&&document.activeElement!=t.input&&(t.currentValue=t.options.getValue(),t.update(!1));for(const t of this.registeredToggles)t.currentValue!=t.options.getValue()&&(t.currentValue=t.options.getValue(),t.update(!1));for(const t of this.registeredCheckboxes)t.currentValue!=t.options.getValue()&&(t.currentValue=t.options.getValue(),t.update(!1));const e=this.manager.chartManager.getMode()==X.Play||this.manager.chartManager.getMode()==X.Record;this.rateSpinner.btnMinus.disabled=e,this.rateSpinner.btnPlus.disabled=e,this.rateSpinner.input.disabled=e,w.chart.CMod!=this.lastSpeedMod&&(this.lastSpeedMod=w.chart.CMod,this.changeRow.classList.toggle("hidden",w.chart.CMod),this.warpRow.classList.toggle("hidden",!w.chart.CMod),this.fakeRow.classList.toggle("hidden",!w.chart.CMod))}parseString(e){try{const t=ms.evaluate(e.value);return isFinite(t)?t:0}catch{return null}}}class oa extends Ee{pool=[];options;constructor(e){super(),this.options=e}createChild(){if(this.pool.length==0&&this.options.maxPoolSize!==void 0&&this.children.length>=this.options.maxPoolSize)return;const e=this.pool.pop()??this.options.create();return this.addChild(e),e._disabledTime=Date.now(),e}destroyChild(e){this.children.includes(e)&&(e.removeFromParent(),e.removeAllListeners(),e.eventMode="auto",e._disabledTime=Date.now(),this.pool.push(e))}destroyAll(){this.children.forEach(e=>e._disabledTime=Date.now()),this.pool.push(...this.children),this.children.forEach(e=>{e.removeAllListeners(),e.eventMode="auto"}),this.removeChildren()}_render(e){super._render(e);const t=Date.now();for(;t-this.pool[0]?._disabledTime>(this.options.destroyTimer??5e3);)this.pool.shift().destroy()}}const Os={BPMS:9182254,STOPS:4934913,DELAYS:217453,WARPS:9243998,FAKES:4868682,COMBOS:939078,SPEEDS:2968693,LABELS:7747359,SCROLLS:3557006,TIMESIGNATURES:5392684,TICKCOUNTS:1594906,BGCHANGES:8460415,FGCHANGES:8857115,ATTACKS:1856083};class CS extends Ee{renderer;areaPool=new oa({create:()=>{const e=new Le(te.WHITE);return Object.assign(e,{alpha:.2,width:this.renderer.chart.gameType.notefieldWidth+128}),e.anchor.set(.5,0),e}});timingAreaMap=new Map;timingEvents=[];timingDirty=!0;constructor(e){super(),this.renderer=e,this.addChild(this.areaPool);const t=()=>this.timingDirty=!0;q.on("timingModified",t),this.on("destroyed",()=>q.off("timingModified",t))}update(e,t){this.timingDirty&&(this.timingAreaMap.clear(),this.areaPool.destroyAll(),this.timingDirty=!1,this.timingEvents=this.renderer.chart.timingData.getTimingData("STOPS","WARPS","DELAYS","FAKES")),this.visible=this.renderer.shouldDisplayBarlines();for(const i of this.timingEvents){if(i.beat>t)break;if(this.shouldDrawEvent(i,e,t)&&!this.timingAreaMap.has(i)){const r=this.areaPool.createChild();if(!r)break;r.tint=Os[i.type],this.timingAreaMap.set(i,r)}}for(const[i,r]of this.timingAreaMap.entries()){if(!this.shouldDrawEvent(i,e,t)){this.timingAreaMap.delete(i),this.areaPool.destroyChild(r);continue}let n=w.chart.CMod?this.renderer.getYPosFromSecond(i.second):this.renderer.getYPosFromBeat(i.beat),a=n;switch(i.type){case"STOPS":case"DELAYS":{w.chart.CMod&&i.value>0?a=this.renderer.getYPosFromSecond(i.second+i.value):i.value<0&&(a=this.renderer.getYPosFromBeat(this.renderer.chart.getBeatFromSeconds(i.second+1e-4)));break}case"FAKES":{a=this.renderer.getYPosFromBeat(i.beat+i.value);break}case"WARPS":{w.chart.CMod||(a=this.renderer.getYPosFromBeat(i.beat+i.value));break}}a0)||e.type=="WARPS"&&w.chart.CMod?!1:e.beat<=i}}function ey(s,e,t){return(s<<16)+(e<<8)+t}function ty(s,e){let t=s>>16,i=s>>8&255,r=s&255;return t=Ve(t*e,0,255),i=Ve(i*e,0,255),r=Ve(r*e,0,255),ey(t,i,r)}function Sc(s,e,t){const[i,r,n]=s.match(/\w\w/g).map(d=>parseInt(d,16)),[a,o,l]=e.match(/\w\w/g).map(d=>parseInt(d,16)),c=Math.round(i+(a-i)*t).toString(16).padStart(2,"0"),u=Math.round(r+(o-r)*t).toString(16).padStart(2,"0"),h=Math.round(n+(l-n)*t).toString(16).padStart(2,"0");return"#"+c+u+h}class yh{static active=!1;static popup;static clickOutside;static moveInterval;static exitTimeout;static draggedElement;static dragOffsetX=0;static dragOffsetY=0;static grid;static leftovers;static boundaryCache=[];static open(){this.active||(this.popup=this.build(),document.getElementById("popups")?.appendChild(this.popup),this.clickOutside=e=>{!this.popup?.contains(e.target)&&!this.draggedElement?.contains(e.target)&&!document.getElementById("toggle-tracks")?.contains(e.target)&&this.close()},setTimeout(()=>window.addEventListener("click",this.clickOutside,!0)),this.popup.style.transitionDuration="0s",setTimeout(()=>this.movePosition()),clearTimeout(this.exitTimeout),this.moveInterval=setInterval(()=>this.movePosition(),150),this.active=!0)}static build(){const e=document.createElement("div");e.classList.add("popup"),e.id="timing-track-order";const t=document.createElement("div");t.classList.add("popup-zoomer"),e.appendChild(t);const i=document.createElement("div");i.classList.add("container"),t.appendChild(i);const r=document.createElement("div");r.classList.add("track-grid-options");const n=document.createElement("button");n.classList.add("delete"),n.innerText="Reset",n.onclick=()=>{w.chart.timingEventOrder=structuredClone(Go.chart.timingEventOrder),this.clearBoundaries(),this.grid?.replaceChildren(),this.leftovers?.replaceChildren();const l=[...ls];for(const u of w.chart.timingEventOrder.left){const h=this.makeDraggableTrack(u);h.classList.add("left"),this.grid?.appendChild(h),l.splice(l.indexOf(u),1)}const c=document.createElement("div");c.classList.add("draggable-track"),c.innerText="PLAYFIELD",c.style.backgroundColor="#2D2D2D",c.style.padding="20px 10px",c.style.writingMode="horizontal-tb",c.addEventListener("mousedown",u=>this.startDragging(u,c)),c.dataset.type="PLAYFIELD",this.grid?.appendChild(c);for(const u of w.chart.timingEventOrder.right){const h=this.makeDraggableTrack(u);h.classList.add("right"),this.grid?.appendChild(h),l.splice(l.indexOf(u),1)}for(const u of l)this.leftovers?.appendChild(this.makeLeftoverTrack(u))},this.grid=document.createElement("div"),this.grid.classList.add("track-grid"),i.appendChild(this.grid),i.appendChild(r);const a=[...ls];for(const l of w.chart.timingEventOrder.left){const c=this.makeDraggableTrack(l);c.classList.add("left"),this.grid.appendChild(c),a.splice(a.indexOf(l),1)}const o=document.createElement("div");o.classList.add("draggable-track"),o.innerText="PLAYFIELD",o.style.backgroundColor="#2D2D2D",o.style.padding="20px 10px",o.style.writingMode="horizontal-tb",o.addEventListener("mousedown",l=>this.startDragging(l,o)),o.dataset.type="PLAYFIELD",this.grid.appendChild(o);for(const l of w.chart.timingEventOrder.right){const c=this.makeDraggableTrack(l);c.classList.add("right"),this.grid.appendChild(c),a.splice(a.indexOf(l),1)}this.leftovers=document.createElement("div"),this.leftovers.classList.add("track-selector"),r.appendChild(this.leftovers),r.appendChild(n);for(const l of a)this.leftovers.appendChild(this.makeLeftoverTrack(l));return e}static makeDraggableTrack(e){const t=document.createElement("div");t.classList.add("draggable-track");const i=document.createElement("div");i.classList.add("draggable-track-text"),i.innerText=e,t.style.backgroundColor=Sc(Os[e].toString(16).padStart(6,"0"),"#333333",.7),t.appendChild(i);let r=!0;const n=document.createElement("img");return n.src=Ce.TRASH,n.style.width="16px",n.addEventListener("click",()=>{if(!r)return;r=!1,this.deleteTrack(e),t.classList.add("exiting"),setTimeout(()=>t.remove(),400);const a=this.makeLeftoverTrack(e);a.classList.add("entering"),setTimeout(()=>a.classList.remove("entering"),400),this.leftovers?.appendChild(a),this.clearBoundaries()}),t.appendChild(n),t.addEventListener("mousedown",a=>{r&&a.target!=n&&this.startDragging(a,t)}),t.dataset.type=e,t}static makeLeftoverTrack(e){const t=document.createElement("div");t.classList.add("leftover-track");const i=document.createElement("img");i.src=Ce.PLUS,t.append(i);const r=document.createElement("div");r.classList.add("leftover-track-text"),r.innerText=e,t.style.backgroundColor=Sc(Os[e].toString(16).padStart(6,"0"),"#333333",.7),t.appendChild(r);let n=0,a=0,o=!1,l=!1;return t.addEventListener("mousedown",()=>{o=!0}),t.addEventListener("mousemove",c=>{if(!(!o||l)&&(n+=c.movementX,a+=c.movementY,n*n+a*a>15)){l=!0;const u=this.makeDraggableTrack(e);this.grid?.appendChild(u),this.clearBoundaries();const h=t.getBoundingClientRect(),d=this.getClosestSlot(h.left),p=w.chart.timingEventOrder.left.concat(["PLAYFIELD"],w.chart.timingEventOrder.right);p.splice(d,0,e),this.saveOptions(p),p.forEach(m=>{const f=this.grid?.querySelector(`div[data-type=${m}]`);this.grid?.appendChild(f),m!="PLAYFIELD"&&(f?.classList.remove("left","right"),w.chart.timingEventOrder.left.includes(m)&&f?.classList.add("left"),w.chart.timingEventOrder.right.includes(m)&&f?.classList.add("right"))}),this.startDragging(c,u,c.clientX,c.clientY),w.general.smoothAnimations?(t.style.width=t.clientWidth+"px",t.style.transition="0.4s cubic-bezier(0, 0.91, 0.34, 1.05)",setTimeout(()=>{t.style.width="0px",t.style.opacity="0",t.style.padding="0",t.style.fontSize="0"},10),setTimeout(()=>t.remove(),400)):t.remove()}}),t.addEventListener("mouseup",()=>{if(!o||l)return;l=!0,w.chart.timingEventOrder.right.push(e),w.general.smoothAnimations?(t.style.width=t.clientWidth+"px",t.style.transition="0.4s cubic-bezier(0, 0.91, 0.34, 1.05)",setTimeout(()=>{t.style.width="0px",t.style.opacity="0",t.style.padding="0",t.style.fontSize="0"},10),setTimeout(()=>t.remove(),400)):t.remove();const c=this.makeDraggableTrack(e);c.classList.add("entering"),c.classList.add("right"),setTimeout(()=>c.classList.remove("entering"),400),this.grid?.appendChild(c),this.clearBoundaries()}),t}static startDragging(e,t,i,r){if(!this.popup)return;this.draggedElement=t.cloneNode(!0),this.draggedElement.style.position="fixed";const n=t.getBoundingClientRect(),a=this.popup.getBoundingClientRect();!i||!r?(this.dragOffsetX=e.clientX-n.left,this.dragOffsetY=e.clientY-n.top,this.draggedElement.style.left=n.left-a.left+"px",this.draggedElement.style.top=n.top-a.top+"px"):(this.dragOffsetX=n.width/2,this.dragOffsetY=n.height/4*3,this.draggedElement.style.left=i-n.width/2-a.left+"px",this.draggedElement.style.top=r-n.height/4*3-a.top+"px",this.draggedElement.classList.add("entering")),this.draggedElement.style.boxShadow="6px 6px 6px #222",this.draggedElement.style.transition="none",t.style.opacity="0.03",this.popup.appendChild(this.draggedElement);const o=w.chart.timingEventOrder.left.concat(["PLAYFIELD"],w.chart.timingEventOrder.right),l=t.dataset.type;let c=o.indexOf(l);const u=o.indexOf(l),h=p=>{this.draggedElement.style.left=p.clientX-this.dragOffsetX-a.left+"px",this.draggedElement.style.top=p.clientY-this.dragOffsetY-a.top+"px";let m=this.getClosestSlot(p.clientX-this.dragOffsetX);Math.abs(p.clientY-this.dragOffsetY-a.top-(n.top-a.top))>140&&(m=u),c!=m&&(o.splice(c,1),o.splice(m,0,l),this.saveOptions(o),o.forEach(f=>{const g=this.grid?.querySelector(`div[data-type=${f}]`);this.grid?.appendChild(g),f!="PLAYFIELD"&&(g?.classList.remove("left","right"),w.chart.timingEventOrder.left.includes(f)&&g?.classList.add("left"),w.chart.timingEventOrder.right.includes(f)&&g?.classList.add("right"))}),l!="PLAYFIELD"&&(this.draggedElement?.classList.remove("left","right"),w.chart.timingEventOrder.left.includes(l)&&this.draggedElement?.classList.add("left"),w.chart.timingEventOrder.right.includes(l)&&this.draggedElement?.classList.add("right")),c=m)};window.addEventListener("mousemove",h);const d=()=>{this.draggedElement?.remove(),this.draggedElement=void 0,window.removeEventListener("mousemove",h),t.style.opacity="",this.clearBoundaries(),window.removeEventListener("mouseup",d)};window.addEventListener("mouseup",d)}static saveOptions(e){const t=e.indexOf("PLAYFIELD");t!=-1&&(w.chart.timingEventOrder.left=e.slice(0,t),w.chart.timingEventOrder.right=e.slice(t+1))}static deleteTrack(e){const t=w.chart.timingEventOrder.left.indexOf(e);t!=-1&&w.chart.timingEventOrder.left.splice(t,1);const i=w.chart.timingEventOrder.right.indexOf(e);i!=-1&&w.chart.timingEventOrder.right.splice(i,1)}static movePosition(){if(!this.popup)return;const e=document.getElementById("toggle-tracks");if(!e)return;this.popup.style.display="";const t=e.getBoundingClientRect(),i=t.left+t.width/2,r=this.popup.clientWidth,n=r/2+15,a=window.innerWidth-r/2-15;this.popup.style.left=`${Ve(i,n,a)}px`;const o=t.top+t.height/2;this.popup.style.top=`${t.top+t.height}px`,o+this.popup.clientHeight>window.innerHeight-15&&(this.popup.style.transform="translate(-50%, -100%)",this.popup.style.top=`${t.top-t.height/2}px`),setTimeout(()=>this.popup.style.transitionDuration="",10)}static getClosestSlot(e){this.boundaryCache.length==0&&this.getBoundaries();let t=-1,i=999999,r=999999;for(let n=0;nr)break;r=a}return t}static getBoundaries(){if(this.grid){for(const e of this.grid.children)this.boundaryCache.push([e,e.getBoundingClientRect()]);this.boundaryCache.sort((e,t)=>e[1].left-t[1].left)}}static clearBoundaries(){this.boundaryCache=[]}static close(){!this.popup||!this.active||(window.removeEventListener("click",this.clickOutside,!0),this.popup.classList.add("exiting"),this.exitTimeout=setTimeout(()=>this.popup.remove(),200),this.active=!1,clearInterval(this.moveInterval),this.clearBoundaries())}}class MS extends ga{view;playbackBar;skipStart;skipEnd;play;playIcon;record;playtest;timeCounter;beatCounter;min;sec;millis;beat;beatDropdown;editBar;editSteps;editTiming;stepsContainer;timingContainer;editChoiceContainer;addTimingEvent;toggleTimingTracks;detectSync;offsetCounter;offset;noteArrows=[];noteArrowMask;lastTime=null;lastBeat=null;lastOffset=null;lastMode=X.Edit;lastTimingMode=Oe.Off;lastHover=0;lastPlaying=!1;hovering=!1;trackingMovement=!0;idleFrames=0;lastBounds;constructor(e){super(e);const t=document.createElement("div");t.id="status-widget",document.getElementById("view-wrapper")?.appendChild(t),Be.viewMode&&t.classList.add("collapsed"),this.playbackBar=document.createElement("div"),this.playbackBar.classList.add("playback-bar"),this.editBar=document.createElement("div"),this.editBar.classList.add("edit-bar"),this.skipStart=document.createElement("button"),this.skipStart.tabIndex=-1;const i=document.createElement("img");i.src=Ce.SKIP_START,i.style.height="36px",this.skipStart.appendChild(i),this.skipStart.onclick=()=>{this.manager.chartManager.setBeat(0),this.skipStart.blur()},Ie.createKeybindTooltip(this.skipStart)`Skip to start ${"jumpSongStart"}`,this.skipEnd=document.createElement("button"),this.skipEnd.tabIndex=-1;const r=document.createElement("img");r.style.height="36px",r.src=Ce.SKIP_END,this.skipEnd.appendChild(r),this.skipEnd.onclick=()=>{this.manager.chartManager.setBeat(this.manager.chartManager.loadedChart.getBeatFromSeconds(this.manager.chartManager.chartAudio.getSongLength())),this.skipEnd.blur()},Ie.createKeybindTooltip(this.skipEnd)`Skip to end ${"jumpSongEnd"}`,this.play=document.createElement("button"),this.play.tabIndex=-1;const n=document.createElement("img");n.src=Ce.PLAY,this.play.appendChild(n),this.playIcon=n,this.play.onclick=()=>{(this.manager.chartManager.getMode()==X.Record||this.manager.chartManager.getMode()==X.Play)&&this.manager.chartManager.setMode(X.Edit),this.manager.chartManager.playPause(),this.play.blur()},Ie.createKeybindTooltip(this.play)`Play/Pause ${"playback"}`,this.record=document.createElement("button"),this.record.tabIndex=-1;const a=document.createElement("img");a.style.height="36px",a.src=Ce.RECORD,this.record.appendChild(a),this.record.onclick=()=>{this.manager.chartManager.setMode(X.Record),this.record.blur()},Ie.createKeybindTooltip(this.record)`Record ${"recordMode"}`,(Be.viewMode||!Be.recordMode)&&(this.record.style.display="none"),this.playtest=document.createElement("button"),this.playtest.tabIndex=-1;const o=document.createElement("img");o.style.height="30px",o.src=Ce.PLAYTEST,this.playtest.appendChild(o),this.playtest.onclick=()=>{this.manager.chartManager.setMode(X.Play),this.playtest.blur()},Ie.createKeybindTooltip(this.playtest)`Playtest ${"playMode"}`,Be.playMode||(this.playtest.style.display="none");const l=document.createElement("div");l.classList.add("playback-separator"),this.timeCounter=document.createElement("div"),this.timeCounter.classList.add("playback-counter");const c=document.createElement("div");c.style.display="flex",c.classList.add("playback-counter-main");const u=document.createElement("div");u.classList.add("inlineEdit"),u.innerText="00",u.spellcheck=!1,u.contentEditable="true",u.style.maxWidth="27px",u.onkeydown=F=>{F.key=="Enter"&&u.blur(),F.key=="Escape"&&(u.innerText=Math.floor(Math.abs(this.manager.chartManager.getTime())/60).toString().padStart(2,"0"),u.blur())},u.onfocus=()=>setTimeout(()=>this.selectText(u),25),u.onblur=()=>this.updateTime(),u.ondragstart=F=>F.preventDefault();const h=document.createElement("div");h.classList.add("inlineEdit"),h.innerText="00",h.spellcheck=!1,h.contentEditable="true",h.style.maxWidth="18px",h.onkeydown=F=>{F.key=="Enter"&&h.blur(),F.key=="Escape"&&(h.innerText=Math.floor(Math.abs(this.manager.chartManager.getTime())%60).toString().padStart(2,"0"),h.blur())},h.onfocus=()=>setTimeout(()=>this.selectText(h),25),h.onblur=()=>this.updateTime(),h.ondragstart=F=>F.preventDefault();const d=document.createElement("div");d.classList.add("inlineEdit"),d.innerText="000",d.spellcheck=!1,d.contentEditable="true",d.style.maxWidth="27px",d.onkeydown=F=>{F.key=="Enter"&&d.blur(),F.key=="Escape"&&(d.innerText=(ne(Math.abs(this.manager.chartManager.getTime())%1,3)*1e3).toString().padStart(3,"0"),d.blur())},d.onfocus=()=>setTimeout(()=>this.selectText(d),25),d.onblur=()=>this.updateTime(),d.ondragstart=F=>F.preventDefault(),this.min=u,this.sec=h,this.millis=d;const p=document.createElement("div");p.classList.add("playback-counter-label"),p.innerText="Time",c.appendChild(u),c.appendChild(document.createTextNode(":")),c.appendChild(h),c.appendChild(document.createTextNode(".")),c.appendChild(d),this.timeCounter.appendChild(c),this.timeCounter.appendChild(p);const m=document.createElement("div");m.classList.add("playback-separator"),this.beatCounter=document.createElement("div"),this.beatCounter.classList.add("playback-counter");const f=document.createElement("div");f.classList.add("playback-counter-main","inlineEdit"),f.innerText="0.000",f.spellcheck=!1,f.contentEditable="true",f.onkeydown=F=>{if(F.key=="Enter"&&f.blur(),F.key=="Escape"){if(this.beatDropdown.value=="Measure"){const T=this.manager.chartManager.loadedChart?.timingData?.getMeasure(this.manager.chartManager.getBeat())??this.manager.chartManager.getBeat()/4;f.innerText=ne(T,3).toFixed(3)}else f.innerText=ne(this.manager.chartManager.getBeat(),3).toFixed(3);f.blur()}},f.onfocus=()=>{setTimeout(()=>this.selectText(f),25)},f.onblur=()=>this.updateBeat(),f.ondragstart=F=>F.preventDefault(),this.beat=f,this.beatDropdown=di.create(["Beat","Measure"],"Beat"),this.beatDropdown.view.querySelector(".dropdown-selected").classList.add("playback-counter-label"),this.beatCounter.appendChild(f),this.beatCounter.appendChild(this.beatDropdown.view),this.beatDropdown.onChange(()=>{if(this.beatDropdown.value=="Measure"){const F=this.manager.chartManager.loadedChart?.timingData?.getMeasure(this.manager.chartManager.getBeat())??this.manager.chartManager.getBeat()/4;f.innerText=ne(F,3).toFixed(3)}else f.innerText=ne(this.manager.chartManager.getBeat(),3).toFixed(3)}),this.playbackBar.appendChild(this.skipStart),this.playbackBar.appendChild(this.skipEnd),this.playbackBar.appendChild(this.play),this.playbackBar.appendChild(this.record),this.playbackBar.appendChild(this.playtest),this.playbackBar.appendChild(l),this.playbackBar.appendChild(this.timeCounter),this.playbackBar.appendChild(m),this.playbackBar.appendChild(this.beatCounter),this.editSteps=document.createElement("button"),this.editSteps.tabIndex=-1,this.editSteps.classList.add("edit-fancy-button");const g=document.createElement("img");g.src=Ce.FEET,this.editSteps.appendChild(g),this.editSteps.appendChild(document.createTextNode("Edit Steps")),this.editSteps.onclick=()=>{this.manager.chartManager.editTimingMode=Oe.Off,this.editSteps.blur()},this.editSteps.style.background="rgba(255,255,255,0.15)",this.editTiming=document.createElement("button"),this.editTiming.tabIndex=-1,this.editTiming.classList.add("edit-fancy-button");const y=document.createElement("img");y.src=Ce.METRONOME,this.editTiming.appendChild(y),this.editTiming.appendChild(document.createTextNode("Edit Timing")),this.editTiming.onclick=()=>{this.manager.chartManager.editTimingMode=Oe.Edit,this.editTiming.blur()};const b=document.createElement("div");b.classList.add("playback-separator");const A=document.createElement("div");A.classList.add("edit-bar-left"),A.appendChild(this.editSteps),A.appendChild(this.editTiming),A.appendChild(b),this.editBar.appendChild(A),this.editChoiceContainer=document.createElement("div"),this.editChoiceContainer.classList.add("edit-choice-container"),this.stepsContainer=document.createElement("div"),this.stepsContainer.classList.add("edit-steps-container"),this.timingContainer=document.createElement("div"),this.timingContainer.classList.add("edit-timing-container"),this.editChoiceContainer.appendChild(this.stepsContainer),this.editChoiceContainer.appendChild(this.timingContainer),this.addTimingEvent=document.createElement("button"),this.addTimingEvent.tabIndex=-1;const v=document.createElement("img");v.style.height="32px",v.src=Ce.ADD_EVENT,this.addTimingEvent.appendChild(v),this.addTimingEvent.onclick=()=>{this.manager.chartManager.editTimingMode==Oe.Add?this.manager.chartManager.editTimingMode=Oe.Edit:this.manager.chartManager.editTimingMode=Oe.Add,this.addTimingEvent.blur()},this.timingContainer.appendChild(this.addTimingEvent),Wt(this.addTimingEvent,{content:"Add timing events"}),this.toggleTimingTracks=document.createElement("button"),this.toggleTimingTracks.tabIndex=-1;const _=document.createElement("img");_.style.height="32px",_.src=Ce.EYE,this.toggleTimingTracks.appendChild(_),this.toggleTimingTracks.onclick=()=>{yh.active?yh.close():yh.open(),this.toggleTimingTracks.blur()},this.toggleTimingTracks.id="toggle-tracks",this.timingContainer.appendChild(this.toggleTimingTracks),Wt(this.toggleTimingTracks,{content:"Toggle timing track visibility"}),this.detectSync=document.createElement("button"),this.detectSync.tabIndex=-1;const C=document.createElement("img");C.style.height="32px",C.src=Ce.DETECT_SYNC,this.detectSync.appendChild(C),this.detectSync.onclick=()=>{this.manager.app.windowManager.openWindow(new Qg(this.manager.app)),this.detectSync.blur()},this.detectSync.id="detect-sync",this.timingContainer.appendChild(this.detectSync),Ie.createKeybindTooltip(this.detectSync)`Detect audio sync ${"detectSync"}`;const B=document.createElement("div");B.classList.add("playback-separator"),this.timingContainer.appendChild(B),this.offsetCounter=document.createElement("div"),this.offsetCounter.classList.add("playback-counter");const P=document.createElement("div");P.classList.add("playback-counter-label"),P.innerText="Offset";const M=document.createElement("div");M.classList.add("playback-counter-main","inlineEdit"),M.innerText="0.000",M.spellcheck=!1,M.contentEditable="true",M.onkeydown=F=>{F.key=="Enter"&&M.blur(),F.key=="Escape"&&(M.innerText=ne(this.manager.chartManager.loadedChart?.timingData.getOffset()??0,3).toFixed(3),M.blur())},M.tabIndex=-1,M.onfocus=()=>{setTimeout(()=>this.selectText(M),25)},M.onblur=()=>this.updateOffset(),M.ondragstart=F=>F.preventDefault(),this.offset=M,this.offsetCounter.appendChild(M),this.offsetCounter.appendChild(P),this.timingContainer.appendChild(this.offsetCounter),this.editBar.appendChild(this.editChoiceContainer);const U=document.createElement("div");U.classList.add("note-placeholder-right"),this.stepsContainer.appendChild(U),q.on("resize",()=>{this.trackingMovement=!0,this.idleFrames=5}),q.on("noteskinLoaded",()=>{this.stepsContainer.replaceChildren(),this.noteArrows.forEach(T=>{this.removeChild(T.sprite),this.removeChild(T.bg),this.removeChild(T.highlight)}),this.noteArrows=[];const F=document.createElement("div");if(F.classList.add("note-placeholder-right"),this.stepsContainer.appendChild(F),!!this.manager.chartManager.loadedChart){for(const T of this.manager.chartManager.loadedChart.gameType.editNoteTypes){if(id.includes(T))continue;const S=this.manager.chartManager.chartView.getNotefield().createNote({type:T,beat:0,col:0,quant:4,second:0,warped:!1,fake:!1});S.scale.set(.5);const x=new Le(te.WHITE);x.tint=0,x.alpha=.5,x.width=48,x.height=48,x.anchor.set(.5);const L=new Gt("noBorder");L.alpha=0,L.width=48,L.height=48,L.pivot.x=24,L.pivot.y=24;const Y=document.createElement("button");Y.tabIndex=-1,Y.style.height="48px",Y.style.width="48px",Y.classList.add("note-placeholder"),Y.onclick=()=>{this.manager.chartManager.setEditingNoteType(T),Y.blur()},Ie.createKeybindTooltip(Y)`${"\\"+T} ${"noteType"+T}`;const R={element:Y,sprite:S,type:T,bg:x,highlight:L,hovered:!1};Y.onmouseover=()=>{R.hovered=!0},Y.onmouseleave=()=>{R.hovered=!1},this.addChild(x),this.addChild(S),this.addChild(L);const D=Y.getBoundingClientRect();S.position.y=D.top-this.manager.app.view.clientHeight/2-this.manager.app.view.getBoundingClientRect().top+24,S.position.x=D.left-this.manager.app.view.clientWidth/2+24,x.position=S.position,this.noteArrows.push(R)}this.stepsContainer.replaceChildren(...this.noteArrows.map(T=>T.element),F),this.trackingMovement=!0,this.idleFrames=5}}),this.noteArrowMask=new Le(te.WHITE),this.noteArrowMask.height=48,this.noteArrowMask.width=2500,this.noteArrowMask.anchor.y=1,this.noteArrowMask.anchor.x=.5,this.addChild(this.noteArrowMask),this.mask=this.noteArrowMask,t.onmouseenter=()=>{this.lastHover=Date.now(),this.hovering=!0,this.view.style.opacity="",this.view.style.transition=""},t.onmouseleave=()=>this.hovering=!1,t.appendChild(this.playbackBar),t.appendChild(this.editBar),this.view=t,t.style.display="none"}update(){this.view.style.display=this.manager.chartManager.loadedSM&&Be.status?"":"none";const e=this.manager.chartManager.getTime();this.lastTime!=e&&(document.activeElement!=this.min&&(this.min.innerText=(e<0?"-":"")+Math.floor(Math.abs(e)/60).toString().padStart(2,"0")),document.activeElement!=this.sec&&(this.sec.innerText=Math.floor(Math.abs(e)%60).toString().padStart(2,"0")),document.activeElement!=this.millis&&(this.millis.innerText=(ne(Math.abs(e)%1,3)*1e3).toString().padStart(3,"0")),this.lastTime=e);const t=this.manager.chartManager.getBeat();if(this.lastBeat!=t){if(document.activeElement!=this.beat)if(this.beatDropdown.value=="Measure"){const l=this.manager.chartManager.loadedChart?.timingData?.getMeasure(t)??t/4;this.beat.innerText=ne(l,3).toFixed(3)}else this.beat.innerText=ne(t,3).toFixed(3);this.lastBeat=t}const i=this.manager.chartManager.loadedChart?.timingData.getOffset()??0;this.lastOffset!=i&&document.activeElement!=this.offset&&(this.offset.innerText=ne(i,3).toFixed(3));const r=this.manager.chartManager.getMode(),n=this.manager.chartManager.editTimingMode;if(this.lastMode!=r){switch(r){case X.Edit:this.skipStart.disabled=!1,this.skipEnd.disabled=!1,this.record.disabled=!1,this.playtest.disabled=!1,this.min.contentEditable="true",this.sec.contentEditable="true",this.millis.contentEditable="true",this.beat.contentEditable="true",this.offset.contentEditable="true",this.record.style.background="",this.playtest.style.background="",this.view.style.opacity="",this.view.style.transition="",this.view.classList.remove("collapsed"),this.beatDropdown.disabled=!1;break;case X.Record:this.lastHover=Date.now(),this.skipStart.disabled=!0,this.skipEnd.disabled=!0,this.record.disabled=!1,this.record.style.background="rgba(170, 0, 0, 0.35)",this.playtest.disabled=!0,this.min.contentEditable="false",this.sec.contentEditable="false",this.millis.contentEditable="false",this.beat.contentEditable="false",this.offset.contentEditable="false",n!=Oe.Off&&(this.visible=!1),this.view.classList.add("collapsed"),this.beatDropdown.closeDropdown(),this.beatDropdown.disabled=!0;break;case X.Play:this.lastHover=Date.now(),this.skipStart.disabled=!0,this.skipEnd.disabled=!0,this.record.disabled=!0,this.playtest.disabled=!1,this.playtest.style.background="rgba(12, 97, 31, 0.35)",this.min.contentEditable="false",this.sec.contentEditable="false",this.millis.contentEditable="false",this.beat.contentEditable="false",this.offset.contentEditable="false",n!=Oe.Off&&(this.visible=!1),this.view.classList.add("collapsed"),this.beatDropdown.closeDropdown(),this.beatDropdown.disabled=!0;break;case X.View:this.lastHover=Date.now(),this.skipStart.disabled=!1,this.skipEnd.disabled=!1,this.record.disabled=!0,this.playtest.disabled=!1,this.min.contentEditable="true",this.sec.contentEditable="true",this.millis.contentEditable="true",this.beat.contentEditable="true",this.offset.contentEditable="true",n!=Oe.Off&&(this.visible=!1),this.view.classList.add("collapsed"),this.beatDropdown.closeDropdown(),this.beatDropdown.disabled=!0}this.trackingMovement=!0,this.idleFrames=5,this.lastMode=r}if(this.lastTimingMode!=n){switch(n){case Oe.Off:this.visible=!0,this.stepsContainer.style.transform="",this.timingContainer.style.transform="",this.editSteps.style.background="rgba(255,255,255,0.15)",this.editTiming.style.background="",this.offset.tabIndex=-1;break;case Oe.Add:this.addTimingEvent.style.background="rgba(255,255,255,0.15)";break;case Oe.Edit:this.addTimingEvent.style.background="",this.offset.tabIndex=0}(this.lastTimingMode==Oe.Off&&n!=Oe.Off||this.lastTimingMode!=Oe.Off&&n==Oe.Off)&&this.manager.chartManager.clearSelections(),this.trackingMovement=!0,this.idleFrames=5,this.lastTimingMode=n,this.stepsContainer.style.transform=n==Oe.Off?"":"translateY(-48px)",this.timingContainer.style.transform=n==Oe.Off?"":"translateY(-48px)",this.editSteps.style.background=n==Oe.Off?"rgba(255,255,255,0.15)":"",this.editTiming.style.background=n==Oe.Off?"":"rgba(255,255,255,0.15)"}const a=this.manager.chartManager.chartAudio.isPlaying();if(this.lastPlaying!=a&&(this.playIcon.src=a?Ce.STOP:Ce.PLAY,this.lastPlaying=a),this.playIcon.style.height=this.manager.chartManager.chartAudio.isPlaying()?"28px":"",(r==X.Play||r==X.Record)&&this.view.style.opacity==""&&!this.hovering&&Date.now()-this.lastHover>3e3&&(this.view.style.opacity="0.2",this.view.style.transition="2s cubic-bezier(.11,.72,.51,1.14)"),this.trackingMovement){const l=this.noteArrows[0];if(l){const u=l.element.getBoundingClientRect();this.noteArrows.forEach((h,d)=>{h.sprite.position.y=u.top-this.manager.app.view.clientHeight/2-this.manager.app.view.getBoundingClientRect().top+24,h.sprite.position.x=u.left-this.manager.app.view.clientWidth/2+24+d*48,h.bg.position=h.sprite.position,h.highlight.position=h.sprite.position}),this.lastBounds&&Math.abs(this.lastBounds.top-u.top)+Math.abs(this.lastBounds.left-u.left)==0&&(this.idleFrames--,this.idleFrames<0&&(this.trackingMovement=!1,this.lastBounds=void 0,n!=Oe.Off&&(this.visible=!1))),this.lastBounds=u}const c=this.view.getBoundingClientRect();this.noteArrowMask.y=c.bottom-this.manager.app.view.clientHeight/2-this.manager.app.view.getBoundingClientRect().top}const o=this.manager.chartManager.getEditingNoteType();this.noteArrows.forEach(l=>{if(w.general.smoothAnimations){const c=o==l.type?.15:l.hovered?.05:0;l.highlight.alpha=(c-l.highlight.alpha)*.3+l.highlight.alpha}else l.highlight.alpha=o==l.type?.15:l.hovered?.05:0})}selectText(e){const t=window.getSelection(),i=document.createRange();!t||!i||(i.selectNodeContents(e),t.removeAllRanges(),t.addRange(i))}updateTime(){this.millis.innerText=this.millis.innerText.padEnd(3,"0").slice(0,3);const e=this.parseString(this.min),t=this.parseString(this.sec),i=this.parseString(this.millis);if(e===null||t===null||i===null){this.lastTime=null;return}let r=e*60+t+i/1e3;r>9999999&&(r=9999999),r<0&&(r=0),this.manager.chartManager.setTime(r),this.lastTime=null}updateBeat(){let e=this.parseString(this.beat);if(e===null){this.lastBeat=null;return}this.beatDropdown.value=="Measure"&&(e=this.manager.chartManager.loadedChart?.timingData?.getBeatFromMeasure(e)??e*4),e>9999999&&(e=9999999),e<0&&(e=0),this.manager.chartManager.setBeat(e),this.lastBeat=null}updateOffset(){let e=this.parseString(this.offset);if(e===null){this.lastOffset=null;return}e>9999999&&(e=9999999),e<-9999999&&(e=-9999999),this.lastOffset=null,!(!this.manager.chartManager.loadedChart||!this.manager.chartManager.loadedSM)&&((this.manager.chartManager.loadedChart.timingData.hasChartOffset()?this.manager.chartManager.loadedChart.timingData:this.manager.chartManager.loadedSM.timingData).setOffset(e),this.manager.chartManager.setBeat(this.manager.chartManager.getBeat()))}parseString(e){try{const t=ms.evaluate(e.innerText);return isFinite(t)?t:0}catch{return null}}}class kS extends Ee{app;chartManager;children=[];constructor(e){super(),this.app=e.app,this.chartManager=e,this.addChild(new _S(this)),this.addChild(new TS(this)),this.addChild(new MS(this)),this.addChild(new aa(this)),this.addChild(new wS(this)),this.addChild(new SS(this)),this.zIndex=2}update(){this.x=this.app.renderer.screen.width/2,this.y=this.app.renderer.screen.height/2,this.children.forEach(e=>e.update())}startPlay(){this.children.forEach(e=>e.startPlay())}endPlay(){this.children.forEach(e=>e.endPlay())}}const Cc=Array(85).fill(void 0).map((s,e)=>33+e),iy=[];for(const s of Cc)for(const e of Cc)iy.push([s,e]);const Mc="<~".split("").map(s=>s.charCodeAt(0)),kc="~>".split("").map(s=>s.charCodeAt(0));function BS(s,e,t,i=!1,r=!1,n=!1){let a;typeof s=="string"?a=s.split("").map(h=>h.charCodeAt(0)):a=[...new Uint8Array(s)];const o=4-a.length%4;for(let h=0;h""}=e;this.graphWidth=t,this.graphHeight=i,this.color=r,this.unit=n,this.constrainedMax=l,this.constrainedMin=o,this.precision=c,this.formatter=u,this.sublabel=h,this.lineContainer=new Xc(t,{position:!0},16384,!0);const d=new Ht;d.tint=0,d.alpha=.3,d.width=this.graphWidth,d.height=this.graphHeight,this.labelText=new Re(a,{fontName:"Main",fontSize:Math.min(i/5,16)}),this.labelText.alpha=.8,this.sublabelText=new Re("",{fontName:"Main",fontSize:Math.min(i/5,16)}),this.topText=new Re("",{fontName:"Main",fontSize:Math.min(i/7,12)}),this.topText.anchor.x=1,this.topText.alpha=.5,this.topText.x=this.graphWidth,this.bottomText=new Re("",{fontName:"Main",fontSize:Math.min(i/7,12)}),this.bottomText.anchor.x=1,this.bottomText.anchor.y=1,this.bottomText.alpha=.5,this.bottomText.x=this.graphWidth,this.bottomText.y=this.graphHeight,this.sublabelText.y=this.graphHeight,this.sublabelText.anchor.y=1,this.sublabelText.alpha=.5,this.addChild(d,this.lineContainer,this.labelText,this.sublabelText,this.topText,this.bottomText)}addValue(e){if(this.lineContainer.children[0]?.x+this.lineContainer.x<0){const i=this.lineContainer.children[0];this.dataPoints.shift(),this.removeChild(i),this.linePool.push(i)}this.lineContainer.x-=1,this.lineContainer.x<-1e7&&(this.lineContainer.children.forEach(i=>{i.x-=1e7}),this.lineContainer.x+=1e7);const t=this.linePool.shift()??new Le(te.WHITE);t.width=1,t.anchor.x=.5,t.anchor.y=1,t.tint=this.color,t.alpha=.6,t.x=this.graphWidth-this.lineContainer.x,t.y=this.graphHeight,t.value=e,this.dataPoints.push(e),this.targetMax=this.constrainedMax!==null?this.constrainedMax:Math.max(...this.dataPoints),this.targetMin=this.constrainedMin!==null?this.constrainedMin:Math.min(...this.dataPoints),this.lineContainer.addChild(t)}update(){this.dataPoints.length!=0&&(this.maxEase=(this.maxEase-this.targetMax)*.1+this.targetMax,this.minEase=(this.minEase-this.targetMin)*.1+this.targetMin,this.lineContainer.children.forEach(e=>{e.height=Ve((e.value-this.minEase)/this.maxEase,0,1)*this.graphHeight}),this.topText.text=this.formatter?.(this.maxEase)??`${ne(this.maxEase,this.precision)} ${this.unit}`,this.bottomText.text=this.formatter?.(this.minEase)??`${ne(this.minEase,this.precision)} ${this.unit}`,this.sublabelText.text=this.sublabel())}}class Zg extends ga{backing=new Ht;overlay=new Le(te.WHITE);selectionOverlay=new Le(te.WHITE);container=new Ee;lastHeight=0;lastCMod;mouseDown=!1;queued=!1;verticalMargin=40;backingVerticalPadding=10;backingWidth=32;xOffset=20;constructor(e,t=20,i=32){super(e),this.backingWidth=i,this.xOffset=t,this.addChild(this.backing),this.addChild(this.container),this.visible=!1,this.backing.tint=0,this.backing.alpha=.3,this.overlay.anchor.x=.5,this.overlay.anchor.y=0,this.overlay.alpha=.3,this.lastCMod=w.chart.CMod,this.addChild(this.overlay),this.x=this.manager.app.renderer.screen.width/2-this.xOffset,q.on("chartLoaded",()=>{this.queued=!1,this.populate()}),q.on("chartModifiedAfter",()=>{this.queued||this.populate(),this.queued=!0});const r=setInterval(()=>{this.queued&&(this.queued=!1,this.populate())},3e3);this.on("destroyed",()=>clearInterval(r)),this.eventMode="static",this.on("mousedown",n=>{this.mouseDown=!0,this.handleMouse(n)}),this.on("mousemove",n=>{this.mouseDown&&this.handleMouse(n)}),this.on("mouseup",()=>{this.mouseDown=!1}),this.on("mouseleave",()=>{this.mouseDown=!1})}handleMouse(e){if(this.manager.chartManager.getMode()==X.Play||!this.getChart())return;let t=(this.container.toLocal(e.global).y+this.container.height/2)/this.container.height;t=Ve(t,0,1),this.getChart().getNotedata().at(-1)&&(w.chart.CMod?this.manager.chartManager.setTime(wi(-this.getChart().timingData.getOffset(),this.getChart().getLastSecond(),t)):this.manager.chartManager.setBeat(this.getChart().getLastBeat()*t))}update(){this.scale.y=w.chart.reverse?-1:1;const e=this.manager.app.renderer.screen.height-this.verticalMargin;this.backing.height=e+this.backingVerticalPadding,this.backing.position.y=-this.backing.height/2,this.backing.position.x=-this.backing.width/2,this.x=this.manager.app.renderer.screen.width/2-this.xOffset;const t=this.getChart(),i=this.manager.chartManager.chartView;if(!t||!i||!Be.layout){this.visible=!1;return}if(this.visible=!0,!t.getNotedata().at(-1)){this.overlay.height=0;return}const n=w.chart.CMod?i.getSecondFromYPos(-this.manager.app.renderer.screen.height/2):i.getBeatFromYPos(-this.manager.app.renderer.screen.height/2,!0),a=w.chart.CMod?i.getSecondFromYPos(this.manager.app.renderer.screen.height/2):i.getBeatFromYPos(this.manager.app.renderer.screen.height/2,!0),o=this.getYFromRange(t,n,a);this.overlay.y=o.startY,this.overlay.height=o.endY-o.startY,this.overlay.height=Math.max(2,this.overlay.height);const l=this.manager.chartManager.selection.notes;if(l.length<1)this.selectionOverlay.visible=!1;else{this.selectionOverlay.visible=!0;let c,u;w.chart.CMod?(c=Ip(l.map(d=>d.second)),u=Pp(l.map(d=>t.getSecondsFromBeat(os(d))))):(c=Ip(l.map(d=>d.beat)),u=Pp(l.map(d=>os(d))));const h=this.getYFromRange(t,c,u);this.selectionOverlay.y=h.startY,this.selectionOverlay.height=h.endY-h.startY,this.selectionOverlay.height=Math.max(2,this.selectionOverlay.height)}(this.manager.app.renderer.screen.height!=this.lastHeight||this.lastCMod!=w.chart.CMod)&&(this.lastCMod=w.chart.CMod,this.lastHeight=this.manager.app.renderer.screen.height,this.updateDimensions(),this.populate())}getYFromRange(e,t,i){const r=e.getLastBeat(),n=e.getLastSecond();let a=Dt(0,r,t),o=Dt(0,r,i);w.chart.CMod&&(a=Dt(-e.timingData.getOffset(),n,t),o=Dt(-e.timingData.getOffset(),n,i)),a=Ve(a,0,1),o=Ve(o,0,1),a>o&&([a,o]=[o,a]);const l=(a-.5)*this.container.height,c=(o-.5)*this.container.height;return{startY:l,endY:c}}updateDimensions(){if(!this.getChart())return;const t=this.manager.app.renderer.screen.height-this.verticalMargin;this.backing.height=t+this.backingVerticalPadding,this.backing.width=this.backingWidth,this.overlay.width=this.backingWidth,this.selectionOverlay.width=this.backingWidth,this.pivot.x=this.backing.width/2}populate(){}getChart(){return this.manager.chartManager.loadedChart}}class wS extends Zg{npsGraph;graphGradient=null;graphWidth=40;npsText=new Re("",{fontName:"Main",fontSize:12});constructor(e){super(e,60,40),this.graphWidth=40,this.graphGradient=this.makeGradient(),this.npsGraph=new An,this.container.addChild(this.npsGraph),this.npsText.visible=!1,this.npsText.anchor.x=1,this.npsText.anchor.y=.5,this.addChild(this.npsText),q.on("userOptionUpdated",i=>{(i=="chart.npsGraph.color1"||i=="chart.npsGraph.color2")&&(this.graphGradient=this.makeGradient(),this.populate())}),this.on("mouseleave",()=>{this.hideNpsDisplay()}),this.on("mouseenter",()=>{this.showNpsDisplay()}),this.on("mousemove",i=>{this.updateNpsDisplay(i)}),this.populate()}updateNpsDisplay(e){const t=this.getChart();if(!t){this.npsText.visible=!1;return}if(!t.getNotedata().at(-1)){this.npsText.visible=!1;return}const r=t.getNPSGraph();let n=this.npsGraph.toLocal(e.global).y/this.npsGraph.height;n=Ve(n,0,1);let a=wi(0,t.getLastBeat(),n);if(w.chart.CMod){const c=wi(-t.timingData.getOffset(),t.getLastSecond(),n);a=t.timingData.getBeatFromSeconds(c)}const o=Math.floor(t.timingData.getMeasure(a)),l=r[o]??0;this.npsText.text=l.toFixed(1)+" nps",this.npsText.position.y=this.getYFromBeat(a)-this.npsGraph.height/2,this.npsText.position.x=-this.backing.width/2-10,this.npsText.visible=!0}hideNpsDisplay(){this.npsText.visible=!1}showNpsDisplay(){const e=this.getChart();if(!e){this.npsText.visible=!1;return}if(!e.getNotedata().at(-1)){this.npsText.visible=!1;return}this.npsText.visible=!0}update(){if(!w.chart.npsGraph.enabled){this.visible=!1;return}this.visible=!0;const e=this.manager.getChildByName("note-layout");e!==void 0&&e.visible?this.xOffset=e.backingWidth+28:this.xOffset=20,this.npsText.scale.y=w.chart.reverse?-1:1,super.update()}populate(){const e=this.getChart();if(!e)return;const t=this.manager.app.renderer.screen.height-40;if(e.getNotedata().length==0)return;const i=e.getMaxNPS(),r=e.getNPSGraph(),n=e.getLastBeat();this.npsGraph.clear(),this.graphGradient?this.npsGraph.beginTextureFill({texture:this.graphGradient}):this.npsGraph.beginFill(0,1),this.npsGraph.pivot.x=this.backing.width/2,this.npsGraph.pivot.y=t/2;const a=r.length,o=this.getYFromBeat(0);this.npsGraph.moveTo(0,o);for(let h=0;h{this.popup?.contains(t.target)||(this.persistent=!1,this.close())},q.on("snapChanged",this.onSnapChange),this.popup.style.display="none",setTimeout(()=>this.movePosition(e)),this.moveInterval=setInterval(()=>this.movePosition(e),150),this.active=!0)}static movePosition(e){this.popup.style.display="";const t=e.getBounds(),i=t.left+t.width/2,r=200,n=r/2+15,a=window.innerWidth-r/2-15;this.popup.style.left=`${Ve(i,n,a)}px`;const o=document.getElementById("pixi").offsetTop+9,l=(t.top+t.height+o)/2;this.popup.style.top=`${t.top+t.height+o}px`,l+this.popup.clientHeight>window.innerHeight-15&&(this.popup.style.transform="translate(-50%, -100%)",this.popup.style.top=`${t.top-t.height/2}px`)}static build(){const e=document.createElement("div");e.classList.add("popup");const t=document.createElement("div");t.classList.add("popup-zoomer"),t.style.width="200px",t.style.backgroundColor="#333333",e.appendChild(t),this.zoomer=t;const i=document.createElement("div");i.innerText="Snap Options",i.classList.add("popup-title"),t.appendChild(i);const r=document.createElement("div");r.classList.add("popup-flex"),t.appendChild(r);const n=document.createElement("div");n.classList.add("popup-row");const a=document.createElement("div");a.innerText="Snap to nearest ";const o=nt.create(w.chart.snap==0?0:Math.round(4/w.chart.snap),1,0,0,1e3);o.onChange=m=>{if(m===void 0){this.updateValues();return}m==0?w.chart.snap=0:w.chart.snap=4/m,this.updateValues()};const l=document.createElement("div");l.innerText=this.suffixSnap()+" note",n.replaceChildren(a,o.view,l);const c=document.createElement("div");c.classList.add("popup-row");const u=document.createElement("div");u.innerText="Snap every";const h=nt.create(w.chart.snap,.001,3,0);h.onChange=m=>{if(m===void 0){this.updateValues();return}m==0?w.chart.snap=0:w.chart.snap=m,this.updateValues()};const d=document.createElement("div");d.innerText=" beats",c.replaceChildren(u,h.view,d),r.replaceChildren(n,c),this.beatInput=h,this.divInput=o,this.divLabel=l;const p=document.createElement("div");return p.innerText="click to edit",p.style.marginTop="4px",p.style.height="10px",t.appendChild(p),p.classList.add("popup-desc"),this.editText=p,e}static updateValues(){document.activeElement==this.divInput.input||document.activeElement==this.beatInput.input||(this.divInput.setValue(w.chart.snap==0?0:Math.round(4/w.chart.snap)),this.divLabel.innerText=this.suffixSnap()+" note",this.beatInput.setValue(w.chart.snap))}static suffixSnap(){const e=w.chart.snap==0?0:Math.round(4/w.chart.snap);return e%10==1&&e!=11?"st":e%10==2&&e!=12?"nd":e%10==3&&e!=13?"rd":"th"}static close(){if(!this.popup||!this.active||this.persistent)return;window.removeEventListener("click",this.clickOutside,!0),this.popup.classList.add("exiting");const e=this.popup;setTimeout(()=>e.remove(),200),this.active=!1,this.persistent=!1,clearInterval(this.moveInterval),clearInterval(this.updateInterval),q.off("timingModified",this.onSnapChange)}static select(){this.persistent=!0,this.zoomer.classList.add("selected"),this.editText.style.transform="scale(0)",this.editText.style.height="0px",setTimeout(()=>window.addEventListener("click",this.clickOutside,!0),200)}}const xS={fontName:"Main",fontSize:10,fill:["#ffffff"]},$g={4:15157287,8:4033015,12:11152884,16:8577607,24:14167723,32:15376696,48:15699179,64:7071886,96:8553090,192:8553090};class ES extends Ee{renderer;children=[];constructor(e){super(),this.renderer=e;for(let t=0;t<2;t++){const i=new Ee,r=new An,n=new Re("4",xS);i.x=(t-.5)*(this.renderer.chart.gameType.notefieldWidth+48),r.rotation=Math.PI/4,r.lineStyle(1,0,1),r.beginFill(16777215),r.drawRect(-12,-12,24,24),r.endFill(),n.anchor.set(.5),i.addChild(r,n),this.addChild(i),i.eventMode="static",i.on("mouseenter",()=>gh.open(r)),i.on("mousedown",()=>gh.select()),i.on("mouseleave",()=>gh.close())}}update(){this.y=this.renderer.getActualReceptorYPos(),this.visible=this.renderer.chartManager.getMode()!=X.Play;for(let e=0;e<2;e++){const t=this.children[e],i=t.children[0];i.tint=$g[4/w.chart.snap]??7368816;const r=t.children[1];r.text=""+(w.chart.snap==0||4/w.chart.snap%1!=0?"":4/w.chart.snap)}}}class _S extends Zg{barContainer=new Xc(1500,{position:!0,scale:!0,tint:!0},16384,!0);bars;barTexture;constructor(e){super(e),this.addChild(this.backing),this.addChild(this.container),this.visible=!1,this.name="note-layout",this.backing.tint=0,this.backing.alpha=.3,this.barTexture=Lt.create({resolution:this.manager.app.renderer.resolution}),this.bars=new Le(this.barTexture),this.bars.anchor.set(.5),this.container.addChild(this.bars),this.populate()}update(){if(!w.chart.noteLayout.enabled){this.visible=!1;return}this.visible=!0,super.update()}populate(){const e=this.getChart();if(!e){Yi(this.barContainer.children,()=>!0),this.manager.app.renderer.render(this.barContainer,{renderTexture:this.barTexture});return}let t=0;const i=e.gameType.numCols,r=e.getNotedata().at(-1),n=this.manager.app.renderer.screen.height-40;if(this.barTexture.resize(i*6,n),this.backingWidth=i*6+8,this.updateDimensions(),!r){Yi(this.barContainer.children,()=>!0),this.manager.app.renderer.render(this.barContainer,{renderTexture:this.barTexture});return}const a=r.beat+(Pe(r)?r.hold:0),o=e.getSecondsFromBeat(a),l=e.timingData.getOffset();e.getNotedata().forEach(c=>{let u=this.barContainer.children[t];u||(u=new Le(te.WHITE),u.width=4,this.barContainer.addChild(u)),u.anchor.set(.5),u.height=1,u.x=(c.col+.5)*6;let h=Dt(0,a,c.beat);if(w.chart.CMod&&(h=Dt(l,o,c.second)),u.y=h*n,u.tint=$g[c.quant],c.type=="Mine"&&(u.tint=8421504),t++,Pe(c)){let d=this.barContainer.children[t];d||(d=new Le(te.WHITE),d.width=4,d.height=2,this.barContainer.addChild(d)),d.anchor.x=.5,d.anchor.y=0,d.x=(c.col+.5)*6;const p=(w.chart.CMod?e.getSecondsFromBeat(c.beat+c.hold)/o:(c.beat+c.hold)/a)*n+1;d.y=u.y,d.height=p-u.y,c.type=="Hold"&&(d.tint=10526880),c.type=="Roll"&&(d.tint=11379586),t++}}),Yi(this.barContainer.children,(c,u)=>u>=t),this.manager.app.renderer.render(this.barContainer,{renderTexture:this.barTexture})}}const Xe=300,tt=150,$p=[.045,.09,.18,.37,.18,.09,.045];class TS extends ga{max=0;barlines=new Ee;backgroundRect=new Ht;background=new Ee;backgroundLines=new Ee;statText=new Ee;meanText;medianText;modeText;stddevText;errorMS=[];texts=new Ee;showEase=0;toggled=!1;drag=!1;dragStart=0;lastMode=this.manager.chartManager.getMode();constructor(e){super(e),this.visible=!1,this.backgroundRect.tint=0,this.backgroundRect.alpha=.3,this.background.addChild(this.backgroundRect),this.addChild(this.background),this.addChild(this.backgroundLines),this.eventMode="static",this.on("mousedown",()=>{this.manager.chartManager.getMode()!=X.Play&&(this.drag=!0,this.dragStart=Date.now(),kt.stop("play-widget"))}),window.addEventListener("mousemove",m=>{this.drag&&(this.showEase+=m.movementY/-400)}),window.addEventListener("mouseup",()=>{this.drag&&(Date.now()-this.dragStart>400?this.toggled=this.showEase>.5:this.toggled=!this.toggled,kt.animate(this,{0:{showEase:"inherit"},1:{showEase:this.toggled?1:0}},.6,Kt(.11,.71,.33,1.39),()=>{},"play-widget")),this.drag=!1}),this.on("mouseenter",()=>{!this.toggled&&this.manager.chartManager.getMode()!=X.Play&&kt.animate(this,{0:{showEase:"inherit"},1:{showEase:.05}},.6,Kt(.11,.71,.33,1.39),()=>{},"play-widget")}),this.on("mouseleave",()=>{!this.toggled&&this.manager.chartManager.getMode()!=X.Play&&kt.animate(this,{0:{showEase:"inherit"},1:{showEase:0}},.6,Kt(.11,.71,.33,1.39),()=>{},"play-widget")});const t=new Re("Early",{fontName:"Main",fontSize:15});t.x=-Xe/2+5,t.y=-tt-40,t.alpha=.3,this.background.addChild(t);const i=new Re("Late",{fontName:"Main",fontSize:15});i.anchor.x=1,i.x=Xe/2-5,i.y=-tt-40,i.alpha=.3,this.background.addChild(i),this.meanText=new Re("-",{fontName:"Main",fontSize:15}),this.meanText.anchor.x=.5,this.meanText.x=Xe/4*-1.5,this.meanText.y=-tt-70,this.statText.addChild(this.meanText),this.medianText=new Re("-",{fontName:"Main",fontSize:15}),this.medianText.anchor.x=.5,this.medianText.x=Xe/4*-.5,this.medianText.y=-tt-70,this.statText.addChild(this.medianText),this.modeText=new Re("-",{fontName:"Main",fontSize:15}),this.modeText.anchor.x=.5,this.modeText.x=Xe/4*.5,this.modeText.y=-tt-70,this.statText.addChild(this.modeText),this.stddevText=new Re("-",{fontName:"Main",fontSize:15}),this.stddevText.anchor.x=.5,this.stddevText.x=Xe/4*1.5,this.stddevText.y=-tt-70,this.statText.addChild(this.stddevText);const r=new Re("Mean",{fontName:"Main",fontSize:10});r.anchor.x=.5,r.x=Xe/4*-1.5,r.y=-tt-80,this.statText.addChild(r);const n=new Re("Median",{fontName:"Main",fontSize:10});n.anchor.x=.5,n.x=Xe/4*-.5,n.y=-tt-80,this.statText.addChild(n);const a=new Re("Mode",{fontName:"Main",fontSize:10});a.anchor.x=.5,a.x=Xe/4*.5,a.y=-tt-80,this.statText.addChild(a);const o=new Re("Std Dev.",{fontName:"Main",fontSize:10});o.anchor.x=.5,o.x=Xe/4*1.5,o.y=-tt-80,this.statText.addChild(o);const l=new Ee,c=new Ht;c.tint=3355443,c.alpha=.3,c.width=Xe/2-10,c.height=30,c.y=-25,c.x=-Xe/4,c.pivot.x=(Xe/2-10)/2,c.pivot.y=15;const u=new Re("Adjust song offset",{fontName:"Main",fontSize:12});u.anchor.set(.5),u.x=-Xe/4,u.y=-25,l.addChild(c,u),l.eventMode="static",l.addEventListener("mouseenter",()=>{c.alpha=.6}),l.addEventListener("mousedown",m=>{m.stopImmediatePropagation(),this.adjustOffset("song")}),l.addEventListener("mouseleave",()=>{c.alpha=.3}),this.statText.addChild(l);const h=new Ee,d=new Ht;d.tint=3355443,d.alpha=.3,d.width=Xe/2-10,d.height=30,d.y=-25,d.x=Xe/4,d.pivot.x=(Xe/2-10)/2,d.pivot.y=15,d.eventMode="static",h.addEventListener("mouseenter",()=>{d.alpha=.6}),h.addEventListener("mouseleave",()=>{d.alpha=.3});const p=new Re("Adjust global offset",{fontName:"Main",fontSize:12});p.anchor.set(.5),p.x=Xe/4,p.y=-25,h.addChild(d,p),h.eventMode="static",h.addEventListener("mouseenter",()=>{d.alpha=.6}),h.addEventListener("mousedown",m=>{m.stopImmediatePropagation(),this.adjustOffset("global")}),h.addEventListener("mouseleave",()=>{d.alpha=.3}),this.statText.addChild(h),this.addChild(this.background),this.addChild(this.backgroundLines),this.eventMode="static",this.addChild(this.statText),this.addChild(this.barlines),this.addChild(this.texts)}update(){this.visible=!!this.manager.chartManager.gameStats,this.x=-this.manager.chartManager.app.renderer.screen.width/2+20+Xe/2,this.y=this.manager.chartManager.app.renderer.screen.height/2-20,this.backgroundRect.width=Xe+10,this.backgroundRect.height=tt+260,this.backgroundRect.x=-Xe/2-5,this.backgroundRect.y=-tt-260,this.visible=!!this.manager.chartManager.gameStats;for(const e of this.barlines.children)w.general.smoothAnimations?e.height=(e.targetHeight-e.height)*.2+e.height:e.height=e.targetHeight;this.lastMode!=this.manager.chartManager.getMode()&&(this.lastMode=this.manager.chartManager.getMode(),kt.animate(this,{0:{showEase:"inherit"},1:{showEase:this.manager.chartManager.getMode()==X.Play?1:0}},.6,Kt(.11,.71,.33,1.39),()=>{},"play-widget")),w.general.smoothAnimations?this.y+=(1-Math.abs(this.showEase))*400:this.manager.chartManager.getMode()!=X.Play&&(this.y+=400)}newLine(){const e=new Le(te.WHITE);return e.smoothCount=0,e.targetHeight=0,e.anchor.y=1,e.anchor.x=.5,e.height=0,e.visible=!1,e}startPlay(){const e=this.manager.chartManager.gameStats;this.max=0,this.errorMS=[],this.meanText.text="-",this.medianText.text="-",this.modeText.text="-",this.stddevText.text="-",Yi(this.barlines.children,()=>!0),Yi(this.backgroundLines.children,()=>!0),Yi(this.texts.children,()=>!0);const t=Je.getCollection(w.play.timingCollection),i=t.getStandardWindows().length+1,r=Math.round(t.maxWindowMS());for(let m=0;mb.type==f&&!b.fake).length),g.tint=14540253,y.tint=14540253,y.name=f,this.texts.addChild(g),this.texts.addChild(y),g.x=-Xe/2+160,y.x=-Xe/2+290,g.y=80/l*n-tt-220,y.y=80/l*n++-tt-220,g.anchor.y=.5,y.anchor.y=.5,y.anchor.x=1}const c=new Re("Max Combo",{fontName:"Main",fontSize:15}),u=new Re("0",{fontName:"Main",fontSize:15});c.tint=14540253,u.tint=14540253,u.name="Combo",this.texts.addChild(c),this.texts.addChild(u),c.x=-Xe/2+160,u.x=-Xe/2+290,c.y=80/l*n-tt-220,u.y=80/l*n++-tt-220,c.anchor.y=.5,u.anchor.y=.5,u.anchor.x=1;const h=new Re("0.00 / 0.00",{fontName:"Main",fontSize:20});h.tint=14540253,h.x=-Xe/2+225,h.y=-tt-112,h.name="Score",this.texts.addChild(h),h.anchor.set(.5);const d=new Re("Score / Current Score",{fontName:"Main",fontSize:13});d.tint=8947848,d.x=-Xe/2+225,d.y=-tt-135,this.texts.addChild(d),d.anchor.set(.5);const p=new Re("Play Statistics",{fontName:"Main",fontSize:13});p.y=-tt-245,p.anchor.set(.5),this.texts.addChild(p),e.onJudge((m,f)=>{let g="";(Ci(f)||ji(f))&&(g=f.id),mr(f)&&(g=f.noteType),dl(f)&&(g="Mine");const y=this.texts.getChildByName(g);if(mr(f)){const A=y.text.split(" / ")[1];y.text=e.getCount(f)+" / "+A}else pn(f)||(y.text=e.getCount(f)+"");if(this.texts.getChildByName("Combo").text=e.getMaxCombo()+"",this.texts.getChildByName("Score").text=ne(e.getScore()*100,2).toFixed(2)+" / "+ne(e.getCumulativeScore()*100,2).toFixed(2),Ci(f)||!ji(f)||m==null)return;const b=Math.round(m*1e3);for(let A=-3;A<=3;A++)this.barlines.children[b+r+A]&&(this.barlines.children[b+r+A].smoothCount+=$p[A+3],this.barlines.children[b+r+A].visible=!0,this.barlines.children[b+r+A].smoothCount>this.max&&(this.modeText.text=b+"ms",this.max=this.barlines.children[b+r+A].smoothCount));this.errorMS.push(m*1e3),this.meanText.text=mT(this.errorMS).toFixed(2)+"ms",this.medianText.text=ul(this.errorMS).toFixed(2)+"ms",this.stddevText.text=kg(this.errorMS).toFixed(2)+"ms",this.redraw()})}redraw(){for(const e of this.barlines.children)e.targetHeight=e.smoothCount*(tt-20)/this.max}adjustOffset(e){const t=this.manager.chartManager.gameStats;if(!t)return;const i=Math.round(t.getMedian()*1e3)/1e3;if(i==0)return;t.applyOffset(-i),this.barlines.children.forEach(o=>{o.smoothCount=0});const r=Je.getCollection(w.play.timingCollection),n=Math.round(r.maxWindowMS());t.getDataPoints().forEach(o=>{if(Ci(o.judgement)||!ji(o.judgement)||o.error===null)return;const l=Math.round(o.error*1e3);for(let c=-3;c<=3;c++)this.barlines.children[l+n+c]&&(this.barlines.children[l+n+c].smoothCount+=$p[c+3],this.barlines.children[l+n+c].visible=!0,this.barlines.children[l+n+c].smoothCount>this.max&&(this.modeText.text=l+"ms",this.max=this.barlines.children[l+n+c].smoothCount))}),this.redraw();const a=e=="global"?w.play.offset:this.manager.app.chartManager.loadedChart.timingData.getOffset();if(e=="global")w.play.offset=ne(w.play.offset-i,3);else if(e=="song"){const o=this.manager.app.chartManager.loadedChart.timingData.hasChartOffset()?this.manager.app.chartManager.loadedChart.timingData:this.manager.app.chartManager.loadedSM.timingData;o.setOffset(ne(o.getOffset()-i,3))}_e.create(`Adjusted ${e} offset from ${ne(a,3).toFixed(3)} to ${ne(a-i,3).toFixed(3)}`),this.manager.app.chartManager.setBeat(this.manager.app.chartManager.getBeat())}}class SS extends ga{registeredSpinners=[];registeredToggles=[];registeredCheckboxes=[];changeRow;warpRow;fakeRow;view;collapseButton;lastSpeedMod=w.chart.CMod;rateSpinner;enteredMain=!1;constructor(e){super(e),this.visible=!1;const t=document.createElement("div");t.id="playback-options",w.general.showPlaybackOptions||t.classList.add("collapsed"),t.style.height="0px",document.getElementById("menubar")?.insertAdjacentElement("afterend",t),this.view=t;const i=document.createElement("button");i.classList.add("po-collapse"),i.tabIndex=-1;const r=document.createElement("img");r.src=Ce.CHEVRON,r.style.filter="invert()",i.appendChild(r),w.general.showPlaybackOptions&&i.classList.add("toggled"),this.collapseButton=i,i.onclick=()=>{w.general.showPlaybackOptions=!w.general.showPlaybackOptions,t.classList.toggle("collapsed"),i.classList.toggle("toggled",!t.classList.contains("collapsed")),i.blur()},i.style.display="none",zt(i,{onShow(D){D.setContent((t.classList.contains("collapsed")?"Show ":"Hide ")+"playback options")}});const n=this.createRow("Zoom"),a=this.createSpinner({value:w.chart.zoom*100,step:10,altStep:2,min:10,hardMin:0,onChange:D=>w.chart.zoom=D/100,getValue:()=>w.chart.zoom*100});n.appendChild(a),t.appendChild(n);const o=document.createElement("div"),l=document.createElement("h1");l.innerText="a",o.appendChild(l),Ie.createKeybindTooltip(n)`Adjust playfield size ${"zoomOut"}/${"zoomIn"}`,t.appendChild(this.createSeparator());const c=this.createRow("Playback"),u=this.createSpinner({value:w.audio.rate*100,step:10,altStep:2,min:10,hardMin:0,onChange:D=>w.audio.rate=D/100,getValue:()=>w.audio.rate*100});c.appendChild(u),t.appendChild(c),this.rateSpinner=this.registeredSpinners.at(-1),Ie.createKeybindTooltip(c)`Adjust audio playback rate ${"rateDown"}/${"rateUp"}`;const h=document.createElement("div");h.style.gap="5px",h.style.display="flex",h.style.alignItems="center";const d=this.createCheckbox({getValue:()=>w.audio.assistTick,value:w.audio.assistTick,onSrc:Ce.CLAP,offSrc:Ce.X_CLAP,onChange:D=>w.audio.assistTick=D});h.appendChild(d),Ie.createKeybindTooltip(d)`Toggle assist tick ${"assistTick"}`;const p=this.createCheckbox({getValue:()=>w.audio.metronome,value:w.audio.metronome,onSrc:Ce.METRONOME,offSrc:Ce.X_METRONOME,onChange:D=>w.audio.metronome=D});h.appendChild(p),t.appendChild(h),Ie.createKeybindTooltip(p)`Toggle metronome ${"metronome"}`,t.appendChild(this.createSeparator());const m=this.createRow("Scroll"),f=document.createElement("img");f.src=Ce.DBL_CHEVRON,f.style.height="16px",f.style.width="16px",f.style.padding="2px";const g=document.createElement("img");g.src=Ce.DBL_CHEVRON,g.style.height="16px",g.style.width="16px",g.style.padding="2px",g.style.transform="rotate(180deg)";const y=this.createToggle({values:[f,g],value:w.chart.reverse?1:0,getValue:()=>w.chart.reverse?1:0,onChange:(D,W)=>w.chart.reverse=W!=0});m.appendChild(y),t.appendChild(m),Ie.createKeybindTooltip(m)`Change scroll direction ${"reverse"}`;const b=this.createRow("Speedmod"),A=this.createToggle({values:["X","C"],value:w.chart.CMod?1:0,getValue:()=>w.chart.CMod?1:0,onChange:D=>w.chart.CMod=D!="X"});Ie.createKeybindTooltip(A)`Change speedmod type ${"XMod"}/${"CMod"}`;const v=this.createSpinner({value:w.chart.speed,step:25,altStep:5,min:10,hardMin:10,hardMax:35e3,onChange:D=>w.chart.speed=D,getValue:()=>w.chart.speed});b.appendChild(A),b.appendChild(v),t.appendChild(b),Ie.createKeybindTooltip(v)`Adjust scroll speed ${"increaseScrollSpeed"}/${"decreaseScrollSpeed"}`,t.appendChild(this.createSeparator());const _=this.createRow("Speed Changes"),C=this.createToggle({values:["On","Off"],value:w.chart.doSpeedChanges?0:1,getValue:()=>w.chart.doSpeedChanges?0:1,onChange:D=>w.chart.doSpeedChanges=D=="On"});_.appendChild(C),t.appendChild(_),Ie.createKeybindTooltip(_)`Allow scroll/speed events (XMod only) ${"doSpeedChanges"}`,this.changeRow=_;const B=this.createRow("Warped Notes"),P=this.createCheckbox({getValue:()=>w.chart.hideWarpedArrows,value:w.chart.hideWarpedArrows,onSrc:Ce.X_EYE,offSrc:Ce.EYE,onChange:D=>w.chart.hideWarpedArrows=D});B.appendChild(P),t.appendChild(B),Ie.createKeybindTooltip(B)`Show/hide warped notes (CMod only) ${"hideWarpedArrows"}`,this.warpRow=B;const M=this.createRow("Faked Notes"),U=this.createCheckbox({getValue:()=>w.chart.hideFakedArrows,value:w.chart.hideFakedArrows,onSrc:Ce.X_EYE,offSrc:Ce.EYE,onChange:D=>w.chart.hideFakedArrows=D});M.appendChild(U),t.appendChild(M),Ie.createKeybindTooltip(M)`Show/hide faked notes (CMod only) ${"hideFakedArrows"}`,this.fakeRow=M;const F=document.createElement("img");F.src=Ce.VOLUME,F.style.marginLeft="auto",F.style.marginRight="-16px",F.style.height="22px",F.style.width="22px",F.style.alignSelf="center",t.appendChild(F);const T=this.createRow("Master"),S=this.createSpinner({value:w.audio.masterVolume*100,step:5,altStep:1,min:0,max:200,hardMin:0,hardMax:200,onChange:D=>w.audio.masterVolume=D/100,getValue:()=>w.audio.masterVolume*100});T.appendChild(S),t.appendChild(T);const x=this.createRow("Song"),L=this.createSpinner({value:w.audio.songVolume*100,step:5,altStep:1,min:0,max:200,hardMin:0,hardMax:200,onChange:D=>w.audio.songVolume=D/100,getValue:()=>w.audio.songVolume*100});x.appendChild(L),t.appendChild(x);const Y=this.createRow("FX"),R=this.createSpinner({value:w.audio.soundEffectVolume*100,step:5,altStep:1,min:0,max:200,hardMin:0,hardMax:200,onChange:D=>w.audio.soundEffectVolume=D/100,getValue:()=>w.audio.soundEffectVolume*100});Y.appendChild(R),t.appendChild(Y),this.changeRow.style.setProperty("--w",this.changeRow.offsetWidth+"px"),this.warpRow.style.setProperty("--w",this.warpRow.offsetWidth+"px"),this.fakeRow.style.setProperty("--w",this.fakeRow.offsetWidth+"px"),this.changeRow.classList.toggle("hidden",w.chart.CMod),this.warpRow.classList.toggle("hidden",!w.chart.CMod),this.fakeRow.classList.toggle("hidden",!w.chart.CMod),Be.playbackOptions||(t.style.display="none",i.style.display="none")}createRow(e){const t=document.createElement("div");t.classList.add("playback-options-row");const i=document.createElement("div");return i.classList.add("playback-options-label"),i.innerText=e,t.appendChild(i),t}createSeparator(){const e=document.createElement("div");return e.classList.add("po-separator"),e}createSpinner(e){const t=document.createElement("div");t.classList.add("po-spinner");const i=c=>{let u=w.general.spinnerStep;return c.getModifierState("Shift")?u=e.altStep??(e.step!==void 0?e.step/10:w.general.spinnerStep):u=e.step??w.general.spinnerStep,u},r=document.createElement("button");r.classList.add("po-spinner-btn"),r.innerText="-",r.onclick=c=>{l.currentValue-=i(c),e.min!==void 0&&l.currentValue{l.currentValue+=i(c),e.max!==void 0&&l.currentValue>e.max&&(l.currentValue=e.max),o(!0)};const a=document.createElement("input");a.classList.add("po-spinner-input");const o=(c=!0)=>{e.hardMin!==void 0&&l.currentValuee.hardMax&&(l.currentValue=e.hardMax),c&&e.onChange(l.currentValue),a.value=l.currentValue.toFixed()};a.onwheel=c=>{l.currentValue+=i(c)*c.deltaY/100*(w.chart.scroll.invertZoomScroll?-1:1)*w.chart.scroll.scrollSensitivity,e.max!==void 0&&l.currentValue>e.max&&(l.currentValue=e.max),e.min!==void 0&&l.currentValue{c.key=="Enter"&&a.blur(),c.key=="Escape"&&(l.currentValue=e.getValue(),o(!1))},a.onfocus=()=>{a.select()},a.onblur=()=>{const c=this.parseString(a);if(c==null){l.currentValue=e.getValue(),o(!1);return}l.currentValue=c,o()},a.ondragstart=c=>c.preventDefault(),this.registeredSpinners.push(l),t}createToggle(e){const t=document.createElement("div");if(t.classList.add("po-toggle"),e.values.length==0)return t;const i=document.createElement("div");i.classList.add("po-toggle-highlight");const r=e.values.map((l,c)=>{if(typeof l=="string"){const u=document.createElement("div");return u.classList.add("po-toggle-item"),u.innerText=l,t.appendChild(u),u.onclick=()=>{o.currentValue!=c&&(o.currentValue=c,a())},u}else return l.onclick=()=>{o.currentValue!=c&&(o.currentValue=c,a())},t.appendChild(l),l});t.style.visibility="hidden",document.body.appendChild(t);const n=l=>{i.style.left=r[l].getBoundingClientRect().left-r[0].getBoundingClientRect().left+"px",i.style.width=r[l].getBoundingClientRect().width+"px",i.style.height=r[l].getBoundingClientRect().height+"px"},a=(l=!0)=>{l&&e.onChange(e.values[o.currentValue],o.currentValue),[...t.querySelectorAll(".active")].forEach(c=>c.classList.remove("active")),n(o.currentValue),r[o.currentValue].classList.add("active")},o={currentValue:e.value??0,options:e,update:a};return this.registeredToggles.push(o),a(!1),t.remove(),t.style.visibility="",t.appendChild(i),t}createCheckbox(e){const t=document.createElement("img");t.classList.add("po-checkbox");const i=(n=!0)=>{n&&e.onChange(r.currentValue),t.src=r.currentValue?r.options.onSrc:r.options.offSrc},r={currentValue:e.value??!0,options:e,update:i};return t.onclick=()=>{r.currentValue=!r.currentValue,i()},this.registeredCheckboxes.push(r),i(!1),t}update(){!this.enteredMain&&this.manager.chartManager.loadedChart!==void 0&&(this.enteredMain=!0,this.view.style.height="",this.collapseButton.style.display="",document.getElementById("menubar")?.appendChild(this.collapseButton));for(const t of this.registeredSpinners)t.currentValue!=t.options.getValue()&&document.activeElement!=t.input&&(t.currentValue=t.options.getValue(),t.update(!1));for(const t of this.registeredToggles)t.currentValue!=t.options.getValue()&&(t.currentValue=t.options.getValue(),t.update(!1));for(const t of this.registeredCheckboxes)t.currentValue!=t.options.getValue()&&(t.currentValue=t.options.getValue(),t.update(!1));const e=this.manager.chartManager.getMode()==X.Play||this.manager.chartManager.getMode()==X.Record;this.rateSpinner.btnMinus.disabled=e,this.rateSpinner.btnPlus.disabled=e,this.rateSpinner.input.disabled=e,w.chart.CMod!=this.lastSpeedMod&&(this.lastSpeedMod=w.chart.CMod,this.changeRow.classList.toggle("hidden",w.chart.CMod),this.warpRow.classList.toggle("hidden",!w.chart.CMod),this.fakeRow.classList.toggle("hidden",!w.chart.CMod))}parseString(e){try{const t=ms.evaluate(e.value);return isFinite(t)?t:0}catch{return null}}}class oa extends Ee{pool=[];options;constructor(e){super(),this.options=e}createChild(){if(this.pool.length==0&&this.options.maxPoolSize!==void 0&&this.children.length>=this.options.maxPoolSize)return;const e=this.pool.pop()??this.options.create();return this.addChild(e),e._disabledTime=Date.now(),e}destroyChild(e){this.children.includes(e)&&(e.removeFromParent(),e.removeAllListeners(),e.eventMode="auto",e._disabledTime=Date.now(),this.pool.push(e))}destroyAll(){this.children.forEach(e=>e._disabledTime=Date.now()),this.pool.push(...this.children),this.children.forEach(e=>{e.removeAllListeners(),e.eventMode="auto"}),this.removeChildren()}_render(e){super._render(e);const t=Date.now();for(;t-this.pool[0]?._disabledTime>(this.options.destroyTimer??5e3);)this.pool.shift().destroy()}}const Os={BPMS:9182254,STOPS:4934913,DELAYS:217453,WARPS:9243998,FAKES:4868682,COMBOS:939078,SPEEDS:2968693,LABELS:7747359,SCROLLS:3557006,TIMESIGNATURES:5392684,TICKCOUNTS:1594906,BGCHANGES:8460415,FGCHANGES:8857115,ATTACKS:1856083};class CS extends Ee{renderer;areaPool=new oa({create:()=>{const e=new Le(te.WHITE);return Object.assign(e,{alpha:.2,width:this.renderer.chart.gameType.notefieldWidth+128}),e.anchor.set(.5,0),e}});timingAreaMap=new Map;timingEvents=[];timingDirty=!0;constructor(e){super(),this.renderer=e,this.addChild(this.areaPool);const t=()=>this.timingDirty=!0;q.on("timingModified",t),this.on("destroyed",()=>q.off("timingModified",t))}update(e,t){this.timingDirty&&(this.timingAreaMap.clear(),this.areaPool.destroyAll(),this.timingDirty=!1,this.timingEvents=this.renderer.chart.timingData.getTimingData("STOPS","WARPS","DELAYS","FAKES")),this.visible=this.renderer.shouldDisplayBarlines();for(const i of this.timingEvents){if(i.beat>t)break;if(this.shouldDrawEvent(i,e,t)&&!this.timingAreaMap.has(i)){const r=this.areaPool.createChild();if(!r)break;r.tint=Os[i.type],this.timingAreaMap.set(i,r)}}for(const[i,r]of this.timingAreaMap.entries()){if(!this.shouldDrawEvent(i,e,t)){this.timingAreaMap.delete(i),this.areaPool.destroyChild(r);continue}let n=w.chart.CMod?this.renderer.getYPosFromSecond(i.second):this.renderer.getYPosFromBeat(i.beat),a=n;switch(i.type){case"STOPS":case"DELAYS":{w.chart.CMod&&i.value>0?a=this.renderer.getYPosFromSecond(i.second+i.value):i.value<0&&(a=this.renderer.getYPosFromBeat(this.renderer.chart.getBeatFromSeconds(i.second+1e-4)));break}case"FAKES":{a=this.renderer.getYPosFromBeat(i.beat+i.value);break}case"WARPS":{w.chart.CMod||(a=this.renderer.getYPosFromBeat(i.beat+i.value));break}}a0)||e.type=="WARPS"&&w.chart.CMod?!1:e.beat<=i}}function ey(s,e,t){return(s<<16)+(e<<8)+t}function ty(s,e){let t=s>>16,i=s>>8&255,r=s&255;return t=Ve(t*e,0,255),i=Ve(i*e,0,255),r=Ve(r*e,0,255),ey(t,i,r)}function Sc(s,e,t){const[i,r,n]=s.match(/\w\w/g).map(d=>parseInt(d,16)),[a,o,l]=e.match(/\w\w/g).map(d=>parseInt(d,16)),c=Math.round(i+(a-i)*t).toString(16).padStart(2,"0"),u=Math.round(r+(o-r)*t).toString(16).padStart(2,"0"),h=Math.round(n+(l-n)*t).toString(16).padStart(2,"0");return"#"+c+u+h}class yh{static active=!1;static popup;static clickOutside;static moveInterval;static exitTimeout;static draggedElement;static dragOffsetX=0;static dragOffsetY=0;static grid;static leftovers;static boundaryCache=[];static open(){this.active||(this.popup=this.build(),document.getElementById("popups")?.appendChild(this.popup),this.clickOutside=e=>{!this.popup?.contains(e.target)&&!this.draggedElement?.contains(e.target)&&!document.getElementById("toggle-tracks")?.contains(e.target)&&this.close()},setTimeout(()=>window.addEventListener("click",this.clickOutside,!0)),this.popup.style.transitionDuration="0s",setTimeout(()=>this.movePosition()),clearTimeout(this.exitTimeout),this.moveInterval=setInterval(()=>this.movePosition(),150),this.active=!0)}static build(){const e=document.createElement("div");e.classList.add("popup"),e.id="timing-track-order";const t=document.createElement("div");t.classList.add("popup-zoomer"),e.appendChild(t);const i=document.createElement("div");i.classList.add("container"),t.appendChild(i);const r=document.createElement("div");r.classList.add("track-grid-options");const n=document.createElement("button");n.classList.add("delete"),n.innerText="Reset",n.onclick=()=>{w.chart.timingEventOrder=structuredClone(Go.chart.timingEventOrder),this.clearBoundaries(),this.grid?.replaceChildren(),this.leftovers?.replaceChildren();const l=[...ls];for(const u of w.chart.timingEventOrder.left){const h=this.makeDraggableTrack(u);h.classList.add("left"),this.grid?.appendChild(h),l.splice(l.indexOf(u),1)}const c=document.createElement("div");c.classList.add("draggable-track"),c.innerText="PLAYFIELD",c.style.backgroundColor="#2D2D2D",c.style.padding="20px 10px",c.style.writingMode="horizontal-tb",c.addEventListener("mousedown",u=>this.startDragging(u,c)),c.dataset.type="PLAYFIELD",this.grid?.appendChild(c);for(const u of w.chart.timingEventOrder.right){const h=this.makeDraggableTrack(u);h.classList.add("right"),this.grid?.appendChild(h),l.splice(l.indexOf(u),1)}for(const u of l)this.leftovers?.appendChild(this.makeLeftoverTrack(u))},this.grid=document.createElement("div"),this.grid.classList.add("track-grid"),i.appendChild(this.grid),i.appendChild(r);const a=[...ls];for(const l of w.chart.timingEventOrder.left){const c=this.makeDraggableTrack(l);c.classList.add("left"),this.grid.appendChild(c),a.splice(a.indexOf(l),1)}const o=document.createElement("div");o.classList.add("draggable-track"),o.innerText="PLAYFIELD",o.style.backgroundColor="#2D2D2D",o.style.padding="20px 10px",o.style.writingMode="horizontal-tb",o.addEventListener("mousedown",l=>this.startDragging(l,o)),o.dataset.type="PLAYFIELD",this.grid.appendChild(o);for(const l of w.chart.timingEventOrder.right){const c=this.makeDraggableTrack(l);c.classList.add("right"),this.grid.appendChild(c),a.splice(a.indexOf(l),1)}this.leftovers=document.createElement("div"),this.leftovers.classList.add("track-selector"),r.appendChild(this.leftovers),r.appendChild(n);for(const l of a)this.leftovers.appendChild(this.makeLeftoverTrack(l));return e}static makeDraggableTrack(e){const t=document.createElement("div");t.classList.add("draggable-track");const i=document.createElement("div");i.classList.add("draggable-track-text"),i.innerText=e,t.style.backgroundColor=Sc(Os[e].toString(16).padStart(6,"0"),"#333333",.7),t.appendChild(i);let r=!0;const n=document.createElement("img");return n.src=Ce.TRASH,n.style.width="16px",n.addEventListener("click",()=>{if(!r)return;r=!1,this.deleteTrack(e),t.classList.add("exiting"),setTimeout(()=>t.remove(),400);const a=this.makeLeftoverTrack(e);a.classList.add("entering"),setTimeout(()=>a.classList.remove("entering"),400),this.leftovers?.appendChild(a),this.clearBoundaries()}),t.appendChild(n),t.addEventListener("mousedown",a=>{r&&a.target!=n&&this.startDragging(a,t)}),t.dataset.type=e,t}static makeLeftoverTrack(e){const t=document.createElement("div");t.classList.add("leftover-track");const i=document.createElement("img");i.src=Ce.PLUS,t.append(i);const r=document.createElement("div");r.classList.add("leftover-track-text"),r.innerText=e,t.style.backgroundColor=Sc(Os[e].toString(16).padStart(6,"0"),"#333333",.7),t.appendChild(r);let n=0,a=0,o=!1,l=!1;return t.addEventListener("mousedown",()=>{o=!0}),t.addEventListener("mousemove",c=>{if(!(!o||l)&&(n+=c.movementX,a+=c.movementY,n*n+a*a>15)){l=!0;const u=this.makeDraggableTrack(e);this.grid?.appendChild(u),this.clearBoundaries();const h=t.getBoundingClientRect(),d=this.getClosestSlot(h.left),p=w.chart.timingEventOrder.left.concat(["PLAYFIELD"],w.chart.timingEventOrder.right);p.splice(d,0,e),this.saveOptions(p),p.forEach(m=>{const f=this.grid?.querySelector(`div[data-type=${m}]`);this.grid?.appendChild(f),m!="PLAYFIELD"&&(f?.classList.remove("left","right"),w.chart.timingEventOrder.left.includes(m)&&f?.classList.add("left"),w.chart.timingEventOrder.right.includes(m)&&f?.classList.add("right"))}),this.startDragging(c,u,c.clientX,c.clientY),w.general.smoothAnimations?(t.style.width=t.clientWidth+"px",t.style.transition="0.4s cubic-bezier(0, 0.91, 0.34, 1.05)",setTimeout(()=>{t.style.width="0px",t.style.opacity="0",t.style.padding="0",t.style.fontSize="0"},10),setTimeout(()=>t.remove(),400)):t.remove()}}),t.addEventListener("mouseup",()=>{if(!o||l)return;l=!0,w.chart.timingEventOrder.right.push(e),w.general.smoothAnimations?(t.style.width=t.clientWidth+"px",t.style.transition="0.4s cubic-bezier(0, 0.91, 0.34, 1.05)",setTimeout(()=>{t.style.width="0px",t.style.opacity="0",t.style.padding="0",t.style.fontSize="0"},10),setTimeout(()=>t.remove(),400)):t.remove();const c=this.makeDraggableTrack(e);c.classList.add("entering"),c.classList.add("right"),setTimeout(()=>c.classList.remove("entering"),400),this.grid?.appendChild(c),this.clearBoundaries()}),t}static startDragging(e,t,i,r){if(!this.popup)return;this.draggedElement=t.cloneNode(!0),this.draggedElement.style.position="fixed";const n=t.getBoundingClientRect(),a=this.popup.getBoundingClientRect();!i||!r?(this.dragOffsetX=e.clientX-n.left,this.dragOffsetY=e.clientY-n.top,this.draggedElement.style.left=n.left-a.left+"px",this.draggedElement.style.top=n.top-a.top+"px"):(this.dragOffsetX=n.width/2,this.dragOffsetY=n.height/4*3,this.draggedElement.style.left=i-n.width/2-a.left+"px",this.draggedElement.style.top=r-n.height/4*3-a.top+"px",this.draggedElement.classList.add("entering")),this.draggedElement.style.boxShadow="6px 6px 6px #222",this.draggedElement.style.transition="none",t.style.opacity="0.03",this.popup.appendChild(this.draggedElement);const o=w.chart.timingEventOrder.left.concat(["PLAYFIELD"],w.chart.timingEventOrder.right),l=t.dataset.type;let c=o.indexOf(l);const u=o.indexOf(l),h=p=>{this.draggedElement.style.left=p.clientX-this.dragOffsetX-a.left+"px",this.draggedElement.style.top=p.clientY-this.dragOffsetY-a.top+"px";let m=this.getClosestSlot(p.clientX-this.dragOffsetX);Math.abs(p.clientY-this.dragOffsetY-a.top-(n.top-a.top))>140&&(m=u),c!=m&&(o.splice(c,1),o.splice(m,0,l),this.saveOptions(o),o.forEach(f=>{const g=this.grid?.querySelector(`div[data-type=${f}]`);this.grid?.appendChild(g),f!="PLAYFIELD"&&(g?.classList.remove("left","right"),w.chart.timingEventOrder.left.includes(f)&&g?.classList.add("left"),w.chart.timingEventOrder.right.includes(f)&&g?.classList.add("right"))}),l!="PLAYFIELD"&&(this.draggedElement?.classList.remove("left","right"),w.chart.timingEventOrder.left.includes(l)&&this.draggedElement?.classList.add("left"),w.chart.timingEventOrder.right.includes(l)&&this.draggedElement?.classList.add("right")),c=m)};window.addEventListener("mousemove",h);const d=()=>{this.draggedElement?.remove(),this.draggedElement=void 0,window.removeEventListener("mousemove",h),t.style.opacity="",this.clearBoundaries(),window.removeEventListener("mouseup",d)};window.addEventListener("mouseup",d)}static saveOptions(e){const t=e.indexOf("PLAYFIELD");t!=-1&&(w.chart.timingEventOrder.left=e.slice(0,t),w.chart.timingEventOrder.right=e.slice(t+1))}static deleteTrack(e){const t=w.chart.timingEventOrder.left.indexOf(e);t!=-1&&w.chart.timingEventOrder.left.splice(t,1);const i=w.chart.timingEventOrder.right.indexOf(e);i!=-1&&w.chart.timingEventOrder.right.splice(i,1)}static movePosition(){if(!this.popup)return;const e=document.getElementById("toggle-tracks");if(!e)return;this.popup.style.display="";const t=e.getBoundingClientRect(),i=t.left+t.width/2,r=this.popup.clientWidth,n=r/2+15,a=window.innerWidth-r/2-15;this.popup.style.left=`${Ve(i,n,a)}px`;const o=t.top+t.height/2;this.popup.style.top=`${t.top+t.height}px`,o+this.popup.clientHeight>window.innerHeight-15&&(this.popup.style.transform="translate(-50%, -100%)",this.popup.style.top=`${t.top-t.height/2}px`),setTimeout(()=>this.popup.style.transitionDuration="",10)}static getClosestSlot(e){this.boundaryCache.length==0&&this.getBoundaries();let t=-1,i=999999,r=999999;for(let n=0;nr)break;r=a}return t}static getBoundaries(){if(this.grid){for(const e of this.grid.children)this.boundaryCache.push([e,e.getBoundingClientRect()]);this.boundaryCache.sort((e,t)=>e[1].left-t[1].left)}}static clearBoundaries(){this.boundaryCache=[]}static close(){!this.popup||!this.active||(window.removeEventListener("click",this.clickOutside,!0),this.popup.classList.add("exiting"),this.exitTimeout=setTimeout(()=>this.popup.remove(),200),this.active=!1,clearInterval(this.moveInterval),this.clearBoundaries())}}class MS extends ga{view;playbackBar;skipStart;skipEnd;play;playIcon;record;playtest;timeCounter;beatCounter;min;sec;millis;beat;beatDropdown;editBar;editSteps;editTiming;stepsContainer;timingContainer;editChoiceContainer;addTimingEvent;toggleTimingTracks;detectSync;offsetCounter;offset;noteArrows=[];noteArrowMask;lastTime=null;lastBeat=null;lastOffset=null;lastMode=X.Edit;lastTimingMode=Oe.Off;lastHover=0;lastPlaying=!1;hovering=!1;trackingMovement=!0;idleFrames=0;lastBounds;constructor(e){super(e);const t=document.createElement("div");t.id="status-widget",document.getElementById("view-wrapper")?.appendChild(t),Be.viewMode&&t.classList.add("collapsed"),this.playbackBar=document.createElement("div"),this.playbackBar.classList.add("playback-bar"),this.editBar=document.createElement("div"),this.editBar.classList.add("edit-bar"),this.skipStart=document.createElement("button"),this.skipStart.tabIndex=-1;const i=document.createElement("img");i.src=Ce.SKIP_START,i.style.height="36px",this.skipStart.appendChild(i),this.skipStart.onclick=()=>{this.manager.chartManager.setBeat(0),this.skipStart.blur()},Ie.createKeybindTooltip(this.skipStart)`Skip to start ${"jumpSongStart"}`,this.skipEnd=document.createElement("button"),this.skipEnd.tabIndex=-1;const r=document.createElement("img");r.style.height="36px",r.src=Ce.SKIP_END,this.skipEnd.appendChild(r),this.skipEnd.onclick=()=>{this.manager.chartManager.setBeat(this.manager.chartManager.loadedChart.getBeatFromSeconds(this.manager.chartManager.chartAudio.getSongLength())),this.skipEnd.blur()},Ie.createKeybindTooltip(this.skipEnd)`Skip to end ${"jumpSongEnd"}`,this.play=document.createElement("button"),this.play.tabIndex=-1;const n=document.createElement("img");n.src=Ce.PLAY,this.play.appendChild(n),this.playIcon=n,this.play.onclick=()=>{(this.manager.chartManager.getMode()==X.Record||this.manager.chartManager.getMode()==X.Play)&&this.manager.chartManager.setMode(X.Edit),this.manager.chartManager.playPause(),this.play.blur()},Ie.createKeybindTooltip(this.play)`Play/Pause ${"playback"}`,this.record=document.createElement("button"),this.record.tabIndex=-1;const a=document.createElement("img");a.style.height="36px",a.src=Ce.RECORD,this.record.appendChild(a),this.record.onclick=()=>{this.manager.chartManager.setMode(X.Record),this.record.blur()},Ie.createKeybindTooltip(this.record)`Record ${"recordMode"}`,(Be.viewMode||!Be.recordMode)&&(this.record.style.display="none"),this.playtest=document.createElement("button"),this.playtest.tabIndex=-1;const o=document.createElement("img");o.style.height="30px",o.src=Ce.PLAYTEST,this.playtest.appendChild(o),this.playtest.onclick=()=>{this.manager.chartManager.setMode(X.Play),this.playtest.blur()},Ie.createKeybindTooltip(this.playtest)`Playtest ${"playMode"}`,Be.playMode||(this.playtest.style.display="none");const l=document.createElement("div");l.classList.add("playback-separator"),this.timeCounter=document.createElement("div"),this.timeCounter.classList.add("playback-counter");const c=document.createElement("div");c.style.display="flex",c.classList.add("playback-counter-main");const u=document.createElement("div");u.classList.add("inlineEdit"),u.innerText="00",u.spellcheck=!1,u.contentEditable="true",u.style.maxWidth="27px",u.onkeydown=F=>{F.key=="Enter"&&u.blur(),F.key=="Escape"&&(u.innerText=Math.floor(Math.abs(this.manager.chartManager.getTime())/60).toString().padStart(2,"0"),u.blur())},u.onfocus=()=>setTimeout(()=>this.selectText(u),25),u.onblur=()=>this.updateTime(),u.ondragstart=F=>F.preventDefault();const h=document.createElement("div");h.classList.add("inlineEdit"),h.innerText="00",h.spellcheck=!1,h.contentEditable="true",h.style.maxWidth="18px",h.onkeydown=F=>{F.key=="Enter"&&h.blur(),F.key=="Escape"&&(h.innerText=Math.floor(Math.abs(this.manager.chartManager.getTime())%60).toString().padStart(2,"0"),h.blur())},h.onfocus=()=>setTimeout(()=>this.selectText(h),25),h.onblur=()=>this.updateTime(),h.ondragstart=F=>F.preventDefault();const d=document.createElement("div");d.classList.add("inlineEdit"),d.innerText="000",d.spellcheck=!1,d.contentEditable="true",d.style.maxWidth="27px",d.onkeydown=F=>{F.key=="Enter"&&d.blur(),F.key=="Escape"&&(d.innerText=(ne(Math.abs(this.manager.chartManager.getTime())%1,3)*1e3).toString().padStart(3,"0"),d.blur())},d.onfocus=()=>setTimeout(()=>this.selectText(d),25),d.onblur=()=>this.updateTime(),d.ondragstart=F=>F.preventDefault(),this.min=u,this.sec=h,this.millis=d;const p=document.createElement("div");p.classList.add("playback-counter-label"),p.innerText="Time",c.appendChild(u),c.appendChild(document.createTextNode(":")),c.appendChild(h),c.appendChild(document.createTextNode(".")),c.appendChild(d),this.timeCounter.appendChild(c),this.timeCounter.appendChild(p);const m=document.createElement("div");m.classList.add("playback-separator"),this.beatCounter=document.createElement("div"),this.beatCounter.classList.add("playback-counter");const f=document.createElement("div");f.classList.add("playback-counter-main","inlineEdit"),f.innerText="0.000",f.spellcheck=!1,f.contentEditable="true",f.onkeydown=F=>{if(F.key=="Enter"&&f.blur(),F.key=="Escape"){if(this.beatDropdown.value=="Measure"){const T=this.manager.chartManager.loadedChart?.timingData?.getMeasure(this.manager.chartManager.getBeat())??this.manager.chartManager.getBeat()/4;f.innerText=ne(T,3).toFixed(3)}else f.innerText=ne(this.manager.chartManager.getBeat(),3).toFixed(3);f.blur()}},f.onfocus=()=>{setTimeout(()=>this.selectText(f),25)},f.onblur=()=>this.updateBeat(),f.ondragstart=F=>F.preventDefault(),this.beat=f,this.beatDropdown=di.create(["Beat","Measure"],"Beat"),this.beatDropdown.view.querySelector(".dropdown-selected").classList.add("playback-counter-label"),this.beatCounter.appendChild(f),this.beatCounter.appendChild(this.beatDropdown.view),this.beatDropdown.onChange(()=>{if(this.beatDropdown.value=="Measure"){const F=this.manager.chartManager.loadedChart?.timingData?.getMeasure(this.manager.chartManager.getBeat())??this.manager.chartManager.getBeat()/4;f.innerText=ne(F,3).toFixed(3)}else f.innerText=ne(this.manager.chartManager.getBeat(),3).toFixed(3)}),this.playbackBar.appendChild(this.skipStart),this.playbackBar.appendChild(this.skipEnd),this.playbackBar.appendChild(this.play),this.playbackBar.appendChild(this.record),this.playbackBar.appendChild(this.playtest),this.playbackBar.appendChild(l),this.playbackBar.appendChild(this.timeCounter),this.playbackBar.appendChild(m),this.playbackBar.appendChild(this.beatCounter),this.editSteps=document.createElement("button"),this.editSteps.tabIndex=-1,this.editSteps.classList.add("edit-fancy-button");const g=document.createElement("img");g.src=Ce.FEET,this.editSteps.appendChild(g),this.editSteps.appendChild(document.createTextNode("Edit Steps")),this.editSteps.onclick=()=>{this.manager.chartManager.editTimingMode=Oe.Off,this.editSteps.blur()},this.editSteps.style.background="rgba(255,255,255,0.15)",this.editTiming=document.createElement("button"),this.editTiming.tabIndex=-1,this.editTiming.classList.add("edit-fancy-button");const y=document.createElement("img");y.src=Ce.METRONOME,this.editTiming.appendChild(y),this.editTiming.appendChild(document.createTextNode("Edit Timing")),this.editTiming.onclick=()=>{this.manager.chartManager.editTimingMode=Oe.Edit,this.editTiming.blur()};const b=document.createElement("div");b.classList.add("playback-separator");const A=document.createElement("div");A.classList.add("edit-bar-left"),A.appendChild(this.editSteps),A.appendChild(this.editTiming),A.appendChild(b),this.editBar.appendChild(A),this.editChoiceContainer=document.createElement("div"),this.editChoiceContainer.classList.add("edit-choice-container"),this.stepsContainer=document.createElement("div"),this.stepsContainer.classList.add("edit-steps-container"),this.timingContainer=document.createElement("div"),this.timingContainer.classList.add("edit-timing-container"),this.editChoiceContainer.appendChild(this.stepsContainer),this.editChoiceContainer.appendChild(this.timingContainer),this.addTimingEvent=document.createElement("button"),this.addTimingEvent.tabIndex=-1;const v=document.createElement("img");v.style.height="32px",v.src=Ce.ADD_EVENT,this.addTimingEvent.appendChild(v),this.addTimingEvent.onclick=()=>{this.manager.chartManager.editTimingMode==Oe.Add?this.manager.chartManager.editTimingMode=Oe.Edit:this.manager.chartManager.editTimingMode=Oe.Add,this.addTimingEvent.blur()},this.timingContainer.appendChild(this.addTimingEvent),zt(this.addTimingEvent,{content:"Add timing events"}),this.toggleTimingTracks=document.createElement("button"),this.toggleTimingTracks.tabIndex=-1;const _=document.createElement("img");_.style.height="32px",_.src=Ce.EYE,this.toggleTimingTracks.appendChild(_),this.toggleTimingTracks.onclick=()=>{yh.active?yh.close():yh.open(),this.toggleTimingTracks.blur()},this.toggleTimingTracks.id="toggle-tracks",this.timingContainer.appendChild(this.toggleTimingTracks),zt(this.toggleTimingTracks,{content:"Toggle timing track visibility"}),this.detectSync=document.createElement("button"),this.detectSync.tabIndex=-1;const C=document.createElement("img");C.style.height="32px",C.src=Ce.DETECT_SYNC,this.detectSync.appendChild(C),this.detectSync.onclick=()=>{this.manager.app.windowManager.openWindow(new Qg(this.manager.app)),this.detectSync.blur()},this.detectSync.id="detect-sync",this.timingContainer.appendChild(this.detectSync),Ie.createKeybindTooltip(this.detectSync)`Detect audio sync ${"detectSync"}`;const B=document.createElement("div");B.classList.add("playback-separator"),this.timingContainer.appendChild(B),this.offsetCounter=document.createElement("div"),this.offsetCounter.classList.add("playback-counter");const P=document.createElement("div");P.classList.add("playback-counter-label"),P.innerText="Offset";const M=document.createElement("div");M.classList.add("playback-counter-main","inlineEdit"),M.innerText="0.000",M.spellcheck=!1,M.contentEditable="true",M.onkeydown=F=>{F.key=="Enter"&&M.blur(),F.key=="Escape"&&(M.innerText=ne(this.manager.chartManager.loadedChart?.timingData.getOffset()??0,3).toFixed(3),M.blur())},M.tabIndex=-1,M.onfocus=()=>{setTimeout(()=>this.selectText(M),25)},M.onblur=()=>this.updateOffset(),M.ondragstart=F=>F.preventDefault(),this.offset=M,this.offsetCounter.appendChild(M),this.offsetCounter.appendChild(P),this.timingContainer.appendChild(this.offsetCounter),this.editBar.appendChild(this.editChoiceContainer);const U=document.createElement("div");U.classList.add("note-placeholder-right"),this.stepsContainer.appendChild(U),q.on("resize",()=>{this.trackingMovement=!0,this.idleFrames=5}),q.on("noteskinLoaded",()=>{this.stepsContainer.replaceChildren(),this.noteArrows.forEach(T=>{this.removeChild(T.sprite),this.removeChild(T.bg),this.removeChild(T.highlight)}),this.noteArrows=[];const F=document.createElement("div");if(F.classList.add("note-placeholder-right"),this.stepsContainer.appendChild(F),!!this.manager.chartManager.loadedChart){for(const T of this.manager.chartManager.loadedChart.gameType.editNoteTypes){if(id.includes(T))continue;const S=this.manager.chartManager.chartView.getNotefield().createNote({type:T,beat:0,col:0,quant:4,second:0,warped:!1,fake:!1});S.scale.set(.5);const x=new Le(te.WHITE);x.tint=0,x.alpha=.5,x.width=48,x.height=48,x.anchor.set(.5);const L=new Ht("noBorder");L.alpha=0,L.width=48,L.height=48,L.pivot.x=24,L.pivot.y=24;const Y=document.createElement("button");Y.tabIndex=-1,Y.style.height="48px",Y.style.width="48px",Y.classList.add("note-placeholder"),Y.onclick=()=>{this.manager.chartManager.setEditingNoteType(T),Y.blur()},Ie.createKeybindTooltip(Y)`${"\\"+T} ${"noteType"+T}`;const R={element:Y,sprite:S,type:T,bg:x,highlight:L,hovered:!1};Y.onmouseover=()=>{R.hovered=!0},Y.onmouseleave=()=>{R.hovered=!1},this.addChild(x),this.addChild(S),this.addChild(L);const D=Y.getBoundingClientRect();S.position.y=D.top-this.manager.app.view.clientHeight/2-this.manager.app.view.getBoundingClientRect().top+24,S.position.x=D.left-this.manager.app.view.clientWidth/2+24,x.position=S.position,this.noteArrows.push(R)}this.stepsContainer.replaceChildren(...this.noteArrows.map(T=>T.element),F),this.trackingMovement=!0,this.idleFrames=5}}),this.noteArrowMask=new Le(te.WHITE),this.noteArrowMask.height=48,this.noteArrowMask.width=2500,this.noteArrowMask.anchor.y=1,this.noteArrowMask.anchor.x=.5,this.addChild(this.noteArrowMask),this.mask=this.noteArrowMask,t.onmouseenter=()=>{this.lastHover=Date.now(),this.hovering=!0,this.view.style.opacity="",this.view.style.transition=""},t.onmouseleave=()=>this.hovering=!1,t.appendChild(this.playbackBar),t.appendChild(this.editBar),this.view=t,t.style.display="none"}update(){this.view.style.display=this.manager.chartManager.loadedSM&&Be.status?"":"none";const e=this.manager.chartManager.getTime();this.lastTime!=e&&(document.activeElement!=this.min&&(this.min.innerText=(e<0?"-":"")+Math.floor(Math.abs(e)/60).toString().padStart(2,"0")),document.activeElement!=this.sec&&(this.sec.innerText=Math.floor(Math.abs(e)%60).toString().padStart(2,"0")),document.activeElement!=this.millis&&(this.millis.innerText=(ne(Math.abs(e)%1,3)*1e3).toString().padStart(3,"0")),this.lastTime=e);const t=this.manager.chartManager.getBeat();if(this.lastBeat!=t){if(document.activeElement!=this.beat)if(this.beatDropdown.value=="Measure"){const l=this.manager.chartManager.loadedChart?.timingData?.getMeasure(t)??t/4;this.beat.innerText=ne(l,3).toFixed(3)}else this.beat.innerText=ne(t,3).toFixed(3);this.lastBeat=t}const i=this.manager.chartManager.loadedChart?.timingData.getOffset()??0;this.lastOffset!=i&&document.activeElement!=this.offset&&(this.offset.innerText=ne(i,3).toFixed(3));const r=this.manager.chartManager.getMode(),n=this.manager.chartManager.editTimingMode;if(this.lastMode!=r){switch(r){case X.Edit:this.skipStart.disabled=!1,this.skipEnd.disabled=!1,this.record.disabled=!1,this.playtest.disabled=!1,this.min.contentEditable="true",this.sec.contentEditable="true",this.millis.contentEditable="true",this.beat.contentEditable="true",this.offset.contentEditable="true",this.record.style.background="",this.playtest.style.background="",this.view.style.opacity="",this.view.style.transition="",this.view.classList.remove("collapsed"),this.beatDropdown.disabled=!1;break;case X.Record:this.lastHover=Date.now(),this.skipStart.disabled=!0,this.skipEnd.disabled=!0,this.record.disabled=!1,this.record.style.background="rgba(170, 0, 0, 0.35)",this.playtest.disabled=!0,this.min.contentEditable="false",this.sec.contentEditable="false",this.millis.contentEditable="false",this.beat.contentEditable="false",this.offset.contentEditable="false",n!=Oe.Off&&(this.visible=!1),this.view.classList.add("collapsed"),this.beatDropdown.closeDropdown(),this.beatDropdown.disabled=!0;break;case X.Play:this.lastHover=Date.now(),this.skipStart.disabled=!0,this.skipEnd.disabled=!0,this.record.disabled=!0,this.playtest.disabled=!1,this.playtest.style.background="rgba(12, 97, 31, 0.35)",this.min.contentEditable="false",this.sec.contentEditable="false",this.millis.contentEditable="false",this.beat.contentEditable="false",this.offset.contentEditable="false",n!=Oe.Off&&(this.visible=!1),this.view.classList.add("collapsed"),this.beatDropdown.closeDropdown(),this.beatDropdown.disabled=!0;break;case X.View:this.lastHover=Date.now(),this.skipStart.disabled=!1,this.skipEnd.disabled=!1,this.record.disabled=!0,this.playtest.disabled=!1,this.min.contentEditable="true",this.sec.contentEditable="true",this.millis.contentEditable="true",this.beat.contentEditable="true",this.offset.contentEditable="true",n!=Oe.Off&&(this.visible=!1),this.view.classList.add("collapsed"),this.beatDropdown.closeDropdown(),this.beatDropdown.disabled=!0}this.trackingMovement=!0,this.idleFrames=5,this.lastMode=r}if(this.lastTimingMode!=n){switch(n){case Oe.Off:this.visible=!0,this.stepsContainer.style.transform="",this.timingContainer.style.transform="",this.editSteps.style.background="rgba(255,255,255,0.15)",this.editTiming.style.background="",this.offset.tabIndex=-1;break;case Oe.Add:this.addTimingEvent.style.background="rgba(255,255,255,0.15)";break;case Oe.Edit:this.addTimingEvent.style.background="",this.offset.tabIndex=0}(this.lastTimingMode==Oe.Off&&n!=Oe.Off||this.lastTimingMode!=Oe.Off&&n==Oe.Off)&&this.manager.chartManager.clearSelections(),this.trackingMovement=!0,this.idleFrames=5,this.lastTimingMode=n,this.stepsContainer.style.transform=n==Oe.Off?"":"translateY(-48px)",this.timingContainer.style.transform=n==Oe.Off?"":"translateY(-48px)",this.editSteps.style.background=n==Oe.Off?"rgba(255,255,255,0.15)":"",this.editTiming.style.background=n==Oe.Off?"":"rgba(255,255,255,0.15)"}const a=this.manager.chartManager.chartAudio.isPlaying();if(this.lastPlaying!=a&&(this.playIcon.src=a?Ce.STOP:Ce.PLAY,this.lastPlaying=a),this.playIcon.style.height=this.manager.chartManager.chartAudio.isPlaying()?"28px":"",(r==X.Play||r==X.Record)&&this.view.style.opacity==""&&!this.hovering&&Date.now()-this.lastHover>3e3&&(this.view.style.opacity="0.2",this.view.style.transition="2s cubic-bezier(.11,.72,.51,1.14)"),this.trackingMovement){const l=this.noteArrows[0];if(l){const u=l.element.getBoundingClientRect();this.noteArrows.forEach((h,d)=>{h.sprite.position.y=u.top-this.manager.app.view.clientHeight/2-this.manager.app.view.getBoundingClientRect().top+24,h.sprite.position.x=u.left-this.manager.app.view.clientWidth/2+24+d*48,h.bg.position=h.sprite.position,h.highlight.position=h.sprite.position}),this.lastBounds&&Math.abs(this.lastBounds.top-u.top)+Math.abs(this.lastBounds.left-u.left)==0&&(this.idleFrames--,this.idleFrames<0&&(this.trackingMovement=!1,this.lastBounds=void 0,n!=Oe.Off&&(this.visible=!1))),this.lastBounds=u}const c=this.view.getBoundingClientRect();this.noteArrowMask.y=c.bottom-this.manager.app.view.clientHeight/2-this.manager.app.view.getBoundingClientRect().top}const o=this.manager.chartManager.getEditingNoteType();this.noteArrows.forEach(l=>{if(w.general.smoothAnimations){const c=o==l.type?.15:l.hovered?.05:0;l.highlight.alpha=(c-l.highlight.alpha)*.3+l.highlight.alpha}else l.highlight.alpha=o==l.type?.15:l.hovered?.05:0})}selectText(e){const t=window.getSelection(),i=document.createRange();!t||!i||(i.selectNodeContents(e),t.removeAllRanges(),t.addRange(i))}updateTime(){this.millis.innerText=this.millis.innerText.padEnd(3,"0").slice(0,3);const e=this.parseString(this.min),t=this.parseString(this.sec),i=this.parseString(this.millis);if(e===null||t===null||i===null){this.lastTime=null;return}let r=e*60+t+i/1e3;r>9999999&&(r=9999999),r<0&&(r=0),this.manager.chartManager.setTime(r),this.lastTime=null}updateBeat(){let e=this.parseString(this.beat);if(e===null){this.lastBeat=null;return}this.beatDropdown.value=="Measure"&&(e=this.manager.chartManager.loadedChart?.timingData?.getBeatFromMeasure(e)??e*4),e>9999999&&(e=9999999),e<0&&(e=0),this.manager.chartManager.setBeat(e),this.lastBeat=null}updateOffset(){let e=this.parseString(this.offset);if(e===null){this.lastOffset=null;return}e>9999999&&(e=9999999),e<-9999999&&(e=-9999999),this.lastOffset=null,!(!this.manager.chartManager.loadedChart||!this.manager.chartManager.loadedSM)&&((this.manager.chartManager.loadedChart.timingData.hasChartOffset()?this.manager.chartManager.loadedChart.timingData:this.manager.chartManager.loadedSM.timingData).setOffset(e),this.manager.chartManager.setBeat(this.manager.chartManager.getBeat()))}parseString(e){try{const t=ms.evaluate(e.innerText);return isFinite(t)?t:0}catch{return null}}}class kS extends Ee{app;chartManager;children=[];constructor(e){super(),this.app=e.app,this.chartManager=e,this.addChild(new _S(this)),this.addChild(new TS(this)),this.addChild(new MS(this)),this.addChild(new aa(this)),this.addChild(new wS(this)),this.addChild(new SS(this)),this.zIndex=2}update(){this.x=this.app.renderer.screen.width/2,this.y=this.app.renderer.screen.height/2,this.children.forEach(e=>e.update())}startPlay(){this.children.forEach(e=>e.startPlay())}endPlay(){this.children.forEach(e=>e.endPlay())}}const Cc=Array(85).fill(void 0).map((s,e)=>33+e),iy=[];for(const s of Cc)for(const e of Cc)iy.push([s,e]);const Mc="<~".split("").map(s=>s.charCodeAt(0)),kc="~>".split("").map(s=>s.charCodeAt(0));function BS(s,e,t,i=!1,r=!1,n=!1){let a;typeof s=="string"?a=s.split("").map(h=>h.charCodeAt(0)):a=[...new Uint8Array(s)];const o=4-a.length%4;for(let h=0;ho.charCodeAt(0)):i=[...new Uint8Array(s)],e){if(i.at(-1)!=kc.at(-1)||i.at(-2)!=kc.at(-2))return!1;i.at(0)==Mc.at(0)&&i.at(1)==Mc.at(1)?i=i.slice(2,-2):i=i.slice(void 0,-2)}for(let o=0;o<4;o++)i.push("u".charCodeAt(0));let r=[],n=[];for(const o of i)if(o>=33&&117>=o){if(n.push(o),n.length==5){let l=0;for(const c of n)l=85*l+(c-33);if(l>2**32-1)return!1;r.push(l>>24&255),r.push(l>>16&255),r.push(l>>8&255),r.push(l&255),n=[]}}else if(o==122){if(n.length!=0)return!1;r.push(0),r.push(0),r.push(0),r.push(0)}else if(o==121){if(n.length!=0)return!1;r.push(32),r.push(32),r.push(32),r.push(32)}else if(!t.includes(String.fromCharCode(o)))return!1;const a=4-n.length;return a&&(r=r.slice(void 0,-a)),r}function ri(s){let e=0,t=0,i=129;for(;i&128;){const r=s.shift();if(!r)break;e=e|(r&127)<<7*t++,i=r}return e}function ni(s){const e=[];let t=!1;for(;!t;){let i=s&127;s=s>>7,t=s==0,t||(i=i|128),e.push(i)}return e}const IS=["Hold","Mine","Roll","Lift","Fake"];function PS(s){if(s.startsWith("ArrowVortex:notes:")){const e=Ad(s.slice(18));if(e!==!1){const t=Array.from(e);if(t.shift()!=0)return;const i=ri(t),r=[];for(let n=0;n4)continue;const h=IS[u];if(l==c){if(h=="Hold"||h=="Roll")continue;r.push({type:h,beat:l/48,col:o})}else{if(h=="Mine"||h=="Fake"||h=="Lift")continue;r.push({type:h,beat:l/48,hold:(c-l)/48,col:o})}}else r.push({type:"Tap",beat:ri(t)/48,col:o})}return r}}}function RS(s){const e=[0];e.push(...ni(s.length));for(const t of s)if(t.type=="Tap"){const i=Math.round(t.beat*48);e.push(t.col),e.push(...ni(i))}else{e.push(t.col+128);const i=Math.round(t.beat*48);let r=0;Pe(t)&&(r=t.hold);const n=Math.round(r*48)+i;e.push(...ni(i)),e.push(...ni(n)),e.push(["Hold","Mine","Roll","Lift","Fake"].indexOf(t.type))}return"ArrowVortex:notes:"+vd(e).map(t=>String.fromCharCode(t)).join("")}const pl=["BPMS","STOPS","DELAYS","WARPS","TIMESIGNATURES","TICKCOUNTS","COMBOS","SPEEDS","SCROLLS","FAKES","LABELS","ATTACKS","BGCHANGES","FGCHANGES"];function vs(s){const e=new ArrayBuffer(4);return new DataView(e).setUint32(0,s,!0),Array.from(new Uint8Array(e))}function As(s){const e=new Uint8Array(s.splice(0,4));return new DataView(e.buffer).getUint32(0,!0)}function ks(s){const e=new ArrayBuffer(8);return new DataView(e).setFloat64(0,s,!0),Array.from(new Uint8Array(e))}function Bs(s){const e=new Uint8Array(s.splice(0,8)),t=new DataView(e.buffer);return ne(t.getFloat64(0,!0),3)}function LS(s){return[s.length,...s.split("").map(e=>e.charCodeAt(0))]}function DS(s){const e=s.shift();if(!e)return"";let t="";for(let i=0;ie.charCodeAt(0)))}function ws(s){const e=ri(s);if(!e)return"";let t="";for(let i=0;i{if(e.type=="ATTACKS"||e.type=="BGCHANGES"||e.type=="FGCHANGES")return!0;const t=Math.round(e.beat*48)/48;if(Math.abs(t-e.beat)>5e-4)return!0;if(e.type=="FAKES"||e.type=="WARPS"){const i=Math.round(e.value*48)/48;if(Math.abs(i-e.value)>5e-4)return!0}return e.type=="LABELS"&&e.value.length>255||e.type=="TIMESIGNATURES"&&(e.upper>2**32-1||e.lower>2**32-1)||e.type=="COMBOS"&&(e.hitMult>2**32-1||e.missMult>2**32-1)?!0:e.type=="TICKCOUNTS"&&e.value>2**32-1})?NS(s):FS(s)}function FS(s){const e=[],t=new Map;s.forEach(i=>{t.has(i.type)||t.set(i.type,[]),t.get(i.type)?.push(i)});for(const[i,r]of t.entries())if(!(i=="ATTACKS"||i=="BGCHANGES"||i=="FGCHANGES")){e.push(r.length),e.push(pl.indexOf(i));for(const n of r)switch(e.push(...vs(Math.round(n.beat*48))),n.type){case"BPMS":case"STOPS":case"DELAYS":case"SCROLLS":e.push(...ks(n.value));break;case"FAKES":case"WARPS":e.push(...vs(Math.round(n.value*48)));break;case"TIMESIGNATURES":e.push(...vs(Math.round(n.upper))),e.push(...vs(Math.round(n.lower)));break;case"COMBOS":e.push(...vs(Math.round(n.hitMult))),e.push(...vs(Math.round(n.missMult)));break;case"TICKCOUNTS":e.push(...vs(Math.round(n.value)));break;case"SPEEDS":e.push(...ks(n.value)),e.push(...ks(n.delay)),e.push(...vs(n.unit=="B"?0:1));break;case"LABELS":e.push(...LS(n.value))}}return e.push(0),"ArrowVortex:tempo:"+vd(e).map(i=>String.fromCharCode(i)).join("")}function NS(s){const e=[],t=new Map;s.forEach(i=>{t.has(i.type)||t.set(i.type,[]),t.get(i.type)?.push(i)});for(const[i,r]of t.entries()){e.push(...ni(r.length)),e.push(pl.indexOf(i));for(const n of r)switch(e.push(...ni(Math.round((n.type=="ATTACKS"?n.second:n.beat)*1e3))),n.type){case"BPMS":case"STOPS":case"DELAYS":case"SCROLLS":case"FAKES":case"WARPS":e.push(...ks(n.value));break;case"TIMESIGNATURES":e.push(...ni(Math.round(n.upper))),e.push(...ni(Math.round(n.lower)));break;case"COMBOS":e.push(...ni(Math.round(n.hitMult))),e.push(...ni(Math.round(n.missMult)));break;case"TICKCOUNTS":e.push(...ni(Math.round(n.value)));break;case"SPEEDS":e.push(...ks(n.value)),e.push(...ks(n.delay)),e.push(n.unit=="B"?0:1);break;case"LABELS":e.push(...bs(n.value));break;case"ATTACKS":e.push(...ks(n.value)),e.push(n.endType=="LEN"?0:1),e.push(...bs(n.mods));break;case"BGCHANGES":case"FGCHANGES":e.push((n.crossFade?1:0)+((n.stretchRewind?1:0)<<1)+((n.stretchNoLoop?1:0)<<2)),e.push(...bs(n.file)),e.push(...ks(n.updateRate)),e.push(...bs(n.effect)),e.push(...bs(n.file2)),e.push(...bs(n.transition)),e.push(...bs(n.color1)),e.push(...bs(n.color2))}}return"SMEditor:tempo:"+vd(e).map(i=>String.fromCharCode(i)).join("")}function US(s){if(s.startsWith("SMEditor:tempo:"))return HS(s);if(s.startsWith("ArrowVortex:tempo:"))return GS(s)}function GS(s){if(!s.startsWith("ArrowVortex:tempo:"))return;const e=Ad(s.slice(18)),t=[];if(e===!1)return;const i=Array.from(e);try{for(;;){const r=i.shift();if(r===void 0)return;if(r==0)break;const n=i.shift();if(n===void 0)return;const a=pl[n];for(let o=0;o0,stretchRewind:(c&2)>0,stretchNoLoop:(c&4)>0,effect:ws(i),file2:ws(i),transition:ws(i),color1:ws(i),color2:ws(i)})}}}}}catch{return}return t}const VS={"dance-single":[{x:-1,y:0},{x:0,y:-1},{x:0,y:1},{x:1,y:0}]},ct={DOUBLESTEP:850,BRACKETJACK:20,JACK:30,JUMP:30,BRACKETTAP:400,HOLDSWITCH:20,MINE:1e4,FOOTSWITCH:5e3,MISSED_FOOTSWITCH:500,FACING:2,DISTANCE:6,SPIN:1e3,SIDESWITCH:130},ef=[1,2,3,4],WS="LlRr";class zS{id=0;neighbors=new Map;state;constructor(e,t){this.state=e,this.id=t}}class YS{nodes=[];states=[];startNode=0;endNode=0;stateNodeMap=new Map;addOrGetExistingNode(e){this.stateNodeMap.get(e.rowIndex)==null&&this.stateNodeMap.set(e.rowIndex,new Map);for(const[n,a]of this.stateNodeMap.get(e.rowIndex))if(XS(e,this.states[n]))return this.nodes[a];const t=this.states.length,i=this.nodes.length;this.states.push(e);const r=new zS(e,i);return this.nodes.push(r),this.stateNodeMap.get(e.rowIndex)?.set(t,i),r}addEdge(e,t,i){e.neighbors.set(t.id,i)}}class jS{app;permuteCache=new Map;layout;constructor(e,t){this.app=e,this.layout=VS[t]}help(){console.log(`Currently only compatible with dance-single. Available commands: analyze(): analyze the current chart @@ -1250,4 +1250,4 @@ yEnd:${ne(o,1)} val:${e[n].value} h:${ne(o-a,1)}`,oe[n].beat&&te[n+1].beat&&(l.text.y=l.box.height),l.x=(n%4-1.5)*150}for(const[n,a]of this.scrollMap.entries())if(!a.marked){this.scrollMap.delete(n),a.destroy();continue}const i=this.renderer.findFirstOnScreenScroll(),r=this.renderer.findLastOnScreenScroll();{const n=this.scrollMap.get(i);n&&(n.text.text+=` start`,n.box.tint==16777215&&(n.box.tint=16777096),n.text.tint=16777096)}{const n=this.scrollMap.get(r);n&&(n.text.text+=` -end`,n.box.tint==16777215&&(n.box.tint=8978431),n.text.tint=8978431)}this.receptors.y=this.renderer.getActualReceptorYPos(),this.topBound.y=this.renderer.getUpperBound(),this.bottomBound.y=this.renderer.getLowerBound(),this.topBoundBeat.y=this.renderer.getYPosFromBeat(this.renderer.getVisualBeat()-w.chart.maxDrawBeatsBack),this.bottomBoundBeat.y=this.renderer.getYPosFromBeat(this.renderer.getVisualBeat()+w.chart.maxDrawBeats),this.topScreenBeat.y=this.renderer.getYPosFromBeat(this.renderer.getTopOnScreenBeat()),this.bottomScreenBeat.y=this.renderer.getYPosFromBeat(this.renderer.getBottomOnScreenBeat()),this.topScreenBeatText.y=this.topScreenBeat.y,this.topScreenBeatText.text=ne(this.renderer.getTopOnScreenBeat(),3)+"",this.bottomScreenBeatText.y=this.bottomScreenBeat.y,this.bottomScreenBeatText.text=ne(this.renderer.getBottomOnScreenBeat(),3)+""}inBounds(e){const t=this.renderer.chartManager.app.renderer.screen.height/this.scale.y;return Math.abs(e)this.renderer.getVisualBeat()),this.trackVariable(()=>this.renderer.getVisualTime()),this.trackVariable(()=>this.getSpeed(),r=>{this.speed=r,clearTimeout(this.lastSpeedTimeout),this.lastSpeedTimeout=setTimeout(()=>{this.blockCache.clear(),this.lastSpeed=this.speed,this.drawDirty=!0},200)}),this.trackVariable(()=>w.chart.zoom),this.trackVariable(()=>w.chart.CMod),this.trackVariable(()=>w.chart.doSpeedChanges),this.trackVariable(()=>w.chart.waveform.allowFilter),this.trackVariable(()=>w.chart.reverse),this.trackVariable(()=>w.chart.waveform.antialiasing,r=>{this.filters=r?[new tc]:[]}),this.trackVariable(()=>this.renderer.chartManager.app.renderer.screen.width,()=>this.resizeWaveform()),this.trackVariable(()=>this.renderer.chartManager.app.renderer.screen.height,()=>this.resizeWaveform()),this.trackVariable(()=>w.chart.waveform.opacity),this.trackVariable(()=>w.chart.waveform.filteredOpacity),this.trackVariable(()=>w.chart.waveform.filteredColor),this.trackVariable(()=>w.chart.waveform.color),this.trackVariable(()=>w.chart.waveform.speedChanges),this.trackVariable(()=>w.chart.receptorYPos),this.trackVariable(()=>w.chart.waveform.lineHeight,()=>{w.chart.waveform.lineHeight<=0&&(w.chart.waveform.lineHeight=1),this.updateLineHeight()}),this.trackVariable(()=>w.chart.zoom,()=>this.resizeWaveform()),this.trackVariable(()=>this.renderer.chartManager.chartAudio.hasFilters()),this.anchor.set(.5),this.renderer.chartManager.chartAudio.onUpdate(()=>this.getData()),this.getData(),this.resizeWaveform(),this.filters=w.chart.waveform.antialiasing?[new tc]:[];const t=()=>this.drawDirty=!0,i=()=>{this.getData(),this.resizeWaveform(),this.renderer.chartManager.chartAudio.onUpdate(()=>this.getData())};q.on("timingModified",t),this.on("destroyed",()=>{q.off("timingModified",t)}),q.on("audioLoaded",i),this.on("destroyed",()=>{q.off("audioLoaded",i)})}getData(){this.rawData=this.renderer.chartManager.chartAudio.getRawData(),this.filteredRawData=this.renderer.chartManager.chartAudio.getFilteredRawData(),this.sampleRate=this.renderer.chartManager.chartAudio.getSampleRate(),this.blockCache.clear(),this.drawDirty=!0}resizeWaveform(){this.waveformTex.resize(Ve((this.rawData?.length??0)*288*w.chart.zoom,1,this.renderer.chartManager.app.renderer.screen.width),this.renderer.chartManager.app.renderer.screen.height)}update(){this.visible=w.chart.waveform.enabled&&this.renderer.shouldDisplayBarlines(),w.chart.waveform.enabled&&((this.drawDirty||this.variableChanged())&&(this.drawDirty=!1,this.renderData(),this.renderer.chartManager.app.renderer.render(this.lineContainer,{renderTexture:this.waveformTex})),this.scale.set(1/w.chart.zoom))}trackVariable(e,t){this.trackedVariables.set(e,{value:e(),cb:t})}variableChanged(){let e=!1;for(const[t,i]of this.trackedVariables.entries())t()!=i.value&&(this.trackedVariables.get(t).value=t(),this.trackedVariables.get(t).cb?.(t()),e=!0);return e}getSample(e,t,i){if(t<0)return 0;const r=this.sampleRate/(this.lastSpeed*4),n=Math.floor(t*this.lastSpeed*4);if(this.blockCache.get(i)?.[n]!==void 0)return this.blockCache.get(i)[n];const a=Math.floor(n*r),o=e.slice(a,Math.floor(a+r)).reduce((l,c)=>l+Math.abs(c),0)/r;return this.blockCache.has(i)||this.blockCache.set(i,[]),this.blockCache.get(i)[n]=o,o}renderData(){this.resetPool();const e=w.chart.waveform.allowFilter&&this.renderer.chartManager.chartAudio.hasFilters();if(w.chart.waveform.speedChanges&&!w.chart.CMod&&w.chart.doSpeedChanges){const t=w.chart.speed,i=this.renderer.getCurrentSpeedMult(),r=this.renderer.getTopOnScreenBeat(),n=this.renderer.getBottomOnScreenBeat(),a=Math.min(r,n),o=Math.max(r,n),l=this.renderer.findFirstOnScreenScroll(),c=this.renderer.findLastOnScreenScroll(),u=this.renderer.chart.timingData.getOffset(),h=this.renderer.chart.timingData.getEventAtBeat("BPMS",0)?.value??120,d=[...this.renderer.chart.timingData.getTimingData("SCROLLS")];d[0]?.beat!=0&&d.unshift({type:"SCROLLS",beat:0,value:d[0]?.value??1});const p=d.findIndex(_=>_.beat==l.beat),m=d.findIndex(_=>_.beat==c.beat),f=this.renderer.chart.timingData.getBeatTiming(),g=100/t/Math.abs(i)/64/w.chart.zoom,y=this.renderer.chartManager.app.renderer.screen.height;let b=a,A=Math.round(this.renderer.getYPosFromBeat(b)*w.chart.zoom+this.parent.y),v=this.renderer.chart.getSecondsFromBeat(b);for(const _ of d.slice(p,m+1)){if(_.value==0)continue;const C=g/Math.abs(_.value);_.beat!=l.beat?b=_.beat:b=Math.round((b-_.beat)/C)*C+_.beat,A=Math.round(this.renderer.getYPosFromBeat(b)*w.chart.zoom+this.parent.y),v=this.renderer.chart.getSecondsFromBeat(b);const B=this.renderer.getScrollDirection(_.value),P=d[d.indexOf(_)+1]?.beat??Number.MAX_VALUE;for(;by){if(B>0){b=P;break}b+=C*(A-y),A=y;continue}b+=C*w.chart.waveform.lineHeight,A+=B*w.chart.waveform.lineHeight,v=this.calculateSecond(b,f,u,h),this.drawLine(v,A,e)}}}else if(w.chart.CMod){let t=this.renderer.getSecondFromYPos((-this.parent.y+(w.chart.reverse?this.renderer.chartManager.app.renderer.screen.height:0))/w.chart.zoom);const i=this.renderer.getPixelsToSecondsRatio()/w.chart.zoom;t=Math.floor(t/i)*i;const r=n=>{t+=i*w.chart.waveform.lineHeight,this.drawLine(t,n,e)};if(w.chart.reverse)for(let n=this.renderer.chartManager.app.renderer.screen.height;n>=0;n-=w.chart.waveform.lineHeight)r(n);else for(let n=0;n<=this.renderer.chartManager.app.renderer.screen.height;n+=w.chart.waveform.lineHeight)r(n)}else{let t=this.renderer.getBeatFromYPos((-this.parent.y+(w.chart.reverse?this.renderer.chartManager.app.renderer.screen.height:0))/w.chart.zoom);const i=this.renderer.chart.timingData.getOffset(),r=this.renderer.chart.timingData.getEventAtBeat("BPMS",0)?.value??120,n=this.renderer.chart.timingData.getBeatTiming(),a=this.renderer.getPixelsToEffectiveBeatsRatio()/w.chart.zoom;t=Math.floor(t/a)*a;let o=this.renderer.chart.getSecondsFromBeat(t);const l=c=>{t+=a*w.chart.waveform.lineHeight,o=this.calculateSecond(t,n,i,r),this.drawLine(o,c,e)};if(w.chart.reverse)for(let c=this.renderer.chartManager.app.renderer.screen.height;c>=0;c-=w.chart.waveform.lineHeight)l(c);else for(let c=0;c<=this.renderer.chartManager.app.renderer.screen.height;c+=w.chart.waveform.lineHeight)l(c)}this.purgePool()}calculateSecond(e,t,i,r){const n=Math.floor(e*1e3)/1e3;if(e<=0)return-i+e*60/r;if(n>=t[1]?.beat){for(;n>=t[1]?.beat;)t.shift();return this.renderer.chart.getSecondsFromBeat(e)}else{let o=(e-t[0].beat)*60/t[0].bpm;return t[0].warped&&(o=0),Math.max(t[0].secondClamp,t[0].secondAfter+o)}}drawLine(e,t,i){if(!(e<0))for(let r=0;rt>=this.poolSearch)}updateLineHeight(){for(const e of this.lineContainer.children){const t=e;t.height=w.chart.waveform.lineHeight}}getLine(){if(this.lineContainer.children[this.poolSearch]){const t=this.lineContainer.children[this.poolSearch];return t.visible=!0,this.poolSearch++,t}const e=new Le(te.WHITE);return e.height=w.chart.waveform.lineHeight,e.anchor.set(.5),e.visible=!0,this.poolSearch++,this.lineContainer.addChild(e),e}getSpeed(){return Math.min(w.chart.speed,iC)}}const rC="/smeditor/assets/missing-81d55ba9.png",sy=te.from(rC),nC={HoldBodyTopOffset:0,HoldBodyBottomOffset:0,RollBodyTopOffset:0,RollBodyBottomOffset:0};class aC{renderer;options;objects=[];updateHooks=new Set;hooks={};metrics;constructor(e,t){this.renderer=e,this.options=t,this.options.init?.(e),this.metrics={...nC,...this.options.metrics}}update(e){this.options.update?.(e),this.updateHooks.forEach(({item:t,cb:i})=>{t.destroyed||i(e)})}getPlaceholderSprite(){const e=new Le(sy);return e.anchor.set(.5),e}getBlankSprite(){return new Le(te.EMPTY)}getElement(e,t={}){try{return this.options.load?this.options.load.bind(this)(e,{noteskin:this,columnName:e.columnName,columnNumber:e.columnNumber,...t})??this.getPlaceholderSprite():this.loadElement(e,t)??this.getPlaceholderSprite()}catch(i){return console.error(i),w.debug.showNoteskinErrors&&_e.createFormatted("Noteskin Error: "+i,"error"),this.getPlaceholderSprite()}}loadElement(e,t={}){const i=this.followRedirs(e);return i===void 0?(w.debug.showNoteskinErrors&&_e.createFormatted(`Noteskin element ${e.columnName} ${e.element} failed to load for noteskin: Redirect loop`,"error"),this.getPlaceholderSprite()):i({noteskin:this,columnName:e.columnName,columnNumber:e.columnNumber,...t})}followRedirs(e){const t=[e];let i=e;for(;;){const r=this.options.elements[i.columnName]?.[i.element];if(r===void 0)return;if(typeof r=="function")return r;if(i={columnName:r.columnName??i.columnName,columnNumber:r.columnNumber??i.columnNumber,element:r.element},t.some(n=>i.columnName==n.columnName&&i.element==n.element))return;t.push(i)}}on(e,t,i){this.hooks[t]===void 0&&(this.hooks[t]=new Set);const r={item:e,cb:i};this.hooks[t].add(r),e.once("destroyed",()=>this.hooks[t].delete(r))}onUpdate(e,t){const i={item:e,cb:t};this.updateHooks.add(i),e.once("destroyed",()=>this.updateHooks.delete(i))}broadcast(e){if(this.hooks[e.type]===void 0)return;this.hooks[e.type].forEach(({item:i,cb:r})=>{i.destroyed||r(e)})}}const oC="/smeditor/assets/hold_judgement-82934f15.png";class lr extends Ee{children=[];static held_tex;static dropped_tex;notefield;constructor(e){super(),lr.held_tex||this.loadTex(),this.notefield=e}async loadTex(){const e=await Yr.load(oC),t=e.height,i=e.width;lr.held_tex=new te(e,new Me(0,0,i,t/2)),lr.dropped_tex=new te(e,new Me(0,t/2,i,t/2))}update(){this.y=this.notefield.renderer.getActualReceptorYPos()+(w.chart.reverse?-48:48);for(const e of this.children){const t=(Date.now()-e.createTime)/1e3;if(t<.1){const i=1-(1-t/.1)*(1-t/.1);e.scale.set(.3*i)}else if(t>.6&&t<.8){const i=(t-.6)/.2*(t-.6)/.2;e.scale.set(.3*(1-i))}}Yi(this.children,e=>Date.now()-e.createTime>800)}addJudge(e,t){if(!pn(t)&&!mr(t))return;const i=new Le(pn(t)?lr.dropped_tex:lr.held_tex);i.anchor.set(.5),i.x=this.notefield.getColumnX(e),i.createTime=Date.now(),i.scale.set(0),this.addChild(i)}}const lC={L:233724,l:11261687,R:16559363,r:16442809};class hC extends Ee{notefield;arrowMap=new Map;notesDirty=!1;children=[];constructor(e){super(),this.notefield=e,this.sortableChildren=!0;const t=()=>{this.arrowMap.clear(),this.removeChildren()},i=()=>this.notesDirty=!0;q.on("timeSigChanged",t),q.on("chartModified",i),this.on("destroyed",()=>{q.off("timeSigChanged",t),q.on("chartModified",i)})}update(e,t){const i=this.notefield.renderer.chart.getNotedata();if(this.notesDirty){for(const[r,n]of this.arrowMap.entries())i.includes(r)||(n.destroy(),this.arrowMap.delete(r));this.notesDirty=!1}for(const r of i){if(r.beat>t)break;if(this.shouldDisplayNote(r,e,t)&&!this.arrowMap.has(r)){const n=new Ee,a=this.notefield.createNote(r);Object.assign(n,{x:this.notefield.getColumnX(r.col),zIndex:r.beat});const o=new Le(te.WHITE),l=a.getBounds();o.x=l.x,o.y=l.y,o.width=l.width,o.height=l.height,o.alpha=0;const c=new Le(te.WHITE);c.x=l.x,c.y=l.y,c.width=l.width,c.height=l.height,c.alpha=0,this.notefield.renderer.registerDragNote(n,r),n.wrapper=a,n.selection=o,n.parity=c,n.lastActive=!1,this.arrowMap.set(r,n),n.addChild(a,o,c),this.addChild(n)}}for(const[r,n]of this.arrowMap.entries()){if(!this.shouldDisplayNote(r,e,t)){n.destroy(),this.arrowMap.delete(r);continue}if(n.y=this.notefield.renderer.getActualReceptorYPos(),(!Pe(r)||!r.gameplay?.lastHoldActivation||this.notefield.renderer.getVisualBeat()t)&&!this.arrowMap.has(n)){const a={...n,beat:n.beat+i,col:n.col+r},o=new Ee,l=this.notefield.createNote(a);Object.assign(o,{x:this.notefield.getColumnX(a.col),zIndex:a.beat,alpha:.4});const c=new Le(te.WHITE),u=l.getBounds();c.x=u.x,c.y=u.y,c.width=u.width,c.height=u.height,c.alpha=0,this.notefield.renderer.registerDragNote(l,a),o.wrapper=l,o.selection=c,this.arrowMap.set(n,o),o.addChild(l,c),this.addChild(o)}for(const[n,a]of this.arrowMap.entries()){if(n.beat+i+(Pe(n)?n.hold:0)t){a.destroy(),this.arrowMap.delete(n);continue}const o=n.beat+i;if(a.y=this.notefield.renderer.getYPosFromBeat(o),a.selection.alpha=Math.sin(Date.now()/320)*.1+.3,Pe(n)){const l=this.notefield.renderer.getYPosFromBeat(o+(Pe(n)?n.hold:0))-a.y,c=a.wrapper.object;c.setLength(l),c.setBrightness(1);const u=a.wrapper.getLocalBounds();a.selection.x=u.x,a.selection.y=u.y,a.selection.width=u.width,a.selection.height=u.height}}}}const pC="data:image/png;base64,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",fC="data:image/png;base64,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";class mC extends Um{offsetY=0;setY=0;_last=0;_lastTop=!1;constructor(e){super(e,0,0,0,0),this.scale.cb=()=>{this.refresh()}}cropBottom(e,t=!1){this._last==e&&!this._lastTop&&!t||(this._last=e,this._lastTop=!1,this._height=this.texture.height-e/Math.abs(this.scale.y),this._bottomHeight=0,this.offsetY=0,this.topHeight=this.texture.height-e/Math.abs(this.scale.y),this._updateY())}cropTop(e,t=!1){this._last==e&&this._lastTop&&!t||(this._last=e,this._lastTop=!0,this._height=this.texture.height-e/Math.abs(this.scale.y),this._topHeight=0,this.bottomHeight=this.texture.height-e/Math.abs(this.scale.y),this.offsetY=e/Math.abs(this.scale.y),this._updateY())}get y(){return this.setY}set y(e){this.setY=e,this._updateY()}_updateY(){super.y=this.setY+this.offsetY*Math.abs(this.scale.y)}refresh(){this._lastTop?this.cropTop(this._last,!0):this.cropBottom(this._last,!0)}}class ry extends mC{constructor(e,t=64){super(e),this.scale.set(t/this.texture.width),this.pivot.x=t/2/this.scale.x,this.texture.on("update",()=>{this.width=this.texture.width,this.height=this.texture.height,this.scale.set(t/this.texture.width),this.pivot.x=t/2/this.scale.x,this.refresh()})}}class UC extends ry{_playing=!1;_autoUpdate=!1;_isConnectedToTicker=!1;_tickerUpdate=this.update.bind(this);_currentTime=0;_textures;_previousFrame=null;onComplete=null;onLoop=null;onFrameChange=null;animationSpeed=1;loop=!1;updateAnchor=!1;constructor(e,t){super(e[0],t),this.textures=e}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(xt.shared.remove(this._tickerUpdate),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(xt.shared.add(this._tickerUpdate,this,Fs.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(e){this.stop(),this.currentFrame=e}gotoAndPlay(e){this.currentFrame=e,this.play()}update(e){if(!this._playing)return;const t=this.animationSpeed*e,i=this.currentFrame;this._currentTime+=t,this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete?.()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete?.()):i!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFramei)&&this.onLoop(),this.updateTexture())}updateTexture(){const e=this.currentFrame;this._previousFrame!==e&&(this._previousFrame=e,this.texture=this._textures[e],this.onFrameChange?.(this.currentFrame))}destroy(e){this.stop(),super.destroy(e),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}get totalFrames(){return this._textures?.length??0}get textures(){return this._textures??[]}set textures(e){this._textures=e,this._previousFrame=null,this.gotoAndStop(0),this.updateTexture()}get currentFrame(){let e=Math.floor(this._currentTime)%this._textures.length;return e<0&&(e+=this._textures.length),e}set currentFrame(e){if(e<0||e>this.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${e}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const t=this.currentFrame;this._currentTime=e,t!==this.currentFrame&&this.updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,!this._autoUpdate&&this._isConnectedToTicker?(xt.shared.remove(this._tickerUpdate),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(xt.shared.add(this._tickerUpdate),this._isConnectedToTicker=!0))}}const gC={Fake:te.from(pC),Lift:te.from(fC)};class sf extends Ee{object;icon;constructor(e){super(),this.object=e,this.icon=new Le(gC[e.note.type]),this.icon.anchor.set(.5),this.icon.scale.set(.3),this.icon.alpha=.8,this.icon.visible=!1,this.addChild(e,this.icon),e.nf.noteskin===void 0?q.on("noteskinLoaded",()=>this.loadEventHandler()):this.loadEventHandler()}loadEventHandler(){this.object.nf.noteskin.onUpdate(this,e=>{if(!w.chart.drawIcons){this.icon.visible=!1;return}if(this.object.nf.noteskinOptions?.hideIcons?.includes(this.object.note.type)){this.icon.visible=!1;return}this.icon.visible=!0,this.object.note.type=="Fake"&&(this.icon.visible=e.chartManager.getMode()!=X.Play)})}}class yC extends Ee{type="note";note;nf;constructor(e,t){super(),this.note=t,this.nf=e,this.nf.noteskin===void 0?q.on("noteskinLoaded",()=>{this.loadElement(t)}):this.loadElement(t)}loadElement(e){const t=this.nf.noteskin.getElement({element:e.type,columnName:this.nf.getColumnName(e.col),columnNumber:e.col},{note:e});this.addChild(t)}}function vC(s){return s.cropTop!==void 0}class AC extends Ee{type="hold";note;active;inactive;wasActive=!1;lastLength=null;elements;metrics;ns;nf;loaded=!1;constructor(e,t){super();const i=new Ee,r=new Ee;this.note=t,this.ns=e.noteskin,this.nf=e,this.metrics=this.ns.metrics,i.visible=!1,this.active=i,this.inactive=r,this.addChild(r,i),e.noteskin===void 0?q.on("noteskinLoaded",()=>{this.loadElements()}):this.loadElements()}loadElements(){if(!this.loaded){this.elements={};for(const e of["Active","Inactive"]){this.elements[e]={};for(const t of["BottomCap","Body","TopCap","Head"]){const i=this.getNoteskinElement(`${e} ${t}`);t=="BottomCap"?vC(i)?this.elements[e][t]=i:(w.debug.showNoteskinErrors&&_e.createFormatted(`Noteskin Error: invalid tail found for ${e} ${t}!`,"error"),this.elements[e][t]=new ry(sy,64)):this.elements[e][t]=i,(e=="Active"?this.active:this.inactive).addChild(this.elements[e][t])}}this.loaded=!0}}getNoteskinElement(e){return this.ns.getElement({element:`${this.note.type} ${e}`,columnName:this.nf.getColumnName(this.note.col),columnNumber:this.note.col},{note:this.note})}setActive(e){this.wasActive!=e&&(this.wasActive=e,this.active.visible=e,this.inactive.visible=!e)}setBrightness(e){if(!this.loaded)return;const t=["Active","Inactive"],i=["Body","TopCap","BottomCap"];for(const r of t)for(const n of i)"tint"in this.elements[r][n]&&(this.elements[r][n].tint=ey(e*255,e*255,e*255))}setLength(e){if(!this.loaded||this.lastLength==e)return;this.lastLength=e;const t=this.metrics[`${this.note.type}BodyBottomOffset`],i=this.metrics[`${this.note.type}BodyTopOffset`],r=["Active","Inactive"],n=e>=0?1:-1,a=Math.abs(e);for(const o of r){this.elements[o].Body.height=Math.max(0,a+t-i),this.elements[o].Body.y=a+t,this.elements[o].BottomCap.y=a+t,this.elements[o].BottomCap.y<0?(this.elements[o].BottomCap.cropTop(-this.elements[o].BottomCap.y),e<0&&(this.elements[o].BottomCap.y-=this.elements[o].BottomCap.y/Math.abs(this.elements[o].BottomCap.scale.y))):this.elements[o].BottomCap.cropTop(0),this.elements[o].TopCap.y=i;const l=Math.abs(this.elements[o].BottomCap.scale.y);this.elements[o].BottomCap.scale.y=e<0?-l:l;const c=Math.abs(this.elements[o].TopCap.scale.y);this.elements[o].TopCap.scale.y=e<0?-c:c,this.elements[o].Body.height*=n,this.elements[o].Body.y*=n,this.elements[o].BottomCap.y*=n,this.elements[o].TopCap.y*=n}}}class rf extends Ee{noteskinOptions;noteskin;gameType;renderer;receptors;notes;selectionNotes;flashes;holdJudges;ghostNote;ghostNoteEntry;columnX=[];constructor(e){super(),this.renderer=e,this.gameType=e.chart.gameType,st.getNoteskin(this.gameType,w.chart.noteskin.name).then(t=>{if(!t){_e.createFormatted("Couldn't find an available noteskin!","error");return}let i=0;for(let r=0;r=e&&this.ghostNoteEntry.beat<=t&&this.ghostNoteEntry.beat>=0))}onJudgement(e,t){this.noteskin!==void 0&&(this.holdJudges.addJudge(e,t),ji(t)&&this.noteskin.broadcast({type:"hit",judgement:t,columnName:this.getColumnName(e),columnNumber:e}),mr(t)&&this.noteskin.broadcast({type:"held",columnName:this.getColumnName(e),columnNumber:e}),pn(t)&&this.noteskin.broadcast({type:"letgo",columnName:this.getColumnName(e),columnNumber:e}),Ci(t)&&this.noteskin.broadcast({type:"miss",judgement:t,columnName:this.getColumnName(e),columnNumber:e}),dl(t)&&this.noteskin.broadcast({type:"hitmine",columnName:this.getColumnName(e),columnNumber:e}))}startPlay(){}endPlay(){if(this.noteskin!==void 0)for(let e=0;eDate.now()-e.createTime>5e3),w.general.smoothAnimations?this.currentMedian.x=(this.currentMedian.x-this.target)*.8+this.target:this.currentMedian.x=this.target}addBar(e,t){if(e==null||!Ci(t)&&!ji(t))return;const i=new Le(te.WHITE);i.width=wC,i.height=nf,i.anchor.set(.5),i.x=e*400,i.tint=t.color,i.createTime=Date.now(),i.miss=Ci(t),i.ms=Math.round(e*1e3),this.errorText.tint=t.color,this.errorText.text=(e*1e3).toFixed(1)+"ms",this.errorTextTime=Date.now(),this.barlines.addChild(i),this.target=ul(this.barlines.children.filter(r=>!r.miss).map(r=>r.ms))*.4}reset(){this.currentMedian.x=0,this.target=0,Yi(this.barlines.children,()=>!0)}}class _C extends Le{createTime=-1;active=!1;type=Mg;constructor(){super(),this.anchor.set(.5)}update(){if(this.y=w.chart.reverse?40:-40,this.visible=this.active,this.active){const e=(Date.now()-this.createTime)/1e3;let t=1.2;if(Je.getCollection(w.play.timingCollection).shouldHideNote(this.type)||(t=.8),e<.1){const i=1-(1-e/.1)*(1-e/.1),r=(1-t)*i+t;this.scale.x=.4*r,this.scale.y=.4*r}else if(e>.6&&e<.8){const i=(e-.6)/.2*(e-.6)/.2;this.scale.x=.4*(1-i),this.scale.y=.4*(1-i)}else e>.8&&(this.active=!1)}}doJudge(e,t){if(e==null&&(e=0),!ji(t)&&!Ci(t))return;const i=t.judgementTexture.getTexture(e,t);i&&(this.texture=i,this.texture.updateUvs(),this.active=!0,this.type=t,this.createTime=Date.now(),w.play.judgementTilt?this.rotation=Ve(e,-.05,.05)*300/180*Math.PI:this.rotation=0)}reset(){this.active=!1}}const af={BPMS:{title:"BPM Event",rows:[{label:"Tempo",key:"value",input:{type:"spinner",precision:3}}]},STOPS:{title:"Stop Event",description:"Stops for a number of seconds. Notes on this beat are hit before the stop occurs.",rows:[{label:"Seconds",key:"value",input:{type:"spinner",precision:3}}]},WARPS:{title:"Warp Event",description:"Warps ahead a number of beats. Warped notes do not count towards score.",rows:[{label:"Beats",key:"value",input:{type:"spinner",precision:3,min:0}}]},DELAYS:{title:"Delay Event",description:"Stops for a number of seconds. Notes on this beat are hit after the delay occurs.",rows:[{label:"Seconds",key:"value",input:{type:"spinner",precision:3}}]},SCROLLS:{title:"Scroll Event",description:"Notes after this event will scroll at the specified speed.",rows:[{label:"Multiplier",key:"value",input:{type:"spinner",precision:3}}]},TICKCOUNTS:{title:"Tickcount Event",description:"Number of ticks per beat in a hold. Only applies to pump gamemodes.",rows:[{label:"Ticks",key:"value",input:{type:"spinner",step:1,precision:0,min:0}}]},FAKES:{title:"Fake Event",description:"Creates an area of notes that cannot be hit and do not count towards score.",rows:[{label:"Beats",key:"value",input:{type:"spinner",precision:3,min:0}}]},LABELS:{title:"Label Event",rows:[{label:"Label",key:"value",input:{type:"text"}}]},SPEEDS:{title:"Speed Event",width:200,description:"The entire playfield scrolls at the specified speed. Can slowly ease over a certain amount of time.",rows:[{label:"Multiplier",key:"value",input:{type:"spinner",precision:3}},{label:"Ease time",key:"delay",input:{type:"spinner",precision:3,min:0}},{label:"Ease unit",key:"unit",input:{type:"dropdown",items:["Beats","Seconds"],transformers:{serialize:s=>s=="B"?"Beats":"Seconds",deserialize:s=>s=="Beats"?"B":"T"}}}]},TIMESIGNATURES:{title:"Time Signature Event",width:200,rows:[{label:"Upper",key:"upper",input:{type:"spinner",step:1,precision:0,min:1}},{label:"Lower",key:"lower",input:{type:"spinner",step:1,precision:0,min:1}}]},COMBOS:{title:"Combo Event",width:200,description:"Multiplies the combo gained from hitting/missing notes after this event.",rows:[{label:"Hit multiplier",key:"hitMult",input:{type:"spinner",step:1,precision:0,min:0}},{label:"Miss multiplier",key:"missMult",input:{type:"spinner",step:1,precision:0,min:0}}]},ATTACKS:{title:"Attack Event",width:200,description:"Applies a modifier to the playfield. Can specify the length of the applied attack in seconds or the end time of the attack.",rows:[{label:"Timing type",key:"endType",input:{type:"dropdown",items:["Length","End"],transformers:{serialize:s=>s=="LEN"?"Length":"End",deserialize:s=>s=="Length"?"LEN":"END"}}},{label:"Seconds",key:"value",input:{type:"spinner",precision:3}},{label:"Mods",key:"mods",input:{type:"text"}}]},BGCHANGES:{title:"BG Change Event",width:250,rows:[{label:"File",key:"file",input:{type:"text"}},{label:"Update rate",key:"updateRate",input:{type:"spinner",precision:3,min:0}},{label:"Crossfade",key:"crossfade",input:{type:"checkbox"}},{label:"StretchRewind",key:"stretchRewind",input:{type:"checkbox"}},{label:"StretchNoLoop",key:"StretchNoLoop",input:{type:"checkbox"}},{label:"Effect",key:"effect",input:{type:"text"}},{label:"File2",key:"file2",input:{type:"text"}},{label:"Transition",key:"transition",input:{type:"text"}},{label:"Color1",key:"color1",input:{type:"text"}},{label:"Color2",key:"color2",input:{type:"text"}}]},FGCHANGES:{title:"FG Change Event",width:250,rows:[{label:"File",key:"file",input:{type:"text"}},{label:"Update rate",key:"updateRate",input:{type:"spinner",precision:3,min:0}},{label:"Crossfade",key:"crossfade",input:{type:"checkbox"}},{label:"StretchRewind",key:"stretchRewind",input:{type:"checkbox"}},{label:"StretchNoLoop",key:"StretchNoLoop",input:{type:"checkbox"}},{label:"Effect",key:"effect",input:{type:"text"}},{label:"File2",key:"file2",input:{type:"text"}},{label:"Transition",key:"transition",input:{type:"text"}},{label:"Color1",key:"color1",input:{type:"text"}},{label:"Color2",key:"color2",input:{type:"text"}}]}};class Mt{static activePopup;timingBox;popup;zoomer;editText;timingData;rows=[];onTimingChange;clickOutside;moveInterval;modifyBox;cachedEvent;onConfirm=()=>{};persistent=!1;constructor(e,t,i=!1){e.popup=this,this.timingBox=e,this.timingData=t,this.cachedEvent=this.timingBox.event,this.modifyBox=i,this.popup=this.build(),this.popup.style.transitionDuration="0s",setTimeout(()=>this.movePosition()),this.onTimingChange=this.updateValues.bind(this),this.clickOutside=r=>{this.popup.contains(r.target)||this.close()},q.on("timingModified",this.onTimingChange),Mt.activePopup?.persistent?e.popup=void 0:(document.getElementById("popups")?.appendChild(this.popup),this.moveInterval=setInterval(()=>this.movePosition(),150),Mt.activePopup?.close(),Mt.activePopup=this)}movePosition(){const e=this.timingBox.backgroundObj.getBounds(),t=e.left+e.width/2,i=af[this.timingBox.event.type].width??150,r=i/2+15,n=window.innerWidth-i/2-15;this.popup.style.left=`${Ve(t,r,n)}px`;const a=document.getElementById("pixi").offsetTop+9,o=e.top+a+e.height/2;this.popup.style.top=`${e.top+e.height+a}px`,o+this.popup.clientHeight>window.innerHeight-15&&(this.popup.style.transform="translate(-50%, -100%)",this.popup.style.top=`${e.top-e.height/2+a}px`),setTimeout(()=>this.popup.style.transitionDuration="",10)}build(){const e=af[this.timingBox.event.type],t=document.createElement("div");t.classList.add("popup");const i=document.createElement("div");i.classList.add("popup-zoomer"),i.style.width=e.width?`${e.width}px`:"150px",i.style.backgroundColor=Sc(Os[this.timingBox.event.type].toString(16).padStart(6,"0"),"#333333",.75),this.zoomer=i,t.appendChild(i);const r=document.createElement("div");if(r.innerText=e.title,r.classList.add("popup-title"),i.appendChild(r),e.description){const u=document.createElement("div");u.innerText=e.description,i.appendChild(u),u.classList.add("popup-desc")}const n=document.createElement("div");n.classList.add("popup-grid"),i.appendChild(n),e.rows.forEach(u=>n.append(...this.buildRow(u)));const a=document.createElement("div");a.innerText="click to edit",a.style.marginTop="4px",a.style.height="10px",i.appendChild(a),a.classList.add("popup-desc"),this.editText=a;const o=document.createElement("div");o.classList.add("popup-options");const l=document.createElement("button");l.innerText="Ok",l.onclick=()=>{this.close(),this.onConfirm(this.timingBox.event)},l.classList.add("confirm"),o.append(l);const c=document.createElement("button");return c.innerText="Delete",c.onclick=()=>{this.modifyBox||this.timingData.delete([{type:this.timingBox.event.type,[this.timingBox.event.type=="ATTACKS"?"second":"beat"]:this.timingBox.event.type=="ATTACKS"?this.timingBox.event.second:this.timingBox.event.beat}]),this.close()},c.classList.add("delete"),o.append(c),i.append(o),t}buildRow(e){const t=structuredClone(this.timingBox.event),i=document.createElement("div");i.innerText=e.label,i.classList.add("popup-label");const r=[];switch(r.push(i),e.input.type){case"spinner":{const n=nt.create(t[e.key],e.input.step,e.input.precision,e.input.min,e.input.max);n.onChange=a=>{a!==void 0&&this.modifyEvent(e.key,a)},this.rows.push({data:e,el:n}),r.push(n.view);break}case"text":{const n=document.createElement("input");n.type="text",n.autocomplete="off",n.spellcheck=!1,n.onkeydown=a=>{a.key=="Enter"&&n.blur()},n.onblur=()=>{this.modifyEvent(e.key,n.value)},n.value=t[e.key],this.rows.push({data:e,el:n}),r.push(n);break}case"dropdown":{if(e.input.transformers){const n=e.input.transformers.deserialize,a=e.input.transformers.serialize,o=di.create(e.input.items,a(t[e.key]));o.onChange(l=>{this.modifyEvent(e.key,n(l))}),this.rows.push({data:e,el:o}),r.push(o.view)}else{const n=di.create(e.input.items,t[e.key]);n.onChange(a=>{this.modifyEvent(e.key,a)}),this.rows.push({data:e,el:n}),r.push(n.view)}break}case"checkbox":{const n=document.createElement("input");n.type="checkbox",n.checked=t[e.key],n.onchange=()=>{this.modifyEvent(e.key,n.checked)},this.rows.push({data:e,el:n}),r.push(n);break}}return r}modifyEvent(e,t){this.modifyBox?Object.assign(this.timingBox.event,{[e]:t}):this.timingData.modify([[structuredClone(this.timingBox.event),Object.assign(this.timingBox.event,{[e]:t})]])}updateValues(){const e=this.timingData.getEventAtBeat(this.timingBox.event.type,this.timingBox.event.beat,!1);if(!this.timingBox||!e||e.beat!=this.timingBox.event.beat){this.close();return}this.rows.forEach(t=>{switch(t.data.input.type){case"spinner":{t.el.setValue(e[t.data.key]);break}case"text":{t.el.value=e[t.data.key];break}case"dropdown":{const i=t.el;t.data.input.transformers?i.setSelected(t.data.input.transformers.serialize(e[t.data.key])):i.setSelected(e[t.data.key]);break}case"checkbox":{t.el.checked=e[t.data.key];break}}})}close(){this.persistent=!1,q.off("timingModified",this.onTimingChange),window.removeEventListener("click",this.clickOutside),clearInterval(this.moveInterval),this.popup.classList.add("exiting"),setTimeout(()=>this.popup.remove(),200),this.timingBox.popup=void 0,Mt.activePopup=void 0}select(){this.persistent=!0,this.zoomer.classList.add("selected"),this.editText.style.transform="scale(0)",this.editText.style.height="0px",setTimeout(()=>window.addEventListener("click",this.clickOutside),200)}detach(){clearInterval(this.moveInterval)}getEvent(){return this.cachedEvent}attach(e){clearInterval(this.moveInterval),this.moveInterval=setInterval(()=>this.movePosition(),150),this.timingBox=e,this.cachedEvent=this.timingBox.event}}const Bc={fontName:"Main",fontSize:15},Is={BPMS:55,STOPS:55,DELAYS:55,WARPS:55,FAKES:55,COMBOS:40,SPEEDS:80,LABELS:80,SCROLLS:55,TIMESIGNATURES:40,TICKCOUNTS:40,BGCHANGES:55,FGCHANGES:55,ATTACKS:55};class TC extends Ee{tracks=new Ee;renderer;timingBoxMap=new Map;wasEditingTiming=!1;boxPool=new oa({create:()=>{const e=new Ee;return e.textObj=new Re("",Bc),e.backgroundObj=new Gt,e.selection=new Gt("onlyBorder"),e.selection.tint=3841008,e.addChild(e.backgroundObj,e.textObj,e.selection),e}});ghostBox;timingDirty=!1;constructor(e){super(),this.renderer=e,this.boxPool.sortableChildren=!0,this.sortableChildren=!0,this.addChild(this.tracks,this.boxPool);const t=()=>this.timingDirty=!0;q.on("timingModified",t),this.on("destroyed",()=>q.off("timingModified",t))}update(e,t){this.renderer.chartManager.editTimingMode!=Oe.Add&&(this.ghostBox?.removeFromParent(),this.ghostBox?.destroy(),this.ghostBox=void 0),this.updateTracks(),this.updateBoxes(e,t)}createTrack(e,t){const i=Object.assign(new Le(te.WHITE),{alpha:0,width:Is[e],name:e,height:5e3,x:t,type:e,lastX:0,tint:2503250,targetAlpha:0});return i.anchor.y=.5,this.tracks.addChild(i),i}initializeBox(e,t){if(kt.stop(e.animationId),Object.assign(e,{event:t,isChartTiming:this.renderer.chart.timingData.isPropertyChartSpecific(t.type),lastX:void 0,lastAnchor:void 0,animationId:void 0,zIndex:t.beat,eventMode:"static"}),e.textObj.text=this.getLabelFromEvent(t),e.textObj.anchor.set(.5,.55),e.backgroundObj.width=e.textObj.width+10,e.backgroundObj.height=25,e.backgroundObj.position.x=-e.backgroundObj.width/2,e.backgroundObj.position.y=-25/2,e.selection.width=e.textObj.width+10,e.selection.height=25,e.selection.position=e.backgroundObj.position,e.popup=void 0,Mt.activePopup){const i=Mt.activePopup.getEvent();i.type=="ATTACKS"&&t.type=="ATTACKS"&&i.second==t.second&&(Mt.activePopup.attach(e),e.popup=Mt.activePopup),i.type!="ATTACKS"&&t.type!="ATTACKS"&&i.type==t.type&&i.beat==t.beat&&(Mt.activePopup.attach(e),e.popup=Mt.activePopup)}}addDragListeners(e,t){e.on("mouseenter",()=>{e?.popup?.persistent!==!0&&(this.renderer.chartManager.eventSelection.timingEvents.length>0||this.renderer.isDragSelecting()||(e.popup?.close(),this.renderer.chartManager.getMode()==X.Edit&&(new Mt(e,this.getTargetTimingData(e.event.isChartTiming)),e.popup&&(e.popup.onConfirm=()=>{this.renderer.chartManager.removeEventFromSelection(t)}))))}),e.on("mouseleave",()=>{e?.popup?.persistent!==!0&&e.popup?.close()});let i=0,r;const n=a=>{const o=r,l=this.toLocal(a.global);if(Math.abs(l.y-i)<32){this.renderer.chartManager.eventSelection.shift&&(this.renderer.chartManager.eventSelection.shift={beatShift:0});return}e.popup?.close();const c=this.renderer.getBeatFromYPos(l.y),u=w.chart.snap==0?1/1e3:w.chart.snap;let h=Math.round(c/u)*u;Math.abs(h-c)>Math.abs(c-o.beat)&&(h=o.beat),this.renderer.chartManager.eventSelection.shift||={beatShift:0},this.renderer.chartManager.eventSelection.shift.beatShift=Math.max(-Math.min(...this.renderer.chartManager.eventSelection.timingEvents.map(d=>d.beat)),h-o.beat)};e.on("pointerdown",a=>{if(_c(a)){this.renderer.chartManager.clearSelections(),this.renderer.chartManager.addEventToSelection(t),Mt.activePopup?.close();return}if(a.stopImmediatePropagation(),this.renderer.chartManager.isEventInSelection(t)?(a.getModifierState("Control")||a.getModifierState("Meta"))&&this.renderer.chartManager.removeEventFromSelection(t):(!a.getModifierState("Control")&&!a.getModifierState("Meta")&&!a.getModifierState("Shift")&&this.renderer.chartManager.clearSelections(),this.renderer.chartManager.addEventToSelection(t)),this.renderer.chartManager.getMode()==X.Edit&&this.renderer.chartManager.eventSelection.timingEvents.length==1&&(e?.popup||(Mt.activePopup?.close(),new Mt(e,this.getTargetTimingData(e.event.isChartTiming)),e.popup.onConfirm=()=>{this.renderer.chartManager.removeEventFromSelection(t)})),e.popup&&!a.getModifierState("Control")&&!a.getModifierState("Meta")&&!a.getModifierState("Shift")?e.popup.select():e.popup?.close(),i=e.y,r=t,this.renderer.chartManager.editTimingMode==Oe.Add)return;this.renderer.on("pointermove",n);const o=()=>{this.renderer.off("pointermove",n),this.renderer.off("pointerup",o),(this.renderer.chartManager.eventSelection.shift?.beatShift??0)!=0&&this.renderer.chartManager.modifyEventSelection(l=>(l.type=="ATTACKS"&&(l.second=this.renderer.chart.timingData.getSecondsFromBeat(l.beat+this.renderer.chartManager.eventSelection.shift.beatShift)),l.beat+=this.renderer.chartManager.eventSelection.shift.beatShift,l)),this.renderer.chartManager.eventSelection.shift=void 0};this.renderer.on("pointerup",o)})}updateTracks(){const e=w.chart.timingEventOrder.left,t=w.chart.timingEventOrder.right,i=this.renderer.chartManager.editTimingMode!=Oe.Off&&this.renderer.chartManager.getMode()==X.Edit;this.tracks.children.forEach(n=>n.visible=!1);let r=-this.renderer.chart.gameType.notefieldWidth*.5-128;for(let n=e.length-1;n>=0;n--){const a=e[n],o=this.tracks.getChildByName(a)??this.createTrack(a,r);o.visible=!0,o.lastX!=r&&(o.lastX=r,o.targetAlpha=n%2==0?.1:0,kt.animate(o,{0:{x:"inherit","anchor.x":"inherit"},1:{x:r,"anchor.x":1}},.3,Kt(0,0,.16,1.01),()=>{},`track-${a}-x`),kt.animate(o,{0:{alpha:"inherit"},1:{alpha:i?o.targetAlpha:0}},.3,Kt(0,0,.16,1.01),()=>{},`track-${a}-alpha`)),r-=Is[a]}r=this.renderer.chart.gameType.notefieldWidth*.5+128;for(let n=0;n{},`track-${a}-x`),kt.animate(o,{0:{alpha:"inherit"},1:{alpha:i?o.targetAlpha:0}},.3,Kt(0,0,.16,1.01),()=>{},`track-${a}-alpha`)),r+=Is[a]}if(this.wasEditingTiming!=i){this.wasEditingTiming=i;for(const n of this.tracks.children)kt.animate(n,{0:{alpha:"inherit"},1:{alpha:i?n.targetAlpha:0}},.3,Kt(0,0,.16,1.01),()=>{},`track-${n.type}-alpha`)}}updateBoxes(e,t){this.timingDirty&&(this.timingBoxMap.clear(),this.boxPool.destroyAll(),this.timingDirty=!1);const i=this.renderer.chartManager.editTimingMode!=Oe.Off&&this.renderer.chartManager.getMode()==X.Edit;this.boxPool.visible=this.renderer.shouldDisplayBarlines(),this.ghostBox&&(this.ghostBox.visible=this.renderer.shouldDisplayBarlines()&&i);for(const n of this.renderer.chart.timingData.getTimingData()){if(tn.beat)&&!this.timingBoxMap.has(n)){const a=this.boxPool.createChild();if(!a)break;this.initializeBox(a,n),this.addDragListeners(a,n),this.timingBoxMap.set(n,a)}}const r={beat:-Number.MAX_SAFE_INTEGER,second:-Number.MAX_SAFE_INTEGER,leftOffset:0,rightOffset:0};for(const[n,a]of this.timingBoxMap.entries()){if(n.beatt||!w.chart.timingEventOrder.left.includes(n.type)&&!w.chart.timingEventOrder.right.includes(n.type)){this.timingBoxMap.delete(n),a.popup?.persistent?a.popup?.detach():a.popup?.close(),this.boxPool.destroyChild(a);continue}let o=0,l=0;const c=a.backgroundObj.width,u=w.chart.timingEventOrder.right.includes(n.type)?"right":"left";i?(o=this.tracks.getChildByName(n.type)?.x??a.x,o+=Is[n.type]/2*(o>0?1:-1),l=.5):(o=(u=="right"?1:-1)*(this.renderer.chart.gameType.notefieldWidth*.5+80),u=="left"&&(o-=30),(r.beat!=n.beat||n.second&&r.second!=n.second)&&(r.leftOffset=0,r.rightOffset=0,r.beat=n.beat,r.second=n.second),u=="left"?(o-=r.leftOffset,r.leftOffset+=c+5):(o+=r.rightOffset,r.rightOffset+=c+5),l=u=="right"?0:1),a.lastX===void 0||a.lastAnchor===void 0?(a.x=o,a.pivot.x=(l-.5)*c):(a.lastX!=o||a.lastAnchor!=l)&&(a.animationId=kt.animate(a,{0:{x:"inherit","pivot.x":"inherit"},1:{x:o,"pivot.x":(l-.5)*c}},.3,Kt(0,0,.16,1.01),()=>{},a.animationId)),a.lastX=o,a.lastAnchor=l,a.y=w.chart.CMod&&n.type=="ATTACKS"?this.renderer.getYPosFromSecond(n.second):this.renderer.getYPosFromBeat(n.beat);const h=this.renderer.chartManager.getMode()!=X.Play&&this.renderer.chartManager.isEventInSelection(n);if(a.backgroundObj.tint=h?ty(Os[n.type]??0,Math.sin(Date.now()/320)*.4+1.5):Os[n.type]??0,a.selection.alpha=h?1:0,a.visible=!h||!this.renderer.chartManager.eventSelection.shift,this.renderer.chartManager.editTimingMode!=Oe.Off){const d=this.renderer.selectionTest(a);!h&&d&&this.renderer.chartManager.addEventToDragSelection(n),h&&!d&&this.renderer.chartManager.removeEventFromDragSelection(n)}}}updateGhostEvent(e){const t=w.chart.snap==0?.001:w.chart.snap,i=Math.round(this.renderer.getBeatFromYPos(e.y)/t)*t,r=this.ghostBox?.popup?this.ghostBox.event.type:this.getClosestTrack(e.x)?.name;if(!r){this.ghostBox?.removeFromParent(),this.ghostBox?.destroy(),this.ghostBox=void 0;return}if(!this.ghostBox){const o=new Ee;o.textObj=new Re("",Bc),o.backgroundObj=new Gt,o.selection=new Gt("onlyBorder"),o.guideLine=new Le(te.WHITE),o.selection.tint=3841008,o.selection.alpha=0,o.addChild(o.guideLine,o.backgroundObj,o.textObj,o.selection),this.addChild(o),o.visible=this.renderer.shouldDisplayBarlines(),o.textObj.anchor.set(.5,.55),o.backgroundObj.height=25,o.selection.height=25,o.guideLine.height=1,o.guideLine.anchor.y=.5,this.ghostBox=o}!this.ghostBox?.popup&&(this.ghostBox.event?.beat!=i||this.ghostBox.event?.type!=r)&&(this.ghostBox.event=structuredClone(this.renderer.chart.timingData.getEventAtBeat(r,i))??this.renderer.chart.timingData.getDefaultEvent(r,i),this.ghostBox.event.beat=i,r=="ATTACKS"&&(this.ghostBox.event.second=this.renderer.chart.getSecondsFromBeat(i)),this.ghostBox.textObj.text=this.getLabelFromEvent(this.ghostBox.event),this.ghostBox.backgroundObj.width=this.ghostBox.textObj.width+10,this.ghostBox.selection.width=this.ghostBox.textObj.width+10),this.ghostBox.alpha=this.ghostBox?.popup?1:.4,this.ghostBox.selection.alpha=this.ghostBox?.popup?1:0,this.ghostBox.name=r;const n=this.renderer.getYPosFromBeat(this.ghostBox?.popup?this.ghostBox.event.beat:i);let a=this.tracks.getChildByName(r).x;a+=Is[r]/2*(a>0?1:-1),this.ghostBox.position.x=a,this.ghostBox.backgroundObj.tint=Os[r]??0,this.ghostBox.backgroundObj.position.x=-this.ghostBox.backgroundObj.width/2,this.ghostBox.backgroundObj.position.y=-25/2,this.ghostBox.guideLine.anchor.x=a<0?0:1,this.ghostBox.guideLine.width=Math.abs(this.ghostBox.position.x)+192-this.ghostBox.backgroundObj.width/2,this.ghostBox.guideLine.position.x=(a<0?1:-1)*this.ghostBox.backgroundObj.width/2,this.ghostBox.y=n,this.ghostBox.selection.position=this.ghostBox.backgroundObj.position}placeGhostEvent(){if(!this.ghostBox)return;const e=this.renderer.chart.timingData.getEventAtBeat(this.ghostBox.event.type,this.ghostBox.event.beat,!1);this.ghostBox.event.type=="ATTACKS"&&this.ghostBox.event.second==e?.second||this.ghostBox.event.type!="ATTACKS"&&this.ghostBox.event.beat==e?.beat||(this.renderer.chartManager.clearSelections(),this.ghostBox.event.isChartTiming=this.renderer.chart.timingData.isPropertyChartSpecific(this.ghostBox.event.type),new Mt(this.ghostBox,this.getTargetTimingData(this.ghostBox.event.isChartTiming),!0),this.ghostBox.popup?.select(),this.ghostBox.popup.onConfirm=t=>{this.getTargetTimingData(this.ghostBox.event.isChartTiming).insert([t])})}getClosestTrack(e){let t=Number.MAX_SAFE_INTEGER,i=this.tracks.children[0];for(const r of this.tracks.children){const n=Math.abs(r.x+(.5-r.anchor.x)*r.width-e);ni.width))return i}getLabelFromEvent(e){let t="";switch(e.type){case"BPMS":case"STOPS":case"WARPS":case"DELAYS":case"TICKCOUNTS":case"FAKES":case"SCROLLS":t=ne(e.value,3).toString();break;case"SPEEDS":t=`${ne(e.value,3)}/${ne(e.delay,3)}/${e.unit}`;break;case"LABELS":t=e.value;break;case"TIMESIGNATURES":t=`${ne(e.upper,3)}/${ne(e.lower,3)}`;break;case"COMBOS":t=`${ne(e.hitMult,3)}/${ne(e.missMult,3)}`;break;case"BGCHANGES":case"FGCHANGES":t=e.file;break;case"ATTACKS":t=`${e.mods}`}return t}getTargetTimingData(e){return e?this.renderer.chart.timingData:this.renderer.chart.timingData.simfileTimingData}}class SC extends Ee{children=[];renderer;timingBoxMap=new Map;trackPosCache=new Map;timingBoxPool=new oa({create:()=>{const e=new Ee;return e.guideLine=new Le(te.WHITE),e.textObj=new Re("",Bc),e.backgroundObj=new Gt,e.addChild(e.guideLine,e.backgroundObj,e.textObj),e}});constructor(e){super(),this.renderer=e,this.timingBoxPool.sortableChildren=!0,this.addChild(this.timingBoxPool)}update(e,t){if(!this.renderer.chartManager.eventSelection.shift){this.timingBoxPool.destroyAll(),this.timingBoxMap.clear(),this.trackPosCache.clear();return}const i=this.renderer.chartManager.eventSelection.shift.beatShift;for(const r of this.renderer.chartManager.eventSelection.timingEvents)if(!(tr.beat+i)&&!this.timingBoxMap.has(r)){const n=this.timingBoxPool.createChild();if(!n)continue;this.timingBoxMap.set(r,n);let a="";switch(r.type){case"BPMS":case"STOPS":case"WARPS":case"DELAYS":case"TICKCOUNTS":case"FAKES":case"SCROLLS":a=ne(r.value,3).toString();break;case"SPEEDS":a=`${ne(r.value,3)}/${ne(r.delay,3)}/${r.unit}`;break;case"LABELS":a=r.value;break;case"TIMESIGNATURES":a=`${ne(r.upper,3)}/${ne(r.lower,3)}`;break;case"COMBOS":a=`${ne(r.hitMult,3)}/${ne(r.missMult,3)}`;break;case"BGCHANGES":case"FGCHANGES":a=r.file;break;case"ATTACKS":a=`${r.mods} (${r.endType}=${r.value})`}const o=w.chart.timingEventOrder.right.includes(r.type)?"right":"left";if(Object.assign(n,{alpha:.4,isChartTiming:this.renderer.chart.timingData.isPropertyChartSpecific(r.type),zIndex:r.beat}),n.textObj.text=a,n.textObj.anchor.set(.5,.55),n.backgroundObj.width=n.textObj.width+10,n.backgroundObj.height=25,n.backgroundObj.tint=Os[r.type]??0,n.backgroundObj.position.x=-n.backgroundObj.width/2,n.backgroundObj.position.y=-n.backgroundObj.height/2,n.guideLine.height=1,n.guideLine.anchor.set(o=="left"?0:1,.5),n.guideLine.width=Math.abs(n.position.x)+192-n.backgroundObj.width/2,n.guideLine.position.x=(o=="left"?1:-1)*n.backgroundObj.width/2,this.renderer.chartManager.editTimingMode!=Oe.Off){let l=this.getTrackPos(r.type);l+=Is[r.type]/2*(l>0?1:-1),n.position.x=l,n.pivot.x=0}else{let l=(o=="right"?1:-1)*(this.renderer.chart.gameType.notefieldWidth*.5+80);o=="left"&&(l-=30),n.position.x=l,n.pivot.x=o=="right"?-n.backgroundObj.width/2:n.backgroundObj.width/2}}for(const[r,n]of this.timingBoxMap.entries()){if(tr.beat+i){this.timingBoxPool.destroyChild(n),this.timingBoxMap.delete(r);continue}n.y=w.chart.CMod&&r.second?this.renderer.getYPosFromSecond(r.second):this.renderer.getYPosFromBeat(r.beat+i)}}getTrackPos(e){if(this.trackPosCache.has(e))return this.trackPosCache.get(e);const t=w.chart.timingEventOrder.left,i=w.chart.timingEventOrder.right;let r=-this.renderer.chart.gameType.notefieldWidth*.5-128;for(let n=t.length-1;n>=0;n--){const a=t[n];this.trackPosCache.set(a,r),r-=Is[a]}r=this.renderer.chart.gameType.notefieldWidth*.5+128;for(let n=0;n{if(this.editingCol!=-1){const a=w.chart.snap==0?.020833333333333332:w.chart.snap,o=Math.round(this.getBeatFromYPos(this.lastMousePos.y)/a)*a;this.chartManager.editHoldBeat(this.editingCol,o,n.shiftKey)}};let i=0;const r=()=>{if(!this.chartManager.selection.shift&&!this.selectionBounds||i==0)return;const n=this.getYPosFromBeat(Math.max(0,this.chartManager.getBeat()+i));this.chartManager.setBeat(Math.max(0,this.chartManager.getBeat()+i)),this.selectionBounds&&(w.chart.reverse?this.selectionBounds.start.y-=w.chart.receptorYPos/w.chart.zoom+n:this.selectionBounds.start.y+=w.chart.receptorYPos/w.chart.zoom-n,this.selectionBoundary.update())};this.chartManager.app.ticker.add(r),window.addEventListener("keydown",t),this.on("destroyed",()=>{window.removeEventListener("keydown",t),this.removeAllListeners(),this.chartManager.app.ticker.remove(r)}),this.on("pointerdown",n=>{_c(n)||this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.View||(this.chartManager.editTimingMode==Oe.Add&&this.lastMousePos?this.timingTracks.placeGhostEvent():this.chartManager.editTimingMode==Oe.Off&&w.chart.mousePlacement&&this.lastMouseBeat!=-1&&this.lastMouseCol!=-1&&!n.getModifierState("Shift")?(this.chartManager.clearSelections(),this.editingCol=this.lastMouseCol,this.chartManager.setNote(this.lastMouseCol,"mouse",this.lastMouseBeat)):(!n.getModifierState("Control")&&!n.getModifierState("Meta")&&!n.getModifierState("Shift")&&this.chartManager.clearSelections(),this.chartManager[this.chartManager.editTimingMode==Oe.Off?"startDragSelection":"startDragEventSelection"](),this.selectionBounds={start:this.toLocal(n.global),end:this.toLocal(n.global)},this.selectionBoundary.update()))}),this.on("mousemove",n=>{if(this.lastMousePos=this.toLocal(n.global),this.editingCol!=-1){const a=w.chart.snap==0?.020833333333333332:w.chart.snap,o=Math.round(this.getBeatFromYPos(this.lastMousePos.y)/a)*a;this.chartManager.editHoldBeat(this.editingCol,o,n.shiftKey)}this.selectionBounds&&(this.selectionBounds.end=this.toLocal(n.global),this.selectionBoundary.update()),i=Math.max(0,this.lastMousePos.y-this.getLowerBound()+100)/600,this.lastMousePos.y<0&&(i=Math.min(0,this.lastMousePos.y-this.getUpperBound()-100)/600),w.chart.reverse&&(i=Math.max(0,this.getUpperBound()-this.lastMousePos.y+100)/600,this.lastMousePos.y>0&&(i=Math.min(0,this.getLowerBound()-this.lastMousePos.y-100)/600))}),this.on("pointerup",()=>{this.editingCol!=-1&&(this.chartManager.endEditing(this.editingCol),this.editingCol=-1),this.chartManager[this.chartManager.editTimingMode==Oe.Off?"endDragSelection":"endDragEventSelection"](),this.selectionBounds=void 0,this.selectionBoundary.update(),i=0})}isDragSelecting(){return!!this.selectionBounds}doJudgement(e,t,i){this.chartManager.getMode()==X.Play&&(this.judgement.doJudge(t,i),this.timingBar.addBar(t,i)),this.notefield.onJudgement(e.col,i)}startPlay(){this.notefield.startPlay()}endPlay(){this.notefield.endPlay(),this.timingBar.reset(),this.judgement.reset()}update(){if(this.destroyed)return;this.speedMult=w.chart.doSpeedChanges?this.getCurrentSpeedMult():1;const e=this.getTopOnScreenBeat(),t=this.getBottomOnScreenBeat(),i=Math.min(e,t),r=Math.max(e,t);if(this.scale.x=w.chart.zoom,this.scale.y=w.chart.zoom,this.children.forEach(n=>n.update(i,r)),this.notefield.alpha=this.chartManager.editTimingMode==Oe.Off||this.chartManager.getMode()==X.Play?1:.3,w.chart.mousePlacement&&this.lastMousePos&&this.chartManager.getMode()!=X.Play){const n=w.chart.snap==0?.020833333333333332:w.chart.snap,a=Math.round(this.getBeatFromYPos(this.lastMousePos.y)/n)*n;let o=-1;for(let l=0;lu-c/2){o=l;break}}(a!=this.lastMouseBeat||o!=this.lastMouseCol||this.chartManager.getEditingNoteType()!=this.lastNoteType)&&(this.lastMouseBeat=a,this.lastMouseCol=o,this.lastNoteType=this.chartManager.getEditingNoteType(),this.editingCol!=-1&&this.chartManager.editHoldBeat(this.editingCol,a,!1),o===-1?(this.lastMouseBeat=-1,this.lastMouseCol=-1,this.notefield.setGhostNote()):this.notefield.setGhostNote(this.chart.computeNote({beat:a,col:this.lastMouseCol,type:this.chartManager.getEditingNoteType()})))}this.lastMousePos&&this.chartManager.editTimingMode==Oe.Add&&this.timingTracks.updateGhostEvent(this.lastMousePos)}getTimeWithOffset(){let e=this.chartManager.getTime();return(this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.Record)&&(e+=w.play.offset*w.audio.rate),e}getBeatWithOffset(){let e=this.chartManager.getBeat();return(this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.Record)&&(e=this.chart.getBeatFromSeconds(this.getTimeWithOffset())),e}getVisualTime(){let e=this.chartManager.getTime();return(this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.Record)&&(e+=(w.play.offset+w.play.visualOffset)*w.audio.rate),e}getVisualBeat(){let e=this.chartManager.getBeat();return(this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.Record)&&(e=this.chart.getBeatFromSeconds(this.getVisualTime())),e}getYPosFromBeat(e){const t=this.getVisualTime(),i=this.getVisualBeat(),r=w.chart.reverse?-1:1;return w.chart.CMod?(this.chart.getSecondsFromBeat(e)-t)*this.getSecondsToPixelsRatio()*r+this.getActualReceptorYPos():i==e?this.getActualReceptorYPos():(w.chart.doSpeedChanges?this.chart.timingData.getEffectiveBeat(e)-this.chart.timingData.getEffectiveBeat(i):e-i)*this.getEffectiveBeatsToPixelsRatio()*r+this.getActualReceptorYPos()}getYPosFromSecond(e){const t=this.getVisualTime(),i=w.chart.reverse?-1:1;return w.chart.CMod?(e-t)*this.getSecondsToPixelsRatio()*i+this.getActualReceptorYPos():this.getYPosFromBeat(this.chart.timingData.getBeatFromSeconds(e))}getSecondFromYPos(e){const t=w.chart.reverse?-1:1;if(w.chart.CMod){const i=this.getPixelsToSecondsRatio(),r=this.getVisualTime(),a=(e-this.getActualReceptorYPos())*i*t;return r+a}return this.chart.getSecondsFromBeat(this.getBeatFromYPos(e))}getBeatFromYPos(e,t){const i=this.getVisualBeat(),r=w.chart.reverse?-1:1;if(w.chart.CMod)return this.chart.getBeatFromSeconds(this.getSecondFromYPos(e));const a=(e-this.getActualReceptorYPos())*this.getPixelsToEffectiveBeatsRatio()*r;if(w.chart.doSpeedChanges&&!t){const o=this.chart.timingData.getEffectiveBeat(i)+a;return this.chart.getBeatFromEffectiveBeat(o)}return i+a}getColumnFromXPos(e){const t=this.chart.gameType;let i=null;for(let r=0;ri)return r-1;i=n}return t.numCols-1}getActualReceptorYPos(){return w.chart.receptorYPos/w.chart.zoom*(w.chart.reverse?-1:1)}getEffectiveBeatsToPixelsRatio(){return w.chart.speed/100*64*this.speedMult}getPixelsToEffectiveBeatsRatio(){return 1/this.getEffectiveBeatsToPixelsRatio()}getSecondsToPixelsRatio(){return w.chart.speed/100*64*4}getPixelsToSecondsRatio(){return 1/this.getSecondsToPixelsRatio()}isNegScroll(e){return w.chart.doSpeedChanges&&(this.speedMult<0||(this.chart.timingData.getEventAtBeat("SCROLLS",e)?.value??1)<0||(this.chart.timingData.getEventAtBeat("BPMS",e)?.value??120)<0)}getUpperBound(){return-this.y/w.chart.zoom-64}getLowerBound(){return(this.chartManager.app.renderer.screen.height-this.y)/w.chart.zoom+64}findFirstOnScreenScroll(){const e=[...this.chart.timingData.getTimingData("SCROLLS")];e[0]?.beat!=0&&e.splice(0,0,{beat:0,value:e[0]?.value??1,type:"SCROLLS"});let t=Bt(e,this.getVisualBeat()-w.chart.maxDrawBeatsBack,i=>i.beat);for(;tr.beat);const i=Bt(e,this.getVisualBeat()-w.chart.maxDrawBeatsBack,r=>r.beat);for(;t>=i;){const r=e[t];t--;const n=r===void 0?-1/0*this.getScrollDirection(e[0]?.value??1):this.getYPosFromBeat(r.beat??0),a=e[t+2]===void 0?1/0*this.getScrollDirection(r.value):this.getYPosFromBeat(e[t+2].beat);if(this.isAreaOnScreen(n,a))return r}return{beat:0,value:1,type:"SCROLLS"}}getTopOnScreenBeat(){if(w.chart.waveform.speedChanges&&!w.chart.CMod&&w.chart.doSpeedChanges){const e=this.findFirstOnScreenScroll(),t=1/Math.abs(this.getEffectiveBeatsToPixelsRatio())*w.chart.zoom,i=this.getYPosFromBeat(e.beat),r=t/Math.abs(e.value)*w.chart.zoom,n=this.getScrollDirection(e.value),a=n==1?this.getUpperBound():this.getLowerBound(),o=n*(a-i)*r+e.beat;return Math.max(this.getVisualBeat()-w.chart.maxDrawBeatsBack,o)}return w.chart.CMod?this.getBeatFromYPos(this.getUpperBound()):Math.max(this.getVisualBeat()-w.chart.maxDrawBeatsBack,this.getBeatFromYPos(this.getUpperBound()))}getBottomOnScreenBeat(){if(w.chart.waveform.speedChanges&&!w.chart.CMod&&w.chart.doSpeedChanges){const e=this.findLastOnScreenScroll(),t=this.getCurrentSpeedMult(),i=100/w.chart.speed/Math.abs(t)/64/w.chart.zoom,r=this.getYPosFromBeat(e.beat),n=i/Math.abs(e.value)*w.chart.zoom,a=this.getScrollDirection(e.value),o=a==1?this.getLowerBound():this.getUpperBound(),l=a*(o-r)*n+e.beat;return Math.min(this.getVisualBeat()+w.chart.maxDrawBeats,l)}return w.chart.CMod?this.getBeatFromYPos(this.getLowerBound()):Math.min(this.getVisualBeat()+w.chart.maxDrawBeats,this.getBeatFromYPos(this.getLowerBound()))}isAreaOnScreen(e,t){ti}getCurrentSpeedMult(){return this.chart.timingData.getSpeedMult(this.getVisualBeat(),this.getVisualTime())}getScrollDirection(e){let t=1;return this.getCurrentSpeedMult()<0&&(t*=-1),w.chart.reverse&&(t*=-1),e<0&&(t*=-1),t}getUpperBoundBeat(){if(w.chart.waveform.speedChanges&&!w.chart.CMod&&w.chart.doSpeedChanges){const e=w.chart.speed,t=this.chart.timingData.getSpeedMult(this.getVisualBeat(),this.getVisualTime()),i=t>=0!=w.chart.reverse?1:-1,r=this.chart.timingData.getTimingData("SCROLLS"),n=100/e/Math.abs(t)/64/w.chart.zoom,a=this.getUpperBound(),o=this.getLowerBound();let l=Bt(r,this.getVisualBeat()-w.chart.maxDrawBeatsBack,f=>f.beat);for(this.getVisualBeat()-w.chart.maxDrawBeatsBack0&&b>a&&(ga||!r[l-1]||r[l-1].beat0?r[l-1]?.value==0&&this.getYPosFromBeat(r[l-1].beat)>m?this.getVisualBeat()-w.chart.maxDrawBeatsBack:Math.max(this.getVisualBeat()-w.chart.maxDrawBeatsBack,c+d*(m-u)):r[l-1]?.value==0&&this.getYPosFromBeat(r[l-1].beat)=0!=w.chart.reverse?1:-1,r=this.chart.timingData.getTimingData("SCROLLS"),n=100/e/Math.abs(t)/64/w.chart.zoom,a=this.getUpperBound(),o=this.getLowerBound();let l=Bt(r,this.getVisualBeat()+w.chart.maxDrawBeats,f=>f.beat);for(;l=0&&(r[l].beat??0)>this.getVisualBeat()-w.chart.maxDrawBeatsBack;){const f=r[l],g=this.getYPosFromBeat(f?.beat??0),y=r[l+1]?.beat??this.getVisualBeat()+w.chart.maxDrawBeats,b=this.getYPosFromBeat(y);if((f?.value??1)*i>0&&go||!r[l+1]||r[l+1].beat>this.getVisualBeat()+w.chart.maxDrawBeatsBack||r[l+1].value==0)||(f?.value??1)*i<0&&g>o&&(bthis.getVisualBeat()+w.chart.maxDrawBeatsBack||r[l+1].value==0))break;l--}const c=r[l]?.beat??0,u=this.getYPosFromBeat(c),h=r[l]?.value??1,d=n/Math.abs(h)*w.chart.zoom,p=w.chart.reverse?o:a,m=w.chart.reverse?a:o;return h*i>0?r[l+1]?.value==0&&this.getYPosFromBeat(r[l+1].beat)p?this.getVisualBeat()+w.chart.maxDrawBeats:Math.min(this.getVisualBeat()+w.chart.maxDrawBeats,c+d*(u-p))}return w.chart.CMod?this.getBeatFromYPos(this.getLowerBound()):Math.min(this.getVisualBeat()+w.chart.maxDrawBeats,this.getBeatFromYPos(this.getLowerBound()))}selectionTest(e){if(!this.selectionBounds)return!1;const t=this.selectionBoundary.getBounds(),i=e.getBounds(),r=16*w.chart.zoom;return t.x+t.width>i.x+r&&t.xi.y+r&&t.y{const u=o,h=this.toLocal(c.global);if(Math.abs(h.y-a-n)**2+Math.abs(h.x-r)**2<32*32){this.chartManager.selection.shift&&(this.chartManager.selection.shift={columnShift:0,beatShift:0});return}const d=this.getBeatFromYPos(h.y-a),p=w.chart.snap==0?1/48:w.chart.snap;let m=Math.round(d/p)*p;Math.abs(m-d)>Math.abs(d-u.beat)&&(m=u.beat);const f=this.getColumnFromXPos(h.x);this.chartManager.selection.shift||={columnShift:0,beatShift:0},i!=f-u.col&&(i=f-u.col,this.chartManager.selection.notes.every(g=>{const y=g.col+i;return y>=0&&yg.beat)),m-u.beat)};e.on("pointerdown",c=>{if(this.chartManager.getMode()==X.View)return;if(_c(c)){this.chartManager.isNoteInSelection(t)||(this.chartManager.clearSelections(),this.chartManager.addNoteToSelection(t)),qS.open(this.chartManager.app,c),c.preventDefault();return}if(w.chart.mousePlacement&&!c.getModifierState("Meta")&&!c.getModifierState("Control")&&!c.getModifierState("Shift")&&!this.chartManager.isNoteInSelection(t))return;c.stopImmediatePropagation(),this.chartManager.isNoteInSelection(t)?(c.getModifierState("Control")||c.getModifierState("Meta"))&&this.chartManager.removeNoteFromSelection(t):(!c.getModifierState("Control")&&!c.getModifierState("Meta")&&!c.getModifierState("Shift")&&this.chartManager.clearSelections(),this.chartManager.addNoteToSelection(t)),r=e.x,n=e.y,a=this.toLocal(c.global).y-e.y,o=t,this.on("pointermove",l);const u=()=>{this.off("pointermove",l),this.off("pointerup",u),((this.chartManager.selection.shift?.beatShift??0)!=0||(this.chartManager.selection.shift?.columnShift??0)!=0)&&this.chartManager.modifySelection(h=>(h.beat+=this.chartManager.selection.shift.beatShift,h.col+=this.chartManager.selection.shift.columnShift,h)),this.chartManager.selection.shift=void 0};this.on("pointerup",u)}),e.on("destroyed",()=>{e?.removeAllListeners()})}getNotefield(){return this.notefield}swapNoteskin(e){w.chart.noteskin.name=e,w.chart.lastNoteskins[this.chart.gameType.id]=e,this.reloadNotefield()}reloadNotefield(){const e=new rf(this);this.addChildAt(e,this.children.indexOf(this.notefield)),this.notefield.destroy(),this.notefield=e}getSelectionBounds(){return this.selectionBounds}shouldDisplayBarlines(){return(this.chartManager.getMode()!=X.Play||!w.play.hideBarlines)&&Be.barlines}}class bd extends AudioBufferSourceNode{started=!1;start(e,t,i){this.started||super.start(e,t,i),this.started=!0}stop(e){this.started&&super.stop(e),this.started=!1}static create(e){const t=e;return t.started=!1,Object.setPrototypeOf(t,bd.prototype),t}}class MC extends BiquadFilterNode{enabled=!1;static create(e){const t=e;return t.enabled=!1,t}}class so{_audioAnalyzer;_filteredAudioAnalyzer;_freqData;_filteredFreqData;_gainNode;type;_audioContext=new AudioContext;_source;_playbackTime=0;_startTimestamp=0;_rate=1;_isPlaying=!1;_buffer;_filteredBuffer;_loadedBuffer;_delay;_loadListeners=[];_updateListeners=[];_volume=1;_destroyed=!1;_renderTimeout;_filters=[this.createFilter({type:"highpass",frequency:20,Q:.71}),this.createFilter({type:"lowshelf",frequency:75,gain:0}),this.createFilter({type:"peaking",frequency:100,gain:0,Q:.6}),this.createFilter({type:"peaking",frequency:250,gain:0,Q:.3}),this.createFilter({type:"peaking",frequency:1040,gain:0,Q:.41}),this.createFilter({type:"peaking",frequency:2500,gain:0,Q:.2}),this.createFilter({type:"highshelf",frequency:7500,gain:0}),this.createFilter({type:"lowpass",frequency:2e4,Q:.71})];_filtersEnabled=!1;loaded;constructor(e,t){this.type=t??"",this._filters[0].gain.value=-25,this._audioAnalyzer=this._audioContext.createAnalyser(),this._audioAnalyzer.fftSize=4096,this._audioAnalyzer.maxDecibels=0,this._freqData=new Uint8Array(this._audioAnalyzer.frequencyBinCount),this._filteredAudioAnalyzer=this._audioContext.createAnalyser(),this._filteredAudioAnalyzer.fftSize=4096,this._filteredAudioAnalyzer.maxDecibels=0,this._filteredFreqData=new Uint8Array(this._filteredAudioAnalyzer.frequencyBinCount),this._gainNode=this._audioContext.createGain(),this._buffer=this._audioContext.createBuffer(2,1,44100),this._filteredBuffer=this._audioContext.createBuffer(2,1,44100),this._loadedBuffer=this._audioContext.createBuffer(2,1,44100),this.initSource(),this.loaded=new Promise(i=>{e&&_e.create("Loading audio..."),this.decodeData(e).then(r=>{if(r)return this._loadedBuffer=r,_e.create("Loaded audio"),r}).then(async r=>(await this.renderBuffer(r),await this.renderFilteredBuffer(r),r)).catch(r=>{r.name=="EncodingError"?_e.createFormatted("Failed to load audio: file format not supported","error"):_e.createFormatted("Failed to load audio: "+r.message,"error")}).finally(()=>{this.initSource(),this.callLoadListeners(),this.callUpdateListeners(),i()})})}async renderBuffer(e){if(!e)return;const t=new OfflineAudioContext(e.numberOfChannels,e.length,e.sampleRate),i=t.createBufferSource();return i.buffer=e,i.connect(t.destination),i.start(),await t.startRendering().then(r=>{this._buffer=r}).catch(()=>{_e.createFormatted("Failed to load audio: audio rendering failed","error")})}async renderFilteredBuffer(e){if(!e)return;const t=new OfflineAudioContext(e.numberOfChannels,e.length,e.sampleRate),i=t.createBufferSource();i.buffer=e;let r=i;for(const n of this._filters){if(!n.enabled)continue;const a=t.createBiquadFilter();a.type=n.type,a.Q.setValueAtTime(n.Q.value,0),a.frequency.setValueAtTime(n.frequency.value,0),a.gain.setValueAtTime(n.gain.value,0),r.connect(a),r=a}return r.connect(t.destination),i.start(),await t.startRendering().then(n=>{this._filteredBuffer=n}).catch(()=>{_e.createFormatted("Failed to load audio: audio rendering failed","error")})}createFilter(e){const t=MC.create(this._audioContext.createBiquadFilter());return t.type=e.type,e.Q!==void 0&&(t.Q.value=e.Q),e.gain!==void 0&&(t.gain.value=e.gain),e.frequency!==void 0&&(t.frequency.value=e.frequency),t}getFilters(){return this._filters}getFilter(e){return this._filters[e]}updateFilter(e,t){this._filters[e]&&(t.Q!==void 0&&(this._filters[e].Q.value=t.Q),t.frequency!==void 0&&(this._filters[e].frequency.value=t.frequency),t.gain!==void 0&&(this._filters[e].gain.value=t.gain),clearTimeout(this._renderTimeout),this._renderTimeout=setTimeout(()=>this.renderFilteredBuffer(this._loadedBuffer).then(()=>this.callUpdateListeners()),500))}enableFilter(e){this._filters[e].enabled=!0,this.initSource(),clearTimeout(this._renderTimeout),this._renderTimeout=setTimeout(()=>this.renderFilteredBuffer(this._loadedBuffer).then(()=>this.callUpdateListeners()),500),this._filtersEnabled=!0}disableFilter(e){this._filters[e].enabled=!1,this.initSource(),clearTimeout(this._renderTimeout),this._renderTimeout=setTimeout(()=>this.renderFilteredBuffer(this._loadedBuffer).then(()=>this.callUpdateListeners()),500),this._filtersEnabled=this._filters.some(t=>t.enabled)}hasFilters(){return this._filtersEnabled}onLoad(e){this._loadListeners.push(e)}offLoad(e){this._loadListeners=this._loadListeners.filter(t=>t!=e)}onUpdate(e){this._updateListeners.push(e)}offUpdate(e){this._updateListeners=this._updateListeners.filter(t=>t!=e)}getSongLength(){return this._buffer.length/this._buffer.sampleRate}getFrequencyData(){return this._destroyed?new Uint8Array:(this._audioAnalyzer.getByteFrequencyData(this._freqData),this._freqData)}getFilteredFrequencyData(){return this._destroyed?new Uint8Array:(this._filteredAudioAnalyzer.getByteFrequencyData(this._filteredFreqData),this._filteredFreqData)}getSampleRate(){return this._buffer.sampleRate}getFFTSize(){return this._audioAnalyzer.fftSize}getRawData(){if(this._destroyed)return[];const e=[];for(let t=0;ti.enabled)?this._filters.filter(i=>i.enabled).map(i=>{const r=new Float32Array(e.length);return i.getFrequencyResponse(t,r,new Float32Array(e.length)),[...r]}).reduce((i,r)=>i.map((n,a)=>n*r[a])):new Array(e.length).fill(1)}callLoadListeners(){this._loadListeners.forEach(e=>e())}callUpdateListeners(){this._updateListeners.forEach(e=>e())}async decodeData(e){return new Promise((t,i)=>{if(!e){t();return}(async()=>{try{t(await this._audioContext.decodeAudioData(e))}catch(r){if(this.type==".ogg"){const n=(await qe(()=>import("./OggDec-2941c3fd.js"),[])).default;try{t(await n.decodeOggData(e))}catch(a){i(a)}return}i(r)}})()})}initSource(){for(const t of this._filters)t.disconnect();this._audioAnalyzer.disconnect(),this._filteredAudioAnalyzer.disconnect(),this._gainNode.disconnect(),this._audioContext.destination.disconnect(),this._source?.stop(),this._source=bd.create(this._audioContext.createBufferSource()),this._source.buffer=this._buffer,this._source.connect(this._audioAnalyzer);let e=this._audioAnalyzer;for(const t of this._filters)t.enabled&&(e.connect(t),e=t);e.connect(this._filteredAudioAnalyzer),w.audio.allowFilter?this._filteredAudioAnalyzer.connect(this._gainNode):this._audioAnalyzer.connect(this._gainNode),this._gainNode.connect(this._audioContext.destination),this._source.playbackRate.value=this._rate,this._isPlaying&&(this.pause(),this.play())}volume(e){this._destroyed||this._volume!=e&&(this._volume=e,this._gainNode.gain.setValueAtTime(e,this._audioContext.currentTime))}rate(e){this._destroyed||this._rate!=e&&(this._rate=e,this._source&&(this._isPlaying&&(this._playbackTime+=(this._audioContext.currentTime-this._startTimestamp)*this._source.playbackRate.value),this._startTimestamp=this._audioContext.currentTime,this._source.playbackRate.value=e))}play(){this._destroyed||this._source&&(this._isPlaying||(this.initSource(),this._playbackTime<=this._buffer.duration&&(this._playbackTime<0?(clearTimeout(this._delay),this._delay=setInterval(()=>{this.seek()>0&&(clearInterval(this._delay),this._source?.start(0,0))})):this._source.start(0,this._playbackTime)),this._startTimestamp=this._audioContext.currentTime,this._isPlaying=!0))}seek(e){if(!this._destroyed&&this._source){if(e===void 0)return this._isPlaying?(this._audioContext.currentTime-this._startTimestamp)*this._source.playbackRate.value+this._playbackTime:this._playbackTime;this._isPlaying?(this.stop(),this._playbackTime=e,this.play()):this._playbackTime=e}}pause(){this._destroyed||this.stop(!0)}stop(e){this._destroyed||this._source&&this._isPlaying&&(clearTimeout(this._delay),this._isPlaying=!1,this._playbackTime<=this._buffer.duration&&this._source.stop(),this._playbackTime=e?(this._audioContext.currentTime-this._startTimestamp)*this._source.playbackRate.value+this._playbackTime:0)}}class kC{judgementCounts=new Map;holdJudgementCounts=new Map;dancePoints=0;maxCumulativeDancePoints=0;maxDancePoints=0;chartManager;notedata;dataPoints=[];handlers=[];combo=0;missCombo=0;maxCombo=0;bestJudge;constructor(e){this.notedata=e.loadedChart.getNotedata(),this.chartManager=e,this.bestJudge=Je.getCollection(w.play.timingCollection).getStandardWindows()[0],this.calculateMaxDP()}onJudge(e){this.handlers.push(e)}applyOffset(e){this.dataPoints=this.dataPoints.map(t=>Ci(t.judgement)||!ji(t.judgement)?t:{...t,error:t.error!==null?t.error+e:null})}addDataPoint(e,t,i){this.judgementCounts.has(t)||this.judgementCounts.set(t,0),this.judgementCounts.set(t,this.judgementCounts.get(t)+1),this.dancePoints+=t.dancePoints;const r=this.chartManager.loadedChart.timingData.getEventAtBeat("COMBOS",e[0].beat),n=r?.hitMult??1,a=r?.missMult??1;dl(t)||(this.maxCumulativeDancePoints+=Je.getCollection(w.play.timingCollection).getMaxDancePoints()),Ci(t)?(this.chartManager.loadedChart.gameType.gameLogic.usesHoldTicks||(this.maxCumulativeDancePoints+=e.filter(Pe).reduce((o,l)=>o+Je.getCollection(w.play.timingCollection).getMaxHoldDancePoints(l.type),0)),this.combo=0,this.missCombo+=a,this.bestJudge=void 0):ji(t)&&(Je.getCollection(w.play.timingCollection).shouldHideNote(t)?(this.combo+=e.length*n,this.combo>this.maxCombo&&(this.maxCombo=this.combo),this.missCombo=0,this.bestJudge&&t.getTimingWindowMS()>this.bestJudge.getTimingWindowMS()&&(this.bestJudge=t)):(this.bestJudge=void 0,this.combo=0)),this.handlers.forEach(o=>o(i,t)),this.dataPoints.push({second:e[0].second,error:i,judgement:t,notes:e})}addHoldDataPoint(e,t){this.judgementCounts.has(t)||this.judgementCounts.set(t,0),this.judgementCounts.set(t,this.judgementCounts.get(t)+1);const i=Je.getCollection(w.play.timingCollection).getHeldJudgement(e);this.holdJudgementCounts.has(i)||this.holdJudgementCounts.set(i,[0,0]);const r=this.holdJudgementCounts.get(i);mr(t)?r[0]++:r[1]++,this.holdJudgementCounts.set(i,r),this.dancePoints+=t.dancePoints,this.maxCumulativeDancePoints+=Je.getCollection(w.play.timingCollection).getMaxHoldDancePoints(e.type),this.handlers.forEach(n=>n(0,t)),pn(t)&&(this.bestJudge=void 0)}getScore(){return this.maxDancePoints==0?0:this.dancePoints/this.maxDancePoints}getCumulativeScore(){return this.maxCumulativeDancePoints==0?0:this.dancePoints/this.maxCumulativeDancePoints}getDataPoints(){return this.dataPoints}getMedian(){return ul(this.dataPoints.filter(e=>!Ci(e.judgement)&&ji(e.judgement)&&e.error!=null).map(e=>e.error))}getMaxCombo(){return this.maxCombo}calculateMaxDP(){this.maxDancePoints=this.chartManager.loadedChart.gameType.gameLogic.calculateMaxDP(this.notedata,this.chartManager.loadedChart.timingData)}getCount(e){return this.judgementCounts.get(e)??0}getCombo(){return this.combo}getMissCombo(){return this.missCombo}getBestJudge(){return this.bestJudge}}const ti=[1,2,3,4,6,8,12,16,24,48,-1];var X=(s=>(s.View="View Mode",s.Edit="Edit Mode",s.Play="Play Mode",s.Record="Record Mode",s))(X||{}),Oe=(s=>(s[s.Off=0]="Off",s[s.Edit=1]="Edit",s[s.Add=2]="Add",s))(Oe||{});class GC{app;chartAudio=new so;chartView;widgetManager;assistTick=new hr.Howl({src:p1,volume:.5});me_high=new hr.Howl({src:Ag,volume:.5});me_low=new hr.Howl({src:bg,volume:.5});mine=new hr.Howl({src:f1,volume:.5});loadedSM;smPath="";loadedChart;selection={notes:[],inProgressNotes:[]};eventSelection={timingEvents:[],inProgressTimingEvents:[]};editTimingMode=0;beat=0;time=0;holdEditing=[];editNoteTypeIndex=0;partialScroll=0;noteIndex=0;lastMetronomeDivision=-1;lastMetronomeMeasure=-1;lastSong=null;mode="Edit Mode";lastMode="Edit Mode";noChartTextA;noChartTextB;loadingText;shiftPressed=0;virtualClipboard="";startRegion;endRegion;gameStats;constructor(e){this.app=e,document.addEventListener("keydown",i=>{i.key=="Shift"&&this.shiftPressed++}),document.addEventListener("keyup",i=>{i.key=="Shift"&&(this.shiftPressed=Math.max(this.shiftPressed-1,0))}),document.addEventListener("cut",i=>{if(i.target.classList.contains("inlineEdit")||i.target instanceof HTMLTextAreaElement||i.target instanceof HTMLInputElement||this.mode!="Edit Mode")return;const r=this.copy();r&&i.clipboardData?.setData("text/plain",r),this.eventSelection.timingEvents.length>0?this.deleteEventSelection():this.deleteSelection(),i.preventDefault()},!0),document.addEventListener("copy",i=>{if(i.target.classList.contains("inlineEdit")||i.target instanceof HTMLTextAreaElement||i.target instanceof HTMLInputElement||this.mode!="Edit Mode")return;const r=this.copy();r&&i.clipboardData?.setData("text/plain",r),i.preventDefault(),i.stopImmediatePropagation()},!0),document.addEventListener("paste",i=>{if(i.target.classList.contains("inlineEdit")||i.target instanceof HTMLTextAreaElement||i.target instanceof HTMLInputElement||this.mode!="Edit Mode")return;const r=i.clipboardData?.getData("text/plain");r&&this.paste(r,this.shiftPressed>0),i.preventDefault(),i.stopImmediatePropagation()},!0),e.view.addEventListener?.("wheel",i=>{if(!(this.loadedSM==null||this.loadedChart==null||this.chartView==null))if(i.preventDefault(),xi&&i.metaKey||!xi&&i.ctrlKey){const r=i.deltaY/5*w.chart.scroll.scrollSensitivity*(w.chart.scroll.invertZoomScroll?-1:1);w.chart.speed=Ve(w.chart.speed*Math.pow(1.01,r),10,35e3)}else{if(this.mode=="Play Mode"||this.mode=="Record Mode")return;let r=this.beat;const n=w.chart.snap,a=w.chart.speed*(w.chart.reverse&&w.chart.scroll.invertReverseScroll?-1:1),o=i.deltaY/a*w.chart.scroll.scrollSensitivity;if(n==0?(this.partialScroll=0,r=this.beat+o):w.chart.scroll.scrollSnapEveryScroll?i.deltaY<0?r=Math.round((this.beat-n)/n)*n:r=Math.round((this.beat+n)/n)*n:(this.partialScroll+=o,Math.abs(this.partialScroll)>n&&(this.partialScroll<0?r=Math.round((this.beat+Math.ceil(this.partialScroll/n)*n)/n)*n:r=Math.round((this.beat+Math.floor(this.partialScroll/n)*n)/n)*n,this.partialScroll%=n)),r=Math.max(0,r),r!=this.beat&&this.setBeat(r),!this.holdEditing.every(l=>l==null))for(let l=0;l{this.noChartTextB.tint=8952234}),this.noChartTextB.on("mouseleave",()=>{this.noChartTextB.tint=5596791}),this.noChartTextB.on("mousedown",()=>{this.app.windowManager.openWindow(new Fg(e,He.getGameType("dance-single")))}),this.noChartTextA.visible=!1,this.noChartTextB.visible=!1,this.app.stage.addChild(this.noChartTextB),this.loadingText=new Re("Loading simfile...",{fontName:"Main",fontSize:20}),this.loadingText.anchor.set(.5),this.loadingText.tint=5592405,this.app.stage.addChild(this.loadingText),this.loadingText.visible=!1;const t=()=>{this.noChartTextA.x=this.app.renderer.screen.width/2,this.noChartTextA.y=this.app.renderer.screen.height/2-20,this.noChartTextB.x=this.app.renderer.screen.width/2,this.noChartTextB.y=this.app.renderer.screen.height/2+10,this.loadingText.x=this.app.renderer.screen.width/2,this.loadingText.y=this.app.renderer.screen.height/2};t(),this.app.ticker.add(()=>{const i=performance.now();this.widgetManager.update(),this.loadedSM&&this.loadedChart&&this.chartView&&this.chartView.update(),aa.instance?.addDrawUpdateTimeValue(performance.now()-i)}),setInterval(()=>{if(!this.loadedSM||!this.loadedChart||!this.chartView)return;const i=performance.now(),r=this.chartAudio.seek();if(this.chartAudio.isPlaying()&&(this.setTime(r,!0),!this.holdEditing.every(u=>!u)))for(let u=0;u.3&&this.editHoldBeat(u,p,!1)}const n=this.loadedChart.getNotedata();let a=!1;for(;this.noteIndexn[this.noteIndex].second+w.play.effectOffset;)this.mode!="Record Mode"&&this.chartAudio.isPlaying()&&this.loadedChart.gameType.gameLogic.shouldAssistTick(n[this.noteIndex])&&(this.mode!="Play Mode"&&this.chartView.doJudgement(n[this.noteIndex],0,Mg),!a&&w.audio.assistTick&&Be.assist&&(this.assistTick.play(),a=!0)),this.noteIndex++;const o=this.loadedChart.getBeatFromSeconds(this.time+w.play.effectOffset),l=Math.floor(this.loadedChart.timingData.getDivisionOfMeasure(o)),c=Math.floor(this.loadedChart.timingData.getMeasure(o));(c!=this.lastMetronomeMeasure||l!=this.lastMetronomeDivision)&&(this.lastMetronomeDivision=l,this.lastMetronomeMeasure=c,this.chartAudio.isPlaying()&&w.audio.metronome&&Be.assist&&(l==0?this.me_high.play():this.me_low.play())),this.mode=="Play Mode"&&this.loadedChart.gameType.gameLogic.update(this),this.updateSoundProperties(),bS(),aa.instance?.addUpdateTimeValue(performance.now()-i)},5),q.on("resize",()=>{this.chartView&&(this.chartView.x=this.app.renderer.screen.width/2,this.chartView.y=this.app.renderer.screen.height/2),t()}),q.on("chartModified",()=>{this.loadedChart&&(this.loadedChart.recalculateStats(),q.emit("chartModifiedAfter"))}),window.addEventListener("keyup",i=>{if(this.mode=="Edit Mode"&&i.code.startsWith("Digit")){const r=parseInt(i.code.slice(5))-1;this.endEditing(r)}},!0),window.addEventListener("keydown",i=>{const r=Ie.getKeyNameFromCode(i.code);if(this.mode=="Edit Mode"&&!i.target.classList.contains("inlineEdit")&&!(i.target instanceof HTMLTextAreaElement)&&!(i.target instanceof HTMLInputElement)){if(i.code.startsWith("Digit")&&!i.repeat&&!i.ctrlKey&&!i.metaKey&&!i.altKey&&!i.ctrlKey){const n=parseInt(i.code.slice(5))-1;n<(this.loadedChart?.gameType.numCols??4)&&n>-1&&(this.setNote(n,"key"),i.preventDefault(),i.stopImmediatePropagation())}if(!this.holdEditing.every(n=>n==null)){const n=["cursorUp","cursorDown","previousNote","nextNote","previousMeasure","nextMeasure","jumpChartStart","jumpChartEnd","jumpSongStart","jumpSongEnd"];for(const a of n)if(Ie.getCombosForKeybind(a).map(o=>o.key).includes(r)){i.preventDefault(),i.stopImmediatePropagation(),wt[a].callback(this.app);for(let o=0;oo.key).includes(r)){this.holdEditing=[];return}}}},!0),window.addEventListener("keydown",i=>{this.mode!="Play Mode"&&this.mode!="Record Mode"||i.key=="Escape"&&(this.setMode(this.lastMode),this.chartAudio.pause())},!0)}getBeat(){return this.beat}getTime(){return this.time}setBeat(e){this.loadedChart&&(this.beat=e,this.time=this.loadedChart.getSecondsFromBeat(this.beat),this.chartAudio.seek(this.time),this.getAssistTickIndex())}setTime(e,t){this.loadedChart&&(this.time=e,this.beat=this.loadedChart.getBeatFromSeconds(this.time),t||(this.chartAudio.seek(this.time),this.getAssistTickIndex()))}async loadSM(e){if(AS.close(),pt.instance.isDirty()){const r=new fd(this.app,"Save","Do you wish to save the current file?",[{label:"Cancel",type:"default"},{label:"No",type:"default"},{label:"Yes",type:"confirm"}]);this.app.windowManager.openWindow(r);const n=await r.resolved;if(n=="Cancel")return;n=="Yes"&&this.save()}if(!e){this.smPath="",this.loadedSM=void 0,this.chartAudio.stop(),this.noChartTextA.visible=!1,this.noChartTextB.visible=!1,this.chartView?.destroy({children:!0});return}this.chartAudio.stop(),this.lastSong=null,this.smPath=e,this.time=0,this.beat=0,this.loadingText.visible=!0;const t=await Fe.getFileHandle(this.smPath);if(!t){_e.createFormatted("Couldn't load the file at "+this.smPath,"error"),this.app.windowManager.openWindow(new qg(this.app)),this.loadingText.visible=!1;return}const i=await t.getFile();this.loadedSM=new Yg(i),await this.loadedSM.loaded,this.loadingText.visible=!1,this.noChartTextA.visible=!0,this.noChartTextB.visible=!0,this.editTimingMode=0,q.emit("smLoaded"),await this.loadChart(),q.emit("smLoadedAfter"),this.time==0&&this.setBeat(0),Wg.addSM(this.smPath,this.loadedSM)}async loadChart(e){if(this.loadedSM==null)return;if(e==null){if(this.loadedChart){const r=this.loadedSM.charts[this.loadedChart.gameType.id];r&&r.length>0&&(e=r.at(-1))}if(!e)for(const r of He.getPriority()){const n=this.loadedSM.charts[r.id];if(n&&n.length>0){e=n.at(-1);break}}if(!e){this.chartView?.destroy({children:!0}),this.chartView?.removeChildren(),this.beat=0,this.time=0,this.loadedChart=void 0,this.chartView=void 0,this.noChartTextA.visible=!0,this.noChartTextB.visible=!0,q.emit("chartLoaded"),q.emit("chartModified");return}}if(e==this.loadedChart)return;this.chartView?.destroy({children:!0}),this.chartView?.removeChildren(),this.clearSelections(),this.loadedChart=e,this.beat=this.loadedChart.getBeatFromSeconds(this.time),pt.instance.reset(),w.play.timingCollection=w.play.defaultTimingCollection[e.gameType.id]??"ITG";const t=He.getGameType(w.chart.noteskin.type),i={type:e.gameType.id,name:w.chart.lastNoteskins[e.gameType.id]??"default"};if(t){const r=st.getNoteskinData(t,w.chart.noteskin.name);r?.gameTypes.includes(e.gameType.id)&&(i.name=r.id)}if(w.chart.noteskin=i,w.chart.lastNoteskins[e.gameType.id]=i.name,this.getAssistTickIndex(),this.chartView=new CC(this),this.chartView.x=this.app.renderer.screen.width/2,this.chartView.y=this.app.renderer.screen.height/2,(this.mode=="Play Mode"||this.mode=="Record Mode")&&this.setMode(this.lastMode),Be.viewMode&&this.setMode("View Mode"),this.loadedChart.getMusicPath()!=this.lastSong){this.lastSong=this.loadedChart.getMusicPath();const r=this.chartAudio.isPlaying();await this.loadAudio(),q.emit("audioLoaded"),r&&this.chartAudio.play()}this.noChartTextA.visible=!1,this.noChartTextB.visible=!1,_e.create("Loaded chart "+e.difficulty+" "+e.meter+" "+e.gameType.id),q.emit("chartLoaded"),q.emit("audioLoaded"),q.emit("chartModified"),this.loadedChart.gameType.id=="dance-single"?window.Parity=new jS(this.app,this.loadedChart.gameType.id):window.Parity=void 0,Be.autoPlay&&this.playPause()}async loadAudio(){if(!this.loadedSM||!this.loadedChart)return;this.chartAudio.stop(),this.chartAudio?.destroy();const e=this.loadedChart.getMusicPath();if(e==""){_e.createFormatted("Failed to load audio: no audio file","error"),this.chartAudio=new so(void 0);return}const t=await this.getAudioHandle(e);if(t==null){_e.createFormatted("Failed to load audio: couldn't find audio file "+e,"error"),this.chartAudio=new so(void 0);return}const i=await t.getFile();this.chartAudio=new so(await i.arrayBuffer(),Hi(i.name)),this.chartAudio.seek(this.time),this.getAssistTickIndex()}async getAudioHandle(e){let t=await Fe.getFileHandleRelativeTo(this.smPath,e);if(t)return t;try{const i=await Fe.getDirectoryFiles(Xt(this.smPath));if(t=i.filter(r=>r.name.toLowerCase()==ts(e).toLowerCase())[0],t)return _e.createFormatted("Failed to locate audio file "+e+", using file "+t.name+" instead","warn"),t;t=i.filter(r=>rl.includes(Hi(r.name)))[0],t&&_e.createFormatted("Failed to locate audio file "+e+", using file "+t.name+" instead","warn")}catch{return}return t}getAudio(){return this.chartAudio}updateSoundProperties(){this.setEffectVolume(w.audio.soundEffectVolume*w.audio.masterVolume),this.setVolume(w.audio.songVolume*w.audio.masterVolume),this.setRate(w.audio.rate)}setRate(e){this.chartAudio.rate(e)}setVolume(e){this.chartAudio.volume(e)}setEffectVolume(e){this.assistTick.volume()!=e&&this.assistTick.volume(e),this.me_high.volume()!=e&&this.me_high.volume(e),this.me_low.volume()!=e&&this.me_low.volume(e),this.mine.volume()!=e&&this.mine.volume(e)}getAssistTickIndex(){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null||this.loadedChart.getNotedata().length==0){this.noteIndex=0;return}this.noteIndex=Bt(this.loadedChart.getNotedata(),this.time,e=>e.second)+1,this.noteIndex>=1&&this.time<=this.loadedChart.getNotedata()[this.noteIndex-1].second&&this.noteIndex--}playPause(){this.chartAudio.isPlaying()?this.chartAudio.pause():this.chartAudio.play()}getClosestTick(e,t){if(!this.loadedChart)return 0;const i=Math.max(.001,4/t),r=this.loadedChart.timingData.getBeatOfMeasure(e),n=e-r,a=Math.round(r/i)*i;return Math.max(0,n+a)}snapToNearestTick(e){this.setBeat(Math.max(0,this.getClosestTick(e,4/w.chart.snap)))}snapToPreviousTick(){if(!this.loadedChart)return;const e=Math.max(.001,w.chart.snap),t=Math.floor(this.loadedChart.timingData.getMeasure(this.beat)),i=this.loadedChart.timingData.getBeatFromMeasure(t),r=Math.floor((this.beat-i)/e)*e,n=Math.abs(r-(this.beat-i))<5e-4?r-e:r,a=n+i;if(n<0){const o=this.loadedChart.timingData.getBeatFromMeasure(t-1),l=Math.round((a-o)/e)*e;this.setBeat(Math.max(0,o+l));return}this.setBeat(Math.max(0,a))}snapToNextTick(){if(!this.loadedChart)return;const e=Math.max(.001,w.chart.snap),t=Math.floor(this.loadedChart.timingData.getMeasure(this.beat)),i=this.loadedChart.timingData.getBeatFromMeasure(t),a=Math.floor((this.beat-i+5e-4)/e)*e+e+i,o=this.loadedChart.timingData.getBeatFromMeasure(t+1);if(a>o){this.setBeat(o);return}this.setBeat(a)}previousSnap(){let e=this.getSnapIndex()-1;e=(e+ti.length)%ti.length,w.chart.snap=ti[e]==-1?0:1/ti[e],q.emit("snapChanged")}nextSnap(){let e=this.getSnapIndex();(e==ti.length-1||Math.abs(1/w.chart.snap-ti[e])<=5e-4)&&e++,e=(e+ti.length)%ti.length,w.chart.snap=ti[e]==-1?0:1/ti[e],q.emit("snapChanged")}getSnapIndex(){return w.chart.snap==0?ti.length-1:ti.findIndex(e=>1/e<=w.chart.snap)}removeDuplicateBeats(e){if(e.length===0)return e;const t=[e[0]];for(let i=1;ii.beat+i.hold),t=this.loadedChart.getNotedata().map(i=>i.beat).concat(e).sort((i,r)=>i-r);return this.removeDuplicateBeats(t)}previousNote(){const e=this.getRows();if(e.length==0)return;let t=Bt(e,this.beat);this.beat==e[t]&&t--,this.setBeat(e[Math.max(0,t)])}nextNote(){const e=this.getRows();if(e.length==0)return;let t=Bt(e,this.beat);this.beat>=e[t]&&t++,this.setBeat(e[Math.min(e.length-1,t)])}firstNote(){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null)return;const e=this.loadedChart.getNotedata();e.length!=0&&this.setBeat(e[0].beat)}lastNote(){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null)return;const e=this.loadedChart.getNotedata();if(e.length==0)return;const t=e[e.length-1];this.setBeat(os(t))}truncateHold(e,t){const i=Ve(Math.round((t-Math.max(.020833333333333332,w.chart.snap))*48)/48,e.beat,e.beat+e.hold-.020833333333333332);return i==e.beat?{beat:e.beat,col:e.col,type:"Tap"}:{beat:e.beat,col:e.col,type:e.type,hold:i-e.beat}}setNote(e,t,i=this.beat){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null)return;i=Math.max(0,Math.round(i*48)/48);const r=this.loadedChart.getNotedata().filter(o=>o.col!=e?!1:Math.abs(o.beat-i)<.003?!0:Pe(o)&&o.beat==i),n=this.loadedChart.getNotedata().filter(o=>Pe(o)&&o.col==e&&i>o.beat&&i<=o.beat+o.hold).map(o=>({oldNote:o,newNote:this.truncateHold(o,i)})),a={startBeat:i,endBeat:i,roll:!1,originalNote:void 0,type:t,removedNotes:r,truncatedHolds:n};this.holdEditing[e]=a,r.length==0&&(a.originalNote={beat:i,col:e,type:this.getEditingNoteType()}),this.getAssistTickIndex(),this.app.actionHistory.run({action:()=>{a.removedNotes.forEach(o=>{this.loadedChart.removeNote(o),this.removeNoteFromSelection(o)}),a.truncatedHolds.forEach(o=>this.loadedChart.modifyNote(o.oldNote,o.newNote)),a.originalNote&&this.loadedChart.addNote(a.originalNote)},undo:()=>{a.originalNote&&this.loadedChart.removeNote(a.originalNote),a.truncatedHolds.forEach(o=>this.loadedChart.modifyNote(o.newNote,o.oldNote)),a.removedNotes.forEach(o=>this.loadedChart.addNote(o))}})}editHoldBeat(e,t,i){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null)return;const r=this.holdEditing[e];if(r==null||t==r.startBeat&&t==r.endBeat)return;if(r.endBeat=Math.max(r.startBeat,Math.round(t*48)/48),r.roll||=i,r.originalNote){const a={beat:r.startBeat,type:r.roll?"Roll":"Hold",hold:r.endBeat-r.startBeat};r.endBeat-r.startBeat==0&&(a.hold=void 0,a.type="Tap"),(a.beat!=r.originalNote.beat||a.type!=r.originalNote.type||Pe(r.originalNote)&&a.hold!=r.originalNote.hold)&&this.loadedChart.modifyNote(r.originalNote,a)}else{const a={beat:r.startBeat,col:e,type:r.roll?"Roll":"Hold",hold:r.endBeat-r.startBeat};r.endBeat-r.startBeat==0&&(a.type="Tap",Object.assign(a,{hold:void 0})),this.loadedChart.addNote(a)}r.originalNote={beat:r.startBeat,col:e,type:r.endBeat-r.startBeat==0?"Tap":r.roll?"Roll":"Hold",hold:r.endBeat-r.startBeat==0?void 0:r.endBeat-r.startBeat};const n=this.loadedChart.getNotedata().filter(a=>a.beat==r.originalNote.beat&&a.col==r.originalNote.col||a.col!=e?!1:a.beat>=r.startBeat&&a.beat<=r.endBeat?!0:Pe(a)&&a.beat+a.hold>=r.startBeat&&a.beat+a.hold<=r.endBeat);r.removedNotes=r.removedNotes.concat(n),n.forEach(a=>this.loadedChart.removeNote(a)),this.getAssistTickIndex()}endEditing(e){this.holdEditing[e]=void 0}previousNoteType(){const e=this.loadedChart?.gameType.editNoteTypes.length??0;this.editNoteTypeIndex=(this.editNoteTypeIndex-1+e)%e}nextNoteType(){const e=this.loadedChart?.gameType.editNoteTypes.length??0;this.editNoteTypeIndex=(this.editNoteTypeIndex+1+e)%e}getEditingNoteType(){return this.loadedChart?.gameType.editNoteTypes[this.editNoteTypeIndex]??null}setEditingNoteType(e){if(!this.loadedChart)return;const i=(this.loadedChart?.gameType.editNoteTypes).indexOf(e);i!=-1&&(this.editNoteTypeIndex=i)}getMode(){return this.mode}setMode(e){if(!this.loadedChart||!this.chartView)return;if(this.mode==e){(e=="Play Mode"||e=="Record Mode")&&(this.setMode(this.lastMode),this.getAssistTickIndex(),this.chartAudio.pause());return}(this.mode=="View Mode"||this.mode=="Edit Mode")&&(this.lastMode=this.mode),this.mode=e;const t=this.loadedChart.getNotedata();if(this.mode=="Play Mode"){t.forEach(i=>{i.gameplay={hideNote:!1,hasHit:!1}});for(const i of t)if(i.secondi.gameplay=void 0))}judgeCol(e){if(!(!this.loadedChart||!this.chartView)){if(this.mode=="Play Mode")this.loadedChart.gameType.gameLogic.keyDown(this,e);else if(this.mode=="Record Mode"){const t=this.loadedChart.getBeatFromSeconds(this.time+w.play.offset),i=w.chart.snap==0?1/48:w.chart.snap,r=Math.round(t/i)*i;this.setNote(e,"key",r)}}}judgeColUp(e){!this.loadedChart||!this.chartView||(this.mode=="Play Mode"?this.loadedChart.gameType.gameLogic.keyUp(this,e):this.mode=="Record Mode"&&this.endEditing(e))}async save(){if(!this.loadedSM)return;let e,t;if(window.nw){const r=window.nw.require("path"),n=r.parse(this.smPath);e=r.resolve(n.dir,n.name+".sm"),t=r.resolve(n.dir,n.name+".ssc")}else{const r=Xt(this.smPath),n=ts(this.smPath),a=n.includes(".")?n.split(".").slice(0,-1).join("."):n;e=r+"/"+a+".sm",t=r+"/"+a+".ssc"}let i=null;!this.loadedSM.usesChartTiming()&&await Fe.getFileHandle(e)&&await Fe.writeFile(e,this.loadedSM.serialize("sm")).catch(r=>{const n=r.message;n.includes(Uo.GONE[0])||(i=n)}),(this.loadedSM.requiresSSC()||await Fe.getFileHandle(t))&&await Fe.writeFile(t,this.loadedSM.serialize("ssc")).catch(r=>{const n=r.message;n.includes(Uo.GONE[0])||(i=n)}),i==null?this.loadedSM.usesChartTiming()?_e.create("Saved. No SM file since split timing was used."):_e.create("Saved"):_e.createFormatted("Failed to save file: "+i,"error"),pt.instance.setLimit()}hasSelection(){return this.hasNoteSelection()||this.hasEventSelection()}hasNoteSelection(){return this.selection.notes.length>0||this.startRegion!==void 0&&this.endRegion!==void 0}hasEventSelection(){return this.eventSelection.timingEvents.length>0}hasRange(){return this.selection.notes.length>1||this.eventSelection.timingEvents.length>1||this.startRegion!==void 0&&this.endRegion!==void 0}clearSelections(){this.selection={notes:[],inProgressNotes:[]},this.eventSelection={timingEvents:[],inProgressTimingEvents:[]}}startDragSelection(){this.selection.inProgressNotes=[]}endDragSelection(){let e=0,t=0;const i=[],r=this.selection.inProgressNotes,n=this.selection.notes,a=(o,l)=>o.beat==l.beat?o.col-l.col:o.beat-l.beat;if(r.length==0||n.length==0){this.selection.notes=r.concat(n),this.selection.inProgressNotes=[];return}for(;;)if(a(r[e],n[t])<0){if(i.push(r[e]),e++,e>=r.length){this.selection.notes=i.concat(n.slice(t));break}}else if(i.push(n[t]),t++,t>=n.length){this.selection.notes=i.concat(r.slice(e));break}this.selection.inProgressNotes=[]}startDragEventSelection(){this.eventSelection.inProgressTimingEvents=[]}endDragEventSelection(){let e=0,t=0;const i=[],r=this.eventSelection.inProgressTimingEvents,n=this.eventSelection.timingEvents,a=(o,l)=>o.beat-l.beat;if(r.length==0||n.length==0){this.eventSelection.timingEvents=r.concat(n),this.eventSelection.inProgressTimingEvents=[];return}for(;;)if(a(r[e],n[t])<0){if(i.push(r[e]),e++,e>=r.length){this.eventSelection.timingEvents=i.concat(n.slice(t));break}}else if(i.push(n[t]),t++,t>=n.length){this.eventSelection.timingEvents=i.concat(r.slice(e));break}this.eventSelection.inProgressTimingEvents=[]}addNoteToDragSelection(e){this.addNoteSelection(this.selection.inProgressNotes,e)}removeNoteFromDragSelection(e){this.removeNoteSelection(this.selection.inProgressNotes,e)}addEventToDragSelection(e){this.addEventSelection(this.eventSelection.inProgressTimingEvents,e)}removeEventFromDragSelection(e){this.removeEventSelection(this.eventSelection.inProgressTimingEvents,e)}addNoteToSelection(e){this.addNoteSelection(this.selection.notes,e)}removeNoteFromSelection(e){this.removeNoteSelection(this.selection.notes,e)}setNoteSelection(e){this.selection.inProgressNotes=[],this.selection.notes=[...e].sort((t,i)=>t.beat==i.beat?t.col-i.col:t.beat-i.beat)}addEventToSelection(e){this.addEventSelection(this.eventSelection.timingEvents,e)}removeEventFromSelection(e){this.removeEventSelection(this.eventSelection.timingEvents,e)}setEventSelection(e){this.eventSelection.inProgressTimingEvents=[],this.eventSelection.timingEvents=e.sort((t,i)=>t.beat-i.beat)}isNoteInSelection(e){return this.getNoteSelectionIndex(this.selection.notes,e)!=-1||this.getNoteSelectionIndex(this.selection.inProgressNotes,e)!=-1}isEventInSelection(e){return this.getEventSelectionIndex(this.eventSelection.timingEvents,e)!=-1||this.getEventSelectionIndex(this.eventSelection.inProgressTimingEvents,e)!=-1}addNoteSelection(e,t){let i=Xa(e,t.beat,r=>r.beat);for(;e[i]&&(e[i].beatr.beat);for(;e[i]&&e[i].beat==t.beat;){if(Mp(e[i],t))return i;i++}return-1}addEventSelection(e,t){let i=Xa(e,t.beat,r=>r.beat);for(;e[i]&&e[i].beat<=t.beat;)i++;e.splice(i,0,t)}removeEventSelection(e,t){const i=this.getEventSelectionIndex(e,t);i!=-1&&e.splice(i,1)}getEventSelectionIndex(e,t){let i=Xa(e,t.beat,r=>r.beat);for(;e[i]&&e[i].beat==t.beat;){if(Mp(e[i],t))return i;i++}return-1}selectRegion(){if(this.loadedChart){if(this.endRegion!==void 0&&(this.startRegion=void 0,this.endRegion=void 0),this.startRegion===void 0){this.clearSelections(),this.startRegion=this.beat;return}this.endRegion=this.beat,this.endRegione.beat>=this.startRegion&&e.beat<=this.endRegion)):this.setEventSelection(ls.flatMap(e=>this.loadedChart.timingData.getColumn(e).events).filter(e=>e.beat>=this.startRegion&&e.beat<=this.endRegion))}}modifySelection(e){if(!this.loadedChart)return;const t=this.selection.notes,i=structuredClone(this.selection.notes).map(e).sort((o,l)=>o.beat==l.beat?o.col-l.col:o.beat-l.beat);if(i.length==0)return;const r=[];for(const o of i){const l=r.at(-1);l!==void 0&&l.beat==o.beat&&l.col==o.col||r.push(o)}if(r.length==0)return;const{removedNotes:n,truncatedHolds:a}=this.checkConflicts(r,t);this.app.actionHistory.run({action:()=>{this.loadedChart.removeNotes(t.concat(n),!1),a.forEach(o=>this.loadedChart.modifyNote(o.oldNote,o.newNote,!1)),this.clearSelections(),this.setNoteSelection(this.loadedChart.addNotes(r))},undo:()=>{this.loadedChart.removeNotes(r,!1),a.forEach(o=>this.loadedChart.modifyNote(o.newNote,o.oldNote,!1)),this.loadedChart.addNotes(n,!1),this.clearSelections(),this.setNoteSelection(this.loadedChart.addNotes(t))}})}checkConflicts(e,t=[]){if(e.length==0)return{removedNotes:[],truncatedHolds:[]};const i=this.loadedChart.getNotedata(),r=this.loadedChart.gameType.numCols,n=new Array(r).fill(0).map(u=>[]);for(const u of i)n[u.col].push(u);const a=new Array(r).fill(0).map(u=>[]);for(const u of e)u.col>r||a[u.col].push(u);const o=[],l=[],c=[];for(let u=0;ua[u][0].beat<=(Pe(d)?d.beat+d.hold:d.beat));for(const d of a[u])for(;n[u][h];){const p=n[u][h],m=Pe(d)?d.beat+d.hold:d.beat;if(!t.includes(p)&&!c.includes(p)&&(d.beat<=p.beat&&m>=p.beat?(c.push(p),o.push(p)):Pe(p)&&p.beat+p.hold>=d.beat&&p.beatm)break;h++}}return o.sort((u,h)=>u.beat==h.beat?u.col-h.col:u.beat-h.beat),l.sort((u,h)=>u.newNote.beat==h.newNote.beat?u.newNote.col-h.newNote.col:u.newNote.beat-h.newNote.beat),{removedNotes:o,truncatedHolds:l}}modifyEventSelection(e){!this.loadedChart||!this.loadedSM||this.loadedChart.timingData.modify(this.eventSelection.timingEvents.map(t=>[t,e(structuredClone(t))]))}deleteSelection(){if(this.selection.notes.length==0)return;const e=this.selection.notes;this.app.actionHistory.run({action:()=>{this.loadedChart.removeNotes(e),this.clearSelections()},undo:()=>{this.selection.notes=this.loadedChart.addNotes(e)}})}deleteEventSelection(){this.eventSelection.timingEvents.length!=0&&(!this.loadedChart||!this.loadedSM||this.loadedChart.timingData.delete(this.eventSelection.timingEvents))}paste(e,t=!1){if(this.loadedChart&&(e.startsWith("ArrowVortex:notes:")&&(this.pasteNotes(e,t)||this.pasteNotes(this.virtualClipboard,t)),e.startsWith("ArrowVortex:tempo:")||e.startsWith("SMEditor:tempo:"))){this.pasteTempo(e)||this.pasteTempo(this.virtualClipboard);return}}pasteNotes(e,t=!1){if(!this.loadedChart)return!0;const i=PS(e);return!i||i.length==0?!1:(this.insertNotes(i.map(r=>(r.beat+=this.beat,r.beat=Math.round(r.beat*48)/48,r)),t),!0)}insertNotes(e,t=!1){e.sort((n,a)=>n.beat==a.beat?n.col-a.col:n.beat-a.beat);const{removedNotes:i,truncatedHolds:r}=this.checkConflicts(e);if(t){const n=e.map(u=>os(u));let a=0;for(const u of n)u>a&&(a=u);const o=new Array(this.loadedChart.gameType.numCols).fill(0).map((u,h)=>({type:"Hold",hold:a-e[0].beat,col:h,beat:e[0].beat})),{removedNotes:l,truncatedHolds:c}=this.checkConflicts(o);l.forEach(u=>{i.includes(u)||i.push(u)}),c.forEach(u=>{const h=r.find(d=>d.oldNote==u.oldNote);if(h){const d=Pe(h.newNote)?h.newNote.hold:0,p=Pe(h.newNote)?h.newNote.hold:0,m=Math.min(d,p);m==0?h.newNote={beat:h.newNote.beat,col:h.newNote.col,type:"Tap"}:h.newNote={beat:h.newNote.beat,col:h.newNote.col,type:h.newNote.type,hold:m}}}),i.sort((u,h)=>u.beat==h.beat?u.col-h.col:u.beat-h.beat),r.sort((u,h)=>u.newNote.beat==h.newNote.beat?u.newNote.col-h.newNote.col:u.newNote.beat-h.newNote.beat)}this.app.actionHistory.run({action:()=>{this.loadedChart.removeNotes(i,!1),r.forEach(n=>{this.loadedChart.modifyNote(n.oldNote,n.newNote,!1)}),this.clearSelections(),this.setNoteSelection(this.loadedChart.addNotes(e))},undo:()=>{this.loadedChart.removeNotes(e,!1),r.forEach(n=>{this.loadedChart.modifyNote(n.newNote,n.oldNote,!1)}),this.setNoteSelection(this.loadedChart.addNotes(i)),this.clearSelections()}})}pasteTempo(e){if(!this.loadedChart||!this.loadedSM)return!0;const t=US(e);if(!t||t.length==0)return!1;const i=this.loadedChart.timingData;return t.forEach(r=>{r.type=="ATTACKS"?r.second+=this.time:r.beat+=this.beat}),t.forEach(r=>r.isChartTiming=i.isPropertyChartSpecific(r.type)),i.insert(t),!0}copy(){if(this.selection.notes.length!=0){const e=Math.min(...this.selection.notes.map(r=>r.beat)),t=structuredClone(this.selection.notes).map(r=>(r.beat-=e,r)).sort((r,n)=>r.beat==n.beat?r.col-n.col:r.beat-n.beat),i=RS(t);return this.virtualClipboard=i,i}else if(this.eventSelection.timingEvents.length!=0){const e=Math.min(...this.eventSelection.timingEvents.map(n=>n.beat)),t=this.loadedChart.timingData.getSecondsFromBeat(e),i=structuredClone(this.eventSelection.timingEvents).map(n=>n.type=="ATTACKS"?(n.second-=t,n):(n.beat-=e,n)).sort((n,a)=>n.type!=a.type?n.type.localeCompare(a.type):n.type=="ATTACKS"?n.second-a.second:n.beat-a.beat),r=OS(i);return this.virtualClipboard=r,r}}}export{We as $,pt as A,Gt as B,qS as C,aa as D,q as E,Be as F,He as G,kt as H,Ce as I,Kt as J,wt as K,Se as L,Gn as M,st as N,w as O,ey as P,ry as Q,Vc as R,Yg as S,xt as T,Fs as U,Ve as V,_e as W,RC as X,UC as Y,Gc as Z,em as _,Ie as a,Nt as a0,k0 as a1,Uo as a2,c1 as a3,Us as a4,fn as a5,qe as a6,Ee as b,GC as c,Fe as d,Hi as e,qg as f,la as g,Es as h,PC as i,tl as j,pd as k,FC as l,AS as m,NC as n,di as o,sS as p,te as q,ke as r,Xi as s,Wt as t,Rt as u,LC as v,Wi as w,cc as x,Le as y,Me as z}; +end`,n.box.tint==16777215&&(n.box.tint=8978431),n.text.tint=8978431)}this.receptors.y=this.renderer.getActualReceptorYPos(),this.topBound.y=this.renderer.getUpperBound(),this.bottomBound.y=this.renderer.getLowerBound(),this.topBoundBeat.y=this.renderer.getYPosFromBeat(this.renderer.getVisualBeat()-w.chart.maxDrawBeatsBack),this.bottomBoundBeat.y=this.renderer.getYPosFromBeat(this.renderer.getVisualBeat()+w.chart.maxDrawBeats),this.topScreenBeat.y=this.renderer.getYPosFromBeat(this.renderer.getTopOnScreenBeat()),this.bottomScreenBeat.y=this.renderer.getYPosFromBeat(this.renderer.getBottomOnScreenBeat()),this.topScreenBeatText.y=this.topScreenBeat.y,this.topScreenBeatText.text=ne(this.renderer.getTopOnScreenBeat(),3)+"",this.bottomScreenBeatText.y=this.bottomScreenBeat.y,this.bottomScreenBeatText.text=ne(this.renderer.getBottomOnScreenBeat(),3)+""}inBounds(e){const t=this.renderer.chartManager.app.renderer.screen.height/this.scale.y;return Math.abs(e)this.renderer.getVisualBeat()),this.trackVariable(()=>this.renderer.getVisualTime()),this.trackVariable(()=>this.getSpeed(),r=>{this.speed=r,clearTimeout(this.lastSpeedTimeout),this.lastSpeedTimeout=setTimeout(()=>{this.blockCache.clear(),this.lastSpeed=this.speed,this.drawDirty=!0},200)}),this.trackVariable(()=>w.chart.zoom),this.trackVariable(()=>w.chart.CMod),this.trackVariable(()=>w.chart.doSpeedChanges),this.trackVariable(()=>w.chart.waveform.allowFilter),this.trackVariable(()=>w.chart.reverse),this.trackVariable(()=>w.chart.waveform.antialiasing,r=>{this.filters=r?[new tc]:[]}),this.trackVariable(()=>this.renderer.chartManager.app.renderer.screen.width,()=>this.resizeWaveform()),this.trackVariable(()=>this.renderer.chartManager.app.renderer.screen.height,()=>this.resizeWaveform()),this.trackVariable(()=>w.chart.waveform.opacity),this.trackVariable(()=>w.chart.waveform.filteredOpacity),this.trackVariable(()=>w.chart.waveform.filteredColor),this.trackVariable(()=>w.chart.waveform.color),this.trackVariable(()=>w.chart.waveform.speedChanges),this.trackVariable(()=>w.chart.receptorYPos),this.trackVariable(()=>w.chart.waveform.lineHeight,()=>{w.chart.waveform.lineHeight<=0&&(w.chart.waveform.lineHeight=1),this.updateLineHeight()}),this.trackVariable(()=>w.chart.zoom,()=>this.resizeWaveform()),this.trackVariable(()=>this.renderer.chartManager.chartAudio.hasFilters()),this.anchor.set(.5),this.renderer.chartManager.chartAudio.onUpdate(()=>this.getData()),this.getData(),this.resizeWaveform(),this.filters=w.chart.waveform.antialiasing?[new tc]:[];const t=()=>this.drawDirty=!0,i=()=>{this.getData(),this.resizeWaveform(),this.renderer.chartManager.chartAudio.onUpdate(()=>this.getData())};q.on("timingModified",t),this.on("destroyed",()=>{q.off("timingModified",t)}),q.on("audioLoaded",i),this.on("destroyed",()=>{q.off("audioLoaded",i)})}getData(){this.rawData=this.renderer.chartManager.chartAudio.getRawData(),this.filteredRawData=this.renderer.chartManager.chartAudio.getFilteredRawData(),this.sampleRate=this.renderer.chartManager.chartAudio.getSampleRate(),this.blockCache.clear(),this.drawDirty=!0}resizeWaveform(){this.waveformTex.resize(Ve((this.rawData?.length??0)*288*w.chart.zoom,1,this.renderer.chartManager.app.renderer.screen.width),this.renderer.chartManager.app.renderer.screen.height)}update(){this.visible=w.chart.waveform.enabled&&this.renderer.shouldDisplayBarlines(),w.chart.waveform.enabled&&((this.drawDirty||this.variableChanged())&&(this.drawDirty=!1,this.renderData(),this.renderer.chartManager.app.renderer.render(this.lineContainer,{renderTexture:this.waveformTex})),this.scale.set(1/w.chart.zoom))}trackVariable(e,t){this.trackedVariables.set(e,{value:e(),cb:t})}variableChanged(){let e=!1;for(const[t,i]of this.trackedVariables.entries())t()!=i.value&&(this.trackedVariables.get(t).value=t(),this.trackedVariables.get(t).cb?.(t()),e=!0);return e}getSample(e,t,i){if(t<0)return 0;const r=this.sampleRate/(this.lastSpeed*4),n=Math.floor(t*this.lastSpeed*4);if(this.blockCache.get(i)?.[n]!==void 0)return this.blockCache.get(i)[n];const a=Math.floor(n*r),o=e.slice(a,Math.floor(a+r)).reduce((l,c)=>l+Math.abs(c),0)/r;return this.blockCache.has(i)||this.blockCache.set(i,[]),this.blockCache.get(i)[n]=o,o}renderData(){this.resetPool();const e=w.chart.waveform.allowFilter&&this.renderer.chartManager.chartAudio.hasFilters();if(w.chart.waveform.speedChanges&&!w.chart.CMod&&w.chart.doSpeedChanges){const t=w.chart.speed,i=this.renderer.getCurrentSpeedMult(),r=this.renderer.getTopOnScreenBeat(),n=this.renderer.getBottomOnScreenBeat(),a=Math.min(r,n),o=Math.max(r,n),l=this.renderer.findFirstOnScreenScroll(),c=this.renderer.findLastOnScreenScroll(),u=this.renderer.chart.timingData.getOffset(),h=this.renderer.chart.timingData.getEventAtBeat("BPMS",0)?.value??120,d=[...this.renderer.chart.timingData.getTimingData("SCROLLS")];d[0]?.beat!=0&&d.unshift({type:"SCROLLS",beat:0,value:d[0]?.value??1});const p=d.findIndex(_=>_.beat==l.beat),m=d.findIndex(_=>_.beat==c.beat),f=this.renderer.chart.timingData.getBeatTiming(),g=100/t/Math.abs(i)/64/w.chart.zoom,y=this.renderer.chartManager.app.renderer.screen.height;let b=a,A=Math.round(this.renderer.getYPosFromBeat(b)*w.chart.zoom+this.parent.y),v=this.renderer.chart.getSecondsFromBeat(b);for(const _ of d.slice(p,m+1)){if(_.value==0)continue;const C=g/Math.abs(_.value);_.beat!=l.beat?b=_.beat:b=Math.round((b-_.beat)/C)*C+_.beat,A=Math.round(this.renderer.getYPosFromBeat(b)*w.chart.zoom+this.parent.y),v=this.renderer.chart.getSecondsFromBeat(b);const B=this.renderer.getScrollDirection(_.value),P=d[d.indexOf(_)+1]?.beat??Number.MAX_VALUE;for(;by){if(B>0){b=P;break}b+=C*(A-y),A=y;continue}b+=C*w.chart.waveform.lineHeight,A+=B*w.chart.waveform.lineHeight,v=this.calculateSecond(b,f,u,h),this.drawLine(v,A,e)}}}else if(w.chart.CMod){let t=this.renderer.getSecondFromYPos((-this.parent.y+(w.chart.reverse?this.renderer.chartManager.app.renderer.screen.height:0))/w.chart.zoom);const i=this.renderer.getPixelsToSecondsRatio()/w.chart.zoom;t=Math.floor(t/i)*i;const r=n=>{t+=i*w.chart.waveform.lineHeight,this.drawLine(t,n,e)};if(w.chart.reverse)for(let n=this.renderer.chartManager.app.renderer.screen.height;n>=0;n-=w.chart.waveform.lineHeight)r(n);else for(let n=0;n<=this.renderer.chartManager.app.renderer.screen.height;n+=w.chart.waveform.lineHeight)r(n)}else{let t=this.renderer.getBeatFromYPos((-this.parent.y+(w.chart.reverse?this.renderer.chartManager.app.renderer.screen.height:0))/w.chart.zoom);const i=this.renderer.chart.timingData.getOffset(),r=this.renderer.chart.timingData.getEventAtBeat("BPMS",0)?.value??120,n=this.renderer.chart.timingData.getBeatTiming(),a=this.renderer.getPixelsToEffectiveBeatsRatio()/w.chart.zoom;t=Math.floor(t/a)*a;let o=this.renderer.chart.getSecondsFromBeat(t);const l=c=>{t+=a*w.chart.waveform.lineHeight,o=this.calculateSecond(t,n,i,r),this.drawLine(o,c,e)};if(w.chart.reverse)for(let c=this.renderer.chartManager.app.renderer.screen.height;c>=0;c-=w.chart.waveform.lineHeight)l(c);else for(let c=0;c<=this.renderer.chartManager.app.renderer.screen.height;c+=w.chart.waveform.lineHeight)l(c)}this.purgePool()}calculateSecond(e,t,i,r){const n=Math.floor(e*1e3)/1e3;if(e<=0)return-i+e*60/r;if(n>=t[1]?.beat){for(;n>=t[1]?.beat;)t.shift();return this.renderer.chart.getSecondsFromBeat(e)}else{let o=(e-t[0].beat)*60/t[0].bpm;return t[0].warped&&(o=0),Math.max(t[0].secondClamp,t[0].secondAfter+o)}}drawLine(e,t,i){if(!(e<0))for(let r=0;rt>=this.poolSearch)}updateLineHeight(){for(const e of this.lineContainer.children){const t=e;t.height=w.chart.waveform.lineHeight}}getLine(){if(this.lineContainer.children[this.poolSearch]){const t=this.lineContainer.children[this.poolSearch];return t.visible=!0,this.poolSearch++,t}const e=new Le(te.WHITE);return e.height=w.chart.waveform.lineHeight,e.anchor.set(.5),e.visible=!0,this.poolSearch++,this.lineContainer.addChild(e),e}getSpeed(){return Math.min(w.chart.speed,iC)}}const rC="/smeditor/assets/missing-81d55ba9.png",sy=te.from(rC),nC={HoldBodyTopOffset:0,HoldBodyBottomOffset:0,RollBodyTopOffset:0,RollBodyBottomOffset:0};class aC{renderer;options;objects=[];updateHooks=new Set;hooks={};metrics;constructor(e,t){this.renderer=e,this.options=t,this.options.init?.(e),this.metrics={...nC,...this.options.metrics}}update(e){this.options.update?.(e),this.updateHooks.forEach(({item:t,cb:i})=>{t.destroyed||i(e)})}getPlaceholderSprite(){const e=new Le(sy);return e.anchor.set(.5),e}getBlankSprite(){return new Le(te.EMPTY)}getElement(e,t={}){try{return this.options.load?this.options.load.bind(this)(e,{noteskin:this,columnName:e.columnName,columnNumber:e.columnNumber,...t})??this.getPlaceholderSprite():this.loadElement(e,t)??this.getPlaceholderSprite()}catch(i){return console.error(i),w.debug.showNoteskinErrors&&_e.createFormatted("Noteskin Error: "+i,"error"),this.getPlaceholderSprite()}}loadElement(e,t={}){const i=this.followRedirs(e);return i===void 0?(w.debug.showNoteskinErrors&&_e.createFormatted(`Noteskin element ${e.columnName} ${e.element} failed to load for noteskin: Redirect loop`,"error"),this.getPlaceholderSprite()):i({noteskin:this,columnName:e.columnName,columnNumber:e.columnNumber,...t})}followRedirs(e){const t=[e];let i=e;for(;;){const r=this.options.elements[i.columnName]?.[i.element];if(r===void 0)return;if(typeof r=="function")return r;if(i={columnName:r.columnName??i.columnName,columnNumber:r.columnNumber??i.columnNumber,element:r.element},t.some(n=>i.columnName==n.columnName&&i.element==n.element))return;t.push(i)}}on(e,t,i){this.hooks[t]===void 0&&(this.hooks[t]=new Set);const r={item:e,cb:i};this.hooks[t].add(r),e.once("destroyed",()=>this.hooks[t].delete(r))}onUpdate(e,t){const i={item:e,cb:t};this.updateHooks.add(i),e.once("destroyed",()=>this.updateHooks.delete(i))}broadcast(e){if(this.hooks[e.type]===void 0)return;this.hooks[e.type].forEach(({item:i,cb:r})=>{i.destroyed||r(e)})}}const oC="/smeditor/assets/hold_judgement-82934f15.png";class lr extends Ee{children=[];static held_tex;static dropped_tex;notefield;constructor(e){super(),lr.held_tex||this.loadTex(),this.notefield=e}async loadTex(){const e=await Yr.load(oC),t=e.height,i=e.width;lr.held_tex=new te(e,new Me(0,0,i,t/2)),lr.dropped_tex=new te(e,new Me(0,t/2,i,t/2))}update(){this.y=this.notefield.renderer.getActualReceptorYPos()+(w.chart.reverse?-48:48);for(const e of this.children){const t=(Date.now()-e.createTime)/1e3;if(t<.1){const i=1-(1-t/.1)*(1-t/.1);e.scale.set(.3*i)}else if(t>.6&&t<.8){const i=(t-.6)/.2*(t-.6)/.2;e.scale.set(.3*(1-i))}}Yi(this.children,e=>Date.now()-e.createTime>800)}addJudge(e,t){if(!pn(t)&&!mr(t))return;const i=new Le(pn(t)?lr.dropped_tex:lr.held_tex);i.anchor.set(.5),i.x=this.notefield.getColumnX(e),i.createTime=Date.now(),i.scale.set(0),this.addChild(i)}}const lC={L:233724,l:11261687,R:16559363,r:16442809};class hC extends Ee{notefield;arrowMap=new Map;notesDirty=!1;children=[];constructor(e){super(),this.notefield=e,this.sortableChildren=!0;const t=()=>{this.arrowMap.clear(),this.removeChildren()},i=()=>this.notesDirty=!0;q.on("timeSigChanged",t),q.on("chartModified",i),this.on("destroyed",()=>{q.off("timeSigChanged",t),q.on("chartModified",i)})}update(e,t){const i=this.notefield.renderer.chart.getNotedata();if(this.notesDirty){for(const[r,n]of this.arrowMap.entries())i.includes(r)||(n.destroy(),this.arrowMap.delete(r));this.notesDirty=!1}for(const r of i){if(r.beat>t)break;if(this.shouldDisplayNote(r,e,t)&&!this.arrowMap.has(r)){const n=new Ee,a=this.notefield.createNote(r);Object.assign(n,{x:this.notefield.getColumnX(r.col),zIndex:r.beat});const o=new Le(te.WHITE),l=a.getBounds();o.x=l.x,o.y=l.y,o.width=l.width,o.height=l.height,o.alpha=0;const c=new Le(te.WHITE);c.x=l.x,c.y=l.y,c.width=l.width,c.height=l.height,c.alpha=0,this.notefield.renderer.registerDragNote(n,r),n.wrapper=a,n.selection=o,n.parity=c,n.lastActive=!1,this.arrowMap.set(r,n),n.addChild(a,o,c),this.addChild(n)}}for(const[r,n]of this.arrowMap.entries()){if(!this.shouldDisplayNote(r,e,t)){n.destroy(),this.arrowMap.delete(r);continue}if(n.y=this.notefield.renderer.getActualReceptorYPos(),(!Pe(r)||!r.gameplay?.lastHoldActivation||this.notefield.renderer.getVisualBeat()t)&&!this.arrowMap.has(n)){const a={...n,beat:n.beat+i,col:n.col+r},o=new Ee,l=this.notefield.createNote(a);Object.assign(o,{x:this.notefield.getColumnX(a.col),zIndex:a.beat,alpha:.4});const c=new Le(te.WHITE),u=l.getBounds();c.x=u.x,c.y=u.y,c.width=u.width,c.height=u.height,c.alpha=0,this.notefield.renderer.registerDragNote(l,a),o.wrapper=l,o.selection=c,this.arrowMap.set(n,o),o.addChild(l,c),this.addChild(o)}for(const[n,a]of this.arrowMap.entries()){if(n.beat+i+(Pe(n)?n.hold:0)t){a.destroy(),this.arrowMap.delete(n);continue}const o=n.beat+i;if(a.y=this.notefield.renderer.getYPosFromBeat(o),a.selection.alpha=Math.sin(Date.now()/320)*.1+.3,Pe(n)){const l=this.notefield.renderer.getYPosFromBeat(o+(Pe(n)?n.hold:0))-a.y,c=a.wrapper.object;c.setLength(l),c.setBrightness(1);const u=a.wrapper.getLocalBounds();a.selection.x=u.x,a.selection.y=u.y,a.selection.width=u.width,a.selection.height=u.height}}}}const pC="data:image/png;base64,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",fC="data:image/png;base64,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";class mC extends Um{offsetY=0;setY=0;_last=0;_lastTop=!1;constructor(e){super(e,0,0,0,0),this.scale.cb=()=>{this.refresh()}}cropBottom(e,t=!1){this._last==e&&!this._lastTop&&!t||(this._last=e,this._lastTop=!1,this._height=this.texture.height-e/Math.abs(this.scale.y),this._bottomHeight=0,this.offsetY=0,this.topHeight=this.texture.height-e/Math.abs(this.scale.y),this._updateY())}cropTop(e,t=!1){this._last==e&&this._lastTop&&!t||(this._last=e,this._lastTop=!0,this._height=this.texture.height-e/Math.abs(this.scale.y),this._topHeight=0,this.bottomHeight=this.texture.height-e/Math.abs(this.scale.y),this.offsetY=e/Math.abs(this.scale.y),this._updateY())}get y(){return this.setY}set y(e){this.setY=e,this._updateY()}_updateY(){super.y=this.setY+this.offsetY*Math.abs(this.scale.y)}refresh(){this._lastTop?this.cropTop(this._last,!0):this.cropBottom(this._last,!0)}}class ry extends mC{constructor(e,t=64){super(e),this.scale.set(t/this.texture.width),this.pivot.x=t/2/this.scale.x,this.texture.on("update",()=>{this.width=this.texture.width,this.height=this.texture.height,this.scale.set(t/this.texture.width),this.pivot.x=t/2/this.scale.x,this.refresh()})}}class UC extends ry{_playing=!1;_autoUpdate=!1;_isConnectedToTicker=!1;_tickerUpdate=this.update.bind(this);_currentTime=0;_textures;_previousFrame=null;onComplete=null;onLoop=null;onFrameChange=null;animationSpeed=1;loop=!1;updateAnchor=!1;constructor(e,t){super(e[0],t),this.textures=e}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(xt.shared.remove(this._tickerUpdate),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(xt.shared.add(this._tickerUpdate,this,Fs.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(e){this.stop(),this.currentFrame=e}gotoAndPlay(e){this.currentFrame=e,this.play()}update(e){if(!this._playing)return;const t=this.animationSpeed*e,i=this.currentFrame;this._currentTime+=t,this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete?.()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete?.()):i!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFramei)&&this.onLoop(),this.updateTexture())}updateTexture(){const e=this.currentFrame;this._previousFrame!==e&&(this._previousFrame=e,this.texture=this._textures[e],this.onFrameChange?.(this.currentFrame))}destroy(e){this.stop(),super.destroy(e),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}get totalFrames(){return this._textures?.length??0}get textures(){return this._textures??[]}set textures(e){this._textures=e,this._previousFrame=null,this.gotoAndStop(0),this.updateTexture()}get currentFrame(){let e=Math.floor(this._currentTime)%this._textures.length;return e<0&&(e+=this._textures.length),e}set currentFrame(e){if(e<0||e>this.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${e}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const t=this.currentFrame;this._currentTime=e,t!==this.currentFrame&&this.updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,!this._autoUpdate&&this._isConnectedToTicker?(xt.shared.remove(this._tickerUpdate),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(xt.shared.add(this._tickerUpdate),this._isConnectedToTicker=!0))}}const gC={Fake:te.from(pC),Lift:te.from(fC)};class sf extends Ee{object;icon;constructor(e){super(),this.object=e,this.icon=new Le(gC[e.note.type]),this.icon.anchor.set(.5),this.icon.scale.set(.3),this.icon.alpha=.8,this.icon.visible=!1,this.addChild(e,this.icon),e.nf.noteskin===void 0?q.on("noteskinLoaded",()=>this.loadEventHandler()):this.loadEventHandler()}loadEventHandler(){this.object.nf.noteskin.onUpdate(this,e=>{if(!w.chart.drawIcons){this.icon.visible=!1;return}if(this.object.nf.noteskinOptions?.hideIcons?.includes(this.object.note.type)){this.icon.visible=!1;return}this.icon.visible=!0,this.object.note.type=="Fake"&&(this.icon.visible=e.chartManager.getMode()!=X.Play)})}}class yC extends Ee{type="note";note;nf;constructor(e,t){super(),this.note=t,this.nf=e,this.nf.noteskin===void 0?q.on("noteskinLoaded",()=>{this.loadElement(t)}):this.loadElement(t)}loadElement(e){const t=this.nf.noteskin.getElement({element:e.type,columnName:this.nf.getColumnName(e.col),columnNumber:e.col},{note:e});this.addChild(t)}}function vC(s){return s.cropTop!==void 0}class AC extends Ee{type="hold";note;active;inactive;wasActive=!1;lastLength=null;elements;metrics;ns;nf;loaded=!1;constructor(e,t){super();const i=new Ee,r=new Ee;this.note=t,this.ns=e.noteskin,this.nf=e,this.metrics=this.ns.metrics,i.visible=!1,this.active=i,this.inactive=r,this.addChild(r,i),e.noteskin===void 0?q.on("noteskinLoaded",()=>{this.loadElements()}):this.loadElements()}loadElements(){if(!this.loaded){this.elements={};for(const e of["Active","Inactive"]){this.elements[e]={};for(const t of["BottomCap","Body","TopCap","Head"]){const i=this.getNoteskinElement(`${e} ${t}`);t=="BottomCap"?vC(i)?this.elements[e][t]=i:(w.debug.showNoteskinErrors&&_e.createFormatted(`Noteskin Error: invalid tail found for ${e} ${t}!`,"error"),this.elements[e][t]=new ry(sy,64)):this.elements[e][t]=i,(e=="Active"?this.active:this.inactive).addChild(this.elements[e][t])}}this.loaded=!0}}getNoteskinElement(e){return this.ns.getElement({element:`${this.note.type} ${e}`,columnName:this.nf.getColumnName(this.note.col),columnNumber:this.note.col},{note:this.note})}setActive(e){this.wasActive!=e&&(this.wasActive=e,this.active.visible=e,this.inactive.visible=!e)}setBrightness(e){if(!this.loaded)return;const t=["Active","Inactive"],i=["Body","TopCap","BottomCap"];for(const r of t)for(const n of i)"tint"in this.elements[r][n]&&(this.elements[r][n].tint=ey(e*255,e*255,e*255))}setLength(e){if(!this.loaded||this.lastLength==e)return;this.lastLength=e;const t=this.metrics[`${this.note.type}BodyBottomOffset`],i=this.metrics[`${this.note.type}BodyTopOffset`],r=["Active","Inactive"],n=e>=0?1:-1,a=Math.abs(e);for(const o of r){this.elements[o].Body.height=Math.max(0,a+t-i),this.elements[o].Body.y=a+t,this.elements[o].BottomCap.y=a+t,this.elements[o].BottomCap.y<0?(this.elements[o].BottomCap.cropTop(-this.elements[o].BottomCap.y),e<0&&(this.elements[o].BottomCap.y-=this.elements[o].BottomCap.y/Math.abs(this.elements[o].BottomCap.scale.y))):this.elements[o].BottomCap.cropTop(0),this.elements[o].TopCap.y=i;const l=Math.abs(this.elements[o].BottomCap.scale.y);this.elements[o].BottomCap.scale.y=e<0?-l:l;const c=Math.abs(this.elements[o].TopCap.scale.y);this.elements[o].TopCap.scale.y=e<0?-c:c,this.elements[o].Body.height*=n,this.elements[o].Body.y*=n,this.elements[o].BottomCap.y*=n,this.elements[o].TopCap.y*=n}}}class rf extends Ee{noteskinOptions;noteskin;gameType;renderer;receptors;notes;selectionNotes;flashes;holdJudges;ghostNote;ghostNoteEntry;columnX=[];constructor(e){super(),this.renderer=e,this.gameType=e.chart.gameType,st.getNoteskin(this.gameType,w.chart.noteskin.name).then(t=>{if(!t){_e.createFormatted("Couldn't find an available noteskin!","error");return}let i=0;for(let r=0;r=e&&this.ghostNoteEntry.beat<=t&&this.ghostNoteEntry.beat>=0))}onJudgement(e,t){this.noteskin!==void 0&&(this.holdJudges.addJudge(e,t),ji(t)&&this.noteskin.broadcast({type:"hit",judgement:t,columnName:this.getColumnName(e),columnNumber:e}),mr(t)&&this.noteskin.broadcast({type:"held",columnName:this.getColumnName(e),columnNumber:e}),pn(t)&&this.noteskin.broadcast({type:"letgo",columnName:this.getColumnName(e),columnNumber:e}),Ci(t)&&this.noteskin.broadcast({type:"miss",judgement:t,columnName:this.getColumnName(e),columnNumber:e}),dl(t)&&this.noteskin.broadcast({type:"hitmine",columnName:this.getColumnName(e),columnNumber:e}))}startPlay(){}endPlay(){if(this.noteskin!==void 0)for(let e=0;eDate.now()-e.createTime>5e3),w.general.smoothAnimations?this.currentMedian.x=(this.currentMedian.x-this.target)*.8+this.target:this.currentMedian.x=this.target}addBar(e,t){if(e==null||!Ci(t)&&!ji(t))return;const i=new Le(te.WHITE);i.width=wC,i.height=nf,i.anchor.set(.5),i.x=e*400,i.tint=t.color,i.createTime=Date.now(),i.miss=Ci(t),i.ms=Math.round(e*1e3),this.errorText.tint=t.color,this.errorText.text=(e*1e3).toFixed(1)+"ms",this.errorTextTime=Date.now(),this.barlines.addChild(i),this.target=ul(this.barlines.children.filter(r=>!r.miss).map(r=>r.ms))*.4}reset(){this.currentMedian.x=0,this.target=0,Yi(this.barlines.children,()=>!0)}}class _C extends Le{createTime=-1;active=!1;type=Mg;constructor(){super(),this.anchor.set(.5)}update(){if(this.y=w.chart.reverse?40:-40,this.visible=this.active,this.active){const e=(Date.now()-this.createTime)/1e3;let t=1.2;if(Je.getCollection(w.play.timingCollection).shouldHideNote(this.type)||(t=.8),e<.1){const i=1-(1-e/.1)*(1-e/.1),r=(1-t)*i+t;this.scale.x=.4*r,this.scale.y=.4*r}else if(e>.6&&e<.8){const i=(e-.6)/.2*(e-.6)/.2;this.scale.x=.4*(1-i),this.scale.y=.4*(1-i)}else e>.8&&(this.active=!1)}}doJudge(e,t){if(e==null&&(e=0),!ji(t)&&!Ci(t))return;const i=t.judgementTexture.getTexture(e,t);i&&(this.texture=i,this.texture.updateUvs(),this.active=!0,this.type=t,this.createTime=Date.now(),w.play.judgementTilt?this.rotation=Ve(e,-.05,.05)*300/180*Math.PI:this.rotation=0)}reset(){this.active=!1}}const af={BPMS:{title:"BPM Event",rows:[{label:"Tempo",key:"value",input:{type:"spinner",precision:3}}]},STOPS:{title:"Stop Event",description:"Stops for a number of seconds. Notes on this beat are hit before the stop occurs.",rows:[{label:"Seconds",key:"value",input:{type:"spinner",precision:3}}]},WARPS:{title:"Warp Event",description:"Warps ahead a number of beats. Warped notes do not count towards score.",rows:[{label:"Beats",key:"value",input:{type:"spinner",precision:3,min:0}}]},DELAYS:{title:"Delay Event",description:"Stops for a number of seconds. Notes on this beat are hit after the delay occurs.",rows:[{label:"Seconds",key:"value",input:{type:"spinner",precision:3}}]},SCROLLS:{title:"Scroll Event",description:"Notes after this event will scroll at the specified speed.",rows:[{label:"Multiplier",key:"value",input:{type:"spinner",precision:3}}]},TICKCOUNTS:{title:"Tickcount Event",description:"Number of ticks per beat in a hold. Only applies to pump gamemodes.",rows:[{label:"Ticks",key:"value",input:{type:"spinner",step:1,precision:0,min:0}}]},FAKES:{title:"Fake Event",description:"Creates an area of notes that cannot be hit and do not count towards score.",rows:[{label:"Beats",key:"value",input:{type:"spinner",precision:3,min:0}}]},LABELS:{title:"Label Event",rows:[{label:"Label",key:"value",input:{type:"text"}}]},SPEEDS:{title:"Speed Event",width:200,description:"The entire playfield scrolls at the specified speed. Can slowly ease over a certain amount of time.",rows:[{label:"Multiplier",key:"value",input:{type:"spinner",precision:3}},{label:"Ease time",key:"delay",input:{type:"spinner",precision:3,min:0}},{label:"Ease unit",key:"unit",input:{type:"dropdown",items:["Beats","Seconds"],transformers:{serialize:s=>s=="B"?"Beats":"Seconds",deserialize:s=>s=="Beats"?"B":"T"}}}]},TIMESIGNATURES:{title:"Time Signature Event",width:200,rows:[{label:"Upper",key:"upper",input:{type:"spinner",step:1,precision:0,min:1}},{label:"Lower",key:"lower",input:{type:"spinner",step:1,precision:0,min:1}}]},COMBOS:{title:"Combo Event",width:200,description:"Multiplies the combo gained from hitting/missing notes after this event.",rows:[{label:"Hit multiplier",key:"hitMult",input:{type:"spinner",step:1,precision:0,min:0}},{label:"Miss multiplier",key:"missMult",input:{type:"spinner",step:1,precision:0,min:0}}]},ATTACKS:{title:"Attack Event",width:200,description:"Applies a modifier to the playfield. Can specify the length of the applied attack in seconds or the end time of the attack.",rows:[{label:"Timing type",key:"endType",input:{type:"dropdown",items:["Length","End"],transformers:{serialize:s=>s=="LEN"?"Length":"End",deserialize:s=>s=="Length"?"LEN":"END"}}},{label:"Seconds",key:"value",input:{type:"spinner",precision:3}},{label:"Mods",key:"mods",input:{type:"text"}}]},BGCHANGES:{title:"BG Change Event",width:250,rows:[{label:"File",key:"file",input:{type:"text"}},{label:"Update rate",key:"updateRate",input:{type:"spinner",precision:3,min:0}},{label:"Crossfade",key:"crossfade",input:{type:"checkbox"}},{label:"StretchRewind",key:"stretchRewind",input:{type:"checkbox"}},{label:"StretchNoLoop",key:"StretchNoLoop",input:{type:"checkbox"}},{label:"Effect",key:"effect",input:{type:"text"}},{label:"File2",key:"file2",input:{type:"text"}},{label:"Transition",key:"transition",input:{type:"text"}},{label:"Color1",key:"color1",input:{type:"text"}},{label:"Color2",key:"color2",input:{type:"text"}}]},FGCHANGES:{title:"FG Change Event",width:250,rows:[{label:"File",key:"file",input:{type:"text"}},{label:"Update rate",key:"updateRate",input:{type:"spinner",precision:3,min:0}},{label:"Crossfade",key:"crossfade",input:{type:"checkbox"}},{label:"StretchRewind",key:"stretchRewind",input:{type:"checkbox"}},{label:"StretchNoLoop",key:"StretchNoLoop",input:{type:"checkbox"}},{label:"Effect",key:"effect",input:{type:"text"}},{label:"File2",key:"file2",input:{type:"text"}},{label:"Transition",key:"transition",input:{type:"text"}},{label:"Color1",key:"color1",input:{type:"text"}},{label:"Color2",key:"color2",input:{type:"text"}}]}};class Mt{static activePopup;timingBox;popup;zoomer;editText;timingData;rows=[];onTimingChange;clickOutside;moveInterval;modifyBox;cachedEvent;onConfirm=()=>{};persistent=!1;constructor(e,t,i=!1){e.popup=this,this.timingBox=e,this.timingData=t,this.cachedEvent=this.timingBox.event,this.modifyBox=i,this.popup=this.build(),this.popup.style.transitionDuration="0s",setTimeout(()=>this.movePosition()),this.onTimingChange=this.updateValues.bind(this),this.clickOutside=r=>{this.popup.contains(r.target)||this.close()},q.on("timingModified",this.onTimingChange),Mt.activePopup?.persistent?e.popup=void 0:(document.getElementById("popups")?.appendChild(this.popup),this.moveInterval=setInterval(()=>this.movePosition(),150),Mt.activePopup?.close(),Mt.activePopup=this)}movePosition(){const e=this.timingBox.backgroundObj.getBounds(),t=e.left+e.width/2,i=af[this.timingBox.event.type].width??150,r=i/2+15,n=window.innerWidth-i/2-15;this.popup.style.left=`${Ve(t,r,n)}px`;const a=document.getElementById("pixi").offsetTop+9,o=e.top+a+e.height/2;this.popup.style.top=`${e.top+e.height+a}px`,o+this.popup.clientHeight>window.innerHeight-15&&(this.popup.style.transform="translate(-50%, -100%)",this.popup.style.top=`${e.top-e.height/2+a}px`),setTimeout(()=>this.popup.style.transitionDuration="",10)}build(){const e=af[this.timingBox.event.type],t=document.createElement("div");t.classList.add("popup");const i=document.createElement("div");i.classList.add("popup-zoomer"),i.style.width=e.width?`${e.width}px`:"150px",i.style.backgroundColor=Sc(Os[this.timingBox.event.type].toString(16).padStart(6,"0"),"#333333",.75),this.zoomer=i,t.appendChild(i);const r=document.createElement("div");if(r.innerText=e.title,r.classList.add("popup-title"),i.appendChild(r),e.description){const u=document.createElement("div");u.innerText=e.description,i.appendChild(u),u.classList.add("popup-desc")}const n=document.createElement("div");n.classList.add("popup-grid"),i.appendChild(n),e.rows.forEach(u=>n.append(...this.buildRow(u)));const a=document.createElement("div");a.innerText="click to edit",a.style.marginTop="4px",a.style.height="10px",i.appendChild(a),a.classList.add("popup-desc"),this.editText=a;const o=document.createElement("div");o.classList.add("popup-options");const l=document.createElement("button");l.innerText="Ok",l.onclick=()=>{this.close(),this.onConfirm(this.timingBox.event)},l.classList.add("confirm"),o.append(l);const c=document.createElement("button");return c.innerText="Delete",c.onclick=()=>{this.modifyBox||this.timingData.delete([{type:this.timingBox.event.type,[this.timingBox.event.type=="ATTACKS"?"second":"beat"]:this.timingBox.event.type=="ATTACKS"?this.timingBox.event.second:this.timingBox.event.beat}]),this.close()},c.classList.add("delete"),o.append(c),i.append(o),t}buildRow(e){const t=structuredClone(this.timingBox.event),i=document.createElement("div");i.innerText=e.label,i.classList.add("popup-label");const r=[];switch(r.push(i),e.input.type){case"spinner":{const n=nt.create(t[e.key],e.input.step,e.input.precision,e.input.min,e.input.max);n.onChange=a=>{a!==void 0&&this.modifyEvent(e.key,a)},this.rows.push({data:e,el:n}),r.push(n.view);break}case"text":{const n=document.createElement("input");n.type="text",n.autocomplete="off",n.spellcheck=!1,n.onkeydown=a=>{a.key=="Enter"&&n.blur()},n.onblur=()=>{this.modifyEvent(e.key,n.value)},n.value=t[e.key],this.rows.push({data:e,el:n}),r.push(n);break}case"dropdown":{if(e.input.transformers){const n=e.input.transformers.deserialize,a=e.input.transformers.serialize,o=di.create(e.input.items,a(t[e.key]));o.onChange(l=>{this.modifyEvent(e.key,n(l))}),this.rows.push({data:e,el:o}),r.push(o.view)}else{const n=di.create(e.input.items,t[e.key]);n.onChange(a=>{this.modifyEvent(e.key,a)}),this.rows.push({data:e,el:n}),r.push(n.view)}break}case"checkbox":{const n=document.createElement("input");n.type="checkbox",n.checked=t[e.key],n.onchange=()=>{this.modifyEvent(e.key,n.checked)},this.rows.push({data:e,el:n}),r.push(n);break}}return r}modifyEvent(e,t){this.modifyBox?Object.assign(this.timingBox.event,{[e]:t}):this.timingData.modify([[structuredClone(this.timingBox.event),Object.assign(this.timingBox.event,{[e]:t})]])}updateValues(){const e=this.timingData.getEventAtBeat(this.timingBox.event.type,this.timingBox.event.beat,!1);if(!this.timingBox||!e||e.beat!=this.timingBox.event.beat){this.close();return}this.rows.forEach(t=>{switch(t.data.input.type){case"spinner":{t.el.setValue(e[t.data.key]);break}case"text":{t.el.value=e[t.data.key];break}case"dropdown":{const i=t.el;t.data.input.transformers?i.setSelected(t.data.input.transformers.serialize(e[t.data.key])):i.setSelected(e[t.data.key]);break}case"checkbox":{t.el.checked=e[t.data.key];break}}})}close(){this.persistent=!1,q.off("timingModified",this.onTimingChange),window.removeEventListener("click",this.clickOutside),clearInterval(this.moveInterval),this.popup.classList.add("exiting"),setTimeout(()=>this.popup.remove(),200),this.timingBox.popup=void 0,Mt.activePopup=void 0}select(){this.persistent=!0,this.zoomer.classList.add("selected"),this.editText.style.transform="scale(0)",this.editText.style.height="0px",setTimeout(()=>window.addEventListener("click",this.clickOutside),200)}detach(){clearInterval(this.moveInterval)}getEvent(){return this.cachedEvent}attach(e){clearInterval(this.moveInterval),this.moveInterval=setInterval(()=>this.movePosition(),150),this.timingBox=e,this.cachedEvent=this.timingBox.event}}const Bc={fontName:"Main",fontSize:15},Is={BPMS:55,STOPS:55,DELAYS:55,WARPS:55,FAKES:55,COMBOS:40,SPEEDS:80,LABELS:80,SCROLLS:55,TIMESIGNATURES:40,TICKCOUNTS:40,BGCHANGES:55,FGCHANGES:55,ATTACKS:55};class TC extends Ee{tracks=new Ee;renderer;timingBoxMap=new Map;wasEditingTiming=!1;boxPool=new oa({create:()=>{const e=new Ee;return e.textObj=new Re("",Bc),e.backgroundObj=new Ht,e.selection=new Ht("onlyBorder"),e.selection.tint=3841008,e.addChild(e.backgroundObj,e.textObj,e.selection),e}});ghostBox;timingDirty=!1;constructor(e){super(),this.renderer=e,this.boxPool.sortableChildren=!0,this.sortableChildren=!0,this.addChild(this.tracks,this.boxPool);const t=()=>this.timingDirty=!0;q.on("timingModified",t),this.on("destroyed",()=>q.off("timingModified",t))}update(e,t){this.renderer.chartManager.editTimingMode!=Oe.Add&&(this.ghostBox?.removeFromParent(),this.ghostBox?.destroy(),this.ghostBox=void 0),this.updateTracks(),this.updateBoxes(e,t)}createTrack(e,t){const i=Object.assign(new Le(te.WHITE),{alpha:0,width:Is[e],name:e,height:5e3,x:t,type:e,lastX:0,tint:2503250,targetAlpha:0});return i.anchor.y=.5,this.tracks.addChild(i),i}initializeBox(e,t){if(kt.stop(e.animationId),Object.assign(e,{event:t,isChartTiming:this.renderer.chart.timingData.isPropertyChartSpecific(t.type),lastX:void 0,lastAnchor:void 0,animationId:void 0,zIndex:t.beat,eventMode:"static"}),e.textObj.text=this.getLabelFromEvent(t),e.textObj.anchor.set(.5,.55),e.backgroundObj.width=e.textObj.width+10,e.backgroundObj.height=25,e.backgroundObj.position.x=-e.backgroundObj.width/2,e.backgroundObj.position.y=-25/2,e.selection.width=e.textObj.width+10,e.selection.height=25,e.selection.position=e.backgroundObj.position,e.popup=void 0,Mt.activePopup){const i=Mt.activePopup.getEvent();i.type=="ATTACKS"&&t.type=="ATTACKS"&&i.second==t.second&&(Mt.activePopup.attach(e),e.popup=Mt.activePopup),i.type!="ATTACKS"&&t.type!="ATTACKS"&&i.type==t.type&&i.beat==t.beat&&(Mt.activePopup.attach(e),e.popup=Mt.activePopup)}}addDragListeners(e,t){e.on("mouseenter",()=>{e?.popup?.persistent!==!0&&(this.renderer.chartManager.eventSelection.timingEvents.length>0||this.renderer.isDragSelecting()||(e.popup?.close(),this.renderer.chartManager.getMode()==X.Edit&&(new Mt(e,this.getTargetTimingData(e.event.isChartTiming)),e.popup&&(e.popup.onConfirm=()=>{this.renderer.chartManager.removeEventFromSelection(t)}))))}),e.on("mouseleave",()=>{e?.popup?.persistent!==!0&&e.popup?.close()});let i=0,r;const n=a=>{const o=r,l=this.toLocal(a.global);if(Math.abs(l.y-i)<32){this.renderer.chartManager.eventSelection.shift&&(this.renderer.chartManager.eventSelection.shift={beatShift:0});return}e.popup?.close();const c=this.renderer.getBeatFromYPos(l.y),u=w.chart.snap==0?1/1e3:w.chart.snap;let h=Math.round(c/u)*u;Math.abs(h-c)>Math.abs(c-o.beat)&&(h=o.beat),this.renderer.chartManager.eventSelection.shift||={beatShift:0},this.renderer.chartManager.eventSelection.shift.beatShift=Math.max(-Math.min(...this.renderer.chartManager.eventSelection.timingEvents.map(d=>d.beat)),h-o.beat)};e.on("pointerdown",a=>{if(_c(a)){this.renderer.chartManager.clearSelections(),this.renderer.chartManager.addEventToSelection(t),Mt.activePopup?.close();return}if(a.stopImmediatePropagation(),this.renderer.chartManager.isEventInSelection(t)?(a.getModifierState("Control")||a.getModifierState("Meta"))&&this.renderer.chartManager.removeEventFromSelection(t):(!a.getModifierState("Control")&&!a.getModifierState("Meta")&&!a.getModifierState("Shift")&&this.renderer.chartManager.clearSelections(),this.renderer.chartManager.addEventToSelection(t)),this.renderer.chartManager.getMode()==X.Edit&&this.renderer.chartManager.eventSelection.timingEvents.length==1&&(e?.popup||(Mt.activePopup?.close(),new Mt(e,this.getTargetTimingData(e.event.isChartTiming)),e.popup.onConfirm=()=>{this.renderer.chartManager.removeEventFromSelection(t)})),e.popup&&!a.getModifierState("Control")&&!a.getModifierState("Meta")&&!a.getModifierState("Shift")?e.popup.select():e.popup?.close(),i=e.y,r=t,this.renderer.chartManager.editTimingMode==Oe.Add)return;this.renderer.on("pointermove",n);const o=()=>{this.renderer.off("pointermove",n),this.renderer.off("pointerup",o),(this.renderer.chartManager.eventSelection.shift?.beatShift??0)!=0&&this.renderer.chartManager.modifyEventSelection(l=>(l.type=="ATTACKS"&&(l.second=this.renderer.chart.timingData.getSecondsFromBeat(l.beat+this.renderer.chartManager.eventSelection.shift.beatShift)),l.beat+=this.renderer.chartManager.eventSelection.shift.beatShift,l)),this.renderer.chartManager.eventSelection.shift=void 0};this.renderer.on("pointerup",o)})}updateTracks(){const e=w.chart.timingEventOrder.left,t=w.chart.timingEventOrder.right,i=this.renderer.chartManager.editTimingMode!=Oe.Off&&this.renderer.chartManager.getMode()==X.Edit;this.tracks.children.forEach(n=>n.visible=!1);let r=-this.renderer.chart.gameType.notefieldWidth*.5-128;for(let n=e.length-1;n>=0;n--){const a=e[n],o=this.tracks.getChildByName(a)??this.createTrack(a,r);o.visible=!0,o.lastX!=r&&(o.lastX=r,o.targetAlpha=n%2==0?.1:0,kt.animate(o,{0:{x:"inherit","anchor.x":"inherit"},1:{x:r,"anchor.x":1}},.3,Kt(0,0,.16,1.01),()=>{},`track-${a}-x`),kt.animate(o,{0:{alpha:"inherit"},1:{alpha:i?o.targetAlpha:0}},.3,Kt(0,0,.16,1.01),()=>{},`track-${a}-alpha`)),r-=Is[a]}r=this.renderer.chart.gameType.notefieldWidth*.5+128;for(let n=0;n{},`track-${a}-x`),kt.animate(o,{0:{alpha:"inherit"},1:{alpha:i?o.targetAlpha:0}},.3,Kt(0,0,.16,1.01),()=>{},`track-${a}-alpha`)),r+=Is[a]}if(this.wasEditingTiming!=i){this.wasEditingTiming=i;for(const n of this.tracks.children)kt.animate(n,{0:{alpha:"inherit"},1:{alpha:i?n.targetAlpha:0}},.3,Kt(0,0,.16,1.01),()=>{},`track-${n.type}-alpha`)}}updateBoxes(e,t){this.timingDirty&&(this.timingBoxMap.clear(),this.boxPool.destroyAll(),this.timingDirty=!1);const i=this.renderer.chartManager.editTimingMode!=Oe.Off&&this.renderer.chartManager.getMode()==X.Edit;this.boxPool.visible=this.renderer.shouldDisplayBarlines(),this.ghostBox&&(this.ghostBox.visible=this.renderer.shouldDisplayBarlines()&&i);for(const n of this.renderer.chart.timingData.getTimingData()){if(tn.beat)&&!this.timingBoxMap.has(n)){const a=this.boxPool.createChild();if(!a)break;this.initializeBox(a,n),this.addDragListeners(a,n),this.timingBoxMap.set(n,a)}}const r={beat:-Number.MAX_SAFE_INTEGER,second:-Number.MAX_SAFE_INTEGER,leftOffset:0,rightOffset:0};for(const[n,a]of this.timingBoxMap.entries()){if(n.beatt||!w.chart.timingEventOrder.left.includes(n.type)&&!w.chart.timingEventOrder.right.includes(n.type)){this.timingBoxMap.delete(n),a.popup?.persistent?a.popup?.detach():a.popup?.close(),this.boxPool.destroyChild(a);continue}let o=0,l=0;const c=a.backgroundObj.width,u=w.chart.timingEventOrder.right.includes(n.type)?"right":"left";i?(o=this.tracks.getChildByName(n.type)?.x??a.x,o+=Is[n.type]/2*(o>0?1:-1),l=.5):(o=(u=="right"?1:-1)*(this.renderer.chart.gameType.notefieldWidth*.5+80),u=="left"&&(o-=30),(r.beat!=n.beat||n.second&&r.second!=n.second)&&(r.leftOffset=0,r.rightOffset=0,r.beat=n.beat,r.second=n.second),u=="left"?(o-=r.leftOffset,r.leftOffset+=c+5):(o+=r.rightOffset,r.rightOffset+=c+5),l=u=="right"?0:1),a.lastX===void 0||a.lastAnchor===void 0?(a.x=o,a.pivot.x=(l-.5)*c):(a.lastX!=o||a.lastAnchor!=l)&&(a.animationId=kt.animate(a,{0:{x:"inherit","pivot.x":"inherit"},1:{x:o,"pivot.x":(l-.5)*c}},.3,Kt(0,0,.16,1.01),()=>{},a.animationId)),a.lastX=o,a.lastAnchor=l,a.y=w.chart.CMod&&n.type=="ATTACKS"?this.renderer.getYPosFromSecond(n.second):this.renderer.getYPosFromBeat(n.beat);const h=this.renderer.chartManager.getMode()!=X.Play&&this.renderer.chartManager.isEventInSelection(n);if(a.backgroundObj.tint=h?ty(Os[n.type]??0,Math.sin(Date.now()/320)*.4+1.5):Os[n.type]??0,a.selection.alpha=h?1:0,a.visible=!h||!this.renderer.chartManager.eventSelection.shift,this.renderer.chartManager.editTimingMode!=Oe.Off){const d=this.renderer.selectionTest(a);!h&&d&&this.renderer.chartManager.addEventToDragSelection(n),h&&!d&&this.renderer.chartManager.removeEventFromDragSelection(n)}}}updateGhostEvent(e){const t=w.chart.snap==0?.001:w.chart.snap,i=Math.round(this.renderer.getBeatFromYPos(e.y)/t)*t,r=this.ghostBox?.popup?this.ghostBox.event.type:this.getClosestTrack(e.x)?.name;if(!r){this.ghostBox?.removeFromParent(),this.ghostBox?.destroy(),this.ghostBox=void 0;return}if(!this.ghostBox){const o=new Ee;o.textObj=new Re("",Bc),o.backgroundObj=new Ht,o.selection=new Ht("onlyBorder"),o.guideLine=new Le(te.WHITE),o.selection.tint=3841008,o.selection.alpha=0,o.addChild(o.guideLine,o.backgroundObj,o.textObj,o.selection),this.addChild(o),o.visible=this.renderer.shouldDisplayBarlines(),o.textObj.anchor.set(.5,.55),o.backgroundObj.height=25,o.selection.height=25,o.guideLine.height=1,o.guideLine.anchor.y=.5,this.ghostBox=o}!this.ghostBox?.popup&&(this.ghostBox.event?.beat!=i||this.ghostBox.event?.type!=r)&&(this.ghostBox.event=structuredClone(this.renderer.chart.timingData.getEventAtBeat(r,i))??this.renderer.chart.timingData.getDefaultEvent(r,i),this.ghostBox.event.beat=i,r=="ATTACKS"&&(this.ghostBox.event.second=this.renderer.chart.getSecondsFromBeat(i)),this.ghostBox.textObj.text=this.getLabelFromEvent(this.ghostBox.event),this.ghostBox.backgroundObj.width=this.ghostBox.textObj.width+10,this.ghostBox.selection.width=this.ghostBox.textObj.width+10),this.ghostBox.alpha=this.ghostBox?.popup?1:.4,this.ghostBox.selection.alpha=this.ghostBox?.popup?1:0,this.ghostBox.name=r;const n=this.renderer.getYPosFromBeat(this.ghostBox?.popup?this.ghostBox.event.beat:i);let a=this.tracks.getChildByName(r).x;a+=Is[r]/2*(a>0?1:-1),this.ghostBox.position.x=a,this.ghostBox.backgroundObj.tint=Os[r]??0,this.ghostBox.backgroundObj.position.x=-this.ghostBox.backgroundObj.width/2,this.ghostBox.backgroundObj.position.y=-25/2,this.ghostBox.guideLine.anchor.x=a<0?0:1,this.ghostBox.guideLine.width=Math.abs(this.ghostBox.position.x)+192-this.ghostBox.backgroundObj.width/2,this.ghostBox.guideLine.position.x=(a<0?1:-1)*this.ghostBox.backgroundObj.width/2,this.ghostBox.y=n,this.ghostBox.selection.position=this.ghostBox.backgroundObj.position}placeGhostEvent(){if(!this.ghostBox)return;const e=this.renderer.chart.timingData.getEventAtBeat(this.ghostBox.event.type,this.ghostBox.event.beat,!1);this.ghostBox.event.type=="ATTACKS"&&this.ghostBox.event.second==e?.second||this.ghostBox.event.type!="ATTACKS"&&this.ghostBox.event.beat==e?.beat||(this.renderer.chartManager.clearSelections(),this.ghostBox.event.isChartTiming=this.renderer.chart.timingData.isPropertyChartSpecific(this.ghostBox.event.type),new Mt(this.ghostBox,this.getTargetTimingData(this.ghostBox.event.isChartTiming),!0),this.ghostBox.popup?.select(),this.ghostBox.popup.onConfirm=t=>{this.getTargetTimingData(this.ghostBox.event.isChartTiming).insert([t])})}getClosestTrack(e){let t=Number.MAX_SAFE_INTEGER,i=this.tracks.children[0];for(const r of this.tracks.children){const n=Math.abs(r.x+(.5-r.anchor.x)*r.width-e);ni.width))return i}getLabelFromEvent(e){let t="";switch(e.type){case"BPMS":case"STOPS":case"WARPS":case"DELAYS":case"TICKCOUNTS":case"FAKES":case"SCROLLS":t=ne(e.value,3).toString();break;case"SPEEDS":t=`${ne(e.value,3)}/${ne(e.delay,3)}/${e.unit}`;break;case"LABELS":t=e.value;break;case"TIMESIGNATURES":t=`${ne(e.upper,3)}/${ne(e.lower,3)}`;break;case"COMBOS":t=`${ne(e.hitMult,3)}/${ne(e.missMult,3)}`;break;case"BGCHANGES":case"FGCHANGES":t=e.file;break;case"ATTACKS":t=`${e.mods}`}return t}getTargetTimingData(e){return e?this.renderer.chart.timingData:this.renderer.chart.timingData.simfileTimingData}}class SC extends Ee{children=[];renderer;timingBoxMap=new Map;trackPosCache=new Map;timingBoxPool=new oa({create:()=>{const e=new Ee;return e.guideLine=new Le(te.WHITE),e.textObj=new Re("",Bc),e.backgroundObj=new Ht,e.addChild(e.guideLine,e.backgroundObj,e.textObj),e}});constructor(e){super(),this.renderer=e,this.timingBoxPool.sortableChildren=!0,this.addChild(this.timingBoxPool)}update(e,t){if(!this.renderer.chartManager.eventSelection.shift){this.timingBoxPool.destroyAll(),this.timingBoxMap.clear(),this.trackPosCache.clear();return}const i=this.renderer.chartManager.eventSelection.shift.beatShift;for(const r of this.renderer.chartManager.eventSelection.timingEvents)if(!(tr.beat+i)&&!this.timingBoxMap.has(r)){const n=this.timingBoxPool.createChild();if(!n)continue;this.timingBoxMap.set(r,n);let a="";switch(r.type){case"BPMS":case"STOPS":case"WARPS":case"DELAYS":case"TICKCOUNTS":case"FAKES":case"SCROLLS":a=ne(r.value,3).toString();break;case"SPEEDS":a=`${ne(r.value,3)}/${ne(r.delay,3)}/${r.unit}`;break;case"LABELS":a=r.value;break;case"TIMESIGNATURES":a=`${ne(r.upper,3)}/${ne(r.lower,3)}`;break;case"COMBOS":a=`${ne(r.hitMult,3)}/${ne(r.missMult,3)}`;break;case"BGCHANGES":case"FGCHANGES":a=r.file;break;case"ATTACKS":a=`${r.mods} (${r.endType}=${r.value})`}const o=w.chart.timingEventOrder.right.includes(r.type)?"right":"left";if(Object.assign(n,{alpha:.4,isChartTiming:this.renderer.chart.timingData.isPropertyChartSpecific(r.type),zIndex:r.beat}),n.textObj.text=a,n.textObj.anchor.set(.5,.55),n.backgroundObj.width=n.textObj.width+10,n.backgroundObj.height=25,n.backgroundObj.tint=Os[r.type]??0,n.backgroundObj.position.x=-n.backgroundObj.width/2,n.backgroundObj.position.y=-n.backgroundObj.height/2,n.guideLine.height=1,n.guideLine.anchor.set(o=="left"?0:1,.5),n.guideLine.width=Math.abs(n.position.x)+192-n.backgroundObj.width/2,n.guideLine.position.x=(o=="left"?1:-1)*n.backgroundObj.width/2,this.renderer.chartManager.editTimingMode!=Oe.Off){let l=this.getTrackPos(r.type);l+=Is[r.type]/2*(l>0?1:-1),n.position.x=l,n.pivot.x=0}else{let l=(o=="right"?1:-1)*(this.renderer.chart.gameType.notefieldWidth*.5+80);o=="left"&&(l-=30),n.position.x=l,n.pivot.x=o=="right"?-n.backgroundObj.width/2:n.backgroundObj.width/2}}for(const[r,n]of this.timingBoxMap.entries()){if(tr.beat+i){this.timingBoxPool.destroyChild(n),this.timingBoxMap.delete(r);continue}n.y=w.chart.CMod&&r.second?this.renderer.getYPosFromSecond(r.second):this.renderer.getYPosFromBeat(r.beat+i)}}getTrackPos(e){if(this.trackPosCache.has(e))return this.trackPosCache.get(e);const t=w.chart.timingEventOrder.left,i=w.chart.timingEventOrder.right;let r=-this.renderer.chart.gameType.notefieldWidth*.5-128;for(let n=t.length-1;n>=0;n--){const a=t[n];this.trackPosCache.set(a,r),r-=Is[a]}r=this.renderer.chart.gameType.notefieldWidth*.5+128;for(let n=0;n{if(this.editingCol!=-1){const a=w.chart.snap==0?.020833333333333332:w.chart.snap,o=Math.round(this.getBeatFromYPos(this.lastMousePos.y)/a)*a;this.chartManager.editHoldBeat(this.editingCol,o,n.shiftKey)}};let i=0;const r=()=>{if(!this.chartManager.selection.shift&&!this.selectionBounds||i==0)return;const n=this.getYPosFromBeat(Math.max(0,this.chartManager.getBeat()+i));this.chartManager.setBeat(Math.max(0,this.chartManager.getBeat()+i)),this.selectionBounds&&(w.chart.reverse?this.selectionBounds.start.y-=w.chart.receptorYPos/w.chart.zoom+n:this.selectionBounds.start.y+=w.chart.receptorYPos/w.chart.zoom-n,this.selectionBoundary.update())};this.chartManager.app.ticker.add(r),window.addEventListener("keydown",t),this.on("destroyed",()=>{window.removeEventListener("keydown",t),this.removeAllListeners(),this.chartManager.app.ticker.remove(r)}),this.on("pointerdown",n=>{_c(n)||this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.View||(this.chartManager.editTimingMode==Oe.Add&&this.lastMousePos?this.timingTracks.placeGhostEvent():this.chartManager.editTimingMode==Oe.Off&&w.chart.mousePlacement&&this.lastMouseBeat!=-1&&this.lastMouseCol!=-1&&!n.getModifierState("Shift")?(this.chartManager.clearSelections(),this.editingCol=this.lastMouseCol,this.chartManager.setNote(this.lastMouseCol,"mouse",this.lastMouseBeat)):(!n.getModifierState("Control")&&!n.getModifierState("Meta")&&!n.getModifierState("Shift")&&this.chartManager.clearSelections(),this.chartManager[this.chartManager.editTimingMode==Oe.Off?"startDragSelection":"startDragEventSelection"](),this.selectionBounds={start:this.toLocal(n.global),end:this.toLocal(n.global)},this.selectionBoundary.update()))}),this.on("mousemove",n=>{if(this.lastMousePos=this.toLocal(n.global),this.editingCol!=-1){const a=w.chart.snap==0?.020833333333333332:w.chart.snap,o=Math.round(this.getBeatFromYPos(this.lastMousePos.y)/a)*a;this.chartManager.editHoldBeat(this.editingCol,o,n.shiftKey)}this.selectionBounds&&(this.selectionBounds.end=this.toLocal(n.global),this.selectionBoundary.update()),i=Math.max(0,this.lastMousePos.y-this.getLowerBound()+100)/600,this.lastMousePos.y<0&&(i=Math.min(0,this.lastMousePos.y-this.getUpperBound()-100)/600),w.chart.reverse&&(i=Math.max(0,this.getUpperBound()-this.lastMousePos.y+100)/600,this.lastMousePos.y>0&&(i=Math.min(0,this.getLowerBound()-this.lastMousePos.y-100)/600))}),this.on("pointerup",()=>{this.editingCol!=-1&&(this.chartManager.endEditing(this.editingCol),this.editingCol=-1),this.chartManager[this.chartManager.editTimingMode==Oe.Off?"endDragSelection":"endDragEventSelection"](),this.selectionBounds=void 0,this.selectionBoundary.update(),i=0})}isDragSelecting(){return!!this.selectionBounds}doJudgement(e,t,i){this.chartManager.getMode()==X.Play&&(this.judgement.doJudge(t,i),this.timingBar.addBar(t,i)),this.notefield.onJudgement(e.col,i)}startPlay(){this.notefield.startPlay()}endPlay(){this.notefield.endPlay(),this.timingBar.reset(),this.judgement.reset()}update(){if(this.destroyed)return;this.speedMult=w.chart.doSpeedChanges?this.getCurrentSpeedMult():1;const e=this.getTopOnScreenBeat(),t=this.getBottomOnScreenBeat(),i=Math.min(e,t),r=Math.max(e,t);if(this.scale.x=w.chart.zoom,this.scale.y=w.chart.zoom,this.children.forEach(n=>n.update(i,r)),this.notefield.alpha=this.chartManager.editTimingMode==Oe.Off||this.chartManager.getMode()==X.Play?1:.3,w.chart.mousePlacement&&this.lastMousePos&&this.chartManager.getMode()!=X.Play){const n=w.chart.snap==0?.020833333333333332:w.chart.snap,a=Math.round(this.getBeatFromYPos(this.lastMousePos.y)/n)*n;let o=-1;for(let l=0;lu-c/2){o=l;break}}(a!=this.lastMouseBeat||o!=this.lastMouseCol||this.chartManager.getEditingNoteType()!=this.lastNoteType)&&(this.lastMouseBeat=a,this.lastMouseCol=o,this.lastNoteType=this.chartManager.getEditingNoteType(),this.editingCol!=-1&&this.chartManager.editHoldBeat(this.editingCol,a,!1),o===-1?(this.lastMouseBeat=-1,this.lastMouseCol=-1,this.notefield.setGhostNote()):this.notefield.setGhostNote(this.chart.computeNote({beat:a,col:this.lastMouseCol,type:this.chartManager.getEditingNoteType()})))}this.lastMousePos&&this.chartManager.editTimingMode==Oe.Add&&this.timingTracks.updateGhostEvent(this.lastMousePos)}getTimeWithOffset(){let e=this.chartManager.getTime();return(this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.Record)&&(e+=w.play.offset*w.audio.rate),e}getBeatWithOffset(){let e=this.chartManager.getBeat();return(this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.Record)&&(e=this.chart.getBeatFromSeconds(this.getTimeWithOffset())),e}getVisualTime(){let e=this.chartManager.getTime();return(this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.Record)&&(e+=(w.play.offset+w.play.visualOffset)*w.audio.rate),e}getVisualBeat(){let e=this.chartManager.getBeat();return(this.chartManager.getMode()==X.Play||this.chartManager.getMode()==X.Record)&&(e=this.chart.getBeatFromSeconds(this.getVisualTime())),e}getYPosFromBeat(e){const t=this.getVisualTime(),i=this.getVisualBeat(),r=w.chart.reverse?-1:1;return w.chart.CMod?(this.chart.getSecondsFromBeat(e)-t)*this.getSecondsToPixelsRatio()*r+this.getActualReceptorYPos():i==e?this.getActualReceptorYPos():(w.chart.doSpeedChanges?this.chart.timingData.getEffectiveBeat(e)-this.chart.timingData.getEffectiveBeat(i):e-i)*this.getEffectiveBeatsToPixelsRatio()*r+this.getActualReceptorYPos()}getYPosFromSecond(e){const t=this.getVisualTime(),i=w.chart.reverse?-1:1;return w.chart.CMod?(e-t)*this.getSecondsToPixelsRatio()*i+this.getActualReceptorYPos():this.getYPosFromBeat(this.chart.timingData.getBeatFromSeconds(e))}getSecondFromYPos(e){const t=w.chart.reverse?-1:1;if(w.chart.CMod){const i=this.getPixelsToSecondsRatio(),r=this.getVisualTime(),a=(e-this.getActualReceptorYPos())*i*t;return r+a}return this.chart.getSecondsFromBeat(this.getBeatFromYPos(e))}getBeatFromYPos(e,t){const i=this.getVisualBeat(),r=w.chart.reverse?-1:1;if(w.chart.CMod)return this.chart.getBeatFromSeconds(this.getSecondFromYPos(e));const a=(e-this.getActualReceptorYPos())*this.getPixelsToEffectiveBeatsRatio()*r;if(w.chart.doSpeedChanges&&!t){const o=this.chart.timingData.getEffectiveBeat(i)+a;return this.chart.getBeatFromEffectiveBeat(o)}return i+a}getColumnFromXPos(e){const t=this.chart.gameType;let i=null;for(let r=0;ri)return r-1;i=n}return t.numCols-1}getActualReceptorYPos(){return w.chart.receptorYPos/w.chart.zoom*(w.chart.reverse?-1:1)}getEffectiveBeatsToPixelsRatio(){return w.chart.speed/100*64*this.speedMult}getPixelsToEffectiveBeatsRatio(){return 1/this.getEffectiveBeatsToPixelsRatio()}getSecondsToPixelsRatio(){return w.chart.speed/100*64*4}getPixelsToSecondsRatio(){return 1/this.getSecondsToPixelsRatio()}isNegScroll(e){return w.chart.doSpeedChanges&&(this.speedMult<0||(this.chart.timingData.getEventAtBeat("SCROLLS",e)?.value??1)<0||(this.chart.timingData.getEventAtBeat("BPMS",e)?.value??120)<0)}getUpperBound(){return-this.y/w.chart.zoom-64}getLowerBound(){return(this.chartManager.app.renderer.screen.height-this.y)/w.chart.zoom+64}findFirstOnScreenScroll(){const e=[...this.chart.timingData.getTimingData("SCROLLS")];e[0]?.beat!=0&&e.splice(0,0,{beat:0,value:e[0]?.value??1,type:"SCROLLS"});let t=Bt(e,this.getVisualBeat()-w.chart.maxDrawBeatsBack,i=>i.beat);for(;tr.beat);const i=Bt(e,this.getVisualBeat()-w.chart.maxDrawBeatsBack,r=>r.beat);for(;t>=i;){const r=e[t];t--;const n=r===void 0?-1/0*this.getScrollDirection(e[0]?.value??1):this.getYPosFromBeat(r.beat??0),a=e[t+2]===void 0?1/0*this.getScrollDirection(r.value):this.getYPosFromBeat(e[t+2].beat);if(this.isAreaOnScreen(n,a))return r}return{beat:0,value:1,type:"SCROLLS"}}getTopOnScreenBeat(){if(w.chart.waveform.speedChanges&&!w.chart.CMod&&w.chart.doSpeedChanges){const e=this.findFirstOnScreenScroll(),t=1/Math.abs(this.getEffectiveBeatsToPixelsRatio())*w.chart.zoom,i=this.getYPosFromBeat(e.beat),r=t/Math.abs(e.value)*w.chart.zoom,n=this.getScrollDirection(e.value),a=n==1?this.getUpperBound():this.getLowerBound(),o=n*(a-i)*r+e.beat;return Math.max(this.getVisualBeat()-w.chart.maxDrawBeatsBack,o)}return w.chart.CMod?this.getBeatFromYPos(this.getUpperBound()):Math.max(this.getVisualBeat()-w.chart.maxDrawBeatsBack,this.getBeatFromYPos(this.getUpperBound()))}getBottomOnScreenBeat(){if(w.chart.waveform.speedChanges&&!w.chart.CMod&&w.chart.doSpeedChanges){const e=this.findLastOnScreenScroll(),t=this.getCurrentSpeedMult(),i=100/w.chart.speed/Math.abs(t)/64/w.chart.zoom,r=this.getYPosFromBeat(e.beat),n=i/Math.abs(e.value)*w.chart.zoom,a=this.getScrollDirection(e.value),o=a==1?this.getLowerBound():this.getUpperBound(),l=a*(o-r)*n+e.beat;return Math.min(this.getVisualBeat()+w.chart.maxDrawBeats,l)}return w.chart.CMod?this.getBeatFromYPos(this.getLowerBound()):Math.min(this.getVisualBeat()+w.chart.maxDrawBeats,this.getBeatFromYPos(this.getLowerBound()))}isAreaOnScreen(e,t){ti}getCurrentSpeedMult(){return this.chart.timingData.getSpeedMult(this.getVisualBeat(),this.getVisualTime())}getScrollDirection(e){let t=1;return this.getCurrentSpeedMult()<0&&(t*=-1),w.chart.reverse&&(t*=-1),e<0&&(t*=-1),t}getUpperBoundBeat(){if(w.chart.waveform.speedChanges&&!w.chart.CMod&&w.chart.doSpeedChanges){const e=w.chart.speed,t=this.chart.timingData.getSpeedMult(this.getVisualBeat(),this.getVisualTime()),i=t>=0!=w.chart.reverse?1:-1,r=this.chart.timingData.getTimingData("SCROLLS"),n=100/e/Math.abs(t)/64/w.chart.zoom,a=this.getUpperBound(),o=this.getLowerBound();let l=Bt(r,this.getVisualBeat()-w.chart.maxDrawBeatsBack,f=>f.beat);for(this.getVisualBeat()-w.chart.maxDrawBeatsBack0&&b>a&&(ga||!r[l-1]||r[l-1].beat0?r[l-1]?.value==0&&this.getYPosFromBeat(r[l-1].beat)>m?this.getVisualBeat()-w.chart.maxDrawBeatsBack:Math.max(this.getVisualBeat()-w.chart.maxDrawBeatsBack,c+d*(m-u)):r[l-1]?.value==0&&this.getYPosFromBeat(r[l-1].beat)=0!=w.chart.reverse?1:-1,r=this.chart.timingData.getTimingData("SCROLLS"),n=100/e/Math.abs(t)/64/w.chart.zoom,a=this.getUpperBound(),o=this.getLowerBound();let l=Bt(r,this.getVisualBeat()+w.chart.maxDrawBeats,f=>f.beat);for(;l=0&&(r[l].beat??0)>this.getVisualBeat()-w.chart.maxDrawBeatsBack;){const f=r[l],g=this.getYPosFromBeat(f?.beat??0),y=r[l+1]?.beat??this.getVisualBeat()+w.chart.maxDrawBeats,b=this.getYPosFromBeat(y);if((f?.value??1)*i>0&&go||!r[l+1]||r[l+1].beat>this.getVisualBeat()+w.chart.maxDrawBeatsBack||r[l+1].value==0)||(f?.value??1)*i<0&&g>o&&(bthis.getVisualBeat()+w.chart.maxDrawBeatsBack||r[l+1].value==0))break;l--}const c=r[l]?.beat??0,u=this.getYPosFromBeat(c),h=r[l]?.value??1,d=n/Math.abs(h)*w.chart.zoom,p=w.chart.reverse?o:a,m=w.chart.reverse?a:o;return h*i>0?r[l+1]?.value==0&&this.getYPosFromBeat(r[l+1].beat)p?this.getVisualBeat()+w.chart.maxDrawBeats:Math.min(this.getVisualBeat()+w.chart.maxDrawBeats,c+d*(u-p))}return w.chart.CMod?this.getBeatFromYPos(this.getLowerBound()):Math.min(this.getVisualBeat()+w.chart.maxDrawBeats,this.getBeatFromYPos(this.getLowerBound()))}selectionTest(e){if(!this.selectionBounds)return!1;const t=this.selectionBoundary.getBounds(),i=e.getBounds(),r=16*w.chart.zoom;return t.x+t.width>i.x+r&&t.xi.y+r&&t.y{const u=o,h=this.toLocal(c.global);if(Math.abs(h.y-a-n)**2+Math.abs(h.x-r)**2<32*32){this.chartManager.selection.shift&&(this.chartManager.selection.shift={columnShift:0,beatShift:0});return}const d=this.getBeatFromYPos(h.y-a),p=w.chart.snap==0?1/48:w.chart.snap;let m=Math.round(d/p)*p;Math.abs(m-d)>Math.abs(d-u.beat)&&(m=u.beat);const f=this.getColumnFromXPos(h.x);this.chartManager.selection.shift||={columnShift:0,beatShift:0},i!=f-u.col&&(i=f-u.col,this.chartManager.selection.notes.every(g=>{const y=g.col+i;return y>=0&&yg.beat)),m-u.beat)};e.on("pointerdown",c=>{if(this.chartManager.getMode()==X.View)return;if(_c(c)){this.chartManager.isNoteInSelection(t)||(this.chartManager.clearSelections(),this.chartManager.addNoteToSelection(t)),qS.open(this.chartManager.app,c),c.preventDefault();return}if(w.chart.mousePlacement&&!c.getModifierState("Meta")&&!c.getModifierState("Control")&&!c.getModifierState("Shift")&&!this.chartManager.isNoteInSelection(t))return;c.stopImmediatePropagation(),this.chartManager.isNoteInSelection(t)?(c.getModifierState("Control")||c.getModifierState("Meta"))&&this.chartManager.removeNoteFromSelection(t):(!c.getModifierState("Control")&&!c.getModifierState("Meta")&&!c.getModifierState("Shift")&&this.chartManager.clearSelections(),this.chartManager.addNoteToSelection(t)),r=e.x,n=e.y,a=this.toLocal(c.global).y-e.y,o=t,this.on("pointermove",l);const u=()=>{this.off("pointermove",l),this.off("pointerup",u),((this.chartManager.selection.shift?.beatShift??0)!=0||(this.chartManager.selection.shift?.columnShift??0)!=0)&&this.chartManager.modifySelection(h=>(h.beat+=this.chartManager.selection.shift.beatShift,h.col+=this.chartManager.selection.shift.columnShift,h)),this.chartManager.selection.shift=void 0};this.on("pointerup",u)}),e.on("destroyed",()=>{e?.removeAllListeners()})}getNotefield(){return this.notefield}swapNoteskin(e){w.chart.noteskin.name=e,w.chart.lastNoteskins[this.chart.gameType.id]=e,this.reloadNotefield()}reloadNotefield(){const e=new rf(this);this.addChildAt(e,this.children.indexOf(this.notefield)),this.notefield.destroy(),this.notefield=e}getSelectionBounds(){return this.selectionBounds}shouldDisplayBarlines(){return(this.chartManager.getMode()!=X.Play||!w.play.hideBarlines)&&Be.barlines}}class bd extends AudioBufferSourceNode{started=!1;start(e,t,i){this.started||super.start(e,t,i),this.started=!0}stop(e){this.started&&super.stop(e),this.started=!1}static create(e){const t=e;return t.started=!1,Object.setPrototypeOf(t,bd.prototype),t}}class MC extends BiquadFilterNode{enabled=!1;static create(e){const t=e;return t.enabled=!1,t}}class so{_audioAnalyzer;_filteredAudioAnalyzer;_freqData;_filteredFreqData;_gainNode;type;_audioContext=new AudioContext;_source;_playbackTime=0;_startTimestamp=0;_rate=1;_isPlaying=!1;_buffer;_filteredBuffer;_loadedBuffer;_delay;_loadListeners=[];_updateListeners=[];_volume=1;_destroyed=!1;_renderTimeout;_filters=[this.createFilter({type:"highpass",frequency:20,Q:.71}),this.createFilter({type:"lowshelf",frequency:75,gain:0}),this.createFilter({type:"peaking",frequency:100,gain:0,Q:.6}),this.createFilter({type:"peaking",frequency:250,gain:0,Q:.3}),this.createFilter({type:"peaking",frequency:1040,gain:0,Q:.41}),this.createFilter({type:"peaking",frequency:2500,gain:0,Q:.2}),this.createFilter({type:"highshelf",frequency:7500,gain:0}),this.createFilter({type:"lowpass",frequency:2e4,Q:.71})];_filtersEnabled=!1;loaded;constructor(e,t){this.type=t??"",this._filters[0].gain.value=-25,this._audioAnalyzer=this._audioContext.createAnalyser(),this._audioAnalyzer.fftSize=4096,this._audioAnalyzer.maxDecibels=0,this._freqData=new Uint8Array(this._audioAnalyzer.frequencyBinCount),this._filteredAudioAnalyzer=this._audioContext.createAnalyser(),this._filteredAudioAnalyzer.fftSize=4096,this._filteredAudioAnalyzer.maxDecibels=0,this._filteredFreqData=new Uint8Array(this._filteredAudioAnalyzer.frequencyBinCount),this._gainNode=this._audioContext.createGain(),this._buffer=this._audioContext.createBuffer(2,1,44100),this._filteredBuffer=this._audioContext.createBuffer(2,1,44100),this._loadedBuffer=this._audioContext.createBuffer(2,1,44100),this.initSource(),this.loaded=new Promise(i=>{e&&_e.create("Loading audio..."),this.decodeData(e).then(r=>{if(r)return this._loadedBuffer=r,_e.create("Loaded audio"),r}).then(async r=>(await this.renderBuffer(r),await this.renderFilteredBuffer(r),r)).catch(r=>{r.name=="EncodingError"?_e.createFormatted("Failed to load audio: file format not supported","error"):_e.createFormatted("Failed to load audio: "+r.message,"error")}).finally(()=>{this.initSource(),this.callLoadListeners(),this.callUpdateListeners(),i()})})}async renderBuffer(e){if(!e)return;const t=new OfflineAudioContext(e.numberOfChannels,e.length,e.sampleRate),i=t.createBufferSource();return i.buffer=e,i.connect(t.destination),i.start(),await t.startRendering().then(r=>{this._buffer=r}).catch(()=>{_e.createFormatted("Failed to load audio: audio rendering failed","error")})}async renderFilteredBuffer(e){if(!e)return;const t=new OfflineAudioContext(e.numberOfChannels,e.length,e.sampleRate),i=t.createBufferSource();i.buffer=e;let r=i;for(const n of this._filters){if(!n.enabled)continue;const a=t.createBiquadFilter();a.type=n.type,a.Q.setValueAtTime(n.Q.value,0),a.frequency.setValueAtTime(n.frequency.value,0),a.gain.setValueAtTime(n.gain.value,0),r.connect(a),r=a}return r.connect(t.destination),i.start(),await t.startRendering().then(n=>{this._filteredBuffer=n}).catch(()=>{_e.createFormatted("Failed to load audio: audio rendering failed","error")})}createFilter(e){const t=MC.create(this._audioContext.createBiquadFilter());return t.type=e.type,e.Q!==void 0&&(t.Q.value=e.Q),e.gain!==void 0&&(t.gain.value=e.gain),e.frequency!==void 0&&(t.frequency.value=e.frequency),t}getFilters(){return this._filters}getFilter(e){return this._filters[e]}updateFilter(e,t){this._filters[e]&&(t.Q!==void 0&&(this._filters[e].Q.value=t.Q),t.frequency!==void 0&&(this._filters[e].frequency.value=t.frequency),t.gain!==void 0&&(this._filters[e].gain.value=t.gain),clearTimeout(this._renderTimeout),this._renderTimeout=setTimeout(()=>this.renderFilteredBuffer(this._loadedBuffer).then(()=>this.callUpdateListeners()),500))}enableFilter(e){this._filters[e].enabled=!0,this.initSource(),clearTimeout(this._renderTimeout),this._renderTimeout=setTimeout(()=>this.renderFilteredBuffer(this._loadedBuffer).then(()=>this.callUpdateListeners()),500),this._filtersEnabled=!0}disableFilter(e){this._filters[e].enabled=!1,this.initSource(),clearTimeout(this._renderTimeout),this._renderTimeout=setTimeout(()=>this.renderFilteredBuffer(this._loadedBuffer).then(()=>this.callUpdateListeners()),500),this._filtersEnabled=this._filters.some(t=>t.enabled)}hasFilters(){return this._filtersEnabled}onLoad(e){this._loadListeners.push(e)}offLoad(e){this._loadListeners=this._loadListeners.filter(t=>t!=e)}onUpdate(e){this._updateListeners.push(e)}offUpdate(e){this._updateListeners=this._updateListeners.filter(t=>t!=e)}getSongLength(){return this._buffer.length/this._buffer.sampleRate}getFrequencyData(){return this._destroyed?new Uint8Array:(this._audioAnalyzer.getByteFrequencyData(this._freqData),this._freqData)}getFilteredFrequencyData(){return this._destroyed?new Uint8Array:(this._filteredAudioAnalyzer.getByteFrequencyData(this._filteredFreqData),this._filteredFreqData)}getSampleRate(){return this._buffer.sampleRate}getFFTSize(){return this._audioAnalyzer.fftSize}getRawData(){if(this._destroyed)return[];const e=[];for(let t=0;ti.enabled)?this._filters.filter(i=>i.enabled).map(i=>{const r=new Float32Array(e.length);return i.getFrequencyResponse(t,r,new Float32Array(e.length)),[...r]}).reduce((i,r)=>i.map((n,a)=>n*r[a])):new Array(e.length).fill(1)}callLoadListeners(){this._loadListeners.forEach(e=>e())}callUpdateListeners(){this._updateListeners.forEach(e=>e())}async decodeData(e){return new Promise((t,i)=>{if(!e){t();return}(async()=>{try{t(await this._audioContext.decodeAudioData(e))}catch(r){if(this.type==".ogg"){const n=(await qe(()=>import("./OggDec-2941c3fd.js"),[])).default;try{t(await n.decodeOggData(e))}catch(a){i(a)}return}i(r)}})()})}initSource(){for(const t of this._filters)t.disconnect();this._audioAnalyzer.disconnect(),this._filteredAudioAnalyzer.disconnect(),this._gainNode.disconnect(),this._audioContext.destination.disconnect(),this._source?.stop(),this._source=bd.create(this._audioContext.createBufferSource()),this._source.buffer=this._buffer,this._source.connect(this._audioAnalyzer);let e=this._audioAnalyzer;for(const t of this._filters)t.enabled&&(e.connect(t),e=t);e.connect(this._filteredAudioAnalyzer),w.audio.allowFilter?this._filteredAudioAnalyzer.connect(this._gainNode):this._audioAnalyzer.connect(this._gainNode),this._gainNode.connect(this._audioContext.destination),this._source.playbackRate.value=this._rate,this._isPlaying&&(this.pause(),this.play())}volume(e){this._destroyed||this._volume!=e&&(this._volume=e,this._gainNode.gain.setValueAtTime(e,this._audioContext.currentTime))}rate(e){this._destroyed||this._rate!=e&&(this._rate=e,this._source&&(this._isPlaying&&(this._playbackTime+=(this._audioContext.currentTime-this._startTimestamp)*this._source.playbackRate.value),this._startTimestamp=this._audioContext.currentTime,this._source.playbackRate.value=e))}play(){this._destroyed||this._source&&(this._isPlaying||(this.initSource(),this._playbackTime<=this._buffer.duration&&(this._playbackTime<0?(clearTimeout(this._delay),this._delay=setInterval(()=>{this.seek()>0&&(clearInterval(this._delay),this._source?.start(0,0))})):this._source.start(0,this._playbackTime)),this._startTimestamp=this._audioContext.currentTime,this._isPlaying=!0))}seek(e){if(!this._destroyed&&this._source){if(e===void 0)return this._isPlaying?(this._audioContext.currentTime-this._startTimestamp)*this._source.playbackRate.value+this._playbackTime:this._playbackTime;this._isPlaying?(this.stop(),this._playbackTime=e,this.play()):this._playbackTime=e}}pause(){this._destroyed||this.stop(!0)}stop(e){this._destroyed||this._source&&this._isPlaying&&(clearTimeout(this._delay),this._isPlaying=!1,this._playbackTime<=this._buffer.duration&&this._source.stop(),this._playbackTime=e?(this._audioContext.currentTime-this._startTimestamp)*this._source.playbackRate.value+this._playbackTime:0)}}class kC{judgementCounts=new Map;holdJudgementCounts=new Map;dancePoints=0;maxCumulativeDancePoints=0;maxDancePoints=0;chartManager;notedata;dataPoints=[];handlers=[];combo=0;missCombo=0;maxCombo=0;bestJudge;constructor(e){this.notedata=e.loadedChart.getNotedata(),this.chartManager=e,this.bestJudge=Je.getCollection(w.play.timingCollection).getStandardWindows()[0],this.calculateMaxDP()}onJudge(e){this.handlers.push(e)}applyOffset(e){this.dataPoints=this.dataPoints.map(t=>Ci(t.judgement)||!ji(t.judgement)?t:{...t,error:t.error!==null?t.error+e:null})}addDataPoint(e,t,i){this.judgementCounts.has(t)||this.judgementCounts.set(t,0),this.judgementCounts.set(t,this.judgementCounts.get(t)+1),this.dancePoints+=t.dancePoints;const r=this.chartManager.loadedChart.timingData.getEventAtBeat("COMBOS",e[0].beat),n=r?.hitMult??1,a=r?.missMult??1;dl(t)||(this.maxCumulativeDancePoints+=Je.getCollection(w.play.timingCollection).getMaxDancePoints()),Ci(t)?(this.chartManager.loadedChart.gameType.gameLogic.usesHoldTicks||(this.maxCumulativeDancePoints+=e.filter(Pe).reduce((o,l)=>o+Je.getCollection(w.play.timingCollection).getMaxHoldDancePoints(l.type),0)),this.combo=0,this.missCombo+=a,this.bestJudge=void 0):ji(t)&&(Je.getCollection(w.play.timingCollection).shouldHideNote(t)?(this.combo+=e.length*n,this.combo>this.maxCombo&&(this.maxCombo=this.combo),this.missCombo=0,this.bestJudge&&t.getTimingWindowMS()>this.bestJudge.getTimingWindowMS()&&(this.bestJudge=t)):(this.bestJudge=void 0,this.combo=0)),this.handlers.forEach(o=>o(i,t)),this.dataPoints.push({second:e[0].second,error:i,judgement:t,notes:e})}addHoldDataPoint(e,t){this.judgementCounts.has(t)||this.judgementCounts.set(t,0),this.judgementCounts.set(t,this.judgementCounts.get(t)+1);const i=Je.getCollection(w.play.timingCollection).getHeldJudgement(e);this.holdJudgementCounts.has(i)||this.holdJudgementCounts.set(i,[0,0]);const r=this.holdJudgementCounts.get(i);mr(t)?r[0]++:r[1]++,this.holdJudgementCounts.set(i,r),this.dancePoints+=t.dancePoints,this.maxCumulativeDancePoints+=Je.getCollection(w.play.timingCollection).getMaxHoldDancePoints(e.type),this.handlers.forEach(n=>n(0,t)),pn(t)&&(this.bestJudge=void 0)}getScore(){return this.maxDancePoints==0?0:this.dancePoints/this.maxDancePoints}getCumulativeScore(){return this.maxCumulativeDancePoints==0?0:this.dancePoints/this.maxCumulativeDancePoints}getDataPoints(){return this.dataPoints}getMedian(){return ul(this.dataPoints.filter(e=>!Ci(e.judgement)&&ji(e.judgement)&&e.error!=null).map(e=>e.error))}getMaxCombo(){return this.maxCombo}calculateMaxDP(){this.maxDancePoints=this.chartManager.loadedChart.gameType.gameLogic.calculateMaxDP(this.notedata,this.chartManager.loadedChart.timingData)}getCount(e){return this.judgementCounts.get(e)??0}getCombo(){return this.combo}getMissCombo(){return this.missCombo}getBestJudge(){return this.bestJudge}}const ti=[1,2,3,4,6,8,12,16,24,48,-1];var X=(s=>(s.View="View Mode",s.Edit="Edit Mode",s.Play="Play Mode",s.Record="Record Mode",s))(X||{}),Oe=(s=>(s[s.Off=0]="Off",s[s.Edit=1]="Edit",s[s.Add=2]="Add",s))(Oe||{});class GC{app;chartAudio=new so;chartView;widgetManager;assistTick=new hr.Howl({src:p1,volume:.5});me_high=new hr.Howl({src:Ag,volume:.5});me_low=new hr.Howl({src:bg,volume:.5});mine=new hr.Howl({src:f1,volume:.5});loadedSM;smPath="";loadedChart;selection={notes:[],inProgressNotes:[]};eventSelection={timingEvents:[],inProgressTimingEvents:[]};editTimingMode=0;beat=0;time=0;holdEditing=[];editNoteTypeIndex=0;partialScroll=0;noteIndex=0;lastMetronomeDivision=-1;lastMetronomeMeasure=-1;lastSong=null;mode="Edit Mode";lastMode="Edit Mode";noChartTextA;noChartTextB;loadingText;shiftPressed=0;virtualClipboard="";startRegion;endRegion;gameStats;constructor(e){this.app=e,document.addEventListener("keydown",i=>{i.key=="Shift"&&this.shiftPressed++}),document.addEventListener("keyup",i=>{i.key=="Shift"&&(this.shiftPressed=Math.max(this.shiftPressed-1,0))}),document.addEventListener("cut",i=>{if(i.target.classList.contains("inlineEdit")||i.target instanceof HTMLTextAreaElement||i.target instanceof HTMLInputElement||this.mode!="Edit Mode")return;const r=this.copy();r&&i.clipboardData?.setData("text/plain",r),this.eventSelection.timingEvents.length>0?this.deleteEventSelection():this.deleteSelection(),i.preventDefault()},!0),document.addEventListener("copy",i=>{if(i.target.classList.contains("inlineEdit")||i.target instanceof HTMLTextAreaElement||i.target instanceof HTMLInputElement||this.mode!="Edit Mode")return;const r=this.copy();r&&i.clipboardData?.setData("text/plain",r),i.preventDefault(),i.stopImmediatePropagation()},!0),document.addEventListener("paste",i=>{if(i.target.classList.contains("inlineEdit")||i.target instanceof HTMLTextAreaElement||i.target instanceof HTMLInputElement||this.mode!="Edit Mode")return;const r=i.clipboardData?.getData("text/plain");r&&this.paste(r,this.shiftPressed>0),i.preventDefault(),i.stopImmediatePropagation()},!0),e.view.addEventListener?.("wheel",i=>{if(!(this.loadedSM==null||this.loadedChart==null||this.chartView==null))if(i.preventDefault(),xi&&i.metaKey||!xi&&i.ctrlKey){const r=i.deltaY/5*w.chart.scroll.scrollSensitivity*(w.chart.scroll.invertZoomScroll?-1:1);w.chart.speed=Ve(w.chart.speed*Math.pow(1.01,r),10,35e3)}else{if(this.mode=="Play Mode"||this.mode=="Record Mode")return;let r=this.beat;const n=w.chart.snap,a=w.chart.speed*(w.chart.reverse&&w.chart.scroll.invertReverseScroll?-1:1),o=i.deltaY/a*w.chart.scroll.scrollSensitivity;if(n==0?(this.partialScroll=0,r=this.beat+o):w.chart.scroll.scrollSnapEveryScroll?i.deltaY<0?r=Math.round((this.beat-n)/n)*n:r=Math.round((this.beat+n)/n)*n:(this.partialScroll+=o,Math.abs(this.partialScroll)>n&&(this.partialScroll<0?r=Math.round((this.beat+Math.ceil(this.partialScroll/n)*n)/n)*n:r=Math.round((this.beat+Math.floor(this.partialScroll/n)*n)/n)*n,this.partialScroll%=n)),r=Math.max(0,r),r!=this.beat&&this.setBeat(r),!this.holdEditing.every(l=>l==null))for(let l=0;l{this.noChartTextB.tint=8952234}),this.noChartTextB.on("mouseleave",()=>{this.noChartTextB.tint=5596791}),this.noChartTextB.on("mousedown",()=>{this.app.windowManager.openWindow(new Fg(e,He.getGameType("dance-single")))}),this.noChartTextA.visible=!1,this.noChartTextB.visible=!1,this.app.stage.addChild(this.noChartTextB),this.loadingText=new Re("Loading simfile...",{fontName:"Main",fontSize:20}),this.loadingText.anchor.set(.5),this.loadingText.tint=5592405,this.app.stage.addChild(this.loadingText),this.loadingText.visible=!1;const t=()=>{this.noChartTextA.x=this.app.renderer.screen.width/2,this.noChartTextA.y=this.app.renderer.screen.height/2-20,this.noChartTextB.x=this.app.renderer.screen.width/2,this.noChartTextB.y=this.app.renderer.screen.height/2+10,this.loadingText.x=this.app.renderer.screen.width/2,this.loadingText.y=this.app.renderer.screen.height/2};t(),this.app.ticker.add(()=>{const i=performance.now();this.widgetManager.update(),this.loadedSM&&this.loadedChart&&this.chartView&&this.chartView.update(),aa.instance?.addDrawUpdateTimeValue(performance.now()-i)}),setInterval(()=>{if(!this.loadedSM||!this.loadedChart||!this.chartView)return;const i=performance.now(),r=this.chartAudio.seek();if(this.chartAudio.isPlaying()&&(this.setTime(r,!0),!this.holdEditing.every(u=>!u)))for(let u=0;u.3&&this.editHoldBeat(u,p,!1)}const n=this.loadedChart.getNotedata();let a=!1;for(;this.noteIndexn[this.noteIndex].second+w.play.effectOffset;)this.mode!="Record Mode"&&this.chartAudio.isPlaying()&&this.loadedChart.gameType.gameLogic.shouldAssistTick(n[this.noteIndex])&&(this.mode!="Play Mode"&&this.chartView.doJudgement(n[this.noteIndex],0,Mg),!a&&w.audio.assistTick&&Be.assist&&(this.assistTick.play(),a=!0)),this.noteIndex++;const o=this.loadedChart.getBeatFromSeconds(this.time+w.play.effectOffset),l=Math.floor(this.loadedChart.timingData.getDivisionOfMeasure(o)),c=Math.floor(this.loadedChart.timingData.getMeasure(o));(c!=this.lastMetronomeMeasure||l!=this.lastMetronomeDivision)&&(this.lastMetronomeDivision=l,this.lastMetronomeMeasure=c,this.chartAudio.isPlaying()&&w.audio.metronome&&Be.assist&&(l==0?this.me_high.play():this.me_low.play())),this.mode=="Play Mode"&&this.loadedChart.gameType.gameLogic.update(this),this.updateSoundProperties(),bS(),aa.instance?.addUpdateTimeValue(performance.now()-i)},5),q.on("resize",()=>{this.chartView&&(this.chartView.x=this.app.renderer.screen.width/2,this.chartView.y=this.app.renderer.screen.height/2),t()}),q.on("chartModified",()=>{this.loadedChart&&(this.loadedChart.recalculateStats(),q.emit("chartModifiedAfter"))}),window.addEventListener("keyup",i=>{if(this.mode=="Edit Mode"&&i.code.startsWith("Digit")){const r=parseInt(i.code.slice(5))-1;this.endEditing(r)}},!0),window.addEventListener("keydown",i=>{const r=Ie.getKeyNameFromCode(i.code);if(this.mode=="Edit Mode"&&!i.target.classList.contains("inlineEdit")&&!(i.target instanceof HTMLTextAreaElement)&&!(i.target instanceof HTMLInputElement)){if(i.code.startsWith("Digit")&&!i.repeat&&!i.ctrlKey&&!i.metaKey&&!i.altKey&&!i.ctrlKey){const n=parseInt(i.code.slice(5))-1;n<(this.loadedChart?.gameType.numCols??4)&&n>-1&&(this.setNote(n,"key"),i.preventDefault(),i.stopImmediatePropagation())}if(!this.holdEditing.every(n=>n==null)){const n=["cursorUp","cursorDown","previousNote","nextNote","previousMeasure","nextMeasure","jumpChartStart","jumpChartEnd","jumpSongStart","jumpSongEnd"];for(const a of n)if(Ie.getCombosForKeybind(a).map(o=>o.key).includes(r)){i.preventDefault(),i.stopImmediatePropagation(),wt[a].callback(this.app);for(let o=0;oo.key).includes(r)){this.holdEditing=[];return}}}},!0),window.addEventListener("keydown",i=>{this.mode!="Play Mode"&&this.mode!="Record Mode"||i.key=="Escape"&&(this.setMode(this.lastMode),this.chartAudio.pause())},!0)}getBeat(){return this.beat}getTime(){return this.time}setBeat(e){this.loadedChart&&(this.beat=e,this.time=this.loadedChart.getSecondsFromBeat(this.beat),this.chartAudio.seek(this.time),this.getAssistTickIndex())}setTime(e,t){this.loadedChart&&(this.time=e,this.beat=this.loadedChart.getBeatFromSeconds(this.time),t||(this.chartAudio.seek(this.time),this.getAssistTickIndex()))}async loadSM(e){if(AS.close(),pt.instance.isDirty()){const r=new fd(this.app,"Save","Do you wish to save the current file?",[{label:"Cancel",type:"default"},{label:"No",type:"default"},{label:"Yes",type:"confirm"}]);this.app.windowManager.openWindow(r);const n=await r.resolved;if(n=="Cancel")return;n=="Yes"&&this.save()}if(!e){this.smPath="",this.loadedSM=void 0,this.chartAudio.stop(),this.noChartTextA.visible=!1,this.noChartTextB.visible=!1,this.chartView?.destroy({children:!0});return}this.chartAudio.stop(),this.lastSong=null,this.smPath=e,this.time=0,this.beat=0,this.loadingText.visible=!0;const t=await Fe.getFileHandle(this.smPath);if(!t){_e.createFormatted("Couldn't load the file at "+this.smPath,"error"),this.app.windowManager.openWindow(new qg(this.app)),this.loadingText.visible=!1;return}const i=await t.getFile();this.loadedSM=new Yg(i),await this.loadedSM.loaded,this.loadingText.visible=!1,this.noChartTextA.visible=!0,this.noChartTextB.visible=!0,this.editTimingMode=0,q.emit("smLoaded"),await this.loadChart(),q.emit("smLoadedAfter"),this.time==0&&this.setBeat(0),Wg.addSM(this.smPath,this.loadedSM)}async loadChart(e){if(this.loadedSM==null)return;if(e==null){if(this.loadedChart){const r=this.loadedSM.charts[this.loadedChart.gameType.id];r&&r.length>0&&(e=r.at(-1))}if(!e)for(const r of He.getPriority()){const n=this.loadedSM.charts[r.id];if(n&&n.length>0){e=n.at(-1);break}}if(!e){this.chartView?.destroy({children:!0}),this.chartView?.removeChildren(),this.beat=0,this.time=0,this.loadedChart=void 0,this.chartView=void 0,this.noChartTextA.visible=!0,this.noChartTextB.visible=!0,q.emit("chartLoaded"),q.emit("chartModified");return}}if(e==this.loadedChart)return;this.chartView?.destroy({children:!0}),this.chartView?.removeChildren(),this.clearSelections(),this.loadedChart=e,this.beat=this.loadedChart.getBeatFromSeconds(this.time),pt.instance.reset(),w.play.timingCollection=w.play.defaultTimingCollection[e.gameType.id]??"ITG";const t=He.getGameType(w.chart.noteskin.type),i={type:e.gameType.id,name:w.chart.lastNoteskins[e.gameType.id]??"default"};if(t){const r=st.getNoteskinData(t,w.chart.noteskin.name);r?.gameTypes.includes(e.gameType.id)&&(i.name=r.id)}if(w.chart.noteskin=i,w.chart.lastNoteskins[e.gameType.id]=i.name,this.getAssistTickIndex(),this.chartView=new CC(this),this.chartView.x=this.app.renderer.screen.width/2,this.chartView.y=this.app.renderer.screen.height/2,(this.mode=="Play Mode"||this.mode=="Record Mode")&&this.setMode(this.lastMode),Be.viewMode&&this.setMode("View Mode"),this.loadedChart.getMusicPath()!=this.lastSong){this.lastSong=this.loadedChart.getMusicPath();const r=this.chartAudio.isPlaying();await this.loadAudio(),q.emit("audioLoaded"),r&&this.chartAudio.play()}this.noChartTextA.visible=!1,this.noChartTextB.visible=!1,_e.create("Loaded chart "+e.difficulty+" "+e.meter+" "+e.gameType.id),q.emit("chartLoaded"),q.emit("audioLoaded"),q.emit("chartModified"),this.loadedChart.gameType.id=="dance-single"?window.Parity=new jS(this.app,this.loadedChart.gameType.id):window.Parity=void 0,Be.autoPlay&&this.playPause()}async loadAudio(){if(!this.loadedSM||!this.loadedChart)return;this.chartAudio.stop(),this.chartAudio?.destroy();const e=this.loadedChart.getMusicPath();if(e==""){_e.createFormatted("Failed to load audio: no audio file","error"),this.chartAudio=new so(void 0);return}const t=await this.getAudioHandle(e);if(t==null){_e.createFormatted("Failed to load audio: couldn't find audio file "+e,"error"),this.chartAudio=new so(void 0);return}const i=await t.getFile();this.chartAudio=new so(await i.arrayBuffer(),Hi(i.name)),this.chartAudio.seek(this.time),this.getAssistTickIndex()}async getAudioHandle(e){let t=await Fe.getFileHandleRelativeTo(this.smPath,e);if(t)return t;try{const i=await Fe.getDirectoryFiles(Rt(this.smPath));if(t=i.filter(r=>r.name.toLowerCase()==ts(e).toLowerCase())[0],t)return _e.createFormatted("Failed to locate audio file "+e+", using file "+t.name+" instead","warn"),t;t=i.filter(r=>rl.includes(Hi(r.name)))[0],t&&_e.createFormatted("Failed to locate audio file "+e+", using file "+t.name+" instead","warn")}catch{return}return t}getAudio(){return this.chartAudio}updateSoundProperties(){this.setEffectVolume(w.audio.soundEffectVolume*w.audio.masterVolume),this.setVolume(w.audio.songVolume*w.audio.masterVolume),this.setRate(w.audio.rate)}setRate(e){this.chartAudio.rate(e)}setVolume(e){this.chartAudio.volume(e)}setEffectVolume(e){this.assistTick.volume()!=e&&this.assistTick.volume(e),this.me_high.volume()!=e&&this.me_high.volume(e),this.me_low.volume()!=e&&this.me_low.volume(e),this.mine.volume()!=e&&this.mine.volume(e)}getAssistTickIndex(){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null||this.loadedChart.getNotedata().length==0){this.noteIndex=0;return}this.noteIndex=Bt(this.loadedChart.getNotedata(),this.time,e=>e.second)+1,this.noteIndex>=1&&this.time<=this.loadedChart.getNotedata()[this.noteIndex-1].second&&this.noteIndex--}playPause(){this.chartAudio.isPlaying()?this.chartAudio.pause():this.chartAudio.play()}getClosestTick(e,t){if(!this.loadedChart)return 0;const i=Math.max(.001,4/t),r=this.loadedChart.timingData.getBeatOfMeasure(e),n=e-r,a=Math.round(r/i)*i;return Math.max(0,n+a)}snapToNearestTick(e){this.setBeat(Math.max(0,this.getClosestTick(e,4/w.chart.snap)))}snapToPreviousTick(){if(!this.loadedChart)return;const e=Math.max(.001,w.chart.snap),t=Math.floor(this.loadedChart.timingData.getMeasure(this.beat)),i=this.loadedChart.timingData.getBeatFromMeasure(t),r=Math.floor((this.beat-i)/e)*e,n=Math.abs(r-(this.beat-i))<5e-4?r-e:r,a=n+i;if(n<0){const o=this.loadedChart.timingData.getBeatFromMeasure(t-1),l=Math.round((a-o)/e)*e;this.setBeat(Math.max(0,o+l));return}this.setBeat(Math.max(0,a))}snapToNextTick(){if(!this.loadedChart)return;const e=Math.max(.001,w.chart.snap),t=Math.floor(this.loadedChart.timingData.getMeasure(this.beat)),i=this.loadedChart.timingData.getBeatFromMeasure(t),a=Math.floor((this.beat-i+5e-4)/e)*e+e+i,o=this.loadedChart.timingData.getBeatFromMeasure(t+1);if(a>o){this.setBeat(o);return}this.setBeat(a)}previousSnap(){let e=this.getSnapIndex()-1;e=(e+ti.length)%ti.length,w.chart.snap=ti[e]==-1?0:1/ti[e],q.emit("snapChanged")}nextSnap(){let e=this.getSnapIndex();(e==ti.length-1||Math.abs(1/w.chart.snap-ti[e])<=5e-4)&&e++,e=(e+ti.length)%ti.length,w.chart.snap=ti[e]==-1?0:1/ti[e],q.emit("snapChanged")}getSnapIndex(){return w.chart.snap==0?ti.length-1:ti.findIndex(e=>1/e<=w.chart.snap)}removeDuplicateBeats(e){if(e.length===0)return e;const t=[e[0]];for(let i=1;ii.beat+i.hold),t=this.loadedChart.getNotedata().map(i=>i.beat).concat(e).sort((i,r)=>i-r);return this.removeDuplicateBeats(t)}previousNote(){const e=this.getRows();if(e.length==0)return;let t=Bt(e,this.beat);this.beat==e[t]&&t--,this.setBeat(e[Math.max(0,t)])}nextNote(){const e=this.getRows();if(e.length==0)return;let t=Bt(e,this.beat);this.beat>=e[t]&&t++,this.setBeat(e[Math.min(e.length-1,t)])}firstNote(){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null)return;const e=this.loadedChart.getNotedata();e.length!=0&&this.setBeat(e[0].beat)}lastNote(){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null)return;const e=this.loadedChart.getNotedata();if(e.length==0)return;const t=e[e.length-1];this.setBeat(os(t))}truncateHold(e,t){const i=Ve(Math.round((t-Math.max(.020833333333333332,w.chart.snap))*48)/48,e.beat,e.beat+e.hold-.020833333333333332);return i==e.beat?{beat:e.beat,col:e.col,type:"Tap"}:{beat:e.beat,col:e.col,type:e.type,hold:i-e.beat}}setNote(e,t,i=this.beat){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null)return;i=Math.max(0,Math.round(i*48)/48);const r=this.loadedChart.getNotedata().filter(o=>o.col!=e?!1:Math.abs(o.beat-i)<.003?!0:Pe(o)&&o.beat==i),n=this.loadedChart.getNotedata().filter(o=>Pe(o)&&o.col==e&&i>o.beat&&i<=o.beat+o.hold).map(o=>({oldNote:o,newNote:this.truncateHold(o,i)})),a={startBeat:i,endBeat:i,roll:!1,originalNote:void 0,type:t,removedNotes:r,truncatedHolds:n};this.holdEditing[e]=a,r.length==0&&(a.originalNote={beat:i,col:e,type:this.getEditingNoteType()}),this.getAssistTickIndex(),this.app.actionHistory.run({action:()=>{a.removedNotes.forEach(o=>{this.loadedChart.removeNote(o),this.removeNoteFromSelection(o)}),a.truncatedHolds.forEach(o=>this.loadedChart.modifyNote(o.oldNote,o.newNote)),a.originalNote&&this.loadedChart.addNote(a.originalNote)},undo:()=>{a.originalNote&&this.loadedChart.removeNote(a.originalNote),a.truncatedHolds.forEach(o=>this.loadedChart.modifyNote(o.newNote,o.oldNote)),a.removedNotes.forEach(o=>this.loadedChart.addNote(o))}})}editHoldBeat(e,t,i){if(this.loadedSM==null||this.loadedChart==null||this.chartView==null)return;const r=this.holdEditing[e];if(r==null||t==r.startBeat&&t==r.endBeat)return;if(r.endBeat=Math.max(r.startBeat,Math.round(t*48)/48),r.roll||=i,r.originalNote){const a={beat:r.startBeat,type:r.roll?"Roll":"Hold",hold:r.endBeat-r.startBeat};r.endBeat-r.startBeat==0&&(a.hold=void 0,a.type="Tap"),(a.beat!=r.originalNote.beat||a.type!=r.originalNote.type||Pe(r.originalNote)&&a.hold!=r.originalNote.hold)&&this.loadedChart.modifyNote(r.originalNote,a)}else{const a={beat:r.startBeat,col:e,type:r.roll?"Roll":"Hold",hold:r.endBeat-r.startBeat};r.endBeat-r.startBeat==0&&(a.type="Tap",Object.assign(a,{hold:void 0})),this.loadedChart.addNote(a)}r.originalNote={beat:r.startBeat,col:e,type:r.endBeat-r.startBeat==0?"Tap":r.roll?"Roll":"Hold",hold:r.endBeat-r.startBeat==0?void 0:r.endBeat-r.startBeat};const n=this.loadedChart.getNotedata().filter(a=>a.beat==r.originalNote.beat&&a.col==r.originalNote.col||a.col!=e?!1:a.beat>=r.startBeat&&a.beat<=r.endBeat?!0:Pe(a)&&a.beat+a.hold>=r.startBeat&&a.beat+a.hold<=r.endBeat);r.removedNotes=r.removedNotes.concat(n),n.forEach(a=>this.loadedChart.removeNote(a)),this.getAssistTickIndex()}endEditing(e){this.holdEditing[e]=void 0}previousNoteType(){const e=this.loadedChart?.gameType.editNoteTypes.length??0;this.editNoteTypeIndex=(this.editNoteTypeIndex-1+e)%e}nextNoteType(){const e=this.loadedChart?.gameType.editNoteTypes.length??0;this.editNoteTypeIndex=(this.editNoteTypeIndex+1+e)%e}getEditingNoteType(){return this.loadedChart?.gameType.editNoteTypes[this.editNoteTypeIndex]??null}setEditingNoteType(e){if(!this.loadedChart)return;const i=(this.loadedChart?.gameType.editNoteTypes).indexOf(e);i!=-1&&(this.editNoteTypeIndex=i)}getMode(){return this.mode}setMode(e){if(!this.loadedChart||!this.chartView)return;if(this.mode==e){(e=="Play Mode"||e=="Record Mode")&&(this.setMode(this.lastMode),this.getAssistTickIndex(),this.chartAudio.pause());return}(this.mode=="View Mode"||this.mode=="Edit Mode")&&(this.lastMode=this.mode),this.mode=e;const t=this.loadedChart.getNotedata();if(this.mode=="Play Mode"){t.forEach(i=>{i.gameplay={hideNote:!1,hasHit:!1}});for(const i of t)if(i.secondi.gameplay=void 0))}judgeCol(e){if(!(!this.loadedChart||!this.chartView)){if(this.mode=="Play Mode")this.loadedChart.gameType.gameLogic.keyDown(this,e);else if(this.mode=="Record Mode"){const t=this.loadedChart.getBeatFromSeconds(this.time+w.play.offset),i=w.chart.snap==0?1/48:w.chart.snap,r=Math.round(t/i)*i;this.setNote(e,"key",r)}}}judgeColUp(e){!this.loadedChart||!this.chartView||(this.mode=="Play Mode"?this.loadedChart.gameType.gameLogic.keyUp(this,e):this.mode=="Record Mode"&&this.endEditing(e))}async save(){if(!this.loadedSM)return;let e,t;if(window.nw){const r=window.nw.require("path"),n=r.parse(this.smPath);e=r.resolve(n.dir,n.name+".sm"),t=r.resolve(n.dir,n.name+".ssc")}else{const r=Rt(this.smPath),n=ts(this.smPath),a=n.includes(".")?n.split(".").slice(0,-1).join("."):n;e=r+"/"+a+".sm",t=r+"/"+a+".ssc"}let i=null;!this.loadedSM.usesChartTiming()&&await Fe.getFileHandle(e)&&await Fe.writeFile(e,this.loadedSM.serialize("sm")).catch(r=>{const n=r.message;n.includes(Uo.GONE[0])||(i=n)}),(this.loadedSM.requiresSSC()||await Fe.getFileHandle(t))&&await Fe.writeFile(t,this.loadedSM.serialize("ssc")).catch(r=>{const n=r.message;n.includes(Uo.GONE[0])||(i=n)}),i==null?this.loadedSM.usesChartTiming()?_e.create("Saved. No SM file since split timing was used."):_e.create("Saved"):_e.createFormatted("Failed to save file: "+i,"error"),pt.instance.setLimit()}hasSelection(){return this.hasNoteSelection()||this.hasEventSelection()}hasNoteSelection(){return this.selection.notes.length>0||this.startRegion!==void 0&&this.endRegion!==void 0}hasEventSelection(){return this.eventSelection.timingEvents.length>0}hasRange(){return this.selection.notes.length>1||this.eventSelection.timingEvents.length>1||this.startRegion!==void 0&&this.endRegion!==void 0}clearSelections(){this.selection={notes:[],inProgressNotes:[]},this.eventSelection={timingEvents:[],inProgressTimingEvents:[]}}startDragSelection(){this.selection.inProgressNotes=[]}endDragSelection(){let e=0,t=0;const i=[],r=this.selection.inProgressNotes,n=this.selection.notes,a=(o,l)=>o.beat==l.beat?o.col-l.col:o.beat-l.beat;if(r.length==0||n.length==0){this.selection.notes=r.concat(n),this.selection.inProgressNotes=[];return}for(;;)if(a(r[e],n[t])<0){if(i.push(r[e]),e++,e>=r.length){this.selection.notes=i.concat(n.slice(t));break}}else if(i.push(n[t]),t++,t>=n.length){this.selection.notes=i.concat(r.slice(e));break}this.selection.inProgressNotes=[]}startDragEventSelection(){this.eventSelection.inProgressTimingEvents=[]}endDragEventSelection(){let e=0,t=0;const i=[],r=this.eventSelection.inProgressTimingEvents,n=this.eventSelection.timingEvents,a=(o,l)=>o.beat-l.beat;if(r.length==0||n.length==0){this.eventSelection.timingEvents=r.concat(n),this.eventSelection.inProgressTimingEvents=[];return}for(;;)if(a(r[e],n[t])<0){if(i.push(r[e]),e++,e>=r.length){this.eventSelection.timingEvents=i.concat(n.slice(t));break}}else if(i.push(n[t]),t++,t>=n.length){this.eventSelection.timingEvents=i.concat(r.slice(e));break}this.eventSelection.inProgressTimingEvents=[]}addNoteToDragSelection(e){this.addNoteSelection(this.selection.inProgressNotes,e)}removeNoteFromDragSelection(e){this.removeNoteSelection(this.selection.inProgressNotes,e)}addEventToDragSelection(e){this.addEventSelection(this.eventSelection.inProgressTimingEvents,e)}removeEventFromDragSelection(e){this.removeEventSelection(this.eventSelection.inProgressTimingEvents,e)}addNoteToSelection(e){this.addNoteSelection(this.selection.notes,e)}removeNoteFromSelection(e){this.removeNoteSelection(this.selection.notes,e)}setNoteSelection(e){this.selection.inProgressNotes=[],this.selection.notes=[...e].sort((t,i)=>t.beat==i.beat?t.col-i.col:t.beat-i.beat)}addEventToSelection(e){this.addEventSelection(this.eventSelection.timingEvents,e)}removeEventFromSelection(e){this.removeEventSelection(this.eventSelection.timingEvents,e)}setEventSelection(e){this.eventSelection.inProgressTimingEvents=[],this.eventSelection.timingEvents=e.sort((t,i)=>t.beat-i.beat)}isNoteInSelection(e){return this.getNoteSelectionIndex(this.selection.notes,e)!=-1||this.getNoteSelectionIndex(this.selection.inProgressNotes,e)!=-1}isEventInSelection(e){return this.getEventSelectionIndex(this.eventSelection.timingEvents,e)!=-1||this.getEventSelectionIndex(this.eventSelection.inProgressTimingEvents,e)!=-1}addNoteSelection(e,t){let i=Xa(e,t.beat,r=>r.beat);for(;e[i]&&(e[i].beatr.beat);for(;e[i]&&e[i].beat==t.beat;){if(Mp(e[i],t))return i;i++}return-1}addEventSelection(e,t){let i=Xa(e,t.beat,r=>r.beat);for(;e[i]&&e[i].beat<=t.beat;)i++;e.splice(i,0,t)}removeEventSelection(e,t){const i=this.getEventSelectionIndex(e,t);i!=-1&&e.splice(i,1)}getEventSelectionIndex(e,t){let i=Xa(e,t.beat,r=>r.beat);for(;e[i]&&e[i].beat==t.beat;){if(Mp(e[i],t))return i;i++}return-1}selectRegion(){if(this.loadedChart){if(this.endRegion!==void 0&&(this.startRegion=void 0,this.endRegion=void 0),this.startRegion===void 0){this.clearSelections(),this.startRegion=this.beat;return}this.endRegion=this.beat,this.endRegione.beat>=this.startRegion&&e.beat<=this.endRegion)):this.setEventSelection(ls.flatMap(e=>this.loadedChart.timingData.getColumn(e).events).filter(e=>e.beat>=this.startRegion&&e.beat<=this.endRegion))}}modifySelection(e){if(!this.loadedChart)return;const t=this.selection.notes,i=structuredClone(this.selection.notes).map(e).sort((o,l)=>o.beat==l.beat?o.col-l.col:o.beat-l.beat);if(i.length==0)return;const r=[];for(const o of i){const l=r.at(-1);l!==void 0&&l.beat==o.beat&&l.col==o.col||r.push(o)}if(r.length==0)return;const{removedNotes:n,truncatedHolds:a}=this.checkConflicts(r,t);this.app.actionHistory.run({action:()=>{this.loadedChart.removeNotes(t.concat(n),!1),a.forEach(o=>this.loadedChart.modifyNote(o.oldNote,o.newNote,!1)),this.clearSelections(),this.setNoteSelection(this.loadedChart.addNotes(r))},undo:()=>{this.loadedChart.removeNotes(r,!1),a.forEach(o=>this.loadedChart.modifyNote(o.newNote,o.oldNote,!1)),this.loadedChart.addNotes(n,!1),this.clearSelections(),this.setNoteSelection(this.loadedChart.addNotes(t))}})}checkConflicts(e,t=[]){if(e.length==0)return{removedNotes:[],truncatedHolds:[]};const i=this.loadedChart.getNotedata(),r=this.loadedChart.gameType.numCols,n=new Array(r).fill(0).map(u=>[]);for(const u of i)n[u.col].push(u);const a=new Array(r).fill(0).map(u=>[]);for(const u of e)u.col>r||a[u.col].push(u);const o=[],l=[],c=[];for(let u=0;ua[u][0].beat<=(Pe(d)?d.beat+d.hold:d.beat));for(const d of a[u])for(;n[u][h];){const p=n[u][h],m=Pe(d)?d.beat+d.hold:d.beat;if(!t.includes(p)&&!c.includes(p)&&(d.beat<=p.beat&&m>=p.beat?(c.push(p),o.push(p)):Pe(p)&&p.beat+p.hold>=d.beat&&p.beatm)break;h++}}return o.sort((u,h)=>u.beat==h.beat?u.col-h.col:u.beat-h.beat),l.sort((u,h)=>u.newNote.beat==h.newNote.beat?u.newNote.col-h.newNote.col:u.newNote.beat-h.newNote.beat),{removedNotes:o,truncatedHolds:l}}modifyEventSelection(e){!this.loadedChart||!this.loadedSM||this.loadedChart.timingData.modify(this.eventSelection.timingEvents.map(t=>[t,e(structuredClone(t))]))}deleteSelection(){if(this.selection.notes.length==0)return;const e=this.selection.notes;this.app.actionHistory.run({action:()=>{this.loadedChart.removeNotes(e),this.clearSelections()},undo:()=>{this.selection.notes=this.loadedChart.addNotes(e)}})}deleteEventSelection(){this.eventSelection.timingEvents.length!=0&&(!this.loadedChart||!this.loadedSM||this.loadedChart.timingData.delete(this.eventSelection.timingEvents))}paste(e,t=!1){if(this.loadedChart&&(e.startsWith("ArrowVortex:notes:")&&(this.pasteNotes(e,t)||this.pasteNotes(this.virtualClipboard,t)),e.startsWith("ArrowVortex:tempo:")||e.startsWith("SMEditor:tempo:"))){this.pasteTempo(e)||this.pasteTempo(this.virtualClipboard);return}}pasteNotes(e,t=!1){if(!this.loadedChart)return!0;const i=PS(e);return!i||i.length==0?!1:(this.insertNotes(i.map(r=>(r.beat+=this.beat,r.beat=Math.round(r.beat*48)/48,r)),t),!0)}insertNotes(e,t=!1){e.sort((n,a)=>n.beat==a.beat?n.col-a.col:n.beat-a.beat);const{removedNotes:i,truncatedHolds:r}=this.checkConflicts(e);if(t){const n=e.map(u=>os(u));let a=0;for(const u of n)u>a&&(a=u);const o=new Array(this.loadedChart.gameType.numCols).fill(0).map((u,h)=>({type:"Hold",hold:a-e[0].beat,col:h,beat:e[0].beat})),{removedNotes:l,truncatedHolds:c}=this.checkConflicts(o);l.forEach(u=>{i.includes(u)||i.push(u)}),c.forEach(u=>{const h=r.find(d=>d.oldNote==u.oldNote);if(h){const d=Pe(h.newNote)?h.newNote.hold:0,p=Pe(h.newNote)?h.newNote.hold:0,m=Math.min(d,p);m==0?h.newNote={beat:h.newNote.beat,col:h.newNote.col,type:"Tap"}:h.newNote={beat:h.newNote.beat,col:h.newNote.col,type:h.newNote.type,hold:m}}}),i.sort((u,h)=>u.beat==h.beat?u.col-h.col:u.beat-h.beat),r.sort((u,h)=>u.newNote.beat==h.newNote.beat?u.newNote.col-h.newNote.col:u.newNote.beat-h.newNote.beat)}this.app.actionHistory.run({action:()=>{this.loadedChart.removeNotes(i,!1),r.forEach(n=>{this.loadedChart.modifyNote(n.oldNote,n.newNote,!1)}),this.clearSelections(),this.setNoteSelection(this.loadedChart.addNotes(e))},undo:()=>{this.loadedChart.removeNotes(e,!1),r.forEach(n=>{this.loadedChart.modifyNote(n.newNote,n.oldNote,!1)}),this.setNoteSelection(this.loadedChart.addNotes(i)),this.clearSelections()}})}pasteTempo(e){if(!this.loadedChart||!this.loadedSM)return!0;const t=US(e);if(!t||t.length==0)return!1;const i=this.loadedChart.timingData;return t.forEach(r=>{r.type=="ATTACKS"?r.second+=this.time:r.beat+=this.beat}),t.forEach(r=>r.isChartTiming=i.isPropertyChartSpecific(r.type)),i.insert(t),!0}copy(){if(this.selection.notes.length!=0){const e=Math.min(...this.selection.notes.map(r=>r.beat)),t=structuredClone(this.selection.notes).map(r=>(r.beat-=e,r)).sort((r,n)=>r.beat==n.beat?r.col-n.col:r.beat-n.beat),i=RS(t);return this.virtualClipboard=i,i}else if(this.eventSelection.timingEvents.length!=0){const e=Math.min(...this.eventSelection.timingEvents.map(n=>n.beat)),t=this.loadedChart.timingData.getSecondsFromBeat(e),i=structuredClone(this.eventSelection.timingEvents).map(n=>n.type=="ATTACKS"?(n.second-=t,n):(n.beat-=e,n)).sort((n,a)=>n.type!=a.type?n.type.localeCompare(a.type):n.type=="ATTACKS"?n.second-a.second:n.beat-a.beat),r=OS(i);return this.virtualClipboard=r,r}}}export{We as $,pt as A,Ht as B,qS as C,aa as D,q as E,Be as F,He as G,kt as H,Ce as I,Kt as J,wt as K,Se as L,Gn as M,st as N,w as O,ey as P,ry as Q,Vc as R,Yg as S,xt as T,Fs as U,Ve as V,_e as W,RC as X,UC as Y,Gc as Z,em as _,Ie as a,Ut as a0,k0 as a1,Uo as a2,c1 as a3,Us as a4,fn as a5,qe as a6,Ee as b,GC as c,Fe as d,Hi as e,qg as f,la as g,Es as h,PC as i,tl as j,pd as k,FC as l,AS as m,NC as n,di as o,sS as p,te as q,ke as r,Xi as s,zt as t,Lt as u,LC as v,Wi as w,cc as x,Le as y,Me as z}; diff --git a/HoldBody-9276f45c.js b/HoldBody-3932542e.js similarity index 98% rename from HoldBody-9276f45c.js rename to HoldBody-3932542e.js index 2039676c..912bad50 100644 --- a/HoldBody-9276f45c.js +++ b/HoldBody-3932542e.js @@ -1 +1 @@ -import{y as c,Z as l,_,z as d,q as o,$ as p,T as h,U as m}from"./ChartManager-db54e716.js";const s=new p;class n extends c{constructor(t,e=100,i=100){super(t),this.tileTransform=new l,this._width=e,this._height=i,this.uvMatrix=this.texture.uvMatrix||new _(t),this.pluginName="tilingSprite",this.uvRespectAnchor=!1}get clampMargin(){return this.uvMatrix.clampMargin}set clampMargin(t){this.uvMatrix.clampMargin=t,this.uvMatrix.update(!0)}get tileScale(){return this.tileTransform.scale}set tileScale(t){this.tileTransform.scale.copyFrom(t)}get tilePosition(){return this.tileTransform.position}set tilePosition(t){this.tileTransform.position.copyFrom(t)}_onTextureUpdate(){this.uvMatrix&&(this.uvMatrix.texture=this._texture),this._cachedTint=16777215}_render(t){const e=this._texture;!e||!e.valid||(this.tileTransform.updateLocalTransform(),this.uvMatrix.update(),t.batch.setObjectRenderer(t.plugins[this.pluginName]),t.plugins[this.pluginName].render(this))}_calculateBounds(){const t=this._width*-this._anchor._x,e=this._height*-this._anchor._y,i=this._width*(1-this._anchor._x),r=this._height*(1-this._anchor._y);this._bounds.addFrame(this.transform,t,e,i,r)}getLocalBounds(t){return this.children.length===0?(this._bounds.minX=this._width*-this._anchor._x,this._bounds.minY=this._height*-this._anchor._y,this._bounds.maxX=this._width*(1-this._anchor._x),this._bounds.maxY=this._height*(1-this._anchor._y),t||(this._localBoundsRect||(this._localBoundsRect=new d),t=this._localBoundsRect),this._bounds.getRectangle(t)):super.getLocalBounds.call(this,t)}containsPoint(t){this.worldTransform.applyInverse(t,s);const e=this._width,i=this._height,r=-e*this.anchor._x;if(s.x>=r&&s.x=a&&s.y{this.tileScale.set(e/this.texture.width)}),this.uvRespectAnchor=!0,this.anchor.y=1,this.x=-e/2,this.width=e}}class T extends g{_playing=!1;_autoUpdate=!1;_isConnectedToTicker=!1;_tickerUpdate=this.update.bind(this);_currentTime=0;_textures;_previousFrame=null;onComplete=null;onLoop=null;onFrameChange=null;animationSpeed=1;loop=!1;updateAnchor=!1;constructor(t,e){super(t[0],e),this.textures=t}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(h.shared.remove(this._tickerUpdate),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(h.shared.add(this._tickerUpdate,this,m.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(t){this.stop(),this.currentFrame=t}gotoAndPlay(t){this.currentFrame=t,this.play()}update(t){if(!this._playing)return;const e=this.animationSpeed*t,i=this.currentFrame;this._currentTime+=e,this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete?.()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete?.()):i!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFramei)&&this.onLoop(),this.updateTexture())}updateTexture(){const t=this.currentFrame;this._previousFrame!==t&&(this._previousFrame=t,this.texture=this._textures[t],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange?.(this.currentFrame))}destroy(t){this.stop(),super.destroy(t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}get totalFrames(){return this._textures?.length??0}get textures(){return this._textures??[]}set textures(t){this._textures=t,this._previousFrame=null,this.gotoAndStop(0),this.updateTexture()}get currentFrame(){let t=Math.floor(this._currentTime)%this._textures.length;return t<0&&(t+=this._textures.length),t}set currentFrame(t){if(t<0||t>this.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${t}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?(h.shared.remove(this._tickerUpdate),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(h.shared.add(this._tickerUpdate),this._isConnectedToTicker=!0))}}export{T as A,g as H,n as T}; +import{y as c,Z as l,_,z as d,q as o,$ as p,T as h,U as m}from"./ChartManager-b82bf91a.js";const s=new p;class n extends c{constructor(t,e=100,i=100){super(t),this.tileTransform=new l,this._width=e,this._height=i,this.uvMatrix=this.texture.uvMatrix||new _(t),this.pluginName="tilingSprite",this.uvRespectAnchor=!1}get clampMargin(){return this.uvMatrix.clampMargin}set clampMargin(t){this.uvMatrix.clampMargin=t,this.uvMatrix.update(!0)}get tileScale(){return this.tileTransform.scale}set tileScale(t){this.tileTransform.scale.copyFrom(t)}get tilePosition(){return this.tileTransform.position}set tilePosition(t){this.tileTransform.position.copyFrom(t)}_onTextureUpdate(){this.uvMatrix&&(this.uvMatrix.texture=this._texture),this._cachedTint=16777215}_render(t){const e=this._texture;!e||!e.valid||(this.tileTransform.updateLocalTransform(),this.uvMatrix.update(),t.batch.setObjectRenderer(t.plugins[this.pluginName]),t.plugins[this.pluginName].render(this))}_calculateBounds(){const t=this._width*-this._anchor._x,e=this._height*-this._anchor._y,i=this._width*(1-this._anchor._x),r=this._height*(1-this._anchor._y);this._bounds.addFrame(this.transform,t,e,i,r)}getLocalBounds(t){return this.children.length===0?(this._bounds.minX=this._width*-this._anchor._x,this._bounds.minY=this._height*-this._anchor._y,this._bounds.maxX=this._width*(1-this._anchor._x),this._bounds.maxY=this._height*(1-this._anchor._y),t||(this._localBoundsRect||(this._localBoundsRect=new d),t=this._localBoundsRect),this._bounds.getRectangle(t)):super.getLocalBounds.call(this,t)}containsPoint(t){this.worldTransform.applyInverse(t,s);const e=this._width,i=this._height,r=-e*this.anchor._x;if(s.x>=r&&s.x=a&&s.y{this.tileScale.set(e/this.texture.width)}),this.uvRespectAnchor=!0,this.anchor.y=1,this.x=-e/2,this.width=e}}class T extends g{_playing=!1;_autoUpdate=!1;_isConnectedToTicker=!1;_tickerUpdate=this.update.bind(this);_currentTime=0;_textures;_previousFrame=null;onComplete=null;onLoop=null;onFrameChange=null;animationSpeed=1;loop=!1;updateAnchor=!1;constructor(t,e){super(t[0],e),this.textures=t}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(h.shared.remove(this._tickerUpdate),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(h.shared.add(this._tickerUpdate,this,m.HIGH),this._isConnectedToTicker=!0))}gotoAndStop(t){this.stop(),this.currentFrame=t}gotoAndPlay(t){this.currentFrame=t,this.play()}update(t){if(!this._playing)return;const e=this.animationSpeed*t,i=this.currentFrame;this._currentTime+=e,this._currentTime<0&&!this.loop?(this.gotoAndStop(0),this.onComplete?.()):this._currentTime>=this._textures.length&&!this.loop?(this.gotoAndStop(this._textures.length-1),this.onComplete?.()):i!==this.currentFrame&&(this.loop&&this.onLoop&&(this.animationSpeed>0&&this.currentFramei)&&this.onLoop(),this.updateTexture())}updateTexture(){const t=this.currentFrame;this._previousFrame!==t&&(this._previousFrame=t,this.texture=this._textures[t],this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this.uvs=this._texture._uvs.uvsFloat32,this.updateAnchor&&this._anchor.copyFrom(this._texture.defaultAnchor),this.onFrameChange?.(this.currentFrame))}destroy(t){this.stop(),super.destroy(t),this.onComplete=null,this.onFrameChange=null,this.onLoop=null}get totalFrames(){return this._textures?.length??0}get textures(){return this._textures??[]}set textures(t){this._textures=t,this._previousFrame=null,this.gotoAndStop(0),this.updateTexture()}get currentFrame(){let t=Math.floor(this._currentTime)%this._textures.length;return t<0&&(t+=this._textures.length),t}set currentFrame(t){if(t<0||t>this.totalFrames-1)throw new Error(`[AnimatedSprite]: Invalid frame index value ${t}, expected to be between 0 and totalFrames ${this.totalFrames}.`);const e=this.currentFrame;this._currentTime=t,e!==this.currentFrame&&this.updateTexture()}get playing(){return this._playing}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,!this._autoUpdate&&this._isConnectedToTicker?(h.shared.remove(this._tickerUpdate),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(h.shared.add(this._tickerUpdate),this._isConnectedToTicker=!0))}}export{T as A,g as H,n as T}; diff --git a/NodeFileHandler-0f24e20c.js b/NodeFileHandler-f2c2e619.js similarity index 99% rename from NodeFileHandler-0f24e20c.js rename to NodeFileHandler-f2c2e619.js index 896bd3ef..8602398b 100644 --- a/NodeFileHandler-0f24e20c.js +++ b/NodeFileHandler-f2c2e619.js @@ -1,4 +1,4 @@ -import{a0 as Nr,a1 as Xr,g as ra,a2 as bi,a3 as na,a4 as oi,a5 as ai,W as ia}from"./ChartManager-db54e716.js";var dr={exports:{}};/** +import{a0 as Nr,a1 as Xr,g as ra,a2 as bi,a3 as na,a4 as oi,a5 as ai,W as ia}from"./ChartManager-b82bf91a.js";var dr={exports:{}};/** * @license * web-streams-polyfill v3.3.3 * Copyright 2024 Mattias Buelens, Diwank Singh Tomer and other contributors. diff --git a/Noteskin-1c251d86.js b/Noteskin-0af53390.js similarity index 99% rename from Noteskin-1c251d86.js rename to Noteskin-0af53390.js index f7f4e2cb..9d8d80a0 100644 --- a/Noteskin-1c251d86.js +++ b/Noteskin-0af53390.js @@ -1,4 +1,4 @@ -import{q as B,r as I,s as E,b as v,u as l,O as P,v as w,w as c,x as f,y as r,z as p,X as F,H as s,L as y,Q as D}from"./ChartManager-db54e716.js";import{A as x}from"./AnimatedSprite-ffeea718.js";import{H as m}from"./HoldBody-9276f45c.js";const U="/smeditor/assets/downBodyActive-dd1fd694.png",b="/smeditor/assets/downBodyInactive-c781a303.png",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0dOV1YU4MAAAPKSURBVHja7d1dTupQFIbh0pwJkDBA4xjEQVjGcOIATZwBnFslHC1l7b2/v3WHiUL6PimUwHI3Xc1pWS5fbz8/vU5bZn843/07nx/zVDVb7h/5sW29/7/vb99uvxyPu6+356nRbHnAldEqg7HGXzPt/rIIAuX4zQGwI1CP3wUAKwKH+N0AsCFwid8VAAsCp/jdAaAjcIs/BAAqAsf4wwCgIXCNPxQACgLn+MMBICBwjg8BQAEBa3wYAMwImONDAWBEwB4fDgATAoX4kAAYEKjEhwWAjEApPjQARARq8eEBICFQjE8BAAGBanwaACMRKMefpmn60+NUWXVAPj/mu4PsD+fN94/4yeZqXHPr+NWn415nAtSPtVe/vplbP2BGBOjfaag8ll2frBgQqH2hBe5FIDICt/jDrgIQETjGH3oZiITANX4pAMYvf+wPZ8r4lfdfegZQ+kKoQ/wmTwHKCBQ/QDqjHCh0BKqfHs5+AOP4za8Csh8AO36Xy8DsB8CN3+19gOwHyH6A7AcAjN8VAAuC7AcwRpD9AMYIsh/AGEH2AxgjyH6AwZP9AJM3AAUE2Q9gjCD7AYwRZD+AMYLsBzBGkP0AxgiyH8AYQfYDGCPIfgBjBNkPYIwg+wEKDlj2A+AdyyZngOwHyH6ALs/J2Q+Q/QDZD8D6IjD7AXDiD7sKyH4AjPhDLwOzH2B8/FIA2Q/A+T5D9gMYx2/yFJD9ADzxVwG4/v/zrggY469pt7v1w9OyXK5/9vz0Sqe8CpVK/JfjcbcKQBB4xP8RQBDox/8VgDMCh/irADgicIm/GoATAqf4dwFwQOAW/24Ayggc428CoIjANf5mAEoIKoct/kMAgoA//sMAgoA7fgkAdwTM8csAuCJgj18KwA2BQvxyAC4IVOI3AaCOQCl+MwCqCNTiNwWghkAxfnMAKghU43cBwI5AOX43AKwI1ON3BcCGwCF+dwAsCFziDwGAjsAp/jAAqAjc4g8FgIbAMf5wACgIXONDABiNYMuoxIcBwIRAKT4UAAYEavHhACAjUIwPCQARgWp8WABICJTjQwNAQKAeHx7ASAQO8SkAjEDgEp8GQE8ETvGpAPRA4BafDkBLBI7xKQG0QOAanxZAJYItoxKfGsAoBErx6QH0RqAWXwJALwSK8WUAtEagGl8KQCsEyvHlAFQjUI8vCaAKgUN8WQCPInCJLw1gKwKn+PIA7kXgFt8CwFoEjvFtAPyGwDW+FYD/Ibg1LvHtAKxB4BTfEsBPCNzi2wK4hcAxvv2cluWy9nVBJpPJZDKZjNL8A8iasRIljXPgAAAAAElFTkSuQmCC",X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0eB7cUHesAAAO/SURBVHja7dw7VhtBEIXh0WzGGWtxahZop6yFzKuREwKQBcy0uqvuqzM4Bwv6/yxN61GX7f91ff/F6+vPbWT9/vPj9M88//q7zVojt4/8u43e/tPTy+23Lu+/2LdFa+QXnhltZjDW+EfWMgAqCJTjLwfAjkA9fgkAVgQO8csAsCFwiV8KgAWBU/xyAOgI3OK3AEBF4Bi/DQAaAtf423bzrNDbmvJMoOqGsf0tbc8EstwTuEPeETaPHQHzvdiOsomsCNgfwmAAMCJQuH6BAsCEQOXiFQ4AAwKlkwskAGQESvGhASAiUIsPDwAJgWJ8CgAICFTj0wDoRKAcf9sWvBZwb8NYX2xBfGfz2X+/9LWAzzas++1dI7eP+rb22dc3e9X/TCYE6J9pmLmXpdcADAjUPtACdxGIjMAtftspABGBY/zWYyASAtf404+BLhvJdKwtPQYqfSBUIX7LQ4AyAsV3D+8oG4WOQPWt45kPYBx/+Skg8wGw45ccAzMfADd+2fMAmQ+Q+QCZDwAYvxQAC4LMBzBGkPkAxggyH8AYQeYDfFyZDyD0t2Q+gHF86IcAJQSZD2CMIPMBjBFkPoAxgswHMEaQ+QDGCDIfwBhB5gMYI8h8AGMEmQ9gjCDzATIfoC1+5gM03hNkPsDkDct8AMy9zHwAsvj0F4GZD4ATv+0UkPkAGPFbj4GZD9Aff/oxMPMB8I6amQ9gHL/lISDzAXjiHwJw5y7EEgFj/CPtLp98/3r7jZG3h6tcEwjFvxwFEAQG8b8DYI9APf4RALYIHOIfBWCHwCX+GQA2CJzinwUgj8At/ggAWQSO8UcByCFwjf8IABkEMxdb/EcBBAF5/BkAgoA4/iwA1giY488EYImAPf5sAFYIFOKvAGCBQCX+KgDSCJTirwQgiUAt/moAUggU41cAkECgGr8KADUC5fiVACgRqMevBkCFwCF+BwAKBC7xuwBAI3CK3wkAEoFb/G4AUAgc4yMAgEDgGh8FQCuCkaUSHwkADQKl+GgA4BGoxUcEAItAMT4qADgEqvGRAcAgUI6PDqAdgXp8BgBtCBziswAoR+ASnwlAGQKn+GwAliNwi88IYBkCx/isAKYjcI3PDGAagpGlEp8dQAsCpfgKAEoRqMVXAVCCQDG+EoClCFTjqwFYgkA5viKAqQjU46sCmILAIb4ygIcQuMRXBzCEwCm+A4BTCNziuwA4hMAxvhOALxG4xncDcBeB+764ATiCwGpPHAF8hcBuP1wB3EPgvBfWCK7ZhqysrKysrCy39Q9gQ/q5SfcuvQAAAABJRU5ErkJggg==",G="/smeditor/assets/leftBodyActive-75d41033.png",R="/smeditor/assets/leftBodyInactive-bbc074cd.png",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEANIA0gBQ7xAn7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI2I6Ho7PYAAANMSURBVHja7Z1bTgMxDEU7VjeAxAJR10C7CMoaEAus1B0Av6XiMY/EsX2PJT4GoTHpOZNJMhl32t3F6/n8eXt8eDrt1sTD48eiv79ebNcqluZumX9N7p7/39v7y7fj5+Nxuj3e7zrF9WKzP4xM8HsBHhXW8+RzPtgqVz4CrPiAM8IfIUzPnDaqAZmvfE8JeueyEQ2p0O17SOCRw7U/u16s1D2/JyCvXibtCCjKgC/LOX+LPfBzAZPvAZjqCQsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOD7xh74f+evLpcB/+/81XYAhRQgKnwFCQz4ta/w0AIAX1gA4AvPApTgR5/WGvDjrTN4CmrAjwXfWwIDfjz4nhIY8GPC95LAgB8XvocEBnztqaYBX3udIczTQOoDFBOA+gA5gvoA1AcY17VTH2B8TuoDBAPinYv6AIEloD5A8Hs+9QEGBvUBiq0DZB7tUx9AGD7TQOAjAPARAPgIAHwEAD4CjIRPFBEA+MICAF9YAOALCwB8YQGALyxAS/hMAZMJAHxhAYAfI/YV4fccU3jkoz6AMHzvQbEBP2Y+6gMIw/fMYcCPCd8rlwE/LnyPnJbZXm8YFVcsDfi68GcJcP/980RxAZ6Px6mFBL0XM7xX/6quNv7YKiTQkeDXFkWUwPsLHaJ8gcSw+gBIMF6CLbnmsJrmnOj1fP68/93h6cSaQOeZQWv4P13Q09wTIoFvPg/4iwRAAr98XvAXC5BJAsVYCn+VAEhQB/5qAZCgBvxNAiBBfvj/rgP8F1lWDIHfSQAkyA2/iQBIkBd+MwGQICf8zYPAiAPDpQJl3++wBX7THoCeIB/8LgKMlkDlTeMW8LsJgAQ54HcZA0QaE6yRp/UgK3q4NAwJxAVAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAggERet9Vtk0la+REgGISIAASIAASIEA5CRAACRAACRAACRBAT4LKkqRvWW8JqvcQJVrXUoL7H24BYhIwBkCC1ZFRuJLvu7V6irgVPo+DRSRgQ4iwBGwJE5aATaHCErAtXFgCXgwRloBXwwpK0HrtAQFEJOD1cGEJKBAhLEHlsnEEQRAEQWjEFz4LZYAP3C09AAAAAElFTkSuQmCC",J="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3FABOeLgAAAM3SURBVHja7d09csJADIZhW+O7pOMsaeGASZuz0HGapGUIMP7Z1Ur6XnVkMgj8PdjrxV7m6X/93j+4Xj+nPfX1/bHp/y/n29SqtvZu2X9P756v73T6efzTfP9gmTrV5XxbvTEyhd8r4FFlPZ98zYat8skHwI4NnDH8EWB69rRRbyDzJ98TQe9eNuKNVNjteyDw6DH3OgvwqAjH/Gij/q1nATYlrSgDvizP+aoWws8VWNoxAKd6ACB8ABA+AAgfAIQPAMIHAOEDgPABQPhjayH89/2r4zLCf9+/2hVAIQFEDV8BgRF+7U94aACELwyA8IXPApTCj35aa4Qfb57BE6gRfqzwvREY4ccL3xOBEX7M8L0QGOHHDd8DgRG+9qmmEb72PEOYbwNZH6AYANYHyFGsD8D6AON27awPML4n6wMEC8S7F+sDBEbA+gAJjvmsDyAcfqbnDD8PkHm0z/oAwuFzGkj4ACB8ABA+AAgfAIQPgJHhU0UAEL4wAMIXBkD4wgAIXxgA4QsDaBk+p4DJABC+MADCj1FLxfB7jik8+rE+gHD43oNiI/yY/VgfQDh8zx5G+DHD9+plhB83fI+ellmvdxgVZyyN8HXDXwXgyZ0lVHEAcwsEvSczvGf/qs42vtoDgEAEwbtDQDgE3j/oEOUHJEauDwCCwQiO9FqT1bzyuX4f/7DntnHmBIaHP+8FAALnfh7hbwUAgin+18Fbwt8DIA0Cxdoa/l4AICgS/hEAICgQ/lEAIEge/pp5gM2AIs4YEn4/ACBIHH4rACBIGn5LACBIGH6LQWC4geFWQAWudziUoXm8IPYEMcPvBWAoAqE7jZvsvc3zBYIgVvi9xgBhxgR78LQeZMlIAgEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEEQqywY08kUlkX9pPSuAdAgAAAIAgAAA5RAAAAQAAAEAQAAAPQSVkViB99AVQfU9RKVLnJtMGx+tJ/iYCs60J2AMAIKWn34OASqHA74OFkbABSHCCLgkTBgBF4UKI+CycGEE3BgijIBbwwoiUN6GigBaIuD2cGEELBAhjEB9u1EURVEUlbz+AOnsq2p4bKxbAAAAAElFTkSuQmCC",Y="/smeditor/assets/rightBodyActive-07f95372.png",Z="/smeditor/assets/rightBodyInactive-fdefc2a4.png",K="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NtUuOVwAAAOHSURBVHja7Z3RTSsxEEUdKw0gUSCiBkIRhBoQBSLRQeDr6YWQEK/j8c7MPfcvIO0sPmcd24RhU07yut9/Hb9+fHguPbm7PxSLfH7UIdfpub9RtXvq99Z+e3/58fppt9scv96WYLk2cK0D9flRF0O4uz8Mk2BJ/ZHinaYW4fQM7MiZraW+JXxTAaxvfFRNzxLMGMPqDcgatTxKMGvsqmcwM2t4kmDmg1O9P50zr+1BgtlvndOqWfxgXq5pteWdkanbwDUWhtZbNIstYsoZgC0iAiABAiABAiABAiABAiABAiABAiABAiDButlmB3Vu0Nf4UMfx/Xg6Maxq8Ec/idFngqoGHwlYAyABAiABAiDB/F3A2p/Fn7U6j7Q7qBGfsghPYpSZoGaEjwSOBFh7kYMEKwrgZa+LBCsI4O3cGwmCbgMzQfAoQYhzACQ4aAvwbxBGDURECaxCf4CFtekPkCj0B6A/AP0BvAFZoxb9AYJLQH8A52sA+gO016c/QMBr0h8g4P7X8xYx5QzAFhEBkAABkAABkAABkAABkAABdEJ/AEJ/AOJTAgQQlwABxCVAAHEJEGDCVtCzBAggLgECiEvgvj/AUgiWg3lar+dzA3+NDf0BBlzTchCt69EfAAnoD4AE9AdAgkJ/ACQo9AcIIZ51PfoDIAH9AUhf3t5fNAWYfaBiXa/n+ufgP+12m/QCAL8dvqkAXvoDzDwaHl3PGn6TAC3vIx4kAP5y+KWUcvabr/v91+nXHh+e3a6Sgd8H/6IAkSQAfj/8PwWIIAHwb4N/VQALCTIlOvwmAZAgL/xmAZAgJ/xFAiBBPvhN5wDXCt1yTqAcD/AXC4AEueB3CYAEeeB3C4AEOeAvXgS2LgwjZekitncR6BH+TTOA1Q3x5M+DP0QAJQlm/efTWfCHCaAgQUb4Q9YAnjPq4Cor/NQCAF9YAOALCwB8YQGALywA8IUFAL6wAMAXFgD4wgIAX1gA4AsLAHxhAYAvLADwhQUAvrAAwLdNuA4hwBcXAPgIAHwEAD4CDI4ifAQQh48A4vDlBVCHn1qAa3CBLzADXIIM/P/ZluQZ0a00K3wWgeLwQwowswlFdviliP06GPhBBZgtgQr8UALMkkAJfjgBrCVQgx9SACsJFOGHFWC0BKrwQwswSgJl+OEFuCTBLVFre5f2z8OBLyTACAlUG16mbxEDfEIIIYSQ3/kGeiN5xirmRdUAAAAASUVORK5CYII=",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NUwnaOYAAANgSURBVHja7Z1BUuNADEUdF3dhx1lmyxxw2HIWdnMas6JqKpCx3ZbUkv7TLiFJR/1eOurGiNvyPbZ/b3x8/FpG4s/b8+IRv1//mrzOyPuzGntk/NGxX17e7++6PbxRQQDLiaoiwZUx9wRYF+EYmVhLsY+MbyncT7FmmtwZY2aWIGIO12xAZoyVUYKouVszg4kcI5MEkR8ctyKw2q4gS2FoHWmKQI9JyvKas3Y8pVaAatFlJWAbyEowtwhEAgRAAgRAAgRAAgRAAgRAAgRAAgRAgjTR/iTwp0mfeWWP9fh7IX0S+AhO9EUdmVeCVQ0+ElADIAECIAECIEH8LiCyYq523b/X7iDNLiDa8gqXfGdYCdaO8JEgkQCzixwkmChAlr0uEkwQINu5NxIU3QZ2gpBRghLnAEjwrC3A1yRYTURFCbyC/gAT4dEfgMJw+mpBfwD6A+QCMmMs+gMUl4D+AAmLwKiikP4ARYpA+gPkDPoDNF8J2AayEswtApEAAZAAAZAAAZAAAZAAAdhSIgASIAASIAASIAASIAASIIDAVjCzBAggLgECiEuQvj/AWQiek+k9Hv0BDF7T86KMjC3nSnwFeCaGBMkFiEgICZIKEJkIEiQTYMb3GRKwDQwXz3s8+gMgAf0BCLMzAA0Bov9Aw3u8kdd/AP/WXgDgH4fvKkCW/gBqR8Nn4B8S4Mj3SAYJgH8e/v9+uN3fceWXQt5VMvDH4O89oIQEwB+Hf+RBqSUA/jX4Rx9oKkGnqA7/zIORoCH8s09AgmbwR54kL0En+IfOAfYGunJOoBwZ4I8IgASN4I8KgARN4F8RAAkawF+WZXm6+PzbfWFYTYKoIjYj/KsrgMsb4pMfB99KABkJorqHRsG3FKC9BB3hK3xyTQ6uusLvLgDwhQUAvrAAwBcWAPjCAgBfWADgCwsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOALCwB8xyjXIQT44gIAHwGAjwDARwDjUISPAOLwEUAcvrwA6vBbC7AHF/gCK8AjyMCvlYDbfzFTh08RKA6/pACR/Qe6w6+UTHh3MgX41RIKk0AFfsWk3CVQgl81MTcJ1OBXTs5cAkX41RM0k0AVfockL0ugDL9LohtzQrIb80HCG3NB0hvzQBAEQRAEsR+fBPrG1xa4jMQAAAAASUVORK5CYII=",k="data:image/png;base64,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",V="/smeditor/assets/upBodyInactive-87a7969e.png",z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5IlF3wK8AAAPCSURBVHja7Z1bbsIwFETNKBtAYoFV11C6iNI1VF0gEjug/YUoRbWxfR8zV+oHH9TG58QhUe6wK6v6PJ1+bl+/vryX2tofrtXvuZxRelXL+BHm2DL+1/fH3eu343F3+xq9Fykr/N7/u+Uzj/hsEHxuCcAM/3KGOQTr8VGMytP5NKIEoQXw+GWKVQIIPrcEEHxuCTBr4pGuob1L0HMtMeMIj3gDxasEvXeIxfM2b32peTmjesz94dptDWacDuyuP4LcZ/Byx45aAOubTJklgOBzSwDB55YAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwBm+PvDNeWDniEE8PQMIbMEYIfPLgEEn1sCCD63BBB8bgkg+NwSQPC5JYDgc0sAweeWAILPLYHyAcglUD4AuQQQfG4JaPMBoksQWoDo8DNJAMHnlgCCzy0BTT5AJgmUD+C0lA9Q/OUDWEgQKR9gKUFqxtHVa4yeEqS8DPR6fmU5VYUSYPY3bDYJwAz/r74AJgnADP/RWCwSgB0+uwQQfG4JIPjcEkDwuSVYosKvAdLaF7Ae49GYlomioXcAj/Bb3qt8AIfwZ5fyAYjhR5UAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwDB55ZgiQb/6/vj7vXry7sp0Jb5WP8a2dAdQEd+rJ0Ags8tAQSfW4JQ+QDr863Hapmj8gGSwI8oAQSfWwIwwr+csfnHKIHrfIBR8Gcu/ggJKPIBthbu7Xjcjd6Bnl3crTn2lKC3pBhxhD27tc6CP6o3sKcEo09T7i7EZ8J/dF3tRQLz7wAzJ20BP7ME/xkLXiY9Av5WzfrNoCjrCQ+T9gA/kwQ16wnrSXuCn0GC2vWE5aQ9wo8sQct6wmrSnuFHlKB1PWEx6VnwvZan9cTsSbPD97aeS+2kP0+nn57bFyN8T+sJS2DM8L2sJ6wmLfg+1hMWkxZ8P+u56CjOeToYvgOocpQEkAAqCaCSACoJoJIAKgmgkgAqCaCSACoJoJIA0euZ5g6GBBOKHaAFJEt8Dc0poAYoU3YR1XeA2T8dKwGCScCYWrYUwlI8nS4DVVkEsAxdiJhetq6QD3WumylKmR8anaXDKexTvZYSZGpvC/1Yt4UE2Xobwz/XP1OCjI2tKRo7ZkiQtas5TWfPSAkyt7Snau0aIUH2PIN0vX09JWAIs0jZ3NlDApYkk7Tdvc9IwBRjk7q9u0UCtgyj9P39WxLUVPYMBIqAh1YJGAIwaBI+aiVgST+hinj5rwSKvlGpVCqVSpW9fgGbIppuMBFz1QAAAABJRU5ErkJggg==",M="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5JlYaBLYAAAO8SURBVHja7Z1LUt1ADEXtW94LM9aSKSwQpllLZqzmZZQq6oUX4nZ/JN2jGVDgRud0t21aYt/+jtvnD379+rGdjbf3p9Pf8/rysfWKlutnGGPL9Z+ff95/av/8gXonqSr83j+75Xce8bsJ+N4SyBn+68vHcgirr69tUUTaTzNKkFqAiDdTrhII+N4SCPjeEmjWwDM9Q0eXoGcuNWOGZ3yBElWC3ivE/sXnLr8JjPQMfjVhqx9vr8b0N4GV4EdYCUo+BmabhZUlEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lkDP8t/enkgc9UwgQ6QyhswRyh+8ugYDvLYGA7y2BgO8tgYDvLYGA7y2BgO8tgYDvLYGA7y0B/QHMJaA/gLkEAr63BLb9AbJLkFqA7PArSSDge0sg4HtLYNMfoJIE9AcIGvQHSJTgLFvd1fiuP8CxJYkZs6vXNd7en0KeXA71HiDi/uqyVaUSYPYdtpsEcob/qC7ASQI5w//XtVwkkDt8dwkEfG8JBHxvCQR8bwlCvAkcfZikNeGjrzHjZVH4TqFR4Z/9XvoDBIQ/O+gPYAw/qwQCvrcEAr63BAK+twQCvrcEAr63BAK+twQCvrcEAr63BEc2+PfvtlefWm4Zz+vLx+kcjTpoKma+90og4HtLIOB7S5CqP8AXf9sOFy1jpD9AEfgZJRDwvSU4HOGPrg38PPazj6ktj4ghVoARNe0z4Y+agSNWAov+AA8St49egTokdx8pQW9Jj5kzLBr8P0vt/dc6LMP7dne6unU7KPkUEAn+o70/ykowOr6tC9i2ee/b/xP+5bqFR7O701a1Z8qnopg7YuafvdMfdPcdOp+KMOgI8CtJcCafWj3oSPArSHA2n1o56IjwM0vQkk+tGnRk+BklaM2nVgx6FvzAESafmj1o4MfK59Ew6Fvn5csRfph8ajEwZ/gh8qmFgwZ+gHxq0aCBHySfB7O47HYwfAUgCgQCIACBAAQCEAhAIACBAAQCEAhAIACBAAQCZI8rFT4OHUwsVoAWkC7ta2y2gDNAnXoXWd0DzP7XsQiQTALHrmXHZhi0p+MxkKgiwMqmCxm7l91H1kOdy5oufAN/RwADCSqVt2U/1j1dgmq1jRXO9U+ToGJha5XCjuESVK1qrlTZM0yCyiXt1Uq7uktQvZ9Bxdq+bhI4NLOoWtx5WQKXTiaVq3ubJXBqY1O9vPu0BG49jBzq+2/kyFuAKxKUz49Th48bufEW4IwEtL4hCIIgCKJ0/AYcP+o66BZ87AAAAABJRU5ErkJggg==",j="/smeditor/assets/upleftBodyActive-bc79d60f.png",q="/smeditor/assets/upleftBodyInactive-f60085c6.png",W="data:image/png;base64,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",_="data:image/png;base64,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",$="/smeditor/assets/uprightBodyActive-3d912f52.png",A0="/smeditor/assets/uprightBodyInactive-01c6c977.png",n0="data:image/png;base64,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",t0="data:image/png;base64,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",o0="/smeditor/assets/bodyActive-889762ad.png",g0="/smeditor/assets/bodyInactive-5d99335a.png",a0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+AMCwUON+iUkUgAAAcOSURBVHja7Z1/iBVVFMfvXadIWKiEhSRJMtTWcKEf9sO31mI/iKL8QVEUCFKwJVmozwgKIiiIfLpuhrVQCEJRFK4VSfRDKn+U2Q9YiSzJMAyDBStYMKp90z++f173zdyZc+6Ze+85X9h/xJ1zZuZ+PjNv3tt3tHKUxoYNafu/ranvA22zS42C+2qqZZXXyMtQo/a/f6uvX69dnKdEESZV1Sdlsp+20VT0PwKkP0Eg819LMilrdcowkQUSoZ+3BTQF/auB9J+JQOTfBYmsomZ7thBYgMQATQ9WepNJzUoNYKJ/FZD+qQgknipJYpW1W9nq2AKJ0M/bAtol/YNA+rsRCJwAEuhDDyMOLZAI/bwtoF3Rfx+Q/nMQyPsDSJ5PvbziyALODMDtdX+ozwW0C/pXAumfhkDcSQviWnWK/F/XPWVlmwMLODFAaNfdpoc9BWEAE/0rgPT3IJA2bkFae50yv+Oqt6xsR7YAugFCvfanHvfmpQFM9N8LpP88BMJ+syCsUx3I72L3mJVXES2QCP28LaCx6L8bSP/5CGT9akFWXh2MbWD1mpXXkSyQCP28LaAx6L8TSP8FCET9YkGUbR3MbUHrZOVNBAskQj9vC2go/cuB9F+IQNLPFiQVreNim2XrZGUH0AKJ0M/bAhpC/1Ig/RchEPSTBUFl67jcdtE6WdkJsADIALG/187hPQJdlv7bgPTPQSDnRwtyoHUoatjWycq7JS1Q2gDyVz5x3AvoMvTfCqT/YgRiDlsQg1GHstZhoAXeK2GBUgbg9jm7mO8FdFH6b67vBxW8RO0AN/2dWk5Sp4qaNnWy8n5jYSELFDYA18/6xXovoIvQfyOQ/j4EQsYsCOlDpp+69hjQAh8WsEAi9PO2gLalfzGQfqpc6oj+Vr4F0kmV3ZYWSEKi34fEdhy0Df3XBUL/FY7pb+WrQCzwqYUFEqGftwV0Hv39gdB/FRH9rRwIxAJ7cyyQa4CmAB/1cdFZ9F8TCP0LielvZX8gFvg8wwIJfJWnjC0Q/r5nLoADhpWDlQXAdxRbuRbpHb8y6Vej6jOk7yA4aHgnr/IFINfQ+Pejq8oDB/0ZqJD+VgbUKMq+eHkJEHLi3xdNUcT0CmM+8B7gJgT6Pzh9/cbcVtkcIvyGcDGAgx6aYgB7+nvre0HbvEXtBPe1Sy11vs2i+b7RT26BROjnbQFNTf9sIP23I5D6TgdSXW7bNkeILUBugNg/VZSKATrTP6u+B7TNZeptcF+jaknlNfJytLGIzAK0M4PS6pdrbg/ag/0M3QAm+meug9F/h4aT+Va6xLtanXJsI40FZGYQ83sBkplBM4D034VA5BsFiayiZnuOE1hAZgZFvt+kBjDRPx1I/z0IJL5WksQqa7dywrEFCGYGaQ/o1yxrkxrARH8P8KnfCoQnc9uBT+Z86GHc4dNBmRnE/F7A2cygaUD6VyKQtw1Ink+9nHRkgcTdqud97Q/lXsDJzKCzgZ/2uR/hEzovI31a16ee/pSZQWFfd1nMDOoG0j+IQNoIMv0+9Tbh+8wgoT+s3lBnBk0F0r8KgbCtjuj3qcdTvs4MEvrD6xFtZtAZQPofRiDrecf0+9TrP77NDBL6w+wVZWaQBtK/FoGoTUT0+9Rz6svMIKG/mp41tQFM9E8C6X8UgaTniOn3qfcpVc8MmvSApEkVbqC9T6EygIn+v4D0P45A0DMV0e/TPpwlM4PCTpAzgyaA9D+JQM5TFdPv0750U88Mkmt/HPtSambQ70D6n0Yg5glP6Pdpn86VmUFyL4BqABP940D6n0Ug5THP6Pdp33oKWiAR+nlboNDMoBNA+hsIhNQ9pd+nfZxewAKJ0M/bAtYzg44jfbevhCYzLC2QCHm8YzUz6JjQH2RmWljAygBNGRrEwwAm+o+uE/pDzqyN2RaQmUFigM70H1kr9MeQ2Zs6WyDTAKlc+6NP5gKYM1Tzuvkf1vhhqLmeH6esdIW8eucO1VQzVZX+hHzyg18ASinVu7mm0lRV8tO7uRb64Qt/ASil1Lxh+kUwb7gWw6Hz/DvMOsT0ikUppQ6tprknmL/FfPIpZvzIAshZBGMPuV0EfS/Ec/KDvgR0OuCu1R/TyQ/+HsB04KkXQMgnP+hLQNbl4JsH3VwGLnuxFtXJz30QFGzkCSYvA5gs8PUDuBa4/KX46I/XACIBfgYwWeDgII4FFozESX/wrwIkYoBcC3wJtMCVEdMf9T2A3AswNYDJAl+UtMDVkdPPwgBiAYYGMFlgX0EL1BjQz8YAYgGGBjBZYI+lBRYxoZ+VAZSSv3FgZwCTBT7JscAAI/rZGUDuBRgawGSB3R0ssJgZ/UrJewFiAC472m6Bj9sscD1D+sUAEj4GMFngo9MWuIEp/WIACS8DmCzQHk70iwEk/AyQZQFu9IsBJOo/s3o7jeEUqX4AAAAASUVORK5CYII=",B0="data:image/png;base64,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",r0="/smeditor/assets/parts-9a3f637b.png",e0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAMAAADCg1mMAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAq9QTFRFAAAA/////4SJAAAA/qa9hYP/pqb+zJL/3LT/g/+Dpv6m/oT+/qb+/7lv/8qRrP/lzv/vwcHBzdfN/6K4pKT+27L/pP6k/qT+/8mPzP/vzNbM/pywnZ3916r/nf2d/J39/8WHxP/sydHJ/pGgk5P906D/k/2T/JT8/8B9uv/pxcvF/4ePh4f/zpb/h/+H/oj+/7tzsP/mw8PD/n19f3/9yYz/f/1//ID8/7Zppv/jvr6+/3FxcnL+xID/cv5y/XP9/7Fdmv/fuLi4/2dnaGj+v3b/aP5o/Wn9/6xTkP/cs7Oz/VxcXl78umr/Xvxe+1/7/6ZH/vr+hP/Yra2t/U5OT0/9s1z/T/1P/FD8/585/O78dv/Upqam/z8/Pz//rU7/P/8/90f3/5gr++L7Zv/Kn5+f/y4uLy//pED9L/8v8D7w/ZEb99T3Vf/Al5eX/xcXFxf/li34F/8X5y/n+IkD7sHuPP+yi4uL/wAAAQH/ihr0Af8B4R/h4n8A6K/oJf+mgICA/w0NDQ3/kCX2Df8N5Cjk74UA67nrMf+shoaG/ygoKSn/oDv8Kf8p7jru/I8V9c/1T/+8lJSU/zk5OTn/qkj/Of859UP1/5Ul+tz6YP/GnJyc/UpKS0v9sVj/S/1L/Ez8/501/Or8cv/SpKSk/ldXWFj+uGb/WP5Y/Vn9/6RD/vb+gP/Xq6ur/2JiZGT+vXL/ZP5k/WX9/6pPjP/bsbGx/25ucHD+w37/cP5w/XH9/7BbmP/et7e3/Xl5eXn9x4b/ef15/Hr8/7NjoP/hu7u7hYX/zZT/hf+F/ob+/7pxrv/lwsLC/Y+dj4/90Zz/j/2P/JD8/755tv/oxMjE/5iqmZn/16j/mf+Z/pr+/8SFwv/syc/J/6CzoqD+267/oP6i/qD8/8mLyP/vytTK2fi5aQAAAOV0Uk5T////AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xt8+5oAAAYhSURBVHic7Zt3bBxFFIefHSGEEL33hN5DTyWQgtMIaYReHHrvvYbeO4RO6DgNcBqkk0o66aST0EQXchxzHMbA2/fN3l12LXHDH4d0u9LNT59uz37zefe8I70pkf94lHidXxJ+zrJOGuRwrWyQw2nZMIdTslEO18jG8NpgLP3nJ9qxaTBWyyY551fJZp71R45EgNf5JbI5XBWMdbIFbBOolS3h6mBMy1bwumBMydZwDeM28PfBGBWwLZzit27nWX/k8BWwPfxDMNbJDvCPwVgrO8I/BWNadoJ/DsaU7Az/Eow1sgu8JhijAnaFfw3GKtnNs/7I4SNAXw3hL0WCYhvBX4lOX2R3+GvR6YvsAX8j9lfcE/5W7CrYC14qOn3JEaBX0d7wd2JX3T6e9cdOKN/z9bUvvEys2P3g5WIC9odXiAk4AF4pJuBAeJWYgIPgeRIv4GB4tZiAxp71x04o3/P1dQg8X6zYQ+EFYgIOgxeKCTgcXiQm4Ah4sZiAI+HpEi/gKHiJmIAmnvXHTijf8/XVFJ4hVmwzeKaYgObwLDEBLeDZYgJawnPEBBwNT5B4Aa3guWICjvGsP3ZC+Z1vnzgWnkipreFJwfRF2sCTg+mLtIWn8D3eDp7K/4Hj4JHB9LMF2P+RMnga/3fae9YfOXwFdIBHUWpHeDQCOsFjENAZHouA4+FxCOgCVyLghPB9E9AVHo+Abp71Rw5fAd3hSgT0gIcgoCc8FAEnwsMQ0AsejoCT4AoEnBy+bwJOgUcg4FTP+iOHr4DT4AoEnA73R8AZ8AAEnAkPRMBZ8CAEnA33Q0B5+L4J6A0PRsA5nvVHjnx/QCl5LvkqeR75Cnk++TJ5AfkSeSH5InkR+QJ5Mfk8eQnZl7yULJiAy8hnycvJZ8gryKfJK8mnyKvIJ8mrySfIa8jHyWvJx8jryIIJuJ58hLyBfJi8kXyIvIl8kLyZfIC8hbyfvJW8j7yNvJe8nUwE/NvC6zt8F0NOgF2SdaEAu2RrQwF2SadDAXbJp0IBdkvUhAJsgqWhAHu/OhRgt1RVIiAR4Fl/5EgEeJyvr2wB+iiULUAfhbIF6KNQtgB9FMoWoI9C2QL0izZbgD4KZQvQR6FEgGf9sRPK9/xEgBS1APtERoAthjICbDGUEWCLoYwAWwxlBNhiKCPAHrUyAmwxlBFgi6FEgGf9kSMRkPf5RS6g6BdDiQAyEUAWnYBkMcSYCIATAcFYZAKKfDGUCEgEFLmAIl8MJQISAUUuoOgXQ4kAMhFAFp2AZDHEWPQC7oCt4Dq5E7ZLtlb6wHZJp+Uu2C75lNwN2y1RI/fANvHS8FK396vDW8FuqarwVimYAHfvWsF14b1tf6na8N63v1Q6/G4wcanwu8PE1cijsHWHlYbdYPZ+ddgt1icYq8JusoIthlx7mxasj0Ku/U3b2fRRyLXHaTubPgq59jm9dfRRyLXX6a2jj0LPwdofqF+0fbPe10ch1y+ot5Y+Crl+woIJcA2OWrAKcA2Q2tCoAlyDpDY0qgDXQKn9hSrANVhqf6EKeA0uFxPQL+t9FfA6rP2HKuANz/pjJ5Tv+fp6Ey4XE/AW3FtMwNuwtrSqgHdg7TBVAe/C2mGqAt6DtUdYBVRkva8C+sPagaoCBnjWHzuhfM/X10BYC1YBg2BtalYBg2FtalYB78PaY6wCPoC1x1gFfAhrl3jcfoFKWHuOVcAQz/pjJ5Tf+faJoXBXSh0Gd2MxNBzuzmJoBNyDxdBHcE8WQx/DZfXsFxgJ92IxNMqz/sjhK2A03J5Sx8AdEDAW7oiAcXAnBIyHOyPgE7hVPQImwF0QMNGz/sjhK+AvuAGlToJbI2Ay3AYBU+C2CJgKt0PAp3CTegRMg8sQMN2z/sjhK2AG3JRSZ8LNEDALbo6A2XALBMyBWyLgM7hxPQLmwq0QMM+z/sjhuxiaT7rtbAtIt/1tIem2xy0i3fa5xaTbXvc56bbfOQHu9y0h3Xa9pWTBBCwj3YbG5aTbALmCdBskV5JuA+Uq0m2w/IJsRK4vYDXZkFxDFkyA+1zmu8COP0m3efoP0m2e/p10m6d/I93m6XXk+gLc5um1ZME2T//fBPwNay9iq3+k++8AAAAASUVORK5CYII=",i0="/smeditor/assets/frame-d599a2fe.png",s0="/smeditor/assets/parts-b37af2cf.png",C0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAMAAADCg1mMAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAt9QTFRFAAAA/////4SJAAAA/qa9hYP/pqb+zJL/3LT/g/+Dpv6m/oT+/qb+/7lv/8qR/8f//+b/rP/lzv/vwcHBzdfN/6K4pKT+27L/pP6k/qT+/8mP/+T/zP/vzNbM/pywnZ3916r/nf2d/J39/8WH/uD+xP/sydHJ/pGgk5P906D/k/2T/JT8/8B9/tj+uv/pxcvF/4ePh4f/zpb/h/+H/oj+/7tz/8z/sP/mw8PD/n19f3/9yYz/f/1//ID8/7Zp/sT+pv/jvr6+/3FxcnL+xID/cv5y/XP9/7Fd/rX+mv/fuLi4/2dnaGj+v3b/aP5o/Wn9/6xT/qj+kP/cs7Oz/VxcXl78umr/Xvxe+1/7/6ZH/Zz9hP/Yra2t/U5OT0/9s1z/T/1P/FD8/585/YP9dv/Upqam/z8/Pz//rU7/P/8/90f3/5gr+Xf5Zv/Kn5+f/y4uLy//pED9L/8v8D7w/ZEb9Wv1Vf/Al5eX/xcXFxf/li34F/8X5y/n+IkD7lfuPP+yi4uL/wAAAQH/ihr0Af8B4R/h4n8A6UPpJf+mgICA/w0NDQ3/kCX2Df8N5Cjk74UA7E7sMf+shoaG/ygoKSn/oDv8Kf8p7jru/I8V82XzT/+8lJSU/zk5OTn/qkj/Of859UP1/5Ul+HH4YP/GnJyc/UpKS0v9sVj/S/1L/Ez8/501/X39cv/SpKSk/ldXWFj+uGb/WP5Y/Vn9/6RD/pL+gP/Xq6ur/2JiZGT+vXL/ZP5k/WX9/6pP/qP+jP/bsbGx/25ucHD+w37/cP5w/XH9/7Bb/rL+mP/et7e3/Xl5eXn9x4b/ef15/Hr8/7Nj/r7+oP/hu7u7hYX/zZT/hf+F/ob+/7px/8r/rv/lwsLC/Y+dj4/90Zz/j/2P/JD8/755/tX+tv/oxMjE/5iqmZn/16j/mf+Z/pr+/8SF/93/wv/syc/J/6CzoqD+267/oP6i/qD8/8mL/+L+yP/vytTKfd22ZwAAAPV0Uk5T////AP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////90oRikAAAGVUlEQVR4nO2bd4xUVRSHz0qMMcbYe8Ne6Ci9g3TsvYO9914XCyr23qUjHelIRzrSkY50pOOwDMu6rqs573z3zQ4zJs71jzWZd5N3f/nIm9lzP2Z2303OzZH/OHK87s8JX2dZLGWSuEj2T+JCOSCJC+TAJM6Xg5I4LgcncZ4cksQxOcyz/pQRCfC6P0cOh2PBXCxHwLuCuUiOhPOCuVCOgncHc4EcDceDOV+Ogffwr8fC+bzLcfBefurxnvWnDF8BJ8CbgrlYToQ3B3ORnARvCeZCORneGswFcgq8LZjzpSy8PZjjciq8I5jz5DR4ZzDH5HTP+lOGjwC9zoBXiS5f5Ex4tejyRc6C14guX+RseK3o8kXOgdeJ/S+fC68X+1ScB28Q+xSVgzeKferKe9afdkGZ3q9XBXiRmICK8GIxAZXgJWICKsNLxQRUgZeJCagKLxcTcD68QkzABfBKMQHVPOtPu6BM79erOjxLTEANeLaYgJrwHDEBteC5YgJqw/PEBNSB54sJqAsvEBNQD14oJqC+Z/1pF5Tp/Xo1gCeJCWgITxYT0AieIiagMTxVTEATeJqYgAvh6WICmsIzxAQ0g2eKCWjuWX/aBWV2v72iBTwqWL5IS3h0sHyRVvCYYPkireGxwfJF2sDj+D1/ETyevwsXwxP4O3IJPJG/O5d61p8yfAVcBg9CwOXwYARcAQ9BwJXwUARcBQ9DwNXwcARcA49AwLXwSARc51l/yvAVcD3cCwE3wL0RcCPcBwE3wX0RcDPcDwG3wP0R0BYegIB28EAE3OpZf8rwFXAb3AkBt8OdEXAH3AUBd8JdEXAX3A0Bd8PdEXAP3AMB98I9EXCfZ/0pI9M32I+8n/yYfID8iHyQ/JB8iPyAfJh8n3yEfI98lHyXfIx8h3ycLDUBT5BvkU+SHcmnyDfJp8k3yGfI18lnyQ7kc+Rr5PPkq+QLZKkJeJF8mXyJbE/m7pPt97nPvc69zyukW5hbqFu4E+HEOFGRgH9X9j8P382QK9wKLQ4XZoUWhQu3QgtDAfaRLwgF2FciPxRgX5l4KMC+UnmhAPvKxSIBkQDP+lNGJMDjfr1KCtBHoZIC9FEoF9ZC9VGopAB9FCopQB+FSgqIiyQJyBNJEhCTUv4lGAmQSEA2C7BXJATYZighwDZDuXAHNkMJAbYZSgiwzVBCQJz3tdGRzVBCQIz39as/ZUQCMr4/EhBk1grI+s1QJICMBJBZJyDaDDFHAuBIQDBnmYAs3wxFAiIBWS4gyzdDkYBIQJYLyPrNUCSAjASQWScg2gwxZ70A19xkH8nisPnJPrJFYXOUfaQLw+YpE1cQNleZuHx5G84N5njYDWbi8sJuMRMXC7vJSk2Aa2+zdrbisP3N2tmKwvY4a2crDNvnrLusIGyvs+6yfPkEtu6yuHwKW3dZnnwGW3dZTD73rD9l+G6GvoC1oVEfhb6EtaFRH4W+grWhUR+Fvoa1v1Afhb6Btb9QH4W+hbW/UB+FOsHaX6iPQp1h7S/UR6EunvWnXVCm9+vVFW4rJqAb3E5MQHdYW1pVQA9YO0xVQE9YO0xVwHewdpiqgF6wdpiqgN6wdpiqgD6e9addUKb369UX1qZmFdAP1qZmFdAf1qZmFTAA1h5jFTAQ1h5jFfA9rD3GKmAQrD3GKmAwrD3GKmCIZ/1pF5Tp/XoNhbWtXQUMg7WtXQUMh7WtXQWMgLXLXAWMhLXLXAX8AGuXuQoYBWuXuQoYDWuXuQoY41l/2gVldr+9YizclM3QOLgZm6HxcHM2QxPgFmyGJsIt2Qz9CLdiMzQJbs1maDLchs3QFM/6U4avgKlwXQRMg+shYDpcHwEz4AYImAk3RMBPcCMEzIIbI2A23AQBczzrTxm+Av6CyyBgLlwNAfPg6giYD9dAwAK4JgIWwrUQ8DNcGwGL4DoIWOxZf8rwFbAELoeApXB5BCyDKyBgOVwRASvgSghYCVdGwC9wFQSsgqsiYLVn/SnDdzO0hixLriXdgch1pDswuZ50Byo3kO7A5UbSHcj8lXQnRDeR7gTpZrLUBGwh3ZHXraQ7EruNdEdmt5PuSO0O0h253Um6I7m/ke6McIw8lNxFlpoA97rE7wIbf5Lu8PQfpDs8/TvpDk/vJd3h6T2kOzy9m3SHp93CS+3w9P9NwN85VJDW1dBaWwAAAABJRU5ErkJggg==",u=`precision mediump float; +import{q as B,r as I,s as E,b as v,u as l,O as P,v as w,w as c,x as f,y as r,z as p,X as F,H as s,L as y,Q as D}from"./ChartManager-b82bf91a.js";import{A as x}from"./AnimatedSprite-c4817119.js";import{H as m}from"./HoldBody-3932542e.js";const U="/smeditor/assets/downBodyActive-dd1fd694.png",b="/smeditor/assets/downBodyInactive-c781a303.png",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0dOV1YU4MAAAPKSURBVHja7d1dTupQFIbh0pwJkDBA4xjEQVjGcOIATZwBnFslHC1l7b2/v3WHiUL6PimUwHI3Xc1pWS5fbz8/vU5bZn843/07nx/zVDVb7h/5sW29/7/vb99uvxyPu6+356nRbHnAldEqg7HGXzPt/rIIAuX4zQGwI1CP3wUAKwKH+N0AsCFwid8VAAsCp/jdAaAjcIs/BAAqAsf4wwCgIXCNPxQACgLn+MMBICBwjg8BQAEBa3wYAMwImONDAWBEwB4fDgATAoX4kAAYEKjEhwWAjEApPjQARARq8eEBICFQjE8BAAGBanwaACMRKMefpmn60+NUWXVAPj/mu4PsD+fN94/4yeZqXHPr+NWn415nAtSPtVe/vplbP2BGBOjfaag8ll2frBgQqH2hBe5FIDICt/jDrgIQETjGH3oZiITANX4pAMYvf+wPZ8r4lfdfegZQ+kKoQ/wmTwHKCBQ/QDqjHCh0BKqfHs5+AOP4za8Csh8AO36Xy8DsB8CN3+19gOwHyH6A7AcAjN8VAAuC7AcwRpD9AMYIsh/AGEH2AxgjyH6AwZP9AJM3AAUE2Q9gjCD7AYwRZD+AMYLsBzBGkP0AxgiyH8AYQfYDGCPIfgBjBNkPYIwg+wEKDlj2A+AdyyZngOwHyH6ALs/J2Q+Q/QDZD8D6IjD7AXDiD7sKyH4AjPhDLwOzH2B8/FIA2Q/A+T5D9gMYx2/yFJD9ADzxVwG4/v/zrggY469pt7v1w9OyXK5/9vz0Sqe8CpVK/JfjcbcKQBB4xP8RQBDox/8VgDMCh/irADgicIm/GoATAqf4dwFwQOAW/24Ayggc428CoIjANf5mAEoIKoct/kMAgoA//sMAgoA7fgkAdwTM8csAuCJgj18KwA2BQvxyAC4IVOI3AaCOQCl+MwCqCNTiNwWghkAxfnMAKghU43cBwI5AOX43AKwI1ON3BcCGwCF+dwAsCFziDwGAjsAp/jAAqAjc4g8FgIbAMf5wACgIXONDABiNYMuoxIcBwIRAKT4UAAYEavHhACAjUIwPCQARgWp8WABICJTjQwNAQKAeHx7ASAQO8SkAjEDgEp8GQE8ETvGpAPRA4BafDkBLBI7xKQG0QOAanxZAJYItoxKfGsAoBErx6QH0RqAWXwJALwSK8WUAtEagGl8KQCsEyvHlAFQjUI8vCaAKgUN8WQCPInCJLw1gKwKn+PIA7kXgFt8CwFoEjvFtAPyGwDW+FYD/Ibg1LvHtAKxB4BTfEsBPCNzi2wK4hcAxvv2cluWy9nVBJpPJZDKZjNL8A8iasRIljXPgAAAAAElFTkSuQmCC",X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0eB7cUHesAAAO/SURBVHja7dw7VhtBEIXh0WzGGWtxahZop6yFzKuREwKQBcy0uqvuqzM4Bwv6/yxN61GX7f91ff/F6+vPbWT9/vPj9M88//q7zVojt4/8u43e/tPTy+23Lu+/2LdFa+QXnhltZjDW+EfWMgAqCJTjLwfAjkA9fgkAVgQO8csAsCFwiV8KgAWBU/xyAOgI3OK3AEBF4Bi/DQAaAtf423bzrNDbmvJMoOqGsf0tbc8EstwTuEPeETaPHQHzvdiOsomsCNgfwmAAMCJQuH6BAsCEQOXiFQ4AAwKlkwskAGQESvGhASAiUIsPDwAJgWJ8CgAICFTj0wDoRKAcf9sWvBZwb8NYX2xBfGfz2X+/9LWAzzas++1dI7eP+rb22dc3e9X/TCYE6J9pmLmXpdcADAjUPtACdxGIjMAtftspABGBY/zWYyASAtf404+BLhvJdKwtPQYqfSBUIX7LQ4AyAsV3D+8oG4WOQPWt45kPYBx/+Skg8wGw45ccAzMfADd+2fMAmQ+Q+QCZDwAYvxQAC4LMBzBGkPkAxggyH8AYQeYDfFyZDyD0t2Q+gHF86IcAJQSZD2CMIPMBjBFkPoAxgswHMEaQ+QDGCDIfwBhB5gMYI8h8AGMEmQ9gjCDzATIfoC1+5gM03hNkPsDkDct8AMy9zHwAsvj0F4GZD4ATv+0UkPkAGPFbj4GZD9Aff/oxMPMB8I6amQ9gHL/lISDzAXjiHwJw5y7EEgFj/CPtLp98/3r7jZG3h6tcEwjFvxwFEAQG8b8DYI9APf4RALYIHOIfBWCHwCX+GQA2CJzinwUgj8At/ggAWQSO8UcByCFwjf8IABkEMxdb/EcBBAF5/BkAgoA4/iwA1giY488EYImAPf5sAFYIFOKvAGCBQCX+KgDSCJTirwQgiUAt/moAUggU41cAkECgGr8KADUC5fiVACgRqMevBkCFwCF+BwAKBC7xuwBAI3CK3wkAEoFb/G4AUAgc4yMAgEDgGh8FQCuCkaUSHwkADQKl+GgA4BGoxUcEAItAMT4qADgEqvGRAcAgUI6PDqAdgXp8BgBtCBziswAoR+ASnwlAGQKn+GwAliNwi88IYBkCx/isAKYjcI3PDGAagpGlEp8dQAsCpfgKAEoRqMVXAVCCQDG+EoClCFTjqwFYgkA5viKAqQjU46sCmILAIb4ygIcQuMRXBzCEwCm+A4BTCNziuwA4hMAxvhOALxG4xncDcBeB+764ATiCwGpPHAF8hcBuP1wB3EPgvBfWCK7ZhqysrKysrCy39Q9gQ/q5SfcuvQAAAABJRU5ErkJggg==",G="/smeditor/assets/leftBodyActive-75d41033.png",R="/smeditor/assets/leftBodyInactive-bbc074cd.png",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEANIA0gBQ7xAn7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI2I6Ho7PYAAANMSURBVHja7Z1bTgMxDEU7VjeAxAJR10C7CMoaEAus1B0Av6XiMY/EsX2PJT4GoTHpOZNJMhl32t3F6/n8eXt8eDrt1sTD48eiv79ebNcqluZumX9N7p7/39v7y7fj5+Nxuj3e7zrF9WKzP4xM8HsBHhXW8+RzPtgqVz4CrPiAM8IfIUzPnDaqAZmvfE8JeueyEQ2p0O17SOCRw7U/u16s1D2/JyCvXibtCCjKgC/LOX+LPfBzAZPvAZjqCQsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOD7xh74f+evLpcB/+/81XYAhRQgKnwFCQz4ta/w0AIAX1gA4AvPApTgR5/WGvDjrTN4CmrAjwXfWwIDfjz4nhIY8GPC95LAgB8XvocEBnztqaYBX3udIczTQOoDFBOA+gA5gvoA1AcY17VTH2B8TuoDBAPinYv6AIEloD5A8Hs+9QEGBvUBiq0DZB7tUx9AGD7TQOAjAPARAPgIAHwEAD4CjIRPFBEA+MICAF9YAOALCwB8YQGALyxAS/hMAZMJAHxhAYAfI/YV4fccU3jkoz6AMHzvQbEBP2Y+6gMIw/fMYcCPCd8rlwE/LnyPnJbZXm8YFVcsDfi68GcJcP/980RxAZ6Px6mFBL0XM7xX/6quNv7YKiTQkeDXFkWUwPsLHaJ8gcSw+gBIMF6CLbnmsJrmnOj1fP68/93h6cSaQOeZQWv4P13Q09wTIoFvPg/4iwRAAr98XvAXC5BJAsVYCn+VAEhQB/5qAZCgBvxNAiBBfvj/rgP8F1lWDIHfSQAkyA2/iQBIkBd+MwGQICf8zYPAiAPDpQJl3++wBX7THoCeIB/8LgKMlkDlTeMW8LsJgAQ54HcZA0QaE6yRp/UgK3q4NAwJxAVAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAggERet9Vtk0la+REgGISIAASIAASIEA5CRAACRAACRAACRBAT4LKkqRvWW8JqvcQJVrXUoL7H24BYhIwBkCC1ZFRuJLvu7V6irgVPo+DRSRgQ4iwBGwJE5aATaHCErAtXFgCXgwRloBXwwpK0HrtAQFEJOD1cGEJKBAhLEHlsnEEQRAEQWjEFz4LZYAP3C09AAAAAElFTkSuQmCC",J="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3FABOeLgAAAM3SURBVHja7d09csJADIZhW+O7pOMsaeGASZuz0HGapGUIMP7Z1Ur6XnVkMgj8PdjrxV7m6X/93j+4Xj+nPfX1/bHp/y/n29SqtvZu2X9P756v73T6efzTfP9gmTrV5XxbvTEyhd8r4FFlPZ98zYat8skHwI4NnDH8EWB69rRRbyDzJ98TQe9eNuKNVNjteyDw6DH3OgvwqAjH/Gij/q1nATYlrSgDvizP+aoWws8VWNoxAKd6ACB8ABA+AAgfAIQPAMIHAOEDgPABQPhjayH89/2r4zLCf9+/2hVAIQFEDV8BgRF+7U94aACELwyA8IXPApTCj35aa4Qfb57BE6gRfqzwvREY4ccL3xOBEX7M8L0QGOHHDd8DgRG+9qmmEb72PEOYbwNZH6AYANYHyFGsD8D6AON27awPML4n6wMEC8S7F+sDBEbA+gAJjvmsDyAcfqbnDD8PkHm0z/oAwuFzGkj4ACB8ABA+AAgfAIQPgJHhU0UAEL4wAMIXBkD4wgAIXxgA4QsDaBk+p4DJABC+MADCj1FLxfB7jik8+rE+gHD43oNiI/yY/VgfQDh8zx5G+DHD9+plhB83fI+ellmvdxgVZyyN8HXDXwXgyZ0lVHEAcwsEvSczvGf/qs42vtoDgEAEwbtDQDgE3j/oEOUHJEauDwCCwQiO9FqT1bzyuX4f/7DntnHmBIaHP+8FAALnfh7hbwUAgin+18Fbwt8DIA0Cxdoa/l4AICgS/hEAICgQ/lEAIEge/pp5gM2AIs4YEn4/ACBIHH4rACBIGn5LACBIGH6LQWC4geFWQAWudziUoXm8IPYEMcPvBWAoAqE7jZvsvc3zBYIgVvi9xgBhxgR78LQeZMlIAgEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEEQqywY08kUlkX9pPSuAdAgAAAIAgAAA5RAAAAQAAAEAQAAAPQSVkViB99AVQfU9RKVLnJtMGx+tJ/iYCs60J2AMAIKWn34OASqHA74OFkbABSHCCLgkTBgBF4UKI+CycGEE3BgijIBbwwoiUN6GigBaIuD2cGEELBAhjEB9u1EURVEUlbz+AOnsq2p4bKxbAAAAAElFTkSuQmCC",Y="/smeditor/assets/rightBodyActive-07f95372.png",Z="/smeditor/assets/rightBodyInactive-fdefc2a4.png",K="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NtUuOVwAAAOHSURBVHja7Z3RTSsxEEUdKw0gUSCiBkIRhBoQBSLRQeDr6YWQEK/j8c7MPfcvIO0sPmcd24RhU07yut9/Hb9+fHguPbm7PxSLfH7UIdfpub9RtXvq99Z+e3/58fppt9scv96WYLk2cK0D9flRF0O4uz8Mk2BJ/ZHinaYW4fQM7MiZraW+JXxTAaxvfFRNzxLMGMPqDcgatTxKMGvsqmcwM2t4kmDmg1O9P50zr+1BgtlvndOqWfxgXq5pteWdkanbwDUWhtZbNIstYsoZgC0iAiABAiABAiABAiABAiABAiABAiABAiDButlmB3Vu0Nf4UMfx/Xg6Maxq8Ec/idFngqoGHwlYAyABAiABAiDB/F3A2p/Fn7U6j7Q7qBGfsghPYpSZoGaEjwSOBFh7kYMEKwrgZa+LBCsI4O3cGwmCbgMzQfAoQYhzACQ4aAvwbxBGDURECaxCf4CFtekPkCj0B6A/AP0BvAFZoxb9AYJLQH8A52sA+gO016c/QMBr0h8g4P7X8xYx5QzAFhEBkAABkAABkAABkAABkAABdEJ/AEJ/AOJTAgQQlwABxCVAAHEJEGDCVtCzBAggLgECiEvgvj/AUgiWg3lar+dzA3+NDf0BBlzTchCt69EfAAnoD4AE9AdAgkJ/ACQo9AcIIZ51PfoDIAH9AUhf3t5fNAWYfaBiXa/n+ufgP+12m/QCAL8dvqkAXvoDzDwaHl3PGn6TAC3vIx4kAP5y+KWUcvabr/v91+nXHh+e3a6Sgd8H/6IAkSQAfj/8PwWIIAHwb4N/VQALCTIlOvwmAZAgL/xmAZAgJ/xFAiBBPvhN5wDXCt1yTqAcD/AXC4AEueB3CYAEeeB3C4AEOeAvXgS2LgwjZekitncR6BH+TTOA1Q3x5M+DP0QAJQlm/efTWfCHCaAgQUb4Q9YAnjPq4Cor/NQCAF9YAOALCwB8YQGALywA8IUFAL6wAMAXFgD4wgIAX1gA4AsLAHxhAYAvLADwhQUAvrAAwLdNuA4hwBcXAPgIAHwEAD4CDI4ifAQQh48A4vDlBVCHn1qAa3CBLzADXIIM/P/ZluQZ0a00K3wWgeLwQwowswlFdviliP06GPhBBZgtgQr8UALMkkAJfjgBrCVQgx9SACsJFOGHFWC0BKrwQwswSgJl+OEFuCTBLVFre5f2z8OBLyTACAlUG16mbxEDfEIIIYSQ3/kGeiN5xirmRdUAAAAASUVORK5CYII=",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NUwnaOYAAANgSURBVHja7Z1BUuNADEUdF3dhx1lmyxxw2HIWdnMas6JqKpCx3ZbUkv7TLiFJR/1eOurGiNvyPbZ/b3x8/FpG4s/b8+IRv1//mrzOyPuzGntk/NGxX17e7++6PbxRQQDLiaoiwZUx9wRYF+EYmVhLsY+MbyncT7FmmtwZY2aWIGIO12xAZoyVUYKouVszg4kcI5MEkR8ctyKw2q4gS2FoHWmKQI9JyvKas3Y8pVaAatFlJWAbyEowtwhEAgRAAgRAAgRAAgRAAgRAAgRAAgRAgjTR/iTwp0mfeWWP9fh7IX0S+AhO9EUdmVeCVQ0+ElADIAECIAECIEH8LiCyYq523b/X7iDNLiDa8gqXfGdYCdaO8JEgkQCzixwkmChAlr0uEkwQINu5NxIU3QZ2gpBRghLnAEjwrC3A1yRYTURFCbyC/gAT4dEfgMJw+mpBfwD6A+QCMmMs+gMUl4D+AAmLwKiikP4ARYpA+gPkDPoDNF8J2AayEswtApEAAZAAAZAAAZAAAZAAAdhSIgASIAASIAASIAASIAASIIDAVjCzBAggLgECiEuQvj/AWQiek+k9Hv0BDF7T86KMjC3nSnwFeCaGBMkFiEgICZIKEJkIEiQTYMb3GRKwDQwXz3s8+gMgAf0BCLMzAA0Bov9Aw3u8kdd/AP/WXgDgH4fvKkCW/gBqR8Nn4B8S4Mj3SAYJgH8e/v9+uN3fceWXQt5VMvDH4O89oIQEwB+Hf+RBqSUA/jX4Rx9oKkGnqA7/zIORoCH8s09AgmbwR54kL0En+IfOAfYGunJOoBwZ4I8IgASN4I8KgARN4F8RAAkawF+WZXm6+PzbfWFYTYKoIjYj/KsrgMsb4pMfB99KABkJorqHRsG3FKC9BB3hK3xyTQ6uusLvLgDwhQUAvrAAwBcWAPjCAgBfWADgCwsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOALCwB8xyjXIQT44gIAHwGAjwDARwDjUISPAOLwEUAcvrwA6vBbC7AHF/gCK8AjyMCvlYDbfzFTh08RKA6/pACR/Qe6w6+UTHh3MgX41RIKk0AFfsWk3CVQgl81MTcJ1OBXTs5cAkX41RM0k0AVfockL0ugDL9LohtzQrIb80HCG3NB0hvzQBAEQRAEsR+fBPrG1xa4jMQAAAAASUVORK5CYII=",k="data:image/png;base64,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",V="/smeditor/assets/upBodyInactive-87a7969e.png",z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5IlF3wK8AAAPCSURBVHja7Z1bbsIwFETNKBtAYoFV11C6iNI1VF0gEjug/YUoRbWxfR8zV+oHH9TG58QhUe6wK6v6PJ1+bl+/vryX2tofrtXvuZxRelXL+BHm2DL+1/fH3eu343F3+xq9Fykr/N7/u+Uzj/hsEHxuCcAM/3KGOQTr8VGMytP5NKIEoQXw+GWKVQIIPrcEEHxuCTBr4pGuob1L0HMtMeMIj3gDxasEvXeIxfM2b32peTmjesz94dptDWacDuyuP4LcZ/Byx45aAOubTJklgOBzSwDB55YAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwBm+PvDNeWDniEE8PQMIbMEYIfPLgEEn1sCCD63BBB8bgkg+NwSQPC5JYDgc0sAweeWAILPLYHyAcglUD4AuQQQfG4JaPMBoksQWoDo8DNJAMHnlgCCzy0BTT5AJgmUD+C0lA9Q/OUDWEgQKR9gKUFqxtHVa4yeEqS8DPR6fmU5VYUSYPY3bDYJwAz/r74AJgnADP/RWCwSgB0+uwQQfG4JIPjcEkDwuSVYosKvAdLaF7Ae49GYlomioXcAj/Bb3qt8AIfwZ5fyAYjhR5UAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwDB55ZgiQb/6/vj7vXry7sp0Jb5WP8a2dAdQEd+rJ0Ags8tAQSfW4JQ+QDr863Hapmj8gGSwI8oAQSfWwIwwr+csfnHKIHrfIBR8Gcu/ggJKPIBthbu7Xjcjd6Bnl3crTn2lKC3pBhxhD27tc6CP6o3sKcEo09T7i7EZ8J/dF3tRQLz7wAzJ20BP7ME/xkLXiY9Av5WzfrNoCjrCQ+T9gA/kwQ16wnrSXuCn0GC2vWE5aQ9wo8sQct6wmrSnuFHlKB1PWEx6VnwvZan9cTsSbPD97aeS+2kP0+nn57bFyN8T+sJS2DM8L2sJ6wmLfg+1hMWkxZ8P+u56CjOeToYvgOocpQEkAAqCaCSACoJoJIAKgmgkgAqCaCSACoJoJIA0euZ5g6GBBOKHaAFJEt8Dc0poAYoU3YR1XeA2T8dKwGCScCYWrYUwlI8nS4DVVkEsAxdiJhetq6QD3WumylKmR8anaXDKexTvZYSZGpvC/1Yt4UE2Xobwz/XP1OCjI2tKRo7ZkiQtas5TWfPSAkyt7Snau0aIUH2PIN0vX09JWAIs0jZ3NlDApYkk7Tdvc9IwBRjk7q9u0UCtgyj9P39WxLUVPYMBIqAh1YJGAIwaBI+aiVgST+hinj5rwSKvlGpVCqVSpW9fgGbIppuMBFz1QAAAABJRU5ErkJggg==",M="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5JlYaBLYAAAO8SURBVHja7Z1LUt1ADEXtW94LM9aSKSwQpllLZqzmZZQq6oUX4nZ/JN2jGVDgRud0t21aYt/+jtvnD379+rGdjbf3p9Pf8/rysfWKlutnGGPL9Z+ff95/av/8gXonqSr83j+75Xce8bsJ+N4SyBn+68vHcgirr69tUUTaTzNKkFqAiDdTrhII+N4SCPjeEmjWwDM9Q0eXoGcuNWOGZ3yBElWC3ivE/sXnLr8JjPQMfjVhqx9vr8b0N4GV4EdYCUo+BmabhZUlEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lkDP8t/enkgc9UwgQ6QyhswRyh+8ugYDvLYGA7y2BgO8tgYDvLYGA7y2BgO8tgYDvLYGA7y0B/QHMJaA/gLkEAr63BLb9AbJLkFqA7PArSSDge0sg4HtLYNMfoJIE9AcIGvQHSJTgLFvd1fiuP8CxJYkZs6vXNd7en0KeXA71HiDi/uqyVaUSYPYdtpsEcob/qC7ASQI5w//XtVwkkDt8dwkEfG8JBHxvCQR8bwlCvAkcfZikNeGjrzHjZVH4TqFR4Z/9XvoDBIQ/O+gPYAw/qwQCvrcEAr63BAK+twQCvrcEAr63BAK+twQCvrcEAr63BEc2+PfvtlefWm4Zz+vLx+kcjTpoKma+90og4HtLIOB7S5CqP8AXf9sOFy1jpD9AEfgZJRDwvSU4HOGPrg38PPazj6ktj4ghVoARNe0z4Y+agSNWAov+AA8St49egTokdx8pQW9Jj5kzLBr8P0vt/dc6LMP7dne6unU7KPkUEAn+o70/ykowOr6tC9i2ee/b/xP+5bqFR7O701a1Z8qnopg7YuafvdMfdPcdOp+KMOgI8CtJcCafWj3oSPArSHA2n1o56IjwM0vQkk+tGnRk+BklaM2nVgx6FvzAESafmj1o4MfK59Ew6Fvn5csRfph8ajEwZ/gh8qmFgwZ+gHxq0aCBHySfB7O47HYwfAUgCgQCIACBAAQCEAhAIACBAAQCEAhAIACBAAQCZI8rFT4OHUwsVoAWkC7ta2y2gDNAnXoXWd0DzP7XsQiQTALHrmXHZhi0p+MxkKgiwMqmCxm7l91H1kOdy5oufAN/RwADCSqVt2U/1j1dgmq1jRXO9U+ToGJha5XCjuESVK1qrlTZM0yCyiXt1Uq7uktQvZ9Bxdq+bhI4NLOoWtx5WQKXTiaVq3ubJXBqY1O9vPu0BG49jBzq+2/kyFuAKxKUz49Th48bufEW4IwEtL4hCIIgCKJ0/AYcP+o66BZ87AAAAABJRU5ErkJggg==",j="/smeditor/assets/upleftBodyActive-bc79d60f.png",q="/smeditor/assets/upleftBodyInactive-f60085c6.png",W="data:image/png;base64,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",_="data:image/png;base64,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",$="/smeditor/assets/uprightBodyActive-3d912f52.png",A0="/smeditor/assets/uprightBodyInactive-01c6c977.png",n0="data:image/png;base64,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",t0="data:image/png;base64,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",o0="/smeditor/assets/bodyActive-889762ad.png",g0="/smeditor/assets/bodyInactive-5d99335a.png",a0="data:image/png;base64,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",B0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+AMCwUPDq6KKAEAAAdRSURBVHja7Z1daBxVFIDvhIsKBQURERHp06Q/pk3TxpiYGhNb05/YGFptTSV2ffBBFIoUUVFEFBUpUlB88MGtwcZWLTG1bRIbE2NjY0yb5sf+ZIQ+iIiICAoFlbLrS/fBnc3szJxz79w75xzIS0juOWfO/b6Z3fxcR6iLfPEnpmcfBC148ONKcFE7HplPPEe5qF7xealPOyqGVCE4SIfD9NO2gNS10/IG7PZ8SnOZZgBf72eB9B9CIHJ7RCKTyFkcqzRYQDL9tC3gqO75DJD+TxFIfCgmiUnmLsRqxRaQTD9tCzgqe50E0n8YgcCtQAJNqKFWoQWk2t2fN4B+rkGHAXwdTsy1gxbs7VkCLqqj8yJKcybUUlfVp2R+Ut2up33vt+VZwFHR2/jcFtCCfT1LwUW1d14InSfK16quKSjqq46gz1CJAfKOAcQ55tVrwnXBNoCP/rEfHgAtePTAMnBTbTvPR84T53tU1RYUjXd8gTpHib/LDXjqjlGDrrpNuD5YBvB1MnquDVRM/0fLwQ1tfPRc7DyQ78WuMSialh9Fm6Vk+mlbwMGif+TCJlAhg91V4GZau+bAeTDWwKo1KJqXHkeZJ5oBcgbs5pxFfeQsNoCP/qGLG0FFDH24AtzIusdm0fJgrgXNE/j9S/rBM0UxQNre9ctbWLMuA/hq/nIeRv/wfjhJLbtm0fOoWDNunqC4vxJmAQnfxen8aZuuvpK+fg6E/v75DaDko/tXghto2jWjLI/KtaPmCXxfoXIg9mxBBrDtPX9T+0vyOjpx6T/mweg/mYWTszYzozyPjhxh8wTFZjeeBWIbIC2v+6m/L+DEof8IkP5TCMQ0hCAGI4/OXA1AC2yJYYFYBuC/8knP+wJO1Jp6gfRPIJBSF4KUCST6deesA1qgI6IFJNNP2wJOlFoOA+mfRCCkNgQhk8j0685dC7TA1ggWiGQAKk/+lF4ROGHp/wRIv66YUkR/IWqAdOqKh0NaILQBbPl79zQ+f+g2gK/Hg5bQP62Y/kJUW2KBHSEsIJl+2hZwyvV2wBL65zTRX4gqSyyws4wFJNNP2wJOUE/dltB/XjP9hVhmiQW6AiwgmX7aFnCS6ieLZJf5hOgvRCWSBTKlKVU+e5nUhculxAK295HYv4rNI3z8mDD94moNGL0kFWwA4r1UFN0TVH2UvGiQj0sI9C/OzIjFCPfwS9mV4H4C7tNKZ0LaADm2gNDxC8m+W9y7wFcAPyPQf1sR+SrWjBpPuQPaZySZftoWcHTTv89rBS34a7YaXNQtmWnta4eN3e6g1jlJpp+2BRyd9O8F0v87AqE3lSFUR45ysUejBaRe8vIG0J8n0WfSBvBdgTe89aAF/8zWgIu6ITNlXK6F4nn3hJZ5SX3kpfveb+uzgJYzg1711oEWvJxdDS5qUeaM8TmL4yV3SPnMpB4aaNz7bXwWUH5m0MvefaAF/8muARd1bea0dbkL8Yr7ldK5aTgziPaJHXnDLaD0zKAXvRbQgleytfAdnpm0vobX3GFls+Mzg4hbQNmZQS94zbAHqOyd4KIqMt/jPMwZUMvr7oiS+fGZQQRrwTaAr7fnvHthK2br4FVlJnCvlAE1vel+jT5DaeJudwwkzkmpBdDPDHoWSH8FAmk5bPoNqu0tZAtI0+hP8/3WxNpQzwzaA6RfIhB2RRH9JtW4F9ECkumnXSPamUHPAOm/BoGsfxXTb1KtbyNZQDL9tGtFOTNoN5D+6xCI+lsT/SbVvA/BAigGoP7/A22uGXxm0NNA+hchkHRZM/0m1f4O0AIIZwbx/dTm2kFnBj0JpP96BIL+Soh+k3p4D2ABkAH43m9/D7HPDHoCSP+NCOT8kTD9JvXyfkwL8JlBxC0Q68ygx4H034xAzG+G0G9STx/EsIBk+mlbIPKZQV1A+m9FIOUXw+g3qbfuiBaQTD9tC0Q6M6gTSP/tCIT8ZCj9JvXYE8ECfGYQcQuEPjNoO/Q3fTm0xqGQFpBMHu0IdWbQNqbfyvgshAUk088GCKS/w2viq2Rx9LqjgXPnM4PYAAvPup3pT0X0BVigzJlBzD9pA5gebd5aI+o46p60dvZWbwAhhNic8CY4Zufw07MBhBBik9eYSN7j7pj19k/FBhBCiA2aN8GA3cMvuQFsipKbtdW7W0vyQffbMM9U1j0EpmITrPcalCY94Z5K1bWUFm8Ap9QmyDNIZDZAyU2QwHsXju0XMA3xv6m3ePVKkgy746m7flKkMPj9S3oG8M292bsLdfER97tUXjuZ1p3NFqBnAN/cm5AsMJpS+oVI8Ph4DjaAFgvcA7TANymmP9XPAPwsQNcAvrk3xrTAWMrpJ2EAtgBNA/jmXh/RAuME6CdjALYATQP45l4X0gITROgnZQAh+C+cKBrAZ4E1ZSxwmhD95AzAzwI0DeCbe80CFpgiRr8Q/LMANgBV+68qssBZgvSzAThIGcBngeqrFpgmSj8bgIOcAcK8EiR1TdgAbACSkefrwQbgEEL8Bx5t+pf/tVPkAAAAAElFTkSuQmCC",r0="/smeditor/assets/parts-9a3f637b.png",e0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAMAAADCg1mMAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAq9QTFRFAAAA/////4SJAAAA/qa9hYP/pqb+zJL/3LT/g/+Dpv6m/oT+/qb+/7lv/8qRrP/lzv/vwcHBzdfN/6K4pKT+27L/pP6k/qT+/8mPzP/vzNbM/pywnZ3916r/nf2d/J39/8WHxP/sydHJ/pGgk5P906D/k/2T/JT8/8B9uv/pxcvF/4ePh4f/zpb/h/+H/oj+/7tzsP/mw8PD/n19f3/9yYz/f/1//ID8/7Zppv/jvr6+/3FxcnL+xID/cv5y/XP9/7Fdmv/fuLi4/2dnaGj+v3b/aP5o/Wn9/6xTkP/cs7Oz/VxcXl78umr/Xvxe+1/7/6ZH/vr+hP/Yra2t/U5OT0/9s1z/T/1P/FD8/585/O78dv/Upqam/z8/Pz//rU7/P/8/90f3/5gr++L7Zv/Kn5+f/y4uLy//pED9L/8v8D7w/ZEb99T3Vf/Al5eX/xcXFxf/li34F/8X5y/n+IkD7sHuPP+yi4uL/wAAAQH/ihr0Af8B4R/h4n8A6K/oJf+mgICA/w0NDQ3/kCX2Df8N5Cjk74UA67nrMf+shoaG/ygoKSn/oDv8Kf8p7jru/I8V9c/1T/+8lJSU/zk5OTn/qkj/Of859UP1/5Ul+tz6YP/GnJyc/UpKS0v9sVj/S/1L/Ez8/501/Or8cv/SpKSk/ldXWFj+uGb/WP5Y/Vn9/6RD/vb+gP/Xq6ur/2JiZGT+vXL/ZP5k/WX9/6pPjP/bsbGx/25ucHD+w37/cP5w/XH9/7BbmP/et7e3/Xl5eXn9x4b/ef15/Hr8/7NjoP/hu7u7hYX/zZT/hf+F/ob+/7pxrv/lwsLC/Y+dj4/90Zz/j/2P/JD8/755tv/oxMjE/5iqmZn/16j/mf+Z/pr+/8SFwv/syc/J/6CzoqD+267/oP6i/qD8/8mLyP/vytTK2fi5aQAAAOV0Uk5T////AP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xt8+5oAAAYhSURBVHic7Zt3bBxFFIefHSGEEL33hN5DTyWQgtMIaYReHHrvvYbeO4RO6DgNcBqkk0o66aST0EQXchxzHMbA2/fN3l12LXHDH4d0u9LNT59uz37zefe8I70pkf94lHidXxJ+zrJOGuRwrWyQw2nZMIdTslEO18jG8NpgLP3nJ9qxaTBWyyY551fJZp71R45EgNf5JbI5XBWMdbIFbBOolS3h6mBMy1bwumBMydZwDeM28PfBGBWwLZzit27nWX/k8BWwPfxDMNbJDvCPwVgrO8I/BWNadoJ/DsaU7Az/Eow1sgu8JhijAnaFfw3GKtnNs/7I4SNAXw3hL0WCYhvBX4lOX2R3+GvR6YvsAX8j9lfcE/5W7CrYC14qOn3JEaBX0d7wd2JX3T6e9cdOKN/z9bUvvEys2P3g5WIC9odXiAk4AF4pJuBAeJWYgIPgeRIv4GB4tZiAxp71x04o3/P1dQg8X6zYQ+EFYgIOgxeKCTgcXiQm4Ah4sZiAI+HpEi/gKHiJmIAmnvXHTijf8/XVFJ4hVmwzeKaYgObwLDEBLeDZYgJawnPEBBwNT5B4Aa3guWICjvGsP3ZC+Z1vnzgWnkipreFJwfRF2sCTg+mLtIWn8D3eDp7K/4Hj4JHB9LMF2P+RMnga/3fae9YfOXwFdIBHUWpHeDQCOsFjENAZHouA4+FxCOgCVyLghPB9E9AVHo+Abp71Rw5fAd3hSgT0gIcgoCc8FAEnwsMQ0AsejoCT4AoEnBy+bwJOgUcg4FTP+iOHr4DT4AoEnA73R8AZ8AAEnAkPRMBZ8CAEnA33Q0B5+L4J6A0PRsA5nvVHjnx/QCl5LvkqeR75Cnk++TJ5AfkSeSH5InkR+QJ5Mfk8eQnZl7yULJiAy8hnycvJZ8gryKfJK8mnyKvIJ8mrySfIa8jHyWvJx8jryIIJuJ58hLyBfJi8kXyIvIl8kLyZfIC8hbyfvJW8j7yNvJe8nUwE/NvC6zt8F0NOgF2SdaEAu2RrQwF2SadDAXbJp0IBdkvUhAJsgqWhAHu/OhRgt1RVIiAR4Fl/5EgEeJyvr2wB+iiULUAfhbIF6KNQtgB9FMoWoI9C2QL0izZbgD4KZQvQR6FEgGf9sRPK9/xEgBS1APtERoAthjICbDGUEWCLoYwAWwxlBNhiKCPAHrUyAmwxlBFgi6FEgGf9kSMRkPf5RS6g6BdDiQAyEUAWnYBkMcSYCIATAcFYZAKKfDGUCEgEFLmAIl8MJQISAUUuoOgXQ4kAMhFAFp2AZDHEWPQC7oCt4Dq5E7ZLtlb6wHZJp+Uu2C75lNwN2y1RI/fANvHS8FK396vDW8FuqarwVimYAHfvWsF14b1tf6na8N63v1Q6/G4wcanwu8PE1cijsHWHlYbdYPZ+ddgt1icYq8JusoIthlx7mxasj0Ku/U3b2fRRyLXHaTubPgq59jm9dfRRyLXX6a2jj0LPwdofqF+0fbPe10ch1y+ot5Y+Crl+woIJcA2OWrAKcA2Q2tCoAlyDpDY0qgDXQKn9hSrANVhqf6EKeA0uFxPQL+t9FfA6rP2HKuANz/pjJ5Tv+fp6Ey4XE/AW3FtMwNuwtrSqgHdg7TBVAe/C2mGqAt6DtUdYBVRkva8C+sPagaoCBnjWHzuhfM/X10BYC1YBg2BtalYBg2FtalYB78PaY6wCPoC1x1gFfAhrl3jcfoFKWHuOVcAQz/pjJ5Tf+faJoXBXSh0Gd2MxNBzuzmJoBNyDxdBHcE8WQx/DZfXsFxgJ92IxNMqz/sjhK2A03J5Sx8AdEDAW7oiAcXAnBIyHOyPgE7hVPQImwF0QMNGz/sjhK+AvuAGlToJbI2Ay3AYBU+C2CJgKt0PAp3CTegRMg8sQMN2z/sjhK2AG3JRSZ8LNEDALbo6A2XALBMyBWyLgM7hxPQLmwq0QMM+z/sjhuxiaT7rtbAtIt/1tIem2xy0i3fa5xaTbXvc56bbfOQHu9y0h3Xa9pWTBBCwj3YbG5aTbALmCdBskV5JuA+Uq0m2w/IJsRK4vYDXZkFxDFkyA+1zmu8COP0m3efoP0m2e/p10m6d/I93m6XXk+gLc5um1ZME2T//fBPwNay9iq3+k++8AAAAASUVORK5CYII=",i0="/smeditor/assets/frame-d599a2fe.png",s0="/smeditor/assets/parts-b37af2cf.png",C0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAMAAADCg1mMAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAt9QTFRFAAAA/////4SJAAAA/qa9hYP/pqb+zJL/3LT/g/+Dpv6m/oT+/qb+/7lv/8qR/8f//+b/rP/lzv/vwcHBzdfN/6K4pKT+27L/pP6k/qT+/8mP/+T/zP/vzNbM/pywnZ3916r/nf2d/J39/8WH/uD+xP/sydHJ/pGgk5P906D/k/2T/JT8/8B9/tj+uv/pxcvF/4ePh4f/zpb/h/+H/oj+/7tz/8z/sP/mw8PD/n19f3/9yYz/f/1//ID8/7Zp/sT+pv/jvr6+/3FxcnL+xID/cv5y/XP9/7Fd/rX+mv/fuLi4/2dnaGj+v3b/aP5o/Wn9/6xT/qj+kP/cs7Oz/VxcXl78umr/Xvxe+1/7/6ZH/Zz9hP/Yra2t/U5OT0/9s1z/T/1P/FD8/585/YP9dv/Upqam/z8/Pz//rU7/P/8/90f3/5gr+Xf5Zv/Kn5+f/y4uLy//pED9L/8v8D7w/ZEb9Wv1Vf/Al5eX/xcXFxf/li34F/8X5y/n+IkD7lfuPP+yi4uL/wAAAQH/ihr0Af8B4R/h4n8A6UPpJf+mgICA/w0NDQ3/kCX2Df8N5Cjk74UA7E7sMf+shoaG/ygoKSn/oDv8Kf8p7jru/I8V82XzT/+8lJSU/zk5OTn/qkj/Of859UP1/5Ul+HH4YP/GnJyc/UpKS0v9sVj/S/1L/Ez8/501/X39cv/SpKSk/ldXWFj+uGb/WP5Y/Vn9/6RD/pL+gP/Xq6ur/2JiZGT+vXL/ZP5k/WX9/6pP/qP+jP/bsbGx/25ucHD+w37/cP5w/XH9/7Bb/rL+mP/et7e3/Xl5eXn9x4b/ef15/Hr8/7Nj/r7+oP/hu7u7hYX/zZT/hf+F/ob+/7px/8r/rv/lwsLC/Y+dj4/90Zz/j/2P/JD8/755/tX+tv/oxMjE/5iqmZn/16j/mf+Z/pr+/8SF/93/wv/syc/J/6CzoqD+267/oP6i/qD8/8mL/+L+yP/vytTKfd22ZwAAAPV0Uk5T////AP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////90oRikAAAGVUlEQVR4nO2bd4xUVRSHz0qMMcbYe8Ne6Ci9g3TsvYO9914XCyr23qUjHelIRzrSkY50pOOwDMu6rqs573z3zQ4zJs71jzWZd5N3f/nIm9lzP2Z2303OzZH/OHK87s8JX2dZLGWSuEj2T+JCOSCJC+TAJM6Xg5I4LgcncZ4cksQxOcyz/pQRCfC6P0cOh2PBXCxHwLuCuUiOhPOCuVCOgncHc4EcDceDOV+Ogffwr8fC+bzLcfBefurxnvWnDF8BJ8CbgrlYToQ3B3ORnARvCeZCORneGswFcgq8LZjzpSy8PZjjciq8I5jz5DR4ZzDH5HTP+lOGjwC9zoBXiS5f5Ex4tejyRc6C14guX+RseK3o8kXOgdeJ/S+fC68X+1ScB28Q+xSVgzeKferKe9afdkGZ3q9XBXiRmICK8GIxAZXgJWICKsNLxQRUgZeJCagKLxcTcD68QkzABfBKMQHVPOtPu6BM79erOjxLTEANeLaYgJrwHDEBteC5YgJqw/PEBNSB54sJqAsvEBNQD14oJqC+Z/1pF5Tp/Xo1gCeJCWgITxYT0AieIiagMTxVTEATeJqYgAvh6WICmsIzxAQ0g2eKCWjuWX/aBWV2v72iBTwqWL5IS3h0sHyRVvCYYPkireGxwfJF2sDj+D1/ETyevwsXwxP4O3IJPJG/O5d61p8yfAVcBg9CwOXwYARcAQ9BwJXwUARcBQ9DwNXwcARcA49AwLXwSARc51l/yvAVcD3cCwE3wL0RcCPcBwE3wX0RcDPcDwG3wP0R0BYegIB28EAE3OpZf8rwFXAb3AkBt8OdEXAH3AUBd8JdEXAX3A0Bd8PdEXAP3AMB98I9EXCfZ/0pI9M32I+8n/yYfID8iHyQ/JB8iPyAfJh8n3yEfI98lHyXfIx8h3ycLDUBT5BvkU+SHcmnyDfJp8k3yGfI18lnyQ7kc+Rr5PPkq+QLZKkJeJF8mXyJbE/m7pPt97nPvc69zyukW5hbqFu4E+HEOFGRgH9X9j8P382QK9wKLQ4XZoUWhQu3QgtDAfaRLwgF2FciPxRgX5l4KMC+UnmhAPvKxSIBkQDP+lNGJMDjfr1KCtBHoZIC9FEoF9ZC9VGopAB9FCopQB+FSgqIiyQJyBNJEhCTUv4lGAmQSEA2C7BXJATYZighwDZDuXAHNkMJAbYZSgiwzVBCQJz3tdGRzVBCQIz39as/ZUQCMr4/EhBk1grI+s1QJICMBJBZJyDaDDFHAuBIQDBnmYAs3wxFAiIBWS4gyzdDkYBIQJYLyPrNUCSAjASQWScg2gwxZ70A19xkH8nisPnJPrJFYXOUfaQLw+YpE1cQNleZuHx5G84N5njYDWbi8sJuMRMXC7vJSk2Aa2+zdrbisP3N2tmKwvY4a2crDNvnrLusIGyvs+6yfPkEtu6yuHwKW3dZnnwGW3dZTD73rD9l+G6GvoC1oVEfhb6EtaFRH4W+grWhUR+Fvoa1v1Afhb6Btb9QH4W+hbW/UB+FOsHaX6iPQp1h7S/UR6EunvWnXVCm9+vVFW4rJqAb3E5MQHdYW1pVQA9YO0xVQE9YO0xVwHewdpiqgF6wdpiqgN6wdpiqgD6e9addUKb369UX1qZmFdAP1qZmFdAf1qZmFTAA1h5jFTAQ1h5jFfA9rD3GKmAQrD3GKmAwrD3GKmCIZ/1pF5Tp/XoNhbWtXQUMg7WtXQUMh7WtXQWMgLXLXAWMhLXLXAX8AGuXuQoYBWuXuQoYDWuXuQoY41l/2gVldr+9YizclM3QOLgZm6HxcHM2QxPgFmyGJsIt2Qz9CLdiMzQJbs1maDLchs3QFM/6U4avgKlwXQRMg+shYDpcHwEz4AYImAk3RMBPcCMEzIIbI2A23AQBczzrTxm+Av6CyyBgLlwNAfPg6giYD9dAwAK4JgIWwrUQ8DNcGwGL4DoIWOxZf8rwFbAELoeApXB5BCyDKyBgOVwRASvgSghYCVdGwC9wFQSsgqsiYLVn/SnDdzO0hixLriXdgch1pDswuZ50Byo3kO7A5UbSHcj8lXQnRDeR7gTpZrLUBGwh3ZHXraQ7EruNdEdmt5PuSO0O0h253Um6I7m/ke6McIw8lNxFlpoA97rE7wIbf5Lu8PQfpDs8/TvpDk/vJd3h6T2kOzy9m3SHp93CS+3w9P9NwN85VJDW1dBaWwAAAABJRU5ErkJggg==",u=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-99787346.js b/Noteskin-10f0d494.js similarity index 99% rename from Noteskin-99787346.js rename to Noteskin-10f0d494.js index e0a66875..98f193da 100644 --- a/Noteskin-99787346.js +++ b/Noteskin-10f0d494.js @@ -1,4 +1,4 @@ -import{q as o,r as v,s as p,b as C,u as c,O as l,v as m,w as f,x as h,y as i,z as G,H as B,J as F,L as H,P as U,Q as E,V as u}from"./ChartManager-db54e716.js";import{H as D}from"./HoldBody-9276f45c.js";const Y="/smeditor/assets/parts-0c8fa692.png",b="/smeditor/assets/frame-d599a2fe.png",x="/smeditor/assets/parts-b37af2cf.png",J="/smeditor/assets/parts-9668caec.png",T=`precision mediump float; +import{q as o,r as v,s as p,b as C,u as c,O as l,v as m,w as f,x as h,y as i,z as G,H as B,J as F,L as H,P as U,Q as E,V as u}from"./ChartManager-b82bf91a.js";import{H as D}from"./HoldBody-3932542e.js";const Y="/smeditor/assets/parts-0c8fa692.png",b="/smeditor/assets/frame-d599a2fe.png",x="/smeditor/assets/parts-b37af2cf.png",J="/smeditor/assets/parts-9668caec.png",T=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-64e950b9.js b/Noteskin-13265614.js similarity index 98% rename from Noteskin-64e950b9.js rename to Noteskin-13265614.js index 47850115..614e6bff 100644 --- a/Noteskin-64e950b9.js +++ b/Noteskin-13265614.js @@ -1 +1 @@ -import{q as o,b as r,X as i,y as g,L as c,H as l,Q as s}from"./ChartManager-db54e716.js";import{A as B}from"./AnimatedSprite-ffeea718.js";import{H as h}from"./HoldBody-9276f45c.js";const D="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABACAYAAADS1n9/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAOLSURBVHhe7ZvLitRAGEY7KuMFbyiiggsviCheVuozCF72vogrV658EffqwmdQV/aAOsioC0FFFG/gBZ32O6FqiLEnJN0hxNR34JB0VZLOn6n6U6nOjIwxxhhjjDHGGGOMMcYYY4wxxhhjjDEDIgvL0WQyWV1PgSzLJmE1J9X486AV/DotFuLnBCD4n7oIK/mHhOPPQvDb5CG5UQ79IhD8D/lCfqFAJBs/DWCzVo7JS5J1GOpFyNOe+CbvyqeSDkD8F2Vq8S/RALZo5ZS8It/KoabDPO1J0v5eeVuO5Xp5Ul6WqcW/GBvAackFeCdpDIcl6XBIkPaey0W5R96Rj2SxAaQW/7jYAMgAH+UFyUWI6RDifSOmkL5D7y3fz0l7BH9P7pT0gGIDSDH+fxrAp7A8IzdJDkDKYLC0LD/Lvl8Eznm7PCIZ3JHSOefvkj84ge8Iy3IDWCv+r/K95Bj/Q/yc+265VVbFX9kAYg9gx8fyVljyuc8Q/Al5NSz5DPSAJg2gGP9r+UrSCH7LPkM8/PEPyP2yKv5aDYAdH8ibYcnnPsN5n5PXwrIYxywNgP1eyiX5Rv6SfWaD3Cd5sjkoq+Ifkx7qQBqkJ3CQeeQYVSk0pqpp+zaRY3DObcF50fP5489jnezR1vfUulXVbQB/wTRiU9lNck8+Ls/K8yUpo45ttMv041Sp/foM8fN4uUvSQ0nPRSmjrtNH0JkaQFN0m4nBMzDj3kx6vl6SMurYZiHsMyS41ZB6ecQ8KmnsRSmjjm3YthM6aQABvovezcCMe3M5A1BGXRy5DxE6AfdkBmjcn4tSRh3bdMZQL7SpSZcNIM4n8CjJ08T9kpRRxzZtDuD6BFOxDFJ5pOTJoihl1LFNZ3TSAMIAjcCYTGI+gUfKGyUpo45t+Kmy74O6pjAy5zGT6dhn8klJyqhjmzpPC60wUwNggNZUdpP0boJ9KMsZgDLq2Ea7TD9Oldqvz8RO8EEyn8DkUlHKqGObzhp/3QbAdswoMUiZR45R9Yeirq3vaTO7cV6MzJlkmcc6o/u2vqdWh6DneCrYU8H+MUhWxZ/Mj0H+OTjhn4P9QkjCL4QQND3Ar4SlFX/+Shipzi+FJvxSKBeAwZJfC08w/jzY0AiGmPbWIk+Hmf8xZGU1YF2EVILPKU81px6/McYYY4wxxhhjjDHGGGOMMcaYQcEbQWHVpAhvwpiEcQNImtHoDycKQp3RP5gyAAAAAElFTkSuQmCC",d="/smeditor/assets/mine-590d445e.png",C=o.from(D),m=o.from(d);class f extends r{hold=new B(i(C,2,1,64,64)[0]);anims=new Set;constructor(e,A){super(),e.on(this,"holdon",n=>{A==n.columnNumber&&(this.hold.visible=!0)}),e.on(this,"holdoff",n=>{A==n.columnNumber&&(this.hold.visible=!1)}),e.on(this,"rollon",n=>{A==n.columnNumber&&(this.hold.visible=!0)}),e.on(this,"rolloff",n=>{A==n.columnNumber&&(this.hold.visible=!1)}),e.on(this,"hitmine",n=>{if(A==n.columnNumber){const a=new g(m);a.alpha=0,a.anchor.set(.5),a.blendMode=c.ADD,this.addChild(a),l.animate(a,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>a.destroy())}}),e.onUpdate(this,()=>{this.hold.alpha=Math.sin(Date.now()/1e3*Math.PI*2*20)*.1+1}),this.hold.visible=!1,this.hold.anchor.set(.5),this.addChild(this.hold)}}const w="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACACAMAAACMX59YAAAAIVBMVEUAAAD///+6urq4uLizs7OoqKinp6ecnJyVlZWUlJSIiIh18TD6AAAAAXRSTlMAQObYZgAAAKhJREFUeNrt2AMCA0EQRNFRVXD/A8fmWv/F6vTuCOGj+CBUMGgAAMDw4p4UKpHiXpsB3HsGfg7g1/+QfL68furfGUiWrnc1MogPfmZgVQsgtZ2Bqmbg1wwq8XA1sf1DAACM3+v8oILv84Pxr97ZPwAAxL2UQyUlNVwzyQ2XfW5//0DV5gevAfx9ftDH8n/wAJUPYeYVqf39AwAA+wfrtVbbzf52fAyf7ADSzwa2IX7vawAAAABJRU5ErkJggg==",E="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACAAgMAAADG74f5AAAACVBMVEUAAAAAAACoqKjq2/gjAAAAAXRSTlMAQObYZgAAACRJREFUeNpjGAWDAjBGNSA4TEsdhrfAKBgFo2C0/BgtP0Y6AACvVTE5zX7vswAAAABJRU5ErkJggg==",P="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAIACAMAAAAFcJqpAAAAflBMVEUAAAD///8AAAAAQP8A/wAA//8BAQECAgIDAwMEBAQFAAAFBQUGBgYHBwcICAgJAAAJCQkKCgoLCwsODg5AQEBAUIBAgEBAgIB/Pz+APz+AQECAQHCAaUCAgECCPj6EPT2oqKj5AAD7AQH7AgL8AQH+AAD/AL//pAD//wD///82s5ztAAAAAnRSTlMAAHaTzTgAAAHgSURBVHja7djZTgIxFIBh1wPIIjhu4IJsLu//gsapTUCpctomPZP5v0uif5ouc3GOjgAAOX0kcIETZzIej0bD4WDQ7/d63U5H5GTLhXPpdN2PPrDZtnA2B9gfUFAF1l+Wy9UqHJjVnp3pl9ke7sc/AofZDVR/B+7/DSSvwAfmP//M34EDA7/+XxuYlQtI6iZKrlPIEthzfetbPf2+4vN5OFBbLutXs454jYvk57yIDzj1t+r7y3Wx9TET6XS63V6/PxgMh6PReDyZXF3tfNJSP6oAAAAA84PQ/OA0krnAjULmQFV8BcGAvwMtCEjqJordY1QGGv2cmR8AAAAAVucHZ5HMBW4VMgeq4isIBvwdaEFAUjdR7B6jMtDo58z8AAAAALA6P3iPZC7wpJA5UBVfQTDg70ALApK6iWL3GJWBRj9n5gcAAACA1fnBayRzgQeFzIGq+AqCAX8HWhCQ1E0Uu8eoDDT6OTM/AAAAAKzOD94imQs8KmQOVMVXEAz4O9CCgKRuotg9RmWg0c+Z+QEAAABgdX5wHslc4E4hc6AqvoJgwN+BFgQkdRPF7jEqA41+zswPAAAAAKvzg5dI5gLXCpkDVfEVBAP+DrQgIKmbKHaPURlo9HNmfgAAznGi8oFPHljdxHwy+70AAAAASUVORK5CYII=",p="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAIACAMAAAAFcJqpAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAEhQTFRFAAAA/gAAAAAACgoKCQkJCAgIBwcHBgYGBQUFBAQEAwMDAgICAQEBBQAACQAADg4OCwsLAED/AP8A//8A/wC//6MAAP//qKio3mg4lAAAABh0Uk5TAP//////////////////////////////6dxENgAAAlJJREFUeJzt2NlOwzAQhWHgkn3n/R+vdAPE0kKhYHtkepEqynEiR6N/KrUyjb+pJQt75vCgMA4BAAAAAHaBEmMbARP+Pnde4e1959GTnDDEZpXmG/Aj5j8CyMD5c+1fsBc4ss+93/sBTl73PNAWvQH1d6IHIA1Pw9vWvnv7f+z474/b8N/r/3V28BK/MkDMn/KN4lwAAAAAAAAAAAAAaAKuCqYvI2CFq9A/uDBAvu4DZOBH7h8MvoTW4tsP8CWX/30B9XeiByANhf6BAWL+EMtxnAsAAAAAAAAAAAAATcB1wfRFBJ7M6t4/uDRAvu4DZOBb7h8MvoTW4tsP8CmX/30B9XeiByANhf6BAWL+EItxnAsAAAAAAAAAAAAATcBNwfR5BJZmde8fXBkgX/cBMrCR+weDL6G1+PYDrOXyvy+g/k70AKSh0D8wQMwfYj6OcwEAAAAAAAAAAACgCbgtmD6LwMKs7v2DawPk6z5ABr7k/sHgS2gtvv0AK7n87wuovxM9AGko9A8MEPOHmI3jXAAAAAAAAAAAAABoAu4Kpk8jMDere//gxgD5ug+QgU+5fzD4ElqLbz/Ah1z+9wXU34kegDQU+gcGiPlDTMdxLgAAAAAAAAAAAAA0AfcF0x8jMDOre//g1gD5ug+QgbXcPxh8Ca3Ftx/gXS7/+wLq70QPQBoK/QMDxPwhHsdxLgAAAAAAAAAAAAA0AQ8F0ycRmJrVvX9wZ4B83QfIwEruHwy+hNbi2w/wJpf/fQH1d6IHIA2F/oEBYv4Qk3GcCwAAAABegF+OB3ofloROsgAAAABJRU5ErkJggg==",M="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAMAAABbYT+NAAAAOVBMVEUAAAAAAAAICAgoKChAQEBfAABvAACRAACYmJieAACoqKi4uLi7AADQ0NDRAADg4ODpAADw8PD////pSTDZAAAAAXRSTlMAQObYZgAAATxJREFUeNrt2EGOgzAMQNGxSVxI0hK4/2Fnokx7AHuBVP7bf0W2WgT5AQAAAAAAAAAAAAAAAAAAAAAAAPB9ZLhrTy+q2bKKBPoc6SXcD9Hz4/Nftv8lpbQEelv3Y19NxdnnXmrp2d+33ntz96K2bZupBM+Pz3/R/lP560savYfa8xyeJr4+r3VYs3OA/OrDy9vrow0PjZ8fn9+//+rdf5r9M3n3t57TquLqe526s299as7e2mTR8+PzX7H/pZxTWcT3B9jPac/i6kudirPvb75etzZtGjw/Pv8V+0+fPvl+AHac02G+Aerb/X4A8fnj+0+fPvEE4AnAOwDvAP6vAA2+BevNvwLUuf96DtU0+BWg3ANwD+AhEryJkjvfBMb7+P7/bwK5C6cHAAAAAAAAAAAAAAAAAAAAAADAl/kFHH4jM43eaVYAAAAASUVORK5CYII=",v="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABAAgMAAACvuJfsAAAACVBMVEVlAEsAAAD////TJSq6AAAAAXRSTlMAQObYZgAAACxJREFUSMdjYBgFo2CoAa5VKGABOp+BA1W9Ajp/VMGoAnorIJhoR8EoGGoAAAiuLhkqD4nBAAAAAElFTkSuQmCC",Q="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAIACAMAAAAFcJqpAAAAflBMVEUAAAD///8AAAAAQP8A/wAA//8BAQECAgIDAwMEBAQFAAAFBQUGBgYHBwcICAgJAAAJCQkKCgoLCwsODg5AQEBAUIBAgEBAgIB/Pz+APz+AQECAQHCAaUCAgECCPj6EPT2oqKj5AAD7AQH7AgL8AQH+AAD/AL//pAD//wD///82s5ztAAAAAnRSTlMAAHaTzTgAAAHgSURBVHja7djZTgIxFIBh1wPIIjhu4IJsLu//gsapTUCpctomPZP5v0uif5ouc3GOjgAAOX0kcIETZzIej0bD4WDQ7/d63U5H5GTLhXPpdN2PPrDZtnA2B9gfUFAF1l+Wy9UqHJjVnp3pl9ke7sc/AofZDVR/B+7/DSSvwAfmP//M34EDA7/+XxuYlQtI6iZKrlPIEthzfetbPf2+4vN5OFBbLutXs454jYvk57yIDzj1t+r7y3Wx9TET6XS63V6/PxgMh6PReDyZXF3tfNJSP6oAAAAA84PQ/OA0krnAjULmQFV8BcGAvwMtCEjqJordY1QGGv2cmR8AAAAAVucHZ5HMBW4VMgeq4isIBvwdaEFAUjdR7B6jMtDo58z8AAAAALA6P3iPZC7wpJA5UBVfQTDg70ALApK6iWL3GJWBRj9n5gcAAACA1fnBayRzgQeFzIGq+AqCAX8HWhCQ1E0Uu8eoDDT6OTM/AAAAAKzOD94imQs8KmQOVMVXEAz4O9CCgKRuotg9RmWg0c+Z+QEAAABgdX5wHslc4E4hc6AqvoJgwN+BFgQkdRPF7jEqA41+zswPAAAAAKvzg5dI5gLXCpkDVfEVBAP+DrQgIKmbKHaPURlo9HNmfgAAznGi8oFPHljdxHwy+70AAAAASUVORK5CYII=",U=i(o.from(v),2,1,64,64)[0],R=i(o.from(M),8,1,64,64)[0],I=i(o.from(Q),1,8,64,64),H=i(o.from(P),1,8,64,64),T=i(o.from(p),1,8,64,64),u=o.from(E),V=o.from(w),S={elements:{Left:{Receptor:t=>{let e;const A=new B(U);return A.width=64,A.height=64,A.anchor.set(.5),t.noteskin.on(A,"ghosttap",n=>{n.columnNumber==t.columnNumber&&(l.finish(e),e=l.animate(A,{0:{alpha:1.2,width:48,height:48},1:{alpha:1,width:64,height:64}},.06))}),t.noteskin.onUpdate(A,n=>{const a=(n.getVisualBeat()%1+1)%1;A.currentFrame=a<.2?0:1}),A},Tap:t=>{const e=I[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(t.note?.quant??4)??0,7)],A=new g(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},NoteFlash:t=>new f(t.noteskin,t.columnNumber),Fake:{element:"Tap"},Lift:t=>{const e=T[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(t.note?.quant??4)??0,7)],A=new g(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},Mine:t=>{const e=new B(R);return e.anchor.set(.5),e.width=64,e.height=64,t.noteskin.onUpdate(e,A=>e.currentFrame=Math.floor((A.getVisualBeat()%4+4)%4*2)),e},"Hold Active Head":t=>{const e=H[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(t.note?.quant??4)??0,7)],A=new g(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":()=>new h(u),"Hold Inactive Body":{element:"Hold Active Body"},"Hold Active TopCap":()=>new g(o.EMPTY),"Hold Inactive TopCap":()=>new g(o.EMPTY),"Hold Active BottomCap":()=>new s(o.EMPTY),"Hold Inactive BottomCap":{element:"Hold Active BottomCap"},"Roll Active Head":{element:"Hold Active Head"},"Roll Inactive Head":{element:"Tap"},"Roll Active Body":()=>new h(V),"Roll Inactive Body":{element:"Roll Active Body"},"Roll Active TopCap":()=>new g(o.EMPTY),"Roll Inactive TopCap":()=>new g(o.EMPTY),"Roll Active BottomCap":()=>new s(o.EMPTY),"Roll Inactive BottomCap":{element:"Roll Active BottomCap"}}},load:function(t,e){return t.columnName="Left",this.loadElement(t,e)},hideIcons:["Lift"]};export{S as default}; +import{q as o,b as r,X as i,y as g,L as c,H as l,Q as s}from"./ChartManager-b82bf91a.js";import{A as B}from"./AnimatedSprite-c4817119.js";import{H as h}from"./HoldBody-3932542e.js";const D="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABACAYAAADS1n9/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAOLSURBVHhe7ZvLitRAGEY7KuMFbyiiggsviCheVuozCF72vogrV658EffqwmdQV/aAOsioC0FFFG/gBZ32O6FqiLEnJN0hxNR34JB0VZLOn6n6U6nOjIwxxhhjjDHGGGOMMcYYY4wxxhhjjDEDIgvL0WQyWV1PgSzLJmE1J9X486AV/DotFuLnBCD4n7oIK/mHhOPPQvDb5CG5UQ79IhD8D/lCfqFAJBs/DWCzVo7JS5J1GOpFyNOe+CbvyqeSDkD8F2Vq8S/RALZo5ZS8It/KoabDPO1J0v5eeVuO5Xp5Ul6WqcW/GBvAackFeCdpDIcl6XBIkPaey0W5R96Rj2SxAaQW/7jYAMgAH+UFyUWI6RDifSOmkL5D7y3fz0l7BH9P7pT0gGIDSDH+fxrAp7A8IzdJDkDKYLC0LD/Lvl8Eznm7PCIZ3JHSOefvkj84ge8Iy3IDWCv+r/K95Bj/Q/yc+265VVbFX9kAYg9gx8fyVljyuc8Q/Al5NSz5DPSAJg2gGP9r+UrSCH7LPkM8/PEPyP2yKv5aDYAdH8ibYcnnPsN5n5PXwrIYxywNgP1eyiX5Rv6SfWaD3Cd5sjkoq+Ifkx7qQBqkJ3CQeeQYVSk0pqpp+zaRY3DObcF50fP5489jnezR1vfUulXVbQB/wTRiU9lNck8+Ls/K8yUpo45ttMv041Sp/foM8fN4uUvSQ0nPRSmjrtNH0JkaQFN0m4nBMzDj3kx6vl6SMurYZiHsMyS41ZB6ecQ8KmnsRSmjjm3YthM6aQABvovezcCMe3M5A1BGXRy5DxE6AfdkBmjcn4tSRh3bdMZQL7SpSZcNIM4n8CjJ08T9kpRRxzZtDuD6BFOxDFJ5pOTJoihl1LFNZ3TSAMIAjcCYTGI+gUfKGyUpo45t+Kmy74O6pjAy5zGT6dhn8klJyqhjmzpPC60wUwNggNZUdpP0boJ9KMsZgDLq2Ea7TD9Oldqvz8RO8EEyn8DkUlHKqGObzhp/3QbAdswoMUiZR45R9Yeirq3vaTO7cV6MzJlkmcc6o/u2vqdWh6DneCrYU8H+MUhWxZ/Mj0H+OTjhn4P9QkjCL4QQND3Ar4SlFX/+Shipzi+FJvxSKBeAwZJfC08w/jzY0AiGmPbWIk+Hmf8xZGU1YF2EVILPKU81px6/McYYY4wxxhhjjDHGGGOMMcaYQcEbQWHVpAhvwpiEcQNImtHoDycKQp3RP5gyAAAAAElFTkSuQmCC",d="/smeditor/assets/mine-590d445e.png",C=o.from(D),m=o.from(d);class f extends r{hold=new B(i(C,2,1,64,64)[0]);anims=new Set;constructor(e,A){super(),e.on(this,"holdon",n=>{A==n.columnNumber&&(this.hold.visible=!0)}),e.on(this,"holdoff",n=>{A==n.columnNumber&&(this.hold.visible=!1)}),e.on(this,"rollon",n=>{A==n.columnNumber&&(this.hold.visible=!0)}),e.on(this,"rolloff",n=>{A==n.columnNumber&&(this.hold.visible=!1)}),e.on(this,"hitmine",n=>{if(A==n.columnNumber){const a=new g(m);a.alpha=0,a.anchor.set(.5),a.blendMode=c.ADD,this.addChild(a),l.animate(a,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>a.destroy())}}),e.onUpdate(this,()=>{this.hold.alpha=Math.sin(Date.now()/1e3*Math.PI*2*20)*.1+1}),this.hold.visible=!1,this.hold.anchor.set(.5),this.addChild(this.hold)}}const w="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACACAMAAACMX59YAAAAIVBMVEUAAAD///+6urq4uLizs7OoqKinp6ecnJyVlZWUlJSIiIh18TD6AAAAAXRSTlMAQObYZgAAAKhJREFUeNrt2AMCA0EQRNFRVXD/A8fmWv/F6vTuCOGj+CBUMGgAAMDw4p4UKpHiXpsB3HsGfg7g1/+QfL68furfGUiWrnc1MogPfmZgVQsgtZ2Bqmbg1wwq8XA1sf1DAACM3+v8oILv84Pxr97ZPwAAxL2UQyUlNVwzyQ2XfW5//0DV5gevAfx9ftDH8n/wAJUPYeYVqf39AwAA+wfrtVbbzf52fAyf7ADSzwa2IX7vawAAAABJRU5ErkJggg==",E="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACAAgMAAADG74f5AAAACVBMVEUAAAAAAACoqKjq2/gjAAAAAXRSTlMAQObYZgAAACRJREFUeNpjGAWDAjBGNSA4TEsdhrfAKBgFo2C0/BgtP0Y6AACvVTE5zX7vswAAAABJRU5ErkJggg==",P="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAIACAMAAAAFcJqpAAAAflBMVEUAAAD///8AAAAAQP8A/wAA//8BAQECAgIDAwMEBAQFAAAFBQUGBgYHBwcICAgJAAAJCQkKCgoLCwsODg5AQEBAUIBAgEBAgIB/Pz+APz+AQECAQHCAaUCAgECCPj6EPT2oqKj5AAD7AQH7AgL8AQH+AAD/AL//pAD//wD///82s5ztAAAAAnRSTlMAAHaTzTgAAAHgSURBVHja7djZTgIxFIBh1wPIIjhu4IJsLu//gsapTUCpctomPZP5v0uif5ouc3GOjgAAOX0kcIETZzIej0bD4WDQ7/d63U5H5GTLhXPpdN2PPrDZtnA2B9gfUFAF1l+Wy9UqHJjVnp3pl9ke7sc/AofZDVR/B+7/DSSvwAfmP//M34EDA7/+XxuYlQtI6iZKrlPIEthzfetbPf2+4vN5OFBbLutXs454jYvk57yIDzj1t+r7y3Wx9TET6XS63V6/PxgMh6PReDyZXF3tfNJSP6oAAAAA84PQ/OA0krnAjULmQFV8BcGAvwMtCEjqJordY1QGGv2cmR8AAAAAVucHZ5HMBW4VMgeq4isIBvwdaEFAUjdR7B6jMtDo58z8AAAAALA6P3iPZC7wpJA5UBVfQTDg70ALApK6iWL3GJWBRj9n5gcAAACA1fnBayRzgQeFzIGq+AqCAX8HWhCQ1E0Uu8eoDDT6OTM/AAAAAKzOD94imQs8KmQOVMVXEAz4O9CCgKRuotg9RmWg0c+Z+QEAAABgdX5wHslc4E4hc6AqvoJgwN+BFgQkdRPF7jEqA41+zswPAAAAAKvzg5dI5gLXCpkDVfEVBAP+DrQgIKmbKHaPURlo9HNmfgAAznGi8oFPHljdxHwy+70AAAAASUVORK5CYII=",p="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAIACAMAAAAFcJqpAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAEhQTFRFAAAA/gAAAAAACgoKCQkJCAgIBwcHBgYGBQUFBAQEAwMDAgICAQEBBQAACQAADg4OCwsLAED/AP8A//8A/wC//6MAAP//qKio3mg4lAAAABh0Uk5TAP//////////////////////////////6dxENgAAAlJJREFUeJzt2NlOwzAQhWHgkn3n/R+vdAPE0kKhYHtkepEqynEiR6N/KrUyjb+pJQt75vCgMA4BAAAAAHaBEmMbARP+Pnde4e1959GTnDDEZpXmG/Aj5j8CyMD5c+1fsBc4ss+93/sBTl73PNAWvQH1d6IHIA1Pw9vWvnv7f+z474/b8N/r/3V28BK/MkDMn/KN4lwAAAAAAAAAAAAAaAKuCqYvI2CFq9A/uDBAvu4DZOBH7h8MvoTW4tsP8CWX/30B9XeiByANhf6BAWL+EMtxnAsAAAAAAAAAAAAATcB1wfRFBJ7M6t4/uDRAvu4DZOBb7h8MvoTW4tsP8CmX/30B9XeiByANhf6BAWL+EItxnAsAAAAAAAAAAAAATcBNwfR5BJZmde8fXBkgX/cBMrCR+weDL6G1+PYDrOXyvy+g/k70AKSh0D8wQMwfYj6OcwEAAAAAAAAAAACgCbgtmD6LwMKs7v2DawPk6z5ABr7k/sHgS2gtvv0AK7n87wuovxM9AGko9A8MEPOHmI3jXAAAAAAAAAAAAABoAu4Kpk8jMDere//gxgD5ug+QgU+5fzD4ElqLbz/Ah1z+9wXU34kegDQU+gcGiPlDTMdxLgAAAAAAAAAAAAA0AfcF0x8jMDOre//g1gD5ug+QgbXcPxh8Ca3Ftx/gXS7/+wLq70QPQBoK/QMDxPwhHsdxLgAAAAAAAAAAAAA0AQ8F0ycRmJrVvX9wZ4B83QfIwEruHwy+hNbi2w/wJpf/fQH1d6IHIA2F/oEBYv4Qk3GcCwAAAABegF+OB3ofloROsgAAAABJRU5ErkJggg==",M="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAMAAABbYT+NAAAAOVBMVEUAAAAAAAAICAgoKChAQEBfAABvAACRAACYmJieAACoqKi4uLi7AADQ0NDRAADg4ODpAADw8PD////pSTDZAAAAAXRSTlMAQObYZgAAATxJREFUeNrt2EGOgzAMQNGxSVxI0hK4/2Fnokx7AHuBVP7bf0W2WgT5AQAAAAAAAAAAAAAAAAAAAAAAAPB9ZLhrTy+q2bKKBPoc6SXcD9Hz4/Nftv8lpbQEelv3Y19NxdnnXmrp2d+33ntz96K2bZupBM+Pz3/R/lP560savYfa8xyeJr4+r3VYs3OA/OrDy9vrow0PjZ8fn9+//+rdf5r9M3n3t57TquLqe526s299as7e2mTR8+PzX7H/pZxTWcT3B9jPac/i6kudirPvb75etzZtGjw/Pv8V+0+fPvl+AHac02G+Aerb/X4A8fnj+0+fPvEE4AnAOwDvAP6vAA2+BevNvwLUuf96DtU0+BWg3ANwD+AhEryJkjvfBMb7+P7/bwK5C6cHAAAAAAAAAAAAAAAAAAAAAADAl/kFHH4jM43eaVYAAAAASUVORK5CYII=",v="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABAAgMAAACvuJfsAAAACVBMVEVlAEsAAAD////TJSq6AAAAAXRSTlMAQObYZgAAACxJREFUSMdjYBgFo2CoAa5VKGABOp+BA1W9Ajp/VMGoAnorIJhoR8EoGGoAAAiuLhkqD4nBAAAAAElFTkSuQmCC",Q="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAIACAMAAAAFcJqpAAAAflBMVEUAAAD///8AAAAAQP8A/wAA//8BAQECAgIDAwMEBAQFAAAFBQUGBgYHBwcICAgJAAAJCQkKCgoLCwsODg5AQEBAUIBAgEBAgIB/Pz+APz+AQECAQHCAaUCAgECCPj6EPT2oqKj5AAD7AQH7AgL8AQH+AAD/AL//pAD//wD///82s5ztAAAAAnRSTlMAAHaTzTgAAAHgSURBVHja7djZTgIxFIBh1wPIIjhu4IJsLu//gsapTUCpctomPZP5v0uif5ouc3GOjgAAOX0kcIETZzIej0bD4WDQ7/d63U5H5GTLhXPpdN2PPrDZtnA2B9gfUFAF1l+Wy9UqHJjVnp3pl9ke7sc/AofZDVR/B+7/DSSvwAfmP//M34EDA7/+XxuYlQtI6iZKrlPIEthzfetbPf2+4vN5OFBbLutXs454jYvk57yIDzj1t+r7y3Wx9TET6XS63V6/PxgMh6PReDyZXF3tfNJSP6oAAAAA84PQ/OA0krnAjULmQFV8BcGAvwMtCEjqJordY1QGGv2cmR8AAAAAVucHZ5HMBW4VMgeq4isIBvwdaEFAUjdR7B6jMtDo58z8AAAAALA6P3iPZC7wpJA5UBVfQTDg70ALApK6iWL3GJWBRj9n5gcAAACA1fnBayRzgQeFzIGq+AqCAX8HWhCQ1E0Uu8eoDDT6OTM/AAAAAKzOD94imQs8KmQOVMVXEAz4O9CCgKRuotg9RmWg0c+Z+QEAAABgdX5wHslc4E4hc6AqvoJgwN+BFgQkdRPF7jEqA41+zswPAAAAAKvzg5dI5gLXCpkDVfEVBAP+DrQgIKmbKHaPURlo9HNmfgAAznGi8oFPHljdxHwy+70AAAAASUVORK5CYII=",U=i(o.from(v),2,1,64,64)[0],R=i(o.from(M),8,1,64,64)[0],I=i(o.from(Q),1,8,64,64),H=i(o.from(P),1,8,64,64),T=i(o.from(p),1,8,64,64),u=o.from(E),V=o.from(w),S={elements:{Left:{Receptor:t=>{let e;const A=new B(U);return A.width=64,A.height=64,A.anchor.set(.5),t.noteskin.on(A,"ghosttap",n=>{n.columnNumber==t.columnNumber&&(l.finish(e),e=l.animate(A,{0:{alpha:1.2,width:48,height:48},1:{alpha:1,width:64,height:64}},.06))}),t.noteskin.onUpdate(A,n=>{const a=(n.getVisualBeat()%1+1)%1;A.currentFrame=a<.2?0:1}),A},Tap:t=>{const e=I[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(t.note?.quant??4)??0,7)],A=new g(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},NoteFlash:t=>new f(t.noteskin,t.columnNumber),Fake:{element:"Tap"},Lift:t=>{const e=T[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(t.note?.quant??4)??0,7)],A=new g(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},Mine:t=>{const e=new B(R);return e.anchor.set(.5),e.width=64,e.height=64,t.noteskin.onUpdate(e,A=>e.currentFrame=Math.floor((A.getVisualBeat()%4+4)%4*2)),e},"Hold Active Head":t=>{const e=H[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(t.note?.quant??4)??0,7)],A=new g(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":()=>new h(u),"Hold Inactive Body":{element:"Hold Active Body"},"Hold Active TopCap":()=>new g(o.EMPTY),"Hold Inactive TopCap":()=>new g(o.EMPTY),"Hold Active BottomCap":()=>new s(o.EMPTY),"Hold Inactive BottomCap":{element:"Hold Active BottomCap"},"Roll Active Head":{element:"Hold Active Head"},"Roll Inactive Head":{element:"Tap"},"Roll Active Body":()=>new h(V),"Roll Inactive Body":{element:"Roll Active Body"},"Roll Active TopCap":()=>new g(o.EMPTY),"Roll Inactive TopCap":()=>new g(o.EMPTY),"Roll Active BottomCap":()=>new s(o.EMPTY),"Roll Inactive BottomCap":{element:"Roll Active BottomCap"}}},load:function(t,e){return t.columnName="Left",this.loadElement(t,e)},hideIcons:["Lift"]};export{S as default}; diff --git a/Noteskin-de4438a8.js b/Noteskin-14ac674c.js similarity index 99% rename from Noteskin-de4438a8.js rename to Noteskin-14ac674c.js index 2db186d3..e686aabf 100644 --- a/Noteskin-de4438a8.js +++ b/Noteskin-14ac674c.js @@ -1,4 +1,4 @@ -import{q as e,r as v,s as U,b as c,u as w,O as m,v as l,w as Q,x as h,y as i,z as u,H as C,J as F,L as x,P as G,Q as f,V as b}from"./ChartManager-db54e716.js";import{H as E}from"./HoldBody-9276f45c.js";const S="/smeditor/assets/parts-0c8fa692.png",M="/smeditor/assets/frame-d599a2fe.png",T="/smeditor/assets/parts-b37af2cf.png",K="/smeditor/assets/parts-9668caec.png",P=`precision mediump float; +import{q as e,r as v,s as U,b as c,u as w,O as m,v as l,w as Q,x as h,y as i,z as u,H as C,J as F,L as x,P as G,Q as f,V as b}from"./ChartManager-b82bf91a.js";import{H as E}from"./HoldBody-3932542e.js";const S="/smeditor/assets/parts-0c8fa692.png",M="/smeditor/assets/frame-d599a2fe.png",T="/smeditor/assets/parts-b37af2cf.png",K="/smeditor/assets/parts-9668caec.png",P=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-ed5342e2.js b/Noteskin-1b5c3cb3.js similarity index 99% rename from Noteskin-ed5342e2.js rename to Noteskin-1b5c3cb3.js index a8c97083..b3d85df2 100644 --- a/Noteskin-ed5342e2.js +++ b/Noteskin-1b5c3cb3.js @@ -1,4 +1,4 @@ -import{q as a,r as h,s as d,b as u,u as x,O as g,v as w,w as f,x as p,y as s,z as E,H as A,J as F,L as I,P as G,Q as v,V as H}from"./ChartManager-db54e716.js";import{H as B}from"./HoldBody-9276f45c.js";const P="/smeditor/assets/frame-d599a2fe.png",N="/smeditor/assets/parts-b37af2cf.png",k="data:image/png;base64,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",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAMSURBVBhXY0ACDAwAAA4AAXqxuTAAAAAASUVORK5CYII=",L="/smeditor/assets/frameChrome-2ea8bbf3.png",Y="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAMSURBVBhXY0ACDAwAAA4AAXqxuTAAAAAASUVORK5CYII=",V="/smeditor/assets/frameChrome-2ea8bbf3.png",T=`precision mediump float; +import{q as a,r as h,s as d,b as u,u as x,O as g,v as w,w as f,x as p,y as s,z as E,H as A,J as F,L as I,P as G,Q as v,V as H}from"./ChartManager-b82bf91a.js";import{H as B}from"./HoldBody-3932542e.js";const P="/smeditor/assets/frame-d599a2fe.png",N="/smeditor/assets/parts-b37af2cf.png",k="data:image/png;base64,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",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAMSURBVBhXY0ACDAwAAA4AAXqxuTAAAAAASUVORK5CYII=",L="/smeditor/assets/frameChrome-2ea8bbf3.png",Y="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAMSURBVBhXY0ACDAwAAA4AAXqxuTAAAAAASUVORK5CYII=",V="/smeditor/assets/frameChrome-2ea8bbf3.png",T=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-b586fc01.js b/Noteskin-3e2399d2.js similarity index 99% rename from Noteskin-b586fc01.js rename to Noteskin-3e2399d2.js index 32075f0c..d1db7e07 100644 --- a/Noteskin-b586fc01.js +++ b/Noteskin-3e2399d2.js @@ -1,4 +1,4 @@ -import{q as s,r as v,s as w,b as h,u as x,O as B,v as u,w as D,x as b,y as r,H as l,J as A,L as H,X as T,Q as d}from"./ChartManager-db54e716.js";import{A as C}from"./AnimatedSprite-ffeea718.js";import{H as m}from"./HoldBody-9276f45c.js";const I="/smeditor/assets/0-c5249fef.png",U="/smeditor/assets/1-0e354907.png",M="/smeditor/assets/2-ce5f7b2f.png",y="/smeditor/assets/3-648105cf.png",P="/smeditor/assets/4-da345826.png",F="/smeditor/assets/5-f6bb9779.png",O="/smeditor/assets/6-12d00670.png",Y="/smeditor/assets/7-00801dd0.png",G="/smeditor/assets/8-9a73d4f3.png",Q="/smeditor/assets/0-0543793c.png",L="/smeditor/assets/1-84dd19f7.png",_="/smeditor/assets/2-3b873573.png",z="/smeditor/assets/3-e5952ffa.png",N="/smeditor/assets/4-1f9a4a43.png",E="/smeditor/assets/5-b9acdc27.png",j="/smeditor/assets/6-565a7261.png",W="/smeditor/assets/7-dd1c0ecf.png",R="/smeditor/assets/8-94163432.png",X="/smeditor/assets/frame-d599a2fe.png",S="/smeditor/assets/parts-b37af2cf.png",k=`precision mediump float; +import{q as s,r as v,s as w,b as h,u as x,O as B,v as u,w as D,x as b,y as r,H as l,J as A,L as H,X as T,Q as d}from"./ChartManager-b82bf91a.js";import{A as C}from"./AnimatedSprite-c4817119.js";import{H as m}from"./HoldBody-3932542e.js";const I="/smeditor/assets/0-c5249fef.png",U="/smeditor/assets/1-0e354907.png",M="/smeditor/assets/2-ce5f7b2f.png",y="/smeditor/assets/3-648105cf.png",P="/smeditor/assets/4-da345826.png",F="/smeditor/assets/5-f6bb9779.png",O="/smeditor/assets/6-12d00670.png",Y="/smeditor/assets/7-00801dd0.png",G="/smeditor/assets/8-9a73d4f3.png",Q="/smeditor/assets/0-0543793c.png",L="/smeditor/assets/1-84dd19f7.png",_="/smeditor/assets/2-3b873573.png",z="/smeditor/assets/3-e5952ffa.png",N="/smeditor/assets/4-1f9a4a43.png",E="/smeditor/assets/5-b9acdc27.png",j="/smeditor/assets/6-565a7261.png",W="/smeditor/assets/7-dd1c0ecf.png",R="/smeditor/assets/8-94163432.png",X="/smeditor/assets/frame-d599a2fe.png",S="/smeditor/assets/parts-b37af2cf.png",k=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-c62aca3b.js b/Noteskin-3efa42bb.js similarity index 99% rename from Noteskin-c62aca3b.js rename to Noteskin-3efa42bb.js index 1e976c77..d66e22b7 100644 --- a/Noteskin-c62aca3b.js +++ b/Noteskin-3efa42bb.js @@ -1,4 +1,4 @@ -import{q as o,r as H,s as r,b as G,u as E,O as f,v as Q,w as I,x as c,y as C,z as F,X as K,H as a,L as u,Q as P}from"./ChartManager-db54e716.js";import{A as h}from"./AnimatedSprite-ffeea718.js";import{H as v}from"./HoldBody-9276f45c.js";const L="/smeditor/assets/downBodyActive-dd1fd694.png",k="/smeditor/assets/downBodyInactive-c781a303.png",Y="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0dOV1YU4MAAAPKSURBVHja7d1dTupQFIbh0pwJkDBA4xjEQVjGcOIATZwBnFslHC1l7b2/v3WHiUL6PimUwHI3Xc1pWS5fbz8/vU5bZn843/07nx/zVDVb7h/5sW29/7/vb99uvxyPu6+356nRbHnAldEqg7HGXzPt/rIIAuX4zQGwI1CP3wUAKwKH+N0AsCFwid8VAAsCp/jdAaAjcIs/BAAqAsf4wwCgIXCNPxQACgLn+MMBICBwjg8BQAEBa3wYAMwImONDAWBEwB4fDgATAoX4kAAYEKjEhwWAjEApPjQARARq8eEBICFQjE8BAAGBanwaACMRKMefpmn60+NUWXVAPj/mu4PsD+fN94/4yeZqXHPr+NWn415nAtSPtVe/vplbP2BGBOjfaag8ll2frBgQqH2hBe5FIDICt/jDrgIQETjGH3oZiITANX4pAMYvf+wPZ8r4lfdfegZQ+kKoQ/wmTwHKCBQ/QDqjHCh0BKqfHs5+AOP4za8Csh8AO36Xy8DsB8CN3+19gOwHyH6A7AcAjN8VAAuC7AcwRpD9AMYIsh/AGEH2AxgjyH6AwZP9AJM3AAUE2Q9gjCD7AYwRZD+AMYLsBzBGkP0AxgiyH8AYQfYDGCPIfgBjBNkPYIwg+wEKDlj2A+AdyyZngOwHyH6ALs/J2Q+Q/QDZD8D6IjD7AXDiD7sKyH4AjPhDLwOzH2B8/FIA2Q/A+T5D9gMYx2/yFJD9ADzxVwG4/v/zrggY469pt7v1w9OyXK5/9vz0Sqe8CpVK/JfjcbcKQBB4xP8RQBDox/8VgDMCh/irADgicIm/GoATAqf4dwFwQOAW/24Ayggc428CoIjANf5mAEoIKoct/kMAgoA//sMAgoA7fgkAdwTM8csAuCJgj18KwA2BQvxyAC4IVOI3AaCOQCl+MwCqCNTiNwWghkAxfnMAKghU43cBwI5AOX43AKwI1ON3BcCGwCF+dwAsCFziDwGAjsAp/jAAqAjc4g8FgIbAMf5wACgIXONDABiNYMuoxIcBwIRAKT4UAAYEavHhACAjUIwPCQARgWp8WABICJTjQwNAQKAeHx7ASAQO8SkAjEDgEp8GQE8ETvGpAPRA4BafDkBLBI7xKQG0QOAanxZAJYItoxKfGsAoBErx6QH0RqAWXwJALwSK8WUAtEagGl8KQCsEyvHlAFQjUI8vCaAKgUN8WQCPInCJLw1gKwKn+PIA7kXgFt8CwFoEjvFtAPyGwDW+FYD/Ibg1LvHtAKxB4BTfEsBPCNzi2wK4hcAxvv2cluWy9nVBJpPJZDKZjNL8A8iasRIljXPgAAAAAElFTkSuQmCC",z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0eB7cUHesAAAO/SURBVHja7dw7VhtBEIXh0WzGGWtxahZop6yFzKuREwKQBcy0uqvuqzM4Bwv6/yxN61GX7f91ff/F6+vPbWT9/vPj9M88//q7zVojt4/8u43e/tPTy+23Lu+/2LdFa+QXnhltZjDW+EfWMgAqCJTjLwfAjkA9fgkAVgQO8csAsCFwiV8KgAWBU/xyAOgI3OK3AEBF4Bi/DQAaAtf423bzrNDbmvJMoOqGsf0tbc8EstwTuEPeETaPHQHzvdiOsomsCNgfwmAAMCJQuH6BAsCEQOXiFQ4AAwKlkwskAGQESvGhASAiUIsPDwAJgWJ8CgAICFTj0wDoRKAcf9sWvBZwb8NYX2xBfGfz2X+/9LWAzzas++1dI7eP+rb22dc3e9X/TCYE6J9pmLmXpdcADAjUPtACdxGIjMAtftspABGBY/zWYyASAtf404+BLhvJdKwtPQYqfSBUIX7LQ4AyAsV3D+8oG4WOQPWt45kPYBx/+Skg8wGw45ccAzMfADd+2fMAmQ+Q+QCZDwAYvxQAC4LMBzBGkPkAxggyH8AYQeYDfFyZDyD0t2Q+gHF86IcAJQSZD2CMIPMBjBFkPoAxgswHMEaQ+QDGCDIfwBhB5gMYI8h8AGMEmQ9gjCDzATIfoC1+5gM03hNkPsDkDct8AMy9zHwAsvj0F4GZD4ATv+0UkPkAGPFbj4GZD9Aff/oxMPMB8I6amQ9gHL/lISDzAXjiHwJw5y7EEgFj/CPtLp98/3r7jZG3h6tcEwjFvxwFEAQG8b8DYI9APf4RALYIHOIfBWCHwCX+GQA2CJzinwUgj8At/ggAWQSO8UcByCFwjf8IABkEMxdb/EcBBAF5/BkAgoA4/iwA1giY488EYImAPf5sAFYIFOKvAGCBQCX+KgDSCJTirwQgiUAt/moAUggU41cAkECgGr8KADUC5fiVACgRqMevBkCFwCF+BwAKBC7xuwBAI3CK3wkAEoFb/G4AUAgc4yMAgEDgGh8FQCuCkaUSHwkADQKl+GgA4BGoxUcEAItAMT4qADgEqvGRAcAgUI6PDqAdgXp8BgBtCBziswAoR+ASnwlAGQKn+GwAliNwi88IYBkCx/isAKYjcI3PDGAagpGlEp8dQAsCpfgKAEoRqMVXAVCCQDG+EoClCFTjqwFYgkA5viKAqQjU46sCmILAIb4ygIcQuMRXBzCEwCm+A4BTCNziuwA4hMAxvhOALxG4xncDcBeB+764ATiCwGpPHAF8hcBuP1wB3EPgvBfWCK7ZhqysrKysrCy39Q9gQ/q5SfcuvQAAAABJRU5ErkJggg==",p="/smeditor/assets/leftBodyActive-75d41033.png",b="/smeditor/assets/leftBodyInactive-bbc074cd.png",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEANIA0gBQ7xAn7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI2I6Ho7PYAAANMSURBVHja7Z1bTgMxDEU7VjeAxAJR10C7CMoaEAus1B0Av6XiMY/EsX2PJT4GoTHpOZNJMhl32t3F6/n8eXt8eDrt1sTD48eiv79ebNcqluZumX9N7p7/39v7y7fj5+Nxuj3e7zrF9WKzP4xM8HsBHhXW8+RzPtgqVz4CrPiAM8IfIUzPnDaqAZmvfE8JeueyEQ2p0O17SOCRw7U/u16s1D2/JyCvXibtCCjKgC/LOX+LPfBzAZPvAZjqCQsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOD7xh74f+evLpcB/+/81XYAhRQgKnwFCQz4ta/w0AIAX1gA4AvPApTgR5/WGvDjrTN4CmrAjwXfWwIDfjz4nhIY8GPC95LAgB8XvocEBnztqaYBX3udIczTQOoDFBOA+gA5gvoA1AcY17VTH2B8TuoDBAPinYv6AIEloD5A8Hs+9QEGBvUBiq0DZB7tUx9AGD7TQOAjAPARAPgIAHwEAD4CjIRPFBEA+MICAF9YAOALCwB8YQGALyxAS/hMAZMJAHxhAYAfI/YV4fccU3jkoz6AMHzvQbEBP2Y+6gMIw/fMYcCPCd8rlwE/LnyPnJbZXm8YFVcsDfi68GcJcP/980RxAZ6Px6mFBL0XM7xX/6quNv7YKiTQkeDXFkWUwPsLHaJ8gcSw+gBIMF6CLbnmsJrmnOj1fP68/93h6cSaQOeZQWv4P13Q09wTIoFvPg/4iwRAAr98XvAXC5BJAsVYCn+VAEhQB/5qAZCgBvxNAiBBfvj/rgP8F1lWDIHfSQAkyA2/iQBIkBd+MwGQICf8zYPAiAPDpQJl3++wBX7THoCeIB/8LgKMlkDlTeMW8LsJgAQ54HcZA0QaE6yRp/UgK3q4NAwJxAVAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAggERet9Vtk0la+REgGISIAASIAASIEA5CRAACRAACRAACRBAT4LKkqRvWW8JqvcQJVrXUoL7H24BYhIwBkCC1ZFRuJLvu7V6irgVPo+DRSRgQ4iwBGwJE5aATaHCErAtXFgCXgwRloBXwwpK0HrtAQFEJOD1cGEJKBAhLEHlsnEEQRAEQWjEFz4LZYAP3C09AAAAAElFTkSuQmCC",R="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3FABOeLgAAAM3SURBVHja7d09csJADIZhW+O7pOMsaeGASZuz0HGapGUIMP7Z1Ur6XnVkMgj8PdjrxV7m6X/93j+4Xj+nPfX1/bHp/y/n29SqtvZu2X9P756v73T6efzTfP9gmTrV5XxbvTEyhd8r4FFlPZ98zYat8skHwI4NnDH8EWB69rRRbyDzJ98TQe9eNuKNVNjteyDw6DH3OgvwqAjH/Gij/q1nATYlrSgDvizP+aoWws8VWNoxAKd6ACB8ABA+AAgfAIQPAMIHAOEDgPABQPhjayH89/2r4zLCf9+/2hVAIQFEDV8BgRF+7U94aACELwyA8IXPApTCj35aa4Qfb57BE6gRfqzwvREY4ccL3xOBEX7M8L0QGOHHDd8DgRG+9qmmEb72PEOYbwNZH6AYANYHyFGsD8D6AON27awPML4n6wMEC8S7F+sDBEbA+gAJjvmsDyAcfqbnDD8PkHm0z/oAwuFzGkj4ACB8ABA+AAgfAIQPgJHhU0UAEL4wAMIXBkD4wgAIXxgA4QsDaBk+p4DJABC+MADCj1FLxfB7jik8+rE+gHD43oNiI/yY/VgfQDh8zx5G+DHD9+plhB83fI+ellmvdxgVZyyN8HXDXwXgyZ0lVHEAcwsEvSczvGf/qs42vtoDgEAEwbtDQDgE3j/oEOUHJEauDwCCwQiO9FqT1bzyuX4f/7DntnHmBIaHP+8FAALnfh7hbwUAgin+18Fbwt8DIA0Cxdoa/l4AICgS/hEAICgQ/lEAIEge/pp5gM2AIs4YEn4/ACBIHH4rACBIGn5LACBIGH6LQWC4geFWQAWudziUoXm8IPYEMcPvBWAoAqE7jZvsvc3zBYIgVvi9xgBhxgR78LQeZMlIAgEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEEQqywY08kUlkX9pPSuAdAgAAAIAgAAA5RAAAAQAAAEAQAAAPQSVkViB99AVQfU9RKVLnJtMGx+tJ/iYCs60J2AMAIKWn34OASqHA74OFkbABSHCCLgkTBgBF4UKI+CycGEE3BgijIBbwwoiUN6GigBaIuD2cGEELBAhjEB9u1EURVEUlbz+AOnsq2p4bKxbAAAAAElFTkSuQmCC",x="/smeditor/assets/rightBodyActive-07f95372.png",y="/smeditor/assets/rightBodyInactive-fdefc2a4.png",T="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NtUuOVwAAAOHSURBVHja7Z3RTSsxEEUdKw0gUSCiBkIRhBoQBSLRQeDr6YWQEK/j8c7MPfcvIO0sPmcd24RhU07yut9/Hb9+fHguPbm7PxSLfH7UIdfpub9RtXvq99Z+e3/58fppt9scv96WYLk2cK0D9flRF0O4uz8Mk2BJ/ZHinaYW4fQM7MiZraW+JXxTAaxvfFRNzxLMGMPqDcgatTxKMGvsqmcwM2t4kmDmg1O9P50zr+1BgtlvndOqWfxgXq5pteWdkanbwDUWhtZbNIstYsoZgC0iAiABAiABAiABAiABAiABAiABAiABAiDButlmB3Vu0Nf4UMfx/Xg6Maxq8Ec/idFngqoGHwlYAyABAiABAiDB/F3A2p/Fn7U6j7Q7qBGfsghPYpSZoGaEjwSOBFh7kYMEKwrgZa+LBCsI4O3cGwmCbgMzQfAoQYhzACQ4aAvwbxBGDURECaxCf4CFtekPkCj0B6A/AP0BvAFZoxb9AYJLQH8A52sA+gO016c/QMBr0h8g4P7X8xYx5QzAFhEBkAABkAABkAABkAABkAABdEJ/AEJ/AOJTAgQQlwABxCVAAHEJEGDCVtCzBAggLgECiEvgvj/AUgiWg3lar+dzA3+NDf0BBlzTchCt69EfAAnoD4AE9AdAgkJ/ACQo9AcIIZ51PfoDIAH9AUhf3t5fNAWYfaBiXa/n+ufgP+12m/QCAL8dvqkAXvoDzDwaHl3PGn6TAC3vIx4kAP5y+KWUcvabr/v91+nXHh+e3a6Sgd8H/6IAkSQAfj/8PwWIIAHwb4N/VQALCTIlOvwmAZAgL/xmAZAgJ/xFAiBBPvhN5wDXCt1yTqAcD/AXC4AEueB3CYAEeeB3C4AEOeAvXgS2LgwjZekitncR6BH+TTOA1Q3x5M+DP0QAJQlm/efTWfCHCaAgQUb4Q9YAnjPq4Cor/NQCAF9YAOALCwB8YQGALywA8IUFAL6wAMAXFgD4wgIAX1gA4AsLAHxhAYAvLADwhQUAvrAAwLdNuA4hwBcXAPgIAHwEAD4CDI4ifAQQh48A4vDlBVCHn1qAa3CBLzADXIIM/P/ZluQZ0a00K3wWgeLwQwowswlFdviliP06GPhBBZgtgQr8UALMkkAJfjgBrCVQgx9SACsJFOGHFWC0BKrwQwswSgJl+OEFuCTBLVFre5f2z8OBLyTACAlUG16mbxEDfEIIIYSQ3/kGeiN5xirmRdUAAAAASUVORK5CYII=",X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NUwnaOYAAANgSURBVHja7Z1BUuNADEUdF3dhx1lmyxxw2HIWdnMas6JqKpCx3ZbUkv7TLiFJR/1eOurGiNvyPbZ/b3x8/FpG4s/b8+IRv1//mrzOyPuzGntk/NGxX17e7++6PbxRQQDLiaoiwZUx9wRYF+EYmVhLsY+MbyncT7FmmtwZY2aWIGIO12xAZoyVUYKouVszg4kcI5MEkR8ctyKw2q4gS2FoHWmKQI9JyvKas3Y8pVaAatFlJWAbyEowtwhEAgRAAgRAAgRAAgRAAgRAAgRAAgRAgjTR/iTwp0mfeWWP9fh7IX0S+AhO9EUdmVeCVQ0+ElADIAECIAECIEH8LiCyYq523b/X7iDNLiDa8gqXfGdYCdaO8JEgkQCzixwkmChAlr0uEkwQINu5NxIU3QZ2gpBRghLnAEjwrC3A1yRYTURFCbyC/gAT4dEfgMJw+mpBfwD6A+QCMmMs+gMUl4D+AAmLwKiikP4ARYpA+gPkDPoDNF8J2AayEswtApEAAZAAAZAAAZAAAZAAAdhSIgASIAASIAASIAASIAASIIDAVjCzBAggLgECiEuQvj/AWQiek+k9Hv0BDF7T86KMjC3nSnwFeCaGBMkFiEgICZIKEJkIEiQTYMb3GRKwDQwXz3s8+gMgAf0BCLMzAA0Bov9Aw3u8kdd/AP/WXgDgH4fvKkCW/gBqR8Nn4B8S4Mj3SAYJgH8e/v9+uN3fceWXQt5VMvDH4O89oIQEwB+Hf+RBqSUA/jX4Rx9oKkGnqA7/zIORoCH8s09AgmbwR54kL0En+IfOAfYGunJOoBwZ4I8IgASN4I8KgARN4F8RAAkawF+WZXm6+PzbfWFYTYKoIjYj/KsrgMsb4pMfB99KABkJorqHRsG3FKC9BB3hK3xyTQ6uusLvLgDwhQUAvrAAwBcWAPjCAgBfWADgCwsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOALCwB8xyjXIQT44gIAHwGAjwDARwDjUISPAOLwEUAcvrwA6vBbC7AHF/gCK8AjyMCvlYDbfzFTh08RKA6/pACR/Qe6w6+UTHh3MgX41RIKk0AFfsWk3CVQgl81MTcJ1OBXTs5cAkX41RM0k0AVfockL0ugDL9LohtzQrIb80HCG3NB0hvzQBAEQRAEsR+fBPrG1xa4jMQAAAAASUVORK5CYII=",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAAEACAMAAABMJ46VAAAAAXNSR0IArs4c6QAAAv1QTFRFVfgA////V/UEWvcAXPQEX/cAZPcAYPQEZfQEafYAavIFbvYAb/IFc/UAdPEFePUBefUBefEGevEGffQBfvQBfu8Hf+8HgvQBg/QBgu8Hg+8Hh/QBiPQBh+8HiO8HjPMBjfMBjO4Hje4HkfMBkvMBke4Hku4HlewJlvIBl/IBm/IBluwJmuwJnPIBn/IBm+wJnuwJofEBpPEBoOsJo+sJpvEBqfEBq/EBpesJp+sJqesJrfABsPABq+oKruoKsvABtPABtvABsOoKseoKs+oKue8BtukKuOkKu+8Bve8Bv+8BuukKvOkKwu8Bw+8Bv+kKwOkKxu4Bx+4Byu4BwucLw+cLxucLy+4Bzu4Bz+4Bx+cLyecLyucL0u0B0+0BzeYLzuYL1u0B2e0B2u0B0eYL1OYL3ewB1+QM4OwB4+wB2eQM3OQM5uwB6OsB3+QM4eMM7usB7esB6+sB5+QL5uQL5OMMjIuL////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1NymhQAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wQBBhwGaRlBJQAABoNJREFUeNrt3TFvVFcQhmFsuUJuKBIpkVJvARL+A6GAdGnBhUVviUg0yPz+2JHt3dm5d+Z9Z93lTrnnnPmeNQHH63vOefXqvn7e14/DOjusH7nOFqubGEYeMl891TFglu8EFWCarwQFQLYcCiCANDQCC2BvSAgkgH5BucAB+B8oFhSAu309Tr7LFYLQwGrLCnCn86HgjgJWqgzpBMc1ADQRUuABbYATaABorwQWgJobgQTA1kKQAN+rCo1fZOJ3BeBt+VQDEPl8sgCofDydA2Q+XYABOh8uoYCu2cqLvSAB/lms0GplfLDsvhiA5A8FCfBtoUKbYnyw9BsB0PyRIAFuU4UWt/X4rV7eA0z+QNACXL4XdACbrwUNwOdbQQJ8Payw8Guu5Z+Nu4lhpATM8p2gAkzzlaAAyJZDAQSQhkZgAewNCUEBuHmu/fSbXCGsfPGm7pgA18/1PPs6V4hqX65aFoBrnY8F1wXgy0H9N/lLrhCDh5ZbJsDnvkKIGlyoAaCJkAIPaAOcIAH+biq0H0/ZVwL8VVdoftKkx5IA2FoIHAA35gIFEG8MT02AT+sVmn5qik5OgI+rFVp+bAtOT4APaxUafgDFFmCAzodLEuDP5QrNFscHix4KAvr8qYABSP5QgAAsfyYgAJo/EgAAz58IEuDquEKDq6t6vJ2QRluAy/eCDmDztSAB3ocKS9/nWvrJtJsWh2rAJF8KEuDdQYVl73Kt/XTeTT0cSIC3+wqL3uZa/3ygm3zwegGQLYeCBNg91+GCXa6z4/EzsWD/KgOQfCWQAJZvBA5A84UAAXY6Hwt2DLDT+VCwo4CVKkM6wXElwB9thQg9fFwJ8HtXIWA0IVQC/NZUaD+esq8E+LWu0PykSY+VAL+UFVqfPO2hHAA35gIFEG8MTzUAkc8nC4DKx9M5QObTBQnwZqVCuzeo0BIK6JqtvNgLIKDPnwoS4HKpQqPV8cHCy8sEeL1QoU0xPlj6mgBo/kgAADx/IugBJn8gaAEu3ws6gM3Xggbg862gBkzypaAEzPKdoAJM85UgAS6eKyy5yHU0Lqc/FQSQhkZgAewNCYEE0C8oFzgA/wPFggJwvq/Hyee5QhAaWG1ZAc51PhScU8BKlSGd4LgGgCZCCjygDXACDQDtlcACUHMjkADYWggcADfmAgUQbwxPNQD1HxedLADyLziczgH2nzi4AAN0PlxCAf03maEAAsg3uZmAAdi3+ZEAAeD/ZowEBEDzRwIA4PkTQQ8w+QNBC3D5XtABbL4WNACfbwU1YJIvBf3PBTrfCcBPRjpfCQqAbDkUQABpOPsHiwHYGxICCaBf0Mk3DQLgf6BYoP4WbJ8PbJ8PbJ8PbJ8PbJ8PbJ8PbJ8P/N8+H7i44L+fOBofLCx/Y+J/ETIREMDkV0F4MQDMfh1Hl/cA9QtJL9ieH9ieH9ieHygAsuVQAAGk4eyBJwZgb0gIJIB+QScPnRWP8/XP76Vx9thfGKseaKyfX1x8UJE8+BhHyicqdT4UTJ4pxSH24Vf5bDl4XFc+/usBbYATaABorwQWgJobwba/QG3xEFs38FSzyUVtXqGTxTYft32HTucbneQGJroAb/WyW7joEgroN7ENBRBANtHNBAzAthGOBAhAN1JOBAQw2UqKFwPAbDsvXV7tvJ7svxZ7rtud17P931ZQbn4f7X83O9+XNr9v5w+cdv6DPwWiAkzzlaAAyJZDQXEQyuECcsDJmViATmKR+UogAfSAFy5wAH7ADBaww3B0PhbQ03h0PhSUp/GcethVOXjKqVw4QgrEwWj0wLN2Qn0w2gsc+QamFEfDbecTbucTnnY+pp8sjgkNLT+ffpyoPadU5tMFGKDz4ZLysFx1CO5g0eJhudeLFVqtjA+WNecV22OIR4LiyOjmfOiF8cHSm/rkdnsY9mAxAPD8iaAHmPyBoAW4fC/oADZfCxqAz7eC+gKFsBDenyBvUCgBs3wnqADTfCUoALLlUAABpKERFIDFS2DYFTELL60tQXfZ2PzZpTfFdULPs/k1QSsvVy2r+4x0PhZU9xmlK6HcVVHF0HJLd7MbCOkEJ93shiKkwAPaACfQANBeCSwANTcCCYCthcBdsBgav8hEd8Mjb8unGoDI55MFQOXj6Rwg8+kCDND5cAkFdM3spbwW0OdPBeW14/Ii5cHC5t5ze5HzREAANH8kAACePxH0AJM/ELQAl+8FHcDma0ED8PlW8AT4F0zxmObwVcrYAAAAAElFTkSuQmCC",j="/smeditor/assets/upBodyInactive-87a7969e.png",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5IlF3wK8AAAPCSURBVHja7Z1bbsIwFETNKBtAYoFV11C6iNI1VF0gEjug/YUoRbWxfR8zV+oHH9TG58QhUe6wK6v6PJ1+bl+/vryX2tofrtXvuZxRelXL+BHm2DL+1/fH3eu343F3+xq9Fykr/N7/u+Uzj/hsEHxuCcAM/3KGOQTr8VGMytP5NKIEoQXw+GWKVQIIPrcEEHxuCTBr4pGuob1L0HMtMeMIj3gDxasEvXeIxfM2b32peTmjesz94dptDWacDuyuP4LcZ/Byx45aAOubTJklgOBzSwDB55YAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwBm+PvDNeWDniEE8PQMIbMEYIfPLgEEn1sCCD63BBB8bgkg+NwSQPC5JYDgc0sAweeWAILPLYHyAcglUD4AuQQQfG4JaPMBoksQWoDo8DNJAMHnlgCCzy0BTT5AJgmUD+C0lA9Q/OUDWEgQKR9gKUFqxtHVa4yeEqS8DPR6fmU5VYUSYPY3bDYJwAz/r74AJgnADP/RWCwSgB0+uwQQfG4JIPjcEkDwuSVYosKvAdLaF7Ae49GYlomioXcAj/Bb3qt8AIfwZ5fyAYjhR5UAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwDB55ZgiQb/6/vj7vXry7sp0Jb5WP8a2dAdQEd+rJ0Ags8tAQSfW4JQ+QDr863Hapmj8gGSwI8oAQSfWwIwwr+csfnHKIHrfIBR8Gcu/ggJKPIBthbu7Xjcjd6Bnl3crTn2lKC3pBhxhD27tc6CP6o3sKcEo09T7i7EZ8J/dF3tRQLz7wAzJ20BP7ME/xkLXiY9Av5WzfrNoCjrCQ+T9gA/kwQ16wnrSXuCn0GC2vWE5aQ9wo8sQct6wmrSnuFHlKB1PWEx6VnwvZan9cTsSbPD97aeS+2kP0+nn57bFyN8T+sJS2DM8L2sJ6wmLfg+1hMWkxZ8P+u56CjOeToYvgOocpQEkAAqCaCSACoJoJIAKgmgkgAqCaCSACoJoJIA0euZ5g6GBBOKHaAFJEt8Dc0poAYoU3YR1XeA2T8dKwGCScCYWrYUwlI8nS4DVVkEsAxdiJhetq6QD3WumylKmR8anaXDKexTvZYSZGpvC/1Yt4UE2Xobwz/XP1OCjI2tKRo7ZkiQtas5TWfPSAkyt7Snau0aIUH2PIN0vX09JWAIs0jZ3NlDApYkk7Tdvc9IwBRjk7q9u0UCtgyj9P39WxLUVPYMBIqAh1YJGAIwaBI+aiVgST+hinj5rwSKvlGpVCqVSpW9fgGbIppuMBFz1QAAAABJRU5ErkJggg==",q="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5JlYaBLYAAAO8SURBVHja7Z1LUt1ADEXtW94LM9aSKSwQpllLZqzmZZQq6oUX4nZ/JN2jGVDgRud0t21aYt/+jtvnD379+rGdjbf3p9Pf8/rysfWKlutnGGPL9Z+ff95/av/8gXonqSr83j+75Xce8bsJ+N4SyBn+68vHcgirr69tUUTaTzNKkFqAiDdTrhII+N4SCPjeEmjWwDM9Q0eXoGcuNWOGZ3yBElWC3ivE/sXnLr8JjPQMfjVhqx9vr8b0N4GV4EdYCUo+BmabhZUlEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lkDP8t/enkgc9UwgQ6QyhswRyh+8ugYDvLYGA7y2BgO8tgYDvLYGA7y2BgO8tgYDvLYGA7y0B/QHMJaA/gLkEAr63BLb9AbJLkFqA7PArSSDge0sg4HtLYNMfoJIE9AcIGvQHSJTgLFvd1fiuP8CxJYkZs6vXNd7en0KeXA71HiDi/uqyVaUSYPYdtpsEcob/qC7ASQI5w//XtVwkkDt8dwkEfG8JBHxvCQR8bwlCvAkcfZikNeGjrzHjZVH4TqFR4Z/9XvoDBIQ/O+gPYAw/qwQCvrcEAr63BAK+twQCvrcEAr63BAK+twQCvrcEAr63BEc2+PfvtlefWm4Zz+vLx+kcjTpoKma+90og4HtLIOB7S5CqP8AXf9sOFy1jpD9AEfgZJRDwvSU4HOGPrg38PPazj6ktj4ghVoARNe0z4Y+agSNWAov+AA8St49egTokdx8pQW9Jj5kzLBr8P0vt/dc6LMP7dne6unU7KPkUEAn+o70/ykowOr6tC9i2ee/b/xP+5bqFR7O701a1Z8qnopg7YuafvdMfdPcdOp+KMOgI8CtJcCafWj3oSPArSHA2n1o56IjwM0vQkk+tGnRk+BklaM2nVgx6FvzAESafmj1o4MfK59Ew6Fvn5csRfph8ajEwZ/gh8qmFgwZ+gHxq0aCBHySfB7O47HYwfAUgCgQCIACBAAQCEAhAIACBAAQCEAhAIACBAAQCZI8rFT4OHUwsVoAWkC7ta2y2gDNAnXoXWd0DzP7XsQiQTALHrmXHZhi0p+MxkKgiwMqmCxm7l91H1kOdy5oufAN/RwADCSqVt2U/1j1dgmq1jRXO9U+ToGJha5XCjuESVK1qrlTZM0yCyiXt1Uq7uktQvZ9Bxdq+bhI4NLOoWtx5WQKXTiaVq3ubJXBqY1O9vPu0BG49jBzq+2/kyFuAKxKUz49Th48bufEW4IwEtL4hCIIgCKJ0/AYcP+o66BZ87AAAAABJRU5ErkJggg==",V="data:image/png;base64,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",W="data:image/png;base64,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",Z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAcBJREFUeAHt1LGtKjEQhWHf4JZAP7wOCPAGlEA/WwIBJqAE+qEEAnjGiNGc82vjm6wTS+vD+EMaTym1tXZ9vZ5t7H09Wl+3z17LJ3Dp39vY+7q3vj57BFp8T8mWA7eoHHc9JRAIIURAEEH4BjZHQQjhvO+B34MghHDa9cDPJAghzNsCBAiOAMERIDiCBEOAAAQJW0EI4Wf3/v1OEEL4fdeo+zJFYSHMZfNW1Fqm+C7JudQRmP9NUjnu6gcjcKqHsIm2H4zAuR7l38X/7Qcj0GpLXZJ6p9VvR11Sn6Xuu0fLXVOnpv59pEBqtGg+DQQiCBYIRBAsEIgg5EAqK48zAgmmjzMCqW66LQIL82GdD+t8WOfDOh+Oy/PhPJ7eYXk+nMbTm5bnwzyeniCMsC1AgACEERwBAhBOAMIIRBiBCCMQYQQijEAECECAAAQICQECECAAAQIQIAAhBCBAAAIEIEAAQghEgACEEYgwAhFGIMIIRBiBCCMQAQIQQgACBCBAAAIEIIRABAhAGIEIIxBhBCKMQIQRiDACESAAIQQgQAACBCBAAEIIRIAAhBGIMAIRRiDCCEQYgQgjEGEEIkj4+/UfcWPZV43B2RYAAAAASUVORK5CYII=",_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAcBJREFUeAHt1LGtKjEQhWHf4JZAP7wOCPAGlEA/WwIBJqAE+qEEAnjGiNGc82vjm6wTS+vD+EMaTym1tXZ9vZ5t7H09Wl+3z17LJ3Dp39vY+7q3vj57BFp8T8mWA7eoHHc9JRAIIURAEEH4BjZHQQjhvO+B34MghHDa9cDPJAghzNsCBAiOAMERIDiCBEOAAAQJW0EI4Wf3/v1OEEL4fdeo+zJFYSHMZfNW1Fqm+C7JudQRmP9NUjnu6gcjcKqHsIm2H4zAuR7l38X/7Qcj0GpLXZJ6p9VvR11Sn6Xuu0fLXVOnpv59pEBqtGg+DQQiCBYIRBAsEIgg5EAqK48zAgmmjzMCqW66LQIL82GdD+t8WOfDOh+Oy/PhPJ7eYXk+nMbTm5bnwzyeniCMsC1AgACEERwBAhBOAMIIRBiBCCMQYQQijEAECECAAAQICQECECAAAQIQIAAhBCBAAAIEIEAAQghEgACEEYgwAhFGIMIIRBiBCCMQAQIQQgACBCBAAAIEIIRABAhAGIEIIxBhBCKMQIQRiDACESAAIQQgQAACBCBAAEIIRIAAhBGIMAIRRiDCCEQYgQgjEGEEIkj4+/UfcWPZV43B2RYAAAAASUVORK5CYII=",$="data:image/png;base64,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",A0="data:image/png;base64,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",n0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAgxJREFUeAHt1LGRo0AQheFeQyEoH20GMmgZCkH5EAIGjUEImw8hYGiubni19+YVNO5W3Y4zBv+KD3ZoM4+IuZQ1IuILe/m71rEzsy2YSllwYcHlNohSYutKUOD/gq93bHd61xvVtYTfvoOZCfMWRPT372AiQr1T/a2hQ4AFAhBrxOh3DkAAov6WdxyAwKv3GiABgddYg9FfTGhWDQZ/tgQN+s+HECRwewhBgq4GQqDgev94KKEJLrfLUwlNYHZ9KUECZ8JUQgMi1H3RgAh1XyUQQtFACU0w+g6Bg94bAu10YISAXY4cCLTLoQWBdj32Sgj9cJQQ+ukpYdKPVwkzB7/z4X+dD+VsPpSz+VDS+XAcgHAcgHAQEOFgyjFBX6TMh50X2XtLwHHlAyOEgo2PHBOmQltzaEGYC206H5Sg80EJO/OhvKdCm3z+9cpcsEnwOgmuz5NbXB4nyA9PHhOI7EUBcfCqU8QakSHw7zZB7B2oBiEBDIzghadoEe3ymwlil8CIXQIjdgmMOCAAsQVOy0wQEoDAiKUJQGDEygEIDeINGi1F4OF4KWIgmyL4lGD9In4+wjIEggSBIEO4JQgECUICRSDIEBooAk+RIMIlEESM/nJLEDH40y1BRP/pbgkievPOMkRv17tliP52uVmGGPTvFTFCcIzQZ1BEGhjmY4LAfDxGYD4mCMzHn7T+AIoBqFgX1z4vAAAAAElFTkSuQmCC",g0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAgxJREFUeAHt1LGRo0AQheFeQyEoH20GMmgZCkH5EAIGjUEImw8hYGiubni19+YVNO5W3Y4zBv+KD3ZoM4+IuZQ1IuILe/m71rEzsy2YSllwYcHlNohSYutKUOD/gq93bHd61xvVtYTfvoOZCfMWRPT372AiQr1T/a2hQ4AFAhBrxOh3DkAAov6WdxyAwKv3GiABgddYg9FfTGhWDQZ/tgQN+s+HECRwewhBgq4GQqDgev94KKEJLrfLUwlNYHZ9KUECZ8JUQgMi1H3RgAh1XyUQQtFACU0w+g6Bg94bAu10YISAXY4cCLTLoQWBdj32Sgj9cJQQ+ukpYdKPVwkzB7/z4X+dD+VsPpSz+VDS+XAcgHAcgHAQEOFgyjFBX6TMh50X2XtLwHHlAyOEgo2PHBOmQltzaEGYC206H5Sg80EJO/OhvKdCm3z+9cpcsEnwOgmuz5NbXB4nyA9PHhOI7EUBcfCqU8QakSHw7zZB7B2oBiEBDIzghadoEe3ymwlil8CIXQIjdgmMOCAAsQVOy0wQEoDAiKUJQGDEygEIDeINGi1F4OF4KWIgmyL4lGD9In4+wjIEggSBIEO4JQgECUICRSDIEBooAk+RIMIlEESM/nJLEDH40y1BRP/pbgkievPOMkRv17tliP52uVmGGPTvFTFCcIzQZ1BEGhjmY4LAfDxGYD4mCMzHn7T+AIoBqFgX1z4vAAAAAElFTkSuQmCC",B0="data:image/png;base64,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",t0="data:image/png;base64,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",w0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAgdJREFUeAHtlLHRozAQhSGgBPr53QGBl4AS1A8lECACl0A/lEBg3RrLbx743XGhZ36/ZD3jD/RJrLbw1OGWHoke/3XPdfViBYCMTBn0ugAwAmJ6/uM1voDSnPc8Xz5v7/Z6B1C1zm9ZWWIFUHfbc/ndkFheQGUhRmwDEp4M1PbgswIkCLA2UiBBQIgcSHjsCUQOS4wWJACJwToJQKK/tBKARF+YAiDhQC0BSPQ/1VUBkBiaslEAJEZ//gikhSXsDZjSupcAgNXve4l3IL1LWGBASFjLgJBAw2yAkEDLgWMJblosjnpoeyyOerg4UUjw1cPiqMfLuwgJBrA4KoDvfPjV8yGdzYd0Nh+Sng8MyPnAACT+BkBCA3PS84GPUs4HZCKJQ8MkFJLglpupQIKb9kZlUW0/oYj5oCT46gkJcXmXmcoigHWmsv4HMJ4tMVxPJPvmZJv288+DgoI+alLQHwsKhf7cUBAtRQpw2IUV8i72YYV8DvuwgpQgBS1BClqCFLQEKeQY5QFAARIHAAqQMAYmUoAEAzdWoEB3JgUEG5YKZNspBYqFj1b4KiBagQFW0IBWQEwoCAAKGmAFDZCCBqCggQkKGrAIBQmMFiIUFDBYF6GgALu0USggtRVtFApIdXVAKCBlU7ZaAak6qUAWQSsgxgoa0AqIeaQCz0upwPNSKvC8hMIH5Q+bbaeb663kYwAAAABJRU5ErkJggg==",o0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAgdJREFUeAHtlLHRozAQhSGgBPr53QGBl4AS1A8lECACl0A/lEBg3RrLbx743XGhZ36/ZD3jD/RJrLbw1OGWHoke/3XPdfViBYCMTBn0ugAwAmJ6/uM1voDSnPc8Xz5v7/Z6B1C1zm9ZWWIFUHfbc/ndkFheQGUhRmwDEp4M1PbgswIkCLA2UiBBQIgcSHjsCUQOS4wWJACJwToJQKK/tBKARF+YAiDhQC0BSPQ/1VUBkBiaslEAJEZ//gikhSXsDZjSupcAgNXve4l3IL1LWGBASFjLgJBAw2yAkEDLgWMJblosjnpoeyyOerg4UUjw1cPiqMfLuwgJBrA4KoDvfPjV8yGdzYd0Nh+Sng8MyPnAACT+BkBCA3PS84GPUs4HZCKJQ8MkFJLglpupQIKb9kZlUW0/oYj5oCT46gkJcXmXmcoigHWmsv4HMJ4tMVxPJPvmZJv288+DgoI+alLQHwsKhf7cUBAtRQpw2IUV8i72YYV8DvuwgpQgBS1BClqCFLQEKeQY5QFAARIHAAqQMAYmUoAEAzdWoEB3JgUEG5YKZNspBYqFj1b4KiBagQFW0IBWQEwoCAAKGmAFDZCCBqCggQkKGrAIBQmMFiIUFDBYF6GgALu0USggtRVtFApIdXVAKCBlU7ZaAak6qUAWQSsgxgoa0AqIeaQCz0upwPNSKvC8hMIH5Q+bbaeb663kYwAAAABJRU5ErkJggg==",e0="data:image/png;base64,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",C0="data:image/png;base64,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",s0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAApFJREFUeAHtlgGG5EAUhqvRR+j7ZG4Q5AU5Qu6TAyyCVNBHmPv0EQabfVW/2b+e5B8Y1mALEpVP8qUz7zMpWc75/Tg+cj36+l3OnjhaAuDbr4yjr3K2+5HA3uw27OsvgPvhyKf5kQA3CQeAt+XjAkAxCgegeTVKENip0BjzLSy3b0aJbAA2mzMVKJH9QgVWmzIVKJH9QgWWtzHzAsHsFypgCQBujUcBSFaBoQDcBwngUYBHfxt55/ZZS3cfHLh396ndJrr2tz6V9ZjbG/Nh25CwLCqQNVyPClGiAkEhSlwpRImzwv4KEmeF50eUOCm8A6NEq4BjlDgpgAsSFhTCVBCgQhxNAlSgBIGgECQARIUoAeAf94ESog+Q0H3A0n3A+qoPWLoPWLoPWF/1IUjkX+c+oHK6D5+V031A5UQfcO/99TxEH3Dh+eGg6oMvnwtKNH2gQmEO2Yej3J8S7EOjAEj3AXOh+4C50H0AoPtAQPUBgO4DAd0HALoPAHQfAHyjDwRkHwDIPtgnYKIPBEQfCIg+ELjuw0ZgvuzDSmC67MNCYLzsgxXAZxNn5z5sFci5AvNFH9bBgTKbvv2YLvqw9A6U2XTgPl78/2CdA2U2/fRmbR/sbaw4vgq+gM21D1anG31YB3wVfIHHhD7U6UYflh7vA/f7iD70DtzQB+uS8Qe+GfrA4XQFBzCbDlQJjCYmoygk/tSpSrAPUGgBSBgBV4hAkSBQVmoBbsLBT4cAcBNv4ed9ALiJSPl5FwFuckUA6z/wkwH80WqAXVEABkcDGD0NcHgVgPUNYMb1TQCIAlJxtTCPqJUAUCbMqZSggpaAgpbQCpDQCpCggpTQCpDQCpDQClgMk5JgmIQEw6QkoPCz1h+YGLTO62qDAQAAAABJRU5ErkJggg==",i0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAApFJREFUeAHtlgGG5EAUhqvRR+j7ZG4Q5AU5Qu6TAyyCVNBHmPv0EQabfVW/2b+e5B8Y1mALEpVP8qUz7zMpWc75/Tg+cj36+l3OnjhaAuDbr4yjr3K2+5HA3uw27OsvgPvhyKf5kQA3CQeAt+XjAkAxCgegeTVKENip0BjzLSy3b0aJbAA2mzMVKJH9QgVWmzIVKJH9QgWWtzHzAsHsFypgCQBujUcBSFaBoQDcBwngUYBHfxt55/ZZS3cfHLh396ndJrr2tz6V9ZjbG/Nh25CwLCqQNVyPClGiAkEhSlwpRImzwv4KEmeF50eUOCm8A6NEq4BjlDgpgAsSFhTCVBCgQhxNAlSgBIGgECQARIUoAeAf94ESog+Q0H3A0n3A+qoPWLoPWLoPWF/1IUjkX+c+oHK6D5+V031A5UQfcO/99TxEH3Dh+eGg6oMvnwtKNH2gQmEO2Yej3J8S7EOjAEj3AXOh+4C50H0AoPtAQPUBgO4DAd0HALoPAHQfAHyjDwRkHwDIPtgnYKIPBEQfCIg+ELjuw0ZgvuzDSmC67MNCYLzsgxXAZxNn5z5sFci5AvNFH9bBgTKbvv2YLvqw9A6U2XTgPl78/2CdA2U2/fRmbR/sbaw4vgq+gM21D1anG31YB3wVfIHHhD7U6UYflh7vA/f7iD70DtzQB+uS8Qe+GfrA4XQFBzCbDlQJjCYmoygk/tSpSrAPUGgBSBgBV4hAkSBQVmoBbsLBT4cAcBNv4ed9ALiJSPl5FwFuckUA6z/wkwH80WqAXVEABkcDGD0NcHgVgPUNYMb1TQCIAlJxtTCPqJUAUCbMqZSggpaAgpbQCpDQCpCggpTQCpDQCpDQClgMk5JgmIQEw6QkoPCz1h+YGLTO62qDAQAAAABJRU5ErkJggg==",a0="/smeditor/assets/parts-9a3f637b.png",Q0="data:image/png;base64,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",I0="/smeditor/assets/frame-d599a2fe.png",c0="/smeditor/assets/parts-b37af2cf.png",D0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAIAAAB6Pz7pAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAACxZJREFUeJztXb1uJEUQnp5Ze9cnJCR0EgkBOTnxBQS8AGSgk0gQPADvQE5AdikJEQ9wGRcS8gikJOdde36wp+eneuqnq2a8fXuov8BerWt6er31df12z654z9F13bueQoDT6bR458WLVw8/X//zPX3B30dS/s2/L+e3wEc8/rUcwMt/+WaWd+CvPy2HH8f/8VdyOsev/iTlf/v0JRZ+wMev6PF//4b+vB99R3/eX374lpT/7OuSlH/z8yek/PHzL0j558//IOV35LsZT48r8FrD2Wvb8Luinl674Cb0V3yohr9PC4g8qbKtmb8wKrTU2whc13J3Zt5uHn/Ok3a02IjD4fDws22Hu0wvMgFS4Qq9I2scJECo0SR2RdOLYCH6K96X7TiLWXWEO7i2YSTo8V3Fj0XK90Q0WPMlAQqZAwsCFKPvkAmQCv4/DVS5c/MbBPbW4eEK3YGbMcNXk+6otK5s75nhmYlaCdAPOgzprZITF3XXgDmAYRjs98Q8H/iQCZAKcEX3369GHq794gVVcS/9GeGmaqHid11kOmXDuUA0zBagRS6QGN05bwHUuLm5Id/PBEgF+J+OKFsPswWwKYS3AEDHIskEPgagYSaAxf15RNWYrnj27FmLOZYJkA7GoDawAArAGEDFrzkGgGAvddAFUqjeuhjAckHdT1b7D8IxgEcmQCpYg2CjBaiGGGD2lmTVOFRg8Z9e8FroCTCEqk6heuYsUAfmolDr2QVSccAToECfMRPgjPAZ6AEoCMZfXCCPLQBSTii/U8QAUP6giAGgfNncTa85jYPyGgsQyAdrM83DQD6IAegZQXkYA0A7kAmQClYXaEMMMLJMMjGLGEAWfhyzhQTwaSxR3ugClXi4SFASJwAEzAJBI5AJkArYBZKBCRPJAtW9iKJk0OPQxwCBERBvMFiAYXiFv74yBtDOv1hmgVSFsAm5EJYcngD6SG+VBYC5FFmhpzoAmJHUVjJYAFivdZKbb7YAQwgAxxd1mkiDip8X1QFyISwt1lkAdR3gqrClKfcVrInG5V2DmopkeTMBsAu0og7A/o8WFsAjF8ISAvcCyUZ7ZRZIi5sqWO+jFLASwJoFKlu9cfQXGOseVCW4yBYgHawukCILBLGzWgAiBpBQWi2AUbMICxC5oDZUSXoLQHp4mQCpgNOgMlZmgbQtZTgGkDXQtT0BBh89rnligEBgIICeBYMF0HLg+ppOw2UCnAVBRt/DWwDm+yLkRQuA5Su2HZqWP1AxwBQ3E/NpbufxXXAVLS/GAFgeukCa8Z1YCCPmwyATIBVEAhDYq2uiPXZDGvQRmmX0AGIATSzgdo9ZIKia8szMQfCunQfVNAsaK8EcMgFSwVwIA9+rQqM9AfS59H0YdcaD4J1Pg/ZNEG7u5+YuNPcC7bYEwes5kAmQCokKYdoLfC9Q2A0hje+q3sVyUEgigLkQ1hPAqYN+ayGMQyZAKlgJAINgVR1gVghdEDx2g+qSoe6qVslN8mYXyGYBiDrAqs3hmQCpsN0CiLDWAfYl0Q0qYXfm/QCbXKARdg5kAqQCrAPoN8So5a11gOWOsJi8MxLA3A6dCfA/x5ktAAyCx/0AcjeoL4QFu3DFG8BN6H47s9iqYLYABRh/vgkLWAibrrIHApkATww2A80QgJXHFqCT5McdYV58voyTHwthy2QoJz+s0EEGVBqfIwA/PpgE0GNWflEIGz+FvgLgkQmQCkljAE07NO4GFS+roMtxhnZoozxRCc5B8EVjXRZI/aVSMYADP9HwsBKsugHeUS45HCtdID2mGCDwf8w+UCZAKpzdAsy9QKEu0Dfut0SCI7FiJHAVkpCP7XkCC6DeD7Bq7ffIBEiFLRbAmAUKt0TSN+5jgGAjZESLYJZmqFdxhxn2MBMAfEhFKXtZB1jLgUyAVNiSBlXAmgY9GI9GDHkUn1YiF2hD/scjEyAVrBYAyqvOBq21oj3g0Yiqjujd3P8jJ0A9rO3Q3gIYGgBxDLAKmQCpsKUVQoEq2BMcpwFshy6YY1EgBoV22vHNK3pli2FdOVu86OQFZAI8MV6/frl4R85MZ/l3K58JkAq2s2uLAj5nAy64THaoGaLO5drMueLHZvZRoAv0IaMRw1YwtQvUGTsnimbuTtWs5920nT27QO8HPAH03zCUV6DmngPAyJ+asQlCGQTXcNLxD8A+74KTb4zNeW2lFpWQCZAK6yyAmjCQAJqT4Y5tOY9fLF5SgPN38Rigsx3aEFoMTSTfhrYtp0EvHVtcIAVGAuBCGDN840yFsNAC+JuIiR4rARo8A+kTdJAA8FJj9ikTIBWsBPBHcaoXtobw9iUFImMAAV2DRxMVlCEAdw0lL85rIkAg5TIBLhWJLIBHXKVPIwG0zXA11CxFEGwlgDVobmHQr5wUgUyAVNhiARQ+cdN/lbgdmsOxXe4EiOhPU83SoB1amJAJ3bKVKYYFAXIMcIEIMtAKAgTyCgsA5eveBZI3xEB5nwWSN8RA+c7HAB3oMEXJ0EBeQYBwfP8L/BnRIJB/JEBE+zV7AzIBUsGaBsUWQASXBuXw4AKZtkQWta25Z1MWSAPyWNu8JfJykTQGiOPWGgTXRlWx1gFwlikyPkXITIDLxboYwENhBxrwVWrU4IRigMiFkACKG9gtwGYC5CD4orHdAogact/HAPqDsXwWKPCCRAXq7ntVQQdjsfJGArS1P3MODiHOZ0mAfDDWhWO7BRARZoHiFx0bZ4oBuqZXFdgLJPdgrrIAhkU8IEDuBr18eIXWf1MnQ298McYA+sNxT22pTYB6mfqxCw+f28zKr3OB9B9gJkA+HPe9gLcABgIAhfAQ1YLqBZJwBJVdfDw6hifAQEpAA0tlV0ILCm0qmmUCXDKIDDQkAPpqCfm75RuyfAN6gbDmYPkjqgTHzvvvn7PbgeO05NN7RAJg+bZ0wWxi43e4EiyOzyETIBVwoUeGD4INFsCWpx8LYcrhi64kHjJXCBbAmAZtHbJ4kQsq09p/d3eXH5H0TgGDYI17L1oADHMhrC1ND8lrK5oAXO+ZtbDVyg9FJS6wfd7jkX7GWSZAKqxLg0KXSV0H0OCWigEEdAwBWFgtQPkUhTD+f3Q6EZXF/JjUhDDu8LJagPshCwT3VcXrAIsZCUwYCKB+ULY5CMaRr2gTUB2giDT/IQuQH5SdFmcuhNVDIUybR6RiAFHhyut5DgqTYSdA/2sglWKdMBbCFhbgYe33LzIBUmFLIUyBZtWWSH0poK3m3fiDnZGvsdYBgvUeZYSoCS3lRUALAKPhTIBUgIUwTRB8/ixQ6PxEdGiwAPGJjDJWC4D/HfKMjASAFmBa/otMgCcHm4HGWZFOlGcsACdfo7MXnSjPHYvCyXsL4Pq106/W8vgcAVj5Ejo/s0Kz8kwhjJO/vR2ec7xIhmYCpMKWLJACYy9Qp7zoOB+LAuG4A+y68goI0+W2ANZ2aAe22mggFsIwvAsE136PTIBUgCu6fkOMGmYXKIwBilGhP2DkPQH0MPcCWesA3c7U//xAAKz9RSZAOnAPcOH0ylgHOHcM0JY2VTETwNrS09g+79u3b8n3MwFSAQXBg8pxBDBngeBAccbAHWEatBXaECNqrJkAJZjP0GdnrQNIc5piAIhcCEsIFAQPK/ANI8+dDcosfDWIATSwHo3YehdI36O9ygIME9C4Qx0+GlEs/PVZIOgF5UJYWuBeIBmcBWAIA10gTTHMxwCFuhTQlWfeFG/uBVoQIHL5IgjOhbDkeKodYSwBloUwGUfipDcJ1hjAngUyHulGu0AsuGa4/wBTjZtfVontJAAAAABJRU5ErkJggg==",M=`precision mediump float; +import{q as o,r as H,s as r,b as G,u as E,O as f,v as Q,w as I,x as c,y as C,z as F,X as K,H as a,L as u,Q as P}from"./ChartManager-b82bf91a.js";import{A as h}from"./AnimatedSprite-c4817119.js";import{H as v}from"./HoldBody-3932542e.js";const L="/smeditor/assets/downBodyActive-dd1fd694.png",k="/smeditor/assets/downBodyInactive-c781a303.png",Y="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0dOV1YU4MAAAPKSURBVHja7d1dTupQFIbh0pwJkDBA4xjEQVjGcOIATZwBnFslHC1l7b2/v3WHiUL6PimUwHI3Xc1pWS5fbz8/vU5bZn843/07nx/zVDVb7h/5sW29/7/vb99uvxyPu6+356nRbHnAldEqg7HGXzPt/rIIAuX4zQGwI1CP3wUAKwKH+N0AsCFwid8VAAsCp/jdAaAjcIs/BAAqAsf4wwCgIXCNPxQACgLn+MMBICBwjg8BQAEBa3wYAMwImONDAWBEwB4fDgATAoX4kAAYEKjEhwWAjEApPjQARARq8eEBICFQjE8BAAGBanwaACMRKMefpmn60+NUWXVAPj/mu4PsD+fN94/4yeZqXHPr+NWn415nAtSPtVe/vplbP2BGBOjfaag8ll2frBgQqH2hBe5FIDICt/jDrgIQETjGH3oZiITANX4pAMYvf+wPZ8r4lfdfegZQ+kKoQ/wmTwHKCBQ/QDqjHCh0BKqfHs5+AOP4za8Csh8AO36Xy8DsB8CN3+19gOwHyH6A7AcAjN8VAAuC7AcwRpD9AMYIsh/AGEH2AxgjyH6AwZP9AJM3AAUE2Q9gjCD7AYwRZD+AMYLsBzBGkP0AxgiyH8AYQfYDGCPIfgBjBNkPYIwg+wEKDlj2A+AdyyZngOwHyH6ALs/J2Q+Q/QDZD8D6IjD7AXDiD7sKyH4AjPhDLwOzH2B8/FIA2Q/A+T5D9gMYx2/yFJD9ADzxVwG4/v/zrggY469pt7v1w9OyXK5/9vz0Sqe8CpVK/JfjcbcKQBB4xP8RQBDox/8VgDMCh/irADgicIm/GoATAqf4dwFwQOAW/24Ayggc428CoIjANf5mAEoIKoct/kMAgoA//sMAgoA7fgkAdwTM8csAuCJgj18KwA2BQvxyAC4IVOI3AaCOQCl+MwCqCNTiNwWghkAxfnMAKghU43cBwI5AOX43AKwI1ON3BcCGwCF+dwAsCFziDwGAjsAp/jAAqAjc4g8FgIbAMf5wACgIXONDABiNYMuoxIcBwIRAKT4UAAYEavHhACAjUIwPCQARgWp8WABICJTjQwNAQKAeHx7ASAQO8SkAjEDgEp8GQE8ETvGpAPRA4BafDkBLBI7xKQG0QOAanxZAJYItoxKfGsAoBErx6QH0RqAWXwJALwSK8WUAtEagGl8KQCsEyvHlAFQjUI8vCaAKgUN8WQCPInCJLw1gKwKn+PIA7kXgFt8CwFoEjvFtAPyGwDW+FYD/Ibg1LvHtAKxB4BTfEsBPCNzi2wK4hcAxvv2cluWy9nVBJpPJZDKZjNL8A8iasRIljXPgAAAAAElFTkSuQmCC",z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0eB7cUHesAAAO/SURBVHja7dw7VhtBEIXh0WzGGWtxahZop6yFzKuREwKQBcy0uqvuqzM4Bwv6/yxN61GX7f91ff/F6+vPbWT9/vPj9M88//q7zVojt4/8u43e/tPTy+23Lu+/2LdFa+QXnhltZjDW+EfWMgAqCJTjLwfAjkA9fgkAVgQO8csAsCFwiV8KgAWBU/xyAOgI3OK3AEBF4Bi/DQAaAtf423bzrNDbmvJMoOqGsf0tbc8EstwTuEPeETaPHQHzvdiOsomsCNgfwmAAMCJQuH6BAsCEQOXiFQ4AAwKlkwskAGQESvGhASAiUIsPDwAJgWJ8CgAICFTj0wDoRKAcf9sWvBZwb8NYX2xBfGfz2X+/9LWAzzas++1dI7eP+rb22dc3e9X/TCYE6J9pmLmXpdcADAjUPtACdxGIjMAtftspABGBY/zWYyASAtf404+BLhvJdKwtPQYqfSBUIX7LQ4AyAsV3D+8oG4WOQPWt45kPYBx/+Skg8wGw45ccAzMfADd+2fMAmQ+Q+QCZDwAYvxQAC4LMBzBGkPkAxggyH8AYQeYDfFyZDyD0t2Q+gHF86IcAJQSZD2CMIPMBjBFkPoAxgswHMEaQ+QDGCDIfwBhB5gMYI8h8AGMEmQ9gjCDzATIfoC1+5gM03hNkPsDkDct8AMy9zHwAsvj0F4GZD4ATv+0UkPkAGPFbj4GZD9Aff/oxMPMB8I6amQ9gHL/lISDzAXjiHwJw5y7EEgFj/CPtLp98/3r7jZG3h6tcEwjFvxwFEAQG8b8DYI9APf4RALYIHOIfBWCHwCX+GQA2CJzinwUgj8At/ggAWQSO8UcByCFwjf8IABkEMxdb/EcBBAF5/BkAgoA4/iwA1giY488EYImAPf5sAFYIFOKvAGCBQCX+KgDSCJTirwQgiUAt/moAUggU41cAkECgGr8KADUC5fiVACgRqMevBkCFwCF+BwAKBC7xuwBAI3CK3wkAEoFb/G4AUAgc4yMAgEDgGh8FQCuCkaUSHwkADQKl+GgA4BGoxUcEAItAMT4qADgEqvGRAcAgUI6PDqAdgXp8BgBtCBziswAoR+ASnwlAGQKn+GwAliNwi88IYBkCx/isAKYjcI3PDGAagpGlEp8dQAsCpfgKAEoRqMVXAVCCQDG+EoClCFTjqwFYgkA5viKAqQjU46sCmILAIb4ygIcQuMRXBzCEwCm+A4BTCNziuwA4hMAxvhOALxG4xncDcBeB+764ATiCwGpPHAF8hcBuP1wB3EPgvBfWCK7ZhqysrKysrCy39Q9gQ/q5SfcuvQAAAABJRU5ErkJggg==",p="/smeditor/assets/leftBodyActive-75d41033.png",b="/smeditor/assets/leftBodyInactive-bbc074cd.png",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEANIA0gBQ7xAn7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI2I6Ho7PYAAANMSURBVHja7Z1bTgMxDEU7VjeAxAJR10C7CMoaEAus1B0Av6XiMY/EsX2PJT4GoTHpOZNJMhl32t3F6/n8eXt8eDrt1sTD48eiv79ebNcqluZumX9N7p7/39v7y7fj5+Nxuj3e7zrF9WKzP4xM8HsBHhXW8+RzPtgqVz4CrPiAM8IfIUzPnDaqAZmvfE8JeueyEQ2p0O17SOCRw7U/u16s1D2/JyCvXibtCCjKgC/LOX+LPfBzAZPvAZjqCQsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOD7xh74f+evLpcB/+/81XYAhRQgKnwFCQz4ta/w0AIAX1gA4AvPApTgR5/WGvDjrTN4CmrAjwXfWwIDfjz4nhIY8GPC95LAgB8XvocEBnztqaYBX3udIczTQOoDFBOA+gA5gvoA1AcY17VTH2B8TuoDBAPinYv6AIEloD5A8Hs+9QEGBvUBiq0DZB7tUx9AGD7TQOAjAPARAPgIAHwEAD4CjIRPFBEA+MICAF9YAOALCwB8YQGALyxAS/hMAZMJAHxhAYAfI/YV4fccU3jkoz6AMHzvQbEBP2Y+6gMIw/fMYcCPCd8rlwE/LnyPnJbZXm8YFVcsDfi68GcJcP/980RxAZ6Px6mFBL0XM7xX/6quNv7YKiTQkeDXFkWUwPsLHaJ8gcSw+gBIMF6CLbnmsJrmnOj1fP68/93h6cSaQOeZQWv4P13Q09wTIoFvPg/4iwRAAr98XvAXC5BJAsVYCn+VAEhQB/5qAZCgBvxNAiBBfvj/rgP8F1lWDIHfSQAkyA2/iQBIkBd+MwGQICf8zYPAiAPDpQJl3++wBX7THoCeIB/8LgKMlkDlTeMW8LsJgAQ54HcZA0QaE6yRp/UgK3q4NAwJxAVAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAggERet9Vtk0la+REgGISIAASIAASIEA5CRAACRAACRAACRBAT4LKkqRvWW8JqvcQJVrXUoL7H24BYhIwBkCC1ZFRuJLvu7V6irgVPo+DRSRgQ4iwBGwJE5aATaHCErAtXFgCXgwRloBXwwpK0HrtAQFEJOD1cGEJKBAhLEHlsnEEQRAEQWjEFz4LZYAP3C09AAAAAElFTkSuQmCC",R="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3FABOeLgAAAM3SURBVHja7d09csJADIZhW+O7pOMsaeGASZuz0HGapGUIMP7Z1Ur6XnVkMgj8PdjrxV7m6X/93j+4Xj+nPfX1/bHp/y/n29SqtvZu2X9P756v73T6efzTfP9gmTrV5XxbvTEyhd8r4FFlPZ98zYat8skHwI4NnDH8EWB69rRRbyDzJ98TQe9eNuKNVNjteyDw6DH3OgvwqAjH/Gij/q1nATYlrSgDvizP+aoWws8VWNoxAKd6ACB8ABA+AAgfAIQPAMIHAOEDgPABQPhjayH89/2r4zLCf9+/2hVAIQFEDV8BgRF+7U94aACELwyA8IXPApTCj35aa4Qfb57BE6gRfqzwvREY4ccL3xOBEX7M8L0QGOHHDd8DgRG+9qmmEb72PEOYbwNZH6AYANYHyFGsD8D6AON27awPML4n6wMEC8S7F+sDBEbA+gAJjvmsDyAcfqbnDD8PkHm0z/oAwuFzGkj4ACB8ABA+AAgfAIQPgJHhU0UAEL4wAMIXBkD4wgAIXxgA4QsDaBk+p4DJABC+MADCj1FLxfB7jik8+rE+gHD43oNiI/yY/VgfQDh8zx5G+DHD9+plhB83fI+ellmvdxgVZyyN8HXDXwXgyZ0lVHEAcwsEvSczvGf/qs42vtoDgEAEwbtDQDgE3j/oEOUHJEauDwCCwQiO9FqT1bzyuX4f/7DntnHmBIaHP+8FAALnfh7hbwUAgin+18Fbwt8DIA0Cxdoa/l4AICgS/hEAICgQ/lEAIEge/pp5gM2AIs4YEn4/ACBIHH4rACBIGn5LACBIGH6LQWC4geFWQAWudziUoXm8IPYEMcPvBWAoAqE7jZvsvc3zBYIgVvi9xgBhxgR78LQeZMlIAgEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEEQqywY08kUlkX9pPSuAdAgAAAIAgAAA5RAAAAQAAAEAQAAAPQSVkViB99AVQfU9RKVLnJtMGx+tJ/iYCs60J2AMAIKWn34OASqHA74OFkbABSHCCLgkTBgBF4UKI+CycGEE3BgijIBbwwoiUN6GigBaIuD2cGEELBAhjEB9u1EURVEUlbz+AOnsq2p4bKxbAAAAAElFTkSuQmCC",x="/smeditor/assets/rightBodyActive-07f95372.png",y="/smeditor/assets/rightBodyInactive-fdefc2a4.png",T="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NtUuOVwAAAOHSURBVHja7Z3RTSsxEEUdKw0gUSCiBkIRhBoQBSLRQeDr6YWQEK/j8c7MPfcvIO0sPmcd24RhU07yut9/Hb9+fHguPbm7PxSLfH7UIdfpub9RtXvq99Z+e3/58fppt9scv96WYLk2cK0D9flRF0O4uz8Mk2BJ/ZHinaYW4fQM7MiZraW+JXxTAaxvfFRNzxLMGMPqDcgatTxKMGvsqmcwM2t4kmDmg1O9P50zr+1BgtlvndOqWfxgXq5pteWdkanbwDUWhtZbNIstYsoZgC0iAiABAiABAiABAiABAiABAiABAiABAiDButlmB3Vu0Nf4UMfx/Xg6Maxq8Ec/idFngqoGHwlYAyABAiABAiDB/F3A2p/Fn7U6j7Q7qBGfsghPYpSZoGaEjwSOBFh7kYMEKwrgZa+LBCsI4O3cGwmCbgMzQfAoQYhzACQ4aAvwbxBGDURECaxCf4CFtekPkCj0B6A/AP0BvAFZoxb9AYJLQH8A52sA+gO016c/QMBr0h8g4P7X8xYx5QzAFhEBkAABkAABkAABkAABkAABdEJ/AEJ/AOJTAgQQlwABxCVAAHEJEGDCVtCzBAggLgECiEvgvj/AUgiWg3lar+dzA3+NDf0BBlzTchCt69EfAAnoD4AE9AdAgkJ/ACQo9AcIIZ51PfoDIAH9AUhf3t5fNAWYfaBiXa/n+ufgP+12m/QCAL8dvqkAXvoDzDwaHl3PGn6TAC3vIx4kAP5y+KWUcvabr/v91+nXHh+e3a6Sgd8H/6IAkSQAfj/8PwWIIAHwb4N/VQALCTIlOvwmAZAgL/xmAZAgJ/xFAiBBPvhN5wDXCt1yTqAcD/AXC4AEueB3CYAEeeB3C4AEOeAvXgS2LgwjZekitncR6BH+TTOA1Q3x5M+DP0QAJQlm/efTWfCHCaAgQUb4Q9YAnjPq4Cor/NQCAF9YAOALCwB8YQGALywA8IUFAL6wAMAXFgD4wgIAX1gA4AsLAHxhAYAvLADwhQUAvrAAwLdNuA4hwBcXAPgIAHwEAD4CDI4ifAQQh48A4vDlBVCHn1qAa3CBLzADXIIM/P/ZluQZ0a00K3wWgeLwQwowswlFdviliP06GPhBBZgtgQr8UALMkkAJfjgBrCVQgx9SACsJFOGHFWC0BKrwQwswSgJl+OEFuCTBLVFre5f2z8OBLyTACAlUG16mbxEDfEIIIYSQ3/kGeiN5xirmRdUAAAAASUVORK5CYII=",X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NUwnaOYAAANgSURBVHja7Z1BUuNADEUdF3dhx1lmyxxw2HIWdnMas6JqKpCx3ZbUkv7TLiFJR/1eOurGiNvyPbZ/b3x8/FpG4s/b8+IRv1//mrzOyPuzGntk/NGxX17e7++6PbxRQQDLiaoiwZUx9wRYF+EYmVhLsY+MbyncT7FmmtwZY2aWIGIO12xAZoyVUYKouVszg4kcI5MEkR8ctyKw2q4gS2FoHWmKQI9JyvKas3Y8pVaAatFlJWAbyEowtwhEAgRAAgRAAgRAAgRAAgRAAgRAAgRAgjTR/iTwp0mfeWWP9fh7IX0S+AhO9EUdmVeCVQ0+ElADIAECIAECIEH8LiCyYq523b/X7iDNLiDa8gqXfGdYCdaO8JEgkQCzixwkmChAlr0uEkwQINu5NxIU3QZ2gpBRghLnAEjwrC3A1yRYTURFCbyC/gAT4dEfgMJw+mpBfwD6A+QCMmMs+gMUl4D+AAmLwKiikP4ARYpA+gPkDPoDNF8J2AayEswtApEAAZAAAZAAAZAAAZAAAdhSIgASIAASIAASIAASIAASIIDAVjCzBAggLgECiEuQvj/AWQiek+k9Hv0BDF7T86KMjC3nSnwFeCaGBMkFiEgICZIKEJkIEiQTYMb3GRKwDQwXz3s8+gMgAf0BCLMzAA0Bov9Aw3u8kdd/AP/WXgDgH4fvKkCW/gBqR8Nn4B8S4Mj3SAYJgH8e/v9+uN3fceWXQt5VMvDH4O89oIQEwB+Hf+RBqSUA/jX4Rx9oKkGnqA7/zIORoCH8s09AgmbwR54kL0En+IfOAfYGunJOoBwZ4I8IgASN4I8KgARN4F8RAAkawF+WZXm6+PzbfWFYTYKoIjYj/KsrgMsb4pMfB99KABkJorqHRsG3FKC9BB3hK3xyTQ6uusLvLgDwhQUAvrAAwBcWAPjCAgBfWADgCwsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOALCwB8xyjXIQT44gIAHwGAjwDARwDjUISPAOLwEUAcvrwA6vBbC7AHF/gCK8AjyMCvlYDbfzFTh08RKA6/pACR/Qe6w6+UTHh3MgX41RIKk0AFfsWk3CVQgl81MTcJ1OBXTs5cAkX41RM0k0AVfockL0ugDL9LohtzQrIb80HCG3NB0hvzQBAEQRAEsR+fBPrG1xa4jMQAAAAASUVORK5CYII=",S="data:image/png;base64,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",j="/smeditor/assets/upBodyInactive-87a7969e.png",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5IlF3wK8AAAPCSURBVHja7Z1bbsIwFETNKBtAYoFV11C6iNI1VF0gEjug/YUoRbWxfR8zV+oHH9TG58QhUe6wK6v6PJ1+bl+/vryX2tofrtXvuZxRelXL+BHm2DL+1/fH3eu343F3+xq9Fykr/N7/u+Uzj/hsEHxuCcAM/3KGOQTr8VGMytP5NKIEoQXw+GWKVQIIPrcEEHxuCTBr4pGuob1L0HMtMeMIj3gDxasEvXeIxfM2b32peTmjesz94dptDWacDuyuP4LcZ/Byx45aAOubTJklgOBzSwDB55YAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwBm+PvDNeWDniEE8PQMIbMEYIfPLgEEn1sCCD63BBB8bgkg+NwSQPC5JYDgc0sAweeWAILPLYHyAcglUD4AuQQQfG4JaPMBoksQWoDo8DNJAMHnlgCCzy0BTT5AJgmUD+C0lA9Q/OUDWEgQKR9gKUFqxtHVa4yeEqS8DPR6fmU5VYUSYPY3bDYJwAz/r74AJgnADP/RWCwSgB0+uwQQfG4JIPjcEkDwuSVYosKvAdLaF7Ae49GYlomioXcAj/Bb3qt8AIfwZ5fyAYjhR5UAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwDB55ZgiQb/6/vj7vXry7sp0Jb5WP8a2dAdQEd+rJ0Ags8tAQSfW4JQ+QDr863Hapmj8gGSwI8oAQSfWwIwwr+csfnHKIHrfIBR8Gcu/ggJKPIBthbu7Xjcjd6Bnl3crTn2lKC3pBhxhD27tc6CP6o3sKcEo09T7i7EZ8J/dF3tRQLz7wAzJ20BP7ME/xkLXiY9Av5WzfrNoCjrCQ+T9gA/kwQ16wnrSXuCn0GC2vWE5aQ9wo8sQct6wmrSnuFHlKB1PWEx6VnwvZan9cTsSbPD97aeS+2kP0+nn57bFyN8T+sJS2DM8L2sJ6wmLfg+1hMWkxZ8P+u56CjOeToYvgOocpQEkAAqCaCSACoJoJIAKgmgkgAqCaCSACoJoJIA0euZ5g6GBBOKHaAFJEt8Dc0poAYoU3YR1XeA2T8dKwGCScCYWrYUwlI8nS4DVVkEsAxdiJhetq6QD3WumylKmR8anaXDKexTvZYSZGpvC/1Yt4UE2Xobwz/XP1OCjI2tKRo7ZkiQtas5TWfPSAkyt7Snau0aIUH2PIN0vX09JWAIs0jZ3NlDApYkk7Tdvc9IwBRjk7q9u0UCtgyj9P39WxLUVPYMBIqAh1YJGAIwaBI+aiVgST+hinj5rwSKvlGpVCqVSpW9fgGbIppuMBFz1QAAAABJRU5ErkJggg==",q="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5JlYaBLYAAAO8SURBVHja7Z1LUt1ADEXtW94LM9aSKSwQpllLZqzmZZQq6oUX4nZ/JN2jGVDgRud0t21aYt/+jtvnD379+rGdjbf3p9Pf8/rysfWKlutnGGPL9Z+ff95/av/8gXonqSr83j+75Xce8bsJ+N4SyBn+68vHcgirr69tUUTaTzNKkFqAiDdTrhII+N4SCPjeEmjWwDM9Q0eXoGcuNWOGZ3yBElWC3ivE/sXnLr8JjPQMfjVhqx9vr8b0N4GV4EdYCUo+BmabhZUlEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lkDP8t/enkgc9UwgQ6QyhswRyh+8ugYDvLYGA7y2BgO8tgYDvLYGA7y2BgO8tgYDvLYGA7y0B/QHMJaA/gLkEAr63BLb9AbJLkFqA7PArSSDge0sg4HtLYNMfoJIE9AcIGvQHSJTgLFvd1fiuP8CxJYkZs6vXNd7en0KeXA71HiDi/uqyVaUSYPYdtpsEcob/qC7ASQI5w//XtVwkkDt8dwkEfG8JBHxvCQR8bwlCvAkcfZikNeGjrzHjZVH4TqFR4Z/9XvoDBIQ/O+gPYAw/qwQCvrcEAr63BAK+twQCvrcEAr63BAK+twQCvrcEAr63BEc2+PfvtlefWm4Zz+vLx+kcjTpoKma+90og4HtLIOB7S5CqP8AXf9sOFy1jpD9AEfgZJRDwvSU4HOGPrg38PPazj6ktj4ghVoARNe0z4Y+agSNWAov+AA8St49egTokdx8pQW9Jj5kzLBr8P0vt/dc6LMP7dne6unU7KPkUEAn+o70/ykowOr6tC9i2ee/b/xP+5bqFR7O701a1Z8qnopg7YuafvdMfdPcdOp+KMOgI8CtJcCafWj3oSPArSHA2n1o56IjwM0vQkk+tGnRk+BklaM2nVgx6FvzAESafmj1o4MfK59Ew6Fvn5csRfph8ajEwZ/gh8qmFgwZ+gHxq0aCBHySfB7O47HYwfAUgCgQCIACBAAQCEAhAIACBAAQCEAhAIACBAAQCZI8rFT4OHUwsVoAWkC7ta2y2gDNAnXoXWd0DzP7XsQiQTALHrmXHZhi0p+MxkKgiwMqmCxm7l91H1kOdy5oufAN/RwADCSqVt2U/1j1dgmq1jRXO9U+ToGJha5XCjuESVK1qrlTZM0yCyiXt1Uq7uktQvZ9Bxdq+bhI4NLOoWtx5WQKXTiaVq3ubJXBqY1O9vPu0BG49jBzq+2/kyFuAKxKUz49Th48bufEW4IwEtL4hCIIgCKJ0/AYcP+o66BZ87AAAAABJRU5ErkJggg==",V="data:image/png;base64,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",W="data:image/png;base64,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",Z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAcBJREFUeAHt1LGtKjEQhWHf4JZAP7wOCPAGlEA/WwIBJqAE+qEEAnjGiNGc82vjm6wTS+vD+EMaTym1tXZ9vZ5t7H09Wl+3z17LJ3Dp39vY+7q3vj57BFp8T8mWA7eoHHc9JRAIIURAEEH4BjZHQQjhvO+B34MghHDa9cDPJAghzNsCBAiOAMERIDiCBEOAAAQJW0EI4Wf3/v1OEEL4fdeo+zJFYSHMZfNW1Fqm+C7JudQRmP9NUjnu6gcjcKqHsIm2H4zAuR7l38X/7Qcj0GpLXZJ6p9VvR11Sn6Xuu0fLXVOnpv59pEBqtGg+DQQiCBYIRBAsEIgg5EAqK48zAgmmjzMCqW66LQIL82GdD+t8WOfDOh+Oy/PhPJ7eYXk+nMbTm5bnwzyeniCMsC1AgACEERwBAhBOAMIIRBiBCCMQYQQijEAECECAAAQICQECECAAAQIQIAAhBCBAAAIEIEAAQghEgACEEYgwAhFGIMIIRBiBCCMQAQIQQgACBCBAAAIEIIRABAhAGIEIIxBhBCKMQIQRiDACESAAIQQgQAACBCBAAEIIRIAAhBGIMAIRRiDCCEQYgQgjEGEEIkj4+/UfcWPZV43B2RYAAAAASUVORK5CYII=",_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAcBJREFUeAHt1LGtKjEQhWHf4JZAP7wOCPAGlEA/WwIBJqAE+qEEAnjGiNGc82vjm6wTS+vD+EMaTym1tXZ9vZ5t7H09Wl+3z17LJ3Dp39vY+7q3vj57BFp8T8mWA7eoHHc9JRAIIURAEEH4BjZHQQjhvO+B34MghHDa9cDPJAghzNsCBAiOAMERIDiCBEOAAAQJW0EI4Wf3/v1OEEL4fdeo+zJFYSHMZfNW1Fqm+C7JudQRmP9NUjnu6gcjcKqHsIm2H4zAuR7l38X/7Qcj0GpLXZJ6p9VvR11Sn6Xuu0fLXVOnpv59pEBqtGg+DQQiCBYIRBAsEIgg5EAqK48zAgmmjzMCqW66LQIL82GdD+t8WOfDOh+Oy/PhPJ7eYXk+nMbTm5bnwzyeniCMsC1AgACEERwBAhBOAMIIRBiBCCMQYQQijEAECECAAAQICQECECAAAQIQIAAhBCBAAAIEIEAAQghEgACEEYgwAhFGIMIIRBiBCCMQAQIQQgACBCBAAAIEIIRABAhAGIEIIxBhBCKMQIQRiDACESAAIQQgQAACBCBAAEIIRIAAhBGIMAIRRiDCCEQYgQgjEGEEIkj4+/UfcWPZV43B2RYAAAAASUVORK5CYII=",$="data:image/png;base64,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",A0="data:image/png;base64,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",n0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAgxJREFUeAHt1LGRo0AQheFeQyEoH20GMmgZCkH5EAIGjUEImw8hYGiubni19+YVNO5W3Y4zBv+KD3ZoM4+IuZQ1IuILe/m71rEzsy2YSllwYcHlNohSYutKUOD/gq93bHd61xvVtYTfvoOZCfMWRPT372AiQr1T/a2hQ4AFAhBrxOh3DkAAov6WdxyAwKv3GiABgddYg9FfTGhWDQZ/tgQN+s+HECRwewhBgq4GQqDgev94KKEJLrfLUwlNYHZ9KUECZ8JUQgMi1H3RgAh1XyUQQtFACU0w+g6Bg94bAu10YISAXY4cCLTLoQWBdj32Sgj9cJQQ+ukpYdKPVwkzB7/z4X+dD+VsPpSz+VDS+XAcgHAcgHAQEOFgyjFBX6TMh50X2XtLwHHlAyOEgo2PHBOmQltzaEGYC206H5Sg80EJO/OhvKdCm3z+9cpcsEnwOgmuz5NbXB4nyA9PHhOI7EUBcfCqU8QakSHw7zZB7B2oBiEBDIzghadoEe3ymwlil8CIXQIjdgmMOCAAsQVOy0wQEoDAiKUJQGDEygEIDeINGi1F4OF4KWIgmyL4lGD9In4+wjIEggSBIEO4JQgECUICRSDIEBooAk+RIMIlEESM/nJLEDH40y1BRP/pbgkievPOMkRv17tliP52uVmGGPTvFTFCcIzQZ1BEGhjmY4LAfDxGYD4mCMzHn7T+AIoBqFgX1z4vAAAAAElFTkSuQmCC",g0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAgxJREFUeAHt1LGRo0AQheFeQyEoH20GMmgZCkH5EAIGjUEImw8hYGiubni19+YVNO5W3Y4zBv+KD3ZoM4+IuZQ1IuILe/m71rEzsy2YSllwYcHlNohSYutKUOD/gq93bHd61xvVtYTfvoOZCfMWRPT372AiQr1T/a2hQ4AFAhBrxOh3DkAAov6WdxyAwKv3GiABgddYg9FfTGhWDQZ/tgQN+s+HECRwewhBgq4GQqDgev94KKEJLrfLUwlNYHZ9KUECZ8JUQgMi1H3RgAh1XyUQQtFACU0w+g6Bg94bAu10YISAXY4cCLTLoQWBdj32Sgj9cJQQ+ukpYdKPVwkzB7/z4X+dD+VsPpSz+VDS+XAcgHAcgHAQEOFgyjFBX6TMh50X2XtLwHHlAyOEgo2PHBOmQltzaEGYC206H5Sg80EJO/OhvKdCm3z+9cpcsEnwOgmuz5NbXB4nyA9PHhOI7EUBcfCqU8QakSHw7zZB7B2oBiEBDIzghadoEe3ymwlil8CIXQIjdgmMOCAAsQVOy0wQEoDAiKUJQGDEygEIDeINGi1F4OF4KWIgmyL4lGD9In4+wjIEggSBIEO4JQgECUICRSDIEBooAk+RIMIlEESM/nJLEDH40y1BRP/pbgkievPOMkRv17tliP52uVmGGPTvFTFCcIzQZ1BEGhjmY4LAfDxGYD4mCMzHn7T+AIoBqFgX1z4vAAAAAElFTkSuQmCC",B0="data:image/png;base64,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",t0="data:image/png;base64,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",w0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAgdJREFUeAHtlLHRozAQhSGgBPr53QGBl4AS1A8lECACl0A/lEBg3RrLbx743XGhZ36/ZD3jD/RJrLbw1OGWHoke/3XPdfViBYCMTBn0ugAwAmJ6/uM1voDSnPc8Xz5v7/Z6B1C1zm9ZWWIFUHfbc/ndkFheQGUhRmwDEp4M1PbgswIkCLA2UiBBQIgcSHjsCUQOS4wWJACJwToJQKK/tBKARF+YAiDhQC0BSPQ/1VUBkBiaslEAJEZ//gikhSXsDZjSupcAgNXve4l3IL1LWGBASFjLgJBAw2yAkEDLgWMJblosjnpoeyyOerg4UUjw1cPiqMfLuwgJBrA4KoDvfPjV8yGdzYd0Nh+Sng8MyPnAACT+BkBCA3PS84GPUs4HZCKJQ8MkFJLglpupQIKb9kZlUW0/oYj5oCT46gkJcXmXmcoigHWmsv4HMJ4tMVxPJPvmZJv288+DgoI+alLQHwsKhf7cUBAtRQpw2IUV8i72YYV8DvuwgpQgBS1BClqCFLQEKeQY5QFAARIHAAqQMAYmUoAEAzdWoEB3JgUEG5YKZNspBYqFj1b4KiBagQFW0IBWQEwoCAAKGmAFDZCCBqCggQkKGrAIBQmMFiIUFDBYF6GgALu0USggtRVtFApIdXVAKCBlU7ZaAak6qUAWQSsgxgoa0AqIeaQCz0upwPNSKvC8hMIH5Q+bbaeb663kYwAAAABJRU5ErkJggg==",o0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAgdJREFUeAHtlLHRozAQhSGgBPr53QGBl4AS1A8lECACl0A/lEBg3RrLbx743XGhZ36/ZD3jD/RJrLbw1OGWHoke/3XPdfViBYCMTBn0ugAwAmJ6/uM1voDSnPc8Xz5v7/Z6B1C1zm9ZWWIFUHfbc/ndkFheQGUhRmwDEp4M1PbgswIkCLA2UiBBQIgcSHjsCUQOS4wWJACJwToJQKK/tBKARF+YAiDhQC0BSPQ/1VUBkBiaslEAJEZ//gikhSXsDZjSupcAgNXve4l3IL1LWGBASFjLgJBAw2yAkEDLgWMJblosjnpoeyyOerg4UUjw1cPiqMfLuwgJBrA4KoDvfPjV8yGdzYd0Nh+Sng8MyPnAACT+BkBCA3PS84GPUs4HZCKJQ8MkFJLglpupQIKb9kZlUW0/oYj5oCT46gkJcXmXmcoigHWmsv4HMJ4tMVxPJPvmZJv288+DgoI+alLQHwsKhf7cUBAtRQpw2IUV8i72YYV8DvuwgpQgBS1BClqCFLQEKeQY5QFAARIHAAqQMAYmUoAEAzdWoEB3JgUEG5YKZNspBYqFj1b4KiBagQFW0IBWQEwoCAAKGmAFDZCCBqCggQkKGrAIBQmMFiIUFDBYF6GgALu0USggtRVtFApIdXVAKCBlU7ZaAak6qUAWQSsgxgoa0AqIeaQCz0upwPNSKvC8hMIH5Q+bbaeb663kYwAAAABJRU5ErkJggg==",e0="data:image/png;base64,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",C0="data:image/png;base64,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",s0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAApFJREFUeAHtlgGG5EAUhqvRR+j7ZG4Q5AU5Qu6TAyyCVNBHmPv0EQabfVW/2b+e5B8Y1mALEpVP8qUz7zMpWc75/Tg+cj36+l3OnjhaAuDbr4yjr3K2+5HA3uw27OsvgPvhyKf5kQA3CQeAt+XjAkAxCgegeTVKENip0BjzLSy3b0aJbAA2mzMVKJH9QgVWmzIVKJH9QgWWtzHzAsHsFypgCQBujUcBSFaBoQDcBwngUYBHfxt55/ZZS3cfHLh396ndJrr2tz6V9ZjbG/Nh25CwLCqQNVyPClGiAkEhSlwpRImzwv4KEmeF50eUOCm8A6NEq4BjlDgpgAsSFhTCVBCgQhxNAlSgBIGgECQARIUoAeAf94ESog+Q0H3A0n3A+qoPWLoPWLoPWF/1IUjkX+c+oHK6D5+V031A5UQfcO/99TxEH3Dh+eGg6oMvnwtKNH2gQmEO2Yej3J8S7EOjAEj3AXOh+4C50H0AoPtAQPUBgO4DAd0HALoPAHQfAHyjDwRkHwDIPtgnYKIPBEQfCIg+ELjuw0ZgvuzDSmC67MNCYLzsgxXAZxNn5z5sFci5AvNFH9bBgTKbvv2YLvqw9A6U2XTgPl78/2CdA2U2/fRmbR/sbaw4vgq+gM21D1anG31YB3wVfIHHhD7U6UYflh7vA/f7iD70DtzQB+uS8Qe+GfrA4XQFBzCbDlQJjCYmoygk/tSpSrAPUGgBSBgBV4hAkSBQVmoBbsLBT4cAcBNv4ed9ALiJSPl5FwFuckUA6z/wkwH80WqAXVEABkcDGD0NcHgVgPUNYMb1TQCIAlJxtTCPqJUAUCbMqZSggpaAgpbQCpDQCpCggpTQCpDQCpDQClgMk5JgmIQEw6QkoPCz1h+YGLTO62qDAQAAAABJRU5ErkJggg==",i0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAApFJREFUeAHtlgGG5EAUhqvRR+j7ZG4Q5AU5Qu6TAyyCVNBHmPv0EQabfVW/2b+e5B8Y1mALEpVP8qUz7zMpWc75/Tg+cj36+l3OnjhaAuDbr4yjr3K2+5HA3uw27OsvgPvhyKf5kQA3CQeAt+XjAkAxCgegeTVKENip0BjzLSy3b0aJbAA2mzMVKJH9QgVWmzIVKJH9QgWWtzHzAsHsFypgCQBujUcBSFaBoQDcBwngUYBHfxt55/ZZS3cfHLh396ndJrr2tz6V9ZjbG/Nh25CwLCqQNVyPClGiAkEhSlwpRImzwv4KEmeF50eUOCm8A6NEq4BjlDgpgAsSFhTCVBCgQhxNAlSgBIGgECQARIUoAeAf94ESog+Q0H3A0n3A+qoPWLoPWLoPWF/1IUjkX+c+oHK6D5+V031A5UQfcO/99TxEH3Dh+eGg6oMvnwtKNH2gQmEO2Yej3J8S7EOjAEj3AXOh+4C50H0AoPtAQPUBgO4DAd0HALoPAHQfAHyjDwRkHwDIPtgnYKIPBEQfCIg+ELjuw0ZgvuzDSmC67MNCYLzsgxXAZxNn5z5sFci5AvNFH9bBgTKbvv2YLvqw9A6U2XTgPl78/2CdA2U2/fRmbR/sbaw4vgq+gM21D1anG31YB3wVfIHHhD7U6UYflh7vA/f7iD70DtzQB+uS8Qe+GfrA4XQFBzCbDlQJjCYmoygk/tSpSrAPUGgBSBgBV4hAkSBQVmoBbsLBT4cAcBNv4ed9ALiJSPl5FwFuckUA6z/wkwH80WqAXVEABkcDGD0NcHgVgPUNYMb1TQCIAlJxtTCPqJUAUCbMqZSggpaAgpbQCpDQCpCggpTQCpDQCpDQClgMk5JgmIQEw6QkoPCz1h+YGLTO62qDAQAAAABJRU5ErkJggg==",a0="/smeditor/assets/parts-9a3f637b.png",Q0="data:image/png;base64,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",I0="/smeditor/assets/frame-d599a2fe.png",c0="/smeditor/assets/parts-b37af2cf.png",D0="data:image/png;base64,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",M=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-29d3e266.js b/Noteskin-3f24e7bf.js similarity index 99% rename from Noteskin-29d3e266.js rename to Noteskin-3f24e7bf.js index 4455c514..2ea6e1df 100644 --- a/Noteskin-29d3e266.js +++ b/Noteskin-3f24e7bf.js @@ -1,4 +1,4 @@ -import{q as e,r as D,s as H,b as l,u as E,O as f,v as Q,w as I,x as c,y as a,z as J,X as d,H as s,L as h,Q as v}from"./ChartManager-db54e716.js";import{A as F}from"./AnimatedSprite-ffeea718.js";import{H as P}from"./HoldBody-9276f45c.js";const L="/smeditor/assets/downBodyActive-dd1fd694.png",Y="/smeditor/assets/downBodyInactive-c781a303.png",p="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0dOV1YU4MAAAPKSURBVHja7d1dTupQFIbh0pwJkDBA4xjEQVjGcOIATZwBnFslHC1l7b2/v3WHiUL6PimUwHI3Xc1pWS5fbz8/vU5bZn843/07nx/zVDVb7h/5sW29/7/vb99uvxyPu6+356nRbHnAldEqg7HGXzPt/rIIAuX4zQGwI1CP3wUAKwKH+N0AsCFwid8VAAsCp/jdAaAjcIs/BAAqAsf4wwCgIXCNPxQACgLn+MMBICBwjg8BQAEBa3wYAMwImONDAWBEwB4fDgATAoX4kAAYEKjEhwWAjEApPjQARARq8eEBICFQjE8BAAGBanwaACMRKMefpmn60+NUWXVAPj/mu4PsD+fN94/4yeZqXHPr+NWn415nAtSPtVe/vplbP2BGBOjfaag8ll2frBgQqH2hBe5FIDICt/jDrgIQETjGH3oZiITANX4pAMYvf+wPZ8r4lfdfegZQ+kKoQ/wmTwHKCBQ/QDqjHCh0BKqfHs5+AOP4za8Csh8AO36Xy8DsB8CN3+19gOwHyH6A7AcAjN8VAAuC7AcwRpD9AMYIsh/AGEH2AxgjyH6AwZP9AJM3AAUE2Q9gjCD7AYwRZD+AMYLsBzBGkP0AxgiyH8AYQfYDGCPIfgBjBNkPYIwg+wEKDlj2A+AdyyZngOwHyH6ALs/J2Q+Q/QDZD8D6IjD7AXDiD7sKyH4AjPhDLwOzH2B8/FIA2Q/A+T5D9gMYx2/yFJD9ADzxVwG4/v/zrggY469pt7v1w9OyXK5/9vz0Sqe8CpVK/JfjcbcKQBB4xP8RQBDox/8VgDMCh/irADgicIm/GoATAqf4dwFwQOAW/24Ayggc428CoIjANf5mAEoIKoct/kMAgoA//sMAgoA7fgkAdwTM8csAuCJgj18KwA2BQvxyAC4IVOI3AaCOQCl+MwCqCNTiNwWghkAxfnMAKghU43cBwI5AOX43AKwI1ON3BcCGwCF+dwAsCFziDwGAjsAp/jAAqAjc4g8FgIbAMf5wACgIXONDABiNYMuoxIcBwIRAKT4UAAYEavHhACAjUIwPCQARgWp8WABICJTjQwNAQKAeHx7ASAQO8SkAjEDgEp8GQE8ETvGpAPRA4BafDkBLBI7xKQG0QOAanxZAJYItoxKfGsAoBErx6QH0RqAWXwJALwSK8WUAtEagGl8KQCsEyvHlAFQjUI8vCaAKgUN8WQCPInCJLw1gKwKn+PIA7kXgFt8CwFoEjvFtAPyGwDW+FYD/Ibg1LvHtAKxB4BTfEsBPCNzi2wK4hcAxvv2cluWy9nVBJpPJZDKZjNL8A8iasRIljXPgAAAAAElFTkSuQmCC",k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0eB7cUHesAAAO/SURBVHja7dw7VhtBEIXh0WzGGWtxahZop6yFzKuREwKQBcy0uqvuqzM4Bwv6/yxN61GX7f91ff/F6+vPbWT9/vPj9M88//q7zVojt4/8u43e/tPTy+23Lu+/2LdFa+QXnhltZjDW+EfWMgAqCJTjLwfAjkA9fgkAVgQO8csAsCFwiV8KgAWBU/xyAOgI3OK3AEBF4Bi/DQAaAtf423bzrNDbmvJMoOqGsf0tbc8EstwTuEPeETaPHQHzvdiOsomsCNgfwmAAMCJQuH6BAsCEQOXiFQ4AAwKlkwskAGQESvGhASAiUIsPDwAJgWJ8CgAICFTj0wDoRKAcf9sWvBZwb8NYX2xBfGfz2X+/9LWAzzas++1dI7eP+rb22dc3e9X/TCYE6J9pmLmXpdcADAjUPtACdxGIjMAtftspABGBY/zWYyASAtf404+BLhvJdKwtPQYqfSBUIX7LQ4AyAsV3D+8oG4WOQPWt45kPYBx/+Skg8wGw45ccAzMfADd+2fMAmQ+Q+QCZDwAYvxQAC4LMBzBGkPkAxggyH8AYQeYDfFyZDyD0t2Q+gHF86IcAJQSZD2CMIPMBjBFkPoAxgswHMEaQ+QDGCDIfwBhB5gMYI8h8AGMEmQ9gjCDzATIfoC1+5gM03hNkPsDkDct8AMy9zHwAsvj0F4GZD4ATv+0UkPkAGPFbj4GZD9Aff/oxMPMB8I6amQ9gHL/lISDzAXjiHwJw5y7EEgFj/CPtLp98/3r7jZG3h6tcEwjFvxwFEAQG8b8DYI9APf4RALYIHOIfBWCHwCX+GQA2CJzinwUgj8At/ggAWQSO8UcByCFwjf8IABkEMxdb/EcBBAF5/BkAgoA4/iwA1giY488EYImAPf5sAFYIFOKvAGCBQCX+KgDSCJTirwQgiUAt/moAUggU41cAkECgGr8KADUC5fiVACgRqMevBkCFwCF+BwAKBC7xuwBAI3CK3wkAEoFb/G4AUAgc4yMAgEDgGh8FQCuCkaUSHwkADQKl+GgA4BGoxUcEAItAMT4qADgEqvGRAcAgUI6PDqAdgXp8BgBtCBziswAoR+ASnwlAGQKn+GwAliNwi88IYBkCx/isAKYjcI3PDGAagpGlEp8dQAsCpfgKAEoRqMVXAVCCQDG+EoClCFTjqwFYgkA5viKAqQjU46sCmILAIb4ygIcQuMRXBzCEwCm+A4BTCNziuwA4hMAxvhOALxG4xncDcBeB+764ATiCwGpPHAF8hcBuP1wB3EPgvBfWCK7ZhqysrKysrCy39Q9gQ/q5SfcuvQAAAABJRU5ErkJggg==",b="/smeditor/assets/leftBodyActive-75d41033.png",z="/smeditor/assets/leftBodyInactive-bbc074cd.png",x="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEANIA0gBQ7xAn7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI2I6Ho7PYAAANMSURBVHja7Z1bTgMxDEU7VjeAxAJR10C7CMoaEAus1B0Av6XiMY/EsX2PJT4GoTHpOZNJMhl32t3F6/n8eXt8eDrt1sTD48eiv79ebNcqluZumX9N7p7/39v7y7fj5+Nxuj3e7zrF9WKzP4xM8HsBHhXW8+RzPtgqVz4CrPiAM8IfIUzPnDaqAZmvfE8JeueyEQ2p0O17SOCRw7U/u16s1D2/JyCvXibtCCjKgC/LOX+LPfBzAZPvAZjqCQsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOD7xh74f+evLpcB/+/81XYAhRQgKnwFCQz4ta/w0AIAX1gA4AvPApTgR5/WGvDjrTN4CmrAjwXfWwIDfjz4nhIY8GPC95LAgB8XvocEBnztqaYBX3udIczTQOoDFBOA+gA5gvoA1AcY17VTH2B8TuoDBAPinYv6AIEloD5A8Hs+9QEGBvUBiq0DZB7tUx9AGD7TQOAjAPARAPgIAHwEAD4CjIRPFBEA+MICAF9YAOALCwB8YQGALyxAS/hMAZMJAHxhAYAfI/YV4fccU3jkoz6AMHzvQbEBP2Y+6gMIw/fMYcCPCd8rlwE/LnyPnJbZXm8YFVcsDfi68GcJcP/980RxAZ6Px6mFBL0XM7xX/6quNv7YKiTQkeDXFkWUwPsLHaJ8gcSw+gBIMF6CLbnmsJrmnOj1fP68/93h6cSaQOeZQWv4P13Q09wTIoFvPg/4iwRAAr98XvAXC5BJAsVYCn+VAEhQB/5qAZCgBvxNAiBBfvj/rgP8F1lWDIHfSQAkyA2/iQBIkBd+MwGQICf8zYPAiAPDpQJl3++wBX7THoCeIB/8LgKMlkDlTeMW8LsJgAQ54HcZA0QaE6yRp/UgK3q4NAwJxAVAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAggERet9Vtk0la+REgGISIAASIAASIEA5CRAACRAACRAACRBAT4LKkqRvWW8JqvcQJVrXUoL7H24BYhIwBkCC1ZFRuJLvu7V6irgVPo+DRSRgQ4iwBGwJE5aATaHCErAtXFgCXgwRloBXwwpK0HrtAQFEJOD1cGEJKBAhLEHlsnEEQRAEQWjEFz4LZYAP3C09AAAAAElFTkSuQmCC",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3FABOeLgAAAM3SURBVHja7d09csJADIZhW+O7pOMsaeGASZuz0HGapGUIMP7Z1Ur6XnVkMgj8PdjrxV7m6X/93j+4Xj+nPfX1/bHp/y/n29SqtvZu2X9P756v73T6efzTfP9gmTrV5XxbvTEyhd8r4FFlPZ98zYat8skHwI4NnDH8EWB69rRRbyDzJ98TQe9eNuKNVNjteyDw6DH3OgvwqAjH/Gij/q1nATYlrSgDvizP+aoWws8VWNoxAKd6ACB8ABA+AAgfAIQPAMIHAOEDgPABQPhjayH89/2r4zLCf9+/2hVAIQFEDV8BgRF+7U94aACELwyA8IXPApTCj35aa4Qfb57BE6gRfqzwvREY4ccL3xOBEX7M8L0QGOHHDd8DgRG+9qmmEb72PEOYbwNZH6AYANYHyFGsD8D6AON27awPML4n6wMEC8S7F+sDBEbA+gAJjvmsDyAcfqbnDD8PkHm0z/oAwuFzGkj4ACB8ABA+AAgfAIQPgJHhU0UAEL4wAMIXBkD4wgAIXxgA4QsDaBk+p4DJABC+MADCj1FLxfB7jik8+rE+gHD43oNiI/yY/VgfQDh8zx5G+DHD9+plhB83fI+ellmvdxgVZyyN8HXDXwXgyZ0lVHEAcwsEvSczvGf/qs42vtoDgEAEwbtDQDgE3j/oEOUHJEauDwCCwQiO9FqT1bzyuX4f/7DntnHmBIaHP+8FAALnfh7hbwUAgin+18Fbwt8DIA0Cxdoa/l4AICgS/hEAICgQ/lEAIEge/pp5gM2AIs4YEn4/ACBIHH4rACBIGn5LACBIGH6LQWC4geFWQAWudziUoXm8IPYEMcPvBWAoAqE7jZvsvc3zBYIgVvi9xgBhxgR78LQeZMlIAgEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEEQqywY08kUlkX9pPSuAdAgAAAIAgAAA5RAAAAQAAAEAQAAAPQSVkViB99AVQfU9RKVLnJtMGx+tJ/iYCs60J2AMAIKWn34OASqHA74OFkbABSHCCLgkTBgBF4UKI+CycGEE3BgijIBbwwoiUN6GigBaIuD2cGEELBAhjEB9u1EURVEUlbz+AOnsq2p4bKxbAAAAAElFTkSuQmCC",y="/smeditor/assets/rightBodyActive-07f95372.png",R="/smeditor/assets/rightBodyInactive-fdefc2a4.png",X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NtUuOVwAAAOHSURBVHja7Z3RTSsxEEUdKw0gUSCiBkIRhBoQBSLRQeDr6YWQEK/j8c7MPfcvIO0sPmcd24RhU07yut9/Hb9+fHguPbm7PxSLfH7UIdfpub9RtXvq99Z+e3/58fppt9scv96WYLk2cK0D9flRF0O4uz8Mk2BJ/ZHinaYW4fQM7MiZraW+JXxTAaxvfFRNzxLMGMPqDcgatTxKMGvsqmcwM2t4kmDmg1O9P50zr+1BgtlvndOqWfxgXq5pteWdkanbwDUWhtZbNIstYsoZgC0iAiABAiABAiABAiABAiABAiABAiABAiDButlmB3Vu0Nf4UMfx/Xg6Maxq8Ec/idFngqoGHwlYAyABAiABAiDB/F3A2p/Fn7U6j7Q7qBGfsghPYpSZoGaEjwSOBFh7kYMEKwrgZa+LBCsI4O3cGwmCbgMzQfAoQYhzACQ4aAvwbxBGDURECaxCf4CFtekPkCj0B6A/AP0BvAFZoxb9AYJLQH8A52sA+gO016c/QMBr0h8g4P7X8xYx5QzAFhEBkAABkAABkAABkAABkAABdEJ/AEJ/AOJTAgQQlwABxCVAAHEJEGDCVtCzBAggLgECiEvgvj/AUgiWg3lar+dzA3+NDf0BBlzTchCt69EfAAnoD4AE9AdAgkJ/ACQo9AcIIZ51PfoDIAH9AUhf3t5fNAWYfaBiXa/n+ufgP+12m/QCAL8dvqkAXvoDzDwaHl3PGn6TAC3vIx4kAP5y+KWUcvabr/v91+nXHh+e3a6Sgd8H/6IAkSQAfj/8PwWIIAHwb4N/VQALCTIlOvwmAZAgL/xmAZAgJ/xFAiBBPvhN5wDXCt1yTqAcD/AXC4AEueB3CYAEeeB3C4AEOeAvXgS2LgwjZekitncR6BH+TTOA1Q3x5M+DP0QAJQlm/efTWfCHCaAgQUb4Q9YAnjPq4Cor/NQCAF9YAOALCwB8YQGALywA8IUFAL6wAMAXFgD4wgIAX1gA4AsLAHxhAYAvLADwhQUAvrAAwLdNuA4hwBcXAPgIAHwEAD4CDI4ifAQQh48A4vDlBVCHn1qAa3CBLzADXIIM/P/ZluQZ0a00K3wWgeLwQwowswlFdviliP06GPhBBZgtgQr8UALMkkAJfjgBrCVQgx9SACsJFOGHFWC0BKrwQwswSgJl+OEFuCTBLVFre5f2z8OBLyTACAlUG16mbxEDfEIIIYSQ3/kGeiN5xirmRdUAAAAASUVORK5CYII=",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NUwnaOYAAANgSURBVHja7Z1BUuNADEUdF3dhx1lmyxxw2HIWdnMas6JqKpCx3ZbUkv7TLiFJR/1eOurGiNvyPbZ/b3x8/FpG4s/b8+IRv1//mrzOyPuzGntk/NGxX17e7++6PbxRQQDLiaoiwZUx9wRYF+EYmVhLsY+MbyncT7FmmtwZY2aWIGIO12xAZoyVUYKouVszg4kcI5MEkR8ctyKw2q4gS2FoHWmKQI9JyvKas3Y8pVaAatFlJWAbyEowtwhEAgRAAgRAAgRAAgRAAgRAAgRAAgRAgjTR/iTwp0mfeWWP9fh7IX0S+AhO9EUdmVeCVQ0+ElADIAECIAECIEH8LiCyYq523b/X7iDNLiDa8gqXfGdYCdaO8JEgkQCzixwkmChAlr0uEkwQINu5NxIU3QZ2gpBRghLnAEjwrC3A1yRYTURFCbyC/gAT4dEfgMJw+mpBfwD6A+QCMmMs+gMUl4D+AAmLwKiikP4ARYpA+gPkDPoDNF8J2AayEswtApEAAZAAAZAAAZAAAZAAAdhSIgASIAASIAASIAASIAASIIDAVjCzBAggLgECiEuQvj/AWQiek+k9Hv0BDF7T86KMjC3nSnwFeCaGBMkFiEgICZIKEJkIEiQTYMb3GRKwDQwXz3s8+gMgAf0BCLMzAA0Bov9Aw3u8kdd/AP/WXgDgH4fvKkCW/gBqR8Nn4B8S4Mj3SAYJgH8e/v9+uN3fceWXQt5VMvDH4O89oIQEwB+Hf+RBqSUA/jX4Rx9oKkGnqA7/zIORoCH8s09AgmbwR54kL0En+IfOAfYGunJOoBwZ4I8IgASN4I8KgARN4F8RAAkawF+WZXm6+PzbfWFYTYKoIjYj/KsrgMsb4pMfB99KABkJorqHRsG3FKC9BB3hK3xyTQ6uusLvLgDwhQUAvrAAwBcWAPjCAgBfWADgCwsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOALCwB8xyjXIQT44gIAHwGAjwDARwDjUISPAOLwEUAcvrwA6vBbC7AHF/gCK8AjyMCvlYDbfzFTh08RKA6/pACR/Qe6w6+UTHh3MgX41RIKk0AFfsWk3CVQgl81MTcJ1OBXTs5cAkX41RM0k0AVfockL0ugDL9LohtzQrIb80HCG3NB0hvzQBAEQRAEsR+fBPrG1xa4jMQAAAAASUVORK5CYII=",T="data:image/png;base64,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",j="/smeditor/assets/upBodyInactive-87a7969e.png",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5IlF3wK8AAAPCSURBVHja7Z1bbsIwFETNKBtAYoFV11C6iNI1VF0gEjug/YUoRbWxfR8zV+oHH9TG58QhUe6wK6v6PJ1+bl+/vryX2tofrtXvuZxRelXL+BHm2DL+1/fH3eu343F3+xq9Fykr/N7/u+Uzj/hsEHxuCcAM/3KGOQTr8VGMytP5NKIEoQXw+GWKVQIIPrcEEHxuCTBr4pGuob1L0HMtMeMIj3gDxasEvXeIxfM2b32peTmjesz94dptDWacDuyuP4LcZ/Byx45aAOubTJklgOBzSwDB55YAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwBm+PvDNeWDniEE8PQMIbMEYIfPLgEEn1sCCD63BBB8bgkg+NwSQPC5JYDgc0sAweeWAILPLYHyAcglUD4AuQQQfG4JaPMBoksQWoDo8DNJAMHnlgCCzy0BTT5AJgmUD+C0lA9Q/OUDWEgQKR9gKUFqxtHVa4yeEqS8DPR6fmU5VYUSYPY3bDYJwAz/r74AJgnADP/RWCwSgB0+uwQQfG4JIPjcEkDwuSVYosKvAdLaF7Ae49GYlomioXcAj/Bb3qt8AIfwZ5fyAYjhR5UAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwDB55ZgiQb/6/vj7vXry7sp0Jb5WP8a2dAdQEd+rJ0Ags8tAQSfW4JQ+QDr863Hapmj8gGSwI8oAQSfWwIwwr+csfnHKIHrfIBR8Gcu/ggJKPIBthbu7Xjcjd6Bnl3crTn2lKC3pBhxhD27tc6CP6o3sKcEo09T7i7EZ8J/dF3tRQLz7wAzJ20BP7ME/xkLXiY9Av5WzfrNoCjrCQ+T9gA/kwQ16wnrSXuCn0GC2vWE5aQ9wo8sQct6wmrSnuFHlKB1PWEx6VnwvZan9cTsSbPD97aeS+2kP0+nn57bFyN8T+sJS2DM8L2sJ6wmLfg+1hMWkxZ8P+u56CjOeToYvgOocpQEkAAqCaCSACoJoJIAKgmgkgAqCaCSACoJoJIA0euZ5g6GBBOKHaAFJEt8Dc0poAYoU3YR1XeA2T8dKwGCScCYWrYUwlI8nS4DVVkEsAxdiJhetq6QD3WumylKmR8anaXDKexTvZYSZGpvC/1Yt4UE2Xobwz/XP1OCjI2tKRo7ZkiQtas5TWfPSAkyt7Snau0aIUH2PIN0vX09JWAIs0jZ3NlDApYkk7Tdvc9IwBRjk7q9u0UCtgyj9P39WxLUVPYMBIqAh1YJGAIwaBI+aiVgST+hinj5rwSKvlGpVCqVSpW9fgGbIppuMBFz1QAAAABJRU5ErkJggg==",q="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5JlYaBLYAAAO8SURBVHja7Z1LUt1ADEXtW94LM9aSKSwQpllLZqzmZZQq6oUX4nZ/JN2jGVDgRud0t21aYt/+jtvnD379+rGdjbf3p9Pf8/rysfWKlutnGGPL9Z+ff95/av/8gXonqSr83j+75Xce8bsJ+N4SyBn+68vHcgirr69tUUTaTzNKkFqAiDdTrhII+N4SCPjeEmjWwDM9Q0eXoGcuNWOGZ3yBElWC3ivE/sXnLr8JjPQMfjVhqx9vr8b0N4GV4EdYCUo+BmabhZUlEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lkDP8t/enkgc9UwgQ6QyhswRyh+8ugYDvLYGA7y2BgO8tgYDvLYGA7y2BgO8tgYDvLYGA7y0B/QHMJaA/gLkEAr63BLb9AbJLkFqA7PArSSDge0sg4HtLYNMfoJIE9AcIGvQHSJTgLFvd1fiuP8CxJYkZs6vXNd7en0KeXA71HiDi/uqyVaUSYPYdtpsEcob/qC7ASQI5w//XtVwkkDt8dwkEfG8JBHxvCQR8bwlCvAkcfZikNeGjrzHjZVH4TqFR4Z/9XvoDBIQ/O+gPYAw/qwQCvrcEAr63BAK+twQCvrcEAr63BAK+twQCvrcEAr63BEc2+PfvtlefWm4Zz+vLx+kcjTpoKma+90og4HtLIOB7S5CqP8AXf9sOFy1jpD9AEfgZJRDwvSU4HOGPrg38PPazj6ktj4ghVoARNe0z4Y+agSNWAov+AA8St49egTokdx8pQW9Jj5kzLBr8P0vt/dc6LMP7dne6unU7KPkUEAn+o70/ykowOr6tC9i2ee/b/xP+5bqFR7O701a1Z8qnopg7YuafvdMfdPcdOp+KMOgI8CtJcCafWj3oSPArSHA2n1o56IjwM0vQkk+tGnRk+BklaM2nVgx6FvzAESafmj1o4MfK59Ew6Fvn5csRfph8ajEwZ/gh8qmFgwZ+gHxq0aCBHySfB7O47HYwfAUgCgQCIACBAAQCEAhAIACBAAQCEAhAIACBAAQCZI8rFT4OHUwsVoAWkC7ta2y2gDNAnXoXWd0DzP7XsQiQTALHrmXHZhi0p+MxkKgiwMqmCxm7l91H1kOdy5oufAN/RwADCSqVt2U/1j1dgmq1jRXO9U+ToGJha5XCjuESVK1qrlTZM0yCyiXt1Uq7uktQvZ9Bxdq+bhI4NLOoWtx5WQKXTiaVq3ubJXBqY1O9vPu0BG49jBzq+2/kyFuAKxKUz49Th48bufEW4IwEtL4hCIIgCKJ0/AYcP+o66BZ87AAAAABJRU5ErkJggg==",V="data:image/png;base64,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",W="data:image/png;base64,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",Z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAcBJREFUeAHt1LGtKjEQhWHf4JZAP7wOCPAGlEA/WwIBJqAE+qEEAnjGiNGc82vjm6wTS+vD+EMaTym1tXZ9vZ5t7H09Wl+3z17LJ3Dp39vY+7q3vj57BFp8T8mWA7eoHHc9JRAIIURAEEH4BjZHQQjhvO+B34MghHDa9cDPJAghzNsCBAiOAMERIDiCBEOAAAQJW0EI4Wf3/v1OEEL4fdeo+zJFYSHMZfNW1Fqm+C7JudQRmP9NUjnu6gcjcKqHsIm2H4zAuR7l38X/7Qcj0GpLXZJ6p9VvR11Sn6Xuu0fLXVOnpv59pEBqtGg+DQQiCBYIRBAsEIgg5EAqK48zAgmmjzMCqW66LQIL82GdD+t8WOfDOh+Oy/PhPJ7eYXk+nMbTm5bnwzyeniCMsC1AgACEERwBAhBOAMIIRBiBCCMQYQQijEAECECAAAQICQECECAAAQIQIAAhBCBAAAIEIEAAQghEgACEEYgwAhFGIMIIRBiBCCMQAQIQQgACBCBAAAIEIIRABAhAGIEIIxBhBCKMQIQRiDACESAAIQQgQAACBCBAAEIIRIAAhBGIMAIRRiDCCEQYgQgjEGEEIkj4+/UfcWPZV43B2RYAAAAASUVORK5CYII=",_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAcBJREFUeAHt1LGtKjEQhWHf4JZAP7wOCPAGlEA/WwIBJqAE+qEEAnjGiNGc82vjm6wTS+vD+EMaTym1tXZ9vZ5t7H09Wl+3z17LJ3Dp39vY+7q3vj57BFp8T8mWA7eoHHc9JRAIIURAEEH4BjZHQQjhvO+B34MghHDa9cDPJAghzNsCBAiOAMERIDiCBEOAAAQJW0EI4Wf3/v1OEEL4fdeo+zJFYSHMZfNW1Fqm+C7JudQRmP9NUjnu6gcjcKqHsIm2H4zAuR7l38X/7Qcj0GpLXZJ6p9VvR11Sn6Xuu0fLXVOnpv59pEBqtGg+DQQiCBYIRBAsEIgg5EAqK48zAgmmjzMCqW66LQIL82GdD+t8WOfDOh+Oy/PhPJ7eYXk+nMbTm5bnwzyeniCMsC1AgACEERwBAhBOAMIIRBiBCCMQYQQijEAECECAAAQICQECECAAAQIQIAAhBCBAAAIEIEAAQghEgACEEYgwAhFGIMIIRBiBCCMQAQIQQgACBCBAAAIEIIRABAhAGIEIIxBhBCKMQIQRiDACESAAIQQgQAACBCBAAEIIRIAAhBGIMAIRRiDCCEQYgQgjEGEEIkj4+/UfcWPZV43B2RYAAAAASUVORK5CYII=",$="data:image/png;base64,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",A0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAAEACAMAAABMJ46VAAABR1BMVEUAAAAAAAAM5Jh4eXcL45oL4poL4psL4ZwL4J0L4J4L354L358L3qAL3aEL3aIL3KML26QL26UK2qUK2qYK2acK2KgK2KkK16kK16oK1qsK1awK1a0K1K4K068K07AK0rAK0rEJ0bIJ0LMJ0LQJz7QJz7UJz7YJzrcJzbgJzbkJzLkJzLoJy7sJyrwJyr0Jyb0Jyb4IyL8Ix8AIx8EIxsIIxcMIxcQIxMQIxMUIw8YIwscIwsgIwcgIwckIwMoIwMsHv8sHv8wHvs0Hvc4Hvc8HvM8HvNAHu9EHutIHutMHudQHuNUHuNYHt9YHt9cGttgGtdkGtdoGtNoGtNsGs9wGst0Gst4Gsd8GsOAGsOEGr+EGr+IGruMFreQFreUFrOUFrOYFq+cFq+gFqugFqukFqeoFqOsFqOwFp+wFp+0Fpu4Fpe8FpfBBspG0AAAAAXRSTlMAQObYZgAACMxJREFUeAG8zgUSw0AMQ9G6KvP9T1tvUcl3GV441ow1aCINO2SGJHdnzFykAUQadeliRHL+HxC8XWDco5MxyWHgmIymLDDp08GE5DDqYrJsEGkKSlOSwxCQjKYqQE/sBwGS0bDA7DlyZQCQjKNegflT5J6I1Ek0iLQgklu8r98g0jKdnjfJLT/CAqvVKg5WN8mtPlQUiJO/7GeBdaTTa0lu/TEUaE7vm4rc5nNVgfP7tiC3/QIrkGx/+vF+Fki+f0dyuz0rdrUjZw5FUVit/QTJ8EyYaRjCTMMQZubk/a+nlGp17/qXt1VH8XczsI5kX1SXXR4in8sbSG7DGPFY3khyqW8sSqfyRySXO0NXOJQ/Jrnc2fpsA4PWV30DWP8Tkgs91wy3kpWZT0kud+a+9pXkM5KrdSTTXv9zkit25dhe/wuSq3Yp5XApHbQ+KgbStfzLKTnU0JExEn+YfDUh56HUMZR/mm1aJOeh1jGVD8Hx6xc3sHmBzGaS62TO5Q1sWaQ1k2ARXYDBvIGtE1q1leQQHCfzh3DblN7bRnIxOZ+Mf4bbQTPbSQ4RMJm+iLZTbX3kNBm+incsR647kCfbh9HOpcj1RzqTzfeBXURyHopa7wO7Z+b/zORQS7iBPXv2zLe1J5JDLcIG9u5dWbU3kEOt4gbW3wfGrh/03gf2tcgxl/XeB/Y3yDHX9d4HDpBco9d13gcOktzBIfK5fIjkDo2BDRTXR/+gDdj6X5Nc7Cx94VD+huRyZ+trn8nfklyvI/Y13we+I7ncQ82a7wPfk1y/M2crc2PX13Ipr/8DyRW7cmyv/yPJVbuUcriU/gRyqKGjYiBdy4esj8yR+MPk5wk5D5XOofzT7JdFch5KnVP5EDy8QM5DrXMsb+DIApkjJNfJnMsbOLpIaybBIroAg/0NuMr6hQ3kD+GxKb13jORycjYZ/wyPg2aOkxwiYDJ9EZ0g6QTJdXOaDF/FJ5cj1x3Ik+3D6NRS5Lojvcnm+8BpIjkPRa33gTMz839mcswV3MDZs2fn2zobyTHXYAPnzq2sOhfIMRdxA+vvA2PXD3rvA+db5JjLeu8DFxrkmOt67wMXSa7R6zrvA5dI7tIQ+Vy+THKXx+AGauujf8gGfP1fSS52lr5wKP9Gcrmz9bXP5N9JrtcR+2wDg9ZXdX2+D/xBcrkz97WvJH+SXK0jmfb6f5FcsSvH9vp/k1y1SymHS+k/IIcaOioG0rV8yPrIHIk/TP6dkPNQ6RzKP83+WyTnodQ5lQ/BKwvkPNQ6x/IGri6QuUpyncy5vIFri7RmEiyiCzDY34CrrF/YQP4QXp/Se9dJLifjk/HP8AZo5gbJIQIm0xfRTZJuklw/h0nsIG2AuD4JMNk+jG4tRa4/0plsvg/cJpLzUNR6H7gzM/9nJsdcwQ3cvXt3vq27kRxzDTZw797KqnuBHHMRN7D+PjB2/aD3PnC/RY65rPc+8KBBjrmu9z7wkOQava7zPvCI5B4Nkc/lxyT3eIx4LD8hudSfFKVT+SnJxc7SFw7lZySXO1tf+0x+TnK9jthnGxi0vqrr833gBcnlztzXvpK8JLlaRzLt9V+RXLErx/b6r0mu2qWUw6X0Dcihho6KgXQtH7I+MkfiD5O3E3IeKp1D+afZu0VyHkqdU/kQHL/+sA3U15erbMDU1+fCtQ3wQ1T//AkKH8I3U9W/P6TinyEXKq7PWPsiek3F71/m0lfxq+XI9QeKh9HLpcj1RyrHMW8jgRxq+UKC69j8n5kcc0VzA/NtjV4/wAbmF2VczY0ccxE28HT9feB/3s0YN2IYiIHPuyp16iT//0OKKz3ygAOc2dLGqhPEHf6h+H2SdZcP/JL4fdZ1lw/8PPE+5Xzgwfc55wM1nwg638slnwk6Xsshn0q51elWDvkcOyY4QJ9fTsB3cshn2XRhPhDyaXZdmA+EfB5tl6wsZD9hvv/K8239Yj55bD4y/3teWtl+bvXntZ3tJ1d/Xlzafrb5w+r2w/N9eW37+eZfPgsAg/IJZDvA4AhH4DdgqiEcDrE4v8KGQSyO8Qz8DlkzxsODfP7JdJDJUS7nt8SeUK4vkPFr8oHAbA7zGb8nnyjOZzRj4BtHoPGCcwLWKXxnFh7gfawwv+hygDdoC2iv8L1VlwO8SWOAm4VvrrrLB16vB/jyu3zgifkvzgce4vsB76/9hq7zvRz6HUXHazn0W1Lv5XQrh34POyY4QJ6fTsB3cuh3senCfCD029h1YT4Q+n1sq6TyaP1G9+VXnm/1zdGfK5/Wb139ufRq/d7Vn2u/1m9e/bn4bP3u4G/V7w/P9/K79fs3P9T//3s7A40MojAK0hsU1L5DUL3/uxUXbGN3zFf3PwDn5nyQn8UMAQadf8DaAQiOgAj8B2wKAkIgGIl/gcIgGI4BafwPVBkDwqG6j7KBUL4Y579InVAwnxbn3/BBgeF8MMr/8SeOAyoHyH4HIgEHBSxU5EOF8IDFqQIYq/CxUnDAAnUBDRb4YC04YJHKAEcTPto8d98H3pENfLq77wMb9hn+H27mAwoecDsfEbn+Xd7Dh0Quf5Y7H3P1Q0gm9gd8UDYZEzraR98P4H7hw6LvqFjsD/i4bBMsV4jBzgeW+iqGTHY+svcKTMa+86FTn5HRzsdufYZm133rMzbc+eitz+B058P3PqHjnY/f+wTPD36A0ONZFyi4H0HqbHBY6fsc9gNMohH8GSxcouEakeIPYRU1Igfyd39LEqkcjO9LnVQybxb35/BBkem8SkQSxCeuE1KbUvcrRaESdFLQSgW/VAwPWJ4riLWCX6uFB6z9n+zalwOW6YxyNferzXL3feAFUb9cz933gedH+PX4f7jTL+h6wS1+RRcsItv3eQD2u19z9UPJJvYHflE0QTOK/eBXRd9Fq/+7PzgA+8Wvy77Ldn/vD/zCUl/FlMvuV/ZehcvYN3107LNy2vzatc/S7bpvfdaOm1+99lm87n753if1vPv1e5/k+0+nnP7y1KSez3DAN7aMsP+9sCEFAAAAAElFTkSuQmCC",n0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAgxJREFUeAHt1LGRo0AQheFeQyEoH20GMmgZCkH5EAIGjUEImw8hYGiubni19+YVNO5W3Y4zBv+KD3ZoM4+IuZQ1IuILe/m71rEzsy2YSllwYcHlNohSYutKUOD/gq93bHd61xvVtYTfvoOZCfMWRPT372AiQr1T/a2hQ4AFAhBrxOh3DkAAov6WdxyAwKv3GiABgddYg9FfTGhWDQZ/tgQN+s+HECRwewhBgq4GQqDgev94KKEJLrfLUwlNYHZ9KUECZ8JUQgMi1H3RgAh1XyUQQtFACU0w+g6Bg94bAu10YISAXY4cCLTLoQWBdj32Sgj9cJQQ+ukpYdKPVwkzB7/z4X+dD+VsPpSz+VDS+XAcgHAcgHAQEOFgyjFBX6TMh50X2XtLwHHlAyOEgo2PHBOmQltzaEGYC206H5Sg80EJO/OhvKdCm3z+9cpcsEnwOgmuz5NbXB4nyA9PHhOI7EUBcfCqU8QakSHw7zZB7B2oBiEBDIzghadoEe3ymwlil8CIXQIjdgmMOCAAsQVOy0wQEoDAiKUJQGDEygEIDeINGi1F4OF4KWIgmyL4lGD9In4+wjIEggSBIEO4JQgECUICRSDIEBooAk+RIMIlEESM/nJLEDH40y1BRP/pbgkievPOMkRv17tliP52uVmGGPTvFTFCcIzQZ1BEGhjmY4LAfDxGYD4mCMzHn7T+AIoBqFgX1z4vAAAAAElFTkSuQmCC",g0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAgxJREFUeAHt1LGRo0AQheFeQyEoH20GMmgZCkH5EAIGjUEImw8hYGiubni19+YVNO5W3Y4zBv+KD3ZoM4+IuZQ1IuILe/m71rEzsy2YSllwYcHlNohSYutKUOD/gq93bHd61xvVtYTfvoOZCfMWRPT372AiQr1T/a2hQ4AFAhBrxOh3DkAAov6WdxyAwKv3GiABgddYg9FfTGhWDQZ/tgQN+s+HECRwewhBgq4GQqDgev94KKEJLrfLUwlNYHZ9KUECZ8JUQgMi1H3RgAh1XyUQQtFACU0w+g6Bg94bAu10YISAXY4cCLTLoQWBdj32Sgj9cJQQ+ukpYdKPVwkzB7/z4X+dD+VsPpSz+VDS+XAcgHAcgHAQEOFgyjFBX6TMh50X2XtLwHHlAyOEgo2PHBOmQltzaEGYC206H5Sg80EJO/OhvKdCm3z+9cpcsEnwOgmuz5NbXB4nyA9PHhOI7EUBcfCqU8QakSHw7zZB7B2oBiEBDIzghadoEe3ymwlil8CIXQIjdgmMOCAAsQVOy0wQEoDAiKUJQGDEygEIDeINGi1F4OF4KWIgmyL4lGD9In4+wjIEggSBIEO4JQgECUICRSDIEBooAk+RIMIlEESM/nJLEDH40y1BRP/pbgkievPOMkRv17tliP52uVmGGPTvFTFCcIzQZ1BEGhjmY4LAfDxGYD4mCMzHn7T+AIoBqFgX1z4vAAAAAElFTkSuQmCC",B0="data:image/png;base64,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",t0="data:image/png;base64,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",w0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAgdJREFUeAHtlLHRozAQhSGgBPr53QGBl4AS1A8lECACl0A/lEBg3RrLbx743XGhZ36/ZD3jD/RJrLbw1OGWHoke/3XPdfViBYCMTBn0ugAwAmJ6/uM1voDSnPc8Xz5v7/Z6B1C1zm9ZWWIFUHfbc/ndkFheQGUhRmwDEp4M1PbgswIkCLA2UiBBQIgcSHjsCUQOS4wWJACJwToJQKK/tBKARF+YAiDhQC0BSPQ/1VUBkBiaslEAJEZ//gikhSXsDZjSupcAgNXve4l3IL1LWGBASFjLgJBAw2yAkEDLgWMJblosjnpoeyyOerg4UUjw1cPiqMfLuwgJBrA4KoDvfPjV8yGdzYd0Nh+Sng8MyPnAACT+BkBCA3PS84GPUs4HZCKJQ8MkFJLglpupQIKb9kZlUW0/oYj5oCT46gkJcXmXmcoigHWmsv4HMJ4tMVxPJPvmZJv288+DgoI+alLQHwsKhf7cUBAtRQpw2IUV8i72YYV8DvuwgpQgBS1BClqCFLQEKeQY5QFAARIHAAqQMAYmUoAEAzdWoEB3JgUEG5YKZNspBYqFj1b4KiBagQFW0IBWQEwoCAAKGmAFDZCCBqCggQkKGrAIBQmMFiIUFDBYF6GgALu0USggtRVtFApIdXVAKCBlU7ZaAak6qUAWQSsgxgoa0AqIeaQCz0upwPNSKvC8hMIH5Q+bbaeb663kYwAAAABJRU5ErkJggg==",e0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAgdJREFUeAHtlLHRozAQhSGgBPr53QGBl4AS1A8lECACl0A/lEBg3RrLbx743XGhZ36/ZD3jD/RJrLbw1OGWHoke/3XPdfViBYCMTBn0ugAwAmJ6/uM1voDSnPc8Xz5v7/Z6B1C1zm9ZWWIFUHfbc/ndkFheQGUhRmwDEp4M1PbgswIkCLA2UiBBQIgcSHjsCUQOS4wWJACJwToJQKK/tBKARF+YAiDhQC0BSPQ/1VUBkBiaslEAJEZ//gikhSXsDZjSupcAgNXve4l3IL1LWGBASFjLgJBAw2yAkEDLgWMJblosjnpoeyyOerg4UUjw1cPiqMfLuwgJBrA4KoDvfPjV8yGdzYd0Nh+Sng8MyPnAACT+BkBCA3PS84GPUs4HZCKJQ8MkFJLglpupQIKb9kZlUW0/oYj5oCT46gkJcXmXmcoigHWmsv4HMJ4tMVxPJPvmZJv288+DgoI+alLQHwsKhf7cUBAtRQpw2IUV8i72YYV8DvuwgpQgBS1BClqCFLQEKeQY5QFAARIHAAqQMAYmUoAEAzdWoEB3JgUEG5YKZNspBYqFj1b4KiBagQFW0IBWQEwoCAAKGmAFDZCCBqCggQkKGrAIBQmMFiIUFDBYF6GgALu0USggtRVtFApIdXVAKCBlU7ZaAak6qUAWQSsgxgoa0AqIeaQCz0upwPNSKvC8hMIH5Q+bbaeb663kYwAAAABJRU5ErkJggg==",o0="data:image/png;base64,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",a0="data:image/png;base64,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",C0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAApFJREFUeAHtlgGG5EAUhqvRR+j7ZG4Q5AU5Qu6TAyyCVNBHmPv0EQabfVW/2b+e5B8Y1mALEpVP8qUz7zMpWc75/Tg+cj36+l3OnjhaAuDbr4yjr3K2+5HA3uw27OsvgPvhyKf5kQA3CQeAt+XjAkAxCgegeTVKENip0BjzLSy3b0aJbAA2mzMVKJH9QgVWmzIVKJH9QgWWtzHzAsHsFypgCQBujUcBSFaBoQDcBwngUYBHfxt55/ZZS3cfHLh396ndJrr2tz6V9ZjbG/Nh25CwLCqQNVyPClGiAkEhSlwpRImzwv4KEmeF50eUOCm8A6NEq4BjlDgpgAsSFhTCVBCgQhxNAlSgBIGgECQARIUoAeAf94ESog+Q0H3A0n3A+qoPWLoPWLoPWF/1IUjkX+c+oHK6D5+V031A5UQfcO/99TxEH3Dh+eGg6oMvnwtKNH2gQmEO2Yej3J8S7EOjAEj3AXOh+4C50H0AoPtAQPUBgO4DAd0HALoPAHQfAHyjDwRkHwDIPtgnYKIPBEQfCIg+ELjuw0ZgvuzDSmC67MNCYLzsgxXAZxNn5z5sFci5AvNFH9bBgTKbvv2YLvqw9A6U2XTgPl78/2CdA2U2/fRmbR/sbaw4vgq+gM21D1anG31YB3wVfIHHhD7U6UYflh7vA/f7iD70DtzQB+uS8Qe+GfrA4XQFBzCbDlQJjCYmoygk/tSpSrAPUGgBSBgBV4hAkSBQVmoBbsLBT4cAcBNv4ed9ALiJSPl5FwFuckUA6z/wkwH80WqAXVEABkcDGD0NcHgVgPUNYMb1TQCIAlJxtTCPqJUAUCbMqZSggpaAgpbQCpDQCpCggpTQCpDQCpDQClgMk5JgmIQEw6QkoPCz1h+YGLTO62qDAQAAAABJRU5ErkJggg==",i0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAApFJREFUeAHtlgGG5EAUhqvRR+j7ZG4Q5AU5Qu6TAyyCVNBHmPv0EQabfVW/2b+e5B8Y1mALEpVP8qUz7zMpWc75/Tg+cj36+l3OnjhaAuDbr4yjr3K2+5HA3uw27OsvgPvhyKf5kQA3CQeAt+XjAkAxCgegeTVKENip0BjzLSy3b0aJbAA2mzMVKJH9QgVWmzIVKJH9QgWWtzHzAsHsFypgCQBujUcBSFaBoQDcBwngUYBHfxt55/ZZS3cfHLh396ndJrr2tz6V9ZjbG/Nh25CwLCqQNVyPClGiAkEhSlwpRImzwv4KEmeF50eUOCm8A6NEq4BjlDgpgAsSFhTCVBCgQhxNAlSgBIGgECQARIUoAeAf94ESog+Q0H3A0n3A+qoPWLoPWLoPWF/1IUjkX+c+oHK6D5+V031A5UQfcO/99TxEH3Dh+eGg6oMvnwtKNH2gQmEO2Yej3J8S7EOjAEj3AXOh+4C50H0AoPtAQPUBgO4DAd0HALoPAHQfAHyjDwRkHwDIPtgnYKIPBEQfCIg+ELjuw0ZgvuzDSmC67MNCYLzsgxXAZxNn5z5sFci5AvNFH9bBgTKbvv2YLvqw9A6U2XTgPl78/2CdA2U2/fRmbR/sbaw4vgq+gM21D1anG31YB3wVfIHHhD7U6UYflh7vA/f7iD70DtzQB+uS8Qe+GfrA4XQFBzCbDlQJjCYmoygk/tSpSrAPUGgBSBgBV4hAkSBQVmoBbsLBT4cAcBNv4ed9ALiJSPl5FwFuckUA6z/wkwH80WqAXVEABkcDGD0NcHgVgPUNYMb1TQCIAlJxtTCPqJUAUCbMqZSggpaAgpbQCpDQCpCggpTQCpDQCpDQClgMk5JgmIQEw6QkoPCz1h+YGLTO62qDAQAAAABJRU5ErkJggg==",s0="/smeditor/assets/parts-9a3f637b.png",Q0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAYAAAD1Xam+AAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAABXFJREFUeJztnb+LXVUQx+e+3X171/gjJAipgim1EdTOQhAEixQJQbCysAgI6SVpRLDVSrDwLxBsBDs7U/sH5I+IYGCzb9/uvuM9d88kx3k3MDNn4eU53w8M9xTvu685871zZ859u0sgNIs/KNE/wyLHkxLDuv+BOtUfeLJI9Hi45vi7XHPc61X6Q/ouHdIlkvExfQK9gj7dSWn5CqXlAaWTA6J8HeL0+jcq/a7mQ+B/zHGJZQleazkqsRBrJUua0wnt/SdODdsyuj6d7Q0xfH41xHDN67TS62EA0ZlK/mODfir5j/Tyqc2fr9ArKck/mkBlBFpgANHhhK+T31IBcMIvxFoJb/h85bUlAaLr0+p54tdrLTCA6ExVAFYDqOOYTAYg74DWBIiup7Mq8cs6oQIAapYvCC3SAIwVwNTmtzwDR9c/e/ZfVeU/KgCgpr7716HlAnoAdenreYaOrJcNQPQAgA1Z+nsqgAvoAchEgF7Jqkr8FaYAwIpo/vW/Kuf/jEz8H3Xzf0aWv5/Tu9BbEFOA1Tv3THoYQHS8zT/G2fxjvKUv9AU5BTACA4iOnAJYkT0AI+7SF/qRJKYAVmAA0ZHnAKzIHoCRevN7EiC6fm0KYAQGEJ2XoAJoSYDoepJTACMwgOh43wFg+Nmf+wBG3PNv6EeSPAZsBAYQnXr011IBGOf/DG/8liZaZP3aMWAjMIDo1Id/WnoAxvk/s+ln6G3XkzgGbAUGEJ1y9+8fGuf/DCf+b7b5P8Mb/yu6Dr0DngKk979w6WEA0fGW/oyz9Gfcdz7oz3GW/gwMIDre0p9xNv8Yb/ML+oKz+cfAAKKz4QrA3fyCfsT6+q8EBhCd1grA2fxjNl1Cb7seFQBow/sOAIMeAHoAYItBD2Cr9eevAu+49TCA6LQkf6ah/M803f2gbyr/MzCA4PSPnPN/5i/f/J95QK9B38KHt5r0MAAAAgMDACAwMAAAAgMDACAwMAAAAgMDACAwMAAAAgMDCM7iLUr0xrDI8XqJYd3/pDwf8PYi0dXhmuNKuea4rzsf8C0t0iU6JBmf0kfQa/jz99TNn1I3P6Ju74goX4c4vfFApYcBRGe/xLwEr7UclOjFWsmcluJnMU/GH8iCXke3czLE8PnZEMM1r7uZXg8DiM5U8u8b9FPJf6CXT23+fIVeSUn+0QQqI9ACA4gOJ3yd/JYKgBO+F2slvOF3y09jciJAr6ObPU/8eq3/fhCbqQrAagB17JPJAOQd0JoA0fW0UyV+WXeoAICa+QtCizQAYwUwtfktz8DR9c+e/WdV+Y8KAKip7/51aLmAHkBd+nqeoSPrZQMQPQBgQ5b+ngrgAnoAMhGgVzKrEn+GKQCwIpp//X3j7wPIxL9t+30AWf6+R59Bb0FMAZZvfm/SwwCi423+Mc7mH+MtfaEvyCmAERhAdOQUwIrsARhxl77Qj3RiCmAFBhAdeQ7AiuwBGKk3vycBouvXpgDm7wexeQkqgJYEiK4nOQUwAgOIjvcdAIaf/bkPYMQ9/4Z+pJPHgI3AAKJTj/5aKgDj/J/hjd/SRIusXzsGbAQGEJ368E9LD8A4/2c2/Qy97XoSx4Dt3w9iU+7+/ZfO/w/Aif+B7/8D8Ma/QXehd8BTgONXf3bpYQDR8Zb+jLP0Z9x3PujPcZb+DAwgOt7Sn3E2/xhv8wv6grP5x8AAorPhCsDd/IJ+xPr67/r3g9i0VgDO5h+z6RJ62/WoAEAb3ncAGPQA0AMAWwx6AFutP38V+MythwFEpyX5Mw3lf6bp7gd9U/mfgQEEp7/pnP8z13zzf+YyfQ19A4vdX5r0MAAAAgMDACAwMAAAAgMDACAwMAAAAgMDACAwMAAAAvMv7uiZXHUwyMcAAAAASUVORK5CYII=",I0="/smeditor/assets/frame-d599a2fe.png",c0="/smeditor/assets/parts-b37af2cf.png",r0="data:image/png;base64,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",G=`precision mediump float; +import{q as e,r as D,s as H,b as l,u as E,O as f,v as Q,w as I,x as c,y as a,z as J,X as d,H as s,L as h,Q as v}from"./ChartManager-b82bf91a.js";import{A as F}from"./AnimatedSprite-c4817119.js";import{H as P}from"./HoldBody-3932542e.js";const L="/smeditor/assets/downBodyActive-dd1fd694.png",Y="/smeditor/assets/downBodyInactive-c781a303.png",p="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0dOV1YU4MAAAPKSURBVHja7d1dTupQFIbh0pwJkDBA4xjEQVjGcOIATZwBnFslHC1l7b2/v3WHiUL6PimUwHI3Xc1pWS5fbz8/vU5bZn843/07nx/zVDVb7h/5sW29/7/vb99uvxyPu6+356nRbHnAldEqg7HGXzPt/rIIAuX4zQGwI1CP3wUAKwKH+N0AsCFwid8VAAsCp/jdAaAjcIs/BAAqAsf4wwCgIXCNPxQACgLn+MMBICBwjg8BQAEBa3wYAMwImONDAWBEwB4fDgATAoX4kAAYEKjEhwWAjEApPjQARARq8eEBICFQjE8BAAGBanwaACMRKMefpmn60+NUWXVAPj/mu4PsD+fN94/4yeZqXHPr+NWn415nAtSPtVe/vplbP2BGBOjfaag8ll2frBgQqH2hBe5FIDICt/jDrgIQETjGH3oZiITANX4pAMYvf+wPZ8r4lfdfegZQ+kKoQ/wmTwHKCBQ/QDqjHCh0BKqfHs5+AOP4za8Csh8AO36Xy8DsB8CN3+19gOwHyH6A7AcAjN8VAAuC7AcwRpD9AMYIsh/AGEH2AxgjyH6AwZP9AJM3AAUE2Q9gjCD7AYwRZD+AMYLsBzBGkP0AxgiyH8AYQfYDGCPIfgBjBNkPYIwg+wEKDlj2A+AdyyZngOwHyH6ALs/J2Q+Q/QDZD8D6IjD7AXDiD7sKyH4AjPhDLwOzH2B8/FIA2Q/A+T5D9gMYx2/yFJD9ADzxVwG4/v/zrggY469pt7v1w9OyXK5/9vz0Sqe8CpVK/JfjcbcKQBB4xP8RQBDox/8VgDMCh/irADgicIm/GoATAqf4dwFwQOAW/24Ayggc428CoIjANf5mAEoIKoct/kMAgoA//sMAgoA7fgkAdwTM8csAuCJgj18KwA2BQvxyAC4IVOI3AaCOQCl+MwCqCNTiNwWghkAxfnMAKghU43cBwI5AOX43AKwI1ON3BcCGwCF+dwAsCFziDwGAjsAp/jAAqAjc4g8FgIbAMf5wACgIXONDABiNYMuoxIcBwIRAKT4UAAYEavHhACAjUIwPCQARgWp8WABICJTjQwNAQKAeHx7ASAQO8SkAjEDgEp8GQE8ETvGpAPRA4BafDkBLBI7xKQG0QOAanxZAJYItoxKfGsAoBErx6QH0RqAWXwJALwSK8WUAtEagGl8KQCsEyvHlAFQjUI8vCaAKgUN8WQCPInCJLw1gKwKn+PIA7kXgFt8CwFoEjvFtAPyGwDW+FYD/Ibg1LvHtAKxB4BTfEsBPCNzi2wK4hcAxvv2cluWy9nVBJpPJZDKZjNL8A8iasRIljXPgAAAAAElFTkSuQmCC",k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0eB7cUHesAAAO/SURBVHja7dw7VhtBEIXh0WzGGWtxahZop6yFzKuREwKQBcy0uqvuqzM4Bwv6/yxN61GX7f91ff/F6+vPbWT9/vPj9M88//q7zVojt4/8u43e/tPTy+23Lu+/2LdFa+QXnhltZjDW+EfWMgAqCJTjLwfAjkA9fgkAVgQO8csAsCFwiV8KgAWBU/xyAOgI3OK3AEBF4Bi/DQAaAtf423bzrNDbmvJMoOqGsf0tbc8EstwTuEPeETaPHQHzvdiOsomsCNgfwmAAMCJQuH6BAsCEQOXiFQ4AAwKlkwskAGQESvGhASAiUIsPDwAJgWJ8CgAICFTj0wDoRKAcf9sWvBZwb8NYX2xBfGfz2X+/9LWAzzas++1dI7eP+rb22dc3e9X/TCYE6J9pmLmXpdcADAjUPtACdxGIjMAtftspABGBY/zWYyASAtf404+BLhvJdKwtPQYqfSBUIX7LQ4AyAsV3D+8oG4WOQPWt45kPYBx/+Skg8wGw45ccAzMfADd+2fMAmQ+Q+QCZDwAYvxQAC4LMBzBGkPkAxggyH8AYQeYDfFyZDyD0t2Q+gHF86IcAJQSZD2CMIPMBjBFkPoAxgswHMEaQ+QDGCDIfwBhB5gMYI8h8AGMEmQ9gjCDzATIfoC1+5gM03hNkPsDkDct8AMy9zHwAsvj0F4GZD4ATv+0UkPkAGPFbj4GZD9Aff/oxMPMB8I6amQ9gHL/lISDzAXjiHwJw5y7EEgFj/CPtLp98/3r7jZG3h6tcEwjFvxwFEAQG8b8DYI9APf4RALYIHOIfBWCHwCX+GQA2CJzinwUgj8At/ggAWQSO8UcByCFwjf8IABkEMxdb/EcBBAF5/BkAgoA4/iwA1giY488EYImAPf5sAFYIFOKvAGCBQCX+KgDSCJTirwQgiUAt/moAUggU41cAkECgGr8KADUC5fiVACgRqMevBkCFwCF+BwAKBC7xuwBAI3CK3wkAEoFb/G4AUAgc4yMAgEDgGh8FQCuCkaUSHwkADQKl+GgA4BGoxUcEAItAMT4qADgEqvGRAcAgUI6PDqAdgXp8BgBtCBziswAoR+ASnwlAGQKn+GwAliNwi88IYBkCx/isAKYjcI3PDGAagpGlEp8dQAsCpfgKAEoRqMVXAVCCQDG+EoClCFTjqwFYgkA5viKAqQjU46sCmILAIb4ygIcQuMRXBzCEwCm+A4BTCNziuwA4hMAxvhOALxG4xncDcBeB+764ATiCwGpPHAF8hcBuP1wB3EPgvBfWCK7ZhqysrKysrCy39Q9gQ/q5SfcuvQAAAABJRU5ErkJggg==",b="/smeditor/assets/leftBodyActive-75d41033.png",z="/smeditor/assets/leftBodyInactive-bbc074cd.png",x="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEANIA0gBQ7xAn7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI2I6Ho7PYAAANMSURBVHja7Z1bTgMxDEU7VjeAxAJR10C7CMoaEAus1B0Av6XiMY/EsX2PJT4GoTHpOZNJMhl32t3F6/n8eXt8eDrt1sTD48eiv79ebNcqluZumX9N7p7/39v7y7fj5+Nxuj3e7zrF9WKzP4xM8HsBHhXW8+RzPtgqVz4CrPiAM8IfIUzPnDaqAZmvfE8JeueyEQ2p0O17SOCRw7U/u16s1D2/JyCvXibtCCjKgC/LOX+LPfBzAZPvAZjqCQsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOD7xh74f+evLpcB/+/81XYAhRQgKnwFCQz4ta/w0AIAX1gA4AvPApTgR5/WGvDjrTN4CmrAjwXfWwIDfjz4nhIY8GPC95LAgB8XvocEBnztqaYBX3udIczTQOoDFBOA+gA5gvoA1AcY17VTH2B8TuoDBAPinYv6AIEloD5A8Hs+9QEGBvUBiq0DZB7tUx9AGD7TQOAjAPARAPgIAHwEAD4CjIRPFBEA+MICAF9YAOALCwB8YQGALyxAS/hMAZMJAHxhAYAfI/YV4fccU3jkoz6AMHzvQbEBP2Y+6gMIw/fMYcCPCd8rlwE/LnyPnJbZXm8YFVcsDfi68GcJcP/980RxAZ6Px6mFBL0XM7xX/6quNv7YKiTQkeDXFkWUwPsLHaJ8gcSw+gBIMF6CLbnmsJrmnOj1fP68/93h6cSaQOeZQWv4P13Q09wTIoFvPg/4iwRAAr98XvAXC5BJAsVYCn+VAEhQB/5qAZCgBvxNAiBBfvj/rgP8F1lWDIHfSQAkyA2/iQBIkBd+MwGQICf8zYPAiAPDpQJl3++wBX7THoCeIB/8LgKMlkDlTeMW8LsJgAQ54HcZA0QaE6yRp/UgK3q4NAwJxAVAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAggERet9Vtk0la+REgGISIAASIAASIEA5CRAACRAACRAACRBAT4LKkqRvWW8JqvcQJVrXUoL7H24BYhIwBkCC1ZFRuJLvu7V6irgVPo+DRSRgQ4iwBGwJE5aATaHCErAtXFgCXgwRloBXwwpK0HrtAQFEJOD1cGEJKBAhLEHlsnEEQRAEQWjEFz4LZYAP3C09AAAAAElFTkSuQmCC",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3FABOeLgAAAM3SURBVHja7d09csJADIZhW+O7pOMsaeGASZuz0HGapGUIMP7Z1Ur6XnVkMgj8PdjrxV7m6X/93j+4Xj+nPfX1/bHp/y/n29SqtvZu2X9P756v73T6efzTfP9gmTrV5XxbvTEyhd8r4FFlPZ98zYat8skHwI4NnDH8EWB69rRRbyDzJ98TQe9eNuKNVNjteyDw6DH3OgvwqAjH/Gij/q1nATYlrSgDvizP+aoWws8VWNoxAKd6ACB8ABA+AAgfAIQPAMIHAOEDgPABQPhjayH89/2r4zLCf9+/2hVAIQFEDV8BgRF+7U94aACELwyA8IXPApTCj35aa4Qfb57BE6gRfqzwvREY4ccL3xOBEX7M8L0QGOHHDd8DgRG+9qmmEb72PEOYbwNZH6AYANYHyFGsD8D6AON27awPML4n6wMEC8S7F+sDBEbA+gAJjvmsDyAcfqbnDD8PkHm0z/oAwuFzGkj4ACB8ABA+AAgfAIQPgJHhU0UAEL4wAMIXBkD4wgAIXxgA4QsDaBk+p4DJABC+MADCj1FLxfB7jik8+rE+gHD43oNiI/yY/VgfQDh8zx5G+DHD9+plhB83fI+ellmvdxgVZyyN8HXDXwXgyZ0lVHEAcwsEvSczvGf/qs42vtoDgEAEwbtDQDgE3j/oEOUHJEauDwCCwQiO9FqT1bzyuX4f/7DntnHmBIaHP+8FAALnfh7hbwUAgin+18Fbwt8DIA0Cxdoa/l4AICgS/hEAICgQ/lEAIEge/pp5gM2AIs4YEn4/ACBIHH4rACBIGn5LACBIGH6LQWC4geFWQAWudziUoXm8IPYEMcPvBWAoAqE7jZvsvc3zBYIgVvi9xgBhxgR78LQeZMlIAgEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEEQqywY08kUlkX9pPSuAdAgAAAIAgAAA5RAAAAQAAAEAQAAAPQSVkViB99AVQfU9RKVLnJtMGx+tJ/iYCs60J2AMAIKWn34OASqHA74OFkbABSHCCLgkTBgBF4UKI+CycGEE3BgijIBbwwoiUN6GigBaIuD2cGEELBAhjEB9u1EURVEUlbz+AOnsq2p4bKxbAAAAAElFTkSuQmCC",y="/smeditor/assets/rightBodyActive-07f95372.png",R="/smeditor/assets/rightBodyInactive-fdefc2a4.png",X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NtUuOVwAAAOHSURBVHja7Z3RTSsxEEUdKw0gUSCiBkIRhBoQBSLRQeDr6YWQEK/j8c7MPfcvIO0sPmcd24RhU07yut9/Hb9+fHguPbm7PxSLfH7UIdfpub9RtXvq99Z+e3/58fppt9scv96WYLk2cK0D9flRF0O4uz8Mk2BJ/ZHinaYW4fQM7MiZraW+JXxTAaxvfFRNzxLMGMPqDcgatTxKMGvsqmcwM2t4kmDmg1O9P50zr+1BgtlvndOqWfxgXq5pteWdkanbwDUWhtZbNIstYsoZgC0iAiABAiABAiABAiABAiABAiABAiABAiDButlmB3Vu0Nf4UMfx/Xg6Maxq8Ec/idFngqoGHwlYAyABAiABAiDB/F3A2p/Fn7U6j7Q7qBGfsghPYpSZoGaEjwSOBFh7kYMEKwrgZa+LBCsI4O3cGwmCbgMzQfAoQYhzACQ4aAvwbxBGDURECaxCf4CFtekPkCj0B6A/AP0BvAFZoxb9AYJLQH8A52sA+gO016c/QMBr0h8g4P7X8xYx5QzAFhEBkAABkAABkAABkAABkAABdEJ/AEJ/AOJTAgQQlwABxCVAAHEJEGDCVtCzBAggLgECiEvgvj/AUgiWg3lar+dzA3+NDf0BBlzTchCt69EfAAnoD4AE9AdAgkJ/ACQo9AcIIZ51PfoDIAH9AUhf3t5fNAWYfaBiXa/n+ufgP+12m/QCAL8dvqkAXvoDzDwaHl3PGn6TAC3vIx4kAP5y+KWUcvabr/v91+nXHh+e3a6Sgd8H/6IAkSQAfj/8PwWIIAHwb4N/VQALCTIlOvwmAZAgL/xmAZAgJ/xFAiBBPvhN5wDXCt1yTqAcD/AXC4AEueB3CYAEeeB3C4AEOeAvXgS2LgwjZekitncR6BH+TTOA1Q3x5M+DP0QAJQlm/efTWfCHCaAgQUb4Q9YAnjPq4Cor/NQCAF9YAOALCwB8YQGALywA8IUFAL6wAMAXFgD4wgIAX1gA4AsLAHxhAYAvLADwhQUAvrAAwLdNuA4hwBcXAPgIAHwEAD4CDI4ifAQQh48A4vDlBVCHn1qAa3CBLzADXIIM/P/ZluQZ0a00K3wWgeLwQwowswlFdviliP06GPhBBZgtgQr8UALMkkAJfjgBrCVQgx9SACsJFOGHFWC0BKrwQwswSgJl+OEFuCTBLVFre5f2z8OBLyTACAlUG16mbxEDfEIIIYSQ3/kGeiN5xirmRdUAAAAASUVORK5CYII=",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NUwnaOYAAANgSURBVHja7Z1BUuNADEUdF3dhx1lmyxxw2HIWdnMas6JqKpCx3ZbUkv7TLiFJR/1eOurGiNvyPbZ/b3x8/FpG4s/b8+IRv1//mrzOyPuzGntk/NGxX17e7++6PbxRQQDLiaoiwZUx9wRYF+EYmVhLsY+MbyncT7FmmtwZY2aWIGIO12xAZoyVUYKouVszg4kcI5MEkR8ctyKw2q4gS2FoHWmKQI9JyvKas3Y8pVaAatFlJWAbyEowtwhEAgRAAgRAAgRAAgRAAgRAAgRAAgRAgjTR/iTwp0mfeWWP9fh7IX0S+AhO9EUdmVeCVQ0+ElADIAECIAECIEH8LiCyYq523b/X7iDNLiDa8gqXfGdYCdaO8JEgkQCzixwkmChAlr0uEkwQINu5NxIU3QZ2gpBRghLnAEjwrC3A1yRYTURFCbyC/gAT4dEfgMJw+mpBfwD6A+QCMmMs+gMUl4D+AAmLwKiikP4ARYpA+gPkDPoDNF8J2AayEswtApEAAZAAAZAAAZAAAZAAAdhSIgASIAASIAASIAASIAASIIDAVjCzBAggLgECiEuQvj/AWQiek+k9Hv0BDF7T86KMjC3nSnwFeCaGBMkFiEgICZIKEJkIEiQTYMb3GRKwDQwXz3s8+gMgAf0BCLMzAA0Bov9Aw3u8kdd/AP/WXgDgH4fvKkCW/gBqR8Nn4B8S4Mj3SAYJgH8e/v9+uN3fceWXQt5VMvDH4O89oIQEwB+Hf+RBqSUA/jX4Rx9oKkGnqA7/zIORoCH8s09AgmbwR54kL0En+IfOAfYGunJOoBwZ4I8IgASN4I8KgARN4F8RAAkawF+WZXm6+PzbfWFYTYKoIjYj/KsrgMsb4pMfB99KABkJorqHRsG3FKC9BB3hK3xyTQ6uusLvLgDwhQUAvrAAwBcWAPjCAgBfWADgCwsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOALCwB8xyjXIQT44gIAHwGAjwDARwDjUISPAOLwEUAcvrwA6vBbC7AHF/gCK8AjyMCvlYDbfzFTh08RKA6/pACR/Qe6w6+UTHh3MgX41RIKk0AFfsWk3CVQgl81MTcJ1OBXTs5cAkX41RM0k0AVfockL0ugDL9LohtzQrIb80HCG3NB0hvzQBAEQRAEsR+fBPrG1xa4jMQAAAAASUVORK5CYII=",T="data:image/png;base64,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",j="/smeditor/assets/upBodyInactive-87a7969e.png",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5IlF3wK8AAAPCSURBVHja7Z1bbsIwFETNKBtAYoFV11C6iNI1VF0gEjug/YUoRbWxfR8zV+oHH9TG58QhUe6wK6v6PJ1+bl+/vryX2tofrtXvuZxRelXL+BHm2DL+1/fH3eu343F3+xq9Fykr/N7/u+Uzj/hsEHxuCcAM/3KGOQTr8VGMytP5NKIEoQXw+GWKVQIIPrcEEHxuCTBr4pGuob1L0HMtMeMIj3gDxasEvXeIxfM2b32peTmjesz94dptDWacDuyuP4LcZ/Byx45aAOubTJklgOBzSwDB55YAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwBm+PvDNeWDniEE8PQMIbMEYIfPLgEEn1sCCD63BBB8bgkg+NwSQPC5JYDgc0sAweeWAILPLYHyAcglUD4AuQQQfG4JaPMBoksQWoDo8DNJAMHnlgCCzy0BTT5AJgmUD+C0lA9Q/OUDWEgQKR9gKUFqxtHVa4yeEqS8DPR6fmU5VYUSYPY3bDYJwAz/r74AJgnADP/RWCwSgB0+uwQQfG4JIPjcEkDwuSVYosKvAdLaF7Ae49GYlomioXcAj/Bb3qt8AIfwZ5fyAYjhR5UAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwDB55ZgiQb/6/vj7vXry7sp0Jb5WP8a2dAdQEd+rJ0Ags8tAQSfW4JQ+QDr863Hapmj8gGSwI8oAQSfWwIwwr+csfnHKIHrfIBR8Gcu/ggJKPIBthbu7Xjcjd6Bnl3crTn2lKC3pBhxhD27tc6CP6o3sKcEo09T7i7EZ8J/dF3tRQLz7wAzJ20BP7ME/xkLXiY9Av5WzfrNoCjrCQ+T9gA/kwQ16wnrSXuCn0GC2vWE5aQ9wo8sQct6wmrSnuFHlKB1PWEx6VnwvZan9cTsSbPD97aeS+2kP0+nn57bFyN8T+sJS2DM8L2sJ6wmLfg+1hMWkxZ8P+u56CjOeToYvgOocpQEkAAqCaCSACoJoJIAKgmgkgAqCaCSACoJoJIA0euZ5g6GBBOKHaAFJEt8Dc0poAYoU3YR1XeA2T8dKwGCScCYWrYUwlI8nS4DVVkEsAxdiJhetq6QD3WumylKmR8anaXDKexTvZYSZGpvC/1Yt4UE2Xobwz/XP1OCjI2tKRo7ZkiQtas5TWfPSAkyt7Snau0aIUH2PIN0vX09JWAIs0jZ3NlDApYkk7Tdvc9IwBRjk7q9u0UCtgyj9P39WxLUVPYMBIqAh1YJGAIwaBI+aiVgST+hinj5rwSKvlGpVCqVSpW9fgGbIppuMBFz1QAAAABJRU5ErkJggg==",q="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5JlYaBLYAAAO8SURBVHja7Z1LUt1ADEXtW94LM9aSKSwQpllLZqzmZZQq6oUX4nZ/JN2jGVDgRud0t21aYt/+jtvnD379+rGdjbf3p9Pf8/rysfWKlutnGGPL9Z+ff95/av/8gXonqSr83j+75Xce8bsJ+N4SyBn+68vHcgirr69tUUTaTzNKkFqAiDdTrhII+N4SCPjeEmjWwDM9Q0eXoGcuNWOGZ3yBElWC3ivE/sXnLr8JjPQMfjVhqx9vr8b0N4GV4EdYCUo+BmabhZUlEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lkDP8t/enkgc9UwgQ6QyhswRyh+8ugYDvLYGA7y2BgO8tgYDvLYGA7y2BgO8tgYDvLYGA7y0B/QHMJaA/gLkEAr63BLb9AbJLkFqA7PArSSDge0sg4HtLYNMfoJIE9AcIGvQHSJTgLFvd1fiuP8CxJYkZs6vXNd7en0KeXA71HiDi/uqyVaUSYPYdtpsEcob/qC7ASQI5w//XtVwkkDt8dwkEfG8JBHxvCQR8bwlCvAkcfZikNeGjrzHjZVH4TqFR4Z/9XvoDBIQ/O+gPYAw/qwQCvrcEAr63BAK+twQCvrcEAr63BAK+twQCvrcEAr63BEc2+PfvtlefWm4Zz+vLx+kcjTpoKma+90og4HtLIOB7S5CqP8AXf9sOFy1jpD9AEfgZJRDwvSU4HOGPrg38PPazj6ktj4ghVoARNe0z4Y+agSNWAov+AA8St49egTokdx8pQW9Jj5kzLBr8P0vt/dc6LMP7dne6unU7KPkUEAn+o70/ykowOr6tC9i2ee/b/xP+5bqFR7O701a1Z8qnopg7YuafvdMfdPcdOp+KMOgI8CtJcCafWj3oSPArSHA2n1o56IjwM0vQkk+tGnRk+BklaM2nVgx6FvzAESafmj1o4MfK59Ew6Fvn5csRfph8ajEwZ/gh8qmFgwZ+gHxq0aCBHySfB7O47HYwfAUgCgQCIACBAAQCEAhAIACBAAQCEAhAIACBAAQCZI8rFT4OHUwsVoAWkC7ta2y2gDNAnXoXWd0DzP7XsQiQTALHrmXHZhi0p+MxkKgiwMqmCxm7l91H1kOdy5oufAN/RwADCSqVt2U/1j1dgmq1jRXO9U+ToGJha5XCjuESVK1qrlTZM0yCyiXt1Uq7uktQvZ9Bxdq+bhI4NLOoWtx5WQKXTiaVq3ubJXBqY1O9vPu0BG49jBzq+2/kyFuAKxKUz49Th48bufEW4IwEtL4hCIIgCKJ0/AYcP+o66BZ87AAAAABJRU5ErkJggg==",V="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAAEACAMAAABMJ46VAAABiVBMVEUAAACMi4sM5Jj///8L45kL45oL4poL4psL4ZwL4Z0L4J0L4J4L354L358L3qAL3qEL3aEL3aIL3KML3KQL26QL26UK2qUK2qYK2acK2agK2KgK2KkK16kK16oK1qsK1qwK1awK1a0K1K4K1K8K068K07AK0rAK0rEJ0bIJ0bMJ0LMJ0LQJz7QJz7UJz7YJzrYJzrcJzbgJzbkJzLkJzLoJy7oJy7sJyrwJyr0Jyb0Jyb4IyL4IyL8Ix8AIx8EIxsEIxsIIxcMIxcQIxMQIxMUIw8UIw8YIwscIwsgIwcgIwckIwMoIwMsHv8sHv8wHvswHvs0Hvc4Hvc8HvM8HvNAHu9AHu9EHutIHutMHudQHudUHuNUHuNYHt9YHt9cGttgGttkGtdkGtdoGtNoGtNsGs9wGs90Gst0Gst4Gsd8GseAGsOAGsOEGr+EGr+IGruMGruQFreQFreUFrOUFrOYFq+cFq+gFqugFqukFqeoFqesFqOsFqOwFp+wFp+0Fpu4Fpu8Fpe8FpfB2xHZGAAAAAXRSTlMAQObYZgAADF5JREFUeAGcmIWSIzkUBG+YmZkZbmmY//+nVu2Rn5QuuZ9iM2itkrJqAu/6v4aBwCAYykGCHAwrhXwkMhBoujkg4aqFEaWUj0ZkgDS4cjIqjCEf60EGaENZb4Yh9ZNiPt5FBviCtnxcwXONdYCiClLfP2FMdrEBtqDyj5jIMP+kgKfZ+VQE/XFBMALVEMtNm8DDPJj+Bv22YJKURVpk1gSezSjsTwsoV1X43asq+vv3z3ZAPxbUy6gleIIE/e4CV6fogzkyH0C/LKgVitbAdSSBhYUF9usCtapStQlcXuhlcVH6ZYFaVSpaA1cXBfaz2Rao1dWWLy4pA1kR+/MFvpgsG7i2rKBmgP1ZtEytq17pgksrBVIJFwxE4r9XqHXlqxFcWVOW11KHDlj5PhkIrELr6Q33wspa6liXAWtrAxF56BWsd0C8XiJcHIislwasdTOzElZ44UaRuGBzc1MGNJKBgMm8BSbdbEC0qdj5QGArIAPMtbHRrpGaRodgS4nJ9nbzY7tBBqDFETEPNhx3/DvAsnQkA1hiKmIq6nhImO8aMgDXHRnzXRztKkz9Aa6Oebl/L5HH+4YMaGkwTJhIP1lwYCBPxzIAk0UJK3L1E+SHCRnAR/VS9QPm3gDD07r9RxHkxzkyoKUBWorVD5if5MiAI+KqhROlJz/NkQH083FZTk7BWQPy8BvIAOqDQ/U0DKmfSH6eIwM8QXt+rqRQc3+Aq0Au4cXFBR5fNFwC/a9S/4+4IKnkUknvLL/KKX0fyNXQeDVXSnyC/Dqj/H0gM7eIpOhawbMbpd/3AfPWq8qHxUe3BvqxwJcJtwqe/G/86CL9usDXwUrwQGPtxwJofaHX/1Pxvg+4Soe+l399438f8KXUElz9rdR8H6jXKrj4R6n7PlAtFnDtjtwHKr8P+GpqDVxCEqn8PiDvfLleeSjR9n3gPv2/+z/q2y88Bh5Sx6MMCPMieOcUPCYQP/VhIBL+pQPigufHMk9PrRUIn/sSO56fZUB3X5RpQ3jUUoLoRemcv76+vAwEXgMyQGXPJGpY8xpB8KpIogMw1hFJzuM3wbJ0JAPUxgVUUcfDdyGF6UwGYK7JEpRFikcfvWTppyEDdC8XQwchD4jl/gAMdoVGof+LIE/HMqBvQ4RKQj9B/pcRu1rPGwaCMHywV1amMDMzM/OV14ocaeRPedZv2SvPzt+jRF8zFMBLfijE6G/KlA5YIGkyTDFVY5n/XZj6rlAAGzJJRTDzfwhTPwsogA1CYhEt+YC5QIGc7b8scx75lZj61YECTv1fYAL5OPC7CwUY0G8B8v+0TP2BzwvkqE4E1Id/I1N/iV+V/iEvpDr6987UP6rdD/wlL4aDCPsHOur3A26QiqnWKKMHA1ODhP2pAcp6UXg41DA1RNifGgySEwbDw8OmhoORAvZLgyFCXDJSZwpT7O80GHYDHaOmRsm7HxghL1LV949l/v2AG8pUYWqc+twP9I8lUxPU736AuRMIrjM1mUx96Hk/wODJSVMaq0xNVfS8H5gihntHpmvyDhaI/z3xrzDdcOJxQMy0pvOOGRQI9SJG1xfMlEyVo9nWTLM2mp1lgY8GM3VYMVsyNRvRTLsfBeLedjbLEHeJqbnSfMOC+fm5ubAjPEABhMmGFGVqXmCgFhYWLFpYiP9soEAujCBhaiHhY7W4mGaLCQqgLaLSKsSZWqLaEAXasg1uQFiZ5+7PlhMU4Hk/LgZ2HoAJt4AfiLmpFTK1mqBAymcDRALyM1NrGQrEbLzkhzJfmVrPNlAgRstrbiw0sV2mdMACMXm9hRcRDO6xzQIKONX9BpuEebZVL+C9jHkWYwumtks7KMANaqtre9uYv1MwtdPBAjFWIaDDG6tdQAEvojMLGchX3K/29qSANOgVwnmKzUztU+1+wPsYeyrGML9l6oDq9wN7TpAO2qCYD6YOiftjAydKVx22ivyjlqkjwv7U4JCcMMD+Y8B+aeDGRZoKpo6d/WjQP5BO3pk6OTnt4n6nASKDFAemmn+fdfj3A36oxIKp8OC81Od+oG8sXFxcmLqgfvcD3dR6MNSPXaqe9wN+9GWdqcvoSlz2vB/ww6+qakeu1VXewQKX+Xv3HvHXFaZuqvKOGxS4aupF1zcae5NUF3jjWxUaRLe3KBD7NZpjxBW3HRzC3V3YG9zd3VUKxGkMY4izxNRddt+y4L4Rdtw3UIBhbWtl6l5w0HqILHrIUCCXRRAWIQ6Pk8d3afb4+PTU/GqgQCgbaRSYemyZeiIOKwVC2ajYwDBVfaSeA8ueExTACufj5EA86MD4JUCB2NYN5NzUS8fr66up1wQFPtvwQsUc+YW3t2L+lqHAS37rk9KYwxv9Z90stCwJYSD6cevu7u7uvvPn8zg8OsNcQuWk5653Aan16SJxdRjY8beR9fVpYLoR5OtrA1kHsr4wsGMk/hzIJdBhgH/W438X9F9X6jAgDwCr6tOA+jdvqic2dwbWOvhDquDro3xA/d/n6omN43xA/f/v6IltXj7wk/BDLePHhsiHbsDPBxKHrasPB+pjYaiJDaifdfBtjHqBUfmAfOUSqMU6H9AvnSS+NJIP6Ndun/X5QNjBpxHdsoEezAdC0UtqUTAfCIVPqSWzfOC9vbu/HyLTOiwgVuMdDBS1kgsgKROr0ce1LSOtWjSC1SKxGjTQ1OUw5QCRMiToJeNuoTgMMCFX2bkUqNeY/1UBBnBHoC8ivMfEtHLX8bIAA6PblpekKxW/2qEIAybJw4xg/V51ru1y13F8QChrA3EH+64XnwHoTyu8uDTmd6a4tc3dH8OAv4msqe9e3+fuzuVC6MKA3tj6C8gjQt1v4WhCsofCWQTdb2J5YET7SPQS6PcXYGDeftMestcm2O4DFQbUASRR/67BRiaSaRGLbIaBuIM7PeiRg9Trt41RPqB651w9vPHWwjgfUP2Djh7ednPBywduEtUqGmj9JH4+kDgsvuV6Y5YPyF5aEt5wbcs8H5D9xCC6HPWTDq4K1GKdD+hDU/WvVCL5wBWC7n6Pg5kvUAdfclHLgvmAPPqiw2RRHQoJ5gPB4ZXEklk+cMHe3S+QyLQPFhCrcR4GilrhPl1AyOcqVuPcORjY6FU7e27AWTFC5ohkW6N+B0Ne7VsccqbiTL55EvQ2aNe+9ebceMxw9q4+8gVjGRuss3ynCjDAGUM9yCgee0dKA1juzWA6D8FIhAGTcJg/hzp6RIYqDJiE4453dOX4gIynh2EgMW9ciC8PG8AWMfWdnD+HAX8TydY/sgcY8GfrD5Pd3s5iwc0YiMFlZma4lpm57/9Mi7/XcT5rpKKKa2ngmMxBwuhIWPsPFIU/iU6GMvBYoCr9QXQyFX0foS0gch8KKyHvF+jI3UASAVgsYBsAnu74CtAIhaDry4iA1Dw/lbomnwlLaX52H3BtPhGG0IXz+4BvBCTzPxLqPrCuowsUwMegSN8HRh3Nrt5HcCXVfWAQTuy+3gVwBmb1fcD7kTnk890G3hWO8GJ/H7BN8/mvieQ+sEilN19/Jv6OP+GOtPAnfAmksvA+8GJbW3k0vhCwZpbhfSAzvyS8pLoPPO/f3Z9tSb39qBcQKzOwwBa7IDIgNfRTgTbj6VMssMc+ebL13yczDCNK8rHCk90Zi18uTGLbv6oJhtQU+D5DLPD40RYWsbcB1sRDgIbDWADi2AiZz9q/uT9hAapDK2g+0lp6D/0NC1AemXHziZiyWID6bAM+VPbihXF66lcOPpenC9CzfcTIQ1z613dgAVckeEor//4qPiAqA09hEQIwMDI+QOQXdICPZOCxQFIKnqL7aRSFiJAwxeC9BLxZ4N4eZJZH5ym428C4kTWIGBGdmEIktOaxgG1BkJSRMwQ/lVJjm3jKzMcGtwYgJghYI1TsEDG/D1BnG43PIniJUPcBKm2r1cfrDWP0FKHvA3mSFpGXYP5f2iDNN6vvAz7PzCGbrze4QgwtwTaE+Xb+PoASNJ0jz/dz9wFWsS1xcQf/J98QbCwL7wO+NTGNogTC+wALffNZGCdR3QfO9e/uLLTtz24BcaREn7H8dwg4bXtFAaoRTfQZXKCxp1lmRyCSVmJ3xvIfhMy2f0UTDDEU+NUZWIBhwe1HMOB9LDEZLACxbETeBzOTwwJQy1bgj4/51sSMxAJIus7CvPlETFm7QL5BEk9OGgtkeefkvTxc4EiHyHwnn+ffk8cCrog8cYiQPBZwZeCJA4Tm2wKbLgaUBcRtXngAAAAASUVORK5CYII=",W="data:image/png;base64,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",Z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAcBJREFUeAHt1LGtKjEQhWHf4JZAP7wOCPAGlEA/WwIBJqAE+qEEAnjGiNGc82vjm6wTS+vD+EMaTym1tXZ9vZ5t7H09Wl+3z17LJ3Dp39vY+7q3vj57BFp8T8mWA7eoHHc9JRAIIURAEEH4BjZHQQjhvO+B34MghHDa9cDPJAghzNsCBAiOAMERIDiCBEOAAAQJW0EI4Wf3/v1OEEL4fdeo+zJFYSHMZfNW1Fqm+C7JudQRmP9NUjnu6gcjcKqHsIm2H4zAuR7l38X/7Qcj0GpLXZJ6p9VvR11Sn6Xuu0fLXVOnpv59pEBqtGg+DQQiCBYIRBAsEIgg5EAqK48zAgmmjzMCqW66LQIL82GdD+t8WOfDOh+Oy/PhPJ7eYXk+nMbTm5bnwzyeniCMsC1AgACEERwBAhBOAMIIRBiBCCMQYQQijEAECECAAAQICQECECAAAQIQIAAhBCBAAAIEIEAAQghEgACEEYgwAhFGIMIIRBiBCCMQAQIQQgACBCBAAAIEIIRABAhAGIEIIxBhBCKMQIQRiDACESAAIQQgQAACBCBAAEIIRIAAhBGIMAIRRiDCCEQYgQgjEGEEIkj4+/UfcWPZV43B2RYAAAAASUVORK5CYII=",_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAcBJREFUeAHt1LGtKjEQhWHf4JZAP7wOCPAGlEA/WwIBJqAE+qEEAnjGiNGc82vjm6wTS+vD+EMaTym1tXZ9vZ5t7H09Wl+3z17LJ3Dp39vY+7q3vj57BFp8T8mWA7eoHHc9JRAIIURAEEH4BjZHQQjhvO+B34MghHDa9cDPJAghzNsCBAiOAMERIDiCBEOAAAQJW0EI4Wf3/v1OEEL4fdeo+zJFYSHMZfNW1Fqm+C7JudQRmP9NUjnu6gcjcKqHsIm2H4zAuR7l38X/7Qcj0GpLXZJ6p9VvR11Sn6Xuu0fLXVOnpv59pEBqtGg+DQQiCBYIRBAsEIgg5EAqK48zAgmmjzMCqW66LQIL82GdD+t8WOfDOh+Oy/PhPJ7eYXk+nMbTm5bnwzyeniCMsC1AgACEERwBAhBOAMIIRBiBCCMQYQQijEAECECAAAQICQECECAAAQIQIAAhBCBAAAIEIEAAQghEgACEEYgwAhFGIMIIRBiBCCMQAQIQQgACBCBAAAIEIIRABAhAGIEIIxBhBCKMQIQRiDACESAAIQQgQAACBCBAAEIIRIAAhBGIMAIRRiDCCEQYgQgjEGEEIkj4+/UfcWPZV43B2RYAAAAASUVORK5CYII=",$="data:image/png;base64,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",A0="data:image/png;base64,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",n0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAgxJREFUeAHt1LGRo0AQheFeQyEoH20GMmgZCkH5EAIGjUEImw8hYGiubni19+YVNO5W3Y4zBv+KD3ZoM4+IuZQ1IuILe/m71rEzsy2YSllwYcHlNohSYutKUOD/gq93bHd61xvVtYTfvoOZCfMWRPT372AiQr1T/a2hQ4AFAhBrxOh3DkAAov6WdxyAwKv3GiABgddYg9FfTGhWDQZ/tgQN+s+HECRwewhBgq4GQqDgev94KKEJLrfLUwlNYHZ9KUECZ8JUQgMi1H3RgAh1XyUQQtFACU0w+g6Bg94bAu10YISAXY4cCLTLoQWBdj32Sgj9cJQQ+ukpYdKPVwkzB7/z4X+dD+VsPpSz+VDS+XAcgHAcgHAQEOFgyjFBX6TMh50X2XtLwHHlAyOEgo2PHBOmQltzaEGYC206H5Sg80EJO/OhvKdCm3z+9cpcsEnwOgmuz5NbXB4nyA9PHhOI7EUBcfCqU8QakSHw7zZB7B2oBiEBDIzghadoEe3ymwlil8CIXQIjdgmMOCAAsQVOy0wQEoDAiKUJQGDEygEIDeINGi1F4OF4KWIgmyL4lGD9In4+wjIEggSBIEO4JQgECUICRSDIEBooAk+RIMIlEESM/nJLEDH40y1BRP/pbgkievPOMkRv17tliP52uVmGGPTvFTFCcIzQZ1BEGhjmY4LAfDxGYD4mCMzHn7T+AIoBqFgX1z4vAAAAAElFTkSuQmCC",g0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAgxJREFUeAHt1LGRo0AQheFeQyEoH20GMmgZCkH5EAIGjUEImw8hYGiubni19+YVNO5W3Y4zBv+KD3ZoM4+IuZQ1IuILe/m71rEzsy2YSllwYcHlNohSYutKUOD/gq93bHd61xvVtYTfvoOZCfMWRPT372AiQr1T/a2hQ4AFAhBrxOh3DkAAov6WdxyAwKv3GiABgddYg9FfTGhWDQZ/tgQN+s+HECRwewhBgq4GQqDgev94KKEJLrfLUwlNYHZ9KUECZ8JUQgMi1H3RgAh1XyUQQtFACU0w+g6Bg94bAu10YISAXY4cCLTLoQWBdj32Sgj9cJQQ+ukpYdKPVwkzB7/z4X+dD+VsPpSz+VDS+XAcgHAcgHAQEOFgyjFBX6TMh50X2XtLwHHlAyOEgo2PHBOmQltzaEGYC206H5Sg80EJO/OhvKdCm3z+9cpcsEnwOgmuz5NbXB4nyA9PHhOI7EUBcfCqU8QakSHw7zZB7B2oBiEBDIzghadoEe3ymwlil8CIXQIjdgmMOCAAsQVOy0wQEoDAiKUJQGDEygEIDeINGi1F4OF4KWIgmyL4lGD9In4+wjIEggSBIEO4JQgECUICRSDIEBooAk+RIMIlEESM/nJLEDH40y1BRP/pbgkievPOMkRv17tliP52uVmGGPTvFTFCcIzQZ1BEGhjmY4LAfDxGYD4mCMzHn7T+AIoBqFgX1z4vAAAAAElFTkSuQmCC",B0="data:image/png;base64,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",t0="data:image/png;base64,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",w0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAAgdJREFUeAHtlLHRozAQhSGgBPr53QGBl4AS1A8lECACl0A/lEBg3RrLbx743XGhZ36/ZD3jD/RJrLbw1OGWHoke/3XPdfViBYCMTBn0ugAwAmJ6/uM1voDSnPc8Xz5v7/Z6B1C1zm9ZWWIFUHfbc/ndkFheQGUhRmwDEp4M1PbgswIkCLA2UiBBQIgcSHjsCUQOS4wWJACJwToJQKK/tBKARF+YAiDhQC0BSPQ/1VUBkBiaslEAJEZ//gikhSXsDZjSupcAgNXve4l3IL1LWGBASFjLgJBAw2yAkEDLgWMJblosjnpoeyyOerg4UUjw1cPiqMfLuwgJBrA4KoDvfPjV8yGdzYd0Nh+Sng8MyPnAACT+BkBCA3PS84GPUs4HZCKJQ8MkFJLglpupQIKb9kZlUW0/oYj5oCT46gkJcXmXmcoigHWmsv4HMJ4tMVxPJPvmZJv288+DgoI+alLQHwsKhf7cUBAtRQpw2IUV8i72YYV8DvuwgpQgBS1BClqCFLQEKeQY5QFAARIHAAqQMAYmUoAEAzdWoEB3JgUEG5YKZNspBYqFj1b4KiBagQFW0IBWQEwoCAAKGmAFDZCCBqCggQkKGrAIBQmMFiIUFDBYF6GgALu0USggtRVtFApIdXVAKCBlU7ZaAak6qUAWQSsgxgoa0AqIeaQCz0upwPNSKvC8hMIH5Q+bbaeb663kYwAAAABJRU5ErkJggg==",e0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAAgdJREFUeAHtlLHRozAQhSGgBPr53QGBl4AS1A8lECACl0A/lEBg3RrLbx743XGhZ36/ZD3jD/RJrLbw1OGWHoke/3XPdfViBYCMTBn0ugAwAmJ6/uM1voDSnPc8Xz5v7/Z6B1C1zm9ZWWIFUHfbc/ndkFheQGUhRmwDEp4M1PbgswIkCLA2UiBBQIgcSHjsCUQOS4wWJACJwToJQKK/tBKARF+YAiDhQC0BSPQ/1VUBkBiaslEAJEZ//gikhSXsDZjSupcAgNXve4l3IL1LWGBASFjLgJBAw2yAkEDLgWMJblosjnpoeyyOerg4UUjw1cPiqMfLuwgJBrA4KoDvfPjV8yGdzYd0Nh+Sng8MyPnAACT+BkBCA3PS84GPUs4HZCKJQ8MkFJLglpupQIKb9kZlUW0/oYj5oCT46gkJcXmXmcoigHWmsv4HMJ4tMVxPJPvmZJv288+DgoI+alLQHwsKhf7cUBAtRQpw2IUV8i72YYV8DvuwgpQgBS1BClqCFLQEKeQY5QFAARIHAAqQMAYmUoAEAzdWoEB3JgUEG5YKZNspBYqFj1b4KiBagQFW0IBWQEwoCAAKGmAFDZCCBqCggQkKGrAIBQmMFiIUFDBYF6GgALu0USggtRVtFApIdXVAKCBlU7ZaAak6qUAWQSsgxgoa0AqIeaQCz0upwPNSKvC8hMIH5Q+bbaeb663kYwAAAABJRU5ErkJggg==",o0="data:image/png;base64,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",a0="data:image/png;base64,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",C0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAACMi4sM5Jj////jFK10AAAAAXRSTlMAQObYZgAAApFJREFUeAHtlgGG5EAUhqvRR+j7ZG4Q5AU5Qu6TAyyCVNBHmPv0EQabfVW/2b+e5B8Y1mALEpVP8qUz7zMpWc75/Tg+cj36+l3OnjhaAuDbr4yjr3K2+5HA3uw27OsvgPvhyKf5kQA3CQeAt+XjAkAxCgegeTVKENip0BjzLSy3b0aJbAA2mzMVKJH9QgVWmzIVKJH9QgWWtzHzAsHsFypgCQBujUcBSFaBoQDcBwngUYBHfxt55/ZZS3cfHLh396ndJrr2tz6V9ZjbG/Nh25CwLCqQNVyPClGiAkEhSlwpRImzwv4KEmeF50eUOCm8A6NEq4BjlDgpgAsSFhTCVBCgQhxNAlSgBIGgECQARIUoAeAf94ESog+Q0H3A0n3A+qoPWLoPWLoPWF/1IUjkX+c+oHK6D5+V031A5UQfcO/99TxEH3Dh+eGg6oMvnwtKNH2gQmEO2Yej3J8S7EOjAEj3AXOh+4C50H0AoPtAQPUBgO4DAd0HALoPAHQfAHyjDwRkHwDIPtgnYKIPBEQfCIg+ELjuw0ZgvuzDSmC67MNCYLzsgxXAZxNn5z5sFci5AvNFH9bBgTKbvv2YLvqw9A6U2XTgPl78/2CdA2U2/fRmbR/sbaw4vgq+gM21D1anG31YB3wVfIHHhD7U6UYflh7vA/f7iD70DtzQB+uS8Qe+GfrA4XQFBzCbDlQJjCYmoygk/tSpSrAPUGgBSBgBV4hAkSBQVmoBbsLBT4cAcBNv4ed9ALiJSPl5FwFuckUA6z/wkwH80WqAXVEABkcDGD0NcHgVgPUNYMb1TQCIAlJxtTCPqJUAUCbMqZSggpaAgpbQCpDQCpCggpTQCpDQCpDQClgMk5JgmIQEw6QkoPCz1h+YGLTO62qDAQAAAABJRU5ErkJggg==",i0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAgMAAAC+UIlYAAAADFBMVEUAAAAAAAAM5Jh4eXeN9UBxAAAAAXRSTlMAQObYZgAAApFJREFUeAHtlgGG5EAUhqvRR+j7ZG4Q5AU5Qu6TAyyCVNBHmPv0EQabfVW/2b+e5B8Y1mALEpVP8qUz7zMpWc75/Tg+cj36+l3OnjhaAuDbr4yjr3K2+5HA3uw27OsvgPvhyKf5kQA3CQeAt+XjAkAxCgegeTVKENip0BjzLSy3b0aJbAA2mzMVKJH9QgVWmzIVKJH9QgWWtzHzAsHsFypgCQBujUcBSFaBoQDcBwngUYBHfxt55/ZZS3cfHLh396ndJrr2tz6V9ZjbG/Nh25CwLCqQNVyPClGiAkEhSlwpRImzwv4KEmeF50eUOCm8A6NEq4BjlDgpgAsSFhTCVBCgQhxNAlSgBIGgECQARIUoAeAf94ESog+Q0H3A0n3A+qoPWLoPWLoPWF/1IUjkX+c+oHK6D5+V031A5UQfcO/99TxEH3Dh+eGg6oMvnwtKNH2gQmEO2Yej3J8S7EOjAEj3AXOh+4C50H0AoPtAQPUBgO4DAd0HALoPAHQfAHyjDwRkHwDIPtgnYKIPBEQfCIg+ELjuw0ZgvuzDSmC67MNCYLzsgxXAZxNn5z5sFci5AvNFH9bBgTKbvv2YLvqw9A6U2XTgPl78/2CdA2U2/fRmbR/sbaw4vgq+gM21D1anG31YB3wVfIHHhD7U6UYflh7vA/f7iD70DtzQB+uS8Qe+GfrA4XQFBzCbDlQJjCYmoygk/tSpSrAPUGgBSBgBV4hAkSBQVmoBbsLBT4cAcBNv4ed9ALiJSPl5FwFuckUA6z/wkwH80WqAXVEABkcDGD0NcHgVgPUNYMb1TQCIAlJxtTCPqJUAUCbMqZSggpaAgpbQCpDQCpCggpTQCpDQCpDQClgMk5JgmIQEw6QkoPCz1h+YGLTO62qDAQAAAABJRU5ErkJggg==",s0="/smeditor/assets/parts-9a3f637b.png",Q0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAYAAAD1Xam+AAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAABXFJREFUeJztnb+LXVUQx+e+3X171/gjJAipgim1EdTOQhAEixQJQbCysAgI6SVpRLDVSrDwLxBsBDs7U/sH5I+IYGCzb9/uvuM9d88kx3k3MDNn4eU53w8M9xTvu685871zZ859u0sgNIs/KNE/wyLHkxLDuv+BOtUfeLJI9Hi45vi7XHPc61X6Q/ouHdIlkvExfQK9gj7dSWn5CqXlAaWTA6J8HeL0+jcq/a7mQ+B/zHGJZQleazkqsRBrJUua0wnt/SdODdsyuj6d7Q0xfH41xHDN67TS62EA0ZlK/mODfir5j/Tyqc2fr9ArKck/mkBlBFpgANHhhK+T31IBcMIvxFoJb/h85bUlAaLr0+p54tdrLTCA6ExVAFYDqOOYTAYg74DWBIiup7Mq8cs6oQIAapYvCC3SAIwVwNTmtzwDR9c/e/ZfVeU/KgCgpr7716HlAnoAdenreYaOrJcNQPQAgA1Z+nsqgAvoAchEgF7Jqkr8FaYAwIpo/vW/Kuf/jEz8H3Xzf0aWv5/Tu9BbEFOA1Tv3THoYQHS8zT/G2fxjvKUv9AU5BTACA4iOnAJYkT0AI+7SF/qRJKYAVmAA0ZHnAKzIHoCRevN7EiC6fm0KYAQGEJ2XoAJoSYDoepJTACMwgOh43wFg+Nmf+wBG3PNv6EeSPAZsBAYQnXr011IBGOf/DG/8liZaZP3aMWAjMIDo1Id/WnoAxvk/s+ln6G3XkzgGbAUGEJ1y9+8fGuf/DCf+b7b5P8Mb/yu6Dr0DngKk979w6WEA0fGW/oyz9Gfcdz7oz3GW/gwMIDre0p9xNv8Yb/ML+oKz+cfAAKKz4QrA3fyCfsT6+q8EBhCd1grA2fxjNl1Cb7seFQBow/sOAIMeAHoAYItBD2Cr9eevAu+49TCA6LQkf6ah/M803f2gbyr/MzCA4PSPnPN/5i/f/J95QK9B38KHt5r0MAAAAgMDACAwMAAAAgMDACAwMAAAAgMDACAwMAAAAgMDCM7iLUr0xrDI8XqJYd3/pDwf8PYi0dXhmuNKuea4rzsf8C0t0iU6JBmf0kfQa/jz99TNn1I3P6Ju74goX4c4vfFApYcBRGe/xLwEr7UclOjFWsmcluJnMU/GH8iCXke3czLE8PnZEMM1r7uZXg8DiM5U8u8b9FPJf6CXT23+fIVeSUn+0QQqI9ACA4gOJ3yd/JYKgBO+F2slvOF3y09jciJAr6ObPU/8eq3/fhCbqQrAagB17JPJAOQd0JoA0fW0UyV+WXeoAICa+QtCizQAYwUwtfktz8DR9c+e/WdV+Y8KAKip7/51aLmAHkBd+nqeoSPrZQMQPQBgQ5b+ngrgAnoAMhGgVzKrEn+GKQCwIpp//X3j7wPIxL9t+30AWf6+R59Bb0FMAZZvfm/SwwCi423+Mc7mH+MtfaEvyCmAERhAdOQUwIrsARhxl77Qj3RiCmAFBhAdeQ7AiuwBGKk3vycBouvXpgDm7wexeQkqgJYEiK4nOQUwAgOIjvcdAIaf/bkPYMQ9/4Z+pJPHgI3AAKJTj/5aKgDj/J/hjd/SRIusXzsGbAQGEJ368E9LD8A4/2c2/Qy97XoSx4Dt3w9iU+7+/ZfO/w/Aif+B7/8D8Ma/QXehd8BTgONXf3bpYQDR8Zb+jLP0Z9x3PujPcZb+DAwgOt7Sn3E2/xhv8wv6grP5x8AAorPhCsDd/IJ+xPr67/r3g9i0VgDO5h+z6RJ62/WoAEAb3ncAGPQA0AMAWwx6AFutP38V+MythwFEpyX5Mw3lf6bp7gd9U/mfgQEEp7/pnP8z13zzf+YyfQ19A4vdX5r0MAAAAgMDACAwMAAAAgMDACAwMAAAAgMDACAwMAAAAvMv7uiZXHUwyMcAAAAASUVORK5CYII=",I0="/smeditor/assets/frame-d599a2fe.png",c0="/smeditor/assets/parts-b37af2cf.png",r0="data:image/png;base64,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",G=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-c3debd3b.js b/Noteskin-9d8afc43.js similarity index 98% rename from Noteskin-c3debd3b.js rename to Noteskin-9d8afc43.js index ece7fc41..00096242 100644 --- a/Noteskin-c3debd3b.js +++ b/Noteskin-9d8afc43.js @@ -1 +1 @@ -import{X as d,q as i,b as f,u,O as T,z as g,y as l,L as m,H as p,Y as R}from"./ChartManager-db54e716.js";import{A as w}from"./AnimatedSprite-ffeea718.js";import{A as U}from"./HoldBody-9276f45c.js";const L="/smeditor/assets/Center-df4c129b.png",y="/smeditor/assets/DownLeft-63c88ff1.png",B="/smeditor/assets/DownRight-bcd0e463.png",M="/smeditor/assets/UpLeft-ef9a2609.png",O="/smeditor/assets/UpRight-7924deeb.png",I="/smeditor/assets/Center-461a85de.png",E="/smeditor/assets/DownLeft-4943410c.png",S="/smeditor/assets/DownRight-d5c3b98a.png",F="/smeditor/assets/UpLeft-be2bb52b.png",$="/smeditor/assets/UpRight-2e4dc3f1.png",N="/smeditor/assets/Center-274a1642.png",P="/smeditor/assets/DownLeft-15647c81.png",V="/smeditor/assets/DownRight-9aba7559.png",Y="/smeditor/assets/UpLeft-36744666.png",j="/smeditor/assets/UpRight-af6dd110.png",v={},c=["DownLeft","UpLeft","Center","UpRight","DownRight"];for(const t of c)v[t]=d(i.from(new URL(Object.assign({"./tap/Center.png":I,"./tap/DownLeft.png":E,"./tap/DownRight.png":S,"./tap/UpLeft.png":F,"./tap/UpRight.png":$})[`./tap/${t}.png`],self.location).href),3,2,96,96).flat();const D={};for(const t of c)D[t]=d(i.from(new URL(Object.assign({"./roll/Center.png":N,"./roll/DownLeft.png":P,"./roll/DownRight.png":V,"./roll/UpLeft.png":Y,"./roll/UpRight.png":j})[`./roll/${t}.png`],self.location).href),3,2,96,96).flat();const k=d(i.from(new URL("/smeditor/assets/mine-0e34ec01.png",self.location).href),3,2,96,96).flat();class a{static noteTex;static noteContainer=new f;static rollTex;static rollContainer=new f;static mineTex;static mine;static loaded=!1;static async initArrowTex(){if(!this.loaded){a.noteTex=u.create({width:96*5,height:96,resolution:T.performance.resolution}),a.rollTex=u.create({width:96*5,height:96,resolution:T.performance.resolution}),a.mineTex=u.create({width:96,height:96,resolution:T.performance.resolution});for(const e of c)this.createSprite(this.noteContainer,e,v);for(const e of c)this.createSprite(this.rollContainer,e,D);this.mine=new w(k),this.loaded=!0}}static createSprite(e,o,n){const s=c.indexOf(o)*96,r=new w(n[o]);r.x=s,e.addChild(r)}static setArrowTexTime(e){if(!this.loaded)return;const o=e.chartManager.chartView.getVisualTime(),n=Math.floor((o%.3+.3)%.3/.3*6);this.noteContainer.children.forEach(s=>s.currentFrame=n),this.rollContainer.children.forEach(s=>s.currentFrame=n),this.mine.currentFrame=n,e.renderer.render(a.noteContainer,{renderTexture:a.noteTex}),e.renderer.render(a.rollContainer,{renderTexture:a.rollTex}),e.renderer.render(a.mine,{renderTexture:a.mineTex})}static setNoteTex(e,o,n){if(o===void 0)return i.WHITE;if(o.type=="Mine")e.texture=this.mineTex;else{const s=c.indexOf(n)*96;e.texture=new i(this.noteTex.baseTexture,new g(s,0,96,96))}}static setRollTex(e,o){const n=c.indexOf(o)*96;e.texture=new i(this.rollTex.baseTexture,new g(n,0,96,96))}}const W="/smeditor/assets/receptors-5a0beefb.png",z="/smeditor/assets/flash-d0eff0a1.png",q="/smeditor/assets/mine-590d445e.png",J="/smeditor/assets/press-55cccb8c.png",X=d(i.from(z),5,1,128,128)[0],G=i.from(q),C=d(i.from(J),5,2,96,96),K=["w0","w1","w2","w3"];class Q extends f{press;pressAnim;hitContainer=new f;tap;note;flash;hitAnim;anims=new Set;constructor(e,o,n){super();const s=1/1.5;this.press=new l(C[1][_.indexOf(o)]),this.press.alpha=0,this.press.anchor.set(.5),this.tap=new l(C[0][_.indexOf(o)]),this.tap.blendMode=m.ADD,this.tap.scale.set(s),this.tap.anchor.set(.5),this.note=new w(v[o]),this.note.scale.set(s),this.note.blendMode=m.ADD,this.note.animationSpeed=1/3,this.note.play(),this.note.anchor.set(.5),this.flash=new w(X),this.flash.scale.set(2),this.flash.blendMode=m.ADD,this.flash.animationSpeed=1/3,this.flash.loop=!1,this.flash.visible=!1,this.flash.anchor.set(.5),this.flash.onComplete=()=>{this.flash.visible=!1,this.flash.stop()},this.hitContainer.alpha=0,this.hitContainer.addChild(this.tap,this.note),e.on(this,"ghosttap",r=>{n==r.columnNumber&&(p.finish(this.pressAnim),this.pressAnim=p.animate(this.press,{0:{alpha:1,"scale.x":1*s,"scale.y":1*s},1:{alpha:0,"scale.x":1.3*s,"scale.y":1.3*s}},.25))}),e.on(this,"hit",r=>{if(n==r.columnNumber){if(!K.includes(r.judgement.id))return;p.finish(this.pressAnim),p.finish(this.hitAnim),this.hitAnim=p.animate(this.hitContainer,{0:{alpha:1,"scale.x":1,"scale.y":1},1:{alpha:0,"scale.x":1.2,"scale.y":1.2}},.4),this.flash.visible=!0,this.flash.currentFrame=0,this.flash.play()}}),e.on(this,"hitmine",r=>{if(n==r.columnNumber){const h=new l(G);h.alpha=0,h.anchor.set(.5),h.blendMode=m.ADD,this.addChild(h),p.animate(h,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>h.destroy())}}),this.addChild(this.press,this.hitContainer,this.flash)}}const A=d(i.from(W),5,2,96,96),_=["DownLeft","UpLeft","Center","UpRight","DownRight"],b={},x=96;for(const t of _){const e=i.from(new URL(Object.assign({"./hold/Center.png":L,"./hold/DownLeft.png":y,"./hold/DownRight.png":B,"./hold/UpLeft.png":M,"./hold/UpRight.png":O})[`./hold/${t}.png`],self.location).href),o=[],n=[];for(let s=0;s<6;s++)o.push(new i(e.baseTexture,new g(s*96,0,96,288-x))),n.push(new i(e.baseTexture,new g(s*96,288-x,96,x)));b[t]={body:o,cap:n}}const se={elements:{DownLeft:{Receptor:t=>{const e=new f,o=_.indexOf(t.columnName),n=new l(A[0][o]);n.width=72,n.height=72,n.anchor.set(.5);const s=new l(A[1][o]);return s.width=n.width,s.height=n.height,s.anchor.set(.5),s.blendMode=m.ADD,e.addChild(n,s),t.noteskin.onUpdate(e,r=>{const H=(r.getVisualBeat()%1+1)%1;s.alpha=(1-H)/2}),e},Tap:t=>{const e=new l(i.WHITE);return a.setNoteTex(e,t.note,t.columnName),e.anchor.set(.5),e.width=72,e.height=72,e},Fake:{element:"Tap"},Lift:{element:"Tap"},Mine:{element:"Tap"},NoteFlash:t=>new Q(t.noteskin,t.columnName,t.columnNumber),"Hold Active Head":{element:"Tap"},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":t=>{const e=new U(b[t.columnName].body,72);return t.noteskin.onUpdate(e,o=>{const n=o.getVisualTime(),s=Math.floor((n%.3+.3)%.3/.3*6);e.currentFrame=s}),e},"Hold Inactive Body":{element:"Hold Active Body"},"Hold Active TopCap":()=>new l(i.EMPTY),"Hold Inactive TopCap":()=>new l(i.EMPTY),"Hold Active BottomCap":t=>{const e=new R(b[t.columnName].cap,72);return t.noteskin.onUpdate(e,o=>{const n=o.getVisualTime(),s=Math.floor((n%.3+.3)%.3/.3*6);e.currentFrame=s}),e},"Hold Inactive BottomCap":{element:"Hold Active BottomCap"},"Roll Active Head":t=>{const e=new l(i.WHITE);return a.setRollTex(e,t.columnName),e.anchor.set(.5),e.width=72,e.height=72,e},"Roll Inactive Head":{element:"Roll Active Head"},"Roll Active Body":{element:"Hold Active Body"},"Roll Inactive Body":{element:"Hold Active Body"},"Roll Active TopCap":()=>new l(i.EMPTY),"Roll Inactive TopCap":()=>new l(i.EMPTY),"Roll Active BottomCap":{element:"Hold Active BottomCap"},"Roll Inactive BottomCap":{element:"Hold Active BottomCap"}}},load:function(t,e){return t.columnName="DownLeft",this.loadElement(t,e)},init(){a.initArrowTex()},update(t){a.setArrowTexTime(t.chartManager.app)},metrics:{HoldBodyBottomOffset:-36,RollBodyBottomOffset:-36}};export{se as default,_ as texOrder}; +import{X as d,q as i,b as f,u,O as T,z as g,y as l,L as m,H as p,Y as R}from"./ChartManager-b82bf91a.js";import{A as w}from"./AnimatedSprite-c4817119.js";import{A as U}from"./HoldBody-3932542e.js";const L="/smeditor/assets/Center-df4c129b.png",y="/smeditor/assets/DownLeft-63c88ff1.png",B="/smeditor/assets/DownRight-bcd0e463.png",M="/smeditor/assets/UpLeft-ef9a2609.png",O="/smeditor/assets/UpRight-7924deeb.png",I="/smeditor/assets/Center-461a85de.png",E="/smeditor/assets/DownLeft-4943410c.png",S="/smeditor/assets/DownRight-d5c3b98a.png",F="/smeditor/assets/UpLeft-be2bb52b.png",$="/smeditor/assets/UpRight-2e4dc3f1.png",N="/smeditor/assets/Center-274a1642.png",P="/smeditor/assets/DownLeft-15647c81.png",V="/smeditor/assets/DownRight-9aba7559.png",Y="/smeditor/assets/UpLeft-36744666.png",j="/smeditor/assets/UpRight-af6dd110.png",v={},c=["DownLeft","UpLeft","Center","UpRight","DownRight"];for(const t of c)v[t]=d(i.from(new URL(Object.assign({"./tap/Center.png":I,"./tap/DownLeft.png":E,"./tap/DownRight.png":S,"./tap/UpLeft.png":F,"./tap/UpRight.png":$})[`./tap/${t}.png`],self.location).href),3,2,96,96).flat();const D={};for(const t of c)D[t]=d(i.from(new URL(Object.assign({"./roll/Center.png":N,"./roll/DownLeft.png":P,"./roll/DownRight.png":V,"./roll/UpLeft.png":Y,"./roll/UpRight.png":j})[`./roll/${t}.png`],self.location).href),3,2,96,96).flat();const k=d(i.from(new URL("/smeditor/assets/mine-0e34ec01.png",self.location).href),3,2,96,96).flat();class a{static noteTex;static noteContainer=new f;static rollTex;static rollContainer=new f;static mineTex;static mine;static loaded=!1;static async initArrowTex(){if(!this.loaded){a.noteTex=u.create({width:96*5,height:96,resolution:T.performance.resolution}),a.rollTex=u.create({width:96*5,height:96,resolution:T.performance.resolution}),a.mineTex=u.create({width:96,height:96,resolution:T.performance.resolution});for(const e of c)this.createSprite(this.noteContainer,e,v);for(const e of c)this.createSprite(this.rollContainer,e,D);this.mine=new w(k),this.loaded=!0}}static createSprite(e,o,n){const s=c.indexOf(o)*96,r=new w(n[o]);r.x=s,e.addChild(r)}static setArrowTexTime(e){if(!this.loaded)return;const o=e.chartManager.chartView.getVisualTime(),n=Math.floor((o%.3+.3)%.3/.3*6);this.noteContainer.children.forEach(s=>s.currentFrame=n),this.rollContainer.children.forEach(s=>s.currentFrame=n),this.mine.currentFrame=n,e.renderer.render(a.noteContainer,{renderTexture:a.noteTex}),e.renderer.render(a.rollContainer,{renderTexture:a.rollTex}),e.renderer.render(a.mine,{renderTexture:a.mineTex})}static setNoteTex(e,o,n){if(o===void 0)return i.WHITE;if(o.type=="Mine")e.texture=this.mineTex;else{const s=c.indexOf(n)*96;e.texture=new i(this.noteTex.baseTexture,new g(s,0,96,96))}}static setRollTex(e,o){const n=c.indexOf(o)*96;e.texture=new i(this.rollTex.baseTexture,new g(n,0,96,96))}}const W="/smeditor/assets/receptors-5a0beefb.png",z="/smeditor/assets/flash-d0eff0a1.png",q="/smeditor/assets/mine-590d445e.png",J="/smeditor/assets/press-55cccb8c.png",X=d(i.from(z),5,1,128,128)[0],G=i.from(q),C=d(i.from(J),5,2,96,96),K=["w0","w1","w2","w3"];class Q extends f{press;pressAnim;hitContainer=new f;tap;note;flash;hitAnim;anims=new Set;constructor(e,o,n){super();const s=1/1.5;this.press=new l(C[1][_.indexOf(o)]),this.press.alpha=0,this.press.anchor.set(.5),this.tap=new l(C[0][_.indexOf(o)]),this.tap.blendMode=m.ADD,this.tap.scale.set(s),this.tap.anchor.set(.5),this.note=new w(v[o]),this.note.scale.set(s),this.note.blendMode=m.ADD,this.note.animationSpeed=1/3,this.note.play(),this.note.anchor.set(.5),this.flash=new w(X),this.flash.scale.set(2),this.flash.blendMode=m.ADD,this.flash.animationSpeed=1/3,this.flash.loop=!1,this.flash.visible=!1,this.flash.anchor.set(.5),this.flash.onComplete=()=>{this.flash.visible=!1,this.flash.stop()},this.hitContainer.alpha=0,this.hitContainer.addChild(this.tap,this.note),e.on(this,"ghosttap",r=>{n==r.columnNumber&&(p.finish(this.pressAnim),this.pressAnim=p.animate(this.press,{0:{alpha:1,"scale.x":1*s,"scale.y":1*s},1:{alpha:0,"scale.x":1.3*s,"scale.y":1.3*s}},.25))}),e.on(this,"hit",r=>{if(n==r.columnNumber){if(!K.includes(r.judgement.id))return;p.finish(this.pressAnim),p.finish(this.hitAnim),this.hitAnim=p.animate(this.hitContainer,{0:{alpha:1,"scale.x":1,"scale.y":1},1:{alpha:0,"scale.x":1.2,"scale.y":1.2}},.4),this.flash.visible=!0,this.flash.currentFrame=0,this.flash.play()}}),e.on(this,"hitmine",r=>{if(n==r.columnNumber){const h=new l(G);h.alpha=0,h.anchor.set(.5),h.blendMode=m.ADD,this.addChild(h),p.animate(h,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>h.destroy())}}),this.addChild(this.press,this.hitContainer,this.flash)}}const A=d(i.from(W),5,2,96,96),_=["DownLeft","UpLeft","Center","UpRight","DownRight"],b={},x=96;for(const t of _){const e=i.from(new URL(Object.assign({"./hold/Center.png":L,"./hold/DownLeft.png":y,"./hold/DownRight.png":B,"./hold/UpLeft.png":M,"./hold/UpRight.png":O})[`./hold/${t}.png`],self.location).href),o=[],n=[];for(let s=0;s<6;s++)o.push(new i(e.baseTexture,new g(s*96,0,96,288-x))),n.push(new i(e.baseTexture,new g(s*96,288-x,96,x)));b[t]={body:o,cap:n}}const se={elements:{DownLeft:{Receptor:t=>{const e=new f,o=_.indexOf(t.columnName),n=new l(A[0][o]);n.width=72,n.height=72,n.anchor.set(.5);const s=new l(A[1][o]);return s.width=n.width,s.height=n.height,s.anchor.set(.5),s.blendMode=m.ADD,e.addChild(n,s),t.noteskin.onUpdate(e,r=>{const H=(r.getVisualBeat()%1+1)%1;s.alpha=(1-H)/2}),e},Tap:t=>{const e=new l(i.WHITE);return a.setNoteTex(e,t.note,t.columnName),e.anchor.set(.5),e.width=72,e.height=72,e},Fake:{element:"Tap"},Lift:{element:"Tap"},Mine:{element:"Tap"},NoteFlash:t=>new Q(t.noteskin,t.columnName,t.columnNumber),"Hold Active Head":{element:"Tap"},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":t=>{const e=new U(b[t.columnName].body,72);return t.noteskin.onUpdate(e,o=>{const n=o.getVisualTime(),s=Math.floor((n%.3+.3)%.3/.3*6);e.currentFrame=s}),e},"Hold Inactive Body":{element:"Hold Active Body"},"Hold Active TopCap":()=>new l(i.EMPTY),"Hold Inactive TopCap":()=>new l(i.EMPTY),"Hold Active BottomCap":t=>{const e=new R(b[t.columnName].cap,72);return t.noteskin.onUpdate(e,o=>{const n=o.getVisualTime(),s=Math.floor((n%.3+.3)%.3/.3*6);e.currentFrame=s}),e},"Hold Inactive BottomCap":{element:"Hold Active BottomCap"},"Roll Active Head":t=>{const e=new l(i.WHITE);return a.setRollTex(e,t.columnName),e.anchor.set(.5),e.width=72,e.height=72,e},"Roll Inactive Head":{element:"Roll Active Head"},"Roll Active Body":{element:"Hold Active Body"},"Roll Inactive Body":{element:"Hold Active Body"},"Roll Active TopCap":()=>new l(i.EMPTY),"Roll Inactive TopCap":()=>new l(i.EMPTY),"Roll Active BottomCap":{element:"Hold Active BottomCap"},"Roll Inactive BottomCap":{element:"Hold Active BottomCap"}}},load:function(t,e){return t.columnName="DownLeft",this.loadElement(t,e)},init(){a.initArrowTex()},update(t){a.setArrowTexTime(t.chartManager.app)},metrics:{HoldBodyBottomOffset:-36,RollBodyBottomOffset:-36}};export{se as default,_ as texOrder}; diff --git a/Noteskin-bbdd3e6c.js b/Noteskin-a642a2c7.js similarity index 99% rename from Noteskin-bbdd3e6c.js rename to Noteskin-a642a2c7.js index 917f2c89..6ac7f741 100644 --- a/Noteskin-bbdd3e6c.js +++ b/Noteskin-a642a2c7.js @@ -1,4 +1,4 @@ -import{q as r,r as I,s as E,b as P,u as v,O as m,v as w,w as c,x as Q,y as a,z as p,X as L,H as C,L as x,Q as l}from"./ChartManager-db54e716.js";import{A as H}from"./AnimatedSprite-ffeea718.js";import{H as d}from"./HoldBody-9276f45c.js";const b="/smeditor/assets/downBodyActive-dd1fd694.png",G="/smeditor/assets/downBodyInactive-c781a303.png",y="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0dOV1YU4MAAAPKSURBVHja7d1dTupQFIbh0pwJkDBA4xjEQVjGcOIATZwBnFslHC1l7b2/v3WHiUL6PimUwHI3Xc1pWS5fbz8/vU5bZn843/07nx/zVDVb7h/5sW29/7/vb99uvxyPu6+356nRbHnAldEqg7HGXzPt/rIIAuX4zQGwI1CP3wUAKwKH+N0AsCFwid8VAAsCp/jdAaAjcIs/BAAqAsf4wwCgIXCNPxQACgLn+MMBICBwjg8BQAEBa3wYAMwImONDAWBEwB4fDgATAoX4kAAYEKjEhwWAjEApPjQARARq8eEBICFQjE8BAAGBanwaACMRKMefpmn60+NUWXVAPj/mu4PsD+fN94/4yeZqXHPr+NWn415nAtSPtVe/vplbP2BGBOjfaag8ll2frBgQqH2hBe5FIDICt/jDrgIQETjGH3oZiITANX4pAMYvf+wPZ8r4lfdfegZQ+kKoQ/wmTwHKCBQ/QDqjHCh0BKqfHs5+AOP4za8Csh8AO36Xy8DsB8CN3+19gOwHyH6A7AcAjN8VAAuC7AcwRpD9AMYIsh/AGEH2AxgjyH6AwZP9AJM3AAUE2Q9gjCD7AYwRZD+AMYLsBzBGkP0AxgiyH8AYQfYDGCPIfgBjBNkPYIwg+wEKDlj2A+AdyyZngOwHyH6ALs/J2Q+Q/QDZD8D6IjD7AXDiD7sKyH4AjPhDLwOzH2B8/FIA2Q/A+T5D9gMYx2/yFJD9ADzxVwG4/v/zrggY469pt7v1w9OyXK5/9vz0Sqe8CpVK/JfjcbcKQBB4xP8RQBDox/8VgDMCh/irADgicIm/GoATAqf4dwFwQOAW/24Ayggc428CoIjANf5mAEoIKoct/kMAgoA//sMAgoA7fgkAdwTM8csAuCJgj18KwA2BQvxyAC4IVOI3AaCOQCl+MwCqCNTiNwWghkAxfnMAKghU43cBwI5AOX43AKwI1ON3BcCGwCF+dwAsCFziDwGAjsAp/jAAqAjc4g8FgIbAMf5wACgIXONDABiNYMuoxIcBwIRAKT4UAAYEavHhACAjUIwPCQARgWp8WABICJTjQwNAQKAeHx7ASAQO8SkAjEDgEp8GQE8ETvGpAPRA4BafDkBLBI7xKQG0QOAanxZAJYItoxKfGsAoBErx6QH0RqAWXwJALwSK8WUAtEagGl8KQCsEyvHlAFQjUI8vCaAKgUN8WQCPInCJLw1gKwKn+PIA7kXgFt8CwFoEjvFtAPyGwDW+FYD/Ibg1LvHtAKxB4BTfEsBPCNzi2wK4hcAxvv2cluWy9nVBJpPJZDKZjNL8A8iasRIljXPgAAAAAElFTkSuQmCC",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0eB7cUHesAAAO/SURBVHja7dw7VhtBEIXh0WzGGWtxahZop6yFzKuREwKQBcy0uqvuqzM4Bwv6/yxN61GX7f91ff/F6+vPbWT9/vPj9M88//q7zVojt4/8u43e/tPTy+23Lu+/2LdFa+QXnhltZjDW+EfWMgAqCJTjLwfAjkA9fgkAVgQO8csAsCFwiV8KgAWBU/xyAOgI3OK3AEBF4Bi/DQAaAtf423bzrNDbmvJMoOqGsf0tbc8EstwTuEPeETaPHQHzvdiOsomsCNgfwmAAMCJQuH6BAsCEQOXiFQ4AAwKlkwskAGQESvGhASAiUIsPDwAJgWJ8CgAICFTj0wDoRKAcf9sWvBZwb8NYX2xBfGfz2X+/9LWAzzas++1dI7eP+rb22dc3e9X/TCYE6J9pmLmXpdcADAjUPtACdxGIjMAtftspABGBY/zWYyASAtf404+BLhvJdKwtPQYqfSBUIX7LQ4AyAsV3D+8oG4WOQPWt45kPYBx/+Skg8wGw45ccAzMfADd+2fMAmQ+Q+QCZDwAYvxQAC4LMBzBGkPkAxggyH8AYQeYDfFyZDyD0t2Q+gHF86IcAJQSZD2CMIPMBjBFkPoAxgswHMEaQ+QDGCDIfwBhB5gMYI8h8AGMEmQ9gjCDzATIfoC1+5gM03hNkPsDkDct8AMy9zHwAsvj0F4GZD4ATv+0UkPkAGPFbj4GZD9Aff/oxMPMB8I6amQ9gHL/lISDzAXjiHwJw5y7EEgFj/CPtLp98/3r7jZG3h6tcEwjFvxwFEAQG8b8DYI9APf4RALYIHOIfBWCHwCX+GQA2CJzinwUgj8At/ggAWQSO8UcByCFwjf8IABkEMxdb/EcBBAF5/BkAgoA4/iwA1giY488EYImAPf5sAFYIFOKvAGCBQCX+KgDSCJTirwQgiUAt/moAUggU41cAkECgGr8KADUC5fiVACgRqMevBkCFwCF+BwAKBC7xuwBAI3CK3wkAEoFb/G4AUAgc4yMAgEDgGh8FQCuCkaUSHwkADQKl+GgA4BGoxUcEAItAMT4qADgEqvGRAcAgUI6PDqAdgXp8BgBtCBziswAoR+ASnwlAGQKn+GwAliNwi88IYBkCx/isAKYjcI3PDGAagpGlEp8dQAsCpfgKAEoRqMVXAVCCQDG+EoClCFTjqwFYgkA5viKAqQjU46sCmILAIb4ygIcQuMRXBzCEwCm+A4BTCNziuwA4hMAxvhOALxG4xncDcBeB+764ATiCwGpPHAF8hcBuP1wB3EPgvBfWCK7ZhqysrKysrCy39Q9gQ/q5SfcuvQAAAABJRU5ErkJggg==",Y="/smeditor/assets/leftBodyActive-75d41033.png",V="/smeditor/assets/leftBodyInactive-bbc074cd.png",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEANIA0gBQ7xAn7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI2I6Ho7PYAAANMSURBVHja7Z1bTgMxDEU7VjeAxAJR10C7CMoaEAus1B0Av6XiMY/EsX2PJT4GoTHpOZNJMhl32t3F6/n8eXt8eDrt1sTD48eiv79ebNcqluZumX9N7p7/39v7y7fj5+Nxuj3e7zrF9WKzP4xM8HsBHhXW8+RzPtgqVz4CrPiAM8IfIUzPnDaqAZmvfE8JeueyEQ2p0O17SOCRw7U/u16s1D2/JyCvXibtCCjKgC/LOX+LPfBzAZPvAZjqCQsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOD7xh74f+evLpcB/+/81XYAhRQgKnwFCQz4ta/w0AIAX1gA4AvPApTgR5/WGvDjrTN4CmrAjwXfWwIDfjz4nhIY8GPC95LAgB8XvocEBnztqaYBX3udIczTQOoDFBOA+gA5gvoA1AcY17VTH2B8TuoDBAPinYv6AIEloD5A8Hs+9QEGBvUBiq0DZB7tUx9AGD7TQOAjAPARAPgIAHwEAD4CjIRPFBEA+MICAF9YAOALCwB8YQGALyxAS/hMAZMJAHxhAYAfI/YV4fccU3jkoz6AMHzvQbEBP2Y+6gMIw/fMYcCPCd8rlwE/LnyPnJbZXm8YFVcsDfi68GcJcP/980RxAZ6Px6mFBL0XM7xX/6quNv7YKiTQkeDXFkWUwPsLHaJ8gcSw+gBIMF6CLbnmsJrmnOj1fP68/93h6cSaQOeZQWv4P13Q09wTIoFvPg/4iwRAAr98XvAXC5BJAsVYCn+VAEhQB/5qAZCgBvxNAiBBfvj/rgP8F1lWDIHfSQAkyA2/iQBIkBd+MwGQICf8zYPAiAPDpQJl3++wBX7THoCeIB/8LgKMlkDlTeMW8LsJgAQ54HcZA0QaE6yRp/UgK3q4NAwJxAVAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAggERet9Vtk0la+REgGISIAASIAASIEA5CRAACRAACRAACRBAT4LKkqRvWW8JqvcQJVrXUoL7H24BYhIwBkCC1ZFRuJLvu7V6irgVPo+DRSRgQ4iwBGwJE5aATaHCErAtXFgCXgwRloBXwwpK0HrtAQFEJOD1cGEJKBAhLEHlsnEEQRAEQWjEFz4LZYAP3C09AAAAAElFTkSuQmCC",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3FABOeLgAAAM3SURBVHja7d09csJADIZhW+O7pOMsaeGASZuz0HGapGUIMP7Z1Ur6XnVkMgj8PdjrxV7m6X/93j+4Xj+nPfX1/bHp/y/n29SqtvZu2X9P756v73T6efzTfP9gmTrV5XxbvTEyhd8r4FFlPZ98zYat8skHwI4NnDH8EWB69rRRbyDzJ98TQe9eNuKNVNjteyDw6DH3OgvwqAjH/Gij/q1nATYlrSgDvizP+aoWws8VWNoxAKd6ACB8ABA+AAgfAIQPAMIHAOEDgPABQPhjayH89/2r4zLCf9+/2hVAIQFEDV8BgRF+7U94aACELwyA8IXPApTCj35aa4Qfb57BE6gRfqzwvREY4ccL3xOBEX7M8L0QGOHHDd8DgRG+9qmmEb72PEOYbwNZH6AYANYHyFGsD8D6AON27awPML4n6wMEC8S7F+sDBEbA+gAJjvmsDyAcfqbnDD8PkHm0z/oAwuFzGkj4ACB8ABA+AAgfAIQPgJHhU0UAEL4wAMIXBkD4wgAIXxgA4QsDaBk+p4DJABC+MADCj1FLxfB7jik8+rE+gHD43oNiI/yY/VgfQDh8zx5G+DHD9+plhB83fI+ellmvdxgVZyyN8HXDXwXgyZ0lVHEAcwsEvSczvGf/qs42vtoDgEAEwbtDQDgE3j/oEOUHJEauDwCCwQiO9FqT1bzyuX4f/7DntnHmBIaHP+8FAALnfh7hbwUAgin+18Fbwt8DIA0Cxdoa/l4AICgS/hEAICgQ/lEAIEge/pp5gM2AIs4YEn4/ACBIHH4rACBIGn5LACBIGH6LQWC4geFWQAWudziUoXm8IPYEMcPvBWAoAqE7jZvsvc3zBYIgVvi9xgBhxgR78LQeZMlIAgEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEEQqywY08kUlkX9pPSuAdAgAAAIAgAAA5RAAAAQAAAEAQAAAPQSVkViB99AVQfU9RKVLnJtMGx+tJ/iYCs60J2AMAIKWn34OASqHA74OFkbABSHCCLgkTBgBF4UKI+CycGEE3BgijIBbwwoiUN6GigBaIuD2cGEELBAhjEB9u1EURVEUlbz+AOnsq2p4bKxbAAAAAElFTkSuQmCC",X="/smeditor/assets/rightBodyActive-07f95372.png",K="/smeditor/assets/rightBodyInactive-fdefc2a4.png",R="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NtUuOVwAAAOHSURBVHja7Z3RTSsxEEUdKw0gUSCiBkIRhBoQBSLRQeDr6YWQEK/j8c7MPfcvIO0sPmcd24RhU07yut9/Hb9+fHguPbm7PxSLfH7UIdfpub9RtXvq99Z+e3/58fppt9scv96WYLk2cK0D9flRF0O4uz8Mk2BJ/ZHinaYW4fQM7MiZraW+JXxTAaxvfFRNzxLMGMPqDcgatTxKMGvsqmcwM2t4kmDmg1O9P50zr+1BgtlvndOqWfxgXq5pteWdkanbwDUWhtZbNIstYsoZgC0iAiABAiABAiABAiABAiABAiABAiABAiDButlmB3Vu0Nf4UMfx/Xg6Maxq8Ec/idFngqoGHwlYAyABAiABAiDB/F3A2p/Fn7U6j7Q7qBGfsghPYpSZoGaEjwSOBFh7kYMEKwrgZa+LBCsI4O3cGwmCbgMzQfAoQYhzACQ4aAvwbxBGDURECaxCf4CFtekPkCj0B6A/AP0BvAFZoxb9AYJLQH8A52sA+gO016c/QMBr0h8g4P7X8xYx5QzAFhEBkAABkAABkAABkAABkAABdEJ/AEJ/AOJTAgQQlwABxCVAAHEJEGDCVtCzBAggLgECiEvgvj/AUgiWg3lar+dzA3+NDf0BBlzTchCt69EfAAnoD4AE9AdAgkJ/ACQo9AcIIZ51PfoDIAH9AUhf3t5fNAWYfaBiXa/n+ufgP+12m/QCAL8dvqkAXvoDzDwaHl3PGn6TAC3vIx4kAP5y+KWUcvabr/v91+nXHh+e3a6Sgd8H/6IAkSQAfj/8PwWIIAHwb4N/VQALCTIlOvwmAZAgL/xmAZAgJ/xFAiBBPvhN5wDXCt1yTqAcD/AXC4AEueB3CYAEeeB3C4AEOeAvXgS2LgwjZekitncR6BH+TTOA1Q3x5M+DP0QAJQlm/efTWfCHCaAgQUb4Q9YAnjPq4Cor/NQCAF9YAOALCwB8YQGALywA8IUFAL6wAMAXFgD4wgIAX1gA4AsLAHxhAYAvLADwhQUAvrAAwLdNuA4hwBcXAPgIAHwEAD4CDI4ifAQQh48A4vDlBVCHn1qAa3CBLzADXIIM/P/ZluQZ0a00K3wWgeLwQwowswlFdviliP06GPhBBZgtgQr8UALMkkAJfjgBrCVQgx9SACsJFOGHFWC0BKrwQwswSgJl+OEFuCTBLVFre5f2z8OBLyTACAlUG16mbxEDfEIIIYSQ3/kGeiN5xirmRdUAAAAASUVORK5CYII=",k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NUwnaOYAAANgSURBVHja7Z1BUuNADEUdF3dhx1lmyxxw2HIWdnMas6JqKpCx3ZbUkv7TLiFJR/1eOurGiNvyPbZ/b3x8/FpG4s/b8+IRv1//mrzOyPuzGntk/NGxX17e7++6PbxRQQDLiaoiwZUx9wRYF+EYmVhLsY+MbyncT7FmmtwZY2aWIGIO12xAZoyVUYKouVszg4kcI5MEkR8ctyKw2q4gS2FoHWmKQI9JyvKas3Y8pVaAatFlJWAbyEowtwhEAgRAAgRAAgRAAgRAAgRAAgRAAgRAgjTR/iTwp0mfeWWP9fh7IX0S+AhO9EUdmVeCVQ0+ElADIAECIAECIEH8LiCyYq523b/X7iDNLiDa8gqXfGdYCdaO8JEgkQCzixwkmChAlr0uEkwQINu5NxIU3QZ2gpBRghLnAEjwrC3A1yRYTURFCbyC/gAT4dEfgMJw+mpBfwD6A+QCMmMs+gMUl4D+AAmLwKiikP4ARYpA+gPkDPoDNF8J2AayEswtApEAAZAAAZAAAZAAAZAAAdhSIgASIAASIAASIAASIAASIIDAVjCzBAggLgECiEuQvj/AWQiek+k9Hv0BDF7T86KMjC3nSnwFeCaGBMkFiEgICZIKEJkIEiQTYMb3GRKwDQwXz3s8+gMgAf0BCLMzAA0Bov9Aw3u8kdd/AP/WXgDgH4fvKkCW/gBqR8Nn4B8S4Mj3SAYJgH8e/v9+uN3fceWXQt5VMvDH4O89oIQEwB+Hf+RBqSUA/jX4Rx9oKkGnqA7/zIORoCH8s09AgmbwR54kL0En+IfOAfYGunJOoBwZ4I8IgASN4I8KgARN4F8RAAkawF+WZXm6+PzbfWFYTYKoIjYj/KsrgMsb4pMfB99KABkJorqHRsG3FKC9BB3hK3xyTQ6uusLvLgDwhQUAvrAAwBcWAPjCAgBfWADgCwsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOALCwB8xyjXIQT44gIAHwGAjwDARwDjUISPAOLwEUAcvrwA6vBbC7AHF/gCK8AjyMCvlYDbfzFTh08RKA6/pACR/Qe6w6+UTHh3MgX41RIKk0AFfsWk3CVQgl81MTcJ1OBXTs5cAkX41RM0k0AVfockL0ugDL9LohtzQrIb80HCG3NB0hvzQBAEQRAEsR+fBPrG1xa4jMQAAAAASUVORK5CYII=",M="data:image/png;base64,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",Z="/smeditor/assets/upBodyInactive-87a7969e.png",J="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5IlF3wK8AAAPCSURBVHja7Z1bbsIwFETNKBtAYoFV11C6iNI1VF0gEjug/YUoRbWxfR8zV+oHH9TG58QhUe6wK6v6PJ1+bl+/vryX2tofrtXvuZxRelXL+BHm2DL+1/fH3eu343F3+xq9Fykr/N7/u+Uzj/hsEHxuCcAM/3KGOQTr8VGMytP5NKIEoQXw+GWKVQIIPrcEEHxuCTBr4pGuob1L0HMtMeMIj3gDxasEvXeIxfM2b32peTmjesz94dptDWacDuyuP4LcZ/Byx45aAOubTJklgOBzSwDB55YAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwBm+PvDNeWDniEE8PQMIbMEYIfPLgEEn1sCCD63BBB8bgkg+NwSQPC5JYDgc0sAweeWAILPLYHyAcglUD4AuQQQfG4JaPMBoksQWoDo8DNJAMHnlgCCzy0BTT5AJgmUD+C0lA9Q/OUDWEgQKR9gKUFqxtHVa4yeEqS8DPR6fmU5VYUSYPY3bDYJwAz/r74AJgnADP/RWCwSgB0+uwQQfG4JIPjcEkDwuSVYosKvAdLaF7Ae49GYlomioXcAj/Bb3qt8AIfwZ5fyAYjhR5UAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwDB55ZgiQb/6/vj7vXry7sp0Jb5WP8a2dAdQEd+rJ0Ags8tAQSfW4JQ+QDr863Hapmj8gGSwI8oAQSfWwIwwr+csfnHKIHrfIBR8Gcu/ggJKPIBthbu7Xjcjd6Bnl3crTn2lKC3pBhxhD27tc6CP6o3sKcEo09T7i7EZ8J/dF3tRQLz7wAzJ20BP7ME/xkLXiY9Av5WzfrNoCjrCQ+T9gA/kwQ16wnrSXuCn0GC2vWE5aQ9wo8sQct6wmrSnuFHlKB1PWEx6VnwvZan9cTsSbPD97aeS+2kP0+nn57bFyN8T+sJS2DM8L2sJ6wmLfg+1hMWkxZ8P+u56CjOeToYvgOocpQEkAAqCaCSACoJoJIAKgmgkgAqCaCSACoJoJIA0euZ5g6GBBOKHaAFJEt8Dc0poAYoU3YR1XeA2T8dKwGCScCYWrYUwlI8nS4DVVkEsAxdiJhetq6QD3WumylKmR8anaXDKexTvZYSZGpvC/1Yt4UE2Xobwz/XP1OCjI2tKRo7ZkiQtas5TWfPSAkyt7Snau0aIUH2PIN0vX09JWAIs0jZ3NlDApYkk7Tdvc9IwBRjk7q9u0UCtgyj9P39WxLUVPYMBIqAh1YJGAIwaBI+aiVgST+hinj5rwSKvlGpVCqVSpW9fgGbIppuMBFz1QAAAABJRU5ErkJggg==",z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5JlYaBLYAAAO8SURBVHja7Z1LUt1ADEXtW94LM9aSKSwQpllLZqzmZZQq6oUX4nZ/JN2jGVDgRud0t21aYt/+jtvnD379+rGdjbf3p9Pf8/rysfWKlutnGGPL9Z+ff95/av/8gXonqSr83j+75Xce8bsJ+N4SyBn+68vHcgirr69tUUTaTzNKkFqAiDdTrhII+N4SCPjeEmjWwDM9Q0eXoGcuNWOGZ3yBElWC3ivE/sXnLr8JjPQMfjVhqx9vr8b0N4GV4EdYCUo+BmabhZUlEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lkDP8t/enkgc9UwgQ6QyhswRyh+8ugYDvLYGA7y2BgO8tgYDvLYGA7y2BgO8tgYDvLYGA7y0B/QHMJaA/gLkEAr63BLb9AbJLkFqA7PArSSDge0sg4HtLYNMfoJIE9AcIGvQHSJTgLFvd1fiuP8CxJYkZs6vXNd7en0KeXA71HiDi/uqyVaUSYPYdtpsEcob/qC7ASQI5w//XtVwkkDt8dwkEfG8JBHxvCQR8bwlCvAkcfZikNeGjrzHjZVH4TqFR4Z/9XvoDBIQ/O+gPYAw/qwQCvrcEAr63BAK+twQCvrcEAr63BAK+twQCvrcEAr63BEc2+PfvtlefWm4Zz+vLx+kcjTpoKma+90og4HtLIOB7S5CqP8AXf9sOFy1jpD9AEfgZJRDwvSU4HOGPrg38PPazj6ktj4ghVoARNe0z4Y+agSNWAov+AA8St49egTokdx8pQW9Jj5kzLBr8P0vt/dc6LMP7dne6unU7KPkUEAn+o70/ykowOr6tC9i2ee/b/xP+5bqFR7O701a1Z8qnopg7YuafvdMfdPcdOp+KMOgI8CtJcCafWj3oSPArSHA2n1o56IjwM0vQkk+tGnRk+BklaM2nVgx6FvzAESafmj1o4MfK59Ew6Fvn5csRfph8ajEwZ/gh8qmFgwZ+gHxq0aCBHySfB7O47HYwfAUgCgQCIACBAAQCEAhAIACBAAQCEAhAIACBAAQCZI8rFT4OHUwsVoAWkC7ta2y2gDNAnXoXWd0DzP7XsQiQTALHrmXHZhi0p+MxkKgiwMqmCxm7l91H1kOdy5oufAN/RwADCSqVt2U/1j1dgmq1jRXO9U+ToGJha5XCjuESVK1qrlTZM0yCyiXt1Uq7uktQvZ9Bxdq+bhI4NLOoWtx5WQKXTiaVq3ubJXBqY1O9vPu0BG49jBzq+2/kyFuAKxKUz49Th48bufEW4IwEtL4hCIIgCKJ0/AYcP+o66BZ87AAAAABJRU5ErkJggg==",j="/smeditor/assets/upleftBodyActive-bc79d60f.png",q="/smeditor/assets/upleftBodyInactive-f60085c6.png",W="data:image/png;base64,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",_="data:image/png;base64,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",$="/smeditor/assets/uprightBodyActive-3d912f52.png",A0="/smeditor/assets/uprightBodyInactive-01c6c977.png",n0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhAxQCNDOOaZ4QAAACiklEQVR42u3cXUoDMRRAYRvcgOAmBdcw4qxBcJOF7kB98MWforY2N3dyvwM+iApOz5kkHZLuri7Euq6vH7+/v3v49js3ty9XeOewbz/+/On58dP3y7LsevwfLdNFI57rbOX3xig0cATYwtArABEIQATWACIosoZwGxQfOa4prR2BEcAiEAKAACAACAACgAAgAAgAAoAAIAAIAALAlITvB7ArN9d+gkZ+PJleh0a+NQD5AoAAIAAIYPq3PRg0AojAFCCChPh8ACNALYxC3gWIYOQUMEMEM00jboXiI4gAikcggOIR+ICIM+b0j+IP+7bpNUEjv/ZzgUa+5wDkC4B8AZAvAPIFQL4AyBcA+QIgXwDkC4D8r8y2maSRX1f+dAGQXziAkfK3HMc0+wF+kvCfOP4qd6v7Ako8CDr3Dj3177Y4EpR5FFxBpgAuOJxXYZNrgJ57+KodGmmzyzfsTxQA+YUDIL9wAOQXDiCL/KfnRwFUlz9jBI380+782SJo1eSfwqzDfuoAssu/v3sQAPkCMOwLwFs9AZAvgKyQXziAS8hflmUnAPIFQL4AyBcA+QIgXwDkC2CoRPInHQF6HtogfyNTQI9DG+T/TqqDIZfcoEl+secA5AuA/OoBkF84gCzy/7KOyXQYpZEfG0G2k0iN/LgIMh5Da9FiKs35h3379DX1GuDYi94zAgu+hCNAVASj5M+4d7DLC7au62v0hfSSf+xaeh8QORZar+vrdsdERtD7zo+MIFJ+1wCiIoia8yMiiJbfPYDeEUQv+HpGMEJ+SACz0SOCUfIFkCCCkfIFkHBqi57WBJAoghEPsQSQJIJRTzAFkCACj68BAAAAAAAAAAAAAAAAAAAAnM8bX/VtPURmmxUAAAAASUVORK5CYII=",t0="data:image/png;base64,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",o0="/smeditor/assets/bodyActive-889762ad.png",g0="/smeditor/assets/bodyInactive-5d99335a.png",e0="data:image/png;base64,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",r0="data:image/png;base64,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",B0="/smeditor/assets/parts-9a3f637b.png",a0="data:image/png;base64,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",i0="/smeditor/assets/frame-d599a2fe.png",C0="/smeditor/assets/parts-b37af2cf.png",s0="data:image/png;base64,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",u=`precision mediump float; +import{q as r,r as I,s as E,b as P,u as v,O as m,v as w,w as c,x as Q,y as a,z as p,X as L,H as C,L as x,Q as l}from"./ChartManager-b82bf91a.js";import{A as H}from"./AnimatedSprite-c4817119.js";import{H as d}from"./HoldBody-3932542e.js";const b="/smeditor/assets/downBodyActive-dd1fd694.png",G="/smeditor/assets/downBodyInactive-c781a303.png",y="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0dOV1YU4MAAAPKSURBVHja7d1dTupQFIbh0pwJkDBA4xjEQVjGcOIATZwBnFslHC1l7b2/v3WHiUL6PimUwHI3Xc1pWS5fbz8/vU5bZn843/07nx/zVDVb7h/5sW29/7/vb99uvxyPu6+356nRbHnAldEqg7HGXzPt/rIIAuX4zQGwI1CP3wUAKwKH+N0AsCFwid8VAAsCp/jdAaAjcIs/BAAqAsf4wwCgIXCNPxQACgLn+MMBICBwjg8BQAEBa3wYAMwImONDAWBEwB4fDgATAoX4kAAYEKjEhwWAjEApPjQARARq8eEBICFQjE8BAAGBanwaACMRKMefpmn60+NUWXVAPj/mu4PsD+fN94/4yeZqXHPr+NWn415nAtSPtVe/vplbP2BGBOjfaag8ll2frBgQqH2hBe5FIDICt/jDrgIQETjGH3oZiITANX4pAMYvf+wPZ8r4lfdfegZQ+kKoQ/wmTwHKCBQ/QDqjHCh0BKqfHs5+AOP4za8Csh8AO36Xy8DsB8CN3+19gOwHyH6A7AcAjN8VAAuC7AcwRpD9AMYIsh/AGEH2AxgjyH6AwZP9AJM3AAUE2Q9gjCD7AYwRZD+AMYLsBzBGkP0AxgiyH8AYQfYDGCPIfgBjBNkPYIwg+wEKDlj2A+AdyyZngOwHyH6ALs/J2Q+Q/QDZD8D6IjD7AXDiD7sKyH4AjPhDLwOzH2B8/FIA2Q/A+T5D9gMYx2/yFJD9ADzxVwG4/v/zrggY469pt7v1w9OyXK5/9vz0Sqe8CpVK/JfjcbcKQBB4xP8RQBDox/8VgDMCh/irADgicIm/GoATAqf4dwFwQOAW/24Ayggc428CoIjANf5mAEoIKoct/kMAgoA//sMAgoA7fgkAdwTM8csAuCJgj18KwA2BQvxyAC4IVOI3AaCOQCl+MwCqCNTiNwWghkAxfnMAKghU43cBwI5AOX43AKwI1ON3BcCGwCF+dwAsCFziDwGAjsAp/jAAqAjc4g8FgIbAMf5wACgIXONDABiNYMuoxIcBwIRAKT4UAAYEavHhACAjUIwPCQARgWp8WABICJTjQwNAQKAeHx7ASAQO8SkAjEDgEp8GQE8ETvGpAPRA4BafDkBLBI7xKQG0QOAanxZAJYItoxKfGsAoBErx6QH0RqAWXwJALwSK8WUAtEagGl8KQCsEyvHlAFQjUI8vCaAKgUN8WQCPInCJLw1gKwKn+PIA7kXgFt8CwFoEjvFtAPyGwDW+FYD/Ibg1LvHtAKxB4BTfEsBPCNzi2wK4hcAxvv2cluWy9nVBJpPJZDKZjNL8A8iasRIljXPgAAAAAElFTkSuQmCC",S="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB98FAw0eB7cUHesAAAO/SURBVHja7dw7VhtBEIXh0WzGGWtxahZop6yFzKuREwKQBcy0uqvuqzM4Bwv6/yxN61GX7f91ff/F6+vPbWT9/vPj9M88//q7zVojt4/8u43e/tPTy+23Lu+/2LdFa+QXnhltZjDW+EfWMgAqCJTjLwfAjkA9fgkAVgQO8csAsCFwiV8KgAWBU/xyAOgI3OK3AEBF4Bi/DQAaAtf423bzrNDbmvJMoOqGsf0tbc8EstwTuEPeETaPHQHzvdiOsomsCNgfwmAAMCJQuH6BAsCEQOXiFQ4AAwKlkwskAGQESvGhASAiUIsPDwAJgWJ8CgAICFTj0wDoRKAcf9sWvBZwb8NYX2xBfGfz2X+/9LWAzzas++1dI7eP+rb22dc3e9X/TCYE6J9pmLmXpdcADAjUPtACdxGIjMAtftspABGBY/zWYyASAtf404+BLhvJdKwtPQYqfSBUIX7LQ4AyAsV3D+8oG4WOQPWt45kPYBx/+Skg8wGw45ccAzMfADd+2fMAmQ+Q+QCZDwAYvxQAC4LMBzBGkPkAxggyH8AYQeYDfFyZDyD0t2Q+gHF86IcAJQSZD2CMIPMBjBFkPoAxgswHMEaQ+QDGCDIfwBhB5gMYI8h8AGMEmQ9gjCDzATIfoC1+5gM03hNkPsDkDct8AMy9zHwAsvj0F4GZD4ATv+0UkPkAGPFbj4GZD9Aff/oxMPMB8I6amQ9gHL/lISDzAXjiHwJw5y7EEgFj/CPtLp98/3r7jZG3h6tcEwjFvxwFEAQG8b8DYI9APf4RALYIHOIfBWCHwCX+GQA2CJzinwUgj8At/ggAWQSO8UcByCFwjf8IABkEMxdb/EcBBAF5/BkAgoA4/iwA1giY488EYImAPf5sAFYIFOKvAGCBQCX+KgDSCJTirwQgiUAt/moAUggU41cAkECgGr8KADUC5fiVACgRqMevBkCFwCF+BwAKBC7xuwBAI3CK3wkAEoFb/G4AUAgc4yMAgEDgGh8FQCuCkaUSHwkADQKl+GgA4BGoxUcEAItAMT4qADgEqvGRAcAgUI6PDqAdgXp8BgBtCBziswAoR+ASnwlAGQKn+GwAliNwi88IYBkCx/isAKYjcI3PDGAagpGlEp8dQAsCpfgKAEoRqMVXAVCCQDG+EoClCFTjqwFYgkA5viKAqQjU46sCmILAIb4ygIcQuMRXBzCEwCm+A4BTCNziuwA4hMAxvhOALxG4xncDcBeB+764ATiCwGpPHAF8hcBuP1wB3EPgvBfWCK7ZhqysrKysrCy39Q9gQ/q5SfcuvQAAAABJRU5ErkJggg==",Y="/smeditor/assets/leftBodyActive-75d41033.png",V="/smeditor/assets/leftBodyInactive-bbc074cd.png",N="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEANIA0gBQ7xAn7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI2I6Ho7PYAAANMSURBVHja7Z1bTgMxDEU7VjeAxAJR10C7CMoaEAus1B0Av6XiMY/EsX2PJT4GoTHpOZNJMhl32t3F6/n8eXt8eDrt1sTD48eiv79ebNcqluZumX9N7p7/39v7y7fj5+Nxuj3e7zrF9WKzP4xM8HsBHhXW8+RzPtgqVz4CrPiAM8IfIUzPnDaqAZmvfE8JeueyEQ2p0O17SOCRw7U/u16s1D2/JyCvXibtCCjKgC/LOX+LPfBzAZPvAZjqCQsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOD7xh74f+evLpcB/+/81XYAhRQgKnwFCQz4ta/w0AIAX1gA4AvPApTgR5/WGvDjrTN4CmrAjwXfWwIDfjz4nhIY8GPC95LAgB8XvocEBnztqaYBX3udIczTQOoDFBOA+gA5gvoA1AcY17VTH2B8TuoDBAPinYv6AIEloD5A8Hs+9QEGBvUBiq0DZB7tUx9AGD7TQOAjAPARAPgIAHwEAD4CjIRPFBEA+MICAF9YAOALCwB8YQGALyxAS/hMAZMJAHxhAYAfI/YV4fccU3jkoz6AMHzvQbEBP2Y+6gMIw/fMYcCPCd8rlwE/LnyPnJbZXm8YFVcsDfi68GcJcP/980RxAZ6Px6mFBL0XM7xX/6quNv7YKiTQkeDXFkWUwPsLHaJ8gcSw+gBIMF6CLbnmsJrmnOj1fP68/93h6cSaQOeZQWv4P13Q09wTIoFvPg/4iwRAAr98XvAXC5BJAsVYCn+VAEhQB/5qAZCgBvxNAiBBfvj/rgP8F1lWDIHfSQAkyA2/iQBIkBd+MwGQICf8zYPAiAPDpQJl3++wBX7THoCeIB/8LgKMlkDlTeMW8LsJgAQ54HcZA0QaE6yRp/UgK3q4NAwJxAVAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAAgRAggERet9Vtk0la+REgGISIAASIAASIEA5CRAACRAACRAACRBAT4LKkqRvWW8JqvcQJVrXUoL7H24BYhIwBkCC1ZFRuJLvu7V6irgVPo+DRSRgQ4iwBGwJE5aATaHCErAtXFgCXgwRloBXwwpK0HrtAQFEJOD1cGEJKBAhLEHlsnEEQRAEQWjEFz4LZYAP3C09AAAAAElFTkSuQmCC",O="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3FABOeLgAAAM3SURBVHja7d09csJADIZhW+O7pOMsaeGASZuz0HGapGUIMP7Z1Ur6XnVkMgj8PdjrxV7m6X/93j+4Xj+nPfX1/bHp/y/n29SqtvZu2X9P756v73T6efzTfP9gmTrV5XxbvTEyhd8r4FFlPZ98zYat8skHwI4NnDH8EWB69rRRbyDzJ98TQe9eNuKNVNjteyDw6DH3OgvwqAjH/Gij/q1nATYlrSgDvizP+aoWws8VWNoxAKd6ACB8ABA+AAgfAIQPAMIHAOEDgPABQPhjayH89/2r4zLCf9+/2hVAIQFEDV8BgRF+7U94aACELwyA8IXPApTCj35aa4Qfb57BE6gRfqzwvREY4ccL3xOBEX7M8L0QGOHHDd8DgRG+9qmmEb72PEOYbwNZH6AYANYHyFGsD8D6AON27awPML4n6wMEC8S7F+sDBEbA+gAJjvmsDyAcfqbnDD8PkHm0z/oAwuFzGkj4ACB8ABA+AAgfAIQPgJHhU0UAEL4wAMIXBkD4wgAIXxgA4QsDaBk+p4DJABC+MADCj1FLxfB7jik8+rE+gHD43oNiI/yY/VgfQDh8zx5G+DHD9+plhB83fI+ellmvdxgVZyyN8HXDXwXgyZ0lVHEAcwsEvSczvGf/qs42vtoDgEAEwbtDQDgE3j/oEOUHJEauDwCCwQiO9FqT1bzyuX4f/7DntnHmBIaHP+8FAALnfh7hbwUAgin+18Fbwt8DIA0Cxdoa/l4AICgS/hEAICgQ/lEAIEge/pp5gM2AIs4YEn4/ACBIHH4rACBIGn5LACBIGH6LQWC4geFWQAWudziUoXm8IPYEMcPvBWAoAqE7jZvsvc3zBYIgVvi9xgBhxgR78LQeZMlIAgEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEEQqywY08kUlkX9pPSuAdAgAAAIAgAAA5RAAAAQAAAEAQAAAPQSVkViB99AVQfU9RKVLnJtMGx+tJ/iYCs60J2AMAIKWn34OASqHA74OFkbABSHCCLgkTBgBF4UKI+CycGEE3BgijIBbwwoiUN6GigBaIuD2cGEELBAhjEB9u1EURVEUlbz+AOnsq2p4bKxbAAAAAElFTkSuQmCC",X="/smeditor/assets/rightBodyActive-07f95372.png",K="/smeditor/assets/rightBodyInactive-fdefc2a4.png",R="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NtUuOVwAAAOHSURBVHja7Z3RTSsxEEUdKw0gUSCiBkIRhBoQBSLRQeDr6YWQEK/j8c7MPfcvIO0sPmcd24RhU07yut9/Hb9+fHguPbm7PxSLfH7UIdfpub9RtXvq99Z+e3/58fppt9scv96WYLk2cK0D9flRF0O4uz8Mk2BJ/ZHinaYW4fQM7MiZraW+JXxTAaxvfFRNzxLMGMPqDcgatTxKMGvsqmcwM2t4kmDmg1O9P50zr+1BgtlvndOqWfxgXq5pteWdkanbwDUWhtZbNIstYsoZgC0iAiABAiABAiABAiABAiABAiABAiABAiDButlmB3Vu0Nf4UMfx/Xg6Maxq8Ec/idFngqoGHwlYAyABAiABAiDB/F3A2p/Fn7U6j7Q7qBGfsghPYpSZoGaEjwSOBFh7kYMEKwrgZa+LBCsI4O3cGwmCbgMzQfAoQYhzACQ4aAvwbxBGDURECaxCf4CFtekPkCj0B6A/AP0BvAFZoxb9AYJLQH8A52sA+gO016c/QMBr0h8g4P7X8xYx5QzAFhEBkAABkAABkAABkAABkAABdEJ/AEJ/AOJTAgQQlwABxCVAAHEJEGDCVtCzBAggLgECiEvgvj/AUgiWg3lar+dzA3+NDf0BBlzTchCt69EfAAnoD4AE9AdAgkJ/ACQo9AcIIZ51PfoDIAH9AUhf3t5fNAWYfaBiXa/n+ufgP+12m/QCAL8dvqkAXvoDzDwaHl3PGn6TAC3vIx4kAP5y+KWUcvabr/v91+nXHh+e3a6Sgd8H/6IAkSQAfj/8PwWIIAHwb4N/VQALCTIlOvwmAZAgL/xmAZAgJ/xFAiBBPvhN5wDXCt1yTqAcD/AXC4AEueB3CYAEeeB3C4AEOeAvXgS2LgwjZekitncR6BH+TTOA1Q3x5M+DP0QAJQlm/efTWfCHCaAgQUb4Q9YAnjPq4Cor/NQCAF9YAOALCwB8YQGALywA8IUFAL6wAMAXFgD4wgIAX1gA4AsLAHxhAYAvLADwhQUAvrAAwLdNuA4hwBcXAPgIAHwEAD4CDI4ifAQQh48A4vDlBVCHn1qAa3CBLzADXIIM/P/ZluQZ0a00K3wWgeLwQwowswlFdviliP06GPhBBZgtgQr8UALMkkAJfjgBrCVQgx9SACsJFOGHFWC0BKrwQwswSgJl+OEFuCTBLVFre5f2z8OBLyTACAlUG16mbxEDfEIIIYSQ3/kGeiN5xirmRdUAAAAASUVORK5CYII=",k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI3NUwnaOYAAANgSURBVHja7Z1BUuNADEUdF3dhx1lmyxxw2HIWdnMas6JqKpCx3ZbUkv7TLiFJR/1eOurGiNvyPbZ/b3x8/FpG4s/b8+IRv1//mrzOyPuzGntk/NGxX17e7++6PbxRQQDLiaoiwZUx9wRYF+EYmVhLsY+MbyncT7FmmtwZY2aWIGIO12xAZoyVUYKouVszg4kcI5MEkR8ctyKw2q4gS2FoHWmKQI9JyvKas3Y8pVaAatFlJWAbyEowtwhEAgRAAgRAAgRAAgRAAgRAAgRAAgRAgjTR/iTwp0mfeWWP9fh7IX0S+AhO9EUdmVeCVQ0+ElADIAECIAECIEH8LiCyYq523b/X7iDNLiDa8gqXfGdYCdaO8JEgkQCzixwkmChAlr0uEkwQINu5NxIU3QZ2gpBRghLnAEjwrC3A1yRYTURFCbyC/gAT4dEfgMJw+mpBfwD6A+QCMmMs+gMUl4D+AAmLwKiikP4ARYpA+gPkDPoDNF8J2AayEswtApEAAZAAAZAAAZAAAZAAAdhSIgASIAASIAASIAASIAASIIDAVjCzBAggLgECiEuQvj/AWQiek+k9Hv0BDF7T86KMjC3nSnwFeCaGBMkFiEgICZIKEJkIEiQTYMb3GRKwDQwXz3s8+gMgAf0BCLMzAA0Bov9Aw3u8kdd/AP/WXgDgH4fvKkCW/gBqR8Nn4B8S4Mj3SAYJgH8e/v9+uN3fceWXQt5VMvDH4O89oIQEwB+Hf+RBqSUA/jX4Rx9oKkGnqA7/zIORoCH8s09AgmbwR54kL0En+IfOAfYGunJOoBwZ4I8IgASN4I8KgARN4F8RAAkawF+WZXm6+PzbfWFYTYKoIjYj/KsrgMsb4pMfB99KABkJorqHRsG3FKC9BB3hK3xyTQ6uusLvLgDwhQUAvrAAwBcWAPjCAgBfWADgCwsAfGEBgC8sAPCFBQC+sADAFxYA+MICAF9YAOALCwB8xyjXIQT44gIAHwGAjwDARwDjUISPAOLwEUAcvrwA6vBbC7AHF/gCK8AjyMCvlYDbfzFTh08RKA6/pACR/Qe6w6+UTHh3MgX41RIKk0AFfsWk3CVQgl81MTcJ1OBXTs5cAkX41RM0k0AVfockL0ugDL9LohtzQrIb80HCG3NB0hvzQBAEQRAEsR+fBPrG1xa4jMQAAAAASUVORK5CYII=",M="data:image/png;base64,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",Z="/smeditor/assets/upBodyInactive-87a7969e.png",J="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5IlF3wK8AAAPCSURBVHja7Z1bbsIwFETNKBtAYoFV11C6iNI1VF0gEjug/YUoRbWxfR8zV+oHH9TG58QhUe6wK6v6PJ1+bl+/vryX2tofrtXvuZxRelXL+BHm2DL+1/fH3eu343F3+xq9Fykr/N7/u+Uzj/hsEHxuCcAM/3KGOQTr8VGMytP5NKIEoQXw+GWKVQIIPrcEEHxuCTBr4pGuob1L0HMtMeMIj3gDxasEvXeIxfM2b32peTmjesz94dptDWacDuyuP4LcZ/Byx45aAOubTJklgOBzSwDB55YAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwBm+PvDNeWDniEE8PQMIbMEYIfPLgEEn1sCCD63BBB8bgkg+NwSQPC5JYDgc0sAweeWAILPLYHyAcglUD4AuQQQfG4JaPMBoksQWoDo8DNJAMHnlgCCzy0BTT5AJgmUD+C0lA9Q/OUDWEgQKR9gKUFqxtHVa4yeEqS8DPR6fmU5VYUSYPY3bDYJwAz/r74AJgnADP/RWCwSgB0+uwQQfG4JIPjcEkDwuSVYosKvAdLaF7Ae49GYlomioXcAj/Bb3qt8AIfwZ5fyAYjhR5UAgs8tAQSfWwIIPrcEEHxuCSD43BJA8LklgOBzSwDB55ZgiQb/6/vj7vXry7sp0Jb5WP8a2dAdQEd+rJ0Ags8tAQSfW4JQ+QDr863Hapmj8gGSwI8oAQSfWwIwwr+csfnHKIHrfIBR8Gcu/ggJKPIBthbu7Xjcjd6Bnl3crTn2lKC3pBhxhD27tc6CP6o3sKcEo09T7i7EZ8J/dF3tRQLz7wAzJ20BP7ME/xkLXiY9Av5WzfrNoCjrCQ+T9gA/kwQ16wnrSXuCn0GC2vWE5aQ9wo8sQct6wmrSnuFHlKB1PWEx6VnwvZan9cTsSbPD97aeS+2kP0+nn57bFyN8T+sJS2DM8L2sJ6wmLfg+1hMWkxZ8P+u56CjOeToYvgOocpQEkAAqCaCSACoJoJIAKgmgkgAqCaCSACoJoJIA0euZ5g6GBBOKHaAFJEt8Dc0poAYoU3YR1XeA2T8dKwGCScCYWrYUwlI8nS4DVVkEsAxdiJhetq6QD3WumylKmR8anaXDKexTvZYSZGpvC/1Yt4UE2Xobwz/XP1OCjI2tKRo7ZkiQtas5TWfPSAkyt7Snau0aIUH2PIN0vX09JWAIs0jZ3NlDApYkk7Tdvc9IwBRjk7q9u0UCtgyj9P39WxLUVPYMBIqAh1YJGAIwaBI+aiVgST+hinj5rwSKvlGpVCqVSpW9fgGbIppuMBFz1QAAAABJRU5ErkJggg==",z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAAZiS0dEAHgAeQB3paCnMQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+EDFAI5JlYaBLYAAAO8SURBVHja7Z1LUt1ADEXtW94LM9aSKSwQpllLZqzmZZQq6oUX4nZ/JN2jGVDgRud0t21aYt/+jtvnD379+rGdjbf3p9Pf8/rysfWKlutnGGPL9Z+ff95/av/8gXonqSr83j+75Xce8bsJ+N4SyBn+68vHcgirr69tUUTaTzNKkFqAiDdTrhII+N4SCPjeEmjWwDM9Q0eXoGcuNWOGZ3yBElWC3ivE/sXnLr8JjPQMfjVhqx9vr8b0N4GV4EdYCUo+BmabhZUlEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lEPC9JRDwvSUQ8L0lkDP8t/enkgc9UwgQ6QyhswRyh+8ugYDvLYGA7y2BgO8tgYDvLYGA7y2BgO8tgYDvLYGA7y0B/QHMJaA/gLkEAr63BLb9AbJLkFqA7PArSSDge0sg4HtLYNMfoJIE9AcIGvQHSJTgLFvd1fiuP8CxJYkZs6vXNd7en0KeXA71HiDi/uqyVaUSYPYdtpsEcob/qC7ASQI5w//XtVwkkDt8dwkEfG8JBHxvCQR8bwlCvAkcfZikNeGjrzHjZVH4TqFR4Z/9XvoDBIQ/O+gPYAw/qwQCvrcEAr63BAK+twQCvrcEAr63BAK+twQCvrcEAr63BEc2+PfvtlefWm4Zz+vLx+kcjTpoKma+90og4HtLIOB7S5CqP8AXf9sOFy1jpD9AEfgZJRDwvSU4HOGPrg38PPazj6ktj4ghVoARNe0z4Y+agSNWAov+AA8St49egTokdx8pQW9Jj5kzLBr8P0vt/dc6LMP7dne6unU7KPkUEAn+o70/ykowOr6tC9i2ee/b/xP+5bqFR7O701a1Z8qnopg7YuafvdMfdPcdOp+KMOgI8CtJcCafWj3oSPArSHA2n1o56IjwM0vQkk+tGnRk+BklaM2nVgx6FvzAESafmj1o4MfK59Ew6Fvn5csRfph8ajEwZ/gh8qmFgwZ+gHxq0aCBHySfB7O47HYwfAUgCgQCIACBAAQCEAhAIACBAAQCEAhAIACBAAQCZI8rFT4OHUwsVoAWkC7ta2y2gDNAnXoXWd0DzP7XsQiQTALHrmXHZhi0p+MxkKgiwMqmCxm7l91H1kOdy5oufAN/RwADCSqVt2U/1j1dgmq1jRXO9U+ToGJha5XCjuESVK1qrlTZM0yCyiXt1Uq7uktQvZ9Bxdq+bhI4NLOoWtx5WQKXTiaVq3ubJXBqY1O9vPu0BG49jBzq+2/kyFuAKxKUz49Th48bufEW4IwEtL4hCIIgCKJ0/AYcP+o66BZ87AAAAABJRU5ErkJggg==",j="/smeditor/assets/upleftBodyActive-bc79d60f.png",q="/smeditor/assets/upleftBodyInactive-f60085c6.png",W="data:image/png;base64,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",_="data:image/png;base64,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",$="/smeditor/assets/uprightBodyActive-3d912f52.png",A0="/smeditor/assets/uprightBodyInactive-01c6c977.png",n0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfhAxQCNDOOaZ4QAAACiklEQVR42u3cXUoDMRRAYRvcgOAmBdcw4qxBcJOF7kB98MWforY2N3dyvwM+iApOz5kkHZLuri7Euq6vH7+/v3v49js3ty9XeOewbz/+/On58dP3y7LsevwfLdNFI57rbOX3xig0cATYwtArABEIQATWACIosoZwGxQfOa4prR2BEcAiEAKAACAACAACgAAgAAgAAoAAIAAIAALAlITvB7ArN9d+gkZ+PJleh0a+NQD5AoAAIAAIYPq3PRg0AojAFCCChPh8ACNALYxC3gWIYOQUMEMEM00jboXiI4gAikcggOIR+ICIM+b0j+IP+7bpNUEjv/ZzgUa+5wDkC4B8AZAvAPIFQL4AyBcA+QIgXwDkC4D8r8y2maSRX1f+dAGQXziAkfK3HMc0+wF+kvCfOP4qd6v7Ako8CDr3Dj3177Y4EpR5FFxBpgAuOJxXYZNrgJ57+KodGmmzyzfsTxQA+YUDIL9wAOQXDiCL/KfnRwFUlz9jBI380+782SJo1eSfwqzDfuoAssu/v3sQAPkCMOwLwFs9AZAvgKyQXziAS8hflmUnAPIFQL4AyBcA+QIgXwDkC2CoRPInHQF6HtogfyNTQI9DG+T/TqqDIZfcoEl+secA5AuA/OoBkF84gCzy/7KOyXQYpZEfG0G2k0iN/LgIMh5Da9FiKs35h3379DX1GuDYi94zAgu+hCNAVASj5M+4d7DLC7au62v0hfSSf+xaeh8QORZar+vrdsdERtD7zo+MIFJ+1wCiIoia8yMiiJbfPYDeEUQv+HpGMEJ+SACz0SOCUfIFkCCCkfIFkHBqi57WBJAoghEPsQSQJIJRTzAFkCACj68BAAAAAAAAAAAAAAAAAAAAnM8bX/VtPURmmxUAAAAASUVORK5CYII=",t0="data:image/png;base64,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",o0="/smeditor/assets/bodyActive-889762ad.png",g0="/smeditor/assets/bodyInactive-5d99335a.png",e0="data:image/png;base64,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",r0="data:image/png;base64,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",B0="/smeditor/assets/parts-9a3f637b.png",a0="data:image/png;base64,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",i0="/smeditor/assets/frame-d599a2fe.png",C0="/smeditor/assets/parts-b37af2cf.png",s0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAYAAAD1Xam+AAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QMUBBw2p9O4hwAABHNJREFUeNrtnL1u20gUhWcY2YkoKbAEZJu4T7GAncdZp0q1vWvHzTrGvsMiRSo9T+wmldvAKTYrRbQiGQZni4VcMOQd0ncZcTLfV0o4PJJAHt0z/LHGGGcixrmov74x5+elL9s3b6wxxuTTqfgD/Xl1VPr6yam1xhgzneai/uqo3P/Unv6nz2X/23evSl9//buxxhjz25EV9b9O/1D5X9mroPWJAYBo6fETgIS9u1Pp81znnxvdBnZ23Fb9u64nAECuSLe3Kv16rTsA124tvv/IGwC2VX9jw9YTAFDa/e+5uWmk33T/DctlM/9Nd73XG3kDo4ruv2E4bNc/dD0BAHIgND2CC2SZbpkpS7JGAVCk33et+oeuJwBArgC+ANiV316tdB10la9Unz8d6CqAz7+X9MLWs4uDOAFknn+gifz2YiEfgGOP/8IuVJ9/MJAngG9K/7HnG3RdTwBAefevW+In5d2/rnxc0V2bduBi97+fAFJTKwAe6r85AEPVEwAgkjdcBPw+AHSnsZa5bg1iOJTXIP7W+j8KW08AgMzXryr5fK7r4HM7V+mfPjVb9e+6ngAAkWSu2wFnM91ZgFkyUwZAvlX/ruut4V6AuLu/teJftDs4EH8ge3kp6g8P5R/44kL2P3SHst5eiPoPl/L+/fLAtOrfdT0TAMh8/qySX1/r7K+NbgPPftmuf9f1TABMAPIE4Nk/rOdiVGvlH9g52d86+W4+Z52ov/Poex691r/reu4GBIgYKkDkuLdvS/8hKq8LKHB+Vv4PX3VdQJEzd1aqrzqvXeT9X+UTStV1Af+3f+h6JgCAiCEAAAgAAGANAKKnbvevom73r6Jud62ibvdvyz80PRMAABUAAAgAAGANAOj+dP849EwAAFQAACAAACCu6me4GzDuHYC7AbkbEACoAABAAABALHAdQOTwPACeBwAAVAAAIAAAgDUAiBPuCeB5AABABQAAAgAAWAMAuj/d/+fTMwEAUAEAgAAAgLiqn+F5AHHvADwPgOcBAAAVAAAIAACIBa4DiByeB8DzAACACQCghNFIJR8OdfZD49vAQn534TnLM9L6h60nAEDm+XOVfH9fZ79vfBv4KL776ZNH/kLrH7aeAAC5+4/HjfTF7r+318y/2F33TLMNFLv/P19+rH9oegIARPKGAVBkMsl1+nyi0s9mSbv+Sdh6AgDkiUC5BjAaWZ3e6vy9awAt+3ddTwCAHACDgUrf/iKgzM2N26o/i4AQZvdveARXnfevGwBV563rHgBV5/2z7Mf4h6onAEBeA1BOAP2+7h+47/q6CSBL2vW3YesJABBJfAHgfBVAPgB9S4TDRDcCL5eywxOlf+75Bl3XEwCgmwA8I3aa5hq5SfNU9fkzzwTwROmfJVnQegKA7i8OkUlfHiFPjuVr/tNUPgCPPdesp0n6oO6/YbXKH9Sd6/of2+Og9QQAeErkY6VctwbwWLkGsFqZrfp3XU8AgFzxd3QB0NvV+e8qd9H12ncdgmvVv+t67gYEiJh/AchBW6zwsfy0AAAAAElFTkSuQmCC",u=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-396091da.js b/Noteskin-b3dbf45d.js similarity index 99% rename from Noteskin-396091da.js rename to Noteskin-b3dbf45d.js index a56cec6e..96f82572 100644 --- a/Noteskin-396091da.js +++ b/Noteskin-b3dbf45d.js @@ -1 +1 @@ -import{q as B,b as n,X as Q,y as C,L as s,H as a,Q as D}from"./ChartManager-db54e716.js";import{A as i}from"./AnimatedSprite-ffeea718.js";import{H as h}from"./HoldBody-9276f45c.js";const w="/smeditor/assets/hold-3ccaaf09.png",E="/smeditor/assets/mine-590d445e.png",l=B.from(w),f=B.from(E);class c extends n{hold=new i(Q(l,2,1,72,128)[0]);anims=new Set;constructor(e,A){super(),e.on(this,"holdon",g=>{A==g.columnNumber&&(this.hold.visible=!0)}),e.on(this,"holdoff",g=>{A==g.columnNumber&&(this.hold.visible=!1)}),e.on(this,"rollon",g=>{A==g.columnNumber&&(this.hold.visible=!0)}),e.on(this,"rolloff",g=>{A==g.columnNumber&&(this.hold.visible=!1)}),e.on(this,"hitmine",g=>{if(A==g.columnNumber){const t=new C(f);t.alpha=0,t.anchor.set(.5),t.blendMode=s.ADD,this.addChild(t),a.animate(t,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>t.destroy())}}),e.onUpdate(this,()=>{this.hold.alpha=Math.sin(Date.now()/1e3*Math.PI*2*20)*.1+1}),this.hold.visible=!1,this.hold.anchor.set(.5),this.addChild(this.hold)}}const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACACAMAAACMX59YAAAAIVBMVEUAAAD///+6urq4uLizs7OoqKinp6ecnJyVlZWUlJSIiIh18TD6AAAAAXRSTlMAQObYZgAAAKhJREFUeNrt2AMCA0EQRNFRVXD/A8fmWv/F6vTuCOGj+CBUMGgAAMDw4p4UKpHiXpsB3HsGfg7g1/+QfL68furfGUiWrnc1MogPfmZgVQsgtZ2Bqmbg1wwq8XA1sf1DAACM3+v8oILv84Pxr97ZPwAAxL2UQyUlNVwzyQ2XfW5//0DV5gevAfx9ftDH8n/wAJUPYeYVqf39AwAA+wfrtVbbzf52fAyf7ADSzwa2IX7vawAAAABJRU5ErkJggg==",I="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACAAgMAAADG74f5AAAACVBMVEUAAAAAAACoqKjq2/gjAAAAAXRSTlMAQObYZgAAACRJREFUeNpjGAWDAjBGNSA4TEsdhrfAKBgFo2C0/BgtP0Y6AACvVTE5zX7vswAAAABJRU5ErkJggg==",d="data:image/png;base64,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",P="data:image/png;base64,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",v="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAMAAABbYT+NAAAAOVBMVEUAAAAAAAAICAgoKChAQEBfAABvAACRAACYmJieAACoqKi4uLi7AADQ0NDRAADg4ODpAADw8PD////pSTDZAAAAAXRSTlMAQObYZgAAATxJREFUeNrt2EGOgzAMQNGxSVxI0hK4/2Fnokx7AHuBVP7bf0W2WgT5AQAAAAAAAAAAAAAAAAAAAAAAAPB9ZLhrTy+q2bKKBPoc6SXcD9Hz4/Nftv8lpbQEelv3Y19NxdnnXmrp2d+33ntz96K2bZupBM+Pz3/R/lP560savYfa8xyeJr4+r3VYs3OA/OrDy9vrow0PjZ8fn9+//+rdf5r9M3n3t57TquLqe526s299as7e2mTR8+PzX7H/pZxTWcT3B9jPac/i6kudirPvb75etzZtGjw/Pv8V+0+fPvl+AHac02G+Aerb/X4A8fnj+0+fPvEE4AnAOwDvAP6vAA2+BevNvwLUuf96DtU0+BWg3ANwD+AhEryJkjvfBMb7+P7/bwK5C6cHAAAAAAAAAAAAAAAAAAAAAADAl/kFHH4jM43eaVYAAAAASUVORK5CYII=",F="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABAAQMAAADoGO08AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAANlJREFUeNrN04GGpWAYBuAnIUAAH47ObRzE3lbABuxtBexttBYHsAF7MKYBL/LDYDA/eSjpy/u9vuiMx1X311XzfNUyXXWMV7t9WCHqt36DaFi7HaKBPX7nG8P5iz/nHo3nb/6eRzR1T57rEt38559HVH7yrqLygzcVlTsvFZWRQ0VlYFdR6dlUVDpWFRVQ0Q14RMk1Sq5Rco2Sa5RcIweMRAtMRDPMRBMsRCMcRMNKtxP12/WSp5G8H/OFmBlipoz5j9hscrPrbRvavrSNajvXtrLt7bCLnzkfnOqGiVWVifMAAAAASUVORK5CYII=",H="data:image/png;base64,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",M=B.from(F),U=Q(B.from(v),8,1,64,64)[0],m=Q(B.from(H),1,8,64,64),p=Q(B.from(d),1,8,64,64),u=Q(B.from(P),1,8,64,64),K=B.from(I),R=B.from(r),X={Left:90,Down:0,Up:180,Right:-90,UpLeft:135,UpRight:-135,DownRight:-45,DownLeft:45},L=["Receptor","Tap","Lift","Fake","Hold Inactive Head","Hold Active Head","Roll Inactive Head","Roll Active Head","NoteFlash"],Y={elements:{Left:{Receptor:o=>{let e;const A=new i(Q(M,2,1,64,64)[0]);return A.width=64,A.height=64,A.anchor.set(.5),o.noteskin.on(A,"ghosttap",g=>{g.columnNumber==o.columnNumber&&(a.finish(e),e=a.animate(A,{0:{alpha:1.2,width:48,height:48},1:{alpha:1,width:64,height:64}},.06))}),o.noteskin.onUpdate(A,g=>{const t=(g.getVisualBeat()%1+1)%1;A.currentFrame=t<.2?0:1}),A},Tap:o=>{const e=m[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(o.note?.quant??4)??0,7)],A=new C(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},NoteFlash:o=>new c(o.noteskin,o.columnNumber),Fake:{element:"Tap"},Lift:o=>{const e=u[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(o.note?.quant??4)??0,7)],A=new C(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},Mine:o=>{const e=new i(U);return e.anchor.set(.5),e.width=64,e.height=64,o.noteskin.onUpdate(e,A=>e.currentFrame=Math.floor((A.getVisualBeat()%4+4)%4*2)),e},"Hold Active Head":o=>{const e=p[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(o.note?.quant??4)??0,7)],A=new C(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":()=>new h(K),"Hold Inactive Body":{element:"Hold Active Body"},"Hold Active TopCap":()=>new C(B.EMPTY),"Hold Inactive TopCap":()=>new C(B.EMPTY),"Hold Active BottomCap":()=>new D(B.EMPTY),"Hold Inactive BottomCap":{element:"Hold Active BottomCap"},"Roll Active Head":{element:"Hold Active Head"},"Roll Inactive Head":{element:"Tap"},"Roll Active Body":()=>new h(R),"Roll Inactive Body":{element:"Roll Active Body"},"Roll Active TopCap":()=>new C(B.EMPTY),"Roll Inactive TopCap":()=>new C(B.EMPTY),"Roll Active BottomCap":()=>new D(B.EMPTY),"Roll Inactive BottomCap":{element:"Roll Active BottomCap"}}},load:function(o,e){const A=o.columnName;o.columnName="Left";const g=this.loadElement(o,e);return L.includes(o.element)&&(g.rotation=X[A]*Math.PI/180),g},hideIcons:["Lift"]};export{Y as default}; +import{q as B,b as n,X as Q,y as C,L as s,H as a,Q as D}from"./ChartManager-b82bf91a.js";import{A as i}from"./AnimatedSprite-c4817119.js";import{H as h}from"./HoldBody-3932542e.js";const w="/smeditor/assets/hold-3ccaaf09.png",E="/smeditor/assets/mine-590d445e.png",l=B.from(w),f=B.from(E);class c extends n{hold=new i(Q(l,2,1,72,128)[0]);anims=new Set;constructor(e,A){super(),e.on(this,"holdon",g=>{A==g.columnNumber&&(this.hold.visible=!0)}),e.on(this,"holdoff",g=>{A==g.columnNumber&&(this.hold.visible=!1)}),e.on(this,"rollon",g=>{A==g.columnNumber&&(this.hold.visible=!0)}),e.on(this,"rolloff",g=>{A==g.columnNumber&&(this.hold.visible=!1)}),e.on(this,"hitmine",g=>{if(A==g.columnNumber){const t=new C(f);t.alpha=0,t.anchor.set(.5),t.blendMode=s.ADD,this.addChild(t),a.animate(t,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>t.destroy())}}),e.onUpdate(this,()=>{this.hold.alpha=Math.sin(Date.now()/1e3*Math.PI*2*20)*.1+1}),this.hold.visible=!1,this.hold.anchor.set(.5),this.addChild(this.hold)}}const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACACAMAAACMX59YAAAAIVBMVEUAAAD///+6urq4uLizs7OoqKinp6ecnJyVlZWUlJSIiIh18TD6AAAAAXRSTlMAQObYZgAAAKhJREFUeNrt2AMCA0EQRNFRVXD/A8fmWv/F6vTuCOGj+CBUMGgAAMDw4p4UKpHiXpsB3HsGfg7g1/+QfL68furfGUiWrnc1MogPfmZgVQsgtZ2Bqmbg1wwq8XA1sf1DAACM3+v8oILv84Pxr97ZPwAAxL2UQyUlNVwzyQ2XfW5//0DV5gevAfx9ftDH8n/wAJUPYeYVqf39AwAA+wfrtVbbzf52fAyf7ADSzwa2IX7vawAAAABJRU5ErkJggg==",I="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACAAgMAAADG74f5AAAACVBMVEUAAAAAAACoqKjq2/gjAAAAAXRSTlMAQObYZgAAACRJREFUeNpjGAWDAjBGNSA4TEsdhrfAKBgFo2C0/BgtP0Y6AACvVTE5zX7vswAAAABJRU5ErkJggg==",d="data:image/png;base64,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",P="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAIABAMAAADAgHeoAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAB5QTFRFAAAA/wAAAAAAAED/AP8A//8A/wC//6MAAP//qKiojx4cpwAAAAp0Uk5TAP///////////36JFFYAAAl3SURBVHic7ZY9aF7JFYbvvf4vorWqrG1ZWl//FQGvF3UphAlqUsQYgiBFMC4WuVgwahbtplhUZeXGuPPaxeJqIRiCm22CCS62Cw6GbYP4UB/LW/nf3plzzpx5z8zcb9BPoUK3+Lj6ePQU37znPdM2lafddUB71H18eD4MTE66j42NQaCdnBg13czG8yFgcnLNffZGgQAJmkSBAAsSBQAiSBQInFqTt/5ZGZgZyVs3sQdsAaAU+RwZIH7rjoBeNzYMQNlqmmceoO/dCf4CwC8SjQkFXAieA9ByNBDoZp5/pMBHLUcDAacAQLJlgG7mgwJHQ7YQaPr3Cnyy1hSAblqB8GYB/t/mPf65Q4CmPQd6+qnDvOSAn6A2TlwO+BlsG6vAh0bQBwYV+NAQe2BAwTNMkSsruAUIKCqkBDi0JYXUCAMFRWgRiX2uCD0kQKbQGgqDkyq0yAKQKGKP6ehZRWxCBeyhxiKMw4sKqNIIgAKbFMY/KrCLN1PF1TKvr4PqQqmvJFL0Y5aaV6xbQbpYXXdZQQq49rN7dRdu/+0D+y66j3dPh4FZ/yNNPhkE9n36zB3Wqd88HQJmN+i4jQIBEjSJAgEWJAoARJAoEJjR2E+UgZMjeesu7AFbAChFPkcG0G8dMEOvk08MMMsDOOEB+t6d4M8A/CzRuKCAC8FTAPZxNBDoTh39vwKffeBoIOAUAEi2DNCdeqfAxZAtBIr3BwOU7g8G4P+123+HgJkx9wf6qcO85ICfoDZOXA74GWwbq8CHRtAHBhX40BB7YEDBM0yRKyu4BQgoKqQEOLQlhdQIAwVFaBGJfa4IPSRAptAaCoOTKrTIApAoYo/p6FlFbEIF7KHGIozDiwqo0giAApsUxj8qsIs3U8XVMq+vg+pCqa8kUvRjlppXrFtBulhdd1lBCrj2s3t1F27/7QP7L7mPt4+HgXk6rEeDwP65NXdY/dTjIWB+jQxGgQAJmkSBAAsSBQAiSBQITGvsp8vA1Ejeurk9YAsApcjnyAD6rQOm6bV/ZIB5PpdpD9D37gR/AuAnicacAi4EjwHYz9FAoOs/+Z8Cf3jP0UDAKQCQbBmg698qcClkC4Hi/cEApfuDAfh/7fbfIWB6zP2BfuowLzngJ6iNE5cDfgbbxirwoRH0gUEFPjTEHhhQ8AxT5MoKbgECigopAQ5tSSE1wkBBEVpEYp8rQg8JkCm0hsLgpAotsgAkithjOnpWEZtQAXuosQjj8KICqjQCoMAmhfGPCuzizVRxtczr66C6UOoriRT9mKXmFetWkC5W111WkAKu/exe3YXbf/vAgSvu483DYWDBX7JmHwwCB/70X3dYp3/3cAhYeELHbRQIkKBJFAiwIFEAIIJEgcBJjf2FMnBiJG/d5T1gCwClyOfIAPqtA07S6+wDAyzwBf6CB+h7d4I/AvCjROOyAi4EDwE4wNFAoDt98T8K/PkdRwMBpwBAsmWA7vQbBa6EbCFQvD8YoHR/MAD/r93+OwScHHN/oJ86zEsO+Alq48TlgJ/BtrEKfGgEfWBQgQ8NsQcGFDzDFLmygluAgKJCSoBDW1JIjTBQUIQWkdjnitBDAmQKraEwOKlCiywAiSL2mI6eVcQmVMAeaizCOLyogCqNACiwSWH8owK7eDNVXC3z+jqoLpT6SiJFP2apecW6FaSL1XWXFaSAaz+7V3fh9t8+cPCa+3h9fxhY9Jes+XuDwMG//tsd1pnf3x8CFh/RcRsFAiRoEgUCLEgUAIggUSAwpbGfKwPHR/LWXd0DtgBQinyODKDfOmCKXufvGWCRL/BzHqDv3Qn+AMAPEo2rCrgQ3AfgIEcDge7MpX8p8PlbjgYCTgGAZMsA3ZnXClwL2UKgeH8wQOn+YAD+X7v9dwiYGnN/oJ86zEsO+Alq48TlgJ/BtrEKfGgEfWBQgQ8NsQcGFDzDFLmygluAgKJCSoBDW1JIjTBQUIQWkdjnitBDAmQKraEwOKlCiywAiSL2mI6eVcQmVMAeaizCOLyogCqNACiwSWH8owK7eDNVXC3z+jqoLpT6SiJFP2apecW6FaSL1XWXFaSAaz+7V3fh9t8+cGjJfby6PQws+0vWws1B4NAX/3SHdfaPt4eA5Qd03EaBAAmaRIEACxIFACJIFAic0NhfLgPHRvLW3dgDtgBQinyODKDfOuAEvS7cNMAyX+Ave4C+dyd4B4A7Eo0bCrgQ3AbgEEcDge7slX8o8OUbjgYCTgGAZMsA3dlXCiyFbCFQvD8YoHR/MAD/r93+OwRo2nOgp586zEsO+Alq48TlgJ/BtrEKfGgEfWBQgQ8NsQcGFDzDFLmygluAgKJCSoBDW1JIjTBQUIQWkdjnitBDAmQKraEwOKlCiywAiSL2mI6eVcQmVMAeaizCOLyogCqNACiwSWH8owK7eDNVXC3z+jqoLpT6SiJFP2apecW6FaSL1XWXFaSAaz+7V3fh9t8+cHjFfbxcGQZW/SVr8atB4PDfvneHde4vK0PA6j06bqNAgARNokCABYkCABEkCgSOa+yvloGPR/LWfbMHbAE4zH+8XDGAfuuA4/S6+JUBVvkCf9UD9L07wVUAViUa3yjgQrACwGGOBgLduWvfKfD31xwNBJwCAMmWAbpzLxVYCdlCoHh/MEDp/mAA/l+7/XcIOD7m/kA/dZiXHPAT1MaJywE/g21jFfjQCPrAoAIfGmIPDCh4hilyZQW3AAFFhZQAh7akkBphoKAILSKxzxWhhwTIFFpDYXBShRZZABJF7DEdPauITaiAPdRYhHF4UQFVGgFQYJPC+EcFdvFmqrha5vV1UF0o9ZVEin7MUvOKdStIF6vrLitIAdd+dq/uwu2/feCIvyK9WBoG7vpL1vL1QeDIzVvusM5fXxoC7t6k4zYKBEjQJAoEWJAoABBBokDgmMb+Rhn47Ujeult7wBaAI3zRfrFkAP3WAcfodfm6Ae7yBf6GB+h7d4JfA/C1ROOWAi4ESwAc4Wgg0J1f+laBO684Ggg4BQCSLQN0518ocDtkC4Hi/cEApfuDAfh/7fbfIeDYmPsD/dRhXnLAT1AbJy4H/Ay2jVXgQyPoA4MKfGiIPTCg4BmmyJUV3AIEFBVSAhzakkJqhIGCIrSIxD5XhB4SIFNoDYXBSRVaZAFIFLHHdPSsIjahAvZQYxHG4UUFVGkEQIFNCuMfFdjFm6niapnX10F1odRXEin6MUvNK9atIF2srrusIAVc+9m9Wl/NvwJJIwFbHuLc4AAAAABJRU5ErkJggg==",v="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAMAAABbYT+NAAAAOVBMVEUAAAAAAAAICAgoKChAQEBfAABvAACRAACYmJieAACoqKi4uLi7AADQ0NDRAADg4ODpAADw8PD////pSTDZAAAAAXRSTlMAQObYZgAAATxJREFUeNrt2EGOgzAMQNGxSVxI0hK4/2Fnokx7AHuBVP7bf0W2WgT5AQAAAAAAAAAAAAAAAAAAAAAAAPB9ZLhrTy+q2bKKBPoc6SXcD9Hz4/Nftv8lpbQEelv3Y19NxdnnXmrp2d+33ntz96K2bZupBM+Pz3/R/lP560savYfa8xyeJr4+r3VYs3OA/OrDy9vrow0PjZ8fn9+//+rdf5r9M3n3t57TquLqe526s299as7e2mTR8+PzX7H/pZxTWcT3B9jPac/i6kudirPvb75etzZtGjw/Pv8V+0+fPvl+AHac02G+Aerb/X4A8fnj+0+fPvEE4AnAOwDvAP6vAA2+BevNvwLUuf96DtU0+BWg3ANwD+AhEryJkjvfBMb7+P7/bwK5C6cHAAAAAAAAAAAAAAAAAAAAAADAl/kFHH4jM43eaVYAAAAASUVORK5CYII=",F="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABAAQMAAADoGO08AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAANlJREFUeNrN04GGpWAYBuAnIUAAH47ObRzE3lbABuxtBexttBYHsAF7MKYBL/LDYDA/eSjpy/u9vuiMx1X311XzfNUyXXWMV7t9WCHqt36DaFi7HaKBPX7nG8P5iz/nHo3nb/6eRzR1T57rEt38559HVH7yrqLygzcVlTsvFZWRQ0VlYFdR6dlUVDpWFRVQ0Q14RMk1Sq5Rco2Sa5RcIweMRAtMRDPMRBMsRCMcRMNKtxP12/WSp5G8H/OFmBlipoz5j9hscrPrbRvavrSNajvXtrLt7bCLnzkfnOqGiVWVifMAAAAASUVORK5CYII=",H="data:image/png;base64,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",M=B.from(F),U=Q(B.from(v),8,1,64,64)[0],m=Q(B.from(H),1,8,64,64),p=Q(B.from(d),1,8,64,64),u=Q(B.from(P),1,8,64,64),K=B.from(I),R=B.from(r),X={Left:90,Down:0,Up:180,Right:-90,UpLeft:135,UpRight:-135,DownRight:-45,DownLeft:45},L=["Receptor","Tap","Lift","Fake","Hold Inactive Head","Hold Active Head","Roll Inactive Head","Roll Active Head","NoteFlash"],Y={elements:{Left:{Receptor:o=>{let e;const A=new i(Q(M,2,1,64,64)[0]);return A.width=64,A.height=64,A.anchor.set(.5),o.noteskin.on(A,"ghosttap",g=>{g.columnNumber==o.columnNumber&&(a.finish(e),e=a.animate(A,{0:{alpha:1.2,width:48,height:48},1:{alpha:1,width:64,height:64}},.06))}),o.noteskin.onUpdate(A,g=>{const t=(g.getVisualBeat()%1+1)%1;A.currentFrame=t<.2?0:1}),A},Tap:o=>{const e=m[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(o.note?.quant??4)??0,7)],A=new C(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},NoteFlash:o=>new c(o.noteskin,o.columnNumber),Fake:{element:"Tap"},Lift:o=>{const e=u[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(o.note?.quant??4)??0,7)],A=new C(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},Mine:o=>{const e=new i(U);return e.anchor.set(.5),e.width=64,e.height=64,o.noteskin.onUpdate(e,A=>e.currentFrame=Math.floor((A.getVisualBeat()%4+4)%4*2)),e},"Hold Active Head":o=>{const e=p[Math.min([4,8,12,16,24,32,48,64,96,192].indexOf(o.note?.quant??4)??0,7)],A=new C(e[0]);return A.anchor.set(.5),A.width=64,A.height=64,A},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":()=>new h(K),"Hold Inactive Body":{element:"Hold Active Body"},"Hold Active TopCap":()=>new C(B.EMPTY),"Hold Inactive TopCap":()=>new C(B.EMPTY),"Hold Active BottomCap":()=>new D(B.EMPTY),"Hold Inactive BottomCap":{element:"Hold Active BottomCap"},"Roll Active Head":{element:"Hold Active Head"},"Roll Inactive Head":{element:"Tap"},"Roll Active Body":()=>new h(R),"Roll Inactive Body":{element:"Roll Active Body"},"Roll Active TopCap":()=>new C(B.EMPTY),"Roll Inactive TopCap":()=>new C(B.EMPTY),"Roll Active BottomCap":()=>new D(B.EMPTY),"Roll Inactive BottomCap":{element:"Roll Active BottomCap"}}},load:function(o,e){const A=o.columnName;o.columnName="Left";const g=this.loadElement(o,e);return L.includes(o.element)&&(g.rotation=X[A]*Math.PI/180),g},hideIcons:["Lift"]};export{Y as default}; diff --git a/Noteskin-e7e2ba35.js b/Noteskin-b478a3ba.js similarity index 98% rename from Noteskin-e7e2ba35.js rename to Noteskin-b478a3ba.js index 23eb6326..04fa3eee 100644 --- a/Noteskin-e7e2ba35.js +++ b/Noteskin-b478a3ba.js @@ -1 +1 @@ -import{X as d,q as i,b as f,u,O as T,z as g,y as l,L as m,H as p,Y as R}from"./ChartManager-db54e716.js";import{A as w}from"./AnimatedSprite-ffeea718.js";import{A as U}from"./HoldBody-9276f45c.js";const L="/smeditor/assets/Center-1b6bfec9.png",y="/smeditor/assets/DownLeft-242c6bf3.png",B="/smeditor/assets/DownRight-a869fa38.png",M="/smeditor/assets/UpLeft-d457a441.png",O="/smeditor/assets/UpRight-fda6b516.png",I="/smeditor/assets/Center-cb4b6c25.png",E="/smeditor/assets/DownLeft-94341616.png",S="/smeditor/assets/DownRight-3c57e4fa.png",F="/smeditor/assets/UpLeft-752b6821.png",$="/smeditor/assets/UpRight-91e454bc.png",N="/smeditor/assets/Center-55e9b68a.png",P="/smeditor/assets/DownLeft-19d91486.png",V="/smeditor/assets/DownRight-e2cf2b7d.png",Y="/smeditor/assets/UpLeft-28515625.png",j="/smeditor/assets/UpRight-8a892589.png",v={},c=["DownLeft","UpLeft","Center","UpRight","DownRight"];for(const t of c)v[t]=d(i.from(new URL(Object.assign({"./tap/Center.png":I,"./tap/DownLeft.png":E,"./tap/DownRight.png":S,"./tap/UpLeft.png":F,"./tap/UpRight.png":$})[`./tap/${t}.png`],self.location).href),3,2,96,96).flat();const D={};for(const t of c)D[t]=d(i.from(new URL(Object.assign({"./roll/Center.png":N,"./roll/DownLeft.png":P,"./roll/DownRight.png":V,"./roll/UpLeft.png":Y,"./roll/UpRight.png":j})[`./roll/${t}.png`],self.location).href),3,2,96,96).flat();const k=d(i.from(new URL("/smeditor/assets/mine-0e34ec01.png",self.location).href),3,2,96,96).flat();class a{static noteTex;static noteContainer=new f;static rollTex;static rollContainer=new f;static mineTex;static mine;static loaded=!1;static async initArrowTex(){if(!this.loaded){a.noteTex=u.create({width:96*5,height:96,resolution:T.performance.resolution}),a.rollTex=u.create({width:96*5,height:96,resolution:T.performance.resolution}),a.mineTex=u.create({width:96,height:96,resolution:T.performance.resolution});for(const e of c)this.createSprite(this.noteContainer,e,v);for(const e of c)this.createSprite(this.rollContainer,e,D);this.mine=new w(k),this.loaded=!0}}static createSprite(e,o,n){const s=c.indexOf(o)*96,r=new w(n[o]);r.x=s,e.addChild(r)}static setArrowTexTime(e){if(!this.loaded)return;const o=e.chartManager.chartView.getVisualTime(),n=Math.floor((o%.3+.3)%.3/.3*6);this.noteContainer.children.forEach(s=>s.currentFrame=n),this.rollContainer.children.forEach(s=>s.currentFrame=n),this.mine.currentFrame=n,e.renderer.render(a.noteContainer,{renderTexture:a.noteTex}),e.renderer.render(a.rollContainer,{renderTexture:a.rollTex}),e.renderer.render(a.mine,{renderTexture:a.mineTex})}static setNoteTex(e,o,n){if(o===void 0)return i.WHITE;if(o.type=="Mine")e.texture=this.mineTex;else{const s=c.indexOf(n)*96;e.texture=new i(this.noteTex.baseTexture,new g(s,0,96,96))}}static setRollTex(e,o){const n=c.indexOf(o)*96;e.texture=new i(this.rollTex.baseTexture,new g(n,0,96,96))}}const W="/smeditor/assets/receptors-0a59df78.png",z="/smeditor/assets/flash-e524b5bd.png",q="/smeditor/assets/mine-590d445e.png",J="/smeditor/assets/press-feed8aa6.png",X=d(i.from(z),5,1,128,128)[0],G=i.from(q),C=d(i.from(J),5,2,96,96),K=["w0","w1","w2","w3"];class Q extends f{press;pressAnim;hitContainer=new f;tap;note;flash;hitAnim;anims=new Set;constructor(e,o,n){super();const s=1/1.5;this.press=new l(C[1][_.indexOf(o)]),this.press.alpha=0,this.press.anchor.set(.5),this.tap=new l(C[0][_.indexOf(o)]),this.tap.blendMode=m.ADD,this.tap.scale.set(s),this.tap.anchor.set(.5),this.note=new w(v[o]),this.note.scale.set(s),this.note.blendMode=m.ADD,this.note.animationSpeed=1/3,this.note.play(),this.note.anchor.set(.5),this.flash=new w(X),this.flash.scale.set(2),this.flash.blendMode=m.ADD,this.flash.animationSpeed=1/3,this.flash.loop=!1,this.flash.visible=!1,this.flash.anchor.set(.5),this.flash.onComplete=()=>{this.flash.visible=!1,this.flash.stop()},this.hitContainer.alpha=0,this.hitContainer.addChild(this.tap,this.note),e.on(this,"ghosttap",r=>{n==r.columnNumber&&(p.finish(this.pressAnim),this.pressAnim=p.animate(this.press,{0:{alpha:1,"scale.x":1*s,"scale.y":1*s},1:{alpha:0,"scale.x":1.3*s,"scale.y":1.3*s}},.25))}),e.on(this,"hit",r=>{if(n==r.columnNumber){if(!K.includes(r.judgement.id))return;p.finish(this.pressAnim),p.finish(this.hitAnim),this.hitAnim=p.animate(this.hitContainer,{0:{alpha:1,"scale.x":1,"scale.y":1},1:{alpha:0,"scale.x":1.2,"scale.y":1.2}},.4),this.flash.visible=!0,this.flash.currentFrame=0,this.flash.play()}}),e.on(this,"hitmine",r=>{if(n==r.columnNumber){const h=new l(G);h.alpha=0,h.anchor.set(.5),h.blendMode=m.ADD,this.addChild(h),p.animate(h,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>h.destroy())}}),this.addChild(this.press,this.hitContainer,this.flash)}}const A=d(i.from(W),5,2,96,96),_=["DownLeft","UpLeft","Center","UpRight","DownRight"],b={},x=96;for(const t of _){const e=i.from(new URL(Object.assign({"./hold/Center.png":L,"./hold/DownLeft.png":y,"./hold/DownRight.png":B,"./hold/UpLeft.png":M,"./hold/UpRight.png":O})[`./hold/${t}.png`],self.location).href),o=[],n=[];for(let s=0;s<6;s++)o.push(new i(e.baseTexture,new g(s*96,0,96,288-x))),n.push(new i(e.baseTexture,new g(s*96,288-x,96,x)));b[t]={body:o,cap:n}}const se={elements:{DownLeft:{Receptor:t=>{const e=new f,o=_.indexOf(t.columnName),n=new l(A[0][o]);n.width=72,n.height=72,n.anchor.set(.5);const s=new l(A[1][o]);return s.width=n.width,s.height=n.height,s.anchor.set(.5),s.blendMode=m.ADD,e.addChild(n,s),t.noteskin.onUpdate(e,r=>{const H=(r.getVisualBeat()%1+1)%1;s.alpha=(1-H)/2}),e},Tap:t=>{const e=new l(i.WHITE);return a.setNoteTex(e,t.note,t.columnName),e.anchor.set(.5),e.width=72,e.height=72,e},Fake:{element:"Tap"},Lift:{element:"Tap"},Mine:{element:"Tap"},NoteFlash:t=>new Q(t.noteskin,t.columnName,t.columnNumber),"Hold Active Head":{element:"Tap"},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":t=>{const e=new U(b[t.columnName].body,72);return t.noteskin.onUpdate(e,o=>{const n=o.getVisualTime(),s=Math.floor((n%.3+.3)%.3/.3*6);e.currentFrame=s}),e},"Hold Inactive Body":{element:"Hold Active Body"},"Hold Active TopCap":()=>new l(i.EMPTY),"Hold Inactive TopCap":()=>new l(i.EMPTY),"Hold Active BottomCap":t=>{const e=new R(b[t.columnName].cap,72);return t.noteskin.onUpdate(e,o=>{const n=o.getVisualTime(),s=Math.floor((n%.3+.3)%.3/.3*6);e.currentFrame=s}),e},"Hold Inactive BottomCap":{element:"Hold Active BottomCap"},"Roll Active Head":t=>{const e=new l(i.WHITE);return a.setRollTex(e,t.columnName),e.anchor.set(.5),e.width=72,e.height=72,e},"Roll Inactive Head":{element:"Roll Active Head"},"Roll Active Body":{element:"Hold Active Body"},"Roll Inactive Body":{element:"Hold Active Body"},"Roll Active TopCap":()=>new l(i.EMPTY),"Roll Inactive TopCap":()=>new l(i.EMPTY),"Roll Active BottomCap":{element:"Hold Active BottomCap"},"Roll Inactive BottomCap":{element:"Hold Active BottomCap"}}},load:function(t,e){return t.columnName="DownLeft",this.loadElement(t,e)},init(){a.initArrowTex()},update(t){a.setArrowTexTime(t.chartManager.app)},metrics:{HoldBodyBottomOffset:-36,RollBodyBottomOffset:-36}};export{se as default,_ as texOrder}; +import{X as d,q as i,b as f,u,O as T,z as g,y as l,L as m,H as p,Y as R}from"./ChartManager-b82bf91a.js";import{A as w}from"./AnimatedSprite-c4817119.js";import{A as U}from"./HoldBody-3932542e.js";const L="/smeditor/assets/Center-1b6bfec9.png",y="/smeditor/assets/DownLeft-242c6bf3.png",B="/smeditor/assets/DownRight-a869fa38.png",M="/smeditor/assets/UpLeft-d457a441.png",O="/smeditor/assets/UpRight-fda6b516.png",I="/smeditor/assets/Center-cb4b6c25.png",E="/smeditor/assets/DownLeft-94341616.png",S="/smeditor/assets/DownRight-3c57e4fa.png",F="/smeditor/assets/UpLeft-752b6821.png",$="/smeditor/assets/UpRight-91e454bc.png",N="/smeditor/assets/Center-55e9b68a.png",P="/smeditor/assets/DownLeft-19d91486.png",V="/smeditor/assets/DownRight-e2cf2b7d.png",Y="/smeditor/assets/UpLeft-28515625.png",j="/smeditor/assets/UpRight-8a892589.png",v={},c=["DownLeft","UpLeft","Center","UpRight","DownRight"];for(const t of c)v[t]=d(i.from(new URL(Object.assign({"./tap/Center.png":I,"./tap/DownLeft.png":E,"./tap/DownRight.png":S,"./tap/UpLeft.png":F,"./tap/UpRight.png":$})[`./tap/${t}.png`],self.location).href),3,2,96,96).flat();const D={};for(const t of c)D[t]=d(i.from(new URL(Object.assign({"./roll/Center.png":N,"./roll/DownLeft.png":P,"./roll/DownRight.png":V,"./roll/UpLeft.png":Y,"./roll/UpRight.png":j})[`./roll/${t}.png`],self.location).href),3,2,96,96).flat();const k=d(i.from(new URL("/smeditor/assets/mine-0e34ec01.png",self.location).href),3,2,96,96).flat();class a{static noteTex;static noteContainer=new f;static rollTex;static rollContainer=new f;static mineTex;static mine;static loaded=!1;static async initArrowTex(){if(!this.loaded){a.noteTex=u.create({width:96*5,height:96,resolution:T.performance.resolution}),a.rollTex=u.create({width:96*5,height:96,resolution:T.performance.resolution}),a.mineTex=u.create({width:96,height:96,resolution:T.performance.resolution});for(const e of c)this.createSprite(this.noteContainer,e,v);for(const e of c)this.createSprite(this.rollContainer,e,D);this.mine=new w(k),this.loaded=!0}}static createSprite(e,o,n){const s=c.indexOf(o)*96,r=new w(n[o]);r.x=s,e.addChild(r)}static setArrowTexTime(e){if(!this.loaded)return;const o=e.chartManager.chartView.getVisualTime(),n=Math.floor((o%.3+.3)%.3/.3*6);this.noteContainer.children.forEach(s=>s.currentFrame=n),this.rollContainer.children.forEach(s=>s.currentFrame=n),this.mine.currentFrame=n,e.renderer.render(a.noteContainer,{renderTexture:a.noteTex}),e.renderer.render(a.rollContainer,{renderTexture:a.rollTex}),e.renderer.render(a.mine,{renderTexture:a.mineTex})}static setNoteTex(e,o,n){if(o===void 0)return i.WHITE;if(o.type=="Mine")e.texture=this.mineTex;else{const s=c.indexOf(n)*96;e.texture=new i(this.noteTex.baseTexture,new g(s,0,96,96))}}static setRollTex(e,o){const n=c.indexOf(o)*96;e.texture=new i(this.rollTex.baseTexture,new g(n,0,96,96))}}const W="/smeditor/assets/receptors-0a59df78.png",z="/smeditor/assets/flash-e524b5bd.png",q="/smeditor/assets/mine-590d445e.png",J="/smeditor/assets/press-feed8aa6.png",X=d(i.from(z),5,1,128,128)[0],G=i.from(q),C=d(i.from(J),5,2,96,96),K=["w0","w1","w2","w3"];class Q extends f{press;pressAnim;hitContainer=new f;tap;note;flash;hitAnim;anims=new Set;constructor(e,o,n){super();const s=1/1.5;this.press=new l(C[1][_.indexOf(o)]),this.press.alpha=0,this.press.anchor.set(.5),this.tap=new l(C[0][_.indexOf(o)]),this.tap.blendMode=m.ADD,this.tap.scale.set(s),this.tap.anchor.set(.5),this.note=new w(v[o]),this.note.scale.set(s),this.note.blendMode=m.ADD,this.note.animationSpeed=1/3,this.note.play(),this.note.anchor.set(.5),this.flash=new w(X),this.flash.scale.set(2),this.flash.blendMode=m.ADD,this.flash.animationSpeed=1/3,this.flash.loop=!1,this.flash.visible=!1,this.flash.anchor.set(.5),this.flash.onComplete=()=>{this.flash.visible=!1,this.flash.stop()},this.hitContainer.alpha=0,this.hitContainer.addChild(this.tap,this.note),e.on(this,"ghosttap",r=>{n==r.columnNumber&&(p.finish(this.pressAnim),this.pressAnim=p.animate(this.press,{0:{alpha:1,"scale.x":1*s,"scale.y":1*s},1:{alpha:0,"scale.x":1.3*s,"scale.y":1.3*s}},.25))}),e.on(this,"hit",r=>{if(n==r.columnNumber){if(!K.includes(r.judgement.id))return;p.finish(this.pressAnim),p.finish(this.hitAnim),this.hitAnim=p.animate(this.hitContainer,{0:{alpha:1,"scale.x":1,"scale.y":1},1:{alpha:0,"scale.x":1.2,"scale.y":1.2}},.4),this.flash.visible=!0,this.flash.currentFrame=0,this.flash.play()}}),e.on(this,"hitmine",r=>{if(n==r.columnNumber){const h=new l(G);h.alpha=0,h.anchor.set(.5),h.blendMode=m.ADD,this.addChild(h),p.animate(h,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>h.destroy())}}),this.addChild(this.press,this.hitContainer,this.flash)}}const A=d(i.from(W),5,2,96,96),_=["DownLeft","UpLeft","Center","UpRight","DownRight"],b={},x=96;for(const t of _){const e=i.from(new URL(Object.assign({"./hold/Center.png":L,"./hold/DownLeft.png":y,"./hold/DownRight.png":B,"./hold/UpLeft.png":M,"./hold/UpRight.png":O})[`./hold/${t}.png`],self.location).href),o=[],n=[];for(let s=0;s<6;s++)o.push(new i(e.baseTexture,new g(s*96,0,96,288-x))),n.push(new i(e.baseTexture,new g(s*96,288-x,96,x)));b[t]={body:o,cap:n}}const se={elements:{DownLeft:{Receptor:t=>{const e=new f,o=_.indexOf(t.columnName),n=new l(A[0][o]);n.width=72,n.height=72,n.anchor.set(.5);const s=new l(A[1][o]);return s.width=n.width,s.height=n.height,s.anchor.set(.5),s.blendMode=m.ADD,e.addChild(n,s),t.noteskin.onUpdate(e,r=>{const H=(r.getVisualBeat()%1+1)%1;s.alpha=(1-H)/2}),e},Tap:t=>{const e=new l(i.WHITE);return a.setNoteTex(e,t.note,t.columnName),e.anchor.set(.5),e.width=72,e.height=72,e},Fake:{element:"Tap"},Lift:{element:"Tap"},Mine:{element:"Tap"},NoteFlash:t=>new Q(t.noteskin,t.columnName,t.columnNumber),"Hold Active Head":{element:"Tap"},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":t=>{const e=new U(b[t.columnName].body,72);return t.noteskin.onUpdate(e,o=>{const n=o.getVisualTime(),s=Math.floor((n%.3+.3)%.3/.3*6);e.currentFrame=s}),e},"Hold Inactive Body":{element:"Hold Active Body"},"Hold Active TopCap":()=>new l(i.EMPTY),"Hold Inactive TopCap":()=>new l(i.EMPTY),"Hold Active BottomCap":t=>{const e=new R(b[t.columnName].cap,72);return t.noteskin.onUpdate(e,o=>{const n=o.getVisualTime(),s=Math.floor((n%.3+.3)%.3/.3*6);e.currentFrame=s}),e},"Hold Inactive BottomCap":{element:"Hold Active BottomCap"},"Roll Active Head":t=>{const e=new l(i.WHITE);return a.setRollTex(e,t.columnName),e.anchor.set(.5),e.width=72,e.height=72,e},"Roll Inactive Head":{element:"Roll Active Head"},"Roll Active Body":{element:"Hold Active Body"},"Roll Inactive Body":{element:"Hold Active Body"},"Roll Active TopCap":()=>new l(i.EMPTY),"Roll Inactive TopCap":()=>new l(i.EMPTY),"Roll Active BottomCap":{element:"Hold Active BottomCap"},"Roll Inactive BottomCap":{element:"Hold Active BottomCap"}}},load:function(t,e){return t.columnName="DownLeft",this.loadElement(t,e)},init(){a.initArrowTex()},update(t){a.setArrowTexTime(t.chartManager.app)},metrics:{HoldBodyBottomOffset:-36,RollBodyBottomOffset:-36}};export{se as default,_ as texOrder}; diff --git a/Noteskin-3fe335eb.js b/Noteskin-bc6bd632.js similarity index 98% rename from Noteskin-3fe335eb.js rename to Noteskin-bc6bd632.js index b52ba67b..180fc41c 100644 --- a/Noteskin-3fe335eb.js +++ b/Noteskin-bc6bd632.js @@ -1 +1 @@ -import{q as i,X as b,b as g,y as l,L as B,H as r,J as A,O as y,u as I,z as R,Q as v}from"./ChartManager-db54e716.js";import{A as u}from"./AnimatedSprite-ffeea718.js";import{T as $,H as f}from"./HoldBody-9276f45c.js";const M="/smeditor/assets/active-d06e5c33.png",U="/smeditor/assets/downBodyActive-8cf886d3.png",F="/smeditor/assets/downBodyInactive-7465edd0.png",L="/smeditor/assets/downBottomCapActive-b10d1f0d.png",k="/smeditor/assets/downBottomCapInactive-12cafebe.png",P="/smeditor/assets/inactive-a4aecb82.png",O="/smeditor/assets/leftBodyActive-5d89f111.png",D="/smeditor/assets/leftBodyInactive-1110dc77.png",S="/smeditor/assets/leftBottomCapActive-f759c91c.png",j="/smeditor/assets/leftBottomCapInactive-a4ac7bba.png",V="/smeditor/assets/rightBodyActive-8af7624b.png",z="/smeditor/assets/rightBodyInactive-695480aa.png",Y="/smeditor/assets/rightBottomCapActive-6edeea1e.png",X="/smeditor/assets/rightBottomCapInactive-d674960e.png",q="/smeditor/assets/upBodyActive-c813881f.png",J="/smeditor/assets/upBodyInactive-0222237a.png",Q="/smeditor/assets/upBottomCapActive-19e4c05d.png",W="/smeditor/assets/upBottomCapInactive-23aae747.png",G="/smeditor/assets/active-29dd632a.png",K="/smeditor/assets/downBodyActive-77f6502e.png",Z="/smeditor/assets/downBodyInactive-a5759c62.png",tt="/smeditor/assets/downBottomCapActive-57ef4d54.png",et="/smeditor/assets/downBottomCapInactive-13ddf252.png",ot="/smeditor/assets/inactive-48f23de3.png",st="/smeditor/assets/leftBodyActive-fd4e902b.png",at="/smeditor/assets/leftBodyInactive-8fe6311e.png",nt="/smeditor/assets/leftBottomCapActive-057c49fb.png",it="/smeditor/assets/leftBottomCapInactive-df6350c7.png",ct="/smeditor/assets/rightBodyActive-751fadec.png",lt="/smeditor/assets/rightBodyInactive-46202369.png",rt="/smeditor/assets/rightBottomCapActive-a736d803.png",dt="/smeditor/assets/rightBottomCapInactive-a64cea2c.png",pt="/smeditor/assets/upBodyActive-b06d82f3.png",ht="/smeditor/assets/upBodyInactive-4ef75342.png",mt="/smeditor/assets/upBottomCapActive-07fb7c6e.png",_t="/smeditor/assets/upBottomCapInactive-75f78aac.png",gt="/smeditor/assets/hold-4cf23d59.png",vt="/smeditor/assets/mine-f6147b04.png",ft="/smeditor/assets/particles-18ec6c1d.png",wt="/smeditor/assets/w0-6f86addb.png",ut="/smeditor/assets/w1-c8c43b0f.png",bt="/smeditor/assets/w2-37282ba8.png",Bt="/smeditor/assets/w3-3c2ca2d8.png",At="/smeditor/assets/w4-ce0f95de.png",yt="/smeditor/assets/w5-23173d4f.png",Ct="/smeditor/assets/hold-4cf23d59.png",xt="/smeditor/assets/mine-f6147b04.png",It="/smeditor/assets/particles-18ec6c1d.png",Tt=i.from(Ct),Nt=b(i.from(xt),16,1,160,1024)[0],Ht=i.from(It),N=["w0","w1","w2","w3","w4","w5"],H={};N.forEach(t=>H[t]=i.from(new URL(Object.assign({"./flash/hold.png":gt,"./flash/mine.png":vt,"./flash/particles.png":ft,"./flash/w0.png":wt,"./flash/w1.png":ut,"./flash/w2.png":bt,"./flash/w3.png":Bt,"./flash/w4.png":At,"./flash/w5.png":yt})[`./flash/${t}.png`],self.location).href));class Et extends g{holdExplosion=new l(Tt);particles=new l(Ht);mine=new u(Nt);standard={};anims=new Set;particleAnim;mineAnim;constructor(e,s,n){super();const a=.5;N.forEach(o=>{const c=new l(H[o]);c.anchor.set(.5),c.alpha=0,c.blendMode=B.ADD,this.standard[o]=c,this.addChild(c)}),e.on(this,"hit",o=>{if(s==o.columnNumber){const c=this.standard[o.judgement.id];if(!c)return;this.anims.forEach(d=>r.finish(d)),this.anims.clear(),this.anims.add(r.animate(c,{0:{alpha:.875,"scale.x":.8*a,"scale.y":.8*a},"0.5":{alpha:.875,"scale.x":1.1*a,"scale.y":1.1*a},1:{alpha:0,"scale.x":1.1*a,"scale.y":1.1*a}},.12))}}),e.on(this,"held",o=>{s==o.columnNumber&&(this.anims.forEach(c=>r.finish(c)),this.anims.clear(),this.anims.add(r.animate(this.standard.w0,{0:{alpha:.875,"scale.x":.8*a,"scale.y":.8*a},"0.5":{alpha:.875,"scale.x":1.1*a,"scale.y":1.1*a},1:{alpha:0,"scale.x":1.1*a,"scale.y":1.1*a}},.12)))}),e.on(this,"holdon",o=>{s==o.columnNumber&&(this.holdExplosion.visible=!0)}),e.on(this,"holdoff",o=>{s==o.columnNumber&&(this.holdExplosion.visible=!1)}),e.on(this,"rollon",o=>{s==o.columnNumber&&(this.holdExplosion.visible=!0)}),e.on(this,"rolloff",o=>{s==o.columnNumber&&(this.holdExplosion.visible=!1)}),e.onUpdate(this,()=>{this.holdExplosion.alpha=Math.sin(Date.now()/1e3*Math.PI*2*20)*.1+1}),this.holdExplosion.visible=!1,this.holdExplosion.anchor.set(.5),this.holdExplosion.scale.set(.5),this.addChild(this.holdExplosion),this.particles.alpha=0,this.particles.blendMode=B.ADD,this.particles.anchor.set(.5),e.on(this,"hit",o=>{if(s==o.columnNumber){if(this.particles.rotation=Math.random()*Math.PI*2,r.finish(this.particleAnim),!["w0","w1","w2","w3"].includes(o.judgement.id))return;this.particleAnim=r.animate(this.particles,{0:{alpha:.6,"scale.x":1*a,"scale.y":1*a},"0.7":{alpha:.6,"scale.x":1.2*a,"scale.y":1.2*a},1:{alpha:0,"scale.x":1.2*a,"scale.y":1.2*a}},.185,A(.16,.73,.63,.75))}}),this.addChild(this.particles),this.mine.anchor.x=.5,this.mine.scale.set(.5),this.mine.rotation=-C[n]*Math.PI/180,this.mine.animationSpeed=1/3,this.mine.alpha=0,this.addChild(this.mine),e.on(this,"hitmine",o=>{s==o.columnNumber&&(r.finish(this.mineAnim),this.mine.anchor.y=y.chart.reverse?1:0,this.mine.currentFrame=0,this.mine.play(),this.mineAnim=r.animate(this.mine,{0:{alpha:1},"0.5":{alpha:1},1:{alpha:0}},.6))})}}const Rt="/smeditor/assets/colors-63f923d2.png",$t="/smeditor/assets/mask-f1b4d033.png",Mt="/smeditor/assets/note-07e5d79f.png",Ut="/smeditor/assets/outline-72e881a7.png",Ft="/smeditor/assets/stroke-1f54ba14.png",Lt="/smeditor/assets/top-74da30ae.png",_={};["colors","mask","note","outline","stroke","top"].forEach(t=>_[t]=i.from(new URL(Object.assign({"./tap/colors.png":Rt,"./tap/mask.png":$t,"./tap/note.png":Mt,"./tap/outline.png":Ut,"./tap/stroke.png":Ft,"./tap/top.png":Lt})[`./tap/${t}.png`],self.location).href));const kt=b(_.top,4,1,384,384)[0],T=[-80,0,80];class p{static arrowFrameTex;static arrowFrameContainer=new g;static arrowTex;static arrowContainer=new g;static loaded=!1;static async initArrowTex(){if(!this.loaded){p.arrowFrameTex=I.create({width:64,height:64,resolution:y.performance.resolution}),p.arrowTex=I.create({width:64*3,height:64,resolution:y.performance.resolution});{const e=new l(_.note);e.width=64,e.height=64;const s=new l(_.outline);s.width=64,s.height=64;const n=new l(_.stroke);n.width=64,n.height=64,this.arrowFrameContainer.addChild(e,s,n)}for(let e=0;e<3;e++){const s=new l(this.arrowFrameTex);s.x=e*64;const n=new l(_.mask);n.scale.set(1/6),n.x=e*64,n.y=32,n.anchor.y=.5,n.alpha=1;const a=new $(_.colors,256,1024);a.tileScale.y=1/4,a.uvRespectAnchor=!0,a.x=e*64,a.y=32,a.tilePosition.y=128+T[e],a.anchor.y=.5,a.height=64,a.width=64,a.alpha=1,a.mask=n,a.name="c"+e;const o=new u(kt);o.scale.set(1/6),o.x=e*64,o.y=32,o.anchor.y=.5,o.alpha=1,o.name="t"+e,this.arrowContainer.addChild(s,a,n,o)}this.loaded=!0}}static setArrowTexTime(e){if(!this.loaded)return;const s=e.chartManager.chartView.getVisualBeat(),n=(s%1+1)%1,a=(s%4+4)%4;for(let o=0;o<3;o++)this.arrowContainer.getChildByName("c"+o).tilePosition.y=128+T[o]-a/4*256,this.arrowContainer.getChildByName("t"+o).currentFrame=Math.floor(n*4);e.renderer.render(p.arrowFrameContainer,{renderTexture:p.arrowFrameTex}),e.renderer.render(p.arrowContainer,{renderTexture:p.arrowTex})}static setNoteTex(e,s){let n=[4,8].indexOf(s?.quant??4);n==-1&&(n=2),e.texture=new i(p.arrowTex.baseTexture,new R(n*64,0,64,64))}}const Pt="/smeditor/assets/mine-335f4545.png",Ot="/smeditor/assets/spark-2c59cc0e.png",Dt="/smeditor/assets/receptor-a0a69b2b.png",St="/smeditor/assets/receptorFlash-c7675c53.png",jt=i.from(Dt),Vt=i.from(St),zt=i.from(Pt),Yt=b(i.from(Ot),4,4,160,128).flat(),Xt={Left:0,Down:5,Up:8,Right:13},h={},m={},w={Hold:{Active:i.from(new URL("/smeditor/assets/active-d06e5c33.png",self.location).href),Inactive:i.from(new URL("/smeditor/assets/inactive-a4aecb82.png",self.location).href)},Roll:{Active:i.from(new URL("/smeditor/assets/active-29dd632a.png",self.location).href),Inactive:i.from(new URL("/smeditor/assets/inactive-48f23de3.png",self.location).href)}};for(const t of["Left","Down","Up","Right"])for(const e of["Body","BottomCap"])for(const s of["Active","Inactive"])h[t]===void 0&&(h[t]={}),h[t][s]===void 0&&(h[t][s]={}),h[t][s][e]=i.from(new URL(Object.assign({"./hold/active.png":M,"./hold/downBodyActive.png":U,"./hold/downBodyInactive.png":F,"./hold/downBottomCapActive.png":L,"./hold/downBottomCapInactive.png":k,"./hold/inactive.png":P,"./hold/leftBodyActive.png":O,"./hold/leftBodyInactive.png":D,"./hold/leftBottomCapActive.png":S,"./hold/leftBottomCapInactive.png":j,"./hold/rightBodyActive.png":V,"./hold/rightBodyInactive.png":z,"./hold/rightBottomCapActive.png":Y,"./hold/rightBottomCapInactive.png":X,"./hold/upBodyActive.png":q,"./hold/upBodyInactive.png":J,"./hold/upBottomCapActive.png":Q,"./hold/upBottomCapInactive.png":W})[`./hold/${t.toLowerCase()}${e}${s}.png`],self.location).href),m[t]===void 0&&(m[t]={}),m[t][s]===void 0&&(m[t][s]={}),m[t][s][e]=i.from(new URL(Object.assign({"./roll/active.png":G,"./roll/downBodyActive.png":K,"./roll/downBodyInactive.png":Z,"./roll/downBottomCapActive.png":tt,"./roll/downBottomCapInactive.png":et,"./roll/inactive.png":ot,"./roll/leftBodyActive.png":st,"./roll/leftBodyInactive.png":at,"./roll/leftBottomCapActive.png":nt,"./roll/leftBottomCapInactive.png":it,"./roll/rightBodyActive.png":ct,"./roll/rightBodyInactive.png":lt,"./roll/rightBottomCapActive.png":rt,"./roll/rightBottomCapInactive.png":dt,"./roll/upBodyActive.png":pt,"./roll/upBodyInactive.png":ht,"./roll/upBottomCapActive.png":mt,"./roll/upBottomCapInactive.png":_t})[`./roll/${t.toLowerCase()}${e}${s}.png`],self.location).href);const C={Left:90,Down:0,Up:180,Right:-90},qt=["Receptor","Tap","Lift","Fake","Hold Inactive Head","Hold Active Head","Roll Inactive Head","Roll Active Head","NoteFlash"],Gt={elements:{Left:{Receptor:t=>{let e,s;const n=b(jt,2,1,404,404),a=new g,o=new u(n[0]);o.width=64,o.height=64,o.anchor.set(.5),t.noteskin.on(o,"ghosttap",d=>{d.columnNumber==t.columnNumber&&(r.finish(e),e=r.animate(o,{0:{alpha:.9,width:.85*64,height:.85*64},1:{alpha:1,width:64,height:64}},.11))});const c=new l(Vt);return c.blendMode=B.ADD,c.width=64,c.height=64,c.anchor.set(.5),c.alpha=0,t.noteskin.on(a,"press",d=>{d.columnNumber==t.columnNumber&&(r.finish(s),s=r.animate(c,{0:{alpha:0,width:.85*64,height:.85*64},1:{alpha:.6,width:64,height:64}},.12,A(.5,1,.89,1)))}),t.noteskin.on(a,"lift",d=>{d.columnNumber==t.columnNumber&&(r.finish(s),s=r.animate(c,{0:{alpha:"inherit",width:"inherit",height:"inherit"},1:{alpha:0,width:64*1.2,height:64}},.12,A(.11,0,.5,1)))}),t.noteskin.onUpdate(a,d=>{const x=d.chart.getNotedata()[0]?.beat;if(x===void 0||d.getVisualBeat(){const e=new l(i.WHITE);return p.setNoteTex(e,t.note),e.anchor.set(.5),e},NoteFlash:t=>new Et(t.noteskin,t.columnNumber,t.columnName),Fake:{element:"Tap"},Lift:{element:"Tap"},Mine:t=>{const e=new g,s=new l(zt);s.anchor.set(.5),s.width=64,s.height=64,s.rotation=C[t.columnName]*Math.PI/180;const n=new u(Yt);return n.anchor.set(.5),n.scale.set(.5),e.addChild(s,n),t.noteskin.onUpdate(e,a=>{const o=a.getVisualTime();n.currentFrame=((Math.floor(o*20)+Xt[t.columnName])%16+16)%16}),e},"Hold Active Head":()=>{const t=new l(w.Hold.Active);return t.anchor.set(.5),t.scale.set(1/6),t},"Hold Inactive Head":()=>{const t=new l(w.Hold.Inactive);return t.anchor.set(.5),t.scale.set(1/6),t},"Hold Active Body":t=>new f(h[t.columnName].Active.Body),"Hold Inactive Body":t=>new f(h[t.columnName].Inactive.Body),"Hold Active TopCap":()=>new l(i.EMPTY),"Hold Inactive TopCap":()=>new l(i.EMPTY),"Hold Active BottomCap":t=>new v(h[t.columnName].Active.BottomCap),"Hold Inactive BottomCap":t=>new v(h[t.columnName].Inactive.BottomCap),"Roll Active Head":()=>{const t=new l(w.Roll.Active);return t.anchor.set(.5),t.scale.set(1/6),t},"Roll Inactive Head":()=>{const t=new l(w.Roll.Inactive);return t.anchor.set(.5),t.scale.set(1/6),t},"Roll Active Body":t=>new f(m[t.columnName].Active.Body),"Roll Inactive Body":t=>new f(m[t.columnName].Inactive.Body),"Roll Active TopCap":()=>new l(i.EMPTY),"Roll Inactive TopCap":()=>new l(i.EMPTY),"Roll Active BottomCap":t=>new v(m[t.columnName].Active.BottomCap),"Roll Inactive BottomCap":t=>new v(m[t.columnName].Inactive.BottomCap)}},load:function(t,e){const s=t.columnName;t.columnName="Left";const n=this.loadElement(t,e);return qt.includes(t.element)&&(n.rotation=C[s]*Math.PI/180),n},init(){p.initArrowTex()},update(t){p.setArrowTexTime(t.chartManager.app)},metrics:{HoldBodyBottomOffset:-16,RollBodyBottomOffset:-16}};export{Gt as default,C as rotationMap}; +import{q as i,X as b,b as g,y as l,L as B,H as r,J as A,O as y,u as I,z as R,Q as v}from"./ChartManager-b82bf91a.js";import{A as u}from"./AnimatedSprite-c4817119.js";import{T as $,H as f}from"./HoldBody-3932542e.js";const M="/smeditor/assets/active-d06e5c33.png",U="/smeditor/assets/downBodyActive-8cf886d3.png",F="/smeditor/assets/downBodyInactive-7465edd0.png",L="/smeditor/assets/downBottomCapActive-b10d1f0d.png",k="/smeditor/assets/downBottomCapInactive-12cafebe.png",P="/smeditor/assets/inactive-a4aecb82.png",O="/smeditor/assets/leftBodyActive-5d89f111.png",D="/smeditor/assets/leftBodyInactive-1110dc77.png",S="/smeditor/assets/leftBottomCapActive-f759c91c.png",j="/smeditor/assets/leftBottomCapInactive-a4ac7bba.png",V="/smeditor/assets/rightBodyActive-8af7624b.png",z="/smeditor/assets/rightBodyInactive-695480aa.png",Y="/smeditor/assets/rightBottomCapActive-6edeea1e.png",X="/smeditor/assets/rightBottomCapInactive-d674960e.png",q="/smeditor/assets/upBodyActive-c813881f.png",J="/smeditor/assets/upBodyInactive-0222237a.png",Q="/smeditor/assets/upBottomCapActive-19e4c05d.png",W="/smeditor/assets/upBottomCapInactive-23aae747.png",G="/smeditor/assets/active-29dd632a.png",K="/smeditor/assets/downBodyActive-77f6502e.png",Z="/smeditor/assets/downBodyInactive-a5759c62.png",tt="/smeditor/assets/downBottomCapActive-57ef4d54.png",et="/smeditor/assets/downBottomCapInactive-13ddf252.png",ot="/smeditor/assets/inactive-48f23de3.png",st="/smeditor/assets/leftBodyActive-fd4e902b.png",at="/smeditor/assets/leftBodyInactive-8fe6311e.png",nt="/smeditor/assets/leftBottomCapActive-057c49fb.png",it="/smeditor/assets/leftBottomCapInactive-df6350c7.png",ct="/smeditor/assets/rightBodyActive-751fadec.png",lt="/smeditor/assets/rightBodyInactive-46202369.png",rt="/smeditor/assets/rightBottomCapActive-a736d803.png",dt="/smeditor/assets/rightBottomCapInactive-a64cea2c.png",pt="/smeditor/assets/upBodyActive-b06d82f3.png",ht="/smeditor/assets/upBodyInactive-4ef75342.png",mt="/smeditor/assets/upBottomCapActive-07fb7c6e.png",_t="/smeditor/assets/upBottomCapInactive-75f78aac.png",gt="/smeditor/assets/hold-4cf23d59.png",vt="/smeditor/assets/mine-f6147b04.png",ft="/smeditor/assets/particles-18ec6c1d.png",wt="/smeditor/assets/w0-6f86addb.png",ut="/smeditor/assets/w1-c8c43b0f.png",bt="/smeditor/assets/w2-37282ba8.png",Bt="/smeditor/assets/w3-3c2ca2d8.png",At="/smeditor/assets/w4-ce0f95de.png",yt="/smeditor/assets/w5-23173d4f.png",Ct="/smeditor/assets/hold-4cf23d59.png",xt="/smeditor/assets/mine-f6147b04.png",It="/smeditor/assets/particles-18ec6c1d.png",Tt=i.from(Ct),Nt=b(i.from(xt),16,1,160,1024)[0],Ht=i.from(It),N=["w0","w1","w2","w3","w4","w5"],H={};N.forEach(t=>H[t]=i.from(new URL(Object.assign({"./flash/hold.png":gt,"./flash/mine.png":vt,"./flash/particles.png":ft,"./flash/w0.png":wt,"./flash/w1.png":ut,"./flash/w2.png":bt,"./flash/w3.png":Bt,"./flash/w4.png":At,"./flash/w5.png":yt})[`./flash/${t}.png`],self.location).href));class Et extends g{holdExplosion=new l(Tt);particles=new l(Ht);mine=new u(Nt);standard={};anims=new Set;particleAnim;mineAnim;constructor(e,s,n){super();const a=.5;N.forEach(o=>{const c=new l(H[o]);c.anchor.set(.5),c.alpha=0,c.blendMode=B.ADD,this.standard[o]=c,this.addChild(c)}),e.on(this,"hit",o=>{if(s==o.columnNumber){const c=this.standard[o.judgement.id];if(!c)return;this.anims.forEach(d=>r.finish(d)),this.anims.clear(),this.anims.add(r.animate(c,{0:{alpha:.875,"scale.x":.8*a,"scale.y":.8*a},"0.5":{alpha:.875,"scale.x":1.1*a,"scale.y":1.1*a},1:{alpha:0,"scale.x":1.1*a,"scale.y":1.1*a}},.12))}}),e.on(this,"held",o=>{s==o.columnNumber&&(this.anims.forEach(c=>r.finish(c)),this.anims.clear(),this.anims.add(r.animate(this.standard.w0,{0:{alpha:.875,"scale.x":.8*a,"scale.y":.8*a},"0.5":{alpha:.875,"scale.x":1.1*a,"scale.y":1.1*a},1:{alpha:0,"scale.x":1.1*a,"scale.y":1.1*a}},.12)))}),e.on(this,"holdon",o=>{s==o.columnNumber&&(this.holdExplosion.visible=!0)}),e.on(this,"holdoff",o=>{s==o.columnNumber&&(this.holdExplosion.visible=!1)}),e.on(this,"rollon",o=>{s==o.columnNumber&&(this.holdExplosion.visible=!0)}),e.on(this,"rolloff",o=>{s==o.columnNumber&&(this.holdExplosion.visible=!1)}),e.onUpdate(this,()=>{this.holdExplosion.alpha=Math.sin(Date.now()/1e3*Math.PI*2*20)*.1+1}),this.holdExplosion.visible=!1,this.holdExplosion.anchor.set(.5),this.holdExplosion.scale.set(.5),this.addChild(this.holdExplosion),this.particles.alpha=0,this.particles.blendMode=B.ADD,this.particles.anchor.set(.5),e.on(this,"hit",o=>{if(s==o.columnNumber){if(this.particles.rotation=Math.random()*Math.PI*2,r.finish(this.particleAnim),!["w0","w1","w2","w3"].includes(o.judgement.id))return;this.particleAnim=r.animate(this.particles,{0:{alpha:.6,"scale.x":1*a,"scale.y":1*a},"0.7":{alpha:.6,"scale.x":1.2*a,"scale.y":1.2*a},1:{alpha:0,"scale.x":1.2*a,"scale.y":1.2*a}},.185,A(.16,.73,.63,.75))}}),this.addChild(this.particles),this.mine.anchor.x=.5,this.mine.scale.set(.5),this.mine.rotation=-C[n]*Math.PI/180,this.mine.animationSpeed=1/3,this.mine.alpha=0,this.addChild(this.mine),e.on(this,"hitmine",o=>{s==o.columnNumber&&(r.finish(this.mineAnim),this.mine.anchor.y=y.chart.reverse?1:0,this.mine.currentFrame=0,this.mine.play(),this.mineAnim=r.animate(this.mine,{0:{alpha:1},"0.5":{alpha:1},1:{alpha:0}},.6))})}}const Rt="/smeditor/assets/colors-63f923d2.png",$t="/smeditor/assets/mask-f1b4d033.png",Mt="/smeditor/assets/note-07e5d79f.png",Ut="/smeditor/assets/outline-72e881a7.png",Ft="/smeditor/assets/stroke-1f54ba14.png",Lt="/smeditor/assets/top-74da30ae.png",_={};["colors","mask","note","outline","stroke","top"].forEach(t=>_[t]=i.from(new URL(Object.assign({"./tap/colors.png":Rt,"./tap/mask.png":$t,"./tap/note.png":Mt,"./tap/outline.png":Ut,"./tap/stroke.png":Ft,"./tap/top.png":Lt})[`./tap/${t}.png`],self.location).href));const kt=b(_.top,4,1,384,384)[0],T=[-80,0,80];class p{static arrowFrameTex;static arrowFrameContainer=new g;static arrowTex;static arrowContainer=new g;static loaded=!1;static async initArrowTex(){if(!this.loaded){p.arrowFrameTex=I.create({width:64,height:64,resolution:y.performance.resolution}),p.arrowTex=I.create({width:64*3,height:64,resolution:y.performance.resolution});{const e=new l(_.note);e.width=64,e.height=64;const s=new l(_.outline);s.width=64,s.height=64;const n=new l(_.stroke);n.width=64,n.height=64,this.arrowFrameContainer.addChild(e,s,n)}for(let e=0;e<3;e++){const s=new l(this.arrowFrameTex);s.x=e*64;const n=new l(_.mask);n.scale.set(1/6),n.x=e*64,n.y=32,n.anchor.y=.5,n.alpha=1;const a=new $(_.colors,256,1024);a.tileScale.y=1/4,a.uvRespectAnchor=!0,a.x=e*64,a.y=32,a.tilePosition.y=128+T[e],a.anchor.y=.5,a.height=64,a.width=64,a.alpha=1,a.mask=n,a.name="c"+e;const o=new u(kt);o.scale.set(1/6),o.x=e*64,o.y=32,o.anchor.y=.5,o.alpha=1,o.name="t"+e,this.arrowContainer.addChild(s,a,n,o)}this.loaded=!0}}static setArrowTexTime(e){if(!this.loaded)return;const s=e.chartManager.chartView.getVisualBeat(),n=(s%1+1)%1,a=(s%4+4)%4;for(let o=0;o<3;o++)this.arrowContainer.getChildByName("c"+o).tilePosition.y=128+T[o]-a/4*256,this.arrowContainer.getChildByName("t"+o).currentFrame=Math.floor(n*4);e.renderer.render(p.arrowFrameContainer,{renderTexture:p.arrowFrameTex}),e.renderer.render(p.arrowContainer,{renderTexture:p.arrowTex})}static setNoteTex(e,s){let n=[4,8].indexOf(s?.quant??4);n==-1&&(n=2),e.texture=new i(p.arrowTex.baseTexture,new R(n*64,0,64,64))}}const Pt="/smeditor/assets/mine-335f4545.png",Ot="/smeditor/assets/spark-2c59cc0e.png",Dt="/smeditor/assets/receptor-a0a69b2b.png",St="/smeditor/assets/receptorFlash-c7675c53.png",jt=i.from(Dt),Vt=i.from(St),zt=i.from(Pt),Yt=b(i.from(Ot),4,4,160,128).flat(),Xt={Left:0,Down:5,Up:8,Right:13},h={},m={},w={Hold:{Active:i.from(new URL("/smeditor/assets/active-d06e5c33.png",self.location).href),Inactive:i.from(new URL("/smeditor/assets/inactive-a4aecb82.png",self.location).href)},Roll:{Active:i.from(new URL("/smeditor/assets/active-29dd632a.png",self.location).href),Inactive:i.from(new URL("/smeditor/assets/inactive-48f23de3.png",self.location).href)}};for(const t of["Left","Down","Up","Right"])for(const e of["Body","BottomCap"])for(const s of["Active","Inactive"])h[t]===void 0&&(h[t]={}),h[t][s]===void 0&&(h[t][s]={}),h[t][s][e]=i.from(new URL(Object.assign({"./hold/active.png":M,"./hold/downBodyActive.png":U,"./hold/downBodyInactive.png":F,"./hold/downBottomCapActive.png":L,"./hold/downBottomCapInactive.png":k,"./hold/inactive.png":P,"./hold/leftBodyActive.png":O,"./hold/leftBodyInactive.png":D,"./hold/leftBottomCapActive.png":S,"./hold/leftBottomCapInactive.png":j,"./hold/rightBodyActive.png":V,"./hold/rightBodyInactive.png":z,"./hold/rightBottomCapActive.png":Y,"./hold/rightBottomCapInactive.png":X,"./hold/upBodyActive.png":q,"./hold/upBodyInactive.png":J,"./hold/upBottomCapActive.png":Q,"./hold/upBottomCapInactive.png":W})[`./hold/${t.toLowerCase()}${e}${s}.png`],self.location).href),m[t]===void 0&&(m[t]={}),m[t][s]===void 0&&(m[t][s]={}),m[t][s][e]=i.from(new URL(Object.assign({"./roll/active.png":G,"./roll/downBodyActive.png":K,"./roll/downBodyInactive.png":Z,"./roll/downBottomCapActive.png":tt,"./roll/downBottomCapInactive.png":et,"./roll/inactive.png":ot,"./roll/leftBodyActive.png":st,"./roll/leftBodyInactive.png":at,"./roll/leftBottomCapActive.png":nt,"./roll/leftBottomCapInactive.png":it,"./roll/rightBodyActive.png":ct,"./roll/rightBodyInactive.png":lt,"./roll/rightBottomCapActive.png":rt,"./roll/rightBottomCapInactive.png":dt,"./roll/upBodyActive.png":pt,"./roll/upBodyInactive.png":ht,"./roll/upBottomCapActive.png":mt,"./roll/upBottomCapInactive.png":_t})[`./roll/${t.toLowerCase()}${e}${s}.png`],self.location).href);const C={Left:90,Down:0,Up:180,Right:-90},qt=["Receptor","Tap","Lift","Fake","Hold Inactive Head","Hold Active Head","Roll Inactive Head","Roll Active Head","NoteFlash"],Gt={elements:{Left:{Receptor:t=>{let e,s;const n=b(jt,2,1,404,404),a=new g,o=new u(n[0]);o.width=64,o.height=64,o.anchor.set(.5),t.noteskin.on(o,"ghosttap",d=>{d.columnNumber==t.columnNumber&&(r.finish(e),e=r.animate(o,{0:{alpha:.9,width:.85*64,height:.85*64},1:{alpha:1,width:64,height:64}},.11))});const c=new l(Vt);return c.blendMode=B.ADD,c.width=64,c.height=64,c.anchor.set(.5),c.alpha=0,t.noteskin.on(a,"press",d=>{d.columnNumber==t.columnNumber&&(r.finish(s),s=r.animate(c,{0:{alpha:0,width:.85*64,height:.85*64},1:{alpha:.6,width:64,height:64}},.12,A(.5,1,.89,1)))}),t.noteskin.on(a,"lift",d=>{d.columnNumber==t.columnNumber&&(r.finish(s),s=r.animate(c,{0:{alpha:"inherit",width:"inherit",height:"inherit"},1:{alpha:0,width:64*1.2,height:64}},.12,A(.11,0,.5,1)))}),t.noteskin.onUpdate(a,d=>{const x=d.chart.getNotedata()[0]?.beat;if(x===void 0||d.getVisualBeat(){const e=new l(i.WHITE);return p.setNoteTex(e,t.note),e.anchor.set(.5),e},NoteFlash:t=>new Et(t.noteskin,t.columnNumber,t.columnName),Fake:{element:"Tap"},Lift:{element:"Tap"},Mine:t=>{const e=new g,s=new l(zt);s.anchor.set(.5),s.width=64,s.height=64,s.rotation=C[t.columnName]*Math.PI/180;const n=new u(Yt);return n.anchor.set(.5),n.scale.set(.5),e.addChild(s,n),t.noteskin.onUpdate(e,a=>{const o=a.getVisualTime();n.currentFrame=((Math.floor(o*20)+Xt[t.columnName])%16+16)%16}),e},"Hold Active Head":()=>{const t=new l(w.Hold.Active);return t.anchor.set(.5),t.scale.set(1/6),t},"Hold Inactive Head":()=>{const t=new l(w.Hold.Inactive);return t.anchor.set(.5),t.scale.set(1/6),t},"Hold Active Body":t=>new f(h[t.columnName].Active.Body),"Hold Inactive Body":t=>new f(h[t.columnName].Inactive.Body),"Hold Active TopCap":()=>new l(i.EMPTY),"Hold Inactive TopCap":()=>new l(i.EMPTY),"Hold Active BottomCap":t=>new v(h[t.columnName].Active.BottomCap),"Hold Inactive BottomCap":t=>new v(h[t.columnName].Inactive.BottomCap),"Roll Active Head":()=>{const t=new l(w.Roll.Active);return t.anchor.set(.5),t.scale.set(1/6),t},"Roll Inactive Head":()=>{const t=new l(w.Roll.Inactive);return t.anchor.set(.5),t.scale.set(1/6),t},"Roll Active Body":t=>new f(m[t.columnName].Active.Body),"Roll Inactive Body":t=>new f(m[t.columnName].Inactive.Body),"Roll Active TopCap":()=>new l(i.EMPTY),"Roll Inactive TopCap":()=>new l(i.EMPTY),"Roll Active BottomCap":t=>new v(m[t.columnName].Active.BottomCap),"Roll Inactive BottomCap":t=>new v(m[t.columnName].Inactive.BottomCap)}},load:function(t,e){const s=t.columnName;t.columnName="Left";const n=this.loadElement(t,e);return qt.includes(t.element)&&(n.rotation=C[s]*Math.PI/180),n},init(){p.initArrowTex()},update(t){p.setArrowTexTime(t.chartManager.app)},metrics:{HoldBodyBottomOffset:-16,RollBodyBottomOffset:-16}};export{Gt as default,C as rotationMap}; diff --git a/Noteskin-66d5ec9c.js b/Noteskin-c88f6db0.js similarity index 99% rename from Noteskin-66d5ec9c.js rename to Noteskin-c88f6db0.js index a459af4e..f82cfaea 100644 --- a/Noteskin-66d5ec9c.js +++ b/Noteskin-c88f6db0.js @@ -1 +1 @@ -import{q as o,b as w,u as C,O as B,X as u,y as l,P as I,z as x,L,H as h,Q as T}from"./ChartManager-db54e716.js";import{A as v}from"./AnimatedSprite-ffeea718.js";import{H as m}from"./HoldBody-9276f45c.js";const N="/smeditor/assets/tapCenter-103680e8.png",V="/smeditor/assets/tapDownLeft-17ba3b42.png",y="/smeditor/assets/liftCenter-9712ce74.png",E="/smeditor/assets/liftDownLeft-0205bdc8.png",Q="/smeditor/assets/fakeCenter-581c6a3b.png",R="/smeditor/assets/fakeDownLeft-e3208bb3.png",b="/smeditor/assets/base-29930c78.png",Z="/smeditor/assets/overlay-f63a3b18.png",q="/smeditor/assets/underlay-95144bef.png",d={Tap:{DownLeft:o.from(V),Center:o.from(N)},Lift:{DownLeft:o.from(E),Center:o.from(y)},Fake:{DownLeft:o.from(R),Center:o.from(Q)},Mine:{Base:o.from(b),Overlay:o.from(Z),Underlay:o.from(q)}};class s{static downLeftTex;static downLeftContainer=new w;static centerTex;static centerContainer=new w;static mineTex;static mineContainer=new w;static loaded=!1;static async initArrowTex(){this.loaded||(s.downLeftTex=C.create({width:128*9,height:128*3,resolution:B.performance.resolution}),s.centerTex=C.create({width:128*9,height:128*3,resolution:B.performance.resolution}),s.mineTex=C.create({width:128*9,height:128,resolution:B.performance.resolution}),this.layoutRow(this.downLeftContainer,d.Tap.DownLeft,0),this.layoutRow(this.downLeftContainer,d.Fake.DownLeft,1),this.layoutRow(this.downLeftContainer,d.Lift.DownLeft,2),this.layoutRow(this.centerContainer,d.Tap.Center,0),this.layoutRow(this.centerContainer,d.Fake.Center,1),this.layoutRow(this.centerContainer,d.Lift.Center,2),this.createMines(this.mineContainer),this.loaded=!0)}static layoutRow(t,a,e){const n=u(a,6,9,128,128);for(let A=0;A<9;A++){const c=new v(n[A]);c.x=A*128,c.y=e*128,t.addChild(c)}}static createMines(t){const a=u(d.Mine.Base,1,9,128,128).map(A=>A[0]),e=u(d.Mine.Overlay,1,9,128,128).map(A=>A[0]),n=u(d.Mine.Underlay,1,9,128,128).map(A=>A[0]);for(let A=0;A<9;A++){const c=new l(n[A]);c.x=A*128+64,c.y=64,c.name="u"+A,c.anchor.set(.5);const p=new l(a[A]);p.x=A*128+64,p.y=64,p.name="b"+A,p.anchor.set(.5);const g=new l(e[A]);g.x=A*128+64,g.y=64,g.name="o"+A,g.anchor.set(.5),t.addChild(c,p,g)}}static setArrowTexTime(t){if(!this.loaded)return;const a=t.chartManager.chartView.getVisualBeat(),e=(a%1+1)%1,n=Math.floor(e*6);this.downLeftContainer.children.forEach(A=>A.currentFrame=n),this.centerContainer.children.forEach(A=>A.currentFrame=n),t.renderer.render(s.downLeftContainer,{renderTexture:s.downLeftTex}),t.renderer.render(s.centerContainer,{renderTexture:s.centerTex}),t.renderer.render(s.mineContainer,{renderTexture:s.mineTex});for(let A=0;A<9;A++)this.mineContainer.getChildByName("u"+A).tint=I(Math.round(255-153*e),0,0),this.mineContainer.getChildByName("b"+A).rotation=80/180*Math.PI*a,this.mineContainer.getChildByName("o"+A).rotation=-40/180*Math.PI*a}static setNoteTex(t,a,e){if(a===void 0)return o.WHITE;if(a.type=="Mine"){const n=[4,8,12,16,24,32,48,64,96,192].indexOf(a.quant);t.texture=new o(this.mineTex.baseTexture,new x(Math.min(8,n)*128,0,128,128))}else{const n=[4,8,12,16,24,32,48,64,96,192].indexOf(a.quant),A=this.getNoteRow(a.type),c=e=="Center"?this.centerTex:this.downLeftTex;t.texture=new o(c.baseTexture,new x(Math.min(8,n)*128,A*128,128,128))}}static getNoteRow(t){switch(t){case"Fake":return 1;case"Lift":return 2;default:return 0}}}const D="/smeditor/assets/centerReceptor-44665c43.png",Y="/smeditor/assets/downLeftReceptor-9be8faae.png",U="data:image/png;base64,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",H="data:image/png;base64,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",K="/smeditor/assets/capActive-59a3b423.png",O="/smeditor/assets/capInactive-efc3b952.png";class f extends l{constructor(t,a=64,e=!1){super(t),this.scale.set(a/this.texture.width),this.anchor.x=.5,e&&(this.rotation=Math.PI),this.texture.on("update",()=>{this.scale.set(a/this.texture.width)})}}const P="/smeditor/assets/flash-5a32532f.png",G="/smeditor/assets/mine-590d445e.png",S={w0:[1,1,1,1],w2:[1,1,.3,1],w3:[0,1,.4,1],w4:[.3,.8,1,1],w5:[.8,0,.6,1],held:[1,1,1,1]},z=o.from(P),X=o.from(G);class F extends w{standard=new l(z);standardAnim;anims=new Set;constructor(t,a){super(),this.standard.blendMode=L.ADD;const e=.5;t.on(this,"hit",n=>{if(a==n.columnNumber){const A=S[n.judgement.id]??[1,1,1,1];this.standard.tint=I(A[0]*255,A[1]*255,A[2]*255),h.finish(this.standardAnim),this.standardAnim=h.animate(this.standard,{0:{alpha:1,"scale.x":1*e,"scale.y":1*e},"0.5":{alpha:1.1,"scale.x":1.1*e,"scale.y":1.1*e},1:{alpha:0,"scale.x":1.1*e,"scale.y":1.1*e}},.12)}}),t.on(this,"held",n=>{a==n.columnNumber&&(this.standard.tint=16777215,h.finish(this.standardAnim),this.standardAnim=h.animate(this.standard,{0:{alpha:1,"scale.x":1*e,"scale.y":1*e},"0.5":{alpha:1.1,"scale.x":1.1*e,"scale.y":1.1*e},1:{alpha:0,"scale.x":1.1*e,"scale.y":1.1*e}},.12))}),t.on(this,"holdon",n=>{a==n.columnNumber&&(this.standard.alpha=1)}),t.on(this,"holdoff",n=>{a==n.columnNumber&&(this.standard.alpha=0)}),t.on(this,"rollon",n=>{a==n.columnNumber&&(this.standard.alpha=1)}),t.on(this,"rolloff",n=>{a==n.columnNumber&&(this.standard.alpha=0)}),t.on(this,"hitmine",n=>{if(a==n.columnNumber){const A=new l(X);A.alpha=0,A.anchor.set(.5),A.blendMode=L.ADD,this.addChild(A),h.animate(A,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>A.destroy())}}),this.standard.alpha=0,this.standard.anchor.set(.5),this.addChild(this.standard)}}const k="data:image/png;base64,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",J="data:image/png;base64,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",M="/smeditor/assets/capActive-e83fb138.png",W="/smeditor/assets/capInactive-4622d5f2.png",j=o.from(Y),$=o.from(D),i={hold:{active:{body:o.from(U),cap:o.from(K)},inactive:{body:o.from(H),cap:o.from(O)}},roll:{active:{body:o.from(k),cap:o.from(M)},inactive:{body:o.from(J),cap:o.from(W)}}},_={Center:0,DownLeft:0,UpLeft:90,UpRight:180,DownRight:270},AA=["Receptor","Tap","Lift","Fake","Hold Inactive Head","Hold Active Head","Roll Inactive Head","Roll Active Head"],nA={elements:{DownLeft:{Receptor:r=>{const t=new l(r.columnName=="Center"?$:j);t.width=72,t.height=72,t.anchor.set(.5);let a;return r.noteskin.on(t,"ghosttap",e=>{e.columnNumber==r.columnNumber&&(h.finish(a),a=h.animate(t,{0:{width:54,height:54},1:{width:72,height:72}},.11))}),r.noteskin.onUpdate(t,e=>{const n=e.getVisualBeat();let A=204;(n%1+1)%1>.2&&(A=102),t.tint=I(A,A,A)}),t},Tap:r=>{const t=new l(o.WHITE);return s.setNoteTex(t,r.note,r.columnName),t.anchor.set(.5),t.width=72,t.height=72,t},Fake:{element:"Tap"},Lift:{element:"Tap"},Mine:{element:"Tap"},NoteFlash:r=>new F(r.noteskin,r.columnNumber),"Hold Active Head":{element:"Tap"},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":()=>new m(i.hold.active.body),"Hold Inactive Body":()=>new m(i.hold.inactive.body),"Hold Active TopCap":()=>new f(i.hold.active.cap,64,!0),"Hold Inactive TopCap":()=>new f(i.hold.inactive.cap,64,!0),"Hold Active BottomCap":()=>new T(i.hold.active.cap),"Hold Inactive BottomCap":()=>new T(i.hold.inactive.cap),"Roll Active Head":{element:"Tap"},"Roll Inactive Head":{element:"Tap"},"Roll Active Body":()=>new m(i.roll.active.body),"Roll Inactive Body":()=>new m(i.roll.inactive.body),"Roll Active TopCap":()=>new f(i.roll.active.cap,64,!0),"Roll Inactive TopCap":()=>new f(i.roll.inactive.cap,64,!0),"Roll Active BottomCap":()=>new T(i.roll.active.cap),"Roll Inactive BottomCap":()=>new T(i.roll.inactive.cap)}},load:function(r,t){const a=r.columnName;r.columnName="DownLeft";const e=this.loadElement(r,t);return AA.includes(r.element)&&(e.rotation=_[a]*Math.PI/180),e},init(){s.initArrowTex()},update(r){s.setArrowTexTime(r.chartManager.app)},hideIcons:["Lift","Fake"]};export{nA as default}; +import{q as o,b as w,u as C,O as B,X as u,y as l,P as I,z as x,L,H as h,Q as T}from"./ChartManager-b82bf91a.js";import{A as v}from"./AnimatedSprite-c4817119.js";import{H as m}from"./HoldBody-3932542e.js";const N="/smeditor/assets/tapCenter-103680e8.png",V="/smeditor/assets/tapDownLeft-17ba3b42.png",y="/smeditor/assets/liftCenter-9712ce74.png",E="/smeditor/assets/liftDownLeft-0205bdc8.png",Q="/smeditor/assets/fakeCenter-581c6a3b.png",R="/smeditor/assets/fakeDownLeft-e3208bb3.png",b="/smeditor/assets/base-29930c78.png",Z="/smeditor/assets/overlay-f63a3b18.png",q="/smeditor/assets/underlay-95144bef.png",d={Tap:{DownLeft:o.from(V),Center:o.from(N)},Lift:{DownLeft:o.from(E),Center:o.from(y)},Fake:{DownLeft:o.from(R),Center:o.from(Q)},Mine:{Base:o.from(b),Overlay:o.from(Z),Underlay:o.from(q)}};class s{static downLeftTex;static downLeftContainer=new w;static centerTex;static centerContainer=new w;static mineTex;static mineContainer=new w;static loaded=!1;static async initArrowTex(){this.loaded||(s.downLeftTex=C.create({width:128*9,height:128*3,resolution:B.performance.resolution}),s.centerTex=C.create({width:128*9,height:128*3,resolution:B.performance.resolution}),s.mineTex=C.create({width:128*9,height:128,resolution:B.performance.resolution}),this.layoutRow(this.downLeftContainer,d.Tap.DownLeft,0),this.layoutRow(this.downLeftContainer,d.Fake.DownLeft,1),this.layoutRow(this.downLeftContainer,d.Lift.DownLeft,2),this.layoutRow(this.centerContainer,d.Tap.Center,0),this.layoutRow(this.centerContainer,d.Fake.Center,1),this.layoutRow(this.centerContainer,d.Lift.Center,2),this.createMines(this.mineContainer),this.loaded=!0)}static layoutRow(t,a,e){const n=u(a,6,9,128,128);for(let A=0;A<9;A++){const c=new v(n[A]);c.x=A*128,c.y=e*128,t.addChild(c)}}static createMines(t){const a=u(d.Mine.Base,1,9,128,128).map(A=>A[0]),e=u(d.Mine.Overlay,1,9,128,128).map(A=>A[0]),n=u(d.Mine.Underlay,1,9,128,128).map(A=>A[0]);for(let A=0;A<9;A++){const c=new l(n[A]);c.x=A*128+64,c.y=64,c.name="u"+A,c.anchor.set(.5);const p=new l(a[A]);p.x=A*128+64,p.y=64,p.name="b"+A,p.anchor.set(.5);const g=new l(e[A]);g.x=A*128+64,g.y=64,g.name="o"+A,g.anchor.set(.5),t.addChild(c,p,g)}}static setArrowTexTime(t){if(!this.loaded)return;const a=t.chartManager.chartView.getVisualBeat(),e=(a%1+1)%1,n=Math.floor(e*6);this.downLeftContainer.children.forEach(A=>A.currentFrame=n),this.centerContainer.children.forEach(A=>A.currentFrame=n),t.renderer.render(s.downLeftContainer,{renderTexture:s.downLeftTex}),t.renderer.render(s.centerContainer,{renderTexture:s.centerTex}),t.renderer.render(s.mineContainer,{renderTexture:s.mineTex});for(let A=0;A<9;A++)this.mineContainer.getChildByName("u"+A).tint=I(Math.round(255-153*e),0,0),this.mineContainer.getChildByName("b"+A).rotation=80/180*Math.PI*a,this.mineContainer.getChildByName("o"+A).rotation=-40/180*Math.PI*a}static setNoteTex(t,a,e){if(a===void 0)return o.WHITE;if(a.type=="Mine"){const n=[4,8,12,16,24,32,48,64,96,192].indexOf(a.quant);t.texture=new o(this.mineTex.baseTexture,new x(Math.min(8,n)*128,0,128,128))}else{const n=[4,8,12,16,24,32,48,64,96,192].indexOf(a.quant),A=this.getNoteRow(a.type),c=e=="Center"?this.centerTex:this.downLeftTex;t.texture=new o(c.baseTexture,new x(Math.min(8,n)*128,A*128,128,128))}}static getNoteRow(t){switch(t){case"Fake":return 1;case"Lift":return 2;default:return 0}}}const D="/smeditor/assets/centerReceptor-44665c43.png",Y="/smeditor/assets/downLeftReceptor-9be8faae.png",U="data:image/png;base64,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",H="data:image/png;base64,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",K="/smeditor/assets/capActive-59a3b423.png",O="/smeditor/assets/capInactive-efc3b952.png";class f extends l{constructor(t,a=64,e=!1){super(t),this.scale.set(a/this.texture.width),this.anchor.x=.5,e&&(this.rotation=Math.PI),this.texture.on("update",()=>{this.scale.set(a/this.texture.width)})}}const P="/smeditor/assets/flash-5a32532f.png",G="/smeditor/assets/mine-590d445e.png",S={w0:[1,1,1,1],w2:[1,1,.3,1],w3:[0,1,.4,1],w4:[.3,.8,1,1],w5:[.8,0,.6,1],held:[1,1,1,1]},z=o.from(P),X=o.from(G);class F extends w{standard=new l(z);standardAnim;anims=new Set;constructor(t,a){super(),this.standard.blendMode=L.ADD;const e=.5;t.on(this,"hit",n=>{if(a==n.columnNumber){const A=S[n.judgement.id]??[1,1,1,1];this.standard.tint=I(A[0]*255,A[1]*255,A[2]*255),h.finish(this.standardAnim),this.standardAnim=h.animate(this.standard,{0:{alpha:1,"scale.x":1*e,"scale.y":1*e},"0.5":{alpha:1.1,"scale.x":1.1*e,"scale.y":1.1*e},1:{alpha:0,"scale.x":1.1*e,"scale.y":1.1*e}},.12)}}),t.on(this,"held",n=>{a==n.columnNumber&&(this.standard.tint=16777215,h.finish(this.standardAnim),this.standardAnim=h.animate(this.standard,{0:{alpha:1,"scale.x":1*e,"scale.y":1*e},"0.5":{alpha:1.1,"scale.x":1.1*e,"scale.y":1.1*e},1:{alpha:0,"scale.x":1.1*e,"scale.y":1.1*e}},.12))}),t.on(this,"holdon",n=>{a==n.columnNumber&&(this.standard.alpha=1)}),t.on(this,"holdoff",n=>{a==n.columnNumber&&(this.standard.alpha=0)}),t.on(this,"rollon",n=>{a==n.columnNumber&&(this.standard.alpha=1)}),t.on(this,"rolloff",n=>{a==n.columnNumber&&(this.standard.alpha=0)}),t.on(this,"hitmine",n=>{if(a==n.columnNumber){const A=new l(X);A.alpha=0,A.anchor.set(.5),A.blendMode=L.ADD,this.addChild(A),h.animate(A,{0:{alpha:1,rotation:0},"0.5":{alpha:1,rotation:90*Math.PI/180},1:{alpha:0,rotation:180*Math.PI/180}},.4,void 0,()=>A.destroy())}}),this.standard.alpha=0,this.standard.anchor.set(.5),this.addChild(this.standard)}}const k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABACAYAAADS1n9/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAUVJREFUeNrs3b0uREEcxuH32INiNxSoFL6uQaJRSlRahZLCLUlEp9HpRKtRuQNfhQqRTVZBzhqVC9iNyIk8Tz+TyX9+U09VSskoVg82HpvBx2zdncr85kqmF3oZlmHmZ+eyt7ydtd5iSpIqv6uUpJkY5ujmLJcn58nbZ6rORNqgNF8pM5PZ2t/J4fpuJr/qVL88gJ+Z3g6ecvpwkZf+azpVJx/Pg7xc3ad5/0zdm+7fHV8vjbJvPcZZ5pJ0QxuNfJ/jPKHGnFur+YsA+EcEIAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAA2hJAbWytVf/FZb7GB9Jt1R91wTcAAAD//wMAz8A4fUBIFzMAAAAASUVORK5CYII=",J="data:image/png;base64,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",M="/smeditor/assets/capActive-e83fb138.png",W="/smeditor/assets/capInactive-4622d5f2.png",j=o.from(Y),$=o.from(D),i={hold:{active:{body:o.from(U),cap:o.from(K)},inactive:{body:o.from(H),cap:o.from(O)}},roll:{active:{body:o.from(k),cap:o.from(M)},inactive:{body:o.from(J),cap:o.from(W)}}},_={Center:0,DownLeft:0,UpLeft:90,UpRight:180,DownRight:270},AA=["Receptor","Tap","Lift","Fake","Hold Inactive Head","Hold Active Head","Roll Inactive Head","Roll Active Head"],nA={elements:{DownLeft:{Receptor:r=>{const t=new l(r.columnName=="Center"?$:j);t.width=72,t.height=72,t.anchor.set(.5);let a;return r.noteskin.on(t,"ghosttap",e=>{e.columnNumber==r.columnNumber&&(h.finish(a),a=h.animate(t,{0:{width:54,height:54},1:{width:72,height:72}},.11))}),r.noteskin.onUpdate(t,e=>{const n=e.getVisualBeat();let A=204;(n%1+1)%1>.2&&(A=102),t.tint=I(A,A,A)}),t},Tap:r=>{const t=new l(o.WHITE);return s.setNoteTex(t,r.note,r.columnName),t.anchor.set(.5),t.width=72,t.height=72,t},Fake:{element:"Tap"},Lift:{element:"Tap"},Mine:{element:"Tap"},NoteFlash:r=>new F(r.noteskin,r.columnNumber),"Hold Active Head":{element:"Tap"},"Hold Inactive Head":{element:"Tap"},"Hold Active Body":()=>new m(i.hold.active.body),"Hold Inactive Body":()=>new m(i.hold.inactive.body),"Hold Active TopCap":()=>new f(i.hold.active.cap,64,!0),"Hold Inactive TopCap":()=>new f(i.hold.inactive.cap,64,!0),"Hold Active BottomCap":()=>new T(i.hold.active.cap),"Hold Inactive BottomCap":()=>new T(i.hold.inactive.cap),"Roll Active Head":{element:"Tap"},"Roll Inactive Head":{element:"Tap"},"Roll Active Body":()=>new m(i.roll.active.body),"Roll Inactive Body":()=>new m(i.roll.inactive.body),"Roll Active TopCap":()=>new f(i.roll.active.cap,64,!0),"Roll Inactive TopCap":()=>new f(i.roll.inactive.cap,64,!0),"Roll Active BottomCap":()=>new T(i.roll.active.cap),"Roll Inactive BottomCap":()=>new T(i.roll.inactive.cap)}},load:function(r,t){const a=r.columnName;r.columnName="DownLeft";const e=this.loadElement(r,t);return AA.includes(r.element)&&(e.rotation=_[a]*Math.PI/180),e},init(){s.initArrowTex()},update(r){s.setArrowTexTime(r.chartManager.app)},hideIcons:["Lift","Fake"]};export{nA as default}; diff --git a/Noteskin-771bb0f0.js b/Noteskin-cf0acfc0.js similarity index 99% rename from Noteskin-771bb0f0.js rename to Noteskin-cf0acfc0.js index 616f6099..6c30d9aa 100644 --- a/Noteskin-771bb0f0.js +++ b/Noteskin-cf0acfc0.js @@ -1,4 +1,4 @@ -import{q as a,X as T,r as u,s as Q,b as d,u as C,O as f,v as E,w as N,x as y,y as r,z as D,P as B,H as c,L as v,Q as p,V as H}from"./ChartManager-db54e716.js";import{A as I}from"./AnimatedSprite-ffeea718.js";import{H as h}from"./HoldBody-9276f45c.js";const P="/smeditor/assets/frame-d599a2fe.png",Y="/smeditor/assets/parts-b37af2cf.png",Z=`precision mediump float; +import{q as a,X as T,r as u,s as Q,b as d,u as C,O as f,v as E,w as N,x as y,y as r,z as D,P as B,H as c,L as v,Q as p,V as H}from"./ChartManager-b82bf91a.js";import{A as I}from"./AnimatedSprite-c4817119.js";import{H as h}from"./HoldBody-3932542e.js";const P="/smeditor/assets/frame-d599a2fe.png",Y="/smeditor/assets/parts-b37af2cf.png",Z=`precision mediump float; varying vec2 vUvs; diff --git a/Noteskin-28290895.js b/Noteskin-ff20a48e.js similarity index 99% rename from Noteskin-28290895.js rename to Noteskin-ff20a48e.js index f7364219..1f390322 100644 --- a/Noteskin-28290895.js +++ b/Noteskin-ff20a48e.js @@ -1,4 +1,4 @@ -import{q as a,X as T,r as B,s as N,b as p,u as f,O as u,v as y,w as V,x as E,y as r,z as Q,P as x,H as c,L as w,Q as h,V as L}from"./ChartManager-db54e716.js";import{A as C}from"./AnimatedSprite-ffeea718.js";import{H as m}from"./HoldBody-9276f45c.js";const P="/smeditor/assets/frame-d599a2fe.png",H="/smeditor/assets/parts-b37af2cf.png",b=`precision mediump float; +import{q as a,X as T,r as B,s as N,b as p,u as f,O as u,v as y,w as V,x as E,y as r,z as Q,P as x,H as c,L as w,Q as h,V as L}from"./ChartManager-b82bf91a.js";import{A as C}from"./AnimatedSprite-c4817119.js";import{H as m}from"./HoldBody-3932542e.js";const P="/smeditor/assets/frame-d599a2fe.png",H="/smeditor/assets/parts-b37af2cf.png",b=`precision mediump float; varying vec2 vUvs; diff --git a/app.js b/app.js index 6e04b1c5..b442458e 100644 --- a/app.js +++ b/app.js @@ -1,4 +1,4 @@ -import{g as Lt,F as k,M as qt,K as zt,a as Tt,I as Yt,G as Kt,N as Zt,O as W,t as Jt,e as fe,l as Qt,C as Ke,b as er,R as tr,T as rr,D as Ze,U as nr,B as sr,c as ir,A as Je,i as or,d as Qe,f as ar,h as et,j as lr,E as cr,k as hr,m as fr,W as tt,n as ur}from"./ChartManager-db54e716.js";var _e={exports:{}};const dr="2.0.0",St=256,pr=Number.MAX_SAFE_INTEGER||9007199254740991,mr=16,Er=St-6,wr=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var Ee={MAX_LENGTH:St,MAX_SAFE_COMPONENT_LENGTH:mr,MAX_SAFE_BUILD_LENGTH:Er,MAX_SAFE_INTEGER:pr,RELEASE_TYPES:wr,SEMVER_SPEC_VERSION:dr,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const vr=typeof process=="object"&&process.env&&{}.NODE_DEBUG&&/\bsemver\b/i.test({}.NODE_DEBUG)?(...i)=>console.error("SEMVER",...i):()=>{};var we=vr;(function(i,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:o}=Ee,f=we;e=i.exports={};const u=e.re=[],$=e.safeRe=[],l=e.src=[],c=e.t={};let m=0;const R="[a-zA-Z0-9-]",_=[["\\s",1],["\\d",o],[R,s]],I=B=>{for(const[V,q]of _)B=B.split(`${V}*`).join(`${V}{0,${q}}`).split(`${V}+`).join(`${V}{1,${q}}`);return B},T=(B,V,q)=>{const te=I(V),b=m++;f(B,b,V),c[B]=b,l[b]=V,u[b]=new RegExp(V,q?"g":void 0),$[b]=new RegExp(te,q?"g":void 0)};T("NUMERICIDENTIFIER","0|[1-9]\\d*"),T("NUMERICIDENTIFIERLOOSE","\\d+"),T("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${R}*`),T("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),T("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),T("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),T("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),T("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),T("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),T("BUILDIDENTIFIER",`${R}+`),T("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),T("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),T("FULL",`^${l[c.FULLPLAIN]}$`),T("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),T("LOOSE",`^${l[c.LOOSEPLAIN]}$`),T("GTLT","((?:<|>)?=?)"),T("XRANGEIDENTIFIERLOOSE",`${l[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),T("XRANGEIDENTIFIER",`${l[c.NUMERICIDENTIFIER]}|x|X|\\*`),T("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),T("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),T("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),T("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),T("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),T("COERCE",`${l[c.COERCEPLAIN]}(?:$|[^\\d])`),T("COERCEFULL",l[c.COERCEPLAIN]+`(?:${l[c.PRERELEASE]})?(?:${l[c.BUILD]})?(?:$|[^\\d])`),T("COERCERTL",l[c.COERCE],!0),T("COERCERTLFULL",l[c.COERCEFULL],!0),T("LONETILDE","(?:~>?)"),T("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",T("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),T("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),T("LONECARET","(?:\\^)"),T("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",T("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),T("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),T("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),T("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),T("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",T("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),T("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),T("STAR","(<|>)?=?\\s*\\*"),T("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),T("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(_e,_e.exports);var oe=_e.exports;const gr=Object.freeze({loose:!0}),$r=Object.freeze({}),Rr=i=>i?typeof i!="object"?gr:i:$r;var xe=Rr;const rt=/^[0-9]+$/,Nt=(i,e)=>{const t=rt.test(i),s=rt.test(e);return t&&s&&(i=+i,e=+e),i===e?0:t&&!s?-1:s&&!t?1:iNt(e,i);var At={compareIdentifiers:Nt,rcompareIdentifiers:Ir};const ue=we,{MAX_LENGTH:nt,MAX_SAFE_INTEGER:de}=Ee,{safeRe:st,t:it}=oe,yr=xe,{compareIdentifiers:ne}=At;let Lr=class Z{constructor(e,t){if(t=yr(t),e instanceof Z){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>nt)throw new TypeError(`version is longer than ${nt} characters`);ue("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const s=e.trim().match(t.loose?st[it.LOOSE]:st[it.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>de||this.major<0)throw new TypeError("Invalid major version");if(this.minor>de||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>de||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const f=+o;if(f>=0&&f=0;)typeof this.prerelease[f]=="number"&&(this.prerelease[f]++,f=-2);if(f===-1){if(t===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let f=[t,o];s===!1&&(f=[t]),ne(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=f):this.prerelease=f}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var U=Lr;const ot=U,Tr=(i,e,t=!1)=>{if(i instanceof ot)return i;try{return new ot(i,e)}catch(s){if(!t)return null;throw s}};var se=Tr;const Sr=se,Nr=(i,e)=>{const t=Sr(i,e);return t?t.version:null};var Ar=Nr;const Or=se,Cr=(i,e)=>{const t=Or(i.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var Pr=Cr;const at=U,_r=(i,e,t,s,o)=>{typeof t=="string"&&(o=s,s=t,t=void 0);try{return new at(i instanceof at?i.version:i,t).inc(e,s,o).version}catch{return null}};var xr=_r;const lt=se,br=(i,e)=>{const t=lt(i,null,!0),s=lt(e,null,!0),o=t.compare(s);if(o===0)return null;const f=o>0,u=f?t:s,$=f?s:t,l=!!u.prerelease.length;if(!!$.prerelease.length&&!l)return!$.patch&&!$.minor?"major":u.patch?"patch":u.minor?"minor":"major";const m=l?"pre":"";return t.major!==s.major?m+"major":t.minor!==s.minor?m+"minor":t.patch!==s.patch?m+"patch":"prerelease"};var Dr=br;const Fr=U,jr=(i,e)=>new Fr(i,e).major;var Gr=jr;const kr=U,Mr=(i,e)=>new kr(i,e).minor;var Wr=Mr;const Ur=U,Vr=(i,e)=>new Ur(i,e).patch;var Xr=Vr;const Hr=se,Br=(i,e)=>{const t=Hr(i,e);return t&&t.prerelease.length?t.prerelease:null};var qr=Br;const ct=U,zr=(i,e,t)=>new ct(i,t).compare(new ct(e,t));var Y=zr;const Yr=Y,Kr=(i,e,t)=>Yr(e,i,t);var Zr=Kr;const Jr=Y,Qr=(i,e)=>Jr(i,e,!0);var en=Qr;const ht=U,tn=(i,e,t)=>{const s=new ht(i,t),o=new ht(e,t);return s.compare(o)||s.compareBuild(o)};var be=tn;const rn=be,nn=(i,e)=>i.sort((t,s)=>rn(t,s,e));var sn=nn;const on=be,an=(i,e)=>i.sort((t,s)=>on(s,t,e));var ln=an;const cn=Y,hn=(i,e,t)=>cn(i,e,t)>0;var ve=hn;const fn=Y,un=(i,e,t)=>fn(i,e,t)<0;var De=un;const dn=Y,pn=(i,e,t)=>dn(i,e,t)===0;var Ot=pn;const mn=Y,En=(i,e,t)=>mn(i,e,t)!==0;var Ct=En;const wn=Y,vn=(i,e,t)=>wn(i,e,t)>=0;var Fe=vn;const gn=Y,$n=(i,e,t)=>gn(i,e,t)<=0;var je=$n;const Rn=Ot,In=Ct,yn=ve,Ln=Fe,Tn=De,Sn=je,Nn=(i,e,t,s)=>{switch(e){case"===":return typeof i=="object"&&(i=i.version),typeof t=="object"&&(t=t.version),i===t;case"!==":return typeof i=="object"&&(i=i.version),typeof t=="object"&&(t=t.version),i!==t;case"":case"=":case"==":return Rn(i,t,s);case"!=":return In(i,t,s);case">":return yn(i,t,s);case">=":return Ln(i,t,s);case"<":return Tn(i,t,s);case"<=":return Sn(i,t,s);default:throw new TypeError(`Invalid operator: ${e}`)}};var Pt=Nn;const An=U,On=se,{safeRe:pe,t:me}=oe,Cn=(i,e)=>{if(i instanceof An)return i;if(typeof i=="number"&&(i=String(i)),typeof i!="string")return null;e=e||{};let t=null;if(!e.rtl)t=i.match(e.includePrerelease?pe[me.COERCEFULL]:pe[me.COERCE]);else{const l=e.includePrerelease?pe[me.COERCERTLFULL]:pe[me.COERCERTL];let c;for(;(c=l.exec(i))&&(!t||t.index+t[0].length!==i.length);)(!t||c.index+c[0].length!==t.index+t[0].length)&&(t=c),l.lastIndex=c.index+c[1].length+c[2].length;l.lastIndex=-1}if(t===null)return null;const s=t[2],o=t[3]||"0",f=t[4]||"0",u=e.includePrerelease&&t[5]?`-${t[5]}`:"",$=e.includePrerelease&&t[6]?`+${t[6]}`:"";return On(`${s}.${o}.${f}${u}${$}`,e)};var Pn=Cn;class _n{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){const o=this.map.keys().next().value;this.delete(o)}this.map.set(e,t)}return this}}var xn=_n,Ne,ft;function K(){if(ft)return Ne;ft=1;const i=/\s+/g;class e{constructor(p,y){if(y=o(y),p instanceof e)return p.loose===!!y.loose&&p.includePrerelease===!!y.includePrerelease?p:new e(p.raw,y);if(p instanceof f)return this.raw=p.value,this.set=[[p]],this.formatted=void 0,this;if(this.options=y,this.loose=!!y.loose,this.includePrerelease=!!y.includePrerelease,this.raw=p.trim().replace(i," "),this.set=this.raw.split("||").map(w=>this.parseRange(w.trim())).filter(w=>w.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const w=this.set[0];if(this.set=this.set.filter(L=>!B(L[0])),this.set.length===0)this.set=[w];else if(this.set.length>1){for(const L of this.set)if(L.length===1&&V(L[0])){this.set=[L];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let p=0;p0&&(this.formatted+="||");const y=this.set[p];for(let w=0;w0&&(this.formatted+=" "),this.formatted+=y[w].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(p){const w=((this.options.includePrerelease&&I)|(this.options.loose&&T))+":"+p,L=s.get(w);if(L)return L;const v=this.options.loose,N=v?l[c.HYPHENRANGELOOSE]:l[c.HYPHENRANGE];p=p.replace(N,ce(this.options.includePrerelease)),u("hyphen replace",p),p=p.replace(l[c.COMPARATORTRIM],m),u("comparator trim",p),p=p.replace(l[c.TILDETRIM],R),u("tilde trim",p),p=p.replace(l[c.CARETTRIM],_),u("caret trim",p);let O=p.split(" ").map(D=>te(D,this.options)).join(" ").split(/\s+/).map(D=>Le(D,this.options));v&&(O=O.filter(D=>(u("loose invalid filter",D,this.options),!!D.match(l[c.COMPARATORLOOSE])))),u("range list",O);const A=new Map,x=O.map(D=>new f(D,this.options));for(const D of x){if(B(D))return[D];A.set(D.value,D)}A.size>1&&A.has("")&&A.delete("");const G=[...A.values()];return s.set(w,G),G}intersects(p,y){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(w=>q(w,y)&&p.set.some(L=>q(L,y)&&w.every(v=>L.every(N=>v.intersects(N,y)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new $(p,this.options)}catch{return!1}for(let y=0;yE.value==="<0.0.0-0",V=E=>E.value==="",q=(E,p)=>{let y=!0;const w=E.slice();let L=w.pop();for(;y&&w.length;)y=w.every(v=>L.intersects(v,p)),L=w.pop();return y},te=(E,p)=>(u("comp",E,p),E=ae(E,p),u("caret",E),E=H(E,p),u("tildes",E),E=le(E,p),u("xrange",E),E=ye(E,p),u("stars",E),E),b=E=>!E||E.toLowerCase()==="x"||E==="*",H=(E,p)=>E.trim().split(/\s+/).map(y=>Re(y,p)).join(" "),Re=(E,p)=>{const y=p.loose?l[c.TILDELOOSE]:l[c.TILDE];return E.replace(y,(w,L,v,N,O)=>{u("tilde",E,w,L,v,N,O);let A;return b(L)?A="":b(v)?A=`>=${L}.0.0 <${+L+1}.0.0-0`:b(N)?A=`>=${L}.${v}.0 <${L}.${+v+1}.0-0`:O?(u("replaceTilde pr",O),A=`>=${L}.${v}.${N}-${O} <${L}.${+v+1}.0-0`):A=`>=${L}.${v}.${N} <${L}.${+v+1}.0-0`,u("tilde return",A),A})},ae=(E,p)=>E.trim().split(/\s+/).map(y=>X(y,p)).join(" "),X=(E,p)=>{u("caret",E,p);const y=p.loose?l[c.CARETLOOSE]:l[c.CARET],w=p.includePrerelease?"-0":"";return E.replace(y,(L,v,N,O,A)=>{u("caret",E,L,v,N,O,A);let x;return b(v)?x="":b(N)?x=`>=${v}.0.0${w} <${+v+1}.0.0-0`:b(O)?v==="0"?x=`>=${v}.${N}.0${w} <${v}.${+N+1}.0-0`:x=`>=${v}.${N}.0${w} <${+v+1}.0.0-0`:A?(u("replaceCaret pr",A),v==="0"?N==="0"?x=`>=${v}.${N}.${O}-${A} <${v}.${N}.${+O+1}-0`:x=`>=${v}.${N}.${O}-${A} <${v}.${+N+1}.0-0`:x=`>=${v}.${N}.${O}-${A} <${+v+1}.0.0-0`):(u("no pr"),v==="0"?N==="0"?x=`>=${v}.${N}.${O}${w} <${v}.${N}.${+O+1}-0`:x=`>=${v}.${N}.${O}${w} <${v}.${+N+1}.0-0`:x=`>=${v}.${N}.${O} <${+v+1}.0.0-0`),u("caret return",x),x})},le=(E,p)=>(u("replaceXRanges",E,p),E.split(/\s+/).map(y=>Ie(y,p)).join(" ")),Ie=(E,p)=>{E=E.trim();const y=p.loose?l[c.XRANGELOOSE]:l[c.XRANGE];return E.replace(y,(w,L,v,N,O,A)=>{u("xRange",E,w,L,v,N,O,A);const x=b(v),G=x||b(N),D=G||b(O),ee=D;return L==="="&&ee&&(L=""),A=p.includePrerelease?"-0":"",x?L===">"||L==="<"?w="<0.0.0-0":w="*":L&&ee?(G&&(N=0),O=0,L===">"?(L=">=",G?(v=+v+1,N=0,O=0):(N=+N+1,O=0)):L==="<="&&(L="<",G?v=+v+1:N=+N+1),L==="<"&&(A="-0"),w=`${L+v}.${N}.${O}${A}`):G?w=`>=${v}.0.0${A} <${+v+1}.0.0-0`:D&&(w=`>=${v}.${N}.0${A} <${v}.${+N+1}.0-0`),u("xRange return",w),w})},ye=(E,p)=>(u("replaceStars",E,p),E.trim().replace(l[c.STAR],"")),Le=(E,p)=>(u("replaceGTE0",E,p),E.trim().replace(l[p.includePrerelease?c.GTE0PRE:c.GTE0],"")),ce=E=>(p,y,w,L,v,N,O,A,x,G,D,ee)=>(b(w)?y="":b(L)?y=`>=${w}.0.0${E?"-0":""}`:b(v)?y=`>=${w}.${L}.0${E?"-0":""}`:N?y=`>=${y}`:y=`>=${y}${E?"-0":""}`,b(x)?A="":b(G)?A=`<${+x+1}.0.0-0`:b(D)?A=`<${x}.${+G+1}.0-0`:ee?A=`<=${x}.${G}.${D}-${ee}`:E?A=`<${x}.${G}.${+D+1}-0`:A=`<=${A}`,`${y} ${A}`.trim()),J=(E,p,y)=>{for(let w=0;w0){const L=E[w].semver;if(L.major===p.major&&L.minor===p.minor&&L.patch===p.patch)return!0}return!1}return!0};return Ne}var Ae,ut;function ge(){if(ut)return Ae;ut=1;const i=Symbol("SemVer ANY");class e{static get ANY(){return i}constructor(m,R){if(R=t(R),m instanceof e){if(m.loose===!!R.loose)return m;m=m.value}m=m.trim().split(/\s+/).join(" "),u("comparator",m,R),this.options=R,this.loose=!!R.loose,this.parse(m),this.semver===i?this.value="":this.value=this.operator+this.semver.version,u("comp",this)}parse(m){const R=this.options.loose?s[o.COMPARATORLOOSE]:s[o.COMPARATOR],_=m.match(R);if(!_)throw new TypeError(`Invalid comparator: ${m}`);this.operator=_[1]!==void 0?_[1]:"",this.operator==="="&&(this.operator=""),_[2]?this.semver=new $(_[2],this.options.loose):this.semver=i}toString(){return this.value}test(m){if(u("Comparator.test",m,this.options.loose),this.semver===i||m===i)return!0;if(typeof m=="string")try{m=new $(m,this.options)}catch{return!1}return f(m,this.operator,this.semver,this.options)}intersects(m,R){if(!(m instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new l(m.value,R).test(this.value):m.operator===""?m.value===""?!0:new l(this.value,R).test(m.semver):(R=t(R),R.includePrerelease&&(this.value==="<0.0.0-0"||m.value==="<0.0.0-0")||!R.includePrerelease&&(this.value.startsWith("<0.0.0")||m.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&m.operator.startsWith(">")||this.operator.startsWith("<")&&m.operator.startsWith("<")||this.semver.version===m.semver.version&&this.operator.includes("=")&&m.operator.includes("=")||f(this.semver,"<",m.semver,R)&&this.operator.startsWith(">")&&m.operator.startsWith("<")||f(this.semver,">",m.semver,R)&&this.operator.startsWith("<")&&m.operator.startsWith(">")))}}Ae=e;const t=xe,{safeRe:s,t:o}=oe,f=Pt,u=we,$=U,l=K();return Ae}const bn=K(),Dn=(i,e,t)=>{try{e=new bn(e,t)}catch{return!1}return e.test(i)};var $e=Dn;const Fn=K(),jn=(i,e)=>new Fn(i,e).set.map(t=>t.map(s=>s.value).join(" ").trim().split(" "));var Gn=jn;const kn=U,Mn=K(),Wn=(i,e,t)=>{let s=null,o=null,f=null;try{f=new Mn(e,t)}catch{return null}return i.forEach(u=>{f.test(u)&&(!s||o.compare(u)===-1)&&(s=u,o=new kn(s,t))}),s};var Un=Wn;const Vn=U,Xn=K(),Hn=(i,e,t)=>{let s=null,o=null,f=null;try{f=new Xn(e,t)}catch{return null}return i.forEach(u=>{f.test(u)&&(!s||o.compare(u)===1)&&(s=u,o=new Vn(s,t))}),s};var Bn=Hn;const Oe=U,qn=K(),dt=ve,zn=(i,e)=>{i=new qn(i,e);let t=new Oe("0.0.0");if(i.test(t)||(t=new Oe("0.0.0-0"),i.test(t)))return t;t=null;for(let s=0;s{const $=new Oe(u.semver.version);switch(u.operator){case">":$.prerelease.length===0?$.patch++:$.prerelease.push(0),$.raw=$.format();case"":case">=":(!f||dt($,f))&&(f=$);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),f&&(!t||dt(t,f))&&(t=f)}return t&&i.test(t)?t:null};var Yn=zn;const Kn=K(),Zn=(i,e)=>{try{return new Kn(i,e).range||"*"}catch{return null}};var Jn=Zn;const Qn=U,_t=ge(),{ANY:es}=_t,ts=K(),rs=$e,pt=ve,mt=De,ns=je,ss=Fe,is=(i,e,t,s)=>{i=new Qn(i,s),e=new ts(e,s);let o,f,u,$,l;switch(t){case">":o=pt,f=ns,u=mt,$=">",l=">=";break;case"<":o=mt,f=ss,u=pt,$="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(rs(i,e,s))return!1;for(let c=0;c{I.semver===es&&(I=new _t(">=0.0.0")),R=R||I,_=_||I,o(I.semver,R.semver,s)?R=I:u(I.semver,_.semver,s)&&(_=I)}),R.operator===$||R.operator===l||(!_.operator||_.operator===$)&&f(i,_.semver))return!1;if(_.operator===l&&u(i,_.semver))return!1}return!0};var Ge=is;const os=Ge,as=(i,e,t)=>os(i,e,">",t);var ls=as;const cs=Ge,hs=(i,e,t)=>cs(i,e,"<",t);var fs=hs;const Et=K(),us=(i,e,t)=>(i=new Et(i,t),e=new Et(e,t),i.intersects(e,t));var ds=us;const ps=$e,ms=Y;var Es=(i,e,t)=>{const s=[];let o=null,f=null;const u=i.sort((m,R)=>ms(m,R,t));for(const m of u)ps(m,e,t)?(f=m,o||(o=m)):(f&&s.push([o,f]),f=null,o=null);o&&s.push([o,null]);const $=[];for(const[m,R]of s)m===R?$.push(m):!R&&m===u[0]?$.push("*"):R?m===u[0]?$.push(`<=${R}`):$.push(`${m} - ${R}`):$.push(`>=${m}`);const l=$.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{if(i===e)return!0;i=new wt(i,t),e=new wt(e,t);let s=!1;e:for(const o of i.set){for(const f of e.set){const u=gs(o,f,t);if(s=s||u!==null,u)continue e}if(s)return!1}return!0},vs=[new ke(">=0.0.0-0")],vt=[new ke(">=0.0.0")],gs=(i,e,t)=>{if(i===e)return!0;if(i.length===1&&i[0].semver===Ce){if(e.length===1&&e[0].semver===Ce)return!0;t.includePrerelease?i=vs:i=vt}if(e.length===1&&e[0].semver===Ce){if(t.includePrerelease)return!0;e=vt}const s=new Set;let o,f;for(const I of i)I.operator===">"||I.operator===">="?o=gt(o,I,t):I.operator==="<"||I.operator==="<="?f=$t(f,I,t):s.add(I.semver);if(s.size>1)return null;let u;if(o&&f){if(u=Me(o.semver,f.semver,t),u>0)return null;if(u===0&&(o.operator!==">="||f.operator!=="<="))return null}for(const I of s){if(o&&!ie(I,String(o),t)||f&&!ie(I,String(f),t))return null;for(const T of e)if(!ie(I,String(T),t))return!1;return!0}let $,l,c,m,R=f&&!t.includePrerelease&&f.semver.prerelease.length?f.semver:!1,_=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;R&&R.prerelease.length===1&&f.operator==="<"&&R.prerelease[0]===0&&(R=!1);for(const I of e){if(m=m||I.operator===">"||I.operator===">=",c=c||I.operator==="<"||I.operator==="<=",o){if(_&&I.semver.prerelease&&I.semver.prerelease.length&&I.semver.major===_.major&&I.semver.minor===_.minor&&I.semver.patch===_.patch&&(_=!1),I.operator===">"||I.operator===">="){if($=gt(o,I,t),$===I&&$!==o)return!1}else if(o.operator===">="&&!ie(o.semver,String(I),t))return!1}if(f){if(R&&I.semver.prerelease&&I.semver.prerelease.length&&I.semver.major===R.major&&I.semver.minor===R.minor&&I.semver.patch===R.patch&&(R=!1),I.operator==="<"||I.operator==="<="){if(l=$t(f,I,t),l===I&&l!==f)return!1}else if(f.operator==="<="&&!ie(f.semver,String(I),t))return!1}if(!I.operator&&(f||o)&&u!==0)return!1}return!(o&&c&&!f&&u!==0||f&&m&&!o&&u!==0||_||R)},gt=(i,e,t)=>{if(!i)return e;const s=Me(i.semver,e.semver,t);return s>0?i:s<0||e.operator===">"&&i.operator===">="?e:i},$t=(i,e,t)=>{if(!i)return e;const s=Me(i.semver,e.semver,t);return s<0?i:s>0||e.operator==="<"&&i.operator==="<="?e:i};var $s=ws;const Pe=oe,Rt=Ee,Rs=U,It=At,Is=se,ys=Ar,Ls=Pr,Ts=xr,Ss=Dr,Ns=Gr,As=Wr,Os=Xr,Cs=qr,Ps=Y,_s=Zr,xs=en,bs=be,Ds=sn,Fs=ln,js=ve,Gs=De,ks=Ot,Ms=Ct,Ws=Fe,Us=je,Vs=Pt,Xs=Pn,Hs=ge(),Bs=K(),qs=$e,zs=Gn,Ys=Un,Ks=Bn,Zs=Yn,Js=Jn,Qs=Ge,ei=ls,ti=fs,ri=ds,ni=Es,si=$s;var ii={parse:Is,valid:ys,clean:Ls,inc:Ts,diff:Ss,major:Ns,minor:As,patch:Os,prerelease:Cs,compare:Ps,rcompare:_s,compareLoose:xs,compareBuild:bs,sort:Ds,rsort:Fs,gt:js,lt:Gs,eq:ks,neq:Ms,gte:Ws,lte:Us,cmp:Vs,coerce:Xs,Comparator:Hs,Range:Bs,satisfies:qs,toComparators:zs,maxSatisfying:Ys,minSatisfying:Ks,minVersion:Zs,validRange:Js,outside:Qs,gtr:ei,ltr:ti,intersects:ri,simplifyRange:ni,subset:si,SemVer:Rs,re:Pe.re,src:Pe.src,tokens:Pe.t,SEMVER_SPEC_VERSION:Rt.SEMVER_SPEC_VERSION,RELEASE_TYPES:Rt.RELEASE_TYPES,compareIdentifiers:It.compareIdentifiers,rcompareIdentifiers:It.rcompareIdentifiers};const oi=Lt(ii);var xt={exports:{}};(function(i){(function(){function e(r,n,h){return r.call.apply(r.bind,arguments)}function t(r,n,h){if(!r)throw Error();if(2=n.f?C():r.fonts.load(Re(n.a),n.h).then(function(F){1<=F.length?S():setTimeout(P,25)},function(){C()})}P()}),d=null,g=new Promise(function(S,C){d=setTimeout(C,n.f)});Promise.race([g,a]).then(function(){d&&(clearTimeout(d),d=null),n.g(n.a)},function(){n.j(n.a)})};function N(r,n,h,a,d,g,S){this.v=r,this.B=n,this.c=h,this.a=a,this.s=S||"BESbswy",this.f={},this.w=d||3e3,this.u=g||null,this.m=this.j=this.h=this.g=null,this.g=new y(this.c,this.s),this.h=new y(this.c,this.s),this.j=new y(this.c,this.s),this.m=new y(this.c,this.s),r=new H(this.a.c+",serif",X(this.a)),r=L(r),this.g.a.style.cssText=r,r=new H(this.a.c+",sans-serif",X(this.a)),r=L(r),this.h.a.style.cssText=r,r=new H("serif",X(this.a)),r=L(r),this.j.a.style.cssText=r,r=new H("sans-serif",X(this.a)),r=L(r),this.m.a.style.cssText=r,w(this.g),w(this.h),w(this.j),w(this.m)}var O={D:"serif",C:"sans-serif"},A=null;function x(){if(A===null){var r=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);A=!!r&&(536>parseInt(r[1],10)||parseInt(r[1],10)===536&&11>=parseInt(r[2],10))}return A}N.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f["sans-serif"]=this.m.a.offsetWidth,this.A=o(),D(this)};function G(r,n,h){for(var a in O)if(O.hasOwnProperty(a)&&n===r.f[O[a]]&&h===r.f[O[a]])return!0;return!1}function D(r){var n=r.g.a.offsetWidth,h=r.h.a.offsetWidth,a;(a=n===r.f.serif&&h===r.f["sans-serif"])||(a=x()&&G(r,n,h)),a?o()-r.A>=r.w?x()&&G(r,n,h)&&(r.u===null||r.u.hasOwnProperty(r.a.c))?Te(r,r.v):Te(r,r.B):ee(r):Te(r,r.v)}function ee(r){setTimeout(s(function(){D(this)},r),50)}function Te(r,n){setTimeout(s(function(){c(this.g.a),c(this.h.a),c(this.j.a),c(this.m.a),n(this.a)},r),0)}function Se(r,n,h){this.c=r,this.a=n,this.f=0,this.m=this.j=!1,this.s=h}var he=null;Se.prototype.g=function(r){var n=this.a;n.g&&m(n.f,[n.a.c("wf",r.c,X(r).toString(),"active")],[n.a.c("wf",r.c,X(r).toString(),"loading"),n.a.c("wf",r.c,X(r).toString(),"inactive")]),J(n,"fontactive",r),this.m=!0,We(this)},Se.prototype.h=function(r){var n=this.a;if(n.g){var h=R(n.f,n.a.c("wf",r.c,X(r).toString(),"active")),a=[],d=[n.a.c("wf",r.c,X(r).toString(),"loading")];h||a.push(n.a.c("wf",r.c,X(r).toString(),"inactive")),m(n.f,a,d)}J(n,"fontinactive",r),We(this)};function We(r){--r.f==0&&r.j&&(r.m?(r=r.a,r.g&&m(r.f,[r.a.c("wf","active")],[r.a.c("wf","loading"),r.a.c("wf","inactive")]),J(r,"active")):ce(r.a))}function Ue(r){this.j=r,this.a=new E,this.h=0,this.f=this.g=!0}Ue.prototype.load=function(r){this.c=new f(this.j,r.context||this.j),this.g=r.events!==!1,this.f=r.classes!==!1,Dt(this,new ye(this.c,r),r)};function bt(r,n,h,a,d){var g=--r.h==0;(r.f||r.g)&&setTimeout(function(){var S=d||null,C=a||null||{};if(h.length===0&&g)ce(n.a);else{n.f+=h.length,g&&(n.j=g);var P,F=[];for(P=0;Pthis.createElement(o));t.replaceChildren(...s)}createElement(e){if(e.type=="separator"){const t=document.createElement("div");return t.classList.add("separator"),t}if(e.type=="selection"||e.type=="checkbox"||e.type=="dropdown"){const t=document.createElement("div"),s=document.createElement("div"),o=document.createElement("div");let f;if(e.type=="selection"||e.type=="checkbox"){const u=zt[e.id]??{label:e.id,combos:[],callback:()=>{}};f=document.createElement("div"),f.innerText=Tt.getKeybindString(e.id),f.classList.add("keybind","unselectable"),o.innerText=u.label;let $=u.disabled;typeof $=="function"&&($=$(this.app)),$&&t.classList.add("disabled"),t.addEventListener("click",()=>{if($)return;u.callback(this.app),t.closest(".menu-main").querySelector(".menubar-dropdown").replaceChildren()})}else f=document.createElement("img"),f.classList.add("icon"),f.src=Yt.CHEVRON,f.style.transform="rotate(-90deg)",o.innerText=typeof e.title=="function"?e.title(this.app):e.title;if(s.appendChild(o),s.appendChild(f),t.appendChild(s),t.classList.add("menu-item"),s.classList.add("menu-item-title","menu-hover"),o.classList.add("title","unselectable"),e.type=="dropdown"){const u=document.createElement("div");t.appendChild(u),u.classList.add("menubar-dropdown"),e.options.map($=>this.createElement($)).forEach($=>u.appendChild($))}if(e.type=="checkbox"){let u=e.checked;typeof u=="function"&&(u=u(this.app)),u&&(o.innerText="✓ "+o.innerText)}return t}if(e.type=="menu"){const t=document.createElement("div"),s=document.createElement("div"),o=document.createElement("div");return t.appendChild(s),s.innerText=e.title,t.appendChild(o),s.classList.add("title","unselectable"),t.classList.add("menu-item","menu-main"),s.classList.add("menu-hover"),o.classList.add("menubar-dropdown","unselectable"),t.onmouseenter=()=>{o.replaceChildren(...e.options.map(f=>this.createElement(f)))},t.onmouseleave=()=>{o.replaceChildren()},t}return document.createElement("div")}}class hi{view;windows=[];app;constructor(e,t){this.app=e,this.view=t}unfocusAll(){for(const e of this.view.querySelectorAll(".focused"))e.classList.remove("focused")}getFocusedWindow(){for(const e of this.windows)if(e.windowElement.classList.contains("focused"))return e;return null}isBlocked(){return!this.windows.every(e=>!e.options.blocking)}openWindow(e){if(e.options.win_id){const t=this.getWindowById(e.options.win_id);if(t){t.focus();return}}e.addToManager(this),this.windows.push(e)}removeWindow(e){this.windows.splice(this.windows.indexOf(e),1)}getWindowById(e){for(const t of this.windows)if(t.options.win_id==e)return t}}class fi{options=W;renderer;ticker;stage;view;chartManager;windowManager;menubarManager;actionHistory;lastWidth=window.innerWidth;lastHeight=window.innerHeight;constructor(){if(Jt.setDefaultProps({duration:[200,100],theme:"sm"}),window.nw){const e=nw.Window.get();nw.App.on("open",t=>{if(!t||t?.length===0){nw.Window.open(window.location.href);return}let s="";for(const o of t)if(fe(o)==".ssc"){s=o;break}else s==""&&fe(o)==".sm"&&(s=o);s!=""&&(this.chartManager.loadSM(s),this.windowManager.getWindowById("select_sm_initial")?.closeWindow())}),window.addEventListener("keydown",t=>{(t.key=="r"&&(t.metaKey||t.ctrlKey)||t.key=="F5")&&(t.preventDefault(),e.reload()),t.code=="KeyW"&&(t.metaKey||t.ctrlKey)&&(t.preventDefault(),e.close()),process.versions["nw-flavor"]=="sdk"&&(t.code=="KeyI"&&t.metaKey&&t.altKey||t.key=="F5")&&(t.preventDefault(),e.showDevTools())}),e.on("enter-fullscreen",()=>{W.app.fullscreen=e.isFullscreen}),e.on("resize",(t,s)=>{e.isFullscreen||(W.app.width=t,W.app.height=s)}),e.on("restore",()=>{W.app.fullscreen=e.isFullscreen}),this.checkAppVersion()}if(W.loadOptions(),Qt(),Tt.load(this),window.nw){const e=nw.Window.get();W.app.fullscreen?e.enterFullscreen():e.resizeTo(W.app.width,W.app.height)}if(setInterval(()=>W.saveOptions(),1e4),W.general.smoothAnimations&&document.body.classList.add("animated"),this.registerFonts(),this.view=document.getElementById("pixi"),document.oncontextmenu=e=>{e.preventDefault(),this.chartManager.loadedChart&&e.target==this.view&&Ke.open(this,e)},this.view.onmousedown=()=>{Ke.close()},this.stage=new er,this.stage.sortableChildren=!0,this.renderer=new tr({backgroundColor:1579292,antialias:W.performance.antialiasing,width:this.view.clientWidth,height:this.view.clientHeight,resolution:W.performance.resolution,autoDensity:!0,view:this.view,powerPreference:"low-power"}),this.ticker=new rr,this.ticker.maxFPS=0,this.ticker.add(()=>{const e=performance.now();this.renderer.render(this.stage),Ze.instance?.addFrameTimeValue(performance.now()-e),performance.memory?.usedJSHeapSize&&Ze.instance?.addMemoryTimeValue(performance.memory.usedJSHeapSize),ur()},nr.LOW),this.ticker.start(),sr.init(this.renderer),this.chartManager=new ir(this),this.menubarManager=new ci(this,document.getElementById("menubar")),this.windowManager=new hi(this,document.getElementById("windows")),this.actionHistory=new Je(this),this.registerListeners(),!k.hidePoweredByText&&or()){const e=document.getElementById("embed");e.appendChild(document.createTextNode("Powered by "));const t=document.createElement("a");if(t.href="https://tillvit.github.io/smeditor/",t.innerText="SMEditor",t.target="_blank",e.appendChild(t),k.url!=null){e.appendChild(document.createTextNode(" | Open this chart in a "));const s=document.createElement("a"),o=new URL(location.origin+"/smeditor/app/");s.innerText="new tab",s.target="_blank",o.searchParams.append("url",k.url),k.chartType!==null&&o.searchParams.append("chartType",k.chartType),k.chartIndex!==null&&o.searchParams.append("chartIndex",k.chartIndex+""),s.href=o.toString(),e.appendChild(s)}}Qe.initFileSystem().then(()=>{if(k.url){this.chartManager.loadSM(k.url).then(()=>{const e=this.chartManager.loadedSM;if(!e)return;let t;if(k.chartType!=null&&(t=e.charts[k.chartType],t===void 0)){tt.createFormatted(`Couldn't find chart with type ${k.chartType}`,"warn");return}if(t===void 0){const o=Object.keys(e.charts);if(o.length==0||(t=e.charts[o[0]],t.length==0))return}let s;if(k.chartIndex!=null&&(s=t.at(k.chartIndex),s===void 0)){tt.createFormatted(`Couldn't find chart with index ${k.chartIndex}`,"warn");return}s===void 0&&(s=t.at(-1),!s)||this.chartManager.loadChart(s)});return}this.windowManager.openWindow(new ar(this))}),window.onbeforeunload=e=>{if(Je.instance.isDirty()&&W.general.warnBeforeExit)return e.preventDefault(),e.returnValue="Are you sure you want to exit?"},window.onunload=()=>{W.saveOptions()}}registerFonts(){et.from("Main",{fontFamily:"Assistant",fontSize:20,fill:"white"},{chars:[["a","z"],["A","Z"],"!@#$%^&*()~{}[]:.-?=,_","0123456789/"," "],resolution:window.devicePixelRatio}),et.from("Fancy",{fontFamily:"Assistant",fontSize:40,fontWeight:"700",fill:["#dddddd","#ffffff"],fillGradientType:lr.LINEAR_VERTICAL,stroke:11184810,strokeThickness:3},{chars:[["a","z"],["A","Z"],"!@#$%^&*()~{}[]:.-?=,_","0123456789/"," "],resolution:window.devicePixelRatio})}registerListeners(){this.view.addEventListener("mousedown",()=>{this.windowManager.unfocusAll()}),window.addEventListener("keydown",function(e){e.code=="Enter"&&e.target instanceof HTMLButtonElement&&e.preventDefault()}),window.addEventListener("dragstart",function(e){e.target instanceof HTMLImageElement&&e.preventDefault()}),setInterval(()=>{const e=window.innerWidth,t=window.innerHeight-document.getElementById("menubar").clientHeight-document.getElementById("playback-options").clientHeight;(this.lastHeight!=t||this.lastWidth!=e)&&(this.lastHeight=t,this.lastWidth=e,this.onResize(e,t),cr.emit("resize"))},100),window.addEventListener("dragover",e=>{e.preventDefault(),e.dataTransfer.dropEffect="copy"}),window.addEventListener("drop",e=>{if(window.nw){e.stopPropagation(),e.preventDefault();let t="";for(const s of e.dataTransfer.files)if(s.path)if(fe(s.path)==".ssc"){t=s.path;break}else t==""&&fe(s.path)==".sm"&&(t=s.path);t!=""&&(this.chartManager.loadSM(t),this.windowManager.getWindowById("select_sm_initial")?.closeWindow())}else Qe.handleDropEvent(e).then(t=>{const s=new hr(this,{title:"Select an sm/ssc file...",accepted_file_types:[".sm",".ssc"],disableClose:!0,callback:o=>{this.chartManager.loadSM(o),this.windowManager.getWindowById("select_sm_initial")?.closeWindow()},onload:()=>{s.getAcceptableFile(t??"").then(o=>s.selectPath(o))}});this.windowManager.openWindow(s)})})}onResize(e,t){this.renderer.screen.width=e,this.renderer.screen.height=t,this.view.width=e*this.renderer.resolution,this.view.height=t*this.renderer.resolution,this.view.style.width=`${e}px`,this.view.style.height=`${t}px`}checkAppVersion(){if(!window.nw)return;const e=nw.require("nw.gui"),t={stable:3,beta:2,alpha:1,nightly:0};let s="win";process.platform=="darwin"?s=nw.require("os").arch()=="arm64"?"mac-arm":"mac-x64":process.platform=="linux"&&(s="linux"),fetch("/smeditor/assets/app/versions.json").then(o=>o.json()).then(o=>{o=o.sort((u,$)=>t[u.type]!=t[$.type]?t[$.type]-t[u.type]:$.date-u.date);const f=o[0];oi.lt(e.App.manifest.version,f.version)&&localStorage.getItem("downloadedVersion")!==f.version&&fr.open(f.version,f.downloads[s])})}}document.querySelector("body").innerHTML=`
+import{g as Lt,F as k,M as qt,K as zt,a as Tt,I as Yt,G as Kt,N as Zt,O as W,t as Jt,e as fe,l as Qt,C as Ke,b as er,R as tr,T as rr,D as Ze,U as nr,B as sr,c as ir,A as Je,i as or,d as Qe,f as ar,h as et,j as lr,E as cr,k as hr,m as fr,W as tt,n as ur}from"./ChartManager-b82bf91a.js";var _e={exports:{}};const dr="2.0.0",St=256,pr=Number.MAX_SAFE_INTEGER||9007199254740991,mr=16,Er=St-6,wr=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var Ee={MAX_LENGTH:St,MAX_SAFE_COMPONENT_LENGTH:mr,MAX_SAFE_BUILD_LENGTH:Er,MAX_SAFE_INTEGER:pr,RELEASE_TYPES:wr,SEMVER_SPEC_VERSION:dr,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const vr=typeof process=="object"&&process.env&&{}.NODE_DEBUG&&/\bsemver\b/i.test({}.NODE_DEBUG)?(...i)=>console.error("SEMVER",...i):()=>{};var we=vr;(function(i,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:o}=Ee,f=we;e=i.exports={};const u=e.re=[],$=e.safeRe=[],l=e.src=[],c=e.t={};let m=0;const R="[a-zA-Z0-9-]",_=[["\\s",1],["\\d",o],[R,s]],I=B=>{for(const[V,q]of _)B=B.split(`${V}*`).join(`${V}{0,${q}}`).split(`${V}+`).join(`${V}{1,${q}}`);return B},T=(B,V,q)=>{const te=I(V),b=m++;f(B,b,V),c[B]=b,l[b]=V,u[b]=new RegExp(V,q?"g":void 0),$[b]=new RegExp(te,q?"g":void 0)};T("NUMERICIDENTIFIER","0|[1-9]\\d*"),T("NUMERICIDENTIFIERLOOSE","\\d+"),T("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${R}*`),T("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),T("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),T("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),T("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),T("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),T("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),T("BUILDIDENTIFIER",`${R}+`),T("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),T("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),T("FULL",`^${l[c.FULLPLAIN]}$`),T("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),T("LOOSE",`^${l[c.LOOSEPLAIN]}$`),T("GTLT","((?:<|>)?=?)"),T("XRANGEIDENTIFIERLOOSE",`${l[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),T("XRANGEIDENTIFIER",`${l[c.NUMERICIDENTIFIER]}|x|X|\\*`),T("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),T("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),T("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),T("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),T("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),T("COERCE",`${l[c.COERCEPLAIN]}(?:$|[^\\d])`),T("COERCEFULL",l[c.COERCEPLAIN]+`(?:${l[c.PRERELEASE]})?(?:${l[c.BUILD]})?(?:$|[^\\d])`),T("COERCERTL",l[c.COERCE],!0),T("COERCERTLFULL",l[c.COERCEFULL],!0),T("LONETILDE","(?:~>?)"),T("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",T("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),T("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),T("LONECARET","(?:\\^)"),T("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",T("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),T("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),T("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),T("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),T("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",T("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),T("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),T("STAR","(<|>)?=?\\s*\\*"),T("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),T("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(_e,_e.exports);var oe=_e.exports;const gr=Object.freeze({loose:!0}),$r=Object.freeze({}),Rr=i=>i?typeof i!="object"?gr:i:$r;var xe=Rr;const rt=/^[0-9]+$/,Nt=(i,e)=>{const t=rt.test(i),s=rt.test(e);return t&&s&&(i=+i,e=+e),i===e?0:t&&!s?-1:s&&!t?1:iNt(e,i);var At={compareIdentifiers:Nt,rcompareIdentifiers:Ir};const ue=we,{MAX_LENGTH:nt,MAX_SAFE_INTEGER:de}=Ee,{safeRe:st,t:it}=oe,yr=xe,{compareIdentifiers:ne}=At;let Lr=class Z{constructor(e,t){if(t=yr(t),e instanceof Z){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>nt)throw new TypeError(`version is longer than ${nt} characters`);ue("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const s=e.trim().match(t.loose?st[it.LOOSE]:st[it.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>de||this.major<0)throw new TypeError("Invalid major version");if(this.minor>de||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>de||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const f=+o;if(f>=0&&f=0;)typeof this.prerelease[f]=="number"&&(this.prerelease[f]++,f=-2);if(f===-1){if(t===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let f=[t,o];s===!1&&(f=[t]),ne(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=f):this.prerelease=f}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var U=Lr;const ot=U,Tr=(i,e,t=!1)=>{if(i instanceof ot)return i;try{return new ot(i,e)}catch(s){if(!t)return null;throw s}};var se=Tr;const Sr=se,Nr=(i,e)=>{const t=Sr(i,e);return t?t.version:null};var Ar=Nr;const Or=se,Cr=(i,e)=>{const t=Or(i.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var Pr=Cr;const at=U,_r=(i,e,t,s,o)=>{typeof t=="string"&&(o=s,s=t,t=void 0);try{return new at(i instanceof at?i.version:i,t).inc(e,s,o).version}catch{return null}};var xr=_r;const lt=se,br=(i,e)=>{const t=lt(i,null,!0),s=lt(e,null,!0),o=t.compare(s);if(o===0)return null;const f=o>0,u=f?t:s,$=f?s:t,l=!!u.prerelease.length;if(!!$.prerelease.length&&!l)return!$.patch&&!$.minor?"major":u.patch?"patch":u.minor?"minor":"major";const m=l?"pre":"";return t.major!==s.major?m+"major":t.minor!==s.minor?m+"minor":t.patch!==s.patch?m+"patch":"prerelease"};var Dr=br;const Fr=U,jr=(i,e)=>new Fr(i,e).major;var Gr=jr;const kr=U,Mr=(i,e)=>new kr(i,e).minor;var Wr=Mr;const Ur=U,Vr=(i,e)=>new Ur(i,e).patch;var Xr=Vr;const Hr=se,Br=(i,e)=>{const t=Hr(i,e);return t&&t.prerelease.length?t.prerelease:null};var qr=Br;const ct=U,zr=(i,e,t)=>new ct(i,t).compare(new ct(e,t));var Y=zr;const Yr=Y,Kr=(i,e,t)=>Yr(e,i,t);var Zr=Kr;const Jr=Y,Qr=(i,e)=>Jr(i,e,!0);var en=Qr;const ht=U,tn=(i,e,t)=>{const s=new ht(i,t),o=new ht(e,t);return s.compare(o)||s.compareBuild(o)};var be=tn;const rn=be,nn=(i,e)=>i.sort((t,s)=>rn(t,s,e));var sn=nn;const on=be,an=(i,e)=>i.sort((t,s)=>on(s,t,e));var ln=an;const cn=Y,hn=(i,e,t)=>cn(i,e,t)>0;var ve=hn;const fn=Y,un=(i,e,t)=>fn(i,e,t)<0;var De=un;const dn=Y,pn=(i,e,t)=>dn(i,e,t)===0;var Ot=pn;const mn=Y,En=(i,e,t)=>mn(i,e,t)!==0;var Ct=En;const wn=Y,vn=(i,e,t)=>wn(i,e,t)>=0;var Fe=vn;const gn=Y,$n=(i,e,t)=>gn(i,e,t)<=0;var je=$n;const Rn=Ot,In=Ct,yn=ve,Ln=Fe,Tn=De,Sn=je,Nn=(i,e,t,s)=>{switch(e){case"===":return typeof i=="object"&&(i=i.version),typeof t=="object"&&(t=t.version),i===t;case"!==":return typeof i=="object"&&(i=i.version),typeof t=="object"&&(t=t.version),i!==t;case"":case"=":case"==":return Rn(i,t,s);case"!=":return In(i,t,s);case">":return yn(i,t,s);case">=":return Ln(i,t,s);case"<":return Tn(i,t,s);case"<=":return Sn(i,t,s);default:throw new TypeError(`Invalid operator: ${e}`)}};var Pt=Nn;const An=U,On=se,{safeRe:pe,t:me}=oe,Cn=(i,e)=>{if(i instanceof An)return i;if(typeof i=="number"&&(i=String(i)),typeof i!="string")return null;e=e||{};let t=null;if(!e.rtl)t=i.match(e.includePrerelease?pe[me.COERCEFULL]:pe[me.COERCE]);else{const l=e.includePrerelease?pe[me.COERCERTLFULL]:pe[me.COERCERTL];let c;for(;(c=l.exec(i))&&(!t||t.index+t[0].length!==i.length);)(!t||c.index+c[0].length!==t.index+t[0].length)&&(t=c),l.lastIndex=c.index+c[1].length+c[2].length;l.lastIndex=-1}if(t===null)return null;const s=t[2],o=t[3]||"0",f=t[4]||"0",u=e.includePrerelease&&t[5]?`-${t[5]}`:"",$=e.includePrerelease&&t[6]?`+${t[6]}`:"";return On(`${s}.${o}.${f}${u}${$}`,e)};var Pn=Cn;class _n{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){const o=this.map.keys().next().value;this.delete(o)}this.map.set(e,t)}return this}}var xn=_n,Ne,ft;function K(){if(ft)return Ne;ft=1;const i=/\s+/g;class e{constructor(p,y){if(y=o(y),p instanceof e)return p.loose===!!y.loose&&p.includePrerelease===!!y.includePrerelease?p:new e(p.raw,y);if(p instanceof f)return this.raw=p.value,this.set=[[p]],this.formatted=void 0,this;if(this.options=y,this.loose=!!y.loose,this.includePrerelease=!!y.includePrerelease,this.raw=p.trim().replace(i," "),this.set=this.raw.split("||").map(w=>this.parseRange(w.trim())).filter(w=>w.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const w=this.set[0];if(this.set=this.set.filter(L=>!B(L[0])),this.set.length===0)this.set=[w];else if(this.set.length>1){for(const L of this.set)if(L.length===1&&V(L[0])){this.set=[L];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let p=0;p0&&(this.formatted+="||");const y=this.set[p];for(let w=0;w0&&(this.formatted+=" "),this.formatted+=y[w].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(p){const w=((this.options.includePrerelease&&I)|(this.options.loose&&T))+":"+p,L=s.get(w);if(L)return L;const v=this.options.loose,N=v?l[c.HYPHENRANGELOOSE]:l[c.HYPHENRANGE];p=p.replace(N,ce(this.options.includePrerelease)),u("hyphen replace",p),p=p.replace(l[c.COMPARATORTRIM],m),u("comparator trim",p),p=p.replace(l[c.TILDETRIM],R),u("tilde trim",p),p=p.replace(l[c.CARETTRIM],_),u("caret trim",p);let O=p.split(" ").map(D=>te(D,this.options)).join(" ").split(/\s+/).map(D=>Le(D,this.options));v&&(O=O.filter(D=>(u("loose invalid filter",D,this.options),!!D.match(l[c.COMPARATORLOOSE])))),u("range list",O);const A=new Map,x=O.map(D=>new f(D,this.options));for(const D of x){if(B(D))return[D];A.set(D.value,D)}A.size>1&&A.has("")&&A.delete("");const G=[...A.values()];return s.set(w,G),G}intersects(p,y){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(w=>q(w,y)&&p.set.some(L=>q(L,y)&&w.every(v=>L.every(N=>v.intersects(N,y)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new $(p,this.options)}catch{return!1}for(let y=0;yE.value==="<0.0.0-0",V=E=>E.value==="",q=(E,p)=>{let y=!0;const w=E.slice();let L=w.pop();for(;y&&w.length;)y=w.every(v=>L.intersects(v,p)),L=w.pop();return y},te=(E,p)=>(u("comp",E,p),E=ae(E,p),u("caret",E),E=H(E,p),u("tildes",E),E=le(E,p),u("xrange",E),E=ye(E,p),u("stars",E),E),b=E=>!E||E.toLowerCase()==="x"||E==="*",H=(E,p)=>E.trim().split(/\s+/).map(y=>Re(y,p)).join(" "),Re=(E,p)=>{const y=p.loose?l[c.TILDELOOSE]:l[c.TILDE];return E.replace(y,(w,L,v,N,O)=>{u("tilde",E,w,L,v,N,O);let A;return b(L)?A="":b(v)?A=`>=${L}.0.0 <${+L+1}.0.0-0`:b(N)?A=`>=${L}.${v}.0 <${L}.${+v+1}.0-0`:O?(u("replaceTilde pr",O),A=`>=${L}.${v}.${N}-${O} <${L}.${+v+1}.0-0`):A=`>=${L}.${v}.${N} <${L}.${+v+1}.0-0`,u("tilde return",A),A})},ae=(E,p)=>E.trim().split(/\s+/).map(y=>X(y,p)).join(" "),X=(E,p)=>{u("caret",E,p);const y=p.loose?l[c.CARETLOOSE]:l[c.CARET],w=p.includePrerelease?"-0":"";return E.replace(y,(L,v,N,O,A)=>{u("caret",E,L,v,N,O,A);let x;return b(v)?x="":b(N)?x=`>=${v}.0.0${w} <${+v+1}.0.0-0`:b(O)?v==="0"?x=`>=${v}.${N}.0${w} <${v}.${+N+1}.0-0`:x=`>=${v}.${N}.0${w} <${+v+1}.0.0-0`:A?(u("replaceCaret pr",A),v==="0"?N==="0"?x=`>=${v}.${N}.${O}-${A} <${v}.${N}.${+O+1}-0`:x=`>=${v}.${N}.${O}-${A} <${v}.${+N+1}.0-0`:x=`>=${v}.${N}.${O}-${A} <${+v+1}.0.0-0`):(u("no pr"),v==="0"?N==="0"?x=`>=${v}.${N}.${O}${w} <${v}.${N}.${+O+1}-0`:x=`>=${v}.${N}.${O}${w} <${v}.${+N+1}.0-0`:x=`>=${v}.${N}.${O} <${+v+1}.0.0-0`),u("caret return",x),x})},le=(E,p)=>(u("replaceXRanges",E,p),E.split(/\s+/).map(y=>Ie(y,p)).join(" ")),Ie=(E,p)=>{E=E.trim();const y=p.loose?l[c.XRANGELOOSE]:l[c.XRANGE];return E.replace(y,(w,L,v,N,O,A)=>{u("xRange",E,w,L,v,N,O,A);const x=b(v),G=x||b(N),D=G||b(O),ee=D;return L==="="&&ee&&(L=""),A=p.includePrerelease?"-0":"",x?L===">"||L==="<"?w="<0.0.0-0":w="*":L&&ee?(G&&(N=0),O=0,L===">"?(L=">=",G?(v=+v+1,N=0,O=0):(N=+N+1,O=0)):L==="<="&&(L="<",G?v=+v+1:N=+N+1),L==="<"&&(A="-0"),w=`${L+v}.${N}.${O}${A}`):G?w=`>=${v}.0.0${A} <${+v+1}.0.0-0`:D&&(w=`>=${v}.${N}.0${A} <${v}.${+N+1}.0-0`),u("xRange return",w),w})},ye=(E,p)=>(u("replaceStars",E,p),E.trim().replace(l[c.STAR],"")),Le=(E,p)=>(u("replaceGTE0",E,p),E.trim().replace(l[p.includePrerelease?c.GTE0PRE:c.GTE0],"")),ce=E=>(p,y,w,L,v,N,O,A,x,G,D,ee)=>(b(w)?y="":b(L)?y=`>=${w}.0.0${E?"-0":""}`:b(v)?y=`>=${w}.${L}.0${E?"-0":""}`:N?y=`>=${y}`:y=`>=${y}${E?"-0":""}`,b(x)?A="":b(G)?A=`<${+x+1}.0.0-0`:b(D)?A=`<${x}.${+G+1}.0-0`:ee?A=`<=${x}.${G}.${D}-${ee}`:E?A=`<${x}.${G}.${+D+1}-0`:A=`<=${A}`,`${y} ${A}`.trim()),J=(E,p,y)=>{for(let w=0;w0){const L=E[w].semver;if(L.major===p.major&&L.minor===p.minor&&L.patch===p.patch)return!0}return!1}return!0};return Ne}var Ae,ut;function ge(){if(ut)return Ae;ut=1;const i=Symbol("SemVer ANY");class e{static get ANY(){return i}constructor(m,R){if(R=t(R),m instanceof e){if(m.loose===!!R.loose)return m;m=m.value}m=m.trim().split(/\s+/).join(" "),u("comparator",m,R),this.options=R,this.loose=!!R.loose,this.parse(m),this.semver===i?this.value="":this.value=this.operator+this.semver.version,u("comp",this)}parse(m){const R=this.options.loose?s[o.COMPARATORLOOSE]:s[o.COMPARATOR],_=m.match(R);if(!_)throw new TypeError(`Invalid comparator: ${m}`);this.operator=_[1]!==void 0?_[1]:"",this.operator==="="&&(this.operator=""),_[2]?this.semver=new $(_[2],this.options.loose):this.semver=i}toString(){return this.value}test(m){if(u("Comparator.test",m,this.options.loose),this.semver===i||m===i)return!0;if(typeof m=="string")try{m=new $(m,this.options)}catch{return!1}return f(m,this.operator,this.semver,this.options)}intersects(m,R){if(!(m instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new l(m.value,R).test(this.value):m.operator===""?m.value===""?!0:new l(this.value,R).test(m.semver):(R=t(R),R.includePrerelease&&(this.value==="<0.0.0-0"||m.value==="<0.0.0-0")||!R.includePrerelease&&(this.value.startsWith("<0.0.0")||m.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&m.operator.startsWith(">")||this.operator.startsWith("<")&&m.operator.startsWith("<")||this.semver.version===m.semver.version&&this.operator.includes("=")&&m.operator.includes("=")||f(this.semver,"<",m.semver,R)&&this.operator.startsWith(">")&&m.operator.startsWith("<")||f(this.semver,">",m.semver,R)&&this.operator.startsWith("<")&&m.operator.startsWith(">")))}}Ae=e;const t=xe,{safeRe:s,t:o}=oe,f=Pt,u=we,$=U,l=K();return Ae}const bn=K(),Dn=(i,e,t)=>{try{e=new bn(e,t)}catch{return!1}return e.test(i)};var $e=Dn;const Fn=K(),jn=(i,e)=>new Fn(i,e).set.map(t=>t.map(s=>s.value).join(" ").trim().split(" "));var Gn=jn;const kn=U,Mn=K(),Wn=(i,e,t)=>{let s=null,o=null,f=null;try{f=new Mn(e,t)}catch{return null}return i.forEach(u=>{f.test(u)&&(!s||o.compare(u)===-1)&&(s=u,o=new kn(s,t))}),s};var Un=Wn;const Vn=U,Xn=K(),Hn=(i,e,t)=>{let s=null,o=null,f=null;try{f=new Xn(e,t)}catch{return null}return i.forEach(u=>{f.test(u)&&(!s||o.compare(u)===1)&&(s=u,o=new Vn(s,t))}),s};var Bn=Hn;const Oe=U,qn=K(),dt=ve,zn=(i,e)=>{i=new qn(i,e);let t=new Oe("0.0.0");if(i.test(t)||(t=new Oe("0.0.0-0"),i.test(t)))return t;t=null;for(let s=0;s{const $=new Oe(u.semver.version);switch(u.operator){case">":$.prerelease.length===0?$.patch++:$.prerelease.push(0),$.raw=$.format();case"":case">=":(!f||dt($,f))&&(f=$);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),f&&(!t||dt(t,f))&&(t=f)}return t&&i.test(t)?t:null};var Yn=zn;const Kn=K(),Zn=(i,e)=>{try{return new Kn(i,e).range||"*"}catch{return null}};var Jn=Zn;const Qn=U,_t=ge(),{ANY:es}=_t,ts=K(),rs=$e,pt=ve,mt=De,ns=je,ss=Fe,is=(i,e,t,s)=>{i=new Qn(i,s),e=new ts(e,s);let o,f,u,$,l;switch(t){case">":o=pt,f=ns,u=mt,$=">",l=">=";break;case"<":o=mt,f=ss,u=pt,$="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(rs(i,e,s))return!1;for(let c=0;c{I.semver===es&&(I=new _t(">=0.0.0")),R=R||I,_=_||I,o(I.semver,R.semver,s)?R=I:u(I.semver,_.semver,s)&&(_=I)}),R.operator===$||R.operator===l||(!_.operator||_.operator===$)&&f(i,_.semver))return!1;if(_.operator===l&&u(i,_.semver))return!1}return!0};var Ge=is;const os=Ge,as=(i,e,t)=>os(i,e,">",t);var ls=as;const cs=Ge,hs=(i,e,t)=>cs(i,e,"<",t);var fs=hs;const Et=K(),us=(i,e,t)=>(i=new Et(i,t),e=new Et(e,t),i.intersects(e,t));var ds=us;const ps=$e,ms=Y;var Es=(i,e,t)=>{const s=[];let o=null,f=null;const u=i.sort((m,R)=>ms(m,R,t));for(const m of u)ps(m,e,t)?(f=m,o||(o=m)):(f&&s.push([o,f]),f=null,o=null);o&&s.push([o,null]);const $=[];for(const[m,R]of s)m===R?$.push(m):!R&&m===u[0]?$.push("*"):R?m===u[0]?$.push(`<=${R}`):$.push(`${m} - ${R}`):$.push(`>=${m}`);const l=$.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{if(i===e)return!0;i=new wt(i,t),e=new wt(e,t);let s=!1;e:for(const o of i.set){for(const f of e.set){const u=gs(o,f,t);if(s=s||u!==null,u)continue e}if(s)return!1}return!0},vs=[new ke(">=0.0.0-0")],vt=[new ke(">=0.0.0")],gs=(i,e,t)=>{if(i===e)return!0;if(i.length===1&&i[0].semver===Ce){if(e.length===1&&e[0].semver===Ce)return!0;t.includePrerelease?i=vs:i=vt}if(e.length===1&&e[0].semver===Ce){if(t.includePrerelease)return!0;e=vt}const s=new Set;let o,f;for(const I of i)I.operator===">"||I.operator===">="?o=gt(o,I,t):I.operator==="<"||I.operator==="<="?f=$t(f,I,t):s.add(I.semver);if(s.size>1)return null;let u;if(o&&f){if(u=Me(o.semver,f.semver,t),u>0)return null;if(u===0&&(o.operator!==">="||f.operator!=="<="))return null}for(const I of s){if(o&&!ie(I,String(o),t)||f&&!ie(I,String(f),t))return null;for(const T of e)if(!ie(I,String(T),t))return!1;return!0}let $,l,c,m,R=f&&!t.includePrerelease&&f.semver.prerelease.length?f.semver:!1,_=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;R&&R.prerelease.length===1&&f.operator==="<"&&R.prerelease[0]===0&&(R=!1);for(const I of e){if(m=m||I.operator===">"||I.operator===">=",c=c||I.operator==="<"||I.operator==="<=",o){if(_&&I.semver.prerelease&&I.semver.prerelease.length&&I.semver.major===_.major&&I.semver.minor===_.minor&&I.semver.patch===_.patch&&(_=!1),I.operator===">"||I.operator===">="){if($=gt(o,I,t),$===I&&$!==o)return!1}else if(o.operator===">="&&!ie(o.semver,String(I),t))return!1}if(f){if(R&&I.semver.prerelease&&I.semver.prerelease.length&&I.semver.major===R.major&&I.semver.minor===R.minor&&I.semver.patch===R.patch&&(R=!1),I.operator==="<"||I.operator==="<="){if(l=$t(f,I,t),l===I&&l!==f)return!1}else if(f.operator==="<="&&!ie(f.semver,String(I),t))return!1}if(!I.operator&&(f||o)&&u!==0)return!1}return!(o&&c&&!f&&u!==0||f&&m&&!o&&u!==0||_||R)},gt=(i,e,t)=>{if(!i)return e;const s=Me(i.semver,e.semver,t);return s>0?i:s<0||e.operator===">"&&i.operator===">="?e:i},$t=(i,e,t)=>{if(!i)return e;const s=Me(i.semver,e.semver,t);return s<0?i:s>0||e.operator==="<"&&i.operator==="<="?e:i};var $s=ws;const Pe=oe,Rt=Ee,Rs=U,It=At,Is=se,ys=Ar,Ls=Pr,Ts=xr,Ss=Dr,Ns=Gr,As=Wr,Os=Xr,Cs=qr,Ps=Y,_s=Zr,xs=en,bs=be,Ds=sn,Fs=ln,js=ve,Gs=De,ks=Ot,Ms=Ct,Ws=Fe,Us=je,Vs=Pt,Xs=Pn,Hs=ge(),Bs=K(),qs=$e,zs=Gn,Ys=Un,Ks=Bn,Zs=Yn,Js=Jn,Qs=Ge,ei=ls,ti=fs,ri=ds,ni=Es,si=$s;var ii={parse:Is,valid:ys,clean:Ls,inc:Ts,diff:Ss,major:Ns,minor:As,patch:Os,prerelease:Cs,compare:Ps,rcompare:_s,compareLoose:xs,compareBuild:bs,sort:Ds,rsort:Fs,gt:js,lt:Gs,eq:ks,neq:Ms,gte:Ws,lte:Us,cmp:Vs,coerce:Xs,Comparator:Hs,Range:Bs,satisfies:qs,toComparators:zs,maxSatisfying:Ys,minSatisfying:Ks,minVersion:Zs,validRange:Js,outside:Qs,gtr:ei,ltr:ti,intersects:ri,simplifyRange:ni,subset:si,SemVer:Rs,re:Pe.re,src:Pe.src,tokens:Pe.t,SEMVER_SPEC_VERSION:Rt.SEMVER_SPEC_VERSION,RELEASE_TYPES:Rt.RELEASE_TYPES,compareIdentifiers:It.compareIdentifiers,rcompareIdentifiers:It.rcompareIdentifiers};const oi=Lt(ii);var xt={exports:{}};(function(i){(function(){function e(r,n,h){return r.call.apply(r.bind,arguments)}function t(r,n,h){if(!r)throw Error();if(2=n.f?C():r.fonts.load(Re(n.a),n.h).then(function(F){1<=F.length?S():setTimeout(P,25)},function(){C()})}P()}),d=null,g=new Promise(function(S,C){d=setTimeout(C,n.f)});Promise.race([g,a]).then(function(){d&&(clearTimeout(d),d=null),n.g(n.a)},function(){n.j(n.a)})};function N(r,n,h,a,d,g,S){this.v=r,this.B=n,this.c=h,this.a=a,this.s=S||"BESbswy",this.f={},this.w=d||3e3,this.u=g||null,this.m=this.j=this.h=this.g=null,this.g=new y(this.c,this.s),this.h=new y(this.c,this.s),this.j=new y(this.c,this.s),this.m=new y(this.c,this.s),r=new H(this.a.c+",serif",X(this.a)),r=L(r),this.g.a.style.cssText=r,r=new H(this.a.c+",sans-serif",X(this.a)),r=L(r),this.h.a.style.cssText=r,r=new H("serif",X(this.a)),r=L(r),this.j.a.style.cssText=r,r=new H("sans-serif",X(this.a)),r=L(r),this.m.a.style.cssText=r,w(this.g),w(this.h),w(this.j),w(this.m)}var O={D:"serif",C:"sans-serif"},A=null;function x(){if(A===null){var r=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);A=!!r&&(536>parseInt(r[1],10)||parseInt(r[1],10)===536&&11>=parseInt(r[2],10))}return A}N.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f["sans-serif"]=this.m.a.offsetWidth,this.A=o(),D(this)};function G(r,n,h){for(var a in O)if(O.hasOwnProperty(a)&&n===r.f[O[a]]&&h===r.f[O[a]])return!0;return!1}function D(r){var n=r.g.a.offsetWidth,h=r.h.a.offsetWidth,a;(a=n===r.f.serif&&h===r.f["sans-serif"])||(a=x()&&G(r,n,h)),a?o()-r.A>=r.w?x()&&G(r,n,h)&&(r.u===null||r.u.hasOwnProperty(r.a.c))?Te(r,r.v):Te(r,r.B):ee(r):Te(r,r.v)}function ee(r){setTimeout(s(function(){D(this)},r),50)}function Te(r,n){setTimeout(s(function(){c(this.g.a),c(this.h.a),c(this.j.a),c(this.m.a),n(this.a)},r),0)}function Se(r,n,h){this.c=r,this.a=n,this.f=0,this.m=this.j=!1,this.s=h}var he=null;Se.prototype.g=function(r){var n=this.a;n.g&&m(n.f,[n.a.c("wf",r.c,X(r).toString(),"active")],[n.a.c("wf",r.c,X(r).toString(),"loading"),n.a.c("wf",r.c,X(r).toString(),"inactive")]),J(n,"fontactive",r),this.m=!0,We(this)},Se.prototype.h=function(r){var n=this.a;if(n.g){var h=R(n.f,n.a.c("wf",r.c,X(r).toString(),"active")),a=[],d=[n.a.c("wf",r.c,X(r).toString(),"loading")];h||a.push(n.a.c("wf",r.c,X(r).toString(),"inactive")),m(n.f,a,d)}J(n,"fontinactive",r),We(this)};function We(r){--r.f==0&&r.j&&(r.m?(r=r.a,r.g&&m(r.f,[r.a.c("wf","active")],[r.a.c("wf","loading"),r.a.c("wf","inactive")]),J(r,"active")):ce(r.a))}function Ue(r){this.j=r,this.a=new E,this.h=0,this.f=this.g=!0}Ue.prototype.load=function(r){this.c=new f(this.j,r.context||this.j),this.g=r.events!==!1,this.f=r.classes!==!1,Dt(this,new ye(this.c,r),r)};function bt(r,n,h,a,d){var g=--r.h==0;(r.f||r.g)&&setTimeout(function(){var S=d||null,C=a||null||{};if(h.length===0&&g)ce(n.a);else{n.f+=h.length,g&&(n.j=g);var P,F=[];for(P=0;Pthis.createElement(o));t.replaceChildren(...s)}createElement(e){if(e.type=="separator"){const t=document.createElement("div");return t.classList.add("separator"),t}if(e.type=="selection"||e.type=="checkbox"||e.type=="dropdown"){const t=document.createElement("div"),s=document.createElement("div"),o=document.createElement("div");let f;if(e.type=="selection"||e.type=="checkbox"){const u=zt[e.id]??{label:e.id,combos:[],callback:()=>{}};f=document.createElement("div"),f.innerText=Tt.getKeybindString(e.id),f.classList.add("keybind","unselectable"),o.innerText=u.label;let $=u.disabled;typeof $=="function"&&($=$(this.app)),$&&t.classList.add("disabled"),t.addEventListener("click",()=>{if($)return;u.callback(this.app),t.closest(".menu-main").querySelector(".menubar-dropdown").replaceChildren()})}else f=document.createElement("img"),f.classList.add("icon"),f.src=Yt.CHEVRON,f.style.transform="rotate(-90deg)",o.innerText=typeof e.title=="function"?e.title(this.app):e.title;if(s.appendChild(o),s.appendChild(f),t.appendChild(s),t.classList.add("menu-item"),s.classList.add("menu-item-title","menu-hover"),o.classList.add("title","unselectable"),e.type=="dropdown"){const u=document.createElement("div");t.appendChild(u),u.classList.add("menubar-dropdown"),e.options.map($=>this.createElement($)).forEach($=>u.appendChild($))}if(e.type=="checkbox"){let u=e.checked;typeof u=="function"&&(u=u(this.app)),u&&(o.innerText="✓ "+o.innerText)}return t}if(e.type=="menu"){const t=document.createElement("div"),s=document.createElement("div"),o=document.createElement("div");return t.appendChild(s),s.innerText=e.title,t.appendChild(o),s.classList.add("title","unselectable"),t.classList.add("menu-item","menu-main"),s.classList.add("menu-hover"),o.classList.add("menubar-dropdown","unselectable"),t.onmouseenter=()=>{o.replaceChildren(...e.options.map(f=>this.createElement(f)))},t.onmouseleave=()=>{o.replaceChildren()},t}return document.createElement("div")}}class hi{view;windows=[];app;constructor(e,t){this.app=e,this.view=t}unfocusAll(){for(const e of this.view.querySelectorAll(".focused"))e.classList.remove("focused")}getFocusedWindow(){for(const e of this.windows)if(e.windowElement.classList.contains("focused"))return e;return null}isBlocked(){return!this.windows.every(e=>!e.options.blocking)}openWindow(e){if(e.options.win_id){const t=this.getWindowById(e.options.win_id);if(t){t.focus();return}}e.addToManager(this),this.windows.push(e)}removeWindow(e){this.windows.splice(this.windows.indexOf(e),1)}getWindowById(e){for(const t of this.windows)if(t.options.win_id==e)return t}}class fi{options=W;renderer;ticker;stage;view;chartManager;windowManager;menubarManager;actionHistory;lastWidth=window.innerWidth;lastHeight=window.innerHeight;constructor(){if(Jt.setDefaultProps({duration:[200,100],theme:"sm"}),window.nw){const e=nw.Window.get();nw.App.on("open",t=>{if(!t||t?.length===0){nw.Window.open(window.location.href);return}let s="";for(const o of t)if(fe(o)==".ssc"){s=o;break}else s==""&&fe(o)==".sm"&&(s=o);s!=""&&(this.chartManager.loadSM(s),this.windowManager.getWindowById("select_sm_initial")?.closeWindow())}),window.addEventListener("keydown",t=>{(t.key=="r"&&(t.metaKey||t.ctrlKey)||t.key=="F5")&&(t.preventDefault(),e.reload()),t.code=="KeyW"&&(t.metaKey||t.ctrlKey)&&(t.preventDefault(),e.close()),process.versions["nw-flavor"]=="sdk"&&(t.code=="KeyI"&&t.metaKey&&t.altKey||t.key=="F5")&&(t.preventDefault(),e.showDevTools())}),e.on("enter-fullscreen",()=>{W.app.fullscreen=e.isFullscreen}),e.on("resize",(t,s)=>{e.isFullscreen||(W.app.width=t,W.app.height=s)}),e.on("restore",()=>{W.app.fullscreen=e.isFullscreen}),this.checkAppVersion()}if(W.loadOptions(),Qt(),Tt.load(this),window.nw){const e=nw.Window.get();W.app.fullscreen?e.enterFullscreen():e.resizeTo(W.app.width,W.app.height)}if(setInterval(()=>W.saveOptions(),1e4),W.general.smoothAnimations&&document.body.classList.add("animated"),this.registerFonts(),this.view=document.getElementById("pixi"),document.oncontextmenu=e=>{e.preventDefault(),this.chartManager.loadedChart&&e.target==this.view&&Ke.open(this,e)},this.view.onmousedown=()=>{Ke.close()},this.stage=new er,this.stage.sortableChildren=!0,this.renderer=new tr({backgroundColor:1579292,antialias:W.performance.antialiasing,width:this.view.clientWidth,height:this.view.clientHeight,resolution:W.performance.resolution,autoDensity:!0,view:this.view,powerPreference:"low-power"}),this.ticker=new rr,this.ticker.maxFPS=0,this.ticker.add(()=>{const e=performance.now();this.renderer.render(this.stage),Ze.instance?.addFrameTimeValue(performance.now()-e),performance.memory?.usedJSHeapSize&&Ze.instance?.addMemoryTimeValue(performance.memory.usedJSHeapSize),ur()},nr.LOW),this.ticker.start(),sr.init(this.renderer),this.chartManager=new ir(this),this.menubarManager=new ci(this,document.getElementById("menubar")),this.windowManager=new hi(this,document.getElementById("windows")),this.actionHistory=new Je(this),this.registerListeners(),!k.hidePoweredByText&&or()){const e=document.getElementById("embed");e.appendChild(document.createTextNode("Powered by "));const t=document.createElement("a");if(t.href="https://tillvit.github.io/smeditor/",t.innerText="SMEditor",t.target="_blank",e.appendChild(t),k.url!=null){e.appendChild(document.createTextNode(" | Open this chart in a "));const s=document.createElement("a"),o=new URL(location.origin+"/smeditor/app/");s.innerText="new tab",s.target="_blank",o.searchParams.append("url",k.url),k.chartType!==null&&o.searchParams.append("chartType",k.chartType),k.chartIndex!==null&&o.searchParams.append("chartIndex",k.chartIndex+""),s.href=o.toString(),e.appendChild(s)}}Qe.initFileSystem().then(()=>{if(k.url){this.chartManager.loadSM(k.url).then(()=>{const e=this.chartManager.loadedSM;if(!e)return;let t;if(k.chartType!=null&&(t=e.charts[k.chartType],t===void 0)){tt.createFormatted(`Couldn't find chart with type ${k.chartType}`,"warn");return}if(t===void 0){const o=Object.keys(e.charts);if(o.length==0||(t=e.charts[o[0]],t.length==0))return}let s;if(k.chartIndex!=null&&(s=t.at(k.chartIndex),s===void 0)){tt.createFormatted(`Couldn't find chart with index ${k.chartIndex}`,"warn");return}s===void 0&&(s=t.at(-1),!s)||this.chartManager.loadChart(s)});return}this.windowManager.openWindow(new ar(this))}),window.onbeforeunload=e=>{if(Je.instance.isDirty()&&W.general.warnBeforeExit)return e.preventDefault(),e.returnValue="Are you sure you want to exit?"},window.onunload=()=>{W.saveOptions()}}registerFonts(){et.from("Main",{fontFamily:"Assistant",fontSize:20,fill:"white"},{chars:[["a","z"],["A","Z"],"!@#$%^&*()~{}[]:.-?=,_","0123456789/"," "],resolution:window.devicePixelRatio}),et.from("Fancy",{fontFamily:"Assistant",fontSize:40,fontWeight:"700",fill:["#dddddd","#ffffff"],fillGradientType:lr.LINEAR_VERTICAL,stroke:11184810,strokeThickness:3},{chars:[["a","z"],["A","Z"],"!@#$%^&*()~{}[]:.-?=,_","0123456789/"," "],resolution:window.devicePixelRatio})}registerListeners(){this.view.addEventListener("mousedown",()=>{this.windowManager.unfocusAll()}),window.addEventListener("keydown",function(e){e.code=="Enter"&&e.target instanceof HTMLButtonElement&&e.preventDefault()}),window.addEventListener("dragstart",function(e){e.target instanceof HTMLImageElement&&e.preventDefault()}),setInterval(()=>{const e=window.innerWidth,t=window.innerHeight-document.getElementById("menubar").clientHeight-document.getElementById("playback-options").clientHeight;(this.lastHeight!=t||this.lastWidth!=e)&&(this.lastHeight=t,this.lastWidth=e,this.onResize(e,t),cr.emit("resize"))},100),window.addEventListener("dragover",e=>{e.preventDefault(),e.dataTransfer.dropEffect="copy"}),window.addEventListener("drop",e=>{if(window.nw){e.stopPropagation(),e.preventDefault();let t="";for(const s of e.dataTransfer.files)if(s.path)if(fe(s.path)==".ssc"){t=s.path;break}else t==""&&fe(s.path)==".sm"&&(t=s.path);t!=""&&(this.chartManager.loadSM(t),this.windowManager.getWindowById("select_sm_initial")?.closeWindow())}else Qe.handleDropEvent(e).then(t=>{const s=new hr(this,{title:"Select an sm/ssc file...",accepted_file_types:[".sm",".ssc"],disableClose:!0,callback:o=>{this.chartManager.loadSM(o),this.windowManager.getWindowById("select_sm_initial")?.closeWindow()},onload:()=>{s.getAcceptableFile(t??"").then(o=>s.selectPath(o))}});this.windowManager.openWindow(s)})})}onResize(e,t){this.renderer.screen.width=e,this.renderer.screen.height=t,this.view.width=e*this.renderer.resolution,this.view.height=t*this.renderer.resolution,this.view.style.width=`${e}px`,this.view.style.height=`${t}px`}checkAppVersion(){if(!window.nw)return;const e=nw.require("nw.gui"),t={stable:3,beta:2,alpha:1,nightly:0};let s="win";process.platform=="darwin"?s=nw.require("os").arch()=="arm64"?"mac-arm":"mac-x64":process.platform=="linux"&&(s="linux"),fetch("/smeditor/assets/app/versions.json").then(o=>o.json()).then(o=>{o=o.sort((u,$)=>t[u.type]!=t[$.type]?t[$.type]-t[u.type]:$.date-u.date);const f=o[0];oi.lt(e.App.manifest.version,f.version)&&localStorage.getItem("downloadedVersion")!==f.version&&fr.open(f.version,f.downloads[s])})}}document.querySelector("body").innerHTML=`
diff --git a/app/index.html b/app/index.html index 86c10d45..c8d3e58b 100644 --- a/app/index.html +++ b/app/index.html @@ -24,7 +24,7 @@ SMEditor - + diff --git a/downloader-1e1409cf.js b/downloader-693893b5.js similarity index 97% rename from downloader-1e1409cf.js rename to downloader-693893b5.js index 9a9068ea..f1984604 100644 --- a/downloader-1e1409cf.js +++ b/downloader-693893b5.js @@ -1 +1 @@ -import{a6 as w,a2 as b}from"./ChartManager-db54e716.js";const{GONE:v}=b,E=/constructor/i.test(window.HTMLElement)||window.safari||window.WebKitPoint;class j{constructor(e="unknown"){this.kind="file",this.writable=!0,this.name=e}async getFile(){throw new DOMException(...v)}async createWritable(e={}){var t;if(e.keepExistingData)throw new TypeError("Option keepExistingData is not implemented");const h=globalThis.TransformStream||(await w(()=>import("./web-streams-ponyfill-4a0f4950.js"),[])).TransformStream,p=globalThis.WritableStream||(await w(()=>import("./web-streams-ponyfill-4a0f4950.js"),[])).WritableStream,s=await((t=navigator.serviceWorker)===null||t===void 0?void 0:t.getRegistration()),o=document.createElement("a"),i=new h,u=i.writable;if(o.download=this.name,E||!s){let a=[];i.readable.pipeTo(new p({write(r){a.push(new Blob([r]))},close(){const r=new Blob(a,{type:"application/octet-stream; charset=utf-8"});a=[],o.href=URL.createObjectURL(r),o.click(),setTimeout(()=>URL.revokeObjectURL(o.href),1e4)}}))}else{const{writable:a,readablePort:r}=new k(p),n=encodeURIComponent(this.name).replace(/['()]/g,escape).replace(/\*/g,"%2A"),f={"content-disposition":"attachment; filename*=UTF-8''"+n,"content-type":"application/octet-stream; charset=utf-8",...e.size?{"content-length":e.size}:{}},g=setTimeout(()=>s.active.postMessage(0),1e4);i.readable.pipeThrough(new h({transform(l,_){if(l instanceof Uint8Array)return _.enqueue(l);const R=new Response(l).body.getReader(),m=W=>R.read().then(y=>y.done?0:m(_.enqueue(y.value)));return m()}})).pipeTo(a).finally(()=>{clearInterval(g)}),s.active.postMessage({url:s.scope+n,headers:f,readablePort:r},[r]);const c=document.createElement("iframe");c.hidden=!0,c.src=s.scope+n,document.body.appendChild(c)}return u.getWriter()}async isSameEntry(e){return this===e}}const P=0,T=0,M=1,S=1,L=2;class O{constructor(e){this._readyPending=!1,this._port=e,this._resetReady(),this._port.onmessage=t=>this._onMessage(t.data)}start(e){return this._controller=e,this._readyPromise}write(e){const t={type:P,chunk:e};return this._port.postMessage(t,[e.buffer]),this._resetReady(),this._readyPromise}close(){this._port.postMessage({type:L}),this._port.close()}abort(e){this._port.postMessage({type:S,reason:e}),this._port.close()}_onMessage(e){e.type===T&&this._resolveReady(),e.type===M&&this._onError(e.reason)}_onError(e){this._controller.error(e),this._rejectReady(e),this._port.close()}_resetReady(){this._readyPromise=new Promise((e,t)=>{this._readyResolve=e,this._readyReject=t}),this._readyPending=!0}_resolveReady(){this._readyResolve(),this._readyPending=!1}_rejectReady(e){this._readyPending||this._resetReady(),this._readyPromise.catch(()=>{}),this._readyReject(e),this._readyPending=!1}}class k{constructor(e){const t=new MessageChannel;this.readablePort=t.port1,this.writable=new e(new O(t.port2))}}export{j as FileHandle}; +import{a6 as w,a2 as b}from"./ChartManager-b82bf91a.js";const{GONE:v}=b,E=/constructor/i.test(window.HTMLElement)||window.safari||window.WebKitPoint;class j{constructor(e="unknown"){this.kind="file",this.writable=!0,this.name=e}async getFile(){throw new DOMException(...v)}async createWritable(e={}){var t;if(e.keepExistingData)throw new TypeError("Option keepExistingData is not implemented");const h=globalThis.TransformStream||(await w(()=>import("./web-streams-ponyfill-4a0f4950.js"),[])).TransformStream,p=globalThis.WritableStream||(await w(()=>import("./web-streams-ponyfill-4a0f4950.js"),[])).WritableStream,s=await((t=navigator.serviceWorker)===null||t===void 0?void 0:t.getRegistration()),o=document.createElement("a"),i=new h,u=i.writable;if(o.download=this.name,E||!s){let a=[];i.readable.pipeTo(new p({write(r){a.push(new Blob([r]))},close(){const r=new Blob(a,{type:"application/octet-stream; charset=utf-8"});a=[],o.href=URL.createObjectURL(r),o.click(),setTimeout(()=>URL.revokeObjectURL(o.href),1e4)}}))}else{const{writable:a,readablePort:r}=new k(p),n=encodeURIComponent(this.name).replace(/['()]/g,escape).replace(/\*/g,"%2A"),f={"content-disposition":"attachment; filename*=UTF-8''"+n,"content-type":"application/octet-stream; charset=utf-8",...e.size?{"content-length":e.size}:{}},g=setTimeout(()=>s.active.postMessage(0),1e4);i.readable.pipeThrough(new h({transform(l,_){if(l instanceof Uint8Array)return _.enqueue(l);const R=new Response(l).body.getReader(),m=W=>R.read().then(y=>y.done?0:m(_.enqueue(y.value)));return m()}})).pipeTo(a).finally(()=>{clearInterval(g)}),s.active.postMessage({url:s.scope+n,headers:f,readablePort:r},[r]);const c=document.createElement("iframe");c.hidden=!0,c.src=s.scope+n,document.body.appendChild(c)}return u.getWriter()}async isSameEntry(e){return this===e}}const P=0,T=0,M=1,S=1,L=2;class O{constructor(e){this._readyPending=!1,this._port=e,this._resetReady(),this._port.onmessage=t=>this._onMessage(t.data)}start(e){return this._controller=e,this._readyPromise}write(e){const t={type:P,chunk:e};return this._port.postMessage(t,[e.buffer]),this._resetReady(),this._readyPromise}close(){this._port.postMessage({type:L}),this._port.close()}abort(e){this._port.postMessage({type:S,reason:e}),this._port.close()}_onMessage(e){e.type===T&&this._resolveReady(),e.type===M&&this._onError(e.reason)}_onError(e){this._controller.error(e),this._rejectReady(e),this._port.close()}_resetReady(){this._readyPromise=new Promise((e,t)=>{this._readyResolve=e,this._readyReject=t}),this._readyPending=!0}_resolveReady(){this._readyResolve(),this._readyPending=!1}_rejectReady(e){this._readyPending||this._resetReady(),this._readyPromise.catch(()=>{}),this._readyReject(e),this._readyPending=!1}}class k{constructor(e){const t=new MessageChannel;this.readablePort=t.port1,this.writable=new e(new O(t.port2))}}export{j as FileHandle}; diff --git a/embed.js b/embed.js index ea605f0e..78cd008d 100644 --- a/embed.js +++ b/embed.js @@ -1 +1 @@ -import{t as I,o as T,p as E,S as P,G as R}from"./ChartManager-db54e716.js";const m=new Set;document.addEventListener("DOMContentLoaded",()=>{const c=document.getElementById("output-url"),w=document.getElementById("output-iframe"),o=document.getElementById("sm-url"),b=document.getElementById("chart-container");let r=document.getElementById("loading-output");const f=document.getElementById("option-grid");let h,p,k="",d,u;I.setDefaultProps({duration:[200,100]}),I(c,{content:"Click to copy to clipboard",placement:"bottom"});function i(e,t){const n=r.cloneNode(!0);r.parentNode.replaceChild(n,r),r=n,r.innerText=e,t=="error"?r.style.color="rgba(222, 44, 44, 0.9)":r.style.color=""}function s(){const e=new URL(`${location.origin}/smeditor/app/`);p!==void 0&&e.searchParams.set("url",p),u!==void 0&&e.searchParams.set("chartType",u),d!==void 0&&e.searchParams.set("chartIndex",d+""),m.size>0&&e.searchParams.set("flags",[...m.values()].join("")),c.value=e.toString(),k!=e.toString()&&(w.src=e.toString()),k=e.toString()}s(),c.onclick=e=>{e.preventDefault(),c.blur(),navigator.clipboard.writeText(c.value),setTimeout(()=>c.select(),10)},c.onselect=e=>{e.preventDefault(),setTimeout(()=>c.select(),10)},c.ondblclick=e=>{e.preventDefault(),setTimeout(()=>c.select(),10)};let g;function L(){if(!o.checkValidity())return;p=void 0,s();const e=o.value;if(e===""){o.classList.remove("invalid","ok"),i("");return}o.classList.remove("invalid","ok"),i("Loading...");const t=new AbortController,n=setTimeout(()=>{o.classList.add("invalid"),t.abort(),i("Failed to load the specified URL!","error")},5e3);fetch(e,{signal:t.signal}).then(a=>{if(!a.ok){o.classList.add("invalid"),i("Failed to load the specified URL!","error");return}clearTimeout(n),a.text().then(async S=>{const B=new URL(e),D=new File([S],B.pathname.split("/").pop()??"song.sm");i("Loading charts...");const y=new P(D);await y.loaded,y.properties.TITLE===void 0&&i("Invalid file provided!","error"),h=y,p=e,d=void 0,u=void 0,i(""),s(),C()}),o.classList.add("ok")}).catch(()=>{o.classList.add("invalid"),i("Failed to load the specified URL!","error")})}o.onkeydown=e=>{o.classList.remove("invalid"),o.classList.remove("ok"),i(""),clearTimeout(g),g=setTimeout(()=>L(),1e3),(e.key=="Enter"||e.key=="Escape")&&o.blur()},o.onblur=()=>{o.checkValidity()&&(clearInterval(g),L())};const v=T.create([]);v.onChange(e=>{const t=e.split(" ")?.[0]??"dance-single",n=h?.charts[t]??[];l.setItems(n.map(a=>`${a.difficulty} ${a.meter}`)),l.setSelected(l.getItems().at(-1)),n.length!=0&&(console.log(n.length),t!="dance-single"?u=t:u=void 0,s())});const l=T.create([]);l.onChange((e,t)=>{d!=l.getItems().length-1?d=t:d=void 0,s()}),b.appendChild(v.view),b.appendChild(l.view);function C(){v.setItems(R.getPriority().map(t=>{const n=h.charts[t.id]??[];return t.id+" ("+n.length+")"}));const e=h?.charts["dance-single"]??[];l.setItems(e.map(t=>`${t.difficulty} ${t.meter}`)),l.setSelected(l.getItems().at(-1))}Object.entries(E).forEach(([e,t])=>{const n=document.createElement("label");n.classList.add("option");const a=document.createElement("input");a.type="checkbox",n.replaceChildren(a,document.createTextNode(t.name)),a.onchange=()=>{a.checked?m.add(t.char):m.delete(t.char),s()},f.appendChild(n)});const U=document.getElementById("enable-all");U.onclick=()=>{for(const e of f.children){const t=e.childNodes[0];t.checked=!0}for(const e of Object.values(E).map(t=>t.char))m.add(e);s()};const x=document.getElementById("disable-all");x.onclick=()=>{for(const e of f.children){const t=e.childNodes[0];t.checked=!1}m.clear(),s()}}); +import{t as I,o as T,p as E,S as P,G as R}from"./ChartManager-b82bf91a.js";const m=new Set;document.addEventListener("DOMContentLoaded",()=>{const c=document.getElementById("output-url"),w=document.getElementById("output-iframe"),o=document.getElementById("sm-url"),b=document.getElementById("chart-container");let r=document.getElementById("loading-output");const f=document.getElementById("option-grid");let h,p,k="",d,u;I.setDefaultProps({duration:[200,100]}),I(c,{content:"Click to copy to clipboard",placement:"bottom"});function i(e,t){const n=r.cloneNode(!0);r.parentNode.replaceChild(n,r),r=n,r.innerText=e,t=="error"?r.style.color="rgba(222, 44, 44, 0.9)":r.style.color=""}function s(){const e=new URL(`${location.origin}/smeditor/app/`);p!==void 0&&e.searchParams.set("url",p),u!==void 0&&e.searchParams.set("chartType",u),d!==void 0&&e.searchParams.set("chartIndex",d+""),m.size>0&&e.searchParams.set("flags",[...m.values()].join("")),c.value=e.toString(),k!=e.toString()&&(w.src=e.toString()),k=e.toString()}s(),c.onclick=e=>{e.preventDefault(),c.blur(),navigator.clipboard.writeText(c.value),setTimeout(()=>c.select(),10)},c.onselect=e=>{e.preventDefault(),setTimeout(()=>c.select(),10)},c.ondblclick=e=>{e.preventDefault(),setTimeout(()=>c.select(),10)};let g;function L(){if(!o.checkValidity())return;p=void 0,s();const e=o.value;if(e===""){o.classList.remove("invalid","ok"),i("");return}o.classList.remove("invalid","ok"),i("Loading...");const t=new AbortController,n=setTimeout(()=>{o.classList.add("invalid"),t.abort(),i("Failed to load the specified URL!","error")},5e3);fetch(e,{signal:t.signal}).then(a=>{if(!a.ok){o.classList.add("invalid"),i("Failed to load the specified URL!","error");return}clearTimeout(n),a.text().then(async S=>{const B=new URL(e),D=new File([S],B.pathname.split("/").pop()??"song.sm");i("Loading charts...");const y=new P(D);await y.loaded,y.properties.TITLE===void 0&&i("Invalid file provided!","error"),h=y,p=e,d=void 0,u=void 0,i(""),s(),C()}),o.classList.add("ok")}).catch(()=>{o.classList.add("invalid"),i("Failed to load the specified URL!","error")})}o.onkeydown=e=>{o.classList.remove("invalid"),o.classList.remove("ok"),i(""),clearTimeout(g),g=setTimeout(()=>L(),1e3),(e.key=="Enter"||e.key=="Escape")&&o.blur()},o.onblur=()=>{o.checkValidity()&&(clearInterval(g),L())};const v=T.create([]);v.onChange(e=>{const t=e.split(" ")?.[0]??"dance-single",n=h?.charts[t]??[];l.setItems(n.map(a=>`${a.difficulty} ${a.meter}`)),l.setSelected(l.getItems().at(-1)),n.length!=0&&(console.log(n.length),t!="dance-single"?u=t:u=void 0,s())});const l=T.create([]);l.onChange((e,t)=>{d!=l.getItems().length-1?d=t:d=void 0,s()}),b.appendChild(v.view),b.appendChild(l.view);function C(){v.setItems(R.getPriority().map(t=>{const n=h.charts[t.id]??[];return t.id+" ("+n.length+")"}));const e=h?.charts["dance-single"]??[];l.setItems(e.map(t=>`${t.difficulty} ${t.meter}`)),l.setSelected(l.getItems().at(-1))}Object.entries(E).forEach(([e,t])=>{const n=document.createElement("label");n.classList.add("option");const a=document.createElement("input");a.type="checkbox",n.replaceChildren(a,document.createTextNode(t.name)),a.onchange=()=>{a.checked?m.add(t.char):m.delete(t.char),s()},f.appendChild(n)});const U=document.getElementById("enable-all");U.onclick=()=>{for(const e of f.children){const t=e.childNodes[0];t.checked=!0}for(const e of Object.values(E).map(t=>t.char))m.add(e);s()};const x=document.getElementById("disable-all");x.onclick=()=>{for(const e of f.children){const t=e.childNodes[0];t.checked=!1}m.clear(),s()}}); diff --git a/embed/index.html b/embed/index.html index 3b3a72f7..e2c74ff5 100644 --- a/embed/index.html +++ b/embed/index.html @@ -16,7 +16,7 @@ SMEditor - + diff --git a/memory-7b00e9f1.js b/memory-822a1ac5.js similarity index 98% rename from memory-7b00e9f1.js rename to memory-822a1ac5.js index c9dd4b1f..1802e4af 100644 --- a/memory-7b00e9f1.js +++ b/memory-822a1ac5.js @@ -1 +1 @@ -import{a2 as c,a3 as y}from"./ChartManager-db54e716.js";let n=globalThis.File,p=globalThis.Blob;const b=o=>{n=o},m=o=>{p=o},{INVALID:z,GONE:s,MISMATCH:w,MOD_ERR:E,SYNTAX:l,DISALLOWED:O}=c;class D{constructor(e,i){this.fileHandle=e,this.file=i?e.file:new n([],e.file.name,e.file),this.size=i?e.file.size:0,this.position=0}async write(e){if(!this.fileHandle.file)throw new DOMException(...s);let i=this.file;if(y(e)){if(e.type==="write"){if(typeof e.position=="number"&&e.position>=0&&(this.position=e.position,this.size=0){if(this.size=0){i=e.sizei.size&&(this.position=i.size),this.file=i;return}else throw new DOMException(...l("truncate requires a size argument"))}e=new p([e]);let t=this.file;const a=t.slice(0,this.position),d=t.slice(this.position+e.size);let r=this.position-a.size;r<0&&(r=0),t=new n([a,new Uint8Array(r),e,d],t.name),this.size=t.size,this.position+=e.size,this.file=t}async close(){if(!this.fileHandle.file)throw new DOMException(...s);this.fileHandle.file=this.file,this.file=this.position=this.size=null,this.fileHandle.onclose&&this.fileHandle.onclose(this.fileHandle)}}class f{constructor(e="",i=new n([],e),t=!0){this.kind="file",this.deleted=!1,this.file=i,this.name=e,this.writable=t}async getFile(){if(this.deleted||this.file===null)throw new DOMException(...s);return this.file}async createWritable(e){if(!this.writable)throw new DOMException(...O);if(this.deleted)throw new DOMException(...s);return new D(this,!!e?.keepExistingData)}async isSameEntry(e){return this===e}destroy(){this.deleted=!0,this.file=null}}class h{constructor(e,i=!0){this.kind="directory",this.deleted=!1,this._entries={},this.name=e,this.writable=i}async*entries(){if(this.deleted)throw new DOMException(...s);yield*Object.entries(this._entries)}async isSameEntry(e){return this===e}async getDirectoryHandle(e,i={}){if(this.deleted)throw new DOMException(...s);const t=this._entries[e];if(t){if(t instanceof f)throw new DOMException(...w);return t}else{if(i.create)return this._entries[e]=new h(e);throw new DOMException(...s)}}async getFileHandle(e,i={}){const t=this._entries[e];if(t){if(t instanceof f)return t;throw new DOMException(...w)}else{if(i.create)return this._entries[e]=new f(e);throw new DOMException(...s)}}async removeEntry(e,i={}){const t=this._entries[e];if(!t)throw new DOMException(...s);t.destroy(i.recursive),delete this._entries[e]}destroy(e){for(let i of Object.values(this._entries)){if(!e)throw new DOMException(...E);i.destroy(e)}this._entries={},this.deleted=!0}}const M=new h(""),g=()=>M;export{f as FileHandle,h as FolderHandle,g as default,m as setBlobImpl,b as setFileImpl}; +import{a2 as c,a3 as y}from"./ChartManager-b82bf91a.js";let n=globalThis.File,p=globalThis.Blob;const b=o=>{n=o},m=o=>{p=o},{INVALID:z,GONE:s,MISMATCH:w,MOD_ERR:E,SYNTAX:l,DISALLOWED:O}=c;class D{constructor(e,i){this.fileHandle=e,this.file=i?e.file:new n([],e.file.name,e.file),this.size=i?e.file.size:0,this.position=0}async write(e){if(!this.fileHandle.file)throw new DOMException(...s);let i=this.file;if(y(e)){if(e.type==="write"){if(typeof e.position=="number"&&e.position>=0&&(this.position=e.position,this.size=0){if(this.size=0){i=e.sizei.size&&(this.position=i.size),this.file=i;return}else throw new DOMException(...l("truncate requires a size argument"))}e=new p([e]);let t=this.file;const a=t.slice(0,this.position),d=t.slice(this.position+e.size);let r=this.position-a.size;r<0&&(r=0),t=new n([a,new Uint8Array(r),e,d],t.name),this.size=t.size,this.position+=e.size,this.file=t}async close(){if(!this.fileHandle.file)throw new DOMException(...s);this.fileHandle.file=this.file,this.file=this.position=this.size=null,this.fileHandle.onclose&&this.fileHandle.onclose(this.fileHandle)}}class f{constructor(e="",i=new n([],e),t=!0){this.kind="file",this.deleted=!1,this.file=i,this.name=e,this.writable=t}async getFile(){if(this.deleted||this.file===null)throw new DOMException(...s);return this.file}async createWritable(e){if(!this.writable)throw new DOMException(...O);if(this.deleted)throw new DOMException(...s);return new D(this,!!e?.keepExistingData)}async isSameEntry(e){return this===e}destroy(){this.deleted=!0,this.file=null}}class h{constructor(e,i=!0){this.kind="directory",this.deleted=!1,this._entries={},this.name=e,this.writable=i}async*entries(){if(this.deleted)throw new DOMException(...s);yield*Object.entries(this._entries)}async isSameEntry(e){return this===e}async getDirectoryHandle(e,i={}){if(this.deleted)throw new DOMException(...s);const t=this._entries[e];if(t){if(t instanceof f)throw new DOMException(...w);return t}else{if(i.create)return this._entries[e]=new h(e);throw new DOMException(...s)}}async getFileHandle(e,i={}){const t=this._entries[e];if(t){if(t instanceof f)return t;throw new DOMException(...w)}else{if(i.create)return this._entries[e]=new f(e);throw new DOMException(...s)}}async removeEntry(e,i={}){const t=this._entries[e];if(!t)throw new DOMException(...s);t.destroy(i.recursive),delete this._entries[e]}destroy(e){for(let i of Object.values(this._entries)){if(!e)throw new DOMException(...E);i.destroy(e)}this._entries={},this.deleted=!0}}const M=new h(""),g=()=>M;export{f as FileHandle,h as FolderHandle,g as default,m as setBlobImpl,b as setFileImpl}; diff --git a/sw.js b/sw.js index 6ae616b6..39dc49b6 100644 --- a/sw.js +++ b/sw.js @@ -1 +1 @@ -if(!self.define){let s,e={};const n=(n,l)=>(n=new URL(n+".js",l).href,e[n]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=n,s.onload=e,document.head.appendChild(s)}else s=n,importScripts(n),e()})).then((()=>{let s=e[n];if(!s)throw new Error(`Module ${n} didn’t register its module`);return s})));self.define=(l,i)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const a=s=>n(s,r),t={module:{uri:r},exports:u,require:a};e[r]=Promise.all(l.map((s=>t[s]||a(s)))).then((s=>(i(...s),u)))}}define(["./workbox-1ab968a5"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"AnimatedSprite-ffeea718.js",revision:null},{url:"app.js",revision:"70e93babb4e92e40c64d365907894ddc"},{url:"app/index.html",revision:"1dd8d8ab5b493de7ba19f3f958177cdf"},{url:"assets/ChartManager-00dfcf8b.css",revision:null},{url:"assets/index-0a525f9b.css",revision:null},{url:"assets/index-8c6c3f75.css",revision:null},{url:"assets/index-d7a91955.css",revision:null},{url:"assets/SafariFileWorker-557e53c3.js",revision:null},{url:"ChartManager-db54e716.js",revision:null},{url:"downloader-1e1409cf.js",revision:null},{url:"embed.js",revision:"fb26d8f71918a8c6f46c6df3a612960f"},{url:"embed/index.html",revision:"cda999771a4b30069f4e233b710f3af8"},{url:"FileSystemWritableFileStream-e4c13ad9.js",revision:null},{url:"HoldBody-9276f45c.js",revision:null},{url:"index.html",revision:"690fec91f615869495043a6ce70b86a8"},{url:"memory-7b00e9f1.js",revision:null},{url:"NodeFileHandler-0f24e20c.js",revision:null},{url:"Noteskin-1c251d86.js",revision:null},{url:"Noteskin-28290895.js",revision:null},{url:"Noteskin-29d3e266.js",revision:null},{url:"Noteskin-396091da.js",revision:null},{url:"Noteskin-3fe335eb.js",revision:null},{url:"Noteskin-64e950b9.js",revision:null},{url:"Noteskin-66d5ec9c.js",revision:null},{url:"Noteskin-771bb0f0.js",revision:null},{url:"Noteskin-99787346.js",revision:null},{url:"Noteskin-b586fc01.js",revision:null},{url:"Noteskin-bbdd3e6c.js",revision:null},{url:"Noteskin-c3debd3b.js",revision:null},{url:"Noteskin-c62aca3b.js",revision:null},{url:"Noteskin-de4438a8.js",revision:null},{url:"Noteskin-e7e2ba35.js",revision:null},{url:"Noteskin-ed5342e2.js",revision:null},{url:"OggDec-2941c3fd.js",revision:null},{url:"registerSW.js",revision:"21684c117fd68cc7dc1643829ea87c07"},{url:"web-streams-ponyfill-4a0f4950.js",revision:null},{url:"assets/0-0543793c.png",revision:null},{url:"assets/0-c5249fef.png",revision:null},{url:"assets/1-0e354907.png",revision:null},{url:"assets/1-84dd19f7.png",revision:null},{url:"assets/2-3b873573.png",revision:null},{url:"assets/2-ce5f7b2f.png",revision:null},{url:"assets/3-648105cf.png",revision:null},{url:"assets/3-e5952ffa.png",revision:null},{url:"assets/4-1f9a4a43.png",revision:null},{url:"assets/4-da345826.png",revision:null},{url:"assets/5-b9acdc27.png",revision:null},{url:"assets/5-f6bb9779.png",revision:null},{url:"assets/6-12d00670.png",revision:null},{url:"assets/6-565a7261.png",revision:null},{url:"assets/7-00801dd0.png",revision:null},{url:"assets/7-dd1c0ecf.png",revision:null},{url:"assets/8-94163432.png",revision:null},{url:"assets/8-9a73d4f3.png",revision:null},{url:"assets/active-29dd632a.png",revision:null},{url:"assets/active-d06e5c33.png",revision:null},{url:"assets/analyze-738fe825.mp4",revision:null},{url:"assets/app/versions.json",revision:"223594f6ecde2ce4e9ed61e4f47c9378"},{url:"assets/assist_tick-b8aada2a.ogg",revision:null},{url:"assets/av-05878b27.mp4",revision:null},{url:"assets/banner-fa29dd27.png",revision:null},{url:"assets/base-29930c78.png",revision:null},{url:"assets/body-0862c984.png",revision:null},{url:"assets/bodyActive-105f1d12.png",revision:null},{url:"assets/bodyActive-56c9977a.png",revision:null},{url:"assets/bodyActive-614d0188.png",revision:null},{url:"assets/bodyActive-889762ad.png",revision:null},{url:"assets/bodyActive-b3d95e51.png",revision:null},{url:"assets/bodyInactive-1234f594.png",revision:null},{url:"assets/bodyInactive-5d99335a.png",revision:null},{url:"assets/bodyInactive-72253162.png",revision:null},{url:"assets/bodyInactive-cfc41138.png",revision:null},{url:"assets/bodyInactive-e5ca65be.png",revision:null},{url:"assets/bottomCapActive-32ba7c5b.png",revision:null},{url:"assets/bottomCapActive-50553ab4.png",revision:null},{url:"assets/bottomCapActive-58c18c0b.png",revision:null},{url:"assets/bottomCapActive-75c2fd66.png",revision:null},{url:"assets/bottomCapInactive-177e377e.png",revision:null},{url:"assets/bottomCapInactive-d275b2b2.png",revision:null},{url:"assets/bottomCapInactive-d8fa251d.png",revision:null},{url:"assets/bottomCapInactive-e990106f.png",revision:null},{url:"assets/cap-8cc2992c.png",revision:null},{url:"assets/cap-e2813a45.png",revision:null},{url:"assets/capActive-59a3b423.png",revision:null},{url:"assets/capActive-e83fb138.png",revision:null},{url:"assets/capInactive-4622d5f2.png",revision:null},{url:"assets/capInactive-efc3b952.png",revision:null},{url:"assets/Center-1b6bfec9.png",revision:null},{url:"assets/Center-274a1642.png",revision:null},{url:"assets/Center-461a85de.png",revision:null},{url:"assets/Center-55e9b68a.png",revision:null},{url:"assets/Center-cb4b6c25.png",revision:null},{url:"assets/Center-df4c129b.png",revision:null},{url:"assets/centerReceptor-44665c43.png",revision:null},{url:"assets/colors-63f923d2.png",revision:null},{url:"assets/decent-79d4c208.png",revision:null},{url:"assets/decent-cc4ef7ea.png",revision:null},{url:"assets/decent-f3f8a110.png",revision:null},{url:"assets/downBodyActive-77f6502e.png",revision:null},{url:"assets/downBodyActive-8cf886d3.png",revision:null},{url:"assets/downBodyActive-dd1fd694.png",revision:null},{url:"assets/downBodyInactive-7465edd0.png",revision:null},{url:"assets/downBodyInactive-a5759c62.png",revision:null},{url:"assets/downBodyInactive-c781a303.png",revision:null},{url:"assets/downBottomCapActive-57ef4d54.png",revision:null},{url:"assets/downBottomCapActive-b10d1f0d.png",revision:null},{url:"assets/downBottomCapInactive-12cafebe.png",revision:null},{url:"assets/downBottomCapInactive-13ddf252.png",revision:null},{url:"assets/DownLeft-15647c81.png",revision:null},{url:"assets/DownLeft-19d91486.png",revision:null},{url:"assets/DownLeft-242c6bf3.png",revision:null},{url:"assets/DownLeft-4943410c.png",revision:null},{url:"assets/DownLeft-63c88ff1.png",revision:null},{url:"assets/DownLeft-94341616.png",revision:null},{url:"assets/downLeftReceptor-9be8faae.png",revision:null},{url:"assets/DownRight-3c57e4fa.png",revision:null},{url:"assets/DownRight-9aba7559.png",revision:null},{url:"assets/DownRight-a869fa38.png",revision:null},{url:"assets/DownRight-bcd0e463.png",revision:null},{url:"assets/DownRight-d5c3b98a.png",revision:null},{url:"assets/DownRight-e2cf2b7d.png",revision:null},{url:"assets/embed-8c85cbda.png",revision:null},{url:"assets/eq-6befbaef.mp4",revision:null},{url:"assets/excellent-30398c95.png",revision:null},{url:"assets/excellent-84718ac0.png",revision:null},{url:"assets/excellent-ab7ec4d8.png",revision:null},{url:"assets/exportlua-6de45f3b.png",revision:null},{url:"assets/fakeCenter-581c6a3b.png",revision:null},{url:"assets/fakeDownLeft-e3208bb3.png",revision:null},{url:"assets/fantastic-1755e773.png",revision:null},{url:"assets/fantastic-65c1c0cf.png",revision:null},{url:"assets/fantastic-ebaa2496.png",revision:null},{url:"assets/flash-5a32532f.png",revision:null},{url:"assets/flash-ac45db5d.png",revision:null},{url:"assets/flash-be9c0562.png",revision:null},{url:"assets/flash-d0eff0a1.png",revision:null},{url:"assets/flash-e524b5bd.png",revision:null},{url:"assets/flashBright-d5407f78.png",revision:null},{url:"assets/font/Assistant-Hebrew.woff2",revision:"e99c63e8dcd7799e8adf32df82b46376"},{url:"assets/font/Assistant-Latin.woff2",revision:"a416191c7641acf049f804b685235d3d"},{url:"assets/font/Assistant-LatinExt.woff2",revision:"2423d82cdbc6a34b99d5bbacf82623c7"},{url:"assets/frame-d599a2fe.png",revision:null},{url:"assets/frameChrome-2ea8bbf3.png",revision:null},{url:"assets/git-67477794.png",revision:null},{url:"assets/great-0e864574.png",revision:null},{url:"assets/great-cf911e79.png",revision:null},{url:"assets/great-f56818a7.png",revision:null},{url:"assets/highpass-d9d7cfcb.svg",revision:null},{url:"assets/highshelf-11ccf64e.svg",revision:null},{url:"assets/hold_judgement-82934f15.png",revision:null},{url:"assets/hold-0c4ffc42.png",revision:null},{url:"assets/hold-160934d9.png",revision:null},{url:"assets/hold-3ccaaf09.png",revision:null},{url:"assets/hold-3f899175.png",revision:null},{url:"assets/hold-4cf23d59.png",revision:null},{url:"assets/hold-5651661d.png",revision:null},{url:"assets/hold-7b947e11.png",revision:null},{url:"assets/icon/favicon.ico",revision:"7bcbdd2344641a21b0f6f9393b491d65"},{url:"assets/icon/icon_512.png",revision:"1a4014fcbfaa08050ff38cabb8235165"},{url:"assets/icon/logo.png",revision:"3170c21a8539047fffea9eb4bd912d8e"},{url:"assets/icon/mac.icns",revision:"ac52a49fb658a942abeaa019bd05e9aa"},{url:"assets/inactive-48f23de3.png",revision:null},{url:"assets/inactive-a4aecb82.png",revision:null},{url:"assets/judgementITG-5390eacd.png",revision:null},{url:"assets/judgementWaterfall-5bb3f994.png",revision:null},{url:"assets/leftBodyActive-5d89f111.png",revision:null},{url:"assets/leftBodyActive-75d41033.png",revision:null},{url:"assets/leftBodyActive-fd4e902b.png",revision:null},{url:"assets/leftBodyInactive-1110dc77.png",revision:null},{url:"assets/leftBodyInactive-8fe6311e.png",revision:null},{url:"assets/leftBodyInactive-bbc074cd.png",revision:null},{url:"assets/leftBottomCapActive-057c49fb.png",revision:null},{url:"assets/leftBottomCapActive-f759c91c.png",revision:null},{url:"assets/leftBottomCapInactive-a4ac7bba.png",revision:null},{url:"assets/leftBottomCapInactive-df6350c7.png",revision:null},{url:"assets/lift-6db682e7.png",revision:null},{url:"assets/liftCenter-9712ce74.png",revision:null},{url:"assets/liftDownLeft-0205bdc8.png",revision:null},{url:"assets/lowpass-ff013247.svg",revision:null},{url:"assets/lowshelf-2b031328.svg",revision:null},{url:"assets/mask-f1b4d033.png",revision:null},{url:"assets/metronome_high-6fa54e52.ogg",revision:null},{url:"assets/metronome_low-4db4e760.ogg",revision:null},{url:"assets/mine-0e34ec01.png",revision:null},{url:"assets/mine-335f4545.png",revision:null},{url:"assets/mine-590d445e.png",revision:null},{url:"assets/mine-b65ce42d.ogg",revision:null},{url:"assets/missing-81d55ba9.png",revision:null},{url:"assets/mode-cac62e2a.png",revision:null},{url:"assets/mouse-ef7f3cf3.mp4",revision:null},{url:"assets/note-07e5d79f.png",revision:null},{url:"assets/outline-72e881a7.png",revision:null},{url:"assets/overlay-f63a3b18.png",revision:null},{url:"assets/particles-18ec6c1d.png",revision:null},{url:"assets/parts-0c8fa692.png",revision:null},{url:"assets/parts-9668caec.png",revision:null},{url:"assets/parts-9a3f637b.png",revision:null},{url:"assets/parts-b37af2cf.png",revision:null},{url:"assets/peaking-eec48769.svg",revision:null},{url:"assets/playtest-f34f5856.mp4",revision:null},{url:"assets/popup-b6da9784.mp4",revision:null},{url:"assets/pref-fdc09174.mp4",revision:null},{url:"assets/press-55cccb8c.png",revision:null},{url:"assets/press-feed8aa6.png",revision:null},{url:"assets/preview-0f9b00cd.png",revision:null},{url:"assets/preview-17ffcc02.png",revision:null},{url:"assets/preview-26b1bdce.png",revision:null},{url:"assets/preview-2fd7d50c.png",revision:null},{url:"assets/preview-3514cbb3.png",revision:null},{url:"assets/preview-40b76b28.png",revision:null},{url:"assets/preview-4f79831b.png",revision:null},{url:"assets/preview-5d9781d2.png",revision:null},{url:"assets/preview-5ecfc22a.png",revision:null},{url:"assets/preview-72ea0444.png",revision:null},{url:"assets/preview-747db171.png",revision:null},{url:"assets/preview-9fe2bd96.png",revision:null},{url:"assets/preview-b8f75a15.png",revision:null},{url:"assets/preview-d67630f1.png",revision:null},{url:"assets/preview-d6d59d37.png",revision:null},{url:"assets/preview-d763e667.png",revision:null},{url:"assets/preview-f113aacc.png",revision:null},{url:"assets/receptor-13e43ffb.png",revision:null},{url:"assets/receptor-30ecd7a2.png",revision:null},{url:"assets/receptor-3e38f29b.png",revision:null},{url:"assets/receptor-59597a1d.png",revision:null},{url:"assets/receptor-6fa92e51.png",revision:null},{url:"assets/receptor-a0a69b2b.png",revision:null},{url:"assets/receptor-a4713728.png",revision:null},{url:"assets/receptor-d5ef8593.png",revision:null},{url:"assets/receptorFlash-c7675c53.png",revision:null},{url:"assets/receptors-0a59df78.png",revision:null},{url:"assets/receptors-5a0beefb.png",revision:null},{url:"assets/rightBodyActive-07f95372.png",revision:null},{url:"assets/rightBodyActive-751fadec.png",revision:null},{url:"assets/rightBodyActive-8af7624b.png",revision:null},{url:"assets/rightBodyInactive-46202369.png",revision:null},{url:"assets/rightBodyInactive-695480aa.png",revision:null},{url:"assets/rightBodyInactive-fdefc2a4.png",revision:null},{url:"assets/rightBottomCapActive-6edeea1e.png",revision:null},{url:"assets/rightBottomCapActive-a736d803.png",revision:null},{url:"assets/rightBottomCapInactive-a64cea2c.png",revision:null},{url:"assets/rightBottomCapInactive-d674960e.png",revision:null},{url:"assets/scrolls-a04758c8.mp4",revision:null},{url:"assets/spark-2c59cc0e.png",revision:null},{url:"assets/stroke-1f54ba14.png",revision:null},{url:"assets/tap-69a9f81d.png",revision:null},{url:"assets/tap-c1e36633.png",revision:null},{url:"assets/tapCenter-103680e8.png",revision:null},{url:"assets/tapDownLeft-17ba3b42.png",revision:null},{url:"assets/timesig-9e28e1f2.png",revision:null},{url:"assets/top-74da30ae.png",revision:null},{url:"assets/underlay-95144bef.png",revision:null},{url:"assets/upBodyActive-b06d82f3.png",revision:null},{url:"assets/upBodyActive-c813881f.png",revision:null},{url:"assets/upBodyInactive-0222237a.png",revision:null},{url:"assets/upBodyInactive-4ef75342.png",revision:null},{url:"assets/upBodyInactive-87a7969e.png",revision:null},{url:"assets/upBottomCapActive-07fb7c6e.png",revision:null},{url:"assets/upBottomCapActive-19e4c05d.png",revision:null},{url:"assets/upBottomCapInactive-23aae747.png",revision:null},{url:"assets/upBottomCapInactive-75f78aac.png",revision:null},{url:"assets/UpLeft-28515625.png",revision:null},{url:"assets/UpLeft-36744666.png",revision:null},{url:"assets/UpLeft-752b6821.png",revision:null},{url:"assets/UpLeft-be2bb52b.png",revision:null},{url:"assets/UpLeft-d457a441.png",revision:null},{url:"assets/UpLeft-ef9a2609.png",revision:null},{url:"assets/upleftBodyActive-bc79d60f.png",revision:null},{url:"assets/upleftBodyInactive-f60085c6.png",revision:null},{url:"assets/UpRight-2e4dc3f1.png",revision:null},{url:"assets/UpRight-7924deeb.png",revision:null},{url:"assets/UpRight-8a892589.png",revision:null},{url:"assets/UpRight-91e454bc.png",revision:null},{url:"assets/UpRight-af6dd110.png",revision:null},{url:"assets/UpRight-fda6b516.png",revision:null},{url:"assets/uprightBodyActive-3d912f52.png",revision:null},{url:"assets/uprightBodyInactive-01c6c977.png",revision:null},{url:"assets/w0-6f86addb.png",revision:null},{url:"assets/w1-c8c43b0f.png",revision:null},{url:"assets/w2-37282ba8.png",revision:null},{url:"assets/w3-3c2ca2d8.png",revision:null},{url:"assets/w4-ce0f95de.png",revision:null},{url:"assets/w5-23173d4f.png",revision:null},{url:"assets/way_off-8bc3fd65.png",revision:null},{url:"assets/way_off-bc2cdf11.png",revision:null},{url:"assets/way_off-cc9a5377.png",revision:null},{url:"assets/white_fantastic-6c519378.png",revision:null},{url:"assets/white_fantastic-9f83da7a.png",revision:null},{url:"assets/white_fantastic-b65b4f11.png",revision:null},{url:"assets/icon/icon_512.png",revision:"1a4014fcbfaa08050ff38cabb8235165"},{url:"manifest.json",revision:"1d72161daa4e530e15d85baf4906bf4c"}],{ignoreURLParametersMatching:[/^flags/,/^url/,/^chartIndex/,/^chartType/]}),s.cleanupOutdatedCaches()})); +if(!self.define){let s,e={};const n=(n,l)=>(n=new URL(n+".js",l).href,e[n]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=n,s.onload=e,document.head.appendChild(s)}else s=n,importScripts(n),e()})).then((()=>{let s=e[n];if(!s)throw new Error(`Module ${n} didn’t register its module`);return s})));self.define=(l,i)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const a=s=>n(s,r),t={module:{uri:r},exports:u,require:a};e[r]=Promise.all(l.map((s=>t[s]||a(s)))).then((s=>(i(...s),u)))}}define(["./workbox-1ab968a5"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"AnimatedSprite-c4817119.js",revision:null},{url:"app.js",revision:"6a238dd616fa337def150dbee8488a34"},{url:"app/index.html",revision:"3b7a839aeb3f1ad29b306ed9cecbb6bb"},{url:"assets/ChartManager-00dfcf8b.css",revision:null},{url:"assets/index-0a525f9b.css",revision:null},{url:"assets/index-8c6c3f75.css",revision:null},{url:"assets/index-d7a91955.css",revision:null},{url:"assets/SafariFileWorker-557e53c3.js",revision:null},{url:"ChartManager-b82bf91a.js",revision:null},{url:"downloader-693893b5.js",revision:null},{url:"embed.js",revision:"f48b7f6cc1197053b801426efed67e18"},{url:"embed/index.html",revision:"e5b98229c49076bc256189c724fa9aa2"},{url:"FileSystemWritableFileStream-e4c13ad9.js",revision:null},{url:"HoldBody-3932542e.js",revision:null},{url:"index.html",revision:"690fec91f615869495043a6ce70b86a8"},{url:"memory-822a1ac5.js",revision:null},{url:"NodeFileHandler-f2c2e619.js",revision:null},{url:"Noteskin-0af53390.js",revision:null},{url:"Noteskin-10f0d494.js",revision:null},{url:"Noteskin-13265614.js",revision:null},{url:"Noteskin-14ac674c.js",revision:null},{url:"Noteskin-1b5c3cb3.js",revision:null},{url:"Noteskin-3e2399d2.js",revision:null},{url:"Noteskin-3efa42bb.js",revision:null},{url:"Noteskin-3f24e7bf.js",revision:null},{url:"Noteskin-9d8afc43.js",revision:null},{url:"Noteskin-a642a2c7.js",revision:null},{url:"Noteskin-b3dbf45d.js",revision:null},{url:"Noteskin-b478a3ba.js",revision:null},{url:"Noteskin-bc6bd632.js",revision:null},{url:"Noteskin-c88f6db0.js",revision:null},{url:"Noteskin-cf0acfc0.js",revision:null},{url:"Noteskin-ff20a48e.js",revision:null},{url:"OggDec-2941c3fd.js",revision:null},{url:"registerSW.js",revision:"21684c117fd68cc7dc1643829ea87c07"},{url:"web-streams-ponyfill-4a0f4950.js",revision:null},{url:"assets/0-0543793c.png",revision:null},{url:"assets/0-c5249fef.png",revision:null},{url:"assets/1-0e354907.png",revision:null},{url:"assets/1-84dd19f7.png",revision:null},{url:"assets/2-3b873573.png",revision:null},{url:"assets/2-ce5f7b2f.png",revision:null},{url:"assets/3-648105cf.png",revision:null},{url:"assets/3-e5952ffa.png",revision:null},{url:"assets/4-1f9a4a43.png",revision:null},{url:"assets/4-da345826.png",revision:null},{url:"assets/5-b9acdc27.png",revision:null},{url:"assets/5-f6bb9779.png",revision:null},{url:"assets/6-12d00670.png",revision:null},{url:"assets/6-565a7261.png",revision:null},{url:"assets/7-00801dd0.png",revision:null},{url:"assets/7-dd1c0ecf.png",revision:null},{url:"assets/8-94163432.png",revision:null},{url:"assets/8-9a73d4f3.png",revision:null},{url:"assets/active-29dd632a.png",revision:null},{url:"assets/active-d06e5c33.png",revision:null},{url:"assets/analyze-738fe825.mp4",revision:null},{url:"assets/app/versions.json",revision:"223594f6ecde2ce4e9ed61e4f47c9378"},{url:"assets/assist_tick-b8aada2a.ogg",revision:null},{url:"assets/av-05878b27.mp4",revision:null},{url:"assets/banner-fa29dd27.png",revision:null},{url:"assets/base-29930c78.png",revision:null},{url:"assets/body-0862c984.png",revision:null},{url:"assets/bodyActive-105f1d12.png",revision:null},{url:"assets/bodyActive-56c9977a.png",revision:null},{url:"assets/bodyActive-614d0188.png",revision:null},{url:"assets/bodyActive-889762ad.png",revision:null},{url:"assets/bodyActive-b3d95e51.png",revision:null},{url:"assets/bodyInactive-1234f594.png",revision:null},{url:"assets/bodyInactive-5d99335a.png",revision:null},{url:"assets/bodyInactive-72253162.png",revision:null},{url:"assets/bodyInactive-cfc41138.png",revision:null},{url:"assets/bodyInactive-e5ca65be.png",revision:null},{url:"assets/bottomCapActive-32ba7c5b.png",revision:null},{url:"assets/bottomCapActive-50553ab4.png",revision:null},{url:"assets/bottomCapActive-58c18c0b.png",revision:null},{url:"assets/bottomCapActive-75c2fd66.png",revision:null},{url:"assets/bottomCapInactive-177e377e.png",revision:null},{url:"assets/bottomCapInactive-d275b2b2.png",revision:null},{url:"assets/bottomCapInactive-d8fa251d.png",revision:null},{url:"assets/bottomCapInactive-e990106f.png",revision:null},{url:"assets/cap-8cc2992c.png",revision:null},{url:"assets/cap-e2813a45.png",revision:null},{url:"assets/capActive-59a3b423.png",revision:null},{url:"assets/capActive-e83fb138.png",revision:null},{url:"assets/capInactive-4622d5f2.png",revision:null},{url:"assets/capInactive-efc3b952.png",revision:null},{url:"assets/Center-1b6bfec9.png",revision:null},{url:"assets/Center-274a1642.png",revision:null},{url:"assets/Center-461a85de.png",revision:null},{url:"assets/Center-55e9b68a.png",revision:null},{url:"assets/Center-cb4b6c25.png",revision:null},{url:"assets/Center-df4c129b.png",revision:null},{url:"assets/centerReceptor-44665c43.png",revision:null},{url:"assets/colors-63f923d2.png",revision:null},{url:"assets/decent-79d4c208.png",revision:null},{url:"assets/decent-cc4ef7ea.png",revision:null},{url:"assets/decent-f3f8a110.png",revision:null},{url:"assets/downBodyActive-77f6502e.png",revision:null},{url:"assets/downBodyActive-8cf886d3.png",revision:null},{url:"assets/downBodyActive-dd1fd694.png",revision:null},{url:"assets/downBodyInactive-7465edd0.png",revision:null},{url:"assets/downBodyInactive-a5759c62.png",revision:null},{url:"assets/downBodyInactive-c781a303.png",revision:null},{url:"assets/downBottomCapActive-57ef4d54.png",revision:null},{url:"assets/downBottomCapActive-b10d1f0d.png",revision:null},{url:"assets/downBottomCapInactive-12cafebe.png",revision:null},{url:"assets/downBottomCapInactive-13ddf252.png",revision:null},{url:"assets/DownLeft-15647c81.png",revision:null},{url:"assets/DownLeft-19d91486.png",revision:null},{url:"assets/DownLeft-242c6bf3.png",revision:null},{url:"assets/DownLeft-4943410c.png",revision:null},{url:"assets/DownLeft-63c88ff1.png",revision:null},{url:"assets/DownLeft-94341616.png",revision:null},{url:"assets/downLeftReceptor-9be8faae.png",revision:null},{url:"assets/DownRight-3c57e4fa.png",revision:null},{url:"assets/DownRight-9aba7559.png",revision:null},{url:"assets/DownRight-a869fa38.png",revision:null},{url:"assets/DownRight-bcd0e463.png",revision:null},{url:"assets/DownRight-d5c3b98a.png",revision:null},{url:"assets/DownRight-e2cf2b7d.png",revision:null},{url:"assets/embed-8c85cbda.png",revision:null},{url:"assets/eq-6befbaef.mp4",revision:null},{url:"assets/excellent-30398c95.png",revision:null},{url:"assets/excellent-84718ac0.png",revision:null},{url:"assets/excellent-ab7ec4d8.png",revision:null},{url:"assets/exportlua-6de45f3b.png",revision:null},{url:"assets/fakeCenter-581c6a3b.png",revision:null},{url:"assets/fakeDownLeft-e3208bb3.png",revision:null},{url:"assets/fantastic-1755e773.png",revision:null},{url:"assets/fantastic-65c1c0cf.png",revision:null},{url:"assets/fantastic-ebaa2496.png",revision:null},{url:"assets/flash-5a32532f.png",revision:null},{url:"assets/flash-ac45db5d.png",revision:null},{url:"assets/flash-be9c0562.png",revision:null},{url:"assets/flash-d0eff0a1.png",revision:null},{url:"assets/flash-e524b5bd.png",revision:null},{url:"assets/flashBright-d5407f78.png",revision:null},{url:"assets/font/Assistant-Hebrew.woff2",revision:"e99c63e8dcd7799e8adf32df82b46376"},{url:"assets/font/Assistant-Latin.woff2",revision:"a416191c7641acf049f804b685235d3d"},{url:"assets/font/Assistant-LatinExt.woff2",revision:"2423d82cdbc6a34b99d5bbacf82623c7"},{url:"assets/frame-d599a2fe.png",revision:null},{url:"assets/frameChrome-2ea8bbf3.png",revision:null},{url:"assets/git-67477794.png",revision:null},{url:"assets/great-0e864574.png",revision:null},{url:"assets/great-cf911e79.png",revision:null},{url:"assets/great-f56818a7.png",revision:null},{url:"assets/highpass-d9d7cfcb.svg",revision:null},{url:"assets/highshelf-11ccf64e.svg",revision:null},{url:"assets/hold_judgement-82934f15.png",revision:null},{url:"assets/hold-0c4ffc42.png",revision:null},{url:"assets/hold-160934d9.png",revision:null},{url:"assets/hold-3ccaaf09.png",revision:null},{url:"assets/hold-3f899175.png",revision:null},{url:"assets/hold-4cf23d59.png",revision:null},{url:"assets/hold-5651661d.png",revision:null},{url:"assets/hold-7b947e11.png",revision:null},{url:"assets/icon/favicon.ico",revision:"7bcbdd2344641a21b0f6f9393b491d65"},{url:"assets/icon/icon_512.png",revision:"1a4014fcbfaa08050ff38cabb8235165"},{url:"assets/icon/logo.png",revision:"3170c21a8539047fffea9eb4bd912d8e"},{url:"assets/icon/mac.icns",revision:"ac52a49fb658a942abeaa019bd05e9aa"},{url:"assets/inactive-48f23de3.png",revision:null},{url:"assets/inactive-a4aecb82.png",revision:null},{url:"assets/judgementITG-5390eacd.png",revision:null},{url:"assets/judgementWaterfall-5bb3f994.png",revision:null},{url:"assets/leftBodyActive-5d89f111.png",revision:null},{url:"assets/leftBodyActive-75d41033.png",revision:null},{url:"assets/leftBodyActive-fd4e902b.png",revision:null},{url:"assets/leftBodyInactive-1110dc77.png",revision:null},{url:"assets/leftBodyInactive-8fe6311e.png",revision:null},{url:"assets/leftBodyInactive-bbc074cd.png",revision:null},{url:"assets/leftBottomCapActive-057c49fb.png",revision:null},{url:"assets/leftBottomCapActive-f759c91c.png",revision:null},{url:"assets/leftBottomCapInactive-a4ac7bba.png",revision:null},{url:"assets/leftBottomCapInactive-df6350c7.png",revision:null},{url:"assets/lift-6db682e7.png",revision:null},{url:"assets/liftCenter-9712ce74.png",revision:null},{url:"assets/liftDownLeft-0205bdc8.png",revision:null},{url:"assets/lowpass-ff013247.svg",revision:null},{url:"assets/lowshelf-2b031328.svg",revision:null},{url:"assets/mask-f1b4d033.png",revision:null},{url:"assets/metronome_high-6fa54e52.ogg",revision:null},{url:"assets/metronome_low-4db4e760.ogg",revision:null},{url:"assets/mine-0e34ec01.png",revision:null},{url:"assets/mine-335f4545.png",revision:null},{url:"assets/mine-590d445e.png",revision:null},{url:"assets/mine-b65ce42d.ogg",revision:null},{url:"assets/missing-81d55ba9.png",revision:null},{url:"assets/mode-cac62e2a.png",revision:null},{url:"assets/mouse-ef7f3cf3.mp4",revision:null},{url:"assets/note-07e5d79f.png",revision:null},{url:"assets/outline-72e881a7.png",revision:null},{url:"assets/overlay-f63a3b18.png",revision:null},{url:"assets/particles-18ec6c1d.png",revision:null},{url:"assets/parts-0c8fa692.png",revision:null},{url:"assets/parts-9668caec.png",revision:null},{url:"assets/parts-9a3f637b.png",revision:null},{url:"assets/parts-b37af2cf.png",revision:null},{url:"assets/peaking-eec48769.svg",revision:null},{url:"assets/playtest-f34f5856.mp4",revision:null},{url:"assets/popup-b6da9784.mp4",revision:null},{url:"assets/pref-fdc09174.mp4",revision:null},{url:"assets/press-55cccb8c.png",revision:null},{url:"assets/press-feed8aa6.png",revision:null},{url:"assets/preview-0f9b00cd.png",revision:null},{url:"assets/preview-17ffcc02.png",revision:null},{url:"assets/preview-26b1bdce.png",revision:null},{url:"assets/preview-2fd7d50c.png",revision:null},{url:"assets/preview-3514cbb3.png",revision:null},{url:"assets/preview-40b76b28.png",revision:null},{url:"assets/preview-4f79831b.png",revision:null},{url:"assets/preview-5d9781d2.png",revision:null},{url:"assets/preview-5ecfc22a.png",revision:null},{url:"assets/preview-72ea0444.png",revision:null},{url:"assets/preview-747db171.png",revision:null},{url:"assets/preview-9fe2bd96.png",revision:null},{url:"assets/preview-b8f75a15.png",revision:null},{url:"assets/preview-d67630f1.png",revision:null},{url:"assets/preview-d6d59d37.png",revision:null},{url:"assets/preview-d763e667.png",revision:null},{url:"assets/preview-f113aacc.png",revision:null},{url:"assets/receptor-13e43ffb.png",revision:null},{url:"assets/receptor-30ecd7a2.png",revision:null},{url:"assets/receptor-3e38f29b.png",revision:null},{url:"assets/receptor-59597a1d.png",revision:null},{url:"assets/receptor-6fa92e51.png",revision:null},{url:"assets/receptor-a0a69b2b.png",revision:null},{url:"assets/receptor-a4713728.png",revision:null},{url:"assets/receptor-d5ef8593.png",revision:null},{url:"assets/receptorFlash-c7675c53.png",revision:null},{url:"assets/receptors-0a59df78.png",revision:null},{url:"assets/receptors-5a0beefb.png",revision:null},{url:"assets/rightBodyActive-07f95372.png",revision:null},{url:"assets/rightBodyActive-751fadec.png",revision:null},{url:"assets/rightBodyActive-8af7624b.png",revision:null},{url:"assets/rightBodyInactive-46202369.png",revision:null},{url:"assets/rightBodyInactive-695480aa.png",revision:null},{url:"assets/rightBodyInactive-fdefc2a4.png",revision:null},{url:"assets/rightBottomCapActive-6edeea1e.png",revision:null},{url:"assets/rightBottomCapActive-a736d803.png",revision:null},{url:"assets/rightBottomCapInactive-a64cea2c.png",revision:null},{url:"assets/rightBottomCapInactive-d674960e.png",revision:null},{url:"assets/scrolls-a04758c8.mp4",revision:null},{url:"assets/spark-2c59cc0e.png",revision:null},{url:"assets/stroke-1f54ba14.png",revision:null},{url:"assets/tap-69a9f81d.png",revision:null},{url:"assets/tap-c1e36633.png",revision:null},{url:"assets/tapCenter-103680e8.png",revision:null},{url:"assets/tapDownLeft-17ba3b42.png",revision:null},{url:"assets/timesig-9e28e1f2.png",revision:null},{url:"assets/top-74da30ae.png",revision:null},{url:"assets/underlay-95144bef.png",revision:null},{url:"assets/upBodyActive-b06d82f3.png",revision:null},{url:"assets/upBodyActive-c813881f.png",revision:null},{url:"assets/upBodyInactive-0222237a.png",revision:null},{url:"assets/upBodyInactive-4ef75342.png",revision:null},{url:"assets/upBodyInactive-87a7969e.png",revision:null},{url:"assets/upBottomCapActive-07fb7c6e.png",revision:null},{url:"assets/upBottomCapActive-19e4c05d.png",revision:null},{url:"assets/upBottomCapInactive-23aae747.png",revision:null},{url:"assets/upBottomCapInactive-75f78aac.png",revision:null},{url:"assets/UpLeft-28515625.png",revision:null},{url:"assets/UpLeft-36744666.png",revision:null},{url:"assets/UpLeft-752b6821.png",revision:null},{url:"assets/UpLeft-be2bb52b.png",revision:null},{url:"assets/UpLeft-d457a441.png",revision:null},{url:"assets/UpLeft-ef9a2609.png",revision:null},{url:"assets/upleftBodyActive-bc79d60f.png",revision:null},{url:"assets/upleftBodyInactive-f60085c6.png",revision:null},{url:"assets/UpRight-2e4dc3f1.png",revision:null},{url:"assets/UpRight-7924deeb.png",revision:null},{url:"assets/UpRight-8a892589.png",revision:null},{url:"assets/UpRight-91e454bc.png",revision:null},{url:"assets/UpRight-af6dd110.png",revision:null},{url:"assets/UpRight-fda6b516.png",revision:null},{url:"assets/uprightBodyActive-3d912f52.png",revision:null},{url:"assets/uprightBodyInactive-01c6c977.png",revision:null},{url:"assets/w0-6f86addb.png",revision:null},{url:"assets/w1-c8c43b0f.png",revision:null},{url:"assets/w2-37282ba8.png",revision:null},{url:"assets/w3-3c2ca2d8.png",revision:null},{url:"assets/w4-ce0f95de.png",revision:null},{url:"assets/w5-23173d4f.png",revision:null},{url:"assets/way_off-8bc3fd65.png",revision:null},{url:"assets/way_off-bc2cdf11.png",revision:null},{url:"assets/way_off-cc9a5377.png",revision:null},{url:"assets/white_fantastic-6c519378.png",revision:null},{url:"assets/white_fantastic-9f83da7a.png",revision:null},{url:"assets/white_fantastic-b65b4f11.png",revision:null},{url:"assets/icon/icon_512.png",revision:"1a4014fcbfaa08050ff38cabb8235165"},{url:"manifest.json",revision:"1d72161daa4e530e15d85baf4906bf4c"}],{ignoreURLParametersMatching:[/^flags/,/^url/,/^chartIndex/,/^chartType/]}),s.cleanupOutdatedCaches()}));